JASON Hirschhorn: Welcome, semua orang, untuk minggu 10. Ini adalah satu minggu menarik kerana esok adalah Kuiz 1, yang kita akan mendapat dalam satu saat. Hari ini dalam seksyen, kita akan pergi atas beberapa sumber untuk kuiz, dan maka saya akan menjawab apa-apa dan semua soalan yang anda lelaki itu mempunyai. Dan kita akhirnya akan berakhir dengan beberapa masalah amalan. Kita boleh menghabiskan seluruh bahagian itu menjawab soalan-soalan. Kita boleh menghabiskan seluruh bahagian itu akan lebih masalah amalan. Kami hanya akan berkembang untuk mengisi ruang dan masa yang kita ada. Jadi saya meletakkan senarai ini setiap minggu, tetapi ia penting minggu ini. Untuk belajar, jika anda tidak mempunyai bermula sudah, oh lelaki. Tetapi diharapkan anda telah memulakan sudah. Dan anda akan melalui bahan-bahan dan sumber-sumber yang disenaraikan di sini. Saya sangat akan mengesyorkan beberapa ini. Khususnya, nota kuliah adalah amat penting dan membantu. Study.cs50.net ini menyediakan buku asas yang besar kepada banyak topik yang kita dilindungi. Ia juga mempunyai beberapa besar mengamalkan masalah. Dan kemudian, Google adalah besar juga. Saya tidak tahu apa yang anda akan menggunakannya untuk. Tetapi menggunakan Google, juga. Hulurkanlah kepada saya jika anda mempunyai sebarang soalan, komen, atau kebimbangan. Melihat ke atas sesi kajian semula itu slaid daripada malam semalam. Atau, jika anda mempunyai masa, menonton video. Mereka menyediakan banyak membantu bahan dan maklumat. Dan cuba menutup jika tidak semua, kebanyakan topik yang kita telah dilindungi dan anda mungkin melihat kuiz. Bercakap kuiz, yang akan esok. Ia 75 minit. Ramai daripada anda mengambil ia pada 1 pukul, dan di antara kamu adalah mengambilnya pada 5:30. Untuk masa yang anda mengambil ia dan lokasi anda mengambil, pastikan anda menyemak dokumen itu pada laman utama CS50.net itu. Ingatlah bahawa anda boleh mendapatkan satu 8 1/2 sebanyak 11 kunci untuk mengambil dengan anda. Sering kali, orang tidak menggunakan ini kunci di semua semasa kuiz. Tetapi benar-benar, ia adalah satu yang amat alat kajian membantu. Jadi bersama-sama meletakkan kunci yang apa Saya menghabiskan mungkin tiga atau empat jam melakukan apabila saya belajar untuk CS50, dan yang mudah yang paling berguna cara yang saya boleh belajar untuk kuiz. Jadi, walaupun anda mempunyai beberapa anak dia kajian panduan untuk melihat dan digunakan sebagai rujukan, saya sangat mengesyorkan membuat kajian panduan anda sendiri, meletakkan barangan yang bersama-sama. Yang benar-benar membantu anda belajar semua bahan. Akhir sekali dalam seksyen ini, selepas kuiz esok ada satu lebih kuliah - Isnin depan. Ada satu bahagian lagi, tidak akan datang Selasa sebelum Kesyukuran, tetapi Selasa selepas itu. Kami akan bertemu bersama-sama untuk akhir parti selamat tinggal dan juga melakukan beberapa sejuk perkara untuk anda semua teruja kira-kira melanjutkan pelajaran dalam bidang sains komputer. Ada satu projek yang lebih, satu lagi adil, satu lagi hackathon. Kami menghampiri akhir CS50, yang menarik - tetapi juga, jika anda seperti saya, sedikit sedih. Sebelum saya bergerak, adakah sesiapa yang mempunyai sebarang soalan mengenai apa yang kami telah dilindungi setakat ini? OK, baik mari kita pergi ke beberapa soalan yang anda ada untuk kuiz dan topik kita mungkin menutup. Jadi ini adalah senarai yang saya bersama-sama. Ia bukanlah lengkap, tetapi diharap akan berjoging memori anda jika anda mempunyai beberapa soalan tentang mana-mana topik, atau jika anda mempunyai soalan mengenai masalah amalan dari kuiz pada tahun-tahun yang lepas. Saya mempunyai beberapa soalan yang melalui e-mel kepada saya, tetapi saya mahu bertahan kepada orang-orang untuk kali kedua. Adakah sesiapa mempunyai apa-apa soalan, masalah yang mereka tidak faham, jawapan yang mereka tidak faham untuk kita bermula? Avi. PENONTON: Bolehkah anda hanya pergi ke atas DOM dan Ajax benar-benar cepat? Seperti, apa yang kita perlu tahu atau sepatutnya memahami tentang mereka? JASON Hirschhorn: saya akan menjawab biasanya soalan ini, apa yang saya perlu tahu tentang topik yang diberikan x? Kerana saya mempunyai perasaan ramai daripada anda akan bertanya kepada saya itu, atau adalah ingin tahu tentang itu. Jadi setakat mana topik itu dibincangkan dalam kuliah, atau seksyen, atau pada study.cs50.net, masalah ditetapkan, anda perlu biasa dengan ia. Jadi anda tidak perlu tahu setiap jenis tag yang boleh didapati dalam HTML atau setiap jenis sifat atau harta anda boleh memberikan sesuatu dalam CSS. Tetapi jika anda melihat dalam contoh kuliah, jika anda melihat ia dalam masalah set, anda mungkin perlu membiasakan diri dengan itu, terutamanya perkara yang anda nampak dalam kuliah. Jadi kita membincangkan dokumen itu membantah model sedikit dalam seksyen, lebih-lebih lagi dalam kuliah. Anda perlu membiasakan diri dengan yang banyak daripadanya. Dan anda perlu biasa dengan Ajax ke tahap yang sama. Kita tidak pernah melihat sangat maju atau contoh rumit Ajax, jadi anda tidak akan diminta melakukan sesuatu yang sangat rumit. Tetapi anda mungkin bertanya, bagaimana saya membuat panggilan Ajax menggunakan jQuery? Yang merupakan sesuatu yang anda telah melihat sebilangan kali sebelum ini, kedua-dua dalam sesi dan dalam syarahan mengkaji semula, dan ia hanya garis dua ish kod. Jadi itu adalah sesuatu yang anda perlu membiasakan diri dengan. Tetapi sekali lagi, untuk semua topik-topik ini, jika anda telah melihat ia sebelum ini, adalah permainan yang adil. Dan kita akan bertanya - jelas, kami akan meminta anda perkara yang anda tidak pernah melihat sebelum ini. Coding sesuatu yang anda tidak mempunyai lihat sebelum ini. Yang tidak bermakna anda tidak mempunyai melihat alat untuk menyelesaikan masalah yang sebelum ini. Anda telah melihat orang-orang alat. Sebagai contoh, pada Kuiz 1, jika anda perlu memberi kod strlen. Kami tidak dikodkan strlen sebelum ini. Tetapi anda tahu bagaimana untuk menggunakan untuk gelung, anda tahu bagaimana untuk menggunakan jika keadaan. Anda tahu bagaimana untuk menulis pembolehubah dalam C. Ia akan menjadi perkara yang sama di sini. Anda tidak akan diminta untuk melakukan apa sahaja yang anda tidak pernah melihat sebelum ini, tetapi anda mungkin akan diminta untuk, seperti, meletakkan sesuatu bersama-sama dengan cara yang baru, atau menyelesaikan berlainan jenis masalah. Maaf, itu bukan khusus untuk anda soalan, tetapi saya tidak boleh menjawab kira-kira setiap topik tunggal apa yang anda lakukan atau tidak perlu tahu. Tetapi juga, maaf, Perkara terakhir pada itu. Kami telah menghabiskan lebih banyak masa pada senarai pautan daripada kita mempunyai di Ajax. Anda tidak menggunakan Ajax dalam satu set masalah. Salah satu ciri utama yang masalah menetapkan bahawa adalah senarai link. Dan kita menghabiskan banyak masa dalam kuliah dan seksyen menggunakannya. Jadi, kemungkinan adalah senarai Pautan akan datang lebih sering kuiz daripada Ajax akan. Atau soalan-soalan yang mempunyai kaitan dengan link senarai akan bernilai lebih banyak mata. Jadi, anda sudah tentu boleh memberi tumpuan dan sempit di atas perkara-perkara yang lebih mungkin datang kerana kami mempunyai menghabiskan lebih banyak masa kepada mereka. OK apa-apa soalan lain? Yeah. PENONTON: Bolehkah kita pergi ke atas penggunaan fungsi tanpa nama dalam JavaScript? Saya adalah sedikit keliru tentang itu. JASON Hirschhorn: Jadi dalam JavaScript - Saya cuba untuk berfikir bagaimana saya boleh menulis ini pada - jadi mari kita sebenarnya membuka kod ini. Jadi ini adalah kod yang kita lakukan minggu lepas. Dan anda telah melihat sebelum ini jika anda berada di sini dalam bahagian minggu lepas. Atau anda telah melihat sesuatu serupa dengan ini sebelum ini. Tetapi anda boleh melihat garis pertama ini. Ini adalah bagaimana anda mula - semua orang melihat ini sebelum ini. Jika anda ingin meletakkan beberapa kod JavaScript, anda meletakkan ia di dalam ini, dengan andaian anda menggunakan JQuery. Ini berkata, tidak berbuat apa-apa sehingga dimuatkan dokumen itu. Dan kemudian, Curt, anda lihat di sini kita melakukan sesuatu seperti ini - fungsi paren terbuka, tertutup paren. Oleh itu, kita tidak memberikan ini berfungsi nama. Kami tidak akan menentukan fungsi ini sepatutnya untuk menjalankan dan kemudian memanggilnya sekumpulan kali. Kami hanya mengatakan dokumen ini sudah mengambil fungsi. Beberapa perkara yang perlu dilakukan. Dan kita tidak mahu menghabiskan masa yang memberikan nama atau simpan untuk lamanya. Kami hanya mahu menjalankan beberapa perkara. Jadi fungsi jenis tanpa nama daripada berfungsi maksud itu. Apabila anda tidak akan menggunakan sesuatu yang berulang-ulang kali, jadi anda tidak perlu untuk memberikan nama yang - anda hanya mahu menggunakannya sekali - anda hanya akan berkata fungsi, untuk Sebagai contoh, dalam kes ini, dan anda hanya menentukan sesuatu yang anda boleh memberi nama. Seperti, kita boleh tarik fungsi ini keluar dan memberikan nama dan kemudian memanggil bahawa berfungsi di sini. Tetapi kita tidak perlu kerana kita tidak mahu membuang masa memberikan nama atau membuang sesuatu di ruang nama kami. Dan anda akan melihat bahawa banyak. Sebagai contoh, kita lihat bahawa banyak dalam ini kod, tetapi anda telah melihat ini sebelum ini apabila anda klik sesuatu - menjalankan jenis ini kod. Kita boleh menentukan kod yang kita mahu untuk menjalankan apabila kita klik, dalam kes ini, ID ini, sebagai fungsi yang berasingan dan kemudian berjalan fungsi itu. Tetapi dalam kes ini, kami hanya ponteng langkah dan bergerak ke sini dan hanya untuk menentukan segala-galanya yang kita mahu berlaku dan tidak memberikan nama. Yang masih mungkin tidak mempunyai menjawab soalan anda. PENONTON: Tidak, ia tidak. Maksud saya, saya rasa saya hanya tidak benar-benar mendapatkan mengapa ia akan menjadi berfungsi pada semua, walaupun. Kerana ia tidak benar-benar dipanggil. Ia tidak benar-benar mempunyai nama. JASON Hirschhorn: Ia adalah satu fungsi dalam akal bahawa ia adalah satu siri langkah-langkah, seperti anda akan dimasukkan ke dalam satu majlis. Dan kemudian itulah sebabnya kita panggil ia berfungsi tanpa nama. Kami tidak akan memberikan nama. Kami tidak akan membazirkan cuba untuk menamakan ia, tetapi kita boleh. Fungsi tanpa nama, anda sentiasa boleh memberi nama. Sebagai contoh, kod ini di sini, kita boleh meletakkan kod ini di dalam fungsi dan kemudian memanggil fungsi ini di sini. Sebaliknya, kita katakan, kita tidak akan bersusah payah dengan itu. Kami hanya akan menulis ia semua di sini. Ia seperti kadang-kadang apabila anda menulis gelung empat C - anda semua telah melihat ini sebelum - mungkin anda iterating melalui forloop yang ke i sama dengan 0. Saya adalah kurang daripada strlen. Atau anda akan melalui beberapa pelbagai, anda boleh menyimpan pelbagai indeks i dalam beberapa pembolehubah. Dan anda menggunakan pembolehubah yang. Jadi anda tidak perlu untuk menulis semula pelbagai kurungan i berulang-ulang. Dan itulah jenis seperti pembolehubah dummy. Ia tidak berkhidmat tujuan banyak selain untuk membuat kod anda lebih bersih sedikit dan lebih mudah untuk dibaca. Fungsi yang serupa di sini. Hanya menjadikannya lebih mudah, tetapi fungsi tidak ada perbezaan. Adakah yang menjawab soalan anda? PENONTON: Ya. JASON Hirschhorn: OK .. Mario? PENONTON: Semalam mereka sering meletakkan fungsi kurungan acara. Adakah ini bermakna sesuatu? Atau adalah untuk perkara-perkara seperti bahawa mereka akan melakukan document.ready acara fungsi. JASON Hirschhorn: Kami telah melihat ini, dan lagi, ini adalah perkara-perkara yang lebih kecil yang mungkin saya tidak mahu menghabiskan terlalu banyak masa di. Kerana kadang-kadang saya tidak mahu orang mendapatkan yg ditandai keluar bahawa mereka tidak mempunyai mendengar tentang perkara-perkara yang banyak. Tetapi kita bercakap sedikit tentang pengendali acara. Jadi sesuatu berlaku, dan kemudian fungsi ini dilaksanakan. Dan kemudian kita juga mahu tahu beberapa maklumat tentang apa yang berlaku dalam acara ini. Jadi berfikir kembali kepada masalah yang ditetapkan 4. Itu mungkin cara paling mudah untuk faham bahawa dalam pecah keluar. Terdapat beberapa kod - seperti peristiwa yang akan berlaku, tetapi acara boleh bermaksud banyak perkara. Jika boleh bermakna tetikus diklik, ia bermakna anda memukul kunci anak panah, et sebagainya, dan sebagainya. Tetapi itu semua disimpan di dalam ini generik perkara dipanggil acara. Dan kemudian kita boleh berkata, adalah acara ini perkara ini? Atau ini acara perkara ini? Atau, apakah yang berlaku dengan acara itu? Jadi itulah sebabnya anda membuat pembolehubah yang di sana untuk menyelamatkan maklumat tambahan mengenai apa sebenarnya yang berlaku yang anda akan mahu menggunakan dalam majlis itu. Tetapi sekali lagi, itu mungkin salah satu perkara kurang penting untuk super biasa dengan. OK, apa soalan lain mempunyai orang mempunyai, atau halangan mereka telah dihadapi semasa mengkaji? Kami akan menyokong ke dalam senarai itu. Bagaimana pula dalam amalan kuiz, jika orang telah mengambil mereka yang sudah? Apa beberapa masalah yang tersandung kalian sehingga? Saya tahu hakikatnya bahawa tahun lepas kuiz adalah benar-benar keras. PENONTON: Bolehkah anda menjelaskan apa yang serangan suntikan SQL adalah? JASON Hirschhorn: OK, hebat. Oleh itu, kita bercakap tentang ini sedikit. Ada syarahan mengenai keselamatan. Dan sekali lagi, seperti yang saya nyatakan sebelum ini, ini adalah diketepikan. Tetapi anda akan kecewa kuiz apabila anda membaca kira-kira dua titik kecil soalan, dan anda seperti, apabila yang saya pernah belajar itu? Semua perkara-perkara dalam mereka kuliah yang anda tidak berfikir anda diperlukan untuk tahu, atau anda boleh menyembunyikan kerana mereka tidak mempunyai kaitan dengan set masalah, mereka akan mungkin datang sekali lagi pada kuiz. Jadi, sejuk, perkara yang menyeronokkan yang anda hanya fikir Daud memberitahu untuk anda menikmati, beliau telah memberitahu anda untuk anda menikmati dan untuk membuat anda hanya menjadi super teruja pembelajaran semua ada untuk belajar tentang sains komputer. Perkara-perkara yang juga datang pada kuiz. Jadi, walaupun perkara-perkara ini kecil yang tidak langsung berkaitan dengan masalah anda ditetapkan, sebagai anda semua biasa dengan dari Kuiz 0, mungkin akan datang. Dan ini adalah contoh yang baik sesuatu. Jadi serangan suntikan SQL adalah apabila anda mendapatkan maklumat dari pengguna dan anda mahu masukkan ke dalam jadual yang menggunakan kenyataan memasukkan SQL, tetapi anda tidak membersihkan input lebih awal daripada masa. Jadi, jelas kita lihat Pernyataan SQL. Saya hanya akan membuka - mari kita pergi - kami akan pergi ke kajian - Saya fikir, yang menutupinya? Saya rasa Samala lakukan. Oleh itu, kita boleh mendapatkan - PENONTON: Di manakah anda mendapati ini? JASON Hirschhorn: Jadi, jika anda pergi ke CS50.net, kuiz, dan kemudian anda boleh tatal ke atas dan mendapatkan slaid dari sesi kajian. Tetapi anda boleh melihat ini adalah satu contoh yang baik serangan suntikan SQL. Kami mengambil beberapa maklumat daripada pengguna dan mereka memberi kita tali, dan kemudian kita ingin memasukkan tali yang ke dalam pangkalan data. Secara umumnya kita akan membersihkan bahawa input, yang bermakna terdapat beberapa watak-watak yang berbahaya. Sebagai contoh, dalam rentetan SQL, sebut harga ini - petikan tunggal atau sebut harga dua kali ganda - bermakna sesuatu. Mereka bermakna berakhir rentetan ini di sini. Dan jadi jika pengguna memberi anda satu atau petikan berganda, mereka boleh cuba untuk perjalanan sehingga pertanyaan SQL anda dan memasukkan beberapa perkara yang tidak baik ke dalamnya. Dan jika mereka berbuat demikian, mereka boleh mendapat kawalan pangkalan data anda atau melakukan perkara-perkara yang anda tidak mahu mereka lakukan. Jadi itulah sebabnya apabila kita mengambil SQL pertanyaan, kami membersihkan input sebelum memasukkannya ke dalam pangkalan data yang bermakna kita melarikan diri mereka watak-watak. Kami akan bercakap tentang itu dalam satu saat. Tetapi cerita panjang pendek, suntikan SQL serangan adalah jika anda tidak berbuat demikian - jika anda tidak menjaga input mereka memberi anda sebelum meletakkan anda pangkalan data, mereka boleh, seperti yang anda lihat ke bawah di sini, jalankan pertanyaan itu, sebenarnya - mereka dimasukkan ke dalam kod mereka turun di sini dan line pilih ini turun di sini akan memilih segala-galanya dari meja tanpa mengira apa kata laluan yang diberikan. Kerana anda mempunyai atau 1 sama 1. Jadi ia pada dasarnya, cerita panjang pendek, satu cara untuk mengambil alih pangkalan data. Persoalannya, maka, untuk anda semua, adalah di mana dalam p set 7 adakah anda membersihkan semua input kepada pertanyaan SQL anda? Di mana langkah yang berlaku? Di manakah anda mencegah suntikan SQL serangan daripada berlaku dalam p menetapkan 7? Yeah. PENONTON: Crypt? JASON Hirschhorn: Jadi ia tidak crypt. Kami tidak membuat anda melakukan ini untuk ini masalah tertentu ditetapkan, tetapi ia berlaku dalam fungsi pertanyaan. Kami sebenarnya menulis untuk anda, dan kami menjaga yang sanitasi input untuk anda. Tetapi pada tahun-tahun yang lepas, pelajar mempunyai menaip input sendiri. Dalam p set 7, banyak anda - biarlah saya membuka satu fail lain. Jadi, anda akan melihat di sini banyak orang, dalam masalah menetapkan 7, tidak memanggil fungsi ini pada tali. Fungsi ini, htmlspecialchars, lagi - tali ini mungkin mempunyai beberapa perkara yang bahawa dalam HTML maksud sesuatu yang berlainan. Seperti pendakap, persegi, atau sudut kurungan bermakna sesuatu dalam HTML. Dan jadi jika anda mencetak bahawa daripada kepada skrin atau jika anda hanya mengambil itu dan mencetak tersebut kepada HTML anda, kekuatan yang melakukan sesuatu yang anda tidak jangkakan. Jadi htmlspecialchars pergi lebih semua orang watak-watak yang mempunyai khas mesyuarat dan melarikan diri mereka. Jadi ia mendapat dicetak sebagai teks yang anda mahu melihat, daripada merenyukkan HTML anda. Kami dipanggil fungsi yang dalam pengepala. Dan ramai orang terlupa untuk memanggil fungsi dalam kod anda telah menulis. Jadi, sebagai contoh, jika nama saham mempunyai kurungan sudut di dalamnya dan anda terlupa untuk memanggil fungsi ini, sudut yang kurungan boleh dibuang dari apa yang HTML anda kelihatan seperti. Tetapi memanggil fungsi ini akan melarikan diri yang jadi ia sebenarnya akan paparkan sebagai kurungan sudut dan tidak membuang off kod HTML anda. Sebab sama kita lihat, kadang-kadang, garis condong sebelum sebut harga berganda dalam printf talian kerana kita tidak mahu petikan berganda turun tali. Kami mahu mencetak mereka keluar ke skrin. Jadi semua ini adalah idea yang sama. Adakah yang menjawab soalan anda? PENONTON: Jenis. JASON Hirschhorn: Adakah anda mempunyai susulan? PENONTON: Saya rasa suntikan SQL serangan mempunyai kaitan dengan itu? Saya tidak faham bagaimana kedua-dua adalah berkaitan. Mengapa anda akan melakukan perkara yang specialchars? JASON Hirschhorn: OK, jadi SQL serangan suntikan adalah apabila anda menyuntik beberapa tali yang berniat jahat ke dalam seseorang itu program, dan mereka hanya mengambil dan menjalankan pertanyaan SQL dengan tali anda berikan kepada mereka. Seperti yang anda boleh melihat ke bawah di sini, bahawa boleh menimbulkan masalah. Jadi cara yang anda mengelakkan daripada yang anda mengambil tali mereka yang mereka berikan anda - jadi tali ini di sini - dan anda membersihkan ia. Anda melarikan diri semua perkara yang berpotensi bermasalah. Jadi anda tidak mentafsirkan mereka sebagai sesuatu yang yang bermaksud sesuatu. Dan satu contoh bahawa dengan HTML adalah fungsi ini. Jadi ia adalah idea yang sama di sini. Dan saya hanya menunjukkan anda yang lain contoh apabila anda telah melihat idea ini sebelum ini. Melepaskan diri input pengguna sebelum mencetak ia keluar ke skrin atau meletakkannya di dalam satu kenyataan SQL. PENONTON: Jadi dalam kes ini, pengguna adalah kerunsingan dengan pengaturcara. JASON Hirschhorn: Ya. Dengan semua serangan ini keselamatan, yang sentiasa umumnya pengguna, atau seseorang, cuba untuk mes dengan anda, pengaturcara. Dan ini adalah cara anda boleh mencegah terhadap mereka. PENONTON: Jadi saya mempunyai satu soalan tentang fungsi hash. Dalam Kuiz 1 dari tahun 2011, terdapat dua soalan mengenai Hash berat sebelah. Dan saya hanya tertanya-tanya apa yang dimaksudkan. JASON Hirschhorn: OK, yang kuiz? 2011? PENONTON: Yeah. PENONTON: Kuiz 1? PENONTON: [didengar]. Itu seperti sambil berbincang kata laluan. Itu tidak meletakkan sesuatu - JASON Hirschhorn: Apa halaman maklumat itu? PENONTON: Saya rasa ia adalah 9 atau 10, atau kedua-duanya. JASON Hirschhorn: Baiklah, teruskan, Curt. Anda boleh menjawab manakala kita melihat. PENONTON: Saya rasa ia bercakap kira-kira sambil berbincang kata laluan. Seperti, apabila seseorang memasuki kata laluan, anda mengubahnya menjadi satu perkara yang disulitkan. Itulah kata laluan hash, yang berbeza daripada fungsi hash yang meletakkan sesuatu ke dalam jadual hash. JASON Hirschhorn: Mari kita lihat. Biar saya tarik sehingga apa yang mereka memberikan sebagai jawapan. Dan kemudian kita akan berjalan melaluinya. Jadi Curt memberikan contoh yang baik seorang sehala hash. Apabila kita telah melihat ini sebelum ini, kami mengambil kata laluan dan bertukar - ingat, dalam p set 7, seseorang mungkin mempunyai kata laluan itulah kata laluan hanya, tetapi kemudian ia mendapat disulitkan ke dalam beberapa perkara benar-benar panjang. Sehala hash bermakna ia adalah sangat mudah pergi dari satu cara untuk yang lain, tetapi ia amat sukar untuk pergi dari sebaliknya kembali. Dan supaya anda tahu, apabila anda telah memeriksa kata laluan rakyat dalam masalah menetapkan 7, anda akan mengambil mereka - jadi, sebagai contoh, berkata mereka mahu menukar kata laluan mereka, anda bertanya kepada mereka kata laluan lama mereka. Anda telah mengambil kata laluan lama mereka. Anda disulitkan ia. Dan kemudian membandingkan dua encryptions bukannya unencrypting asal satu, kerana ia benar-benar sukar untuk pergi dengan cara itu. Yeah. PENONTON: Bagaimana mendalam tidak kami pemahaman telnet perlu? JASON Hirschhorn: Jika ia telah disebut secara ringkas di dalam kuliah, hanya ringkas pemahaman. Sekali lagi, kembali kepada jawapan yang kepada soalan ini Avi - perkara yang lebih datang, semakin besar kemungkinan ia anda perlu super biasa dengan mereka. Jika mereka telah hanya datang dalam kuliah, itu hanya satu tempat. Tetapi jika mereka datang dalam kuliah, seksyen, dan masalah yang ditetapkan, maka anda mungkin perlu super biasa dengan mereka. Jadi saya terpaksa soalan daripada awal tentang - Adakah adalah kejatuhan 2010 - Kuiz 1, mari kita tarik ke atas - soalan ini pada susunan dan beratur, yang kita lakukan menghabiskan sedikit saksama masa bercakap tentang dalam kuliah, walaupun walaupun kita tidak benar-benar pernah memukul di bahagian. Jadi soalan ini memberikan anda satu siri arahan dan meminta anda apa yang mendapat dicetak dalam kes ini. Jadi ini adalah soalan yang benar-benar munasabah yang boleh diminta daripada anda lelaki, dan kemudian anda perlu lelaki dapat menjawabnya. Jadi mengapa tidak anda melihat ia selama 30 saat, dan kemudian jika ada sesiapa yang mahu mencadangkan jawapan kepada saya, dan maka kita akan berjalan melaluinya. Baiklah, yang mempunyai jawapan mempersoalkan 27? Yeah. PENONTON: Adakah 1, 2, 3, 3? JASON Hirschhorn: Betul. 27 adalah 1, 2, 3, 3. Jadi mari kita lihat bagaimana kita mendapat itu. Pertama, kita akan berkata, jika s adalah barisan, apa yang akan dicetak? Jadi q adalah pertama dalam, mula-mula keluar. Kami telah melihat yang sebelum ini. Kami melihat gambar orang menunggu di Apple Menyimpan untuk membeli produk tertentu. Orang pertama di adalah orang pertama keluar. Perkara pertama dalam barisan adalah perkara pertama yang keluar. Jadi, jika kita menolak sesuatu ke dalam barisan, anda menolak 1, maka kita pop 1. Pop hanya bermakna mengambil. Dalam kes ini, hanya mengambil sesuatu yang keluar. Kami mengambil yang pertama perkara, itu adalah satu 1. Oleh itu, kita akan meletakkan perkara yang kita mencetak turun di sini. Ini tidak lagi dalam barisan kami. Maka kita menolak pada 2 dan 3, dan kita meninggal perkara pertama. Sekali lagi, kerana ia adalah barisan. Jadi kita akan mendapat 2, maka kita memakai satu lagi 3 dan panggilan pop lagi. 3 kami adalah pertama. Dan kemudian kami mempunyai sejumlah besar perkara-perkara lain dan panggilan pop. Tetapi sekali lagi, kerana ini adalah barisan, masuk dahulu, keluar dahulu. Kami mengambil perkara pertama yang pernah meletakkan masuk Itulah 3 kami. Dan, dalam kes ini, kita tidak bimbang kira-kira semua perkara-perkara lain. Jadi, itu jika ini adalah barisan. Apa-apa soalan mengenai barisan? A timbunan itu berbeza. Apakah singkatan yang kita ada untuk memahami timbunan? PENONTON: Terakhir dalam, mula-mula keluar. JASON Hirschhorn: LIFO, saya fikir. Terakhir dalam, mula-mula keluar. Oleh itu, kita melihat satu contoh timbunan dulang di dewan makan. Apa sahaja dulang adalah di atas mendapat meningkat. Dan kemudian jika dulang baru datang dalam, mereka mendapatkan meletakkan di atas. Dan kemudian apa yang ada pada atas mendapat meningkat. Maka orang-orang dulang pada kekuatan bahagian bawah tinggal di sana untuk seketika. Dalam kes itu, sekali lagi, kita akan menarik ini keluar. Kami menolak satu, jadi satu adalah pertama dalam talian. Dan kita pop sesuatu dari. Dan terdapat hanya satu perkara di sana, jadi kita bergerak 1 di sini. Kemudian kami meletakkan pada 2 dan 3 dan kita pop sesuatu dari. Tetapi sekali lagi, kerana ini adalah barisan - atau ini adalah timbunan, dan bukan - kita mengambil apa sahaja yang di lepas. Segala yang ada di lepas keluar pertama. Dan 3 adalah lepas. Oleh itu, kita meletakkan 3 di bawah sana, maka kita memakai 3 lain dan kita pop sesuatu lagi. Akhir sekali, kami meletakkan pada 4, 5, 6, dan 7, dan di sini kita pop. Dan kerana ia adalah timbunan, kami mengambil apa sahaja yang telah dimasukkan ke dalam lalu dan menulis yang turun di sini. Oleh itu, kita berakhir dengan 1, 3, 3, 7. Adakah sesiapa mempunyai sebarang soalan mengenai susunan atau beratur, atau contoh ini? OK. Mari kita kembali ke senarai topik. Tidak dengan cara itu, dengan cara ini. Apa soalan-soalan lain yang orang ada? PENONTON: Saya tidak tahu betapa pentingnya ini, tetapi saya keliru dengan Perbezaan antara jenis bahasa seperti markup, disusun, ditafsirkan. JASON Hirschhorn: Itu satu soalan yang baik. Saya rasa itu adalah agak penting, jadi mari kita pergi lebih cepat. Bahasa-bahasa yang besar yang kita lihat setakat ini adalah C, PHP, dan JavaScript, dari segi pengaturcaraan bahasa. HTML, seperti yang anda nyatakan, tidak bahasa pengaturcaraan. Ia adalah satu bahasa markup. Dan maka kita mempunyai CSS, yang juga bukan bahasa pengaturcaraan. Kami juga telah melihat SQL, yang tidak bahasa pengaturcaraan sama ada. Jadi SQL membolehkan anda menulis pertanyaan untuk database. HTML adalah bahasa markup. Ia mentakrifkan bagaimana perkara-perkara yang berstruktur. Dan CSS membolehkan anda untuk gaya sesuatu. Itu mungkin setakat untuk apa yang anda perlu tahu tentang ketiga-tiga. Tetapi ia adalah lebih menarik kepada angka daripada perbezaan antara C, PHP, dan JavaScript. Jadi salah satu perbezaan terbesar, kerana anda disebut, ialah bagaimana mereka disusun, atau apa sahaja bersamaan itu. Jadi C disusun. Kami akan sentiasa menjalankan pengkompil. Dan kemudian di mana kesilapan anda apabila anda menjalankan pengkompil C? Di manakah ia menunjukkan kepada anda ralat Dalam kod anda? Bagaimana anda tahu terdapat satu kesilapan dalam kod anda dalam C? PENONTON: Ia menunjukkan anda di terminal. JASON Hirschhorn: Ia menunjukkan anda dalam terminal seperti yang anda sedang menyusun. Dan jika ada kesilapan, ia tidak akan benar-benar menyusun ia. Jadi anda tahu bahawa terdapat kesilapan betul jauh, lebih awal daripada masa, sebelum anda walaupun menjalankan kod anda. Sudah tentu, anda mungkin menjalankan kod anda dan mendapatkan kesalahan segmentasi, tetapi itu mungkin kerana anda lakukan beberapa perkara logik bodoh. Tetapi kod anda dengan teknikal semuanya betul dan boleh berjalan. Jadi kod C mendapat disusun lebih awal daripada masa. Bagaimana pula kod PHP? Di manakah kesilapan dalam kod PHP anda? Bagaimana anda tahu anda mempunyai ralat dalam kod PHP anda? PENONTON: masa Jalankan? JASON Hirschhorn: Ya, apabila anda akan menjalankannya, anda akan menjalankan Kod PHP di belakang. Dan kemudian anda akan memaparkan skrin. Anda mungkin melihat beberapa perkara yang di atas, tetapi anda akan melihat, seperti, beberapa oren, meja hodoh. Dan ia akan memberi anda nombor talian dan katakan, blah, blah, blah, barangan ini tidak berjaya. Jadi PHP talian ditafsirkan oleh garis dan dilaksanakan pada pelayan. Dan kemudian hasilnya adalah dihantar kepada anda. Besar. Dilaksanakan selaras pelayan dengan garis dan kemudian dihantar kepada anda. Dan jika ada kesilapan, ia akan menghantar anda kesilapan itu, tetapi anda mungkin mempunyai mendapat beberapa perkara terlebih dahulu. Jadi sebahagian daripada ia mungkin telah bekerja, tetapi kemudian, beberapa barangan mungkin tidak mempunyai tidak bekerja. Bagaimana pula JavaScript? Dari mana kamu melihat JavaScript kesilapan? Dalam p menetapkan 8, apabila anda mendapat kesilapan, bagaimana adakah anda tahu? Di mana ia akan muncul? PENONTON: Dalam konsol, di bahagian bawah. JASON Hirschhorn: Dalam konsol, di bahagian bawah. Ia juga akan memberi anda nombor talian, dan ia akan muncul di bahagian bawah. Dan JavaScript telah tidak dilaksanakan pada pelayan. JavaScript dihantar ke komputer anda, dan kemudian apabila ia adalah masa untuk menjalankan JavaScript, JavaScript adalah menjalankan baris demi baris atas pelanggan, di sebelah anda. Tidak pelayan, sebelah pelanggan. Begitu juga, ia adalah menjalankan baris demi baris. Dan kemudian apabila anda akan mendapat kesilapan, ia akan muncul di bahagian bawah. Begitu juga dengan PHP, ada yang mungkin melaksanakan, dan kemudian anda mungkin akan kesilapan di kemudian hari. Juga, tidak seperti PHP sedikit, jika anda mendapat ralat JavaScript - mengatakan anda tidak melakukan hak kod untuk kotak amaran - anda boleh terus berjalan program anda. Kotak amaran tidak akan bekerja, tetapi program anda akan denda. Hanya mungkin fungsi yang akan gagal. Jadi ada beberapa yang terbesar perbezaan dari segi bagaimana bahasa, atau bagaimana kod pengaturcaraan anda menulis sebenarnya dinilai. Terdapat juga perbezaan lain di segi - perbezaan yang paling besar yang kita lihat dari segi pembolehubah dalam bahasa-bahasa berbeza. Jadi sesiapa sahaja boleh memberi saya perbezaan antara pembolehubah dalam tiga bahasa? Ya. PENONTON: Dalam C, mereka ketat ditaip. Dalam dua yang lain, mereka longgar ditaip. JASON Hirschhorn: Dan apa maksudnya? PENONTON: Bahawa dalam C, anda perlu mengisytiharkan jenis pembolehubah apabila anda mengisytiharkan pembolehubah, seperti interbool atau char. JASON Hirschhorn: Cemerlang. Dalam C, kami sentiasa terpaksa meletakkan sejenis pembolehubah. Dan kita tidak boleh benar-benar campuran jenis. Anda tidak boleh melakukan integer ditambah rentetan. Tetapi seperti yang kita lihat dalam ini lain bahasa, anda sebenarnya boleh mencampurkan jenis, dan anda tidak benar-benar perlu memberi sesuatu jenis yang, pernah. Jadi bagaimana kita mengetahui perkara-perkara adalah pembolehubah dalam PHP dan JavaScript? PENONTON: Dalam PHP, mereka mula dengan tanda dolar. Dalam JavaScript, apabila anda mengisytiharkan mereka, anda perlu mempunyai bar. JASON Hirschhorn: Betul. Jadi dalam PHP, mereka mula dengan tanda dolar. Dalam JavaScript, mereka perlu mempunyai bar, walaupun kadang-kadang mereka tidak sebenarnya perlu mempunyai bar. Tetapi itu betul. Jadi itu adalah satu perbezaan yang besar antara pembolehubah. Saya fikir mungkin, di luar atas kepala saya, kedua-dua terbesar perbezaan antara kedua- tiga bahasa. Tetapi, yeah. PENONTON: Dan skop pembolehubah C adalah terhad kepada pendakap kerinting, di mana orang-orang yang lain, ia hanya suka, ia mati jika ia dalam fungsi sahaja, tetapi jika tidak, it's - JASON Hirschhorn: Betul. Jadi skop adalah sedikit berbeza dalam C. Sebagai anda masih ingat, pendakap kerinting menentukan skop pembolehubah. Jadi, jika ia ditakrifkan di dalam jika keadaan, yang di dalam gelung, pembolehubah hanya wujud di sana. Dalam JavaScript, jika pembolehubah ditakrifkan di dalam jika keadaan - di dalam untuk gelung - ia akan wujud untuk fungsi itu, tetapi ia tidak akan wujud di luar fungsi itu. Jadi skop adalah sedikit lebih fleksibel dalam JavaScript dan PHP. Yang menjawab soalan? OK, mana-mana soalan-soalan lain? Kita boleh melakukan empat minit lagi soalan, maka kami akan melompat ke dalam pengkodan. PENONTON: Bolehkah kita pergi ke Ajax dan bercakap tentang apa yang? JASON Hirschhorn: Berbincang dengan Avi selepas. Dia bertanya soalan yang lebih awal. PENONTON: buruk saya. JASON Hirschhorn: Tidak perlu risau. PENONTON: Apa sebenarnya JSON? JASON Hirschhorn: Apakah JSON? Apakah soalan anda? PENONTON: Hanya benar-benar cepat, perbezaan di antara cetak dan gema dalam PHP. JASON Hirschhorn: Mengapa tidak anda google perbezaan antara cetak dan echo? Sedikit perbezaan. Tidak bahawa besar perjanjian. Tetapi anda pasti perlu google ia, dan yang akan memberikan jawapan yang baik. JSON, mungkin lebih besar daripada perjanjian. Bermaksud JavaScript Objek notation. Dan apabila kita melihat JSON digunakan? Apabila telah anda melihat - mengapa anda juga tahu JSON perkataan? Apabila telah anda melihat ia? PENONTON: Apabila kita telah mendapat saham memetik bagi kewangan. JASON Hirschhorn: Jadi anda melihat apabila anda telah mendapat saham memetik bagi kewangan. Dan mengapa kamu melihatnya? PENONTON: Apabila kita telah mendapatkan semula semua maklumat yang datang dalam format tersebut. JASON Hirschhorn: Jadi, anda akan mendapat - yeah. Teruskan. PENONTON: [didengar] Maklumat daripada objek? JASON Hirschhorn: Kedua-dua mereka meletakkan bersama-sama adalah jawapannya kita cari. Anda mahu maklumat daripada laman web lain ini. Dan anda akan berharap bahawa apabila anda mendapatkan maklumat itu, ia akan menjadi yang diberikan kepada anda dalam beberapa jenis format yang seragam. Semua orang mungkin biasa dengan nilai-nilai yang dipisahkan dengan koma. Anda boleh mengeksport spreadsheet Excel atau apa-apa jenis spreadsheet sebagai senarai nilai dipisahkan koma. Dan koma membahagikan semua bidang yang berbeza. JavaScript Objek Notasi - JSON - satu lagi jenis standard susun atur perkara. Dan itu sering bagaimana kita mendapatkan maklumat dari pertanyaan Ajax kami. Jadi dalam kes ini, kami mendapat ia dari laman Yahoo. Mereka kembali perkara yang perlu kami dalam objek JSON. Dan kemudian kita tahu, kerana ia standard, apa yang ia akan kelihatan seperti. Jadi kita boleh melelar melalui array itu dikembalikan kepada kita, yang pelbagai objek yang dikembalikan kepada kami. Kami mungkin perlu tahu kunci, tetapi mereka biasanya memberikan dokumentasi dalam laman web apabila anda semasa mengambil beberapa JSON notasi untuk mereka. Begitu juga, anda boleh JSON mengekod objek. Jadi ada fungsi JSON menekankan mengekod. Dan supaya anda boleh mengambil objek yang Anda buat, JSON mengekod, dan serahkan kepada sesuatu lagi, jika anda mahu. Dan JSON decode juga wujud untuk tujuan yang sama, atau bagi tujuan bertentangan. PENONTON: Adakah kita perlu tahu pengekodan untuk jadual hash dan cuba? Atau adakah kita hanya perlu memahami bagaimana ia digunakan dari segi konsep? JASON Hirschhorn: Jadi, mengangkat tangan anda jika anda melakukan jadual hash untuk p yang ditetapkan 4 dengan senarai link. Atau p menetapkan 5. Sehingga adalah majoriti besar rakyat. P menetapkan 5, 6, yang tahu. Satu masa dahulu. Jadi majoriti yang anda lakukan hash jadual dengan senarai link. Dan kerana itulah mungkin yang lebih pendekatan yang sama, dan kerana kami menghabiskan banyak masa melakukan senarai link dan hash jadual, anda mungkin perlu agak biasa dengan bagaimana untuk kod jadual hash dan senarai link. Dan jika anda berfikir kembali kepada masalah yang ditetapkan, ia tidak benar-benar keras seperti yang anda harapkan. Dan ada banyak yang kurang kod daripada yang anda harapkan. Saya akan mengatakan anda perlu tahu bagaimana untuk kod jadual hash atau senarai link. Tidak bahawa anda akan meminta, semestinya, tetapi anda perlu pasti tahu bahawa. Juga, jika anda melihat melalui masa lalu kuiz, terdapat banyak soalan tentang menulis fungsi pada senarai pautan atau senarai duanya adalah terpakai berkaitan. Yang seolah-olah datang setiap tahun satu. Memasukkan kanan pada senarai link, betul memotong daripada senarai pautan, memasukkan hak untuk senarai duanya adalah terpakai berkaitan, dan sebagainya. Jadi itu, saya berasa cukup selesa mengatakan anda perlu tahu bahawa. Untuk mencuba, saya akan berkata anda harus tentu tahu bagaimana ia berfungsi, dan mungkin memberikan beberapa kod pseudo untuk bagaimana kod dan membinanya. Tetapi ia tidak akan menjadi perkara yang paling buruk dalam dunia jika anda tidak tahu bagaimana untuk kod dalam C. Ia akan menjadi besar jika anda tahu bagaimana untuk kod dalam C, tetapi saya fikir mungkin kod pseudo untuk mencuba akan yang paling anda perlu tahu untuk mencuba. PENONTON: Kredit tambahan? JASON Hirschhorn: Dan sama dengan, jika kita pergi ke dalam pokok-pokok carian binari, anda mungkin perlu - dan anda telah melihat pada masa lalu, kami telah melakukan banyak - anda tahu bagaimana pokok carian binari berfungsi. Anda mungkin akan dapat menetapkan satu dalam kod pseudo. Tetapi kerana majoriti orang tidak berbuat demikian pada masalah set, saya rasa ia mungkin kurang penting bahawa anda tahu bagaimana untuk kod dan menubuhkan sebuah pokok seperti itu. Apa-apa soalan lain? Juga, kita boleh bertanya kepada mereka di seluruh seperti yang kita pergi melalui beberapa masalah. OK, kita akan bergerak ke atas. Langkau slaid yang sekarang. Bercakap pokok, yang pertama soalan saya untuk anda semua. Kerana ini adalah satu masalah. Saya akan berkata ia kemungkinan besar anda akan mendapat masalah seperti ini di kuiz anda meminta anda untuk memberi kod kepada beberapa jenis memasukkan, memadam, carian, untuk satu jenis struktur data yang kita lihat. Yang datang setiap tahun dan kami menghabiskan banyak masa separuh kedua ini semester akan lebih jenis data. Jadi sekarang, saya telah ditakrifkan nod dalam pokok carian binari. Dan apa yang saya ingin anda lakukan adalah diberikan pokok carian binari yang bermula di ini akar nod bintang, melengkapkan pelaksanaan fungsi di bawah, yang berlaku sebagai fungsi find. Dan melakukannya dengan dan tanpa recursions. Jadi saya mahu anda untuk menulis dua fungsi. Satu melakukan ini dengan rekursi, satu melakukan ini tanpa rekursi. Dan jangan menganggap bahawa akar akan bukan nol. Jadi kita cari integer i dalam pokok itu bermula di akar, dan kita perlu untuk menulis ini secara rekursif dan iterative. Yeah. PENONTON: Jadi anda mahu kita kembali benar jika kita merasa, dan palsu jika kita tidak menemuinya. JASON Hirschhorn: Bagaimana anda tahu? Bagaimana anda tahu bahawa? PENONTON: Saya meminta pertama, tetapi saya dengan andaian, kerana ia berkata di bool permulaan majlis itu. JASON Hirschhorn: Betul. Ia mengatakan bool, jadi saya tidak perlu memberitahu anda apa yang saya mengharapkan anda untuk kembali kerana ia berkata di sana. Tetapi itu betul. Kembali, benar atau palsu. Jadi sebelum anda bermula, saya akan mengesyorkan, jika anda tidak biasa dengan pokok carian binari, dengan cepat menarik gambar itu untuk mendapatkan anda pemahaman, betul. Yang juga akan membantu anda semasa menulis kod anda dan memeriksa ia. Sekali lagi, anda juga tidak mempunyai banyak masa kuiz untuk melakukan semua perkara-perkara yang yang kami meminta anda lakukan. Jadi menulis kod pseudo sangat membantu. Dan kita secara amnya memberikan tentang - jika kod pseudo adalah betul-betul betul, itu biasanya 50% soalan. Jadi ia bukan satu peraturan yang keras dan cepat, tetapi jika anda hanya menulis kod pseudo dan ia betul, ia biasanya 50%. Jadi saya selalu mengesyorkan - jika anda tertekan dengan masa, atau jika anda hanya cuba untuk mencari penyelesaiannya - bermula dengan kod pseudo yang. Dan akhirnya, jika anda boleh menulis ini semua dalam C, yang akan menjadi hebat. Jadi mari kita mengambil masa tiga minit bekerja pada program ini. Dan kemudian kita akan menulis kod pseudo untuk itu hanya sekali, dan kemudian kita akan kod ia secara rekursif dan kemudian secara berulang. Jika anda mempunyai sebarang pertanyaan, sila percuma mengangkat tangan anda. Selamat berjalan-jalan dan menjawab mereka sebelum kita mula sebagai satu kumpulan. Marilah kita menyambung semula, dan kita akan pseudokod versi rekursi daripada ini, dan kemudian kami akan kod itu. Jadi fungsi rekursi memerlukan dua perkara. Ini mungkin soalan yang anda boleh ditanya. Keperluan dua perkara. Siapakah yang boleh mengangkat tangan mereka dan beritahu saya apa yang kedua-dua perkara yang rekursi fungsi memerlukan? Mengikut definisi ia mempunyai dua perkara. Apakah kedua-dua perkara? Tangan baru. Ya, Alden. PENONTON: Jadi saya tidak betul-betul pasti jika ini adalah istilah, tetapi - JASON Hirschhorn: Saya gembira anda mengangkat tangan anda. PENONTON: Ia memerlukan kes asas, dan ia memerlukan satu langkah rekursif. JASON Hirschhorn: Perfect. Ia memerlukan kes asas dan langkah rekursif. Jadi apa kes asas kami di sini? PENONTON: F akar sama sama null. Maaf, hanya dalam kod pseudo, jika ia null. Jika akar adalah null. JASON Hirschhorn: Jika akar adalah null. Itulah yang sangat baik. Itulah kes asas kami. Itulah apa yang kita akan untuk memeriksa setiap masa. Dan kes asas adalah Perkara pertama yang anda lakukan. Jika anda memukul kes asas, anda selesai. Sekarang kita perlu panggilan rekursif kami, dan saya bersedia untuk bertaruh kita perlu pasangan rekursif panggilan di sini. Kerana ia adalah pokok, dan kami boleh pergi pelbagai cara. Jadi, jika akar adalah batal, kita pandai. Apa yang anda cadangkan? Dan sekarang saya akan mula memanggil pada anda semua, kerana saya tahu anda semua semua tahu ini. Tetapi Annie, apa yang perlu baris seterusnya menjadi? Bagaimana jika kita mendapati ia? Apa yang kami lakukan? PENONTON: Jika kami mendapati ia? JASON Hirschhorn: Atau apa perlu bahawa - memberi saya kod pseudo untuk talian di mana kami mendapati ia. PENONTON: Jika saya sama akar i? JASON Hirschhorn: Dan maka apa yang kita lakukan? PENONTON: Kembali benar. JASON Hirschhorn: Great. Jadi, jika i adalah i - oh, mereka kedua-dua dipanggil i. Yang mendapat mengelirukan. Tetapi jika i adalah i kembali benar. Itu mungkin seterusnya perkara yang kita perlu lakukan. Masuk akal. OK, sekarang kita tidak melakukan rekursif kami memanggil lagi, walaupun, kerana rekursif yang panggilan akan memanggil fungsi ini sekali lagi. Jadi apa yang perlu seterusnya garis kod pseudo menjadi? Anna. PENONTON: Sisi kiri. JASON Hirschhorn: Khusus, walaupun. Ini adalah pokok carian binari, jadi apa tidak memeriksa sebelah kiri memerlukan? PENONTON: Jadi nod - Saya minta maaf, akar. Dan kemudian arrow kiri. Nod, nod, maaf. Saya tidak membaca dengan betul. Ia dipanggil nod, bukan? JASON Hirschhorn: Ia akan dipanggil akar dalam fungsi, tetapi cara sama ada. Sebelah kiri - yeah? PENONTON: Jika tidak sama i, maka kita akan memanggil fungsi sekali lagi? JASON Hirschhorn: Betul. Jika ia tidak sama i, kita akan untuk memanggil fungsi sekali lagi. Tetapi apa yang tepi pokok itu kita akan untuk memanggil fungsi sekali lagi? PENONTON: Di sebelah kiri. JASON Hirschhorn: Kami tidak sentiasa akan memanggilnya kiri, jika ia tidak sama ia. PENONTON: Oh, maaf. Panggilan di sebelah kanan. JASON Hirschhorn: Kami mahu tahu secara spesifik, walaupun - ingat, dalam pokok carian binari, segala-galanya kepada sebelah kiri adalah lebih kecil. Semua ke kanan sebelah adalah lebih besar. Jadi ia hanya tidak - yeah, teruskan. PENONTON: Jika ia kurang dari i, maka - jika ia di sebelah kiri - JASON Hirschhorn: Jadi, jika ri adalah kurang daripada - jadi jika bilangan kami adalah kurang daripada i, apa yang pihak kita ingin pergi ke? PENONTON: Kami mahu pergi ke sebelah kanan. JASON Hirschhorn: Kami mahu pergi - biarlah saya menarik pokok yang cepat. Jika ini adalah 5, ini akan menjadi 3. Jadi jika ri kurang daripada lima, apa sebelah kita mahu pergi ke? PENONTON: Maaf, apa? JASON Hirschhorn: bilangan kami adalah kurang daripada bilangan kami melihat sekarang. PENONTON: Oh, maka kita mahu untuk pergi ke sebelah kiri. Yeah. Maaf. JASON Hirschhorn: Tepat sekali. Tidak perlu risau. Dalam binari pokok carian, segala-galanya yang lebih rendah adalah di sebelah kiri, lebih besar adalah ke kanan. Jadi, jika bilangan kami adalah kurang daripada i kita memeriksa - kerana anda melihat dalam nod, ia mempunyai i - maka anda mahu pergi ke kiri. Dan ini adalah sesuatu yang mudah. Apakah garis lain pseudokod kita perlu menulis? Carlos? PENONTON: Perkara yang sama, anda hanya menukar kepada yang lebih besar daripada tanda dan pergi ke kanan. JASON Hirschhorn: Bolehkah anda berkata ia masa yang lebih? PENONTON: Jika bilangan kami adalah lebih besar dari i, pergi ke kanan. JASON Hirschhorn: Cemerlang kerja pada kod pseudo yang. Marilah kita melakukan ini dalam kod sebenar. Dan sekali lagi, kod pseudo ini akan mungkin mendapat anda, kerana ia betul, 50% ke atas soalan ini. Tetapi kod pseudo ini juga diterjemahkan satu kepada satu, pada dasarnya, ke dalam kod. Jadi marilah kita melakukan ini dalam C. Siapakah yang boleh memberi saya baris pertama kod? Sebenarnya, pertama, sebelum saya melakukan ini, biarlah saya ketepikan - PENONTON: Saya mempunyai satu soalan. Mengapa anda inden line aku telah memberi? JASON Hirschhorn: Kerana Saya tidak boleh menulis. Saya tidak tahu. Anda betul. Garis yang perlu di sana. OK, di sini adalah fungsi kami. Dan biarlah saya ketepikan, juga, definisi kita satu nod. Apakah yang akan berlaku jika kita tidak menulis typedef? Musuh? PENONTON: Ia tidak akan mengumpulkannya. JASON Hirschhorn: Ia akan menyusun, yeah. PENONTON: Adakah ia hanya mengisytiharkan satu contoh dan bukannya menjadikannya baru jenis anda boleh mengisytiharkan berganda contoh? JASON Hirschhorn: Jadi ia tidak akan tahu - ia tidak akan hanya mengisytiharkan satu jenis. Anda masih boleh membuat banyak nod. PENONTON: Tetapi tidak kita perlu menulis nod struct setiap kali? JASON Hirschhorn: Betul. Anda harus menulis nod struct setiap kali, bukan hanya nod. Tetapi dengan typedef, anda boleh hanya menulis nod setiap kali tunggal. OK, yang tidak diberikan - yeah, Avica. PENONTON: Jika akar sama setaraf batal, pulangan palsu. JASON Hirschhorn: Besar, dan itulah kes asas kami. Barisan seterusnya kod. Seseorang yang telah tidak diberi saya garis kod lagi? Yeah. PENONTON: Akar arrow i sama sama dengan i. Kemudian kembali benar. JASON Hirschhorn: Great. Line Seterusnya? Yeah. Orang lain? Dan kemudian anda boleh pergi selepas ini. PENONTON: Else jika akar arrow i adalah kurang daripada i kembali fungsi dipanggil find akar - JASON Hirschhorn: Maaf. PENONTON: Pulang find akar mata ke kiri koma i. JASON Hirschhorn: Jadi jika ri adalah lebih besar daripada perkara yang di pokok itu, kita mahu pergi ke kiri? PENONTON: Tidak, saya mempunyai yang dihidupkan. JASON Hirschhorn: Yang mana satu? PENONTON: Tidak, yeah. Saya mempunyai kurang daripada menandatangani sana. JASON Hirschhorn: Betul, jika ri adalah kurang daripada apa yang di dalam akar - akar semasa kami - maka kita mahu pergi ke kiri. Dan apa yang barisan terakhir, anda? PENONTON: Pada dasarnya perkara yang sama, kecuali menukar lebih besar daripada atau sama dengan kurang daripada dan kiri ke kanan. JASON Hirschhorn: Cemerlang. Adakah sesiapa mempunyai apa-apa soalan tentang perkara ini? Jadi beberapa perkara lain yang akan telah betul ialah boleh menjadi-ltiff. Guess, secara teknikal, ini tidak benar-benar juga perlu-ltiff. Juga, ada mungkin hanya satu kes di sini. Jadi, itu mungkin kes terakhir anda. Anda tidak perlu bahawa-ltiff. Tetapi mungkin baik untuk menulis , untuk jelas. Yeah. PENONTON: Jadi anda tidak berfikir kuiz - jika kita membuat kesilapan, sebagai contoh, dalam sintaks - ralat sintaks sedikit - bagaimana yang dapat diambil dalam kuiz? JASON Hirschhorn: Secara umumnya kuiz, kecil ralat sintaks atau kecil ralat gaya tidak kehilangan anda mata. Jadi, jika anda terlupa dengan koma bernoktah di sini, ia akan menjadi OK. Jika anda terlupa untuk menutup kurungan ini, adakah itu ok. Ralat sintaks besar yang mengubah makna fungsi kod anda secara mendadak, anda mungkin akan mendapat diambil kira mata untuk. Atau secara amnya, hanya penggredan anda sama ada atau tidak anda fungsi kod, walaupun - tidak reka bentuk begitu banyak, dan tidak gaya. Mari kita kini kod satu lelaran versi find. Jadi ia akan menjadi agak sama, tetapi ada pasti akan menjadi beberapa perbezaan utama. Walau bagaimanapun, kod pseudo kami mungkin boleh pergi - kita masih boleh mengambil satu baris yang kod pseudo dan angka apa yang line adalah dalam kes ini. Jadi dalam versi lelaran, apa yang anda fikir, Julia, sekiranya menjadi baris pertama? PENONTON: Sekali lagi, dalam boolean lelaran, anda perlu menubuhkan sebuah untuk gelung, bukan? JASON Hirschhorn: OK. PENONTON: Jadi untuk seperti, k, untuk x sama dengan 0, x kurang dari i. Atau tidak, x adalah kurang daripada saiz pokok itu. JASON Hirschhorn: Pokok itu. Oleh itu, kita tidak benar-benar tahu saiz pokok, dan kita tidak tahu berapa kali kita boleh pergi, jadi apa yang berlainan jenis gelung yang mungkin lebih baik dalam kes ini? PENONTON: Jika yang berlainan? JASON Hirschhorn: Jika lain tidak boleh gelung. Jadi apa yang sejenis gelung kita boleh hanya pergi sehingga kes beberapa dipenuhi? Apa yang hanya jenis lain gelung dalam C selain untuk gelung? PENONTON: Walaupun. JASON Hirschhorn: Walaupun, betul-betul. Dalam gelung sementara, tidak perlu tahu bagaimana - gelung sementara dan untuk gelung boleh melakukan Perkara yang sama yang tepat, tetapi perkara yang bagus kira-kira satu gelung sementara ini adalah kita tidak perlu tahu berapa besar pokok kita. Jadi, kita akan pergi sehingga apa? PENONTON: Sehingga ia sama saiz - JASON Hirschhorn: Nah, itu sangat sama dengan kes rekursif kami. Jadi - PENONTON: Walaupun akar i tidak sama i. JASON Hirschhorn: Itu benar-benar dekat. Walaupun akar i - mari kita mencubanya. Saya tidak fikir [didengar] di mana akar i tidak sama i. Kita mungkin perlu mengubahnya dalam sedikit sedikit, tetapi yang berbunyi seperti ia cukup baik, untuk sekarang. Oleh itu, kita akan melakukan itu. Juga, ingat, kita tidak boleh menganggap setiap soalan. Anda tidak menganggap bahawa akar akan bukan nol. Jadi, apa yang anda berfikir yang Perkara pertama yang kita harus lakukan adalah? PENONTON: Hanya melakukan perkara yang sama perkara seperti sebelum ini. Jika akar sama setaraf batal, pulangan palsu. JASON Hirschhorn: Great. Jadi ia boleh menjadi null. Jadi, kami ingin menghilangkan IT merta. Dan kemudian kita akan cek jika akar i tidak sama i. Jadi, katakan kita mencari di pokok ini untuk 3, akar i tidak sama i, kini kita berada dalam gelung sementara kami. Apa yang kita mahu lakukan? Dan sekali lagi, ia akan menjadi agak serupa dengan versi rekursif kami. Yeah. PENONTON: Jadi, anda akan ingin melelar, atau menyimpan akan turun pokok itu selagi akar tidak sama dengan nol. JASON Hirschhorn: Selagi akar tidak sama dengan nol? PENONTON: The sengkang akar i tidak sama dengan nol. Hanya akar, yeah. Sebagai selagi akar tidak sama dengan nol. JASON Hirschhorn: Jadi anda mahu untuk mengubah ini ke dalam akar tidak sama null? PENONTON: Yeah. PENONTON: Kami boleh menggabungkan ini, bukan? Kita tidak perlu jika, pada mulanya. JASON Hirschhorn: OK, jadi jika kita tidakkah ibu - jika kita menggabungkan mereka, jadi kita akan melakukan manakala akar tidak sama batal, dan jika akar itu benar batal di permulaan, apa yang kita lakukan ke bawah di sini? PENONTON: Kembali palsu. JASON Hirschhorn: Great. Jadi kedua-dua cara mungkin akan bekerja. Ini adalah cara yang berbeza, dan ini menggabungkan ia. Tetapi sekali lagi, jika anda lakukan cara sama ada, kita tidak akan mengambil kira reka bentuk menunjukkan kuiz. Tetapi ini kelihatan baik. Jadi sementara akar tidak sama batal, apa yang pertama perkara yang kami mahu menyemak? Orang lain? Batal, apa perkara pertama? PENONTON: Jika ri adalah kurang daripada - oh, saya rasa, jika kita sudah mendapati ia dalam akar. Jadi, jika akar arrow i ialah i - JASON Hirschhorn: Maaf? PENONTON: Jika akar arrow i sama sama i - JASON Hirschhorn: Apa yang kami lakukan? PENONTON: Kembali benar. JASON Hirschhorn: Great. Dan apa yang akan datang? Jeff, apa baris berikutnya kod? PENONTON: Jika saya adalah kurang daripada akar arrow i, maka akar sama akar arrow kiri. JASON Hirschhorn: setaraf Akar akar arrow kiri. Jadi, itu mungkin yang terbesar perbezaan di sini di ini lelaran versi bertentangan dengan versi rekursif. Versi rekursif, kami memanggil fungsi sekali lagi. Kami akan mengemaskini akar apabila kita panggil fungsi baru. Di sini kita tidak memanggil fungsi baru. Kami hanya sekadar mengemas kini akar dalam fungsi ini. Itulah yang sangat baik. Dan apa yang barisan terakhir kod? Ya, Mario? PENONTON: setaraf akar Lagi akar anak panah kanan. JASON Hirschhorn: Maaf? Setaraf Akar: PENONTON akar anak panah kanan. JASON Hirschhorn: Bolehkah anda juga menulis sesuatu seperti ini? PENONTON: Saya tidak mempunyai idea. JASON Hirschhorn: Anda tidak boleh. Anda tidak boleh melakukannya sama setaraf ditambah. OK, jadi ini kelihatan baik. Mengapa kita tidak hanya melakukan yang untuk membersihkannya sehingga. Ini kelihatan besar, dan ini akan bekerja. Dan kita akan keluar. Jika akar kiri adalah batal atau akar betul adalah batal, kita akan datang di sini. Akar akan sama dengan null. Kita akan keluar daripada gelung kami, dan kita akan kembali palsu. Oleh itu, apabila kita keluar daripada gelung, kita kembali palsu. Dan sekali lagi, gelung sementara adalah sempurna di sini kerana kita tidak tahu bagaimana besar pokok kita. Kami cuba untuk menulis untuk gelung, tetapi kita sedar anda perlu memikirkan bagaimana besar ia adalah lebih awal daripada masa. Yeah. PENONTON: Jika ini tidak binari pokok carian, ia akan menjadi sebenar matematik-y menulisnya secara berulang, bukan? Seperti, jika ia adalah pokok, tetapi tidak semestinya - jadi ia tidak semua yang lebih kecil di sebelah kiri, dan semua yang lebih besar di sebelah kanan. Ia akan menjadi benar-benar sukar untuk melelar ke atasnya, bukan? Kita akan mempunyai untuk menyelamatkan apa yang sebelum ini pada di pokok itu dan kembali, dan barangan seperti itu. JASON Hirschhorn: Jika ia bukan binari pokok carian, jika ia hanya pokok dan perkara-perkara tidak disusun seperti ini - dan kami menyedari lebih awal apabila Anna telah membantu kami yang menjadikannya disusun membantu kita banyak - kita perlu, ya, sentiasa menyelamatkan di mana kita sebelum ini. Tetapi mungkin ada banyak di mana kami previouslys. Mungkin ada banyak nod induk. Mungkin cara terbaik untuk melakukannya akan adalah untuk memastikan perkara-perkara menolak ke beberapa jenis timbunan atau beratur. Anda tidak perlu memberi kod ini kerana ia adalah satu masalah yang sukar. Tetapi anda menolak beberapa perkara ke timbunan atau beratur dan kemudian pop mereka luar, dan kemudian menilai mereka. Dan kemudian mempunyai beberapa perkara lain di mana anda sebenarnya sedang meletakkan nod, dan kemudian buat itu, dan kemudian mencari melalui itu. Yang mungkin menjadi cara terbaik untuk melakukannya. OK, apa-apa soalan tentang masalah ini? PENONTON: Ini adalah pada nota yang berkaitan. Adakah kita akan perlu membandingkan kali jangka untuk jadual hash, perduaan pokok carian, dan sebagainya? JASON Hirschhorn: Mungkin. Jadi mari kita buat yang benar-benar cepat. Menjalankan masa untuk jadual hash - apa yang lain? Pokok binari? PENONTON: Senarai Link. JASON Hirschhorn: OK, mari kita buat memasukkan. Apakah O besar insert di atas meja hash? Apakah andaian anda membuat? PENONTON: Anda memasukkan di permulaan senarai pautan. JASON Hirschhorn: Mungkin yang pertama andaian adalah tidak ada pertembungan. Jika tidak ada perlanggaran, maka masa kemasukan adalah satu. Jika terdapat perlanggaran, dan anda melakukan chaining berasingan dan memasukkan pada awal senarai pautan, kemudian memasukkan juga berterusan. Jika anda lakukan jadual hash tetapi anda mempunyai kaedah yang berbeza untuk berurusan dengan perlanggaran, apa yang kaedah yang berbeza? Apa adalah kaedah yang berbeza berurusan dengan perlanggaran dalam jadual hash? PENONTON: pengaturcaraan linear. JASON Hirschhorn: pengaturcaraan linear. Jadi, kita akan terus mencari untuk tempat terbuka yang akan datang. Itu bukan masa kemasukan berterusan. Anda boleh perlu melalui keseluruhan jadual, supaya boleh O besar n. Yeah. PENONTON: Jika tidak hanya chaining? JASON Hirschhorn: Kami telah chaining berasingan. Itu adalah yang pertama. Itulah yang senarai pautan. Nama mewah adalah chaining berasingan. Ia boleh mana-mana jenis struktur senarai kita berlaku untuk melakukan dalam senarai link. Jadi sekali lagi, sisipan di atas meja hash boleh menjadi masa yang berterusan. Bagaimana pula memasukkan pada baris gilir Stacker? PENONTON: Bukankah itu berterusan? JASON Hirschhorn: Ia masa yang sama. Anda hanya menolak ia. OK. Insertion, apa yang adalah orang-orang lain? Pada mencuba? Apakah O besar sisipan di cuba? PENONTON: Panjang adalah tetap. Panjang yang paling lama - panjang perkataan anda memasukkan. JASON Hirschhorn: Maaf? Tunggu, jadi apa yang saya dengar? Anda berkata - apa yang kamu katakan? Apakah jawapan anda, Marcus? PENONTON: Panjang perkataan anda memasukkan dalam huruf, menganggap ia adalah satu watak cuba. JASON Hirschhorn: OK, jadi panjang perkataan. Kami akan membuat andaian bahawa ia adalah rentetan aksara. Anda mengatakan sesuatu yang berbeza, walaupun. Anda berkata panjang perkataan terpanjang. PENONTON: Itu hanya berterusan, bukan? JASON Hirschhorn: Mengapa akan ia menjadi berterusan? PENONTON: Seperti, jika anda menggunakan O besar notasi, maka ia tidak berbeza-beza berdasarkan kepada bilangan perkara-perkara yang sudah dalam cuba yang. JASON Hirschhorn: Oleh itu, kita akan berkata ia masa yang sama. Ia adalah sisipan yang berterusan, dan itu kerana idea ini - katakan kita ada perkataan itu 45, atau perkataan itu 60, yang mempunyai beberapa berterusan. Dan ia akan hanya dimasukkan dalam masa yang sama. Dalam amalan walaupun, ia tidak akan, jelas, berlaku dalam satu milisaat, sebagai contoh. Tetapi kita akan berkata Wahai besar adalah berterusan untuk mencuba. Dan itulah salah satu yang kelebihan terbesar. Apa kira-kira kemasukan ke dalam senarai link? Hanya generik, disusun pautan senarai? Yeah. PENONTON: Saya mempunyai satu soalan. Pada ujian, akan mereka pernah meminta kami yang masa kemasukan itu empat langkah, atau sesuatu? Atau adakah ia hanya - apabila anda mengatakan masa kemasukan adalah satu, yang hanya bermakna masa berterusan? JASON Hirschhorn: Ya, mereka akan sentiasa bertanya, adakah O besar n? O Big log n? N kuasa dua yang berterusan. Mereka benar-benar satu-satunya yang anda perlu tahu. Apa kira-kira kemasukan ke disusun senarai Pautan? PENONTON: Saya mempunyai satu soalan - satu soalan - JASON Hirschhorn: Apakah jawapan kepada soalan itu, walaupun? PENONTON: Tunggu, apa yang anda bertanya? JASON Hirschhorn: Apakah O besar kemasukan ke dalam senarai Pautan disusun? PENONTON: Satu? Tiada menunggu, No tunggu, n. JASON Hirschhorn: N. Selain senarai link. Dan apa yang soalan anda? PENONTON: Jadi akan anda menulis o k o atau daripada 1 untuk - JASON Hirschhorn: Oh. Saya akan menulis o 1, mungkin. Ada satu struktur data lain yang akan menjadi baik. Pokok, pokok carian binari. Apakah kemasukan pada pokok carian binari? PENONTON: Login. JASON Hirschhorn: Jadi, apa yang paling teruk kes di pokok carian binari? Jadi jika kita berlaku untuk memulakan pada 5, dan tiap-tiap nombor adalah lebih besar daripada 5, maka kami mempunyai 5, 7, 9, 11, dan sebagainya. Dalam kes ini, ia pada dasarnya hanya pautan yang senarai, dan kita perlu untuk memasukkan semua jalan di akhirnya. Jadi ia O besar n. Itu boleh menjadi kes kami yang paling teruk di atas pokok carian binari. Jelas sekali, anda tidak akan membina pokok carian binari dengan 5 di pertengahan, mengetahui 5 akan menjadi nombor yang terendah. Tetapi ia boleh, jika anda bermula dari awal. Sebarang pertanyaan mengenai perkara ini sebelum saya beralih kepada soalan lain? Itu adalah satu soalan yang baik. Saya tahu O besar - PENONTON: Bagaimana mencari bagi mereka empat? JASON Hirschhorn: Sudah pasti kami tidak mencari dan menyusun. Kami telah semua algoritma, betul. Tunggu, adalah bahawa untuk Kuiz 1? Telah yang dilindungi - adakah anda sudah mempunyai yang soalan pada Kuiz 1? The O runtime besar carian binari, jenis kemasukan, jenis gelembung? PENONTON: Yeah. JASON Hirschhorn: Jika anda mempunyai yang soalan pada Kuiz 0, kemungkinan adalah anda tidak akan mendapat soalan yang tepat yang sama pada Kuiz 1. Mungkin masih baik untuk mengetahui mereka. Anda diharapkan perlu tahu gh sudah. Tetapi runtimes logaritma lain mungkin baik untuk mengetahui. Perkara-perkara yang tidak dilindungi di Kuiz 0. Seperti semua pengusaha di jenis data abstrak. OK, mari kita bergerak ke atas. Yang ini harus cukup cepat. Dan ini adalah bahasa baru yang tidak mempunyai sebenarnya dikodkan dalam sebelum ini. Ini adalah meminta soalan kod dalam PHP. Oleh itu fikirkanlah pelbagai PHP di bawah. Tulis PHP dan / atau HTML Kod itu bahawa ia output jadual dua lajur dengan TFS nama dan rumah-rumah. Anda tidak pernah dilakukan sebelum ini, masalah ini tertentu. Tetapi ini harus sangat biasa kepada apa yang anda lakukan dalam masalah menetapkan 7. Jadi saya akan bersedia untuk bertaruh anda akan diminta untuk memberi kod kepada sesuatu dalam PHP yang adalah hampir sama dengan apa yang anda lakukan dalam masalah menetapkan 7. Pertama, array tidak begitu khusus. Apakah jenis array ini? PENONTON: bersekutu. JASON Hirschhorn: Ia pelbagai bersekutu. Dan apa perbezaan antara array bersekutu dan objek? PENONTON: Pelbagai objek mempunyai indeks integer, dan pelbagai bersekutu adalah indeks tali, atau sesuatu seperti itu. JASON Hirschhorn: Jadi pelbagai objek akan mempunyai indeks integer, tetapi sesuatu objek mempunyai bidang. Ia mempunyai bidang-bidang nama-nama seperti menamakan, rumah, pelajar. Adakah anda mempunyai idea? PENONTON: Nah, bersekutu array adalah dalam PHP, bukan? Dan objek adalah dalam JavaScript? JASON Hirschhorn: Secara jujur, tidak ada Perbezaan sebenar antara kedua-dua. Kedua-duanya mempunyai tali sebagai kunci, dan boleh mempunyai apa-apa kerana pada dasarnya nilai. Bahasa yang berbeza panggilan satu perkara array bersekutu, satu perkara objek. Jadi jujur, tidak ada sebenar perbezaan, tetapi ada pasti beberapa perbezaan sintaksis antara kedua-dua. Yeah. PENONTON: Jadi adalah objek juga berkod di bawah hud sebagai meja hash, maka? JASON Hirschhorn: Apa yang anda bermakna, dikodkan di bawah hud? PENONTON: Kami telah diberitahu bahawa bersekutu array secara teknikal yang hash meja. Begitu juga objek dari segi teknikal jadual hash? JASON Hirschhorn: Saya tidak akan untuk menjawab soalan itu. Saya akan kembali kepada anda pada itu. Tetapi saya tidak akan memikirkan sama ada dari orang-orang seperti itu. Tetapi, dalam apa-apa cara, array bersekutu dan objek, secara amnya, orang menggunakan mereka Terma silih berganti. Dalam kes ini, bahagian yang sejuk ialah anda boleh menggunakan kunci. Rentetan kunci, dan bukannya hanya nombor mudah. Jadi saya telah bercakap tentang ini untuk seketika. Mudah-mudahan, sesetengah orang mempunyai mendapat bermula pada ini. Kami akan menulis beberapa PHP dan HTML kod, seperti yang kita akan mendapat dua ruangan meja dengan nama-nama TFS dan rumah-rumah. OK, saya juga ingin tandukan baris di atas meja ini. Jadi saya akan mendapat lurus ke dalam ini. Kami akan memfailkan, baru, dan kita akan - OK. Bagaimana saya bermula meja? Apa yang tag, Michael, untuk memulakan meja? PENONTON: Jadual-jadual. JASON Hirschhorn: Jadual-jadual. Dan jika saya membuka tag, apa lagi yang saya perlukan? PENONTON: kepala A? Atau, saya rasa, kelas. JASON Hirschhorn: Jadi, maaf. Andaikan bahawa kita sudah menulis doctab, HTML, semua barangan itu. Tetapi jika saya membuka tag jadual ini, apa yang lagi yang saya perlu untuk menulis? untuk mengesahkan HTML? PENONTON: menutupnya. JASON Hirschhorn: Tutup tag itu. Bagaimana saya menulis tag dekat meja? PENONTON: Dot mengurangkan meja. JASON Hirschhorn: Slash meja, hebat. Mungkin masuk akal untuk menulis kedua-dua dari orang-orang bersama-sama kerana anda perlu melakukannya. OK, jika saya mahu baris pengepala, bagaimana Saya menulis baris pengepala dengan tajuk? PENONTON: Adakah ia kurang daripada 10 jam dekat - TR, yeah. JASON Hirschhorn: TR? PENONTON: Kemudian perkara yang sama, slash, yeah. JASON Hirschhorn: OK, dan beri saya dua tiang. PENONTON: T D? JASON Hirschhorn: OK. Saya mahu dua tiang. Adakah ini memberi saya dua tiang? Berapa banyak ruangan ini? Satu. Jadi mari kita copy dan paste ini. Jadi sebenarnya, kuiz, semua kod ini bahawa kita telah menulis setakat ini adalah sebenarnya diberikan kepada anda. Tetapi anda mungkin masih perlu tahu bagaimana untuk menulisnya. Yeah. PENONTON: Rumah anda adalah di antara kedua-dua. JASON Hirschhorn: Boom. Ia harus pergi di sana, bukan? Panggilan yang baik. Jadi sekali lagi, semua kod ini sebenarnya diberikan kepada anda pada kuiz sebenar. Tetapi ia menyeronokkan untuk menulis, dan anda perlu tahu bagaimana untuk menulisnya. Jadi ini adalah di mana anda perlu untuk memulakan kod anda. Apa yang kita perlu menulis di sini? Maaf, saya perlu menukar nama fail ini. Oleh itu, kita disimpan dalam fail. HTML, tidak dalam. fail PHP. Perkara-perkara ini akan bermakna apa-apa dalam. fail PHP. Oleh itu, kita berada dalam. Fail HTML. Apakah perkara pertama yang Saya perlu untuk menulis? Saya mahu meletakkan PHP kod dalam HTML. PENONTON: PHP, seperti lobak merah lagi dan tanda tanya PHP, bukan? JASON Hirschhorn: Great. Dan bagaimana saya berakhir itu? PENONTON: Dengan tanda tanya. JASON Hirschhorn: Itu yang besar. Itulah perkara pertama yang saya perlu jika saya ingin untuk meletakkan beberapa kod PHP di sini. PENONTON:. Saya fikir PHP Fail boleh mengambil HTML. JASON Hirschhorn: Yeah. A. Fail PHP boleh mengambil beberapa HTML dan dipaparkan. Yang buruk saya. Saya hanya mencuba untuk meniru apa yang ia adalah kuiz. OK, maaf untuk mengelirukan anda. Ya, practice.HTML. Sekarang kita akan meletakkan beberapa kod PHP masuk Apakah baris pertama Kod PHP yang perlu saya menulis? Saya akan melalui pelbagai ini dan membuat ke dalam jadual. Yeah. PENONTON: Anda boleh sama ada menggunakan untuk gelung H atau untuk gelung. JASON Hirschhorn: OK, apa yang yang anda mahu untuk digunakan? PENONTON: Saya akan menggunakan untuk gelung. Untuk, dan kemudian anda melakukan tanda dollar i sama dengan 0 koma bertitik dolar menandatangani i kurang daripada 2. Dan kemudian koma bertitik i dolar menandatangani i plus plus. JASON Hirschhorn: Bagaimana anda tahu untuk menggunakan 2? PENONTON: Kerana terdapat dua array bersekutu dalam yang lebih besar array bersekutu. JASON Hirschhorn: Jadi perkara yang besar itu tidak pelbagai bersekutu. Perkara yang besar hanya array biasa. Tetapi anda betul, terdapat dua tatasusunan bersekutu di dalam pelbagai kami yang lebih besar. Itulah sebabnya anda menggunakan dua. Saya berasa tidak selesa dengan anggapan bahawa mereka 2, jadi apa cara untuk menulis ini tanpa menganggap bahawa mereka 2? PENONTON: [didengar]? JASON Hirschhorn: OK, bagaimana anda menulis bahawa? PENONTON: foreach tanda dollar TFS atau dolar seperti tanda tf. JASON Hirschhorn: OK, jadi untuk setiap TFS sebagai TFS, saya mahu, kini sekali lagi, mempunyai jadual saya. Jadi yang boleh memberi saya Barisan seterusnya kod? PENONTON: Cetak, dan kemudian di petikan, kurungan tr akhir kurungan, quote akhir. Kurungan End, koma bertitik. JASON Hirschhorn: OK, dan apa yang yang akan lakukan? PENONTON: Ia akan berkata, barisan baru. Ia akan meletakkan tag untuk barisan baru. JASON Hirschhorn: Betul, PHP ini, seperti kita bercakap tentang awal - ini PHP akan dinilai, dan kemudian ia akan mencetak ke fail ini jadual tunda, dan kemudian HTML akan dinilai. Kami hanya menyalin ini HTML kami di sini. Yeah. PENONTON: [didengar]? JASON Hirschhorn: Maaf? Ia adalah hak di sini. Kejatuhan 2012. Jangan melihat jawapan, mari kita menyelesaikannya bersama-sama. Oleh itu, kita mencetak baris jadual. Jadi anda mungkin dalam dalam buaian perkara. Apakah barisan seterusnya pada kod kita perlu menulis? Assam, memberi saya baris berikutnya kod. PENONTON: Anda perlu nama tf ini. Tf terbuka kurungan tanda petikan menamakan kurungan tertutup. JASON Hirschhorn: Berikan saya nama mereka. PENONTON: Anda perlu mencetak itu. [Suara INTERPOSING] JASON Hirschhorn: OK, bagaimana saya cetak? [Suara INTERPOSING] JASON Hirschhorn: saya hilang sesuatu sekarang. Apa yang saya hilang? PENONTON: Anda perlu tanda dolar. JASON Hirschhorn: Apa lagi saya hilang? Semua kita telah dicetak setakat ini adalah tr. PENONTON: Tutup tr selepas ia. JASON Hirschhorn: Oleh itu, kita perlu untuk menutup tr selepas. Yang melihat apa yang kita hilang pada baris 16? Ya, Anna. PENONTON: Anda perlu membuka yang td dan pendakap kerinting. JASON Hirschhorn: Dan di mana adakah kita meletakkan pendakap kerinting? PENONTON: Sekitar nama tf itu. JASON Hirschhorn: Seperti ini? PENONTON: Yeah. Dan kemudian tutup td itu. JASON Hirschhorn: Seperti yang? PENONTON: Adakah anda memerlukan petikan berganda tanda bersebelahan dengan penyokong gigi kerinting? JASON Hirschhorn: Hak di sini? Tidak, anda tidak. Jadi itulah betul. Yeah. PENONTON: Jadi perbezaan di antara yang dan encatenating dengan titik, jika anda menggunakan titik, anda akan perlu mempunyai tanda petikan berganda, maka titik, maka titik - JASON Hirschhorn: Betul. Jadi anda mengatakan ada sebuah muktamad cara menulis ini seperti itu. Apa pengendali keadaan jalin-menjalin dalam JavaScript? PENONTON: Satu tanda tambah. Anda terlupa untuk meletakkan kerinting bersedia kembali. JASON Hirschhorn: Great. Dan ada satu baris lebih kod hilang. Yang boleh memberikan saya barisan terakhir kod kita hilang? PENONTON: Hanya perkara yang sama, hanya dengan rumah dan bukannya nama. Besar JASON Hirschhorn: Great. Dan sintaks anda adalah betul-betul tepat untuk mendapatkan perkara dalam pelbagai bersekutu. Jadi dalam kuiz sebenar, anda sebenarnya diberikan sehingga di sini. Jadi kod ini telah diberikan kepada anda. Apa yang anda perlu menulis mereka ini empat baris dan ingat untuk menutup tag meja. Anda lelaki sebenarnya tidak semua itu dan banyak lagi. Yeah. PENONTON: Jadi ia akan menjadi fungsi yang sama jika anda hanya mempunyai semua di satu panggilan cetak besar, bukan? Dan kemudian hanya concatenated pada, dan sebagainya? JASON Hirschhorn: Seperti yang? PENONTON: Yeah. Ia hanya tidak akan kelihatan baik jika anda melihat ia apabila anda memeriksa elemen di laman web anda, bukan? JASON Hirschhorn: Saya bersetuju. Jika saya dimuatkan laman web ini, saya akan dapat melihat kod PHP ini, yang pernah? PENONTON: No JASON Hirschhorn: No Dan sebenarnya, saya tidak akan. PENONTON: Ini bukan HTML, bukan? Jadi, anda mungkin boleh - JASON Hirschhorn: Jadi PHP ini akan dinilai sebelah pelayan. PHP ia selalu dinilai sebelah pelayan, jadi anda tidak akan dapat melihat kod PHP. PENONTON: Tetapi anda akan dapat melihat hasil cetakan. JASON Hirschhorn: Betul. Dan ia jujur ​​tidak mungkin meletakkan semuanya pada baris. Ia mungkin memformat ia baik untuk anda, atau ia mungkin meletakkannya di satu baris. Tidak jelas. Tetapi ya, perkara yang baik. PENONTON: Bagaimana datang ada tidak penyerlahan teks untuk arahan-arahan PHP? Kerana saya ingat melihat itu. JASON Hirschhorn: Kerana ia adalah satu . HTML memfailkan di sini di bahagian atas. Terdapat anda pergi. PENONTON: Jika kita lakukan kaedah awal dengan untuk gelung, betul, jika kita mahu mengakses TFS satu, akan kita melakukan TFS kurungan 0 kurungan, maka [Didengar]? JASON Hirschhorn: Anda akan - jadi anda katakan untuk untuk gelung, anda akan melakukan dalam dolar tanda TFS kurungan 1 atau i, betul. Atau tanda dolar i menutup kurungan dan kemudian kurungan persegi petik, ya. OK, yang sangat baik. Kami mempunyai satu lagi satu cepat. Tujuh minit, jadi saya ingin untuk pergi ke satu ini. Ini adalah contoh yang lain. Kami kini sama sekali bahasa lain. Kami mempunyai beberapa kod HTML. Ia adalah jenis kecil pada skrin, tetapi Saya mahu anda untuk melihat melalui ia benar-benar dengan cepat, dan boleh tolong beritahu aku, jika saya memuatkan halaman web ini, apa yang saya akan lihat? Menggambarkan segala-galanya mengenai laman web ini. Nuh? Apa yang saya lihat? PENONTON: Kod di akhir hadapan Google dengan rasa untuk teks dan butang submit. JASON Hirschhorn: Dan apa akan butang katakan? PENONTON: Hantar. Oh, carian. Saya minta maaf. JASON Hirschhorn: Ia akan berkata carian. Ingat, nama. Apa yang kita menggunakan nama untuk? Ini sifat nama, apa yang yang digunakan untuk? [Suara INTERPOSING] PENONTON: Itu namanya apabila ia diklik? JASON Hirschhorn: Itu boleh. Tetapi apa yang kita biasanya lihat - mengapa kita memberi giliran nama ini? Mengapa kita melihat bahawa? Yeah. PENONTON: Tidak yang menjadi indeks pembolehubah super global? JASON Hirschhorn: Ya, secara amnya apabila borang ini akan mengemukakan, dan kemudian di mana ini akan mengemukakan kepada? Apa halaman? Nuh, apa yang laman ini akan mengemukakan kepada? PENONTON: Saya tidak pasti. JASON Hirschhorn: Di mana boleh kita dapat mencarinya? Di mana kamu melihat apa yang Laman ia mengemukakan kepada? Apakah bidang kod? PENONTON: Borang tindakan. JASON Hirschhorn: Tepat sekali. Tindakan. Jadi ia mengemukakan kepada halaman carian. Carian garis sendeng terbalik. Jadi itulah betul. Apa kaedah? PENONTON: Dapatkan. JASON Hirschhorn: Dapatkan. Tepat sekali. Oleh itu, kita membaca ini. Ini akan menjadi bentuk yang. Anda betul-betul betul. Dua perkara pada borang tersebut, tajuk yang halaman dan bahagian atas akan menjadi Google. Jadi di sini adalah dua soalan yang anda perlu dapat menjawab tentang halaman ini. Jika HTML ini tinggal di laman web ini dan pengguna input bug ke dalam teks ini bidang di sini, apa yang URL akan pengguna mencari dirinya apabila mengemukakan borang? Oleh itu, kita mempunyai ini di sini. Saya akan kembali ke halaman ini, walaupun. Saya akan menulis bahagian pertama ini. Bolehkah semua orang melihat di sini? OK, Mario, anda fikir anda tahu? Apa halaman? PENONTON: carian garis sendeng terbalik. JASON Hirschhorn: Saya akan untuk bergerak di sini. OK, garis sendeng terbalik soalan carian tanda q sama pepijat. Sesiapa mempunyai cadangan yang berbeza? Yeah. Jadi bagaimana kita mendapatkan ini? Nah, kita telah melihat ini sebelum ini. Dan anda datang dengan ini lebih awal. Anda betul, Nuh, bahawa tindakan memberitahu kita apa yang halaman kita akan. Kita juga tahu apa kaedah. Kami lakukan mendapatkan. Dan perbezaan antara mendapat dan pasca adalah bahawa mendapatkan memaparkan di URL dan pasca tidak. Jadi, jika saya menulis post di sana dalam kaedah, apa yang akan menjadi berbeza? PENONTON: Ia akan hanya menjadi carian slash. JASON Hirschhorn: Ia akan hanya akan mengurangkan carian. Tiada apa-apa di sini akan berlaku. Tetapi kerana ia adalah mendapatkan, URL dipaparkan seperti berikut. Pertama kita lihat tanda tanya dan kita lihat nama dan nilai. Katakanlah terdapat satu medan teks lain dan Saya berikan nama r dan saya input yang nilai, ulat. Apa yang akan ini kini kelihatan seperti? Saya mempunyai satu medan teks lagi, saya memberikan menamakan r dan nilai ulat. PENONTON: Selepas bar anda akan mempunyai yang ulat Ampersand. JASON Hirschhorn: Itu tidak Ampersand. PENONTON: Atau hanya apa sahaja dan simbol. JASON Hirschhorn: Ya, tidak. Anda betul, saya salah. Itu seperti g a. PENONTON: Caterpillar. r sama ulat, maaf. JASON Hirschhorn: Adakah terdapat ada r di sana? PENONTON: Tidak, ada. JASON Hirschhorn: Kami akan bercakap tentang itu selepas kelas. Itu betul-betul betul. Oleh itu dan adalah betul. Dan kemudian anda boleh mempunyai banyak ini, dan mereka semua akan concatenated bersama-sama dengan itu dan. Jadi itulah betul. Ada satu lagi soalan. Lakarkan DOM ini HTML, bermula dengan dokumen. Kita boleh melakukannya dalam dua minit. Kami akan melakukannya di sini. Saya akan kembali ke laman web ini. OK, kita mulakan dengan dokumen. Apa yang akan datang? Oleh itu, apabila anda membaca melalui - PENONTON: HTML. JASON Hirschhorn: HTML tidak akan datang. Kami akan pergi tag mengikut label. Apa selepas HTML? PENONTON: Ketua. JASON Hirschhorn: Ketua. Apakah selepas kepala? PENONTON: Tajuk. JASON Hirschhorn: Tajuk. Dan hak milik mempunyai nilai Google, tetapi saya tidak akan menulis bahawa dalam untuk sekarang. OK, di manakah badan pergi? PENONTON: Juga datang kira HTML. JASON Hirschhorn: Tepat sekali. Badan datang kira dari sini. Adakah semua orang melihat mengapa itu berlaku? Anda mungkin akan dapat memikirkan keluar ini, juga, walaupun saya tidak mempunyai lekukan bagus ini. Lekukan jenis memberikan ia jauh, tetapi anda boleh melihat bahawa tag kepala mempunyai telah ditutup, yang bermakna kita mungkin tidak boleh turun di sini. Kita perlu kembali sehingga apa sahaja betul sebelum kepala tag, atau di bawah itu. Kami walaupun dengan tag kepala. Dan di bawah badan pergi bentuk. Di bawah bentuk, terdapat dua input. OK. Itu sahaja yang saya mendapat. Kuiz 1 adalah esok. Saya begitu teruja untuk anda semua. Ia akan menjadi letupan. Jika anda mempunyai - PENONTON: [Tepuk tangan] JASON Hirschhorn: Oh berhenti, berhenti. Tetapi tidak, saya bergurau. Jika anda mempunyai sebarang soalan, hak selepas seksyen, saya akan berada di luar. Jika anda mempunyai sebarang soalan pada malam ini, sila hubungi, e-mel, GChat, Merpati pos saya. Nasib baik esok. Bahagikan Kesyukuran yang indah, jika saya tidak melihat anda sebelum kemudian. Dan saya akan melihat anda selepas Kesyukuran pada Selasa untuk terakhir kami seksyen parti sebelum ini. PENONTON: [didengar]. JASON Hirschhorn: Great. OK, saya akan melihat anda semua seterusnya minggu atau dua minggu. Dan baik nasib esok.