>> HANNAH BLUMBERG: Hi everyone.
Biz Başlamak için gidiyoruz dakikada sadece birkaç erken
Biz bir sürü beri materyal aracılığıyla almak için.
Ben Hannah değilim.
Ben bir TF değilim.
Maria katılmadan olacak bize sadece bir kaç dakika içinde.
O hemen önce bölümü öğretir.
Ben bölüm hakkını öğretmek sonra, bu yüzden gidiyoruz
Bir buçuk saat onu tutmak için.
>> Buraya göreceğiniz gibi Yani, biz oldukça var Bir kaç konu biz aracılığıyla almak gerekir
bu yüzden çabuk biraz gidiyorum.
Ama herhangi bir noktada eğer bir şey söylemek Çok hızlı ya da anlamıyorsun,
sorularla kesme çekinmeyin.
Biz bu a yapabilmek olmak istiyorum Hepinize yararlı olarak oturumu gözden
olabildiğince.
Başar.
>> Yani birlikte sağ atlamak izin Bazı konular olduğunu biz aslında
çok kısa bir süre için kapalı Quiz 0 yorum oturumunda yarışması 0.
Yani bağlantılı listeler ile başlayan.
Yani sadece bazı sahip olduğunuzdan emin olun bağlantılı listeler hakkında temel bilgi
ve yapıyor rahat temel işlemler bazılarıdır.
>> Yani sadece, gözden bağlantılı etmek Listeler diziler daha iyi
Onlar dinamik büyüyebilir çünkü.
Yani biz bu büyük avantajımız var.
Biz bunları kullanılmış gördük hash tabloları zaman
tam olarak kaç olduğunu bilmiyorum şeyler istediğimiz gidiyoruz
Bizim veri yapısı içine yerleştirin.
Ne yazık ki, biz parçaları var Tüm bellekte üzerinde bağlantılı liste,
bu yüzden mutlaka olmayacak sabit zamanlı erişim yapmak mümkün
Bağlantılı Listedeki herhangi bir öğeye.
Bulmak için Özellikle unsur,
tüm yineleme var başından itibaren yol.
Yani akılda tutmak çoğu bu Temel işlemler 1 omega vardır.
Yani insert sadece 1 alacak.
Sil almak n biz beri gidiyor Listeden bulmak gitmek zorunda.
Ve arama n, en kötü ihtimalle, sürebilir.
Biz böyle bir şey yapamayız Bağlantılı bir listede ikili arama
çünkü biz değil, sadece rastgele ortada atlamak.
Güzel.
Başar.
>> Yığınlarının Biraz.
Bu, yine, sınav 0 üzerinde geldi, sana bu yüzden onunla süper rahat olmalıdır.
Ama yığınlar için, biz sizden tepsilerin yığınını hatırlamak.
Ve bu ilk olacak, dışarı sürer.
Bu yüzden bir şeyler biriktirecek yığını ve sonra
Biz bir şey almaya çalışıyorsanız Biz off-- kapalı haşhaş çağrı hangi
stack-- biz üst kapalı geliyor.
Ve biz bir şey koymak istiyorsanız yığını, biz iterek diyoruz.
Bu yüzden her zaman büyüyor gidiyor tepsilerin bir yığın gibi alttan.
Başar.
>> Biz gördük yığınlar uyguladık hem bağlantılı listeler ve dizileri ile.
Eğer uygulama ediyorsanız diziler, istediğiniz
izlemek için emin olun büyüklük ve kapasite hem de.
Yani boyut akımı olacak destenizin şeylerin sayısı,
kapasite ise toplam sayısı şeyleri size yığın saklayabilirsiniz.
Güzel.
>> Çok benzer, biz kuyruklar var.
Bu durumda, yerine düşünme tepsilerin bir yığın, bir çizgi düşünüyorum.
Bu ilk birinci olmak dışarı gidiyor.
Için sıraya konum eğer öyleyse mağazada bir şey,
Umarız kişinin ilk o hat ilk yardım olacak.
>> Yerine itme söyleyerek ve Biz yığını için ne gibi pop,
biz sadece Enqueue ve Dequeue söylüyorlar.
Ve yine, eğer sen are bir dizi ile bu uygulama,
Biz takip etmek gerekir değil sadece boyutu
Kapasite, aynı zamanda baş ve hangi Bizim sıranın ön olacak.
Güzel.
Bu herhangi herhangi bir sorunuz var mı?
Başar.
Boyunca doğru hareket ederek.
>> Tamam, hash tabloları.
O başlar İşte burada Gerçekten ilginç olsun.
Yani karma tablo tek uygulamasıdır bir ilişkisel dizinin.
Yani temelde ne oldu Hepimiz bu giriş var olduğu,
ve biz bir karma vermek der işlevi
Tamam, bu nerede olduğunu karma tablo o aittir.
>> En basit karma işlevi Yani biz sadece söyleyerek gördük,
Tamam, biz koymak istiyorum varsayalım Bizim hash tablosunda dizeleri.
Ve gerçekten basit bir fikir Tamam, demek olabilir,
Sadece göre sıralamak izin sözcüğün ilk harfi.
Burada gördüğünüz Yani, biz, muz almak Biz bir karma işlevi aracılığıyla koydu
ve o, hey, diyor endeksi 1 gitmek gerekir.
>> Yani biz aslında bir karma düşünebilirsiniz Farklı kovalar bir grup olarak tablo.
Ve bu kova her gidiyor Bağlantılı bir listenin başını tutun.
Ve bu bağlantılı listede nerede biz ise aslında farklı veri parçalarını koymak.
>> Yani dalış biraz daha bir karma işlev, burada
Ben sadece bir örnek biz sadece söylemek nerede tarif
Tamam, ilk harfini almak Biz konum ve kelimenin
kova içine sıralamak için gidiyor.
Yani muhtemelen, 26 kova orada olacağım, alfabenin her bir harfi için bir tane.
Neden bu büyük bir kıyım fonksiyonu değil mi?
Ne bu ideal olmayan kılan nedir?
Evet.
>> HEDEF KİTLE: Sen gidiyorsun çarpışmalar olması.
>> HANNAH BLUMBERG: Evet, kesinlikle.
Sen çarpışmalar için gidiyoruz.
Yani bir şey.
Nasıl biz ve biz bahsedeceğiz Bir saniye içinde çarpışmalar düzeltin.
Bu ilgili bir diğer problem Özellikle karma işlevi
Bizim farklı olmasıdır kovalar olacak
oldukça büyük ölçüde farklı boyutlarda.
>> Biz bir sürü var olduğunu biliyorum X'den A ile başlar daha fazla kelime,
Biz çok zorunda gidiyoruz Bizim hash tablosunda dengesiz kovalar.
Güzel.
Yani evet, en geri dönelim çarpışmalar noktası.
Bir çarpışma varsa ne yapacağız?
>> Biz birkaç farklı seçeneğiniz vardır.
Yani bir, bu yüzden çalışıyoruz varsayalım Bizim karma tabloya berry koymak.
Ve biz oh biz istiyoruz, bkz endeksi 1 koymak,
ama muz zaten orada yaşıyor.
Ne yapacağız?
Biz iki ana seçenek var.
>> Number one Tamam, söyleyebiliriz, endeksi 1 yer yok,
ama sadece bakarak devam edelim Biz başka bir açık nokta bulana kadar.
Bu yüzden, tamam söyleyeceğim en noktada 3 onu koyalım.
Bu bir seçenek.
Bu sondalama doğrusal denir.
>> Ve ikinci bir seçenek, iyi, tamam, diyor Sadece bu kovalar her yapalım
bağlantılı listeler başkanları olmak.
Ve dahası var ise sorun yok bir kova, bir şey daha.
Biz sadece gidiyoruz Ön üzerine ekleyin.
Yani burada, tamam görebilirsiniz Biz berry takıldığında, biz
sadece tür, muz aldı biraz üzerine itti
ve orada bir dut attı.
Ve bu da tamamen iyi.
Bu ayrı bir zincirleme denir.
Sen tür gibi bu düşünebilirsiniz Bağlantılı listelere başkanları bir dizi.
Karma Herhangi bir sorunuz tablolar, hash fonksiyonları?
Başar.
>> Ağaçlar ve çalışır.
Yani bir ağaç herhangi bir tür veri yapısının
hangi çeşit var hiyerarşi veya bir çeşit
sizin farklı nesnelere sıralama.
Ve bu süper olacak net, biz bir örnek görünce.
Ve biz birlikte, denemeden gördüm karma tablolar, pset5-- içinde
yine, hangi tamamen adil oyun Bu bir veri olarak quiz-- için
yapılar ki biz Farklı şeyleri saklamak.
Sözlük halinde, Biz kelimelerin bir demet saklı.
Yani bazı ağaçlar bir göz atalım.
Yani bu, bir ağacın bir örnektir.
Bu yapının bir tür var Hiyerarşik yapıda olduğu,
Bunu görebileceğiniz üstündeki bu 1 düğüm
2 ve 3'ün üzerinde rütbe çeşit var ki olan 4, 5 ve 6 ve 7, yukarıda,
bu, 8 ve 9 üzerinde yer almaktadır.
Hepsi bu yüzden biz demek ağaç, olabilir bunu sadece tür
senin kafanda bu resim.
>> Şimdi, biz bir çift var daha uzmanlaşmış ağaçlar.
Yani bir örnek bir ikili ağaçtır.
Ve bir ikili ağaç olduğunu Tekrar, sadece olacak
çeşit bir veri yapısı hiyerarşisi, ancak her birleşme noktası
en fazla iki çocuk da olabilir.
Kelime ikili nereden geldiğini budur.
Yani bu ikili ağacın bir örnektir.
Yani ağaçların küçük bir kategori var.
>> Şimdi daha spesifik etmesine izin vermedi ve İkili trees-- ikili arama hakkında konuşmak
ağaçlar, oldukça.
Yani burada bir fikir yok değil sadece Her düğüm, en fazla iki çocukları var
ancak tüm çocukların Sol küçük olacak
ve tüm çocukların Sağ büyük olacak.
Yani sadece fark bizim ikili ağaç, orada
sayılar arasında ilişki.
Ama ikili arama ağaç, görüyoruz, tamam, burada 44 var.
Ve 44 solundaki her sayıdır sağa doğru küçük ve her
büyüktür.
>> Ve her at tutar Ağacın seviyesi.
Yani burada, bu daha küçük 22 ve 22 daha büyüktür.
Ve bu ikili arama ağacı.
Neden biz denir sizce İkili arama ağacı?
Ne algoritma size hatırlatıyor?
HEDEF KİTLE: İkili arama.
HANNAH BLUMBERG: İkili arama.
Eğer arıyorsanız Çünkü Bu ağacın özellikle sayı,
Her noktada, sadece vuruş yapabilir büyük ağacın yarı kapalı.
Ve böylece, bize bir şey vermek için gidiyor Bu ikili arama çok benziyor.
Sorusu olan?
Pekala, serin.
>> Pekala, çalışır.
Herkesin favori.
Yani bu örnek, olduğu Sınıfta bir demet gördüm.
Ve yine, bu sadece başka bir şeydir Biz veri saklayabilir yolu.
Sözlük durumunda, yine, Bu sadece dizeleri olacak.
Yani aslında bu ne görelim biraz daha düşük bir düzeyde benzer.
>> Yani bir göz atalım Bir tray bir düğüm at.
Ve biz, tamam orada oluyor, bakın Boolean bir düğümü olarak,
Bir düğüme bir işaretçi.
Ve biz görüyoruz Boolean is_word olarak adlandırılır.
Bu nedenle esas olarak, işte bu karşılık gidiyor
Bu küçük üçgenler hangi Burada ele verdik, eğer diyor
Eğer tam bir kelime buldum.
>> Biliyoruz ki "Turing" üzerinde Burada tam bir kelime,
oysa sadece T-U-R bir kelime değil Biz o küçük delta görmüyorum çünkü.
Ve o küçük delta, yine Bu is_word tekabül
Bu Boole is_word.
Ve sonra biz çocuklar bir dizi var.
Eğer, her seviyede Yani Belirli bir düğüme sahip,
ve bir o düğüm noktaları Tüm alfabesinin dizisi.
>> Yani tekrar görebilirsiniz, Bu resim-- içinde ben
geri atlama devam edecek ve forth-- bu üstünde dizilere
Farklı bir grup var Bunun kapalı geliyor düğümleri.
Eğer isterseniz 26 veya 27 sahiptir ekstra karakter dahil etmek.
Ve bu bizi bir verir Bizim veri depolamak için bir yol
baktı edilebilir şekilde Bu süper hızlı bakabilirsiniz.
Bir tray için arama süresi nedir?
>> HEDEF KİTLE: [duyulamaz].
>> HANNAH BLUMBERG: Evet.
Teorik olarak, sabit bir zaman.
Sadece boyutu olacak Eğer aramak istediğiniz sözcüğü.
Biz zillion eklemek bile Bizim tray için daha fazla kelime,
Bizi almaya gitmiyor artık belirlenmesi
Belirli bir sözcük tray ise.
Yani gerçekten çok güzel.
>> HEDEF KİTLE: Sadece seni mi Bu diziyi başlatmak?
Bir nokta veya iki kaçırdı.
Sadece hakkında konuşabilir miyiz Bir saniye mi?
>> HANNAH BLUMBERG: Tabii, kesinlikle.
İyi soru.
Soru oldu var bir dizi var
olarak düğüm yıldızı olacak Tamam, sadece düğüme karşı?
Güzel.
Yani burada biz dediklerini Bizim dizi sadece olduğunu
Diğer dizilere işaretçiler olacak.
Dolayısıyla bu tür onu essentially-- var Bu şekilde bir bağlantılı liste gibi hissediyor
nerede bu çocukların her biri Sadece bir sonraki düğüme işaret etmektedir.
>> Ve yol biz aslında Tamam, hey, belirlemek,
biz entire yineledi ettik kelime, sözlükte bu kelime,
Biz sadece bu is_word kontrol edin.
Büyük soru.
Evet.
HEDEF KİTLE: Tamam.
Yani tray için çalışma zamanı neydi?
>> HANNAH BLUMBERG: Elbette.
Bir tray için çalışma Yani arama sabit zaman olacak.
Yani sadece olacak kelimenin harf sayısı.
Bu bağımlı değil Sözlük büyüklüğü
veya veri yapısının boyutu.
Yani burada biraz daha basit bir örnek.
>> Bu durumda, bunu görebiliyorum sözcük yarasa sözlükte olduğunu
ve zoom var, ama hayvanat bahçesi gibi bir şey yok.
Nasıl hayvanat bahçesini yapmak istiyorsunuz?
Biz hayvanat bahçesi için nasıl eklerim bizim Sözlük, bizim trayın mi?
Evet.
>> HEDEF KİTLE: is_word olun Gerçek [inaudible] için.
HANNAH BLUMBERG: İyi.
Bu yüzden Z-O-O söyleyebilirim, ve sonra biz çok zevkli olur hem de o kutuyu kapatmak kontrol etmek istiyorum.
Büyük.
En çok kısaca bir karşılaştırma yapalım hash tabloları karşısında çalışır.
Denemeleri gerçekten harika Çünkü, biz söylediğimiz gibi,
Onlar sürekli zamanlı arama sağlar.
Ama büyük bir dezavantaj onlar koskocaman olduğun.
Sen anlamda alabilirsiniz, Hatta ona bakarak,
o almaya gidiyor bu bellek büyük miktarda.
Bu yüzden fazla olması için gidiyoruz hash tabloları daha büyük,
ama onlar vermek için gidiyoruz Bizi çok daha hızlı arama süreleri.
Yani bu tür senin Tradeoff, sen umurumda, ne
o hız veya bellek olsun.
Bu herhangi Herhangi bir sorunuz, C veri yapıları bütün.
Güzel.
TAMAM.
Biz biraz geçmek için gidiyoruz Maria ile web geliştirme biraz.
MARIA ZLATKOVA: Güzel.
TAMAM.
>> HANNAH BLUMBERG: Sen benim laptop kullanabilirsiniz.
>> MARIA ZLATKOVA: Nice.
Tamam iyi.
Biz web şimdi taşımak gibi geliştirme, biz biraz konuştuk
Değişen izinleri hakkında dosya ve dizinleri
böylece onlar erişilebilir diğer kullanıcılara, dünyaya,
ve böylece biz nasıl görebilirsiniz temelde biz bunları iletebilirsiniz
Biz web siteleri gibi şeyler geliştirmek zaman biz çoğunlukla yapıyorum.
>> Bu yüzden chmod komutunu gördüm, hangi temelde, değişim modu.
Bu bir Linux komut var ve bu erişim izinlerini değiştirir
Dosya sistemi nesneleri.
Ve bir dosya sistemi nesne Sadece bir dizin, dosya,
herhangi bir şey yapabilirsiniz izinlerini değiştirin.
>> Yani dosya izinlerini görmek için, Biz komut ls, liste, -l yazın.
Ve biz bu yazdığınızda, biz genellikle bazı izinleri görmek
bu gibi çeşit bakmak Bir dizin adının önünde.
Yani d dizinine başvuruyor.
Ve sonra biz üç var gizli suç şebekesi temelde
ya izinleri bakın Bir kullanıcı, bir grup veya dünya.
>> Izinleri türleri ki biz insan bu üç grup için var
w okuma ya da r vardır yazma ve yürütme x.
Ve biz o olabilir grup ve dünya da.
Zor bir şey olduğunu bazen Biz chmod komutunu yazdığınızda,
bazı numarayı yazarsınız Üç bit oluşuyordu.
Yani biz böyle yapabilirdi 777 ve bu temelde
katma değer de ifade Bu üçlü her birinin
r 4 başvurmak istiyorum, çünkü w olur 2 bakın ve x 1 bakın istiyorsunuz,
böylece, her numaraya kadar eklendiğinde kümülatif sayı aşağı gelirdi
0 ile 7 arasında kümülatif bir değere.
Bu yüzden de 0 olabilir hiç izinleri.
Ve bu temelde bize verecekti Her iki kullanıcı için izinler,
grup veya dünya.
Şimdiye kadar bu konuda herhangi bir soru var mı?
>> HEDEF KİTLE: okuduğunuzu dedi 4 oldu?
MARIA ZLATKOVA: Evet.
HEDEF KİTLE: [duyulamaz].
HANNAH BLUMBERG: Evet.
HEDEF KİTLE: Ve sonra tüm bu ekleyerek başkalarının numaranızı işaret eder.
MARIA ZLATKOVA: Evet.
Evet.
Bunlar harika sorulardır.
Güzel.
Sonra, HTML ve a atladı web geliştirme konusunda biraz daha.
Yani HTML sadece anlamına gelir HyperText Markup Language.
Ve bu biçimlendirme Standart olan dil
web sayfaları oluşturmak için kullanılan söyledi.
>> Bir biçimlendirme dili denir aslında derlenmiş değil çünkü.
Bu nasıl bazı kod gerekir demiyor idam ya da böyle bir şey olabilir.
Sadece delineates ve nasıl bir web tarif
sayfa kurmak gerekir kendi elemanlarının her biri ile
ve onlar kullanıcıya nasıl görünmesi gerektiğini.
>> HTML etiketleri Bazı biz gitti şunlardır.
Bizim HTML belgelerinin tamamı DOCTYPE html ile başladı.
Sonra hep html etiketine sahip.
Biz bir baş ve bir vücuda sahip.
Ve HTML sahip olması önemlidir iç içe yapısı bu tür
çok açık çünkü.
Ve sonra çok açık olduğunda biz Aslında yakın etiketleri açıp gerekir.
Ve biz her zaman kapatmanız gerekir biz açtık etiketleri.
>> Ve burada türlerinden bazıları var biz istiyoruz önde şeyler.
Yani biz var, örneğin, CS50 başlığı.
Ve sonra biz aslında Bir stil sayfası bağlayabilirsiniz
biz sitemizi tarzı nasıl tanımlar.
Yani CSS.
Biz bunun üzerine gitmek için gidiyoruz yanı sıra slayt önümüzdeki birkaç.
>> Bünyesinde, biz set Bazı sınıfları ve kimlikleri.
Ve bir hatırlatma olarak, yine, Kimlikleri benzersiz ve sınıfları
birden çok öğe atanabilir.
Ve bu sadece anlamına gelir Biz sınıfları ve kimlikleri kullanabilirsiniz
böylece diğer structures-- içinde için örneğin CSS dosyaları veya stil içinde
Belirli parçalara atıfta bulunmak için sheets-- ve temelde stil istiyoruz söylüyorlar
ya da bazı eleman tasarımı Bazı özel bir şekilde.
Ve biz onlara atıfta Onların kimlikleri ve sınıflar.
Ve biz de başvurabilirsiniz hem de etiketleri farklı şeyler,
ancak kimlikleri ve sınıflar sadece bize biraz ver çok yönlülük ve özellikle ne
başvurmak istiyorum.
>> Yani sadece bir örnektir.
Biz içinde, yine can Bir CSS dosyası nerede
Bazı tanımlamak istediğiniz style-- renkler, yazı tipleri, böylece
ve malzeme elimizden ki- gibi Bir vücut için stili tanımlayın.
Yani o tanımlarsınız Tüm vücut etiketi için.
Ama o zaman biz de tanımlayabilirsiniz Bir #title için bir stil.
Ve yine, hashtag değinmektedir eden Kimlik ve nokta bizim sınıfa gelir.
>> Sonra .info için biz Ayrıca bazı özelliklerini ayarlayabilirsiniz.
Biz geri döndüğünüzde Ve yine, biz bizim sınıf bilgisi ve kimlik başlık denir.
Ve biz bakın görebilirsiniz bunlara #title ve .info göre.
HEDEF KİTLE: Eğer söyleyebilir misiniz başlık etiketi [? Beni evlat? ?]
MARIA ZLATKOVA: Üzgünüm?
HEDEF KİTLE: Eğer söyleyebilir misiniz başlık etiketi [? Beni evlat? ?]
MARIA ZLATKOVA: Hashtag İD, yani #title demektir
ne olursa olsun elemanlara değinmektedir başlık olarak adlandırılan bu kimliği var.
Sonra nokta grubunu belirtir.
Bu yüzden, bu Info elemanına değinmektedir sınıf bilgisi vardır çünkü.
Aynen.
>> HEDEF KİTLE: Neden do you HTML ayırt?
Neden bazı şeyler vardır diyorsunuz Kimlikleri ve bazı şeyler sınıf?
MARIA ZLATKOVA: Bu Ve sizlere sadece kalmış
HANNAH BLUMBERG: soruyu tekrarlayın.
MARIA ZLATKOVA: Oh, üzgünüm.
Neden bazı unsurları ayırt edebiliriz kimlikleri ve sınıflar gibi diğer unsurlar olarak?
O çünkü bu sadece var Gerçekten genellikle tasarım seçim.
Size bir sürü verir olmak çok yönlülük
Ben bu özel maddeyi istiyorum söylemek mümkün istedikleri için bu kimliği var
bir çok şey yapmak Bunun, ve ben sadece
Bir stil tanımlamak istediğiniz belirli tarzı Bu öğe için veya renk ne olursa olsun.
Ve yol yapmak Sadece bir kimlik vererek olduğunu.
>> Ve sonra ben istiyorum var farklı öğeleri bir çift
olan, bunun yerine bu gidiyor ve their-- ayarı
Bunun yerine bunu yapıyor etiket etiketi olur, çünkü
Bütün etiketi için hücreyi ayarlamak Her zaman için bu etiketi kullanılır
Eğer birden çok öğe için bir sınıf ayarlayabilirsiniz.
Ve sonra sadece o sınıf erişebilir ve söylemek Bu sınıf bu şekilde stil istiyorum.
>> Ve yine, sınıf can Birden fazla farklı öğeler olabilir
ve kimlik özgü olması gerekmektedir.
Büyük sorular.
Başka soru?
Tamam, müthiş.
Yine, bu nasıl bu seçiciler olduğunu hashtag ile CSS başvurulan,
nokta ile, ya için bir şey olmadan Bazı etiketinin stilini atama,
vücut gibi.
Ve burada genel var Bu nasıl yapılır sözdizimi.
>> Bazı iyi tekrarlamak için HTML ve CSS için uygulamalar,
biz, yine yakın tüm ihtiyaç Biz açmak HTML etiketleri.
Ve seni tavsiye ne son projeler için yapmak,
ve CS50 Finans olarak yapmaktır HTML tüm doğrular emin olun.
Ve bu W3 Validator ile yapılır.
>> Ve yaptığımız o zaman ve ne Yaptığımız tavsiye neler
bu yüzden, stil ayıran Biçimlendirme HTML CSS.
Nasıl ilgilidir Yani her şey Sayfanız görsel bakmak için gidiyor
ve nasıl modifiye edilmesi gidiyor CSS belgeye gitmek gerekir.
Ve sonra biçimlendirme nasıl şeyler söyleyerek birbirine göre olan, HTML
ve o içeri gitmeli HTML belgeleri.
Sorusu olan?
Mhm.
>> HEDEF KİTLE: Tam olarak ne oluyor sayfa doğrulama ile ilgili
Biz doğrulama yaparken [Duyulamaz] oluşturulan HTML?
>> MARIA ZLATKOVA: Yani seni düşünüyorum ne--.
Peki tam olarak ne oluyor sayfa doğrulama ile ilgili
ve neden bunu yapmak gerekiyor?
Temelde, biz bunu yapmak zorunda Çünkü bir çok kez, tarayıcı,
Eğer bir etiket kapatmak yoksa Ya da bunun gibi bir şey,
Tarayıcınız hala gidiyor Bir sayfa oluşturmak ve hala işe yarayabilecek,
ama en iyi uygulama emin olun var Eğer, yine, tüm etiketleri kapattıktan
Tüm unsurları olduğunu onlar olması gerektiği şekilde,
ve gereğidir temelde önceden ayarlanmıştır sözleşmeler.
>> Bu, yine, var sadece şey sen-meli
yapıyor olması öğreniyor, zorunda aksine
Böyle sloppier kod falan.
Evet.
Ah özür dilerim.
Ben elinizi yükselterek sanıyordum.
HEDEF KİTLE: Hayır, sadece [duyulamaz] oldu.
>> MARIA ZLATKOVA: Tamam.
>> HEDEF KİTLE: Teşekkür ederim.
>> MARIA ZLATKOVA: Tabii ki, teşekkür ederim.
Yani yine, nasıl içine gidiyor bilgi aktarılır
ve iletişim modelleri bilgileri aktarmak için.
TCP / IP.
TCP sadece Şanzıman demektir Denetim Protokolü ve IP
Internet Protokolü anlamına gelir.
Ve bu sadece atıfta yol verisi teslim edilir.
>> Bazı veri varsa o bu nedenle sen-- teslim ihtiyacı
Belirli bir sunucu için bir talepte.
Örneğin, zaman cs50.net erişmeye çalıştığınızda,
biz bir isteği yapmak CS50 sunucusu ve
Biz almak istiyorum görmek bilgi bu tür.
Ve sonra bu protokol dayalı Bu bilgilerin teslim edilir nasıl,
Sunucu bilgi verir bize geri istemci.
Ve sonra biz görmek mümkün değil sayfanın bilgiler
ve daha sonra kullanılır.
>> Öyleyse Köprü Metni Aktarım Protokolü sadece başka bir protokol ya ayarlayın
sözleşmelerin bu nasıl tanımlar web tarayıcı ve web sunucusu
iletmelidir.
Ve tüm bu koyarak Birlikte, HTTP, yine,
Sadece bu köprü tanımlanmış nasıl tanımlar biz bunu çalışıyoruz HTML ile,
size teslim edilmelidir nasıl ve nasıl size teslim olduğunu veri
size alır.
>> Siz hatırlarsanız Ve bu yüzden Bir sınıftan, biz istekleri bir sürü vardı
ve biz sözdizimi bir sürü vardı Biz konum bu istekleri
Şu anda üzerinde gidecek.
Yani yine, biz ne zaman göndermek Bir sunucuya bir istek,
Biz birkaç şey tanımlamak zorunda.
Yani biz türünü bulmak gerek Talep biz kuruyoruz söyledi.
Ve yine, var, örneğin, GET yöntemi bir türüdür
Bizim isteği var.
>> Ve sonra HTTP / 1.1 adildir Şu anda kullanmakta olduğunuz protokolü.
Çoğu zaman, bu oluyor biz kullanıyoruz protokole.
Eğer bir soru varsa yüzden senin sınavda böyle.
Bu sözleşmeler var biz bugüne kadar var.
>> Backslash Ne tür anlamına gelir şeyleri biz isteyerek ediyoruz.
Sonra, ana bilgisayar, bu, örneğin, bir dava, biz google.com gitmek için çalışıyoruz.
Yani bu bir konak için değerdir.
Bu talebin bir türüdür Bu gönderilebilir.
>> Yanıtın bir tür ve o olabilir gönderilen, yine bu protokol dayalı,
yine, HTTP / 1.1.
Yani HTTP sürümü tekrar var.
200 OK sadece durum kodudur.
Ve bu Tamam, sadece bir ifade olduğunu Bu durum koduna dayalı.
>> Ve sonra Content-Type Çeşidi değinmektedir
o ise size iade edilir Eğer aldığınız web sayfası için
ve tarayıcınızda o sonradan hale getirebilir.
Ve o metin / html 'dir.
>> HEDEF KİTLE: 1.1 ne anlama geliyor?
>> MARIA ZLATKOVA: Bu sadece var versiyon of-- oh, 1.1 ne anlama geliyor?
Bu sadece sürüm, HTTP biz kullanıyoruz protokol sürümü.
Büyük soru.
Diğer sorular?
>> HEDEF KİTLE: Eğer Özetle misiniz Content-Type çabucak?
>> MARIA ZLATKOVA: Böylece Ne sunucusudur.
ne information-- türü içerik türü sorular oldu.
Böylece türü oldu Eğer geri almak bilgiler
sunucunun, tipi gelen veri tarayıcı sonra olabilir ki
Eğer kullandığınızdan emin kılıyor.
HEDEF KİTLE: bu ne böyle mi protokol yapmanı söylüyor?
MARIA ZLATKOVA: Üzgünüm?
HEDEF KİTLE: protokol ne demek mi?
MARIA ZLATKOVA: protocol--
İZLEYİCİ: -Ne Content-Type veya ne--
MARIA ZLATKOVA: Protokol dayanır on-- söylüyorum protokol nedir?
Bu sadece yolu Bu bilgi bu
Size teslim edildi tabanlı protokolün ne tür üzerinde
Bu bilgiler var oldu size geri teslim etti.
Bu mantıklı tür mu?
HANNAH BLUMBERG: Sen protokolün düşünebilirsiniz
bir-- gibi Profesör düşünüyorum Malan nitelendirdi
olarak tür bir- gibi sınıfta o gibi İnsan tokalaşma eşdeğer.
Gibi, hey, ben bir istek duyuyorum, Say ve ben 1.1 sürümü ve HTTP nasıl işleneceğini biliyoruz.
Ve sonra sunucu, diyor Tamam, ah, ben- hem mevcut.
Ben de HTTP / 1.1 ile nasıl başa biliyorum.
Ve ben vereceğim Bazı içerik geri.
Bu durumda, bu oluyor türü text / html olmak.
Dolayısıyla bu tür bir yolu Bunların communicating-- için
>> MARIA ZLATKOVA: Bu sadece sen doğrulayan
her ikisi de aynı, aşağıdaki Protokol ve her iki
İstemci ve server-- böylece tarayıcı ve server--
sıralama sen biliyor bahsediyoruz var ve
verilerdeki geçiş için kongre.
>> HEDEF KİTLE: Yani Content-Type part-- Content-Type text / html-- işte
Aynı mesajın ayrı bir parçası mı?
Ya da en, 200 diyelim parçasıdır?
200 Onlara o ya o-- söylüyor mu
>> MARIA ZLATKOVA: 200 tüm Tamam gitti diyor.
Ve sonra içerik türü bir çeşit Aynı mesajın ayrı bir parçası,
ve bir şey söyleyerek ben İade text / html bu tür vardır.
Bu sadece daha fazla bilgi veriyor.
Eklemek istediğiniz bir şey var mı?
TAMAM.
>> Bu konuda Başka soru?
Başar.
Yani başka bir HTTP durumları bu Biz 200 OK ek olarak alabilir
belki gördüğümüz olanlar muhtemelen çok 403 ve 404 bulunmaktadır.
Yani 404, sen çalıştığınız takdirde yok erişim şey.
Örneğin Yani kayıt CS50 Finans psets,
Eğer quote.html render olsaydı ve bu dosyayı yoktu,
ancak bunun yerine o, quote.php vardı 404 neden olacaktır Bulunamadı
Dosya mevcut olmayabilir çünkü.
>> Bir 403 için bu, yasak izinleri anlamına gelir.
Bazı dosya ile değil okunabilir Yani eğer Dünya, bir 403 döndürdü alabilirsiniz.
Bazıları size olabilir 301, Kalıcı Taşındı get--;
302, Bulunan; 304, Modifiye; 400 Bad Request;
ve daha sonra Internal Server Error 500 ve 503, Hizmet kullanılamıyor.
Evet.
>> HEDEF KİTLE: Will biz bekleniyor Tüm bu durumları ezberlemek?
MARIA ZLATKOVA: ben olurdu onları hile kağıda.
[KAHKAHA]
HEDEF KİTLE: Biz bekleniyor mısınız Her birini tetikleyen biliyor musun?
MARIA ZLATKOVA: Onlar mı?
HANNAH BLUMBERG: biz ettik olanlar için böylece soru into-- koşmak Ben--
MARIA ZLATKOVA: Onlar bekleniyor mısınız Bu durumu her ne birini tanıyorum
kodlar tarafından tetiklenen olabilir?
Kullandığımız olanlar için Yani ve koştu, evet, derdi.
Bu yüzden kesinlikle 200 gördüm Tamam ve psets bunu dersleri verdi.
Biz, 404 403 gördüm.
Diğerleri için?
>> HANNAH BLUMBERG: I would 500 adil bir oyun gibi görünüyor söylüyorlar.
>> MARIA ZLATKOVA: 500, evet.
>> HANNAH BLUMBERG: Evet.
Sadece genel bir duygusu var Onları neden ne.
Ve de sadece bu isimleri yapabilirsiniz tür
gibi eğitimli bir tahmin olarak yapmak Neye aslında onları neden oldu.
Örneğin, büyük olasılıkla, kalıcı hareket Dosya kalıcı taşındı.
>> HEDEF KİTLE: Ama önceki on Sınav, bir o kadar oldu
bunu nasıl cevap bizi bekliyorsunuz?
>> HANNAH BLUMBERG: That Sıfır puan değerinde oldu.
Çaydanlık üzerine 418 soru teknik bir HTTP durum olduğunu
ama sıfır puan değerinde oldu.
Açıkçası, sen değilsin bunları bilmek bekleniyor.
>> HEDEF KİTLE: Gerçek bir biri mi?
>> HANNAH BLUMBERG: Bu bir gerçek biri, ama bu bir şey ifade etmiyor.
Sadece bir şaka.
Internet insanlar komik.
>> MARIA ZLATKOVA: Büyük sorular, çocuklar.
Başka soru?
>> HEDEF KİTLE: iç sunucu hatası nedir?
MARIA ZLATKOVA: Dahili Sunucu hatası sadece
kaldın demektir iletişim kuramıyor
nedense sunucu ile.
Yani ille değil yapmak zorunda şey
Böyle istemcisi falan.
Ben herhangi bir özel örnek bilmiyorum Biz açıklamak için üzerine gittim ki
ama evet.
>> HANNAH BLUMBERG: Elbette.
Yani, örneğin, gibi atalım Eğer mashup üzerinde çalışıyor söylüyorlar
ve Google sunucu bazıları için aşağı indi nedeni, bir elektrik kesintisi, diyelim.
Bu bir iç sunucu olurdu Hata ya da bir çeşit size ister of--
Bir yanıt geri almak olmaz.
>> MARIA ZLATKOVA: Evet.
Sen ne zaman bu sadece iletişim kuramıyor
nedense çünkü için sunucu ile aşağı gidiyor ya da başka bir nedenle evi.
Yani PHP içine atlama.
PHP, HTML aksine, bir olduğunu Programlama dili.
Ve biz o çünkü kullanmaya başladı web geliştirme için çok yararlı.
>> Biz ilk CS50 Finans kullandı.
Ve bu temelde bize getirir Birlikte bu biçimlendirme, tasarım,
ve biz aslında bilgileri nasıl kullandıkları Bir web sayfasında bir şeyler göstermek için.
PHP Yani kendisi PHP anlamına gelir Hypertext Preprocessor,
bu yüzden kendi başına bir özyinelemeli backnorym var.
Ve PHP etiketlerini açarak biz sol Soru işaretleri ile ve sağ okları
ve php.
>> Yani biz zaten bir demet gördüm.
Şimdi, biz sadece gitmek için gidiyoruz Bu konuda temel bazı şeyleri.
PHP ile, değişken So isimleri dolar işareti ile başlar.
Biz, yine, belirtmezseniz Değişken artık yazın.
Biz C ile yaptığı gibi, biz bunu gerek yok.
>> Biz farklı bir demet yapabilirsiniz değişkenlerle şeyler.
Biz bunları bir araya koyabilirsiniz Onları birleştirerek
Nokta gösteriminin ile hangi Biz yine C yapamadık.
Yine, biz biraz daha çok yönlülük var değişkenler açısından PHP ile.
Yine, bir ana işlevi yok.
>> Ve PHP yorumlanır derlenmiş aksine
Yani sadece biz C dosyaları yaptınız mı nasıl Biz PHP için bunu yapmak zorunda değilsiniz.
Ama doğrusu, yol dili olduğunu kendisi tarafından çalıştırılan, bu yorumlanır.
Ve sonra gevşek daktilo Sadece biz demektir
bir değişken belirtmek zorunda değilsiniz tipi ve değişken tipleri
Zamanında anlaşılmaktadır.
>> HEDEF KİTLE: Ama ne yaptım nokta birleştirme demek?
MARIA ZLATKOVA: Elbette.
Biz beraberken- şeyler koymak istediğinizde eğer öyleyse biz biraz değişken vardı
3 değeri vardı ve biz başka vardı dize değeri vardı değişken,
Beraber değişkenleri koyabilirsiniz Aralarında bir nokta koyarak
ve bunları birleştirerek.
Ya da oluşturabilirsiniz Değişken olarak adlandırılan isim
ve bir araya koymak İki dizeleri bitiştirmek.
>> Yani eğer biz çift bir dize vardı tırnak ve biz ondan sonra bir nokta koymak
ve sonra o, başka bir dize vardı tamamen bir dize yaratacak.
>> HEDEF KİTLE: Tamam.
MARIA LETONYA: o temizlemek miydi?
HEDEF KİTLE: Evet.
MARIA ZLATKOVA: Tamam.
Evet.
>> HEDEF KİTLE: diyorsunuz yorumlanmış ziyade derlenmiş,
Size bahsediyoruz değil olduğu gibi belirli olması gerekir
o C karşı PHP geliyor?
MARIA ZLATKOVA: biz demek derlenmiş karşı olarak yorumlanır,
ne demek istiyorsun?
Yani biz ihtiyacımız yok demektir çalıştırılabilir dosyaları PHP çalıştırmak için.
O gider gibi çalıştığı anlamına gelir.
bu mantıklı mı?
Biraz daha.
HANNAH BLUMBERG: Yani bir tercüman düşünebilirsiniz
sorumlu başka bir program olarak PHP ile satır satır gidiş için
aksine aslında, onu yürütme ikiliye aşağı tüm derleme.
Aslında hiçbir şey demek değildir Biz olması gereken ne kadar belirli hakkında.
Biz hala hassas olması gerekiyor ve yok senin noktalı virgül unutmak ve emin olun
Eğer senin dolar işareti ve bunun gibi şeyler.
İyi soru.
>> MARIA ZLATKOVA: Evet.
Yani çizgi hattı ile aynı C dosyaları ile karşı,
biz bütün finalini yapmak zorunda biz aslında çalıştırmadan önce.
Bu temel fark bu.
Fakat yine de, yapamayız gerçekten daha az spesifik olmak.
Yani PHP diziler temsil aslında sıralı bir harita.
>> Tuşlara diziler ortak değerler yüzden.
Iki yolu bir ilan Dizi, bu sözdizimi dayalı,
Biz daha açık olabilir diyerek biz bir dizi var
ve biz eşleştiren bu anahtar1 var değer2 eşler bu değer1, key2.
Ya da biz sadece bir dizi oluşturabilirsiniz bu değerler kendisini içerir
ve sonra tuşlar şekilde anlaşılacaktır.
Bu konuda herhangi bir sorunuz?
>> HEDEF KİTLE: Ne olur tuşları İkinci örnekte olacak?
0, 1, 2, 3?
>> MARIA ZLATKOVA Örneğin, bu sadece Bu anahtarlar mutlaka yok
bir farklılık yarat.
Onlar sadece nasıl yapabilirsiniz tanımlamak bunun içinde değerleri kullanın.
Yani eğer bir foreach vardı PHP döngü o olur
Hepimizi değerlere geçmesi için izin tüm değerleri üzerinden gidebilirsiniz,
bile biz veya tanımlanmış olmasaydı sitenin içinde belirli bir anahtar
Bir önceki sözdizimi.
>> Bu yüzden bile bu tür dizinin, biz hala olabilir
Bir foreach döngü var her geçer
Dizideki anahtar değerleri.
Bir foreach sözdizimi So Döngü, biz bir dizi ile başlar.
Bu $ dizi değişkeni bizim gerçek dizidir önceki slaytta tanımlanan
Kelimenin tam anlamıyla gider değer olarak değerlerin her birinden,
bağımsız olarak bağımsız olarak Biz anahtar vardı ya da değil.
Ve sonra bir şeyler yapabiliriz foreach döngüsü içinde bir değer.
Yani yine, eğer biz bir dizi vardı Bu burada created-- gibi
bu yüzden foo ve değerinin anahtar bar, baz anahtar ve qux-- değeri
Biz bir foreach döngüsü olabileceğini anahtar değeri olarak dizide geçer
ve sonra bir şeyler yapmak anahtar ve / veya değer ile.
Ama biz mutlaka her zaman değil Bir foreach bu döngüler olması
değere anahtarı harita olarak diziye geçer.
Biz gidebilirsiniz değer olarak foreach döngüsü dizisi.
>> HANNAH BLUMBERG: Ve bence soru, aşağıdaki amaçlara ne
örtülü indeksi nedir?
HEDEF KİTLE: Kinda.
MARIA ZLATKOVA: Oh.
HANNAH BLUMBERG: Evet, evet.
Yani temelde, belirttiğiniz yoksa anahtar, bu 01 olacak.
>> MARIA ZLATKOVA: Evet.
Sadece C gibi, sıfır var Bir anahtar belirtmezseniz endeksli.
HEDEF KİTLE: Özür dilerim.
Eğer konuşma deneyebilirsiniz Biraz daha yüksek sesle?
Ben biraz yaşıyorum sorun her şeyi işitme.
>> MARIA ZLATKOVA: Çok üzgünüm.
Evet tabi ki.
Yani bana istiyorsun Yine bu gitmek için?
Ya da bu-- olduğunu
HEDEF KİTLE: Önceki slide-- eğer So Sadece bir saniye geri gidebiliriz.
MARIA ZLATKOVA: Tabii ki, üzgünüm.
HEDEF KİTLE: Yani ikinci Burada dizi değil
anahtar bir değer var gibi görünüyor, çeşit [? nedensellik. ?]
MARIA ZLATKOVA: Doğru, doğru.
HEDEF KİTLE: Peki nasıl işliyor derken hepsi ya da hiçbiri bu.
Bana göre, bu gibi görünüyor Bir [? foo?] zaten.
>> MARIA ZLATKOVA: Evet, evet.
Yani yine, bu bir olduğunu Bu anlamda sipariş harita
Orada anladım ki, Örneğin, indeksler
Burada 0, 1, 2, 3 olarak anlaşılabilir.
Yine, sahip olanlar bu indeksler bizim eşdeğerdir
değerleri eşleştirilmektedir tuşlu.
Yani eğer bizim anahtar 0-- üzüldüm.
>> HANNAH BLUMBERG: Hayır, Orada burada tebeşir var.
Aslında çok güzel.
>> MARIA ZLATKOVA: Bu harika.
TAMAM.
Yani yine, $ dizi 0 olacaktır değeri 1 tuşuna basın.
0 değeri 1 için anahtar olacaktır.
İZLEYİCİ: Üzgünüm.
Bu görünmez.
>> HANNAH BLUMBERG: boşver Pekala.
Tebeşir kötü bir fikirdi.
Onu geri almak.
Siz tuşları düşünebilirsiniz değerine 1-0 haritalar gibi.
MARIA ZLATKOVA: Evet.
Yani bu, 0, 1, bu, 2, 3 'tür.
Bunlar senin anahtarları olabilir.
Sen evet as-- onları düşünüyorum olabilir.
Bunun yerine sahip açık anahtarlar, onlar
tür olarak anlaşılan indeksleri 0 başlayan.
Tebeşir yardım etmedi.
Evet.
>> HEDEF KİTLE: foreach döngüsü için, Biz değer olarak görmek istiyorsa,
0'a sadece otomatik endeksi ki?
MARIA ZLATKOVA: Evet.
Bu değerlerin her biri ile gitmek istiyorum.
HEDEF KİTLE: [duyulamaz] olarak 0 veya sadece 0 yapardın?
>> MARIA ZLATKOVA: Sen olurdu Daha sonra dolar işareti gibi söylemek
Bazı değişken ismi, değer.
HEDEF KİTLE: [duyulamaz].
MARIA ZLATKOVA: Üzgünüm?
HEDEF KİTLE: Üzgünüm, ben Sadece hatırlamaya çalışıyorum.
Bunu yapabilirsin yapmak olsaydı nasıl otomatik indeksleme sadece 0 mi?
>> MARIA ZLATKOVA: Peki bunu nasıl yapacağını Belirli anahtar adları yoktu?
>> HEDEF KİTLE: Evet.
>> MARIA ZLATKOVA: Sadece define-- olur sadece bazı isim olarak kendinizi söylüyorlar.
Yani psets olarak, sizler belki $ satır olarak foreach $ satır hatırlıyorum,
Biz kendimiz diyerek bu $ satır yarattı Biz $ satır olarak satıra geçmek istiyorum.
Biz yoktu olsa bile satırlar tanımlı Bu açık $,
biz sadece gidip olabilir Bu bizim anahtar olabilir demek
ve sadece değerlerinin her geçmesi.
>> HEDEF KİTLE: Yani değer, yeni bir değişken Biz [duyulamaz] saklamak için yaratıyorsunuz?
>> MARIA ZLATKOVA: Peki o değil doğal, yeni bir değişken.
Bu ifade eden bir değişken var Bunların her biri dizinin içinde.
HANNAH BLUMBERG: It Yeni bir değişken adı.
MARIA ZLATKOVA: Evet, yeni bir değişken adı,
ama evet inherently-- değil.
Bu sadece yeni bir değişken var Bunu yapabilirsiniz.
Dolayısıyla, sadece nasıl yaptığımız do $ $ satır, satır satır olarak
Yeni değişken adı oldu biz Bizim foreach döngüsü yaratabilir.
O önce önceden varolmasaydı zorunda değildir.
>> HEDEF KİTLE: Eğer geçmesi misiniz Orada örnek kullanarak her mantık?
MARIA ZLATKOVA: Mhm.
Ah özür dilerim.
İşte örnek.
Elbette.
Yani her yani array-- bu diziye gitmek demektir
Bu value-- anahtar olarak gidiyor Bu diziye geçmesi
ilk, gidin ve foo olsun Anahtar foo ve değer çubuğu.
Ve daha sonra ikinci on for döngüsü yineleme,
o geçmesi ve almaya gidiyor Anahtar baz ve değer qux.
Ve sonra birlikte bir şeyler yapabiliriz Bunlardan biri veya her ikisi de.
>> HEDEF KİTLE: Yani arkasındaki fikir değerine anahtar noktasına sahip olan,
Eğer erişen ne sonuna kadar mı?
>> MARIA ZLATKOVA: Fikir nedir önemli bir işaret değeri zorunda?
Bu sadece bir kongre, başka var dizinin geçiyor yolu
ve edememek ya erişmek için anahtar veya değer ya da her ikisi ve bunları kullanmak.
>> HEDEF KİTLE: rol nedir foreach içinde çalıştığını sipariş?
Biz eklemek için olsaydı Yani dizi elemanları sonra,
Bu ilk olanlar olacak foreach dizisi olarak adlandırılan,
ya da sonradan olurdu?
>> MARIA ZLATKOVA: Peki nedir foreach bu düzen
loop bir dizide geçer?
İlk geçer son öğeye eleman,
Son eklenen eleman.
Daha sonra öğeleri eklerseniz, bunlar olur birinci elemanlar olur accessed-- olmak
İlk olarak erişilebilir dizinin öğeleri,
ve sonra her aracılığıyla gitmek istiyorum Bir ordered-- tür gibi unsurlar
Bir emretti, ancak yol değil Onlar diziye konulmuştur.
>> HEDEF KİTLE: Yani yeni unsurlar Daha sonra ilave edilir?
Yani onlar olacak added-- ediyoruz [son olanlar? yineleme. ?]
>> MARIA ZLATKOVA: yeni elemanlar can-- temelde, yeni unsurlar eklendiğinde,
Onlar dizinin sonuna eklenir?
>> HEDEF KİTLE: Evet.
MARIA ZLATKOVA: Öyle inanıyorum.
Evet.
Ve sonra foreach döngüsü ile Eğer yeni unsurlar ekledik sonra
ve onları geçmek, yeni unsurlar olur
o ise, yeni elemanın accessed-- olmak Son eklenen son erişilebilir olacaktır.
>> HEDEF KİTLE: Eğer sadece bir örnek verebilir şey bu olur [duyulamaz]
değerine sahip bir şeyle [duyulamaz] veya değeri gibi,
bunu nasıl biçimlendirmek istiyorum Seviyorum?
>> MARIA ZLATKOVA: Elbette.
Ben bir örnek vereyim ne Biz değeri ile yapardınız?
Yani siz aşina ne olabilir Biz bir dizi geçtiniz ki
ve temelde baskılı elemanlarının her biri,
örneğin, bir parçası olarak sıralı liste falan.
Mantıklı ya da istiyoruz mu aşağıdaki amaçlara
HEDEF KİTLE: Biz bu değerleri yazdırmak miyim?
MARIA ZLATKOVA: Evet, biz baskı olabilir ve daha sonra temelde değeri, $ at çünkü
belirli bir değer, biz olurdu bunun içinde değerini yazdırmak.
Yani eğer bizim ilk tekrarda vardı ve bunun biz $ değer basılmış
Biz bar yazdırmayı olacaktır.
>> HEDEF KİTLE: için de vardır Are PHP döngüler ya da sadece foreach döngüsü?
>> MARIA ZLATKOVA: var Ayrıca PHP döngüler için.
Ve onların mantığı çoğunlukla Eğer kullanılan oldum ne aynı.
HEDEF KİTLE: onun değeri null yüzden.
MARIA ZLATKOVA: Aynı gibi.
Evet.
İZLEYİCİ: Ben sadece soracağım.
Yani bir ilan zaman Dizi, sana ihtiyacım yok
o gidiyor hangi boyutta anlatmak için yani olması sadece can
eklemek ve elemanları [duyulamaz] götürmek.
MARIA ZLATKOVA: Evet.
Aynen.
Kesinlikle.
Biz bir diziyi bildirmek, biz ne boyutta söylemek gerekmez,
Böylece biz sadece öğeleri ekleyebilir Daha sonra da o üzerine.
Daha çok soru?
Yani arada PHP ve HTML getirerek, ne de seen-- var,
Örneğin, bu örnekte, elimizdeki bir giriş alanı olan bir HTML formu.
>> Ve girdi alanı sadece adı ve sonra bir Gönder düğmesi vardır.
Bastığınızda ve Gönder düğme, bizim merhaba.php dosyasında
form için bir yöntem olduğu için olsun, biz isim de ne olursa olsun erişebilirsiniz
Bu küresel değişkeni olsun o $ _GET olduğu için sözdizimi bu--.
Ve sonra biz ne erişebilirsiniz adı bu form içinde kullanıcı girişi
Bu alanın adını belirterek.
>> Başka bir soru veya herhangi bir bu özel örnek üzerine sorular?
>> HEDEF KİTLE: PHP nerede?
MARIA ZLATKOVA: Burayı.
Yani bu PHP için açılış etikettir.
>> HEDEF KİTLE: Ah, evet.
>> MARIA ZLATKOVA: Evet.
>> HANNAH BLUMBERG:? = Kısaltmadır Bunun için PHP ve sadece yankı olduğunu.
HEDEF KİTLE: Oh.
MARIA ZLATKOVA: Evet, üzgünüm.
Ben açıkça yapılmış olmalıdır.
>> HANNAH BLUMBERG: Baskı.
MARIA ZLATKOVA: Sadece fonksiyon var Bu bize bir şey yazdırmak için izin verir.
Büyük soru.
Yani evet going--.
>> HEDEF KİTLE: Orada oldukça olacak mı PHP ve HTML el kodlama biraz
sınav 1?
MARIA ZLATKOVA: a olabilir yorumlama adil bir miktar
PHP ve HTML, ille kodlama büyük bir miktarı gibi,
Eğer bir yazmak zorunda olabilir ama foreach döngüsü olsa da, for döngüsü.
Halkaların herhangi biz Adil oyun burada kapak olduğunu.
Ve çoğunlukla bu.
HANNAH BLUMBERG: Ben hazırlıklı olacaktır.
Aynı şekilde biz sizi istedi sınav 0 C fonksiyonları bir demet yazmak,
Ben yapmaya hazır olacaktır PHP ve JavaScript aynı.
MARIA ZLATKOVA: Evet.
HANNAH BLUMBERG: söyleyebilirim değiliz gibi küçük--
gidiş Eğer büyük bir HTML yazmak yapmak Bu biraz sırf sayfa
sıkıcı, ama sen parçalara sahip olabilir.
Bu tamamen adil bir oyun.
Küçük bir HTML sayfası gibi, tamamen adil.
HEDEF KİTLE: Tamam.
Peki JavaScript yanı?
HANNAH BLUMBERG: Evet.
JavaScript'in adil oyun.
>> MARIA ZLATKOVA: Evet.
Bu tamamen adil bir oyun.
HANNAH BLUMBERG: Biz alırsınız gibi 10 dakika içinde o kadar.
>> MARIA ZLATKOVA: SQL, yine, Yapılandırılmış sorgu dili.
Temelde bize verileri yönetmek için izin verir Bir ilişkisel veritabanı yönetimi
sistemi.
Bu sadece temelde anlamına gelir biz bir yere sahip olduğunu
Biz isteyebilirsiniz bazı verileri depolamak için Bir web sitesinde veya başka bir biçimde kullanın.
Ve sonra biz almak sorgu var Bizim veritabanı bilgi,
ya onlara bilgi eklemek için.
Ortak ones-- UPDATE bir sürü INSERT, SELECT, ve DELETE.
>> Yani UPDATE, bu sözdizimi Bir veritabanındaki verileri güncelleştirmek için.
Denilen bu tabloyu güncelleniyor SET söyleyerek tablo,
Hepimizin bazı değerleri ayarlayabilirsiniz başka bir şey eşit satırları.
Bu yüzden de bazı özel belirtebilirsiniz Biz Değiştirmek istediğiniz girdileri
ve bu NEREDE kullanıyor olabilir.
Ve biz sadece istediğinizi belirtebilirsiniz Bazı satırları değiştirmek nerede ev,
Biz öğrencilerin bir tablo olsaydı ve tüm öğrenciler, ev vardı
bu yüzden sadece bazı değerleri değiştirmek istiyorum Bir ev Currier eşittir,
Örneğin.
>> INSERT için, ekleyebilirsiniz Bir tabloya belirli değerler.
Yani INSERT INTO tablo, ve ve bu değerler,
ve daha sonra parantez içinde, biz belirtmek hangi Eklemek istediğiniz değerleri.
Yani masa, col1 INSERT INTO ve col2, değer val1 ve val2 olduğunu.
Yani bu içine temelde yeni bir satır ekler değerleri 1 ve 2 içeren bir tablo
sütun 1 ve 2 kapsamında.
>> Ve sonra biz gitmek için gidiyoruz Bu nasıl görünüyor hızlı bir örnek
biraz bizim veritabanı gibi.
Ama bu son sorgu ben biz üzerinden gitmek için gidiyoruz düşünüyorum,
SEÇ, sadece bize izin verir Bir tablodan veri seçmek için
muhtemelen sonradan kullanmak için.
Ve biz bunu yapmak yoludur biziz sadece bazı değişken saklayın.
Ve sonra biz muhtemelen tekrar kullanabilirsiniz.
>> Yani SEÇ yıldız tümünü seçmek anlamına gelir.
Bu sadece bir steno var Tüm seçmek için.
Masanın NEREDEN, biz arıyoruz bazı özel durumlar için,
Böylece kolon eşittir Örneğin şey.
Biz sadece isteseydik tablodan tüm seçin
Bu sadece tüm sütunları seçer ve bir tablodan tüm satırları.
>> Ve sonra masaya DELETE FROM NEREDE col şey eşittir,
Bu sadece bazı siler masamıza kürek
nerede bazı özel koşulları var.
Bu durumda, şartlar olan sütun şey eşittir.
Bu yüzden sadece hızlı bir örnek.
Biz burada ve biz bu tabloyu varsa Bir tabloya yerleştirin, bu değerler,
Bu yeni bir satır eklemek istiyorum.
Oto-artış olsaydı, bu olurdu Sadece 2 0'dan 1'e bizim kimliğini artırmak.
>> Öğrencilerden tüm seçtiyseniz, onu Sadece tüm alanları ve tüm satırları döndürür.
Nerede yıl daha fazladır 2016 eşit veya,
sadece dönecekti Hannah ve ben.
Ve o zaman biz sadece seçtiyseniz Öğrencilerin DAN yıl id ve yıl
nerede ev Cabot Evi yani, Yine, Hannah ve kendimi dönecekti.
>> Sonra öğrencilerden silerseniz nerede name, Rob eşittir
bütün o satır silmek istiyorum.
Ve sonra biz ayarlarsanız isim, UPDATE öğrenciler
SET adı Daven eşittir NEREDE Evin eşittir
Cabot House buna gidecek Bu satır ve sonra adını güncelleyin.
>> Ve sonra bir kaç SQL veri türleri CHAR, VARCHAR, INT ve FLOAT.
Bunlar adil oyun bulunmaktadır.
Ben tekrar gitmek istiyorum ve bildiğinizden emin olun
ve senin hile kağıda onları Ne bu karakterler her
kullanılmaktadır ne Eğer, senin psets bunları kullanılmış
ve tanıdık olduğunuzdan emin olun ve seçmek zorunda rahat
senin pset farklı veri türlerinden.
Evet.
>> HEDEF KİTLE: Bu tablo ne saklandı?
Evet, nerede bu tabloyu saklanır?
MARIA ZLATKOVA: Şey, Şu anda, bu depolanmış değil.
Neyse, nerede bu tabloyu saklanır?
Ama bir SQL veritabanında saklanabilir.
>> HEDEF KİTLE: Ve nerede SQL veritabanı nedir?
Bilgisayarda, çevrimiçi yerde, sunucu?
>> MARIA ZLATKOVA: Bu bir olabilir farklı şeyler sayısı.
>> HANNAH BLUMBERG: Biz arabirim ettik Çoğunlukla phpMyAdmin SQL tabloları.
Yani biz bir sunucu sorabilirsiniz Bizim için bunları saklamak için.
Biz kendi bilgisayarında bunları saklamak olabilir.
>> MARIA ZLATKOVA: Sadece bağlıdır nasıl kendiniz için bunu yapmak istiyorum.
Ama biz depolamak edilmiştir Onları, Hannah belirtildiği gibi,
phpMyAdmin, hangi yayında.
Ve sonra yol kullandığımız PHP ve SQL, bunu saklamak
Bazı değişkene ne için sorgulanan ettik.
>> Hepimizin tarihin SELECT FROM Yani eğer user_id OTURUM kimliği eşittir,
tüm satırları seçmek istiyorum belirli bir kişi için kim
Tarihten kaydedilir masa ve sıralar halinde bunları sıralamak.
Bilmek serin şey CS50 sorgu işlevi olduğunu
SQL injection etiketleri karşı korur.
Yani sadece emin kılan demektir girildiği giriş doğru
ve o kişi kim giriş giriyor
girişine çalışıyor değil bazı kötü niyetli Kod ya sofralarımızı düşmesi
ya da her şeyi silmek Bizim veritabanı içinde.
>> Hızlı bir bakış Model View Controller modeli
o organize bir yolu var ve kod düşünmeye.
Bu, yine bir tasarım paradigma bu.
Ne yani biz ise can-- ve iyi bir uygulama var
farklı bölümlerini ayırmak için Bizim kod ve ne onlar
Bu üç paradigmalar içine kontrol.
>> Yani bizim görünümü en sık olan bizim şablonlar, bizim düzen, yol
Bu bizim kod nasıl göründüğünü ayarlayın.
Bu çoğunlukla bizim CSS dosyaları ve yolu Bizim kodun tasarımını tanımlanan,
temelde.
Bizim denetleyicisi çoğunlukla ne olduğunu PHP dosyaları ile yapıyorum.
Yani yine, çalışan Elimizdeki bilgiler
ve tanımlama nasıl bilgi, kullanılan
ve daha sonra bu bilgileri geçen Ya görünümü veya modele üzerine.
Ve modeli biz ettik yolu kullanılarak edilmiş, bizim veritabanı olmuştur
yani bizim bilgi nerede bir yerde vardır bu yüzden saklanır
yaşamak ve herhangi Bu arada ilgilidir kod
Biz bu bilgiyi ya da almak biz bu bilgileri güncelleştirmek yolu.
>> MVC modelinde Yani, HTTP istekleri bir web sunucusuna gönderilir.
Daha sonra, kontrolör, yorumlanması kullanıcının isteği
ve sonra kullanıcı girişi doğrular.
Biz var isteğe bağlıdır kontrolör iletişim
Bir model ile, bir şey yani Bizim veritabanı gibi
ya da başka bir işlevsellik bu bilgileri aktarır.
Ve son olarak, kontrol cihazı görünümü üzerine bilgi geçer
böylece olabilir render ve olabildiğince bu
herhangi bir kişiye görünür hale web sayfasına erişmek.
>> Sorusu olan?
Başar.
Yani yine, modeli, fonksiyonu, yine,
bilgi kalıcı depolama olduğunu yönetme ve veri organize.
Ve biz çok ne gördüm uzak MySQL veritabanı
ve herhangi bir veri dosyaları kullanabilirsiniz söyledi.
>> Görünüm, bilgi sunumu için Kullanıcı, UI, ya da kullanıcı arayüzü.
Ve bu örnek HTML.
Ve sonra en az PHP olabilir.
Yani bir döngü o yinelenir veriler üzerinde dışarı basılır
görünümün bir parçası olarak, bir kontrolöre karşı çıktı.
Ve bizim PHP dosyaları sonra bir sürü Kontrolör kategoriye girer.
Sadece kullanıcı isteklerini işler ve modelden bilgi alır.
>> Belgenin içine atlama Object Model, bu sadece
Bu arada, HTML değinmektedir belgeler düzenleniyor.
Ve onlar bir ağaca organize ediyoruz bir hiyerarşi vardır yapısı.
Biz erişiminiz varsa yüzden [duyulamaz] Belgenin temsili,
bizim gibi, belge ile çalışabilirsiniz biz temelde nesneleri işlemek.
>> Ve bu a yapmak Biraz daha net, ne zaman
Biz çok şey var bizim Farklı etiketler cevap
Bizim ağacında farklı yolları.
Sonra, bu sözgelimi, başlangıç ​​belge düğümünü var.
Biz, o zaman, bizim HTML düğümü Bu kafa ve vücuda böler.
Baş sonra başlık vardır ve başlık, merhaba dünya içerir.
Ve vücudumuz sadece içeriyor merhaba, dünya da.
>> Herhangi Yani herhangi bir soru Şimdiye kadar kapalı şeyler?
Ve eğer, Hannah olacak JavaScript ile devralmak.
Başar.
>> HANNAH BLUMBERG: Tamam, güzel.
Şey PHP veya HTML ile gelirse, veya Maria kaplı şeyler herhangi
biz her zaman durdurabilirsiniz.
Biz iyi olur yapıyoruz Zaman yine çok harika.
Ve sadece geri dönmek için Gerçekten hızlı bir şekilde bu kadar,
Her bakarsanız Geçtiğimiz yılki sınav, bu
either-- burada çıkageldi bazı HTML, bu diyagram yapmak.
Ya da burada, bu diyagram, bazı yapmak HTML, yani kesinlikle pratik.
Ve sonra o kimse garantili bulunuyor Doğru alabilirsiniz soru.
Güzel.
Öyleyse JavaScript bahsedelim ve biraz var nasıl
PHP ve benzeri dillerde farklı C, biz önceden gördüğümüz iki dil.
Yani bir numara, o gevşek yazdığınız oluyor.
İşte PHP gibi, ama C. aksine
>> Bu bir dil var.
Yine, bu gibi PHP, C. Ve tersine
bize bunu use-- izin gidiyor web sayfaları ile gerçekten güzel çalışıyor.
Bize işlemek için izin gidiyor içeriği ve nasıl görünüyor
ve ne yaptığını.
>> Biz Ajax biraz görmeye gidiyoruz.
Bize iletişim kurmasını sağlar zaman uyumsuz farklı sunucuları ile
ve bilgi alabilirsiniz.
Ve bu şey gerçekten PHP ve C JavaScript ayıran
Bu istemci tarafında olmasıdır.
Hem PHP ve C vardır tipik sunucu tarafı.
>> Çoğunlukla ve Neredeyse tamamen Ne
Biz en azından, gördüm Bu sınıf, JavaScript
yani, istemci tarafında hareket Tarayıcı aslında olduğunu
Çalışan sorumlu değildir.
Ve biz değiliz demektir sunucu ile etkileşim gerekir.
Yani o çok daha hızlı olabilir anlamına gelir aslında çünkü sadece, Chrome bulunuyor
o Firefox, bu, Safari ne olursa olsun size Aslında kullanın JavaScript koşuyor.
>> HEDEF KİTLE: asenkron ne anlama geliyor?
>> HANNAH BLUMBERG: Ah ne zaman uyumsuz demek?
Büyük soru.
Eşzamansız means-- iyi, içerik hangi
biz Tamam olduğunu kullanın, biz Bir web sayfası oluştururken
ve biz biraz bilgi almak gerekir.
Mashup'a örnek Yani Biz isteyebilirsiniz bazı bilgiler
makale başlıkları olduğunu.
Şimdi, biz bir seçenek Yapabileceğim eşzamanlı bunu yapmak için
ve bu diyelim demektir durdurmak, makale gidip,
Daha sonra makale geri almak ve işlemek, ama bu gerçekten yavaş olurdu.
Kötü bir kullanıcı deneyimi olurdu Sadece oturuyor olurdu çünkü
bir şey yanıt için orada bekliyor.
>> Eşzamansız biz demektir Bizim iş hakkında gidiş devam
sayfa render ve Biz bir istek göndermek edeceğiz
Bu tür gidiyor Arka planda olur.
Ben örnek olarak kullanmak düşünüyorum Rob arama ve söyleyerek anlatım,
hey, bu kadar bakabilirsiniz ve benim için bana geri almak,
Sadece bana karşı Telefonda bekleyen.
Yani zaman uyumsuz olmuyor demektir Bizden uzak arka planda
paralel.
>> Büyük soru.
Başka herhangi bir şey?
Büyük.
Biz içine çok daha fazla atlarsınız Ajax ile asenkron istekleri.
>> HEDEF KİTLE: does nerede JavaScript-- mu o Model-View-Controller ile sonbahar?
HANNAH BLUMBERG: Büyük bir soru.
Nerede JavaScript düşüş yapar Model-View-Controller ile?
Hm.
Ben fall-- sanırım bu yüzden biz genellikle yok
Bu içine ezmek ister paradigması, ama ben söyleyebilirim sanırım,
Tamam, JavaScript, böylece aslında izin gidiyor
Bize, veri toplamak için Aslında yapmak, verileri yorumlamak
verilerle anlamlı şeyler.
Bu şekilde, çok kontrol gibi.
>> Ama aynı zamanda bizi izin gidiyor şeyler ve baskı şeyler görüntüler.
Bu şekilde, çok görünüm gibi.
Evet.
Yani PHP gibi bir şey bu tür her iki yerde olabilir.
İyi soru.
Başka herhangi bir şey?
Pekala, müthiş.
Boyunca doğru hareket ederek.
>> Yani bir örnek görelim Kullanabileceğimiz nasıl
Web programlarından birinde JavaScript.
Yani bu düşünün gerekir HTML bir grup ile index.html.
Ve bir şey seni istiyorum odaklanmak, bu betik etikettir.
Ve bu Tamam, biraz çalıştırmak istiyorsanız, diyor O yaşadığı burada JavaScript ve olduğunu.
Bu hello.js yaşıyor.
>> Çok CSS gibi, biz olabilir HTML içinde JavaScript koydu.
Neden biz bunu ayırmak isteyebilirsiniz?
Evet.
>> HEDEF KİTLE: yeniden yazmak için kolay?
>> HANNAH BLUMBERG: Evet.
Bu genelinde kullanımı kolay Farklı web sayfaları.
Bu temizleyici şeyler tutar.
Sadece iyi bir uygulamadır.
Başar.
Güzel cevap.
Çok iyi, bu nedenle bu oluyor Bizim index.html olmak.
Ve sonra aşağı burada olduğunu küçücük JavaScript dosyası.
>> Ve diyor ki, tüm Merhaba dünya uyarısı olduğunu.
Peki ne zaman olduğunu Bu sayfayı renders--
bu yüzden ne olursa olsun web sitesine giderseniz Bu tüm ne olacak bu--
Tamam, ben, gidiyor söylemek Bu JavaScript kodu çalıştırmak için gidiyor.
Ve bu JavaScript kodu Sadece uyarı Merhaba, dünya diyor.
Yani bu alacağım dost küçük pop-up.
>> Güzel?
Bu ilk tür kızımız gibi JavaScript program, bizim Merhaba dünya.
Orijinalini biraz daha bakalım neler JavaScript sözdizimi gibi görünüyor.
Ve özellikle, en karşılaştırın izin Daha önce gördüğümüz C ve PHP.
>> JavaScript, biz zorunda gidiyoruz var, değişken adı ve sonra
onun gerçek değeri.
Ve biz sadece bir türünü belirtmek yok PHP, ama çok C. aksine gibi
İstediğimiz Örneğin, eğer öyleyse değeri 50 saklamak için,
C biz söylemek gerekir, hey, C, ben bir tamsayı istiyorum,
Ben onu aramak için gidiyorum Ben ve değeri 50'dir.
PHP, bu biraz daha kolay.
Biz hey, ben bir değişken istiyorum, demek i olarak adlandırılan ve değeri 50'dir.
Çok benzer, JavaScript, biz hey, ben bir değişken i denir istediğini söylüyorsun
değeri 50'dir.
Ben her kullandığınızda sonraki zaman Ben, ben Var yazmaya gerek yok.
Sadece ben bu noktadan itibaren bu.
C, aynı şekilde, in Biz i int söylemek kez biz sadece i kullanın.
Güzel?
Pekala.
>> Döngüler için taşıma, Neyse ki, bu neredeyse
Ben onlar olduğunu düşünüyorum tam olarak-- bakmak Ne tam olarak aynı
döngüler gibi bakmak için gidiyoruz C gibi bir şey nerede sizin yanınızdaki döngü için
Üç sahip oluyor Bir başlatma parts--
bir durumdur ve bir güncelleştirme.
Bir while döngüsü, bu tam olarak aynı görünüyor.
Biz sadece bunu bir koşul verir.
>> Ve bir do while döngüsünde, Yine, aynı.
Biz bunu bir koşul verin.
Diyelim ki çakışık yineleme istedim diyelim Bir şey beş kez yapmak istedim.
C, biz mal olabilir init i 0 eşittir.
i 5 den az, i ++.
Tek fark, JavaScript, Bunun yerine ben 0 eşittir int söyleyerek,
Biz var i 0'a eşittir söylüyorlar.
Güzel.
Tek fark bu.
Bu herhangi herhangi bir sorunuz var mı?
Evet.
>> HEDEF KİTLE: PHP Yani, aynı şey şey hariç ama bir değişken gibi mi?
Ya da var, örneğin oldu?
HANNAH BLUMBERG: Evet.
Yani PHP, gidiyor dolar işareti olması.
Yani $ i eşitler gidiyor 0, $ i $ i ++, en az 5 olduğunu.
Büyük soru.
>> Şimdi bahsedelim işlev bildirimleri.
C, biz ilan ettiğinde bir işlevi, biz bir isim verdi
ve biz bazı parametreler verdi.
Ve başında, biz tip yazdı.
JavaScript, hepimiz yazma yapmak zorunda
Anahtar kelime fonksiyonu olduğunu hey, JavaScript, diyor
Ben bir işlev tanımlamak üzereyim.
>> Bu durumda, bu adı toplamı bulunmaktadır.
Ve iki argüman, x ve y alır.
Umurumuzda değil dikkat edin x ve y türleri hakkında.
Ve tıpkı C gibi, biz Bu kelime dönüş,
bu yüzden bir şeyler yapabiliriz Dönüş x ve y gibi.
>> Ve şimdi bir kez biz bu ilk yazdık işlevi, her yerde toplamını kullanabilirsiniz.
Ve bu tamamen iyi.
Bir gerçekten harika bir şey hakkında C aksine çok JavaScript
olduğunu işlevleri olabilir ki değerler gibi muamele.
Yani biz burada gibi bir şey yapabilirsiniz Sanırım nerede bu up-- kapağı
Ben var toplamını örtbas part-- ve biz sadece dedi
Fonksiyon xy dönüş x artı y eşittir.
>> Yani ne diyeceği ise Bir anonim işlev.
Bir isim vermeden bir işlev var.
Bu işlev diyor Oysa toplamı, vesaire, vesaire, vesaire,
Bu sadece işlevi söyleyebilirim.
Ama şimdi olsa bile Bu anonim işlev,
Bu fonksiyon gerçekten sadece bir değerdir.
Biz bir değere gibi davranabilirsiniz.
>> Yani biz bir değişkene aynı kaydedebilirsiniz şekilde biz bir değişkende 50 saklamak.
Bu yüzden Tamam, bir istiyorum, söyleyebilirim Değişken, bu toplamı denir
ve bu fonksiyonudur.
Yani bu iki şey aslında aynı şeyi yapacağız,
ancak sözdizimi biraz Farklı ve eğlenceli bir not tür.
Evet.
>> HEDEF KİTLE: Eğer diyebiliriz Yani diyerek anonim oldu işlevi,
toplamı parantez 2, 5?
HANNAH BLUMBERG: Evet.
Bu anonim çağırabilirsiniz Aynı şekilde işlev görmektedir.
Sen toplamı yapardı (2, 5) ;.
Bu tamamen iyi olurdu.
>> Ben var toplamı eşittir yapmadım Eğer fonksiyon, sadece silindi eğer
bu-- Ben benim taraftan olduğunu biliyorum, ama o zaman paha silindi iddia
Bu fonksiyon tür sadece gitti.
Yine, çünkü kullanmak asla Eğer bunun için bir isim yok.
Bu şeye başvurmak için zor Ne aramak için bilmiyorum.
İyi soru.
Evet.
>> HEDEF KİTLE: sen toplamı başvuru miyim x artı y değeri ile diğer yerlerde?
>> HANNAH BLUMBERG: Can sen diğer yerlerde referans toplamı
değeri x artı y?
Ne demek istediğimi tamamen emin değilim.
>> HEDEF KİTLE: Peki senin geçmiş yarı anonim Fonksiyon toplamı bu eşit olduğunu
anonim işlev, yani toplamı Eğer can-- şimdi değişken
HANNAH BLUMBERG: Doğru.
Yani toplamı değişkendir, ancak actually-- var:
yani toplamı olan bir değişkendir değer fonksiyonudur.
Dolayısıyla bu tür bir işlevi olduğunu Bir garip şey başınızı etrafına sarmak için
biz oynamaya oldum beri C ve C de bunu yapamam
Ama şimdi biz diyoruz özetleyebilirim Burada toplamı diyebiliriz aynı şekilde.
HEDEF KİTLE: Tamam.
HANNAH BLUMBERG: Evet.
İyi soru.
Evet.
>> HEDEF KİTLE: Yani kullanmayın PHP veya JavaScript prototipler?
HANNAH BLUMBERG: Hayır, biz prototipler kullanmanız gerekmez,
Özellikle JavaScript.
Ben Yani kötü bir uygulama şey Yapmanız gerektiğini söyleyecek
Eğer var i = 50 yazmak zorunda kalmamasıdır.
Sadece 50 = i yapmaya başlayabiliriz.
Ve sadece ben global bir değişken olur.
>> Bu çok kötü bir uygulamadır asla explicity var i, say
ama yapabileceğin bir şey var.
Tercüman değil sen bağırma olacak.
JavaScript, oldukça gibi ne istersen yapabilirsin.
Ah özür dilerim.
İki var.
Turuncu pantolon.
Devam et.
>> HEDEF KİTLE: Hayır, önce sen.
>> HEDEF KİTLE: Hayır, ben sadece diyordum Ben elimi yukarı yoktu.
TAMAM.
Aramak için olsaydı Yani ilk kez, şimdi, özetlemek
Aynı şekilde diyoruz, x y her zamanki gibi?
HANNAH BLUMBERG: Evet.
Yani bu iki esas aynı şeyi yapmak.
HEDEF KİTLE: Peki avantaj bir ya da daha başka bir kullanımının?
HANNAH BLUMBERG: Hayır avantaj bir ya da daha başka bir kullanımının.
Ben sadece ikinizi göstermek istedim sözdizimi farklı parçalar.
Bir çok kez nerede anonim fonksiyonlar bir amaç var
Eğer başka bir argüman işlev bir fonksiyonu olacaktır.
Ve biz o göreceğiz Ajax ile bir saniye.
>> Herhangi bir mantıklı gelmiyordu eğer öyleyse, Kafanın arkasında saklayın.
Bu nerede bir anonim var işlevi yararlı olabilir
gerçekten değer değil çünkü biz sadece konum beri bir ad vererek
kez kullanmaya devam.
Evet.
>> HEDEF KİTLE: Eğer x ve y değişikliği sonrası üzerinde, hem de değiştirebilir özetlemek olacak?
HANNAH BLUMBERG: Eğer x ve y değişim Daha sonra, hem de değiştirebilir özetlemek olacak?
Yani bu aslında bir , bir şeyi düşünmek
Yine, sadece çok farklı hissediyor C ila Bu değer değildir.
Bu 5 değil.
Sadece kendisi işlevi var.
Yani en kısa sürede bunu parametreleri vermek gibi, o aslında bir değeri hesaplamak gerekir.
>> MARIA ZLATKOVA: Ve Eğer işlevini çağırabilirsiniz
ve bazı değerini almak için kullanabilirsiniz.
HANNAH BLUMBERG: Doğru.
Kesinlikle.
Evet.
>> HEDEF KİTLE: eğer yüzden sadece değişkeninde saklayın
var x gibi iki values-- toplamına eşittir
>> HANNAH BLUMBERG: Evet.
Yani sadece var toplamını yapabileceği iki değerin toplamına eşittir.
Evet.
Başka soru?
Evet.
>> HEDEF KİTLE: Ama olur böyle toplamı ve toplamı karıştırmayın?
Eğer değişken toplamı ararsanız gibi, İşlev toplamı diyorsun?
HANNAH BLUMBERG: Mm.
Mm.
Eğer bir şey yaptıysak gibi, toplamı toplamı 2, 5 eşittir?
>> HEDEF KİTLE: Evet.
>> HANNAH BLUMBERG: Ben inanıyorum toplamının değeri üzerine olacaktır.
Yani başka ilginç JavaScript hakkında bir şey
tek bir değişken alabilir ki Farklı türde bir demet.
Kötü uygulama.
Bir şeyler yapmamalıdır gibi sadece ne dedi.
>> Ama C, ben ayarlanırsa bir tam sayıya eşit,
Biz asla olduğunu biliyorum bir dize olmaya devam.
Bu JavaScript durum böyle değil.
Evet, iyi bir soru.
Başka herhangi bir şey?
Pekala.
Zamanında tüm haklarını yapıyor.
Tutulması gidiyor.
Pekala.
>> Biz bir dizi bakarsak JavaScript, burada
dizelerden oluşan bir dizi hızlı bir örnektir.
Ve diziler dinamik büyüyebilir.
Onlar yok Aynı şekilde, sabit boyut
Onlar C yapmak olduğunu biz erişebilirsiniz Sadece köşeli parantez ile elemanları.
>> Yani PHP ve bir sürü çok benziyor Bu durumda, diyebiliriz C gibi,
Ben kelimesini JavaScript isteseydim, yapardım 0, 1, 2 ile köşeli parantez arr yoktur.
Biz Ve sonra C hatırlarsanız Bir dizinin uzunluğunu almak istedim,
Gerçekten sinir bozucu oldu.
Ama JavaScript, süper kolay.
Tüm yapmamız, .length.
O uzunlukları verir.
Bu kadar.
>> HEDEF KİTLE: Bu kadar basit.
>> HANNAH BLUMBERG: Evet, yapar hayatınızı çok daha kolay.
Tamam, yok object--.
JavaScript hissediyorum nesneler C yapılar gibi bir çok
ve PHP ilişkisel diziler.
Yani biz ne gördüm bir sürü JSON olan
JavaScript Object Notation duruyor.
Ve bu temelde bir yoldur bizim veri yapılandırılması.
>> Yani bir örnek görelim, muhtemelen en kolay.
Yani burada bir nesnenin bir örnek Bu CS50, sınıf saklar.
Ben sınıf derken, ben, ders demek değil, evet CS50 kursu da--.
Ve göreceksiniz ki Nesnenin her şeyi
içerdiği olacak küme parantezi.
>> Ve biz alan adlarını ilişkilendirmek başlar veya farklı değerlere sahip tuşlar.
Peki bu nasıl tür görmeye başlayabilirsiniz PHP bir ilişkisel dizi gibi hissediyor.
Yani biz alanını ilişkilendirmek için gidiyoruz ya da anahtar adı, kurs, dize ile,
CS50.
>> Biz bir eğitmen zorunda gidiyoruz.
Biz TFs zorunda gidiyoruz.
Biz psets sayısını zorunda gidiyoruz ve biz kaydettik gidiyoruz.
Ve unutmayın, bir serin şey tümüdür bunlar farklı türleri vardır,
ve bu tamamen iyi.
>> Bu, aslında, bir nesne için gayet muhtemelen bir nesne için beklenen
dizeleri bir arada olması ve sayılar ve Boolean ve diziler
ve herhangi başka olabilir senin nesne içinde olmasını istiyorum.
Ve bunlar olacak unutmayın adları veya tuşları ve o zaman biz sadece
Biraz kolon değerine ayarlayın.
>> HEDEF KİTLE: Tam JSON ne anlama geliyor?
HANNAH BLUMBERG: Ne Tam JSON demek?
JSON sadece açılımı JavaScript Object Notation.
Bu biçimlendirme sadece bir yolu.
Evet.
Bu bizim veri biçimlendirme bir yolu.
>> C, bu yapılar var.
PHP, bu ilişkilendirilebilir diziler var.
JavaScript, biz nesneleri var.
>> HEDEF KİTLE: Yani CS50 bir nesne değil mi?
HANNAH BLUMBERG: CS50 olduğu Bu durumda, nesne.
Şimdi, nasıl biz aslında erişimi yapmak bu alanlar, bu alanları değiştirmek veya.
Örneğin, biz karar varsayalım Bir az pset bu dönem istedi.
Bunun yerine dokuz, biz konum Sadece sekiz zorunda olacak.
Bunu nasıl değiştirecek?
>> Oh, yanlış yol.
Biz bunu iki yolu vardır.
Sayı bir nokta ile olan notasyonu ve iki numaralı
köşeli ayraç ile.
Yani, örneğin, ben eğer değiştirmek veya erişim istedi
Bizim CS50 nesne psets alan ne yapacağını CS50.psets olduğunu
böylece nesne nokta adı alan veya anahtarın adı.
>> Çok benzer, bu tam olarak eşdeğer sonra CS50 yapmak ve
köşeli parantez içinde, psets.
Güzel?
Evet.
>> HEDEF KİTLE: Yani JSON olduğunu teknik olarak hala JavaScript,
olsa psets biz [duyulamaz] bunu ayırmak?
HANNAH BLUMBERG: Elbette.
Soru Yani, vardır JavaScript ve JSON eşdeğer?
Yani JSON gösterimi temelde olduğunu biz yazmak yolu
JavaScript bir nesne.
Yani tam olarak aynı değiller.
>> Orada, JavaScript söyleyebilirim JavaScript nesnelerdir.
JSON bu nesneleri alır ve Onları yazdırır ve bunları görüntüler
veya güzel bir şekilde saklar.
Böylece JSON bir programlama değildir dil JavaScript yolu.
Bu sadece gösterim var JavaScript bizim nesneler.
Evet.
>> HEDEF KİTLE: Peki tam olarak ne [Duyulamaz] tamamlamak?
HANNAH BLUMBERG: Elbette.
Yani bu aslında hiçbir şey yapmaz.
Bu erişmek için sadece bir yoludur.
Yani biz değiştirmek istedim diyelim Sorun set sayısı
sekiz dokuzdan.
Yaptığımız şey yapmak olduğunu CS50.psets = 8 ;. gibi
>> Evet, harika bir soru.
Bu sadece size sözdizimi göstermektir.
Gerçekten yararlı bir şey yapmaz.
Sorusu olan?
Boyunca doğru hareket ederek.
>> Yani nasıl hızlı bir örneğe bakalım Sana bunu söyledim çünkü JavaScript işleri
yaptığı bütün bu güzel şeyler ve Bize web sayfalarını değiştirmenize olanak sağlar.
En doğrusu eylem görelim.
Yani, örneğin, bu HTML dosyasını almak.
>> Ve ben seni odaklanmak istiyorum şey Bir düğme bu özel etiketi,
id search_button ile.
Sadece sayfada var.
Bu yüzden şimdi görelim neler aslında yapabiliriz.
>> Peki, ne zaman varsayalım O düğmesini tıklatın
biz alert-- yapmak istiyorum düğmesine tıkladım.
En bunu nasıl yapabilirim görelim.
Yani bu bir şey değil window.onload-- Bu bu nedenle, sınıfta gördüm
sınav için bilmeniz gerekmez.
Ama bu temelde Tamam, çağrı diyor Bu fonksiyon zaman pencere yükler.
>> Yani bu sadece tür kurulum kodu var.
Bu konuda çok fazla endişe etmeyin.
Ya sana odaklanmak istiyorum burada.
Biz var searchButton eşittir demek document.getElementById search_button.
>> Tahmin edebileceğiniz gibi Yani, bu ne yapar, diyor olduğunu
Tamam, eleman bulmak gidin Kimlik search_button ile.
Ve şimdi biz buna sahip ve ben gerçek eleman
Bir depolamak için gidiyor Değişken searchButton.
Ve şimdi biz aslında o eleman kullanabilirsiniz ve değiştirmek, ya da değerlerini erişmek,
Bunun gibi şeyler.
Biz aslında başlayabilirsiniz web sayfası ile meşgul.
>> Yani burada şimdi var, tamam, demek o tıklandığında bu düğme,
Bu anonim işlevini çağırın.
Yani bu nerede anonimdir işlevleri kullanışlı hale.
Ve fonksiyon ne yapar?
Peki, sadece bu çağrıları uyarı fonksiyonu ve o diyor
Ara düğmesine tıkladım.
>> Ben nereye gidersem Yani ne olacak Bu HTML yaşıyor ve ben düğmesini tıklatın
Ben bir fantezi küçük bir uyarı alırsınız Bu düğmeye tıklandığında söyledi.
Yani işler odaklanmak burada-- document.getElementById
Belirli bir HTML alır Verilen kimliği ile öğesi.
Ve şimdi biz ayarlayabilirsiniz ne zaman ne olacağını
söz konusu eleman tıklandığında.
>> HEDEF KİTLE: Biz bütün bunlar koymak zorunda?
>> HANNAH BLUMBERG: Üzgünüm?
>> HEDEF KİTLE: biz var mı fiziksel olarak tüm kodu?
>> HANNAH BLUMBERG: biz var mı fiziksel olarak tüm kodu?
Evet.
Sinir bozucu bu tür değil midir?
Bu kod bir sürü.
>> HEDEF KİTLE: Bir şey ithal olabilir.
HANNAH BLUMBERG: Doğru.
Biz bir şey kullanabilirsiniz.
Ve particular-- oh, bu kadar bana ben bölümü öğretmek zorunda.
Özellikle, diyelim jQuery kütüphanesini kullanmak,
gerçekten çünkü Uzun ve gerçekten sinir bozucu
ve ben bunu basitleştirmek için güçlü olmak istiyorum ve daha kısa ve yazmayı kolaylaştırır.
>> Yani jQuery JavaScript kütüphanesidir.
Yani JavaScript programlama dil; jQuery bir kütüphanedir.
Ve daha kolay şeylerin bir demet yapar.
Değişen ve karşısına gidiyor yapar Bir HTML belgesi çok daha kolay.
>> Bu işleme olayları kolaylaştırır.
Daha kolay animasyon yapar ve daha kolay Ajax hale getirir.
Yani iki içine atlamak izin Şu anda bu şeyler.
Afedersiniz.
Yaptığımız önce, bazı temel sözdizimi.
>> Bu en çağırır nedir jQuery kütüphanesi gibi görünüyorsun.
Biz bu dolar kullanabilirsiniz sign-- PHP hiçbir bağlantı işareti,
sadece adı inconvenient-- seçici, nokta ve ardından bir eylem.
Yani bazı görelim Bunun somut örnekleri.
>> Yani bu aslında aynı Olay slayt kodu.
Yani bu uzun, çirkin bir şey olur Bu çok güzel, küçük bir şey.
Yani bu yıkmak deneyelim.
Bu tamam, jQuery-- bu dolar diyor jQuery sign-- bana pencereyi bulmak.
Yani seçici var.
>> O yüklediğinde, bu işlevini çağırın.
Yani içindeki her şey var.
TAMAM.
Şimdiye kadar, çok iyi?
Pekala.
>> Şimdi, jQuery, beni bulmak Kimlik search_button ile bir şey.
Ve bu ne tıklandığında, Bu işlevini çağırın.
Ve sonra bu işlev en tam olarak aynı.
Sadece uyarı biraz yapmak, Ara düğmesine tıkladım.
>> Bu yüzden gerçekten güzel.
Gerçekten yoğunlaşır ve Bizim kod kolaylaştırır.
Bunu biliyor muydunuz nasıl bu kimlik search_button var
ve sınıf search_button gibi değil?
>> HEDEF KİTLE: Hashtag?
HANNAH BLUMBERG: Evet.
Bu karma sembol, sadece CSS gibi.
Ne zaman biz çok CSS ile hatırlıyorum No şey seçmek istedim,
Biz pound işareti kullanılır.
Ve biz seçmek istedim sınıf tarafından bir şey, biz nokta kullanın.
Büyük.
Mantıklı?
Yani jQuery gerekiyordu sadece bizim hayatınızı kolaylaştıracak.
Evet.
>> İZLEYİCİ: Yani ben biraz kafam karıştı anonim işlev nasıl çalıştığı.
Bu anonymouse isim musunuz işlevi, işlev?
Nasıl denir?
HANNAH BLUMBERG: Elbette.
Yani işlevi sadece bir anahtar kelime olduğunu Ben bir işlev tanımlamak üzereyim, diyor.
HEDEF KİTLE: Tamam, evet.
HANNAH BLUMBERG: Tamam mı?
Ve sonra biz bir şekilde geçmesi argüman en atalım aşağıdaki amaçlara
tıklama işlevine bu iç Şehre.
Yani evet, o işlev, böylece Bu anonim işlev,
gerçek bir bağımsız değişken olur.
Yani, JavaScript hatırlıyorum biz değerler gibi işlevleri davranabilirsiniz.
HEDEF KİTLE: Tamam, evet.
HANNAH BLUMBERG: Evet.
Ben böyle "Oh."
Güzel.
Diğer sorular?
Zaman?
MARIA ZLATKOVA: İyi.
İyi.
>> HANNAH BLUMBERG: Başar.
Bazı hızlı kullanışlı jQuery.
Ben gitmek için gitmiyorum Bunların tümü boyunca uzanabilir.
Bu slaytları olacak Online biraz yukarı
Daha sonra, bu yüzden kontrol edebilirsiniz Biraz sonra dışarı.
Ama temelde, genel dediğimiz yerde desen, tutar
Hey, tamam, jQuery, burada benim Daha sonra burada seçici ve bir eylem var.
Ve erişim gibi şeyler yapabilirsiniz bir form değeri, bazı HTML erişmek
kullanıcıyı ne kontrol Bir form, böyle şeyler gönderir.
Evet.
>> HEDEF KİTLE: Yani Sınav, biz ihtiyacımız olacak
oldukça çok şey bilmek jQuery belgeleri.
Bu yüzden jQuery kopyala / yapıştır verilen Bizim hile tabakasına dokümantasyon,
nerede çizgi çizilir değil mi?
Gibi kaç bilmemiz gerekiyor?
HANNAH BLUMBERG: Büyük bir soru.
Soru esasen size verilen
jQuery belgelerine erişemiyor Test sırasında, ne kadar olmalıdır
biliyor musun?
Biz gelip beklemek olmaz bazı rasgele fonksiyonu ile
Google'da sizi beklediğiniz.
>> Adil oyun şeyler yapardım vardır Genel sözdizimi sadece tür demek
No seçmek için güçlü olmak ve bu yüzden sadece CSS gibi class-- tarafından.
Ve daha sonra gerçek fonksiyonları kendilerini, biz büyük olasılıkla anlatacağım.
Evet.
>> HEDEF KİTLE: Yani seçmek sınıf tarafından noktayı anlamına gelecektir.
HANNAH BLUMBERG: Evet, kesinlikle.
İyi.
Eğer sınıf tarafından seçtiğinizde, gidiyor yerine kiloluk işareti nokta edilecek.
Evet.
>> HEDEF KİTLE: Would you fark üzerinden gitmek
KODU ve sınıf seçme arasında?
>> HANNAH BLUMBERG: Elbette.
Seçimi arasındaki fark Sınıf kimliği ve seçme.
Maria söyledi Yani bir biraz daha erken, orada
Sadece bir HTML öğesi olabilir Belirli bir kimlikle, sınıfta iken,
bu grubun bir demet bize izin verir Birlikte farklı unsurları,
bu yüzden ilgili şeyler, ama tam olarak aynı.
Bu soruya cevap mı?
Başar.
Evet.
>> HEDEF KİTLE: Birden fazla varsa ne olur Aynı sınıfta olan şeyler?
>> HANNAH BLUMBERG: Ne olur Birden şeyler varsa o
aynı sınıf mı?
Yani, örneğin, biz eğer Sadece saf JavaScript kullanarak
Biz böyle bir şey yapacağını document.getElementsByClass.
Ve bu aslında yok sonra ne döner elemanların bir dizidir.
>> Ve yineleme ya var Onları istediğiniz hangisinin bulmak ya.
Bu verecek değil Tek bir eleman.
Size vermek için gidiyor elemanlı bir dizi.
Büyük soru.
Başka herhangi bir şey?
Başar.
>> Bu yüzden aşina iseniz düşünüyorum Herhangi bir jQuery, pset gördüm
gitmek iyi olmalıdır.
Soru?
Oh hayır.
Ben gerçekten öğretmeliyiz.
Rahatlayın.
O iyi olacak.
Oraya olacak.
>> En Ajax hakkında konuşalım.
Yani Ajax bir-- iyi olacak, en ne demektir ile başlayalım.
Bir kısaltma var.
Bu uyumsuz duruyor JavaScript ve XML.
Ve XML temelde olacak olan [Duyulamaz] bizim veri türü ile.
Ama biz aslında XML kullanmadım.
Bunun yerine, biz sadece JSON kullanın.
>> Yani temelde, bazı verilerinin-- var asenkron, JavaScript ve veri
Bu durumda, JSON.
Ve bizim hedefimiz bahsettiğimiz gibi Biraz daha erken,
Bir yapmak mümkün olduğu istek, bu istek yapmak var
onun bir şey arka plan, ama devam
biz yapmak niyetinde ne yapmak.
Ve bu bilgiler daha sonra ne zaman hazır, o zaman biz onu dahil edeceğiz.
>> Yani bu ne görelim Aslında benziyor.
Ve bu, sen olmalı tanıdık biraz
pset8 gelen bir sadece zorlandı.
Yani burada geçerli bir jQuery var Fonksiyon biz olabilir
Bu dolar işareti about-- bilmek istiyorum.
Bu yüzden jQuery işlevi, .getJSON diyor.
>> Peki bu işlev yapar öyle Bir URL ve bazı parameters-- alır
bu yüzden halinde düşünüyorum pset8 nedeniyle, gibiydi
URL articles.php ve parametreler = Bazı posta kodunu gitmek oldu.
Ve Tamam, bir talepte diyor Verilen parametreler ile bu URL.
Ve bu sadece olur.
>> O bitirdiğinde, Ya başarıyla tamamlamak olacak
ya da başarısız oluyor.
Yani bu çağrının eşdeğerdir Rob ve bir şeyler yapmak için ona sormak.
O geri aradığında Ve sonra o Ya Ben bittim ya da başarısız demek için gidiyor.
>> Sen durumunda Yani bitmiş, tamam, ben bittim, söylüyorlar.
Ve sonra bu işlevini çağırın.
Bu durumda, bu olacak bazı bilgiler alır işlevi.
Genellikle umurumda biri, veri biz aslında iade edilen veriler
.GetJSON arama sonucu.
>> Ve onunla bir şeyler yapabiliriz.
Pset8 durumunda Yani Biz bir liste olarak görüntülenir.
Fail bir işlev olacak isteği başarısız olursa o denir
sebebi ne olursa olsun.
Ve pset8 halinde, biz sadece console.log.
Bu konuda herhangi bir sorunuz?
Evet.
>> HEDEF KİTLE: biz sadece işlev teta kullanabilir miyim işlevini yerine, textStatus, jqHXR.
HANNAH BLUMBERG: Elbette.
Yani evet, ben pset düşünüyorum, biz sadece fonksiyon verilerini gördüm.
Yani sadece Tamam, evet Şeyin var.
Yani biz pset gördüm budur.
Bu tamamen iyi.
>> İsterseniz Bunlar sadece Daha fazla bilgi çekerek,
bunlar olduğunu Eğer .getJSON dan alabilir.
İyi soru.
Başka herhangi bir şey?
Evet.
>> HEDEF KİTLE: So .GetJSON Ajax nedir?
HANNAH BLUMBERG: Tamam.
Yani bu zor kısmı türüdür.
Bu sağlayan bir jQuery fonksiyonudur Eğer uyumsuz çağrı yapmak.
Ve bu asenkron çağrılar, işte ne Ajax olarak atıfta oldum.
Evet.
Yani bana gerçekten uzun bir zaman aldı Ben bir öğrenci iken ayrı çekin.
HEDEF KİTLE: Tekrar diyebilir miyiz?
HANNAH BLUMBERG: Evet.
Tekrar diyebilir miyiz?
Bu .GetJSON işlevi jQuery fonksiyonudur.
Ve bunu yapmak için gidiyor Zaman uyumsuz bir çağrı.
Ve bu asenkron çağrılar, biz ettik Ajax olarak kişilere atıfta.
>> Başka soru?
Biz sol sadece bir kaç dakika var.
Ve Maria'nın gidiş güvenlik tamamlamayı
ve sonra biz gidiyoruz hemen yapılacak.
MARIA ZLATKOVA: Başar, tamam.
Yani bu sadece bir çift almak bu-- saniye bu üzerinden bakmak için.
Ve bu gerçekten büyük bir şey değil.
Ve neden kimse bana söyleyebilir?
Ne foo oluyor ve olabilir olabilir edilir potansiyel olarak kötü bir şey neden,
ve bu ne denir?
Evet.
HEDEF KİTLE: Eğer var argüman 12'den fazla karakter geçti,
o taşma olabilir.
MARIA ZLATKOVA: Doğru.
Mükemmel.
Ne denir?
Sadece bahsetti.
>> HEDEF KİTLE: Bellek taşması.
>> MARIA ZLATKOVA: Evet, tampon taşması.
Yani bu bir şey olduğunu biz tampon taşması olarak bakın.
Ve biz, foo o içini görmek Biz bizim tampon, c tanımladığınız
12 bir büyüklüktedir.
Ancak, ana, biz değiliz hiç bir şekilde check-
olup, böylece argv1-- İkinci argüman oldu.
Biz kontrol yok bunun boyutu uygundur.
>> Yani eğer biz vardı Özellikle kötü niyetli kullanıcı
olarak bazı argüman koymak kimin 12 daha uzun ve daha sonra potansiyel
Bu sınırları ötesindeki argüman, bazı yürütülebilir kod vardı
O kötü bir şey yapmaya çalışıyordu Bununla; o zaman bu, ne olur
dönüşü geçersiz olur foo işlevi adresi
zaman fonksiyonu neden Bu kod yürütmesine dönen.
Ve sonra kötü şeyler olabilirdi.
Bu herkese mantıklı mı?
>> Ve biz buna karşı nasıl koruyabilirim?
Baska öneri?
Temel olarak, iç Potansiyel foo nasıl
Emin olmak için kontrol edebilirsiniz o olamaz?
>> İZLEYİCİ: boyutu 12 aşılırsa, Ek bellek ayrılamadı ki?
MARIA ZLATKOVA: Öneri ise, tahsis boyutta ek bellek aşmıştır.
Aslında, biz bir şey a yapabiliriz hem de daha basit bir şey.
Biz sadece dize uzunluğunu alabilirsiniz girilen argüman,
daha az olup olmadığını kontrol ya da daha 12-- eşit
biz istediğimiz olan Biz istemiyoruz, çünkü olmak
bizim tampon sınırlarını aşan.
Ve öyle değil o, biz argümanı ile çalışabilirsiniz.
Ve eğer o, biz aslında istiyorum kullanıcı potansiyel olarak YELLO için.
Ama bu bunu nasıl olduğunu.
Evet.
>> HEDEF KİTLE: Acaba memcpy gerçek hızlı açıklayabilir?
MARIA ZLATKOVA: Oh, üzgünüm.
Evet.
Memcpy tamam, ne olursa olsun o-- özür alır.
Memcpy ne olursa olsun alır barda, ne olursa olsun geçirilir
komut satırı argümanı olarak foo üzerine.
Yani argv1 almaya gidiyor.
Argv1 Burada çubuğu olarak adlandırılır.
Yani bar almaya gidiyor ve o c içine kopyalamak için gidiyor.
>> HEDEF KİTLE: Tamam.
MARIA ZLATKOVA: Ve gidiyor Üçüncü argüman sadece atıfta copy--
ne kadar o c kopyalamak için gidiyor.
HEDEF KİTLE: Ah.
Yani bu kişinin kopyalama sonra hepsi.
>> MARIA ZLATKOVA: Evet, bunun hepsi taklit ediyor.
Evet.
İlk olarak, biz bar değil emin olun Bir işaretçi çünkü eşit null.
Sonra bar dize uzunluğunu olsun.
Biz bu kadar emin daha az ya da 12 buna eşittir.
Ve sonra biz ettik çünkü emin yaptı, biz aslında can
memcpy ve Tamam emin olun.
Sorusu olan?
Büyük.
Ben iki doğru veya yanlış soru var.
Herkes hemen bana söyleyebilir Bu doğru ya da yanlış olup olmadığını?
Evet, yanlış değil.
Kesinlikle.
İkisi de yanlış.
Tek bir şifre kullanarak Yani asla gerçekten iyi bir fikir olduğunu
Birisi bilir çünkü eğer şifrenizi, onlar sadece can
Tüm diğer hesaplarına erişim.
Ve sonra simgeler hiçbir şey güvenliğini sağlamak için.
Biz genellikle HTTPS bakmalısınız HTTP yerine ve URL.
>> Ve bazı başka tip biz belirttiğimiz saldırılar,
David belirtilen ettiğini SQL enjeksiyon saldırıları ders.
Biz zaten gördük biz Yapma-- eğer CS50 sorgu işlevi emin SQL yapar
enjeksiyon saldırıları oluşamaz.
Ama biz CS50 kullanarak olmasaydı, alıntı, unquote "sorguda,"
Emin olmak için olurdu kullanıcı girişi aslında bazı SQL değil
Tüm neden olur sorgu Bizim tablolar atılacak
ya da kötü bir şey Bizim veritabanı ile olur.
>> Oturum kaçırma olduğunu başka türde bir saldırı
Bu bazı kötü olur kişinin bazı kurbanın oturumunu kullanır
Kimlik giriş bilgilerine erişmek için.
Yani çok önemsiz bir örnektir gibi biz ortak bir bilgisayar varsa,
Daha sonra kötü bir insan olarak ve daha sonra günlükleri Onlar kaydedilir çerezleri.
Ve çerezler oturum için değişmez.
>> Sonra kurban gitmek var ve daha sonra web sitesine giriş yapın.
Çerezleri değişmez Belirli bir oturum için.
Ve sonra kurban içine günlükleri Daha sonra web sitesi ve bırakır.
Ve sonra kişi kim gider Daha sonra yine kendi oturum kimliğini kullanabilir
Onların bilgilere erişmek için.
Böylece bir örnek Bunun olmasına nasıl.
>> Ve sonra ben çok fazla endişe olmaz özel kod ya da bir şey hakkında
Bu neden olabilir böyle, ama fikir çeşit olan nedir
Bu yer değişkenlerdir.
Ve sonra başlık manipüle Veri saldırı başka bir türüdür
O David bahsetti vardır.
Ve bu sadece atıfta ne zaman ne olabilir
yanıtı, HTTP Bizim başlık içinde yanıt
Düzgün temizlenmiş değil.
>> Ve, örneğin fields-- herhangi Birisi başlığının biri yazar ise
değerler başka bir şey içeren ne contain-- gerekir aslında
Bir 200 örneğin, şunları kapsar Tamam durum kodu, daha sonra
potansiyel olarak zararlı yapabilirdi şeyler onlar gerekiyordu değilken.
Ama ben çok endişe olmaz özel kod hakkında çok
Bu, bu neden olabilir anlayış sadece sıralama
Böyle üst düzey şeyler.
>> Ben bu olduğunu düşünüyorum, biz kapağı zorunda.
İnanılmaz.
Herkes herhangi herhangi bir sorunuz varsa Biz kapalı şeyler?
Evet.
>> HEDEF KİTLE: Yani bir tür daha lojistik bir soru.
Içerik ağırlıklı odaklanmıştır sınav 1 sonraki şeylere?
>> MARIA ZLATKOVA: Yani soru, içerik
sınav 1 sonra şeylere odaklanmıştır?
Yani odak sonra ise hariç yarışması 1,
Biz şeylere odaklanmak gerektiğini pset5 ve veri yapıları bir çok
Biz kapalı olduğunu.
Ve biz söyleyemeyiz biz önce bir şey yok sayabilirsiniz
bunun yanı sıra bunun üzerine inşa çünkü.
>> Böylece odaklanmak, ayrıca pset5 malzemesi bağlı listeler, yığınlar dahil olduğu gibi,
kuyruklar ve her şey Hannah üzerine gitti.
>> HANNAH BLUMBERG: Doğru.
Evet, hepimiz C şeyler gitti çok çok hızlı başlayan.
Ama bu gözden emin olun.
Geri dönün ve sınav 0 Yorum izleyebilirsiniz.
>> Birkaç tane daha lojistik notlar, sadece ederken dikkatinizi var.
Biz ofis saatleri yaşayacaksın hem Pazartesi ve Salı gecesi.
Onlar MD 119 olmak için gidiyoruz.
Bu yüzden, bütün web sitesinde ise Bunu, hiçbir endişe duymuyorum eğer.
>> MARIA ZLATKOVA: 11:00 08:30.
>> HANNAH BLUMBERG: Evet, 11:00 08:30.
Orada olacağız.
Biz soruları cevaplamak için orada olacağım.
Oldukça soğuk ve eğlenceli.
Siz herhangi bir soru sorabilirsiniz Eğer sınav 1 olması.
Ve sınav 1 açık Çarşamba, çok iyi şanslar.
Belki, herhangi bir sorunuz varsa Burada bir-bir bize konuşmak gelip.
Güzel.
Çok teşekkürler.
>> MARIA ZLATKOVA: Çok teşekkürler, çocuklar.
>> HEDEF KİTLE: Yay.
>> [ALKIŞ]