>> R.J. Aquino: Mari kita bermula.
Jadi ini adalah Kuiz 1.
Berikut adalah beberapa maklumat peringkat tinggi.
Laman Mengenai untuk kuiz ini di ini URL, tidak lagi CS50.net, walaupun yang
masih akan berfungsi.
Ia CS50.harvard.edu/quizzes/2013/1.
Ia besar Mengenai halaman, memberitahu anda di mana dan bila, iaitu Rabu depan
dalam sekumpulan bilik.
Dan pada hari Rabu akan datang, saya bermaksud dua hari dari sekarang.
Semua maklumat ini adalah di sana.
Tetapi ia adalah kumulatif.
>> Jadi segala-galanya daripada separuh pertama tahun adalah berpotensi kuiz,
kerana anda tidak boleh benar-benar maju perkara dalam C tanpa syarat dan jika
untuk gelung dan sebagainya.
Tetapi akan ada penekanan kepada bahan dilindungi sejak Kuiz 0,
bermula dengan structs dan Fail I / O. Ia biasanya lebih
mencabar daripada Kuiz 0.
Rata-rata skor biasanya lebih rendah.
Kerja keras.
>> Walaupun anda belajar, pastikan anda menggunakan CS50/discuss untuk menghantar soalan anda
dan membaca soalan-soalan orang lain.
Jadi, jika anda tidak mempunyai apa-apa soalan, log masuk dan membaca
soalan rakan anda.
Mereka mungkin soalan yang baik.
Dan mengambil kuiz amalan.
Kami telah memberi kuiz untuk tujuh atau lapan tahun.
Mereka semua dalam talian.
Soalan masa depan adalah sama kepada soalan-soalan lama.
Itulah bagaimana kita membuat mereka.
>> Kuiz ini tidak wujud lagi.
Tiada seorang pun daripada kita telah melihat ia.
Tetapi ia akan kelihatan seperti kuiz sebelumnya.
Untuk sesi kajian ini, ini tidak senarai lengkap topik.
Anda tidak boleh hanya menghadiri dan kemudian sempurna bersedia untuk kuiz.
Jika tidak, ia tidak akan yang banyak kuiz.
Dan ini juga tidak semestinya semua yang anda perlu tahu tentang apa-apa
diberikan topik.
Ia bertujuan untuk mendedahkan anda kepada perkara-perkara kami telah dilindungi, mengingatkan anda apa yang kita
dilindungi, dan cara di yang kami menutupinya.
Tetapi anda perlu pergi lebih jauh dan lebih mendalam apabila anda belajar untuk dua cek
bahawa anda tahu segala-galanya tentang apa-apa yang diberikan topik dan bahawa anda telah diisi
semua sudut-sudut yang berada dibincangkan dalam kuliah.
>> Nota-nota yang kuiz memberitahu anda untuk pergi ke nota penulis, menonton video kuliah.
Itu merupakan cara yang baik untuk memastikan anda telah meliputi semua asas anda.
Jadi bermula, apabila saya membuat ini slaid, saya cuba untuk meletakkan di mana saya mendapati
maklumat.
Jadi untuk fail I / O, misalnya, Minggu 7, Isnin kuliah, dan mencatatkan
Seksyen 6 dan Set Masalah semua mempunyai maklumat mengenai fail I / O. Saya telah melakukan
bagi tiap-tiap topik.
Jadi mereka tajuk slaid boleh membantu kepada anda.
>> Jadi di sini kita mempunyai fail I / O. Ingat, dalam Set Masalah 5, kami menggunakan fopen, fclose,
fwrite, fread, dan fseek.
Setelah pulih 30ish JPEG dan setelah saiznya dan merosakkan dengan
bitmap, anda harus cukup biasa dengan fungsi-fungsi
dan bagaimana mereka bekerja.
Jika anda tidak lagi biasa, pasti mengkaji mereka.
Dan pastikan anda memahami apa yang hujah-hujah yang berbeza,
apabila ia digunakan.
>> Tetapi pepijat fail berkaitan bersama anda mungkin akan diminta tentang -
baik, jika anda terlupa untuk memeriksa jika fopen sebenarnya bekerja sebelum anda pergi ke
mengubah suai fail.
Yang tidak baik.
Jika anda terlupa untuk fclose fail yang anda fopened, itu sama dengan
kebocoran memori.
Itu agak buruk.
Dan lupa untuk memeriksa jika anda telah sampai ke penghujung fail sebelum anda
mula menulis kepadanya.
>> Jadi, jika anda berkata, hey, saya pada akhir fail.
Berikan saya 5 lagi bait.
Nah, itu mungkin tidak akan bersenam cara yang anda harapkan.
Itu benar-benar untuk fail I / O, kerana kita berbuat demikian banyak daripadanya
dengan masalah yang ditetapkan.
Jadi, jika anda memahami apa yang berlaku dalam Set Masalah 5, ingat bitmats
dan JPEG, maka anda mungkin semua ditetapkan untuk fail I / O. Jika itu sedikit
kabur, pasti mengkaji masalah yang ditetapkan dan bahan yang berkaitan.
>> Structs adalah topik yang berada di garis di antara 0 dan Kuiz Kuiz 1.
Tidak cukup membuat potong untuk Kuiz 0.
Jadi mereka pasti akan berada di Kuiz 1, Minggu 7, Isnin.
Apakah struct satu?
Di sini kita menunjukkan struct a.
Ia seperti satu jenis baru.
Ia seperti bekas untuk pelbagai bidang.
>> Dalam kes ini, kita telah diisytiharkan struct yang pelajar yang mempunyai dua bidang -
rentetan bahawa kami memanggil nama dan satu int bahawa kita memanggil umur.
Oleh itu, apabila saya lulus sekitar pelajar atau saya mengubah suai pelajar, saya akan dapat
mengakses nama mereka dan umur mereka.
Mari kita lihat beberapa kod untuk itu.
Di sini kita melihat bahawa saya telah diisytiharkan pelajar s, seperti
Saya mengisytiharkan mana-mana ubah -
int x, int y, dan sebagainya.
>> Berikut adalah pelajar s.
Beliau bermula dengan apa-apa di ladangnya.
Jadi mari kita menetapkan mereka.
Anda menetapkan bidang yang struct dengan titik.
Jadi saya berkata di sini bahawa s.name = RJ.
Dan s.age = 21.
Anda juga boleh mengemas kini bidang dengan cara yang sama anda akan mengemas kini
nilai pembolehubah.
Jadi saya ingin menukar nama saya daripada RJ dengan ada tempoh untuk R.J. dieja yang
Cara yang betul.
Ia akan s.name = RJ, yang sama seperti yang kita katakan ia asalnya.
Dan kemudian anda boleh mengaksesnya.
>> Oleh itu, kita menetapkan mereka.
Kami telah mengemas kini mereka.
Anda juga boleh mengaksesnya dengan cara yang sama.
Jadi di sini, saya mencetak R.J. Ialah 21 tahun.
Dan saya mengakses nilai-nilai dengan s.name dan s.age.
Jadi yang yang mengakses structs dengan notasi titik.
Ya, soalan?
>> PENONTON: Adakah terdapat sebab di slaid sebelumnya bahawa anda tidak meletakkan
pelajar pada baris atas, seperti typedef pelajar struct dan kemudian
pelajar pada akhir?
>> R.J. Aquino: Jadi soalan itu, pada slaid ini, kita biasanya dilihat
typedef nod struct dan kemudian bidang struct dan
maka nod perkataan.
Dan bagaimana datang di sini saya tidak berkata, typedef pelajar struct dan kemudian
bidang yang struct dan kemudian pelajar?
Sebabnya ialah saya tidak perlu mengaksesnya dalam struct itu.
Jadi ia OK untuk meninggalkannya tanpa nama.
Saya hanya boleh meninggalkan ia sebagai satu struct tanpa nama.
>> Sebab kita melakukannya untuk senarai dikaitkan dan perkara adalah kerana di dalam anda perlu
untuk rujukan bintang nod struct.
Jadi struct perlu mempunyai nama, supaya anda boleh mengakses kemudian.
Ia adalah satu terperinci kecil.
Tetapi anda biasanya akan melihat struct typedef pendakap kerinting jika anda tidak perlu
nama dan typedef struct beberapa nama diikuti dengan pendakap kerinting jika anda akan
perlu nama.
Jadi itu adalah satu soalan yang baik.
>> Dan pada ketika itu, kita cenderung untuk mengubah suai structs dan lulus sekitar structs oleh
rujukan, bukan dengan nilai.
Oleh itu, kita hanya akan lulus sekitar petunjuk untuk structs bukannya lulus sekitar
structs diri mereka sendiri.
Jadi anda sangat kerap akan menjadi menggunakan, dalam kes ini, pelajar * atau
nod struct * atau nod * sebaliknya pelajar-pelajar atau nod.
Jadi di sini, saya berkata, OK, yang berubah-ubah ptr akan menjadi alamat s.
Ia akan menjadi penunjuk kepada pelajar yang R.J.
>> Oleh itu, kita boleh mendapatkan di bidang-bidang yang sama seperti yang kita mendapatkan apa-apa.
Pertama, rujukan ID penunjuk untuk mendapatkan struct itu.
Itulah * ptr dan kemudian titik dan kemudian umur.
Jadi untuk mengakses lapangan, dan saya telah dikemaskini sekarang kepada 22, kerana, mari kita
katakan, ia adalah hari jadi saya.
Ada sintaks jalan pintas menggunakan anak panah di sini.
Jadi ptr arrow umur hanya yang sama seperti * ptr.age.
Sekarang, itu sesuatu yang anda akan mempunyai menghafal dan ingat.
>> Anda menggunakannya banyak dalam pset6, yang Serangga buku ejaan.
Tetapi ini sebenarnya apa yang berlaku di bawah hood.
Ia penyahrujukan penunjuk dan kemudian mengakses ia.
Soalan?
>> PENONTON: [didengar].
>> R.J. Aquino: Jadi mengapa kita menggunakan petunjuk sebagai structs bukannya
structs diri mereka sendiri?
Sebabnya ialah jika anda lulus yang struct ke fungsi, anda mungkin
mahu lulus di sekeliling hanya 4 atau lebih bait yang mewakili penunjuk, seperti yang
bertentangan dengan berpotensi 30 atau 40 bytes yang struct itu.
Jadi lulus sesuatu ke fungsi adalah lebih mudah apabila perkara yang
adalah lebih kecil pendek.
Soalan?
>> PENONTON: Anda mungkin telah menyebut ini pada mulanya, tetapi terdapat
slaid lain sehingga pada [didengar]?
>> R.J. Aquino: Ini slaid akan selepas sesi kajian.
Kami akan pos mereka di laman web.
Jadi beralih dan beralih sedikit lebih cepat, kami akan bercakap mengenai data
struktur.
Terdapat banyak.
Kami meliputi sekumpulan mereka.
Berikut adalah apa yang anda perlu memahami mengenai struktur data.
>> Anda benar-benar perlu memahami di yang tinggi tahap apa yang setiap struktur adalah.
Bolehkah anda menjelaskan dalam bahasa Inggeris untuk anda rakan yang tidak mengambil CS50 bagaimana
kami menganjurkan data kami dan mengapa kita akan menggunakan sesuatu dengan cara ini?
Itu perkara satu.
Thing dua, memahami pelaksanaan.
Jadi memahami bagaimana untuk menggunakan perkara-perkara ini C. Dan kita akan pergi lebih ini.
>> Dan maka perkara tiga akan tahu kali berlari dan batasan
pelbagai struktur yang anda gunakan.
Jadi faham mengapa anda akan menggunakan hash meja bukannya array.
Memahami bagaimana cepat, secara purata, mengakses jadual hash adalah.
Memahami apa operasi adalah berpuasa pada senarai bersambung tetapi perlahan pada tatasusunan dan
begitu juga sebaliknya.
Jadi untuk memahami bahawa, anda perlu memahami Big-O notasi hanya tahu
bagaimana untuk bercakap mengenai macam perkara.
Dan kita akan bercakap tentang itu.
>> Perkara oleh itu, yang dikaitkan senarai.
Berikut adalah gambar peringkat tinggi senarai berpaut.
Kita menunjukkan ini di dalam kelas.
Biasanya kami mempunyai 10 orang berdiri di atas pentas.
Tetapi kita mempunyai satu siri nod di mana setiap nod mempunyai nilai dan penunjuk
kepada nilai seterusnya.
Jadi untuk mendapatkan dari satu nod ke depan, anda hanya mengatakan, memberi saya nod seterusnya.
Anda mempunyai nod itu.
Berikan saya nod seterusnya.
Anda mempunyai nod itu.
Berikan saya nod seterusnya dan sebagainya sehingga tidak ada kiri nod.
>> Jadi terus bercakap tentang itu pada tahap yang tinggi.
Ia amat mudah untuk memasukkan perkara-perkara ke dalam senarai berpaut.
Jika anda tidak mengambil berat tentang perintah itu, anda hanya boleh menjatuhkannya
betul-betul di permulaan.
Itulah masa yang sama.
Tetapi ia sukar untuk mencari nilai.
Jika anda cuba untuk bertanya, adalah tujuh dalam senarai saya?
Anda perlu melalui setiap nilai.
Adakah ini tujuh?
Berulang-ulang kali.
Dan itulah O (n).
Oleh itu, apabila belajar untuk kuiz, bandingkan ini dengan tatasusunan.
>> Adakah itu OK?
Lampu pergi malap.
OK.
Bilakah senarai berpaut yang lebih baik?
Bilakah array yang lebih baik?
Jadi mari kita lihat beberapa kod.
Berikut adalah nod yang berpotensi.
Ia struct a.
Ia mempunyai int n, yang akan nilai kita.
Dan ia mempunyai nod struct * seterusnya, yang adalah penunjuk untuk nod seterusnya.
Jadi di sini, kita dapat melihat bahawa kita berlaku telah meletakkan int dalam nod kami.
Tetapi jika ini adalah senarai berpaut char bintang atau senarai berpaut daripada terapung, kami
betul-betul boleh melakukannya juga.
>> Ingat dalam pset6, anda mungkin mempunyai senarai bersambung bintang char atau hanya
array char statik.
Mari kita lihat di sini pada pembedahan.
Jadi, kami ingin memasukkan baru n ke dalam senarai bersambung kami.
Kami bermula dengan penunjuk kepala yang penunjuk kepada nod ini yang mempunyai
nilai n dan seterusnya penunjuk yang mata kepada nod ini adalah satu nilai
n dan seterusnya batal, kerana ia nod terakhir.
Jadi demi kepentingan masa, saya akan meletakkan semua kod pada skrin.
Dan kami akan berjalan melaluinya beberapa baris pada satu masa.
>> Jadi inilah kod.
Saya berharap ia boleh dibaca.
Perkara pertama yang kami lakukan adalah kita malloc nod baru.
Jadi masuk penunjuk kepada nod baru yang tidak cukup mempunyai apa-apa yang ditetapkan
dalam lagi.
Kami periksa untuk memastikan bahawa nod baru tidak null.
Jika tidak, kita terpaksa melepaskan.
Jadi setelah diperiksa itu, kami kini menetapkan nilai-nilai dalam nod.
Oleh itu, kita meletakkan n baru ke dalam bidang n kami.
Dan kami menetapkan penunjuk di sebelah menunjukkan kepala asal, supaya kita dapat
kini telah dimasukkan ini nod ke dalam senarai kami.
>> Akhir sekali, kita mempunyai titik ketua global untuk nod baru kami, supaya jika kita
bermula kepala, kita akan berada di ini nod pertama yang baru dan bukannya
nod pertama lama.
Dan apabila fungsi ini keluar, yang nod baru boleh ubah tidak lagi wujud,
kerana ia adalah tempatan untuk majlis itu.
Jadi ini adalah keadaan dunia.
Kepala global kami menunjukkan kepada kami yang baru nod pertama, yang menunjukkan kepada kita
nod pertama asal, yang mata untuk nod selepas itu.
>> Itu adalah sisipan.
Saya berharap agak mudah untuk diikuti.
Apabila ragu-ragu, lukiskan gambar.
Jadi saya mendapati bahawa bercakap tentang senarai dikaitkan dan melihat
kod adalah sangat tidak membantu.
Manakala melihat gambar seorang dikaitkan senarai membolehkan saya untuk berfikir, oh, jadi
Saya mempunyai nod ini di sini.
Tetapi jika saya mengemaskini penunjuk itu, ia berakhir diputuskan.
Dan saya sudah lupa di mana nod pergi.
Dan kod keluar.
Dan anda mempunyai beberapa node yang dicabut.
Dan anda tidak berakhir dengan senarai yang anda mahu.
>> Jadi, jika anda menarik gambar dan melakukannya langkah demi langkah, mudah-mudahan, anda akan melihat
susunan yang betul perkara dari segi mengemaskini petunjuk untuk memastikan
bahawa senarai itu datang bersama-sama.
Masukkan adalah agak mudah.
A satu lebih rumit akan kemasukan ke dalam senarai disusun.
Fungsi lebih rumit adalah memadam dan mencari, jadi mencari melalui senarai untuk
melihat jika ada sesuatu di sana.
Mungkin anda melakukan ini dalam pset6 apabila anda mendapat ke dalam jadual hash anda dan anda berkata,
dengan baik, adalah epal perkataan dalam senarai dikaitkan saya?
>> Jadi anda mungkin telah dilakukan ini.
Tetapi pasti, mengingatkan semula anda dan cuba untuk mengimplemen semula find dan
mengimplemen semula memadam untuk senarai berpaut.
Nota sampingan Fun, terdapat juga duanya adalah terpakai berkaitan senarai, di mana anda perlu
petunjuk yang menunjukkan kedua-dua ke hadapan dan ke belakang, supaya anda boleh pergi ke
nod akan datang dan untuk nod sebelumnya.
Dan ada soalan mengenai tahun lepas kuiz jenis itu, bercakap
kira-kira dua kali ganda berkaitan senarai.
>> Sekarang, itu adalah satu struktur yang anda agak biasa dengan, kerana kebanyakan
anda mungkin menggunakan mereka pada pset6.
Berikut adalah salah satu yang agak kurang biasa.
Sebagai nota sampingan, saya berfikir bahawa Kuiz 1 adalah terutamanya keras daripada Kuiz 0, kerana
barangan yang anda lakukan, anda tidak melakukan sebanyak.
Untuk meletakkan cara lain, Kuiz 0, anda telah menulis banyak C. Dan kita
bertanya anda tentang C.
>> Untuk Kuiz 1, kami akan meminta anda kira-kira PHP dan JavaScript, yang anda
telah tidak ditulis sebanyak.
Kami akan meminta anda tentang C-kod yang anda telah tidak ditulis sebanyak,
ini barangan C maju.
Jadi pasti, amalan kita barangan yang bercakap tentang dalam kuliah yang anda
tidak semestinya melakukan kepada masalah yang ditetapkan.
>> Bercakap di mana, anda telah tidak ditulis timbunan pada masalah ditetapkan.
Tetapi ia adalah dalam kuliah.
Berikut adalah gambar peringkat tinggi susunan yang kita menunjukkan setiap tahun.
Ia adalah timbunan dulang di dewan makan Mather.
Pada tahap yang tinggi, susunan adalah lepas dalam, mula-mula keluar struktur data.
Ini bermakna anda akan untuk meletakkan perkara dalam -
1, 3, 7, 12, 14, negatif 0.
Ini satu perkara yang saya tidak boleh mempunyai kata - negatif 3, 0.
Anda meletakkan semua perkara ini masuk
Dan yang terakhir anda masukkan ke dalam adalah yang pertama salah satu yang akan keluar.
>> Jadi anda mempunyai dua operasi -
menolak dan pop.
Semua meletakkan dalam bahawa saya adalah isyarat seperti ini adalah menolak.
Dan kemudian apabila saya sampai ke merebut sesuatu atau mencapai di atas untuk merebut
sesuatu, itu pop.
Jadi, kita akan melaksanakan susunan.
Dan kami menunjukkan kepada mereka dalam syarahan menggunakan tatasusunan.
Tetapi anda boleh melakukannya menggunakan senarai berkaitan.
Timbunan ialah data konsep struktur, tidak seperti
pelaksanaan khusus satu.
>> Jadi apa yang akan kelihatan seperti?
Ia akan kelihatan jenis seperti ini.
Anda akan mempunyai saiz integer.
Dan anda akan mempunyai pelbagai nilai-nilai yang kami memanggil dulang, kerana itulah
apa gambar itu untuk kita - int dulang -
dan kemudian beberapa kapasiti maksimum.
Jadi apa yang akan menolak kelihatan seperti?
Nah, jika kita mempunyai s timbunan, maka untuk menolak sesuatu ke s, kita akan mendapat
saiz s.
Dan yang akan seterusnya tempat terbuka array kami.
Jadi jika kita mempunyai tiga perkara dalam timbunan kami, maka dulang 3 akan seterusnya
tempat terbuka, kerana 0, 1, dan 2 sudah diisi.
>> Oleh itu, kita meletakkan nilai yang ke s.trays [s.size], tempat ketiga.
Dan kemudian kita kenaikan s.size berkata, hey, kita mempunyai tiga perkara sebelum.
Sekarang, kita mempunyai empat.
Jadi, masa depan anda menolak, anda akan meletakkan sesuatu ke dalam 4.
Atau masa depan anda pop, anda akan untuk melihat 3 bukan 4 atau apa sahaja.
Dan kemudian kita akan kembali benar katakan, hey, kita berjaya.
Ini bekerja.
Sebagai peraturan ibu jari, jika fungsi itu sepatutnya memulangkan benar atau
palsu sentiasa mengembalikan benar, anda boleh telah melakukan sesuatu yang salah.
Jadi ini berfungsi?
>> Nah, ia berfungsi dengan baik untuk 1, dan 2, dan 3, dan 4, dan lima.
Tetapi mari kita mengatakan saya mencapai kapasiti saya.
Saya kemudian berjalan ke dalam masalah, kerana jika saiz adalah sama dengan keupayaan, saya
kini cuba untuk meletakkan sesuatu ke dalam pelbagai di mana saya tidak mempunyai ruang.
Jadi cek yang singkat untuk menetapkan ini.
Jika s.size KEUPAYAAN ==, pulangan palsu.
Jika tidak, pergi dan melakukan apa yang kita lakukan.
Jadi apa lagi yang kita boleh meminta kira-kira untuk susunan?
Apa lagi yang perlu anda belajar?
Apa lagi yang perlu anda melakukannya?
>> Nah, melaksanakan pop.
Kami sudah lakukan menolak.
Saya akan menetapkan bahawa.
A pelaksanaan bukan pelbagai, di mana anda menggunakan senarai berpaut, mungkin.
A pelaksanaan bukan int.
Kami telah Ints sini.
Tetapi ia boleh menjadi pelampung.
Saya boleh menjadi tali.
Ia boleh menjadi bintang char.
Lihatlah lalu kuiz untuk jenis soalan kami telah ditanya mengenai susunan.
>> Saya akan mengatakan bahawa kita dilindungi susunan sekitar yang sama seperti yang kita telah dilindungi mereka dalam
tahun yang lalu.
Jadi soalan-soalan kuiz perlu menjadi petunjuk yang baik.
Melangkah ke hadapan lebih cepat, beratur.
Mereka seperti susunan.
Tetapi mereka masuk dahulu, keluar.
Jika anda British, perkataan baris gilir mungkin membuat banyak akal untuk anda.
Jika tidak, anda mungkin mempunyai mendengar ia sebagai satu barisan.
Mereka bekerja seperti garis di kedai Apple.
Orang pertama yang muncul di 03:00 pada waktu pagi adalah yang pertama
orang untuk membeli iPad beliau.
>> Jadi kita mempunyai dua operasi -
enqueue dan dequeue.
Enqueue meletakkan seseorang dalam baris.
Dequeue menarik yang pertama orang di luar talian itu.
Sekali lagi, kita boleh melaksanakan ini dengan array.
Jadi apa yang kita struct itu menunjukkan dalam kuliah?
Ia adalah salah satu ini.
Sekali lagi, nombor.
Sekali lagi, saiz dan perkara depan baru ini.
Kenapa ada sesuatu yang dinamakan depan?
Ia indeks seterusnya elemen untuk dequeue.
Ia hanya secara dalaman mengesan lelaki yang pertama menunjukkan, jadi kita yang
boleh menariknya keluar apabila kita perlu.
>> Sudah pasti melihat nota kuliah dan cuba untuk melaksanakan enqueue dan dequeue
apabila belajar untuk kuiz.
Perkara yang perlu difikirkan.
Membungkus sekitar jika hadapan campur saiz berakhir lebih besar daripada kapasiti.
Sekali lagi, jika struktur anda penuh, anda akan mempunyai masalah.
Hash jadual anda lihat sebelum ini.
Kebanyakan anda mungkin dilaksanakan ini di pset6.
Ia adalah satu struktur yang bertujuan untuk O (1) memasukkan pemalar masa dan O (1)
masa lookup berterusan.
>> Dalam CS50, kami melaksanakan ini sebagai pelbagai senarai berkaitan.
Komponen utama untuk jadual hash adalah fungsi hash.
Jadi ia menukarkan input anda, katakan, perkataan kamus, ke dalam satu nombor,
yang akan menjadi indeks kami.
Dan kami akan menggunakan indeks yang ke dalam pelbagai kami.
Jadi di sini adalah gambar kecil yang lucu dari study.50.net.
Kita buang semua perkataan ke dalam fungsi hash kami.
Dan fungsi hash memberitahu kita di mana untuk meletakkan kata-kata ini.
>> Ini semua yang besar dalam tanah di mana terdapat hanya satu perkataan untuk setiap slot.
Tetapi seperti yang anda ingat dari pset6, terdapat lebih perkataan daripada slot.
Jadi apa yang berlaku apabila anda mendapatkan perlanggaran?
Sebaliknya menyimpan satu nilai dalam, katakan, hash jadual 3, anda
menyimpan senarai berpaut.
Dan sebagainya bukannya mempunyai tembikai di sini, anda akan mempunyai senarai yang berkaitan,
mana nod yang pertama adalah tembikai.
Dan nod seterusnya adalah kucing.
Dan nod ketiga ialah perlanggaran, mari kita mengatakan, kerana segala perkataan ini mula
dengan C.
>> Jadi kebanyakan yang anda lakukan ini untuk pset6.
Jika anda tidak melakukan jadual hash pada pset6 dan anda cuba sesuatu seperti
indone satu, pasti menyemak jadual hash.
Jika anda tidak melakukannya pset6, sudah tentu mengkaji semula jadual hash.
Dan jika anda melakukannya pada pset6 dan ia tidak bersenam berapa betul dan anda
mempunyai banyak masalah dengan itu, pasti mengkaji semula jadual hash.
Jadi pengajaran yang benar-benar pasti mengkaji semula jadual hash.
>> Minoriti besar anda cuba keluar cuba pada pset6.
Gambar-peringkat tinggi.
Ia sesuatu yang seperti ini, di mana setiap nod mempunyai satu set kanak-kanak, di mana setiap
anak sepadan dengan surat.
Dan setiap nod juga berkata, hey, saya perkataan.
Jadi dalam hal ini, perkataan Maxwell, jika anda mengikuti M kepada A kepada
X-W-E-L-L dan kemudian mengikutinya satu lagi.
Dan anda mendapat simbol ini, delta, yang kita menandakan bermakna ini adalah satu perkataan.
Jadi Maxwell adalah perkataan.
Ini adalah delta seluruh LAMBANG yang perkara-perkara yang kata-kata dan yang
perkara yang tidak.
>> Jadi dalam pset6, data yang kami disimpan bersama mana-mana nod kami adalah "Saya seorang
perkataan. "Dan perkara yang sejuk kira-kira percubaan adalah mereka menunjukkan kemasukan dan
pencarian di O (panjang kata).
Jadi hanya untuk mendapatkan melalui Maxwell, ia M-A-X-W-E-L-L. Maka tujuh atau lapan -
Saya tidak boleh mengira -
langkah-langkah untuk sampai ke akhir dan memeriksa perkara keluar.
Pelaksanaan begitu cepat di sini.
Rob telah melalui dikaitkan senarai di bedah siasat beliau.
Jadi pastikan keluar.
Maaf.
Telah melalui indone dalam bedah siasat beliau.
Jadi pastikan keluar.
>> Tetapi anda pada dasarnya mempunyai setiap nod mempunyai 27 petunjuk ke nodus seterusnya dan
Boolean untuk saya perkataan.
Semak postmortem Rob kerana bagaimana ini sebenarnya dilaksanakan.
Struktur terakhir kami, pokok-pokok kami dan pokok-pokok carian binari.
Jadi melihat ini, ini telah dilindungi baru-baru ini Minggu 8, Isnin.
Pokok adalah sama dengan indone, kecuali anda tidak semestinya perlu 27 nod di
setiap titik.
Dan anda tidak mempunyai data ini pada setiap langkah yang menandakan sama ada -
jalan yang tidak mengapa.
Manakala indone a, jalan dari atas ke bawah, Maxwell, adalah penting bagi kami.
>> Tetapi setiap nod mempunyai pelbagai kanak-kanak, mungkin.
Kami mempunyai perbendaharaan kata beberapa.
Akar pokok itu adalah di bahagian paling atas.
Dan kita katakan bahawa sangat panhandle nod yang tidak mempunyai
kanak-kanak daun.
Jadi seperti indone, pokok adalah struktur nod.
Sejenis biasa pokok yang kita akan untuk bercakap tentang adalah pokok binari, di mana
setiap nod tidak mempunyai anak atau seorang anak atau dua orang anak.
Jadi gambar ini di sini tidak pokok binari, kerana
nod 3 mempunyai tiga orang anak.
>> Tetapi jika kita mengabaikan mereka, selebihnya daripadanya adalah pokok binari kerana ia
menunjukkan harta yang setiap nod mempunyai sifar, satu, atau dua orang anak.
Jadi bagaimana kita boleh menyatakan ini dalam kod?
Kita boleh mempunyai nod di mana setiap nod mempunyai integer di dalamnya, dan juga
sebagai penunjuk kepada pokok di sebelah kiri dan penunjuk kepada pokok itu pada
betul, jadi kedua-dua kanak-kanak.
Bagaimana ini berguna?
Nah, jika kita membuat kaedah-kaedah mengenai di mana kita meletakkan nod, kita boleh membuat carian lebih cepat.
>> Jadi ada konsep carian binari pokok, di mana semua nod yang
anak pohon yang tinggal mempunyai nilai yang lebih kecil daripada nod yang kami lihat.
Dan semua nod anak pohon yang betul mempunyai nilai yang lebih besar
daripada nod akar.
Sekarang, yang kelihatan seperti banyak perkataan.
Saya akan meletakkan ia di dalam dua kali sebut harga dan menunjukkan kepada anda gambar.
Jadi di sini adalah satu contoh pokok carian binari.
Melihat bahawa kita bermula dengan 10.
Semua di sebelah kiri 10 adalah lebih kecil daripada itu.
Dan segala-galanya ke kanan adalah lebih besar daripada itu.
>> Tetapi lebih daripada itu, setiap nod pada pokok meluahkan harta tanah ini.
Jadi nod 7 mempunyai 3 kepada kiri dan 9 ke kanan.
Jadi semua orang-orang yang lebih kecil daripada 10.
Namun, jika dilihat hanya mereka, 7 mempunyai 3 ke kiri dan 9 kepada haknya.
Begitu juga di sebelah kanan, 15 mempunyai 14 ke kiri dan 50 ke kanan.
Jadi tiga nod di sana, 15, 14, dan 50, juga pokok binari yang sah
atau pokok carian binari yang sah.
Dan mereka semua lebih besar daripada 10.
Jadi mereka dibenarkan untuk menjadi di sebelah kanan sana.
Adakah terdapat satu soalan?
>> PENONTON: Bagaimana anda berurusan apabila anda mempunyai dua tujuh pasang?
>> R.J. Aquino: Yeah.
Bagaimana anda berurusan dengan dua nilai yang adalah sama?
Sesetengah pokok carian binari mengatakan bahawa anda mengabaikan salinan, kerana matlamatnya adalah
hanya untuk mengatakan, saya lihat perkara-perkara ini setakat ini.
Sesetengah pokok carian binari anda boleh mengatakan mempunyai kiraan di dalam nod.
Orang lain mungkin mengatakan bahawa segala-galanya kepada sebelah kiri adalah kurang daripada atau sama dengan.
Dan segala-galanya ke kanan adalah lebih besar daripada.
>> Ia hanya bergantung kepada apa yang masalah ialah anda menyelesaikan.
Jadi, dalam kamus, misalnya, anda tidak akan mengambil berat tentang salinan.
Anda akan membuang mereka keluar.
Tetapi beberapa masalah lain yang mungkin anda mengambil berat.
>> PENONTON: Adakah mungkin untuk mempunyai 1 di sebelah kiri 15, yang
adalah kurang daripada 10?
>> R.J. Aquino: No
Jika 14 di sini adalah 1, akan ini tidak pokok carian binari yang sah,
kerana segala-galanya di sebelah kanan 10 mempunyai lebih besar dari itu.
Dan kita akan melihat mengapa.
Jika di tanah carian matlamat saya adalah untuk mencari 14, saya bermula akar.
Jadi saya melihat.
OK.
Kami akan bermula akar.
Lihatlah 10.
>> Nah, 14, sasaran kami, adalah lebih besar daripada 10.
Jadi ia mesti berada di sebelah kanan.
Ini adalah hampir sama dengan seluruh telefon perkara buku yang kita lakukan, binari yang
mencari di sana.
Tetapi bukan mencari binari dalam array, kami binari
mencari di pokok ini.
Oleh itu, kita masih mencari 14.
Nah, 14 adalah lebih kecil daripada 15.
Jadi, jika ia dalam pokok kita, ia mesti berada dalam bidang ini di sini.
Ia mesti di sebelah kanan 10 dan di sebelah kiri 15.
>> Dan jadi kami memeriksa nod ini.
Dan yay, kami telah menemui 14.
Saya tidak akan berjalan melaluinya.
Tetapi di sini kod.
Ini sebenarnya agak terus-terang,
kerana ini adalah rekursif.
Apa yang boleh kami meminta anda untuk lakukan pada kuiz?
Kami boleh meminta anda untuk menulis kod ini.
Kita boleh meminta anda untuk melihat kod ini dan mengubah suai kod ini dan menerangkan
ia melakukan.
Yeah.
Soalan?
>> PENONTON: Adakah slaid ini akan menjadi disediakan kerana mereka masa yang lalu?
>> R.J. Aquino: Ya.
Jadi slaid ini pasti akan diposkan.
>> PENONTON: Mereka sebenarnya sedang mencatatkan sekarang di laman web.
David hanya melakukan itu.
>> R.J. Aquino: Slaid adalah sekarang di laman web.
Saya mungkin akan patch sehingga beberapa yang tipo saya mengambil perhatian dan menetapkan mereka.
Tetapi ada semasa yang versi di laman.
Lain perkara yang kita boleh meminta anda untuk melakukan -
menulis memasukkan.
Tulis versi lelaran daripada fungsi rekursif kita hanya menunjukkan anda
atau bercakap mengenai perkara-perkara ini, seperti dalam perenggan, dalam perkataan, dalam ayat.
Yang membandingkan masa jangka dan menerangkan apa yang anda mahu menggunakan binari
pokok mencari dan bukannya hash meja, misalnya.
>> Jadi memahami struktur ini pada tahap yang cukup mendalam.
Memahami bagaimana untuk menulis mereka, bagaimana untuk menggunakannya, bagaimana untuk bercakap tentang mereka.
Dan anda akan bersedia.
Soalan?
>> PENONTON: Apabila anda menulis pokok carian binari, bagaimana anda
menentukan apa nilai kepada menjadikannya sebagai akar?
>> R.J. Aquino: Jadi soalan itu, apa yang nilai yang anda buat sebagai root?
Bergantung kepada kod anda, anda mungkin mempunyai akar global.
Jadi anda mungkin telah mungkin mempunyai dalam pset6 jadual hash global.
Atau anda mungkin lulus akar sebagai hujah.
Jadi fungsi carian ini di sini mengambil hujah nod *.
Dan jadi apa sahaja nod anda berada melihat adalah yang anda sedang merawat
sebagai root anda apabila anda meninggal ia masuk
Dan saya bersedia.
Mereka adalah slaid saya.
Orang yang seterusnya boleh datang swap dalam komputer riba dan mikrofon.
>> ROB Bowden: Saya fikir saya mungkin mempunyai ditafsirkan soalan yang berbeza.
Tetapi saya ditafsirkan sebagai, jika anda mempunyai nombor 1, 2, dan 3, bagaimana kita
tahu untuk membuat 2 akar berbanding dengan 1 atau 3?
Jika kita membuat 2 akar, maka ia baik 1 dan 3 ke kiri dan ke kanan.
Tetapi jika 1 adalah akar, maka ia 1 kepada atas, 2 yang betul, 3 ke kanan.
Jadi secara lalai, anda tidak tahu apa yang membuat akar.
Dan untuk mana-mana algoritma kita mengharapkan untuk memberi anda, hanya perkara pertama yang anda
insert akan akar.
Atau kita akan memberi anda pokok binari yang sudah ada yang mempunyai akar yang.
Tetapi algoritma lain wujud seperti yang akar akan mengemas kini, supaya jika anda
berakhir di dalam keadaan di mana ia 1, 2, 3, ia secara automatik akan mengemas kini kepada
membuat 2 akar baru, supaya ia masih baik seimbang.
>> ANGELA LI: Percuma.
Hey, guys.
Saya Angela.
Dan saya akan menghabiskan C kami dan kemudian pergi ke beberapa web kami
teknologi -
HTTP, HTML, dan CSS.
Jadi perkara pertama adalah penampan serangan limpahan.
Jadi mari kita lihat kod ini.
Ia agak mudah.
Ada fungsi foo.
Dan ia tidak kembali apa-apa.
Tetapi ia mengambil masa dalam penunjuk kepada rentetan yang dipanggil bar.
>> Dan ia akan mengaku ini penampan, yang merupakan watak yang
array yang mempunyai 12 slot.
Dan ia menggunakan memcpy, yang hanya fungsi yang salinan dari satu alamat
kepada yang lain.
Jadi ini cuba untuk menyalin ke dalam penampan kami dari apa sahaja
bar adalah menunjuk ke.
Jadi apa-apa idea apa yang salah dengan kod ini?
>> PENONTON: Jika bar adalah lebih lama daripada C, mereka akan menulis ganti.
>> ANGELA LI: Ya, betul-betul.
Kita tidak ada jaminan bahawa bar akan menjadi kurang daripada 12.
Kami hanya membuat beberapa nombor sewenang-wenangnya 12.
Dan kami seperti, mari kita berharap bahawa input pengguna kami adalah kurang daripada
12 aksara.
Jadi dalam dunia yang ideal, jika input kami adalah sentiasa seperti yang dijangkakan, maka kita akan mendapat
sesuatu seperti, hello.
Itu kurang daripada 12 aksara.
Ia mendapat dibaca ke char c.
Dan kemudian kita melakukan sesuatu dengannya.
Ia tidak benar-benar perkara itu.
>> Tetapi orang yang berniat jahat boleh lakukan sesuatu yang lebih seperti ini, di mana mereka
memberi kita apa sahaja bar menuding kepada, ia akan menunjukkan kepada pelbagai yang besar ini
hanya A.
Dan ini adalah cara yang lebih lama daripada 12.
Jadi ia akan pergi sepanjang jalan turun di sini untuk mana pulangan
alamat yang digunakan untuk menjadi.
Jadi katakan fungsi ini dipanggil foo.
Mungkin foo telah dipanggil oleh beberapa yang lain fungsi, yang dipanggil oleh utama.
Oleh itu, apabila foo sedang berjalan, ia memerlukan tahu di mana untuk kembali ke.
>> Jika foo dipanggil dengan fungsi yang dinamakan Baz, ia tahu bahawa itu
mendapat kembali ke Baz.
Dan itulah yang alamat kembali ini turun di sini memberitahu kita.
Tetapi jika kita menulis ganti dengan beberapa lain alamat, dalam kes ini, ini adalah satu
perwakilan pada ucapan di sangat permulaan penimbal ini, maka
apa yang sebenarnya akan berlaku ialah bukannya kembali kembali ke Baz,
yang dipanggil fungsi kami, ia hanya akan pergi ke hadapan kod ini.
>> Dan jika ini ada di sana kerana berniat jahat penggodam dude datang dan
disuntik ini, maka mungkin jumlah ini daripada itu sebenarnya bukanlah satu A.
Dan ia sebenarnya hanya kod yang pecah komputer atau sesuatu anda.
Jadi untuk menjadi pertahanan kira-kira seperti ini perkara, anda perlu tidak pernah menganggap bahawa
input pengguna adalah tertentu jumlah aksara.
Sebagai contoh, apabila anda telah melakukan buku ejaan, anda telah diberitahu bahawa kata-kata itu
hanya akan menjadi 40 aksara maksimum panjang.
Dan itu adalah baik.
>> Tetapi jika tidak, maka anda perlu pastikan anda hanya membaca di 45
watak-watak pada satu masa.
Jika tidak, anda mungkin menulis ganti penampan anda.
Soalan mengenai itu.
Yeah.
>> PENONTON: Bolehkah anda hanya bercakap sedikit lebih lanjut mengenai ini?
>> ANGELA LI: Maaf.
Ya.
>> PENONTON: mikrofon ini hanya untuk video.
Saya akan cuba dan projek.
Hi, guys.
Sup?
Jadi mari kita pergi ke beberapa perkara dalam Perpustakaan CS50, yang anda telah menggunakan
semua semester, kebanyakannya untuk mendapatkan input pengguna.
Seperti yang anda tahu, anda termasuk CS50 perpustakaan dengan hanya melakukan CS50.h, yang
mengandungi semua prototaip daripada fungsi-fungsi yang anda boleh gunakan, seperti
GetString dan GetInt, dan GetFloat, dan sebagainya.
Dan ada baris ini satu dalam CS50 perpustakaan yang mentakrifkan tali, yang
kamu semua tahu sekarang hanya char a *.
>> Tetapi mari kita mengintip di bagaimana GetString berfungsi.
Ini adalah versi yang sangat ringkas.
Anda boleh tarik sehingga fail perpustakaan CS50 dari, saya fikir, manuals.CS50.net.
Dan anda boleh membaca fungsi sebenar.
Tetapi ini meliputi beberapa bahagian-bahagian yang penting.
Oleh itu, kita telah membuat beberapa penampan dengan beberapa kapasiti.
Dan apa yang kita lakukan adalah kita mendapat satu watak pada satu masa dari standard n.
Itulah di mana input pengguna teks dalam konsol.
>> Dan sebagainya kita akan membaca dalam watak selagi ia bukan satu baru
line dan ia tidak berakhir fail, yang adalah akhir input standard.
Dan untuk setiap watak yang kita baca di, jika watak yang berakhir menambah
kepada bilangan aksara kita telah membaca di dalam dan yang lebih daripada kemampuan kita,
maka apa yang kita lakukan adalah kita hanya mengubah saiz kami penampan supaya ia dua kali lebih lama.
Jadi sekali lagi, ini melindungi daripada penampan serangan limpahan, kerana anda membaca di
watak pada satu masa.
Dan jika pada bila-bila anda membaca terlalu banyak, anda hanya mengembangkan penampan anda.
Anda kalikan dengan dua.
Dan kemudian anda mempunyai lebih banyak ruang.
>> Jika tidak, anda hanya tambah watak untuk penampan.
Dan selepas anda telah membaca di dalam semua aksara, ia akan mengecut penimbal
kembali ke saiz biasa, menambah terminator batal, dan kemudian kembali.
Sekarang, mari kita lihat GetInt.
Bolehkah anda semua membaca ini?
Saya boleh zum dalam sedikit.
Saya tidak tahu bagaimana komputer bekerja.
Jangan sekali-kali fikiran.
Saya tidak boleh zoom dengan betul.
>> Ini benar-benar keras.
Saya minta maaf.
Mari kita melihat ini.
Jadi apa GetInt adalah ia pertama berbunyi dalam rentetan dari GetString, yang
kami telah dilaksanakan sebelum ini.
Dan yang penting untuk diperhatikan di sini adalah jika perkongsian ini bahawa ia berakhir
membaca adalah seperti sebenarnya tidak tali, maka kita hanya kembali INT_MAX untuk
mewakili kegagalan.
Mengapa kita kembali INT_MAX sebaliknya negatif 1 atau 1?
Apa-apa idea?
>> PENONTON: [didengar] negatif 1 pada satu.
>> ANGELA LI: Ya, betul-betul.
Jadi anda cara yang lebih cenderung untuk hanya mahu untuk input 1 atau negatif 1 apabila digesa
untuk n dan apa jua Maxes n.
Ia besar.
Anda mungkin tidak akan menggunakannya.
Jadi ini adalah seperti keputusan reka bentuk untuk memastikan bahawa anda tidak sengaja
kembali kesilapan atau anda tidak kembali 1, yang mungkin dihuraikan
sebagai jawapan yang betul.
Jadi, jika garis tidak wujud, kita kembali INT-MAX.
Jika tidak, kita menggunakan sscanf, yang seperti scanf.
Tetapi ia membaca dari rentetan.
>> Dan kita mempunyai ini diformatkan tali, yang% i% c.
Dan kita mencuba dan sepadan dengan apa sahaja pengguna memberi kami.
Kami mahu beberapa perkara dipadankan sebagai 1, yang bermaksud bahawa kita hanya
benar-benar mahu perlawanan integer dikelilingi oleh mungkin putih
ruang, mungkin tidak.
Dalam kes ini, jika anda dimasukkan ke dalam sesuatu seperti bar, bar tidak sepadan pada semua,
kerana perlu ada integer pada permulaan.
Jadi tidak pernah sscan bertukar 0.
Jadi anda tidak kembali itu.
>> Sebagai alternatif, jika anda masukkan ke dalam sesuatu seperti 1, 2, 3, A, B, C, yang perlawanan
kedua-dua integer tetapi juga watak selepas itu.
Jadi sscanf akan kembali 2, yang juga tidak sesuai.
Anda tidak mahu 1, 2, 3, A, B, C menjadi int yang sah.
Supaya juga tidak berfungsi.
Tetapi mengatakan anda dimasukkan ke dalam sesuatu seperti 50.
Yang akan sepadan dengan% i, yang bermakna ia akan mendapat dibaca ke n.
Dan kini, n akan mengandungi bilangan 50.
Dan kemudian anda boleh kembali.
>> Jika tidak, anda memukul Cuba.
Kemudian ia pergi ke atas lagi sehingga anda mendapat input yang betul dari pengguna.
Soalan mengenai itu?
>> PENONTON: Jadi jika anda adalah untuk mencetak nilai GetInt pada [didengar]
ia akan menjadi hanya integer dan max?
>> ANGELA LI: Yeah.
Jadi, jika anda menggunakan GetInt, anda harus menganggap yang anda tidak mahu max n untuk
menjadi input yang sah, kerana anda akan untuk menganggap bahawa yang buruk.
>> PENONTON: Jika kita tidak mempunyai char c dan seseorang dimasukkan ke dalam 1, 2, 3, Sam, akan ia
masih bekerja untuk 1, 2, 3?
>> ANGELA LI: Saya rasa ia akan bekerja.
Tetapi anda tidak mahu untuk 123Sam menjadi input yang sah oleh pengguna.
Yang tidak benar-benar satu int.
Jadi ia nampaknya tidak adil untuk mengurai sebagai int satu.
OK.
Dalam kes itu, mari langkah ini ke internet.
Jadi HTTP bukan bahasa.
HTTP hanya satu set standard untuk bagaimana anda menghantar perkara-perkara dari pelanggan,
itulah anda, untuk pelayan.
Itulah orang-orang lain di web.
>> Jadi HTTP bermaksud Hypertext Pemindahan Protokol.
Ia adalah hati dan jiwa keseluruhan web.
Bahagian hiperteks hanya merujuk kepada HTML.
Pemindahan adalah pelanggan seperti anda akan menghantar permintaan kepada
pelayan, yang memberikan jawapan.
Dan protokol adalah hanya, bagaimana anda harapkan pelayan bertindak?
Dan bagaimana anda sepatutnya berkelakuan seperti yang anda boleh menyelaraskan ini
proses komunikasi?
>> Jadi permintaan HTTP melihat banyak seperti ini.
GET adalah jenis permintaan.
Anda semua telah melihat permintaan GET dan permintaan POST.
Bahawa perkara kedua di sana, / saya, itulah hanya URI atau URL di mana anda
mahu pergi dalam tuan rumah.
Jadi permintaan ini meminta untuk halaman, seperti www.facebook.com / saya.
Dan ia adalah satu permintaan GET.
Dan kemudian HTTP/1.1 ini, itu hanya versi HTTP yang digunakan.
Ia hampir sentiasa 1.1.
>> Dan kemudian ada sekumpulan barangan lain juga.
Anda sebenarnya boleh melihat ini jika anda membuka konsol anda apabila anda
menyemak imbas web.
Responses kelihatan lebih seperti ini.
Bahagian atas adalah, sekali lagi, jenis HTTP anda menggunakan
diikuti dengan kod status.
Jadi 200 OK adalah segala-galanya.
Berikut adalah kandungan anda.
Kandungan anda akan mengikuti.
Dan kemudian ia akan memberitahu anda apa jenis kandungan dan barangan lain juga.
>> Kod status, terdapat beberapa yang penting yang perlu anda tahu.
200 OK adalah seperti emas segala-galanya.
Semua kerja-kerja.
403 Larangan.
Ini anda mungkin telah melihat jika anda terlupa untuk chmod sesuatu dengan betul.
Ini bermakna anda tidak perlu kebenaran yang betul untuk
akses yang pada pelayan.
Ia seperti, tidak, anda tidak boleh melihatnya.
404 bermakna perkara yang tidak wujud.
Tidak dijumpai.
Anda mungkin telah melihat bahawa banyak.
>> 500 Ralat Pelayan Dalaman biasanya seperti sesuatu telah salah di sisi
pelayan.
Oleh itu, apabila anda melaksanakan pset7, jika anda mempunyai PHP kesilapan, anda boleh
sebenarnya pergi ke halaman dan melihat sejumlah besar PHP barangan kesilapan.
Tetapi itu tidak berlaku biasanya, kerana laman web tidak benar-benar mahu
memberitahu anda mengapa laman mereka rosak.
Mereka akan mungkin hanya mengembalikan 500 Ralat Pelayan Dalaman.
>> Dan kemudian ada 418 saya teko a.
Ada kisah keseluruhan kira-kira mengapa itu perkara yang.
Tetapi anda boleh membaca kira-kira yang pada masa anda sendiri.
Ada sejumlah besar kod status lain juga.
Tetapi ini adalah orang-orang perlu anda tahu.
Jadi mari kita bercakap tentang HTML.
HTML, ingat, bukan bahasa pengaturcaraan.
Ia adalah satu bahasa markup.
Ini bermakna ia menggambarkan kandungan.
Ia memberitahu anda apa dokumen HTML kelihatan suka atau tidak apa yang kelihatan seperti
tetapi bagaimana ia berstruktur.
>> Jadi ia mentakrifkan struktur dan semantik laman web.
Ia seperti, ini adalah perenggan.
Ini adalah senarai yang teratur.
Ini seperti satu bahagian halaman saya.
Berikut adalah tajuk.
Ia barangan seperti itu.
Ia tidak gaya mana-mana itu, kerana itulah yang anda lakukan dalam CSS.
Dan ia kelihatan seperti satu siri tag daripada bersarang.
Jadi untuk menggunakan satu contoh yang benar-benar asas Halaman HTML, anda mempunyai DOCTYPE yang
pengisytiharan di atas sana.
>> Deklarasi DOCTYPE adalah berkata, kita menggunakan HTML5.
Kemudian anda mempunyai tag HTML besar.
Ia mengandungi kepala dan badan.
Di dalam kepala, anda mempunyai tajuk.
Itulah apa yang berlaku dalam tajuk bar pelayar anda.
Kami mempunyai tag pautan yang menghubungkan dalam lembaran gaya luaran.
Dan kemudian kita mempunyai skrip yang menarik daripada JavaScript luaran.
>> Dan kemudian di dalam badan kita sebenarnya apa yang akan ditunjukkan pada halaman.
Kami ada perenggan dan kemudian imej di dalam perenggan itu.
Yang ini ialah gambar anak-anak itu.
Perhatikan imej tag menutup sendiri.
Jadi, daripada pembukaan dengan imej dan kemudian melakukan / imej yang lain, anda
hanya perlu palang kecil ini di sini, yang menutup ia.
Dan tag imej juga mempunyai kunci ini sifat nilai dipanggil Alt.
Itulah teks yang alternatif yang yang berlaku apabila anda mengapung di atasnya.
>> Kebanyakan unsur-unsur HTML mempunyai beberapa nilai utama perkara yang boleh anda berikan itu, pelbagai
penyesuaian.
Yeah.
>> PENONTON: [didengar].
>> ANGELA LI: Nah, jadi ia adalah satu sifat tag.
Jadi jika anda telah menggunakan jQuery, anda boleh melakukan pilih image.getAttribute.
Dan kemudian anda boleh mencari mendapatkan sifat alt itu.
Dan ia akan memberikan anda anak-anak itu.
Jika anda masih ingat bentuk dalam HTML, input unsur-unsur akan mempunyai sifat-sifat nama.
Dan itulah yang menggunakan PHP untuk menghantar permintaan apabila bentuk yang dikemukakan.
>> PENONTON: Adakah anda menyebut sesuatu tentang bagaimana jika anda menggunakan kittens.jpg atau
sesuatu yang mempunyai hilang yang memfailkan folder atau fail lain?
>> ANGELA LI: Ya.
Jadi ini adalah apa yang dipanggil saudara jalan, kerana saya tidak memberi
anda laluan penuh.
Ini seperti apabila dalam C jika anda fopen beberapa fail, jika anda hi.txt fopen, yang
hi.txt dijangka dalam yang sama direktori, kecuali anda memberikan lebih
jalan kompleks.
>> PENONTON: Jadi, anda boleh menentukan mana folder [didengar]?
>> ANGELA LI: Yeah.
Dan anda boleh mencari bagaimana untuk melakukannya.
Tetapi jika saya mahu mendapatkan kittens.jpg keluar direktori induk, saya akan melakukan
.. / Kittens.jpg.
Yeah.
Maaf.
Yeah.
Oh lelaki, saya terlupa soalan.
Apa soalan?
Oh, soalan itu adalah, kittens.jpg dijangka berada dalam direktori yang sama?
Dan dalam kes ini, ia adalah.
Tetapi anda juga boleh memberikan jalan yang tertentu seperti yang ia tidak perlu.
Baik?
>> CSS.
Jadi CSS, seperti HTML, tidak bahasa pengaturcaraan.
CSS adalah hanya satu siri peraturan gaya.
Ia bermaksud Cascading Style Sheets.
Dan anda menggunakannya sempena dengan HTML untuk laman gaya.
Jadi ada tiga cara anda boleh menyertakannya.
Salah satu cara anda boleh melakukannya adalah di kepala bahagian HTML anda, anda hanya boleh
membuka tag gaya dan kemudian melekat beberapa CSS peraturan di sana.
Ia agak OK.
Yeah.
>> PENONTON: Bolehkah anda meletakkan mereka tag gaya di antara, mari kita
katakan, badan dan / badan.
Dan kemudian anda akan menjadi gaya hanya di dalam badan.
>> ANGELA LI: Anda boleh.
Ia akan bekerja.
Tetapi anda tidak perlu, kerana gaya adalah jenis metadata yang harus di
ketua dokumen anda.
Badan perlu benar-benar hanya mengandungi apa yang sebenarnya akan
muncul pada halaman anda.
>> PENONTON: Jadi, anda akan meletakkan gaya dalam kepala anda untuk gaya yang
halaman tapak, bukan?
>> ANGELA LI: Yeah.
Jadi meletakkan gaya di sini, peraturan-peraturan CSS akan terpakai bagi keseluruhan halaman berdasarkan
selectors mereka.
Jadi cara yang lebih baik untuk melakukannya sebaliknya yang mempunyai tag gaya dalam kepala anda,
anda mempunyai pautan ini untuk gaya luaran lembaran seperti saya menunjukkan anda dalam
contoh sebelumnya.
Apa yang dilakukan adalah ia cuba dan mendapati memfailkan style.css dan kemudian menarik ia
dalam dan menggunakan bahawa sebagai gaya untuk halaman.
Dan style.css anda akan hanya kelihatan seperti ini.
Ia hanya akan menjadi sekumpulan CSS.
>> Dan akhirnya, ada cara lain anda boleh termasuk CSS, yang anda benar-benar
harus tidak pernah lakukan.
Ia gaya sebaris panggilan.
Dan jadi apa-apa elemen HTML juga boleh mengambil sifat gaya.
Dan kemudian dalam bahawa sifat gaya, anda boleh memberikan kaedah-kaedah CSS.
Jadi dalam kes ini, apa sahaja div Saya menentukan di sini, ia akan
mempunyai latar belakang hitam dan warna teks putih.
Tetapi anda tidak perlu melakukan ini, kerana apa yang ini tidak adalah ia meletakkan gaya anda
di dalam HTML anda.
>> Dan saya tahu kita telah bercakap tentang HTML adalah struktur dan CSS adalah gaya.
Jika anda melakukan ini, ia bercampur mereka bersama-sama.
Dan ia bukan sangat bersih.
Jadi jangan berbuat demikian.
Menggunakan contoh CSS, di sana, kami hanya pilih badan HTML
dokumentari.
Dan kami seperti, segala-galanya akan menjadi Comic Sans.
Saya juga tidak mencadangkan itu.
Tetapi anda boleh berbuat demikian.
>> Peraturan kedua di sini, ia akan untuk memilih elemen di
halaman dengan ID utama.
Jadi apa sahaja elemen HTML, saya berkata ID = Utama, saya akan memberikan yang
Margin 20-piksel dan menyelaraskan segala-galanya, semua teks, ke pusat tersebut.
Perkara terakhir yang memilih oleh kelas CSS.
Jadi apa-apa elemen pada halaman yang saya berikan kelas bahagian, saya akan menjadikannya
warna latar belakang biru muda.
Yep.
Itu sahaja yang saya mendapat.
Soalan?
>> PENONTON: Apakah hashtag yang sebelum utama lakukan?
>> ANGELA LI: Persoalannya ialah, apakah hashtag sebelum tugasan utama?
Dalam kes ini, hash dalam CSS bermakna pilih oleh ID.
Jadi, jika saya mempunyai beberapa elemen HTML, seperti divID = utama, CSS ini pilihan pelanggan peraturan
perkara dengan ID utama.
Begitu juga, tempoh yang di hadapan seksyen adalah pilih oleh kelas CSS atau
pilih oleh kelas HTML.
>> PENONTON: Kenapa ada mempunyai sebelum 6 dalam warna latar belakang?
>> ANGELA LI: Yeah.
Jadi persoalannya adalah, mengapa terdapat hash sebelum 6?
Ini berbeza daripada hash itu.
Ini bermakna bahawa anda memberikan warna perenambelasan.
Warna supaya hex, ini hanya mewakili warna.
Dan anda masih ingat tiga kali ganda apabila RGB anda lakukan Serangga forensik?
Ini adalah sama.
Yang pertama dua digit mewakili berapa banyak merah dalam warna.
Kedua-dua yang kedua mewakili berapa banyak hijau.
Dan ketiga mewakili berapa banyak biru.
Dan hash adalah ini akan untuk mewakili warna.
>> Jadi apa-apa daripada 0, 0, 0, 0, 0, 0 sehingga F, F, F, F, F, F sah.
Ia beberapa warna sah yang boleh dipaparkan oleh pelayar anda.
Soalan?
>> PENONTON: Apakah perbezaan di antara menggunakan dengan ID dan oleh kelas?
>> ANGELA LI: Soalan ini adalah apa yang perbezaan di antara
menggunakan dengan ID dan kelas?
Anda hanya boleh mempunyai satu unsur dalam Dokumen HTML yang mempunyai ID yang diberikan.
Jadi hanya satu perkara pada halaman saya dibenarkan untuk mempunyai ID utama.
Jadi anda menggunakannya untuk ini adalah pengepala.
Ini adalah navigasi.
Ini adalah nota kaki.
Kelas adalah berbeza, kerana anda boleh memohon kelas sebagai banyak unsur HTML
yang anda mahu.
>> Sebagai contoh, saya seksyen kelas, kerana ada mungkin lebih daripada satu
seksyen di halaman saya.
Anda hanya dibenarkan mempunyai seramai elemen pada halaman yang sama dengan
kelas tetapi hanya satu dengan ID tertentu.
>> PENONTON: Jadi dot mewakili kelas?
>> ANGELA LI: Yeah.
Dot mewakili kelas.
Sejuk.
Itu sahaja yang saya punya, guys.
Terima kasih.
>> [Tepuk tangan]
>> ZAMYLA CHAN: Hai, semua orang.
Saya Zamyla.
Saya akan meliputi PHP, MVC, dan SQL hari ini.
Banyak bahan yang saya akan meliputi akan menjadi cukup banyak
keluar dari pset7.
Baiklah.
Jadi apa PHP?
PHP bermaksud PHP Hypertext Prapemproses.
Jadi, dengan sendirinya, adalah rekursif yang menamakan, yang cukup sejuk.
PHP adalah bahasa skrip pelayan, dan ia menyediakan backend
dan yang asas tidak logik laman web kami.
>> Jadi Angela bercakap banyak tentang HTML dan CSS yang akan membuat struktur
laman web.
Tetapi bagaimana jika anda mahu menukar yang kandungan dinamik atau jika ia berbeza-beza
berdasarkan pengguna atau syarat-syarat tertentu?
Itulah di mana PHP datang masuk
Sekarang, biasanya, PHP mungkin mengambil beberapa kurang garisan untuk melaksanakan perkara yang sama
C. Ini kerana PHP mengendalikan memori pengurusan bagi pengaturcara,
berbanding dengan kita perlu malloc percuma, perkara seperti itu.
>> Tetapi oleh kerana PHP adalah satu tafsiran bahasa, biasanya, ia mungkin melaksanakan
sedikit lebih perlahan daripada C, yang adalah bahasa yang disusun.
Kerana kita pengaturcaraan bergerak bahasa, mari kita lihat bagaimana
sintaks akan berbeza.
Mari kita berhati-hati untuk tidak keliru dengan ini.
Jadi dengan PHP sintaks, sama ada anda menerapkan PHP anda dalam HTML
memfailkan atau dalam. fail php sendiri, anda perlu sertakan kod di tempat terbuka
PHP dan tag PHP tertutup seperti berikut, seperti pada skrin.
>> Pembolehubah dalam PHP.
Setiap pembolehubah tunggal akan bermula dengan tanda $ diikuti dengan nama
pembolehubah anda.
Sekarang, pembolehubah dalam PHP adalah longgar ditaip, yang bermaksud bahawa anda tidak perlu
untuk menunjukkan apa jenis data yang adalah apabila anda mengisytiharkan ia.
Walau bagaimanapun, ini tidak bermakna bahawa mereka tidak mempunyai apa-apa jenis di semua.
Jadi jika saya mengisytiharkan pemboleh ubah dan hanya menetapkan ia sama dengan 1, dan kemudian saya mengisytiharkan
pembolehubah yang lain, menetapkan ia sama dengan "1", dan kemudian satu sama lain 1.0, dengan baik,
bergantung kepada jenis kesaksamaan pengendali saya gunakan, jika saya mahu membandingkan
di semua jenis, maka mereka akan sama.
Tetapi jika saya ingin memastikan bahawa jenis adalah sama, PHP masih boleh melakukan
itu, walaupun kita tidak menunjukkan apa jenis ia adalah apabila kita
pertama membuat fail.
>> Sekarang, dalam PHP, walaupun kita beralih daripada pengaturcaraan
bahasa dari C, kita masih mempunyai kami kepercayaan jika keadaan, seperti ini.
Kami masih mempunyai gelung sementara kami, hanya seperti ini, di mana anda masukkan ke dalam anda
keadaan dan kemudian badan gelung.
Dan kemudian kami juga mempunyai kami untuk gelung, yang biasanya kelihatan seperti ini.
Jadi, jika saya mahu melelar atas segala sembilan psets dan mengemukakan dan memanggil
fungsi submitPset, maka saya boleh berbuat demikian di sini, yang anda lelaki itu mempunyai semua
dilakukan pada tahap ini.
Tahniah, dengan cara itu.
>> Untuk kamera, orang berkata, terima kasih.
Sekarang, jika anda tidak mahu hanya menggunakan ini untuk gelung, maka PHP sebenarnya juga
telah perkara dipanggil gelung foreach.
Jadi, jika saya mempunyai pelbagai integer, 0 melalui 8, yang disimpan di dalam psets pelbagai,
maka saya boleh mempunyai gelung foreach yang iterates atas setiap nombor dalam psets.
Dan kemudian saya dapat panggilan yang sama berfungsi lapan kali,
hanya seperti yang saya lakukan sebelum ini.
Jadi ini bagi setiap gelung adalah bagus, kerana anda tidak perlu jika anda tidak tahu
panjang yang tepat array yang anda telah, kemudian menggunakan gelung foreach ini
akan menjaga untuk anda.
>> Jadi saya membuat psets sebagai array.
Mari kita lihat itu.
Perlengkapan dalam PHP biasanya yang sama seperti orang-orang yang kami telah di C, di mana
anda boleh mengisytiharkan array.
Dan di sini, saya boleh mengisytiharkan pelbagai kosong dan kemudian membina secara dinamik dengan menggunakan
indeks sebagai integer.
Jadi indeks 0, saya akan menyimpan integer dinamakan 1.
Pada indeks 1 daripada senarai saya, saya akan untuk menyimpan nilai 2.
Dan pada indeks ketiga tetapi Nombor kedua, saya akan
menyimpan nombor 12.
>> Sekarang, ini adalah baik dalam bahawa kerja-kerja ia berfungsi dengan baik.
Tetapi mengatakan ia perkara kepada saya apa yang setiap indeks memegang.
Bagi saya, indeks 0 bermakna bagaimana banyak kucing saya.
Dan indeks 1 bermakna bagaimana banyak burung hantu saya.
Dan yang seterusnya bermakna berapa banyak anjing.
Dengan baik, maka ia untuk menentukan bahawa, daripada perlu ingat 0 berkaitan dengan
kucing dan 1 untuk burung hantu, saya boleh menggunakan array bersekutu, yang bermaksud bahawa
bukan integer sebagai indeks saya, Saya benar-benar boleh menggunakan tali.
>> Jadi ini adalah amat berguna.
Dan anda telah pada dasarnya hanya digantikan integer dengan tali.
Dan ada anda mempunyai array bersekutu.
Yeah.
>> PENONTON: Adakah terdapat sebab mengapa ada garis bawah untuk kedua
sebahagian, kerana senarai saya mempunyai array.
>> ZAMYLA CHAN: Soalan ini telah, sedang ada sebab mengapa terdapat satu
menekankan antara dan senarai saya?
No
Itulah betapa saya menamakan ubah saya.
>> PENONTON: Pada yang pertama line, ia satu perkataan.
>> ZAMYLA CHAN: memohon maaf saya.
Saya akan menetapkan bahawa.
Yeah.
Mereka patut menjadi nama pembolehubah yang sama.
Soalan yang bagus.
OK.
Jadi mari kita beralih kepada rentetan dinamika.
Jika saya mahu mengambil dua tali, maka saya boleh concatenate mereka
dengan operator titik.
Jadi jika saya mempunyai Milo sebagai nama pertama dan Pisang sebagai nama akhir, maka
concatenating dengan operator dot dan kemudian meletakkan ruang di antara
akan membuat rentetan yang mengandungi Milo Pisang, yang saya boleh echo atau,
sebaliknya, mencetak.
>> Bercakap gema, mari kita bercakap kira-kira yang berguna beberapa -
oops.
Saya minta maaf.
Beberapa fungsi PHP berguna.
Jadi kita mempunyai -
masalah teknikal.
Sebentar.
Saya dihantar.
Masalah PowerPoint.
Dan kita kembali dengan fungsi PHP.
>> Oleh itu, kita telah memerlukan fungsi, di mana jika anda meninggal dalam fail, di sini hanya
contoh fail yang Saya mungkin lulus masuk
Kemudian yang akan termasuk kod PHP dari fail yang saya nyatakan.
Dan ia akan menilai yang masuk
Maka kita juga mempunyai gema, yang adalah selari dengan printf.
Keluar yang selari untuk memecahkan, yang keluar daripada blok
kod yang anda masuk
Dan kemudian cek kosong sama ada yang diberikan berubah-ubah adalah seperti batal atau sifar atau
apa sahaja disamakan dengan menjadi kosong.
Yeah.
>> PENONTON: Untuk keadaan jalin-menjalin tali operator dot satu, dalam PHP, adalah bahawa
sama seperti dalam JavaScript mana ia menggunakan dot untuk keadaan jalin-menjalin bermakna ditambah?
Jadi bagi nama penuh, anda boleh mempunyai dolar menandatangani + pertama dan kemudian + bertahan?
>> ZAMYLA CHAN: Yeah.
Jadi persoalannya ialah sama ada kita dalam PHP boleh menggunakan rentetan dinamika yang sama
seperti dalam JavaScript dengan plus.
Dan Yusuf akan masuk ke dalam yang kemudian.
Saya fikir dia mempunyai slaid pada itu.
Sebenarnya, ia adalah berbeza.
Jadi dalam JavaScript, anda perlu menggunakan tambah untuk concatenate tali.
Dan dalam PHP, anda perlu menggunakan operator titik.
Jadi mereka yang berbeza.
>> OK.
Jadi sekarang kita telah meliputi semua PHP ini, jika tidak ia
benar-benar sangat berguna?
Nah, ia datang dalam berguna apabila kita boleh menggabungkan ia dengan HTML kami.
Jadi PHP kami akan memberikan kita kuasa untuk mengubah HTML kandungan halaman sebelum
muatan itu.
Jadi berdasarkan keadaan yang berbeza, biasanya pengguna tertentu itu
log masuk, kita boleh memaparkan maklumat yang berbeza.
Linda, adakah anda mempunyai satu soalan?
>> PENONTON: Bolehkah anda concatenate integer juga?
>> ZAMYLA CHAN: Ya, anda boleh.
Jadi soalan itu jika anda boleh concatenate integer atau lain-lain
variable.s sekarang, kita beralih kepada MVC, yang adalah satu paradigma yang kita digunakan dalam
pset7 dan banyak web designer gunakan untuk menganjurkan kod di dalam fail
di laman web mereka.
M bermaksud Model.
Dan pada dasarnya, fail model akan berurusan dengan interaksi dengan pangkalan data.
Melihat fail, ia berkaitan dengan estetika laman web.
Dan Controller mengawal permintaan pengguna, mem-parsing
data, tidak logik yang lain.
>> Dalam pset7, kami digabungkan model dan pengawal.
Dan kita hanya memanggil mereka dan pengawal memasukkannya ke dalam direktori awam.
Dan gambar-gambar yang berpendapat, kita menggunakannya sebagai template di dalam direktori template ini.
Jadi gambar rajah ini di sini juga mewakili jenis yang sama bahagian dengan
model dan pengawal ungu di sini di sebelah kiri dan
pandangan di sebelah kanan.
Jadi ini adalah satu skema sebahagian dari anda mungkin telah melihat pada Waktu pejabat atau
gambar rajah yang kami lukisan sebagai anda telah memikirkan Serangga anda.
>> Jadi di sini, dalam pengawal yang diberikan, model pengawal, kita mempunyai fungsi-fungsi
yang berkaitan dengan pertanyaan SQL pangkalan data, melaksanakan logik PHP.
Mungkin anda akan mencari saham di Yahoo!
Kewangan.
Atau mungkin, anda hanya akan menyemak untuk melihat sama ada pengguna yang telah mengemukakan
membentuk sudah sebelum mempunyai melawat halaman anda.
Dan kemudian anda boleh menyebabkan yang membentuk di sini.
Selepas borang yang telah dikemukakan oleh pengguna, tindakan yang
dinyatakan dalam bentuk ini HTML tag akan menunjukkan halaman yang ia
mengembalikan data kepada.
>> Jadi semua maklumat yang akan dihantar pulang ke pengawal anda.
Maka anda mungkin akan melakukan sedikit lebih logik pada itu dan mungkin melaksanakan beberapa
lebih pertanyaan dalam pangkalan data SQL dan kemudian, akhirnya, datang dengan baik
set penuh maklumat yang akan anda lulus dalam ke dalam beberapa contoh yang lain
bahawa maklumat yang dipaparkan itu.
Sekarang, bagaimana kita sebenarnya pakej bahawa maklumat up?
Nah, kita mempunyai fungsi yang dipanggil Render yang dalam fail functions.php dalam
pset7, di mana anda lulus dalam nama fail, nama templat.
>> Dan Datuk juga lulus dalam pelbagai bersekutu.
Dan supaya array bersekutu mewakili maklumat yang berbeza
yang anda mahu untuk lulus masuk
Sekarang, apa yang akan menjadi berterusan dalam contoh-contoh ini adalah bahawa kunci atau,
sebaliknya, kunci bersekutu yang tatasusunan, mereka adalah apa yang akan menjadi
dijangka berterusan oleh template, kerana ia tahu ia memerlukan
sesuatu yang dinamakan mesej atau dipanggil nama.
Dan kemudian perkara yang di sebelah kanan, yang nilai sebenar, jadi dalam kes ini, siapa yang
budak yang baik dan Milo, mereka akan sebagai nilai-nilai yang berubah
pengawal berubah setiap masa atau berdasarkan keadaan tertentu dan
akan berlalu yang masuk
>> Jadi di template, kita melihat bahawa kita menggunakan aksara khas HTML,
yang hanya pada dasarnya bermakna bahawa kita mahu untuk mendapatkan tali peer bahawa
pengguna meletakkan masuk
Dan kita mahu menggantikan Mesej di sana.
Demikian maka apabila kita benar-benar melihat fail, khusus
maklumat diluluskan masuk
Nota bahawa kunci bagaimana menyebabkan kerja-kerja adalah bahawa kunci bersekutu yang
tatasusunan, mereka menjadi berubah-ubah nama-nama di sini.
Dan sebagainya nilai-nilai yang penting dalam array bersekutu kemudian menjadi
nilai pembolehubah tersebut.
>> Sekarang, mari kita beralih kepada SQL.
Ia bermaksud Berstruktur Buat pertanyaan Bahasa.
Dan hal ini hanya pengaturcaraan Bahasa yang direka
untuk menguruskan pangkalan data.
Dan ia sangat berguna bagi kita dalam laman web kewangan pset7 kami.
Pada asasnya, ia hanya satu cara yang mudah untuk mengesan dan menguruskan objek dan jadual
dan menghubungkan mereka dengan satu sama lain.
Sekarang, fikirkan pangkalan data SQL anda pada dasarnya sebagai fail Excel, mungkin,
dengan pelbagai lembaran tab.
>> Jadi, anda boleh mempunyai beberapa jadual, mungkin, yang dikaitkan dengan satu sama lain.
Dan sama seperti Excel, kita mempunyai banyak fungsi yang kita mahu.
Sebagai contoh, kita boleh memilih baris tertentu.
Kami boleh memasukkan maklumat.
Kami boleh mengemas kini baris.
Dan kita juga boleh memadam sesuatu.
>> SQL memilih kerja-kerja dengan memilih baris atau deretan tiang dinyatakan dari
pangkalan data yang sepadan dengan tertentu kriteria yang anda menunjukkan.
Jadi di sini apabila saya melihat pilih * dari ahli-ahli sihir di mana rumah = Ravenclaw, maka
Saya memilih *, yang bermaksud saya memilih setiap kolum tunggal dalam yang
baris dari jadual ahli-ahli sihir itu tetapi hanya jika ruangan rumah sama Ravenclaw.
Sekarang, ini adalah tulen atau SQL.
Jadi, jika saya pergi ke phpMyAdmin, yang merupakan cara tertentu yang kita gunakan untuk menguruskan
pangkalan data SQL kita, maka saya boleh memasukkan itu ke dalam laman web yang phpMyAdmin.
Dan yang akan melaksanakan.
>> Tetapi kita sebenarnya mahu melakukan yang di sebelah PHP.
Jadi bagaimana kita berbuat demikian?
Nah, kita menggunakan fungsi pertanyaan tersebut, yang pada dasarnya melaksanakan bahawa SQL query.
Menggunakan?
sebagai pemegang tempat, kita boleh lulus dalam tertentu nilai kepada rentetan kita yang kita
mahu menggantikan.
Jadi mungkin saya menyimpan berbeza nilai-nilai dalam curr_house, yang
mewakili rumah semasa bahawa saya akan melalui.
Jadi saya boleh lulus bahawa dalam sebagai pemegang tempat yang dengan tanda tanya.
Dan kemudian saya pada dasarnya akan melaksanakan Perkara yang sama seperti yang saya lakukan sebelum ini, kecuali
kini, saya dalam PHP.
>> Dan pertanyaan akan kembali satu array bersekutu.
Dan saya akan menyimpannya di dalam baris.
Sekarang, pertanyaan sentiasa boleh gagal.
Mungkin pertanyaan SQL tidak dapat melaksanakan kerana jadual tidak wujud.
Atau mungkin, ruangan itu tidak wujud.
Sesuatu telah berlaku.
Nah, dalam kes itu, anda akan mahu membuat memastikan bahawa anda menyemak sama ada
pertanyaan kembali palsu.
Dan itu dengan menggunakan tiga sama operasi di sana.
>> Dan kemudian saya meminta maaf, yang merupakan satu lagi Fungsi CS50, lulus dalam mesej.
Dan jika anda melihat ke dalam meminta maaf, ia hanya benar-benar tidak adalah menyebabkan apology.php.
Yeah.
>> PENONTON: Bolehkah anda menjelaskan apa yang bintang tidak antara pilih dan dari?
>> ZAMYLA CHAN: Ya, benar-benar.
Jadi bintang di antara pilih dan dari bermakna saya ingin memilih keseluruhannya
keseluruhan baris dari jadual saya.
Saya boleh telah ditunjukkan pilih menamakan, tahun, rumah.
Dan saya hanya akan mendapat ketiga-tiga ruangan dalam jadual saya.
Tetapi jika saya katakan pilih *, maka saya akan mendapatkan segala-galanya dalam lajur tersebut.
Kemudian saya akan pergi anda di belakang yang pertama.
>> PENONTON: Jadi ini masih dalam SQL, bukan?
Adakah pertanyaan ini atau PHP ini?
>> ZAMYLA CHAN: Kami dalam pertanyaan.
Jadi ini adalah dalam PHP.
Jadi menggunakan fungsi PHP pertanyaan, kami melaksanakan pertanyaan SQL.
>> PENONTON: Apakah apa-apa dalam SQL sensitif, seperti memilih
atau ahli-ahli sihir atau rumah?
>> ZAMYLA CHAN: Apakah apa-apa dalam SQL sensitif?
Saya percaya begitu, ya.
Saya percaya bahawa INSERT dan DARIPADA dan MANA adalah sangat sensitif.
Tidak?
>> ROB Bowden: Jadi, ia adalah sebaliknya.
Nama-nama lajur dan cara jadual, semua daripada mereka adalah sangat sensitif.
Tetapi mana-mana kata kunci MySQL, seperti SELECT, DARI, dan MANA, mereka tidak
sensitif.
OK.
Jadi yang bertentangan dengan apa yang saya katakan.
Jadi semua MySQL kata kunci -
pilih, dari, di mana - mereka tidak sensitif.
Tetapi segala-galanya adalah.
OK.
Anda di hadapan.
>> PENONTON: Jika saya mempunyai $ baris dari segi lebih daripada satu baris, adakah itu bermakna adalah
hanya menjadi pelbagai bersekutu?
>> ZAMYLA CHAN: Jadi soalan itu jika baris mempunyai lebih daripada satu baris dalam ia, adakah
ia menjadi pelbagai bersekutu?
Jadi adalah pelbagai bersekutu tatasusunan sudah.
Jadi, walaupun terdapat hanya satu baris kembali, maka anda akan perlu pergi ke
Isi 0 keputusan itu.
Dan maka anda dapati bahawa baris pertama.
Ya, Belinda?
>> PENONTON: Apabila anda menggunakan ===, Adakah ini contoh sahaja?
Atau ada orang lain?
>> ZAMYLA CHAN: Jadi dalam kes ini, === adalah perbandingan di seluruh jenis.
Maaf. === Adalah perbandingan yang membandingkan jenis.
Dan kemudian == membandingkan semua jenis.
>> PENONTON: Bolehkah anda menjelaskan apa yang baris adalah dalam situasi ini?
Adakah ia berdayung data?
>> ZAMYLA CHAN: Dalam slaid seterusnya, saya akan menjelaskan apa baris adalah.
Jadi, jika anda tidak keberatan memegang off pada itu.
Dan kemudian anda di belakang?
>> PENONTON: Untuk fungsi seperti pertanyaan, menyebabkan dan meminta maaf [didengar]?
>> ZAMYLA CHAN: Soalan ini ialah sama ada fungsi-fungsi ini - pertanyaan, meminta maaf,
dan menyebabkan -
adalah biasa di seluruh PHP.
Ini adalah orang yang CS50 menulis untuk pset7.
Dan Jay?
>> PENONTON: Apabila anda perlu berkata $ _session, Adalah bahawa hanya untuk ID?
Atau boleh kamu kata di sini?
>> ZAMYLA CHAN: Jadi soalan itu, apabila kita menggunakan $ _session, yang tertentu yang
berubah-ubah global yang kita gunakan.
Di sini boleh ubah ini akan menjadi tempatan dengan fungsi kami.
Jadi kita hanya mengisytiharkan pembolehubah baru.
>> PENONTON: Bagaimana memohon maaf dilaksanakan?
>> ZAMYLA CHAN: Soalan ini adalah, bagaimana meminta maaf dilaksanakan?
Dan saya rasa ini sebenarnya adalah cukup amalan yang baik untuk anda semua untuk pergi ke
seksyen functions.php dan melihat meminta maaf dan melihat bagaimana anda boleh mempunyai
dilakukan sendiri.
Jadi saya boleh meninggalkan yang kepada anda tetapi hanya mengatakan bahawa jika anda melihat penggunaan di memohon maaf,
maka ia mengambil mesej yang anda dikemukakan untuk memohon maaf, dan kemudian ia
menyebabkan mesej itu.
Apa-apa soalan lagi?
Saya suka soalan.
Jadi memastikan mereka akan datang.
>> PENONTON: [didengar]
echo atau cetak di sana?
>> ZAMYLA CHAN: Soalan ini adalah, boleh kita bukan sahaja telah meletakkan
echo atau cetak di sana.
Jadi yang akan telah melakukan sesuatu yang sedikit berbeza.
Yang akan dicetak pertanyaan gagal ke dalam itu -
baik, sekarang, kita sebenarnya dalam pengawal kami.
Oleh itu, kita tidak benar-benar mempunyai HTML ditubuhkan di sini.
Meminta maaf dengan menjadikan apologize.php sebenarnya pelencongan anda untuk apology.php.
OK.
>> Jadi sekarang, mari kita pergi untuk menangani soalan daripada awal tentang apa yang
benar-benar adalah baris.
Nah, pertanyaan akan kembali pelbagai baris.
Dan setiap baris diwakili oleh pelbagai bersekutu.
Jadi, jika saya telah dilaksanakan beberapa SQL query dan Saya disimpan hasil dalam baris, maka
menggunakan gelung foreach, maka array nama adalah yang pertama di sana - baris.
Dan kemudian saya akan memanggil setiap baris di sana $ baris.
>> Jadi iterating lebih itu, saya boleh kemudian mengakses ruangan nama barisan yang diberikan itu,
ruangan tahun, dan ruangan rumah.
Perhatikan bahawa saya tidak akan dapat melakukan ini dengan baris, kerana baris indeks
nama tidak wujud.
Baris hanya pelbagai array bersekutu.
Jadi anda mempunyai dua tingkat di situ.
Setelah anda mempunyai pelbagai baris, anda perlu masuk ke dalam itu.
Dan kemudian anda boleh mengakses ruangan.
Adakah yang menjadikan ia jelas?
Ya, di hadapan?
>> PENONTON: [didengar] membuka kurungan untuk [didengar]?
>> ZAMYLA CHAN: Maafkan saya?
>> PENONTON: The kurungan terbuka.
>> ZAMYLA CHAN: Ini di sini?
Itu membenarkan saya untuk memasukkan berubah-ubah itu.
Yeah.
>> PENONTON: Apabila anda mencetak, adakah anda percetakan kepada kod HTML?
>> ZAMYLA CHAN: Ya.
Apabila saya mencetak, ini di sini adalah di dalam template saya sekarang, jadi
pandangan saya kaedah MVC.
Jadi saya mencetak ke dalam HTML.
>> PENONTON: Jadi, jika kita pergi ke pemaju alat selepas berjalan ini, kita boleh
yang benar-benar dalam kod?
>> ZAMYLA CHAN: Itu yang besar soalan, ya.
Jadi, jika anda pergi ke dalam alat pemaju dalam Firefox menggunakan Firebug atau
Chrome, maka ya, anda boleh melihat HTML tertentu.
Jadi ia tidak akan menunjukkan $ baris ["Nama"].
Ini akan menunjukkan yang mana Nama berturut-turut itu.
>> PENONTON: Hanya isu umum, apa adalah tr dan td ditakrifkan sebagai?
Mengapa kita [didengar]?
>> ZAMYLA CHAN: baris jadual tr, jadual kemudian td lajur.
OK.
>> PENONTON: Ya, ia adalah data jadual.
>> ZAMYLA CHAN: data Jadual.
Yeah.
>> PENONTON: Ia berturut-turut di mana berturut-turut dianggap seperti tiang?
>> ZAMYLA CHAN: Maaf.
Bolehkah anda mengulangi itu?
>> PENONTON: Bagaimana anda menggambarkan baris?
>> ZAMYLA CHAN: Bagaimana anda menggambarkan baris dalam apa jenis cara?
Adakah anda bercakap mengenai baris sini atau tr baris?
>> PENONTON: Deretan.
>> ZAMYLA CHAN: Ini baris di sini?
Saya menggambarkan ini sebagai Saya melaksanakan pertanyaan saya.
Dan ia berkata, OK, saya mempunyai sama ada 0 hingga n jumlah baris yang sepadan dengan kriteria
yang anda telah disoal.
Jadi saya mempunyai beberapa beberapa baris.
Jadi baris, yang $ baris, kedai-kedai setiap salah seorang daripada mereka baris dalam array.
Jadi, walaupun ia hanya satu daripada mereka, ia masih pelbagai baris yang sepadan dengan ia.
>> Jadi kemudian, misalnya, ini adalah sama dengan apabila anda diambil
cache daripada pengguna.
Dan kriteria terdapat di mana ID sama ID sesi.
Terdapat benar-benar hanya adalah satu baris yang boleh menandingi.
Tetapi masih baris sahaja pulang satu baris.
Jadi, anda akan perlu pergi ke baris, Isi 0, cache indeks
sebenarnya dapat cache anda.
>> PENONTON: Apakah fungsi cetak dalam echo perkara yang sama?
>> ZAMYLA CHAN: Ya.
Ya.
Cetak gema yang sama.
>> PENONTON: Apakah loop foreach itu satunya cara untuk indeks ke dalam baris?
>> ZAMYLA CHAN: Apakah gelung foreach satu-satunya cara yang anda boleh
melelar melalui baris?
No
Anda juga boleh menggunakan untuk gelung, dengan syarat anda tahu panjang
array berturut-turut itu.
>> PENONTON: Bolehkah anda mengaksesnya menggunakan berturut-turut sebagai [didengar]?
>> ZAMYLA CHAN: Jadi anda tidak boleh mengaksesnya hanya menggunakan baris jika anda tidak mempunyai
loop foreach syarat anda tidak diisytiharkan baris.
Ya.
Ya, dalam putih.
>> PENONTON: Jadi, apa yang tr dan td lakukan?
>> ZAMYLA CHAN: Jadi tr dan td tag HTML.
tr menunjukkan permulaan daripada baris jadual.
Dan setiap td menunjukkan jadual baru ruangan data.
>> PENONTON: Untuk visual apa yang berturut-turut adalah seperti, bayangkan SQL, bagaimana
mereka mempunyai berturut-turut.
[Didengar].
>> ZAMYLA CHAN: Yeah.
Itu merupakan titik besar.
Anda boleh menggambarkan baris dan hanya seperti dalam jadual Excel, hanya
senarai baris.
OK.
Baiklah.
Jadi sekarang kita telah pergi lebih memilih, jika tidak ada apa-apa soalan lagi, kita akan
pergi lebih ke memasukkan.
Jadi, jika saya mahu memasukkan ke dalam beberapa meja dan memasukkan ruangan tertentu
nilai, saya boleh memasukkan diri saya ke Ravenclaw dalam tahun 7.
Tetapi kadang-kadang mungkin terdapat dua salinan nilai-nilai, seperti yang kita lihat dalam pset7 apabila kita
telah mengemaskini portfolio kami.
>> Jadi dalam kes ini, kita mahu menggunakan ON PENDUA UPDATE PENTING, supaya kita tidak
menyimpan pelbagai baris dengan yang sama menghargai tetapi mengemaskinikannya.
Maka kita sebenarnya mempunyai kemas kini, yang tidak memasukkan satu.
Ia hanya satu pengemaskinian di mana anda mengemas kini dalam jadual tertentu dengan yang diberikan
kriteria dan kemudian, akhirnya, memadam, yang melakukan perkara yang sama.
>> PENONTON: Bolehkah anda secara ringkas pergi ke kunci pendua?
>> ZAMYLA CHAN: Yeah.
Pada dasarnya di sini, saya mempunyai INSERT INTO gringotts, adalah, galleons, nilai-nilai.
Tetapi ID, mungkin, adalah kunci yang unik nilai ditubuhkan pada MySQL jadual.
Jadi jika saya sudah mempunyai ID yang ditubuhkan, maka saya tidak boleh memasukkan baris baru.
Jadi, jika ia tidak wujud pun, maka saya perlu mengemaskinikannya.
Di tengah-tengah berwarna putih itu.
>> PENONTON: Jadi memasukkan, mengemaskini, memadam, dan pilih, adalah mereka semua ada
tempatan [didengar]?
>> ZAMYLA CHAN: Jadi memasukkan, mengemas kini, memadam, dan
pilih semua pertanyaan SQL.
Jadi, setiap kali anda menggunakan SQL, anda akan mempunyai orang-orang yang ada.
>> PENONTON: Kembali kepada kuiz yang lepas -
terdapat satu soalan yang diuruskan jika anda mempunyai satu jadual dan mahu
memasukkan skor ujian dalam satu dan anda memasukkan nama anda supaya ia tidak akan membiarkan anda
[Didengar] skor ujian rakan anda.
Bagaimana anda akan melakukannya dengan memasukkan?
>> ZAMYLA CHAN: Jadi soalan adalah kira-kira soalan pertengahan penggal sebelumnya.
Saya tidak sedar yang satu ia sekarang.
Jadi mungkin selepas itu, jika anda mahu datang dan menunjukkan kepada saya, maka saya boleh
pasti memberikan tips.
Tetapi bercakap memasukkan perkara, seperti mengambil Perincian seseorang apabila anda
tidak, mari kita bercakap tentang Serangan suntikan SQL.
Jadi serangan suntikan SQL pada dasarnya di mana seseorang mengambil
kesempatan daripada keselamatan yang rendah yang cara yang anda mengambil data.
>> Jadi di sini, seperti dalam kewangan CS50, apabila kita log masuk, kita boleh memasukkan dalam
nama pengguna dalam laman log masuk yang, kotak teks yang pertama, dan
kemudian masukkan dalam kata laluan.
Mungkin kod PHP kita mungkin kelihatan sesuatu seperti ini, di mana $ nama pengguna
adalah nama pengguna pasca-data dan kata laluan adalah kata laluan selepas data.
Dan kemudian kita hanya melaksanakan pertanyaan kita, katakan, OK, baik, pertanyaan kita akan
pilih daripada pengguna kami, di mana nama pengguna adalah
salah satu yang mereka dikemukakan.
Dan kata laluan adalah kata laluan, bermakna kata laluan sepadan.
>> Sekarang, bagaimana jika bukan sebenarnya mengemukakan kata laluan sebenar, seperti
12345 dan meneka di serampang yang mengatakan kata laluan dan cuba untuk hack mereka
akaun, bagaimana jika sebaliknya mereka dikemukakan ini.
Mereka boleh taip mungkin meneka di kata laluan.
Dan kemudian mereka akan menamatkan quote kemudian taip atau 1 = 1.
Itu langkah anda terus ke dalam SQL query untuk kelihatan seperti ini.
Pilih daripada pengguna di mana nama pengguna = Matlamat serampang dan kata laluan
sama teratai atau 1 = 1.
>> Jadi, sama ada kata laluan yang mempunyai sebagai betul atau 1 = 1,
yang selalunya benar.
Jadi dalam kes ini, pada dasarnya, pengguna boleh mengambil kesempatan ini dan hanya layari
diri mereka di dalam dan di hack akaun seseorang.
Jadi itulah sebabnya kita mahu mengelakkan seseorang mempunyai untuk melakukan ini.
Tetapi bernasib baik, fungsi pertanyaan oleh lulus dalam ruang letak akan mengambil
menjaga ini untuk anda.
Juga, anda akan biasanya tidak mahu untuk benar-benar mengemukakan kata laluan
diri mereka sendiri.
Itulah sebabnya kita dicincang atau disulitkan mereka dalam kewangan CS50.
>> PENONTON: Kuiz lalu bercakap mengenai tali melarikan diri MySQL.
Adakah kita perlu bimbang tentang itu?
>> ZAMYLA CHAN: Itu merupakan soalan yang baik.
Tali melarikan diri MySQL pastinya fungsi yang digunakan dalam pertanyaan kami.
Tetapi pasti melihat ke dalam itu.
Saya mengatakan bahawa adalah permainan yang adil untuk mengetahui yang anda perlukan untuk memanggil bahawa
berfungsi pada tali.
Ya, Belinda?
>> PENONTON: Bagaimana anda tahu apabila ia petikan tunggal atau sebut harga dua kali?
Dan juga, saya rasa seperti dalam syarahan anda sebut sesuatu tentang tidak mempunyai
yang [didengar] atau sesuatu atau petikan tunggal kedua pada akhir.
Saya fikir dia menegaskan dalam kuliah yang anda sepatutnya mempunyai apostrofe 1
dan kemudian tidak mempunyai apostrofi atau sesuatu.
>> PENONTON: [didengar].
>> PENONTON: Masalahnya tunggal yang lalu quote di sana pada kotak kedua
tidak berada di sana.
[Didengar]
Kerana apabila anda mengambil yang tunggal lepas memetik keluar dan memadankannya untuk kandungan
di mana kata laluan adalah, jika anda mempunyai yang pertanyaan, terdapat petikan tunggal di
akhir sudah.
Anda mahu menggunakan bahawa petikan tunggal sebagai salah satu yang berhadapan yang
[Didengar].
Jadi apa sebenarnya dalam teks yang kotak tidak perlu itu.
>> ZAMYLA CHAN: Saya akan mengubah itu.
OK.
Jika tidak ada apa-apa soalan, maka saya akan memindahkannya kepada Yusuf untuk bercakap
kira-kira JavaScript, dan sebagainya.
>> [Tepuk tangan]
>> JOSEPH ONG: Oleh itu, kita menjalankan sedikit di belakang.
Jadi, jika anda perlu meninggalkan, itu OK.
Tetapi kami meminta anda menyimpan kepala anda ke bawah jika anda di tengah-tengah, jadi anda
tidak menghalang kamera dan anda menggunakan keluar belakang jika anda perlu.
Saya Yusuf dengan cara itu.
Hi.
Ujian, ujian.
Dan, adalah bahawa yang baik?
Sejuk.
>> Jadi video itu juga akan mencatatkan dalam talian bagi mereka yang
terpaksa pergi sekarang.
Janggal.
OK.
Jadi kajian kuiz.
Ini adalah kucing.
Sekarang, JavaScript, yang mungkin tidak sebagai aww bagi sebahagian dari kamu lelaki.
OK.
Jadi, itu pertama, ingat dari Zamyla.
Ingat bahawa PHP adalah berjalan pada pelayan.
Dan banyak kali, kamu semua menulis gelung dalam PHP untuk mencetak HTML, bukan?
Jadi sekali kod yang melaksanakan, yang Output HTML yang anda mencetak
akan dihantar kepada pengguna.
Dan sekali yang berlaku, tidak lebih PHP boleh dijalankan, melainkan jika anda memuatkan semula halaman, daripada
Sudah tentu, yang reexecutes PHP.
Tetapi apabila anda mencetak HTML yang, anda tidak boleh pergi mana-mana.
>> Jadi HTML yang dihantar kepada pengguna, yang adalah pelayar di sini, di mana
Milo menggunakan komputer.
Dan dengan baik, ada beberapa perkara yang sebaik sahaja kami menghantar HTML untuk pengguna.
Kadang-kadang kita mahu melakukan sesuatu seperti apabila anda klik pada sesuatu, kita mahu
kotak amaran muncul, orang-orang macam interaksi, seperti apabila anda menekan
utama, apabila anda klik sesuatu di halaman, saya mahu sesuatu yang berlaku.
Nah, anda tidak boleh reexecute PHP kod sekali HTML yang ditetapkan.
Jadi bagaimana anda melakukan ini?
>> Kami memperkenalkan bahasa baru dipanggil JavaScript, yang berlangsung dalam pelayar
yang membolehkan anda untuk melakukan perkara-perkara untuk HTML selepas anda menerima
mereka dari pelayan.
Dan ini adalah mengapa kita panggil ia satu pelanggan-sampingan bahasa pengaturcaraan.
Ia berfungsi pada komputer anda -
pelanggan.
Apa-apa soalan tentang itu setakat ini?
Paradigma yang masuk akal kepada rakyat?
OK.
Baik.
Baiklah.
Jadi perkara pertama yang perlu ambil perhatian adalah JavaScript bukan PHP.
>> Mereka mempunyai beberapa sintaks yang berbeza, yang kita akan pergi ke dalam.
Dan mereka mempunyai kegunaan yang sangat berbeza.
JavaScript, sekali lagi, untuk anda penyemak imbas, untuk pelanggan.
Server berjalan di suatu tempat di orang lain komputer yang menghantar maklumat
kepada anda, betul?
Jadi, jika kami meminta anda untuk menulis kod PHP pada soalan peperiksaan, tidak menulis
JavaScript dan sebaliknya.
Anda hanya akan kehilangan mata, dan ia tidak akan betul.
>> Jadi mari kita masuk ke beberapa perbezaan sintaksis -
JavaScript di sebelah kiri dan PHP di sebelah kanan.
Perkara pertama yang anda akan notis dengan JavaScript, kita mengisytiharkan pembolehubah dengan
kata kunci var -
V-A-R. PHP digunakan tanda dolar, sebagai Zamyla dibincangkan sebelum ini.
Jika anda mahu mengaku bersekutu satu pelbagai, kita lihat sintaks biasa di
sebelah kanan dengan PHP.
Di sebelah kiri, dan bukannya anda menggunakan pendakap kerinting.
Dan kemudian kunci anda adalah di sebelah kiri.
Kemudian anda mempunyai tanda bertindih.
Dan kemudian anda mempunyai nilai-nilai yang anda mahu.
>> Jadi ini adalah bagaimana anda akan melakukannya dalam PHP di sebelah kanan dengan kedua yang
talian yang bermula pada Milo.
Dan itu adalah bagaimana anda akan melakukannya pada meninggalkan sampingan JavaScript jika anda mahu
apa yang kita panggil objek.
Dan objek dalam JavaScript adalah hanya array bersekutu.
Jadi, jika anda mahu untuk mengakses bidang, PHP anda menggunakan sintaks kurungan ini.
Dan cara ini, anda boleh menyerahhakkan semula ini bidang pemilik untuk Lauren.
>> Nah, dalam JavaScript, jika seseorang mahu mengakses bidang dan mengubahnya, anda boleh
menggunakan sintaks titik.
Anda juga boleh menggunakan sintaks pendakap.
Tetapi anda tidak boleh menggunakan dot sintaks dalam PHP.
Itu tidak akan berfungsi.
Ia hanya berfungsi dalam PHP.
Dan akhirnya, untuk mencetak perkara kepada konsol, anda menggunakan console.log, yang
anda semua menggunakan banyak dalam pset8.
Anda boleh console.log itu.
>> Jika anda ingin mencetak satu pameran di PHP, anda perlu menggunakan cetak r.
Dan di sebelah kanan, anda lihat i hash string dinamika di sana.
Seseorang bertanya lebih awal.
Saya menggunakan ditambah dalam JavaScript.
Jika saya ingin concatenate sesuatu dalam PHP, saya menggunakan titik.
Ini adalah berbeza.
Jika anda menulis kod PHP, tidak menggunakan ditambah.
Jika anda menulis JavaScript kod, tidak menulis titik.
Ia akan menjadi salah.
Dan anda akan menjadi sedih.
>> Perbezaan Jadi sintaksis.
Tahu sintaks anda, kerana jika anda perlu menulis soalan dan anda menggunakan sintaks
dari bahasa yang salah, ia tidak akan berfungsi.
Dan ia akan menjadi salah.
Jadi mari kita bercakap tentang beberapa kawalan mengalir perbezaan, bagaimana anda menggunakan
gelung dalam setiap daripada mereka.
Zamyla pergi ke sebelah kanan.
Barangan di sebelah kanan harus biasa.
Mari kita lihat di sebelah kiri.
>> Apabila anda menggunakan untuk n gelung dalam JavaScript, gelung pembolehubah anda, var i di sana,
gelung lebih kunci array.
Jadi anda lihat nama, rumah, dan peranan.
Jika saya console.log i, saya mendapat nama, rumah, dan peranan.
Mereka adalah kunci.
Dalam JavaScript, gelung foreach pergi berbanding nilai array ini.
Jadi anda notis mereka kedua-dua i.
Tetapi di sini di sebelah PHP, ia mencetak keluar Milo, CS50, dan Maskot.
Mereka adalah nilai-nilai dalam PHP.
>> Jadi ini adalah bagaimana kedua-dua adalah berbeza dalam bahasa-bahasa berbeza.
Jadi, jika anda menggunakan foreach yang gelung, jangan menganggap bahawa ia
memberi anda kunci.
Dan jika anda menggunakan untuk n gelung, tidak menganggap ia memberi anda nilai.
Adakah ini masuk akal setakat ini?
Slaid seterusnya akan menunjukkan kepada anda bagaimana anda boleh mengakses sebaliknya pada
setiap daripada mereka.
>> Nah, jika anda mempunyai kunci dalam JavaScript dan anda mahu nilai keluar,
anda hanya indeks ke dalam pelbagai dengan itu.
Jadi Milo i akan mendapatkan apa yang anda mahu - nilai.
Ada sintaks ini berbeza dalam PHP.
Jika anda benar-benar ingin tahu, saya tidak rasa kita telah menunjukkannya kepada anda lagi.
Tetapi jika anda berminat, anda boleh menggunakan sintaks tambahan ini di sebelah kanan
sampingan yang benar-benar akan membiarkan anda mendapat kunci dalam PHP apabila anda menggunakan
loop foreach.
Jadi hanya sedikit perkara remeh jika anda berminat.
>> Jadi itu hanya untuk menunjukkan Perbezaan antara kedua-dua gelung.
Jangan campuran mereka apabila anda pengaturcaraan soalan.
Apa-apa soalan tentang itu.
Sejuk.
Baiklah.
JavaScript objek.
Saya bercakap tentang mereka.
Mereka seperti array bersekutu.
Satu perkara yang saya ingin anda untuk ambil perhatian di sini ialah satu nilai yang bersekutu satu
array boleh menjadi apa-apa dalam JavaScript.
>> Ia juga dapat menjadi fungsi, seperti di sana.
Saya mempunyai fungsi yang adalah nilai kunci.
Dan jika saya mahu panggil fungsi itu, Saya hanya mengakses kulit.
Dan kemudian saya meletakkan kurungan selepas itu.
Dan yang bekerja.
Jadi apa-apa soalan?
Tidak?
OK.
Baik.
JavaScript, seperti PHP, adalah longgar ditaip.
Apa maksudnya?
>> Ia mempunyai jenis.
Tetapi apabila anda mengisytiharkan JavaScript berubah-ubah, yang kamu katakan var i.
Anda tidak mengatakan ia.
Itu bukan apa-apa.
Anda hanya mengatakan ia pembolehubah.
Dan kemudian JavaScript akan mengendalikan jenis di bawah hud untuk anda.
Kita bebas boleh menukar antara jenis kerana ini.
Jadi saya bermula sebagai nombor dalam kes ini.
Dan kemudian saya mempunyai rentetan.
Dan saya menambah i kepadanya.
Dan saya memberi semula kembali ke dalam i.
>> Sebagainya yang baris pertama, i adalah bilangan.
Pada baris kedua, saya kini menjadi rentetan selepas saya melakukan penugasan semula itu.
Dan di sini, saya hanya concatenating jumlah itu ke tali.
Jadi anda lihat bahawa walaupun i adalah seorang integer di bahagian pertama, ia jenis
daripada seperti yang ditukar kepada tali dan kemudian ditambah
sebiji tali khabar.
Dan jadi itulah yang saya maksudkan oleh menaip longgar.
Itulah yang anda menukar antara jenis sangat mudah.
Dan ia tidak membuang amaran pada anda suka C tidak.
>> Jadi saya kini mengandungi hello 123 untuk tali.
Seterusnya.
Kami boleh juga bebas membandingkan antara jenis.
Jadi jika anda hanya menggunakan ==, amat seperti di PHP, JavaScript
melakukan perkara yang sama.
Rentetan 123 adalah sama seperti bilangan 123 apabila anda menggunakan setaraf berganda.
Apabila digunakan setaraf tiga, ia juga mahu memastikan bahawa
jenis yang sama.
Jadi kerana itu adalah rentetan dan yang beberapa, walaupun mereka berdua
123, apabila anda menggunakan tiga sama, anda akan mendapat palsu.
Dalam dua kali ganda sama kes, anda akan mendapat benar, kerana setaraf dua tidak
mengambil berat tentang jenis.
Setaraf Triple tidak mengambil berat tentang jenis.
Soalan?
OK.
>> Dan satu lagi perkara mengenai JavaScript skop adalah jenis global melainkan jika anda
dalam satu majlis.
Dan ia berfungsi yang sama cara dalam PHP sebenarnya.
Jadi mari kita pergi melalui contoh ini.
Saya menetapkan untuk i 999.
Dan kemudian saya pergi ke ini untuk gelung.
Jadi jika saya mencetak i di dalam ini untuk gelung, saya menjangkakan 0, 1, 2, 3, 4.
Saya dapat i = 4.
Ia akan menambahkan i sekarang untuk 5 pada akhir untuk gelung.
Dan kemudian ia meletus gelung, kerana ia tidak memenuhi
keadaan lagi.
>> Apa yang anda fikir yang seterusnya console.log akan paparkan?
Jadi itulah yang ia akan lakukan dalam C. C, kerana jika anda mempunyai seperti var i di luar
dan anda mempunyai var i di dalam gelung, seperti untuk gelung, maka ia menjadikannya seperti yang
ia scoped bahawa kedua-dua i ini adalah berbeza.
Dalam JavaScript, ia akan hanya merawat sebagai i yang sama.
Saya mendapat 5, kerana itu adalah nilai selepas ia keluar daripada gelung.
Maka orang-orang i adalah i yang sama.
Adakah ini masuk akal?
>> Nah, ia masuk akal dari sudut pandangan JavaScript.
Tetapi paradigma yang sama tidak membawa kepada C. Mereka mempunyai
peraturan skop yang berbeza.
Ya.
>> PENONTON: [didengar]
di luar fungsi [didengar]?
>> JOSEPH ONG: Jadi di luar yang berfungsi?
Jadi saya akan sampai ke dalam hanya satu saat.
Jadi kita panggil foo (i).
Ini pas i ke foo, kenaikan gaji , dan kemudian log ia.
Jadi ia adalah 5.
Jadi ia menjadi 6.
Tetapi apa yang saya bercakap tentang adalah bahawa saya dalam fungsi itu.
Kerana ia adalah parameter, ia scoped dengan fungsi itu.
Jadi sekali saya benar-benar keluar dari yang fungsi, ia kini akan pergi
kembali ke i lama.
Bahawa saya hanya scoped kerana ia dalam satu majlis.
Dan kita mempunyai skop dan fungsi.
Tetapi kita tidak mempunyai skop di luar fungsi dalam JavaScript.
Adakah ini masuk akal?
Ya.
Soalan.
>> PENONTON: Sama [didengar]?
>> JOSEPH ONG: Jadi yeah.
Dalam PHP, ia jenis yang sama perkara.
Ada kehalusan sedikit sebenarnya.
Tetapi, anda boleh bertanya kepada saya kira-kira bahawa selepas kajian semula.
Anda tidak benar-benar perlu tahu yang kehalusan untuk kuiz.
Untuk tujuan dan maksud, seperti pembolehubah, global dan PHP, melainkan jika
mereka berada dalam satu majlis, sama perkara dalam JavaScript.
Ya.
>> PENONTON: Mengapa ini dibenarkan dalam JavaScript dan tidak di mana lagi?
>> JOSEPH ONG: Jadi mengapa dibenarkan dalam JavaScript dan tidak dalam C?
Ia hanya sesiapa yang datang dengan JavaScript memutuskan bahawa ini adalah OK dalam
JavaScript.
Jadi ia hanya seperti bahasa pengaturcaraan konvensyen seperti yang kita katakan.
Ya.
>> PENONTON: Jadi mengapa tidak ia pergi 6-5?
>> JOSEPH ONG: Jadi ia pergi 6-5, kerana apabila saya lulus i ke foo, yang
i dalam foo kini scoped untuk foo, kerana skop wujud dalam fungsi dalam
JavaScript.
Tetapi apabila saya keluar dari sini, kerana ia telah scoped untuk majlis itu, saya hanya
menggunakan i tetap yang berada di dalam seluruh aliran kawalan.
Masuk akal?
Bolehkah saya bergerak?
Baiklah.
Sejuk.
>> Penerimaan ini adalah objek diluluskan dengan merujuk.
Anda tahu bagaimana apabila anda meninggal pelbagai ke dalam C anda boleh
sebenarnya mengubah suai pelbagai?
Ia adalah perkara yang sama dalam JavaScript.
Jika saya lulus objek, dalam kes ini, saya diluluskan Milo ke dalam fungsi catify ini.
Milo bermula.
Namanya ialah Milo Pisang.
Saya lulus objek itu ke dalam satu majlis kerana ia adalah satu objek, bersekutu satu
array dalam JavaScript.
>> Apabila saya melakukan pembedahan dalam fungsi itu, ia akan
benar-benar mengubah objek.
Jadi ini hanya akan berlaku untuk objek dalam JavaScript, hanya suka ia berlaku
untuk tatasusunan dalam nama C. Jadi Milo benar-benar akan menjadi kucing sekarang.
Adakah ini masuk akal?
Jadi ini hanya berfungsi untuk objek.
Objek yang diluluskan oleh rujukan.
Ya.
>> PENONTON: Jadi anda mengatakan bahawa berbeza dengan pembolehubah i.
>> JOSEPH ONG: Yeah.
Yang berubah-ubah i hanya nombor, betul?
Ia seperti di C apabila anda lulus integer, ia membuat satu salinan.
Dan apabila anda meninggal array, ia sebenarnya perubahan array sebenar dalam
C. Perkara yang sama berlaku dengan JavaScript dalam kes ini.
Baiklah.
Dan seterusnya, Milo menyedihkan kerana dia kini kucing.
Itulah sebenarnya Milo selepas beberapa perjalanan ke doktor haiwan.
>> Jadi bagaimana kita menggunakan JavaScript di laman web?
Dapat kami masukkan.
Ini adalah kod HTML dengan tag jalur.
Jadi saya mempunyai tag jalur sana.
Dan kemudian saya meletakkan beberapa JavaScript kod dalam tag skrip.
Dan kemudian ia akan melakukan ini.
Apabila saya hanya melakukannya seperti ini, ia dipanggil JavaScript sebaris.
Ia adalah jenis kemas, kerana JavaScript sebenarnya dalam HTML.
>> Satu cara yang lebih baik untuk melakukan ini, jauh lebih bagus, adalah untuk menulis anda JavaScript dalam
fail luaran dan kemudian menyediakan tag skrip dengan sumber.
Dan ini akan pergi ke fail JavaScript dan membaca kod JavaScript dari
yang memfailkan sebaliknya.
Dan dengan cara ini, anda tidak mempunyai banyak JavaScript pada permulaan anda
Fail HTML, yang menjadikan ia benar-benar tidak kemas.
Anda hanya meletakkan ia di tempat lain.
Dan kemudian ia akan membacanya dari sana.
Adakah yang masuk akal?
>> Perkara penempatan.
Dalam kes ini, yang skrip di hadapan badan.
Oleh itu, apabila saya melaksanakan itu, ada apa-apa dalam badan yet.
Mungkin ini akan membuat lebih sedikit rasa apabila saya menunjukkan bahagian selanjutnya.
Dalam kes ini, skrip datang selepas div itu.
Jadi div sebenarnya muncul pada halaman pertama.
Di sini di bulatan ini merah kecil, anda lihat teks muncul.
Dan kemudian amaran yang muncul.
>> Dalam kes pertama, kerana skrip sebelum div itu,
amaran muncul pertama.
Dan kemudian div menunjukkan selepas anda menolak kotak.
Jadi pelaksanaan perkara-perkara.
Oleh itu, kita akan menyimpan ini dalam minda.
Ini akan menjadi penting dalam sedikit.
OK.
Dengan baik, bagaimana anda menunggu sehingga seluruh halaman dimuatkan kemudian sebelum anda
melaksanakan beberapa kod?
Kami akan masuk ke dalam ini sedikit sedikit kemudian juga.
Tetapi hanya menyimpan penempatan ini perkara-perkara dalam fikiran apabila kita
datang ke slaid yang lain.
>> Jadi kita dapat DOM sekarang.
Dan apa yang DOM?
Jadi jika anda melihat kod HTML, ia hanya sekumpulan teks pada skrin.
Jadi bagaimana JavaScript tahu bahawa ini adalah elemen HTML?
Oleh itu, kita perlu mempunyai beberapa memori perwakilan ini
struktur yang kita ada.
Dan setiap kali kita mempunyai ini dalam ingatan perwakilan dalam JavaScript, kita panggil
bahawa DOM.
Dan ia hanya satu cara yang orang memutuskan bahawa kita harus mewakili ini
Struktur HTML sebagai.
>> Dan apakah DOM ini kelihatan seperti?
Nah, dalam perwakilan ingatan, kami mengambil teks ini.
Dan kami mengubahnya menjadi memori perwakilan.
Jadi ini adalah HTML.
Jadi kita mula-mula mengetahui bahawa setiap Pokok DOM mempunyai dokumen.
Ia kelihatan seperti pokok.
Dan dokumen itu mengandungi HTML tag, sebenarnya segala-galanya
dalam ini sekarang.
Tag HTML mempunyai dua orang anak.
Ia mempunyai kepala.
Kepala itu, jika anda melihat penggunaan di lekukan di sana bagaimana ia berstruktur
antara tag penutup, kepala mempunyai kanak-kanak.
Anak itu adalah tajuk.
Tepat sekali.
>> Sekarang, kita mempunyai anak badan.
Dan kemudian badan yang mempunyai anak dipanggil keluarga.
Dan keluarga yang mempunyai tiga orang anak -
tertua, tengah, dan bongsu.
Jadi, anda perlu tahu bagaimana untuk menarik gambarajah seperti ini apabila kami meminta anda bagaimana
untuk menarik gambarajah apabila kita memberi anda HTML di sebelah kiri.
Tahu bagaimana untuk menghasilkan pokok DOM itu.
Dan di dalam perkara-perkara ini, terdapat hanya teks, yang saya telah diwakili
kotak sedikit.
>> Adakah struktur pokok DOM ini membuat rasa dan apa DOM itu?
Jadi apakah p stand for?
Di sini, p di sana dalam tag yang mewakili
perenggan tag dalam HTML.
Jadi, anda boleh melihat ia.
Tetapi ia hanya bermakna ia adalah beberapa ruang untuk teks.
Dan ia mempunyai beberapa lalai CSS gaya, kerana ia adalah satu tag perenggan.
Tetapi tidak benar-benar bimbang tentang bahagian itu terlalu banyak.
Hanya tahu ia pemegang tempat yang untuk beberapa teks.
Ya.
Soalan?
Ya.
>> PENONTON: Anda hanya disebut CSS.
Keluarga dan hash hash semua barangan yang pada dasarnya
mewakili ID dalam CSS?
>> JOSEPH ONG: Ya, betul-betul.
Saya akan mendapat apa Hash ini bermakna dalam satu saat.
Apabila Angela pergi ke CSS, dia bercakap tentang selectors CSS.
Ini adalah pemilih CSS yang dia bercakap tentang.
Ya, Rob?
>> ROB Bowden: Saya juga akan mengulas DOM yang di dalam tag tajuk
juga merupakan nod teks.
>> JOSEPH ONG: Betul.
Jadi di dalam tag tajuk, Saya mempunyai beberapa DOM teks.
Jadi benar-benar, tajuk ini harus mempunyai seperti kotak kecil datang kira juga.
Tetapi ia benar-benar perkara terlalu banyak dalam kes ini.
Kami tidak benar-benar mengambil berat tentang nod teks, seperti yang kita memanggil mereka, terlalu banyak.
OK, kita lakukan.
Rupa-rupanya, kita lakukan.
Dan saya akan menetapkan bahawa apabila Saya upload lagi.
Adakah ini masuk akal?
>> Jadi bagaimana kita bekerjasama dengan DOM?
Apabila anda berurusan dengan DOM dalam JavaScript, terdapat dua langkah.
Anda pilih elemen DOM.
Dan kemudian anda melakukan perkara-perkara kepadanya.
Jadi dalam kes ini, secara abstrak, saya telah dipilih unsur tengah.
Dan kemudian satu contoh melakukan barangan kepadanya akan mengubah teks.
Yang digunakan untuk menjadi Bob.
Kini, apa yang saya lakukan kepadanya adalah saya berubah Bob untuk Milo dalam kes ini.
>> Jadi bagaimana kita sebenarnya melakukan ini?
Bagaimana kita melakukan pemilihan tersebut?
Dan bagaimana kita melakukan barangan untuk perkara yang sebaik sahaja kami telah mengambil ia?
Nah, cara anda lelaki telah belajar di dalam kelas ini adalah dengan menggunakan sesuatu yang kita
dipanggil jQuery.
Jadi apa jQuery?
jQuery adalah perpustakaan yang membuat JavaScript lebih mudah untuk menulis.
Jadi seseorang mengambil masa yang dan menulis jQuery.
>> jQuery sebenarnya ditulis dalam JavaScript.
Dan kemudian kerana mereka melakukan ini, kami kini mempunyai sejumlah besar fungsi-fungsi yang
kita boleh menggunakan yang membuat kita hidup benar-benar mudah.
Jadi apakah beberapa perkara ia?
Ia membuat memilih unsur-unsur lebih mudah.
Ia membuat perubahan HTML, menambah kelas lebih mudah.
Ia membuat Ajax lebih mudah.
Kami akan sampai ke dalam satu saat.
>> Dan ia seakan-perpustakaan C.
Jadi anda termasuk string.h, anda mendapatkan strlen.
Anda mendapatkan strcpy, semua perkara-perkara ini.
Apabila anda termasuk jQuery, anda mendapat bagus cara-cara untuk memilih elemen perubahan
perkara, dan sebagainya.
Anda mendapat fungsi tambahan yang JavaScript tidak memberi anda.
Jadi jQuery tidak JavaScript.
jQuery adalah perpustakaan yang ditulis dalam JavaScript yang menjadikan JavaScript
lebih mudah untuk menulis.
>> Jadi jQuery bukan pengaturcaraan bahasa.
Tetapi JavaScript.
membuat.
Pasti anda mendapatkan istilah anda betul.
Apa-apa soalan?
Ya.
Adakah itu satu soalan?
Baiklah.
Jadi bagaimana anda menggunakan jQuery?
Nah, apabila anda menulis beberapa JavaScript kod dan anda masukkan
jQuery di bahagian atas fail anda sebagai fail skrip, anda menggunakan tanda dolar
sekarang untuk mendapatkan akses kepada jQuery.
Dan ini adalah berbeza daripada tanda dolar dalam PHP.
>> Ia simbol yang sama anda menaip pada papan kekunci anda.
Tetapi mereka membawa maksud yang sangat berbeza.
Tanda dolar dalam PHP bermakna ini adalah bagaimana saya mengisytiharkan pemboleh ubah.
Dalam JavaScript, apabila anda telah dimasukkan jQuery, ia bermaksud jQuery.
Jadi menyimpan bahawa dalam fikiran.
Jadi bagaimana kita boleh memilih elemen DOM?
Nah, apabila anda melakukannya JavaScript hodoh cara, anda mengakses
dokumen ubah global.
Dan kemudian anda mendapatkan unsur oleh keluarga ID.
Ini benar-benar panjang dan panjang lebar dan tidak begitu bagus.
>> Atau anda boleh mendapatkan semua elemen yang p tag.
Bahawa kerja-kerja terlalu dalam JavaScript.
Tetapi kita tidak pernah benar-benar menunjukkan anda sintaks yang terlalu banyak.
Apa yang kita menunjukkan anda adalah jQuery.
Supaya seluruh pemilih di sana yang Ini dinyatakan dalam JavaScript hanya mendapat
pekat kepada dolar yang sangat bagus ini menandatangani keluarga hashtag.
Dan $ p, hanya di mana ia seperti itu.
Jika anda ingin untuk memilih semua p tag di dalam sebuah keluarga, kita meletakkan ruang yang
antara kedua-dua.
Dan kini, kita semua p tag di dalam sebuah keluarga.
>> Dan kelihatan biasa?
Nah, Angela bercakap tentang Selectors CSS.
Berikan saya satu saat.
Dan sebagainya untuk memilih unsur, anda hanya menggunakan perkara yang sama seperti anda
akan melakukan dengan pemilih CSS.
Jika anda meletakkan hash di hadapan itu, ia memilih oleh ID.
Dot A memilih oleh kelas.
Jika anda hanya mempunyai perkara tanpa Hash atau titik, ia memilih yang tag.
Soalan.
Ya?
>> PENONTON: Apabila kita menggunakan titik di kami HTML, adalah bahawa tidak jQuery?
>> JOSEPH ONG: Dot dalam HTML kami adalah satu perkara yang JavaScript.
Ia bukan satu perkara yang jQuery.
Cara anda semua belajar dengan jQuery adalah untuk digunakan. html.
Dan kemudian anda menyampaikannya apa sahaja HTML itu akan menjadi.
Jadi saya akan mendapat bahawa hanya dalam kedua sebenarnya.
Jadi bagaimana kita melakukan barangan kepada unsur sebaik sahaja kami pilih ia?
Jadi, itu satu contoh memilih unsur.
Jadi sekarang, kita mahu melakukan barangan kepadanya.
>> Jadi dalam kes ini, saya kembali ke slaid sebelumnya.
Ia adalah Bob sebelum ini.
Dan saya mahu menukar yang di dalam HTML untuk Milo.
Jadi saya menyeru fungsi HTML daripada elemen.
Bahawa fungsi HTML kaedah unsur.
Dan kemudian saya memberikan apa Saya mahu HTML untuk menjadi.
Dan ia hanya menggantikan apa yang di dalam satu bahawa tag dengan apa yang saya berikan.
Ya.
Soalan?
>> PENONTON: hashtag ini digunakan hanya yang jQuery.
[Didengar]
kita tidak akan menggunakan itu.
>> JOSEPH ONG: Ya, betul-betul.
Tetapi jangan risau JavaScript mengenai tulen.
Saya hanya mahu anda semua untuk memberi tumpuan kepada bagaimana anda akan melakukannya dengan jQuery, kerana
yang akan menjadi penting sebahagian kuiz.
Betul.
Tepat sekali.
Jadi anda lihat hashtag itu, supaya sepadan dengan memilih elemen dengan
tengah ID kerana hashtag itu.
Hashtag bermakna ID.
Dan elemen ini mempunyai ID pertengahan.
Jadi, itu elemen yang kami pilih.
>> PENONTON: [didengar].
tanda dolar hashtag [didengar]?
>> JOSEPH ONG: Jadi tidak.
Persoalannya ialah anda boleh menggunakan. Nilai.
Dan. Nilai hanya berfungsi pada unsur-unsur yang merupakan input.
Dalam jQuery, ia akan menjadi . Val, tidak. Nilai.
Jadi saya akan mendapat satu contoh yang kecil yang menunjukkan semua ini dalam kombinasi
dalam satu saat.
Tetapi saya fikir ini menyajikan coretan kecil masuk akal untuk orang setakat ini.
Ingin menukar HTML, memanggil kaedah HTML.
Ya.
>> PENONTON: Bolehkah anda menjelaskan kaedah lagi?
>> JOSEPH ONG: Jadi kaedah yang hanya fungsi yang dimiliki oleh satu, dalam ini
kes, salah satu daripada elemen-elemen DOM, kerana anda lihat Saya
dipilih elemen pertama.
Sebenarnya, saya menggunakan tetikus.
Saya dipilih elemen pertama.
Dan kemudian saya dipanggil HTML ini berfungsi bahawa ia mempunyai.
Dan kerana fungsi ini kepunyaan perkara ini, kita panggil ia kaedah.
Itu hanya nama mewah untuk itu.
Mengatakan bahawa sekali lagi.
Jadi ingat, kita dipilih elemen yang sekarang.
Dan kami telah ia di dalam pembolehubah unsur.
Betul?
>> Oleh itu, apabila kita ingin menukar HTML pada di dalam, kerana ia adalah Bob sebelum ini, anda
mahu menukar teks yang untuk Milo.
Jadi kita panggil HTML.
Dan kita memberitahu apa yang di dalam HTML elemen yang perlu sekarang.
Dan sebagainya ia berubah kepada Milo, kerana saya memberikannya Milo.
>> PENONTON: Jadi mereka bekerja bersama-sama.
[Didengar]
>> JOSEPH ONG: Ya, ya.
Mereka bekerja bersama-sama.
Jadi salah seorang daripada mereka memilih elemen pertama.
Dan yang kedua tidak sesuatu kepadanya.
Ya.
>> PENONTON: [didengar].
Jika kaedah ini adalah berbeza daripada dalam HTML anda mempunyai kaedah yang sama sebenar.
>> JOSEPH ONG: Yeah.
Itulah kaedah yang berlainan.
Dan kita boleh menutup bahawa dalam beberapa saat apabila kita dapat contoh.
Saya mahu memastikan bahawa kita mempercepatkan kerana kita kehabisan masa.
Tetapi kita telah berjalan dengan cara dari masa ke masa sekarang.
OK.
Sejuk.
Jadi, jika anda mahu menambah kelas, ada juga merupakan kaedah kelas add.
Ini hanyalah satu contoh apa anda boleh lakukan dengan jQuery.
Itu hanya menambah kelas.
>> Jika anda ingin mengeluarkannya, anda boleh menghubungi keluarkan.
Itu hanya satu lagi perkara yang boleh anda lakukan.
Jadi lebih contoh perkara-perkara yang boleh anda lakukan.
Jadi, boleh saya hanya meletakkan ia di atas seperti ini?
Keluarkan muda.
Jika saya hanya melaksanakan JavaScript bahawa pada bahagian atas fail saya, yang akan bekerja?
Betul.
Kerana pertengahan tidak wujud lagi.
Jadi ini tidak akan bekerja.
Perintah pelaksanaan.
Ia pergi ke puncak pertama.
Apa?
>> PENONTON: Termuda tidak wujud lagi?
>> JOSEPH ONG: Yeah.
Muda tidak wujud lagi.
Tepat sekali.
>> PENONTON: Anda kata tengah.
>> JOSEPH ONG: Maaf.
Muda tidak wujud lagi.
Dan perkara yang lain ialah saya tidak mempunyai termasuk jQuery
memfailkan meminta skrip src.
Supaya tidak akan berfungsi.
Sebenarnya, saya tidak berbuat demikian dalam slaid seterusnya, yang
sepatutnya untuk menetapkan bahawa sama ada.
Tetapi cara kita melakukan ini adalah JavaScript adalah acara didorong.
Jadi apa yang kita lakukan adalah kita menggunakan sesuatu acara Handler untuk membuat ini berlaku.
Dan jadi saya pilih dokumen itu set pertama.
Saya berkata, OK, apabila dokumen itu bersedia, membiarkan saya menjalankan fungsi.
Jadi itu sahaja yang cara sintaksis.
>> Saya dipilih dokumen itu.
Sekarang, apabila dokumen itu bersedia, menjalankan fungsi tersebut.
Dan sebagainya di sini apabila dokumen itu bersedia, yang bermaksud semua HTML mempunyai
dimuatkan, maka saya menjalankan fungsi yang menghilangkan unsur itu.
Dan sekarang, apabila saya menjalankan fungsi ini yang saya berlalu ke dalam bersedia, saya
jaminan bahawa semua HTML pada halaman akan wujud pertama.
Ya.
Soalan?
>> PENONTON: Apakah kata kunci acara dalam majlis itu?
>> JOSEPH ONG: Jadi kata kunci acara di fungsi hanya parameter yang
dilewatkan ke fungsi yang untuk mana-mana acara.
Ia hanya sesuatu yang anda mendapat secara percuma.
Apabila anda menggunakan pengendali utama dalam pset8, acara yang boleh memberitahu anda, untuk
contoh, yang utama yang ditekan pada.
Dalam kes ini, untuk acara bersedia, ia sebenarnya tidak super berguna.
Tetapi untuk acara kekunci, ia lebih berguna, kerana anda mendapat tahu yang
utama yang ditekan dengan mengakses utama kod off bahawa objek acara.
Betul?
Adakah ini masuk akal?
OK.
Ya.
Soalan?
>> PENONTON: Jadi boleh anda meletakkan skrip tag lebih rendah ke bawah?
>> JOSEPH ONG: Jadi yeah.
Anda boleh meletakkan skrip tag yang lebih rendah ke bawah.
Tetapi ia hanya menjadi benar-benar tidak kemas.
Dan kita suka untuk memusatkan semua kod kami di satu tempat.
Dan ini akan membolehkan kita untuk melakukannya.
Ingat sebelum ini yang saya kata ada yang lebih bagus cara untuk memastikan bahawa elemen ini
pada halaman sebelum anda melaksanakan kod?
Dan ini adalah hanya cara yang bagus anda akan mencapai itu.
>> PENONTON: [didengar].
>> JOSEPH ONG: Yeah.
Anda masih perlu, bukan?
Kerana ingat, anda termasuk memfailkan di bahagian atas halaman.
Jadi ia akan melaksanakan pertama sebelum anda sampai ke bahagian bawah halaman.
OK.
Jadi, anda juga boleh menambah yang berbeza jenis pengendali peristiwa.
Yang ini hanya memproses klik.
Apabila anda klik pada anak bongsu, maka ia akan muncul dengan amaran.
Ini hanyalah berbeza jenis acara.
Berbanding dengan majlis itu bersedia, anda kini menggunakan acara klik apabila anda menerima
klik pada unsur.
>> Dan jadi dalam kes ini, ingat, klik Pengendali dilampirkan kepada muda.
Jadi ia hanya berlaku apabila Saya klik pada muda.
Dan dalam satu lagi, acara itu bersedia bertugas kepada dokumen itu.
Jadi ia menunggu dokumen itu siap.
Masuk akal?
Saya rasa saya boleh bergerak ke atas.
Ya.
Soalan?
>> PENONTON: [didengar].
dalam kes ini anda menggunakan [didengar].
>> JOSEPH ONG: Oh, ya, kerana dalam ini kes, saya perlu menunggu paling muda
elemen untuk muncul di skrin pertama sebelum saya boleh melampirkan satu klik pengendali untuk
ia, itulah sebabnya saya meletakkan ia di dalam dokumen yang bersedia.
OK.
Dan seterusnya, jadi ini adalah satu contoh yang besar bagaimana anda akan menggabungkan segala-galanya.
Ini adalah hanya satu contoh pengesahan borang yang anda lihat dalam kuliah.
Jadi mengambil langkah demi langkah seperti yang anda pergi melalui ini.
Dan ia akan menjadi betul-betul OK.
Hanya membaca dari atas ke bawah.
>> Saya mempunyai bentuk yang di bahagian bawah.
Apabila dokumen itu siap, saya lampirkan mengemukakan pengendali bersama borang, seperti yang
apabila saya mengemukakan borang itu, saya mendapat nilai-nilai di dalam setiap orang-orang input.
Dan saya memeriksa jika ia kosong.
Jika ia kosong, saya kembalikan palsu, kerana Saya tidak mahu untuk mengemukakan borang,
kerana bentuk yang salah.
Jika kata laluan adalah kosong atau ia kurang daripada lapan aksara, saya tidak mengemukakan
borang, kerana itulah juga salah.
Dan palsu pulangan hanya mencegah borang daripada mengemukakan dan
pergi ke halaman yang baru.
>> Dan mudah-mudahan, ini masuk akal.
Saya fikir anda semua harus berjalan melalui ini langkah demi langkah kod sendiri.
Dan sebaik sahaja anda memahami apa yang pilih elemen dan melakukan barangan kepadanya
sebenarnya memerlukan, ini akan membuat banyak akal kepada anda.
Ya?
>> PENONTON: Apakah yang nama = nama pengguna bermakna?
>> JOSEPH ONG: Jadi nama = nama pengguna dan nama = Kata laluan hanya bermakna melihat
sifat apa sahaja anda memilih.
Dan kemudian yang mempunyai untuk dipadankan.
Jadi kita pergi ke pendaftaran.
Dan kemudian kita melihat semua input dan pendaftaran.
Dan kemudian kita memilih satu di mana nama yang sifat adalah sama dengan nama pengguna.
Supaya pemilih pertama sahaja pilihan pelanggan input nama pengguna.
Dan itu pemilih kedua hanya memilih kata laluan satu, kerana mereka mempunyai
sifat-sifat nama mereka ditetapkan sebagai apa mereka sepatutnya menjadi.
Soalan?
>> PENONTON: Pada pengemukaan, bagaimanakah Bahagian bawah menyelesaikan bahagian atas?
>> JOSEPH ONG: Jadi itu kerana pengendali acara tersebut.
Oleh itu, kita sedang menunggu untuk acara mengemukakan yang mendapat dipecat dari bentuk.
Dan itu semua yang hantar.
Mengapa saya memanggil mengemukakan di sana?
Ia berkata, apabila bentuk itu dikemukakan, Saya mendapat satu acara yang selamat.
Jadi biarlah saya hanya memintas itu dan kemudian berjalan kod ini sebaliknya.
Ya?
>> PENONTON: Kenapa anda mempunyai untuk mempunyai acara fungsi?
Mengapa tidak boleh anda hanya [didengar]?
>> JOSEPH ONG: Kerana dalam JavaScript, anda perlu mengisytiharkan fungsi.
Itu hanya bagaimana ia berfungsi dalam JavaScript.
Anda perlu mengatakan ia akan untuk menjalankan fungsi.
Jadi anda memberitahu bahawa anda menjangkakan satu majlis di sini dan bukannya
hanya pendakap kerinting.
>> PENONTON: Dan fungsi adalah apa sahaja yang berikut?
>> JOSEPH ONG: Yeah.
Fungsi tersebut yang ada di dalam pendakap kerinting selepas
bahawa fungsi kata kunci.
Ya?
>> PENONTON: [didengar].
>> JOSEPH ONG: Untuk mengemukakan?
>> PENONTON: Tidak, untuk fungsi tanpa acara tersebut.
>> JOSEPH ONG: Yeah.
Jadi tanpa majlis itu, anda boleh mempunyai itu.
Jika anda tidak perlu majlis itu, maka anda hanya boleh meninggalkan ia.
Tetapi jika anda lakukan, maka anda hanya meletakkan di sana.
Ya.
Masalah cepat?
>> PENONTON: [didengar].
>> JOSEPH ONG: Yeah.
Oleh kerana apa yang anda perlu lakukan, document.ready hanya berkata menunggu untuk semua
HTML pada halaman untuk memuatkan pertama.
Dan biasanya, anda mahu unsur-unsur anda di tempat sebelum anda menjalankan apa-apa kod.
Baiklah.
Kita perlu mendapatkan untuk Ajax.
Kami tidak mempunyai banyak masa.
Jadi kebaikan dan keburukan.
JavaScript adalah cuba lebih mudah menulis dengan jQuery.
Tetapi jQuery adalah jenis perlahan.
>> Ia seperti PHP adalah lebih perlahan daripada C, kerana ia ditafsirkan.
Dan jQuery agak perlahan daripada JavaScript, kerana ia banyak
perkara di bawah hood.
Dan jadi jika anda menggunakan jQuery, ia hanya sedikit lebih perlahan daripada
JavaScript, walaupun ia memberi anda keanggunan bagus.
Dan akhirnya, Ajax.
Setakat ini dengan Ajax, anda tidak pernah melihat Ajax dari segi pset7 lagi, kerana
apabila anda lakukan, anda menyerahkan borang untuk quote.
Ia memuatkan halaman yang baru.
Jadi anda mendapatkan ini flash putih besar pada halaman manakala
beban halaman kedua, betul?
>> Ia akan benar-benar baik jika anda tidak mempunyai flash ini.
Seperti Facebook, jika anda hanya tatal ke bahagian bawah, ia menambahkan kandungan baru
tanpa menyegarkan keseluruhan halaman.
Jadi sesuatu seperti ini akan lebih baik.
Ini adalah kod JavaScript di sebelah kiri.
Anda mendapat apa yang di dalam input itu.
Anda mendapatkan maklumat saham daripada Yahoo!
Dan kemudian anda membuat tali besar yang berkata, OK, ini adalah mesej yang saya mahu
untuk menunjukkan pada skrin.
Dan kemudian anda meletakkan mesej yang di dalam beberapa elemen HTML yang mendapat
dipaparkan pada skrin.
>> Jadi itu sahaja yang berlaku di sini.
Jadi, pada asasnya, kerana ini adalah semua JavaScript dan anda tidak perlu untuk menjalankan
lagi PHP, ini akan memastikan bahawa halaman tidak memuat semula.
Jadi ini adalah hanya satu idea abstrak yang saya katakan di sini untuk sekarang.
Idea abstrak adalah bahawa jika anda melakukannya semua dalam JavaScript, anda tidak mempunyai
refresh halaman.
Tetapi bagaimana anda sebenarnya melakukan ini?
>> Well, sebenarnya, mari kita bercakap tentang masalah dengan ini dahulu.
Satu masalah dalam JavaScript, pelaksanaan adalah segerak.
Jadi, anda perlu menunggu untuk satu talian untuk menyelesaikan sebelum anda
melaksanakan baris berikutnya.
Dan bagaimana jika saya akan ke Yahoo!, dan pelayan mereka adalah benar-benar perlahan dan
ia mengambil tiga saat untuk memberi saya kembali bahawa maklumat saham?
Apabila saya mencecah garis harga, jika pelaksanaan adalah segerak, kerana ia adalah dengan
lalai, apa yang ia hanya akan lakukan ialah pelayar anda akan gerai untuk
tiga saat.
Dan anda tidak akan dapat melakukan apa-apa semasa ia mendapat data tersebut.
Ia akan dibekukan.
>> Dan itu tidak baik.
Anda tidak mahu pengguna untuk mempunyai laman web beku.
Betul?
Itu hanya tidak baik.
Semua orang bersetuju?
Jika anda melayari Facebook dan ia membeku dan anda tidak boleh berbuat apa-apa, anda
mendapatkan benar-benar kecewa.
Jadi penyelesaian ialah kita membuat sesuatu tak segerak sebaliknya.
Jadi semua perkara ini tak segerak berkata adalah, saya akan bertanya ini
URL untuk beberapa data.
Dan kemudian saya akan teruskan.
Saya hanya akan menyimpan melaksanakan apa sahaja kod yang selepas itu.
>> Dan kemudian apabila data yang siap, maka saya akan memprosesnya.
Itu sahaja yang berkata.
>> PENONTON: Ajax hanya membuat kod tak segerak?
>> JOSEPH ONG: Ini tak segerak satu cara data semasa mengambil.
Jadi perkara yang pertama mengenai Ajax adalah ia membolehkan saya mendapatkan data
dari laman web luaran.
Dan perkara yang kedua ialah ia memastikan bahawa halaman saya tidak terhenti manakala saya
mengambil data itu.
Itu sebahagian tak segerak daripadanya.
Kerana ia padam di tempat lain, kerana saya katakan saya terus berlaku semasa
ia mengambil data itu, bahawa menjadikannya tak segerak.
Saya terus melaksanakan.
>> Jadi menyimpan tak segerak yang idea dalam fikiran.
Dan saya akan menunjukkan kepada anda apa perbezaan adalah.
Versi segerak berada di sebelah kiri.
Versi tak segerak adalah di sebelah kanan.
Lihatlah nombor untuk melihat langkah-langkah yang sesuai dengan apa yang
melaksanakan setiap baris.
Di sana, amaran yang muncul pertama.
Kerana mendapat maklumat saham dari Yahoo!
mengambil masa tiga saat, ia gerai selama tiga saat.
Dan kemudian ia tanda harga selepas tiga saat.
>> Jadi sekarang, yang menunjukkan amaran sehingga pada masa itu -
tiga saat masuk
Dan kemudian ia tanda dengan selepas itu.
Jadi ia hanya pergi langkah demi langkah.
Ia seperti apa yang anda guys akan menerima, betul?
Dengan pelaksanaan tak segerak, anda memberi amaran pertama.
Kemudian anda pergi ke URL ini.
Dan anda berkata, saya akan hanya meminta data.
Dan kemudian saya akan memproses kemudian.
Jadi ia segera menghapuskan orang baris seterusnya selepas saya membuat yang
permintaan tak segerak.
>> Jadi 0,001 saat, anda lihat hi berjaga-jaga.
Melaksanakan fungsi, bye berjaga-jaga.
Dan kerana saya membuat janji bahawa saya akan memproses data kemudian, apa yang
berlaku ialah apabila data yang datang kembali tiga saat kemudian, maka saya berjalan yang
fungsi yang saya ada di sana.
Ya?
>> PENONTON: Bolehkah anda menentukan atau menjelaskan apa yang Ajax bermakna?
>> JOSEPH ONG: Jadi Ajax adalah cara yang bahawa jika saya perlu data apabila saya pada laman web dan saya
tidak mahu muat semula halaman, kemudian Saya menggunakan teknologi ini dipanggil Ajax.
Itulah dasarnya hanya bermaksud, pergi mengambil data dari laman web lain.
Dan melakukannya dengan cara yang hanya tidak terhenti halaman web saya.
>> PENONTON: Jadi adalah bahawa wujud sebahagian daripada JavaScript atau jQuery?
>> JOSEPH ONG: Jadi seseorang menulis cara untuk melakukan ini dalam JavaScript masa yang lama dahulu.
Pada satu ketika, ia tidak wujud.
Dan sebagainya seseorang mencipta teknik ini untuk membolehkan orang untuk meminta data ini
dengan cara ini.
Dan mereka menulis beberapa perkara untuk melakukannya untuk anda.
Dan jQuery hanya memberikan anda ini cara yang sangat baik untuk melakukannya
dengan $ ini. mendapatkan fungsi.
soalan?
Saya boleh menjawab soalan mengenai Ajax selepas itu juga.
Saya akan berada di sini.
>> Jadi mari kita kita mengambil data tanpa menyegarkan halaman.
Dan ia mari kita melakukan ini dalam cara yang tak segerak yang
tidak membekukan halaman.
Terlalu lama, tidak membaca jika itu penjelasan terlalu lama untuk anda.
Jadi akhirnya, cross-site serangan skrip.
Kami melihat ini dengan Zamyla.
Jika dalam pangkalan data seseorang saya mempunyai nama ini, yang merupakan skrip ini tag, dan saya
mempunyai beberapa kod pada halaman saya yang cetakan nama-nama rakyat berturut-turut, atau saya mempunyai
beberapa kod JavaScript yang memasukkan nama ini ke dalam halaman,
apa HTML mendapat dihasilkan?
Well, saya mencetak tag HTML.
Saya mencetak semua tag ini.
>> Saya sampai ke bahagian di mana saya percetakan dengan kawan-kawan saya.
Saya mencetak Lauren keluar.
Ia mencetak Milo keluar.
Dan kemudian nama saya di dalam pangkalan data adalah skrip post
status Facebook unflattering.
Kerana saya dimasukkan ini ke halaman yang kerana ia kelihatan seperti JavaScript, apabila
Laman ini akan dihantar kepada pengguna, ia mendapat dilaksanakan sebagai JavaScript.
Dan hal ini adalah apa yang kita panggil cross-site serangan skrip.
Seseorang meletakkan maklumat berniat jahat dalam pangkalan data anda yang boleh sesuai dengan
beberapa rentetan tambahan atau beberapa JavaScript tali.
>> Dan apabila ia mendapat dicetak kepada halaman dengan cara ini, maka apa yang
berlaku ialah kod buruk mendapat dilaksanakan bahawa saya tidak berniat
untuk itu untuk dilaksanakan.
Dan itu semua balas tapak serangan skrip adalah.
Dan cara anda mendapatkan sekitar ini adalah seperti Zamyla berkata.
Anda hanya membalut perkara dalam HTML aksara khas.
Dan ini HTML aksara khas adalah PHP yang fungsi yang akan menghalang seperti ini
perkara daripada berlaku kepada anda jika anda mempunyai niat jahat
rentetan dalam pangkalan data anda.
Ia hanya terlepas ia, supaya ia tidak mendapatkan ditafsirkan sebagai HTML.
Ia menggantikan kurungan sedikit dengan apa yang kita panggil entiti.
Dan kami pergi ke ini dalam kuliah juga.
Jadi saya fikir anda semua harus mempunyai memahami dengan baik pada itu.
Soalan?
Ya.
>> PENONTON: Jadi bagaimana akan yang [didengar]?
>> JOSEPH ONG: ulangi lagi.
>> PENONTON: Bagaimana akan monitor -
>> JOSEPH ONG: Betul.
Jadi anda mempunyai sesuatu yang mengatakan, apabila Saya mendaftar, taip nama saya.
Saya hanya menaip dalam bidang itu, nama saya stript post unflattering Facebook
status rapat skrip tag.
Dan yang hanya mendapat dimasukkan ke dalam pangkalan data, kerana saya tidak boleh mengatakan seseorang
di dunia tidak mempunyai nama yang dengan anak panah kiri di dalamnya atau
skrip perkataan di dalamnya.
Ini tidak masuk akal.
Jadi saya hanya perlu memastikan bahawa saya membersihkan barangan sebelum saya cetak
keluar ke halaman.
>> PENONTON: Jadi kad khas HTML menghalang tag skrip?
>> JOSEPH ONG: Yeah.
Jadi ia tidak menghalang tag skrip.
Ia hanya akan memastikan bahawa tag skrip tidak mendapat
ditafsirkan sebagai HTML atau -
yeah.
Ia hanya datang sebagai apa sebenarnya.
Baiklah.
Sehingga adalah kajian kuiz.
Sejuk.
>> [Tepuk tangan]