[Powered by Google Translate] [Həftə 9]
[David J. Malan - Harvard Universiteti]
[Bu CS50 edir. - CS50.TV]
Bütün hüquqlar. Geri gəlmisiniz. Bu CS50, bu həftə 9 başlanğıc.
Bu gün biz C kontekstində artıq dizayn, xüsusilə də diqqət
lakin PHP kontekstində və SQL bir bit və JavaScript bit,
xüsusilə pset 7 həm də sona doğru və həmçinin yekun layihə.
Əslində, əgər yekun layihə o nöqtədə var
ehtimalla ən azı bir fikir vermək üçün açılmış bir saat və ya siz əvvəl kimi burada
son layihə və siz 1 və ya 2 sinif yoldaşları ilə əməkdaşlıq etmək istədiyiniz düşünür istəyirsinizsə,
ilə birləşdirən sorun qarşılaşdıqda, əgər sinif yoldaşları deyib
cs50.net/partners/form da formasını doldurub çekinmeyin.
Bu, sadəcə, siz haqqında düşünür istəyirsinizsə, layihənin nə cür kim isteyen
yalnız texniki səbəblərdən yerləşir yaşayır.
Və sonra, növbəti həftə və ya orada tablo URL üzərində bir göz saxlamaq istəyirsinizsə
Əgər Google doc bir read-yalnız versiyası bilərsiniz
biz ki, məlumat toplanması edirik.
Əgər kimsə ilə işləmək istəyirik Belə ki, əgər bütün vasitələrlə insanlara çatmaq üçün çekinmeyin
ki, mexanizm vasitəsilə.
Lakin insanlar əksəriyyəti iş solo yoxdur. Bu tamamilə gözəl var.
Beləliklə, bu məcburi bir şəkildə olduğunu hiss etmir.
Cümə günü o, yalnız mənə və burada komandanın bir neçə idi
hissəsi boş teatr.
3 turistlər var qədər oturan ki, bir az yöndəmsiz idi belə.
Biz nə danışdı bazaları və biz pset 7 bir az danışdı.
Və yalnız hələ video ki tutmaq olmadı əgər ki, gözəl var.
Mən verilən biz başqa edəcək hər hansı bir şərtləri müəyyən etmək üçün cəhd edəcəyik
cümə mühazirə əsaslanır.
>> Ancaq bu gün biz nöqtəsinə almaq üçün cəhd olacaq
yalnız pset 7 kimi bir şey edə deyil
lakin həqiqətən, başlıq altında neler anlaşma
xüsusən biz functions.php fayl baş qoymaq ki abstractions bəzi
Siz nəhayət başa düşürəm ki, sizin həyatını bir az daha asan, lakin
təlim təkərlər bir neçə həftə off gələndə siz hələ yaşaya bilər ki,
real dünyada və altında hər CS50 çərçivəsində bu stuff edin.
Tanış olan sizin üçün $ _SESSION,
yaxud artıq cümə günü video tutulan SESSİYASI bizə nə imkan vermir
bir PHP-based web proqram?
Bu GET və POST etmək ruhunda oxşar deməkdir superglobal dəyişən deyil
və bir neçə digər, lakin bu şey faydalı nə üçün vacibdir?
>> SESSİYASI nə üçün istifadə olunur? Bəli. [Tələbə] Giriş
Bağışlayın? [Tələbə] Giriş Həqiqətən Giriş.
Pset 7 ildə biz giriş asanlaşdırmaq üçün bu SESSİYASI superglobal istifadə etdiyiniz
Və nə bu superglobal haqqında gözəl bir assosiativ array var ki.
Assosiativ dizi, geri, yalnız bir sıra, lakin onların göstəriciləri artıq nömrələri olmalıdır
012 bəyənir. Onlar nömrələr ola bilər və ya hətta strings ola bilər.
Siz hələ pset 7 daxil dived sonra əgər ki, biz əsas deyilən ID saxlanılması ki, xatırlayıram bilər
dəyəri 123 kimi bir şeydir bu assosiativ serialın içərisində -
nə hazırda istifadəçi ID daxil edir.
Bunun üçün motivasiya istifadəçi localhost olub sonra belə ki,
və ya veb ümumiyyətlə və onlar daxil sonra,
onlar bir link basın və ya 5 dəqiqə üçün səhifəsinə qayıtmaq bile
və ya bir saat və ya hətta bir gün onlar brauzer pəncərəsində açıq tərk, hətta
bu superglobal vasitəsilə onlar daxil olmamısınız ki, xatırlayıram
>> Başqa sözlə, bu, mənə bir istifadəçi haqqında istədiyiniz qədər uzun müddətli bir şey saxlamaq üçün imkan verir.
Və siz bir alış-veriş sepeti təcəssüm kimi, həqiqətən, hesab edə bilər.
Amazon kimi yerlərdə açıq-aydın, bir alış-veriş sepeti daxil şeyi qoymaq bildirin
lakin HTTP, protokol Web səlahiyyətləri, vətəndaşlığı olmayan ki,
mənada ki, siz bir veb səhifəsinə zaman,
hissəsi bəzi sabit şəbəkə bağlantısı yoxdur
brauzerinizin və server arasında.
HTML və JPEGs və gifs nazil bütün ki, olduğunuz kimi
əlaqədar üz gedir və yalnız server HTML və etajer surəti var.
Amma server haqqında bir şey yadda istəyirsə,
yükünü həqiqətən ki, məlumat yazmaq üçün server edir.
Və server nəzarət edən belə proqramçı
bu superglobal assosiativ serialın içərisində istədiyiniz ən bir şey qoya bilər
və o, orada istifadəçi geri gəlir növbəti dəfə olacaq
bu dəqiqə var və ya hətta gün sonra, onlar öz browser window yaxın təqdirdə, olub-
olan nöqtə SESSİYASI yox.
Belə ki, efemer storage, bu qeyri-davamlı, ve getmək üçün nəzərdə edir
istifadəçi öz browser bağlayan kimi - sadəcə ki, nişanı, tez-tez bütün brauzer,
bununla da səmərəli istifadəçi çıkıyor.
Belə ki, bu şey həqiqətən necə həyata keçirilir?
Biz cümə günü baxdı bir sadə misal da tez nəzər salaq.
O tanımadığı üçün, bu kimi sadə idi.
Bu, yeganə məqsədi həyat mənə bir web səhifə
neçə dəfə mən bu səhifə olmuşlar.
Bu onu ziyarət Bazar ertəsi burada ilk dəfə, belə ki, 0 dəfə deyir.
>> Amma bu səhifə yeniden başlamaq əgər, o, 1 dəfə, 2, 3, 4, 5 deyir
və bu son nəticədə yalnız up,, up, səslərin sayılması üzrə davam edəcək
hər dəfə mən, həqiqətən, bu barədə yenidən basın.
Belə ki, bu iş necə? Mənə counter.php adlı fayl içərisində gedək.
Bunun üst hissəsi bütün mavi şərh, lakin maraqlı hissəsi burada.
Line 13-də biz bu funksiya video zəng,
və sanki siz olmaq istəyirsinizsə, nə etmək lazımdır bütün
Bu xüsusi superglobal _SESSION $ deyilən etmək.
Bu mümkün olan bütün edir və biz bütün mümkün necə bir anda görəcəksiniz.
Mən yapýyorum nə line 16 bildirişdə.
Başqa sözlə, indeks dəyəri - - "əks" counter adlı düyməsini edin
Mən aşağıdakı xətti ilə nə işim, sonra SESSİYASI adlı serialın içərisində var?
Line 18 edir nədir?
>> [Işitilemez tələbə cavab] Nə olub? [Tələbə] dəyəri saxlanması. Yaxşı.
Bu, yeni bir yerli müvəqqəti dəyişən hazırda SESSİYASI var ki, dəyəri saxlanılması oldu
Bütün kiçik dollar counter.
PHP artıq burada bir az tənbəl olunur bildirək ki.
Ki, int və ya float və ya simli və ya kimi bir şey heç bir qeyd yoxdur edək
PHP zəif tipli, çünki elə, bir dəyişən növü bilersiniz yoxdur
və burada bu halda mən hətta hələ elan etdik.
Mən bu qıvrım aşırma daxilində bu elan edirəm və C fərqli olaraq, bu həqiqətən tamam.
Dərin bir dəyişən beyanları iç içə necə olursa PHP edir -
daxili daxili buruq brace və analoji buruq brace, bu -
bu anda zaman, proqram qalan mövcud olacaq
yaxşı və ya pis üçün.
Belə ki, dərhal biz burada yapýyorsun kimi siz müəyyən kimi qlobal olur.
>> Əks halda, əgər mən bir şey SESSİYASI superglobal var ki, tapmıram
Mən yəqin, 0 Bu dəyişən counter başlatılıyor alıram
bununla yalnız istifadəçi əvvəl burada heç bir hərfinin.
Və sonra bu kurs necə əks incrementing olunur?
Mən bu assosiativ serialın içərisində olan dəyər yenilənməsi alıram
Hal-hazırda + 1 nə counter üçün bərabər yaradılması.
Mən bu səhifənin HTML burada aşağı diyirləyin, bu, həqiqətən, olduqca sadə.
Mən bu səhifə orqanı var Bütün, "Siz və belə dəfə site olmuşlar." Dir
Və bu bir PHP tikinti edir.
Əgər varsa <? =, Bu nə funksiyasını səmərəli bərabərdir?
Bu, biz C dəfələrlə gördüm olan printf kimi bir şey, həqiqətən ekvivalent var
siz pset 7-spec artıq bildiyiniz kimi, baxmayaraq ki,
print da yalnız bir şey yazdıran bir funksiyası var, bu, həqiqətən, format kodları istifadə etmir
və həqiqətən həmçinin echo demək olar.
Xalis təsiri nəticədə eyni olsa Onlar heç belə az fərqli deyilik.
Bu bu istifadə Bürc bərabərdir Belə ki, bunu bir zərif şəkildə yalnız növ
daha müfəssəl şəkildə daha başqa ola bilər.
Belə ki, bütün bu saytda yoxdur. Bu counter dəyəri çap edir.
Bu, həqiqətən, necə baş verir?
Siz bir həftə geri bilər və ya belə əvvəl biz başlıq altında axtarır başladı
bir web səhifə bu inspektor sekmesini istifadə edərək işləyir necə.
>> Chrome, Mac versiyası, Windows versiyası, hətta Linux versiyası bu həm var
Bu daxili ayıklama var qovuşdurmağımız və Firefox və IE oxşar mexanizmləri var
browser daxilində.
Nin aşağıdakı nəzər salaq.
Biz burada Nişanlar bütöv bir dəstə var və leftmost bir Elements ki, geri sonra
və HTML və JavaScript səhifə necə godawful asılı olmayaraq,
elementləri nişanı ilə həqiqətən hiyerarşik HTML gedin bilər ki, geri
və gözəl və təmiz.
Google və ya Facebook kimi web məlumat çalışdığınız əgər
və ya, həqiqətən, hər hansı bir web, siz off yəqin ki, daha yaxşı olduğunu dərk
mənbə kodu ilə xam mənbə görüntülerken fərqli olaraq bu yol axtarır,
olan biz xüsusilə Google saytda gördüm kimi, bir mess ola bilər.
Mən əvəzinə burada Network sekmesini basın əgər,
Mən bu səhifə zaman neler görmek edək.
Birinci mənim cache temizlemek bildirin.
Mən Chrome Ayarları daxil və sonra tarixi getmək üçün gedirəm
və sonra bütün gəzən data sil.
Siz digər məqsədlər üçün bunu etmək üçün istifadə edilə bilər, [gülüş]
lakin bu inkişaf saytları gəldikdə, bu, həqiqətən faydalıdır -
Əgər laughing edirsinizsə bilirsiniz. [Gülüş]
Web inkişaf zaman reallıqdır, çünki həqiqətən həqiqətən faydalı
cached HTML faylları yaddaşdakı JavaScript faylları kimi cookies və əşyalar kimi şeylər
həqiqətən böyük bir baş ağrısı ola bilər, çünki əgər hər hansı səbəbdən
brauzer bir fayl önbelleğe qərar və hələ siz server fayl dəyişikliklər etdik
lakin browser həqiqətən fayl dəyişib ki yoxdur
Siz Reload düyməsinə basın hətta və buna görə də həqiqətən, yenidən download deyil
yalnız günah sizin kodu ilə deyil əmin etmək üçün ən surefire yollarından biri,
bu brauzer davranış ile, brauzerinizin, burada getmək
heç bir qarışıqlıq var ki, və yalnız bütün tarixi sil.
>> Həqiqətən, paranoid olmaq istəyirsinizsə və sonra, brauzer çıxın, o, yenidən başladın
və sonra gözlənildiyi kimi bütün iş əmin olun.
Inkişaf edərkən Belə ki, qısa, klirinq cache yaxşıdır.
Belə ki, burada biz Network nişanı var.
Mən əvvəllər site 9 dəfə olmuşdur, lakin mənə indi davam və Reload basın imkan idi.
Mən geri aşağı 0 edirəm.
Nin həqiqətən bu SESSİYASI superglobal həyata keçirilir ki, necə edək.
Mən edilmişdir ki, 1 HTTP request basın gedirəm
və bu hata pəncərə mənə daxilində baxmaq imkanı verir.
Burada maraqlı olmayan server, yalnız cavab baxın.
Mən yolları istənilən sayda bu gördük.
Amma nə texniki maraqlı mövzular var.
Burada aşağı diyirləyin və tələbi mövzular diqqət və görünüşü mənbə basın
nə mən gedirəm sanki HTTP tələb edir
ki, yalnız mənim brauzerinizin server getdi
Operativ sözü olan GET və sonra / counter.php fayl adı olan,
HTTP/1.1 yalnız mənim browser istifadə edir ki, HTTP buraxılış olan.
Burada Bu xətt server adı nə browser server bir az öyüd-nəsihətdir
ona danışmaq istəyir.
Və sonra bu istirahət hazırda müvafiq bəzən maraqlı, lakin deyil.
>> Bu maraq yalnız növüdür.
Bu simli olsa sirli hər zaman brauzerinizin bir web olub
siz istifadə etdiyiniz brauzer server məlumat verilir
və istifadə və nə onların versiyası etdiyiniz əməliyyat sistemi.
Əgər CNN və etajer kimi necə saytları merak etdiyiniz əgər
Faizlərin Web, PC istifadəçi Mac istifadəçilərinin nə bilirik,
IE istifadəçilər Chrome istifadəçiləri və kimi, bu, çünki bizim brauzerlərdə bütün
Biz nə orada hər bir veb izah olunur.
Bu mütləq kişisel məlumat yoxdur
lakin nə IP ünvan istifadə etdiyiniz brauzer və OS və server demək deyil.
Bu məlumat harada ki var.
Bu sessiyanın gəldikdə Amma nə cavab header indi daha maraqlı edir.
Mənə cavab yanında mənbəyinə basın edək.
Burada maraqlı bir neçə şey var.
1, biz 200 statusu kodu geri almışdır.
Bütün yaxşı deməkdir, çünki Biz bu durum kodu görmək heç vaxt.
Bu başqa bir şey fərqli olaraq sözün tamam deməkdir.
Biz bəzən pis ki, bir sıra nədir? [Tələbə] 404.
404, fayl tapılmadı, 403, siz artıq ilə büdrəmə bilər
qadağan edən hansı chmod bir şey, çox güman unuttum deməkdir.
Və digər bir dəstə var.
>> Down burada, bu bir az dəli edir.
Mən, həqiqətən, yalnız gedit onu sovuşdurmaq bir neçə dəqiqə əvvəl bu fayl yazdı.
Həqiqətən Web idi əvvəl Niyə bu səhifə 1981-ci ildə başa idi?
Nə olub?
>> [Işitilemez tələbə cavab] vaxt möhürü. Amma niyə?
Bu qədər əsassız, ancaq həqiqətən faydalıdır.
Bu mənim brauzerinizin deyib yalnız artıq başa çatdığını xahiş etdik bu PHP fayl.
Əslində, bu, 30 il əvvəl başa çatıb.
Amma həqiqətən nə deməkdir?
Bu, sadəcə, istifadəçi bu səhifə səfər növbəti dəfə deməkdir
olub ünvan bölməsinə URL yeniden və ya yazaraq,
Siz getmək və yeni bir kopyasını almaq əmin olun.
Bu, cache busting bir nümunə növ
yalnız tarayıcılar mane çalışır deməkdir ki, bir axmaq söz
həqiqətən caching HTML ki, bir server göndərilən edilmişdir
siz təsadüfən yenidən basın və sonra fayl eyni versiyası görmürəm ki.
Siz, həqiqətən, yeni bir kopyasını göndərmək üçün server istəyirəm.
Belə ki, 1981 var ki, yalnız ki Aracın seçilməsi nə deməkdir
keçmişdə bir ixtiyari tarixi kimi.
Lakin real şirəli xətt artıq bu biridir.
Hətta 50 əvvəl yəqin cookies ilə yayğın tanış edirik.
Kimi hazırda, xüsusilə də az rahat və ya arasında olanların arasında,
sizin anlaşma bir cookie indi nə
biz anlaşma daha çox texniki etmək haqqında olmalarına baxmayaraq?
Çerez nedir? Bəli.
[Tələbə] istifadəçi haqqında məlumat, onlar öz istifadəçi adı və ya bir şey yazdıq əgər istəyirəm.
>> Yaxşı. Onlar artıq öz istifadəçi adı çap etdik olub, istifadəçi haqqında məlumat var.
Cookie server bir istifadəçi haqqında bir şey yadda bilər qovuşdurmağımız bir yoldur.
Və nə cookie həqiqətən bir mətn faylı və ya bytes bəzi ardıcıllıqla deyil
ki, sizin browser daxilində server tərəfindən əkilmiş oldu
və içərisində bir fayl və ya bytes arasında tanıdan bir növ edir.
Bəlkə sözün istifadəçi adı, lakin daha tez-tez daha sirli görünüşlü bir şey var
bo8dal3ct və s - - bu, həqiqətən böyük alfasayısal string burada bu şey kimi
ki, həqiqətən yalnız sizin üçün benzersiz bir tanıdan üçün nəzərdə edir.
Və ya bir virtual əl Markanın sort kimi hesab edə bilər.
Əgər həqiqətən ödedim unutmayın ki, bəzi klub və ya bir oyuncaq park getmək Əgər
və getdi, onlar bir növ sizin tərəfdən bir az qırmızı etiket qoymaq
və artıq ödənilmiş etdiyiniz əks olan insanlar xatırladır
və gəlmək və istədiyin kimi davam edə bilər.
Cookie ruhunda ki, bir az oxşardır.
Mən yalnız mənim önbelleğini temizlemenizi sonra olduğu kimi ilk dəfə mən, bu ziyaret
web server, bu halda cihaz, mənim tərəfdən möhür qoymaq
onun adı PHPSESSID ki, sessiya ID,
Bu, həqiqətən uzun alfasayısal simli olan dəyərdir.
>> Belə ki, mənim tərəfdən indi yüzünde növ belə mən edib, növbəti dəfə yenidən ki,
ya əl, bir brauzerinizin bu URL ziyarət
HTTP müəyyənləşdirilməsinin mənim browser əl möhürü təqdim edir
təkrar və yenidən.
Belə ki, hətta server mütləq, mən kim bilmir
onlar ən azı mən ən azı, xüsusilə eyni istifadəçi və ya eyni brauzer Ben bilirik.
Və bu SESSİYASI superglobal həyata necə nəhayət edir.
Bu server, ikinci üçün bir haqqinda və ya üçüncü dəfə yenidən zaman olan heç bir fikrim yoxdur
Bu əl möhürü təqdim halda.
Və tez əl möhürü təqdim kimi,
web server mahiyyətcə öz bir az bazasında gedir
və çekləri, tamam, yalnız s istifadəçi bo8dal3ct əli möhürü görüldü və var.
Mənə proqramçı saxlanılır nə məlumat görək
Bu istifadəçi haqqında superglobal daxilində,
və sonra mənə data superglobal iclasında daxilində daha əmin edək
proqramçı məlumatların yenidən daxil ola bilərsiniz ki,
o bir neçə dəqiqə və ya saat əvvəl yaradılıb belə.
Bir müddət üçün pis rap alan Belə Başqa sözlə, peçenye,
çünki brauzerlərdə insecurities və onlar, həqiqətən, gizlilik və bütün bu pozan bilər
onlar həqiqətən çünki onlara olmadan böyük kommunal var
siz daim baxın hər Facebook səhifəsinə giriş olunacaq
Brauzer xatırlayaraq bəzi yol olmasaydı oxumaq və ya hər Gmail e-poçt
Əgər siz artıq təsdiq etdik ki.
>> Belə ki, bu yolla cookies tel arasında geri və irəli göndərilir.
Cookies haqqında başqa bir maraq, xüsusilə burada, bu cleartext tamamilə olmasıdır.
Heç burada heç bir şifreleme, var
və həqiqətən mən hazırda HTTP istifadə edirəm.
İndi 2 il əvvəl olan CS50 bizim Seçilmişlərə məqamlardan biri,
vaxt ətrafında Firesheep adlı alət çıxdı edilib.
Bu təhlükəsizlik tədqiqatçısı olmuşdur ki, bir proqram pulsuz parça oldu
icma üçün wake-up call ermənilər tərəfindən xüsusi amansızlıqla həyata necə demək kimi
Web müəyyən identifikasiyası mexanizmlərinin idi.
Belə ki, bir müddət, Facebook HTTP, HTTPS heç bir artıq demək olar ki, tamamilə idi.
Və siz kripto necə heç bir fikrim yoxdur, hətta, S təhlükəsiz
belə ki, ən azı bir şifreleme cəlb var deməkdir.
Facebook, istifadəçi adı və parol şifrelemek üçün istifadə etməyib
, ancaq tezliklə siz baxdı kimi pokes ya mesaj və ya news feed
ki, bütün unencrypted edilib.
Belə ki, yalnız bir il və ya əvvəl 2 qədər Gmail idi.
Siz daxil hər zaman, bəli, onlar, təhlükəsiz şifreleme istifadə
amma bundan sonra onlar yox idi. Və nə ola bilər?
Niyə yalnız vaxt bütün bu kimi istifadə hallarda Kriptoqrafiya istifadə?
Nə olub? Mən bir şey eşitdim edirəm. [Tələbə] speed.
Speed, sağ? Bu ətrafında yolları var.
Yalnız növ, məntiqi bu barədə düşünmək Amma əgər siz, bir şey şifrelemek əgər
ən azı bir az daha çox iş var.
Pset 2 siz Sezar və ya Vigenere həyata və ya hətta Crack zaman,
yalnız simli çap nisbətən asandır.
Şifreleme və sonra minimal simli çap bir az daha çox iş tələb edir.
>> Google və Facebook kimi super məşhur saytları üçün,
, onlar ziyarət hər bir veb səhifə üçün hər bir istifadəçi üçün daha çox iş var, əgər
yalnız daha CPU zaman alır.
Daha çox CPU vaxt lazımdır, əgər siz, daha çox server lazımdır
sizə daha çox pul lazımdır deməkdir.
Və bir çox ildir ki, bu, həqiqətən ən yaxşı təcrübə deyil.
İnsanlar üçün lazım yalnız SSL şifreleme istifadə edir.
Lakin, çıxdı, və Firesheep bu yoldaş kimi super aydın
zaman hazırda Facebook-hazırda olan uşaqlar -
Maraq Out, siz fess bilərsiniz əgər in görək.
Bu foregrounded deyil, hətta əgər siz, hazırda bəzi nişanı Facebook edirsinizsə,
URL HTTP və ya HTTPS edir?
[Çox tələbə] S. S? [Gülüş]
Okay. Hər hansı bir HTTP? Yalnız 1? Okay.
Belə ki, hamımız indi ki, oğlan Facebook hesabı hack edə bilərsiniz.
Əksər hissəsi üçün bu ən azı bəzi saytlarda, default tərəfindən açıq olmuşdur.
Və uzun hekayə qısa, web trafik şifrelenmiş deyilsə,
yalnız HTML, unencrypted də WiFis arasında geri və irəli getmək deyil
belə cookies kimi şeylər hava ərzində geri və irəli getmək yoxdur
şifreleme hər hansı formada olmadan.
Yalnız proqramlaşdırma fərasət bir az və ya bacarıqları Googling bir az varsa
bu ki, pulsuz proqram tapmaq üçün, siz bütün Starbucks oturub olunur
ümumiyyətlə WiFi var unencrypted yerdə və ya hava limanında oturmaq
və ya PHPSESSID: yalnız Set-Cookie kimi açar sözlər, üçün baxın
Siz texniki fərasət varsa, yalnız WiFi izləmək çünki
bu model üçün hava boyunca axını bit üçün,
Əgər oğlan nin PHPSESSID bo8dal və s olur deyə bilərəm.
Və sonra, siz kifayət qədər texniki fərasət etdiyiniz və ya sağ alət varsa
Əgər yalnız reconfigure öz browser əl möhürü təqdim başlamaq bilər
Facebook.com və Facebook yalnız siz ki, oğlan olduğunu güman edir
Onlar bütün sizin kim deyil, siz bu unikal identifikatoru var. çünki
Ki, unikal identifikatoru oğurlamaq və öz kimi web server təqdim Belə ki, əgər
Onlar yalnız siz şəxsin news feed göstərmək üçün gedir
və ya şəxsin mesajları və ya pokes.
>> Mən bəlkə də Facebook üçün HTTPS aktivləşdirmək üçün necə indi Google olardı.
Amma həqiqətən kimi sadə deyil.
Və Facebook və Google və kimi, bu da həqiqətən yaxşı kazanılmış
lakin HTTP istifadə etmir baxın hansı web saytları üçün bütün daha bir göz saxlamaq
və onlara həssas informasiya bir növ,
maliyyə və ya şəxsi var və ya bu kimi olub.
Bu istifadə edirsinizsə, çox bəlkə bu kimi cookies çox asanlıqla oğurlanmış ola bilər
və sonra saxta və dəqiq Firesheep nə var.
Siz bir proqramçı olmaq yoxdur.
İnternet bağlantısı, bu pulsuz aracı yukle nə idi Bütün oldu
daxil və sonra siz Facebook adları göstərmək olardı və nə edəcəyini edir
Əgər ətrafında bu nümayişdə Sanders ilə hər kəsin,
onların adını basın və proqram prosesi avtomatlaşdırılmış və nə idi bütün edildi
ki, cookie koklama öz kimi Facebook üçün təqdim
və voiture, siz daxil etdiyiniz
Belə ki, bu insanların başqa biri rəsmən "bu deyil".
Öz ev şəbəkə və siz misgər istəyirsinizsə, bütün vasitələrlə,
lakin bu bir universitet ətraf mühitə line keçmək yoxdur bilirik.
>> Amma burada məqsəd bu deyil necə qeyd etmək həqiqətən
lakin şeyi bu cür qarşı müdafiə etmək necə.
Özünü qüsurlu olsa burada və mənasız həlli,
həqiqətən davamlı HTTPS istifadə edərək hər hansı sites istifadə azaltmaq üçün.
Belə ki, Facebook və Google kimi saytlar getdikcə onay var
yerləşir, siz şey bu cür etmək üçün seçə bilərsiniz
və bankların oxşar səbəblərdən ildir bu idi.
Belə bir qorxu amil biz əgər bir az. Lakin özetle bu.
Bu server sizin kim xatırlayır necə.
Və onlar kim xatırlamaq kimi, onlar haqqında bir şey xatırlayıram
proqramçı _SESSION $ adlanan bu xüsusi superglobal daxilində saxlanılır ki.
Və pset 7, biz yalnız bir int yadda trivially istifadə etdiyiniz
daxil edən istifadəçi məhz unikal ID,
biz bilirik ki, onlar əvvəl orada oldum.
Sonra sessiyalar və ya cookies və ya kimi hər hansı suallar?
Firesheep artıq həmçinin iş deyil
və bir xüsusi gecelik rejimi sizin kompüter qoymaq üçün
siz həqiqətən özünüzə başqa trafik dinləmək edirik.
Hal-hazırda Firesheep indirme istəyirsinizsə Belə ki, bu, olduqca asan var həyata
bir dəfə nümayiş etdirmək idi.
Bütün hüquqlar. Və Sanders bunu etmir. Evdə etməyin.
Databases.
Biz çox qəsdən pset 7 etdiyi şeylərdən biri
biz bəzi istifadəçi kimlikleri ki, istifadəçilər üçün bir nümunə bazası masa vermək edilib
orada bir istifadəçi adı və bəzi şifrelenmiş parol.
Görürsünüz kimi artıq deyil varsa, siz cədvəldə bir az dəyişdirmək üçün olacaq.
Siz ki, cədvəldə istifadəçilər hər bir cache əlavə etmək olacaq
və başqa tarix masa, bir portfeli masa əlavə etmək olacaq
və ya bəlkə də başqa bir şey çağırırıq.
Amma bu necə düşünür baxımından, bu alət açmaq bildirin
olan biz cümə istifadə, lakin tanımadığı halda, cihaz bir alət ilə gəlir
, coincidentally PHP yazılı olan phpMyAdmin adlı
amma həyat onun məqsədi, mən allıq ilə jharvard kimi burada daxil sonra,
mənim bazası görüntü və dəyişən bir istifadəçi dostu yol verməkdir.
>> Mən cihaz çalışan alıram ki, verilənlər bazası MySQL adlanır.
Bu çox məşhur və istifadə etmək gözəl asan bir pulsuz açıq mənbə məlumat bazası var
qarşısında bu kimi başa xüsusən ilə.
Bu alət mənə imkan verir nə, məsələn, masa ətrafında poke edir.
Mənə irəli getmək və bunu edək.
Cümə günü biz super sadə idi ki, tələbələr adlı masa yaratmışdır.
Id, adı və e-poçt - - Bu 3 sütun var idi və mən əl satır bir neçə daxil
bu nümunə David və Mike kimi.
Bu bir az daha edək və biz daha xatırlamaq istəyirəm ki, güman edək
çox istifadəçi haqqında yalnız adı və e-poçt.
Mənə üst burada Struktur qədər basın edək.
Və yenə pset, burada lazımi addımlar vasitəsilə siz dolaşır
Bu, bəzi bir az tez əgər belə narahat etmir.
Sonra burada basın gedirəm.
E-poçt sonra sütun bir sıra əlavə gedirəm
Mən ev kimi bir şey əlavə etmək istəyirəm, çünki.
Mən tələbə evində qeyd unuttum.
Mənə tıklatın edək, indi biz təəssüf ki, soldan sağa bir az geniş ki, bu formada
amma, bu sahədə ev adını zəng etmək üçün gedirəm
və sonra növü İndi seçmək lazımdır.
Belə edək MySQL müxtəlif növləri haqqında qısa bir bir chat var
çünki PHP zəif tipli və sort sürətli və növləri ilə boş oynayır halbuki,
bir verilənlər bazası, xüsusilə bu, həqiqətən, sizin xeyrinə yazaraq istifadə super vacibdir
şeyi MySQL və digər verilənlər bazası mühərrikləri biri sizin üçün nə edə, çünki
sizin bazasında saxta data qoymaq deyil ki, təmin edir.
Bu sizin üçün mövcud yoxlanılması pulsuz səhv sortudur.
>> Ev üçün açıq-aydın o MySQL bir 32-bit dəyəri olan bir int olmaq istəmirəm.
Biz char dəyişən uzunluğu duran varchar barədə cümə günü qısaca danışmaq etdi.
Bu nədir? Bu, bu bir növ bir simli olmaq istəyirəm ki, müəyyən etmək üçün imkan verir.
Siz, həqiqətən, nə qədər uzun əvvəlcədən bilmirəm
biz özbaşına, ev adı 255 simvol ola bilər demək lazımdır
amma siz 32, 64 ilə getmək bilər - hər hansı bir sayı həqiqətən.
Amma char adlı sahəsində bir varchar istifadə üstünlüyü nədir?
Burada aşağı diyirləyin Yalnız daxilən əgər, karakter var və varchar var bildiriş.
Varchar char dəyişən uzunluğu; char char sabit uzunluğu.
Belə ki, yalnız müəyyən əsasında nə bu hər üstünlüyü və ya əlverişsiz var?
Başqa sözlə, olan fərq haqqında qayğı, və ya nə qayğı lazımdır?
>> Bəli. [Tələbə] Varchar daha çox rahatlıq var, ancaq daha çox yaddaş tutur.
Yaxşı. Varchar daha çəkir - Bakalým. Mən doğru eşitdim əgər əmin deyiləm.
Bir daha demək olarmı?
[Tələbə] Mən varchar yəqin ki, daha çox rahatlıq var, ancaq daha çox yaddaş tutur bildirib.
Maraqlı. Okay. Varchar yəqin ki, daha çox rahatlıq verir, lakin daha çox yaddaş tutur.
Sonuncu mütləq doğru deyil.
Bu kontekstdə asılıdır, amma ki, qayıda bildirin.
>> [Işitilemez tələbə cavab] Exactly.
Bu, faktiki char adətən daha çox yaddaş istifadə edir ki, işin var
bir char, C kimi, bir string kimi, çünki simvol bir sıra var.
Siz uzunluğu 255 bir char sahəsində demək əgər
bazası sözün sizə 255 simvol vermək niyyətindədir.
Və ev Mather və 6 simvol ümumi olan qədər başa əgər,
siz 200 simvol üzərində israf edirik.
>> Lazımi kimi səmərəli bir varchar yalnız çox simvol kimi istifadə So
bir maksimum məbləği.
Amma ödəmək qiyməti potensial, həqiqətən, performans.
- Siz strings bütün 8 simvol olacaq ki, əvvəlcədən bilirsinizsə
Məsələn, siz uzunluğu 8 parol tələb Güman -
baxmayaraq heç vaxt münasibətilə char sahəsində istifadə ayaq
parol kimi bir şey üçün sabit uzunluğu müəyyən edir
çünki indi bazası da asan ola bilər.
Ki, hər char sahəsində bilir, bir sütun, hər simli, eyni uzunluğu
siz təsadüfi giriş xüsusiyyət geri almaq.
Siz bazası masa müxtəlif char sahələri arasında ətrafında atlayabilir
çünki satır ve sütun kimi bir verilənlər bazası edirəm.
Strings hər biri eyni uzunluğu əgər,
Siz ilk bir byte 0 bilirik ki, növbəti bir byte 8 edir
və sonra 16 və daha sonra 24 və s.
Bütün strings eyni uzunluğu əgər Belə ki, daha səmərəli ətrafında jump bilər.
Belə ki, performansı baxımından bir faydası ola bilər
lakin adətən siz əvvəlcədən bilən lüks yoxdur
belə bir varchar getmək üçün bir yoldur.
Burada hətta Facebook nəticədə qaçdı ki, başqa bir detal var.
, Ints böyük və biz növ ismarıcları biz bir sıra istədiyiniz zaman istifadə
ancaq yalnız 32 bit var.
>> Və Facebook olduqca artıq 4 milyard istifadəçi yoxdur, baxmayaraq ki,
orada bəzi insanlar birdən çox hesabı ilə mütləq var
və ya hesabları açılıb və sonra bağlanıb ki,
və belə Facebook özü bir neçə il əvvəl int keçid idi iman
etmək əvəzinə yalnız 64 bit olan tutarlı adlanır kimi, Bigint.
Belə ki, bu da bir dizayn qərar.
Son layihə başlanğıc çevrilir əgər Siz qəribə uğurlu olacaq
4 milyard və 1 istifadəçi, vermək və ya almaq etdi
ints istifadə bir az qısadı biləcək halda.
Əslində, sizin istifadəçi masa yəqin ints ilə yaxşı.
Amma pset 7 kimi bir şey, sizin tarix masa kimi,
siz etrade.com daxil inkişaf əgər minlərlə, milyonlarla istifadəçi ola bilər.
Belə isə, siz artıq 4 milyard istifadəçi yoxdur bilər
Siz nə bu istifadəçilərin vaxt dən çox 4 milyard əməliyyatlar ola bilər -
alır və satır və öz tarixində şeylər.
Siz tahmin etsəniz, - yenə, bu siz bu qədər məlumatlar var əgər üçün yaxşı problemləri var -
bir int həcmi dən çox data tahmin etsəniz,
Bigint kimi bir şey gedir tez-tez kifayət dizaynerlər tərəfindən qəbul bir istiqamət
çünki bir problem olacaq deyil ki, insanlar xadimi,
amma bu daha böyük bir şey seçmək üçün bu asandır.
Ondalık biz sabit dəqiq müəyyən olan pset 7, istifadə etdiyiniz
belə üzüb gedirdi və ikiqat və reals və kimi cəlb məsələləri qarşısını almaq olar.
>> Və sonra bir sıra digər sahələri burada var. Biz müəyyən dərəcədə onlara bizim dalğa olacaq.
Amma tarixi, dəfə bütün MySQL bir müəyyən format var
və tarixləri və varchars kimi saxlanılması tarixləri üstünlüyü
bazası, həqiqətən, müxtəlif formatlarda onları yeniden biçimlendirmeniz edə bilərsiniz
ABŞ format və ya Avropa format və ya kimi olub - lakin siz bunu istəyirik -
daha səmərəli yalnız bəzi ümumi varchar halda çox.
Və sonra bəzi digər ikili, varbinary, blobs var.
Bu ikili böyük obyektlərin və siz də ikili data saxlaya bilərsiniz
həmçinin bazasında həndəsi data kimi.
Amma bizim üçün, biz adətən ints və varchars və kimi qayğı lazımdır.
Evi bu misal bitirmək edək.
Mən özbaşına demək gedirəm House 255 chars olacaq.
Sonra default dəyəri, biz bunu edə bilər.
Biz default Məsələn, Mather House hər kəs qoymaq bilər.
Yəni müəyyən necə ki bazası
kimsə həmişə bir dəyəri var ki, təmin etməlidir. Amma ola tərk edəcəyik.
Əslində, bir evdə kampus off yaşamaq deyil, insanlar üçün,
bəlkə mən həqiqətən, ev üçün defolt dəyər NULL olduğunu müəyyənləşdirmək istəyirsinizsə
və sonra mən bu kutuyu və istifadəçi evi NULL əgər tamam bazası demək lazımdır.
>> Yenə bu yer bilər bir müdafiə mexanizmi
belə ki mütləq PHP kodu qoymaq üçün yoxdur.
Məlumat bazası şey və ya NULL deyil ki, təmin edəcək.
Və sonra nəhayət, Features.
Bunların heç biri həqiqətən uyğundur.
Imzasız, Binary - o heç bir varchar üçün uyğundur.
Index.
Hər kəs bilir və ya index nə kimi bir tahmin xatırlayıram və ya varmı
ev kimi bir şey?
Bu da həqiqətən mühüm və nisbətən asan dizayn qərar.
Hələ görməmişik edənlər üçün, cümə günü biz əsas açarları haqqında qısaca danışdım.
Bir verilənlər bazası masa, bir əsas aparıcı sahəsində və ya sütun edir
ki, benzersiz masa satır müəyyən edir.
Beləliklə, biz kimlikleri cari masa, biz adları və e-poçt var.
O hansı bir əsas açarı ola ən yaxşı namizəd
onların rolu benzersiz satır müəyyən edir?
Yəqin ID.
Ola bilsin ki, biz də nə olsa istifadə edə bilər?
Nəzəriyyə bu unikal çünki Bəlkə e-poçt istifadə edə bilər
insanların e-poçt hesabları mübadiləsi halda.
Lakin reallıq ki, siz 1234 kimi bir rəqəmli ID kullanıyorsanız, edir
e-mail bu çox bayt və ya bu çox bayt ola bilər, halbuki ki, yalnız 32 bit var.
Belə unikal identifikatorları üçün səmərəlilik baxımından,
yalnız bir int istifadə etmək yaxşı təcrübə olmağa çalışır
Siz arguably istifadə edə bilər ki, bəzi simli namizəd olsa belə.
>> Ev kimi bir şey üçün bu əsas əsas olmamalıdır
sonra yalnız 1 nəfər Mather yaşayır və Currier və analoji 1 nəfər. bilər, çünki
Eynilə, bu unikal olmamalıdır.
Əsas və unikal arasında fərq mövcud masa halda ki,
ID əsas ola bilər, lakin e-poçt, biz yalnız göstərilən səbəbdən əsas deyil -
performance - lakin unikal olmalıdır.
Belə ki, hələ iddia etmədən unikallığı tələb edə bilər
bir super əhəmiyyətli əsas sahə var.
Amma bu bir olduqca faydalıdır: ana.
Siz pset 7 və ya ümumiyyətlə, son layihə üçün əvvəlcədən bilirsinizsə
Bu sahədə ev bir çox axtarış bir şey olacaq ki,
da seçin söz və ya başqa bir şey istifadə edərək,
sonra preemptively onun sehrli işləmək bazası deyə bilərsiniz
və zəruri yaddaş heç bir xülya data strukturları yaradır əmin olun
ev əsasında axtarış sürətləndirmək.
Bəlkə bir hash table istifadə edəcək, bəlkə bir bağlı siyahı istifadə edəcək.
Əslində, bir ağac istifadə üçün çalışır, tez-tez bir strukturu B-ağac çağırıb -
bir ikili ağac lakin B-ağac - bir çox geniş ağac
siz CS124 məlumat strukturları sinif kimi sinif görmək bilər.
Lakin qısa, siz smart bazası proqram istifadə edərək, zaman narahat yoxdur.
"Mən daha səmərəli bu axtarış edə bilərsiniz, belə ki ana bu sahədə." Siz, demək olar
>> Bu off tərk və Mather yaşayan bazasında hər kəs üçün axtarış üçün cəhd edin,
bu xətti axtarış daxil qalmaq olacaq.
Və siz bir ev bütün yaşayış 6,000 undergrads var olsanız
Əgər Matherites tapmaq üçün bütün masa axtarış olacaq
siz ana desək, inşallah bir logarithmic axtarış yaxın bir şey isə
bu cür tələbələr tapmaq üçün.
Bu yandırmaq üçün bir pulsuz xüsusiyyət
bu alan bəzi məbləği qiyməti gelir olsa belə.
Nəhayət, avtomatik artırılması, bu AI sahəsində,
olan yalnız bir int əgər deməkdir və özünüz arttırmayı qayğı istəmirəm
Yeni bir istifadəçi var hər zaman ki, yoxlamaq
və daxil olur ki, hər bir istifadəçi avtomatik olaraq yeni ID olacaq.
Gəlin Save basın və indi bu layihə ilə günah görər.
Mən İnsanlar, Mike və ev həm NULL ki, bildiriş daxil edin.
Mən bu əl redaktə phpMyAdmin istifadə edə bilərsiniz.
Mən Enter sonra Mather burada və növü getmək bilər
və indi masa fərqli görürük.
Amma mən də başqa bir şey edə bilərsiniz.
Davudun ID 1, phpMyAdmin yenə yalnız inzibati vasitədir belə;
bu istifadəçi heç görmək üçün gedir bir şey deyil.
Mən bunun əvəzinə top SQL sekmesini basın əgər -
və yenə pset 7 bu sorğu daha tanış edəcək -
Mən əl SQL structured query language komanda keçirə bilər
YENİLƏNİB istifadəçilər ev = 'Pfoho' WHERE id = 1 SET.
Bu SQL queries, gözəl ki, soldan sağa olduqca oxunaqlı edir.
Istifadəçilər masa Update, Pfoho ev adlanan sahəsində müəyyən
istifadəçi ID 1 yerləşir.
Və ya mən belə edə bilər email = 'malan@harvard.edu.
Belə ki, uzun benzersiz mənə müəyyən kimi, həmçinin iş olardı.
Amma ID yüksək performans olmaq üçün çalışır, belə ki, bunu bildirin.
Nin dön basın edək. OK, lecture.users yoxdur. Mənim səhv nədir?
Əslində burada adlı masa nədir?
Ki, top sol burada nə yalnız çünki tələbələr deyirlər.
Bu tələbələr, kullanıcılar deyirlər. Belə ki, indi tıklatın.
1 satır təsir göstərmişdir. Sorğu took 0.01 seconds.
Mən Pfoho, indi artıq Malan həyatını gözdən basın.
Belə ki SQL bir dad var, lakin pset ki, bir az daha size yol edəcək.
>> Mən artıq burada etdiyiniz bir axmaq qərar var.
Mən bu verilənlər bazası dizayn səmərəsiz olduğunu iddia
Çünki tələbələr masa əlavə daha çox insan,
Mən, mən əlavə başlamaq TFS daha əlavə başlamaq bizə daha
biz bu cədvəldə redundancies nə başlamaq olacaq?
>> Bəli. [Tələbə] O tələbələr ki, görən, eyni istifadə etdiyiniz [işitilemez]
Eyni - Sağ, dəqiq.
400 nəfər Mather yaşayır əgər, vermək və ya almaq
nəticədə bu masa "" Mather "," Mather deyirlər ki, 400 satır var gedir
"Mather", "Mather", "Mather".
Biz bu bayt bütün israf edirik və takeaways bir neçə orada var.
Kimsə çox pul ödəyir yerləşir əgər 1, crazy künc halda var
və renames Mather, indi bizim bütün verilənlər bazası masa dəyişdirmək lazımdır.
Pfoho dəfə 15 il əvvəl Şimali House adlı baxmayaraq ki, tez-tez baş verəcək deyil,
belə olur. Lakin bütün çekici deyil.
Toplu data yeniləmə ehtiyacı kimi bir künc halda çox çekici
bir verilənlər bazası üçün nə təkrar Mather saxlanılması və təkrar? edilir
Sandıqı, 6 chars bir çox var.
Can biz xüsusilə Pforzheimer üçün ki, daha yaxşı?
Şübhəsiz ki, biz bir çox simvol daha yaxşı edə bilərsiniz.
Niyə yalnız hər ev ilə benzersiz bir tanıdan şərik deyil
və hər bir istifadəçi üçün mağaza? Belə ki, bu cəhd edək.
Əksinə yalnız tələbələr masa istifadə çox, mənə üst sol qədər burada mənim mühazirə bazası qədər gedək.
Burada edək ki, bu masa yarat deyir.
Mənə ev adlı yeni masa yaratmaq edək.
Sütun sayı 2 olacaq. Daxil edin.
İndi 2 sahələri var.
, Mən bu adı zəng gedirəm, və uzunluğu 255 bir varchar olacaq
>> lakin olduqca ixtiyari var. Bu aşağı burada Konvensiya tərəfindən qoyulmuş edək.
Belə ki, burada bir ID qablaşdırılmış. Nin hər ev benzersiz bir tanıdan verim.
Nin hər ev bir ad verim.
Olan identifikator yalnız müsbət nömrələri istifadə yalnız Konvensiya tərəfindən imzalanmamış olacaq ki, müəyyən edək.
Nin davam və indi bu bir avtomatik increment sahəsində verim.
Və biz başqa bir şey lazımdır?
Nin davam və Saxla basın edək.
İndi ikinci masa var.
Bir kənara kimi, bu qədər sirli SQL skript deyil edək
siz phpMyAdmin kimi inzibati alət istifadə əgər əl yazın idi ki.
Biz ondan istifadə başqa səbəb idi.
Əgər ətrafında basın, çünki pedaqoji və gözəl faydalı növ var
və hər şeyi yalnız çıxarmaq və phpMyAdmin nə yapıştırarak necə anlamaq.
Amma yarat masa komanda yalnız edam edildi nə və burada mənim masa.
Mənə indi irəli getmək və Insert sekmesini tıklayarak xammal SQL çox oversimplify istifadə edək.
Mənə, ev daxil edək
və mən evin adı 'Mather' bir dəyəri gedir demək gedirəm.
Vəssalam. Bu syntax bir az daha sirli edir.
Bu əlavə etmək istədiyiniz sahələri adı.
Bu biz həmin sahələrdə daxil etmək istədiyiniz dəyərlərdir. Mənə tıklatın edək.
Daxil 1 satır 0.02 saniyə çəkdi. Mənə indi gözdən basın edək.
>> Mən gözdən basın əgər edək, kimin ID avtomatlaşdırma ilə sayı 1 Mather var.
Mənə başqa bir edək. Mənə SQL nişanı daxil edək.
Ev daxil. Evin adı s Pfoho bir dəyəri davam edilir.
Gedin. Mən təkrar-təkrar bunu edə bilərsiniz.
Siz phpMyAdmin istifadə cansıxıcı almaq və ya, yalnız Insert sekmesini istifadə edə bilərsiniz
və xammal SQL yazın yoxdur.
Siz yalnız yazaraq daha tez həyata Bang bilər, məsələn, Currier daxil edin
biz gözdən basın əgər və artıq 3 şəxsiyyət ilə Currier var.
Belə ki, bu, bizim avtomatik increment ilə nə demək deyil.
Amma indi biz tələbələr bir şey düzeltmek üçün var.
Tələbə evi sahəsində data type indi nə olmalıdır?
Bu, doğru bir int olmalıdır?
Burada məqsəd həyata amil üçün Belə ki, başqa masalar, normallaşdırmaq kimi tanınan
belə ki, mənim masalar hər hansı redundantly məlumat yoxdur.
Və yenə burada olub yolunu Mather, Mather demək gedir
Mather, çox lazımsız olan Mather, Pfoho, Pfoho, Pfoho, Pfoho,
bu chars və israfçılıq baxımından.
Mənə davam və tıklayarak Struktur bu dəyişiklik edək,
və mənə irəli getmək və ev sahəsində off kontrol imkan, Change basın
və indi mən int üçün bu dəyişdirmək üçün gedirəm.
255 müvafiq deyil.
Mənə davam və hələ NULL var ki, əgər gözəl deyək. Edin.
İndi masa tələbələr, uğurla dəyişdikdə
və yenidən qeyd ev bir int edir.
Bu ints gəldiyi zaman bir kənara kimi, parantez sayı bilməz.
>> Bu miras səbəblər üçün.
Geri gün siz malik uygulamalar olmadığını zaman, yerine, bir command line mühit idi
sizə göstərmək lazımdır 10 və 11-müvafiq olaraq müəyyən necə çox simvol
terminal pəncərə əslində sahələrində göstərilmir.
Bu faktiki sahəsində bit uzunluğu heç bir əlaqəsi yoxdur, biz yalnız indi üçün ignore bilərsiniz.
İndi mən bu masa getmək lazımdır.
Davud Mather yaşayır, əgər ev 0 olmamalıdır
olan null yaxın bir default int dəyəri.
O, ev 1 yaşamalıdırlar.
Gəlin özbaşına demək Pfoho ildə Mike yaşayır, belə ki, ev sayı 2.
İndi mənim stolüstü bir az daha sirli görünür.
Amma səmərəliliyinin hesab edir.
İndi, ev müəyyən etmək yalnız 32 bit kullanıyorum
mənim ev Mather və Pfoho yalnız 1 canonical definition var deməkdir
və ev masa var.
Mən indi bu masalar yeniden istədiyiniz Belə ki, əgər bu şəkildə düşünürəm.
Burada mənim tələbələr masa var və sağ tərəfdən bu nömrələri, 1 və 2 var.
1 Mather edir, 2 Pfoho edir.
Biz, ev adlanan bu digər cədvəldə həmin nömrə var
O 3 ev üçün 1 və 2 və 3.
Biz indi istəyirik kodu qabiliyyəti, PHP və SQL, var
və düzmək üçün, bu masalar yeniden yerləşir bu tələbələr və bu evlərin varsa,
biz birtəhər 1-ki, 1 xətləri qədər onlara birləşdirmək istəyirəm
2 2 ilə qədər xətlər, belə ki, biz burada David anlamaq bilər
və harada Mike və burada hər kəs yaşayır.
Bunu etmək üçün biz aşağıdakı kimi bir SQL sorğu həyata keçirə bilər.
Tələbələr ÜZRƏ evləri OL DAN * SEÇİN -
İndi biz qoşulmaq üçün nə sahələrində istəyirsiniz?
Students.house = houses.id belə.
>> Bir az sirli, lakin bu hissəsi deməkdir sanki yeni müvəqqəti masa yaratmaq
ki, tələbələr və evlərin qoşulması nəticəsində var.
Və necə Burada mənim barmaqlarının ipuçlarını birləşdirmək istəyirsiniz?
ID sahəsində tələbələr evlərin bərabər ev sahə seçin.
Mən indi tıklatın əgər, mən ümid dəqiq nə geri almaq.
David Mather edir, Mike Pfoho edir və mən də unikal identifikatorları görürük.
Amma nöqtə tam bir masa var indi.
Və pset 7 üçün burada paket və ya həqiqətən yekun layihə üçün:
Siz redundantly informasiya hər hansı bir parça saxlanılması olduğunuz tapmaq
bir ev olsun, bəlkə bir şəhər, dövlət, və saxlayın var
Poçt adətən, lakin həmişə bir unikal identifikatoru kimi istifadə edilə bilər,
phpMyAdmin kimi bir şey ilə əqli və sonra həyata keçir yoxdur
ümumi məlumatların faktorinq, çünki sizin web daha yaxşı istifadə edir, xüsusən
və daha çox məşhur, bu, hər şeyi super sürətli əmin olun ki, necə
mümkün qədər unikallığı kimi çox göstərişlər kimi bazası verərək.
Bu çox idi.
Hər hansı sual? Bütün hüquqlar. Nin bir 5 dəqiqə fasilə etmək və regroup edək.
Bütün hüquqlar.
Aşağıdakı, mən CS161 gəldiyində bir neçə il əvvəl istifadə edilmiş bir nümunə
olan kollec də əməliyyat sistemləri sinif
gözəl olmaq üçün məlum lakin iş crazy məbləği olan
və əməliyyat sistemi yaranır ki, aşağı səviyyəli problemlərin bəzi həqiqətən diqqət
həmçinin belə bazaları dünyada.
>> Aşağıdakı kimi il mənim professor, Margo Seltzer, bildirib ki, hekayə idi.
Sizə və sizin roommate üçün bir az yurt soyuducu ki düşünək
və siz də həqiqətən süd kimi.
Belə ki, sinif bir gün evə gəlib, roommate, hələ yoxdur
siz soyuducu açmaq və siz dərk "lənətləmək Oh, biz süd həyata edirik."
Beləliklə, siz soyuducu yaxın, siz CVS üçün küçə arasında gəzmək
və CVS bəzi süd almaq üçün getdikcə daha uzun xətləri almaq.
Eyni zamanda, roommate, onun sinfi evə gəlir
otağa gəlir, həqiqətən bəzi süd istəyən soyuducu, açılır
soyuducuda açır və "Lanet olsun, heç bir süd".
Belə ki, o, soyuducuda bağlayıb qapı həyata gəzinti və ABP gedir
Siz bir-birinə daxil qabar etmək fikrində deyilik yerləşir CVS-dən və ya yerdə başqa
bəzi süd almaq gedin.
Əlbəttə, bir neçə dəqiqə sonra, siz də geri ev almaq
və indi siz həqiqətən istəyirdim iki dəfə çox süd var.
Əgər süd kimi, çünki süd olan, indi pis getmək olacaq
lakin süd kimi həqiqətən deyil, belə ki, indi çox süd var, belə ki, turş olacaq.
Bu dəhşətli, dəhşətli bir vəziyyət.
Siz ilk roommate ev olsaydı nə bu çətin həll edə bilər? Bəli.
[Tələbə] Siz qeyd yazmayıblar olmalıdır. [Gülüş]
Yaxşı. Siz qeyd yazmayıblar olmalıdır.
Siz ", süd Gone" deyərək kimi bir Post-it qeyd və ya qoymaq lazımdır
və sonra roommate konseptual həqiqətən bunu kilitlendiyse olardı.
Yoxsa 1 addım daha da bilər.
Siz sözün, asma kilit bir növ ilə soyuducu kilidi bilər
və indi roommate sanki soyuducu kilitlendiyse olunacaq.
Biz proqramlaşdırma geri ümumiləşdirmək varsa,
demək olar ki, dəyişən bir növ və ya struct kimi soyuducu hesab edə bilər
məlumat üçün konteyner bir növ.
Bu problem əsaslı burada həm yoxlamaq üçün icazə verilib ki,
və ya, Bu data strukturunun dövlət oxumaq
ancaq müxtəlif vaxtlarda bu dəfə və hələ hər iki qərar qəbul edib
vaxt bu müxtəlif məqamlarını dünya dövlət əsaslanır.
Beləliklə, siz soyuducu kilidli idi, ən azı roommate yol olardı
dünyanın dövlət nəzarət edə edərək, bu
belə o həmin qərar bilməz.
O çıxır kimi verilənlər bazası ki, daim bu problem var.
>> Biz bir ssenari tikintisi əgər in nəzər salaq.
Pis bir adam sort olduğunu düşünək və Bank of America getmək
tərəfindən bir neçə bankomat tərəfi var ki, kvadrat digər yerlərdə və ya,
və elə bir ATM kartı dublikat necə fiqurlu - bütün çətin deyil.
Bu yalnız bir maqnit zolağı var.
Və nə siz cəhd etmək istəyirəm, bu oyunu deyil
elə siz, digər maşın, 1 maşın başqa kart 1 kart qoymaq
və mahiyyətcə, eyni zamanda pul çıxarmaq üçün cəhd etmək istəyirəm
təsəvvür Çünki hekayə aşağıdakı kimi gedir.
Sol maşın, kartınızı və PİN edir
və sonra "mənə 100 dollar ver.", deyə
ATM ilk onun bazasında və ya ekvivalent bir rejimindən bunu proqramlaşdırılmış -
istifadə edir hansı məlumat bazası - bax bu istifadəçi öz hesabına ən azı $ 100 var?
Əgər belədirsə, onda 100 $ tüpürmək və onların balans dan $ 100 çıxmaq.
Amma təbii burada çox maşın var ya yoxladıqdan çox yolları
ki, dünyanın dövlət, bank vault, siz nə qədər pul bax
sol şans maşın ki, yalnız güman və sağ
həm vaxt təxminən eyni anda ki, sual.
>> Bu, əlbəttə, ola bilər. Bankomat bu gün kompüter var.
Sol maşın deyir Belə ki, "Bəli, siz ən azı $ 100 var"
Bu arada sağ maşın, "Bəli, ən azı $ 100 var" deyir,
sonra onların hər ikisi öz proqramlarını başa çatdırmaq üçün davam və əslində $ 100 həyata tüpürmək
və "Əvvəllər siz $ 200 idi.", deyə
"Mənə indi hesabınıza, qalan 100 $ olmaq dəyişən yeniləmə edək."
Onların həm hesabınıza balans yoxlanılmış və aşkar Ancaq $ 200 ki,
100, - və onların hər ikisi sonra riyaziyyat və demək 200 etmək
maşın potensial, hər bir maşın iki $ 100 vərəqələrinin həyata tüpürmək ki,
lakin onlar yalnız $ 100 olmaq üçün məbləğ hesab balansı güncelledik.
Başqa sözlə, siz $ 200 götürülmüş sonra, lakin onlar dünyanın dövlət tanış çünki
eyni zamanda və sonra ki, dəyər əsasında qərar qəbul edib
onlar nəticədə düzgün riyaziyyat edə bilər.
Belə bir bank vəziyyət çox həqiqətən lockout bir növ olsun
belə bir dəyişən dövlət işaretlediğinizden kimi ki
ki, haqq-hesab balansı kimi, həqiqətən, vacibdir
sizin şey bunu həyata qədər hər kəsdən ki, əsasında qərarlar qəbul etmək imkan vermir,
bu halda sol ATM yerləşir edir.
Hər kəs həyata kilidi.
Siz, həqiqətən, müxtəlif yollarla bir neçə bu təsir edə bilər.
>> MySQL ən sadə yolu biz sizə verdi ki, SQL bir xətt
məhz bu kimi görünür ki, problem set dəqiqləşdirilməsi ilə.
Bu adlı hər hansı - - bir id, rəmzi və payı səhmlərin sayı, masa daxil edin
aşağıdakı dəyərlər, məsələn.
Siz hələ spec oxumaq varsa, bu barədə necə getmək nə cəlb nümunəsidir
Prezident Skroob bu quruş fond 10 səhmlərin alışı,
onun istifadəçi ID sayı 7 olmaq olur?
Bu cədvəl aşağıdakı id, simvolları və səhmlərin sayı daxil deyir
7, DVN.V ', 10.
Amma - amma, lakin, ancaq - ikinci xətt mühüm biridir.
Duplicate KEY OLUNUB səhmlərin ÜZRƏ = səhmlərin + DƏYƏRLƏRİN (səhmlər).
Belə ki, tamamilə ilk baxışda sirli-axtarır.
Lakin bu SQL sorğu, bu, 2 xətt üzərində wraps baxmayaraq,
1 uzun sorğu edir, bu atom deməkdir
bu sorğu ya bütün birlikdə və ya icra olunacaq mənada.
Və MySQL müəyyənləşdirilməsinin ki, bu sorğu həyata nasıl.
Bu da bir dəfə və ya bütün icra zəmanət əl ilə müəyyən edir.
Aşağıdakı kimi bu üçün motivasiya edir.
Bu halda, fond 10, səhmlərinin çalışırıq, əgər
bu süd eyni hekayə növü var, bu, ATM eyni hekayə növü var.
>> Siz Əgər səhv bu sintaksis istifadə
lakin əvəzinə bazası seçilməsi bu qəpik bitmədən neçə səhmlərin görmək
Prezident Skroob var və o, 10 səhmlərə malik güman etmir
və sonra bir split ikinci sonra sonra OLUNUB bəyanat etmək,
hansı irəli getmək və daha 10 səhmlərin əlavə deyir ki, SQL bir bəyanatı
onun cari 10 ki, ideal, cəmi 20
problem, çünki bu gün verilənlər bazası sistemləri və çünki bu gün kompüter
Bir neçə prosessorları, çox özəyi var -
başqa sözlə, kompüter sözün bir neçə şeyler bilər -
heç bir təminat yoxdur ki, sizin SELECT və bu halda OLUNUB
geri geri baş gedir.
Pis ssenari olacaq Beləliklə, siz seçin
neçə bu quruş fond səhmlərinin Skroob yoxdur görmek üçün,
və sonra yalnız təsadüfən digər verilənlər bazası sorğu icra edilir -
bəlkə başqa bir brauzer pəncərəsində öz Skroob 10 səhmləri almaq üçün çalışırıq
başqa pəncərədə ümumiyyətlə, çox ATM kimi -
və başqa sorğu seçin və OLUNUB arasında olur ki, nəzərdə tutur.
Bu Skroob indi səhmlərin bir sıra itirir ki, işin ola bilər
başqa proses onun dünyanın dövlət yoxlanılması, çünki
və ya o olmalıdır artıq səhmlərin olur.
Biz, xüsusilə hekayə xətləri olacaq dəqiq nə özəllikləri girməyəcəyəm
Bir dəyişənlərin dəyəri kontrol və sonra qərar qəbul etmək varsa, lakin point
başqası o 2 hesabatları arasında bir şey bunu bir risk varsa,
kimi ölçüde sistemlərində multiprocessor sistemləri ola bilər
Eyni anda birdən çox şeyə qabiliyyəti ilə kompüterlər, pis şeylər ola bilər
kimi bank hesablarına, iki dəfə çox süd alışı, səhv tahsil edilir
səhmlərin və ya bu halda yanlış sayı.
Amma bu barədə düşünmək daha asan bir yolu var.
>> Siz doğru masa konfiqurasiya əgər Bu, SQL dəstəkləyir çıxır ki,
Mən iddia edirəm ki, əməliyyatlar deyilən bir şey anlamaq həqiqətən daha asan edir
Bu daha çox, lakin 1-liner deyil, belə ki, həqiqətən, çox cəlb bir az var.
START əməliyyat adlı SQL bəyanat sözün var.
Orada SEÇİN UPDATE, INSERT, SİLİNDİ və OL və digər bir dəstə kimi,
START əməliyyat kimi açar sözlər var.
Və sonra pset 7 kontekstində nə -
siz pset 7 üçün bunu yoxdur, bu, açıq-aydın zəruri deyil ETİRAZ ki,
lakin son layihələr üçün faydalı ola bilər -
Bir START əməliyyat sorğu və sonra başqa bir sorğu zəng əgər
və sonra başqa bir sorğu və sonra başqa bir başqa, bir,
Siz SQL bəyanat Komitəsi zəng qədər bu sorğu həqiqətən, edam ediləcək
hansı nöqtədə 2 hesabatlarında və ya 20 hesabatları olsun, onlar bütün, bir dəfə icra edəcək
hansı başqa heç bir təsadüfən çox süd və ya debet çox pul əldə edə bilərsiniz deməkdir
sizin queries bütün icra edəcək və ya çox səhmlərinin
geri geri geri geri.
Bu siz bu kimi bir şey yapýyorsun xüsusilə, super vacibdir.
Bu edək bank hesabı güncelleyin deyir ki, ixtiyari nümunəsidir
hesabı 2 saylı olduğu $ 1000 - balans bərabər balans yaradılması.
Və sonra ikinci bəyanat İndi ki, $ 1000 depozit qoy edir
daxil başqası kimin haqq-hesab sayı 1 bank hesabı var.
>> Başqa sözlə, bu Sizi əmin etmək istədiyiniz bir mükəmməl nümunəsidir
Bu hesabatları, həm də bütün baş və ya deyil ki,
başqa müştəri berbat almaq üçün gedir çünki
və onların pul almaq və digər bu depozit deyil olacaq
Siz para olacaq yerləşir və ya bank berbat almaq üçün gedir
ancaq istifadəçi hesabınızdan çıxmaq deyil.
Belə ki, onların hər ikisi birlikdə icra etmək istəyirik.
Belə ki, dünya əməliyyatlar aparır.
Belə ki, fikrinizi arxasında saxlamaq üçün bir şey var
yalnız bir yekun layihə məqsədləri üçün çox deyil,
lakin yerdə son layihə almaq istəyirsinizsə,
siz ətrafında bir şirkət başlamaq istəyirsinizsə,
siz kampus bir tələbə qrupunun problemi həll etmək istəyirsinizsə,
və həqiqətən canlı, aktiv haqqinda, bu yarana bilər ki, incə səhvlərindən sıralama var
Siz olduqca vasitəsilə düşünmürəm əgər nə edə bilər, əgər 2 nəfər
vaxt sanki eyni anda sizin web daxil olmaq üçün çalışırıq,
qovuşdurmağımız onların sorğuları başqa interwoven almaq bilər.
>> Bəzi JavaScript, onun teaser üçün hazır?
Bu dövr üçün son dilidir. Bütün hüquqlar.
Şükür, JavaScript, 2 dildə, C və PHP çox, çox, çox benzer
biz belə uzaq etdik.
Yoxdur pset 7 heç JavaScript, ancaq inanılmaz faydalı aracıdır
bu web-based final layihələr edir və ya, həqiqətən, yalnız web proqramlaşdırma ümumiyyətlə gəldiyi zaman.
DOM adlı bir şey Belə sürətli bir genel bakış.
Burada həqiqətən yalnız hello, dünya deyir ki, super sadə web səhifə
adı və bədən də.
Bu abzas, bir müddət təklif etdi
web pages bir iyerarxiya həqiqətən var.
Mən bir ağac kimi HTML eyni parçasını cəlb edə bilər
, C data strukturlarının bizim müzakirələr geri düşüncə aşağıdakı kimi.
Mən sənəd node adlı xüsusi kök node var
və biz yalnız bir anda JavaScript bu analog görəcəksiniz.
Bu halda ilk uşaq və yalnız uşaq HTML tag edir.
Bu doctype birbaşa Xəritəçəkmə var.
Xüsusi bir şey, bu DOM gəldikdə biz yalnız ignore lazımdır
bu Document Object Model ağac.
Qeyd edək ki, bir düzbucaqlı kimi özbaşına təsvir etdiyiniz HTML tag,
baş və bədən: 2 övladı var.
>> Bu eyni düzbucaqlı kimi tərtib olunur.
Bu baş orqanının sol ki pictorially mənalı.
Bu dolayısı rəhbəri ağac birinci gəlir ki.
Bu kimi cəlb Belə ki, bir ağac sifariş, əslində var
şekiller və etajer ixtiyari olsa belə.
Baş zamanda, mövzu adlı bir uşaq var
və ixtisasın adı əslində "hello, dünya" olan öz uşaq var
I qəsdən düzbucaqlı bu qədər müxtəlif etmək üçün burada bir oval kimi çəkdi.
Hello, dünya həqiqətən bir mətn node isə bu düzbucaqlı, elementləridir.
Belə ki, ağac bir node, ancaq node müxtəlif növü var
Mən özbaşına fərqli o çəkdi.
Eyni bədən, eləcə hello, dünya adlı bir uşaq var
onlar təsadüfən eyni mətn olmalarına baxmayaraq müxtəlif node,
amma eyni forma istifadə edərək tərtib etdik. Belə ki, kimin umurunda?
Yaxşı, HTML haqqında gözəl nə bu iyerarxik xarakteri yoxdur ki.
Və JavaScript və sərbəst mövcud xüsusilə kitabxana haqqında gözəl nə
və jQuery kimi məşhur, bunu qəribə asan ağac strukturu bilərsiniz.
Biz göstəricilərinə və traversing ağacları ilə C etdi işçilərinin hər hansı və qovşaqlarının haqqında recursing
verilən hüququnun uşaq sol uşaq, biz sıralayabilirsiniz qəflətən almaq
bir az sinir bozucu deyil, əgər qəribə maarifləndirici kimi
lakin yaxın proqramlaşdırma haqqında getmək üçün səmərəli yoludur.
Və JavaScript kimi bu yüksək dillərdə
biz daha çox daxilən bu ağac naviqasiya bilərsiniz.
>> Və həqiqətən sintaksis olduqca tanış olacaq.
Əvvəl JavaScript görməmişəm, bu, həqiqətən, gözəl istinad edir
Mozilla insanlar, bu insanların Firefox etmək,
belə sizin rahatlığınız ki, göz pulsuz hiss edirsiniz.
Nə tapa bilərsiniz - bu slaydlar biz başqa gün istifadə nə ilə eynidir -
eyni, əsas getdi.
Beləliklə, siz JavaScript bir proqram yazmaq zaman, heç bir əsas funksiyası var.
Siz yalnız kodu yazmağa başlayın.
Lakin JavaScript və C və PHP arasında əsas fərq
ki, C və PHP belə uzaq server yan həyata keçirilib halbuki
bu halda cihaz və ya daha ümumi bir server ilə,
Dizayn JavaScript adətən bir brauzer tərəfindən icra edilir.
Başqa sözlə, siz, biz təxminən etdiyiniz kimi, JavaScript kodu yazmaq bilər
bir cihaz ilə server, ancaq siz CSS arasında HTML arasında daxil haqqında,
Sizin gifs və PNGs və JPEGs arasında
ki, siz JavaScript kullanıyorsanız, istifadəçi web page ziyaret zaman
ki, JavaScript kodu, server browser gəlir
və həqiqətən həyata ki browser edir.
Belə ki, bu da əqli mülkiyyət mənalı təsir göstərir.
JavaScript kodu gəldikdə hətta IP qorunması haqqında düşünmək silly növü var
dilin təbiəti adətən browser yan icra olur çünki.
>> Siz crazy və çirkin baxmaq edə bilərsiniz deməkdir ki, qaralmaq olar
heç bir ağ ilə, insanların IP oğurlamaq üçün çətindir etmək dəhşətli dəyişən adları,
lakin əsas bu brauzer yan icra olunur.
Hətta bir kənara JavaScript istifadə edilə bilər server yan kimi,
ən ümumi istifadə halda hazırda brauzerinizin hələ.
Burada bu kimi görünür nə. Burada if-else if-else yalnız PHP kimi, yalnız C kimi inşa edir.
Zaman "və ya" 2 şeyi birlikdə Burada bir Boolean ifadəsidir.
Burada birlikdə zaman "və" 2 şeylər.
Burada PHP oxşar olan bir keçid bəyanat edir
ki, siz dəyərlərin müxtəlif növ bilərsiniz.
Döngüler eynilə biz əvvəl gördüm nə eyni qurulmuş olan, burada loops var.
Baxmayaraq ilmə, biz loops isə nə var.
Dəyişənlər, heç belə bir az fərqli.
Əgər PHP və C nə kimi Siz, dəyişənlərin elan yoxdur
lakin eyni JavaScript zəif çap olunur.
Siz int və ya float və ya simli və ya adətən belə bir şey daxil deyil.
Siz var belirtebilirsiniz.
Siz var bilersiniz yoxdur, ancaq əgər bu təsir göstərir.
Siz var buraxmaq Adətən, əgər təsadüfən əvəzinə yerli qlobal dəyişən yaratmaq.
Beləliklə, demək olar ki, həmişə yalnız var demək və sonra dəyişən adı mənə təklif edək.
Bu bir növü deyil, dəyişən sadəcə var var.
Bu 123 və ya "Salam, dünya" olub, nümunə ola bilər.
Diziler indiki və PHP üçün syntactically oxşardır.
Mən var nömrələri demək lazımdır və sonra dəyişən bəyan yenidən kvadrat mötərizə istifadə
virgülle ayrılmış o bu xüsusi nömrələri ki array olan növüdür.
Və sonra nəhayət, bu, həqiqətən müxtəlif görünür ki, yalnız biridir.
PHP biz bir tələbə üçün assosiativ array həyata olardı Xatırladaq ki,
Zamyla kimi dəyişən tələbə adlanır yerləşir ki, bu kimi baxmaq bilər.
Bu kvadrat mötərizə burada bir sıra gəlir deməkdir.
>> Mən rəqəmli göstəriciləri lakin strings istifadə deyiləm ki - id, ev, və adı -
bu assosiativ array o deməkdir ki,
və bu oxlar işarəsi və bucaqlı mötərizə bərabərdir
əsas "id" deməkdir, dəyəri 1;
əsas "ev" dir dəyəri Winthrop House;
əsas "adı" dir dəyəri Zamyla Chan edir.
Belə ki, içərisində öz dəyəri var hər biri bu assosiativ dizi, 3 düymələri var.
Biz pset 7, və ya tezliklə olacaq, JavaScript eyni fikir, gördüm
lakin bu kimi baxmaq olacaq.
Belə ki, var tələbə - no dollar işarəsi və növü qeyd hələ lakin var -
JavaScript sizin əsas dəyər cüt zaman çünki qıvrım aşırma açın bərabərdir və
siz həqiqətən bir obyekt deyilən bir şey istifadə edin.
Və APCS almaq və ya kimi etməyən sizin Java olan obyektlərin xatırlayıram bilər
və ya oxşar dillər.
JavaScript ilk növbədə, Java deyil.
O, məşhur idi ki, başqa bir şey çırpmaq üçün qəsdən dizayn qərar il əvvəl
onun adı, özü Java heç bir əsas əlaqəsi olsa belə.
JavaScript obyekti var və siz buruq brace notation yolu ilə onlara yaradır.
JavaScript obyektlərin PHP assosiativ serialların olduqca çox ekvivalent
onların içərisində saxlanılması data gəldiyi zaman.
>> Lakin daha güclü JavaScript siz çox asan funksiyaları ilişkilendirebilirsiniz
bir obyekt daxilində, və digər dillərdə edə bilərsiniz baxmayaraq,
biz görəcəksiniz kimi, olduqca ümumi bir paradiqma var.
Bir sözlə, bu obyekt, xüsusilə Zamyla olan, tələbə təmsil
və bu, konseptual bu yalnız syntactically müxtəlif oxşar.
Nin həqiqətən bir fayl JavaScript istifadə edək.
Bir script tag var həyata çevirir.
Biz stil tag gördük və biz digər HTML tags gördük.
Bu script tag həqiqətən bir JavaScript kodu ehtiva edir.
Biz bir mənbə kodu əvvəlcədən hazırlanmış olduğu mənə cihaz daxil edək.
Mən saytında hələ olunub, lakin mən sinif sonra edəcəyik.
Nin, blink.html bu bir açmaq edək.
Geri 1990-cı ildə, blink tag adlı HTML tag, sözün var idi
və bu internet üzrə ən gözəl overused tags biri idi
Bəzi 1990 üslub web səhifəsinə baxın və bu kimi flashing mətn görmeye başlamaq istədiyiniz vasitəsi
Marquis tag nəticələri, mətn bu kimi davam etmişdir.
Dünya həqiqətən bir web standart qəbul etdiyi neçə dəfə biri
heyəti arasında hər kəs bir neçə il əvvəl qırpmaq tag öldürdü.
Amma biz sizə güc nümayişi kimi JavaScript ilə xortlamaq bilər
bir web səhifə daxilində bir proqram yazmaq bilər.
Birinci nin yeni məhsulları üzərində keçmək və köhnə yalnız diqqət edək.
>> Bu nümunə köhnə stuff deyil.
Mən HTML tag, baş tag, və adı tag var.
Sonra bir div burada bir bədən etiketi olan geri yalnız səhifə düzbucaqlı bölgüsü
Mən "salam" nin özbaşına unikal ID təqdim etdik ki,
yalnız mən benzersiz ona aid bir yol var ki, bir çox sadə mətn var:
hello, dünya.
İndi mənə bu faylı üst diyirləyin və yeni nə bildirin.
Yeni üst ki, ilk şey, skript faylı tag edir
və içərisində script tag bildiriş bir funksiyası elan etdik.
PHP olduqca oxşar JavaScript funksiyası, elan etmək üçün,
siz sözün funksiyası funksiyası sonra adı, parantez, yazmaq
və bəlkə bəzi dəlilləri hər hansı bir edir, əgər.
, Sonra mən həmişəki kimi mənim buruq brace var, indi biz bir az yeni kodu
lakin bu nə deməkdir bax edək.
Var div Belə ki, bu yalnız mənə bir dəyişən adlandırılan div vermək deməkdir.
Mən bu foo adlı bilərdi, ancaq div adlandırmaq istədi
ikinci aydın olacaq səbəblərə görə.
Sonra JavaScript çıxır - bu mənim web page daxil JavaScript kodu -
sənəd adlı növ xüsusi qlobal dəyişən var.
JavaScript əslində bir obyekt-yönümlü dilidir.
Biz, o deməkdir ki, nə kimi 50 ətraflı girməyəcəyəm
amma indi bir obyekt bir struct kimi olduqca çox olduğunu bilirik.
Ən problem bir müəyyən zaman geri yol gördüm kimi
biz bir struct məlumat bir çox qoymaq
Eynilə, brauzeri ilə gəlir ki, xüsusi struct sənəd
Hər hansı bir web səhifə ilə gəlir. Mən yaradılmış bir şey deyil.
Bu sənədin strukturu daxilində olsa da, siz məlumatların yalnız
lakin siz də funksiyaları vardır.
>> Və hər zaman, daxili obyektin bir quruluş içərisində bir funksiyası var
bir metod deyirlər. Lakin eyni şey.
Metodu yalnız belə başqa bir şey daxilində olur ki, bir funksiyası var.
Bu xüsusi qlobal dəyişən sənəd adlandırıb ki, bu vasitələri Belə ki,
funksiyası sanki o ki getElementById çağırıb.
Siz DOM bir element, Document Object Model ağacı olacaq
Bu halda təbrik uca ID edir.
Başqa sözlə, biz data strukturları sərf bütün vaxt burada dövrəyə girir.
Biz bir an əvvəl ki, bir DOM Bu şəkil,
səhifə Mən bu şəkil bir div olsa, bir az fərqli olsa
nə document.getElementById mənə qayıdandan səmərəli bir göstərici ola bilər
ağac, ağac olan düzbucaqlı istinad olan düzbucaqlı üçün.
Belə ki, həqiqətən bu funksiyaları bir zəng etmək nə deməkdir var.
Bu halda daha bir div var. Bu orqan və ya bir mövzu deyil.
Mən sonra indi bu dəyişən adlı div daxilində var ki, bu div ilə nə edək.
Bu dinamik səhifə CSS çimdik imkanı JavaScript ilə çıxır.
İndiyədək biz məhdud olsa etdik CSS, bütün stil atributları edir
və ya biz CSS yerləşir başqa qoymaq?
Korlanmış bir I növ. Fayl üst stil tag edir.
Və ya üçüncü yer olub?
>> Bir xarici fayl, bir şey. Css.
Belə ki, o, biz CSS bu günə qədər etdiyiniz 3 yerləri
lakin tutmaq biz sərt bütün kodlu etdik edir.
Bizim CSS nə mühazirə əvvəl pset 7 daxil göyərçin kimi qərar, biz qərara aldı.
Sizin CSS dəyişmək istəyirsinizsə Lakin, həqiqətən bunu edə bilər
bir dəfə bir faktiki proqramlaşdırma dili var.
CSS, HTML - proqramlaşdırma deyil languages. JavaScript edir.
Belə ki, tez ağac həmin düzbucaqlı biri kimi çıxır ki,
DOM adlı, o, özü daxilində bəzi məlumatlar var.
Mən yalnız ağac tutdu ki div biz bunu daxilində mülkiyyət zəng edəcəyik, nə var
stil çağırıb və stil əmlak özü görünürlüğünü adlı əmlak var.
Mən yalnız CSS istifadə qaydaları ararken, bu bilirsən.
O deyir ki, bir görünürlüğünü CSS əmlak var həyata çevirir.
Bu görünən və ya deyil, görünən və ya bir şey edir.
Və necə ki bu.
Bu div də görünürlüğünü gizli, mən program xahiş edirəm
Mən bunu nə dəyişə bilərəm? Görünür.
Bu səhifə görünürlüğünü gizli deyil əgər Else, məntiqi Mən bunu gizli edə bilərəm.
Mən bu görünən və gizli və görünən və görünməyən deyil nə heç bir fikrim yoxdur.
Bu yol boyunca bir yoxsul dizayn qərar idi.
Ancaq o həqiqətən CSS ilə opposites var: görünən və gizli.
Bütün bu və off, bu və off mənim fayl CSS dəyişdirmək deməkdir bilir
xüsusi div üçün.
Ancaq yenə də, bu blink adlı bir funksiyası var. Bu blink funksiyası zaman adlanır?
Bu, başqa xüsusi qlobal dəyişən adlı pəncərə var çıxır ki,
sənəd ruhda oxşar, lakin sənəd web səhifə aiddir halbuki,
DOM ağac kimi, HTML siz server göndərilən
pəncərə, onun ətrafında xrom, ünvanı bar, mövzu bar aiddir
və web səhifə ətrafında məhsullarının bütün.
>> Və pəncərə obyekt setInterval adlı bu xüsusi funksiya daxilində var çıxır ki,
ki, deyir nə.
Bu interval müəyyən edəcək - bu halda hər 500 ms -
və bir tahmin etmək, nə 500 ms hər nə olacaq?
Bu funksiya blink icra edəcək.
Nə burada gözəl Biz heç baxmayaraq biz C bu edə bilərdi ki.
C ətrafında funksiyaları keçmək bilərsiniz funksiyası göstəricilərinə deyilən bir şey yoxdur
arqumentlər kimi.
Eyni JavaScript başqa bir funksiyası bir funksiyası adı keçə bilər.
Mən yapýyorum nə görürsünüz. Mən bunu deyiləm.
Mən blink sonra mötərizədə qoymaq edin ki, blink funksiyası zəng deməkdir.
Mən onlara buraxmaq edin ki, blink funksiyası burada deməkdir
ki setInterval hər 500 ms zəng edə bilərsiniz.
Belə ki, son nəticə, bu dəhşətli olsa, mən localhost getmək və blink.html getmək əgər ki,
İndi təkrar bu baş var.
Mən həqiqətən Element Inspect, biz bunu görürük əgər in görək.
Mənə Element Inspect edək, mənə bir az aşağı diyirləyin bildirin
Mənə burada Element seçmək bildirin, və Chrome-nin inspektor DOM içərisində görürük.
Bu sözün geri və irəli hər 500 ms dəyişən var.
Biz dost Nate, getmək edin
Heç bir interval ilə bu iş necə, oxşar ideya merak, əgər
lakin Nate həqiqətən burada bu halda rəng çox səmərəli istifadə edir.
Belə ki, nə daha biz, həqiqətən, bu nə ola bilər?
Nin başqa bir misal açmaq və bir cəhd edək
o program şeyi blink edilməsi daha çox yararlıdır.
Mənə bu gün formaları qovluğuna girin və form0 daxil edək.
Bu, mən gəlib biləcək ugliest mümkün forması idi
və mənə yalnız bir brauzer kimi görünür nə göstərmək bildirin.
>> Mənə localhost / formaları getmək və bu form0 deyil edək.
Bu, parol, e-poçt üçün bir neçə sahələrdə bir super çirkin HTML forması
parol, sonra bəzi şərtlər etmiş bir az onay.
Mən bu formu və sizə mənim e-mail vermək istəmirsinizsə tutmaq deyil
Mən bəlkə şərtləri razı istəmirəm, mən Qeydiyyat basın
və hər halda mənə vasitəsilə imkan verir.
Bu dump.php adlı axmaq PHP fayl təqdim olur.
Bunu yalnız diaqnostik məqsədlər üçün $ _GET məzmunu çap edir.
Bu yalnız artıq istifadəçi tərəfindən təqdim edilmişdir nə idi.
Ancaq biz, həqiqətən, istifadəçi formada təqdim doğrulamak üçün istədiyiniz nəzərdə tutur.
Mənə version 1 daxil edək.
Bu form1.html edir. Bu, yalnız pis kimi estetik görünür, ancaq nə xülya bilərsiniz.
Mən əməkdaşlıq olmadan Qeydiyyatdan basın varsa, mən yelled almaq.
"Siz e-mail lazımdır."
Bütün hüquqlar. Belə ki, mənə edək. Malan@harvard.edu belə. Mən bir parol lazım deyil.
Qeydiyyat. "Siz bir parol təmin etməlidir." Bütün hüquqlar.
Mən allıq bir parol təmin edəcək. Qeydiyyat.
"Parollar uyğun gəlmir." İndi allıq burada yazın var.
Mən təsadüfən ki yoxlanılır. Qeydiyyat.
"Siz və şərtləri razı olmalıdır." Bütün hüquqlar. Orada razıyam. Qeydiyyat.
İndi mənə orada diaqnostik çıxış göstərir.
>> Belə ki, yalnız nə oldu?
Biz formada təqdim doğrulamak üçün bu qabiliyyəti etdik.
Siz pset 7 daxil dive əgər Əslində, bir Üzr istəyir funksiyası var
ekranda bir mesaj ilə istifadəçi fəğan etmək olduqca asan edir.
Mən bir az fərqli mexanizmi, siqnalı funksiyası, kullanıyorum
bu çox çirkin istifadəçi ismarıclarınız edir ildən sonra gülümsədi ki funksiyası deyil.
Amma burada yapýyorum nə edək.
Bu form1.html və mən bəzi olduqca tanış sintaksis olduğunu fark:
bədən tag, forması tag, fəaliyyət atributu, üsul atribut.
Amma forma rahatlığı üçün unikal ID verdiyiniz bilərsiniz.
Sonra onun növü mətn bir e-poçt sahəsində var
kimin növü kimin növü parol parol təsdiq sahəsində bir parol sahəsində,
və sonra onun adı burada müqavilə bir onay, növü onay edir.
Və sonra bir submit 'düyməsinə var.
Amma daha mən nə üst bildiriş.
İlk növbədə, script tag digər istifadə var.
Yalnız CSS ilə kimi, başqa bir fayl bəzi JavaScript kodu varsa daxil edə bilərsiniz.
Və siz script mənbə ilə bunu, sonra mən yəqin bağlayıram qeyd
çox uzun yol googleapis.com lakin fayl adı jquery.min bitir üçün
minimum üçün. js.
jQuery yalnız JavaScript edir JavaScript üçün super məşhur kitabxana
bütün daha çox istifadəçi dostu istifadə etmək.
Bu səmərəli de fakto standart olmaq var.
Belə ki, hətta haqqında görmək istəyirik nə olsa da, təmiz JavaScript özlüyündə deyil
o qədər CS50 kitabxana kimi JavaScript üst bir kitabxana bir qat edir
aşağı səviyyədə C kodu üst; həqiqəti demək olar ki, İnternet hər kəs istifadə edir.
Belə ki, bu təlim təkərlər deyil. Bu yalnız yaxşı bu gün etiqad edir.
İndi öz script tag edir ki, aşağıda qeyd, mən burada etdik nə görürsünüz.
Bu jQuery bir şey bir az xülya ki çıxır.
JavaScript dollar əlamətləri var, lakin onlar mənasız edir.
>> Onlar məktubu A və ya B və ya C kimi
jQuery sadəcə onunla çəkilmiş iddia Konvensiyanın və ya sort qəbul etmişdir
$ onların xüsusi simvolu olacaq.
Siz script tag ilə burada bu qlobal JavaScript fayl up yük Belə kimi,
siz $ adlı xüsusi bir qlobal dəyişən girmə imkanı vardır.
Bu daha düzgün jQuery deyirlər, lakin $ kimi təxminən kimi sexy baxmaq deyil.
Ancaq $ heç bir xüsusi məna daşıyır. PHP bu xüsusi mənası var idi.
Siz dəyişən qarşısında var idi.
Bu yalnız onların etdi ki, bir sexy şeydir.
Burada nə gedir?
Mən jQuery funksiyası mənim qlobal dəyişən sənəd keçən alıram edək
və sonra mən zəng edirəm. hazırdır.
Nə jQuery mahiyyətcə bu, bəzi vanil JavaScript şeyi etmək üçün imkan verir ki, yoxdur
Sənədin obyekt kimi, pəncərə obyekt
və jQuery funksiyası bu keçir əgər -
və daha aydın olması üçün, bu jQuery adlı funksiyası -
bu nə sizə sənəd xüsusi versiyası qaytarır
ki, ilə bağlı daha çox funksionallıq var.
Belə ki, xam JavaScript heç hazır funksiyası var
ancaq ilk jQuery funksiyası sənəd keçmək əgər,
sizə sənəd obyekt xüsusi versiyası qaytarır
daha fantezi xüsusiyyətləri var.
Nəfər bunu niyə və ki. Bu yalnız biz görmək üçün olduğunuz kimi, nə şeyi daha asan edir.
Belə kodu xətti nə deməkdir?
Sənəd hazır olduqda kodu Bu xətt burada vasitələri -
başqa sözlə, bir browser Bu fayl üst aşağı oxu edilir -
davam və aşağıdakı funksiyanı yerinə.
Nə JavaScript həqiqətən maraqlıdır - və PHP həmçinin bu var -
anonim funksiyaları edir.
JavaScript siz heç bir adı var, lakin onlar bir orqan var ki, funksiyaları bəyan edə bilər.
Burada nə edək.
>> Bu hazır adlı funksiyası, və yalnız aşağıdakı deməkdir
bütün web page hazır olduqda, bütün server oxumaq edilmişdir zaman.
Siz nə istəyirsiniz? Mən kodu bir yığın icra etmək istəyirəm.
Biz dərhal bu kodu icra etmək istəmirəm edək ki,.
Mən bu öz əksini tapmayıbsa, bu kodu bu xətlər həyata başlamaq dərhal deməkdir.
Amma heç, heç, heç bir dedi alıram ki, bu kimi anonim funksiyası bu kesmek
vasitəsilə hələ icra etmir; nəticədə zəng.
Biz əvvəlki forma Məsələn bir an əvvəl bu gördüm.
500 ms sonra, nəhayət nə funksiyası zəng idi? Qırpmaq.
Eyni fikri belə.
Bu bir az qəribə görünür, hətta Yenə, yalnız indi iman haqqında qəbul
, nəticədə deyirlər ki, bir anonim funksiyası bəyan edir ki,
sadəcə function () {yazmaq
Yaxşı kodu biz nəhayət icra edir? Aşağıdakı.
Bu da bir az yeni görünür, lakin bu jQuery funksiyası var burada deməkdir
və bu indi bir qısa yoldur.
Əlbəttə ekranın altındakı HTML Bu parçasını bir ağac nümayəndəliyi.
Bu deyil. Bu səhifə bu hello, dünya misal daha çox maraqlıdır.
Amma bu HTML uyğun bir ağac var.
Bu recursive funksiyası bir cür həyata keçirilməsi üçün boyun bir ağrı ola bilər
kök node-da başlayacaq və sonra kimin ID qeydiyyatı olan node tapa bilərsiniz.
Bizə sanki bu üçün nə jQuery super asan edir.
Durmayın, mənə almaq nə div və ya hər hansı formada, nə HTML element
qeydiyyat şəxsiyyət var.
Bu document.getElementById (qeydiyyat) bərabərdir.
>> Niyə jQuery kimi insanlar?
Yazın qısa çünki. Amma ki, bütün var. Bu eyni fikirdir.
Mənə kimin ID qeydiyyatı olan tag alın.
Və bir formada olur ki, tag, təqdim edildikdə,
davam və bu kodu icra.
Belə ki, bir biz formada dəyərləndirmə edirik necə indi nəzər salaq.
Bu syntax ilk etiraf sirli, lakin nə olub?
Kodu bu xətt doğrudur, mən onun e-mail üçün istifadəçi fəğan gedirəm.
Belə kodu bu xətt nədir?
$ JQuery deməkdir. İndi bu bildiriş.
Bu CSS kimi növ edir.
Siz hələ CSS daxil dived varsa, bu kimin ID qeydiyyatı olan element deməkdir ki, bilirsiniz.
Yer bir uşaq və ya adı daxil edir qeydiyyatı nəslindən tapmaq deməkdir.
Və sonra kvadrat mötərizədə bu şey bir az filter edir.
Bu sirli görünür olsa da, bu yalnız onun ID qeydiyyatı olduğu şəklində getmək deməkdir
onun adı e-poçt ki, input element içərisində gedin,
və sonra onun dəyəri olur nə olursa olsun, onun dəyəri almaq -
asdf ki tipli nə varsa mən tipli və ya malan@harvard.edu bütün varsa.
Şəklində e-poçt sahəsində == heç bir dəyəri, istifadəçi da fəğan əgər.
Else Loqin sahəsində dəyəri == heç bir şey, istifadəçi da fəğan əgər.
>> Else Loqin sahəsində dəyəri təsdiq sahəsində dəyəri bərabər deyilsə,
digər formada element olan, istifadəçi da fəğan.
Və sonra nəhayət - və bu da öz bəzi yeni sintaksis var
lakin bir dəfə onu gördüm, ən azı bir az daha məqbul deyil -
kimin ID qeydiyyatı olan forma adı müqaviləsidir giriş element var başqa əgər
və yoxlanılır, davam və istifadəçi fəğan.
Mən tamamilə bu ilk baxışda tamamilə böyük olduğunu etiraf.
Yeni sintaksis bir çox var. Amma jQuery bütün nümunələri bu cür gedir.
Və vicdanla, mən hətta bir neçə dəqiqə əvvəl qədər bu mövcud bilmirdim.
Mən "bir onay jQuery yoxlanılır əgər necə yoxlamaq yoxdur?" Googled
bunu müxtəlif yolları var, çünki bu, sintaksis edir
faktiki xam JavaScript kodu.
Problem Set 7 ilk səhifə vurğulayır ki,
pset 7 çox özünüzü bootstrapping bir həyata deyil
biz ümid edirəm ki, bu pset həll olan konseptual çərçivə təmin etdik.
>> Amma tez-tez web dizayn halda, bu, həqiqətən, ətrafında soxmaq qədər sizin üçün deyil
belə uzun siz onlara istinad kimi Web kodu parçaları və nümunələr daxil
ilk hesabatında şərtlərinə görə,
və həyata ki, HTML, CSS, JavaScript və hətta SQL təlim
həqiqətən biz bu təlim təkərlər çıxarmaq başlayacaq bu at-ev həyata deməkdir.
Və çox bir browser ilə edə bilərsiniz daha çox şey var bilirik.
Bu elementlərin çox Inside hadisə işleyicileri adlı başqa şeylər var.
Və biz yalnız olanları baxdı baxmayaraq, onsubmit və onready adlı
siz onkeydown, onkeyup kimi şeylər edə bilərsiniz
istifadəçi bir əsas toxunduğu zaman kimi, bu və əsas qədər dinləyə bilərsiniz.
Gmail klaviatura qısa yolları var.
Google bəstələmək üçün C kimi klaviatura qısa yolları həyata edir?
Onlar onkeypress ya onkeyup və onkeydown kimi adlandırılan etdiyiniz kimi, tədbirlər üçün qulaq asmaq.
Heç bir menyu et üzərində siçan hovered varsa
və ani, voiture bütün menyu görünür və ya qrafik rengi
necə ki edirlər?
Onready ya onsubmit üçün qulaq asmaq deyil, siz onmouseover ya onmouseout üçün qulaq asmaq.
>> Belə ki, qısa, bu çox sadə əsasları ilə biz bu gün səthində danışıq başlayıb etdiyiniz
və biz artan siz, Çərşənbə üzrə gələcəkdə dalış lazımdır
Əgər siz artıq tanış olduğunuz şeyi cür həyata gücü.
Belə nin orada son qoy, biz Çərşənbə günü bu davam edəcəyik.
>> [CS50.TV]