[Bölmə 9] [Daha Rahat] [Rob Bowden] [Harvard Universiteti] [Bu CS50 edir.] [CS50.TV] Bütün hüququ. Əsasən bu gün bəzi suallar bütün sizin uşaqlar var. Mən bəzi mövzular gezmek edə bilər heç bir xahiş hər hansı bir sualınız varsa bir az. İnşallah siz. Hər hansı bir sualınız var? Bəlkə keçmiş sınavlar, hər şeyi hazırda rahat deyilik. Bəli. [Tələbə] Siz bufer daşqın hücumları artıq getmək edə bilərəmmi? [Rob] Sure. Əsas misal həqiqətən burada ola bilər. Bufer daşqın hücumların arxasında əsas məşğul biz burada, bəzi bufer var. Char c - yalnız ölçüsü 12 olan - lakin sonra biz bufer bir şey daxil edilir lakin biz daxil nə qədər dəqiq yoxlanılması deyil. Burada C strlen (bar) daxil edilir, lakin uzun bar necə bilir. 12 simvol artıq var, onda bu bufer daşqın gedir. Bu şəkil baxaraq - Siz 61 əgər siz layout bu növ ilə daha çox tanış olacaq və xilas çərçivəsində göstərici və qaytarılması ünvanı və müəssisənin gündəlik yığını ilə məşğul və bu faktiki şeyi. Amma burada yalnız biz var ki, bilmək lazımdır bizim bufer üçün bu kiçik kosmik. Burada biz c (0) var və biz belə c, 1, 2, 3, 4, 5 və var. Normal şəraitdə biz adi olaraq bu bufer doldurmaq olardı. Biz daxil əgər 'salam' biz h-e-l-l-o / 0 istiyorum, və sonra boş bir dəstə. Bir hacker üçün - oh, mən bu nümunəsidir danışarlar. Bir hacker üçün biz bu harada kimi bir şey almaq nə onlar xüsusi çalışdığınız edir adətən qaytarılması ünvanı yalnış düçar edər. Bir funksiyası zəng və sizin yığını çərçivəsində yığını üzərinə basdı olur zaman ki yığını çərçivəsində necə bilmək lazımdır - yaxşı, deyilir ki, funksiyası bu adlı funksiyası qayıtmaq üçün necə lazımdır. Əsas zəngləri foo Belə ki, foo, əsas qayıtmaq lazımdır və belə ki, bu qayıdışı ünvanı nə var. Amma nə hacker nə olacaq edir xüsusi qaytarılması ünvanı ilə yalnış harada yenidən - Little Indian - bu sadə deyil, lakin hər byte geri edir. Bu return address qədər kompüter narahatdır Bu ünvan dönən foo qaytarılması ekvivalent və ya əsas deyil və ya hər hansı funksiyası çağırıb. Belə ki, bu ünvana geri olacaq sadəcə bu ünvanı olmaq olur olan ya bəzən nə onlar burada nə qaytarılması ünvanı istifadə edir Onlar bilirlər ki, xüsusi bir funksiyası var artıq. Mən funksiyası adlanır nə xatırlayıram bilməz. Sonra bu qədər baxmaq lazımdır. Burada nə onlar yapýyorsun qaytarılması ünvan keçən edir yığını özü və bu bir qədər qəribə olduğu üçün yaddaş harada nümunələri var - yaddaş read-yalnız, oxumaq-yazmaq qədər split və yürütülebilir yaddaş edilə bilər - biz əvvəl olduğu read-yalnız yaddaş gördük yerləşir Mən char * s demək əgər = salam mən salam dəyişdirə bilməz. Ki, oxumaq yalnız var yaddaş. Yürütülebilir yaddaş bu fikir də var yürütülebilir yaddaş kodunuzu mətn seqment olardı. Sizin adi ünvanı kosmik layout baxanda - Mən yaxşı bir şəkil olacaq inanıram - Bu işləri - biz burada yığını var. Biz data yaddaş var. Əsasən bu Yoksay. Bu, bizim yığın edir. Və sonra biz aşağı burada, bizim əsas proqram kodu var. Bu, bizim * = salam char kimi strings qoymaq yerə bənzər ki, oxumaq yalnız var. Amma siz də yürütülebilir kimi bu əsas proqram kodu qeyd edə bilər. Və bunu edirik və ya əməliyyat sistemi yoxdur ki, əgər doğru sonra bu yaddaş yalnız yer olmalıdır kod həqiqətən həyata bilər olan bufer daşqın hücum bu cür biz burada o deməkdir ki, Bu qədər burada yığını yaddaş icra çalışır, çünki səmərəsiz olardı. Şəkillər ilk fark. Biz yığını böyüyən var. Burada yığını aşağı artır. CS50 məqsədləri üçün yığını qədər artır. Bu bufer daşqın bu xüsusi növü alt mümkündür qeyri-yürütülebilir regionlarda yaddaş bu yürütülebilir bölgələri olan. Amma bu, yalnız çox nadir hallarda yürütülebilir yaddaş yürütülebilir kimi qeyd olunur ki, baş verir. Bu, sadəcə, oxumaq yalnız və yenidən yazmaq lazımdır istifadə olunur ki, yalnız şeylər çalışır bu hələ çox səmərəli edir. Və burada biz istədiyiniz nə qoymaq bilər. Bu, faktiki olaraq 61 bu il bir Pset kimi edilməzsə, ancaq keçən il bu təklif və ya hər hansı əvvəlki ilin baxsaq bir Pset Siz xüsusi ehtimal olunur ki, burada kodunu daxil ehtimal edirik ki, bəzi xüsusi dəyər çap və ya fərqli bir dəyər qayıtmaq çap üçün ehtimal olunur ki, dəyəri. Və ya daha çox ağılla, siz zəng və ya yazmaq istəyir - , belə ki, burada qədər qayıdacaq və sonra burada bəzi coding icra edəcəyik və daşqınlar ağıllı sonra bu qaytarılması ünvanı olmaq üçün istifadə nə qayıdacaqlar. Biz bu yalnış lazım belə olsa da bura gəlib, biz hələ bir yerdə ki, qaytarılması ünvanı xatırlamaq biz, əsas və ya hər hansı qayıda bilər ki, biz hətta hər şeyi səhv getdi fark heç kimi və bu. Lakin şeyi ki, bəlkə burada daxili biz iPhone gelbroke olduğu halda belə etdi. Things normal kimi getmək - biz bəzi proqram run və hər şeyi qaytarılması başa kimi Bu qayıtmaq ehtimal nə, lakin bu vaxt Siz bütün əməliyyat sistemi məhv idarə. Siz kodu bufer daşqınlar barəsində həqiqətən faydalanaraq bilmək lazım deyil. Bu əsas fikir bilmək lazımdır daşdı olunur ki, bufer, və bu, biz yoxlanılması deyilik, çünki bu daşdı edilə bilər ki, səbəb olur bunun çərçivəsində həqiqətən istəyirik. [Tələbə] yalnız həddi yoxlanılması qarşısını almaq üçün həll? [Rob] Bəli. Bu halda həll olacaq bar strlen 12-1 daha böyükdür, əgər deyə bilər ya - Siz sonunda / 0 lazımdır, çünki - və ya özünüz loop üçün ki, yalnız nüsxə ilk 11 simvol bilər və ya, həqiqətən, siz ki, bufer daşqın deyil əmin kontrol edirik burada yalnız bir şey. Digər suallar? Bəli? [Tələbə] Siz çalışır və bəlkə proqramlaşdırma (Işitilemez) haqqında bir şey haqqında danışmaq olar. [Rob] Sure. Faktiki proqram - biz sizə imtahan trie bir həyata etmək etmək heç vaxt Bu hash masalar edənlərə haqsızlıq olardı. Və eyni sizə imtahan hash table həyata etmək heç vaxt Bu çalışır edənlərə haqsızlıq olardı. Siz bununla belə trie və ya bir hash masa struct və ya hər hansı struct bilməlidir. Bu, həqiqətən, biz gördük data strukturu hər hansı doğrudur. Əlaqəli siyahıları, dizilir skews, ikili ağacları - Siz ürək həmin structs müəyyən etmək lazımdır. A trie - Siz nə etmək lazımdır yalnız şey deməkdir ki, biz sizə verəcəyik bəlkə bəzi söz və ya bir şey və biz trie tikintisi demək lazımdır - sizə söz bəlkə bir set vermək lazımdır və biz bu lüğət təmsil bir trie tikintisi kimi edirik. Bizim lüğət pişik və it edək. Trie ideyası Biz bu serialın ilə başlamaq - 26 slots - və hər slot slot faktiki index biz narahat olduğunuz məktub uyğundur. Belə ki, burada, biz trie daxil pişik daxil çalışdığınız əgər ilk xarakterli olacaq olan 'c' 'a 0, onda b 1, c 2. Biz ikinci indeksi daxil olacaq, və biz off bir trie yaratmaq olacaq. Biz 26 slots olacaq. Və sonra biz index pişik ikinci xarakter gedir. Bu 0 spot olacaq olan 'a' var. Və 26 ləkələr var olacaq. Sonra 't' üçün getmək və biz də enir həqiqətən cür əhəmiyyətli olan olardı çünki - Bu bura qədər gəlib bildirin. Burada 't' üçün trie var. Bu 't' 19 index edir deyirlər. Çalışır haqqında xatırlamaq vacib şey yalnız bu göstəricilər takip bilməz. Siz həmçinin bu həqiqətən bir söz sonunda olub takip lazımdır. Belə ki, burada daxili biz deyir ki, bayraq bir növ lazımdır tamam, bu həqiqətən bir söz sonu. Biz sonra bizim lüğət daxil fəlakətli daxil cəhd olan səbəbi Eyni başlayaraq 3 simvol var lakin daha gedir, biz bu sözün sonu olduğunu qəbul etmək lazımdır. Biz ca "axtarmaq üçün cəhd və ya alternativ bəlkə bir söz deyil lakin biz burada sonra biz aşağı almaq - və ya c və sonra biz bir baxmaq olardı - biz tanımaq lazımdır ki, bu node gələn bir göstərici var baxmayaraq bu sözün sonunda təmsil etmir. Belə ki, nə o deməkdirmi ki, - siz nə demək gedirdi? Ki, struct kimi görünür nə deməkdir? [Tələbə] Bu bool idi ya yox idi sonra 26 uzun və ki, göstəricilər bir sıra var. [Rob] Bəli. Beləliklə, biz bir struct trie * göstəricilərinə lazımdır - burada biz [26] haqqında demək lazımdır və sonra burada nöqtəli vergül. Amma Pset, biz də apostrophes üçün hesab etmək lazımdır, siz indeksi 27 və ya bir şey ilə Apostrof ki, ağır kodu lazım idi. Lakin burada biz yalnız 26 qayğı. Və sonra biz bəlkə bir ildə char və ya bool lazımdır - Bu söz zəng edək. Mən heç çalışır haqqında bilmək lazımdır deyə düşünürəm 3 şeyi 2. - onları tikinti, onların struct, və son şey onların run-time edir. Və ya bir trie axtarış - trie uzunluğu nədir? Biz k biz axtarır üçün baş sözün uzunluğu olduğu o (k) demək yerdir; lakin eyni zamanda biz demək - ən azı Pset 5 Speller xatirinə - deyə Lüğətə ən uzun söz 45 simvol, belə ki, bu əsasən daimi vaxt olan 45 Ç. Belə ki, bir üst bound sonra uzun sözü varsa - və ya hətta ingilis lüğət kimi - Sizin uzun sözü bir üst bound var. Və ya hər hansı bir lüğət - bir uzun yuxarı sözü bağlı var. Olursa olsun siz yapýyorsun nə daimi zaman, həqiqətən çalışan arasında bir fərq var demək deyil, çünki k O gözəl Yalnız 3 simvol sözləri olan bir əlifba qarşı 45-karakter söz. Ki, haqqında başqa bir şey ki, - oh, çünki yalnız 45 ən uzun söz olur ki, eyni zamanda nin alqoritm N. O deyək çünki cür silly edir Tamam Yaxşı, yaddaş yalnız 2 ^ 32 bayt qədər dəstəkləyir, çünki, sonra N ən çox 4 milyard olduğunu və niyə bir nöqtədə olan, daimi vaxt var bu bir üst bound var olduğu şey bu cür demək silly var hər şey daimi vaxt, çünki biz yalnız daimi zaman azalda bilər ki, ki, yol hesab zaman. Amma biz yəqin ki, bu, həm də qəbul edirəm. Hər halda ya izah O (1) siz söz üst-həmsərhəddir uzunluğu var deməkdir; O (k) sözü sizin uzunluğu deməkdir - yaxşı, k sözü uzunluğu deməkdir. Bəli. [Tələbə] Bu bool mu - çünki sizin trie zaman Siz pişik gedəcəyini və sonra növbəti göstərici getmək - bu idi kimi görünürdü ki, doğrudur bərabərdir əgər və sonra demək - siz t ilə kimi doğru qoymaq olardı? [Rob] Bu halda hesab edək siz yalnız cəhd və ilə gəlmək olar nümunələri bir çox sadə və / və ya ifrat nümunələri və nə ola bilər, belə ki, sözü 'bir' hesab edək. Bizim orijinal trie - biz burada 1 qoymaq istəyirik, və ya biz aşağı burada bir 1 qoymaq istəyirəm. Mən sonunda yəqin ki, ola / və ya ki, deyərdim. Mən bir səbəb hesab edə bilməz - və ya, həqiqətən, sizin wouldn't - Siz hətta uzaq getmək lazım deyil, çünki mən orada qoymaq deyil səbəb olur. Biz bu trie ayırmaq lazımdır heç vaxt. Biz yalnız orada 1 qoydu. Bu hələ null işarə edir. Biz yalnız bir simvol olacaq əgər yalnız istifadə kimi məktub işarələmək üçün başqa trie aşağı genişləndirmək üçün heç bir səbəb yoxdur. Eynilə, biz 'bir' orada qoyduğu əgər sonra mütləq bütün bunlar yalnız bütün dövrlərdə 0 olardı. [Tələbə] Amma biz bu 'bir' qeyd edir ki, bir başlanğıc trie ehtiyac yoxdur? [Rob] Biz bir qlobal və ya bir şey struct trie * t burada işarə, lakin yalnız bir göstərici var. Bu işarə ki, bir tam partladılmış trie deyil. [Tələbə] Okay. Sözü mən - Necə biz məktub 'i'təyin edərdi? [Rob] Onun sual ki, cavab bilər. Tutun. - Yəni bir məsələ olduğu və özü bir trie edir Mən Pset bunu yazılı olardı yol bilmirəm. Əvvəlki struct pis idi. Və bir pointer - Amma biz də struct node bir bool deyil edə bilər - Siz onu yazmaq bilər çox yolları həqiqətən var. Alternativ olaraq bir trie bir struct olmaq lazım deyil. * Typedef node - hətta trie ola bilər - node [26] bir trie edir və bu struct artıq. Pset siz gözlənilir ki, yol hesab üçün çalışırıq Ben - indi var olacaq. [Tələbə] Mən baxış iclası çəkdi və mən yalnız getmək edirəm - kimi bir bir sonra növbəti getmək varsa - [Rob] Yəni, onlar bunu necə var? [Tələbə] Və sonra əsl var, əgər bu iş deyil - [Rob] Bəli. Ki, iş yoxdur. Bu yer tullantılar - Siz mütləq siz ilk növbədə lazım deyil ki, trie bütün digər səviyyədə var. Burada hər çirkin əldə - əsasən nə mən burada çalışıram asılı deyil - yerine çalışır 26 göstəricilərinə olan, belə 26 bool pointer, bool pointer, bool pointer, və var. [Tələbə] Siz ki, 2 serialların edə bilməz? Bools və göstəricilər bir sıra bir array? [Rob] Siz ancaq sonra etmək lazımdır istədiyiniz bilər - Booleans və göstəricilər 2 Diziler. Daha sonra Booleans sizin array qurmaq lazımdır - Booleans sizin array trie kimi böyük olmalıdır Siz yalnız 26 booleans ola bilməz, çünki. Hər bir mümkün inkişaf var - kimi trie 26-dan artıq doğru və ya yalan mümkün sözləri var. Bu noktada, onlar həmçinin, yalnız trie ilə aşağı artır ki, bir struct ola bilər. Mən burada nə istəyirsiniz - çünki bu doğru görünmür? Belə ki, trie * t - Siz typedef (node ​​*) [26] trie edə bilərsiniz; mən arıyorum syntax ola bilər. Və bu, yalnız müntəzəm trie olmalıdır. Mən əmin deyiləm. Amma ki, biz nəzərdən bunu yolu, belə ki, çox, mükəmməl gözəl işləyir. Bu deyil, əgər bu halda yalnız bool söz və sonra 26 bir sıra sonra növbəti səviyyəsi getmək üçün var. Mən bunu istəyirəm yolu haqqında düşünmək lazımdır. Digər suallar? [Tələbə] Mən başqa bir şey haqqında sual edə bilərəmmi? [Rob] Bəli. [Tələbə] Siz fərq nə üzərində getmək olarmı və zaman Ajax qarşı jQuery istifadə edin? [Rob] Onlar tamamilə fərqli və özləri edir. JQuery Ajax imkan vermir. Bu, bizə Ajax bəzi asan istifadə vermək yoxdur. Amma Ajax JavaScript sövq gəlir. JavaScript Ajax imkanları var. Mən istəyirəm zaman mən bir səhifə artıq Ben və oxşatmaq Ajax deməkdir Bütün - Mən bir şey basın zaman yeni məlumat yükləmək üçün səhifə yeniden ehtiyac yoxdur. Mən yalnız yeni məlumat tələb. Siz Facebook və ya bir şey baxmaq olar. Şəbəkə Inspect. Bu Shrink. Down burada biz bütün bu sorğu əldə etdiyiniz görürük. İndi basın zaman - Mən hətta bir şey basın əvvəl də, bu, Ajax edir. Mən bu basın əgər Lakin, o, aşağı burada sorğuların dəstə etmək olacaq yalnız bu sorğu edilməsi, - oh, indi artıq burada. Nin canlandıraq. Daha bunu. Biz bütün bu sorğu almaq ki, bax, lakin bu hələ də səhifə loading prosesində ola bilər. Facebook səhifə yüklü sonra da bu daimi sorğu edir bildiriş. Burada basın əgər, bəzi data bir daha sorğu etmək lazımdır Mən yalnız tıklayan şey cavab edir. Ajax yalnız nə var. Bu ilk səhifə ilə yükləmək deyil ki, məlumat üçün çəkmək imkan verir. JQuery ayrı. JQuery asan bir çox şeyi edir ki, yalnız bir JavaScript kitabxana. JQuery ilə bu üstünlüyü bir çox bu yalnız edir - dollar işarəsi - dollar işarəsi JavaScript cari dəyişən deyil. Belə ki, jQuery - bunu bütün kimi söyləyərək var $ = heyəti bütün dəstə - bütün bu məhsulları ilə bəzi böyük funksiyası kimi - və sonra kimi yolları ki, dollar işarəsi istifadə $ ("# Footer"). Stil ("text-align", "center"). JQuery bizə bir böyük üstünlüyü sintaksis bu növ verir - digər xüsusiyyətləri vardır, lakin biz sizə ən diqqət istəyirəm nə yalnız bu kimi elementləri seçin edə olunur. Müntəzəm, düz-köhnə JavaScript sizin kimi şeylər edə bilərsiniz ID footer-dot ilə element sənəd-dot-almaq - Mən bu nöqtədə nə bilmirəm - CSS və ya stil və ya bir şey haqqında bir şey - lakin sonra alternativ olaraq, biz sinif seçin istədiklərini deyirlər. İndi biz bu üslubu ilə bir sinif footer ilə hər şeyi üslubu. Biz hər hansı bir Stil ci maddələrdə istəyirdi, hətta əgər. Belə ki, bu selector - Bu kimi DOM şeyi seçə bilərsiniz olan olduqca rahat düz köhnə JavaScript sinif adı ilə sənəd-dot-almaq elementləri etmək olardı ildən və ya nə və ya Mən bir tag istəyirdi, mən tag adı ilə elementləri almaq demək lazımdır istədiyiniz. Belə ki, mən bu şeyi bütün daxil olan xüsusi yollarını bilmək lazımdır. Funksiyaları Mən bir sinif və ya ID istifadə edirəm asılı olaraq müxtəlif olacaq və ya bir tag və ya nə, jQuery yalnız mənim üçün ki, yoxdur halbuki. [Tələbə] jQuery bu səhifənin ilkin üslubu bunu etdiyiniz zaman istifadə edilə gedir? Və ya üslubu dəyişdirmək üçün artıq var sonra - [Rob] onu dəyişdirmək üçün. [Tələbə] artıq yüklənmiş oldu sonra. [Rob] Bəli. Hər hansı bir ilkin üslubu - yaxşı, hətta - ümumiyyətlə dəyişmə bu cür istifadə edir. Siz dəyişə bilməz - bu mükəmməl gözəl iş olardı. Amma adətən bu kimi stil dəyişə bilməz. Bunun yerine, yeni bir sinif və ya bir şey vermək istədiyiniz CSS artıq müəyyən bir şəkildə ki, sinif üçün müəyyən edilmişdir, halbuki. Bu maddələr verərək yeni bir sinif seçilməsi alıram Mən artıq nazil edilmişdir ki, üslub tətbiq edirəm. [Tələbə] Beləliklə, siz onay bir neçə və seçdiyiniz ki, hər şeyi seçin yeni bir stil dəyişdirmək və müxtəlif axtarır başlayın. [Rob] Bəli. Haqqında xatırlamaq başqa şeylər - yaxşı, siz jQuery haqqında xatırlamaq lazımdır bir neçə funksiyaları var. Biz ID P. ilə bir şey seçilməsi demək edək [Tələbə] Siz həmişə funt istifadə etmək varmı? [Rob] Bu ID deməkdir. Bu CSS ekvivalent, belə ki, CSS seçiciler - bu ilham edir. Harada bir footer stil etmək istəyirdi əgər CSS - və ya ID footer ilə bir şey - Bu text-align kimi olacaq: mərkəzi; Siz imtahan CSS yazmaq lazım deyil, ancaq seçiciler bilmək lazımdır. Onu oxumaq üçün necə bilmək lazımdır - Siz nə bilmək lazımdır. Amma biz heç vaxt - Siz müxtəlif mümkün üslubu şeyi yadda ehtiyac yoxdur. Və ya onların hər hansı. JQuery şey xatırlamaq lazımdır - Siz dot-HTML, və jQuery ümumi model xatırlamaq lazımdır - bu yenidən yazmaq imkan verir. A ümumi model biz ("# f") $ var. Html Mən yalnız düz parantez qoymaq əgər ki, HTML almaq deməkdir; halbuki mən HTML demək və burada mən istəyirəm nə qoymaq əgər - bir şey üçün bəzi link - Bu mötərizə daxilində bir şey qoyaraq artıq HTML edir. Funksiyaları bir dəstə arasında olduqca ümumi var. Mətn ilə eyni şey var. HTML və mətn arasında fərq mətn bu daxil etmək üçün gedir ki, kimi hərfi az-çox, daha çox-çox əvəzinə bir anker tag kimi. Və mətn yalnız bunu, eyni olacaq. Deyil sənədin HTML - Bu sənədin mətni almaq olacaq lakin bu element ərzində yalnız mətn. 'F' bir giriş üçün ID olmaq olur başqa biridir, sonra-f-dot-val hash - Mən kimi bir şey üçün giriş qurmaq istəyirsinizsə - mən bir onay hit deyək və mən bir default dəyəri qurmaq istəyirik - dot-val - 3 - - Mən hətta bilmirəm ki, avtomatik olaraq mətn qutusunda 3 daxil daxil olacaq, I 3-dot-val demək əgər ki, mənim üçün, mətn qutusuna hazırda nə geri olacaq. Bu formu doğrulama üçün faydalı olduğu Mən yalnız onlar həqiqətən şeyi doldurulmuş əmin etmək istəyirsinizsə. Mən təqdim edib sonra qaçılmaz server bəzi səhifəsinə göndərilə əgər bunu bir yoldur - kimi bizim üçün PHP olacaq - və ki, data emal cəhd və deyərdim indi deyir ki, bir səhifə onları yönləndirən onlar, bir şey doldurun etməyib Siz hər şeyi doldurmaq etməyib. Əvəzində bunu olan val boş olduqda, JavaScript / jQuery yalnız bilərsiniz. Boş quotes - və ya val edir. Indi biz bu sahəyə doldurun etməyib ki, onlara xəbərdarlıq edə bilər - yalnız olacaq. Qaçılmaz siz PHP server-side yoxlanılması etmək lazımdır, çünki Siz yalnız bütün brauzerlərdə JavaScript aradan bırakabilirsiniz. Amma JavaScript, bu aktiv var olanlar üçün rahat edir və brauzerlər faktiki olaraq doxsan doqquz-point-bir şey faiz indi onu var. Çox az adam JavaScript söndürmək. Bu istifadəçi rahatlığı edir. Siz PHP qiymətləndirmə etmək lazımdır. Siz JavaScript qiymətləndirmə etməlidir. [Tələbə] # f burada nə aid deyil? [Rob] # f hansı aid deyil? ID 'f' ilə sənədin bəzi element var. Biz baxmaq lazımdır - yəqin ki, Facebook nümunələri çox olduğu elementlərin gəlmək əgər elementləri tag altında burada axtarır Mən burada qeyd olunur ki, bu div bax - və ya bütün səhifə - Bəli, bu qədər var. Bu ID pagelet_bluebar var. Konsol I jQuery istifadə etdiyiniz güman. Belə ki, o seçir mən pagelet_bluebar seçin bilər, və mən səhv etdim. Nin cəhd edək - və ya bəlkə onlar jQuery və xarakter başqa bir şey eşlenen istifadə olunur. Bilirəm bir şey daha yaxşı nümunə jQuery istifadə edir - hələ də burada bizim elementləri baxaraq - biz burada sinif navbar bərabərdir. Bu sinif Navbar'da ilə bir şeydir, belə ki, bizim konsol daxilində biz sinif Navbar'da ilə şey arayabilirsiniz. Burada biz bu artıq hərəkət və bu nə görə bilərsiniz. Mən etmək istəyirdi. Mətn ki, bu mətn, belə ki, mən log yuxarıda hesabat üçün parametrləri görmək Burada əsasən bütün, lakin hələ ki, HTML tag ərzində mətn var olan. Mən yalnız bir link HTML təyin edə bilər mən bar qurtarmaq lazımdır. İndi ki, YouTube bağlı oldu tamamilə yalnız belə mövzu xilas. Və hər hansı bir formada misal var? Burada bir forması var. Mən sağ-basın və burada ona gəlib element yoxlayacaq bilər. Mən onun ID mətn axtarış olduğunu görmək, belə aşağı burada ID mətn axtarış edə əgər. Mən artıq gətirmək lazımdır və mən ki, mən üçün axtarış edilmişdir düzgün şey görmək. Mən. Val etmək istəyirsinizsə, mən orada tipli nə mənə verəcək. Mən etmək istəyirdi salam bu salam burada onu dəyişdirmək lazımdır - jQuery. Təbii ki ID document.get element kimi gülünc edə bilər - mətn axtarış - Mən hətta bu nöqtədə nə bilmirəm - dot dəyəri - xeyr, mən ki, oğlan unuttum. Belə ki, salam var. Mən bir şey bərabərdir müəyyən istədiyiniz necə bilmirəm. Bəli, belə ki, dəyişdi. Amma bu point istifadə jQuery bu və bir çox saytlarda istifadə etmək üçün ehtiyac yoxdur. Hətta yekun layihə kimi - ilk şey - bir web layihə edirik, əgər Mən sizə bütün bu funksiyaları rahatlığı əldə edə bilərsiniz, belə ki, yalnız jQuery daxil edir gəlir. [Tələbə] Mən DOM istifadə edərək, bir element almaq üçün fərqli bir yol gördüm edirəm. Siz dot istifadə və sonra aşağı davam etmək lazımdır? [Rob] Siz bunu edə bilərsiniz. Bu, çox yaxşı olardı əgər mən bilmirəm. Bu yolu getmək çətindir. Bir nümunəsidir - biz hər hansı bir forma var əgər mən hətta bilmirəm - lakin document.forms Bu səhifədə ki formalarının siyahısını qayıtmaq üçün gedir, sonra 0 ilk forması olacaq document.forms edə bilərsiniz. Dot - Mən ki, adlı etdik nə bilmirəm - belə ki, hətta bir adı yoxdur, belə ki, bəlkə giriş işləyəcək. No Mən hətta bu almaq üçün necə bilmirəm - element-I-tag adı daxil almaq. Bəli, mənə daxil verdi və indi 0 giriş istəyirəm və mən onun dəyər seçin istəyirəm, belə ki, mətn olacaq. Mən hər halda tag adı ilə get elementləri bunu başa idi. Birbaşa seçin bəzi yol ola bilər Mən yalnız tags giriş adlı almaq üçün idi kimi forma 0, lakin bu barədə gözəl şey vasitəsilə hələ də ki, bu formada bir uşaq idi, əks halda mən yalnız ki, əgər düz ön up Bu bütün sənədin bütün səhifədəki bütün elementləri seçin olardı əvəzinə yalnız forma və yəqin ki, hətta mən istəyirəm olmayacaq. Mən hətta olan bir bilmirəm. Bilmirəm. Mən bizim səhifədə ilk giriş element bu kiçik qutusu danışarlar. [Tələbə] Bu olduqca olmayan və bəlkə cür silly, lakin cavab açarı bu PHP deyir - Mən cavab düyməsi və ya qeydlər olub bilmirəm, lakin bu PHP server-side deyir və JavaScript klient edir. 2 arasında fərq nədir? [Rob] JavaScript klient və PHP server-yan arasında fərq. Sizcə əvvəl slash / istifadə node js eşitmişəm ki, əgər JavaScript yalnız klient deyil, CS50 məqsədləri üçün bu - və ya ən azı bu viktorina nin məqsədləri üçün deyil. PHP server-side olan. No JavaScript. Siz web yazmaq zaman server PHP yazılı olacaq. Siz server JavaScript yazılı heç vaxt. JavaScript JavaScript kodu icra etdiyi brauzer göndərilən əldə qədər başa çatır. Və JavaScript kodu istəyirəm, çünki başqa brauzer yaşamaq lazımdır yalnız bu tıklayarak kimi JavaScript-y şey bir sort, nə Mən səhifəni yenidən deyiləm. Bu, mənim üçün yalnız JavaScript yenidən format şeylər. JavaScript server yaşamış, onda mən istər-istəməz bir şey tələb etmək lazımdır server nə bilmək. PHP - brauzer PHP kimi bir şey yoxdur. Mən bir səhifə tələb zaman - belə ki, burada mən bu səhifəni tələb deyək. Bu tələb edir o deməkdir ki, - Yenile - bu səhifəni yenileyin olacaq - bu tələbi yerinə bizim server gedir. Bu, bu şəxsiyyət vəsiqəsi ilə bu mövzu qayıtmaq lazımdır ki, görür belə ki, indi ki, PHP tərcüməçi that page şərh edir ki, bəzi PHP olacaq və yalnız HTML, CSS, bəlkə JavaScript, nə onu çevirmək. Bu tələbi emal və mətn və məhsullarının bütün alır ki, PHP var Mən, həqiqətən, verilənlər bazası üçün baxıram. Amma nə server yarpağı yalnız HTML / JS / CSS edir. Server yarpağı olan heç bir PHP var ki, həqiqətən əgər, çünki sonra browser nə PHP nə deyil, çünki onunla nə heç bir fikrim yoxdur olardı. Amma eyni düşüncə JavaScript, klient, çünki onu MySQL daxil bilməz. PHP server-side, çünki onu MySQL daxil yoxdur. [Tələbə] Siz HTTP cookies ilə təhlükəsizlik narahatlıqları bir artıq getmək edə bilərəmmi? [Rob] Bu biz bilmək lazımdır olacaq şeylər deyil. HTTP cookies ilə təhlükəsizlik narahatlıq bəzi. Burada böyük sual mənim cookie PHP / ID ki, burada görürük. Bu universal PHP sizin sessiya kimi. Sizin sessiya PHP daxilində təsdiq etmək lazımdır heç vaxt ki, bir şey deyil Bu sessiya üzərində tam nəzarət var ki, server, çünki. Siz bütün bu toxuna bilməz. Amma bu cookie var - bu bir - və mən istifadə etmək istəyirdi əgər indi mənim kimi daxil bilər tahmin - qaçılmaz siz server üçün bir sorğu etmək - lakin bu ki, cookie var. Bu server səhifə qaytarır. Sorğu edilir. Bu artıq siz hər hansı bir fikir var. Belə ki, siz növbəti sorğu bilir ki, belə ki, cookie daxil gedir Bu əvvəl bu sorğu edən şəxsdir. Bu istifadəçi ilə bağlı olan sessiya məlumatdır. Siz istifadə hər səhifə üçün daxil yoxdur niyə ki. Burada təhlükəsizlik məsələ cookie internet üzərində göndərilir ki. Biz burada HTTPS istifadə etdiyiniz, belə ki, bu halda ki, biz bu məhsulları Şifreleme deməkdir. Biri gəlib və yalnız mənim cookie oğurlamaq və indi server onlar mənə etdiyiniz edirəm bilməz. Amma düz HTTP ilə onlar. Just yalnız hava wi-çek bütün dinləyə bilərsiniz ki, bu Wireshark / Firesheep məhsulları kimi və istədiyiniz hər hansı intercept, Bəli belə. [Tələbə] oxşar təhlükəsizlik riski bir növ post istifadəçi ID nin saxlanılması ki, sərbəst konsolları və şeyi istifadə redaktə edilə bilər, çünki. [Rob] Bəli. Burada istifadəçi gəlir ki, yalnız bir şey kimi məsələlər çox var Siz doğrulamak üçün lazımdır. Mən bir post etmək haqqında Ben kimi üçün faydalı olardı hallarda var. Blah, blah, blah, blah, blah. Sonra cavab edib. Bu post sorğu şəxsiyyətimi daxil əgər Bu, çox faydalı olardı, çünki  Mən bu post birləşmək istəyirik. Amma edə bilməz ki, mən bir post sorğu etmək üçün pulsuz deyiləm, çünki - yalnız özünüz kimi öz post xahişi ilə gəlmək - ki, istifadəçi ID istifadə edir və indi sizin kimi göndərmək olacaq. Server-side mən doğru istifadəçi ID olan post müraciətləri etibar edə bilməz niyə ki. Mənim sessiyasında aid nə var. Beləliklə, mən sessiya sıra istifadəçi ID baxmaq və mən bazasında ki, daxil həqiqətən, bu post edən istifadəçi kimi. [Tələbə] Və sizin cookie əsasında? [Rob] Bəli. Bu sorğu edən istifadəçi kimi sizə uyğun cookie istifadə edir. Bu sessiya istifadəçi ID həyata çıxarmaz və sonra bazasında edər ki, istifadəçi ID istifadə edərək,. Bu kimi düyməsinə - ki, həqiqətən bunu nə - Mən burada tapa gedən deyiləm. Bu Ajax funksiyası olacaq Ajax funksiyası nədir? Mənim JavaScript nə tapmaq edək. Bu bir müddət əvvəl CS50 layihə idi. Mən nə xatırlayıram bilməz. Ajax funksiyası - bütün Ajax funksiyası edir bu ID ilə bir səhifə üçün bir Ajax sorğu edilməsi - ID 22453 ilə. Bu da bir post sorğu deyil. Bu daha asan edir bir get tələb var. Mən URL nə bilirdi varsa - bu kimi / ID = 22453 kimi bir şey var - və ya ID = 22453 - bu URL ziyarət kimi olacaq. Bir problem kimi çox ola, lakin bu bir loop yazmaq olduqca asan deyil ki, yalnız görmək nə olan yenə üzərində bu URL baxın niyyətində olan Şeyi minlərlə göndərmək Isawyouharvard. Onlar CS50-based Isawyouharvard ismarıc olmaq üçün edirlər. Necə ən xoşuma gəldi tapa bilərəm? Onlar da, olduqca tez silindi almaq üçün edirlər. Bu, ən xoşuma gəldi deyil. Orada getmək. Ən xoşuma gəldi səhifə Cheaters - bu anda bu olduqca müvafiq deyil. Wow Oh. Onlar artıq olmuşdur ki, bu ildən isə hər hansı silinmiş etdik cheated. Bu bütün silindi. Bu yüksək olur ki, bir post var heç vaxt. Bu açıq-aydın ən xoşuma gəldi səhifə almaq üçün cheated edilmişdir. Ətraflı suallar? [Tələbə] biz XHTML haqqında nə bilməlidir? [Rob] Faktiki olaraq heç bir şey. Bu yalnız nə. Bu və XML olan HTML arasındakı fərq görünüşü çox oxşardır HTML HTML istisna olmaqla biz yalnız tags təyin dəsti var. Lakin XML ilə - XML ​​yalnız bir XML sənəd edə bilər bir ümumi format kimi Siz istədiyiniz hər hansı məqsədlər üçün. Belə ki, məsələn, mən istəyirdim, mən kursları üçün XML tikintisi bilər - və mən, həqiqətən CS50 bu bir API var ki, düşünürəm. Mənim XML sənəd kimi bir şey baxmaq bilər - kursları və əlbəttə bəzi sonu kursları lazımdır. Mən bir kurs ola bilər və bu adı CS50 bərabərdir ola bilər. Və sonra mənim son kurs və mən, burada daxili tələbələri qoymaq bilər sonra tələbələrlə daxilində Mən kimin adı nə olursa olsun bir tələbə bir siyahısı var. Mən ki, tələbə başa və. Mən yalnız bir ixtiyari XML sənəd inşa etmək nə, lakin etibarlı XML edir. XML - bu bütün strukturu bu sort və gözəl şey - biz hətta XML zəng ki, səbəb şey bu sort analiz etmək çox asan olmasıdır. Bu sənəd almaq və həyata bir sıra etmək çox asandır. Və XHTML HTML etibarlı XML olmaq cəhdidir. Onsuz da bu HTML olduqca oxşar görünür. Fərqlər bəzi siz daxil kimi şeylər edə bilərlər HTML bəlkə type mətn bərabərdir default olan mən ki, ehtiyac yoxdur. Aradan. Bu etibarsız XHTML etmək ki, burada 2 şey var. Ilk şey bütün XML tags bir yekun tag lazımdır ki,. Bu çizgi hansı istiqamətdə deyil - belə ki, giriş halda mən nə lazımdır? Bu istiqamətdə? Bu yanlış görünür. Digər istiqamət. Self-bağlanması tag. İkinci şey XML ilə kimi əsas dəyər cüt bu növ lazımdır ki,. Bu onunla bağlı bir dəyər lazımdır. Belə ki, özü və əlil istəyirəm nə ifadə baxmayaraq - Bu giriş aradan olmalıdır - yalnış XHTML var. Mən, həqiqətən, yazmaq lazımdır əlil əlil bərabərdir. İndi etibarlı XHTML var. Və bu şey bir XML-based növ HTML çevirmək ki, yalnız bu cüzi fərqlər var. [Tələbə] XML cəmi niyə (eşidilmir) kimi öz X vasitəsilə kimi açılan haqqında [Rob] CSV kimi olan şey - CSV yalnız ayrılmış dəyərlər var - yalnız bir tablo düşünürəm. A CSV əsasən bir elektron tablo edir. Siz bəlkə sütun və satır bir dəstə var ki, asılı o sütun data lakin bu. XML daha çox siz ki, - siz məlumatların əsassız iyerarxiya. Mən buna birdən çox tələbələr var ki, çox kursları ola bilər ki, bir elektron tablo düşünmək çətin olacaq yerləşir - yalnız bir tablo - CSV xüsusilə yalnız bir tablo kimi - belə ki, bütün CS50, 51, və 61 və o çərçivəsində bütün malik ki, bir elektron tablo bu dəfə bağlı tələbələr, bəlkə görüş dəfə və şey ki, sort bütün. Başqa şey tag adları elementləri bütün bir gözəl ad vermək ki, belə bir CSV faylı oxu cəhd və bu, həqiqətən görən nə analiz etmək çətin ola bilər. Deyil bir nəfər gəlib - nə kimi ki, belə XML daha çox insan okunabilir həqiqətən nə CSV fayl və ya kimi bir proqramçı və ya bir şey deyildir - Bir şablon XML faylı kimi onlara verə bilər və onlar xətləri edin və - oh, mən burada mənim ad daxil ehtimal edirəm. Bu, daha çox lazımlı format var. CSV istifadə çox var, lakin XML müxtəlif məqsədlər var. Ətraflı suallar? Digər suallar? Şaquli scaling üfüqi scaling qarşı - əvvəlki viktorina From [Tələbə]. [Rob] Siz ki, bilmək lazım deyil. Mən biz hətta müzakirə düşünmürəm. Mən yalnız bir-off comment idi təxmin edirəm. Oh. Şaquli scaling qarşı üfüqi bilmək lazımdır bir şey deyil. Mən fərq kimi hesab edirəm - yaxşı oh, cavab əsas fərq deyəcəklər. Şaquli scaling yalnız mənim kompüter zəif görən, oh kimi. Mən daha yaxşı bir almaq lazımdır. Üfüqi scaling oh isə, mənim kompüter zəif edir - mənə eyni məsələ ilə bağlı bütün işləri onlardan 20 əldə edək. [Tələbə] biz sıralarında edilməsi bağlı siyahı yolu üzərində getmək bilər. [Rob] Sure. Bu array yolu çox asandır. Kuyrukları edilməsi bağlı siyahı yol. Birincisi, nə bir bağlı siyahısı üçün struct kimi görünür? [Tələbə] biz bunu edirsiniz - [Rob] nin onun nə edək - Bəli. Int val; sonra struct node * Növbəti; belə ki, biz burada nümunə üçün istifadə edəcəyik nə. Həqiqətən bu stuff yazın edək. Nin linked_list edək. Bizim struct - Okay. İndi bizim queue baxaraq biz var - yalnız bir qlobal növbə edək. Bu node * queue olacaq və biz dequeue funksiyası var. Mən bu şeyi də doğru və ya yalan ləğv edə bilər danışarlar - bunu edək. Bool dequeue - oh - və biz dequeueing edirik. Hmm. Int dequeue - biz əvvəl bu nə idi? Int dequeue və biz bool enqueue var və biz doğru bir vasitə enqueue lazımdır. Ilk enqueue nə edək. Biz növbə var. Biz növbəyə bir şey daxil etmək istəyirəm. Bunu etmək üçün ən yaxşı yolu nədir? Biz başlamaq üçün bəzi qlobal göstərici var kimi burada bizim queue hazırda görünür. Bizim queue var. Biz ilk element alaraq dequeue fərz etsək, biz onlar kimi sıralarında iş ki, bizim node daxil istədiyiniz gedir? Çox sonunda [Tələbə]. [Rob] Bəli. Sıralarında həyata ilk ilk ehtimal olunur. Hansı yeni element burada daxil edilməlidir o deməkdir ki,. Okay. Geri kodu gələn ki Biz queue üzərində loop istəyirəm ki, deməkdir. Nin node * Cari = növbə edək; cari bərabər NULL deyil isə. Mən olardı - bütün sağ, ayrılıqda bunu bildirin. Birincisi, cari = queue. Cari NULL kimi off başlayır, biz nə etməliyəm? Biz bu 2 yolları edəcəyik. Ilk bu yol. Cari NULL əgər biz nə etməliyəm? Bu queue NULL əgər bərabərdir? [Tələbə] Bu yalan geri olacaq. [Rob] biz saxta qayıtmaq lazımdır? Nə boş siyahısına daxil bir şey daxil ilə səhv var? [Tələbə] Heç bir şey ki, səhv edir. Üzr istəyirik. [Rob] Bəli. Belə ki, burada yalnız fərq mənim qlobal queue mənim yeni node göndərilir edir. Və sonra mən queue NULL əgər mənim çek var. Yalan qaytarın. Və sonra val i bərabərdir növbə; queue növbəti NULL bərabərdir; doğru geri. Okay. Mən burada hadisələri gedirəm. Biz nə xatırlayıram ki, son dəfə Biz bunu bu cür ilə ** node ilə işləmək üçün daha asan olduğunu söylədi. Belə ki, indi cari queue olmaq və gedən və burada aşağı gəlir - isə cari - isə * Cari bərabər NULL edir - ikinci bu barədə we'll müzakirəsi - belə ki, mənə yalnız cari bunu bildirin. Cari Növbəti. Okay. Mən null göstərici çatana qədər bu şəkildə baxanda bu mənim göstəricilər bütün üzərində iterating olunur. Bu null göstərici Mən yeni node ilə əvəz etmək istədiyiniz göstərici olacaq. IPad versiyası baxanda - mənim orijinal göstərici və bağlı siyahı boş onda cari burada qeyd edir. Bu null qeyd edir, bu mən bəzi digər yeni node qeyd etmək hərəkət başa göstəricisidir. Halbuki nümunə up burada bu halda sonra cari buradan axır gedir - Mən bir az messed. Cari cari Sonrakı ünvanı olması ehtimal edilir. Mən istədiyiniz nədir? Cari so * Cari Mənə bir node verir. Sonrakı bir keçir. Hal-hazırda burada işarə edirəm. Qırmızı edək - mən Hal-hazırda burada işarə edirəm. Sonra * Cari bu node istinad edir. Və * Cari növbəti istinadlar bu node, amma ki, mən istədiyiniz nə deyil. Mən node üçün bu göstərici istəyirəm. Belə ki, bu node ki pointer növbəti (current *) ampersand edir. Bu nöqtədə vaxt mən rəsmi mən əvəz etmək istəyirəm ki node əldə etdik. Cari bu sıralarında bütün əvəz edək - və indi biz tamamlayın. Orada hatası, lakin fikir ola bilər ki, yol bu cür insert ilə biz dəyişdirmək istədiyiniz göstəricilər ilə işləmək daha asandır əvəzinə takip ehtiyacı - tamam, mənim start NULL edir? Oh o? Sonra xüsusi bir şey olması üçün start node yaratmaq lazımdır Mən qeyd növbəti şey NULL qədər başqa mən, təkrarlamaq lazımdır və sonra mən əvəz lazımdır - növbəti şey nə - mənim malloc node. Əvəzində o hallarda ayrı-ayrı ehtiyacı, burada yalnız işi ilə məşğul Mən artıq NULL olmaq istəyirəm ki, NULL ki, pointer, nə və çünki bu başqa asan həyat indi current * olmalıdır edir - [Tələbə] Onlar hələ bir node ölçüsü edirsiniz? [Rob] Bəli. Mən hələ bir node mallocing alıram. [Tələbə] bir node * ölçüsü olacaq mı? Bu, bizim bağlı siyahısı əgər [Rob] bura gələn halda düşünürəm. Bu adam null off göstərir. Burada ki, sonra niyə loop, cari points Bu NULL ki göstəricisidir. İndi yeni bir node işaret üçün bu göstərici dəyişə istəyirəm. Node belə malloc ölçüsü - Birinci mən ki, yeni node malloc. Ki, bir node * qaytarır və indi bu göstərici dəyişən * Cari bərabər üçün qurur Mən ayrılmış ki, bu yeni node. Cari ** bir node Belə ki, sonra * current * bir node olacaq, Mən bir şey node ölçüsü mallocing alıram və bu bir node bir pointer qayıdır bu bir node * - belə hər iki tərəf düzgün eyni növü var. Nə mən yalnız ayrılan NULL, əgər, belə ki, saxta qayıtmaq; bu parantez lazımdır axşamı - başqa mən onları olmaq istədiyiniz nə onların qəbulu başa şeyi sifariş necə deyil, çünki. Kimi şərh olunur ki, parantez olmadan ki dereference cari arrow-val. Əvəzində cari dereference bir node mənə gətirir istəyirsinizsə. Sonra ki, node ilə bağlı dəyər almaq istəyirəm. [Tələbə] Mən işarələrindən ki bypass və dəyərinə düz getmək üçün icazə düşündüm. [Rob] Onlar bunu. Mən əgər var - nin queue nümunəsidir deyək. Mən queue * bir node çünki queue-arrow-val i bərabərdir etməyə icazə alıram. Kimi cari uzun arrow-val və ya bir şey, bəzi gözəl sintaksis olsaydı 2 dereferences etdi, sonra bu yaxşı olardı. [Tələbə] Belə ki, arrow yalnız 1 dereference üçün. [Rob] Bəli. Alternativ olaraq I (** current.val) Bu yazmaq bilər. Mən də (* queue). Val kimi növbə yazmaq bilər kimi. Belə ki, daxil edək. Yaxşı ki, mən yalan danışarlar növbə var. Dequeue əhəmiyyətli dərəcədə qısa olacaq. Nin təmizlik üçün burada boşluq qoymaq edək. Belə ki, dequeue. Nə element dequeueing edirəm? [Tələbə] Birinci? [Rob] Bəli. Mənim ilk bir NULL varsa - return - I biz qayıtmaq istəyirəm nə bilmirəm - INT_MAX; və sonra INT_MAX geri əgər görmek üçün bir çek etməlidir. Ki, inc başqa biz istəyir almaq şey sort var - biz yalnız queue val qayıda bilər? Ki, biz nə istəyirik nədir? Dequeue də dolayısı, növbə olan maddə rədd elə ilk deyək - nin bizim queue ilk node qeyd etmək bir tmp almaq imkan verir. İndi biz queue növbəti şey nöqtəyə növbə irəliləmək istəyirik. İndi biz tmp sol var. Tmp val biz qayıtmaq istədiyiniz şeydir. Belə ki, val = tmp-> val; lakin biz geri əvvəl biz tmp azad və val qaytarmalıdır. Burada əməliyyatları sifariş ki, biz tmp qamarlamaq lazımdır vacibdir Biz növbəti element üçün növbə hərəkət əvvəl. Biz tmp azad əvvəl dəyər almaq lazımdır sonra biz Val qayıda bilər. [Tələbə] biz növbəti növbə növbə müəyyən etməlidir? [Rob] Bəli. Ki, bir pis loop yaratmaq / hər halda onu azad sonra işləməyəcək. Queue = queue-> gələn. Biz növbəti element irəli növbəti element daxil növbə irəliləmək istəyirik Bu element hazırda nə üçün. Depo əhəmiyyətli dərəcədə ki, - ki dequeue daha asan kimi tam eyni deyil biz yığını qarşısında off çəkərək edirik, çünki. Biz yalnız bir node ayrılması istədiyiniz End queue çox oxşar olacaq və yığını qarşısında daxil, belə ki, biz hətta bir şey üzərində loop ehtiyac yoxdur. Biz yalnız qarşısında birbaşa daxil edin. Hər kəs yaxşıdır? Okay. Ətraflı suallar? [Tələbə] əsas hər şeyi mən ən son mühazirə yadda saxlamaq lazımdır? [Rob] Ən son məruzə. Siz hər hansı bir kodu bilmək lazım deyil. Siz mühüm fikir bilməlidir. Nate yarım heç bir kod yox idi və həmin slaydlar online. Onlar yalnız onlara baxmaq kimi istəyirik və onlar əsas fikir var. Mənim yarım - ilk şey etibar edə bilməz ümumi fikir bilmədən. Bu faktdır ki, bəlkə compiler prosesi pis ola bilər kimi, lakin hətta mənbə kodu gözəl görünür ki, fərqi yoxdur. Compiler xüsusi kodunu dəyişdirmək üçün dəyişdirilə bilər, çünki  tərtib prosesində. Kimi eyni zamanda - Mən o bu əsas fikir kimi hesab edirəm. [Tələbə] biz Firesheep ilə bağlı bir şey bilmək lazım deyil ki, qeyd mi - və ya biz bilmək lazımdır? Şeyi Nate yarısında, Nate toxunub ki, bir şey ilə [Rob] - Firesheep, Wireshark kimi - Mən hətta o ətraflı Firesheep etdi düşünmürəm. Siz həmçinin ki, bir şey idi - bu Firesheep idi - ötən həftə? Ki, toxunmaq mi? [Tələbə] Bəli, biz ola bilər edirəm - [Rob] Bəli. Biz sizə Firesheep çıxış vermək üçün gedir və bu şərh demək deyilik. Bu, sadəcə olacaq - bu Firesheep nə kimi bir sual olardı? Nə üçün istifadə olunur? [Tələbə] Mən yalnız Firefox və ya bir şey versiyası 4 işləyir edirəm. [Rob] Bu artıq sınıq bilər. Mən heç bir fikrim yoxdur. Onlar, özünüz aradan görünmür amma bəlkə ən son Firefox ilə işləmir. Bu uyğun olacağını söylədi, çünki [Tələbə] Mən, həqiqətən, quraşdırma çalışdı. [Rob] ki, mən bu ən son Firefox ilə işləmir danışarlar. Amma fikir hələ də göstərmək üçün nəzərdə idi nə dayanır. Bu nə qədər dünyanın zamanı HTTPS yaşayan deyil absurd idi. Hətta son 2 ildə və ya nə olursa olsun, hələ var - dramatik təkmilləşdirilməsi var HTTPS istifadə edən web sites sayı. [Tələbə] biz HTTP artıq getmək lazımdır? [Rob] bu protokolu? [Tələbə] biz bilirik ki, bəzi şeyləri. [Rob] Bütün hüquqlar. Basic şey sizin şəbəkə nişanı bilərsiniz hər şey var. Mən bir səhifə tələb zaman - əsas şeylər üçün üst qədər geri gəlir. Siz burada mən edən sorğu bilərsiniz. Chrome bizim üçün qəşəng bütün format olur tələbi URL bu olduğu, sorğu metodu, GET idi və status kodu 200 OK idi. Mən görünüşü mənbə hit varsa, mən daha çox birbaşa ki, bax - biz bu ya göstərə bilər, lakin bu onların arasında şərh çox çətin deyil - və bu deyil. Burada edilən birbaşa tələb edir, belə ki, bu, mən getdi o deməkdir ki, apps.cs50.net/discuss/threads/inbox/all/HTTP/1.1. Və istifadə protokol faktiki olaraq olan HTTP/1.1 idi - bu, həmişə olacaq. Burada artıq GET istifadə, belə ki, bu da POST ola bilər. Və sonra enir - bütün yol cavab başlıqlarını aşağı - biz ki, mənbə keçirmək əgər, biz 200 OK görmək olduğu bu. Bu mümkün müxtəlif status kodları bilirik. Mən nəzərdən biz bu bir neçə demək mi belə 403, 404 - ümumi olanları o cür. Ki, əsas fikirdir. Yalnız HTTP və HTTPS arasında fərq bu şifreleme edir. Siz [Tələbə] edilir? [Rob] Mən belə düşünürəm. Yaxşı, yep. [Tələbə] Siz necə şifrələmə işləri haqqında çox ümumiyyətlə danışmaq olacaq? Biz Huffman faylları kompressor misal üçün danışdıq, çünki siz həqiqətən fayl ərzində hashtable göndərdi, çünki onları decompress üçün necə belə ki, necə şifreleme çalışır? Necə siz həqiqətən müştəri göndərdi əgər məlumat şifrelemek üçün necə bilmirəm Bu əsas - və həqiqətən ki, əsas qamarlamaq bilər -? Ümumi proses necə işləyir? [Rob] şifreleme ümumi proses - Mən cavab inanılmaz ətraflı məsələdir. Qısa var - yaxşı, Tommy və mən qısa etdi. Təəssüf ki, 26 dəqiqə kimi, belə bir qısa deyil. Bu uzun. Amma bizim qısa, bu yalnız bir nümunəsi olan RSA idi və bu RSA ümumi HTTPS protokolunun hissəsidir. Ideyası - RSA ictimai əsas Kriptoqrafiya nümunəsidir olan 2 ayrı-ayrı düymələri var deməkdir. Siz, həqiqətən, hər şeyi şifrelemek üçün 1 düyməsini istifadə, və siz hər şeyi decrypt başqa bir düyməsindən istifadə edin. Şeyi şifrelemek üçün istifadə ki, bu əsas ictimai olan biridir. Haqqinda bu şifreleme açarı göndərə bilərsiniz. Onlar ki, şifreleme açarı göndərmək, və siz onlara geri bir şey göndərmək istədiyiniz zaman sizin data bütün şifrelemek və onlara göndərmək üçün şifreleme düyməsindən istifadə edin. Belə ki, onlar xüsusi açarı ilə yalnız olanlardır. Ki, xüsusi açarı məlum oldu onda hər kəs veri decrypt edə bilər. Amma xüsusi açarı - ictimai düyməsi üçün riyazi bağlıdır amma siz bilərsiniz olan xüsusi açarı data decrypt üçün istifadə edilə bilər ki, - digər birini anlamaq. Onlar xüsusi açar ilə yeganə olduğundan, onlar məlumatları oxuya bilərsiniz olan yeganə istəyirik. Ictimai əsas, ictimai Belə ki, baxmayaraq Mən eyni istifadə - Mən Google.com və ya nə üçün getmək zaman, onlar, mən çox bilmirəm ola bilər - amma Google.com getmək əgər, o Google.com gedir, o gedir Google.com - biz bütün lakin biz istəyirik öz məlumat şifrelemek üçün eyni ictimai düyməsindən istifadə edə bilərsiniz. Amma bizim heç biri həyata rəqəm edə olacaq - decrypt edə olacaq ictimai əsas decrypt mümkün deyil, onların informasiya, çünki. Bu, yalnız encrypt bilər. Və bu fun / ətraflı math var - modul operatorlar və göstəricilərlə və stuff bir dəstə kimi, yalnız xüsusi açarı bilən yalnız odur ki aparılır ki, ictimai əsas şifreleme məhsulları decrypt. Bəli. Daha ətraflı məlumat üçün RSA qısa baxın. [Tələbə] ki, internet saytında mı? [Rob] Bəli, mən bu nöqtədə olduğunu düşünürəm. Və ya ən azı bir YouTube link dərc edilib. Baxaq. Shorts. Mən bu həftə 2-bağlı olardı. Bəli. RSA. Və bu - 24 dəqiqə - bu oynayacağıq BİZ beləyik. Bu uzun biri. Ətraflı suallar? [Tələbə] Siz bitmasks haqqında qısaca danışmaq bilərmi? [Rob] Sure. Qısaca, fikir yalnız kimi - [Tələbə], Rob nədir? [Rob] Bitmasks. Bu fikir - yalnız biz bəzi var deyək - bəzi tam istifadə BİZ beləyik - int x - belə ki, biz 0 başlamaq. İndi, bu tam 32 bit, belə ki, o bit hər hansı bir 1 təmsil etmək üçün istifadə edilə bilər xüsusi FLAC. Siz əməliyyat sistemi kodları baxsaq, onlar bütün yer üzərində istifadə yerdir bəlkə üst qədər haradasa onlar hash-müəyyən yerləşir - Bəzi misallara keçək. Man-2-açıq - açıq-sistem biz onun dəlilləri bir int bayraqları ki, burada edə bilərsiniz - ki, mübahisə bu bayraqları bəzi kimi gözləyir nə. Biz O_append, O_ASYNC, O_CLOEXEC bax O_CREAT, və s. O_DIRECT. Bayraqları bu cür yerdə hash-müəyyən edilir. Onların bütün dəqiq 1 bit var. Belə ki, O_CREAT hash-müəyyən 1 kimi, sol-shift, 4 ola bilər (1 << 4). Yalnız olacaq O_CREAT I istifadə zaman - Bu olmaq üçün gedir - ikili 1, 0, 0, 0, 30-ish adet sıfır əvvəl. Bu, yalnız bir az bir set var ki, bit bu bayraq təmsil edir. Və başqa heç bir bayraq 4 sol keçdikdə olacaq. Mən bunu bir tək tam 32 bayraqları qədər təmsil edə edirəm - x = O_CREAT bit müdrik və ya O_DIRECT. Siz yalnız bayraqları hər hansı 2 aldığınız edirik. İndi x 2 bit uyğun olan müəyyən 2 bit üçün gedir O_CREAT və O_DIRECT edir. O yolu - belə ki, biz açıq funksiyası daxil x keçdi və açıq ehtiyacları faktiki olaraq müəyyən nə bayraqları görmək. Bu kimi şeylər hara gedir, belə ki, ki, (x & O_CREAT) bir şey varsa, və ya (x & O_DIRECT) başqa bir şey varsa, sonra biz qoymuşuq vermədi ki, bəzi bayrağı ola bilər - əgər (x & o_ - Mən digər bayraqları nə bilmirəm - (X & O_RDONLY) - xüsusi vəziyyət icra etmək niyyətində deyil. Və kodu məhəllə icra etmək niyyətində deyil, o 2 bayraqları müəyyən edilmişdir, çünki bu 2 vardır. Və C, 0 deyil ki, bir dəyər doğru olduğunu görürük. Belə ki, (x & O_CREAT) 0 və ya O_CREAT ya olacaq O_CREAT yalnız bir bit set var. Ki, bit Növbəti müəyyən edilir, onda bu O_CREAT qayıtmaq üçün gedir - yalnız bit müəyyən olduğu ikili. Ki, bit Növbəti müəyyən deyil, onda biz bayraq müəyyən deyil bilirik olan halda, 0 qayıtmaq olacaq. Ki, bitmasks istifadə necə. Mən əvvəlki imtahan və ya bəlkə sinif və ya bir şey haqqında düşünmək - siz də bir dəyişən ikili çap bitmasks istifadə edə bilərsiniz. Sol-shift, 0, 1 - - üzərində loop - Mən istifadə edə bilərsiniz və sonra çap x & ki, əgər - x & 1, sol shift, 0 əgər - onda çap 0 və ya 1. Və ya 1 başqa çap 0 çap. Və sonra mən artıq bir daha getmək - əgər x & 1, sol-shift, 2 - o deməkdir ki, ikinci bit dəyişən müəyyən edilir, belə ki, mən bir 0 çap 1, başqa çap. Və biz, həqiqətən, əks qaydada çünki bunu etmək istəyirəm bilər edirəm adətən siz sol ən yüksək sifariş bit olmaq istəyirəm və sağ aşağı sifariş bit, belə ki, yəqin ki loop 4 int i = 31 I 0 hit ilə qədər sonra dəqiq vəziyyəti ki, - x & 1, sol-shift, i əgər; başqa 1 0 çap. [Tələbə] təşəkkür edirik. [Rob] Mən biz vaxt həyata olduğunuzu düşünürəm. Out-of-zaman saniyə son bir neçə ildə bir daha suallar? Bütün hüquqlar. Sabah Uğurlar. Bu gələn həftə isteğe olacaq sonuncu bölmə idi. Mən sınavlar geri vermək lazımdır və biz onların üzərində getmək və bəlkə ki, başqa şeylər üzərində bilərsiniz Siz layihə şeyi, və ya gələcək CS dərsləri şeylər maraqlı, və ya final idi və ya - Mən bilmirəm. Amma bu son material dolu bölüm. Bye! (Alqış) [CS50.TV]