[00:00:02] [MÜZİK OYUN] HANNAH: Merhaba, herkes. Size Geldiğiniz için çok teşekkür ederim çocuklar sınav, bir için iğrenç havalarda oturumu gözden geçirin. Siz, sınav Bildiğiniz gibi kimse bu çarşamba. Yani biz gidiyoruz konuların bir demet aracılığıyla. DAVIN: Hey, ben diyebilirim gerçek hızlı bir şey? HANNAH: Evet, Davin en gidiyor Gerçek hızlı bir şey söylemek için. DAVIN: Üzgünüm. Sadece gerçek hızlı, sorularınız varsa yarışması hakkında, online gidebilirsiniz. Yarışması hakkında, 2014 sınav birine gidin. Yaklaşık lojistik var gitmek için nerede, ne zaman gitmek. Aynı anda kayıt ediyorsanız, biz konum 05:30 bir makyaj sınav olacak. Yoksa bana bir sorun gönderirse, Eğer başka bir sorun var. Ama 05:30 makyaj olduğunu Çarşamba günü zamanı. Ama sorularınız varsa, Genel sorular, Online tüm lojistik sahiptir. Yani orada ilk kontrol edin. [00:00:47] HANNAH: Başar. Yani burada konuların büyük listesi bugün geçmesi için gidiyoruz. Ben C tümünü kapsayacak şekilde gidiyorum ilk sütunu şeyler. Yani C şeyler biz sınav sıfır sonra kapalı. Bağlantılı liste ile başlayarak, bu işaretçiler içerir. [00:01:05] Pekala, biz bu gördüm Son gözden oturumda, bu yüzden gitmek için gidiyorum Bu biraz daha hızlıdır. Eğer beni istiyorsan sadece elinizi kaldırın yavaşlatmak ya da daha fazla bir şey bulursunuz. Ama biz nedeniyle listeleri bağlantılı kullanın Biz dizilerle C başladı. Ve diziler büyük, ama sorun, onlar sabit bir büyüklüğe sahip olduğunu. Bağlantılı listeler bize oluşturmak için izin dinamik veri yapıları büyüklükte. [00:01:28] Ve bizim temel operasyonları var, eklemek, silmek, ve arama. Ve biz parçayı yapabiliriz En kötü durumda, sabit zaman Biz sadece başında koyarsanız. Kötü silin ve arama oh n zaman büyük harf. Yani yine, sadece çevirmek Bu fotoğraflar üzerinden, Ben bu son kez gördüğünü biliyorum, ama biz Bizim bağlantılı liste izlemek istiyorum takip ederek Bizim bağlantılı liste başı. Biz biliyoruz Çünkü Bizim düğümlerin her biri Sadece işaret gidiyor Bizim bağlı listedeki bir sonraki düğüm. [00:01:58] Yani biz takip nasıl. Bu olmasa da hafıza sürekli parçaları, biz sadece onları bulabilirsiniz Farklı okları takip. İşte bizim yapıdır Bir bağlantılı liste düğümü. Biz bu son kez gördüm. Bizim yapı düğüm var. Ve bu iki özelliği vardır. Bir numara, gerçek değer, biz saklamak istiyoruz. Bu durumda, bir tam sayı. Bu bir dize olabilir, bu olabilir Eğer istersen bir char olmak. Ve sonra, biz takip etmek zorunda Bizim bağlı listedeki bir sonraki düğüm. Yani bir olacak Bir sonraki düğüme işaretçisi. Sadece yapıyor olsaydı Arama Ben, daha önce de söylediğim gibi Eğer okları aşağı takip etmek olurdu. Ekleme, sen takip ediyorum listenizin geri kalanı nerede. Ve kafasını yönlendirmek istiyorum Yeni eleman, işaret hangi Bu durumda, tek bir olduğunu ve sonra bir işaret edecektir bağlantılı liste kalanına. Yani yine, ben bu biraz biliyorum sınav sıfır bir tekrarı biraz. Bu yüzden çok dikkatli olmalıyız sipariş hakkında hangi biz biz değil bu yüzden bu pointings yapmak Listenin arka izini kaybeder. Tamam, herhangi bir sorunuz Sadece tek listeleri bağlantılı? Başar, tamam, güzel. [00:03:06] Peki şimdi, biz bir şey üzerine gitmek için gidiyoruz Sadece biraz daha karmaşık, iki kat listeleri bağlantılı. Tutmanın yanı sıra Yani Bir sonraki düğümün parça, biz de takip etmek istiyorum Bir önceki düğümün. Biz eğer Ve bu, bizi tanır Bizim bağlı listede bir noktada, sadece ileriye gitmek, ama Ayrıca geriye yineleme. Biz gördüğümüz gibi çünkü Bir tek bağlantılı liste, bazı düğümün vardı ve eğer aniden, biz karar, Aslında, ben gitmek istiyorum Benden önce düğüm hakkı, Tüm gitmek olurdu geri kafasına yolu Bulduğunuz kadar ve yineleme Aradığınız düğüm. [00:03:35] Yani bu şeyler yapar Biz senin gibi biraz daha kolay yineleme çalışıyor Bizim bağlantılı liste içinde. Ama bir takip etmemizi gerektirir Daha fazla gösterici, yani bir daha düğüm yıldızı. Pekala, işte eğlenceli kısım geliyor. Biz uygulama uygulamaya gidiyoruz iki kat bağlantılı listeleri için kaldırın. Yani bu bir şeydir sınav için tamamen adil oyun. Geçtiğimiz sınavlara geldi. Yani kesinlikle hazırlanacak C. biraz kod Tüm unutmayın Bu eğlenceli PHP ve JavaScript, biz hala hatırlamak zorunda C do Yani tazelemek için eğer paslı hissediyorsun. [00:04:12] Pekala, biz bunu yapabilirsiniz bakalım. Serin, tamam. Yani biz denemek için gidiyoruz Burada hakkını düzenlemek için, planlandığı gibi ve umarım bu gider. Pekala, herkes bana vermek istiyor Ben başlamalı nasıl bir öneri? Ben sadece varsayım yapma ki ben zaten Bir yapı tanımlanmış olması, bir ben, son sayfada gösterdi son slaytta. Ve ben bağlantılı benim başkanı depolamak ediyorum Bazı işaretçi liste listesi çağırdı. Herkes bana başlamak istiyor mu? [00:04:42] İZLEYİCİ: Yeni oluşturabilir miyim düğüm listesi üzerinden aramak için? [00:04:45] HANNAH: Korku, yani Biz oluşturmak için gidiyoruz Yeni bir düğüm listesi üzerinden tarama için. Bunu sevdim. Bu Tamam ben sadece işaretçi arayacağım. Ve nerede başlangıçta başlamalıdır? [00:04:57] İZLEYİCİ: Muhtemelen de Listenin başkanı. HANNAH: Güzel. Biz kafa, başlamak istediğiniz Ben listesinde kayıtlı olacak dedi. Korku. Şimdiye kadar, çok iyi. Ve şimdi, hedefimiz olan listede yineleme Biz düğüm ile bulana kadar Biz Silmek istediğiniz değeri n. TAMAM MI? [00:05:13] Peki şimdi parçası nerede Biz yineleme istiyoruz. Herkes önerebilir yol boyunca yineleme? [00:05:19] İZLEYİCİ: Bir döngü. [00:05:20] HANNAH: Bir döngü. Onu seviyorum. Özellikle, bir while döngüsü deneyebilirsiniz. Tamam, ve biz ulaştık biliyoruz Bizim listesinin zaman Neyin sonu? HEDEF KİTLE: işaretçi boş olduğunda. HANNAH: işaretçi boş olduğunda. Güzel, ben onu seviyorum. Serin, tamam. Benim sınırlama brace Yani eğer üzgünüm tür bir ekran düşme. Biz geri getirdi. Serin, tamam. Sırada ne var? [00:05:48] Yani biz silmek istediğini biliyorum değer n sahip düğüm. Yani davayı nerede bulalım biz aslında bizim düğümü bulmak. Peki nasıl olduğunu kontrol ediyorum? Ben sadece işaretçi, ardından eğer söyleyebilirim ben işaretçi aşımı değerini almak istiyorum, Ben sadece, n do arrow n, parametre eşittir Bu işleve verdiği, biz aslında silmek istediğiniz düğüm. Burada kadar Herhangi bir sorunuz? Tamam. Tamam, şimdi en hızlı resim çizelim gemide için bu görselleştirmek için. [00:06:24] Yani bizim güzel düğüm var diyelim. Ve bir değeri vardır, ben sadece dört söylerim. Ve bir sonraki işaret Bizim bağlı listede düğüm. Ve daha önce bir şey yok. Yani bizim daha önceki var hiçbir şey işaret. Bu durumda, arka tarafa etmektedir. Tamam, sadece kurma benim Burada listesini bağlantılı. Ve biz işaret eden bir liste var Bu yapıya sahip başlayacak. Ben bir kez daha çizmek gerekir bütünlüğü uğruna. TAMAM MI. Ben bu ileriye işaret edeceğiz. Ve ben bu bir geri işaret edeceğiz. Üzgünüz, özür dilerim. Evet, geriye aldım. Tekrar yapın. Tamam, oraya gidiyoruz. Pekala, onu aldım. Tamam, burada bizim resmi var. [00:07:21] Tamam, bu yüzden iki olgu düşünebilirsiniz. ilk vaka ise ise düğüm biz silmek istiyoruz Bizim listesinin en başında olduğunu. Ve sonra, ikinci durumda biz istiyoruz ki başka bir yerde ise düşünmektir. Ben bu tamamen anlıyorum Dağınık tüm silme çizim, ama umarım biz deneyeceğim Bazı kod ile bu açık olun. [00:07:40] Tamam, o yüzden davayı kapağı izin nerede, bizim düğümü bulundu ve çok az var Bizim bağlantılı liste başlar. Herkes bana ver olarak burada öneri ne Aslında bizim düğümü kaldırmak için ne yapmalıyım? Bu biraz zor. TAMAM MI? [00:07:56] İZLEYİCİ: Sen almak zorunda daha önce olurdu düğüm ve işaret yapmak ondan sonra olacak bir, ve düğüm almak ondan sonra olacak ve yapacak bunun önce düğüme işaret. HANNAH: Kesinlikle. Tamam, bu nedenle bu durumda Nere iki olgu var. Biz dava var Aradığımız düğüm Listenin cephesidir. Tamam, ve sonra durum size tarif doğru, aksi takdirde? Bu listede başka bir yerde var. Yani dedi, biz gerekir önceki düğüm bakmak, ve önceki düğümü yapmak Bir sonraki düğüme işaret. Yani biz konum diyelim beş almaya çalışıyor Burada benim çok dağınık çizim. Biz emin olmak istiyorum Dört şimdi altı işaret. Altı Four sonraki noktalar. Ve dört ila altı önceki noktalar. Bu hedefimiz doğru, burada? Bu sana bence budur Sadece orada dedi. [00:08:56] Tamam, bu yüzden ilk parçayı alalım. Var en yapalım Bir önceki işaretçi önceki. Yani önümüzdeki dört neyi işaret etmelidir? Kesinlikle, bu durumda, altı. Bu yüzden sonraki işaretçi demeliyim. TAMAM MI? Tamam. Yani bu çirkin görüntünün kurtulmak izin ve biraz daha güzel bir çizmeye çalışın. Biz burada bizim liste kafası var. Ve ilk düğüm işaret dedik, bizim bağlantılı liste, dört. İşte bizim ikinci düğüm, beş değil. Ve bizim üçüncü düğüm, altı. Sadece aynı çizmek için çalışıyor resim, sadece biraz daha temiz. Tamam, bu nedenle dört sonraki başlangıçta beş işaret. Altı Five sonraki noktalar. Beş Six önceki noktalar. Ve dört beş önceki noktalar. O kadar güzel! Serin, tamam. [00:10:04] Peki şimdi, biz ne yaptığını sadece Burada, bu kod satırı, hangi önceki gösterici diyor Bir sonraki, yani ne demek? Biz arıyorsanız Bunun anlamı Beş, önceki düğüme gidin, ve şimdi bir sonraki gerektiğini bulunuyor Beş sonraki gelin. Yani aslında, ne yapıyor bu bu oku silme var olan ve doğru beş üzerinden atlamak yapma. Anlaşıldı mı? Ben biraz kabataslak olabilir biliyorum. Biraz kafa sallıyor bakın. Bu iyi. Serin, tamam. Şimdi, bir sonraki adım ne? [00:10:39] Bir sonraki sıfırlamak ettik. Şimdi, başka hangi ok Ben değiştirmek gerekiyor? Bu tam burada. Altı önceki. Biz altı önceki istemiyorum Artık beş işaret etmek. Biz dört işaret etmek istiyorum. Bu resim mantıklı mı? Yani şimdi biz aslında beş out alabilir. Yani o parça alalım. Ben önce ben ne yapmalıyım Altı önceki dört sıfırlanır? Orada herhangi bir fikir? [00:11:14] İZLEYİCİ: arasındaki düğüm Özgür o null ayarlayarak onları? HANNAH: Serin. Kesinlikle, bizim nihai hedefimizdir düğüm ücretsiz olacak. Yani biz burada bunu yapabilirsiniz. Ücretsiz işaretçi. Kesinlikle. Ancak bundan önce, en amacımız hakkı sadece-- izin Burada yanındaki işaretçi ayarlamak için Eşit önceki önceki işaretçi. Ben bu örtbas oluyor biliyorum. Tamam, en serin take-- edelim. Herkes bu alt satırında görebilir miyim? Ya da süper minik? [00:11:50] Biz idam önce Yani Burada bu hat, biz istiyoruz emin olmak için işaretçisi yanında boş değildir. Işaretçi yanındaki Çünkü eğer hata null, ne tür Ben çalıştığınızda alacak Bir boş gösterici başvuru? HEDEF KİTLE: Seg hatası. HANNAH: Bir seg hatası, güzel. Eğer öyleyse tamam, o değil null, o zaman sıfırlayabilir. Ve biz dört tekrar altı nokta var. Bu noktaya kadar Sorular kadar? Evet? [00:12:17] İZLEYİCİ: İlk olarak açıklamada ise, yaptın ok var demek Bir sonraki veya [inaudible]? HANNAH: Ben işaretçi ok n geliyordu. Yani temelde, ben yapmaya çalışıyorum ne , ben geçerli düğüm demek olduğunu yineleme, geçerli düğüm o Ben işaretçi saklama ediyorum, bakıyorum. Ve ben işaretçi en bilmek istiyorum Bu durumda n değeri. Ve ben görmek istiyorum, bir Ben arıyorum düğüm düğüm için ben silmek amaçlayan ediyorum? Burada var n işaretçisi yüzden bu. [00:12:47] İZLEYİCİ: ok gidiyor Yani n, sen değerini ve n adında bir düğüm saklayın? [00:12:55] HANNAH: Yani ben eğer gibi Bu bağlantılı listede geçiyor ve beş işaret. Ben eğer, bu değeri elde etmek istiyorsanız Ben, bu sayı, 5 almak istiyorum Ben işaretçi ok n yapmak zorunda. Serin? Evet. [00:13:07] İZLEYİCİ: değişkenin adını n tane mi? HANNAH: Evet. Biz bir geri çevirmek Yani slayt, n adıdır içinde değerinin Bizim bağlı listede düğüm. Ve ben biraz olsun biliyorum Biraz kafa karıştırıcı ayrıca çünkü biz aradığınız şey Biz n silmek istediğiniz. Yani o nerede bir satır gelir. Evet? [00:13:27] İZLEYİCİ: var ne [Duyulamaz] nasıl çalıştığını? Bir gösterici [duyulamaz]? [00:13:35] HANNAH: Tabii. Eğer about-- hangi çizgi bahsediyoruz? HEDEF KİTLE: son satırı [duyulamaz]. [00:13:44] HANNAH: Tabii, tamam. Yani resimde bakalım Sipariş bu açıklamaya çalışın. Ben, özür dilerim Kamera, soru Biz işaretçi açıklayabiliriz Bir sonraki işaretçi önceki ok. Tamam, bu yüzden biz beş konum diyelim ve hedefimiz beş silmektir. Yani, bir sonraki işaretçisi bu hangi Üç düğüm bize verir? Bu doğru, altıncı düğüme bize getiriyor? [00:14:10] Tamam, şimdi biz soruyoruz Altı önceki için. TAMAM MI? Ve biz bu sıfırlama ediyoruz dört eşit olduğu, hangi beş önceki olması oldu. Ben süper olduğunu biliyorum Sert takip etmek. Ben gerçekten resim çizmek tavsiye Eğer böyle bir soru olsun. Evet? [00:14:30] İZLEYİCİ: nedeni var ki Biz [duyulamaz] yok mu? [00:14:37] HANNAH: Kesinlikle. Soru Peki, neden Burada kontrol etmek gerekmez? Neden bunu kontrol etmek gerekmez Bir önceki işaretçi null eşit değildir? Biz ettik çünkü bu kadar zaten ayrılmış durumda ise ibre en başında. Çok iyi bir soru. Bu konuda başka bir şey? Serin, tamam. Yani o kadar bitirelim. Biz neredeyse oradayız. Ne olursa [00:14:59] Yani başında mı? Ne yerine ise beş silmeye çalışırken, biz aslında dört silmek istedi? Ne yapmam gerekir? Eh, ben ne kadar başımı sıfırlamak istiyor? Bunu haykırmak? HEDEF KİTLE: ondan sonra bir. HANNAH: Güzel. Tamam, bu yüzden işaret edilecek listesi istediğiniz ne olursa olsun bizim işaretçi sonraki düğümdür. İyi. Ve sadece tamlık yıllardan için aşkına, biz olur listemize sürece kontrol etmek istiyorum sürece bizim liste değildir gibi, boş değil Boş, o zaman ayarlamak istediğiniz null önceki eşit. Soru kadar? Bir adım from--? [00:15:53] İZLEYİCİ: o eğer olur Liste null eşit değildir? [00:15:55] HANNAH: Evet, tamamen haklısın. Ben çok üzgünüm. Mı listesine null eşit değildir. Korku. Tüm ekranda bu getirmek için çalışıyorum. Bu tür düşme oluyor. Üzgünüm, beyler. Ve son ama en az değil, tüm Biz dönüş yapmak zorunda. TAMAM MI. Bu çok sıkışmış oldu Gerçekten hızlı bir şekilde. Bu over bakmak için bir saniye sürer. Herhangi bir sorunuz varsa bana söyle. Evet? [00:16:20] İZLEYİCİ: Liste kısmında ise Baş, Nevermind, bekle sonra--. [00:16:26] HANNAH: Tamam, iyi. Liste başındaki Yani bu, biz takılı olursa olsun onu kaldırın. Evet? [00:16:31] İZLEYİCİ: açıklayabilir misin Tekrar if ilk? N işaretçi n eşitse? HANNAH: Tabii. Yani bütün bu fonksiyonun bizim hedefimizdir değer n olan düğüm silmek için. Yani eğer biz konum olarak biz, bulmak Bizim listede yineleme, değer n düğüm, işte kimse biz silmek istiyorum. Yani silme tüm olur o büyük eğer deyimi içinde. Bu mantıklı mı? Serin. Evet? [00:16:59] İZLEYİCİ: Belki de sadece göremiyorum bu, ama aynı zamanda bir çizgi gerekmez listede kaydırma için? HANNAH: Korku. En biraz bu kadar getirelim, ve Biz alt o hakkı atacağım. Belki kurulu yapardım biraz daha iyi bir fikir. Peki nasıl ileriye işaretçisi hareket edecek? [00:17:17] İZLEYİCİ: Pointer işaretçi artı bir eşittir. [00:17:20] HANNAH: Güzel. Yani bizi tanır iterating dek devam eder. TAMAM MI. HEDEF KİTLE: Orada bir başka olmaz mıydı? HANNAH: Bir kez daha? HEDEF KİTLE: Orada olmaz eğer eski büyük sonra başka ifadesi [duyulamaz]? HANNAH: Hangi bölüm? Üzgünüm. [00:17:38] İZLEYİCİ: kastetmek, Orada else olmamalı? HANNAH: Kesinlikle else olabilir. Ben bir dönüş hakkına sahip olduğundan Orada, bir başka gerekmez. Ama evet, iyi bir soru. Evet, tamam mı? HEDEF KİTLE: pointer'In düşünebiliyor Bu liste içinde hareket ediyor değerine alarak Listedeki her düğümün? Ya da biz bunu düşünmek gerekir listeye dış tür? [00:18:00] HANNAH: Ya bir güzel, sanırım. Ben hayal yoludur Ben tamam, ben gösterici olduğumu söylüyorlar. Ve bu benim. Bu benim el. Ben farklı göstermek için gidiyorum Ben yineleme istediğiniz şeyler. Öncelikle, ben işaret gidiyorum Listenin başına. Ve ben olduğumu söylüyor dört işaret olacak. Ve bu yüzden bana, listeye dış olmak Ben bu unsurların her birine işaret edebilir. Yani işaretçi olarak kendimi düşünüyorum. HEDEF KİTLE: Yani silmek Bu elemanların biri, Bunu konuşmak, kendini silin. HANNAH: Kesinlikle. Yani bir şey silmek Eğer işaret ediyoruz. Örnek Yani biz nereye konum gördüm beş silmeye çalışırken, Ben beş işaret olduğumda, Ben silmek istiyorum şey işaret ediyorum. Tam olarak doğru. Evet? HEDEF KİTLE: biz halledilir mı n listesinde olmayan vaka? HANNAH: n, listede değilse? Ne olacak ki tüm sen olduğunu aracılığıyla ve yineleme yineleme olacak aracılığıyla, ve o zaman gidiyoruz olmak null adlı işaretçisi almak için, ve sonra yapılması gereken gidiyoruz. [00:18:48] İZLEYİCİ: Yani biz var bir şey dönmek için? HANNAH: Yapabiliriz. yolu bu tanımlanmış eğer fonksiyonu, ben sadece döner söylüyorlar ne olursa olsun geçersiz. Ama bir şey olabilir Bir tamsayı dönen gibi, ve dönüş var başarısız olursa 1 negatif. Böyle bir şey. Sorular evet Şarkı söylemeyi kes? HEDEF KİTLE: [duyulamaz]? HANNAH: Üzgünüm? HEDEF KİTLE: [duyulamaz]? HANNAH: Tabii. Biz ettik kez Yani actual-- var hareketli yapılan tüm bu çalışmalar Tüm bu oklar etrafında, bizim bütün gol düğümün kurtulmak oldu biz arıyoruz. Bu durumda Yani, azat işaretçi, ben beş işaret ediyorsam, Bu orta düğüm silme gibi. Bu ücretsiz işaretçi parçası. Bu mantıklı? [00:19:29] İZLEYİCİ: Yani bile düşündüm değil [duyulamaz] mi? [00:19:31] HANNAH: Yani biz başında kabul Biz oldu biraz listesi vardı already-- birlikte bu koymuştu. Bu yüzden, bu inşa etmek üzere Liste, onlar [inaudible] olmalı. Serin. Bu başka bir şey ile? Evet? [00:19:46] İZLEYİCİ: Ne liste halinde boş satır eşit değil? [Duyulamaz]? HANNAH: Sağ burada? HEDEF KİTLE: Evet. HANNAH: Tamam, hepsi ben yapıyorum Ben sadece emin yapıyorum edilir ben inceleyebilirsiniz listesine çalışmadan önce, Ben önceki erişmeye çalıştığınızda önce, O değil ben emin olmak istiyorum boş yüzden bir seg hata alamadım. Serin. [00:20:08] Tamam, ben bu oldukça olduğunu biliyorum Bir sürü aracılığıyla almak için. Yani bu slayt olacak Size sunulan. Böylece daha detaylı olarak gidebilirsiniz. Evet? [00:20:17] İZLEYİCİ: Neden listesi [duyulamaz]? HANNAH: Tabii. Yani liste gerçekten işaret Burada bu unsur, Listedeki ilk unsur. Yani bir önceki olamaz. Evet? [00:20:31] İZLEYİCİ: işaretçi noktası mı bellekte aynı adrese? Aynı işaret mu düğüm olarak bellekte adresi o işaret ediyor ki? [00:20:40] HANNAH: Evet, bu işaret bellekte bu düğüme. [00:20:43] İZLEYİCİ: Sağ, bu yüzden zaman [duyulamaz]? [00:20:47] HANNAH: Bir anlamda, evet. TAMAM MI. Pekala, bu birlikte hareket edelim. Ve daha fazla sorunuz varsa, sonunda ayrılmamak, ve biz tekrar gidebilirsiniz. Serin, tamam. Şimdi, biz hareket olsun tablolar, çalışır karma, ve ağaçlar, süper var hangi p-set, beş yazım aşina. [00:21:04] Yani karma tablo sadece bir olduğunu tek bağlantılı listeleri ile dizi veya çift bunun kapalı geliyor listeleri bağlantılı. Bu yüzden çeşit var ilişkisel dizi. Ve biz biliyoruz nasıl bu hangi kovalar içine almak için diziler, Biz bir karma işlevini kullanın. Yani bu durumda, can herkes ne hash fonksiyonu tahmin sadece bazı dayalı olacağını giriş ve çıkış? [00:21:31] İZLEYİCİ: alfabenin Mektubu sayısı. HANNAH: Kesinlikle. Sadece alfabetik sırayla koyar. Bir ile başlar her şey İlk kova içine konur. B ile her şey konur İkinci kova, böylece, ve benzeri. Başar, tamam. Ve bir karma işlev herhangi bir Bir kelime alır fonksiyonu ve size ne o aittir kova. Hangi girişi Yani bizim dizinin aittir. [00:21:55] Yani her zaman vermek benim karma, bir kelime işlev bana aynı söylemelidir her zaman yerleştirin. Biz karma işlevi kullanmak Yani eğer Önceki slayt nerede göre sıralama ediyoruz alfabenin ilk harfi, Ben vermek her zaman benim hash fonksiyonu "elma" her zaman 0 bana geri vermelidir. Ben bir elma varsa Yani Benim karma tablo koymak, Benim karma işlevi "elma" verirsen, o kova 0 koymak gidip, demeliyim. Ben bir arıyorum varsa Benim karma tablo elma ve nerede kudreti elma, demek canlı, senin karma işlevi isteyin. Ve 0 kepçe gidin, diyor. Tamam? Hash fonksiyonları ile Sorular? Korku. [00:22:34] Burada biraz daha fazla Ayrıntılı açıklama Bir karma işlevi gibi görünebilir ne. Tamam. Karma ile Şimdi, sorun fonksiyonlar, ideal bir dünyada olduğunu biz sadece biri olurdu Her kovaya şey. Ama gerçekte, var sadece bir kelime Bu bile yok A. ile başlar B. So ile başlar, sadece bir kelime Bu durumda, eğer aniden ", berry" olsun ve bunu koymak istiyorum Bizim karma tabloya, ve biz oh, hayır, muz, bakın zaten orada, biz ne yapacağız? [00:23:03] Peki, biz iki seçeneğiniz var. İlk seçenek lineer, sondalama hangi Sadece bulmak gitmek anlamına gelir sonraki boş kova. Bir sonraki boş bir dizi girdiyi bulmak gidin. Ve orada "berry" koydu. Bu yüzden gerekiyordu biliyorum kova, bir muz ile gitmek. Ama sadece, kova üç koymak kova için üç boş. Başka bir seçenek de, muhtemelen uygulamak ne senin p-seti, size de Ayrı zincirleme vardı. Yani kovalar her senin dizi elemanlarının her biri, sadece bir kelime tutan, ama aslında kelimelerin bir listesini bir gösterici tutar. Eğer olsaydı o yüzden senin karma tablo muz ve aniden istedim berry, hiçbir sorun eklemek için. Sadece sonuna kadar, ya da üzerine berry eklemek başlangıcı, senin bağlantılı liste. Tamam, harika. Karma ile Sorular tablolar biz gitmeden önce? [00:23:58] Tamam. Ağaçlar ve çalışır. Tamam, bu yüzden bu başka bir seçenek oldu sözlük uygulanması için. Bir deneyin yapılmış olabilir. Yani ağacın özel bir tür olduğunu Bir çok düzeyli karma tablo gibi davranır. Yani resmi görürsünüz Eğer bir dizi var nerede Dizilerin bir demet işaret Dizilerin bir demet o nokta Dizilerin bir demet o nokta. Ve biz tam olarak ne olduğunu göreceksiniz gelecekteki slaytta gibi bakmak istiyorum. Ve daha genel olarak, bir ağaç Sadece herhangi bir veri yapısıdır burada veri Bazı hiyerarşi içinde organize. Yani biz var gördüm anlayış çeşit bir üst düzeyde, bir sonraki seviyeye, Bir sonraki seviye, bir sonraki seviyeye. Yani bu muhtemelen en açık Bazı özel örnekler. Yani burada bizim ağaç. Bunu görebilirsiniz Özellikle seviyesi vardır biz bu kök düğüm, biri ile başlamak. Ve bizim ağacın aşağı gidebilir. [00:24:50] Bir ikili ağacın olduğunu özel ağaç türü. Ve tek şartname bir ikili ağaç Her düğüm olmasıdır en fazla iki yaprakları. Yani herhangi görmek için gitmiyoruz Bu düğümler üç ya da dört tane olan ya da yaprakların da başka bir sayıdır. Ve daha sonra daha da özel İkili arama ağacı nerede solundaki her düğüm Düğüm bir değer daha küçük sahip oluyor. Ve her değer Sağ büyük olacak. Eğer 44 bizim kökünde görmek Yani, Sol, 11, 22, ve 33 Bizim kökü daha tüm azdır. Ve sağda hepsi numaraları 66, 55 ve 77 bigger--. Ve bu özellik geçerlidir Ağacın her düzeyde. [00:25:37] Yani biz aşağı gitmek ne zaman Yine 22, 11, ve 33, 11 den küçük 22 ve 33 22 daha büyük. Ve bu daha kolay arama yapar Biz numara arıyoruz çünkü eğer, biz tam olarak biliyoruz ki şube aşağı takip etmek. Yani bu sizi bir hatırlatmak gerekir İkili arama biraz. Evet? [00:25:56] İZLEYİCİ: Yani sen İkili açıklayan, Eğer en fazla iki yaprakları vardır dedi? HANNAH: Hı-hı. HEDEF KİTLE: daha az olabilir mi? HANNAH: Evet. Yani, en Örneğin, diyelim şeylerin bir çift sayı yoktu ve doldurmak değil tüm senin bir biri varsa yaprakları, ince. TAMAM MI? Korku. Ağaçlarda Başka sorunuz var mı? TAMAM MI. [00:26:16] Geri bizim denemeden Ben konuşuyordum gibi Biraz daha erken hakkında, nasıl bu multi-level diziler var. Bu durumda Yani, biz üstünde başlar. Ve biz aşağı herhangi bir kelimeyi takip edebilirsiniz. Yani biz istedik diyelim Turing bakmak için. Biz T başlayacak, aşağı takip U içeren bir dizi, ve biz kadar aşağı takip Bu küçük delta ulaşmak hangi Bize, evet, bir kelime buldum söyler. Deneme Clear? Her şey oraya gitmek için? Evet? HEDEF KİTLE: delta sembolü mu try içinde yer işgal var? HANNAH: Evet, bu yüzden değil mutlaka bile bir delta olması gerekir. Ama biz bir yol gerek Bizim computer-- üzgünüm söylemek, Bu yüzden TUR bir kelime olmadığını biliyorum. Let Çünkü en biz yoktu demek Bir deltanın bu kavram, bu kavram kutlama, bir kelime buldum, o, T-U-R geçmesi ve yineleme istiyorum ve sonra ben onu buldum, müthiş demek! Bu bir kelime olmalı. Ama gerçekten değil. Biz bütün Turing bir kelime olmak istiyorum. Yani biz bir şey olmalı diyor sonu, tebrikler, Eğer meşru bir kelime buldum. HEDEF KİTLE: Eğer gibi olsaydı Yani Alfabesinde 26 harf, aslında olurdu Senin denemede 27 tuşları? [00:27:24] HANNAH: Başar, evet. Yani aslında, ben düşünüyorum Bir sonraki slaytta olacak. Ta-da! Eğer bir varsa nerede senin denemede düğüm, sen yerine 26 27 çocuk sahibi olacak. Bununla Herhangi bir sorunuz? Evet? HEDEF KİTLE: Neden çabaladığı o kadar alıyorsun kadar alan [duyulamaz] olarak gitmek? Neden [duyulamaz] olarak kabul edilir? HANNAH: Tabii. Geri dönelim. Soru, neden çalışır çok büyüktür Bir karma tablo gibi bir şey daha. Bu seviyelerin her Yani, Hatta, burada çizilmiş değilseniz Tüm 26 karakter olmalıdır. Nedeni Ve bu yapamazsın Ben, Turing için ah, demek, ama gibi herhangi biri olması gerekmez U. Well düzeyinde aynı şeyleri, aniden eğer eklemek istedim T-H gibi bir şeydi, olması gerekir olurdu o kelimeyi ekleme yeteneği. Her harf için Böylece, Eğer zorunda gidiyoruz Bir grup var bunun kapalı geliyor diziler. Yani o olsun istiyorum nasıl görebilirsiniz gerçekten büyük, gerçekten hızlı. Başka sorunuz var mı? Tamam. Evet? [00:28:29] İZLEYİCİ: Ne zaman çalışır vardır karma tabloları daha hızlı? [00:28:33] HANNAH: Ne zaman çalışır vardır karma tabloları daha hızlı? Yani sen gerçekten vardı Kötü karma işlevi. Yani ben gibiydi diyelim, burada hash fonksiyonu var. Ne olursa olsun kelimesi Bana ver, ben her zaman kulüpler Dizi girişi 0 koymak için gidiyor. Ve böylece biz sadece koyarak ile sona bir büyük uzun bağlantılı liste her şeyi. Ve böylece bir arama zaman en kötü alacaktı n bizim listesinin en sonunda ise. Denemede, biz sadece yineleme var kelimedeki harfleri ile. Biz demet ekledi Yani bile Bizim denemede daha fazla kelime, o artık bizi alacağını değil Belirli bir sözcüğü bulmak için. [00:29:09] Yapmamız gereken için, bir örneğin, bu durumda, en biz zoom arıyoruz diyelim, Biz sadece üzerinde yineleme olurdu Z-O-O-M, dört harf. Yani bu sadece kelimesinin zoom uzunluğu. Bu kaç önemli değil Daha fazla kelime bu try koydu. Biz her zaman alabilirsiniz Bu dört adımda. Korku. Evet? [00:29:32] İZLEYİCİ: Yani [Duyulmaz] Doğru, bir dizidir? [00:29:34] HANNAH: Mm-hm. HEDEF KİTLE: Eğer konum [duyulamaz] arıyor, Eğer gitmek zorunda kalacak senin dizi [duyulamaz] bulmak için? HANNAH: Tabii. HEDEF KİTLE: Bu daha fazla zaman almaz mı? HANNAH: Ben gidiyorum Benim dizi her zaman söylüyorlar A, B, C, D olacak, E, F, G, falan filan, Ben hep biliyorum eğer öyleyse bu kadar Aynı kesin sırayla, Ben hep biliyorum eğer var alfabetik sırayla, Ben sadece O numarası olduğunu söyleyebiliriz böylece ve böylece alfabede. Sadece bu yere atlamak. Ile, hatırlıyorum çünkü diziler, biz erişebilirsiniz Sabit bu dizinin herhangi bir elemanı Biz arıyoruz nerede biliyorsanız zaman. Evet? [00:30:09] İZLEYİCİ: Önceki Açık [inaudible] 27 kaydırın ama ilki için 26. [00:30:14] HANNAH: Üzgünüm? [00:30:15] İZLEYİCİ: ilk değil mi bir 0, bu yüzden 26 olmaz? [00:30:18] HANNAH: Biz 27 dediğimizde Tabii, bu nedenle, bu var Bize 26 üzerinden 0 endeksleri verecek. Ama aslında sayarsanız Bu dışarı, o 27 olacak. İyi bir soru. Başka herhangi bir şey? Evet? [00:30:31] İZLEYİCİ: Yani çalışır vardır karma tabloları daha yavaş? [00:30:34] HANNAH: Denemeleri de, olacak teori, daha hızlı hash tabloları ancak daha fazla bellek sürebilir. Evet? HEDEF KİTLE: [duyulamaz]? [00:30:45] HANNAH: Üzgünüm, seni duymadım. HEDEF KİTLE: [duyulamaz]. 0-25 size 26 verir. [00:30:54] HANNAH: 0-25 olur Doğru, sana 26 ver. [00:30:56] İZLEYİCİ: Ve sonra [duyulamaz]. HANNAH: Sağ. Bu yüzden belirterek ediyoruz sayıdır Bizim dizide şeyler sayısı. Biz 27 var ise, bu kadar Bize vereceğim 0 26 ile, burada verecek Bu durumda bizim için oda, Ben bir kesme işareti içeren değilim. Bu yüzden 25 üzerinden 0 olan alıyoruz alfabenin ilk 26 harf, alfabenin veya 26 harf. Ve o son şey, giriş 26 de, bir çek olacak işareti, veya delta. Başka herhangi bir şey? Korku. Benim alanı kaybetti. Serin, tamam. [00:31:31] Yani biz zaten bu değindi. Ama büyük ticaret kapalı denemeden ve hash tabloları arasındaki çalışır olarak temin olmasıdır teori, sabit bakmak kere ama bellekte bir sürü kullanın. Pekala, şimdi biz biraz var Daha az karmaşık yapılar, ve biz C bitireceksin, ve biz doğru birlikte hareket edeceğiz. [00:31:49] Yığınlar Yani, biz bu gördüm nerede derste size benzer bir şey var tepsiler nerede yığını Eğer koymak son şey yığını oluyor Eğer take off ilk şey olmak. Yani gerçekten bir yığın tanımlar ne son şey koymak olduğunu İlk olacak şey çıkar. Ve biz kullanmak terminoloji eğer bir şey koymak için gidiyoruz, biz bir şey eklemek için gidiyoruz eğer Bizim yığını, biz iterek diyorsun. Ve biz bir şey alırsak kapalı, biz haşhaş diyoruz. Ve biz gidiyoruz , biz bir yığın uygulamak izlemek için emin olmak gerekir büyüklüğü ve kapasitesi hem de. Toplam eleman sayısı biz Yani tutun ve elemanların mevcut sayısı biz düzenliyoruz. [00:32:27] Ve çok benzer, biz kuyruklar var. Ve tek fark yerine yığınları ile biridir dedik biz koymak son şey Biz çıkarmak ilk şeydir. Yani sırası ile, biz koymak ilk şey olacak İlk şey çıkar. Yani bu sen eğer gibi aslında bir mağazada sıraya ve yardım ediliyoruz, doğrultusunda daha sonra birinci kişi yardım için ilk kişi olmalıdır. Yani bir kuyruk olurdu. [00:32:52] Bu yüzden takip etmek gerekir boyut, kapasite ve baş biz olduğumuzdan beri açık kapalı herkesi alacak yerine arka listesinin. Bu konuda sorular? Sizi rahatsız herhangi bir C soruları? Veri yapıları, eğlenceli şeyler herhangi? Pekala, serin. Yani Alison onu teslim edeceğiz Biraz daha programlama içine atlamak. [00:33:14] Alison: Ah, biz göreceğiz. Biz burada ne kadar iyi görürsünüz. Tamam, ben denemek ve uçmak için gidiyorum Bu malzeme ile, çocuklar. Hannah çok gitti onun tüm şeyler derinlik. Ben vermek denemek için gidiyorum Eğer hızlı bir patlama bakış hepimizin Davin almak böylece eğlenceli JavaScript ve güvenlik şeyler belki gerçekten hakkında daha fazla duymak istiyorum. [00:33:33] Tamam, Hannah ise, dediğim gibi Herhangi bir sorunuz varsa, Ben çok hızlı gidiyorum, lütfen bana bildirin. Ben gerektiği gibi sorulara cevap verecektir. Başlatmak Yani, biz başlatmak için gidiyoruz ilk şeylerden biri muhtemelen Eğer web ile öğrendim programlama, izinler. Yani chmod, siz oldum gerekir Tüm web ile bu Masters at Eğer ettik programlama Son zamanlarda yapıyor. Bu temelde sadece bir komut var Bu izinleri değiştirir veya erişim izinleri Bizim dosya sistemi nesneleri. Tabii ki, aslında sen eğer, bu bakın Bu herhangi bir sorun yaşıyorsanız Sorunun setleri sırasında, Eğer uzun ls -l, kullanmış olabilir Böyle görüntüle tür almak için, aslında tüm görmek nerede Bir dosya için izinleri. [00:34:16] Ve gerçekten, biz sadece gitmek için gidiyoruz oldukça hızlı yoluyla sadece güzel çok Bunların her biri ne anlama geldiğini. Bu yüzden, burada d hangi Sadece dizin duruyor. Açıkçası burada, biz, rwx bakın hangi okunabilir, yazılabilir, ve çalıştırılabilir. Bunlar da bit olarak temsil edilebilir, hangi bir sonraki sayfada içine alırsınız. Gördüğümüz Yani her üçlü Burada, bu nedenle üç üçlüleri var. Biz, r şey x ve r RWX var hiçbir şey bu ilk dosya için x. Bu genel yapısı var. [00:34:49] Bu yüzden bazı dizin var. Biz bazı kullanıcı grubu var Bu izinler ile. Bu izinleri olan bazı grup, ve bir dünya iznine sahip olduğunu. Bir üçlüsü olarak bu düşünebilirsiniz. Üç bit olarak bu düşünebilirsiniz. Böylece değerleri tutabilir her yerde 0 up 7'ye, hangi neden bazen biz chmod yapmak vardı Bunun yerine ne olursa olsun rw chmod 600. Biz orada bir örnek haline alırsınız. Ama temelde, aklınıza gelebilecek Sadece rwx olarak ya bu, veya bazı Bunlardan düşünebilirsiniz numara nerede burada bu ilk arasında bir sayıyı temsil eder 0 ve 7, ikinci bir arasında bir sayıyı temsil eder 0 ve 7, ve üçüncü bir Tamam, 0 ve 7 arasındaki bir sayıyı temsil eder? [00:35:38] R 4. değeri w vardır bir 2 değerine ve x sahip bu yüzden, 1 arasında bir değere sahiptir Burada izin 700'ü chmod olacaktır. Burada bu durumda, bu biz diyor, çünkü ilk bit orada çevrilmiş olması. Bu yüzden okuma için 4 var. İkinci bit için üzerine çevrilmiş şimdi 6 böylece, 2 olan, w. Ve üçüncü biti üzerinde çevrilmiş 1 x, için, bu yüzden yedi olsun. Ve tabii ki, bizim grup ve bizim dünya her 0 vardır. Yani bu da chmod 700 eşdeğer. Ve ben kesinlikle denemek istiyorum arasındaki eşleme anlamak. O varsa ben emin değilim önce quiz gelip, ama olur Ben isteyebilir soru. [00:36:18] Sadece biraz bile gidiyor burada daha fazla chmod, burada içine çok genel chmod çağrı yapısı. Yani tabii ki, biz burada chmod var. Bu ne ifade eder Kaynaklar, kim biz bu izinleri veriyoruz ya kim bu alıyor uzak izinleri. Yani biz burada izinleri var, gibi biz bir artı x chmod verdik, yakında göreceğimiz gibi. adil bu özel vermek anlamına gelir Herkese izinleri. Tüm bunları ver. Yani çok iyi u artı x olabilir veya g artı x ve o artı x veya birden arasından seçilir. İlk bölümü her zaman böylece referanslar olacak. Kim, bu izinleri veriyoruz ya kim uzakta onları alıyor? [00:37:03] İkinci bir operatör olduğunu. Yani siz daha çok artı ele alınmıştır. Bu izinleri verir kim onları veriyorsun, eksi ise, mantıksal, onları kaldırır. Orada Yani hiçbir şey çok korkunç. Ve sonra modlarında konuştuğumuz ne , okuma yazma, ya da yürütme ile. Yani bir artı x yürütülebilir vermek anlamına gelir Herkese izinleri. Sonra, tabii ki, üzerinde Belirli bir dosya veya dizin. TAMAM MI? Chmod iyi Herkes? Çok kötü değil mi? [00:37:37] Tamam, HTML yüzden sizden herhangi biri Eski yeterince MySpace yaş amaçlara yönelik? Ben, benim bölümüne gönderdi ve tam anlamıyla insanların yarısı Ben deli gibi bana baktı. Ve ben, çocuklar, gibi oldu biz bu yaşlı değiliz. Hadi. Yani HyperText Markup Language, dürüst sizin için sadece bir yol var web üzerinde bazı şeyleri göstermek için. Yani bir biçimlendirme dili var. Bu bir betik dili değil. Bunun hiçbir mantığı yok. Bu değiştirmek için basitçe yol şey görüntülenir. Tamam, böylece bir önemli ayrım yapmak. Bir biçimlendirme dili olarak kabul, bir betik dili. [00:38:12] Yani burada bizim HTML etiketlerini var. Bu slaytta muhtemelen çoğu Eğer aşina olmalı olanlar ve gerçekten rahat. Yani açıkçası, biz var Bizim HTML etiketi, hangi her şeyi de belirler arasında bu iki HTML olacaktır. Biz bazı bağlantı var olan Açıkçası verecek Harici bir web sayfasına bir bağlantı. Bazı başlık, burada bizim kafası içinde. Ve biz bizim vücuda sahip bir başlık olan h1, bu yüzden güzel yapacağız ve cesur ve büyük. Ve sonra, bazı var Bir paragraf p. Muhtemelen bilmeli ve şeyler aşina olmak Bir görüntüyü eklemek nasıl olduğu gibi Orada başka bir başlık sınıfları? Ben kesinlikle olacak div ile rahat. Peki bu etiketleri çoğunluğu var Eğer aşina olması gerektiğini söyledi. Ama tabii, her şeyi olduğu gibi CS 50, liste ayrıntılı değildir. Yani bu konuda fırça emin olun. [00:39:08] CSS, yani CSS, sizden herhangi izlemek durumunda İki hafta önce benim seminer, gerçekten sadece bir yoludur web sayfası stil? Tamam, bu yüzden bazı biçimlendirme dili var. Sadece metin ilgilenir HTML, ve sayfada nerede olabilir. Ama CSS oldukça kılan gerçekten. Sen HTML bu olabilir Dosyaları, ama daha sonra bahsedeceğiz gibi, Ben olabilir eminim o, sonraki slayt olacak yaygın bir uygulamadır, ve aslında biz gerçekten teşvik uygulaması, tutmak için onları ayrı zaman biz MVC ve bütün paradigma hakkında konuşmak. İşte bu beslemeleri gerçekten ne olduğunu. [00:39:42] Peki CSS sadece bir yoludur işler çok görünmesi. Burada işler gibi gövde ve #title ve .info, Bu seçicileri ve ne denir onlar belirli şeyler seçin yapmak HTML dosyası içinde ve ne olursa olsun stil uygulamak, ne olursa olsun istediğiniz gibi şeyler, web o özel elemanına sayfa. Yani burada, biz bir arka plan rengi ve renk ve bir yazı ailesi davranıyor ki vücutta ne olursa olsun başvurdu. Burada geri baktı Yani, onu başlık için geçerli olmaz. Sadece ne kadar geçerli olacak Bu vücut seçiciler, OK? [00:40:22] Burada başlığı ile, bu Aynı şey olacak, metin rengi Mavi sadece gidiyor olmak içinde ne olduğunu etkileyecek başlık seçiciler. Yanı sıra burada bilgi olarak, Metin, pembe olacak burada ne olursa olsun info. Tek şey Böylece Bu sayfada pembe olurdu tarih, Pazartesi, Kasım 17, 2014 olduğunu. Tamam, bu yüzden CSS sadece bir yoludur evet çakışık fazla kontrole sahip? [00:40:48] İZLEYİCİ: Neden var başlığı ile karma kullanımı? [00:40:51] HANNAH: Sonraki slayt, söz veriyorum! Biz orada alırsınız. Biz karma kullanmak zorunda yüzden bu. Yani seçiciler üç main almak Biz yaklaşık Sizinle konuşmak formlar. Ben daha fazla bilgi edinmek istiyorum fyou, bol orada var. Büyük CSS belgeleri var. Yapmak olan bir etiket adı var, HTML sadece normal etiketleri ile. H1, p, div, h2 Yani, şeyler bu tür. Ve biz sadece olduğu gibi bu adlandırabilirsiniz. Burada gördüğünüz gibi Yani Vücut, normal bir etiketi. Yani biz sadece vücudu koyabilirsiniz Bizim CSS dosyasında konuşuyorsun. [00:41:26] Başlığı ile, tüm nedeni Bu karma var, biz ne var Kimlik düşündü. Yani bir kimlik her zaman olmalı HTML sayfası içinde benzersiz sen ne zaman ki buna atıfta sen Eğer sadece atıfta olduğunuzu biliyorum belirli bir şeye. Burada, bu durumda Yani bizim Burada h1, CS 50 yorum oturumu, başlığında bir kimliği var. Sadece başvurmak için sipariş Yani Bizim HTML parçası, bir karma başlığı yapmak. Sadece kongre tarafından, kimlikleri belirlenmiş önlerinde bir karma ile. Aynı şekilde, bkz Burada bilgi bir sınıftır. Ve böylece CSS ile sınıf bir nokta sınıf olarak adlandırılan veya sınıf ne olursa olsun nokta. Yani burada bu durumda, bu bilgileri var. [00:42:10] Ben geri almak. Bunların her ikisi de olabilir Burada bizim CSS için pembe her ikisi de bilgi bir sınıf var çünkü. Ve bizim CSS dosyasında, biz tayin var bilgi bir sınıf o şey pembe olacaktır. Mantıklı mı? Evet? [00:42:27] İZLEYİCİ: Eğer olsaydı yapmak Vücut beyaz şeyi, ve sonra yapmaya mavi bunun içinde bir şey, Bu sorunlara neden olur? [00:42:34] HANNAH: Yani CSS basamaklı stil sayfaları. Yani ne olursa olsun doğru olduğunu Alt öncelik alacak. Yani vücudun bir şey yaparsanız, ve her şey beyaz yapmak, ve daha sonra da sen başlığı değiştirmek veya vücut içindeki metni değiştirmek, o yazar. Doğru Yani bir şey Alt öncelik alacak. Evet? [00:42:56] İZLEYİCİ: Ve kimlikleri, benzersiz ama sınıflar fazla olabilir? HANNAH: Sağ. Yani kimlikleri benzersiz olmalıdır, ve sınıflar can İstediğiniz gibi birçok şeyler bakın. Başka sorunuz var mı? Evet. [00:43:09] İZLEYİCİ: [duyulamaz]. Ben merak ediyorum bir fark yaratıyor. HANNAH: Ben, özür dilerim Soru neydi? HEDEF KİTLE: Küçük var "F" ve sermaye "F." HANNAH: Yani fark küçük "f" ve sermaye arasındaki "F" bir fark olmamalıdır. Yani "f" 15 her iki şekilde olacak. Serin, başka bir şey var mı? İyi Herkes, CSS? Evet? [00:43:30] İZLEYİCİ: Üzgünüm. Bir sınıf ve kimlik alabilir miyim? [00:43:35] HANNAH: Evet, yapabilirsiniz. Şeyler bir sınıf ve bir kimlik hem de sahip olabilir. Ve ben tavsiye Kendi bu test. Eğer yaparak iyi sadece öğreneceksiniz CSS şey, çok basit bir web sayfası, Bazı CSS hazırlanması, ve sadece Onlar nasıl etkileşimde görüyorum. Ve sen, çok iyi bir elde edersiniz nasıl çalıştığını sezgisel anlamda. [00:43:56] Tamam, CSS ile iyi herkes? Tüm yapmak için gidiyoruz Şimdi CSS ile güzel web siteleri. Tamam, en iyi uygulamalar, sadece Akılda tutulması gereken şeyler, işler Biz rıhtım neden bu ki- olduğunu Eğer tasarımcı ve etajer için. Böylece tüm HTML etiketlerini kapatın. Eğer açık bir vücudu var ise, yakın bir gövde olmalıdır. Eğer açık bir paragraf varsa, yakın bir paragraf olmalıdır. Senin sayfa doğrular görmek için kontrol edin. Siz çok tanıdık olmalı Bu p-set yedi CS 50 finans W3 validator ile. Ve ben, daha önce de söylediğim gibi bizim büyük paradigmaların biri CSS ile stil ayıran HTML biçimlendirme, gelen. Ve sonra, tabii ki, biz buraya bu büyük XKCD. Yay, komik rahatlama! [00:44:38] Tamam, TCP / IP. Bu ve HTTP arasında, temelde ikisi de protokolleri konum. Yani sadece düşünebildiğim Bunlardan kurallar kümesi olarak nasıl şeyler yöneten o internet üzerinden hareket. Yani iletim kontrol protokol, ya da internet protokolü, emin olmak için sadece bir yoludur gidiyor nerede veri alır ve biz eğer biliyorum biz hiç eksik verileri ediyoruz. Yani siz eğer derse geri düşünmek David ile önce bir kaç hafta nerede onlar, dört zarf vardı Tüm dört biri gibi sayılı olduğunu, Dört iki dört, üç, dört Dört, bu kurallar sadece bir dizi olduğunu. Biz tamam, biz ne zaman konum, dedi Birden fazla paket gönderme, Biz numaraya gidiyoruz ne sayı ile o ve toplam kaç ki Kullanıcı almalısınız. [00:45:19] Ve bu sadece anlatıyor kim veri onlar mı alıyor eğer her şeyi ya da aldık bir şey yolda kayboldu. Ve yine bunun için sormak gerekir. Bu gerçekten kurallar sadece bir dizi olduğunu. Yani tamam, bunu düşünmek nasıl mı? Ve ayrıca, bu bağlantı noktasını belirtir hangi Siz, ben ders sırasında biliyorum can-- onlar limanların bütün bir liste vardı. Ama şimdi burada onları yok. [00:45:41] Yani köprü aktarım protokolü Yine, başka bir protokol vardır. Yani kurallar başka bir set var bu durumda, idare, köprü nasıl aktarılır. Yani sadece tarayıcıları veriyor web sunucularına konuşmak. Biz burada söylediğimiz gibi Ve, bu kadar İnsan el sıkışma gibi. Bu idare sadece bir yolu var nasıl web sunucusu Tarayıcınızın etkileşim olacak. Ve biz örneklerden sadece bir çift var. Biz burada bazı istekleri var nerede GET yöntemidir. Biz hangi, HTTP 1.1 var Bizim için protokol sürümü. Ve sonra, ev sahibi, ne olduğu biz aslında erişmeye çalışıyoruz. Ve sonra, burada gördüğünüz gibi, biz Bu 200 ile bazı yanıt almak Bizim HTTP yanıt kodu olarak Tamam. Biz gidiyorum büyük bir listesi var Bir saniye kadar çekin Siz aşina olması gerektiğini söyledi. Ve biz, bu içerik türü metin / HTML var hangi sadece verilerin ne tür diyor tamam, sunucudan alıyorsunuz? Bu konak ve bu içerik türü HTTP başlıkları parçasıdır. Sen olduğunca az veya az olabilir bağlamında için ne gerekiyorsa Eğer uğraşıyoruz. Bazen bir sürü olacak sunucudan gelen bilgiler. Belki onlar çok talebinde konum kullanıcı bilgileri. Bu bağlamda bağlı olarak değişir. Eğer CS 50 Çalışma bakarsanız, bu konuda çok daha fazla var. Ama biz almak için bir çok şey var bu yüzden gidiyorum, içinden Sağ önde gitmek için Bu sizinle Tamam? Serin. Tut. Ben kesinlikle bu var ha of-- tüm liste! Bu yüzden bilmiyorum buraya tüm yol. Ben tam anlamıyla taşındı düşündüm Ben sitting-- o iken [00:47:15] DAVIN: bunu öğretmek istiyor musunuz? Yoksa bana öğretmek istiyorsun? [00:47:17] İZLEYİCİ: Ben sandım Sadece başlamak için onlara göstermek. Ben içine gidebilirsiniz demek ayrıca bunların, ancak o I beri daha mantıklı düşünce sadece HTTP durumları hakkında konuşuyordu. Yani burada bütün liste. Ben ne olduğunu neler tahmin Davin sonra onlara gidecek. Ama bütün liste, var tat önizleme gelmek. Tamam, biz bu oluyor blow-- için gidiyoruz gibi başka bir PHP kurs olmak. [00:47:41] Peki PHP, hypertext preprocessor, Bir özyinelemeli backronym var, hangi başka bir şey seçildi demektir. Ve sonra, bu gibi idi Gerçekten mantıklı değil. Yani onlar sadece bu-- adlı ve bir kısaltmadır oldu, bu yüzden sadece PHP yapılan hypertext preprocessor, hangi sadece hayır mantıklı. Eğlenceli hikaye. Bir programlama dili var. Bunu vurgulamak Yani kadar HTML bir programlama dili değildir, Bir biçimlendirme dili, PHP bulunuyor Bir programlama dilidir. Eğer bu olduğunu biliyorum nasıl mantık var çünkü. Koşul vardır. Biz, değişkenler var biz ise HTML bu şeylerin hiçbiri. [00:48:12] Pekala, o zaman bu küçük var Biraz burada o PHP bir tat gibi. Yani temelleri, değişken isimleri dolar işareti ile başlar. Bunun gibi bir sürü insan. Bize para hatırlatıyor. Tüm harika. Hepimiz PHP istiyoruz. Yani biz bir belirtmeyen Artık değişkenin türü. Bu çalışma sırasında belirlenir. tercüman, gibi olacak Ah, biz sadece, koşuyoruz edeceğiz ve içeriğine göre, Biz türleri ne türlerini görürsünüz Bu değişkenler olması gerekir. Hiçbir ana işlevi yok. Şeyler sadece çalışacaktır. Sizin ithalat ile Siz sizin p-set son Bunu fark edeceksiniz. Bir ana işlevi gerçekten yoktu. Sadece yazdıklarını Eğer ne istediğini. Ve bu sadece tür oldu. Yani senin için PHP bulunuyor. [00:48:56] Diziler çok benzer. Biz hala bu dirseği var. Burada, bazı değişken var arr denir, ve eşit bulunuyor amaçlara yönelik bizim normaldir var dirsek gösterimde. Ve biz bazı önemli değere sahiptir. Ve büyük fark C ve PHP dizileri arasında Bu associate-- sahip olmasıdır Biz anahtarları değerleri ilişkilendirebilirsiniz. Yani yerine sadece sahip endeksli bir dizi numara veya pozisyona göre dizisi bu elemanın, biz aslında bir anahtar ile ilişkilendirebilirsiniz. Diyebiliriz durumlarda, tamam, ben istediğimi değer meyve ile ilişkilidir. Ve belki de meyve muz gitti var. Bu yüzden bize muz dönecekti. [00:49:41] Ama temelde, en Bu konuda güçlü bir şey olduğunu siz hatırlarsanız nerede temelde ders den demo rewrote PHP yazım ve Ben-- arama sadece gerçekten seviyorum, Bu anahtar mevcut mu? Yani bunun güç gerçekten naziksiniz. Sen yineleme gerek yok senin dizi üzerinden. Biliyorsunuz gerek yok ne uzay İçinde. Sonunda ya başında olabilir. Sürece anahtarı bildiğiniz gibi Bu değer ile ilişkili olan, PHP sadece değer tükürmek olabilir Sağ Tamam, sana vazgeçme? [00:50:09] Ve sonra, biz de sadece var sadece çünkü biz Anahtar değer çiftleri olabilir Eğer zorunda anlamına gelmez. Ayrıca sadece oluşturabilirsiniz Normal bir dizi gibi burada, bu kadar dipte Sadece bir, iki, üç, dört. Bunlar bizim değerlerimizdir. Ve aslında, kendi tuşları endeksleri vardır. Yani biri için anahtar sıfır olacaktır. iki anahtar biri olacaktır. Yani ve benzeri, sürece açıkça bir tuşa atamak, Eğer farz olabilir değeri sadece kendi endeksidir. Bu herkese mantıklı mı? Hiçbir soru? Korku. [00:50:38] Tamam, foreach için bir yoldur senin diziler yineleme. Bu yüzden, burada bir şey var Sadece genel yapısı. Yani foreach, isim Bizim dizi, ne olursa olsun gibi Her aramak istiyorum sizin dizideki eleman, ve biz bir şeyler yapabiliriz Bu eleman veya değeri ile. Yani biz burada bir örnek var. Biz ilişkilendirilebilir var Bu iki girişleri ile dizi çubuğuna sahip olan foo ile bağlantılıdır ve Baz ile bağlantılıdır qux. Yani tuşları foo ve baz vardır. Değerler bar ve qux vardır. Yani foreach, bizim dizi var Burada, anahtar değer çifti olarak. Bu erişim bize izin verir anahtar ve değer hem de. Belki sadece istediğiniz değeri, bu durumda, Sadece arr gibi yapabilirdi Daha sonra $ değer, ve gibi sadece değer erişen Eğer yineleme gibi. Ama belki, bazı nedeni, anahtarı istiyorum, Ben seçtim hangi Bunun yerine, bu örnek,. Yani aslında işleyebilirsiniz Bu durumda anahtar ve değer. TAMAM MI? Soru? [00:51:41] İZLEYİCİ: Eğer isteseydik Sadece, anahtarı olur işlemek Yapmanız gereken foreach-- [00:51:45] ALISON: Sağ. Yani eğer istedim Sadece anahtar manipüle, Hala bu gerekir sözdizimi sadece sizin çünkü eğer bir şey olarak arr var, bir şey olarak, bu kadar gidiş istediğiniz varsaymak değer, değil tuşuna basın. Yani hiç adil gibi varsa belki bu $ elemanı gibi gibi arr, Eğer soruyorsun varsaymak gidiyor Her noktada sadece değer. Açıkça istiyorsanız tuşu ile bir şeyler yapmak, sen gitmiyorsun bile değeri ile bir şey yapmak, Bu yapıyı ihtiyacınız Burada var nerede açıkça soruyorsun anahtar ve değer hem de. Büyük soru. Başka herhangi bir şey? Serin. [00:52:27] Pekala, PHP ve HTML. Ah, biz geri döndük p-set yine yedi. Yani bu biraz tanıdık görünmelidir. Yani bu basit bir HTML formu Bu merhaba bazı giriş adı vardır. Ve biz GET bizim yöntemi var bakın. Ve bizim p-kümesinden hatırlıyorum eğer, Bu form gönderildiğinde, sahip olduğu $ _GET adında bir dizi gönderir Bu girişlerden veya değişkenler tüm olmalıdır bir şekilde Bizim PHP manipüle. Bu durumda, kullanıcı o kendi adını koymak istiyorum. Onlar teslim. Ve biz burada bazı dizi olsun görüyoruz. Bizim GET dizi var. Ve biz adını erişen. [00:53:11] Tamam, diyor ki, bana ver adı ile ilişkilendirilmiş değeri, Burada anahtar olan isim. Ve bu doğrudan harita ne bizim giriş ismi olduğunu söyledi. Yani bu sana anahtarı vererek ne Burada dizide olacak. Bu herkese mantıklı mı? Evet? [00:53:32] İZLEYİCİ: adı olarak bakın GET mu [duyulamaz] mor çizgisine? [00:53:36] Alison: burada, bu ifade eder. Yani burada bu alan, Burada bu isim anlamına gelir. Yani bu ad verilmiş olabilir telefon numarası, ya da her neyse gibi. Bu isim aslında, ne diyor Bu alanı diyorsun? Nasıl gidiyor Bu alana bakın? Ve bu isim bizim konum, gibi aslında bir Bu alanı söyleyerek isim denir. İşte biz bunu erişmek için gidiyoruz nasıl. [00:53:59] İZLEYİCİ: Yani nasıldır, Giriş adı Bob eşittir, ve- [00:54:02] ALISON: Sağ, sonra Orada Bob olsun istiyorum. Kesinlikle. Herkes serin? Pekala, bu yüzden, POST karşı GET Bu iki ana yolu vardır biz bir HTTP isteği veri aktarmak. Siz görmeliydin Bu umarım iki. GET ile bilgi Yani URL geçirilir. Yani hiç Google'a yaparsanız aramalar, YouTube, sen olacak muhtemelen bazı soru işareti fark. Ve sonra, bütün kelimeler Bu sadece orada koymak. Ve POST verilerini geçer HTTP ileti gövdesinde. Yani GET aksine, ne tür düşünün Veri kullanıcıdan gizli olduğunu. Ama gerçekten var anlamak önemlidir bu hala olmasıdır GET kadar güvensiz. Ben kullanmak istiyorum benzetme eğer olduğunu Eğer banka hesap numarası ve dışında yazmak Bir zarf, bu oldukça güvensiz olduğunu. Eğer olsaydı bir parça yazmak için Kağıt ve zarf içine koymak, hala, çünkü gerçekten güvensiz var yapmanız gereken tüm açmak olduğunu ve gerçek içeriği bakmak mesajın görmek için. Yani bu "gizli" olduğunu ve insanlar gibi o güvenli olduğunu düşünüyorum, ama gerçekten değil. Ve eminim Davin olacak Belki, o daha içine almak. Ama bir önemli ayrım yapmak ve gerçekten çok iyi bir şey anlamak için. [00:55:15] Tamam, SQL, Structured Query Language. Tüm şeyler olduğunu biz çok yakın zamanda gördüm! Yani temelde sadece tasarlanmıştır, Açıkçası, verileri yönetmek için. Siz deneyim bir sürü vardı PHP myadmin ile tabloları bu. Ve dört ortak sorguları vardır İstediğimiz ki siz bilmek. Yani güncelleme, ekleme var, seçin ve silin. Yani gerçekten de bu bildiğinizden emin olun. Biz gidiyoruz gerçekten hızlı içlerinden. [00:55:40] Peki gibi, gerçekten, güncelleme ne Eğer öyle düşünebilir o sadece veritabanındaki verileri günceller. Yani biz burada bazı örnek var. Bu genel bir Bir güncelleştirme sorgusu yapısı. Bu yüzden tablosunu güncelleştirmek biz bahsediyoruz. Ve biz belli ayarlamak istediğiniz değerleri, belirli bir sütun Belirli değerlere eşit. Yani bu sadece değişen tablo günceller Bu durumda tüm satırlar değerler. Bu bir Yani buraya, bir gerçek örneğinde, insert-- içerir. O slayt ileri bensiz farkında. [00:56:17] Peki bu güncellemeler tablosu eşit col1 set Evin eşittir VAL1 için "Sepici." Ne bu yapmasıdır Bu sadece tek değişikliği Belirli yerlerde bu değerleri günceller. Yani bu ilk biri, bu değişiklikleri senin masada her şey için değerler, TAMAM MI? Bu değiştirmek için gidiyor her giriş için sütun, her satır için. Bu Ama nerede, sen-ebil Bir eleme olarak düşünüyorum. Yani sadece değiştirmek için gidiyor çok özel yerlerde o. Yani p-set, sizi yedi belki nakit miktarını güncellenmiş kullanıcı olduğunu, muhtemelen vardı Bazı Kimlik doğru, oturum kimliği eşittir? [00:56:53] Eğer istemedim çünkü nakit miktarını değiştirmek Her kişi için kim Web sitenizi kullanıyordum. Sen biri için bunu değiştirmek istedim Belirli bir kişi, o kişi olmak kim o anda kullanıyordu. Doğru? Tamam, bu yüzden, insert eklemek tablolar halinde bazı değerleri. Bu olduğunuzda gibi yepyeni bir kullanıcı oluşturma. Burada genel yapısı ne olursa olsun tabloya eklemek edilir Bahsettiğimiz. Değerler, varlık değerleri bu biz aslında eklemek istiyorum. Tamam, biz burada gördüğünüz gibi yani, biz tabloya eklemek var. Bu belirli sütunlar olduğunu bunların karşılık değerleri. Yani bu, ekleme diyor içeren yeni bir satır değerler val1 ve val2 altında Bu özel sütunlar. [00:57:33] Yani belki sadece doldurmak istiyor Bu satırda yarım şeyleri dışarı. Yani bu kısmı burada yapmanız sağlar ne. Aslında size sağlar hangi bölüm belirler. Evet? [00:57:44] İZLEYİCİ: Can yalnızca [duyulamaz] satır [duyulamaz] hücreler? [00:57:52] ALISON: Sadece doldurmanız halinde senin satır belirli bölümleri, bu hücrelerin geri kalanı sadece boş. Sürece onları izin gibi boş, bu bir sorun değil. Bunları erişmeye çalışırsanız, bu kadar Bazı boş eleman dönmek için gidiyoruz. Ama bilmek önemlidir Bazı tablolarda olduğu, Onlar boş izin edilmesi gerekir. Bir çalıştırmak olabilir senin p-kümesi sırasında sorun biz herhangi izin vermedi çünkü senin değerleri null. Ama bir belirtebilirsiniz senin tabloda isteğe bağlı değer. [00:58:26] Tamam, seçeneğini, bu nedenle bu almanın bir yolu Bir tablodan belirli bir veri de İstediğiniz bazı tanımlayıcı. Tablodan nerede Yani seçin yıldız col, bir şey sadece anlamına eşittir Bana ilişkili tüm verileri vermek nerede bu özel sütun doğrudur. Yani bu durumda yıldızı olacak Tamam, size tüm satır dönmek? [00:58:49] Sonra, bu durumda, yıldızı seçmek tablo sadece size tüm tabloyu verir. Ve sonra, tabii ki sadece silme tablo satır siler. Yani tablodan silmek, ne olursa olsun tablo biz konum nerede bazı özel, referans tanımlayıcı ya da bazı koşul doğrudur. Evet? [00:59:07] İZLEYİCİ: Soru. Neden çift kullanıyorsanız tırnak, ve sizin olsun çift ​​tırnak veya tek yapmak tırnak, bir fark yapar? [00:59:13] Alison: Çift tırnak veya tek tırnak SQL bir fark yapmaz. Ben başka bir soru gördüm. Evet? [00:59:20] İZLEYİCİ: bu ne etkilemez sorgudan kaçtı alır? [00:59:25] Alison: Rob? [00:59:27] ROB: Eğer ne demek istiyorsunuz sorgudan kaçtı? [00:59:31] İZLEYİCİ: Birisi varsa bir şeklinde tek sorgu of-- [00:59:36] ROB: Birisi olsaydı Bir tek tırnak koymak, daha sonra sürece sterilize konum olarak senin girdi, o zaman önemli değil. Ama bir tek kullanıyorsanız Gönder ve yanlış vardır senin girişleri kaçan, o zaman evet, ihtiyaç duydukları kırmak için bir tek tırnak koymak senin kodu. çift ​​tırnak kullanırsanız, Onlar bir çift koymak gerekir kodunuzu kırmaya alıntı. Ama sürece şeyler kaçmak gibi Doğru, bu önemli değil. Sadece tercüme edilmesi için gidiyor Zaten doğru sembol. [00:59:59] İZLEYİCİ: kaçış ne anlama geliyor? ALISON: Peki, gibi sterilize eden ve kaçış. Elimizdeki sınav, büyük XKCD komik var nerede yukarı çekin ki, Oh-- ROB: Bu son slayt var. ALISON: Gerçekten, son slayt değil mi? Aman Tanrım. Orada mükemmel, gidin. Tamam, bu nedenle temelde, enjekte edebilir Bu SQL sorgusu içine bir şey nerede, sizin tatili kodu veya David gösterdi sınıfta, biz bazı tek varsa Gönder 1 1 eşittir ve bizim kod eğer, biz sadece doğrudan o kopyalayın ve biz biten tek alıntı, ne olur biz olsun Bazı sentezleme bu true değerlendirir olacak Birisi bizim veritabanı girmesine izin ve veri almak ki Onları almak istemiyorum. Yani girişleri sterilize Sadece emin demektir bu kaçan bu karakterleri ve onları tayin karakter değil şeyler gibi Bu izin verilmelidir kelimenin tam anlamıyla alınacak Bizim SQL deyimi olarak. [01:01:04] Yani büyük bir şey dedik ki Siz kullanarak olmalıdır HTML özel karakter vardı Hangi şey Eğer bakmak isteyebilirsiniz. Tamam, silin. Veri türleri, bu online olacak. Biz 15 dakika kaldı beri, ben değilim sadece sağ Bu yoluyla gidecek. PHP ve SQL, temelde bu Sadece bir sorgu işlevi vardı karşı korunmasına yardım Bu kötü niyetli saldırılar. Peki ne zaman kullanmak Sorgu, biz emin edildi Bu işler dezenfekte ve etajer edildi. [01:01:36] MVC, sadece bir tasarım paradigma böylece modeli, görünüm, denetleyici. Bu şeyler tutmak için sadece bir yol var güzel ve aynı şekilde bölmek Biz faktör eğiliminde olduğunu fonksiyonları içine kodu. Bu sadece bir web tasarım çerçevesi Bu aynı şeyi yapmak için izin verir. Ben bu atlamak için gidiyorum. [01:01:54] Bu şey olduğunu ben ile süper rahat olurdu. Orada bir büyük küçük masa var. Size fonksiyonunu verir Modelin bir örnek. Ben sadece bu aracılığıyla çünkü ben gidiyorum Gerçekten Davin konuşabilmek istiyorum. Herhangi bir sorunuz varsa, çekinmeyin. Ben sonra burada olacağım. Sadece benimle konuş gel. Bunun üzerine, biz HTTP durumları var. Ve Davin en darbe olacak 15 dakika içinde bu aracılığıyla. Bu büyük olacak. [01:02:17] DAVIN: Tamam. Ah, senin mikrofon? Evet. Özür dilerim. ALISON: Way hazırlanacak. DAVIN: Hayır, ben hazırım. Ben hazırım. Şimdi bu yapalım. Bu hazır. TAMAM MI. Özür dilerim. Ben kendime kahve döküldü. Ben daha çok yaşıyorum bilmiyorum Ben aptal bakmak üzgün, ya da ben artık kahve yok. Neyse, sadece hızlı bir duyuru levha hakkında siz var. Böylece siz sahip bu levha değil quiz ne resmi. Bu sınavda ne resmi olduğunu. Ayrıca, web sitesinde, biz söylemek Eğer, tamam, bu sınav olacak. Küçük hile sayfasında Yani Eğer resmi değil, var. Ve bunun üzerine hatalar vardır. Bu yüzden en iyi sadece körü körüne kullanmak için değil. Yani evet, bu işte. Yani bu gerçekten hızlı girmesine izin. [01:03:05] Peki, HTTP durumları. Peki ne olur Web sitesi, her şey doğru. Her şey Tamam. Her şey geri geliyor Eğer bunu yolu istiyorum. Sen 200 OK olsun. 301, nerede 301 önce gördük? Ne var, Bekle? Özür dilerim. Biz güvenlik sırasında ben kalay ders gördüm. Eğer öyleyse Yani güvenlik sırasında, David yazdığınız http ve daha sonra, cs50.net gitmek için çalıştı Eğer 301 taşındı görmek için gidiyoruz. Neden? O yönlendirmek için gidiyor çünkü Bizim HTTPS için otomatik olarak. [01:03:35] Yani 301 sadece var, taşındı temelde bir yönlendirme. Ve böyle düşünmek olabilir. 2 yıllardan ile başlayan durumların herhangi birisi, Bu her şey OK, OK, gibi. Başlangıç ​​durumları Herhangi 3 ile, bu yönlendirme vardır. 4 ile başlayan statüler, araç olduğunu istemci hata çeşit var. 5 ile başlayan statüler, Bu sunucu hatası çeşit. Yani bir tür kırmak Böyle durumları. Yani 304 böylece, modifiye değil senin server.c p-setleri, o yüzden seni diyelim Yüklenen cat.html. Her şey, geri geliyor Eğer 200'ler, tamam, büyük olsun. [01:04:03] En bunu yenilenir diyelim. Peki, bu iç cat.html, bir JPEG var. Peki, bu JPEG değil gidiş yeniden almak için. Başka göndermek için gitmiyoruz Sunucuya GET istemi, ve sonra geri tüm bu bilgi alabilirsiniz. Sadece bu görüntü şey olmak gidiyor gidiyor makinenizde önbelleğe alınacak. Ve böylece görüntü 304 olacaktır. Yani modifiye edilmiş değil. Eğer dışarı kapatırsanız, net çerezleri ve sonra yenileyin ve o sayfayı yüklemeyi deneyin yine, 200S görmek için gidiyoruz. Bunu 304 görmek için gitmiyoruz. [01:04:28] 400, kötü istek, gerçek Hızlı, gibi eğer Bir göndermek için gittiğini Sunucuya JSON nesne ve JSON nesnesi, yanlış oldu Eğer böyle bir şey görürsünüz. 403, yasak. Ne zaman bir yasak görürdünüz? Muhtemelen Muhtemelen? HEDEF KİTLE: Chmod. DAVIN: Chmod, evet. Yani set değil doğru izinleri. 404, bulunamadı. Sadece orada değil. Eğer yanlış URL yazarsanız Yani. 500, iç sunucu hatası, sunucu Muhtemelen doğru yapılandırılmamış. Senin ucunda bir şey değil, ama Sunucu tarafında bir şey. Ve 503? Birçok insan gördüm Geçen p-sette 503s. Bu ne zaman olur? Ben fısıltılar duydum. [01:05:05] İZLEYİCİ: Google Eğer bir robot karar verir. DAVIN: Evet, ne zaman Google karar Eğer 503s olsun, bir robot. Yani bir yük var. Sunucudan talep ettiyseniz çok, genellikle geçici. Ve size en çok fark ettim. Yani 503 gördüm. Biraz almış olabilir mola, sonra 503s, gittiler ve her şey yolunda idi. [01:05:20] Gabe: Gerçek hızlı, siz alabilirim Muhtemelen 500 bu son sorunun set? Evet? [01:05:27] İZLEYİCİ: Genellikle eğer Sunucu yanlış bir dosya vardır veya [duyulamaz] onların Makine [duyulamaz]. [01:05:34] Gabe: Yani bir yapılandırma olabilir sunucu üzerinde PHP sorunu. Ama sadece bir şey olabilir senin unuttum bir noktalı virgül gibi. PHP yazarak ediyorsanız, Bazı yanlış sözdizimi Sana böyle bir şey alabilirsiniz. TAMAM MI? [01:05:46] DAVIN: Serin. Bana AJAX kadar sadece kadar yapmak istiyor musunuz? [01:05:51] Gabe: [duyulamaz]. DAVIN: Tamam. Peki DOM ne? DOM ne anlama geliyor? [01:05:55] İZLEYİCİ: Belge nesne modeli. DAVIN: Güzel. Ve neden bunu beğendin mi? Korku. Doğru, o yüzden sadece erişim bize izin verir HTML, çok hızlı bir şekilde sayfamızı erişin. Neden? Biz tedavi Çünkü bizim sayfa, bizim HTML etiketlerini tedavi, tedavi herşey sanki nesneler konum. Onlar gibisin, biz onları tedavi ediyorsanız nesneler, o zaman biz ne yapabiliriz? Peki, biz onlara işlevleri çağırabilirsiniz. Ve bu yüzden önemlidir? Peki, biz kullanmak için gidiyoruz çünkü JavaScript bizim HTML güncellemek için, Bu nesneleri güncelleştirmek. Biz nesneler gibi davranmasını Yani eğer, biz sonra onlara işlevleri çağırabilirsiniz. Ben bu biraz içine almak için gidiyorum JavaScript gittiğinizde daha, ama hepsi gibi gördüm document.getElementById. Yani belge şey sizin eleman, KODU elemanı olsun böylece bakmak için gidiyoruz HTML etiketi bazı kimliği. Ve sonra, bunu yapabilirsiniz Bu başka bir şey. Örneğin, document.body gibi, sonra çocuğu ekleyebilirsiniz. Yani belgeyi bulmak için gidiyoruz. Belgeyi var. Sen cesedini bulmak için gidiyoruz. Cesedi bulundu. Ve sonra, sen gidiyorsun Bunun üzerine bazı işlevini çağırın. Yani çocuğu eklemek ve ekleyebilirsiniz vücudunuzdaki ucuna bazı HTML. Yani temelde, sadece konum bir nesne gibi muamele. HTML tedavi ediyoruz Bir nesne gibi etiketleri. Ve o çok kolay ve hızlı onları geçmek. Ama aynı zamanda size izin verir onlara işlevleri çağırmak için böylece işleyebilirsiniz ve elemanları değiştirin. [01:07:04] Gabe: Bu göz önüne alındığında, neden böyle JavaScript Güzel bir dil HTML ile etkileşim? İnsanlar seçerken zaman Oran, vardır tarayıcı için dil, istemci tarafında için, JavaScript, gerçekten güzel o nesneleri ele gerçekten iyi. Ve nesneler tür gibi vardır HTML görünen nesneler, bu yüzden JavaScript için çok kolay kullanım bu tür yapmak. DAVIN: Güzel. Yani burada sadece bir örnek. Yani, geçen yılki sınavda düşünüyorum ya da belki iki yıl önce, biz Bir ağacı oluşturmak istedi. Yani bu ne yapacağını tam olarak budur. Yani belge ile başlar. Ve sonra temelde Sadece etiketleri bak. Eğer, biz bakarsanız Yani HTML etiketi ile başlar. Ve sonra, nasıl hakkında ipuçları almak girinti dayalı bunu. Şube Yani kafa tür kapalı. Kafa içinde, biz var başlık için başka bir etiket. Öyleyse, biz bir başlık etiketi var. Ve bu iç, bazı dize var. Ve böylece biz temsil Bir daire içinde bir dize. Ve tüm etiketler kareler vardır. [01:07:54] Ve sen bakarsanız, biz eğer Bir ağaç gibi bu düşünüyorum, ve en HTML olduğunu varsayalım Bir ebeveyn, daha sonra baş ve vücut kardeşler olacak. Her ikisi de olacaksın Bu ebeveyn çocukları. Onlar çünkü Yani Her iki kardeş, onlar tür yanında olacak Bizim ağaç modeli birbirlerine. Ve sonra, temelde aynı şeyi yapmak. Yani zor, ama biz istediler quiz önce böyle sorular. Gabe: Kimseyi mu Şimdiye kadar sorularım var? Iyi mi? DAVIN: Serin. JavaScript, tamam, iyi şeyler. Yani JavaScript JavaScript nedir? Peki, JavaScript bulunuyor bu-- karmaşık, ancak bu bazı olayları Bu akılda tutmak gerekir. Birincisi, o gevşek yazdığınız oluyor. Bu ne anlama geliyor? Peki PHP ne var, evet Ben--? [01:08:35] İZLEYİCİ: Açıkça zorunda değilsiniz o değişkenin ne tür devlet. DAVIN: Mükemmel. Bu yüzden bunu yapmak zorunda değilsiniz dedi açıkça değişkenin tipini. Bu tam olarak doğru. Ben int olsaydı Yani C, ben 50 eşittir, sonra PHP, sadece bu gibi, $ i, 50 eşittir. Sonra JavaScript, Çağrı ne olurdu? Var değil mi? Var i 50 eşit gibi olurdu. Ama olmak zorunda değilsiniz gibi, tamam, bu bir int. Tamam, bu bir dizedir. Gerek yok bunu yapmak için. Bu bir dil var. Peki bu ne anlama geliyor? [01:09:04] İZLEYİCİ: derlenmiş değil. [01:09:06] DAVIN: anlamı nedir derlenmiş değil? Evet? [01:09:11] İZLEYİCİ: Sen yok kodu yeniden yapılandırılması için hazır olsun Bilgisayar çalıştırmak için. Sadece zamanında almış yürütme ve bilgisayar [duyulamaz]. DAVIN: Evet, bu yüzden gidiyor Bir tercüman geçer. Ama haklısın. Yani asla gidiyoruz Doğru, derlemek için? Ne zaman yaptıklarını senin PHP ve JavaScript kodu, Eğer derleme denir asla. Sen gibi bir şey hiç aramadın yapmak veya böyle bir şey. O yorumlanır çünkü budur. Yani tarayıcısı üzerinden gider her zaman, bir tercüman geçer. Ve bu yorumlamak için gidiyor Sadece hemen sizin için gerçek zamanlı olarak. Yani bazı pozitif ve negatif nelerdir yorumlanmış bir dil olması için ve derlenmiş bir dil olan? Peki ne oldu, evet compiling--? [01:09:50] İZLEYİCİ: yorumlanır yavaştır. DAVIN: hangi anlamda? [01:09:57] İZLEYİCİ: Senden sonra derlemek, sen yok çalıştırmak için herhangi bir ekstra adımlar yapmak o, bu [inaudible] ise. [01:10:04] DAVIN: Sağ, mükemmel. Yani sen ne dedi temelde bu derleme, Eğer derleme yaparken, bir var ayarlıyoruz maliyetleri çok, değil mi? Bunu derlemek için gidiyoruz. Ama bunu derlemek sonra, derleyici optimize edecek. Bu hızlı olacak. Bu temelde gidiyor o olabilir gibi hızlı olmak. Seni asla yorumlama ile O ayarlıyoruz maliyeti var. Aksine, biraz daha yavaş olacak Bunu yorumlamak her zaman. Ve sen sahip gidiyoruz o her zaman yorumlamak. Yani bu sahip yerine bir kez maliyeti, şimdi sen yorumlamak zorunda olacak Her zaman sayfası vermektedir. [01:10:29] Peki tercümanlar çünkü iyi bunu derlemek zorunda değilsiniz, ama onlar her kötü konum bu, sayfa yükler zaman zorunda olacak Bu JavaScript yorumlamak. Ve biraz daha yavaş çalışmasına gidiyor bunu derlemek için olsaydı daha. Eğer, oh communicate-- beklemek verir. Işlemek için kullanılır içerik ve görünüş. Biz sadece bu konuda konuştuk. Bu DOM kullanır. AJAX, biz içine alırsınız Biraz AJAX. Ve sonra, istemci tarafı. Yani PHP sunucu tarafı. JavaScript istemci tarafı. Bu olumlu nelerdir? Onu diyor. Bu doğru, daha hızlı? Daha hızlı olduğunu amaçlara yönelik zorunda değilsiniz çünkü. Sen iletişim zorunda değilsiniz Bazı diğer cihazla. Sadece üzerinde iseniz sizin İstemci, asla değilsin gitmek zorunda olacak ve sunucuda ne olduğunu görmek ve daha sonra rapor ya böyle bir şey. Yani istemci tarafında eğilimi biraz daha hızlı. [01:11:15] Gabe: Evet, ama bu PHP anlamına gelmez JavaScript daha hızlı veya benzeri bir şey. Aynı içinde tür koşmak Hız ikisi de çünkü yorumlanmış diller. yavaş şey Burada talebidir. Yani aslında gidiyoruz Brezilya üzerinden tüm yol bazı bilgiler almak için orada yaşıyor. Ama PHP ve JavaScript, onlar tür aynı hızda çalışır. Bu değil biridir bulunuyor diğerinden daha hızlı. Burada bu, aynı zamanda, hile soru. Yani JavaScript olur asla doğru ya da yanlış makine kodu,? [01:11:47] İZLEYİCİ: Yanlış. Gabe: Yanlış. Bu makine haline vardır kod makine kodu çünkü Tek şey makinesi anlar. Derlenmiş değil olsa bile, hala makine kodu olur tercüman sadece çünkü satır satır gider bir program ve içine satır dönüşümleri şey bilgisayar anlar. TAMAM MI? Serin. [01:12:08] DAVIN: Burada sadece çok temel Dünya JavaScript programı merhaba. Eğer bu gördüm ve-- Yani bilmiyorum. Ama sadece burada HTML var. Ve yerine aslında koyarak Script etiketleri JavaScript, böylece normalde kafasına koymak istiyorum. Sen komut dosyası etiketleri var. Orada bırakın. Burada yaptık hepimiz in-- bağladıysanız olduğu bu yüzden bir JavaScript dosyası bağlantılı ettik böyle. Ve tüm bu, doğru yaptık? Peki ne zaman jQuery ve kullandığınız Geçen p-set underscore.js, Eğer kod up ton yok script etiketleri, kafanın içinde. Bunu yapmak, ancak bunun yerine olabilir sadece bunu bağlıyoruz. Ve sen bunu bağlıyoruz Sadece CSS ile yapmak gibi. Sadece yapar bu yüzden daha kolay bu yüzden okumak 1.000 hatları uzun gibi değildir kodunuzu fonksiyonların ton olduğu Kullandığınız olabilir. [01:12:52] Bunun yerine, sadece onu bağlamak. Onu compartmentalizes. Bazı başlık dosyası yazma gibi, ve Daha sonra C bu başlık dosyasını dahil Sadece bu gibi düşün. Peki bu ne işe yarıyor? Peki, bu çalıştırmak için gidiyor. Bu uyarmak için gidiyor. Yani biraz almak için gidiyoruz denilen merhaba dünya açılır. Hızlı bir soru, sadece aklı kontrol, böylece, vücutta burada görmek Burada beden, HTML söylüyorlar. Ne önce gelir? Ben burada vücut, HTML görüyor musunuz, ya da ben ilk uyarı görüyorum? [01:13:19] İZLEYİCİ: Uyarı. [01:13:20] DAVIN: Sağ. O uyarı diyor. Neden? [01:13:22] İZLEYİCİ: Çünkü sen yukarıdan aşağıya gidin. [01:13:24] DAVIN: Evet. Mükemmel. Bu yüzden size üst gitmek, diyor kesinlikle doğru alt. Sen yukarıdan aşağıya doğru gidiyoruz. Ve JavaScript, jQuery, bir var gibi Onload, ya da hazır fonksiyonu, ve bu Tamam, bekleyin, diyor Bu HTML tüm yüklendikten. Ve sonra, JavaScript arayın. Burada, bu yok çünkü ne olacak ilk şey bu yukarıdan aşağıya doğru gidecek olan. O JS vurmak için gidiyor çağrı, bu uyarmak için gidiyor. Bundan sonra Tamam 'ı tıklatın, Bu uyarı uzağa gider. Sonra göstermek için gidiyor Burada vücut HTML. Güzel. [01:13:54] Tamam, bu yüzden sadece gerçek hızlı yazma JavaScript süper hızlı. Ilan için değişken, var adı. Yani C, sen var, int i var o tip ne tür ilan. PHP, $. JavaScript, var. Biz bu konuda konuştuk. Pekala, gidelim. [01:14:11] Döngüler, aynı şey. Aynı şey. Fonksiyon bildirimleri, böylece sadece C gördüm gibi Farklı olan tek şey, bu nedenle zaman olduğu Eğer diğer programlama dilleri olsun, gibi 51 sonraki dönem alırken ve sen ocaml ile yapıyoruz Eğer anonim fonksiyonları ile başa çıkabilirim. Yani burada ne var tam olarak. Yani toplam koymak istiyorum, toplam değeri çeşit. Ama sadece bunu bir kez yapıyor olabilir. Eğer işlev aramak istemiyorum Yani toplamı, bunu bir işlev bildirimi vermek. Bunun yerine, sadece bunu kullanmak bir anonim işlev olarak. Ve bu çok gördüm. Sen bir örnek göreceksiniz Bir kaç slaytlar bu. Evet, biz göreceğiz. Gabe: İyi bir soru. Eğer kullanmak isteyebilirsiniz zaman Burada bir anonim işlev? Temelde, ne zaman bir şey istiyorum, bir olay gibi, gerçekleşmesi. Yani fare olduğunda tıklandığında, örneğin, Eğer bazı fonksiyon çağrılacak istiyorum. Yani olaya geçmek işleyici, sen, olaya geçmek tür, fonksiyon bu Eğer çağrılacak istiyorum. Ve ne geçirerek sonunda gibidir Günün sadece bir işaretçi için fonksiyonu bu talimat,. Yani bunu geçiyoruz gibi değil tüm kod, sadece işleve bir işaretçi. Ve sonra, ne zaman birileri tıkladığında fare, o işlev çağrılır. [01:15:17] DAVIN: Diziler, size böylece Bir dizi beyanı var. Ardından, bir dizi şeyler koymak için. Gerçek hızlı, bu ne çıktı olacak? Üçüncü unsur ne olacak? [01:15:31] İZLEYİCİ: "JS". [01:15:32] DAVIN: Sağ, olurdu "JS." Bekle, geri dönmek. Uzunluğu nedir? [01:15:37] İZLEYİCİ: Üç. DAVIN: Üç, değil mi? Tam olarak ne düşündüğünü. Tamam, şimdi gidin. Diziler, onlara bir şeyler ekleyebilirsiniz. Yani ötesine gidebilir başlangıç ​​sınırları. Sadece bir şey akılda tutmak. PHP, JavaScript, onlar biraz konum şeyler açısından biraz daha bağışlayıcı böyle. Nesneler, çok gibi yapılar C, çok PHP ilişkisel diziler gibi. Tüm bu deneyim yaşadım. Eğer JSON geçiyoruz JSON, Yani ileri ve geri p-set sekiz, Bu nesne var. [01:16:03] Yani evet, örnek, gerçek hızlı bir örnek. Burada bir amacıdır. Eğer bu başvuru yolu Nesne, hızlı, böylece sadece gerçek, Diyelim ki bulmak istedim diyelim üzerinden, tamam, ders nedir? Ve işte nesne adı CS50 olduğunu. Ve sonra ben bir ilişkilendirilebilir olsaydı dizi, ben bunu nasıl yapardın? Ben sağ, bir anahtar kullanarak olacak? Yani dizinin adı var. Ben, dirsek, tırnak, anahtar son tırnak, son aparatı, ve o referans olacak Benim ilişkisel dizi içinde eleman. Nasıl başvurulan yapmak Benim nesne içindeki ders? Herkes biliyor musun? [01:16:39] İZLEYİCİ: [duyulamaz]. [01:16:40] DAVIN: Ne oluyor? HEDEF KİTLE: CS50.course. DAVIN: Sağ, evet. Yani CS50.course. Yani yol şeyleri referans JSON nesnesi içinde bir nokta ile. [01:16:48] İZLEYİCİ: Ayrıca dizi sözdizimini kullanabilirsiniz. [01:16:53] DAVIN: İnce, tamam. [01:16:54] Gabe: Ayrıca CS50 konsolu kullanabilirsiniz, tırnak işaretleri gibi dize. HEDEF KİTLE: Ben PHP aynı olduğunu düşünüyorum. Gabe: Aynı şey. DAVIN: Güzel! Ama bu başka yerlerde göreceğiz. Evet, bu yüzden devam edin. Bu sadece ne dedi. JavaScript jQuery örnek haline Yani. Yani bu benim DOM, değil mi? Gerçek hızlı, ben var bir Baş, merhaba dünya, vücut. Ben bir düğme var. Bu, "beni itmek" diyor o yüzden itmek istiyorum. Ve ben bir şey yapmak istiyorum o tıklandığında. Doğru, sonraki. [01:17:31] Sağ, bu yüzden bu benim JavaScript. Yani jQuery sadece daha kolay yolu JavaScript yazmak için. Bu yüzden, ben göstermek için gidiyorum ne sonraki, jQuery olacak özdeştir. Yani aynı şeyleri yapacağız. Sadece jQuery biraz daha kolay olma eğilimindedir. İnsanlar daha çok seviyorum eğilimindedir. Bu işlevsellik bir yeri vardır. Yani insanlar jQuery kullanmak eğilimindedir. Tüm son p-sette jQuery kullandı. Peki bu ne yapacak? Ne olacak bu yüzden JavaScript-- Bu JavaScript sadece düz olduğunu. Bu ne yapacak? Ne yapacağız? [01:18:03] Yani ilk pencere onload bakın. Doğru? Bu yüzden daha önce görmedim. Yani bu beklemek için gidiyor Tüm pencere yükleri kadar. Bu yüzden beklemek için gidiyor HTML, tüm görüntüleri yük önce bir şey yok. Yani bizim DOM yüklendikten diyelim. Her şey var. Sonra ne olacak ki? Evet? [01:18:19] İZLEYİCİ: Düğme görünür. [01:18:22] DAVIN: düğmesi zaten var. Evet, bu yüzden zaten orada düğme en. Ama bu, söyleyecek Tamam, ben butonuna tıklarsanız, böylece düğme zaten var Orada, HTML etiketi gibi. Bekle, gerçek hızlı geri dönün. Bu etiket hakkınız burada Zaten bir düğme olacak. Bir düğme zaten var. Ama sonra, JavaScript etiketi, burada, Tamam, ben istiyorum, diyor No elemanı almak için, böylece arama düğmesi sadece Tamam, ben istiyorum, diyor o düğmeye bu değişken eşleştirmek için. Yani bu değişken sadece bir olduğunu Bu düğmeye erişmek için kolay bir yol. Bunu tıklarsanız Ve ben, tamam, demek düğmesi, o öğeyi tıklatın eğer öyleyse, ve bu element anlamına gelir düğmesi, bunu tıklarsanız, Sonra ben bir işlevi çağırmak istiyorum. İşte o isimsiz biri hakkında konuşuyorduk fonksiyonları. [01:19:03] Sadece bazı işlevini çağırın. Bu işlev içinde, temelde bir şey biz bir sürü uyarı gördüm. Sen arama düğmesini tıklatın. Bu temelde bir düğme var olacak. Bunu tıklayın. O uyarı olsun. X dışarı. Işte bu. Evet? [01:19:16] İZLEYİCİ: Yani koyarsanız komut HTML'nize [duyulamaz], komut etiketi? [01:19:21] DAVIN: Senaryoyu koyabilirsiniz baş etiket düz Bu onload var çünkü. Bu bir tık olması da bu. Bu yüzden beklemek için gidiyor Eğer bir şey için tıklayınız. Ama onload güvenli olması için sadece olduğunu yapmak HTML içine her şeyin yükler önceden. Evet? Bir şey söylemek ister misin? [01:19:40] Gabe: [duyulamaz]. DAVIN: Evet. [01:19:42] İZLEYİCİ: Yani onload önler Değişken arama butonuna tanımlayan Sadece document.getElementById söyleyerek Arama düğmesi nokta [duyulamaz]. [01:19:49] DAVIN: Kesinlikle, ama sonra dize sadece büyük olur. Kesinlikle, bu yüzden bu sadece etmektir evet, sizin için kolaylaştırır. Evet? [01:19:56] İZLEYİCİ: biz mi window.onload oluşturmak? Ya document.ready? [01:19:58] DAVIN: Evet vardır. Evet, orada kontrol edilir. [01:20:02] Gabe: onları umurumda değil için. [01:20:03] DAVIN: Tamam, ben gidiyorum Zaten söylemek. Yani temelde, sadece genel olarak, yani window.onload tüm senin DOM kadar bekler HTML, yükler. Bu görüntüleri yük kadar bekler. Her şeyi yükler kadar bekler. document.ready, sadece DOM yükler kadar bekler. HTML kez tüm orada, bir kez DOM var, çalışmaya başlar. Tek fark bu. [01:20:23] Gabe: Hızlı aklı burada kontrol edin. Yani bu tür görülebilir kod satırı gibi, değil mi? Bu window.onload Çünkü şeyler bir grup eşittir. JavaScript okuduğunda bu, doğru veya yanlış, fonksiyon idam olur. Yanlış. TAMAM MI? Burada ne olur, sadece geçen ediyoruz bir anonim fonksiyonlar olarak bu işlev window.onload için. Ve sonra ne zaman gidiyor aslında idam almak için? Ne zaman penceresi yükler. Bu bir olay. Yani biz konum jus t şey Doğru, daha önce bahsediyoruz? Yani olay gerçekleştiğinde, fonksiyonu olur. OnClick ile aynı şey. [01:20:59] DAVIN: Tamam, bu yüzden birileri aldı uzakta document.ready. Ama bu tam same-- olacak HEDEF KİTLE: Dolar işareti, bir document.ready olan. Bu bir kısayol var. [01:21:07] DAVIN: Ah, yani? Tamam, bu yüzden bu aracı document.ready, kısayol. Ancak bu window.onload aynıdır O küçük fark dışında Sana bahsettiğim. Ve bu jQuery olduğunu. Yani bu aynı olup Bu JavaScript şey--. Bu, bazı insanlar bunu düşünüyorum sadece-- olduğunu Bir daha hafif olarak, şık versiyonu Bu işlevsellik bir sürü vardır Bu muhtemelen kullanarak olacak. Yani bu aynı şeyi yapar. [01:21:34] Şeyler tür işaret Yani. Başka bir örnek olarak, bu yüzden biz , document.getElementById vardı bu yüzden bu kadar uzun oldu almak için gidiyor dize o ne varsa kimliği ile eleman. İşte tam burada, bu çağrı ile değiştirilir. Yani, dolar işareti görmek o zaman alıntı, hashtag bakın. Hashtag her zaman seçici olduğunu. Tamam, bu bir kimlikle ilgisi yoktur, diyor. Bir sınıf için seçici nedir? [01:21:56] İZLEYİCİ: Dot. [01:21:57] DAVIN: Nokta, doğru. Sadece için gidiyoruz Bir etiketi, ne olduğunu belirleyin? Bu tam olarak, sadece etiketi. Ve siz de, burada bu kullanabilirsiniz. [01:22:05] Gabe: Ve etikete göre, biz gibi demek div, örneğin, ya da baş. [01:22:08] DAVIN: Ya vücut veya p veya böyle bir şey, evet. Yani burada, tamam, diyerek yerine document.getElementById, Bu sadece aynı şeydir. Sadece jQuery, daha kısa olduğunu. Yani basit değil. Öyleyse, artık onclick, sadece tıklayın. jQuery fonksiyonu, bu işlevini çağırın. Uyarı aynı olduğunu. Bu yüzden biraz var küçük, ya da biraz kısa, biraz bit-- insanlar düşünmek dışarı yazmak için biraz daha kolay, kolay biraz anlamak için. Ancak bu jQuery. Bir sürü insan biraz olsun biraz karışık ve endişeli ve onlar Tamam, jQuery, düşünmek JavaScript farklıdır. Ben bu hatırlamak zorunda İki farklı şeyler. Öyle değil. Ben farklı sözdizimi, demek. Ama jQuery JavaScript. Sadece görünüşte var Daha iyi sürüm olduğunu daha kolay olabilir İnsanlar kullanmanız anlıyoruz. Gabe: Evet, olmak Dürüst, bu dolar işareti jQuery gördüğünüz, bu sadece jQuery tanımlayan bir işlev adı. Bu özel bir şey yok. Bu bir işlevin sadece isim mi sadece dolar işaretini tanımlayabilirsiniz seviyorum. [01:23:03] DAVIN: Evet, bu yüzden bu konuda konuştuk. Bazı yararlı şeyler. Ben geri eski sınavlar bakıyordu. Geçtiğimiz birkaç sınavlar, onlar var Bu gibi şeyler kullanmak zorunda kaldı. Böylece document.ready, yani her şeyin en olun sizden önce yüklenen şeyler yapmaya başlayabilirsiniz. Bir kimliği seçin veya Bir sınıf, sadece istiyorum Bazı sınıf, son teklifi nokta alıntı olacak. Sen eğer öyleyse, Gönder Bir formu ve çağrı göndererek formdan sonra bu işlev sunar. Değer, o yüzden ben bir form vardı diyelim sunulması, bir kullanıcı adı gibi, bir e-posta, her neyse. Ben bir metin kutusu vardı. Yani bu metin kutusuna yazarak kulüpler. Peki, sen değerini almak istiyorsanız Bu metin kutusu dışında, sen nokta val kullanın. Ve sonra, buraya, nokta HTML aynıdır Belge nokta gibi getElementById nokta innerHTML. Yani dönmek için gidiyor Eğer bu ID HTML. Burada, sadece bazı kullanmak Kimlik ya da her türlü nokta HTML. O elemanın HTML alırsınız. Eğer bunu değiştirmek istedim HTML, bunu bir şey geçebilir. Yani o nokta HTML gibi, ve istiyorum içinde, tırnak, yeni bir HTML ya da bir şey. [01:24:05] Gabe: Tamam, AJAX, böylece. Ben gerçekten anlamak istiyorum AJAX gerçekten iyi. Yani sana göre çocuklar istiyorum Gerçekten de AJAX anlıyorum. Eğer bunu yaparsanız Çünkü, hemen hemen gidiyoruz Her şeyi anlamak için HTTP ile ilgisi yoktur, PHP, JavaScript hepsi çünkü AJAX birlikte geliyor. AJAX dil değildir. AJAX bir tekniktir. Ve farklı araçlar çok kullanır. AJAX açılımı asenkron JavaScript, XML. Yani yöntem, dil, veri. [01:24:36] Kullandığımız ana dili Yani AJAX'ta her tetiklemek için ve her şeyi idare etmek Daha sonra JavaScript olduğunu. O ilgilidir yüzden JavaScript çok yakın. Ve sonra eşzamansızdır biz bunu yapmıyoruz çünkü tek seferde biz sayfa yüklenirken yaparken. Bu, biz bir şey paralel tür şeyler. ardındaki ana fikir, AJAX istediğiniz olduğunu bazı bilgi almak için. Örneğin, yeni yazdığınız Bir kullanıcı adı kayıt kullanıcı adı, Benim kullanıcı adı abc123 olduğunu. Ve sonra, sonunda Form, Gönder düğmesini zorunda. Ve bu, sunucuya gitmek zorunda ve sonra, veritabanında kontrol ABC123 zaten yoktur. Zaten varsa Ve bu, diyor zaten veritabanında kullanıcı adı. Ve onlar, sen doldurmak zorunda Tüm formda tekrar dışarı. Ve gerçekten, gerçekten kötü oldu. [01:25:23] Ve sonra insanlar söylüyorlar, Tamam, neden biz sadece olamaz sadece kontrol için küçük bir HTTP isteği yapmak Bu kullanıcı veritabanında olup olmadığını görmek için Kullanıcı vardı önce tüm formu göndermek? Yani örneğin, zaman Kullanıcı, ABC123 yazarak tamamlanır Sadece sunucuya biraz gidelim bit ve sadece bir doğru veya yanlış olsun görmek için sunucudan Bu, geçerli bir kullanıcı adı ya da değil. Tamam, böylece ana biri günümüzde hala AJAX kullanır. [01:25:49] DAVIN: in, hızlı Yani gerçek jQuery Ajax çağrısı, size delalet olabilir senkron olmak istiyorum. Bunu yapmamalıyız. Ama bunu yapabilirsiniz. Eğer, yaptım Ve eğer ne olur? Peki, örneğin, zaman konum haber ya da her türlü alıyorum, Tarayıcınız sadece beklemek için gidiyor O, tüm çağrı tamamlanana kadar yerine icar diğer do Sağ sonra işler tıklayın. [01:26:14] Gabe: Artık geçen değil. Aman Tanrım. Maalesef! Evet. "Geçmişte, istemci isteğine ihtiyaç Bir web sitesinin tüm içeriği. " Ben ne dedi. Bu göndermek için bize izin verir Ek GET veya POST kalmadan talepler Bizim tarayıcı yeniden. Günün sonunda Yani, biz konum aslında bir HTTP isteklerini yapma Burada JavaScript kullanarak. Önce Çünkü, biz sadece JavaScript kullanılan Zaten gelen HTML değiştirmek için. Ve şimdi, biz arabirim için kullanabilirsiniz yanı sıra, web sunucuları ile. Bu durumda yol biz müşteri olması. Davin bir istemci. Ve o bütün JavaScript var HTML Çünkü çalışan dilsiz olduğunu. JavaScript akıllı. Yani davin Davin onun akıllı vardır bölüm ve onun aptal bir parçası. O şimdi onun akıllı bölümünü kullanmak için gidiyor. O JavaScript kullanmak için gidiyor isteğe göre, örneğin, ABC123 olup olmadığını veri tabanı ya da değil. [01:27:04] Peki Davin, lütfen, sadece Bana bir HTTP isteği gönderin. Teşekkür ederim. Yani o sadece bir HTTP isteği gönderdi. Bunu gördün mü? Ve bu sadece aynı yolu Herhangi bir HTTP isteği gönderilir söyledi. tarayıcı, Google Krom ya da bir şey, bir Davin en olduğunu görmek için gidiyor bir HTTP isteği göndermek için çalışıyor, biraz hm yardımcı olacak. Ve bu gidecek sunucuya tüm yol. Şimdi, sunucu sahip oluyor Burada PHP, ya da başka bir dil. Sadece normal bir HTTP isteği gibi. Oldukça fazla normal bir HTTP isteği var. [01:27:31] Sonra, sunucu Tamam, demek oluyor, Davin olmadığını kontrol etmemi istiyor Bu abc123 veritabanında. Modeli konuşmak gitmek. modeli olmadığını söylüyor. abc123 iyi bir kullanıcı adıdır. Ve sonra, web sunucusu gidiyor Dosyanın çeşit işlemek için PHP kullanın. Bu anlamıyla sadece bir dosya olabilir Bu hayır "içinde" evet "içeren veya, ya böyle bir şey. Bu herhangi bir dosya olabilir. Ben gidiyorum gibi [01:27:54] Bu olabilir Davin bir ördek bir resim gönderin bu veritabanında ise ve Bir hamster bir resim gönderin veritabanında değilse. Bu tür olurdu aptal, ama işe yarayacaktır. Tamam, bu yüzden Davin bir ördek gönderin. Davin bir ördek var. Ve şimdi, kim gidiyor ördek işlemek için? Davin akıllı bölümü yine, böylece JavaScript, değil mi? JavaScript gönderdi istek, ve JavaScript isteği almak için gidiyor ve bazı şeklinde yorumlamak. [01:28:22] Ve bu anlamda, bu gidiyor Sonra ben iyiyim ördek eğer, tamam, demek. Hamster, o zaman ben gidiyorum Zaten hayır, kullanıcı adı, söylemek veritabanında var. Ama genelde, sen değilsin Bir ördek göndermek için gidiyoruz. Sen göndermek için gidiyoruz biraz daha akıllı bir şey. Ve ne kullanmak XML. Daha da son zamanlarda, JSON kullanın. JSON sadece JavaScript Nesne Gösterimi, hangi temelde bir olsun bir Tüm JavaScript nesne. Ve sadece gibi, bir dosyaya koydu Siz gördüğünü CS50 nesnesi. Sen bir dosyaya koyun ve Eğer Davin bunu üzerinden göndermek. [01:28:53] Peki bu durumda, yapardım bir JavaScript nesnesi yapmak ve sadece kullanıcı var, evet demek. Ya da kullanıcı hayır, var. Ve ona geri göndermek. Ve neden JSON? Kişi Çünkü kim bu alan oluyor JavaScript kullanmak için gidiyor yanıtı işlemek için. Ve JavaScript çok iyi çünkü çalışıyor JavaScript Object Notation denir. Doğru? Yani o sadece bir fonksiyonu çağırmak ve alabilirsiniz yanıtı bu güzel nesne. Ve sonra, o olmadığını bilmek gidiyor Bu kullanıcı veritabanında veya değil. Gördüğünüz Yani [01:29:22] bunun tüm geliyor Birlikte web sunucusu, ve daha sonra isteği bir HTTP var ve bir HTTP yanıtı ve her şeyi. Yani emin olun çocuklar Bu AJAX arama anlamak yardımcı olur çünkü tüm anlamak kavramların biz bahsediyoruz. [01:29:37] Yani burada bir örnek jQuery ile AJAX. Ve burada, biz olsun JSON ile yapmak. Bu yüzden bir almaya çalışırken değil Burada bir kedi veya bir ördek görüntüsü. Biz JSON dosyasını almak için çalışıyoruz. Ve sonra kadar bekleyin bitti nokta, bitti. Ben cevap bekliyorum demektir. Biraz zaman alabilir. Sonra, küçük bir yükleme bakın. Web sitenizde yapmak istiyorsanız. O zaman yapılır, ve dot ne bitti ne olur? Bir anonim geçmek fonksiyonu, sadece biz önce gördüm gibi. Yapılan Çünkü sadece bir olay Bir fare ya da her neyse tıklayarak gibi, jQuery için. Yani bu fonksiyonu ile geçmek veri, metin, durum ve jqXHR. Ve temelde, işte sadece bazı değişkenler Eğer var sonra kullanabilirsiniz HTTP isteğinin durumu, gidiyor veri size geri göndermek için. O zaman daha sonra bunu yorumlayabilir ve onunla anlamlı bir şey yapmak. Başarısız olursa, ne zaman başarısız olabilir? Peki, ne zaman HTTP isteği verir Eğer böyle bir 500 falan. Sonra, size söyleyecek Durum, oldu başarısızlık ne tür, ve şeyler her türlü. Sen emin olmalıyız Her iki davalarını, aksi takdirde program deli gider. [01:30:42] DAVIN: Yani evet, bu tam olarak Eğer son p-sette ne gördüm. Gerçek AJAX çağrı olsun JSON olduğunu. Bu çağrı. Ve sonra, nokta yapılır gibi başarılı ise o kontrol eder. Başarılı olursa, istediğiniz veri ile bir şeyler yapmak. Bunu geri almak JSON isteği verileri. Yani geri almak budur. Yani p-kümesinden hatırlıyorum eğer, size bir sürü veri dirsek gibiydi i veya ne olursa olsun, nokta bağlantı veya başlık. Geri ne olursa olsun geliyor Bu JSON gelen her türlü alanlar, yani JSON nesne içinde Bu geri alıyoruz budur. Veri geri alıyoruz budur. Metin durumu, sadece bir şey bu Ne olduğunu bilmenizi sağlar. Sonra, jqXHR, bu sadece jQuery XML HTTP isteği. Bu sadece bir nesne gibi. Ve sonra Gabe dediği gibi, başarısız. Gabe: abc123 bizim küçük örnekte Bu veritabanında ise sadece kontrol etmek için veya veri size bir şey olurdu değil Veri nokta kullanıcı adı varsa, yapacağını, PHP için oluşturulan ne hangi veri nokta kullanıcı adı daha sonra, varsa, eğer Ben uyarmak için gidiyorum, kullanıcı adı zaten var. Else, sadece izin gidiyorum Kullanıcı formu doldurarak devam. Tamam, güvenlik, serin. [01:31:50] DAVIN: Beni ister misiniz? [01:31:52] Gabe: Ben bunu seviyorum. Yani bir şey tanıdık görünüyor. Biz neredeyse bitti. Yani bu sadece örnek Siz sınıfta gördüm. Burada argv1 kullanıyorlardı. Bu bir komut satırı argümanı gibi. Ve biz kopyalama mem konum büyüklüğü 12 bir tampon içine. Burada sorun nedir? Tampon taşması! Biz boyutu 12 bir tampon var çünkü. argv1 iki milyardan bir boyuta sahip olabilir. Biz herhangi bir sınır denetimi yapmıyoruz. Bu yüzden çok fazla bellek kopyalama olabilir. Ve biz özellikle olacak Bu konuda kötü. Biz neler yapabileceğini Çok, çok, bu durumda demek? Evet? HEDEF KİTLE: iki milyar şeylerin Bölüm döner çalıştırılabilir kod içeriyor [Duyulamaz]. Gabe: Kesinlikle. Yani bu tür insanların kullanımı şey örneğin, bir iPhone firar. Bu tür şeyler Yani. Sadece cihaz yapmak Çünkü istediğiniz herhangi bir kod yürütmesine. düzeltme, bu düzeltme kolaydır. Sadece sınırları kontrol edin. Sen boş çünkü kontrol biz her zaman boş kontrol biz dizeleri ile uğraşıyoruz. Ve sonra, almak dize uzunluğu önce. Ve dize halinde uzunluk geçerli bir dizedir 0 içinde uzunluk, 12, daha sonra iyiyiz. [01:33:03] DAVIN: Eğer kontrol etmezseniz null, çabucak, ne olacak? Bu hata seg edeceğiz. Neden hata SEG olacak? Eğer boş üzerindeki strlen aradığınız Çünkü. Gabe: Evet. Birini kullanarak, doğru veya yanlış Parola iyi bir fikirdir. [01:33:19] İZLEYİCİ: Yanlış. [01:33:20] Gabe: Yanlış. Birçok şifreleri, ve büyük, uzun olanları kullanın. Kilit simgeleri güvenliğini sağlamak. [01:33:26] İZLEYİCİ: Yanlış. [01:33:27] Gabe: Yanlış. Bir şey demek değildir. Sadece bir simge var. SSL karşı korur orta saldırı adam. HEDEF KİTLE: Yanlış. Gabe: Yanlış. Tamam, bu yüzden tüm bu yanlış. Güzel. [Duyulamaz] Bu konuda konuşmak ister misiniz? Senin sıran. DAVIN: saldırıların türleri, Ortada adam. Orta saldırıda bir adam nedir? HEDEF KİTLE: [duyulamaz]. DAVIN: Eğer bir gönderirseniz HTTP istek, doğru, bu yapabilirdi? Ama HTTPS gönderiyoruz, onlar Muhtemelen bunu yapmak mümkün olmayacaktır. Puan sürü var senin bağlantı boyunca. Sen yönlendiriciler var. DNS sunucuları var. Birisi fiziksel olarak mümkün ise Eğer gönderirken görmek, böylece kimse yapabiliyor aslında aranıza almak, istemci ve sunucu, ve bir Gönderdiğiniz şeyi görmek mümkün, Bu orta saldırıda bir adam. Yani almak için çalışıyoruz ne olduğunu görmek için Sunucu, ya da daha kötüsü see-- yapabiliyor Eğer görmek mümkün olabilir kurabiye ya da onun gibi bir şey. [01:34:16] Örneğin, yani Eğer o, SSL kullanarak değil görmek mümkün olabilir sizin oturum kimliği tanımlama. Ve bu oturum kaçırma denir O Kimlik çerezleri görür, çünkü, ve sonra o gitmek mümkün değil Web sitesi ve sizi taklit. Sadece PHP gibi çünkü, unutmayın biz oturum açtığınızda, biz ne yapacağız? Biz kimliği eşit oturum kimliğini ayarlamak. Yani sizi tanımlar. Eğer portföy görebilirsiniz Bu yüzden ve herkes başka portföyü. [01:34:38] Peki, ben bu çerez almak mümkün yaşıyorum, Sonra ben bu sayfaya oturum açabilirsiniz. Ve sonra, ben sadece eşyalarını görebilirsiniz ve satın alma ve malzeme satan başlar. Yani oturum kaçırma var. Ama sen bu kadar güçlü amaçlara yönelik olmamalı orta saldırı adam kullanabilirsiniz Hatta onlar SSL kullanarak eğer. Ama mümkün olmamalıdır. Onlar SSL kullanıyorsanız, Eğer oturum kaçırmak olamaz. Neden? Her şifreli için, değil mi? şifreli eğer, ve ben hala bir adamım orta, ben hala veri almak. Bu iyi. Ama şifreli. Yani ben gerçekten bunu kullanamaz. Yani iki. [01:35:09] Gerçek hızlı, çapraz site istek sahteciliği. Bir bağlantı varsa bu sadece ve bu bağlantı bir şey yapar Eğer bunu yapmak gerektiğini sanmıyorum. Yani, örneğin, bağlantı halinde oldu hisse senedi satın veya stokları satmak için gidiyor, ve bunu bilmiyordum. Sen, linke tıklandığında aldım bir istek gönderdi ya da bir şey satılan Yapmanız istemedim. Bu işte. [01:35:25] Çapraz site betik, burada çok, Eğer, değişken q yoluyla geçirerek konum yerine bazı tür geçme değer, belki q adı gibi. Bunun yerine q eşittir geçen Davin veya böyle bir şey, HTML kullanmak istemiyorsanız Özel karakter, eğer bu kadar emin olmak için bu kaçış yok Tamam, o zaman ben onun yerine de geçebileceği, burada ben söylüyorum diyelim böyle baskı ya da bir şey, Sonra ben burada bir komut dosyası çağrısı içinde geçebileceği. [01:35:51] Öyleyse, yerine Sadece bir değişkeni almak, Ben o zaman bu komut çağrısını yürütmek istiyorum. Bu komut dosyası içinde Yani çağrı, ne yapar? Belge nokta konumu, o gidiyor Belgenin konumunu değiştirmek. Yani yönlendirmek için gidiyorum başka bir yere. Kötü adam olarak adlandırılır Bu örnek, çok iyi. Kelime gelmiyordu. Ve sonra, ne bile var kötü Ben gidiyorum olduğunu Bazı o zaman set cookie için Değişken Bu web sitesinde yer var. Ben eşit ayarlamak için gidiyorum Belge nokta çerez. Bu nedenle, ben gidiyorum çerez çalmak için. Ve ben yönlendirmek için gidiyorum Bir web sitesine bazı bilgiler Bu sizi erişen edilmemelidir. Sen çünkü bu tüm olur değil ne gördüm kaçan. Evet? [01:36:29] İZLEYİCİ: Yani sadece kadar bu, açıkça yapmak vulnerable.com bu Bu açıktır. Bu bağlantı görünebilir Yani herhangi bir sayfada. Birisi, o tıklar vulnerable.com gider. Sen vulnerable.com bir çerez var. Facebook diyelim savunmasız, facebook.com böylece. Sen Facebook çerez var. Bu ne yapıyor, sen facebook.com gidiyor, hemen yönlendirme var Eğer, badguy.com için ancak çerez bilgiler dahil. Bu yüzden hızlı bir yönlendirme var, ancak Facebook çerez Bu yönlendirme ile birlikte, ve bu nasıl [duyulamaz] var. Gabe: Evet, var bazı çok kötü şeyler Bu varsa insanların yapabileceği. Örneğin, Facebook eğer izin herkes, kullanıcı adını değiştirmek için ve herhangi yapmadım aklı kontrolleri, size böylece JavaScript şey eklemek olabilir bir hamster için görüntüyü değiştirir. Ve aynı JavaScript ekler sizin sayfayı görüntüleyen herkes içine. Sayfanızı Yani herkes kullanıcı adı aynı şeyi vardır. Ve bu bir virüs çünkü, katlanarak yayılır. DAVIN: Geçen atlamak bir, ve sonra bitti. Yani bu sadece bir örnektir. Yani bu değiller ise kendi SQL tablosu kaçan. Yani bırakın. Yani bir şeyler kaçmak istiyorum. Bu önceki örnek oldu çapraz site scripting ile. Maalesef biz biraz geç koştu. Yarın, üzgünüm! Yarın, ofis saatleri var. 11:00 Cabbot 8:00 Yani ofis saatleri. ofis saatleri kesinlikle sınav soruları için.