>> [MÜZİK OYUN]
>> David MALAN Bu CS50 ve Bu haftanın sekiz başlangıcıdır.
Ve biz ağırlamaktan çok mutluyuz geri, büyük bir sürpriz, CS50 kendi Ramon
Galvan olmuştur yükselen üst düzey Geçtiğimiz birkaç ay geçirdikten
LA Temmuz ayından itibaren, Hollywood, kelimenin tam anlamıyla yepyeni bir TV'de çalışan
Koloni denilen gösterisi, yaratıcısı Aslında Harvard şap kendisidir.
Ve böylece biz bu görmek çok heyecan duyuyoruz ABD ağında bu Ocak ilk.
Yani bunun için bizi izlemeye devam edin ve için hafta daha Ramon gelmek.
>> Sonun yakın olduğunu artık biliyorum.
Ve bu ne demek orada değil ki tüm bu çok söylemek üzücü, CS50 sol.
Biz sadece üç sorun var setleri var left--
Sorun olan six-- ayarlamak Elleriniz şimdi veya yakında olacak
Daha sonra kastedilen hafta-- bu köprü nedeniyle Komut satırında, bizim dünya
biz kullanarak bizim zaman en geçirdim C ve web programlama dünyası.
Peki, sen fikir bir sürü görürsünüz Komut satırı işten ödünç
ancak yeni de bir sürü ve ilginç fikirler
Ayrıca için germane olacak ki mobil uygulamalar ve teknoloji,
daha genel olarak, hangi ile adamlar günümüzde tüm tanıdık
dizüstü bilgisayarlar ve cep telefonları ve benzeri.
>> Yani değil uygulamak edeceğiz Bir web sayfası ya da bir web sitesi
başına, ama gerçek bir web sunucusu.
Bir web sunucusu kalanını yazacak Amacı hayatında C ile yazılmış
HTTP isteklerini, bu almak için biz konuşmaya devam sanal zarflar
yaklaşık ve aslında birlikte ya cevap Bir nokta HTML gibi bazı statik content--
Dosya ya da nokta JPEG veya dosya başka bir numara,
hatta bir PHP dosyası sayede web Sunucu bu PHP yorumlamak için gidiyor
Kod ve sonuçları tükürmek.
Şimdi, biz sağladık çerçevenin biraz
Gerçekten bu-- için sorun için dağıtım kodu
Altı 1.000 hatları üzerinden uzun set, bir lot yorum, fair-- olmaktır
ama bu gerçekten kastedilen bir fırsat olarak
Kirli dalış ellerini almak oldukça büyük bir projeye
biz çok özel ettik o Sizin için oyulmuş parçaları,
böylece gerçekten CS50 çıktığınızda ve programlama gerçek dünyasına girmek
ve serpmek istiyorum Projelerin herhangi bir sayı,
Eğer çok daha büyük olacak konfor, bazı kaynak indirirken
Kod, bazı açık kaynak Web'de proje,
ve dalış ve yapım Uygun gördüğünüz değişiklikleri.
Sorun yedi hakkında olacak set Kendi web tabanlı bir uygulama yapma
dinamik girdi alır ve şeklinde, dinamik çıkışı üretir
Bir etrade.com benzeri web sitesi.
Ve sorun sekiz henüz üzerinde durulacak set JavaScript olarak bilinen başka bir dil.
>> Bu arada, son Proje ufukta.
Adlandırılan ön teklif Bugünden itibaren bir hafta kaynaklanmaktadır.
Şartnamede başına Öncesi proposal--, CS50 en website-- hangi bir
oldukça rahat bir fırsat için Eğer güzel bir özlü e-posta göndermek
öğretme adama Onu iletmek için
ya ne düşündüğünü, kadar onu bir sondaj kurulu olarak ona kullanın.
Ve aklı var check-- Eğer düşündüğünüzü olsun
Çok uzakta ısırma konusunda çok az fazla ya da belki,
ya da belki hiçbir fikrim yok ve bir konuşma yapmaya istiyorum.
>> Bundan sonra bir öneri ve durum raporu,
Burada adlandırılan CS50 hackathon Harvard ve Yale öğrencileri için Cambridge
hem.
Nihai proje en Uygulama daha sonra kaynaklanmaktadır.
Ve sonra burada CS50 fuarı, Cambridge, yanı sıra New Haven başka şekilde.
Teklifin Yani, bir göz atın Bu hususlarla için web sitesi.
>> Ama daha heyecan verici, çok bir fırsat ellerini kirli olsun,
ve bir bütüne açık zihinleri konular ve araçları demet
ve teknikleri yardımcı ancak dersin temel müfredatıyla,
ama yine de ilişkili.
Ve de harika basamak taşları için gerçekten harika nihai projeler yapıyor o
iyi malzeme ötesinde biz kapalı ettik gitmek resmen problem setleri veya derste.
Yani için CS50 web sitesine gidin Seminerlerin tamamı liste.
Henüz kayıt yoksa, bu iyi.
Devam edin ve hala kayıt ve biz olacak Bir canlı streaming linki takip,
Gün ve saat internet sitesinde yer almaktadır.
Ve her şey olacak kaydedildi ve online koymak
Eğer yapamıyorsanız Özellikle gün ve saatleri.
>> Thereafter-- iyi Vermekteyiz ne gelince, tabii ki, CS50 hackathon var.
Alınan haftaya sıfırdan Bu fotoğraf, hatırlama, yıl geçmiş akşam 01:00 civarında 4.
CS50 fuarı, hangi yine her iki şehirde de yer alacak.
Ve o zaman, sadece bitki Tohum, hatta hala biz se
bir ay var artı varsa, dönem sol Eğer CS50 kendi öğretisini katılmak istiyorum
Personel ve başlatmak istediğiniz CA olma düşünmeye,
ya da öğretim adam, biliyorum biz bu konuda daha fazla konuşmaya başlayın edeceğiz
Daha sonra bu dönem.
Ama burada bir resimde Bu yılki takımın en.
>> Ve böylece, PHP-- ve çok üzücü oldu Geçen hafta [yani? Allyse?] Nazikçe
alma çabası gitti Bize bu harika sahne
Ben kullanarak sona ermedi o, o kadar Gerçekten sadece biraz aptalca görünüyordu
Hepimiz burada oturan bir kürek vardı gün geçen Çarşamba günü, ve biraz kaşık.
Ama bu benim mecazi oldu boyamak için çalışırken yolu
neden biz geçiş yapıyorsanız resim C PHP gibi bir dil.
Ve aynı Herhangi söylenebilir languages-- Java, Python, Ruby sayısı
diğerlerini göre değil oysa veya demet Cı, örneğin, C bir program yazma
tipik gibi olabilir Böyle bir kaşık alarak
ve bir delik kazma zemin, kum veya kir içinde.
PHP çok daha almasına izin veriyor Sorunun üzerinden büyük ısırıkları,
çok daha az kod yazma Bir çok küçük aracını kullanarak,
çok daha çok var çünkü işlevsellik parçalı.
>> Şimdi, biz gerçekten dramatik olsaydı, Biz kürek şey olurdu
Burada, ama öyle olsun.
Bu arada, diğer mecaz biz ile geldi
tabii ki, olabilir, bir Bir anahtar gibi bir şey kullanmak
Bir çivi gibi bir şey çekiç.
Ama tabii, sağ Kullanım aracı oluyor
çok değil olmak dil denir C-
ve şimdi sadece rahatsız [? Sanders,?] Muhtemelen
Biz böylece later-- tamir edeceğim Doğru aracı sık sık kullanmak
olacak değil Bu düşük düzey aracı.
Ve gerçekten de, C dil olmadığını Çoğunuz şimdiye kullanmak için gidiyoruz
ya mutlaka tekrar kullanmak gerekir.
>> Ve aslında, biraz sadece zaman secret--
C kendimi arasında oldukça fazla olduğunu kullanmak Her sonbahar Eylül ve Aralık
yarıyıl.
Ve bu çünkü biz bir fırsat olarak kullanmak
temellerini öğretmek programlama,
ve onunla bilgisayar ile bilim temelleri, veri
yapıları, algoritmalar ve da-- ama çok çabuk olacak
sözdizimi şimdi bakın ve fikirler C yatan
çok harika vardır daha modern aktarılabilir
yüksek seviyeli diller gibi PHP ve Python ve Perl ve Java
ve Objective-C- değil çok aslında Amaç-C- ama Swift, bu yeni
dil olduğunu çoğunuz olacak o zaman bitirme projesi ile serpmek.
>> Fazla uzatmadan Yani, aslında atalım Bazı sorunları çözmek için PHP kullanmak.
Geçen ki erken hatırlayın hafta, biz sadece kullanılan CS50 IDE,
Biz dinky küçük bir program yazdı sadece "Hello world" dedi.
Ve sonra ben onu kurtardı Bir dosya merhaba.php çağırdı.
Ve sonra bu komutu koştum.
>> Ve neden?
İngilizce, burada neler oluyor?
Ben ne zaman ne yapıyordu Ben bu komutu koştum?
>> Evet?
>> HEDEF KİTLE: Bazı işlev PHP var Bu açmayız anlar ne okur.
DAVID MALAN: İyi, bazı fonksiyon var PHP-- ve bana daha spesifik olalım,
PHP adında bir program da bilinir, orada
Anlayan bir tercüman, merhaba.php içeriği,
ve üst bunu yorumluyor alt, soldan sağa
ve bu komutlar söylediklerine yapar.
Merhaba.php komutları, tabii ki, Sadece code-- işlevleri kaynak olduğunu
ve değişkenler ve döngüler ve gibi, kendimize o
PHP yazmaya başladı.
>> Ama C aksine, hangi derlenmiş dil,
PHP sadece yazmak ve çalıştırın.
Siz bu aracı adımı atlayın sıfır ve olanlar dönüştürülmesi,
ve sonra koşuyor.
Ve böylece bu bir ters nedir?
Neden adımı atlama var?
Neden daha modern diller do bu adımı atlayın eğilimindedir?
Yararı neydi?
>> Ya da sadece sezgisel?
Biz ettik bile daha önce çok PHP yazılı,
ne değildir hakkında yararlı değil senin kod derleme sizce?
Hayır mı?
Işlemekten değil mi?
Başını çizilmeye?
Evet.
>> HEDEF KİTLE: Daha dinamik.
>> DAVID MALAN: Daha dinamik?
Ne demek istedin?
>> HEDEF KİTLE: [duyulamaz]
DAVID MALAN: Tamam, iyi, çok girişe bağlı olarak,
bunu her zaman derlemek zorunda değilsiniz.
Ve gerçekten gibidir ki- kadar basit neyi
Devam noktasıdır kodunuzu derlemek için?
Bu var sadece bir adım making-- bu gerektirmektedir
Son birkaç için hafta, iki katı adımlar
tıpkı senin program çalışıyor.
Senin olduğunu görünce yararlı oldu , vb bazı hata mesajları ve bkz
ama yine de sadece sinir bozucu bir adım.
>> Ve böylece programcılar gerçekleşmiştir zamanla, neden biz değiliz
yok dilleri yazmaya başlayın Bu oldukça mekanik adımı ihtiyaç
böylece sadece yazabilirsiniz kodunuzu ve çalıştırın.
Ama fiyat neydi biz ödenen gördüm
Belirli bir örnekle, hafta son?
Evet?
>> Hız.
Yani [? ?] tercümanlar ne Biraz daha yavaş,
ki sıfırlar ve olanlardır güzel ve bir bilgisayar için hızlı
anlamak için, çünkü Intel CPU, ya da her neyse,
Sadece Neler anlar bit bu desenleri ile ilgili.
Bir tercüman Oysa Bir program o gerçekten
Ascii kaynağını okumak zorunda Yazdığınız kod,
ve dönüştürmek, tabiri caizse, ya da sonuçta dönüştürür nasıl anlamaya
sıfır ve olanlar.
Yani biraz sürer Bir performans isabet biraz.
Bu yüzden bir ticaret-off biraz.
Burada üzerinde bunu şimdi eğer, bana izin devam edin ve aşağıdaki gibi bir örnek yok.
Burada giderseniz, yeni bir dosya, ben gidiyorum Yine bu tasarruf merhaba.php olduğunu.
Ve şimdi ben önde gidiyorum ve "baskı merhaba dünya" derler -
ve ben baskı kullanabilirsiniz hatırlamak, I do not Baskı-F kullanmak zorunda. Ve şimdi buraya,
Ben merhaba.php ve PHP yaparsanız, huh-- I yorumlamışlardır görünmemektedir.
Neyi yanlış yaptım?
>> HEDEF KİTLE: açılı bilezikler.
>> DAVID MALAN: Evet, ihtiyacınız O açılı ayraç kadar üst.
Bu yüzden can sıkıcı tür, ama hızlı bir şekilde buna alışmak.
PHP kodu yazmak zorunda kalırsanız, ben Genellikle programa söylemek gerekir,
ya hey, tercümana söyleyin PHP, burada bazı PHP kodu geliyor.
Ve sonra iyi ölçmek için, I would Bu değil, bu kapatmak değil
Sadece soru işareti açısı dirsek, şimdi buraya, böylece
Ben yine bu çalıştırırsanız, şimdi Ben istenen sonucu almak.
>> Şimdi hafif bir optimizasyon yapalım, sadece daha önce de gördüm ki.
Bu tür can sıkıcı bir durum ki ben PHP uzay merhaba.php çalıştırmak zorunda,
Çünkü geçmişte I Sadece nokta çizgi yazabilirsiniz
Tür güzel program adı.
Daha iyi bir kullanıcı deneyimi türüdür.
>> Çıkıyor Yani bunu yapabilirsiniz following-- I PHP
Bu oldukça şifreli kullanabilirsiniz Burada üstünde sözler,
bu, genel olarak, bir mesele olarak adlandırılır Bu keskin sembol sayede,
tabiri caizse, bu bir patlama olduğunu veya bir ünlem işareti.
Ve bu şimdi bir programa yoludur Tipik bir Linux sistemi üzerinde o
çevre ya da env olarak adlandırılır.
Ve bu uzun bir hikaye LINE short-- hat bir adil
Bilgisayar hey, PHP bulmak, diyor çevrede benim için tercüman,
tabiri caizse, senin belleğinde bulabilirsiniz.
>> Ve şimdi ne güzel mi ben buraya gitmek,
Ben nokta çizgi yapabilirim merhaba nokta php, veya-- hmm.
İzin reddedildi.
Eh, bu daha da göreceksiniz eğer sorun, yedi set
değil zaten, izinleri var.
Ben gerektiğini çıkıyor Bu komutu çalıştırmak için
[denir? chamod?] değişim Bir plus x merhaba.php mode--.
Ben [duyulamaz] ek, bu bir ihtiyaç Bilgisayarımı söylüyor adım
merhaba.php çalıştırılabilir yapmak.
Ve şimdi nokta olan oldu neler izle merhaba.php eğik, sadece çalışır.
Ben belirtmek gerek yok Artık tercüman.
Ve ben bile güzel yapabilir, Hala, eğer ben bu işi yeniden adlandırın.
Ben sadece merhaba.php taşırsanız Hello-- yüzden, sol üst fark
Programın adı Gerçekten şimdi sadece merhaba.
Şimdi ben bir C programı gibi görünmesini sağlayabilirsiniz, o PHP-- yazılmış oluyor olsa da
ya açıkçası herhangi bir sayı diğer dillerde.
>> Yani marjinal geliştirme, fonksiyonel bir fark.
Ama bu sadece küçük bir merakı var şimdi, programlar yazmak, böylece
herhangi bir dilde ve kullanıcı yok bilmek ya da o ne bakım var.
Peki, bir daha bakalım zorlayıcı örnek şimdi
Ben önceden çırpılmış olduğunu.
Bu quote.php olarak adlandırılır.
Ve bu online var.
Ve bu oldukça short-- olduğunu fark ama bu kadar bir komut satırı programı
Hisse senedi fiyatları yukarı bakmak için gidiyor Benim için, hangi aslında gidiyor
Sorun yedi set germane olmak.
>> Yani ben ne yapıyorum bakalım.
Çok üstünde bende Açık braket soru işareti PHP.
Ben bu sayede Sonra, bu satırı var functions.php-- adlı bir dosya gerektiren
Biz görmeye gidiyoruz biraz bu konuda daha fazla,
ancak bu C adlı gibi Keskin sürümü dahil
Gitmek istediğiniz yere Başka bir dosya yer alıyor.
PHP buna rağmen, bu ihtiyaç aramaları aynı zamanda bir fonksiyon içerir vardır.
Ve function.php olduğu ortaya çıktı Sadece bir şey dersten önce yazmıştım.
Çünkü, aynı dizine koymak Bazı kodunu faktör istedi
biz başka bir yerde kullanmak isteyebilirsiniz.
>> Bu arada, muhtemelen yapabilirsiniz Burada neler oluyor anlaması.
Bu C- ama biraz farklı Ben ne demek istiyorsunuz doğru kullanımını sağlamak?
Daha teknik tercüme.
Hangi koşullar altında am I Program bırakma veya çıkarken?
Evet?
>> HEDEF KİTLE: Eğer yoksa İki komut satırı argümanları.
>> DAVID MALAN: Ben yok satırı argümanlarını komuta.
Ve bu o birini hatırlıyorum argümanlar programın adı kendisidir.
Ve ikinci olacak başka bir sözcük Ben istemi sonra yazın.
Dolayısıyla, sadece C gibi, bu kontrol benim yoludur,
Kullanıcı işbirliği yaptı ve Ben istendiği gibi programı çalıştırmak?
Şimdi, bir şey var biraz farklı
Her C- ilk biz Bu dolar işareti var,
ve bir dolar ne PHP göstermek oturum?
Sadece bir değişken.
Bu, ardından Bay Kane, sadece bir değişken ne olursa olsun, aslında onu aramak istiyorum.
Bir şey var dikkat edin Benim PHP program eksik,
sadece son eksikti gibi hafta, C, karşı ne hangisi?
>> Bir tür, aynı zamanda başka bir şey.
Hiçbir şey var Ana işlevi function--.
Hiçbir ana işlevi var.
Sadece yazmaya başlayın kalmadan kod
Oldukça keyfi endişelenecek Bazı varsayılan adlandırma kuralı
Fonksiyon ana.
Yani arg C sadece gerçekten global bir değişken
tercüman olduğunu Bana kullanılabilir hale getirir.
Şimdi, bu ilginç.
Yani bir şeyler aramak.
Dolar işareti stoku üzerinde sol, o benim değişken var.
Sağ tarafta, Görünüşe göre var
PHP bir işlev arama denilen Benim son komut satırını geçirerek
argüman ne ki-- kelime.
Ve biz nasıl bu göreceğiz Bir an çalışıyor.
>> Ve sonra son olarak ben fiyat raporlama ediyorum.
Bir tane yazdırarak ediyorum filanca payı.
Ve bu, unutmayın in PHP-- PHP-- bir şekilde yol
Yapmanız gerek yok nerede Artık Dolar işareti S.
Sadece küme parantezi kullanabilirsiniz ve bazı değişken takın.
Sen endişelenmenize gerek yok Aynı şekilde printf kullanılmıştır.
>> Ve bir kenara, gibi bir değişken koyduğunuzda Böyle çift tırnak içinde,
Bir fantezi tekniği kullanıyor Değişken enterpolasyon aradı.
Sadece burada değişkeni fiş demektir.
Ve bir kenara, bazı size gelenler olarak diğer programlama geçmişlere,
Eğer tek tırnak kullanamazsınız etrafında dizeleri bunu yapmak için.
Sizin için çift tırnak kullanmanız gerekir Değişken interpolasyon çalışmak.
Aksi takdirde tam anlamıyla edeceğiz Bu küme parantezi bakın.
>> Yani son olarak, en go ahead ve bu çalışmasına izin.
Benim Terminal biraz daha büyük yapalım.
Beni go ahead ve çalıştıralım Benim alıntı dizinin içinde.
[? CDsource?] [? AM?] [? alıntı?] PHP alıntı dot PHP,
ve ben bir şey aramak için gidiyorum onun senedi simgesi olan GOOG gibi,
ve yeni adıyla bir pay, Alfabe A.Ş., bugün itibariyle, 717 $ maliyet.
Pekala, biz isterseniz Yine bu çalıştırın, herkes
Başka bir hisse senedi var onlar kadar bakmak istiyorum?
>> Microsoft, ben düşünüyorum bu bir MSFT-- 53 $.
Ben Yahoo belki olduğunu düşünüyorum.
Ve Facebook olmasıdır.
>> Bunu yaparken bu program nedir?
Sihirli gömülü gibi görünüyor Bu arama fonksiyonu.
Yani kısaca bir göz atalım.
>> Bu gelmiyor çıkıyor PHP ile, bu functions.php içinde.
Ve biz aracılığıyla gitmeyecek ayrıntılı olarak, bu,
ama burada operatif kelime olduğunu fark bu functions.php-- hattı altıncı
Ben tam anlamıyla işlevini söylüyorlar.
Benim işlevin adını belirtin.
Ben daha sonra herhangi bir belirtin argümanlar veya parametreleri,
Ben bu işlevi hiç türleri take-- istiyorum.
Ve sonra bunu uygulamak.
>> Ve ben elimi dalga edeceğiz uygulanmasını,
oldukça gelişmiş hakkı beri Şimdi, ama biz aslında tekrar görürsünüz
Bir hafta içinde problem yedi set.
Ama ben de, bu kadar temiz olabilir.
Ayrıca dahil Bugünün kod sürüm
Hiçbir nokta PHP dosyası var alıntı, bir.
De muhtemelen ne Çünkü Sadece alıntı denilen programın üst?
Bu shebang-- denilen Oldukça şifreli sözler
o zaman PHP bulup diyor Burada benim kodu çalıştırın.
>> Pekala, o getiriyor Biz kaldığı yerden bizi
olsa son seferinde-- biraz daha gelişmiş örnekler.
Herhangi bir sorunuz şimdiye kadar yaklaşık PHP veya ne yapıyoruz?
Hayır-- tamam.
Evet?
>> İZLEYİCİ: Inside HTML dosyaları, Sen ne
[? sen ?] [? Sadece diyoruz?] Bir [duyulamaz] PHP dosyası?
DAVID MALAN: İyi bir soru.
Biz konum bir web bağlamda, geçiş için kelimenin tam anlamıyla hakkında
sözde kullanmayın üstündeki shebang,
Web server-- genellikle nedeni Program Apache veya Microsoft denilen
IIS, Internet Information Server veya diğer web sunucu yazılımının herhangi bir sayıda,
o gördüğünde bilir Bir nokta PHP dosyası, öyle
Bunun üzerine tercüman çalıştırmanız gerekir.
O ilk satırında bakmaz.
Bu ilk satır hüner Yani sen sadece zaman olduğunu
yazma komut satırı programs-- süper sık ​​yapmayacağım, hangi
ancak köprü bizim yolu Şimdi bizim PHP bizim C örnekleri.
>> Yani gerçekten bu dünyayı köprü izin web komut satırı dünyasından
aşağıdakileri yaparak.
Beni go ahead ve çizelim Burada sadece bir an için bitti.
Biz değil bir web sunucusuna sahip, ya da eğer öyleyse Burada benim laptop üzerinde varsa,
hangi Böyle çekersiniz.
Ve burada biz bazı şeklinde internet.
Ve sonra buraya, biz Bir building-- bir sunucu
Bu nasıl internet works-- ve burada
belki bazı ışıkları ile sunucusudur.
Aslında neler oluyor bu iki bağlantı arasındaki?
>> Yani bu binada bir web sunucusudur.
Bu sadece bir bilgisayar var Bazı işletim çalışıyor
system-- belki özgür yazılım olarak adlandırılan CS50 IDE çalıştıran Apache.
Yani aslında can Bu binanın düşünüyorum
yapı olarak bu CSt0 IDE depolanır.
Hepiniz sahip orasıdır Senin hesapları, burada tüm
kendi web sunucusu var Hepiniz çalışan
Kendi benzersiz URL'ler Biz tartışmaya başladı,
S. altı set ve daha fazla göreceksiniz.
>> İşte benim laptop yerde var internette başka.
Bir URL ziyaret ettiğinizde Ve böylece aittir Benim için, bu internet trafiği gidiyor
sunucusuna sunucunun üzerinde alıcı bir HTTP request--
benzeri bir index.html olsun ve bu kadar Bu web sayfasında yanıtlarken.
Yani genel paradigma bu.
Yukarı şeyi Oysa Şimdi bugün, her şey kadar
Sadece oluyordu Bu binanın sınırlandırır.
Benim laptop kullanarak, fakat I, CS50 IDE bağlanmıştır
böylece bu programların hepsi ben koşuyordu bu sunucu, kendisi içinde oldu.
>> Ama şimdi, en PHP yeniden kullanmak başlayalım bazı gerçek programlar yazmak için bu
Bir web sunucusu tarafından sunulmaktadır.
Ve bunu yapmak için, ben gidiyorum örnekler sürü halinde
Burada bu fikri tanıtmak.
Yani bu bir fantezi yol tür Bir programlama paradigmasını açıklayan.
>> Ve aslında, gibi CS50 çıkmak ya da, nihai projeler üzerinde çalışmak
ya da bazı izleyin almak sınıfı, sen başlayacağız
--daha dünya olduğunu görmek için Özellikle büyümüş
C gibi dillerle Çok düşük level-- olduğu
orada daha iyi olduğunu fark yazma yazılımı yolları.
Belirli vardır takip edebilirsiniz desenleri,
dosyalarınızı organize belirli yolları ve işlevlerini adlandırma yolları,
böylece uzun lafın kısası, Dünya kadar gelmiştir
kısaltmaların bir sürü ile ve programlama yollarını adları.
Bunlar kullanabilirsiniz sadece teknikleridir.
>> Ve bunlardan biri, MVC denir Model View Controller için.
Ve bunun için, sadece bir Şimdi, bir aşırı karmaşık
Eğer paralamak nasıl söyleyerek yolu PHP tabanlı web sitesi, bizim durumumuzda.
Eğer dosyalarınızı organize nasıl, nasıl, mantığı düzenliyorsunuz
kolaylaştırır bir şekilde daha karmaşık web siteleri yazmak?
Ve gerçekten, biz hızla edeceğiz yedi p-set ile oraya.
>> MVC dünyasında Yani, gidiyoruz görmek için bizim kod genellikle can
Her iki modelin kodu olarak karakterize edilebilir, ya da denetleyici kodu veya görünümü kodu.
Ve ben gidiyorum follows-- olarak basite
denetleyicisidir Programınızın beyinleri,
bunun nerede hepsi ilginç mantık olur.
Yani her şey biz oldum bugüne kadar sınıfta yazma,
tür kontrolör gibi code-- o kontrol ediyor
Programınız, senin döngüler, senin koşulları, senin işlevleri
ve değişkenler ve hepsi bu.
>> Görüntüleme, şimdi, biraz olacak web dünyasında daha belirgin.
Bir görünüm estetik olduğunu Web sitenizin.
Bu, kullanıcı görüntüleri sees-- ne HTML tabloları, HTML etiketleri ve tüm
Bu, kabarık estetiğinin tüm yazmak o kadar da zor değil şeyler,
ancak üreten konum sadece ne, Sözde görünüm, estetik olduğunu.
Ve model sonuçta, gidiyor Veritabanı stuff-- olması olan
Hepimizin içine dalış başlayacağız daha bu Çarşamba.
Yani denetleyici mantığıdır, görünüm, estetik şeyler
ve model nereye olacak Bizim gerçek veri depolamak.
>> O yüzden daha somut, bu bakalım Aşağıdaki örnekte ile.
Burada benim dizine gitmek için gidiyorum Günümüz kaynağı olan tüm code--
online olarak kullanılabilir.
Ve ben sürümü sıfır gitmek için gidiyorum.
Ve burada diyelim o-- CS50 web sitesinin sürümü sıfır.
Tüm kadar burada yok.
Bu bir çok basit bir web sayfası Muhtemelen kullanarak neyi HTML tags-- sadece
Geçmiş örneklerden tahmin?
>> Bu da ne?
Muhtemelen o büyük kalın için H1-- başlık, üst yukarı bu logo, CS50.
Ve başka ne oynayan nedir?
Evet?
HEDEF KİTLE: Sırasız liste.
David MALAN: Düzensiz list-- yüzden UL etiketi ve LI etiketleri belki bir çift.
Ve bu hatırlamıyorum yoksa, dürüst farketmez.
Bunlar kabarık tür vardır HTML uygulama detayları
hızlı bir şekilde bakmak ve geri yolda konum.
Biz programlama hakkında daha fazla odaklanmak gerekir suludur parçaları fikirler.
>> Yani sadece hızlı atalım HTML-- bakmak ve gerçekten
Ben yup, burada görünüm kaynağını açarsanız, Tam olarak burada oluyor neler.
Bir UL etiketi var.
Bunun iç içe LI etiketleri olduğunu.
Ve sonra URL ödünç Burada asıl ders içeriğinin.
>> Ve daha sonra lectures.php görünüşte
Başka dinamik olarak oluşturulan sayfa Bu, en ah see-- izin sahip olacak
dersin ilk iki hafta.
Yani hafta sıfır ve haftada bir, haydi Ben sayfa kaynağını görüntülemek eğer bu-- bakmak,
Ayrıca süper basit.
Bu iki sayfalara lider adı week0.php ve week1.php.
Peki ne oluyor şimdi düşünün.
>> Ben week0.php tıklayın benim laptop week0.php isteği yapıyor.
Web sunucusu, nam-ı diğer, CS50 IDE, sanal zarfı alıyor.
Bu mesaj görüşüyor gibi week0.php olsun.
Daha sonra dosyayı yorumlanması, üst aşağıya, dosya haklıydın-- sol
denilen week0.php-- ve Sonuçları tükürme.
Yani bu dosyanın içinde, week0.php olmalıdır
oluşturuyor denetleyici mantığı Bu HTML, ve yakında görürsünüz.
>> Ama şimdi, bana haftada sıfır tıklayınız izin ve şimdi, Çarşamba ve Cuma var
ve şimdi slaytlar Yavaş yavaş haftadan sıfırdan.
Ve sen çağırmak olabilir geri bu gelen yol.
Yani bu web sitesi yapıyor hepsi bu.
>> Yani o bunu nasıl düşünelim.
Ben geri gidiyorum CS50 IDE burada kaynak kodu,
ve ben index.php açmak için gidiyorum.
Bu dosyanın en üstünde yorumların bir demet.
Sonra bu dosya, ortasında o çıkıyor hiçbir PHP kodudur.
Eğer herhangi yoksa Çünkü Açık braket soru işareti PHP etiketleri,
Sadece HTML koymak için özgürsünüz.
>> Çünkü neyi PHP tercüman, yapmak gerekiyordu
Bu file-- okuduğunda ise yukarıdan aşağıya, haklıydın-- sol
sadece o arasında gördüğü kod yorumlar Bu açılı ayraçlar işareti soru.
Ve başka bir şey değil mi bu PHP gibi tanımak, sadece dışarı tükürür.
Ve HTML şeyler arasında mı Sadece tükürmek olacaktır.
>> Yani bu dosya olabilir index.html çağrıldı,
ama her şeyi adlandırma ediyorum bir atlama taşı olarak nokta PHP.
Benzer Lectures.php-- underwhelming, sadece bazı HTML var.
Week0.php, benzer sadece bazı HTML.
>> Ama şimdi en üstünde koyalım atasözü mühendislik şapka,
ve biz bu nasıl geliştirebileceğimizi düşünün.
Bunu yapmak zor değil, ama ben tür kopyasını ve hamur haline intikal.
Ve aslında, ben hafta iki yaparsanız, Herhalde yapacağım biliyor musun?
Ben değilim, week1.php gitmek için gidiyorum Her şeyi vurgulamak için gidiyorum.
Ben kopyalamak için gidiyorum, yapıştırın week2.php adlı yeni bir dosyaya,
Bazı URL'leri çimdik ve yoluma.
>> Yani biz ettik ne dayalı zaten C görülen
Bu umarım, doğru gelmiyor.
Kopyala, yapıştır nadiren doğru çözüm.
Yani biz başlayabilirsiniz ne Bu geliştirmek için ne yapmak?
Nerede fırsatlar Daha iyi tasarım için?
>> Ben almak zaman hafta sekiz, gidiyor
gerçekten sinir bozucu olmaya Ben değiştirmek isterseniz
her birinin yazı İstediğim veya eğer benim sayfaları
düzeni yapısını değiştirmek için.
Peki fırsat Daha iyi tasarım için?
Peki, ne düşünelim Bu dosyaların hepsi paylaşılır.
>> İşte burada bir hafta var, bir hafta biri sıfır, burada lectures.php var,
Burada aynı şey index.php-- var ve Farklı, kabaca ne konuşuyor,
Bu dosyaların her?
Evet?
>> HEDEF KİTLE: [duyulamaz]
DAVID MALAN: Tamam, iyi.
Yani desen mutlaka sayede, var Her zaman, ders I seçin
Bir üretme olmalıdır çok benzer görünümlü sayfa.
Ve böylece belki de kaldıraç Aslında gerçekten,
kasten sayısal biz Bizim lectures-- endeksli
ben daha koyabilirsiniz Cevabınız kelimeler.
Ve gerçekten, tek şey nedir bu hafta arasında değişiyor Şehre
ve bu yüzden beni aşağı kaydırmak izin aşağı yukarı aynı duymak yüzden bölgesindeki
Yani burada bir hafta sıfır, kabaca üstünde.
İşte haftada bir, hafta sıfır, haftada bir, haftada sıfır.
Tamam, tam anlamıyla bilmek eğer hiçbir program
bu sadece bir gibi artık desen eşleştirme oyunu.
Peki farklı ne var?
Evet?
>> HEDEF KİTLE: [duyulamaz]
David MALAN: İyi, yani başlıktaki Hiç bu kadar hafif, değişiyor.
Sıfır birine, tabii ki, devam etmektedir.
Aynı şey H1 etiketi oluyor.
Ve biz oldukça, kolayca görmüyorum URL'ler biraz uzun olduğu için.
Ama bu URL'ler biraz değişiyor.
>> Ama is değişen değil, ne ben cesaret demek page-- içeriğinin en iyi şekilde
HTML etiketi aynıdır, başkanı Aynı başlık, hemen hemen aynıdır
Vücut aynıdır ve hemen hemen her şey
haricinde aynıdır o küçük tweaks.
Bu yüzden hakkında nasıl gidebiliriz Bu bazılarını faktoring?
>> Peki beni tam olarak teklif izin Bir sonraki sürümde söyledi.
Yani burada sürümünde tek yer, ben tam var aynı dosyalar, artı diğerleri bir çift.
Burada index.php-- ve hatta eğer var: Eğer daha önce hiç görmedim PHP
ne muhtemelen bu çözmek için yapıyorum Burada gördüğünüz ne dayalı problem--?
Evet, hafif bir bağlılık olduğunu?
Hayır mı?
Evet, devam et.
>> HEDEF KİTLE: [duyulamaz]
>> DAVID MALAN: Evet.
>> HEDEF KİTLE: [duyulamaz]
>> DAVID MALAN: Ben sana ihtiyacım var Sadece biraz daha yüksek sesle konuşur.
>> HEDEF KİTLE: [duyulamaz]
DAVID MALAN: Tamam, iyi.
Ve ben o was bence-- sen-- ama ben duymak zor
Ne de alıyorsanız olduğunu düşünüyorum kontör yaygındı etiketler,
ortak ve etiketleri alt, şimdi dışarı çarpanlarına edilmiştir
veya dosyaları ne küme?
Header.php ve footer.php-- ve biz gidiyoruz
Bazı düzenlemelerin yapılması endişe sen hitap sadece
için, sayılar değişen hakkında kaldırdı örnek, seni doğru duydum eğer.
>> Ama bunun özü gibi görünüyor.
Büyük miktarda varsa Sayfanın üst kısmında fazlalık,
ve büyük miktarda alt fazlalık,
en anlamıyla sadece vurgulamak izin ve bu içerik kesip,
Ayrı bir file-- gibi koymak biz çarpanlarına CSS, fikri
koymak çok benzer estetik, Ayrı bir nokta PHP dosyası o,
mechanism-- gerektirir kullanan C keskin include-- gibi olan
esasen gitmek demek gibi bir şeydir , header.php içeriğini kapmak
ve kopyalayıp buraya yapıştırın.
>> Ama ne bu demektir ki şimdi ise index.php, ben bu iki satır var.
Lectures.php olarak, aynı zamanda Bu iki satır var.
Week0.php olarak, aynı zamanda Bu iki satır var.
>> Yani şimdi, ben değiştirmek istiyorsanız Benim tüm sayfaları başlığı,
ya ben değiştirmek istiyorum temel yapısı,
Ben, sadece tek bir yerde şimdi değiştirebilirsiniz ya da iki places-- üstbilgi ve altbilgi,
sırasıyla.
Şimdi kodun başlangıç ​​bakmak Biraz daha şifreli, değil mi?
Ama düşünmek eğer hangi sayfa I week0.php talep ediyorum halinde doing-- olup,
biraz üzerinde çizim gibi burada-- week0.php istenen,
bu ne anlama gelir?
>> Kelimenin tam anlamıyla, bu dosya tarayıcı tarafından istedi.
Web server-- da bilinir
CS50 ID-- Bu kapmak Dosya, week0.php ve okur
o yukarıdan aşağıya, soldan sağa.
Birinci hatta, hemen karşılaşır Açık braket soru işareti PHP gerektirir
header nokta PHP ve böylece Ne PHP yorumlayıcı
bu ağ-yapı halinde yerleşik does-- Sunucu, biz önceden çünkü
o otomatik olarak geçer senin için çok header.php içine kopyalar içerikleri,
onları buraya yapıştırır.
>> Ama sonra tercüman karşılaşır Soru işareti yakın dirsek,
bu nedenle tüm düşünerek yapılır.
Şimdi sadece körü körüne tükürür hatları üzerinden yedi üzerinden iki,
Sadece çiğ HTML çünkü.
Sekiz satır alır ve yapar dosyayı açmadan vasıtasıyla yine aynı büyü,
içeriğini kapma ve Onları gerektiren veya bunları yapıştırarak
Tamam o zaman ya da orada.
>> Ama ben sadece bir hata sorar gibiydi.
Bu, geriye kısmi bir adımdır Biz header.php bakarsanız, çünkü
Ben tür bir köşesini kesti ettik.
Ben sırayla pes etmedi Ne özelliği Bu tartışılabilir daha iyi tasarım elde etmek için?
Evet?
HEDEF KİTLE: [duyulamaz]
DAVID MALAN: Evet, ben tür Bir nontrivial köşe kesti.
Sen ne değişiyordu işaret başlık oldu, başlık sayısı,
ve H1 sayısı.
Yani benim çözüm, tamam, oldu Sadece sayfa adlandırmak izin,
ve bununla başa değil olursa olsun sorun.
Böylece kısmi bir bulunuyor emin geri adım.
>> Ama burada dikkat çekicidir ne Ben yaptım ki neler
Aksi çarpanlarına edilir tüm ortak şeyler dışında.
Ve footer.php de, ben çarpanlarına fark Bütün bunlar dışında, daha az da olsa,
Ortak şeyler.
Yani ben bir şekilde şimdi muktedir gerekir bir adım daha ileri götürmek ve düzeltmek
Bu başlık sorunları.
O yüzden böyle yapalım.
>> Benim ikinci sürümü içine gidelim Burada, yine, hangi, aynı dosyaları var
yeni bir ek haricinde.
Ve biraz daha var ayrıntılı, ancak en eğer görelim biz
Burada neler oluyor ayrı kızdırmak olabilir.
Bunun yerine gerektiren header.php ve footer.php,
Ben tek gerektiren gibi görünüyor file-- helpers.php, tabii ki, adı.
Ve, bana şimdi şart izin helpers.php içinde ne
fonksiyonların sadece bir demet ben hemen önce olduğu gibi yazdı.
Ama bunu helpers.php çağırdı.
>> Şimdi görünüşe göre, içinde çizgi, üç ve 10, ben
İki functions-- çağırıyor başlığı render altbilgi vermekteyiz.
Ile gelmiyor olanlar PHP, ben bu kendimi yazdım.
Ve ben helpers.php koydum.
>> Şimdi, biz sadece bu sözdizimi gördüm Bir kez, ve süper kısa oldu.
Ama bu görünüşte bir argümandır başlık, fonksiyon işlemek için.
Neden biliyor musunuz?
Peki burada bir parantez yakın olduğunu, Burada açık bir parantez var.
Ve tabii ki, sadece C gibi, Bu parantez şey
Bir input-- ya da bir işlevine argüman.
>> Bu argümanın veri türü nedir, Ben vurguladık ne dayalı?
O köşeli parantezler ne geçen hafta dayanan, gösteriyor mu?
Evet, bir array-- var: Özellikle bir ilişkisel dizi.
Ve bu sözdizimi kuşkusuz Biraz korkak,
ama bu sadece geçiyor bir anahtar değer çifti.
Anahtar alıntı unquote olduğunu başlık ve değer CS50 olduğunu.
>> Biz yapmış olsaydı, bu C, bunun yerine olabilir
daha bunun gibi görünüyorsun, Sadece alıntı unquote CS50--
ya aslında kıvırcık olurdu parantezler, veya C böyle bir şey,
nerede anahtar sıfırdır, ve değer CS50 olduğunu.
Fakat yine de, PHP, olsa bile sözdizimi, yine biraz garip
Eğer geçmesine izin verir kelime numara yerine
değerleri ile anahtarları ilişkilendirmek.
>> Peki bu ne anlama geliyor?
Ben helpers.php içine giderseniz, Şimdi bu fonksiyonu bakalım.
renderHeader.php yerine renderHeader, benim işlevi
ve ben görüyorum çünkü biliyorum Burada fonksiyon anahtar.
Bu görünüşte onu C- yeni bir verilerinin-- adlı bir argüman alır
ama bu denilen olabilirdi şey, ama ben, veri denir
Biraz clean-- olmak ve Sadece özellikle bir tahmin almak
Eğer diğer bazı programlanmış ettik daha önce üst düzey bir dil, bir şey
C'nin üzerinde, kavramsal.
>> Ne eşit açık dirsek yapar Muhtemelen köşeli ayraç demek?
Ya bu ne anlama geliyor olabilir?
Biz Evet C. bu görmedim?
>> Boş bir dizi.
Spesifik olarak, bu demektir, eğer Kullanıcı renderHeader aramıyor
Bir argüman, ben hala gidiyorum Veri adında bir argüman var,
ancak varsayılan değer boş bir dizi olacak.
Yani bu sadece güzel bir kolaylık var.
Ben, kullanıcıya bağırma yok ya da benim işlevi yanlış kullanılan söylüyorlar.
Ben sadece kullanıcıya varsayılan verebilir değer, özellikle umurumda değil.
Şimdi bu fonksiyonu, ben benim ellerimi dalga olacak.
Ama bu özü işlevi veriyor Bize verilerde bu değişkenleri geçmek
şu şekilde header.php içine.
Ve bu son parça, Ben korkak sözdizimi düşünüyorum.
İşte benim yeni versiyonu arasında onu header.php--
kelimenin tam anlamıyla, derdi, açık braket başlık CS50, ve bu oldu.
Ve H1 aynı şey.
>> Şimdi görünüşe diyor çok korkak bir şey.
Ve beni bu basitleştirmek izin Bir an için aşağıdaki gibi.
Bu benim ettik budur olmak benim başlık değişti.
Ancak, biraz çirkin oluyor PHP ile sürekli açık parantez için,
ve sonra yazdırma işlevini kullanın.
PHP bir steno sahip çıkıyor Sadece bu gösterimi,
Teknik bir bir eşittir işareti, Çağrılan işlev yerine baskı yankı
ancak etkili aynı şey.
>> Bu sadece daha iyi görünüyor.
Bu sadece bir sentaks var Şeker, eğer sen,
bu benim kod biraz daha iyi görünmesini sağlar.
Ama çıkıyor, ve Biz yine bu göreceğiz
uzun zaman önce, biz bu aramak zorunda rahatsız edici uzun işlevi çağrılır
HTML özel karakter olarak PHP, o çıkıyor, çünkü
Bazı girişler vardır Kullanıcı bize verecekleri yönünde
veya kullanıcıların bize verin diye, Bu sitemizi kıracağız.
Ama biz bir sonraki göreceğiz JavaScript ile hafta.
Ama şimdi, sadece biliyorum Bu dosya, headers.php, sadece
başlık alır Ben geçirilen, bunu yapmak
Güvenli olduğundan emin bir ağ-yapı halinde enjekte edilmesi sayfa ve benim başlık olarak dışarı tükürür
ve benim H1 olarak.
Yani şimdi bu sürümü giderseniz, konferanslar unvanını geri olduğunu fark,
Haftanın sıfır geri unvanına sahip ve Gerçekten de, HTML I üreten ediyorum
Ya benim ilk sürümü ile aynıdır Benim boşluk dışında Ben--,
Ben biçimlendirme başladım çünkü farklı benim kod biraz.
Ama ben oluşturulan ettik Ben umurumda kodu.
Bu yüzden bana için duralım Sadece bir an ve görmek
Herhangi bir sorunuz varsa veya karışıklık ben yarattım.
Pekala, o yüzden büküm edelim Biraz daha burada
Bir var olup olmadığını görmek için iyileştirilmesi için bir fırsat.
Helpers.php bu vardı işlevi, renderFooter çağırdı.
Ve yaklaşık kayda değer ne renderHeader ve renderFooter?
Ve yine, bugünün amaçlar için, biliyorum özü fonksiyonu sadece olduğunu
geçen argümanları yolumu header.php ve footer.php içine.
>> Maalesef?
>> HEDEF KİTLE: [duyulamaz]
DAVID MALAN: Evet, ben sadece çizgi gerektirir değişti.
Yani kelimenin tam anlamıyla, ben günah işledim kopyalama ve yapıştırma, yine.
Bu çok büyük bir sayı değil hatlarının ama on-- gel
Ben kopyalama ve her şeyi yapıştırarak ediyorsam Sadece küçük bir sözcüğü değiştirmek için,
ve bir küçük kelime Alan işaret eden dışarı isimli karşı, burada altbilgi burada başlık.
Aksi takdirde, her şey Aynı haricinde
Tabii, işlevin isimler.
Yani biz daha ne olabilir?
>> Peki beni bu sürümünü açalım Burada, burada helpers.php olarak,
neden sadece bir alamadım Bu konuda akıllı küçük?
Biraz daha karmaşık yaz kodu, ancak işlemek diyorsun?
Yani temelde ne değişti?
>> Bir argüman alır şimdi-- İki argüman, hala veri.
Ve sonra ilk ne Muhtemelen için kullanılan isim,
Burada okuyorsanız ne dayalı?
Bile sözdizimi bazıları hala yeni.
Dolar işareti şablonu nedir?
>> Maalesef?
>> HEDEF KİTLE: Başlık veya altbilgi.
>> DAVID MALAN: Başlık veya altbilgi.
Yani görünüşe göre, karar verdim ki eğer Değişen tek şey
Ne istediğimi şablon print-- ve şablona tarafından
Bunun için planı olduğu anlamına Ben çıktı istediğiniz kod,
ama bazı takmak istiyorum values-- eğer öyleyse bu sadece başlık var
veya altbilgi, neden parameterize yok Bu ve argüman dolar işareti arayın
Şablon?
Ve sonra bu korkak sözdizimi bana izin verir Burada bir değişkene bir yol oluşturmak için.
>> Yani dolar işareti yolu bir değişkendir.
Bu sözdizimi ne yapar Eğer bilginiz varsa, do?
Evet?
>> HEDEF KİTLE: [duyulamaz]
DAVID MALAN: Kesinlikle.
Şablon ise, unquote alıntı, header veya şablon ise,
unquote alıntı, altbilgi, orada bu hat Ben vurgulanmış ettik, hat sekiz,
sadece başlığının gibi, bu ismi alıyor, ve nokta PHP ile birleştirerek.
Yani biz bu operatörü yoktu C. Bu nokta operatörüdür
sen eğer PHP-- inanılmaz bir şey JavaScript veya Java aşina,
Eğer artı kullanabilirsiniz birleştirme yapmak imzalamak.
>> C, bu neck-- bir ağrı altı p-set ve ben, çok üzgünüm,
Yapmanız gereken gidiyoruz bu-- bu boyun bir ağrı
dizeleri bitiştirmek için.
Neden?
Peki, sen var çünkü eğer bu uzun olan bir dize,
ve bu uzun olduğunu başka bir dize, Sadece onları bir arada fişi olamaz.
Ne yerine C yapmak zorunda mı?
Evet?
>> HEDEF KİTLE: [duyulamaz]
>> DAVID MALAN: malloc zorunda Bellek veya yığın üzerinde bir dizi kullanın.
Ve aslında var Yeterince bu dizi büyük yapmak
Bu artı bu sığdırmak için, artı ters eğik çizgi sıfır.
Sonra kullanarak onları bir arada birleştirmek for döngüsü ile kedi veya manuel karıştırın,
ya da herhangi bir teknikten yararlanılması.
Ve size bir çift gösteren p-set altı.
>> Bu boyun bir ağrı var.
Ve bu benim hakkında ne demek istediğimi gerçekten bir PHP karşı C gibi paha karşı bu.
Sadece daha fazlasına ulaşın Bedava işlevsellik,
Eğer odak böylece, ideal, fun
kodlama bölümü, Eğer çözmek istediğiniz proje,
oldukça düşük seviyede önemsiz ayrıntılar daha.
>> Yani bu sadece üretir header.php veya Ben dediğiniz birine dayalı footer.php.
Ve gerçekten ben gidersem index.php içine, haber
Tüm bu yerine changed-- var başlığını işlemek veya altbilgi oluşturma çağırıyor,
Ben takip ediyorum hale çağırıyor Ben yapmak istiyorum şablonun adı.
Ve sen de, bu göreceksiniz, probleminde, yedi set
biz kullanmak için izin sayede Aynı işlev demet yapmak
ve farklı web sayfalarının demet.
>> Yani oldukça çok durmak daha Bu Detaylar-- çok fazla
Eğer tekrar görürsünüz ki Sorun seti en bakalım yedi--
bir çözelti hemen başında daha ilginç bir soruna.
Bugüne kadar hiçbir şey biz ettik yapılan kaydedilmiş veri var.
Aslında, sadece zaman biz hiç biriktirdim Biz bu sınıfta yaptığım bir şey
biz kısa bir süre çok basit bir demo vardı zaman geri, böylece biz, C dosyası IO kullanılan
ve benim adına yazdığınız düşünüyorum ve Hannah'ın adı ve Maria'nın adı
ya da belki Andy'nin adı ve o zaman CSV file-- kurtardı
virgülle değerler dosyası ayrılmış.
>> Ve biz sanırım fopen-- kullanılan Hatırladığım kadarıyla biz fprintf kullanılan
ve biz bir dosyayı kaydettiğiniz.
Şimdi, bu en basit Bir veritabanı formu.
Sizin için bir web sitesi yapmak istiyorsanız Frosh IM programı, burada birinci sınıf
ideal bir spor için kayıt olabilirsiniz Bu verilerle bir şeyler yapmak istiyorum.
Geçen hafta, biz hiçbir şey yapmadı verilerinin-- biz sadece dedi,
Eğer gerçekten, kayıtlıdır.
Ya da belki gönderilecektir proctor, ve bu oldu.
>> Elimde olsa Ama güzel olurdu o Proctor bir CSV dosyası vermek
Bir Excel dosyası gibi.
Veya daha iyisi, it would Elimde olsa güzel
bu kullanıcıların isimleri koymak ve İsimleri yurt ve bütün
Bir veritabanına o Sadece, sonsuza dek yaşar
kadar verileri silmek için seçin.
Sağlayan bir veri tabanı Beni bilgileri sorgulamak için.
Ve gerçekten de, bir veritabanı budur.
>> Bugün tanıtmak ve Önümüzdeki hafta da bir teknoloji
denilen SQL-- bir Structured Query Başka bir dildir dil.
Bu temelde bir programlama var dil, ancak veritabanları için.
Ve şimdi bir veritabanı sadece Bir süper fantezi versiyonu olarak düşünmek
Microsoft Excel veya Google Tablolar, veya Apple Numaraları.
Genellikle sağlayan bir program veri bir sürü saklamak için
sütunlar ve sıralar içinde oldukça gibi Excel'de olabilir.
>> Ama ne, özellikle güzel Biz Excel ile süper aşina değiliz
Ne SQL yapmanızı sağlar sorgu şudur kod satırları yazarak bilgi
nerede can, hatta eğer senin Veritabanı, o bir milyon satır var
Eğer işler süper hızlı bulabilirsiniz.
Aslında, Excel, özellikle bir büyük veri kümeleri kötü.
Ve aslında, birkaç kadar yıllar önce, çıktı
Excel, yalnızca saklamak için izin verecek verilerinin-- kadar 65.535 satır
En ancak, bir sürü gibi geliyor zaman, bir grad öğrenci oldu
ve ben üzerinde açma hatırlıyorum bu benim üreten çünkü
Benim araştırma ve ben CSV dosyalarını bunları hızlı bir şekilde analiz etmek istedim
Sadece Excel'de açarak.
Tabii ki, benim bilgisayar çöktü, Ben 65.000'den fazla satır vardı çünkü.
>> Ama 65.535 nereden geldi?
Microsoft ne yapıyordu, muhtemelen?
Eğer iki güçlerin iyi iseniz?
Evet, onlar bir 16-bit kullandığını değer satır sayısını temsil etmek.
Ve 16, iki 65,536-- eksi bir, çünkü eğer
Sıfır endeksi oldu demektir Ben olabilir satır çoğu sayısı.
Ve bu sadece bir tasarım karardı.
16 bit kaydederek, onlar beni sınırlı yerine 4 milyar 16.000 satır için,
ki ben ideal olabilirdi.
Ama şimdi, biz gidiyoruz Bir web bağlamında bu daha tanıtmak.
Peki SQL hakkında güzel olduğunu bile olduğunu oldukça güçlü ve güzel olsa
Sofistike, gerçekten kaynar aşağı dört temel işlemleri, dört
tuşu işlevleri, seçtiğiniz will-- eğer, , veri almak arama için
veri; silmek veya veri silme; veritabanına satır eklemek için insert;
ve güncellenmesi.
Hiç Google kullanmış eğer öyleyse Tablolar, Apple Sayılar, Microsoft
Excel, siz idam, Büyük olasılıkla, her
Bir insan olarak bu operasyonların kriteri Sadece klavye ve mouse-- kullanarak
Gözlerini, veri ekleme kullanarak seçmek veya veri aramak için,
ya da veri güncelleme veya silme veri.
>> Peki bu ne anlama geliyor?
Peki, CS50 önceden yüklenmiş IDE MySQL adında bir programdır.
Bu ücretsiz, açık kaynak var Süper popüler veritabanı.
Facebook'tan, örneğin, bu için kullanır Onlar kullanan diğer araçlar arasında gün.
Ve çok popüler web siteleri bir çok kullanırım o büyük ölçüde, hızlı, çünkü
ve ücretsiz çünkü.
Kesinlikle rağmen alternatifler var.
Ve bazılarınız ile uğraşmak olabilir Nihai projeler için alternatifler.
>> Bu arada, bir ekran görüntüsü phpMyAdmin adında bir web-tabanlı bir araç.
Bu bir tesadüf olduğunu Bu web tabanlı bir araç da
Bir dilde yazılmış, PHP, ama yapmak istemedim ne
Bize vermek bir web tabanlı Bir veritabanına arayüz.
MySQL tipik olduğu için bir şey, tarihsel olarak, size
Sadece etkileşim olur bir komut satırı ile.
Ve bu süper olurdu can sıkıcı ve sahip oynamasından
seçmek için metinsel komutları yazın veri veri eklemek ve verileri silin.
Internet üzerinden Yani bazı insanlar web tabanlı bir program yazdı
sadece bize yönetmesine izin olduğunu Bizim veritabanı verileri.
Bu Excel çift tıklayarak gibi, ve bunların web tabanlı bir sürümünü çalıştıran.
>> Ve sizin için bu kullanmak için gidiyoruz ne sonuçta gelecek hafta değil, p-set altı,
ama bir şey inşa etmek CS50 Finans denir ki
bir veritabanına sahip oluyor kullanıcı adları ve şifreleri ile kullanıcılar,
Dolar tutarları onlar banka hesaplarında var.
Olacak Eğer saklamak için kullanabileceğiniz bir şey
semboller ve miktarları hisse senetlerinin Kullanıcıların
Sanal kullanılarak almış Onlara vereceğim dolar.
Ve kullanıcıların izin gidiyor Siteniz için kayıt,
bu yüzden bile arkadaşlarınız o Web sitenize de ayar yapabilirsiniz
ve aslında kaydolun oturum ve çevresinde oynamak
ve kodunuzda hata bulmak için çalışın, ve web sitenizde hataları bulmaya çalışın.
Ve onlar sadece tarafından kayıt edeceğiz etkin bir şekilde, kendileri ekleme
kodu ile size veritabanına yazmak.
>> Örneğin, bu hızlı ekran görüntüsü ne bir veritabanı gibi görünebilir.
Bu birine ait olduğunu Geçen yılki solutions--
Bu mini Excel gibi Bizim veritabanında saklanır, dosya,
MySQL denilen bu yazılım saklanır.
Sol tarafta, ben görünüşte ettik Her kullanıcıya benzersiz bir numara verilir.
İkinci sütunda, ben verdim Herkes, bir kullanıcı kendi aşkına--
aralarında.
Ve sağ tarafta, Ben onlara bir karma verdik.
>> Şimdi bu aslında bir şifre, ama düz metin parola değil.
Bu ise, bir şifreli parola var olacak, ya da karma şifre.
Hangi önce uzun geri geleceğiz.
>> Ama sen hiç okudum eğer nasıl bir makale
Bazı banka veya bazı şifrenizi Web sitesi, ele geçirilmiş olabilir
genellikle iki şeyden biri anlamına gelebilir.
Yani bu altı kullanıcıların sadece bir alıntıdır.
Hepiniz şimdi anlamaya hack ve çatlama aracılığı ile
Bizim altı kişinin şifreleri nelerdir.
Ama sen hiç gotten eğer Bir uyarı ya da bir özür
bir şirket ya da web sitesi söyleyerek gelen, üzgünüm, bir hacker, bizim veritabanına kırdı
muhtemelen değiştirmek gerekir senin şifre, ne demek olabilir?
>> Eh, bir, anlamına gelebilir şirket, daha zekâlı olmuştur
ve şifrenizi saklamak olmuştur Böyle bir sütunda, şifrelenmemiş.
Hangi düşman demektir, kim, veritabanı çaldı
kelimenin tam anlamıyla sizin yanınızdaki bilir kullanıcı adı ve şifre.
Yani olabilecek en kötü senaryo.
Ve p-set göreceğimiz gibi Yedi önlemek çok kolay.
Kesinlikle mazeret bunun için var Bugünün internet aptallık formu.
Iki-- ve biz bazı makaleler bulabilirsiniz bu hala gerçeği tanıklık
nonetheless-- olur İki, belki düşman
veritabanının bu sürümü çaldı.
Hangi hala biraz kötü çünkü şimdi onlar altı müşteriler var olduğunu biliyorum,
Ben kullanıcı adları biliyorum Bu altı müşterilerinin,
ve ben şifreli biliyorum sürümleri, ya da karma versiyonları
Bu altı müşterilerin şifreler.
Sizden kim olabilir ama yapılmış [? Hacker 2?]
Eğer şifreleri çatlamış veya nereye götürdüklerini Bir sorun bu sürümü bakmak
set, neden hala biraz endişe verici öyle düşman senin karma bilen varsa
şifreler?
>> HEDEF KİTLE: ellerinden geldiğince Çünkü Bütün sözlüğü girin
karma işlevi.
Ve şifrenizi bir sözlük ise kelime [? onlar sadece match-- edebilir?]
>> DAVID MALAN: Kesinlikle, hasım Sadece biraz sizin gibi kod yazabilirsiniz
[için mi? Hacker?] 2, Eğer üzerinde yineleme sayede
sözlükteki kelimelerin hepsi, A ya da tüm muhtemel kombinasyonları
Z arasındaki ve nine-- boyunca bir hangi bir sürü gibi geliyor, ve öyle.
Ama bir bilgisayar için, oldukça lanetlemek hızlı.
Ve aslında, oldu noktası [? Hacker 2,?] Oldu
bu maddeleri almak kelimenin tam anlamıyla, bu gibi görünüyor
ve tersine mühendislik ne aslında.
>> Nasıl biz Yani biz bakacağız daha verimli saklamak.
, Minnetle MySQL, çıkıyor veri tipleri olmak için oraya gidiyor.
Ve hakkında eğlenceli parçalarından biri veritabanı tasarım, dürüst olmak gerekirse,
Aslında kendiniz için karar olduğunu nasıl verileri temsil etmelidir?
Eğer bir telefon numarasını temsil etmelidir Büyük bir sayı, ya da uzun gibi bir int?
Ya da aslında yaparsınız karakter dizisi olarak?
Ve çok olabilir Bu olmayan önemsiz etkiler.
>> Aslında, tek bir erken, eğlenceli hikayeler germane
Mark Zuckerberg kurarken olduğunu Facebook, özgün yazılmış,
ve hala büyük ölçüde PHP ile yazılmış.
Ve en büyük zorluklardan biri onlar erken ölçeklendirme oldu karşı karşıya.
Onlar sonra okula ekleyerek tuttu zaman Okul okuldan sonra, benim gördüğüm kadarıyla,
Orijinal çözümlerden biri kopyalama ve yapıştırma esasen oldu
database ve kod bazı
Harvard olduğu şekilde Kendi sunucu üzerinde çalışan,
ve MİT kendi sunucu üzerinde çalışan oldu.
Bu neden, bazı Sizden kim hatırlamak olabilir,
Eğer arkadaşlarım var olamazdı Diğer ağlarda.
>> Muhtemelen de arkadaşın yok 10 ya da öylesine yıl önce MİT veya Harvard,
ama sen ağları yayılan olamazdı kısmen bu nedenle.
Ve en büyük zorluklardan biri Mark ve Facebook gibi şirketler için
aslında yüzlerce işleyen ve binlerce milyonlarca
Saniyede istekleri.
Yani işler biz başlayacağız Bu hafta bahsediyoruz
Gerçekten germane olacak İyi yazılım yazma ve halk
Başarılı araçlar olduğunu kullanıcıların bir sürü işleyebilir.
>> Yani biz şeyleri konuşacağız indeksleme ve arama gibi,
ancak bugün için öyle.
Biz Çarşamba günü daha fazla bilgi için sizi görecek.
>> [MÜZİK - "Seinfeld" TEMA]
DAVID MALAN: size edebilirsiniz o ve ondan çıkarmak.
Ve sopa zorunda değilsiniz belleğin bir kısmı önceden belirlenmiş bir miktarı.
Peki, o çağrılacak gidiyor?
>> KONUŞMACI 1: Peki, ne oluyor?
HOPARLÖR 2: Ne demek istiyorsun?
O bir konferans veriyor.
DAVID MALAN: Ve biz kullanabilirsiniz Fonksiyon memory-- için malloc denilen
>> KONUŞMACI 1: Neden kollarını hareket etmiyor?
>> HOPARLÖR 2: Peki bu- bilirsin, bu normaldir.
O sadece var gibi bu sadece Büyük sosis orada asılı.
>> KONUŞMACI 1: Bu normaldir?
>> HOPARLÖR 2: Evet, ben biz düşünmek Sadece yanlışlıkla diye varsayıyorum
superglue ile yaptığı deodorantı yerini aldı.