>> DAVID Malan: Baiklah, kita kembali.
Jadi untuk menarik Kesimpulannya, bagian terakhir kami
pada pemrograman web, yang saya pikir kami akan menggunakan sebagai istilah umum
untuk menangkap topik yang tersisa.
Jadi pada akhir hari, kita akan benar-benar melakukan
sedikit tangan-on pemrograman web dengan bahasa yang disebut JavaScript.
Dan saya pikir kami akan lihat sesuatu yang berhubungan dengan gambar
dan menemukan sesuatu diam-diam tersembunyi di gambar,
dan juga kita lihat di Google Maps API, pemrograman aplikasi
antarmuka, sebagai sesuatu yang wakil dari jenis perangkat lunak
itu semakin dan bebas tersedia saat ini.
>> Tapi kenapa tidak kita lihat di bahan untuk dunia ini
bahwa kita sudah semacam berkunjung mengambil untuk diberikan ada
untuk beberapa waktu, database.
Untuk hari terakhir dan setengah kami sudah diasumsikan
bahwa kita memiliki akses ke database, tapi apa masalah yang database memecahkan?
Apa gunanya bagi kita?
Apa itu?
>> AUDIENCE: [tidak terdengar]
DAVID Malan: Gelar semua informasi, OK, dan apa jenis informasi
mungkin Anda menempatkan di dalamnya?
>> AUDIENCE: [tidak terdengar]
>> DAVID Malan: Setiap informasi Anda menempatkan di dalamnya, Anda akan mendapatkan kembali.
Itu benar.
Dan di situs berbasis web yang khas atau web aplikasi, apa jenis informasi,
khusus, mungkin Anda masukkan ke dalam?
AUDIENCE: [tidak terdengar]
DAVID Malan Pengguna.
Jadi apa yang pengguna?
>> AUDIENCE: [tidak terdengar]
DAVID Malan: OK, terdaftar pengguna situs.
Dan apa artinya menyimpan informasi pengguna '?
Apa menyusun pengguna?
Seorang pengguna memiliki apa?
AUDIENCE: [tidak terdengar]
DAVID Malan: Ya, pribadi data, dan aku seperti itu.
Mari kita menjadi lebih tepat.
Jadi pengguna biasanya memiliki nama, apa lagi yang mungkin pengguna memiliki?
AUDIENCE: [tidak terdengar]
DAVID Malan: An OK addr--, Nama jadi pertama, nama terakhir.
Itu bagus.
Sebenarnya, mari kita perbaiki itu, karena itu akan
membuka kesempatan bagi diskusi, masih, lebih lanjut.
Nama depan, nama belakang, jenis kelamin.
ID dari beberapa macam.
Apa lagi?
Aku mendengar sesuatu yang lain sebelumnya, juga.
Email, alamat pos.
>> Jadi mari kita berhenti sejenak di sana dan sekarang mempertimbangkan tidak apa kita menyimpan dalam database,
tapi-- dan tidak mengapa, karena itu mungkin jelas bahwa setelah Anda mendaftar pengguna,
Anda ingin mengingat mereka untuk beberapa waktu.
Anda tidak ingin hanya disimpan di RAM
dan akan forgotten-- sehingga mari kita fokus pada bagaimana.
>> Ternyata di dunia database,
ada setidaknya dua jenis hari ini.
Sesuatu yang disebut database SQL, Structured Query Language,
atau, cutely bernama, NoSQL, yang tidak SQL.
Dan yang terakhir adalah contoh dari apa yang mungkin
disebut objek-berorientasi, atau toko objek, database
yang menyimpan benda-benda, dan tidak, alasan saya, seperti yang kita segera akan melihat, baris.
>> Jadi kita akan fokus untuk hanya sejenak di yang pertama ini, yaitu, SQL
Database, jika hanya karena itu begitu akrab sudah, kepada siapa pun
yang telah menggunakan Excel atau Lembar Google atau Apple
Angka atau standar apapun program spreadsheet,
atau, sama, atau lebih sophisticatedly,
sesuatu seperti Microsoft Akses atau Oracle
atau MySQL atau PostgreSQL, yang semuanya adalah nama-nama produk untuk implementasi
dari ide berikut.
>> Sebuah database relasional hanya sesuatu yang memiliki baris dan kolom.
Dan dengan baris dan kolom, Aku benar-benar berarti sesuatu
seperti ini, jadi di mana kita mungkin memiliki nama dari lapangan dan jenisnya di sini.
Dan sebenarnya, biarkan aku sekarang mulai untuk memetakan tersebut.
Jadi sebenarnya, saya tidak tahu mengapa aku menggambar grafik terpisah.
Mari kita tetap sederhana ini.
>> Kami memiliki hak di sini awal dari meja kami, di mana
ini adalah nama dari lapangan dan ini adalah jenis data,
dan menurut jenis Maksudku berikut.
Apakah angka, itu string, string pendek seperti kata,
itu sebuah paragraf, itu data biner, seperti gambar?
Dan mari kita menggoda ini terpisah untuk sesaat.
Jadi nama pertama, jumlah, string, potongan besar text--
AUDIENCE: [tidak terdengar]
DAVID Malan: Ya, jadi tali.
Dan dalam konteks basis data, kami akan biasanya menyebutnya bidang arang ini.
Saya hanya akan mengatakan arang untuk saat ini tapi kami akan memperbaiki ini dalam sekejap.
bidang karakter.
nama terakhir mungkin sama.
Jenis kelamin?
>> Pria atau wanita, sehingga bisa menjadi bidang arang.
Ini bisa menjadi kutipan baik, tanda kutip "Laki-laki" atau kutipan, tanda kutip "perempuan"
atau bisa juga m atau f.
Jika Anda ingin menjadi lebih inklusif, Anda mungkin perlu nilai ketiga
atau beberapa jenis bidang lain sama sekali.
Dan sehingga Anda bisa menggunakan benar salah.
lapangan bisa disebut laki-laki, dan maka Anda bisa mengatakan benar atau salah.
Tapi itu tidak selalu menangkap semua informasi yang Anda mungkin ingin.
>> Jadi ternyata ada jenis lain lapangan yang mungkin berguna di sini
dalam database yang khas, yang disebut enum, di mana itu adalah bidang karakter,
tapi Anda, desainer, sampai ke menghitung nilai yang mungkin,
seperti kutipan, tanda kutip "laki-laki", kutipan, tanda kutip "perempuan" dan sebagainya.
Sehingga nilai apa pun adalah dalam database Anda,
memang berbasis karakter, tapi itu harus menjadi salah satu dari nilai-nilai.
Kita mungkin tidak akan ingin enum untuk nama depan atau nama belakang.
Kalau tidak, kita akan memiliki untuk menghitung, sebagai nama
berasal dari, secara harfiah setiap mungkin pertama nama dan nama belakang.
>> OK, jadi ID apa yang harus ID itu?
Ya, jadi mungkin angka.
Jadi mari kita tetap dengan bahwa untuk saat ini, jumlah.
Dan dengan nomor, nomor ini sedikit terlalu luas sekarang.
Untuk akhir kedua hari, saya merasa seperti kita
harus sedikit lebih tepat.
Jumlah bisa berarti seperti itu, bisa menjadi sesuatu seperti 1,236.
Dan itu mungkin tidak apa yang kita maksud dengan ID.
Apa yang kita mungkin maksud dengan ID?
>> AUDIENCE: [tidak terdengar]
DAVID Malan: Oh, OK, jadi mungkin itu bukan bahkan nomor.
Mungkin itu sebenarnya pengenal unik itu string, seperti nama pengguna.
Jadi benar-benar, bisa.
Saya pikir seseorang mungkin berarti numerik, meskipun.
Jadi mari kita tetap dengan itu.
Apa jenis nomor?
Apa yang lebih precise-- integer.
Jadi angka seperti 0, 1, 2, 3, jadi kita akan menyebutnya integer.
Dan bahkan kemudian, aku bisa akan nitpicking, itu
tidak benar-benar hanya bilangan bulat umum yang Anda inginkan.
Anda mungkin tidak ingin nilai-nilai negatif, hanya karena, itu hanya terasa aneh.
Anda mungkin ingin bilangan bulat positif.
Sehingga Anda juga dapat mengekspresikan bahwa dalam database,
tapi untuk saat ini, kita akan mengatakan integer.
>> E-mail?
Ini mungkin hanya-- apa?
>> AUDIENCE: [tidak terdengar]
>> DAVID Malan: Ini email, tapi itu karakter, kan?
Itu hanya memiliki karakter yang funky seperti "at" simbol atau sesuatu yang lain,
tapi masih lapangan karakter.
Dan alamat pos?
bidang karakter.
Jadi itu awal yang bagus, tapi mari kita menjadi sedikit lebih tepat sekarang.
>> Jadi ternyata bahwa dalam database, Anda sering
memiliki pilihan atas lebih halus versi hal-hal ini.
Bahkan, dalam sebuah database SQL yang khas, SQL, atau lebih umum, database relasional,
database dengan baris dan kolom, Anda sering
bisa menentukan tidak hanya jenis dari field-- saya membuat beberapa ruang di sini-
tetapi juga panjang.
>> Jadi berapa lama adalah nama pertama?
Saya pikir, D-A-V-I-D. OK, mendapatkannya saya mungkin hanya tersinggung seperti setengah
dari orang-orang di dalam ruangan, tepat, karena nama Anda lebih panjang dari lima
huruf, sehingga lima tampaknya sedikit egois dan naif, jadi apa nilai yang lebih baik?
10, baiklah, dan saya pikir kami OK di dalam ruangan.
13?
30?
Mengapa saya tidak mengambil Pendekatan dari sebelumnya ketika kita
berbicara tentang array dan memori?
Mengapa saya tidak hanya mengatakan seperti 1000?
Nama tidak ada yang akan lebih panjang dari 1.000.
Menekan.
>> AUDIENCE: [tidak terdengar]
DAVID Malan: Ya, itu boros, tepat, terutama
jika sebagian besar nama hanya lima atau 10 atau 15 karakter, itu sangat boros.
Sehingga Anda tahu apa?
Ini adalah jenis pertanyaan sulit.
Sekarang, kita pasti bisa menganalisis English dan nama bahasa lain
dan mencari tahu, baik, apa yang average-- rata tidak benar-benar
membantu us-- apa max adalah mungkin apa yang kita inginkan.
Tapi ternyata kami bahkan memiliki beberapa pilihan atas jenis di sini.
>> Dalam database SQL yang khas, Anda telah sesuatu yang disebut bidang arang
dan juga varchar, V-A-R, untuk bidang arang variabel.
Dan perbedaannya adalah ini.
Bidang char, Anda desainer, harus menentukan terlebih dahulu
panjang tepat lapangan.
Jadi mungkin nama pertama seperti 20 terasa jenis aman.
Mungkin harus melakukan beberapa Googling untuk melihat apakah itu sudah cukup sebenarnya aman.
Mungkin ada nama dengan 21 karakter, tapi untuk saat ini, kira 20
aman.
>> Bidang arang akan berarti dalam database yang Anda
yang menggunakan 20 dan selalu 20 karakter.
Sekarang jika itu hanya D-A-V-I-D, 15 dari mereka hanya akan menjadi karakter kosong,
tapi Anda masih menggunakan semua 20 byte.
Bidang varchar, sebaliknya, berarti string yang harus sampai 20 karakter
tetapi jika itu hanya lima, Anda hanya akan menggunakan
lima, atau mungkin enam untuk nilai khusus di akhir,
seperti itu 0 kita bahas bahwa menandakan akhir dari karakter
urutan dalam memori.
>> Jadi, ketika Anda berpikir Anda dapat memilih arang
dibandingkan varchar, mengingat bahwa trade-off?
Char menggunakan banyak karakter, varchar menggunakan tidak lebih dari itu banyak karakter.
AUDIENCE: [tidak terdengar]
DAVID Malan: OK, ketika Anda tahu panjang string cukup menarik
hanya menggunakan char, karena jika Anda tahu itu, hanya menaruhnya.
Dan mungkin itu benar untuk zip kode, di AS, setidaknya, 02138,
itu selalu akan menjadi lima karakter sampai Anda menambahkan dasbor empat.
Tapi Anda mungkin memiliki beberapa nilai untuk yang Anda selalu tahu panjang.
Atau mungkin negara simbol, seperti NY untuk New York,
dan MA untuk Massachusetts di Amerika Serikat.
Mungkin Anda memiliki beberapa situasi di mana itu benar-benar masuk akal,
tapi dengan logika itu, mengapa kita bahkan overthinking ini?
Kenapa tidak kita hanya menggunakan varchar dan kemudian kami hanya akan
selalu menggunakan dua karakter pula, atau selalu menggunakan lima karakter sih?
Mengapa tidak hanya menyimpan varchar untuk segala sesuatu, dengan logika itu?
Harus ada menangkap.
AUDIENCE: [tidak terdengar]
DAVID Malan: Bisa menulis sesuatu yang salah.
Jadi itu benar.
Tapi meskipun begitu, mereka tidak dapat menggunakan memori lebih dari saya mengalokasikan.
Saya masih memiliki final mengatakan lebih panjang,
sehingga mereka tidak bisa sengaja membuat bahwa kesalahan, tapi pikiran yang baik.
Ini lebih halus, tetapi sangat terkait dengan diskusi kita, sebenarnya, dari array
dan terkait daftar sebelumnya.
>> Ternyata database, jika ia tahu bahwa semua nilai-nilai yang
dari panjang tetap, bahkan jika beberapa nilai-nilai yang kosong,
semacam estetis kosong, D-A-V-I-D dan kemudian 15 kosong,
ternyata bahwa jika setiap lapangan adalah panjang yang sama,
seperti array memiliki semua hal yang kembali ke belakang untuk kembali ke belakang sehingga
Anda bisa saja ditambah 1 untuk sampai ke berikutnya nilai, ide yang sama dalam tabel database.
Jika semua karakter Anda string memiliki panjang yang sama,
Anda memiliki apa yang disebut akses acak.
Jika semua string yang dari panjang 20, Anda tidak hanya
lakukan ditambah 1 Anda hanya melakukan ditambah 20, ditambah 20, ditambah 20, ditambah 20,
dan Anda dapat sangat cepat menggulir atau mencari melalui semua data Anda.
>> Bidang arang variabel, sebaliknya, tidak selalu harus 20 karakter.
Ini mungkin memiliki 20 dan kemudian 15 dan kemudian 19 dan kemudian 10,
dan jadi jika Anda ingin mencari melalui itu, Anda tidak bisa hanya membabi buta
menambahkan 20 byte untuk mendapatkan ke yang berikutnya.
Anda benar-benar harus mencari karena tepi struktur data,
jika Anda mau, adalah compang-camping.
Ini semacam masuk dan keluar berdasarkan pada panjang sebenarnya dari string.
Jadi, ketika Anda mengetahui panjang, seperti Kareem mengatakan, menggunakan lapangan char,
karena Anda mendapatkan bahwa efisiensi menjadi
mampu mencari melalui lebih cepat ketika Anda sedang mencari data,
sebaliknya menggunakan variabel.
>> Sayangnya, saya tidak memiliki jawaban yang baik untuk berapa lama nama harus,
tapi untuk sesuatu seperti nama, saya akan mengatakan
varchar umum karena itu tidak akan
menjadi panjang tetap untuk semua orang.
20, saya tidak tahu, 20 terasa sedikit ketat.
Katakan saja 50, 50.
Ini tidak benar-benar biaya yang banyak lagi untuk mengatakan 50 bukan 40,
tetapi pada beberapa titik, Anda perlu untuk membuat panggilan penilaian.
>> Sangat umum, terus terang, untuk [? sejarah?]
alasan, meskipun itu berlebihan, adalah untuk mengatakan 255, karena beberapa waktu lalu,
dalam sistem database populer, seperti MySQL, alat open source gratis
bahwa banyak perusahaan seperti bahkan Facebook digunakan,
ini adalah maksimum default sehingga orang hanya pergi dengan itu.
Jadi tidak masuk akal, tapi kami akan menggunakan sedikit lebih intuisi
dan mengatakan, yakin 50, itu mungkin sedikit berlebihan.
>> Gender, saya lakukan seperti enum, dan jadi kami karena itu bisa
menghitung laki-laki atau perempuan, atau mungkin lebih efisien,
m atau f atau simbologi lain, tapi enum terasa seperti pilihan yang baik di sana.
Untuk menjadi jelas, jenis kelamin hanya bisa menjadi varchar,
dan kami hanya bisa semua setuju orang sebagai baik,
untuk selalu menempatkan nilai-nilai yang sama di sana.
Laki-laki atau perempuan atau entah apa lagi.
>> Tapi masalahnya kemudian, adalah bahwa kita bisa membuat kesalahan, karena [tidak terdengar] diusulkan
sebelumnya dalam konteks yang berbeda.
Jika kita membuat kesalahan, kita bisa mendapatkan nilai-nilai yang salah dalam database kami.
Jadi apa yang baik tentang database seperti Oracle dan MySQL dan lain-lain,
adalah bahwa Anda memiliki terakhir ini lapisan pertahanan di mana
administrator DBA, database Anda, siapa pun yang merancang tabel ini seperti kita
adalah secara lisan, bisa menempatkan ke tempat enum yang
melindungi terhadap yang dengan menentukan laki-laki, perempuan, dan sehingga tidak ada
yang lain tidak ada programmer sengaja bisa masukkan nilai lain.
Jadi ini akan menjadi hal yang baik.
Ini adalah fitur.
>> Jadi ID, dengan asumsi ID numerik, itu mungkin harus bilangan bulat positif.
Dan kita kadang-kadang memiliki kesempatan untuk mendiskusikan panjang.
Anda tidak akan biasanya menentukan nomor di sini,
Anda malah akan menentukan ini adalah int, atau int besar,
seperti mereka biasanya disebut.
Tapi biasanya, integer akan, katakanlah, 4 byte.
Dan jika itu 4 byte, itu berapa banyak bit?
>> AUDIENCE: [tidak terdengar]
>> DAVID Malan: 32 bit.
Jadi berapa banyak pengguna dapat kita miliki dalam database kami jika mereka semua memiliki ID
dan ID ini harus unik?
32 bit berarti kita memiliki pola satu, dua, tiga, empat, five--
jadi berapa banyak pola yang berbeda dari nol dan yang dapat Anda miliki jika ada 32?
Itu hal yang sama seperti bertanya apa dua dengan 32?
Ini jumlah yang besar yang Aku tak bisa mendapatkan hak,
tapi saya tahu itu kasar 4 miliar.
Jadi ini berarti tabel database Anda dapat memiliki empat miliar pengguna dan hanya itu.
>> Jadi ini adalah menarik desain implikasi.
Sejumlah layak perusahaan telah memutuskan, mungkin tidak begitu banyak
bagi pengguna mereka meja, karena memiliki 4 miliar pengguna adalah masalah langka.
Ini adalah semacam Facebook-gaya masalah, bukan masalah perusahaan yang khas.
Tapi mungkin jika Anda memiliki transaksi log atau beberapa jenis data yang terus-menerus
yang ditulis ke dalam database Anda yang benar-benar bisa memiliki miliaran
dan miliaran baris, dan Anda menggunakan integer untuk itu,
apa yang akan terjadi secepat Anda bisa mendayung nomor 4 miliar
dan kemudian Anda mencoba untuk memasukkan 4000000000 dan 1, sehingga untuk berbicara?
Saya menyederhanakan jumlahnya sedikit.
>> Anda dapat memotong kembali, saya berarti Anda harus menanganinya entah bagaimana.
Dan apa komputer biasanya akan lakukan, berpikir tentang hal itu bahkan dari pagi ini,
jika Anda memiliki nilai 4-bit seperti 1, 1, 1, 1, yang,
hanya untuk mengikat pagi hari bersama-sama untuk sore hari, apa yang
apakah nomor ini mewakili dalam biner?
OK, kami akan membuatnya lebih mudah.
Apa nomor ini mewakili dalam biner?
OK, kami akan membuatnya lebih mudah, apa yang hal ini mewakili dalam biner?
AUDIENCE: Tiga.
DAVID Malan: Tiga, karena kami memiliki orang-orang column--
[TAWA]
Wah!
Kami memiliki kolom yang dan kolom berpasangan.
Jadi misalkan, memang, kami [? infield?] tidak 32 bit,
tapi dua bit, kita bisa menghitung dari pengguna nomor 0, 1, 2, 3,
dan kemudian kami jenis kembali ke pengguna 00 lagi.
Jadi ini adalah apa yang biasanya terjadi.
Jika Anda pernah mendengar expression-- yang mungkin belum, tetapi jika Anda have--
integer overflow, di mana Anda terus membalik semua bit Anda
menjadi nilai terbesar yang mungkin, dan kemudian Anda keluar dari bit,
apa yang biasanya akan terjadi?
Mengapa saya mengatakan 00?
Nah, ini adalah tiga.
Bagaimana saya mewakili 4?
Bagaimana cara mewakili untuk nomor 4 dalam biner?
AUDIENCE: [tidak terdengar]
DAVID Malan: satu-- yeah, tidak mengatakan 100 per se,
karena memiliki salah satu konotasi, tapi 1-0-0.
Sehingga jumlah 1-0-0 memang yang benar, tetapi jika Anda hanya memiliki dua bit,
apa yang telah Anda benar-benar dilakukan?
Anda berguling ke 00.
Dan memang, itulah yang akan terjadi.
Sebenarnya, Anda bisa memikirkan tentang ini lebih akrab.
Jika Anda ingat, apa, 16 tahun yang lalu, dunia
itu seharusnya berakhir saat masalah Y2K terjadi.
Mengapa begitu?
Nah kebanyakan komputer, untuk keputusan yang wajar,
yang menyimpan nomor seperti tahun 1975 atau tahun 1999
dengan hanya menggunakan dua digit di memori komputer.
Jadi tentu saja, apa yang terjadi ketika Anda mendapatkan untuk tahun 2000,
Anda pergi ke ini, atau lebih tepatnya, ya.
Jadi Anda pergi ke tahun 2000, tetapi jika Anda hanya menggunakan dua digit terlihat
seperti tahun 00 dan sehingga Anda berguling.
Dan ini adalah mengapa banyak sistem perlu diperbarui pada saat itu.
>> Jadi dengan mengatakan bahwa, perusahaan seperti Facebook menjalankan melawan ini.
Jadi satu-satunya cara untuk menangani Situasi, terus terang, untuk mengantisipasi hal itu.
Atau cara yang paling bersih untuk menangani situasi ini
adalah untuk mengantisipasi hal itu sehingga Anda tidak harus membuat perubahan nanti.
Jadi, bukannya 8 byte, Anda tahu apa?
Aku akan menjadi berpikiran maju di sini, meskipun itu
sedikit optimis bahwa kita akan memiliki 4 miliar
dan pengguna 1 di website kami.
Tapi mari kita hanya menggunakan 8 bytes, atau 64 bit, yang umumnya akan
disebut bilangan bulat besar, sangat teknis.
Dan itu hanya berarti Anda dapat memiliki bahkan lebih digit nomor Anda.
Tapi ini adalah penting keputusan desain,
karena jika Anda memilih nomor yang memiliki terlalu sedikit bit ekspresif
Anda bisa benar-benar membuat bug dalam perangkat lunak Anda.
>> Baiklah, jadi mari kita membungkus dengan email dan alamat pos.
Jadi email, berapa lama harus alamat email itu?
50.
Aku benar-benar tidak tahu, tapi itu mungkin sesuatu seperti itu,
karena jika tidak ada akan menulis Anda jika terlalu lama, sehingga 50,
mari kita pergi dengan itu untuk saat ini.
alamat pos, berapa lama harus?
AUDIENCE: [tidak terdengar]
>> DAVID Malan: Ini tidak hanya kode pos, meskipun.
alamat pos, saya mendengar.
Jadi ini seperti 1 Brattle Square, koma, Cambridge Mass., koma, 02138.
Dan pada kenyataannya, saya hanya menarik sebuah worksheet kecil di sini.
Ini terasa seperti itu kesempatan.
Jika kita memiliki 1 Brattle Square, koma, Cambridge MA 02138,
Saya merasa seperti kita bisa berbuat lebih baik dari sekedar alamat pos.
Mengapa kita tidak meledak ini sedikit?
Apa yang saya maksudkan?
Apa yang harus kita malah harus untuk baris kami di sini, mungkin?
>> AUDIENCE: [tidak terdengar]
>> DAVID Malan: Ya, jadi mari kita menyebutnya street_number,
dan garis bawah hanya umum cara memiliki apa yang tampak seperti ruang,
tapi tidak, sebenarnya.
Street, dan kemudian city-- maaf?
>> AUDIENCE: [tidak terdengar]
DAVID Malan: Kita bisa melakukan itu.
Satu baris, baris dua.
Kenapa tidak kita akan terus sederhana untuk saat ini,
tapi itu benar-benar keputusan diterima.
Dan kemudian negara, dan kemudian mari sedikit US-centric untuk saat ini
dan hanya melakukan kode pos, hanya karena itu akan menyebabkan kesalahan yang menarik
atau masalah di sini.
Jadi misalkan yang sekarang alamat kami.
Ini sedikit lebih menyebalkan yang kita memiliki semua bidang ini lebih lanjut,
tapi sekarang kita bisa tag sesuatu yang sedikit lebih baik.
>> Jumlah Jadi sekarang jalan mungkin seharusnya tidak menjadi char, harus itu?
Apa yang harus itu?
AUDIENCE: [tidak terdengar]
DAVID Malan: Mungkin, nomor seperti integer lagi?
Sebuah integer besar?
Anda mungkin tidak hidup di 4 miliar Main Street
atau apa gila seperti itu.
Jadi bilangan bulat mungkin baik-baik saja, tetapi memiliki siapa pun
pernah hidup di alamat seperti 1A Brattle Square, atau 1 dan 1/2?
Hal-hal ini ada, sayangnya, bahkan jika Anda belum tinggal di sana,
ada anomali ini seperti apartemen 1A, 1B, 1C.
Sehingga Anda tahu apa, kita mungkin tidak harus pergi dengan integer,
kalau tidak kita akan kehilangan beberapa penjualan.
>> bidang Char, mungkin?
Saya tidak tahu berapa lama.
Ini mungkin tidak akan menjadi yang lama, sehingga 10 atau sesuatu.
Tidak ada yang akan menulis sejumlah lagi, mungkin.
Tapi sekali lagi, kami mungkin harus memberikan lebih banyak pemikiran untuk itu.
Mungkin google, melakukan penelitian, tapi kami akan pergi dengan nyali kami untuk saat ini.
Jalan-jalan, char, 50, saya tidak tahu.
Di beberapa titik, tidak ada yang terjadi untuk menulis pada amplop,
juga, jadi mungkin ada beberapa batas atas sana.
Kota, yang sama, yakin, jadi char di 50.
>> Negara, bisa US-centric untuk saat ini.
Sehingga bisa daftar, begitu baik dari panggilan pengadilan, negara.
Ini bisa seperti dua karakter.
Jadi sebenarnya, mungkin, aku terus berkata arang.
Aku mungkin berarti varchar, hanya untuk beberapa efisiensi,
tapi kami akan kembali ke bahwa keputusan dalam sekejap.
Bisa menjadi char panjang 2 untuk negara.
Jika di AS yang mereka miliki, seperti MA, Massachusetts, NY, New York, NJ, New
Jersey, dan sebagainya.
Jadi bisa diperbaiki pada saat itu.
DC Washington DC.
>> Tapi saya pikir, Olivier, Anda diusulkan pendekatan lain.
AUDIENCE: [tidak terdengar]
DAVID Malan: Ya, jadi itu adalah sedikit mengganggu untuk mengetik di,
tapi enum mungkin lebih masuk akal, karena dengan cara ini, setidaknya di AS,
Anda bisa menghitung, jika tediously, tapi Anda melakukannya hanya sekali dalam database Anda
dan tidak pernah lagi harus berpikir tentang itu, semua 50 kode dua karakter.
Jadi saya suka enum.
Mari kita tetap dengan yang ada, karena itu semacam memaksa lebih kekakuan.
Dan kemudian kode pos?
Saya pikir Andrew punya pikiran tentang itu
AUDIENCE: [tidak terdengar]
DAVID Malan: Ya, lima atau sembilan.
Mari kita tetap sederhana.
Hanya melakukan lima untuk saat ini.
Tapi mungkin aku bisa hanya melakukan integer, kan?
Aku bisa, tapi kau tahu apa, saya membuat kesalahan ini sekali, dalam arti tertentu.
Tahun lalu, saya bermigrasi dari Microsoft Outlook untuk Gmail,
dan Outlook memiliki cara mengekspor semua kontak Anda sebagai file Excel,
file CSV, dipisahkan koma berkas nilai.
Dan saya membuat kesalahan, saya berpikir, dari mengklik ganda itu,
setelah saya download ekspor, untuk pastikan itu tampak seperti yang saya harapkan.
Saya harus memukul Simpan atau membiarkan auto-save menendang atau sesuatu.
Karena ketika saya kemudian diimpor ke Gmail, semuanya bekerja.
Tapi selama bertahun-tahun, sampai hari ini, dan Aku melakukan ini lima, 10 tahun yang lalu,
Aku masih menemukan teman-teman yang memiliki alamat yang terlihat seperti ini.
Mengapa?
>> AUDIENCE: [tidak terdengar]
>> DAVID Malan: Butuh 0, baik, bukan, itu
mengambil kode pos keseluruhan sebagai nomor, dan oleh karena itu
terkemuka 0 yang berarti itu tidak ada artinya.
Dan 2138 tampaknya menjadi kode pos saya.
Dan ini, terus terang, Excel menjengkelkan Fitur dimana saya pikir secara default,
bahkan jika itu berarti hanya berupa teks, Microsoft Excel
memutuskan, biarkan aku membantu, dan oh, saya hanya melihat angka.
Mari kita memperlakukan ini sebagai nomor.
Dan itu memotong angka nol terkemuka.
>> Saya bersumpah demi Tuhan, setiap beberapa bulan saya mencari alamat,
dan keluar dari semacam OCD, aku kembali dan tambahkan 0, meskipun saya tidak pernah
mengirim surat orang atau apa pun.
Tapi aku masih menemukan sisa-sisa ini.
Jadi ini adalah untuk mengatakan, apakah ini ide yang baik?
OK, tidak ada, karena siapa pun di Massachusetts, di daerah ini,
akan memiliki o memimpin mereka.
Jadi mari kita pergi dengan seperti char, mungkin, lima.
>> Dan di sini, menyadari bahwa kita bisa menggunakan enum dan kami
bisa menghitung 10.000 mungkin kode pos,
tapi yang terasa seperti itu mungkin melintasi garis, seperti, manfaat.
Jika Anda memiliki masukan yang banyak data ke dalam database Anda
untuk melindungi terhadap sesuatu.
Jadi arang menyadari Anda bisa mengetik di H-E-L-L-O sebagai kode pos Anda,
yang tidak, jelas, angka.
Jadi tidak ada cara, di database khas,
untuk menentukan hanya numerik dan hanya lima karakter,
sehingga kita akan memiliki untuk melakukan itu dalam kode.
Kita akan melakukan itu di PHP atau Java atau apa pun bahasa kita
menggunakan pada server untuk menegakkan semacam kendala.
>> Whoo!
Baiklah, jadi pertanyaan dulu?
Mari kita membuat keputusan desain lain.
Ternyata bahwa Anda juga bisa memilih,
ketika merancang sebuah database SQL, atau database-- relasional yang khas di mana
lagi, relasional hanya berarti baris dan kolom,
itulah bagaimana Anda mengatur data-- Anda dan menyadari bahwa apa artinya ini,
Aku sudah menyesatkan di itu, aku drawing-- ini
adalah apa yang disebut skema untuk tabel database.
Ini seperti spesifikasi untuk table-- yang
tetapi ketika datang waktu untuk benar-benar menyimpan data,
dan kami akan melakukan ini hanya dengan contoh di sini.
Aku akan membuka Excel, karena Excel akan memberikan baris dan kolom.
Dan itulah yang Oracle dan MySQL dan alat-alat lain akan memberi saya.
Jadi aku hanya akan menggunakan itu demi diskusi ini.
Biarkan aku pergi ke depan dan membuka dokumen perwakilan di sini,
memperbesar sedikit.
Jadi misalnya, header kami sekarang Nama depan, nama belakang, jenis kelamin, ID,
email, nomor jalan, jalan, whoops.
Jalan, kota, negara, hanya tentang cocok di layar.
>> Jadi apa artinya ini adalah bahwa ketika pengguna pertama register untuk website saya,
itu akan menjadi sesuatu seperti David, Malan, m, katakanlah 1,
malan@harvard.edu, nomor jalan akan seperti 1 Brattle Square, Cambridge, MA,
02138, dan kemudian sebagainya.
Jadi ketika saya mengatakan bahwa database relasional atau database SQL adalah baris dan kolom,
Maksud saya ini.
Itu data aktual disimpan dalam baris dan kolom.
Ini hanya kebetulan, bahwa kita sedang berbicara,
dan aku hanya menggambar di baris dan kolom.
Ini hanya skema, definisi menyeluruh.
>> Jadi bidang ini di sini, atau ekuivalen, ada,
yang merupakan bidang yang Anda pikir Saya cenderung untuk mencari pada jika aku pengguna
atau jika aku administrator database?
Seperti, apa bidang aku benar-benar akan mencari di?
>> AUDIENCE: [tidak terdengar]
>> DAVID Malan: Nama, ya begitu Saya suka fakta itu-- yeah,
email mungkin cukup umum.
Maaf, Anda mengatakan nama.
Jadi maybe-- dan lagi, kami jenis berbicara secara abstrak.
Aku tidak tahu mengapa Anda lebih akan mencari nama,
tapi yang terasa wajar jika Anda sedang mencari pengguna.
Mungkin menyatakan, yakin, ID.
>> Dan itu licin kemiringan, karena aku bisa
merancang sebuah skenario di mana mungkin bos saya meminta saya,
berapa banyak orang yang kita miliki di situs kami?
Berapa banyak wanita yang kita miliki di situs kami?
Dan pada saat itu, Anda mungkin ingin untuk mencari di lapangan jenis kelamin, juga,
dan tidak ada lagi.
Jadi ada trade-off di sini.
Sekali lagi, tidak ada jawaban yang benar, tetapi ada
adalah fitur di sebagian database SQL dikenal sebagai pengindeksan, dimana
Anda, desainer, yang database administrator,
harus memutuskan di muka yang bidang database harus mengoptimalkan
untuk pencarian di.
>> Anda bisa sangat naif mengatakan, mengoptimalkan ini, mengoptimalkan itu, mengoptimalkan ini,
mengoptimalkan itu dan ini, dan database akan
melakukan beberapa hal ajaib di bawah hood, dan melakukan sesuatu sedemikian rupa
bahwa waktu berikutnya Anda mencari pada salah satu bidang tersebut,
akan, pada kenyataannya, lebih cepat.
Ini mungkin.
Itu tidak membatalkan sendiri keluar.
Tapi harus ada harga yang harus dibayar.
>> Jika Anda naif, atau over-antusias mengatakan, indeks semua bidang tersebut,
sehingga untuk berbicara, membuat mereka semua efisien dicari,
berapa harga yang Anda mungkin membayar?
AUDIENCE: [tidak terdengar]
DAVID Malan: Kinerja.
Apa maksudmu?
Nah kinerja, setidaknya di konteks saya membahas, lebih baik sekarang.
Itulah definisi pengindeksan.
Ini akan membuat pencarian lebih cepat.
Jadi waktu menurun, sehingga untuk berbicara.
AUDIENCE: [tidak terdengar]
DAVID Malan: Space.
Jadi sekali lagi, ini adalah perdagangan umum.
Saya dapat mempercepat penelusuran, tapi itu akan dikenakan biaya lebih byte ruang.
Mengapa?
Nah, secara default, jika kita memiliki satu pun dari -bintang merah, tak satu pun dari indeks ini,
seperti yang saya katakan, bagaimana Anda mencari untuk nama dalam database ini?
Jadi mari kita menggambar kami memperhatikan contoh ini.
Jika kita memiliki David dan Scully dan Kareem dan Arwa dan lain-lain di baris ini,
contohnya.
>> Jadi mari kita melakukan hal itu.
Scully di sini, dan kemudian kami memiliki Kareem, dan Arwa,
dan orang lain, jika Anda tidak memiliki indeks didefinisikan, sehingga untuk berbicara,
yang terbaik yang dapat Anda lakukan adalah pencarian linear.
Jika Anda mencari Arwa, kita tidak akan dapat melompat tepat baginya
segera.
Kita akan mulai atas dan pergi semua jalan ke bawah,
tidak seperti kami asli Mike Smith misalnya.
>> Namun, jika saya katakan, hey, database, Indeks kolom nama pertama,
maka itu akan melakukan sesuatu pengujian dan mendukung sesuatu
seperti pencarian biner.
Itu tidak mungkin pencarian biner per se.
Database cenderung menggunakan lain struktur data yang disebut b-pohon,
tidak menjadi bingung dengan pohon-pohon biner, yang hanya membuatnya lebih cepat untuk mencari
sesuatu logaritma di alam.
Tapi harga yang Anda bayar untuk membangun yang fitur, struktur data dalam memori,
lebih byte.
Jadi mungkin mengambil beberapa megabyte, beberapa gigabyte, siapa tahu?
Hal ini tergantung pada data.
>> Jadi di beberapa titik, Anda harus memutuskan, itu mungkin bukan kasus umum.
Jadi apa yang umum yang sebenarnya kasus, jika Anda benar-benar harus memilih,
apa yang mungkin bidang favorit Anda menjadi?
E-mail.
Dan aku suka email karena email, dalam teori, harus unik.
Dan biasanya, ketika Anda tahu sebelumnya bahwa salah satu bidang Anda
sedang atau akan menjadi unik, yang cenderung menjadi lapangan yang baik
untuk mencari di, karena dengan cara itu, ketika Anda mencari sesuatu,
Anda akan mendapatkan kembali satu atau nol tanggapan dan kemudian Anda sudah selesai.
Anda tidak harus terus mencari yang lain lagi.
>> Dan dalam hal ini di sini, email, asalkan Anda tidak dapat mendaftar dua kali
dengan email yang sama, adalah satu yang baik.
ID menurut definisi, di ilmu komputer dunia,
jika Anda sedang berbicara tentang sebuah ID, bahwa lebih baik menjadi unik.
Itu semacam konotasi dari ID atau pengenal.
Dan sisa ini mungkin, mari kita sebut mereka bagus untuk kaya,
tapi tidak benar-benar diperlukan.
>> Dan dalam database, Anda tentukan indeks,
tetapi Anda dapat menjadi lebih tepat.
Anda dapat mengatakan, hei, database, pastikan bahwa setiap ID di tabel ini adalah unik.
Bahkan tidak membiarkan programmer sengaja dimasukkan ke dalam email duplikat
atau menggandakan nomor ID.
Begitu banyak seperti enum melindungi kita sama, Anda
dapat memiliki orang-orang pertahanan-tingkat yang lebih rendah.
Dan desain database, di beberapa pengertian, jenis menyenangkan,
karena Anda melakukannya membela diri.
Anda semacam berasumsi bahwa Anda bekerja dengan mengerikan, programmer mengerikan
dan Anda ingin menempatkan di banyak pertahanan Anda dapat untuk melindungi data Anda,
tetapi secara bersamaan Anda ingin untuk membantu mereka tampil lebih baik
dengan memilih yang ladang untuk mengoptimalkan.
Tapi Anda tidak bisa selalu melakukannya di vakum seperti kita jenis di sini.
Anda harus tahu apa yang kasus-kasus umum adalah.
Jika pengembang menerapkan buku alamat,
Anda mungkin sangat baik ingin dapat untuk mencari di hampir setiap bidang,
hanya dengan sifat aplikasi.
Jadi mungkin Anda menghabiskan yang ruang tambahan.
>> Benar, pertanyaan?
Ya.
>> AUDIENCE: [tidak terdengar]
>> DAVID Malan: No.
>> AUDIENCE: [tidak terdengar]
>> DAVID Malan: OK.
>> AUDIENCE: [tidak terdengar]
>> DAVID Malan: Oh, jadi kami berbicara dengan cara
sekarang itu benar-benar bahasa agnostik.
Jadi kita berbicara sekarang tentang database relasional lebih umum,
atau SQL database lebih umum.
>> AUDIENCE: [tidak terdengar]
>> DAVID Malan: Sebuah kata yang lebih baik untuk digunakan adalah, dapat digunakan oleh bahasa apapun.
Jadi saya bisa menulis kode JavaScript, C kode, C ++ kode, kode Java, kode Ruby,
yang semuanya berbicara dengan database dan mengeksekusi query.
Bahkan, itu tidak buruk Segue untuk contoh query.
Dan lagi, kita tidak akan masuk ke Java atau C ++ atau salah itu lagi,
tetapi dalam SQL, bahasa yang saya tetap merujuk, Structured Query Language,
ini sendiri merupakan bahasa pemrograman, tapi itu dimaksudkan untuk digunakan untuk, tidak ada
Kejutan, terstruktur query query.
>> Maksud saya ini.
Cara Anda memilih data dari database MySQL
adalah Anda benar-benar mengetik dalam program Anda sesuatu seperti pilih bintang dari pengguna.
Saya mengasumsikan bahwa tabel ini, selanjutnya disebut pengguna.
Saya bisa menyebutnya apa pun yang kita inginkan, tapi itu jenis masuk akal.
Dan jadi pilih adalah sangat kata kerja umum, jika Anda
akan, SQL, yang benar-benar melakukan itu.
Apa yang Anda pikirkan bintang berarti dalam konteks ini?
>> AUDIENCE: [tidak terdengar]
>> DAVID Malan: Maaf?
>> AUDIENCE: [tidak terdengar]
>> DAVID Malan: Tidak diperlukan, itu lebih inklusif dari itu, sebenarnya.
Ini karakter wild card.
Membintangi hampir selalu berarti apa-apa, jadi ini berarti, dalam hal ini,
memilih semuanya dari database.
Jadi ketika saya mengatakan ini, maksudku memberi saya kembali setiap kolom
dari meja saya disebut pengguna.
Jadi memberi saya satu set hasil, seperti disebut.
Dengan kata lain, memberikan salinan spreadsheet, adalah apa yang saya maksudkan.
>> Tapi jika saya mengatakan pilih bintang dari pengguna di mana ID sama dengan 1, seberapa besar harus
hasil saya set menjadi kemudian?
Atau ekuivalen, berapa banyak baris harus Aku diserahkan kembali dari database?
Mungkin hanya satu, jika saya memiliki memang diperlakukan ID sebagai pengenal unik,
dan jika David memiliki yang unik ID, saya harus kembali satu dan hanya satu baris
yang berisi semua informasi Daud.
Jika saya mengatakan di mana ini ID sama 99, aku harus kembali,
dalam konteks ini, nol baris, setidaknya pada saat ini.
>> Namun, jika saya tidak benar-benar peduli tentang semua informasi itu,
Aku hanya bisa mengatakan, mana David tinggal?
Pilih kode pos dari pengguna di mana ID adalah 1.
Ini akan memilih saya hanya zip Daud kode dan bukan keseluruhan baris itu.
Mengapa saya mungkin melakukan hal ini bukan query bintang, wild card?
>> AUDIENCE: [tidak terdengar]
>> DAVID Malan: Ya, saya hanya mungkin membutuhkannya.
Jadi kinerja lagi jawabannya di sini.
Mengapa meminta lebih Informasi dari yang Anda butuhkan,
karena meskipun itu semua tepat bersama-sama, Anda masih harus menyalin data itu,
tampaknya, dari database ke dalam program Anda, entah bagaimana,
dan itu hanya konyol jika Anda hanya perlu lima digit tersebut,
tidak keseluruhan baris.
>> Jadi bagaimana cara memasukkan pengguna?
Misalkan pengguna memiliki hanya terdaftar untuk pertama kalinya.
sintaks biasanya akan terlihat seperti ini.
Masukkan ke pengguna, dan maka kita akan mengatakan nilai-nilai,
dan kemudian kita akan mengatakan nilai-nilai seperti, katakanlah, Lauren Scully,
videografer kami di sini.
Dan bidang berikutnya adalah gender.
Jadi kita akan mengatakan kutipan, tanda kutip "F", maka kita memiliki ID
dan aku akan say-- mari berpura-pura dia tidak benar-benar di sini,
jadi kita akan mundur dalam cerita.
Jadi 2 akan ID-nya.
Dan kemudian field berikutnya di sini adalah email-nya.
Jadi itu akan menjadi seperti Lauren Scully dan sebagainya,
dan kami hanya akan dot dot dot itu pergi dari sini.
Sekarang akan mendapatkan sedikit membosankan, tetapi query insert
akhirnya akan terlihat seperti itu.
>> Jika saya ingin menyingkirkan Scully, uh-oh, mari kita deregister
, dia menghapus akunnya, menghapus dari pengguna di mana ID sama dengan 2,
akan menyingkirkan Scully.
Atau bisa saya katakan pengguna pembaruan ditetapkan, katakanlah, apa yang bisa kita ubah?
Misalkan dia bergerak.
Set zip sama 021-- tidak, itu pos-nya saat ini.
90210.
Satu-satunya kode pos lainnya Aku tahu di dunia.
Sehingga akan mengubah zip nya code-- sebenarnya,
yang tidak akan mengubah kode pos-nya.
>> Apa yang saya lakukan?
Meskipun sintaks mungkin baru.
>> AUDIENCE: [tidak terdengar]
DAVID Malan: Ya, saya pindah semua orang untuk Beverly Hills, California.
Jadi aku harus benar-benar mengatakan di mana ID sama dengan 2.
Dan seterusnya.
Jadi SQL adalah semua tentang ini jenis instruksi.
Pilih, menyisipkan, menghapus, memperbarui, dengan predikat tersebut pada akhir
klausa mana ini, sehingga untuk berbicara.
Dan ada lebih banyak Anda bisa lakukan, tapi itu benar-benar hanya bermuara
untuk hanya, jika arcanely, mengekspresikan apa yang Anda inginkan database untuk melakukan.
>> Dan kemudian database akan mencari tahu, ketika
Anda memasukkan Lauren Scully ke dalam Database, di mana untuk menempatkan dia dalam memori
sehingga kita bisa sangat cepat mendapatkan nya berdasarkan alamat email-nya
atau berdasarkan nomor ID nya atau sejenisnya.
Ya, Dan.
AUDIENCE: [tidak terdengar]
DAVID Malan: Pertanyaan Benar-benar baik.
Akan skrip ini berubah dari Microsoft Access ke Oracle
untuk MySQL ke PostgreSQL?
Jawaban singkatnya adalah tergantung.
Secara teori, ada yang sangat bagian umum yang signifikan dari SQL
yang dibagikan di semua dari implementasi tersebut.
Namun, berbagai produsen memiliki fitur yang ditambahkan
untuk database mereka untuk melakukan hal-hal tertentu di luar cakupan fitur ini,
yang mungkin, pada kenyataannya, istirahat.
>> Jadi pengembang cara lindung nilai terhadap ini,
adalah bahwa daripada menulis baku kode SQL seperti aku menulis di sini,
mereka malah menggunakan perpustakaan, perpustakaan umum itu sendiri
adalah semacam tingkat yang lebih tinggi dan abstrak jauh produk yang Anda gunakan.
Dan memberikan Anda fungsi dan prosedur
menelepon sehingga Anda tidak pernah benar-benar menulis SQL baku.
>> Dalam teori, maka, Anda dapat mengubah produk dari Oracle ke Microsoft
atau sebaliknya atau apa pun lain, dan Anda benar-benar
mengubah apa-apa tentang kode Anda.
Kenyataannya, meskipun, adalah, Anda kadang-kadang menyerah fitur sebagai hasilnya.
Anda mungkin telah memilih produk karena itu punya fitur nilai tambah tersebut,
dan Anda hanya sekarang tidak menggunakan mereka sadar.
>> Dan anekdot, kebanyakan perusahaan cenderung tidak pernah pindah dari database mereka.
Jadi sementara ini adalah baik untuk memiliki fitur, kenyataannya
adalah, jika Anda merombak database Anda, Anda
mungkin membuat tandan perubahan lainnya pula, bahwa Anda tidak perlu
perlu mengantisipasi itu.
Jadi itu bisa dibilang over-rekayasa masalah,
tapi itu benar-benar tergantung pada konteksnya.
Tapi dalam teori, SQL dibagi di berbagai produk.
pertanyaan yang benar-benar baik.
Ya.
>> AUDIENCE: [tidak terdengar]
>> DAVID Malan: Ya, jadi Anda bisa memikirkan database
hanya server, pada akhir hari, dan di dalam server yang
adalah sejumlah besar tabel, baris dan kolom.
Dan ketika Anda mengirim permintaan seperti ini dari program Anda, website Anda,
ditulis di Jawa, Ruby, Python, apa pun, server menerima perintah ini
dan menafsirkan dalam harfiah dengan cara yang sama
kita bahas sebelumnya dengan bahasa ditafsirkan,
dan kemudian melakukan beberapa tindakan pada nol atau baris lainnya di nol atau lebih tabel.
AUDIENCE: [tidak terdengar]
>> DAVID Malan: Tepat, persis.
Jadi pseudocode untuk sesuatu seperti itu mungkin ini.
Dalam file PHP atau Anda File Python atau berkas Java Anda,
Anda akan memiliki kode pseudo, atau Scratch-seperti blok seperti, jika dilihat pengguna
acme.com/register~~V untuk pertama kalinya, kemudian masukkan ke dalam pengguna dan sebagainya.
Dan kami akan menerjemahkan ini untuk lebih kode beton pada akhirnya.
Tapi benar-benar, kita memiliki semua blok bangunan di sini,
meskipun kita melewatkan beberapa langkah-langkah implementasi.
>> Jadi biarkan aku menemukan kesalahan dengan apa yang kita mengagumkan melakukan beberapa saat yang lalu.
Anda telah membuat cukup tabel lengkap bagi pengguna.
Memang, kita bisa menerapkan dalam beberapa cara yang berbeda,
tetapi Anda benar-benar membawa kita bawah path-- dan saya mengatakan Anda,
tapi mungkin fault-- saya dari cukup implementasi database tidak efisien.
Ini tidak dinormalisasi.
>> Dan dengan normalisasi Maksudku ada akan menjadi,
dari waktu ke waktu, redundansi yang signifikan, dan karena inefisiensi,
yang buang ruang.
Berdasarkan hanya apa yang Anda lihat di sini, bisa Anda membayangkan di mana limbah ini ruang
akan datang dari, dari waktu ke waktu, karena semakin banyak pengguna mendaftar
untuk website Anda?
Data apa yang mungkin menjadi berlebihan?
>> AUDIENCE: [tidak terdengar]
>> DAVID Malan: Mengapa Anda berarti bahwa?
AUDIENCE: [tidak terdengar]
DAVID Malan: Ya.
Dan mari kita asumsikan untuk tujuan hari ini yang itu benar.
Ternyata, dan kami telah belajar ini dengan cara yang keras, yang tidak benar.
Entah bagaimana beberapa kota memiliki, entah bagaimana, kode pos yang sama,
yang memecah intuisi ini indah.
Tapi anggap itu benar, karena itu hampir selalu benar.
Jadi misalkan kode pos adalah selalu dikaitkan dengan kota yang sama
dan negara, yang merupakan jenis asumsi yang wajar,
tapi tidak benar, ternyata.
Tapi asumsi yang masuk akal untuk tujuan hari ini.
>> Kemudian anggaplah bahwa saya tinggal di Cambridge, MA, menurut tabel pengguna ini,
dan anggaplah bahwa Lauren Scully tinggal di Cambridge, MA,
dan anggaplah bahwa Kareem tinggal di Cambridge, MA,
dan Arwa tinggal di Cambridge, MA, kita semua di 02.138.
Mengapa kita mengingat Cambridge, MA, 02138 untuk kami berempat?
Apa yang harus cukup untuk ingat?
>> AUDIENCE: [tidak terdengar]
DAVID Malan: Hanya kode pos.
Hanya saja 02138 ada, karena Anda tahu apa yang bisa kita lakukan?
Kita bisa mendapatkan sedikit mewah di sini dan di sini, mendefinisikan meja lain
di mana ini akan menjadi nama, ini akan menjadi jenis,
ini akan menjadi panjang, dan selanjutnya, aku
akan menyebutnya saya kota meja.
Ini disebut, dari Tentu saja, pengguna saya meja.
Dan jadi apa yang harus saya masukkan di sini untuk saya kota meja, menurut Anda?
>> AUDIENCE: [tidak terdengar]
>> DAVID Malan: Ya.
Jadi zip dan negara dan kota.
Dan jenis di sini, kita akan mengatakan ini akan menjadi char 5 lagi,
tunduk pada perdebatan sebelumnya.
Ini akan menjadi enum, mungkin seperti sebelumnya, dan kota akan menjadi varchar 50.
Dan sekarang apa yang saya dapatkan untuk menghapus dari tabel ini
untuk menghilangkan inefisiensi itu?
>> AUDIENCE: [tidak terdengar]
DAVID Malan: Nice.
Negara dan kota pergi, jadi aku sekarang dihilangkan potensi inefisiensi
untuk berlebihan mengingat, Cambridge, MA, Cambridge, MA, Cambridge, MA,
Cambridge, MA, yang, mudah-mudahan tidak akan pernah berubah.
Dan bahkan jika tidak, itu minorly menjengkelkan, sekarang
bahwa saya harus mengubah dalam beberapa baris,
sedangkan di sini, aku bisa saja mengubahnya dalam satu tempat.
>> Sekarang apa trade-off, mungkin?
Ini adalah super nyaman.
Memiliki semua data saya baik bersama-sama.
Tapi apa jelas terjadi sekarang?
>> AUDIENCE: [tidak terdengar]
DAVID Malan: Tepat, dan aku senang Anda menggunakan kata bergabung,
karena itulah sebenarnya kata kunci, dalam dunia database relasional
di SQL, itu kata yang sebenarnya Anda mungkin mengetik atau setidaknya menyampaikan.
Dan pada kenyataannya, apa yang sekarang kita harus melakukan untuk memilih informasi lengkap David adalah
sesuatu seperti pilih bintang dari pengguna, bergabung kota, on-- dan sekarang
Aku akan hanya pindah ke baris kedua sehingga users.zip fits-- ini sama dengan
cities.zip, di mana users.ID sama dengan 1.
>> Jadi apa yang terjadi?
Itu jelek mencari, tetapi Anda dapat jenis membacanya kiri ke kanan, atas ke bawah.
Pilih star dari pengguna adalah sama seperti sebelumnya,
tapi tidak dari pengguna, per se.
Ini dari pengguna bergabung kota.
Apa yang saya bergabung dua meja di?
Nah, tampaknya, pengguna tabel zip lapangan,
dan periode ini hanya khusus sintaks untuk mengekspresikan gagasan itu,
dan ini adalah kota tabel zip lapangan.
Saya ingin kedua harus sama, tapi saya ingin akhirnya memilih
hanya baris di mana ID pada tabel pengguna
sama dengan 1, yang terjadi untuk menjadi milikku.
>> Dan hanya untuk menjadi jelas, programmer, biasanya ketika
hardcode sesuatu seperti nomor 1, karena jika tidak website hanya
mendukung David atau pengguna pertama, Anda
sebaliknya akan melakukan sesuatu seperti ID, di mana
ini merupakan variabel, sesuatu yang
dapat berubah dari waktu ke waktu, mirip dalam roh dengan apa yang saya katakan sebelumnya
dengan jenis-jenis penampung.
Tapi untuk saat ini kita hanya akan hardcode sebagai 1.
Dan jadi apa artinya ini?
Nah, cara yang baik untuk memvisualisasikan ini bahwa jika tangan ini adalah tabel pengguna,
dan tangan ini adalah ritsleting meja, kami semacam finding--
dan ujung jari saya zip di sini, dan ujung jari saya
di sini adalah zip, Anda jenis interlocking itu
sehingga Anda mendapatkan kembali yang dihasilkan tabel asli, dengan benar-benar bergabung
dua tabel di lapangan umum.
Dan itu tidak harus zip.
Ini bisa menjadi apa yang paling lain, tapi zip bagus, karena salah satu, itu singkat,
dua, itu selalu panjang yang sama, jadi ada
efisiensi nyata untuk apa Olivier diusulkan di sini
dengan anjak keluar zip, dan [Tidak terdengar] mengusulkan bahwa kita menyingkirkan
kota dan negara.
>> Jadi ini adalah proses dikenal sebagai normalisasi.
Pertanyaan tentang itu?
Yah biarkan saya menunjukkan ini adalah jenis barang,
meskipun itu cukup rendah tingkat, diskusi ini, bahwa Anda akan berpikir
Anda semacam mendapatkan hilang dalam gulma,
ini merupakan manifestasi dari cukup kesempatan bagi pengembang untuk menjadi buruk.
Dan pada kenyataannya, bahkan ketika kita, di Program Aku sudah diajarkan, ketika kita punya,
misalnya, berpengalaman programmer sarjana
membangun website, pada pandangan pertama, situs mungkin terlihat hebat.
Dan mereka memiliki semua fungsi kami meminta,
pengembang melakukan pekerjaan yang baik.
>> Tapi mereka tidak selalu tahu cukup tentang desain database
atau mereka tidak berpikir keras cukup tentang jenis data
dan jenis pengguna situs akan memiliki,
dan kita menemukan, kemudian, enam bulan kemudian, setelah mereka lulus atau pindah,
yang sialan itu, website kami benar-benar, benar-benar lambat.
Dan aku bahkan tidak berbicara tentang memiliki jutaan atau ribuan pengguna.
Maksudku beberapa ratus pengguna di kampus, semuanya ingin, misalnya,
berbelanja untuk kursus di saat yang sama, mereka
menggunakan bahwa program katalog Aplikasi yang saya sebutkan
dan hal tersebut semakin benar-benar memperlambat karena tidak ada indeks.
Tidak ada bintang merah, sehingga untuk berbicara, atau kita punya belum tentu
keluar faktor data umum untuk mendapatkan beberapa penghematan ruang.
>> Dan jadi ketika pemeriksaan pengembang atau database orang atau sejenisnya,
jenis pertanyaan untuk memikirkan Bahkan, ketika meninjau kode seseorang,
mengatakan, belum tentu terlihat melalui semua kode mereka, tapi mengatakan,
mari kita lihat melalui tabel database.
Apa yang Anda menyimpan?
Dan kemudian mengatakan, baik, tunggu menit, mengapa kau menggunakan integer?
Bagaimana jika kita memiliki 4 miliar dan 1 baris ini?
Dan jenis-jenis pertanyaan adalah kesempatan
untuk jenis mendorong kembali dan mendapatkan rasa, di mana
jika Anda tidak nyaman melakukan itu, memiliki seseorang yang lebih teknis
mengajukan pertanyaan-pertanyaan ini, apakah atau tidak orang benar-benar tahu barang-barang mereka.
Dan ini adalah jenis hal, juga, bahwa orang-orang
di internet yang adalah otodidak, mungkin
belajar lebih jarang, karena Anda tidak selalu datang di atasnya
sebanyak, karena Anda bisa mendapatkan database dan berjalan,
tetapi jika Anda sudah membaca pada tutorial atau telah
diberitahu tentang normalisasi basis data dan pengindeksan dan kinerja,
ini adalah hal-hal yang yang akan menyakiti Anda.
Dan Anda mungkin berpikir, atau insinyur buruk mungkin mengatakan, oh, baik, membayar kita lebih baik
untuk database yang lebih besar atau database lebih cepat
atau hanya membuang uang di ini, skala vertikal, tidak selalu begitu.
Jika Anda pergi in-- dan Anda dapat pergi di setelah fact-- dan menambahkan indeks,
dan mungkin butuh beberapa jam untuk database untuk membangun data baru
struktur yang saya singgung sebelumnya, Anda masih bisa memperbaiki ini setelah fakta,
bahwa ini adalah di mana Anda mulai untuk membedakan
desainer yang baik dari yang buruk desainer, bukan hanya estetis,
tapi kinerja-bijaksana juga.
Ada pertanyaan?
Tidak?
Jadi untuk NoSQL, yang merupakan jenis lain database yang saya singgung sebelumnya,
Anda tidak memiliki baris dan kolom.
Sebaliknya, Anda akan memiliki sesuatu yang terlihat sedikit lebih seperti ini.
Aku akan menggunakan sintaks umum.
kurung kurawal terjadi digunakan di sini cukup banyak.
Anda mungkin memiliki sesuatu seperti nama pertama adalah David,
Anda mungkin memiliki lalu Nama Malan, kutipan,
Anda mungkin memiliki ID is-- permisi, whoops-- ID adalah 1,
email adalah malan@harvard.edu, dan saya tidak akan repot-repot mengetik sisanya, dan kemudian
beberapa hal lain.
>> Dengan kata lain, ini adalah representasi tekstual
dari apa yang kita umumnya akan memanggil sebuah objek dalam sebuah program komputer.
Dan objek umumnya hanya koleksi pasangan nilai kunci.
Jadi sekali lagi, tema yang berulang ini.
Kami melihat pasangan nilai kunci dalam HTML, kita melihat pasangan nilai kunci sekarang
dalam konteks database, dan kami melihat pasangan nilai kunci dalam konteks
dari, saya pikir, bahasa sebelumnya hari ini.
Terus datang.
Dan memang, itu benar-benar data apa bermuara,
data dan metadata, atau nilai-nilai dan kunci masing-masing.
>> Jadi non-relasional Database, sesuatu berdasarkan
pada objek, di mana Anda hanya menggumpal segala sesuatu bersama-sama dan meletakkannya
ke dalam memori, umumnya akan digambarkan sebagai, atau memikirkan, karena hal ini.
Dan aku akan meninggalkan sekarang sebagai semacam pendekatan alternatif.
Dan satu belum tentu lebih baik dari yang lain.
Bahkan, sangat banyak dalam mode hari ini adalah sistem database
seperti MongoDB dan Redis dan beberapa alat-alat seperti lainnya, tersedia secara bebas,
tetapi mereka semakin en vogue.
Sebagian karena mereka menawarkan tambahan fitur lebih pendekatan tabel,
tetapi juga karena mereka sedikit lebih mudah untuk digunakan,
karena Anda tidak harus berpikir keras tentang banyak keputusan desain ini.
Jadi plus dan minus.
Jadi menyadari ada pilihan melampaui apa yang kita hanya menghabiskan waktu di.
>> Jadi mari kita lakukan ini.
Mari transisi sedikit kembali sekarang untuk pemrograman web,
sehingga kita semacam menyimpulkan hari ini dengan sesuatu
itu adalah tangan-sedikit, mengisi di beberapa kesenjangan dari kemarin.
Biarkan aku pergi ke pertama ini.
Jadi ingat kemarin bahwa kami memiliki beberapa kanonik HTML
halaman yang awalnya, hanya HTML, dan kemudian yang kedua memiliki CSS,
cascading style sheet.
Ini adalah tag baru yang kita tidak lihat kemarin, atau memikirkan,
disebut-tag script.
>> Ternyata Anda benar-benar dapat menanamkan bahasa yang disebut JavaScript di web Anda
Halaman dan membuat web Anda halaman melakukan sesuatu.
Jadi apa yang saya maksud dengan itu?
Nah, biarkan aku pergi ke depan dan hanya meminjam kode ini sejenak.
Aku akan pergi ke Cloud9, tidak perlu untuk pergi ke sana sendiri dulu,
dan aku akan memanggil alert.HTML ini.
Aku akan menyisipkan dalam file saya di sini.
Dan hanya untuk mengklarifikasi apa yang telah kulakukan, biarkan saya pergi ke alamat ini dan pergi untuk mengingatkan,
dan Anda melihat Hello World.
>> Tapi ini adalah jenis underwhelming.
aku ingin melakukan sesuatu beda tipis.
Jadi aku akan benar-benar melakukan hal ini.
Aku akan pergi di sini e, dan di antara tag naskah saya,
mengatakan alert ( 'hello, dunia'); sehingga pemberitahuan itu sedikit ceroboh, tapi aku punya HTML,
dalam yang merupakan bahasa yang disebut JavaScript,
dan ini adalah apa yang disebut fungsi panggilan atau panggilan prosedur.
Ini adalah kata kerja, secara harfiah, dalam hal ini, dan saya memohon fungsi kode
bahwa orang lain menulis.
>> Jadi fungsi yang merupakan peringatan, jadi mari kita pergi ke halaman ini
sekarang dan klik ulang, dan sekarang Anda melihat sedikit interaktivitas.
Ini semacam sekolah tua dan jelek.
Ini semacam mengingatkan Anda tentang pop-up, mungkin, dari tadi
tapi itu melakukan sesuatu yang sedikit lebih terprogram.
>> Jadi lebih dari itu, mari kita lakukan sesuatu yang lebih menarik.
Biarkan aku pergi di sini dan menyingkirkan ini.
Dan aku akan pergi ke depan dan membuat formulir seperti yang kita lakukan kemarin.
Sebenarnya, Anda tahu apa?
Aku akan pergi ke google.html, yang kita
mulai kemarin, yang tampak seperti ini, melalui yang kita mencari kucing
Tapi perhatikan ada semacam bug dalam versi saat ini.
Ia bekerja untuk kucing, tapi anggaplah Saya tidak bekerja sama dan saya ketik apa-apa,
dan saya hanya klik submit.
Itu semacam perilaku aneh.
Membawa saya ke Google nyata, tidak memberi saya pesan kesalahan.
Saya ingin memberitahu pengguna Anda perlu memberi kita nilai.
>> Jadi bagaimana mungkin kita melakukan ini?
Baik biarkan aku kembali ke Cloud9 dan biarkan aku pergi ke bagian atas halaman saya
dan menambahkan tag script seperti ini, di mana Aku akan mengetik beberapa kode JavaScript.
Dan aku akan melakukan hal berikut.
Jika (document.getelementByID-- dan recall yang kita bicarakan itu sebelumnya,
fungsi itu.
Apa ID yang ingin saya dapatkan?
Saya ingin mendapatkan q, dan aku akan katakanlah sama apa-apa, seperti ini--
benar-benar membiarkan saya menggunakan tanda kutip ganda hanya untuk consistency-- sama apa-apa,
kemudian alert ( "Silahkan ketik query") di sini.
>> Jadi saya memiliki apa yang tampaknya menjadi sesuatu seperti kondisi.
Kami telah melihat ide umum ini di Scratch.
Ini seperti salah satu teka-teki yang potongan yang tampak seperti ini.
Dan apa yang saya katakan?
Nah, di sini, melihat aku akan melakukan hal berikut.
Aku akan memberikan formulir ini bidang tidak hanya nama q, yang
adalah apa yang diteruskan ke Google, tapi aku akan memberikan pengenal lokal,
juga disebut q.
Tapi aku bisa menelepon apa ini saya inginkan, aku hanya akan tetap sederhana
dan juga menyebutnya q, hanya untuk kesederhanaan.
>> Dan sekarang aku akan melakukan sesuatu yang sedikit lebih.
Pada kolom formulir di sini, aku akan menambahkan apa yang disebut sebuah event handler.
Pada mengirimkan, saya ingin menelepon fungsi yang disebut validasi.
Ini belum ada, ini kata, atau validate kata kerja ini,
karena apa yang akan saya lakukan di sini sekarang adalah menambahkan beberapa kode.
>> Aku akan mengatakan fungsi validasi.
Aku akan indent ini dan tambahkan lagi penjepit keriting di sini dan satu lagi di sini.
Pertimbangkan apa ini sekarang lakukan.
Saya memiliki sekarang-- berpikir ini sebagai diciptakan saya potongan puzzle sendiri yang sebelumnya tidak
ada, dan saya sudah menelepon teka-teki ini potongan potongan memvalidasi puzzle.
tujuannya dalam hidup adalah untuk mengeksekusi empat baris kode di dalamnya.
>> Jika document.getElementById sehingga secara konseptual,
yang akan masuk ke elemen, elemen HTML yang unik
Ide hanya q, dan kemudian meskipun sintaks terlihat sedikit aneh,
yang sama sama hanya berarti sederajat.
Jadi itu berarti jika elemen dengan identifier unik q, ketika mendapat,
tidak memiliki nilai, itu hanya sama kutipan tanda kutip, tidak ada di sana,
lalu apa yang ingin saya lakukan?
Saya ingin berteriak pada pengguna.
>> Dan kami tidak akan pergi detail di sini.
Aku akan kembali palsu.
Itu adalah kesalahan.
Lain, aku akan kembali benar.
Jadi baik itu bekerja atau tidak.
Salah atau benar.
Dan jika saya tidak melakukan kesalahan apapun, biarkan aku menyimpan ini dan kembali ini.
Dan biarkan aku cek hanya dua kali lipat Aku tidak, pada kenyataannya, membuat kesalahan ketik,
jadi saya tidak mempermalukan diri sendiri.
Mari kita lihat apakah ini bekerja.
>> Jadi sekarang aku akan mengetik kucing.
Masih bekerja, atau setengah karya, setidaknya.
Sekarang mari saya reload, dan sekarang biarkan saya coba kirimkan tanpa mengetik
anything-- sialan, itu pecah.
Sebentar.
Mari saya membuka konsol, [Tidak terdengar] log, kembali halaman tersebut.
Biarkan aku mencoba ini lagi.
Oh, sialan.
Saya lupa.
Saya salah ketik.
Aku ingat apa itu.
.nilai.
Saya bermaksud mengatakan jika nilai elemen ID yang adalah q
sama itu, maka berteriak pada pengguna.
>> Jadi sekarang biarkan aku menahan napas lagi.
Kita mulai.
Di sana kami pergi.
Ketik query.
Jadi itu tidak membiarkan saya melalui.
Aku bisa menjadi semacam main-main dengan ini, dan bukannya memeriksa nilai,
Saya dapat mengatakan sesuatu seperti, tidak lagi mencari kucing,
dan sekarang kita hanya bisa lebih main-main membiarkan pencarian pengguna untuk anjing jika dia
ingin, atau jika aku pergi di sini dan mencari kucing, sekarang saya tidak bisa.
>> Jadi apa takeaway di sini?
Jadi satu, kita sudah diperkenalkan ke dunia kita dari HTML dan CSS,
fungsi pemrograman.
Aku benar-benar bisa sekarang membuat keputusan dalam kode.
Sebelumnya, semua saya bisa lakukan adalah mark up konten tekstual atau konten grafis
dan kirim apa yang harus dicari seperti dan di mana untuk ditampilkan.
Sekarang saya benar-benar dapat meminta pertanyaan dari halaman web
dan membuat keputusan berdasarkan di atasnya, dan meminta pengguna
jika saya harus berteriak dia.
>> Jadi mari kita mencoba sesuatu kita sendiri dengan ini.
Silakan, biarkan aku membuka slide berikutnya di sini, dan hanya menunjukkan satu hal.
Sama seperti dengan CSS, kita bisa faktor luar kode JavaScript untuk file terpisah,
Anda dapat melakukan hal yang sama dengan JavaScript seperti CSS.
Dan Anda menggunakan menggunakan sumber atribut dari tag script.
Tapi kita tidak akan mempersulit hal-hal untuk saat ini.
Sebaliknya, jika Anda bisa pergi ke tidak halaman ini,
tapi-- biarkan aku bergerak ini di Comes urutan pergi ke, jika Anda bisa, halaman ini di sini.
URL ini di sini.
Ini di slide hari ini.
Anda mungkin harus ulang karena Saya telah menambahkan beberapa hal.
>> Tapi pergi ke sana di mana beberapa teka-teki menunggu.
Dan ini akan memberikan kami kesempatan, dalam konteks yang sedikit lebih menyenangkan,
untuk mencoba-coba dengan beberapa JavaScript.
Dan ketika Anda sampai di sana, Saya akan menjelaskan apa yang menanti.
Dapatkan hijau.
Set biru.
Set hijau, set merah.
Ups.
Maaf.
>> Ini adalah sejauh mana kita dokumentasi untuk tantangan ini.
Dan ini akan bekerja sebagai berikut.
Jadi apa yang Anda miliki di ini Halaman adalah sejumlah
teka-teki gambar dengan seorang teman di Stanford University.
Jadi apa yang Anda lihat di sini adalah hampir jenis salah satu teka-teki mata sihir,
tetapi jika Anda hanya menatap itu, tidak ada yang akan pop keluar pada Anda.
Sebaliknya, sesuatu yang tersembunyi dalam gambar ini.
Dan itu tersembunyi dengan cara berikut.
Gambar, seperti yang Anda ketahui, bisa terdiri dari hanya tiga warna.
Beberapa merah, beberapa biru, dan beberapa hijau.
Dan kita bisa membuat semua warna dalam pelangi
dengan mencampur tiga warna entah bagaimana.
>> Jadi ini terlihat sebagian besar hijau dan biru, tetapi sebagai Nick mengatakan di sini,
gambar puzzle besi ini teka-teki.
Ini berisi gambar sesuatu yang terkenal, namun,
gambar telah terdistorsi.
Objek yang terkenal adalah dalam nilai-nilai merah.
nilai-nilai Namun, merah semuanya telah dibagi oleh 10.
Jadi mereka terlalu kecil dengan faktor 10.
Jadi dengan kata lain, Nick mengambil gambar asli,
dan ia desaturated semua merah dari itu,
menurunkan jumlah warna merah tinta, jika Anda mau, di dalamnya.
>> Nilai-nilai biru dan hijau semua hanya berarti,
nilai acak, alias noise dirancang untuk mengaburkan gambar nyata.
Jadi apa Nick lakukan adalah dia melunakkan merah dan kemudian
dia hanya melemparkan acak jumlah biru dan hijau
di gambar untuk jenis jelas apa sebenarnya masih ada.
Anda harus membatalkan distorsi untuk mengungkapkan gambar.
Pertama, mengatur semua nilai-nilai biru dan hijau ke nol untuk mendapatkan mereka keluar dari jalan,
dan melihat hasilnya. Kemudian kalikan setiap nilai merah oleh 10,
skala kembali ke sekitar nilai akhir.
Apa objek terkenal?
>> Jadi Anda semua memiliki persegi panjang ini di browser Anda sekarang.
Dan perhatikan bahwa ada beberapa Kode pemula, sehingga untuk berbicara.
Ini adalah kode JavaScript yang Nick telah ditulis untuk Anda.
Dan perhatikan bahwa ada garis di tengah yang
dimulai dengan garis miring slash, itu apa yang umumnya disebut komentar.
Ini berarti itu adalah ungkapan untuk programmer yang tidak memiliki arti fungsional.
Itu hanya isyarat visual untuk manusia.
>> Jadi Anda dapat pergi ke depan dan menghapus hanya garis,
dan menjadi super hati-hati untuk tidak menghapus atau mengubah apa pun.
Dan biarkan aku hanya memandu Anda melalui apa kode ini tidak dan saya akan meninggalkannya
Anda untuk mencari tahu gambar rahasia.
baris pertama ini di sini bahwa saya baru saja disorot memberi Anda berikut ini.
Di sisi kiri, Anda memiliki apa yang disebut
variabel yang Nick memiliki sewenang-wenang, tetapi cukup disebut im untuk gambar.
Di sisi kanan itu sama tanda,
dia mengatakan memberi saya baru kutipan, tanda kutip "gambar sederhana".
>> gambar sederhana, dalam konteks ini adalah apa yang disebut kelas, baik,
itu jenis seperti class-- sebuah teknis prototype-- tapi benar-benar,
ini memberikan saya sebuah objek baru, isi yang file,
besi-puzzle.png.
Dengan kata lain, Nick telah menciptakan Gagasan ini gambar sederhana
sehingga kita dapat, pedagogis tujuan, bermain dengan gambar
dan mengubah merah, hijau, dan biru nilai-nilai.
>> Dan bagaimana kita melakukan itu?
Ini sintaks agak samar di sini adalah jenis seperti blok ulangi
bahwa beberapa dari Anda melihat di Scratch sebelumnya hari ini, di mana Anda dapat mengulangi 10 kali.
Dalam hal ini, Nick belum hardcoded nomor seperti 10.
Sebaliknya ia mengatakan, inisialisasi variabel yang disebut x 0,
memeriksa apakah x kurang dari lebar gambar.
>> Dan untuk lebih tepat, citra adalah variabel, dot berarti masuk ke dalam itu
dan lebarnya, dan kemudian paren terbuka, tertutup
paren hanya cara seorang programmer mengatakan ini adalah fungsi.
Ini adalah prosedur.
Ini adalah fungsi orang lain menulis.
Menggunakannya dan memberi saya kembali jawaban.
Dan kemudian x ++ adalah cara mewah mengatakan, setelah Anda melakukan ini sekali,
increment x oleh 1.
Dengan kata lain, ini adalah cara programmer
merangsang loop yang akan iterate atas
semua kolom dalam sebuah gambar.
>> Sebuah gambar hanya grid titik, baris dan kolom dari titik.
Ini adalah cara iterasi lebih dari semua kolom tersebut.
Dan di dalam, Sementara itu, kita iterasi
atas ketinggian, di sini dan di sini dan di sini.
Jadi ini hanyalah sebuah cara traipsing, hampir seperti mesin ketik sekolah tua,
untuk hanya pergi selama seluruh gambar iteratif.
Bahkan itu tidak cukup sepenuhnya jelas, hanya mengambil iman untuk saat ini,
bahwa tiga baris kode bersama-sama adalah
akan memungkinkan Anda untuk iteratif melihat pada setiap pixel, setiap titik dalam gambar.
>> Apa pixel?
Nah, untuk menjadi jelas, jika kita melihat di asli dan memperbesar,
jika Anda benar-benar menempatkan mata Anda ke layar komputer, itu
hanya sejumlah titik, beberapa ribu titik dikemas bersama-sama ada.
Dan jadi apa yang Anda akan lakukan?
Masing-masing dari titik-titik, definisi akhir,
adalah hasil dari apa yang umumnya disebut RGB, merah, hijau, biru, yang
lagi, dapat dikombinasikan untuk memberikan sejumlah warna.
>> Bahkan, jika Anda ingat dari bertahun-tahun yang lalu,
proyektor layar seperti hal-hal ini digunakan untuk memiliki tidak satu lensa tapi tiga.
Salah satu dari mereka memuntahkan lampu merah, salah satu mereka meludahkan lampu hijau, salah satu dari mereka
memuntahkan cahaya biru.
Dan jika Anda berada di sebuah sekolah menengah seperti aku di mana mereka tidak pernah
benar sejajar, Anda selalu menonton film sejarah
yang sedikit menyimpang, karena tiga warna tidak
menggabungkan benar.
>> Tapi ternyata bahwa setiap nilai-nilai ini merah, hijau, dan biru,
dapat memiliki nomor yang terkait dengan mereka.
Misalnya, 0 untuk merah berarti tidak ada merah, 0 untuk hijau berarti tidak ada hijau,
dan 0 untuk biru berarti tidak ada biru.
Jadi jika Anda tidak memiliki merah, ada hijau, dan tidak ada biru, warna apa yang Anda miliki?
>> AUDIENCE: [tidak terdengar]
DAVID Malan: Anda akan harap begitu, itu putih.
Sayangnya, ini operates-- maaf?
>> AUDIENCE: [tidak terdengar]
DAVID Malan: Jadi Anda benar-benar memiliki hitam, dalam hal ini.
Jadi jika Anda memiliki satu pun dari ini warna dihidupkan, Anda memiliki hitam.
Namun, jika Anda memiliki, katakanlah banyak dari mereka, seperti banyak merah, 255 itu,
banyak hijau, dan banyak biru, yang putih.
Jadi ini adalah dua ekstrem.
Jadi dengan logika ini, jika saya memiliki banyak merah dan tidak ada hijau dan tidak ada biru,
warna apa itu?
AUDIENCE: [tidak terdengar]
DAVID Malan: Benar, jelas.
Dan kemudian ada merah, banyak hijau, ada biru, dan kemudian
jika Anda have-- baik, kita hanya akan menyelesaikan itu, hanya karena, tapi ini, tentu saja,
sekarang, biru.
Dan sekarang Anda dapat menggabungkan warna-warna ini.
Sekarang sebagai samping, jika salah satu dari Anda memiliki pernah dilakukan beberapa desain website yang sebenarnya,
Anda mungkin benar-benar melihat simbol seperti ini.
FFF-- dan benar-benar, itu bahkan mungkin yang tidak.
Ini FFFFFF.
>> Ada yang pernah melihat F dan E dan A through-- sehingga ternyata,
kita berbicara kemarin tentang desimal, dan hari ini, jenis sekitar desimal.
Hari ini kita berbicara tentang biner.
Ternyata, heksadesimal adalah sangat sistem dasar umum untuk digunakan dalam komputasi.
Biner adalah dua, desimal adalah 10, hex adalah 16.
Dan ternyata, bagaimana Anda menghitung dalam heksadesimal?
Nol, satu, dua, tiga, empat, lima, enam, tujuh, delapan,
sembilan, apa yang Anda gunakan setelah sembilan?
Apa nomor berikutnya?
Kami sudah digunakan nol.
Aku butuh 16 ini.
Nol, satu, dua, tiga, empat, lima, enam, tujuh, delapan, sembilan,
Anda perlu beberapa konvensi sewenang-wenang.
>> Dan apa yang manusia memutuskan beberapa waktu lalu bahwa setelah sembilan datang surat
A dan kemudian B dan kemudian C. Jadi cara Anda menghitung dalam heksadesimal
adalah nol, satu, dua, tiga, empat, lima, enam, tujuh, delapan, sembilan,
A, B, C, D, E, F, dan yang akan menghitung Anda semua jalan, ternyata, sampai 15.
Jadi nol sampai 15 adalah nol melalui F. Sekarang kenapa begitu signifikan?
Nah, bila Anda memiliki dua F, itulah bagaimana Anda mengekspresikan 255.
>> Begitu lama cerita pendek, di dunia Photoshop,
bahwa perangkat lunak desain grafis, di dunia pengembangan web,
di mana Anda memiliki banyak warna, tentu saja, untuk bermain dengan,
sering programmer akan mengungkapkan mereka dalam heksadesimal,
hanya karena cenderung untuk menjadi sedikit lebih sederhana.
Meskipun pada pandangan pertama itu jauh lebih kompleks.
>> Jadi dalam hal apapun, ini penting karena Nick di Stanford
telah memberi kita enam buah fungsi Anda, programmer pemula,
sekarang akan memiliki kemampuan untuk menggunakan.
Dibangun ke web ini Halaman ini enam fungsi,
enam prosedur yang Nick menulis.
Tiga dari mereka akan mendapatkan nomor, merah, hijau, atau nilai biru.
Tiga dari mereka akan menetapkan nilai tersebut.
Dan garis bawah ini hanya placeholder,
sehingga Anda perlu tahu apa yang berada.
>> Jadi dengan tiga fungsi tersebut, yang pertama dari hal-hal ini
akan menjadi x-koordinat, dan kedua hal ini
akan menjadi y-koordinat.
Dengan kata lain, yang titik, yang pixel Anda ingin mendapatkan hijau,
mendapatkan biru, dapatkan merah.
Dan kemudian di sini, ini akan menjadi x, ini akan menjadi nilai y,
dan ini akan menjadi nomor.
Jadi mari kita lakukan pertama garis ini bersama-sama
dan kemudian aku akan pergi kepada Anda mencoba untuk menyimpulkan sisanya.
Jadi sesuai petunjuk di halaman ini, kita perlu
untuk meningkatkan merah dengan faktor 10, dan kita perlu menghapus hijau
dan menghapus biru.
Mari kita mulai dengan skenario kedua.
Jadi jika saya ingin, dan aku akan indent dengan menggunakan beberapa ruang,
jika saya ingin mengatur merah, hijau, atau nilai biru,
Aku akan melakukan hal berikut.
>> Gambar, im.setBlue, dan kemudian berdasarkan instruksi saya di sini,
apa tiga hal yang harus saya ketik dalam kurung sekarang?
Aku butuh x nilai, y nilai, dan apa jumlah
yang harus saya masukkan di sini jika saya ingin menyingkirkan dari biru, berdasarkan cerita ini di sini?
Hanya nol.
Jika saya ingin tidak ada biru, aku hanya akan mengubahnya ke nol.
>> Sekarang mari kita rekap apa ini lakukan.
Saya telah di sini di atas ini baris kedua dan ketiga,
Saya mengaku dua loop, loop bersarang, jika Anda
akan, yang akan memiliki efek maju dari kiri ke kanan,
atas ke bawah selama semua x nilai-nilai dan semua nilai-nilai y.
Karena sekali lagi, sebuah gambar hanya grid baris dan kolom.
Jadi ini akan mendapatkan menyingkirkan semua biru.
Biarkan aku meninggalkan di baris berikutnya untuk Anda.
Bagaimana cara menyingkirkan semua hijau?
>> AUDIENCE: [tidak terdengar]
>> DAVID Malan: Nice.
>> AUDIENCE: [tidak terdengar]
>> DAVID Malan: Nice.
Dan aku akan tampilannya keluar, dan hanya mengambil peduli itu Anda tidak melakukan kesalahan ketik.
Dan jika Anda merasa nyaman dengan apa yang telah Anda lakukan,
pergi ke depan dan klik tombol Jalankan / Simpan dan lihat apa yang Anda dapatkan.
Dan lagi, kami telah membuat hanya tiga perubahan.
Kami dihapus yang pertama komentar dan menggantinya
dengan dua baris kode.
Dan itu OK jika Anda perlu menekan Run / tombol Save beberapa kali
untuk memperbaiki sesuatu.
>> Dan saya juga memperbesar saya kode sehingga Anda dapat menuliskan.
Baik.
Jadi saya melihat Andrew memiliki apa tampaknya menjadi kesalahan.
Dia hanya punya hitam besar persegi panjang di layar nya.
Apakah orang lain memiliki persegi panjang hitam besar?
>> AUDIENCE: Ya.
>> DAVID Malan: Big persegi panjang hitam?
OK, jadi mari kita berpikir tentang apa artinya ini.
Kami mengatakan bahwa nol, nol, nol, sehingga tidak ada hijau, ada merah, ada biru,
akan memberikan Anda hitam.
Dan ternyata sebagian besar laptop kami
hanya tidak memiliki cukup kesetiaan.
Anda tidak bisa mengatakan ada sebenarnya sesuatu di sana.
Dan jika Anda jenis mungkin bersandar layar depan dan belakang,
mungkin Anda melihat sedikit sesuatu di sana?
Mungkin, jenis, jenis?
Ini tidak sempurna hitam.
>> AUDIENCE: [tidak terdengar]
>> DAVID Malan: Spoiler!
Ada beberapa merah di sana, tapi ingat dari spesifikasi
masalah, Nick kencang ke bawah.
Dia desaturated agak, tapi tidak semua jalan ke nol.
Jadi jika kita ingin memperbesar jumlah merah, biarkan aku mengusulkan trik ini.
Biarkan aku memperbesar layar saya.
Dan biarkan aku pergi ke depan dan mengatakan Jumlah sama im.getRed (x, y).
>> baris kode ini memberikan saya sesuatu yang disebut variabel.
Saya memiliki sewenang-wenang, tapi, bisa dibilang, cukup disebut variabel saya apa,
tampaknya?
Jumlah.
Jumlah hanya.
Aku bisa menyebutnya apapun yang saya inginkan, tapi aku
menggunakan fungsi lain ini yang saya jelaskan sebelumnya
untuk mendapatkan jumlah merah di x koma y.
Mengapa saya melakukan itu?
Apa yang Anda ingin lakukan di sini?
Anda perlu add--
AUDIENCE: [tidak terdengar]
DAVID Malan: Ya, mungkin kalikan dengan 10.
Dan jika Anda tidak tahu ini, aku akan pergi ke depan dan melakukan hal ini.
Aku akan pergi ke depan dan katakanlah, saya ingin jumlah warna merah
Saya ingin menjadi apa pun adalah pada merah, kali 10,
dan bintang, tanda bintang pada Anda keyboard the-- tidak menggunakan x.
Gunakan bintang.
Itulah cara Anda kalikan hal dalam bahasa pemrograman yang paling.
>> Jadi menurut intuisi Kareem, disimpan dalam variabel ini disebut jumlah,
adalah berapa banyak merah saya ingin di lokasi xy.
Bagaimana, sekarang, apakah saya membuat Pixel memiliki nomor itu?
Anda sudah melakukan hal ini sebelumnya.
Anda mengatur hijau dan biru untuk tidak ada nilai, ke nol.
AUDIENCE: [tidak terdengar]
DAVID Malan: Ya, baik Anda tidak ingin 10.
Anda sudah melakukan matematika di sini.
Jadi kita mendapatkan nilai merah, yang merupakan angka yang rendah, mungkin.
Kami mengalikan oleh 10.
Apa yang ingin Anda lakukan dengan jumlah variabel sekarang?
>> AUDIENCE: [tidak terdengar]
>> DAVID Malan: Nice.
Jadi im.set-- apa?
>> AUDIENCE: setRed.
>> DAVID Malan: setRed, di lokasi xy.
Ya.
Dan hanya jumlah.
Dengan kata lain, variabel merupakan tempat sementara
Anda dapat menempatkan apa pun yang Anda inginkan dalam.
Kami kebetulan menempatkan nomor di dalamnya, pada saat ini.
Kami telah dikalikan dengan 10 untuk membuatnya lebih besar.
Dan sekarang aku mengganti variabel yang sebagai argumen ketiga, atau masukan
untuk mengatur merah.
Dan sehingga setelah Anda menyelesaikan itu, dan perhatikan
dari semi-titik dua dan tanda kurung.
>> Cobalah dan klik menjalankan / simpan lagi, dan Anda
harus melihat, ajaib, apa yang benar-benar sana. [? Arwa,?] Apa yang ada?
Menara Eiffel di penuh merah, tidak cukup gelap.
harus lebih jelas sekarang, ya?
BAIK.
Dan Andrew, kotak tidak lebih hitam?
AUDIENCE: [tidak terdengar]
DAVID Malan: Baiklah.
Jadi saya akan terus ini di layar.
Jika Anda ingin bermain dengan ini kemudian, saya akan menciptakan ini untuk Anda.
Tapi kode ini di sini melakukan hal itu.
Mengapa kita tidak melakukan satu lainnya.
Mari saya gulir ke bawah sedikit.
>> Jadi dalam hal ini, proyektor tidak benar-benar melakukannya keadilan.
Tapi pada layar Anda, Anda mungkin memiliki kotak sangat merah dan sangat hitam.
Ini, juga, adalah sebuah teka-teki yang menunjukkan sesuatu yang terkenal.
Namun, gambar telah terdistorsi.
Gambar benar, kali ini, adalah dalam nilai-nilai biru dan hijau.
Namun, mereka semua sudah dibagi 20 sehingga nilai-nilai yang sangat kecil.
Nilai-nilai merah hanya nomor acak, kebisingan.
Urungkan distorsi untuk mengungkapkan gambar yang benar.
>> Jadi Nick kemudian memberitahu Anda apa yang harus dilakukan.
Menetapkan nilai-nilai merah ke nol, dan maka jangan merusak apa itu.
Kemudian kalikan biru dan nilai-nilai hijau sebesar 20.
Sehingga hampir program yang sama seperti sebelumnya,
tapi kau membalikkan proses.
Dan Aku akan menaruh kode saya dari sebelum pada layar dalam kasus
Anda ingin merujuk kembali ke sana atau bermain lebih lanjut dengan yang satu.
Biarkan aku memperbesar itu.
Tapi memecahkan gambar tembaga puzzle, nomor dua.
>> AUDIENCE: [tidak terdengar]
>> DAVID Malan: OK, jadi ini salah satu aku tidak akan memberikan banyak petunjuk.
Jadi saya would-- oh, mari kita lihat, Anda memiliki kesalahan ketik di sini.
Jadi ingat, ini di sini sebenarnya perlu untuk pergi ke sana.
Jadi apa yang saya akan mengusulkan, jika Anda ingin fokus pada satu ini, ada jawabannya.
Jika Anda ingin menuliskan bahwa, bahwa harus mendapatkan satu kerja pertama.
Dan kemudian Anda dapat menggunakannya sebagai inspirasi untuk yang kedua.
Bagus.
Baik.
>> Dan bagi yang penasaran, ini adalah contoh sederhana
dari ilmu atau seni disebut steganografi,
seni menyembunyikan informasi dalam gambar.
Biasanya, gambar mungkin watermark yang sangat terang-terangan
dengan logo di bagian bawah sudut, tapi jelas, Anda
bisa jauh lebih canggih tentang hal itu dan benar-benar
menyembunyikan gambar lain di Images entah bagaimana dengan teknik ini.
>> Ambil 30 detik, dan kemudian kami akan setidaknya mengumumkan apa yang harus Anda lihat.
Dan aku akan meninggalkan ketiga satu sebagai latihan di rumah,
jika Anda ingin lebih dari menantang akhir pekan ini.
Dan saya pikir Andrew mungkin mendapatkan itu pertama.
Apa gambar kedua, Andrew?
>> AUDIENCE: Patung Liberty.
>> DAVID Malan: Patung Liberty akan menjadi jawaban kali ini.
Jadi sekali lagi, hanya beberapa sederhana contoh, tujuan yang
adalah untuk memberikan rasa bagaimana kami telah diterjemahkan Scratch bergambar
blok untuk lebih menjengkelkan dan lebih kode rumit, tetapi semua ide
masih persis sama, meskipun dengan pendahuluan
sekarang dari gagasan variabel, menjadi mampu menyimpan sesuatu sementara.
>> Mari kita lakukan satu lagi tangan-on, hanya untuk sekarang menghubungkan titik-titik
untuk sesuatu yang sedikit lebih dunia nyata.
Ketika Anda siap, jika Anda bisa pergi ke URL ini di layar.
Itu juga dalam copy dari slide, developers.google.com/maps~~V.
Mari kita benar-benar melakukan sesuatu nyata, sehingga untuk berbicara, di web
menggunakan Google Maps API, atau antarmuka pemrograman aplikasi,
dengan cara sebagai berikut.
>> Google, seperti banyak perusahaan, menyediakan banyak fungsi gratis
yang dapat Anda gunakan untuk membangun aplikasi menarik sendiri.
Bahkan, jika Anda pernah menggunakan Uber untuk mendapatkan taksi atau mobil,
Anda mungkin tahu bahwa Uber memiliki sebuah peta dan itu menunjukkan mobil di atasnya.
Artinya, sebaik yang saya bisa memberitahu, Google Maps API.
Mereka benar-benar menggunakan peta Google, tapi Uber bukan perusahaan pemetaan,
atau akan itu menjadi masalah sangat menarik
untuk memecahkan di atas mereka masalah layanan mobil.
Dan jadi mereka berdiri, lagi, di bahu
orang lain, Google dalam hal ini.
Jadi mereka menggunakan peta Google, tetapi mereka sendiri layanan mobil dan fitur seperti lainnya.
>> Jadi kita akan memanfaatkan ini melakukan hal berikut.
Dan jika saya sudah terlalu cepat, panggil aku lebih dalam sekejap.
Senang untuk rekap beberapa hal gambar.
Anda harus melihat diri Anda di halaman seperti ini.
Begitu baik Google, dan mereka di antara yang terbaik
menyediakan tidak hanya API, tapi API gratis yang Anda
bisa bermain dengan atau menggunakan secara komersial.
Mereka mulai pengisian Anda jika penggunaan Anda tinggi, tapi aku pergi ke depan di muka
dan mendaftar kami untuk mendapatkan akun gratis itu, mudah-mudahan, 10 komputer
tidak akan mendiskualifikasi kami untuk tiba-tiba.
Jadi mudah-mudahan ini Demonstrasi akan bekerja.
>> Dan melihat bahwa mereka memiliki API untuk Android, iOS, layanan web, dan web,
apa pun itu.
Mari kita fokus pada web.
Jadi klik kotak merah muda, web, dan bahwa akan membawa Anda, mudah-mudahan, ke halaman
sini.
Dan mereka punya sejumlah API.
Dan itu bisa menjadi sedikit luar biasa pada awalnya,
tapi saya akan mengarahkan kita melalui apa yang kita inginkan.
>> Di kiri atas adalah Google Maps JavaScript API, API JavaScript.
Jadi silakan klik satu itu.
Dan yang akan membawa Anda sekarang ke berikut halaman, demo dan contoh kode.
Biarkan aku tampilannya sini.
Dan biarkan aku mendapatkan kita to-- gulir ke bawah untuk mana dikatakan mulai cepat langkah.
layar Anda akan terlihat seperti tambang.
>> Dan ada dua langkah, dapatkan kunci dan mulai berkembang.
Saya sudah melakukan langkah satu untuk kami, mendapatkan apa yang disebut kunci.
Dan ini adalah ide umum.
Kunci API umumnya hanya nomor acak besar atau tali
Anda seharusnya untuk paste ke kode Anda,
sehingga Google tahu siapa Anda ketika Anda menggunakan layanan mereka, API mereka.
Tidak berarti kami yang dikenakan biaya apa pun.
Dan sekarang, klik, bukannya satu, klik mulai berkembang.
Jika Anda hanya bisa melambaikan saya lebih jika tidak yakin di mana kita berada.
>> Jadi kami hanya akan menggores permukaan, di sini tapi apa
Saya pikir akan menarik adalah untuk benar-benar memiliki kita semua,
menggunakan Cloud9 dalam satu jendela dan tutorial ini di jendela lain,
memungkinkan benar-benar mendapatkan kita sendiri aplikasi dan berjalan
yang embeds kustom Google peta di halaman web kita sendiri,
dan kemudian menambahkan satu atau dua fitur.
Tapi kita hanya akan menggores permukaan apa yang bisa kita lakukan.
>> Jadi hanya sebuah pemeriksaan cepat.
Apakah semua orang di halaman ini, API Google Maps JavaScript?
Harus mengatakan memulai.
Kami tidak akan pergi melalui semuanya dengan cara apapun.
OK, di tab lain, jika Anda tidak memilikinya terbuka, jangan masuk ke Cloud9
dan mendapatkan diri Anda hanya tab baru, pada akhirnya.
Jadi sekali lagi, c9.io dari kemarin, c9.io, dan hanya membuat file baru.
Dan pergi ke depan dan panggilan itu apa pun yang Anda inginkan.
Aku menelepon map.html tambang.
Sebut saja apa pun berakhir di html.
Dan Anda harus kasar keberadaan saya dalam proses ini
hanya dengan cepat berkedip dalam kosong tab disebut sesuatu seperti map.html.
Atau file, file baru kali ini.
>> Dan sekarang, lebih dari API Google Maps JavaScript,
kita akan melompat membaca melalui semua teks ini.
Tetapi perhatikan bahwa dunia halo adalah memang di mana-mana, Anda melihatnya sekarang.
Halo dunia memiliki ini besar warna-warni contoh dari sejumlah besar HTML.
Pergi ke depan dan copy dan paste itu saja HTML, sehingga dari jenis doc di atas
semua cara untuk tag HTML dekat, pergi depan dan menyalin semua itu-- lagi,
itu di bawah dunia halo misalnya-- dan paste ke tab Cloud9 Anda,
sehingga sekarang layar Anda harus melihat kira-kira seperti saya.
>> Dan Anda bisa menyimpannya, tapi tidak memuatnya dulu.
Mari kita pertama melihat kode dan melihat apakah kita
tidak dapat menyimpulkan atau belajar dari apa itu Google
telah kita membabi buta copy dan paste.
Mereka hanya ingin membantu, harfiah, mendapatkan kita mulai,
tapi ada tidak banyak kompleksitas sebenarnya ada.
Pertanyaan dulu?
Kita aman untuk maju?
BAIK.
>> Begitu cepat, mari kita lakukan beberapa kewarasan cek cepat.
Satu baris dari apa yang saya melihat, dan mudah-mudahan, Anda
lihat, apa artinya, doctype HTML?
Kareem, ingat?
AUDIENCE: [tidak terdengar]
DAVID Malan: Ya.
Di sinilah HTML 5.
Sementara itu, garis dua di layar di sini berarti peramban hey,
di sini datang HTML yang sebenarnya.
Garis tiga adalah hey peramban, di sini datang kepala.
Line empat adalah, tentu saja, hey Browser, di sini datang judul.
Apa garis lima lakukan?
Sebenarnya, ini tidak benar-benar melakukan apa-apa bagi kita.
Dalam hal ini, hanya mengubah ukuran halaman ke default. Baris enam,
kami belum bicarakan, tapi menentukan pengkodean karakter.
Ada berbagai cara untuk mengkodekan file, terutama untuk bahasa asing.
UTF-8 hanya cenderung menjadi default.
>> Jadi sekarang kita akan melihat di baris tujuh hingga 16, beberapa CSS.
Dan meskipun kita sudah tidak melihat semua hal ini sebelumnya,
kita dapat menyimpulkan jenis.
Jadi garis delapan cara, hey peramban, menerapkan semua hal berikut yang dua tag,
tampaknya?
HTML dan tubuh teks.
Jadi koma adalah hal baru di sana.
Dan itu hanya cara menentukan beberapa tag sekaligus.
>> Kemudian kami punya kurung kurawal.
Begitu rupanya, ini memberitahu browser, membuat ketinggian halaman 100%.
Jadi bahkan jika ada sangat sedikit konten, membuat seluruh halaman,
membuat hal yang mengisi halaman.
Membuat peta akhirnya mengisi halaman.
Margin, apa artinya?
Itu biasanya seperti sewenang-wenang ruang putih di sekitar tepi
bahwa beberapa desainer peramban hanya memutuskan harus ada, karena
jenis membuat hal terlihat lebih bersih.
Tapi kami tidak menginginkan hal itu.
Kami ingin peta akan semua jalan ke tepi.
Padding, memiliki semangat yang sama margin.
Margin berarti di luar, berarti bantalan dalam, tapi itu adalah jenis yang sama dari kesepakatan.
Ini sedikit penyangga antara Anda dan tepi.
>> Dan kemudian garis 13 adalah baik kesempatan untuk tinjauan singkat.
Apa Peta tanda tajam Maksudku, atau peta hashtag artinya?
Apa yang merujuk kepada, pada prinsipnya?
>> AUDIENCE: [tidak terdengar]
DAVID Malan: Tepat.
Properti ini, properti CSS ini berlaku hanya satu hal, tag HTML
yang memiliki ID dari kutipan, tanda kutip "peta".
Dan sekarang mari kita maju cepat, gulir turun ke bawah file, yang
tidak terlalu jauh, dan pemberitahuan pada baris 19, jika Anda paste persis seperti yang saya lakukan,
baris 19 baru saja div, yang merupakan pembagian halaman, yang kemarin saya
disebut wilayah persegi panjang.
Ini tidak ada di dalamnya.
Ini adalah tag terbuka, tag dekat.
Tapi itu memiliki ID unik.
>> Jadi apa yang tampaknya menjadi terjadi di sini adalah Google
sedang menyiapkan halaman web kami untuk memiliki ketinggian lengkap 100%,
dan tidak ada padding, tidak ada margin, karena apa yang kita akan dimasukkan ke dalam
div ini, yang ID unik adalah peta, adalah peta yang sebenarnya tertanam.
Dan kami ingin mengisi halaman dan bukan hanya
ada beberapa persegi panjang kecil di tengah.
Jadi garis 14 sama menekankan, yang map itu sendiri harus memiliki ketinggian 100%.
>> Jadi sekarang melihat antara garis 20 dan 28, ini adalah kode JavaScript.
Dan ini, meskipun itu sintaksis sedikit aneh,
ada tidak semua yang banyak terjadi di sini.
Sejalan 21, ini menyatakan sesuatu yang disebut variabel.
Alih-alih menyebutnya jumlah, seperti yang kita lakukan sebelumnya,
kita lebih tepat mengatakan var, yang hanya berarti variabel.
Kita bisa digunakan bahwa dalam Kode Nick, tapi dia tidak, jadi saya
tidak repot-repot melakukan hal itu baik.
Ini adalah variabel yang disebut peta, dan kemudian ada
fungsi yang rupanya disebut initMap.
>> Jadi ini seperti kebiasaan kami sendiri potongan puzzle di Scratch.
Kami telah membuat sepotong fungsi disebut initMap,
dan Anda dapat jenis menyimpulkan apa yang terjadi di sini.
Di sisi kiri, kita punya variabel,
jadi kita akan menempatkan berikut hal dalam variabel itu,
dari kanan ke kiri.
Sisi kanan mengatakan, hey Browser, memberi saya peta Google baru.
Dan google.maps.map adalah cara yang funky dari menentukan bahwa fungsi ini
milik Google Maps.
>> Setelah kurung, kami telah melihat ini sebelumnya, hey peramban, dapatkan
saya elemen di halaman, tag di halaman yang ID unik is--
>> AUDIENCE: [tidak terdengar]
>> DAVID Malan: --map.
Dan apa yang terjadi, baik, baris ini bersama-sama, garis 23,
pada dasarnya mengatakan, hey peramban, pergi mendapatkan saya
yang div kosong di halaman yang ID unik adalah peta,
karena saya ingin memasukkan ke itu-- menyuntikkan ke dalamnya,
jika Anda will-- sejumlah besar konten yang kebetulan berasal dari web,
kemudian.
Dan Google melakukan semua itu bagi kita.
>> Jadi sekali lagi, di akhir hari, kami memiliki contoh ini abstraksi.
Aku tidak tahu apa peta adalah atau bagaimana menerapkan peta API.
Kami tidak perlu.
Kita hanya perlu memberitahu peta di mana untuk menempatkan dirinya, dan meninggalkan
mereka mendasari pelaksanaan Rincian untuk Google.
Sekarang ada rupanya dua buah data
bahwa contoh ini adalah menyediakan API Google.
Rupanya tengah peta, dan tingkat zoom, sehingga untuk berbicara.
>> Dan tidak ada yang mengenali ini koordinat, lintang dan bujur?
Mungkin tidak, tapi kami bisa kembali untuk tutorial, secara harfiah melihat.
Tapi kita akan melihatnya hanya dalam beberapa saat.
tingkat zoom adalah nilai antara, saya tidak tahu, satu di 13 atau sesuatu seperti itu.
Itu hanya berkaitan dengan seberapa jauh Anda diperbesar atau keluar, dan hanya itu.
Dan sekarang di bagian paling akhir halaman, baris pemberitahuan 29--
itu sedikit jelek karena itu wraps-- baris kode ini
adalah apa download ke Browser API sebenarnya Google.
Semua kode yang Google insinyur telah menulis yang menerapkan
Seluruh fitur ini peta embeddable.
>> Sekarang mari kita tidak mengubah apa pun.
Jika Anda mengikuti bersama, pergi ke depan dan hanya menyimpan file itu, jika Anda memang memiliki
apa yang saya punya.
Pergi ke URL-nya.
Anda dapat mengklik tombol Run di bagian atas dan yang akan memberitahu
Anda URL server web Anda lagi.
Dan itu akan membawa Anda ke sebuah tab baru.
Jika Anda klik Open untuk map.html, dan kemungkinan besar Anda
akan mendapatkan peringatan, pesan kesalahan, ya?
pesan kesalahan, pesan kesalahan?
>> Jadi sayangnya, kesalahan Pesan tidak mencerahkan
kecuali jika Anda benar-benar membuka konsol, bahwa tab khusus kami
terus kemarin membuka dan sedikit lebih awal hari ini.
Tapi aku sengaja menemukan ini sebelumnya, jadi saya sudah
tahu apa solusinya adalah.
Dalam slide hari ini, atau bukan, di Cloud9, pemberitahuan
bahwa kita tidak melakukan sesuatu yang sengaja.
Perhatikan bahwa ini tag script di baris 29, jika Anda membaca melalui itu,
itu seperti maps.googleapis.com/ sesuatu, sesuatu, sesuatu,
kemudian melihat seseorang, salah satu pengembang,
menulis di semua ibukota surat, kunci API Anda.
>> Kita perlu menyisipkan sesuatu di sana.
Dan ini adalah langkah Saya lakukan bagi kita sebelumnya,
dan lagi mereka mungkin blacklist kami jika tiba-tiba, 12 atau lebih dari kita
mulai menggunakan tombol yang sama, tapi mari kita lihat apa yang terjadi.
Jadi, jika Anda pergi ke hari ini slide, satu slide kemudian, ada
ini string yang sangat funky yang tampak dari teks.
Pergi ke depan dan hanya menyalin itu dan paste di mana dikatakan kunci API Anda.
Itulah yang saya mendaftar untuk.
>> Dan pasti tidak mencoba mengetik secara manual,
karena terasa penuh dengan kesalahan ketik, berpotensi.
Jadi hanya copy dan paste itu.
Dan itu akan membuat garis lagi, tapi sekarang, hanya harus jelas,
seharusnya terlihat sedikit lebih seperti ini, di mana kunci sama tidak
dikapitalisasi berteriak pada Anda.
Menyimpan halaman Anda, kembali ke tab lain, reload,
dan berharap untuk melihat peta di mana?
>> AUDIENCE: Australia.
>> DAVID Malan: Australia.
Begitu rupanya mereka adalah Koordinat GPS dari Australia.
Dan biarkan aku berjalan di sekitar untuk sesaat dan membantu siapa saja yang tidak cukup di sana,
tapi biarkan aku mengusulkan, melalui Google, cari Koordinat GPS dari kampung halaman Anda sendiri
atau negara rumah Anda sendiri.
Dan mungkin Google bisa mengubah ini up, atau Wikipedia dapat memberitahu Anda.
Tapi memilih dua nilai yang berbeda untuk lintang dan bujur,
kembali dan paste, dan kemudian kembali halaman tersebut setelah menyimpan
dan lihat apakah Anda dapat memiliki map untuk kampung halaman Anda sendiri.
>> Dan ketika Anda selesai dengan itu, tindak lanjut challenge--
dan saya akan memberikan sedikit kurang arah, sengaja, sehingga Anda sengaja
harus berjuang untuk beberapa menit dengan dokumentasi,
mengubah peta menjadi tidak ini bawaan kartun, tetapi peta satelit.
Jadi Anda benar-benar melihat satelit citra bukannya warna cantik.
>> Dan petunjuk yang saya akan memberikan adalah mengubah jenis peta ini.
Kembali ke bahwa mendapatkan mulai halaman untuk inspirasi.
Seperti Anda mungkin telah diperoleh, jika Anda mencari,
ada begitu banyak lagi hal yang dapat Anda lakukan.
Beberapa dari Anda sudah mengubah jenis peta.
Tapi Anda bisa do-- misalnya, biarkan aku pergi ke sesuatu yang kita lakukan untuk kursus
Saya teach-- maps.cs50.net.
Salah satu undergrads kami melakukan ini.
Kami memusatkan peta kami lebih Harvard Yard dan overlay semua nama bangunan tersebut,
dan kami telah dia menambahkan ini.
Jadi jika saya ingin mencari, misalnya, Matthews Hall,
kami memiliki menu drop-down kecil.
Dan saya pikir dia menggunakan Bootstrap, yang perpustakaan kita bahas sebelumnya untuk ini.
Dan jika Anda klik pada Matthews Hall, segera
melompat peta untuk tertentu lokasi, dan itu menunjukkan
Anda gambar dalam sedikit pop-up.
>> Tetapi bahkan ini sedikit pop-up, kita tidak menerapkan.
Jika saya gulir ke bawah untuk mendapatkan kami mulai halaman dan mencari jendela info,
Anda akan melihat bahwa beberapa fungsionalitas Anda sendiri
dapat menambahkan, meskipun dengan sedikit kompleksitas,
adalah sesuatu yang disebut jendela info.
Dan jika saya klik contoh di sini, dan ini adalah apa yang menyenangkan,
Anda dapat melakukan hal-hal seperti ini, mengklik penanda dan kemudian voila,
Informasi muncul.
>> Jadi kita belum cukup memperkenalkan fitur yang cukup dari JavaScript
melukis gambar persis bagaimana Anda bisa kawat semua hal ini bersama-sama,
tapi kami sudah jenis menggaruk permukaan.
Bahkan, apa yang saya hanya lakukan ketika Saya mengklik penanda bahwa,
itu memicu peristiwa, disebut di klik event.
Dan kami benar-benar melihat acara sebelumnya hari ini,
yang disebut menyerahkan acara, ketika kita mencegah
pengguna dari mencari kucing.
Jadi kita sudah jenis dijemput dan choosed dari antara semua berbagai fitur,
untuk memberikan arti, mudah-mudahan, dari apa yang Anda dapat benar-benar
lakukan dengan sedikit lebih kenyamanan dalam pemrograman,
dan sumber daya benar-benar gratis.
>> Ada pertanyaan?
Tidak?
Ini adalah kesempatan terakhir Anda, setidaknya hari ini, pada hari Jumat,
untuk mendapatkan apa pun dari dada Anda sehingga Anda berjalan keluar dari sini
merasa percaya diri dan nyaman.
Iya nih.
>> AUDIENCE: Mengapa tidak melakukannya Anda menambahkan satu hal lagi?
>> DAVID Malan: Oh ya ampun.
Saya perlu istirahat akhir pekan ini, saya pikir.
pertanyaan lain?
>> AUDIENCE: [tidak terdengar]
>> DAVID Malan: Anda can-- di Internet Explorer, beristirahat dalam damai,
Anda digunakan untuk dapat menempatkan VB Script, dasar naskah virtual,
tapi itu benar-benar tidak pernah tertangkap.
Jadi jawaban singkat hanya JavaScript.
pertanyaan lain?
Baiklah, baik, biarkan aku melakukan ini.
Mari saya ambil rekan-rekan kami di luar.
Mereka memiliki beberapa evaluasi bentuk bahwa mereka ingin semua orang
untuk menghabiskan beberapa menit mengisi.
Mereka ingin mengumpulkan formulir itu dan setiap keringanan yang mungkin Anda miliki di luar.
Mereka juga akan memiliki sertifikat.
Saya menduga ada masih beberapa makanan ringan di luar.
Biarkan aku melewati ini keluar, dan jika Anda memiliki pertanyaan sementara itu,
Aku akan berjalan sekitar lebih individual dan kami dapat membantu Anda memulai.
Ya tentu saja.
AUDIENCE: [tidak terdengar]
DAVID Malan: Itu biasanya benar hari ini.
Tentu saja dengan web software, Anda bersandar
pada orang lain Anda baik estetis menggunakan hal-hal
seperti Bootstrap, sehingga Anda tidak harus menerapkan tingkat rendah
Rincian dari menu dan tombol dan semua itu.
Anda bersandar pada seseorang seperti Google sehingga Anda
tidak perlu membangun sebuah Uber bisnis dan bisnis pemetaan,
dan sejumlah yang sama aplikasi juga.
>> Bahkan, login yang populer, juga.
Jika Anda telah menggunakan Spotify atau sejumlah situs,
Anda akan masuk ke beberapa website menggunakan Facebook.
Jadi apa yang bagus, ada adalah API untuk login
saat ini, sehingga Anda tidak memiliki untuk memiliki pengguna Anda sendiri meja
dan semua database Anda sendiri tentu pada tingkat yang sama.
Anda dapat membiarkan Facebook melakukan semua itu kompleksitas untuk Anda.
Jadi waktu yang menyenangkan, jujur, dalam pemrograman,
karena ada begitu banyak pihak ketiga layanan yang Anda dapat membangun di atas.
>> Dan lagi, harga yang Anda bayar adalah baik keuangan atau downtime.
Jika Google turun, begitu juga Uber, bisa dibilang,
tapi mungkin itu adalah wajar trade-off.
Dan lagi, itu salah satu tema, mudah-mudahan, selama beberapa hari,
inilah trade-off.
Dan jarang ada akan menjadi jawaban yang tepat.
Itu benar-benar adalah lebih baik dari dua atau lebih jawaban.
>> Melewati ini sekitar.
>> Dan rekening Cloud9 ini akan terus untuk bekerja, dalam teori, lamanya.
Anda mungkin menemukan jika Anda menunggu beberapa hari atau seminggu atau lebih untuk masuk kembali ke dalam mereka,
mungkin butuh seperti satu atau lima menit untuk membuka kembali,
tapi itu hanya karena mereka menempatkan untuk tidur untuk menghemat sumber daya.