>> DAVID MALAN: Baiklah, kita kembali.
Jadi untuk menarik Kesimpulannya, bahagian terakhir kami
pengaturcaraan web, yang saya fikir kita akan digunakan sebagai istilah umum
untuk menangkap beberapa topik yang tinggal.
Jadi pada akhir hari, kami benar-benar akan melakukan
sedikit hands-on pengaturcaraan web dengan bahasa yang dipanggil JavaScript.
Dan saya fikir kita akan melihat dengan sesuatu yang berkaitan dengan imej
dan menemui sesuatu rahsia tersembunyi dalam imej,
dan juga mengambil lihat di Google Maps API, pengaturcaraan penggunaan
antara muka, sebagai sesuatu wakil jenis perisian
itulah semakin dan diperolehi secara percuma hari ini.
>> Tetapi mengapa tidak kita lihat pada bahan ke dunia ini
bahawa kita telah jenis menjadi mengambil untuk diberikan wujud
untuk beberapa waktu, database.
Untuk hari yang lalu dan setengah kami telah mengambil alih
bahawa kita mempunyai akses kepada pangkalan data, tetapi apa masalah tidak pangkalan data menyelesaikan?
Apa yang ia buat untuk kita?
Apa yang ia?
>> PENONTON: [didengar]
DAVID MALAN: Memegang semua maklumat, OK, dan apa jenis maklumat
anda mungkin dimasukkan ke dalam ia?
>> PENONTON: [didengar]
>> DAVID MALAN: Mana-mana maklumat anda masukkan ke dalam, anda akan kembali.
Itu benar.
Dan di tapak berasaskan web biasa atau web permohonan, apa jenis maklumat,
secara khusus, anda mungkin dimasukkan ke dalam?
PENONTON: [didengar]
DAVID MALAN: Pengguna.
Jadi apa pengguna?
>> PENONTON: [didengar]
DAVID MALAN: OK, berdaftar pengguna laman web ini.
Dan apa yang ia bermaksud untuk maklumat pengguna kedai '?
Apa yang dikomposisikan pengguna?
Pengguna mempunyai apa?
PENONTON: [didengar]
DAVID MALAN: Ya, peribadi data, dan saya suka bahawa.
Mari kita menjadi lebih tepat.
Jadi pengguna biasanya mempunyai nama, apa lagi yang mungkin pengguna mempunyai?
PENONTON: [didengar]
DAVID MALAN: An OK addr--, nama jadi pertama, nama akhir.
Itulah yang baik.
Sebenarnya, mari kita menetapkan itu, kerana ia akan
untuk membuka peluang kepada perbincangan, masih, selanjutnya.
nama pertama, nama akhir, gender.
ID sejenis.
Apa lagi?
Saya mendengar sesuatu yang lain sebelum ini, juga.
Satu e-mel, alamat pos.
>> Jadi mari kita berhenti seketika di sana dan kini menganggap tidak apa yang kita menyimpan dalam pangkalan data,
but-- dan tidak mengapa, kerana ia mungkin jelas bahawa sebaik sahaja anda mendaftar pengguna,
anda mahu ingat mereka untuk beberapa ketika.
Anda tidak mahu ia hanya disimpan di dalam RAM
dan dapat forgotten-- supaya mari kita memberi tumpuan kepada bagaimana.
>> Ia ternyata bahawa dalam dunia pangkalan data,
ada sekurang-kurangnya dua jenis hari ini.
Sesuatu yang dipanggil pangkalan data SQL, Bahasa Pertanyaan Berstruktur,
atau, cutely dinamakan, NoSQL, yang tidak SQL.
Dan yang kedua adalah contoh apa yang mungkin
dipanggil objek berorientasikan, atau kedai objek, pangkalan data
yang menyimpan objek, dan tidak, alasan saya, kerana kita tidak lama lagi akan melihat, baris.
>> Oleh itu, kita akan memberi tumpuan untuk hanya seketika pada yang pertama ini, iaitu, SQL yang
pangkalan data, jika hanya kerana ia begitu biasa sudah, kepada sesiapa
yang telah menggunakan Excel atau Helaian Google atau Apple
Nombor atau mana-mana standard program spreadsheet,
atau, setara, atau lebih sophisticatedly,
sesuatu seperti Microsoft Akses atau Oracle
atau MySQL atau PostgreSQL, semua yang adalah nama-nama produk bagi pelaksanaan
idea berikut.
>> Satu pangkalan data hubungan adalah semata-mata sesuatu yang mempunyai baris dan lajur.
Dan dengan baris dan lajur, Saya benar-benar bermakna sesuatu
seperti ini, jadi di mana kita mungkin mempunyai menamakan sebuah padang dan jenisnya di sini.
Dan sebenarnya, biarlah saya kini bermula untuk memetakan ini.
Jadi sebenarnya, saya tidak tahu mengapa saya menarik carta yang berasingan.
Mari kita terus mudah ini.
>> Kami mempunyai hak di sini yang permulaan meja kami, di mana
ini adalah nama medan dan ini adalah jenis data,
dan mengikut jenis yang saya maksudkan yang berikut.
Adakah nombor, ia rentetan, rentetan pendek seperti perkataan,
ia perenggan, ia data binari, seperti imej?
Dan mari kita hanya mengusik ini selain hanya untuk seketika.
Jadi nama pertama, nombor, tali, sebahagian besar text--
PENONTON: [didengar]
DAVID MALAN: Ya, jadi tali.
Dan dalam konteks pangkalan data, kami akan biasanya memanggil bidang char ini.
Saya hanya akan mengatakan char buat masa ini tetapi kami akan mendapatkan hasil ini dalam seketika.
bidang watak.
Nama akhir mungkin yang sama.
Jantina?
>> Lelaki atau perempuan, maka ia boleh menjadi medan char.
Ia boleh menjadi sama ada quote, unquote "Lelaki" atau quote, unquote "wanita"
atau ia boleh menjadi m atau f.
Jika anda mahu menjadi lebih inklusif, anda mungkin memerlukan nilai ketiga
atau beberapa jenis bidang lain sama sekali.
Dan supaya anda boleh menggunakan palsu benar.
Bidang ini boleh dipanggil lelaki, dan maka anda boleh berkata benar atau palsu.
Tetapi itu tidak semestinya menangkap semua maklumat yang anda mungkin mahu.
>> Jadi, ternyata ada satu lagi jenis medan yang mungkin berguna di sini
dalam pangkalan data khas, yang dipanggil enum, di mana ia adalah satu bidang watak,
tetapi anda, pereka bentuk, sampai ke menghitung nilai yang mungkin,
seperti quote, unquote "lelaki", quote, unquote "perempuan" dan sebagainya.
Supaya apa nilai adalah di dalam pangkalan data anda,
memang berdasarkan aksara, tetapi ia telah menjadi salah satu daripada nilai-nilai.
Kita mungkin tidak mahu satu enum untuk nama pertama atau nama akhir.
Jika tidak, kita akan mempunyai untuk menghitung, kerana nama itu
berasal dari, harfiah setiap mungkin nama pertama dan nama akhir.
>> OK, jadi ID apa yang patut ID yang menjadi?
Ya, jadi mungkin nombor.
Oleh itu, marilah kita berpegang dengan buat masa sekarang, bilangan.
Dan dengan jumlah, bilangan yang sedikit terlalu luas sekarang.
Untuk akhir kedua hari, saya rasa seperti kita
perlu menjadi sedikit lebih tepat.
Nombor boleh bermakna seperti, ia boleh menjadi sesuatu seperti 1,236.
Dan itu mungkin tidak apa yang kita maksudkan dengan ID.
Apa yang kita mungkin maksudkan dengan ID?
>> PENONTON: [didengar]
DAVID MALAN: Oh, OK, jadi mungkin ia bukan juga nombor.
Mungkin ia sebenarnya pengecam unik itu adalah satu tali, seperti nama pengguna.
Jadi sama sekali, boleh.
Saya rasa orang mungkin bermakna angka, walaupun.
Jadi mari kita tinggal dengan itu.
Apakah jenis nombor?
Apa yang lebih precise-- integer.
Jadi nombor seperti 0, 1, 2, 3, jadi kita akan memanggil ini integer.
Dan kemudian, saya boleh dapat nitpicking, ia
tidak benar-benar hanya integer umum yang anda mahu.
Anda mungkin tidak mahu nilai-nilai negatif, hanya kerana, ia hanya berasa pelik.
Anda mungkin mahu bilangan bulat positif.
Oleh itu, anda juga boleh meluahkan yang dalam pangkalan data,
tetapi untuk sekarang, kami akan berkata integer.
>> E-mel?
Ini mungkin just-- apa?
>> PENONTON: [didengar]
>> DAVID MALAN: Ia adalah e-mel, tetapi itu watak-watak, bukan?
Ia hanya mempunyai watak funky seperti yang "di" simbol atau sesuatu yang lain,
tetapi ia masih satu bidang watak.
Dan alamat pos?
bidang watak.
Jadi, itu satu permulaan yang bagus, tetapi mari kita menjadi sedikit lebih tepat sekarang.
>> Jadi ia ternyata bahawa dalam pangkalan data, anda sering
mempunyai pilihan ke atas lebih halus versi perkara-perkara ini.
Malah, dalam satu pangkalan data SQL biasa, SQL, atau lebih umum, pangkalan data hubungan,
pangkalan data dengan baris dan lajur, anda sering
mendapatkan untuk menentukan bukan sahaja jenis daripada field-- izinkan saya membuat sedikit ruang sini--
tetapi juga panjang.
>> Jadi berapa lama adalah nama pertama?
Saya rasa, D-A-V-I-D. OK, faham saya mungkin hanya tersinggung seperti setengah
daripada orang di dalam bilik, kanan, kerana nama anda lebih panjang daripada lima
huruf, jadi lima seolah-olah mementingkan diri sendiri sedikit dan naif, jadi apa nilai yang lebih baik?
10, semua betul, dan saya fikir kami OK di dalam bilik.
13?
30?
Kenapa saya tidak mengambil pendekatan sebelum ini apabila kita
bercakap tentang tatasusunan dan memori?
Kenapa saya tidak hanya mengatakan seperti 1000?
nama Tiada siapa yang akan untuk lebih panjang daripada 1,000.
Menolak kembali.
>> PENONTON: [didengar]
DAVID MALAN: Ya, ia membazir, betul, terutamanya
jika kebanyakan nama-nama yang hanya lima atau 10 atau 15 watak-watak, yang amat membazir.
Jadi, anda tahu apa?
Ini adalah jenis soalan yang sukar.
Sekarang, kita pasti boleh menganalisis English dan nama-nama mana-mana bahasa lain
dan memikirkan, baik, apa yang purata average-- tidak benar-benar
membantu us-- apa yang max adalah mungkin apa yang kita benar-benar mahu.
Tetapi ternyata kita juga mempunyai beberapa pilihan ke atas jenis di sini.
>> Dalam pangkalan data SQL biasa, anda telah sesuatu yang dipanggil bidang char
dan juga varchar a, V-A-R, untuk medan char berubah-ubah.
Dan perbezaan itu adalah ini.
Medan char, anda pereka bentuk, perlu menentukan terlebih dahulu
panjang sebenar padang.
Jadi mungkin nama pertama seperti 20 berasa jenis selamat.
Mungkin perlu melakukan beberapa Googling untuk melihat jika itu sudah cukup sebenarnya selamat.
Ada mungkin nama dengan 21 watak-watak, tetapi buat masa ini, katakan 20
adalah selamat.
>> Medan char akan membayangkan di dalam pangkalan data yang anda
adalah menggunakan 20 dan sentiasa 20 aksara.
Sekarang jika ia hanya D-A-V-I-D, 15 daripada mereka hanya akan menjadi watak-watak kosong,
tetapi anda masih menggunakan semua 20 bait.
Medan varchar, sebaliknya, ertinya string harus sehingga 20 aksara
tetapi jika ia hanya lima, anda hanya akan menggunakan
lima, atau mungkin enam untuk nilai istimewa pada akhirnya,
seperti yang kita dibincangkan 0 yang menandakan akhir yang bersifat
urutan dalam ingatan.
>> Oleh itu, apabila anda fikir anda boleh memilih char
berbanding varchar, memandangkan keseimbangan?
Char menggunakan banyak watak-watak, varchar menggunakan tidak lebih daripada itu banyak watak.
PENONTON: [didengar]
DAVID MALAN: OK, apabila anda tahu panjang tali cukup menarik
hanya menggunakan char, sebab kalau anda tahu, hanya meletakkan ia ke bawah.
Dan mungkin yang benar untuk zip yang kod, di Amerika Syarikat, sekurang-kurangnya, 02138,
ia sentiasa akan menjadi lima aksara sehingga anda menambah melontarkan yang empat.
Tetapi anda mungkin mempunyai beberapa nilai untuk yang anda sentiasa tahu panjang.
Atau mungkin simbol negeri, seperti NY New York,
dan MA untuk Massachusetts di Amerika Syarikat.
Mungkin anda mempunyai beberapa keadaan mana yang benar-benar munasabah,
tetapi dengan logik itu, kenapa kita juga overthinking ini?
Apa kata kita hanya menggunakan varchar dan kemudian kita hanya akan mempunyai
sentiasa menggunakan dua watak anyway, atau sentiasa menggunakan lima watak anyway?
Mengapa tidak hanya menyimpan varchar untuk segala-galanya, dengan logik itu?
Mesti ada tangkapan.
PENONTON: [didengar]
DAVID MALAN: Bolehkah menulis sesuatu salah.
Jadi yang benar.
Tetapi walaupun begitu, mereka tidak boleh menggunakan memori yang lebih daripada yang saya memperuntukkan.
Saya masih mempunyai akhir mengatakan lebih panjang,
sehingga mereka tidak boleh sengaja membuat kesilapan itu, tetapi pemikiran yang baik.
Ia lebih halus, tetapi ia sangat berkaitan dengan perbincangan kita, sebenarnya, tatasusunan
dan dikaitkan senarai awal.
>> Ia ternyata bahawa pangkalan data, jika ia tahu bahawa semua nilai adalah
daripada panjang tetap, walaupun beberapa orang-orang nilai adalah kosong,
semacam estetika kosong, D-A-V-I-D dan kemudian 15 kosong,
ternyata bahawa jika setiap medan adalah sama panjang,
sama seperti array mempunyai semua barangan yang kembali ke belakang untuk kembali ke belakang supaya
anda hanya boleh ditambah 1 untuk mendapatkan ke depan nilai, idea yang sama dalam jadual pangkalan data.
Jika semua watak anda rentetan panjang yang sama,
anda mempunyai apa yang dipanggil capaian rawak.
Jika semua rentetan daripada panjang 20, anda tidak hanya
melakukan campur 1 anda hanya melakukan plus 20, ditambah 20, ditambah 20, ditambah 20,
dan anda dengan cepat boleh menatal atau mencari melalui semua data anda.
>> Medan char berubah, sebaliknya, tidak selalu mempunyai 20 aksara.
Ia mungkin mempunyai 20 dan kemudian 15 dan kemudian 19 dan kemudian 10,
dan jadi jika anda ingin cari melaluinya, anda tidak boleh hanya membuta tuli
menambah 20 bytes untuk sampai ke satu depan.
Anda benar-benar perlu mencari melalui kerana pinggir struktur data,
jika anda akan, adalah kasar.
Ia jenis pergi dalam dan di luar berdasarkan tempoh sebenar tali.
Oleh itu, apabila anda tahu panjang, kerana Kareem berkata, gunakan medan char,
kerana anda boleh mendapat yang kecekapan yang
dapat mencari melalui lebih cepat apabila anda sedang mencari untuk data,
sebaliknya menggunakan pembolehubah.
>> Malangnya, saya tidak mempunyai jawapan yang baik berapa lama nama yang sepatutnya,
tetapi untuk sesuatu seperti nama, saya akan berkata
varchar adalah perkara biasa kerana ia tidak akan
menjadi panjang tetap untuk semua orang.
20, saya tidak tahu, 20 merasakan ketat sedikit.
Mari kita katakan 50, 50.
Ia tidak benar-benar kos anda bahawa banyak lagi untuk berkata 50 daripada 40,
tetapi pada satu ketika, anda perlu untuk membuat panggilan penghakiman.
>> Sangat biasa, terus-terang, untuk [? sejarah?]
sebab, walaupun ia adalah berlebihan, iaitu 255, kerana sedikit masa lalu,
dalam sistem pangkalan data yang popular, seperti MySQL, alat sumber terbuka yang percuma
bahawa banyak syarikat-syarikat seperti walaupun Facebook digunakan,
ini adalah lalai maksimum supaya orang hanya pergi dengannya.
Jadi tidak munasabah, tetapi kami akan menggunakan lebih sedikit gerak hati
dan berkata, pasti 50, itu mungkin sedikit berlebihan.
>> Jantina, saya suka enum, dan kami dengan itu boleh
menghitung lelaki atau perempuan, atau mungkin lebih cekap,
m atau f atau beberapa perlambangan lain, tetapi enum berasa seperti pilihan yang baik di sana.
Untuk menjadi jelas, jantina hanya boleh menjadi varchar a,
dan kita boleh hanya semua bersetuju orang yang bagus,
untuk sentiasa meletakkan nilai yang sama di sana.
Lelaki atau perempuan atau barang kecil.
>> Tetapi masalahnya kemudian, adalah bahawa kita boleh membuat kesilapan, sebagai [didengar] dicadangkan
sebelum ini dalam konteks yang berbeza.
Jika kita membuat kesilapan, kita boleh mendapatkan nilai-nilai yang tidak betul dalam pangkalan data kami.
Jadi apa yang baik mengenai pangkalan data seperti Oracle dan MySQL dan lain-lain,
adalah bahawa anda mempunyai ini terakhir lapisan pertahanan di mana
pentadbir DBA, pangkalan data anda, sesiapa yang mereka bentuk jadual ini seperti kita
adalah secara lisan, boleh meletakkan ke dalam tempat enum yang yang
melindungi dengan menyatakan lelaki, wanita, dan sebagainya tidak ada yang
lagi yang tidak programmer boleh sengaja memasukkan apa-apa nilai lain.
Jadi ini akan menjadi satu perkara yang baik.
Ini adalah ciri.
>> Jadi ID, menganggap ID angka, ia mungkin perlu menjadi integer positif.
Dan kadang-kadang kita tidak mempunyai peluang untuk berbincang panjang.
Anda tidak akan biasanya menentukan bilangan di sini,
anda sebaliknya akan menentukan ini adalah satu int, int atau besar,
kerana mereka biasanya dipanggil.
Tetapi biasanya, integer akan, katakan, 4 bait.
Dan jika ia 4 bait, itulah berapa banyak bit?
>> PENONTON: [didengar]
>> DAVID MALAN: 32 bit.
Jadi bagaimana ramai pengguna kita boleh mempunyai dalam pangkalan data kami jika mereka semua mempunyai ID
dan ID ini telah menjadi unik?
32 bit bermakna kita mempunyai corak satu, dua, tiga, empat, five--
jadi bagaimana banyak corak yang berbeza sifar dan orang-orang yang anda boleh mempunyai jika terdapat 32?
Itu perkara yang sama seperti meminta apa yang dua orang ke 32?
Ia adalah satu jumlah yang besar yang Saya tidak boleh agak mendapatkan hak,
tetapi saya tahu ia adalah kira-kira 4 bilion.
Jadi ini bermakna jadual pangkalan data anda boleh mempunyai pengguna empat bilion dan itu sahaja.
>> Jadi ini adalah satu yang menarik reka bentuk implikasi.
Beberapa baik syarikat telah membuat keputusan, mungkin tidak begitu banyak
untuk jadual pengguna mereka, kerana mempunyai pengguna 4 bilion adalah satu masalah yang jarang berlaku.
Ini adalah jenis gaya Facebook masalah, bukan masalah syarikat biasa.
Tetapi mungkin jika anda mempunyai log transaksi atau beberapa jenis data yang sentiasa
mendapat ditulis ke dalam pangkalan data anda yang benar-benar boleh mempunyai berbilion-bilion
dan berbilion-bilion baris, dan anda menggunakan integer untuk itu,
apa yang akan berlaku sebaik sahaja anda berdayung nombor 4 bilion
dan kemudian anda cuba untuk memasukkan 4 billionth dan 1, boleh dikatakan?
Saya memudahkan nombor sedikit.
>> Anda boleh mengurangkan, saya maksudkan anda perlu mengendalikan ia entah bagaimana.
Dan apa yang komputer biasanya akan lakukan, memikirkannya walaupun dari pagi ini,
jika anda mempunyai nilai 4-bit seperti 1, 1, 1, 1, yang,
hanya untuk mengikat pagi bersama-sama untuk sebelah petang, apa
adakah nombor ini mewakili dalam binari?
OK, kita akan membuat ia lebih mudah.
Apakah nombor ini mewakili dalam binari?
OK, kita akan membuat ia lebih mudah, apa adakah ini mewakili dalam binari?
PENONTON: Tiga.
DAVID MALAN: Tiga, kerana kita mempunyai orang-orang yang column--
[Ketawa]
Huh!
Kami mempunyai ruang orang-orang yang dan lajur berdua-dua itu.
Jadi andaikan bahawa, sesungguhnya, kami [? kawasan dekat?] tidak 32 bit,
tetapi ia adalah dua bit, kita boleh mengira dari nombor 0, 1, 2, 3 pengguna,
dan kemudian kita jenis kembali kepada pengguna 00 lagi.
Jadi ini adalah apa yang biasanya berlaku.
Jika anda pernah mendengar expression-- yang mungkin tidak mempunyai, tetapi jika anda ada--
limpahan integer, di mana anda menjaga Melibas semua bit anda
menjadi nilai-nilai yang paling besar mungkin, dan kemudian anda keluar bit,
apa yang biasanya akan berlaku?
Mengapa saya berkata 00?
Nah, ini adalah tiga.
Bagaimana saya mewakili 4?
Bagaimana saya mewakili untuk nombor 4 dalam binari?
PENONTON: [didengar]
DAVID MALAN: One-- yeah, tidak mengatakan 100 per se,
kerana ia mempunyai salah yang konotasi, tetapi 1-0-0.
Supaya bilangan 1-0-0 memang betul, tetapi jika anda hanya mempunyai dua bit,
apa yang anda benar-benar dilakukan?
Anda telah dilancarkan ke 00.
Dan sesungguhnya, itulah yang akan berlaku.
Sebenarnya, anda boleh berfikir mengenai ini lebih akrab.
Jika anda masih ingat, apa, 16 tahun yang lalu, dunia
sepatutnya berakhir apabila masalah Y2K itu berlaku.
Mengapa demikian?
Well kebanyakan komputer, untuk keputusan yang wajar,
telah menyimpan nombor seperti tahun 1975 atau tahun 1999
dengan hanya menggunakan dua digit dalam ingatan komputer.
Jadi, sudah tentu, apa yang berlaku apabila anda sampai ke tahun 2000,
anda pergi ke ini, atau sebaliknya, yeah.
Jadi, anda pergi ke tahun 2000, tetapi jika anda hanya menggunakan dua digit ia kelihatan
seperti tahun 00 dan jadi anda telah dilancarkan ke atas.
Dan ini adalah mengapa banyak sistem diperlukan untuk dikemaskini pada masa itu.
>> Maka dengan itu berkata, syarikat-syarikat seperti Facebook berlari terhadap ini.
Jadi satu-satunya cara untuk menangani keadaan, terus-terang, adalah untuk menjangka ia.
Atau cara yang paling bersih untuk menangani keadaan ini
adalah untuk menjangka ia supaya anda tidak perlu membuat perubahan kemudian.
Jadi, daripada 8 bait, anda tahu apa?
Saya akan menjadi pemikiran ke hadapan di sini, walaupun ia
yang optimis kecil yang kita akan mempunyai 4 bilion
dan pengguna 1 pada laman web kami.
Tetapi mari kita hanya menggunakan 8 bait, atau 64 bit, yang secara amnya akan menjadi
dipanggil integer besar, sangat teknikal.
Dan itu hanya bermakna anda boleh mempunyai lebih digit dalam nombor anda.
Tetapi ini adalah penting keputusan reka bentuk,
kerana jika anda memilih nombor yang mempunyai terlalu sedikit cebisan ekspresi
anda sebenarnya boleh mewujudkan pepijat dalam perisian anda.
>> Baiklah, jadi mari kita mengakhiri dengan e-mel dan alamat pos.
Supaya e-mel, berapa lama perlu alamat e-mel menjadi?
50.
Saya benar-benar tidak tahu, tetapi ia mungkin sesuatu seperti itu,
kerana jika tidak, tiada siapa yang akan menulis anda jika ia terlalu lama, jadi 50,
mari kita pergi dengan itu buat masa sekarang.
Alamat pos, berapa lama yang perlu?
PENONTON: [didengar]
>> DAVID MALAN: Ia bukan hanya poskod, walaupun.
Alamat pos, saya dengar.
Jadi ini adalah seperti 1 Brattle Square, koma, Cambridge Mass., koma, 02138.
Dan sebenarnya, saya hanya tarik sehingga helaian kerja yang sedikit di sini.
Ini berasa seperti ia peluang yang tidak dijawab.
Jika kita mempunyai 1 Brattle Square, koma, Cambridge MA 02138,
Saya rasa seperti kita boleh melakukan lebih baik daripada alamat hanya pos.
Apa kata kita meletup ini sedikit?
Apa yang saya mendapat di?
Apa yang patut kita sebaliknya mempunyai untuk baris kami di sini, mungkin?
>> PENONTON: [didengar]
>> DAVID MALAN: Ya, jadi mari kita memanggilnya street_number,
dan garis bawah hanyalah biasa cara untuk mempunyai apa yang kelihatan seperti ruang,
tetapi ia tidak, sebenarnya.
Jalan, dan kemudian city-- maaf?
>> PENONTON: [didengar]
DAVID MALAN: Kami boleh melakukannya.
Line satu, baris dua.
Mengapa tidak kita akan terus ia mudah untuk sekarang,
tetapi itu sama sekali keputusan diterima.
Dan kemudian negeri, dan kemudian mari kita menjadi sedikit US-centric buat masa ini
dan hanya melakukan kod zip, hanya kerana ia akan membawa kepada kesilapan yang menarik
atau masalah di sini.
Jadi andaikan bahawa sekarang adalah alamat kami.
Ia sedikit lebih menjengkelkan yang kami mempunyai semua lagi bidang ini,
tetapi kini kita boleh tag perkara yang sedikit lebih baik.
>> nombor Jadi sekarang jalan mungkin tidak boleh char, sekiranya ia?
Apa yang sepatutnya?
PENONTON: [didengar]
DAVID MALAN: Mungkin, sebilangan seperti integer lagi?
A integer besar?
Anda mungkin tidak tinggal 4 billion Main Street
atau apa-apa gila seperti itu.
Jadi integer mungkin baik, tetapi mempunyai sesiapa
pernah hidup di alamat seperti 1A Brattle Square, atau 1 dan 1/2?
Perkara-perkara ini wujud, malangnya, walaupun anda tidak pernah diam di sana,
terdapat anomali ini seperti 1A apartmen, 1B, 1C.
Jadi, anda tahu apa, kita mungkin tidak perlu pergi dengan integer,
jika tidak, kita akan kehilangan beberapa jualan.
>> bidang Char, mungkin?
Saya tidak tahu berapa lama.
Ia mungkin tidak akan menjadi yang lama, jadi 10 atau sesuatu.
Tiada siapa yang akan menulis nombor yang lebih lama, mungkin.
Tetapi sekali lagi, kita harus mungkin memberi lebih banyak berfikir untuk itu.
Mungkin google, melakukan kajian, tetapi kita akan pergi dengan keberanian kita buat masa ini.
Jalan-jalan, char, 50, saya tidak tahu.
Pada satu ketika, tiada sesiapa yang akan untuk menulis pada sampul surat,
juga, jadi tidak mungkin beberapa batas atas sana.
City, sama, pasti, jadi char 50.
>> Negeri, boleh menjadi US-centric buat masa sekarang.
Jadi ia boleh menjadi senarai, begitu baik panggilan penghakiman, negeri.
Ia boleh menjadi seperti dua watak.
Jadi sebenarnya, mungkin, saya terus berkata char.
Saya mungkin bermakna varchar, hanya untuk beberapa kecekapan,
tetapi kita akan kembali kepada bahawa keputusan dalam seketika.
Boleh menjadi char panjang 2 untuk negeri.
Jika di Amerika Syarikat mereka mempunyai, seperti MA, Massachusetts, NY, New York, NJ, New
Jersey, dan sebagainya.
Jadi ia boleh ditetapkan pada itu.
DC Washington DC.
>> Tetapi saya fikir, Olivier, anda cadangan pendekatan lain.
PENONTON: [didengar]
DAVID MALAN: Ya, jadi ia adalah satu sedikit menjengkelkan menaip,
tetapi enum yang mungkin lebih masuk akal, kerana dengan cara ini, sekurang-kurangnya di Amerika Syarikat,
anda boleh menghitung, jika tediously, tetapi anda melakukannya hanya sekali dalam pangkalan data anda
dan tidak lagi perlu memikirkan , semua 50 Kod dua watak.
Jadi saya suka enum.
Mari kita berpegang dengan yang di sana, kerana ia semacam menguatkuasakan lebih ketegasan.
Dan kemudian zip kod?
Saya rasa Andrew mempunyai pemikiran pada itu
PENONTON: [didengar]
DAVID MALAN: Ya, lima atau sembilan.
Mari kita memastikan ia mudah.
Hanya melakukan lima untuk sekarang.
Tetapi mungkin saya boleh hanya melakukan integer, bukan?
Saya boleh, tetapi anda tahu apa, saya membuat kesilapan ini sekali, dalam erti kata lain.
Tahun lalu, saya telah berhijrah dari Microsoft Outlook untuk Gmail,
dan Outlook mempunyai cara mengeksport semua kenalan anda sebagai fail Excel,
fail CSV, dipisahkan oleh koma fail nilai.
Dan saya telah membuat kesilapan, saya berfikir, double klik ia,
sekali saya turun eksport, untuk memastikan ia kelihatan seperti yang saya harapkan.
Saya mesti telah melanda Simpan atau membiarkan auto-save tendangan dalam atau sesuatu.
Kerana apabila saya kemudiannya diimport ke dalam Gmail, ia semua bekerja.
Tetapi bagi tahun, hingga ke hari ini, dan Saya melakukan ini lima, 10 tahun yang lalu,
Saya masih mencari rakan-rakan yang mempunyai alamat yang kelihatan seperti ini.
Mengapa?
>> PENONTON: [didengar]
>> DAVID MALAN: Ia mengambil masa 0, baik, sebaliknya, ia
mengambil zip seluruh kod sebagai nombor, dan oleh itu ia
yang awalan 0 yang bermaksud ia tidak bermakna.
Dan sebagainya 2138 seolah-olah menjadi poskod saya.
Dan ini, terus-terang, Excel menjengkelkan ciri di mana saya fikir secara lalai,
walaupun ia bertujuan untuk hanya menjadi teks, Microsoft Excel
memutuskan, izinkan saya membantu, dan oh, saya hanya melihat nombor.
Mari kita merawat ini sebagai nombor.
Dan ia truncates sifar terkemuka.
>> Aku bersumpah kepada Allah, setiap pasangan bulan saya mencari alamat,
dan keluar dari sejenis OCD, saya kembali dalam dan tambah 0, walaupun saya tidak pernah
menghantar orang surat atau apa-apa.
Tetapi saya masih mencari sisa-sisa ini.
Jadi ini adalah untuk mengatakan, ini idea yang baik?
OK, tidak, kerana sesiapa sahaja dalam Massachusetts, di kawasan ini,
akan mempunyai o membawa mereka.
Jadi mari kita pergi dengan seperti char, mungkin, lima.
>> Dan di sini, menyedari bahawa kita boleh menggunakan enum dan kami
boleh menghitung 10,000 mungkin kod zip,
tetapi yang terasa seperti ia mungkin menyeberangi garis, seperti, manfaat.
Jika anda perlu input yang banyak data ke dalam pangkalan data anda
untuk melindungi sesuatu.
Jadi char sedar anda boleh menaip dalam H-E-L-L-O sebagai poskod anda,
yang tidak, jelas, angka.
Jadi tidak ada cara, dalam pangkalan data yang biasa,
untuk menentukan hanya angka dan hanya lima aksara,
jadi kita akan mempunyai untuk berbuat demikian dalam kod.
Kami akan berbuat demikian dalam PHP atau Java atau apa sahaja bahasa kita
menggunakan pada pelayan untuk menguatkuasakan yang jenis kekangan.
>> Suara burung hantu!
Baiklah, jadi apa-apa soalan sahaja lagi?
Mari kita membuat satu lagi keputusan reka bentuk.
Ia ternyata bahawa anda juga boleh memilih,
apabila mereka bentuk pangkalan data SQL, atau database-- hubungan biasa di mana
sekali lagi, hubungan hanya bermakna baris dan lajur,
itulah bagaimana anda menyusun data-- anda dan sedar bahawa apa yang bermakna ini,
Saya telah mengelirukan dalam itu, saya drawing-- ini
adalah apa yang dipanggil skema untuk jadual pangkalan data.
Ini seperti yang spesifikasi untuk table-- yang
tetapi apabila ia datang masa untuk benar-benar menyimpan data,
dan kami akan melakukan ini hanya dengan contoh di sini.
Saya akan membuka Excel, kerana Excel akan memberikan saya baris dan lajur.
Dan itulah apa Oracle dan MySQL dan alat-alat lain akan memberikan saya.
Jadi saya hanya akan menggunakan ia demi perbincangan ini.
Biar saya pergi ke hadapan dan membuka dokumen perwakilan di sini,
zum dalam sedikit.
Jadi misalnya, tajuk kami kini nama pertama, nama akhir, jantina, ID,
e-mel, nombor jalan, jalan, whoops.
Jalan, bandar, negeri, hanya kira-kira sesuai pada skrin.
>> Jadi apa ini bermakna bahawa apabila pengguna pertama mendaftar untuk laman web saya,
ia akan menjadi sesuatu yang seperti David, Malan, m, katakan 1,
malan@harvard.edu, nombor jalan akan menjadi seperti 1 Brattle Square, Cambridge, MA,
02138, dan kemudian sebagainya.
Oleh itu, apabila saya mengatakan bahawa pangkalan data hubungan atau pangkalan data SQL adalah baris dan lajur,
Saya maksudkan ini.
Bahawa data sebenar disimpan dalam baris dan lajur.
Ini adalah hanya satu kebetulan, yang kita bercakap,
dan saya hanya melukis di dalam baris dan lajur.
Ini hanyalah skema, definisi yang bersifat menyeluruh.
>> Jadi bidang ini di sini, atau setara, di sana,
yang merupakan bidang yang anda fikir Saya cenderung untuk mencari di jika saya pengguna
atau jika saya pentadbir pangkalan data?
Seperti, apa bidang aku sebenarnya akan mencari di?
>> PENONTON: [didengar]
>> DAVID MALAN: Nama, yeah jadi Saya suka hakikat bahawa- yeah,
e-mel mungkin agak biasa.
Maaf, anda berkata nama.
Jadi maybe-- dan sekali lagi, kami jenis bercakap dalam abstrak.
Saya tidak tahu mengapa anda sedang dapat mencari nama,
tetapi yang terasa munasabah jika anda sedang mencari pengguna.
Mungkin menyatakan, pasti, ID.
>> Dan ia adalah satu licin cerun, kerana saya boleh
jayakan senario di mana mungkin bos saya telah bertanya kepada saya,
berapa ramai lelaki yang kita ada di laman web kami?
Berapa ramai wanita yang kita ada di laman web kami?
Dan demikian pada ketika itu, anda mungkin mahu untuk mencari di padang jantina, juga,
dan apa-apa lagi.
Jadi ada keseimbangan di sini.
Sekali lagi, tidak ada jawapan yang betul, tetapi ada
adalah ciri dalam kebanyakan pangkalan data SQL dikenali sebagai indexing, di mana
anda, pereka bentuk, yang pentadbir pangkalan data,
dapat membuat keputusan terlebih dahulu yang bidang pangkalan data perlu mengoptimumkan
untuk carian di.
>> Anda sangat naif boleh berkata, mengoptimumkan ini, mengoptimumkan itu, mengoptimumkan ini,
mengoptimumkan itu dan ini, dan pangkalan data akan
melakukan beberapa perkara ajaib di bawahnya hud, dan melakukan sesuatu dalam apa-apa cara
bahawa masa depan anda mencari pada mana-mana bidang ini,
ia akan, sebenarnya, lebih cepat.
Ini boleh dilakukan.
Ia tidak membatalkan dirinya.
Tetapi mesti ada harga yang dibayar.
>> Jika anda naif, atau lebih-bersemangat berkata, indeks semua bidang ini,
jadi untuk bercakap, membuat mereka semua cekap boleh dicari,
apa harga yang anda mungkin membayar?
PENONTON: [didengar]
DAVID MALAN: Prestasi.
Apa maksud awak?
Well prestasi, sekurang-kurangnya dalam konteks saya berbincang, adalah lebih baik sekarang.
Itulah definisi pengindeksan.
Ia akan menjadikan carian lebih cepat.
Jadi kali berkurangan, jadi untuk bercakap.
PENONTON: [didengar]
DAVID MALAN: Space.
Jadi sekali lagi, ini adalah satu perdagangan yang sama.
Saya boleh mempercepatkan carian anda, tetapi ia akan kos anda lebih banyak bait ruang.
Mengapa?
Well, secara lalai, jika kita mempunyai tiada bintang-bintang merah, tiada seorang pun daripada indeks ini,
seperti yang saya katakan, bagaimana anda mencari nama di dalam pangkalan data ini?
Jadi mari kita menarik kami perhatian kepada contoh ini.
Jika kita mempunyai Daud dan Scully dan Kareem dan Arwa dan lain-lain dalam baris ini,
misalnya.
>> Jadi mari kita melakukan perkara tersebut.
Scully di sini, dan kemudian kita mempunyai Kareem, dan Arwa,
dan orang lain, jika anda tidak mempunyai indeks ditakrifkan, jadi untuk bercakap,
yang terbaik yang anda boleh lakukan ialah carian linear.
Jika anda mencari Arwa, kita tidak akan dapat untuk melompat betul kepada beliau
dengan cepat.
Kami akan mula atas dan pergi sepanjang jalan ke bawah,
tidak seperti asal kami Mike Smith contoh.
>> Jika, bagaimanapun, saya berkata, hey, pangkalan data, indeks medan nama pertama,
maka ia akan melakukan sesuatu pelamun dan menyokong sesuatu
seperti carian binari.
Ia mungkin tidak carian binari per se.
Pangkalan data cenderung untuk menggunakan satu lagi struktur data yang dipanggil b-pokok,
jangan dikelirukan dengan pokok-pokok binari, yang hanya menjadikannya lebih cepat untuk mencari
sesuatu logaritma dalam alam semula jadi.
Tetapi harga yang anda bayar untuk membina yang ciri, struktur data dalam ingatan,
lebih bait.
Oleh itu, ia mungkin mengambil masa beberapa megabait, beberapa gigabait, siapa tahu?
Ia bergantung kepada data.
>> Jadi, pada satu ketika, anda perlu membuat keputusan, ia mungkin bukan kes biasa.
Jadi apa yang adalah perkara biasa sebenar kes, jika anda benar-benar mempunyai untuk memilih,
apa yang mungkin telah disiapkan kegemaran anda menjadi?
E-mel.
Dan saya suka e-mel kerana e-mel, dalam teori, harus unik.
Dan sebagainya biasanya, apabila anda tahu terlebih dahulu bahawa salah satu bidang anda
adalah atau akan menjadi unik, yang cenderung untuk menjadi bidang yang baik
untuk mencari pada, kerana dengan cara itu, apabila anda mencari sesuatu,
anda akan kembali satu atau sifar jawapan dan kemudian anda selesai.
Anda tidak perlu menyimpan mencari lagi orang lain.
>> Dan jadi dalam kes ini di sini, e-mel, selagi anda tidak boleh mendaftar dua kali
dengan e-mel yang sama, adalah satu yang baik.
ID mengikut definisi, dalam komputer dunia sains,
jika anda bercakap mengenai ID, yang mempunyai yang lebih baik menjadi unik.
Itulah jenis konotasi ID atau pengecam.
Dan yang lain daripada ini mungkin, mari kita memanggil mereka baik untuk golongan berada,
tetapi tidak benar-benar diperlukan.
>> Dan sebagainya dalam pangkalan data, anda tentukan indeks,
tetapi anda boleh menjadi lebih tepat.
Anda boleh berkata, hey, pangkalan data, pastikan bahawa setiap ID dalam jadual ini adalah unik.
Jangan malah membiarkan seorang programmer sengaja dimasukkan ke dalam e-mel salinan
atau salinan nombor ID.
Begitu banyak seperti enums melindungi kita sama, anda
boleh mempunyai orang-orang pertahanan peringkat rendah.
Dan jadi reka bentuk pangkalan data, dalam erti kata lain, adalah jenis keseronokan,
kerana anda melakukannya pertahanan.
Anda jenis menganggap bahawa anda bekerja dengan dahsyat, pengaturcara dahsyat
dan anda mahu untuk meletakkan seberapa banyak pertahanan yang anda boleh untuk melindungi data anda,
tetapi pada masa yang sama anda mahu untuk membantu mereka melakukan yang lebih baik
dengan memilih yang bidang untuk mengoptimumkan untuk.
Tetapi anda tidak boleh semestinya melakukannya dalam vakum seperti kita jenis di sini.
Anda perlu tahu apakah kes-kes umum ialah.
Jika pemaju melaksanakan buku alamat,
anda sangat baik mungkin mahu dapat untuk mencari di hampir setiap bidang,
hanya dengan sifat permohonan.
Jadi mungkin anda menghabiskan bahawa ruang tambahan.
>> Betul, apa-apa soalan?
Yeah.
>> PENONTON: [didengar]
>> DAVID MALAN: No.
>> PENONTON: [didengar]
>> DAVID MALAN: OK.
>> PENONTON: [didengar]
>> DAVID MALAN: Oh, jadi kami bercakap dengan cara yang
sekarang bahawa sama sekali bahasa agnostik.
Oleh itu, kita bercakap kini kira-kira pangkalan data hubungan lebih umum,
atau SQL database amnya.
>> PENONTON: [didengar]
>> DAVID MALAN: Perkataan lebih baik untuk menggunakan adalah, boleh digunakan oleh mana-mana bahasa.
Jadi saya boleh menulis kod JavaScript, C kod, C ++ kod, kod Java, kod Ruby,
semua yang bercakap dengan pangkalan data dan melaksanakan pertanyaan.
Malah, bukan itu yang tidak baik segue untuk contoh pertanyaan.
Dan sekali lagi, kami tidak akan pergi ke Java atau C ++ atau mana-mana itu lagi,
tetapi dalam SQL, bahasa yang saya menyimpan merujuk, Structured Query Language,
ini sendiri adalah bahasa pengaturcaraan, tetapi ia bertujuan untuk digunakan bagi, tiada
kejutan, berstruktur pertanyaan pertanyaan.
>> Oleh yang saya maksudkan ini.
Cara anda memilih data daripada pangkalan data MySQL
adalah anda secara literal menaip dalam program anda sesuatu seperti pilih bintang daripada pengguna.
bahawa jadual ini saya menganggap, selepas ini dipanggil pengguna.
Saya boleh memanggilnya apa-apa yang kita mahu, tetapi yang jenis masuk akal.
Dan sebagainya pilih adalah sangat kata kerja biasa, jika anda
akan, SQL, yang benar-benar berbuat demikian.
Apa yang anda fikir bintang bermakna dalam konteks ini?
>> PENONTON: [didengar]
>> DAVID MALAN: Saya minta maaf?
>> PENONTON: [didengar]
>> DAVID MALAN: Tidak diperlukan, ia adalah lebih inklusif daripada itu, sebenarnya.
Ia adalah watak kad liar.
Star hampir selalu bermakna apa-apa, jadi ini bermakna, dalam kes ini,
pilih segala-galanya daripada pangkalan data.
Oleh itu, apabila saya katakan ini, saya maksudkan memberikan saya kembali setiap kolum
dari meja saya dipanggil pengguna.
Jadi memberi saya satu set hasil, kerana ia dipanggil.
Dalam erti kata lain, memberi saya satu salinan spreadsheet, adalah apa yang saya mendapat sekurang.
>> Tetapi jika saya katakan pilih bintang daripada pengguna di mana ID sama dengan 1, berapa besar perlu
set keputusan saya menjadi itu?
Atau setara, berapa banyak baris perlu Saya diserahkan kembali dari pangkalan data?
Mungkin hanya satu, jika saya mempunyai sesungguhnya ID dianggap sebagai pengecam yang unik,
dan jika David mempunyai bahawa ID unik, saya perlu kembali satu dan hanya satu baris
mengandungi semua maklumat Daud.
Jika saya berkata di mana ini ID sama dengan 99, saya perlu kembali,
dalam konteks ini, sifar baris, sekurang-kurangnya pada masa ini.
>> Walau bagaimanapun, jika saya tidak benar-benar mengambil berat tentang semua maklumat itu,
Saya hanya boleh katakan, di manakah David hidup?
Pilih kod Zip dari pengguna di mana ID adalah 1.
Ini akan memilih hanya kepadaku zip Daud kod dan tidak keseluruhan daripada baris tersebut.
Mengapa saya boleh melakukan ini dan bukannya Pertanyaan bintang, kad liar?
>> PENONTON: [didengar]
>> DAVID MALAN: Ya, aku mungkin memerlukannya.
Jadi prestasi sekali lagi jawapan di sini.
Mengapa meminta lebih maklumat daripada yang anda perlukan,
kerana walaupun ia adalah hak semua bersama-sama, anda masih perlu menyalin data itu,
ia akan kelihatan, dari pangkalan data ke dalam program anda entah bagaimana,
dan itu hanya bodoh jika anda hanya perlu lima daripada digit,
tidak keseluruhan baris.
>> Jadi bagaimana hendak memasukkan seorang pengguna?
Katakan pengguna mempunyai hanya mendaftar untuk kali pertama.
sintaks yang biasanya akan kelihatan seperti ini.
Masukkan ke dalam pengguna, dan maka kita akan berkata nilai-nilai,
dan kemudian kita akan berkata nilai-nilai seperti, katakan, Lauren Scully,
juruvideo kami di sini.
Dan bidang yang akan datang adalah gender.
Oleh itu, kita akan berkata quote, unquote "F", maka kita mempunyai ID
dan saya akan iaitu- mari berpura-pura dia tidak sebenarnya di sini,
jadi kita akan putar balik dalam cerita.
Jadi 2 akan menjadi ID beliau.
Dan kemudian medan seterusnya di sini adalah e-mel beliau.
Jadi ia akan menjadi seperti Lauren Scully dan sebagainya,
dan kita hanya akan dot dot dot ia jauh daripada sini.
Sekarang ia akan mendapatkan sedikit membosankan, tetapi pertanyaan sisip
akhirnya akan kelihatan seperti itu.
>> Jika saya mahu untuk menghilangkan Scully, uh-oh, mari kita membatalkan pendaftaran
, dia memadam akaun mereka, memotong daripada pengguna di mana ID bersamaan 2,
akan menghilangkan Scully.
Atau saya boleh katakan pengguna maklumat ditetapkan, katakan, apa yang kita boleh berubah?
Katakan dia bergerak.
Set zip sama 021-- nope, itulah zip semasa beliau.
90210.
Satu-satunya poskod Saya tahu di dunia.
Jadi yang akan mengubah zip dia code-- sebenarnya,
yang tidak akan mengubah zip dia kod.
>> Apa yang saya lakukan?
Walaupun sintaks yang mungkin baru.
>> PENONTON: [didengar]
DAVID MALAN: Ya, saya berpindah semua orang ke Beverly Hills, California.
Jadi saya perlu sebenarnya mengatakan di mana ID bersamaan 2.
Dan sebagainya.
Jadi SQL adalah semua mengenai jenis arahan.
Pilih, masukkan, memadam, mengemas kini, dengan predikat ini pada akhirnya
ini fasal di mana, jadi untuk bercakap.
Dan ada banyak lagi yang anda boleh dilakukan, tetapi ia benar-benar hanya berkisar
untuk semata-mata, jika arcanely, menyatakan apa yang anda mahu pangkalan data yang perlu dilakukan.
>> Dan kemudian pangkalan data akan memikirkan, apabila
anda memasukkan Lauren Scully ke dalam pangkalan data, di mana untuk meletakkan beliau dalam ingatan
supaya kita boleh dengan cepat mendapatkan beliau berdasarkan alamat e-mel beliau
atau berdasarkan nombor ID dia atau sebagainya.
Ya, Dan.
PENONTON: [didengar]
DAVID MALAN: Soalan Really baik.
Adakah skrip ini berubah dari Microsoft Access untuk Oracle
untuk MySQL untuk PostgreSQL?
Jawapan ringkasnya adalah ia bergantung.
Secara teori, ada yang sangat subset biasa besar SQL
yang dikongsi di semua daripada pelaksanaan ini.
Walau bagaimanapun, pelbagai pengeluar mempunyai ciri-ciri tambahan
kepada pangkalan data mereka untuk melakukan perkara-perkara tertentu di luar skop ciri ini,
yang mungkin, sebenarnya, memecahkan.
>> Jadi cara pemaju lindung nilai terhadap ini,
ialah berbanding daripada menulis mentah kod SQL seperti saya menulis di sini,
mereka sebaliknya menggunakan perpustakaan perpustakaan umum bahawa dirinya
adalah jenis peringkat yang lebih tinggi dan abstrak jauh mana produk yang anda gunakan.
Dan ia memberi anda fungsi dan prosedur
untuk memanggil supaya anda tidak sebenarnya menulis SQL mentah.
>> Secara teori, kemudian, anda boleh menukar produk dari Oracle untuk Microsoft
atau sebaliknya atau apa-apa lain, dan anda benar-benar
mengubah apa-apa tentang kod anda.
Realitinya, walaupun, adalah, anda kadang-kadang melepaskan ciri-akibat.
Anda mungkin telah memilih produk kerana ia mendapat ciri-ciri nilai tambah,
dan anda hanya kini tidak menggunakan mereka sedar.
>> Dan anekdot, kebanyakan syarikat cenderung tidak pernah beralih daripada pangkalan data mereka.
Oleh itu, sambil ini adalah baik untuk mempunyai ciri-ciri, realitinya
Iaitu, jika anda pembaikpulihan pangkalan data anda, anda
mungkin membuat tandan perubahan lain anyway, bahawa anda tidak semestinya
perlu menjangkakan bahawa.
Oleh itu, ia boleh dikatakan lebih-kejuruteraan masalah ini,
tetapi ia benar-benar bergantung kepada konteks.
Tetapi dalam teori, SQL dikongsi merentasi pelbagai produk.
soalan benar-benar baik.
Yeah.
>> PENONTON: [didengar]
>> DAVID MALAN: Ya, jadi anda boleh berfikir pangkalan data
hanya pelayan, pada akhir hari, dan di dalam pelayan yang
adalah sejumlah besar jadual, baris dan lajur.
Dan apabila anda menghantar pertanyaan seperti ini dari program anda, laman web anda,
ditulis dalam Java, Ruby, Python, apa sahaja, server sedang menerima arahan ini
dan menterjemahkan dalam literal cara yang sama
kita dibincangkan sebelum ini dengan bahasa ditafsirkan,
dan kemudian melaksanakan beberapa tindakan ke atas sifar atau lebih baris dalam sifar atau lebih jadual.
PENONTON: [didengar]
>> DAVID MALAN: Tepat sekali, betul-betul.
Jadi pseudokod untuk sesuatu seperti yang mungkin menjadi ini.
Dalam fail PHP anda atau anda fail Python atau fail Java anda,
anda akan mempunyai kod pseudo, atau Calar seperti blok, jika pengguna melawat
acme.com/register~~V untuk kali pertama, kemudian masukkan ke dalam pengguna dan sebagainya.
Dan kita akan menterjemahkan ini kepada more Kod konkrit pada akhirnya.
Tetapi sebenarnya, kita mempunyai semua blok bangunan di sini,
walaupun kita ponteng beberapa langkah-langkah pelaksanaan.
>> Jadi biarlah saya mencari kesalahan dengan apa yang kita hebat tidak hanya sebentar tadi.
Anda telah dicipta yang cukup meja yang lengkap untuk pengguna.
Memang diakui, kita boleh melaksanakan dalam beberapa cara yang berbeza,
tetapi anda sebenarnya telah membawa kami turun path-- dan saya kata anda,
tetapi ia mungkin fault-- saya yang agak pelaksanaan pangkalan data yang tidak cekap.
Ia tidak normal.
>> Dan dengan normal saya maksudkan ada akan menjadi,
dari masa ke masa, yang lebihan yang ketara, dan oleh itu tidak cekap,
iaitu pembaziran ruang.
Hanya berdasarkan apa yang anda lihat di sini, boleh anda membayangkan di mana sisa ini ruang
akan datang, dari masa ke masa, kerana semakin banyak pengguna mendaftar
untuk laman web anda?
Apa data mungkin menjadi berlebihan?
>> PENONTON: [didengar]
>> DAVID MALAN: Mengapa kamu maksudkan itu?
PENONTON: [didengar]
DAVID MALAN: Ya.
Dan mari kita andaikan untuk tujuan hari ini bahawa itu adalah benar.
Rupa-rupanya, dan kami telah belajar ini dengan cara yang sukar, yang tidak benar.
Entah bagaimana pelbagai bandar-bandar mempunyai, entah bagaimana, zip yang sama kod,
yang memecah gerak hati yang indah ini.
Tetapi mari kita andaikan itu benar, kerana ia hampir sentiasa benar.
Jadi andaikan bahawa kod zip adalah selalu dikaitkan dengan bandar yang sama
dan negeri, yang merupakan jenis andaian yang munasabah,
tetapi tidak betul, ia ternyata.
Tetapi andaian yang munasabah untuk tujuan hari ini.
>> Kemudian menganggap bahawa saya tinggal di Cambridge, MA, mengikut jadual pengguna ini,
dan menganggap bahawa Lauren Scully tinggal di Cambridge, MA,
dan menganggap bahawa Kareem tinggal di Cambridge, MA,
dan Arwa tinggal di Cambridge, MA, kita semua dalam 02138.
Mengapa kita mengingati Cambridge, MA, 02138 untuk semua empat daripada kami?
Apa sudah memadai untuk diingati?
>> PENONTON: [didengar]
DAVID MALAN: Hanya kod zip.
Cuma 02138 wujud, kerana anda tahu apa yang boleh kita lakukan?
Kita boleh mendapatkan mewah sedikit di sini dan di sini, menentukan jadual lain
di mana ini akan menjadi nama, ini akan menjadi jenis,
ini akan menjadi panjang, dan selepas ini, saya
akan memanggil ini jadual bandar saya.
Ini dipanggil, sudah Sudah tentu, jadual pengguna saya.
Dan jadi apa yang perlu saya letakkan di sini untuk jadual bandar saya, yang anda fikir?
>> PENONTON: [didengar]
>> DAVID MALAN: Ya.
Jadi zip dan negeri dan bandar.
Dan sebagainya jenis di sini, kami akan berkata ini akan menjadi char 5 lagi,
tertakluk kepada perbahasan sebelum ini.
Ini akan menjadi enum yang, mungkin seperti sebelum ini, dan bandar akan menjadi varchar 50.
Dan sehingga kini apa yang saya dapat untuk menghapuskan dari jadual ini
untuk menghapuskan ketidakcekapan itu?
>> PENONTON: [didengar]
DAVID MALAN: Nice.
Negeri dan bandar pergi, jadi saya sekarang dihapuskan ketidakcekapan potensi
untuk redundantly mengingat, Cambridge, MA, Cambridge, MA, Cambridge, MA,
Cambridge, MA, yang, mudah-mudahan tidak pernah akan berubah.
Dan jika ia berlaku, ia minorly menjengkelkan, kini
bahawa saya perlu mengubah dalam pelbagai baris,
sedangkan di sini, saya boleh hanya mengubahnya dalam satu tempat.
>> Sekarang apa yang perdagangan-off, mungkin?
Ini adalah super mudah.
Mempunyai semua data saya dengan baik bersama-sama.
Tetapi apa yang jelas kes itu sekarang?
>> PENONTON: [didengar]
DAVID MALAN: Tepat sekali, dan saya gembira anda menggunakan perkataan menyertai,
kerana itulah sebenarnya kata kunci, dalam dunia pangkalan data hubungan
dalam SQL, ia adalah satu perkataan yang sebenar anda mungkin menaip atau sekurang-kurangnya menyampaikan.
Dan sebenarnya, apa yang kita perlu lakukan untuk memilih maklumat penuh Daud adalah
sesuatu seperti pilih bintang daripada pengguna, menyertai bandar-bandar, pada-- dan kini
Saya akan hanya bergerak ke baris kedua supaya users.zip fits-- ini sama
cities.zip, di mana users.ID sama dengan 1.
>> Jadi apa yang berlaku?
Ia hodoh mencari, tetapi anda boleh jenis membacanya kiri ke kanan, atas ke bawah.
Pilih bintang daripada pengguna adalah sama seperti sebelum ini,
tetapi ia bukan daripada pengguna, per se.
Ia dari pengguna menyertai bandar-bandar.
Apa yang saya menyertai kedua-dua jadual di?
Well, nampaknya, pengguna jadual zip lapangan,
dan tempoh ini hanya khas sintaks untuk menyatakan idea itu,
dan ini adalah bandar-bandar jadual zip lapangan.
Saya mahu kedua-dua menjadi sama, tetapi saya mahu akhirnya pilih
hanya mereka baris di mana ID dalam jadual pengguna yang
sama dengan 1, yang kebetulan berada lombong.
>> Dan hanya untuk menjadi jelas, programmer, biasanya apabila
mengekod keras sesuatu seperti bilangan 1, kerana jika tidak, laman web hanya
menyokong David atau pengguna pertama, anda
sebaliknya akan melakukan sesuatu seperti ID, di mana
ini merupakan satu berubah-ubah, sesuatu yang
boleh berubah mengikut masa, sama dalam semangat untuk apa yang saya katakan sebelum ini
dengan jenis ruang letak.
Tetapi buat masa ini kita hanya akan mengekod keras sebagai 1.
Dan jadi apa maknanya?
Nah, cara yang baik untuk menggambarkan ini adalah bahawa jika tangan ini adalah jadual pengguna itu,
dan tangan ini adalah zip meja, kami semacam finding--
dan hujung jari saya adalah zip di sini, dan hujung jari saya
di sini adalah zip, anda jenis saling ia
supaya anda mendapat kembali yang terhasil jadual asal, dengan benar-benar menyertai
dua jadual di atas padang yang sama.
Dan ia tidak perlu zip.
Ia boleh menjadi paling apa-apa lagi, tetapi zip adalah bagus, kerana satu, ia adalah pendek,
dua, ia sentiasa panjang yang sama, jadi tidak
kecekapan sebenar kepada apa Olivier dicadangkan di sini
dengan faktor keluar zip, dan [Didengar] mencadangkan bahawa kita menyingkirkan
bandar dan negeri.
>> Jadi ini adalah proses dikenali sebagai pemulihan.
Sebarang pertanyaan mengenai itu?
Nah biar saya tunjukkan ini adalah jenis barangan,
walaupun ia adalah agak rendah peringkat, perbincangan ini, yang anda akan berfikir
anda semacam mendapat hilang dalam rumpai,
ini adalah satu manifestasi yang mencukupi peluang kepada pemaju untuk menjadi buruk.
Dan sebenarnya, walaupun kita, dalam kursus yang saya telah diajar, apabila kita mempunyai,
misalnya, tidak berpengalaman pengaturcara ijazah
membina laman web, pada pandangan pertama, laman mungkin kelihatan hebat.
Dan mereka mempunyai semua fungsi kita diminta,
pemaju melakukan kerja yang baik.
>> Tetapi mereka tidak semestinya tahu cukup tentang reka bentuk pangkalan data
atau mereka tidak berfikir keras cukup mengenai jenis data
dan jenis pengguna yang laman web akan mempunyai,
dan kita dapati, maka, enam bulan kemudian, selepas mereka menamatkan pengajian atau berpindah,
yang persetan, laman web kami adalah benar-benar, benar-benar perlahan.
Dan saya tidak bercakap tentang mempunyai berjuta-juta atau beribu-ribu pengguna.
Maksud saya beberapa pengguna seratus di kampus, semuanya suka, misalnya,
membeli-belah untuk kursus di masa yang sama, mereka
menggunakan bahawa katalog kursus permohonan yang saya sebutkan
dan perkara yang semakin benar-benar perlahan kerana tiada indeks.
Tiada bintang merah, jadi untuk bercakap, atau kita tidak mempunyai semestinya
kira daripada data yang sama untuk mendapatkan beberapa penjimatan ruang.
>> Dan apabila tapisan pemaju atau orang pangkalan data atau sebagainya,
jenis soalan untuk berfikir melalui Bahkan, apabila menyemak kod seseorang,
untuk mengatakan, tidak semestinya melihat melalui semua kod mereka, melainkan berkata:
mari kita lihat melalui jadual pangkalan data.
Apa yang anda menyimpan?
Dan kemudian berkata, baik, tunggu minit, mengapa engkau menggunakan integer?
Bagaimana jika kita mempunyai 4 bilion dan 1 baris ini?
Dan jenis-jenis soalan ini adalah peluang
untuk jenis menolak kembali dan mendapatkan rasa, di mana
jika anda tidak selesa melakukan ia, mempunyai seseorang yang lebih teknikal
bertanya soalan-soalan, sama ada atau tidak orang yang benar-benar tahu barangan mereka.
Dan ini adalah jenis barangan, juga, bahawa orang-orang
di internet yang adalah otodidak, mungkin
belajar kurang kerap, kerana anda tidak semestinya mencari ia
banyak, kerana anda boleh mendapatkan pangkalan data dan berjalan,
tetapi melainkan anda telah membaca pada tutorial atau menjadi
diberitahu mengenai pemulihan pangkalan data dan pengindeksan dan prestasi,
ini adalah jenis perkara yang akan menyakiti anda.
Dan anda mungkin berfikir, atau jurutera yang tidak baik mungkin berkata, oh, baik, gaji kita lebih baik
untuk pangkalan data yang lebih besar atau pangkalan data yang lebih cepat
atau hanya membuang wang pada ini, skala menegak, tidak semestinya demikian.
Jika anda pergi dalam- dan anda boleh pergi dalam selepas indeks fact-- dan menambah,
dan ia mungkin mengambil masa beberapa jam untuk pangkalan data untuk membina data baru
struktur yang saya katakan sebelum ini, anda masih boleh menetapkan ini selepas fakta,
bahawa ini adalah di mana anda mula untuk membezakan
pereka baik dari yang buruk pereka, bukan hanya estetika,
tetapi prestasi-bijak juga.
Ada soalan?
Tidak?
Jadi untuk NoSQL, yang merupakan jenis yang lain pangkalan data yang saya dirujuk sebelum ini,
anda tidak mempunyai baris dan lajur.
Sebaliknya, anda akan mempunyai sesuatu yang kelihatan sedikit seperti ini.
Saya akan menggunakan sintaks yang sama.
pendakap kerinting berlaku kepada digunakan di sini cukup banyak.
Anda mungkin mempunyai sesuatu seperti nama pertama adalah David,
anda mungkin mempunyai lalu Nama Malan, sebut harga,
anda mungkin mempunyai ID is-- maafkan saya, whoops-- ID adalah 1,
e-mel adalah malan@harvard.edu, dan saya tidak akan mengganggu menaip yang lain, dan kemudian
beberapa perkara lain.
>> Dalam erti kata lain, ini adalah perwakilan teks
daripada apa yang kita biasanya akan memanggil objek dalam program komputer.
Dan objek adalah umumnya hanya koleksi pasangan nilai utama.
Jadi sekali lagi, tema yang berulang ini.
Kami melihat pasangan nilai utama dalam HTML, kita lihat pasangan nilai utama sekarang
dalam konteks pangkalan data, dan kami melihat pasangan nilai utama dalam konteks
daripada, saya fikir, bahasa yang awal hari ini.
Menyimpan datang.
Dan sesungguhnya itu benar-benar apa yang bermuara pada data,
data dan metadata atau nilai dan kunci, masing-masing.
>> Jadi bukan hubungan pangkalan data, sesuatu yang berdasarkan
pada objek, di mana anda hanya rumpun semua bersama-sama dan meletakkannya
ke dalam ingatan, secara amnya akan menjadi digambarkan sebagai, atau terfikir, kerana ini.
Dan saya akan meninggalkan bahawa kini sebagai jenis pendekatan alternatif.
Dan seseorang tidak semestinya lebih baik daripada yang lain.
Malah, sangat banyak dalam tren hari ini adalah sistem pangkalan data
seperti MongoDB dan Redis dan beberapa lain-lain alat itu, secara percuma,
tetapi mereka semakin en tren.
Sebahagiannya kerana mereka menawarkan tambahan mempunyai lebih daripada pendekatan ini jadual,
tetapi juga kerana mereka sedikit lebih mudah untuk digunakan,
kerana anda tidak perlu berfikir keras tentang banyak ini keputusan reka bentuk.
Jadi plus dan kemudaratan.
Jadi sedar ada pilihan luar apa yang kita hanya menghabiskan masa di.
>> Jadi mari kita buat ini.
Mari kita beralih sedikit kini kembali kepada pengaturcaraan web,
supaya kita jenis kesimpulan hari ini dengan sesuatu
yang sedikit hands-on, mengisi dalam beberapa jurang dari semalam.
Biar saya pergi ke ini pertama.
Jadi ingat semalam bahawa kita mempunyai beberapa HTML berkanun
halaman yang pada mulanya, hanya HTML, dan kemudian sekunder mempunyai CSS,
Cascading Style Sheets.
Ini adalah tag baru yang kita tidak melihat hari ini, atau kekal di atas,
apa yang dipanggil tag skrip.
>> Rupa-rupanya, anda sebenarnya boleh membenamkan bahasa dipanggil JavaScript dalam web anda
halaman dan membuat web anda laman melakukan sesuatu.
Jadi, apa yang saya maksudkan dengan itu?
Baiklah, biar saya pergi ke hadapan dan hanya meminjam kod ini untuk seketika.
Saya akan pergi ke Cloud9, tidak perlu untuk pergi ke sana sendiri sahaja lagi,
dan saya akan memanggil alert.HTML ini.
Saya akan paste fail saya di sini.
Dan hanya untuk menjelaskan apa yang saya lakukan, mari saya pergi ke alamat ini dan pergi untuk memberi amaran,
dan anda melihat Hello World.
>> Tetapi ini adalah jenis underwhelming.
Saya mahu melakukan sesuatu sedikit berbeza.
Jadi, saya akan benar-benar melakukan ini.
Saya akan pergi di sini e, dan di antara tag skrip saya,
mengatakan amaran ( 'hello, dunia'); supaya notis ia sedikit ceroboh, tetapi saya telah mendapat HTML,
di dalam yang merupakan bahasa dipanggil JavaScript,
dan ini adalah apa yang dipanggil fungsi panggilan atau panggilan prosedur.
Ini adalah kata kerja, secara literal, dalam kes ini, dan saya menyeru fungsi kod
bahawa orang lain menulis.
>> Jadi fungsi yang merupakan amaran, jadi mari kita pergi ke halaman ini
sekarang dan klik tambah nilai, dan sekarang anda melihat sedikit interaktiviti.
Ia adalah jenis sekolah lama dan hodoh.
Ini jenis mengingatkan anda daripada pop-up, mungkin, tadi
tetapi ia tidak melakukan sesuatu yang lebih sedikit perancangan.
>> Jadi lebih daripada itu, mari kita buat sesuatu yang lebih menarik.
Biar saya pergi di sini dan menghilangkan.
Dan saya akan pergi ke hadapan dan buat borang seperti yang kami lakukan semalam.
Sebenarnya, anda tahu apa?
Saya akan pergi ke google.html, yang kita
bermula pada hari ini, yang kelihatan seperti ini, melalui mana kita mencari untuk kucing
Tetapi perhatikan ada jenis yang bug dalam versi semasa.
Ia berfungsi untuk kucing, tetapi menganggap bahawa Saya tidak bekerjasama dan saya menaip apa-apa,
dan saya klik hantar.
Itulah jenis tingkah laku yang pelik.
Membawa saya ke Google sebenar, tidak memberi saya mesej ralat.
Saya ingin memberitahu pengguna anda perlu untuk memberikan kita nilai.
>> Jadi bagaimana kita boleh melakukan ini?
Nah biar saya kembali ke dalam Cloud9 dan biarlah saya pergi ke bahagian atas halaman saya
dan menambah tag skrip seperti ini, di mana Saya akan menaip beberapa kod JavaScript.
Dan saya akan melakukan yang berikut.
Jika (document.getelementByID-- dan ingat yang kita bercakap tentang itu sebelum ini,
fungsi itu.
Apa ID yang saya mahu untuk mendapatkan?
Saya ingin mendapatkan q, dan saya akan katakan sama dengan apa-apa, seperti this--
sebenarnya membiarkan saya menggunakan tanda petik hanya untuk consistency-- sama apa-apa,
kemudian amaran ( "Sila taip pertanyaan") di sini.
>> Jadi saya mempunyai apa yang kelihatan sebagai sesuatu seperti syarat.
Kami telah melihat ini idea umum dalam Scratch.
Ia seperti satu teka-teki yang keping yang kelihatan seperti ini.
Dan apa yang saya katakan?
Well, turun di sini, perhatikan Saya akan melakukan yang berikut.
Saya akan memberikan borang ini bidang bukan sahaja nama q, yang
adalah apa yang mendapat diserahkan kepada Google, tetapi saya akan memberikan pengecam tempatan,
juga dikenali sebagai q.
Tetapi saya boleh memanggil apa-apa Saya mahu, saya hanya akan memastikan ia mudah
dan juga memanggilnya q, hanya untuk kesederhanaan.
>> Dan sekarang saya akan lakukan sesuatu yang lebih sedikit.
Dalam bidang borang di sini, saya akan menambah apa yang dipanggil pengendali acara.
Di hantar, saya mahu panggil fungsi yang dipanggil validate.
Ini tidak wujud lagi, ini perkataan, atau validate kata kerja ini,
kerana apa yang saya akan lakukan di sini sekarang ialah menambah beberapa kod.
>> Saya akan mengatakan fungsi validate.
Saya akan mengengsot ini dan menambah satu lagi pendakap kerinting di sini dan satu lagi di sini.
Pertimbangkan apa ini kini melakukan.
Saya mempunyai sekarang-- berfikir kerana dicipta saya sekeping teka-teki sendiri yang sebelumnya belum
wujud, dan saya telah dipanggil teka-teki ini sekeping sekeping validate teka-teki.
Tujuannya dalam hidup adalah untuk melaksanakan empat baris kod di dalamnya.
>> Jika document.getElementByID jadi dari segi konsep,
yang akan pergi ke dalam unsur, elemen HTML yang unik
idea hanya q, dan kemudian walaupun sintaks yang kelihatan sedikit pelik,
yang sama sama hanya bermaksud sama dengan.
Ini bermakna jika elemen dengan pengecam unik q, apabila mendapat,
tidak mempunyai nilai, ia hanya sama quote unquote, apa-apa di sana,
maka apa yang saya mahu lakukan?
Saya mahu menjerit pada pengguna.
>> Dan kita tidak akan pergi terperinci di sini.
Saya akan kembali palsu.
Itulah ralat.
Yang lain, saya akan kembali benar.
Jadi, sama ada ia bekerja atau tidak.
Palsu atau benar.
Dan sekarang jika saya tidak membuat apa-apa kesilapan, biarlah saya menyimpan ini dan tambah nilai ini.
Dan biarlah saya cek hanya dua kali ganda Saya tidak, sebenarnya, membuat apa-apa kesilapan menaip,
jadi saya tidak memalukan diri sendiri.
Mari kita lihat jika ia berfungsi.
>> Jadi sekarang saya akan menaip kucing.
Ia masih berfungsi, atau kerja-kerja separuh, sekurang-kurangnya.
Sekarang, saya akan masukkannya semula, dan sekarang mari saya cuba mengemukakan tanpa menaip
sesuatupun sialan, ia patah.
Satu masa.
Biar saya membuka konsol, [Didengar] log, memuat semula halaman.
Biar saya cuba ini lagi.
Oh, sialan.
Saya terlupa.
Saya membuat kesilapan menaip.
Saya masih ingat apa yang ada.
.value.
Saya bermaksud mengatakan jika nilai unsur ID yang merupakan q
sama dengan itu, maka menjerit pada pengguna.
>> Jadi sekarang mari saya menahan nafas saya sekali lagi.
Di sini kita pergi.
Di sana kami pergi.
Sila taip pertanyaan.
Jadi ia tidak membiarkan saya melalui.
Saya boleh menjadi jenis suka bermain dengan ini, dan bukannya memeriksa tiada nilai,
Saya boleh mengatakan sesuatu seperti, tidak lagi mencari kucing,
dan sekarang kita hanya boleh lebih main-main biarlah pengguna memperoleh anjing jika dia
mahu, atau jika saya pergi di sini dan mencari kucing, sekarang saya tidak boleh.
>> Jadi apa yang bisa dibesarkan di sini?
Jadi satu, kami telah diperkenalkan ke dalam dunia kita HTML dan CSS,
fungsi pengaturcaraan.
Saya boleh sebenarnya kini membuat keputusan dalam kod.
Sebelum ini, semua saya boleh lakukan adalah menandakan kandungan teks atau kandungan grafik
dan beritahu apa yang perlu seperti dan di mana untuk dipaparkan.
Sekarang saya benar-benar boleh meminta soalan atas laman web
dan membuat keputusan berdasarkan di atasnya, dan meminta pengguna
jika saya perlu menjerit pada dia atau dia.
>> Jadi mari kita cuba sesuatu pada kita sendiri dengan ini.
Teruskan, biarlah saya membuka slaid seterusnya di sini, dan hanya menunjukkan satu perkara.
Sama seperti dengan CSS, kita boleh faktor keluar kod JavaScript kami untuk fail yang berasingan,
anda boleh melakukan perkara yang sama dengan JavaScript seperti dengan CSS.
Dan anda menggunakan yang menggunakan sumber atribut tag skrip.
Tetapi kita tidak akan merumitkan perkara untuk sekarang.
Sebaliknya, jika anda boleh pergi ke tidak halaman ini,
but-- biarlah saya bergerak ini dalam perintah- pergi ke, jika anda boleh, page ini di sini.
URL ini di sini.
Ada dalam slaid hari ini.
Anda mungkin perlu memuat semula kerana Saya telah menambah beberapa perkara.
>> Tetapi pergi ke sana di mana beberapa teka-teki menanti.
Dan ini akan memberikan kita peluang, dalam konteks yang sedikit lebih seronok,
untuk melibatkan diri dengan beberapa JavaScript.
Dan apabila anda sampai ke sana, Saya akan menjelaskan apa yang menanti.
Dapatkan hijau.
Set biru.
Set hijau, menetapkan merah.
Oops.
Maaf.
>> Ini adalah sejauh mana kita dokumentasi untuk cabaran ini.
Dan ini akan bekerja seperti berikut.
Jadi apa yang anda ada di ini halaman adalah sejumlah
teka-teki imej dengan buddy di Universiti Stanford.
Jadi apa yang anda lihat di sini adalah hampir jenis salah satu teka-teki mata sihir,
tetapi jika anda hanya merenung, tiada apa yang akan pop keluar pada anda.
Sebaliknya, sesuatu yang tidak tersembunyi dalam imej ini.
Dan ia tersembunyi dengan cara yang berikut.
Imej, kerana anda mungkin tahu, boleh terdiri daripada tiga warna.
Sesetengah merah, ada biru, dan beberapa hijau.
Dan kita boleh membuat semua warna dalam pelangi
dengan mencampurkan ketiga-tiga warna entah bagaimana.
>> Jadi ini kelihatan kebanyakannya hijau dan biru, tetapi sebagai Nick mengatakan di sini,
ini imej teka-teki besi adalah teka-teki.
Ia mengandungi imej sesuatu yang terkenal, bagaimanapun,
imej telah diputarbelitkan.
Objektif terkenal adalah dalam nilai merah.
nilai Walau bagaimanapun, merah semuanya telah dibahagikan dengan 10.
Jadi mereka terlalu kecil dengan faktor 10.
Jadi dalam erti kata lain, Nick mengambil imej asal,
dan dia desaturated semua merah itu daripadanya,
mengurangkan jumlah merah dakwat, jika anda akan, di dalamnya.
>> Nilai biru dan hijau semua hanya tidak bermakna,
nilai rawak, aka direka bunyi untuk mengaburi imej sebenar.
Jadi apa yang Nick lakukan adalah dia melunakkan merah dan kemudian
dia hanya melemparkan rawak jumlah biru dan hijau
pada imej untuk jenis kabur apa yang sebenarnya masih ada.
Anda mesti membatalkan gangguan ini untuk mendedahkan imej.
Pertama, menetapkan semua nilai biru dan hijau kepada sifar untuk mendapatkan mereka keluar dari jalan,
dan melihat hasilnya. kemudian membiak setiap nilai merah dengan 10,
mendaki semula sehingga anggaran nilai akhir.
Apakah objek yang terkenal?
>> Jadi semua anda mempunyai segi empat tepat ini dalam pelayar anda sekarang.
Dan perhatikan bahawa terdapat beberapa kod starter, jadi untuk bercakap.
Ini adalah kod JavaScript yang Nick telah menulis untuk anda.
Dan perhatikan bahawa ada garis di tengah-tengah yang
bermula dengan slash slash, itu apa yang biasanya dipanggil komen.
Ini bermakna ia adalah satu frasa untuk pengaturcara yang tidak mempunyai makna berfungsi.
Ia hanya satu isyarat visual kepada manusia.
>> Jadi, anda boleh pergi ke hadapan dan memadam hanya talian itu,
dan menjadi super tidak berhati-hati untuk memadam atau mengubah apa-apa lagi.
Dan biarlah saya berjalan anda melalui apa kod ini tidak dan saya akan meninggalkan
kepada anda untuk memikirkan imej rahsia.
Barisan pertama di sini bahawa saya baru sahaja diserlahkan memberikan anda yang berikut.
Pada sebelah kiri, anda mempunyai apa yang dipanggil
pembolehubah yang Nick mempunyai sewenang-wenangnya, tetapi munasabah dipanggil im untuk imej.
Pada sebelah tangan kanan itu tanda yang sama,
dia berkata memberi saya baru quote, unquote "imej mudah".
>> imej mudah, dalam konteks ini adalah apa yang dipanggil kelas, baik,
ia adalah jenis seperti class-- yang teknikal prototype-- tetapi benar-benar,
ini memberi saya objek baru, kandungan yang fail,
besi-puzzle.png.
Dalam erti kata lain, Nick telah mencipta tanggapan ini imej yang mudah
supaya kita boleh, pedagogi tujuan, bermain dengan imej
dan menukarkan merah, nilai-nilai hijau, dan biru.
>> Dan bagaimana kita melakukannya?
sintaks agak samar ini di sini jenis seperti blok ulangan
sebahagian dari anda lihat dalam Scratch awal hari ini, di mana anda boleh ulangi 10 kali.
Dalam kes ini, Nick tidak mempunyai dikodkeraskan beberapa seperti 10.
Sebaliknya dia berkata, memulakan pembolehubah yang dipanggil x kepada 0,
memeriksa jika x adalah kurang daripada lebar imej.
>> Dan sebagainya untuk menjadi lebih betul, imej adalah berubah-ubah, dot bermakna pergi di dalamnya
dan lebar, dan kemudian paren terbuka, tertutup
paren hanya cara yang pengaturcara untuk mengatakan ini adalah fungsi.
Ini adalah prosedur.
Ini adalah fungsi orang lain menulis.
Menggunakannya dan memberikan saya kembali jawapan.
Dan kemudian x ++ adalah cara yang mewah untuk berkata, selepas anda telah melakukan ini sekali,
kenaikan x oleh 1.
Dalam erti kata lain, ini adalah cara yang pengaturcara
mendorong gelung itulah akan melelar
semua lajur dalam imej.
>> Imej hanya grid titik, baris dan lajur titik.
Ini adalah satu cara untuk mengulanginya ke atas semua lajur.
Dan di bahagian dalam, Sementara itu, kami iterating
atas ketinggian, di sini dan di sini dan di sini.
Jadi ini adalah hanya satu cara untuk traipsing, hampir seperti mesin taip sekolah lama,
hanya pergi ke atas seluruh imej secara berulang.
Malah yang tidak cukup penuh jelas, hanya mengambil iman buat masa ini,
bahawa orang-orang tiga baris kod bersama-sama adalah
akan membolehkan anda untuk melihat secara berulang di setiap piksel, setiap titik dalam imej.
>> Apakah piksel?
Nah, untuk menjadi jelas, jika kita melihat pada asal dan zum masuk,
jika anda benar-benar meletakkan mata anda ke skrin komputer, itu
hanya sejumlah besar titik, beberapa ribu titik dibungkus bersama-sama di sana.
Dan supaya apa yang hendak engkau buat?
Setiap salah satu titik, definisi akhir,
adalah hasil daripada apa yang biasanya dipanggil RGB, merah, hijau, biru, yang
sekali lagi, boleh digabungkan untuk memberikan apa-apa bilangan warna.
>> Malah, jika anda ingat dari bertahun-tahun yang lalu,
skrin projektor seperti perkara-perkara ini digunakan untuk tidak mempunyai satu kanta tetapi tiga.
Salah seorang daripada mereka meludah keluar lampu merah, salah satu mereka meludah keluar lampu hijau, salah seorang daripada mereka
meludah keluar cahaya biru.
Dan jika anda berada di sebuah sekolah menengah seperti saya adalah di mana mereka tidak pernah
sejajar dengan betul, anda adalah sentiasa menonton filem sejarah
yang bersama-sama sedikit diputarbelitkan, kerana tiga warna tidak
menggabungkan dengan baik.
>> Tetapi ternyata bahawa setiap nilai-nilai merah, hijau, dan biru,
boleh mempunyai beberapa yang berkaitan dengan mereka.
Sebagai contoh, 0 untuk merah bermaksud tidak merah, 0 untuk hijau bermaksud tidak hijau,
dan 0 untuk biru bermakna tiada biru.
Jadi, jika anda tidak mempunyai merah, ada hijau, dan tiada biru, apa warna yang anda ada?
>> PENONTON: [didengar]
DAVID MALAN: Anda akan berharap begitu, ia putih.
Malangnya, ini operates-- maaf?
>> PENONTON: [didengar]
DAVID MALAN: Jadi anda sebenarnya mempunyai hitam, dalam kes ini.
Jadi jika anda mempunyai semua ini warna dihidupkan, anda perlu hitam.
Walau bagaimanapun, jika anda mempunyai, katakan banyak daripada mereka, seperti banyak merah, 255 daripadanya,
banyak hijau, dan banyak biru, yang putih.
Jadi ini adalah dua keterlaluan.
Jadi dengan logik ini, jika saya mempunyai banyak merah dan tidak hijau dan tidak biru,
apa warna itu?
PENONTON: [didengar]
DAVID MALAN: Hak, jelas.
Dan kemudian ada merah, banyak hijau, tidak biru, dan kemudian
jika anda ada-- baik, kita hanya akan menyelesaikan itu, hanya kerana, tetapi ini, sudah tentu,
sekarang, adalah biru.
Dan kini anda boleh menggabungkan warna-warna ini.
Sekarang sebagai diketepikan, jika mana-mana anda mempunyai pernah melakukan beberapa reka bentuk laman web yang sebenar,
anda mungkin sebenarnya melihat simbol-simbol seperti ini.
FFF-- dan sebenarnya, ia adalah mungkin tidak yang.
Ia FFFFFF.
>> Sesiapa yang pernah dilihat F dan E dan through-- A supaya ternyata,
kita bercakap semalam mengenai perpuluhan, dan hari ini, jenis mengenai perpuluhan.
Hari ini kita bercakap tentang binari.
Rupa-rupanya, perenambelasan adalah sangat sistem asas yang sama untuk digunakan dalam pengkomputeran.
Binari adalah dua, perpuluhan adalah 10, hex adalah 16.
Dan ternyata, bagaimana kamu kira dalam perenambelasan?
Sifar, satu, dua, tiga, empat, lima, enam, tujuh, lapan,
sembilan, apa yang anda gunakan selepas sembilan?
Berapa jumlah yang akan datang?
Kita sudah digunakan sifar.
Saya memerlukan 16 ini.
Sifar, satu, dua, tiga, empat, lima, enam, tujuh, lapan, sembilan,
anda memerlukan beberapa konvensyen sewenang-wenangnya.
>> Dan apa yang manusia telah memilih masa lalu bahawa selepas sembilan datang surat
A dan kemudian B kemudian C. Oleh itu, cara anda mengira dalam perenambelasan
adalah sifar, satu, dua, tiga, empat, lima, enam, tujuh, lapan, sembilan,
A, B, C, D, E, F, dan yang akan mengira anda semua cara itu, ia ternyata, hingga 15.
Jadi sifar hingga 15 adalah sifar melalui F. Sekarang mengapa yang penting?
Nah, apabila anda mempunyai dua F, itulah bagaimana anda meluahkan 255.
>> Selagi cerita pendek, dunia Photoshop,
bahawa perisian reka bentuk grafik, dalam dunia pembangunan web,
di mana anda mempunyai banyak warna, sudah tentu, untuk bermain dengan,
sering pengaturcara akan menyatakan mereka yang perenambelasan,
hanya kerana ia cenderung untuk menjadi sedikit lebih mudah.
Walaupun pada pandangan pertama ia lebih kompleks.
>> Jadi, dalam apa-apa hal, ini adalah penting kerana Nick di Stanford
telah memberikan kita enam keping fungsi bahawa anda, pengaturcara tunas,
kini mempunyai keupayaan untuk menggunakan.
Dibina ke dalam web ini halaman adalah enam fungsi,
enam prosedur yang Nick menulis.
Tiga daripada mereka akan membawa anda nombor, merah, hijau, atau nilai yang biru.
Tiga daripada mereka akan menetapkan nilai itu.
Dan garis bawah ini hanya ruang letak,
jadi anda perlu tahu apa yang mereka berada.
>> Jadi dengan ketiga-tiga fungsi, pertama perkara-perkara ini
akan menjadi x-menyelaras, dan yang kedua daripada perkara-perkara
akan menjadi y-koordinat.
Dalam erti kata lain, yang titik, yang pixel yang anda mahu untuk mendapatkan hijau,
mendapatkan biru, dapatkan merah.
Dan kemudian di sini, ini akan menjadi x, ini akan menjadi nilai y,
dan ini akan menjadi nombor.
Jadi mari kita buat pertama garis ini bersama-sama
dan kemudian saya akan serahkan kepada anda cuba untuk menyimpulkan yang lain.
Jadi setiap arahan di halaman ini, kita perlu
meningkat merah dengan faktor 10, dan kita perlu membuang hijau
dan keluarkan biru.
Mari kita mulakan dengan senario kedua.
Jadi jika saya mahu, dan saya akan untuk mengengsot dengan menggunakan beberapa ruang,
jika saya ingin menetapkan merah, hijau, atau nilai biru,
Saya akan melakukan yang berikut.
>> Imej, im.setBlue, dan kemudian berdasarkan arahan saya di sini,
apa tiga perkara perlu saya menaip dalam kurungan sekarang?
Saya memerlukan nilai x itu, y nilai, dan apa yang beberapa
perlu saya meletakkan di sini jika saya mahu menghilangkan biru, berdasarkan cerita ini di sini?
Hanya sifar.
Jika saya mahu tidak biru, saya hanya akan mengubahnya kepada sifar.
>> Sekarang mari kita senaraikan apa ini lakukan.
Saya ada di sini di atas ini baris kedua dan ketiga,
Saya mendakwa dua gelung, gelung bersarang, jika anda
akan, yang akan mempunyai kesan yang untuk mara dari kiri ke kanan,
atas ke bawah ke atas semua x nilai dan semua nilai-nilai y.
Kerana sekali lagi, gambar adalah hanya grid baris dan lajur.
Jadi ini akan mendapat menghapuskan semua biru.
Biar saya meninggalkan di baris berikutnya kepada anda.
Bagaimana saya boleh menghilangkan semua hijau?
>> PENONTON: [didengar]
>> DAVID MALAN: Nice.
>> PENONTON: [didengar]
>> DAVID MALAN: Nice.
Dan saya akan untuk zum keluar, dan hanya mengambil mengambil berat daripada yang anda telah tidak melakukan apa-apa kesilapan menaip.
Dan jika anda selesa dengan apa yang anda lakukan,
teruskan dan klik butang Menjalankan / Simpan dan melihat apa yang anda dapat.
Dan sekali lagi, kita telah membuat hanya tiga perubahan.
Kami dipadam yang pertama komen dan menggantikannya
dengan kedua-dua baris kod.
Dan ia adalah OK jika anda perlu untuk memukul Run / Save butang beberapa kali
untuk menetapkan sesuatu.
>> Dan biarlah saya juga mengezum masuk pada saya kod supaya anda boleh menyalin.
Baik.
Jadi saya melihat Andrew mempunyai apa seolah-olah menjadi satu kesilapan.
Dia hanya mendapat hitam besar segi empat tepat pada skrin beliau.
Adakah orang lain mempunyai segi empat hitam besar?
>> PENONTON: Ya.
>> DAVID MALAN: segi empat hitam besar?
OK, jadi mari kita fikirkan tentang apa ini bermakna.
Kami berkata bahawa sifar, sifar, sifar, supaya hijau, tidak merah, tidak biru,
akan memberikan anda hitam.
Dan ternyata bahawa kebanyakan komputer riba kami
hanya tidak mempunyai kesetiaan yang cukup.
Anda tidak boleh agak memberitahu terdapat sebenarnya sesuatu di sana.
Dan jika anda jenis mungkin bersandar skrin anda ke hadapan dan belakang,
mungkin yang anda lihat sedikit sesuatu di sana?
Mungkin, jenis, jenis?
Ia bukan sempurna hitam.
>> PENONTON: [didengar]
>> DAVID MALAN: Spoiler!
Terdapat beberapa merah di sana, tetapi ingat dari spesifikasi
masalah ini, Nick tona ke bawah.
Beliau desaturated ia agak, tetapi tidak semua jalan ke sifar.
Jadi, jika kita mahu untuk membesarkan jumlah yang merah, izinkan saya mencadangkan silap mata ini.
Biar saya mengezum masuk pada skrin saya.
Dan biarlah saya pergi ke hadapan dan berkata jumlah bersamaan im.getRed (x, y).
>> Ini sejajar kod memberi saya sesuatu yang dinamakan pembolehubah.
Saya mempunyai sewenang-wenangnya, tetapi, boleh dikatakan, munasabah dipanggil pembolehubah saya apa,
nampaknya?
Jumlah.
jumlah adil.
Aku boleh menyebutnya apa-apa yang saya mahu, tetapi saya
menggunakan fungsi lain ini yang saya diterangkan sebelum ini
untuk mendapatkan jumlah merah di x koma y.
Kenapa saya berbuat demikian?
Apa yang anda mahu lakukan di sini?
Anda perlu add--
PENONTON: [didengar]
DAVID MALAN: Ya, mungkin kalikan dengan 10.
Dan jika anda tidak tahu ini, saya akan pergi ke hadapan dan melakukan ini.
Saya akan pergi ke hadapan dan katakan, saya mahu jumlah merah
Saya mahu menjadi apa sahaja pada merah, masa 10,
dan bintang, asterisk pada anda keyboard hanya-- tidak menggunakan x.
Gunakan bintang.
Itulah bagaimana anda membiak perkara dalam kebanyakan bahasa pengaturcaraan.
>> Jadi, mengikut gerak hati Kareem ini, disimpan dalam pembolehubah ini dipanggil jumlah,
adalah berapa banyak merah Saya hendak di lokasi xy.
Bagaimana, sekarang, saya membuat yang Pixel mempunyai nombor itu?
Anda telah dilakukan sebelum ini.
Anda menetapkan hijau dan biru untuk tiada nilai, kepada sifar.
PENONTON: [didengar]
DAVID MALAN: Ya, baik anda tidak mahu ia 10.
Anda sudah lakukan matematik di sini.
Oleh itu, kita mendapat nilai merah, yang merupakan nombor yang rendah, mungkin.
Kita mendarab oleh 10.
Apa yang anda mahu lakukan dengan jumlah yang berubah sekarang?
>> PENONTON: [didengar]
>> DAVID MALAN: Nice.
Jadi im.set-- apa?
>> PENONTON: setRed.
>> DAVID MALAN: setRed, di lokasi xy.
Yeah.
Dan hanya jumlah.
Dengan kata lain, pembolehubah adalah pemegang tempat sementara
bahawa anda boleh meletakkan apa sahaja yang anda mahu.
Kita berlaku untuk meletakkan nombor dalam itu, pada masa ini.
Kami telah didarab oleh 10 untuk menjadikannya lebih besar.
Dan sekarang saya menggantikan pembolehubah yang sebagai hujah ketiga, atau input
untuk menetapkan merah.
Dan supaya apabila anda selesai itu, dan mengambil perhatian
daripada koma bertindih dan kurungan.
>> Teruskan dan klik menjalankan / menyimpan lagi, dan anda
harus melihat, ajaib, apa yang sebenarnya di sana. [? Arwa,?] Apa yang ada?
Menara Eiffel di sepenuhnya merah, tidak cukup gelap.
ia perlu lebih jelas sekarang, ya?
OKEY.
Dan Andrew, kotak tidak lebih hitam?
PENONTON: [didengar]
DAVID MALAN: Baiklah.
Jadi saya akan menyimpan ini pada skrin.
Jika anda ingin bermain dengan ini kemudian, saya akan mencipta ini untuk anda.
Tetapi kod ini di sini berjaya melakukannya.
Apa kata kita buat satu lain.
Biar saya tatal ke bawah sedikit.
>> Jadi dalam kes ini, projektor tidak benar-benar melakukannya keadilan.
Tetapi pada skrin anda, anda mungkin mempunyai kotak yang sangat merah dan sangat hitam.
Ini juga adalah teka-teki yang menunjukkan sesuatu yang terkenal.
Walau bagaimanapun, imej telah diputarbelitkan.
Imej benar, kali ini, adalah dalam nilai biru dan hijau.
Walau bagaimanapun, mereka semua telah dibahagikan 20 supaya nilai-nilai yang sangat kecil.
Nilai merah hanya nombor rawak, bunyi bising.
Buat asal gangguan ini untuk mendedahkan imej sebenar.
>> Jadi Nick kemudian memberitahu anda apa yang perlu dilakukan.
Tetapkan nilai merah kepada sifar, dan maka tidak merosakkan apa yang ada.
Kemudian darab biru dan nilai-nilai hijau sebanyak 20.
Jadi ia adalah hampir Program yang sama seperti sebelum ini,
tetapi anda menterbalikkan proses.
Aku akan mengadakan kod saya dari sebelum pada skrin dalam kes
anda ingin merujuk kembali kepadanya atau bermain lagi dengan yang itu.
Biar saya mengezum masuk pada itu.
Tetapi menyelesaikan imej tembaga teka-teki, nombor dua.
>> PENONTON: [didengar]
>> DAVID MALAN: OK, jadi yang satu ini saya tidak akan memberi banyak petunjuk.
Jadi saya would-- oh, mari kita lihat, anda mempunyai kesilapan menaip di sini.
Jadi ingat, ini di sini sebenarnya perlu pergi ke sana.
Jadi apa yang saya akan mencadangkan, jika anda mahu memberi tumpuan kepada satu ini, ada jawapannya.
Jika anda ingin menyalin itu, bahawa perlu mendapatkan satu kerja yang pertama.
Dan kemudian anda boleh menggunakannya sebagai inspirasi untuk yang kedua.
Nice.
Baik.
>> Dan bagi yang ingin tahu, ini adalah satu contoh mudah
daripada sains atau seni dipanggil steganografi,
seni menyembunyikan maklumat dalam imej.
Biasanya, imej mungkin tera air sangat terang-terangan
dengan logo di bahagian bawah sudut, tetapi jelas, anda
boleh menjadi lebih canggih mengenainya dan sebenarnya
menyembunyikan imej lain dalam Images entah bagaimana dengan teknik ini.
>> Mengambil satu lagi 30 saat, dan kemudian kami akan sekurang-kurangnya mengumumkan apa yang perlu anda lihat.
Dan saya akan meninggalkan yang ketiga satu sebagai latihan di rumah,
jika anda ingin lebih daripada satu mencabar hujung minggu ini.
Dan saya fikir Andrew mungkin telah mendapat terlebih dahulu.
Apakah imej kedua, Andrew?
>> PENONTON: Statue of Liberty.
>> DAVID MALAN: Statue of Liberty akan menjadi jawapan kali ini.
Jadi sekali lagi, hanya beberapa mudah contoh, matlamat yang
adalah untuk memberikan anda rasa bagaimana kami telah diterjemahkan Scratch bergambar
blok untuk lebih menjengkelkan dan banyak lagi kod rumit, tetapi semua idea-idea
masih sama, walaupun dengan pengenalan
sekarang daripada tanggapan yang berubah-ubah, yang dapat menyimpan sesuatu buat sementara waktu.
>> Mari kita buat satu lagi tangan-on, hanya kini menyambung titik-titik
kepada sesuatu yang lebih sedikit dunia sebenar.
Apabila anda sudah bersedia, jika anda boleh pergi ke URL ini di skrin.
Itu juga dalam salinan anda daripada slaid, developers.google.com/maps~~V.
Mari kita sebenarnya melakukan sesuatu sebenar, jadi untuk bercakap, di web
menggunakan API Peta Google, atau antara muka pengaturcaraan,
dengan cara yang berikut.
>> Google, seperti banyak syarikat, menyediakan banyak fungsi percuma
yang boleh anda gunakan untuk membina anda aplikasi menarik sendiri.
Malah, jika anda pernah menggunakan Uber untuk mendapatkan teksi atau kereta,
anda mungkin tahu bahawa Uber mempunyai Peta dan ia menunjukkan kereta di atasnya.
Iaitu, sebagai terbaik yang saya boleh memberitahu, Peta Google API.
Mereka sebenarnya menggunakan peta Google, tetapi Uber bukan sebuah syarikat pemetaan,
atau yang akan menjadi masalah amat menarik
untuk menyelesaikan di atas mereka masalah kereta.
Dan supaya mereka berdiri, sekali lagi, di bahu
orang lain, Google dalam kes ini.
Jadi mereka menggunakan peta Google tetapi mereka sendiri perkhidmatan kereta dan lain-lain ciri-ciri tersebut.
>> Jadi, kita akan mengambil kesempatan ini untuk melakukan yang berikut.
Dan jika saya telah pergi terlalu cepat, hanya memanggil saya ke dalam seketika.
Happy untuk recap beberapa barangan imej.
Anda akan dapat melihat diri anda di halaman seperti ini.
Jadi bagus Google, dan mereka antara yang terbaik
menyediakan bukan sahaja API, tetapi API percuma yang anda
boleh bermain dengan atau menggunakan secara komersial.
Mereka mula mengecas anda jika penggunaan anda tinggi, tetapi saya pergi ke hadapan terlebih dahulu
dan ditandatangani kami untuk akaun percuma itu, mudah-mudahan, 10 komputer
tidak akan membatalkan penyertaan kami untuk tiba-tiba.
Jadi diharapkan ini demonstrasi akan berfungsi.
>> Dan melihat bahawa mereka mempunyai API untuk Android, iOS, perkhidmatan web dan web,
apa sahaja yang.
Mari kita fokus pada web.
Jadi klik kotak merah jambu, web, dan yang akan membawa anda, mudah-mudahan, untuk halaman
di sini.
Dan mereka telah mendapat sejumlah besar API.
Dan ia boleh menjadi sedikit hangat pada mulanya,
tetapi saya akan memandu kita melalui apa yang kita mahu.
>> Pada bahagian atas sebelah kiri Peta Google JavaScript API, API JavaScript.
Jadi teruskan dan klik itu.
Dan yang akan membawa anda sekarang kepada mengikuti halaman, demo dan contoh kod.
Biar saya zum di sini.
Dan biarlah saya membawa kita supaya- tatal ke bawah ke mana ia berkata langkah permulaan pantas.
skrin anda sepatutnya kelihatan seperti saya.
>> Dan ada dua langkah, dapatkan kunci dan mula membangun.
Saya sudah melakukan langkah satu untuk kami, mendapatkan kunci kononnya.
Dan ini adalah satu idea yang sama.
Kunci API umumnya hanya nombor rawak yang besar atau tali
bahawa anda sepatutnya tampal ke dalam kod anda,
supaya Google tahu siapa anda apabila anda menggunakan perkhidmatan mereka, API mereka.
Tidak bermakna kita mengenakan sebarang caj.
Dan sekarang, klik, dan bukannya satu, klik mula membangun.
Jika anda hanya boleh melambai saya lebih jika tidak pasti di mana kita berada.
>> Oleh itu, kita hanya akan mencalarkan permukaan, di sini tetapi apa
Saya fikir akan menjadi menarik adalah untuk benar-benar mempunyai kita semua,
menggunakan Cloud9 dalam satu tetingkap dan tutorial ini dalam tetingkap yang lain,
membolehkan benar-benar mendapatkan kita sendiri permohonan dan berjalan
yang membenamkan adat Google peta di laman web kami sendiri,
dan kemudian menambah satu atau dua ciri-ciri.
Tetapi kita hanya akan mencalarkan permukaan apa yang boleh kita lakukan.
>> Jadi hanya kewarasan cek cepat.
Adakah semua orang di halaman ini, API Google Maps JavaScript?
Tidak mengatakan bermula.
Kami tidak akan pergi melalui segala-galanya dengan apa cara sekalipun.
OK, dalam tab yang lain, jika anda tidak melakukan mempunyai ia terbuka, jangan pergi ke Cloud9
dan mendapatkan diri anda untuk hanya tab baru, akhirnya.
Jadi sekali lagi, c9.io daripada semalam, c9.io, dan hanya membuat fail baru.
Dan pergi ke depan dan panggilan apa sahaja yang anda suka.
Saya dipanggil map.html saya.
Memanggilnya apa-apa yang berakhir dengan .html.
Dan anda harus kira-kira di mana saya dalam proses ini
dengan hanya segera berkelip dalam kosong tab dipanggil seperti map.html.
Atau fail, fail baru kali ini.
>> Dan kini, lebih pada Google Maps JavaScript API,
kami akan skip membaca melalui semua teks ini.
Tetapi perhatikan bahawa dunia hello adalah sesungguhnya di mana-mana, anda lihat sekarang.
Hello dunia mempunyai ini besar berwarna-warni contoh sejumlah besar HTML.
Teruskan dan copy dan paste sahaja HTML, jadi dari jenis doc di bahagian atas
sepanjang jalan ke tag HTML yang dekat, pergi hadapan dan menyalin semua bahawa- lagi,
itulah di bawah dunia hello yang contoh yang dan tampal ke dalam tab Cloud9 anda,
supaya sekarang skrin anda harus melihat secara kasar seperti saya.
>> Dan anda boleh menyimpannya, tetapi tidak memuatkan lagi.
Mari kita melihat pertama di kod dan lihat jika kita
tidak boleh membuat kesimpulan atau belajar daripada apa yang ada Google
telah mempunyai kita secara membuta tuli menyalin dan tampal.
Mereka hanya mahu membantu, secara literal, mendapatkan kami bermula,
tetapi tidak ada yang banyak kerumitan sebenarnya di sana.
Sebarang soalan sahaja lagi?
Kita selamat maju ke hadapan?
OKEY.
>> Begitu cepat, mari kita hanya melakukan sesetengah semakan waras cepat.
Line salah satu daripada apa yang saya melihat, dan diharapkan, anda
lihat, apa maksudnya, DOCTYPE HTML?
Kareem, ingat?
PENONTON: [didengar]
DAVID MALAN: Ya.
Di sini datang HTML 5.
Sementara itu, beratur dua di skrin di sini bermakna hey pelayar,
di sini datang HTML sebenar.
Line tiga adalah hey pelayar, di sini datang kepala.
Line empat adalah, sudah tentu, hey pelayar, di sini datang tajuk.
Apakah garis lima lakukan?
Sebenarnya, ini tidak benar-benar melakukan apa sahaja untuk kita.
Dalam kes ini, ia hanya mengubah saiz halaman untuk lalai. Line enam,
kita tidak bercakap tentang, tetapi ia menyatakan pengekodan aksara.
Ada cara yang berbeza untuk mengekod fail, terutamanya untuk bahasa asing.
UTF-8 hanya cenderung untuk menjadi lalai.
>> Jadi sekarang kita akan melihat dalam talian tujuh melalui 16, beberapa CSS.
Dan walaupun kita telah tidak dilihat semua perkara-perkara ini sebelum ini,
kita jenis boleh membuat kesimpulan.
Jadi beratur lapan cara, hey pelayar, memohon semua yang berikut yang mana dua tag,
nampaknya?
HTML dan badan teks.
Jadi koma adalah perkara yang baru di sana.
Dan itu hanya satu cara menyatakan pelbagai tag sekaligus.
>> Kemudian kami telah mendapat pendakap kerinting.
Jadi nampaknya, ini memberitahu pelayar, membuat ketinggian halaman 100%.
Jadi, walaupun ada sangat sedikit kandungan, membuat keseluruhan halaman,
menjadikan sesuatu yang mengisi halaman.
Peribadikan peta akhirnya mengisi halaman.
Margin, apa maksudnya?
Itulah biasanya seperti sewenang-wenangnya ruang putih di tepi
bahawa beberapa pereka pelayar hanya memutuskan perlu berada di sana, kerana ia
jenis membuat perkara yang kelihatan lebih bersih.
Tetapi kita tidak mahu itu.
Kami mahu peta akan sepanjang jalan ke tepi.
Padding, sama dalam semangat untuk margin.
Margin bermakna di luar, cara padding di dalam, tetapi ia adalah jenis yang sama daripada perjanjian.
Ia sedikit penampan antara anda dan tepi.
>> Dan kemudian line 13 adalah baik peluang untuk ulasan ringkas.
Apakah yang tajam peta tanda bermakna, atau peta hashtag maksudkan?
Apa yang merujuk kepada, pada dasarnya?
>> PENONTON: [didengar]
DAVID MALAN: Tepat sekali.
harta ini, harta CSS ini terpakai kepada hanya satu perkara, tag HTML
yang mempunyai ID quote, unquote "peta".
Dan sekarang mari kita ke hadapan yang laju, tatal turun ke bahagian bawah fail, yang
tidak terlalu jauh, dan notis di talian 19, jika anda paste ia betul-betul seperti yang saya lakukan,
line 19 mempunyai hanya div a, yang merupakan Bahagian atas halaman, yang semalam saya
dipanggil kawasan segi empat tepat.
Ia mempunyai apa-apa di dalamnya.
Ia merupakan satu tag terbuka, tag penutup.
Tetapi ia mempunyai ID yang unik.
>> Jadi apa yang seolah-olah menjadi berlaku di sini adalah Google
sedang menyiapkan laman web kami untuk mempunyai ketinggian lengkap 100%,
dan tiada padding, tiada margin, kerana apa yang kita akan diletakkan di dalam
div ini, yang ID unik adalah peta, adalah sebuah peta yang dibenamkan yang sebenar.
Dan kita mahu ia untuk mengisi halaman ini dan bukan hanya
beberapa segi empat tepat kecil di tengah-tengah.
Jadi garis 14 begitu juga menekankan, yang peta itu sendiri harus mempunyai ketinggian 100%.
>> Jadi kini notis antara baris 20 dan 28, ini adalah kod JavaScript.
Dan ini adalah, walaupun ia sintaksis sedikit pelik,
terdapat tidak semua yang banyak berlaku di sini.
Selaras 21, ini mengisytiharkan sesuatu yang dinamakan pembolehubah.
Daripada memanggil ia jumlah, seperti yang kami lakukan sebelum ini,
kita lebih tepat mengatakan var, yang hanya bermaksud berubah-ubah.
Kita boleh menggunakan bahawa dalam kod Nick, tetapi dia tidak, jadi saya
tidak mengganggu melakukannya sama ada.
Ia adalah pembolehubah yang dipanggil peta, dan kemudian ada
fungsi itu nampaknya dipanggil initMap.
>> Jadi ini adalah seperti adat kita sendiri sekeping teka-teki dalam Scratch.
Kami telah mencipta sekeping fungsi dipanggil initMap,
dan anda jenis boleh membuat kesimpulan apa yang berlaku di sini.
Pada sebelah kiri, kami mempunyai pembolehubah,
jadi kita akan meletakkan berikut perkara dalam pembolehubah yang,
dari kanan ke kiri.
sebelah kanan berkata, hey pelayar, berilah Peta Google baru.
Dan google.maps.map hanya cara yang funky untuk menyatakan bahawa fungsi ini
tergolong ke Peta Google.
>> Selepas kurungan, kita telah melihat ini sebelum ini, hey pelayar, dapatkan
saya elemen dalam halaman, tag dalam halaman yang ID unik is--
>> PENONTON: [didengar]
>> DAVID MALAN: --map.
Dan apa yang sedang berlaku, baik, garis ini bersama-sama, line 23,
pada dasarnya berkata, hey pelayar, pergi mendapatkan saya
yang div kosong pada halaman yang ID unik adalah peta,
kerana saya mahu memasukkan ke dalam it-- menyuntik ke dalamnya,
jika anda will-- sejumlah besar kandungan yang berlaku akan datang dari web,
seterusnya.
Dan Google melakukan semua itu untuk kita.
>> Jadi sekali lagi, bagi mereka yang terkemudian hari, kita mempunyai contoh ini abstraksi.
Saya tidak tahu apa peta adalah atau bagaimana untuk melaksanakan Peta API.
Kami tidak perlu.
Kami hanya perlu memberitahu peta di mana untuk meletakkan dirinya, dan meninggalkan
orang-orang yang mendasari pelaksanaan butiran kepada Google.
Sekarang terdapat nampaknya dua keping data
bahawa contoh ini adalah menyediakan kepada API Google.
Rupa-rupanya pusat peta, dan tahap zum, jadi untuk bercakap.
>> Dan adakah sesiapa yang mengenali ini koordinat, latitud dan longitud?
Mungkin tidak, tetapi kita boleh kembali tutorial, secara literal melihat.
Tetapi kita akan melihat ia dalam hanya seketika.
tahap zum adalah nilai antara, saya tidak tahu, satu dalam 13 atau sesuatu seperti itu.
Ia hanya mempunyai kaitan dengan sejauh mana anda berada zum masuk atau keluar, dan itu sahaja.
Dan kini di akhir sangat laman, talian notis 29--
ia sedikit hodoh kerana ia wraps-- baris ini kod
adalah apa downloads kepada pelayar API sebenar Google.
Semua kod yang Google jurutera telah menulis bahawa melaksanakan
ini ciri-ciri keseluruhan peta terbenam.
>> Sekarang mari kita tidak mengubah apa-apa.
Jika anda mengikuti bersama-sama, pergi ke depan dan hanya menyimpan fail itu, jika anda memang mempunyai
apa yang saya ada.
Pergi ke URLnya.
Anda boleh klik butang Run sehingga atas dan yang akan memberitahu
anda URL pelayan web anda lagi.
Dan ia akan membawa anda ke tab baru.
Jika anda klik Terbuka map.html, dan kemungkinan besar anda berada
akan mendapat amaran, mesej ralat, ya?
Mesej ralat, mesej ralat?
>> Lebih malang lagi, kesilapan mesej tidak begitu menyedarkan
melainkan anda sebenarnya membuka konsol, bahawa tab khas kita
terus membuka semalam dan sedikit awal hari ini.
Tetapi saya terjumpa ini lebih awal, jadi saya sudah
menemukan apa penyelesaian adalah.
Dalam slaid hari ini, atau sebaliknya, dalam Cloud9, notis
bahawa kita tidak melakukan sesuatu yang sengaja.
Perhatikan bahawa ini tag skrip di line 29, jika anda membaca melaluinya,
ia seperti maps.googleapis.com/ sesuatu, sesuatu, sesuatu,
kemudian melihat seseorang, salah satu daripada pemaju,
menulis dalam semua modal surat, kunci API anda.
>> Kita perlu paste sesuatu di sana.
Dan ini adalah langkah Saya lakukan untuk kita sebelum ini,
dan sekali lagi mereka mungkin menyenaraihitamkan kami jika tiba-tiba, 12 atau lebih daripada kita
mula menggunakan kekunci yang sama, tetapi mari kita lihat apa yang berlaku.
Jadi, jika anda pergi ke hari ini slaid, satu slaid kemudian, ada
rentetan ini sangat funky-cari teks.
Teruskan dan hanya menyalin itu dan tampal di mana ia berkata kunci API anda.
Itulah yang saya mendaftar untuk.
>> Dan pasti jangan cuba menaip secara manual,
kerana ia merasakan penuh dengan kesilapan menaip, berpotensi.
Jadi hanya copy dan paste itu.
Dan ia akan membuat garisan lebih lama, tetapi sekarang, hanya untuk menjadi jelas,
ia perlu melihat lebih sedikit seperti ini, di mana utama tidak sama
dipermodalkan menjerit pada anda.
Simpan halaman anda, kembali ke tab yang lain, tambah nilai,
dan berharap untuk melihat peta di mana?
>> PENONTON: Australia.
>> DAVID MALAN: Australia.
Jadi nampaknya mereka adalah Koordinat GPS Australia.
Dan biarlah saya berjalan di sekitar untuk seketika dan membantu sesiapa sahaja yang tidak cukup di sana,
tetapi biarlah saya mencadangkan, melalui Google, mencari GPS koordinat kampung halaman anda sendiri
atau negara rumah anda sendiri.
Dan mungkin Google boleh menghidupkan ini , atau Wikipedia boleh memberitahu anda.
Tetapi memilih dua nilai yang berbeza untuk latitud dan longitud,
kembali dalam dan paste mereka, dan kemudian muat semula halaman selepas menyimpan
dan lihat jika anda boleh mempunyai peta kampung halaman anda sendiri.
>> Dan apabila anda selesai dengan itu, susulan challenge--
dan saya akan memberi arahan sedikit kurang, sengaja, supaya anda sengaja
perlu berjuang untuk pasangan minit dengan dokumentasi,
menukar peta sebagai tidak ini lalai kartun, tetapi peta satelit.
Jadi, anda benar-benar melihat satelit imej dan bukannya warna cantik.
>> Dan tanda-tanda yang saya akan memberikan anda adalah menukar jenis peta.
Kembali kepada yang mendapat memulakan halaman untuk inspirasi.
Seperti yang anda mungkin telah dikumpulkan, jika anda sedang mencari,
terdapat begitu banyak lagi perkara yang anda boleh lakukan.
Sebahagian daripada anda sudah berubah peta jenis.
Tetapi anda boleh do-- misalnya, biarlah saya pergi ke sesuatu yang kita lakukan untuk kursus
Saya teach-- maps.cs50.net.
Salah satu mahasiswa kami lakukan ini.
Kami memusatkan peta kami lebih Harvard Yard dan menindih semua nama-nama bangunan,
dan kami telah dia menambah ini.
Jadi jika saya mahu untuk mencari, misalnya, Matthews Hall,
kita mempunyai menu drop-down sedikit.
Dan saya fikir dia menggunakan Bootstrap, yang perpustakaan kita dibincangkan sebelum ini untuk ini.
Dan jika anda klik pada Matthews Hall, ia segera
melompat peta untuk tertentu lokasi, dan ia menunjukkan
anda gambar dalam sedikit pop-up ini.
>> Tetapi ini sedikit pop-up, kami tidak melaksanakan.
Jika saya tatal ke bawah untuk mendapatkan kami memulakan halaman dan mencari maklumat tingkap,
anda akan melihat bahawa beberapa fungsi anda sendiri
boleh menambah, walaupun dengan kerumitan sedikit lebih,
adalah sesuatu yang dinamakan tetingkap maklumat.
Dan jika saya klik contoh di sini, dan ini adalah apa yang seronok,
anda boleh melakukan perkara-perkara seperti ini, klik pada penanda dan kemudian Voilà,
maklumat timbul.
>> Oleh itu, kita telah tidak cukup diperkenalkan ciri cukup JavaScript
untuk melukis gambar bagaimana anda boleh wayar semua barangan ini bersama-sama,
tetapi kita telah jenis permukaan.
Malah, apa yang saya lakukan apabila Saya klik pada penanda itu,
telah mencetuskan acara, yang apa yang dipanggil di acara klik.
Dan kita sebenarnya menyaksikan acara awal hari ini,
yang dipanggil mengemukakan acara, apabila kita telah menghalang
pengguna daripada mencari kucing.
Oleh itu, kita telah jenis dipilih dan dipilih secara daripada kalangan semua ini pelbagai ciri-ciri,
untuk memberikan anda rasa yang, diharapkan, daripada apa yang anda boleh sebenarnya
lakukan dengan sedikit lebih keselesaan dalam pengaturcaraan,
dan sumber-sumber percuma.
>> Ada soalan?
Tidak?
Ini adalah peluang terakhir anda, sekurang-kurangnya hari ini, pada hari Jumaat,
untuk mendapatkan apa-apa di luar dada anda supaya anda berjalan keluar dari sini
berasa yakin dan selesa.
Ya.
>> PENONTON: Mengapa tidak anda menambah satu lagi perkara?
>> DAVID MALAN: Oh kebaikan saya.
Saya perlu berehat pada hujung minggu ini, saya fikir.
Soalan-soalan lain?
>> PENONTON: [didengar]
>> DAVID MALAN: Anda can-- dalam Internet Explorer, rehat dengan aman,
anda digunakan untuk dapat untuk meletakkan VB skrip, skrip asas maya,
tetapi yang benar-benar tidak pernah ditangkap pada.
Jadi jawapan pendek adalah hanya JavaScript.
Soalan-soalan lain?
Baiklah, baik, biarlah saya melakukan ini.
Biar saya merebut rakan-rakan kita di luar.
Mereka mempunyai beberapa penilaian bentuk yang mereka mahu semua orang
untuk menghabiskan beberapa minit mengisi.
Mereka mahu untuk mengumpul bentuk itu dan apa-apa pengecualian yang anda mungkin ada di luar.
Mereka juga akan mempunyai sijil.
Saya meneka ada masih beberapa makanan ringan di luar.
Biar saya lulus ini, dan jika anda mempunyai apa-apa soalan dalam masa yang sama,
Saya akan berjalan sekitar lebih secara individu dan kita boleh mendapatkan anda bermula.
Ya sudah tentu.
PENONTON: [didengar]
DAVID MALAN: Itu biasanya benar hari ini.
Sudah tentu dengan web perisian, anda sedang bersandar
kepada orang lain anda sama ada estetika menggunakan perkara-perkara
seperti Bootstrap, supaya anda tidak perlu melaksanakan tahap yang rendah
butiran menu dan butang dan semua itu.
Anda bersandar pada seseorang seperti Google supaya anda
tidak perlu membina Uber perniagaan dan perniagaan pemetaan,
dan apa-apa bilangan sama aplikasi juga.
>> Malah, login yang popular juga.
Jika anda telah menggunakan Spotify atau apa-apa bilangan laman web,
anda akan log masuk ke beberapa laman web yang menggunakan Facebook.
Jadi apa yang baik, terdapat adalah API untuk login
pada masa kini, supaya anda tidak perlu untuk mempunyai jadual pengguna anda sendiri
dan semua pangkalan data anda sendiri semestinya setakat yang sama.
Anda boleh membiarkan Facebook melakukan semua kerumitan untuk anda.
Jadi ia adalah masa yang menarik, secara jujur, dalam pengaturcaraan,
kerana terdapat banyak pihak ketiga perkhidmatan yang anda boleh membina di atas.
>> Dan sekali lagi, harga yang anda bayar ialah sama ada kewangan atau downtime.
Jika Google turun, begitu juga Uber, boleh dikatakan,
tetapi mungkin itu adalah satu munasabah keseimbangan.
Dan sekali lagi, itu adalah salah satu daripada tema, mudah-mudahan, untuk pasangan yang lalu hari,
inilah keseimbangan.
Dan jarang ada akan sebagai jawapan yang betul.
Ia benar-benar adalah lebih baik dua atau lebih jawapan.
>> Pas ini di seluruh.
>> Dan akaun-akaun Cloud9 akan terus untuk bekerja, dalam teori, untuk selama-lamanya.
Anda mungkin mendapati jika anda menunggu beberapa hari atau seminggu atau lebih untuk log masuk semula ke dalam mereka,
ia mungkin mengambil masa seperti satu atau lima minit untuk membuka kembali ke atas,
tetapi itu hanya kerana mereka meletakkan ia tidur untuk menjimatkan sumber.