>> R.J. AQUINO: Chcę po prostu zacząć.
Więc to jest quiz 1.
Oto kilka informacji na wysokim poziomie.
O stronę do quizu jest na to URL, nie CS50.net, chociaż
będzie nadal działać.
To CS50.harvard.edu/quizzes/2013/1.
To duża O stronie, informujący gdzie i kiedy, czyli w najbliższą środę
w pęczek pokoi.
I przez następną środę, że znaczy za dwa dni.
Wszystkie te informacje są tam.
Ale to jest skumulowane.
>> Więc wszystko z pierwszej połowy rok jest potencjalnie w quizie,
bo naprawdę nie można zrobić zaawansowane rzeczy w C bez, jeśli warunki i
pętle i podobne.
Ale nie będzie nacisk na Materiał pokryty od Quiz 0,
począwszy od strukturach i plików I / O. To zazwyczaj więcej
wyzwaniem niż Quiz 0.
Przeciętny wynik jest zazwyczaj niższa.
Ciężkiej nauki.
>> Podczas gdy uczysz, należy użyć CS50/discuss zamieścić swoje pytania
i przeczytać pytania innych ludzi.
Więc jeśli nie masz żadnych pytań, Zaloguj się i przeczytaj
pytania znajomych.
Pewnie dobre pytania.
Quizy i podjęcia praktyk.
Byliśmy dając quizy dla siedem lub osiem lat.
Wszyscy są w trybie online.
Przyszłe pytania są podobne do starych pytań.
To, w jaki sposób uczynić je.
>> Quiz jeszcze nie istnieje.
Nikt z nas nie widział.
Ale to będzie wyglądać poprzednie testy.
Na tej sesji przeglądarki, to nie jest wyczerpująca lista tematów.
Nie możesz po prostu wziąć udział w tym, a następnie być całkowicie gotowy do quizu.
W innym przypadku nie byłoby że wiele z quizu.
Jest to również nie koniecznie wszystko, co musisz wiedzieć o wszelkie
dany temat.
To znaczy narazić na rzeczy omówiliśmy, przypomnieć, co
pokryte, i sposób, w które przykryła.
Ale trzeba iść dalej i głębiej, kiedy uczysz się dokładnie sprawdzić
że wiesz wszystko o każdy dany temat i że już wypełnione
wszystkie narożniki, które były pokryte w wykładzie.
>> Noty quizów wam iść do notatki rysika filmy wykładowe zegarka.
To dobry sposób, aby upewnić się, że masz objęte wszystkie podstawy.
Tak się zaczyna, kiedy zrobiłem to slajdy, starałem się umieścić gdzie znalazłem
informacje.
Tak dla pliku I / O, na przykład, tydzień 7, Poniedziałkowy wykład, i pisał
Sekcja 6 i zestaw mają problem informacje o pliku I / O. Zrobiłem
to dla każdego tematu.
Więc może te slajdy tytułowe być pomocne dla Ciebie.
>> Więc tutaj mamy pliku I / O. Pamiętaj, że w Problem Set 5, użyliśmy fopen, fclose,
fwrite, fread, i fseek.
Po odzyskane 30ish JPEG i po zmianie rozmiaru i grzebał
bitmapy, powinno być dość znajomo z tych funkcji
i jak one działają.
Jeśli nie są znane, na pewno się z nimi.
I upewnij się, że rozumiem, co Argumenty są różne,
gdy są one używane.
>> Ale wspólne błędy związane z plikami możesz zostać poproszony o -
dobrze, jeśli nie pamiętasz, aby sprawdzić, czy fopen faktycznie pracował przed wyjazdem do
zmodyfikować plik.
To może być złe.
Jeśli zapomniałeś do fclose plik że już fopened, że jest podobny do
wyciek pamięci.
To jest bardzo złe.
I zapominając, by sprawdzić, czy masz osiągnął koniec pliku przed tobą
zacząć pisać do niego.
>> Więc jeśli mówisz, hej, jestem na Koniec pliku.
Daj mi jeszcze 5 bajtów.
Cóż, to prawdopodobnie nie będzie pracować zgodnie z oczekiwaniami.
To naprawdę jest dla File I / O, bo my tak dużo
z ustaw problem.
Więc jeśli rozumieć, co się dzieje w Problem zestaw 5, pamiętam bitmats
i JPEG, to jesteś chyba wszystko ustawione dla pliku I / O. Jeśli to nieco
rozmyte, zdecydowanie recenzję tego problemu ustaw i powiązane materiały.
>> Elemencie były tematem, który był na linia między 0 i Quiz Quiz 1.
Czy zupełnie nie dokonać cięcia dla Quiz 0.
Więc na pewno się na Quiz 1 Tydzień 7, poniedziałek.
Jaka jest struktura?
Tutaj przedstawiamy struct.
To tak, jakby nowego typu.
To jest jak pojemnik na wielu polach.
>> W tym przypadku, mamy zadeklarowane struct Uczeń, który ma dwa pola -
Ciąg że dzwonisz imię i int, że dzwonisz wiek.
Więc kiedy przechodzą wokół uczniów lub I modyfikować studentów, będę w stanie
dostęp do ich nazwy oraz ich wiek.
Spójrzmy na niektóre kodu do tego.
Tutaj widzimy, że już zgłoszone Student ów, tak jak
Oświadczam jakąkolwiek zmienną -
int x, int y, et cetera.
>> Oto uczeń ów.
Zaczyna się z niczego w jego dziedzinach.
Więc je ustawić.
Ustawienie pola struct z kropką.
Tak mi powiedział tutaj, że s.name = RJ.
I s.age = 21.
Można również aktualizować pola sam sposób chcesz zaktualizować
wartość zmiennej.
Więc chcę zmienić nazwę z RJ z ma okresy do R.J. wpisany
prawidłowy sposób.
Byłoby s.name = RJ same jak powiedzieliśmy to pierwotnie.
, A następnie można je przejść.
>> Więc mamy ustawić je.
Zaktualizowaliśmy je.
Możesz też do nich dostęp w ten sam sposób.
Więc, ja drukowanie R.J. Ma 21 lat.
I mam dostępu do tych wartości z s.name i s.age.
Tak, że jest dostęp przypisać struktury z notacji dot.
Tak, pytanie?
>> PUBLICZNOŚCI: Czy jest powód, na poprzedni slajd, który nie szuka
Student na górnej linii, jak typedef struktura i uczeń
uczeń na koniec?
>> R.J. AQUINO: Więc pytanie, na Ten slajd, mamy zazwyczaj postrzegane
typedef struct węzeł, a następnie Pola tej struktury i
Następnie węzeł słowa.
I jak tu nie mówić, typedef studentów, a następnie struktura
Pola tej struktury, a następnie studentem?
Powodem jest to, że nie trzeba dostęp do niego wewnątrz struktury.
Więc to jest OK, aby pozostawić go bez nazwy.
Można po prostu zostawić go jako anonim struct.
>> Powodem robimy to dla połączonych listach i rzeczy, ponieważ w środku trzeba
odwołać się do węzłów struct gwiazdę.
Tak więc struktura musi mieć nazwę, więc masz do niego dostęp później.
Jest to drobny szczegół.
Ale można zazwyczaj zobaczyć typedef struct nawiasy klamrowe, jeśli nie musisz
Nazwa i typedef struct niektóre nazwy następnie nawiasy, jeśli będzie
Potrzebuję nazwę.
Więc to jest dobre pytanie.
>> I na tym punkcie, mamy tendencję do modyfikowania elemencie i przejść wokół przypisać struktury przez
odniesienia, a nie wartości.
Więc po prostu przejść wokół wskaźniki do elemencie zamiast przechodząc wokół
strukturach siebie.
Więc bardzo często będzie stosując, w tym przypadku, student * lub
struct node * lub * zamiast węzła z uczniami lub węzłów.
Więc tutaj, powiedziałem, OK, PTR zmienna będzie adres sek.
To będzie wskaźnik studentowi R.J.
>> Tak więc możemy się na tych dziedzinach tak samo jak mamy nic.
Po pierwsze, numer referencyjny wskaźnik aby uzyskać struct.
To * ptr, a następnie kropka i wiek.
Tak, aby uzyskać dostęp do pola, a ja już aktualizowane to teraz do 22, bo miejmy
powiedzmy, że to moje urodziny.
Jest składnia skrótów używając tutaj strzałkę.
Więc PTR wiek jest tylko strzałka sam jako * ptr.age.
Teraz, że jest to coś musisz zapamiętywać i pamiętać.
>> Kiedyś bardzo dużo w pset6, pset ortografii.
Ale to jest naprawdę to, co się dzieje na pod wyciągiem.
To dereferencji wskaźnika i dostępu do niego.
Pytanie?
>> PUBLICZNOŚCI: [niesłyszalne].
>> R.J. AQUINO: Dlaczego więc przy użyciu wskaźniki jak elemencie zamiast
elemencie się?
Powodem może być, jeśli jesteś przejazdem struct do funkcji, to prawdopodobnie
chcesz przejść wokół tylko 4 lub tak bajtów, które reprezentują, jako wskaźnik
przeciwieństwie do 30 lub potencjalnie 40 bajty, które są Struct.
Tak więc przejściu co do funkcji jest łatwiejsze, gdy sprawa
jest mniejsza w skrócie.
Pytanie?
>> PUBLICZNOŚCI: Mogłeś o tym wspominałem na początku, ale istnieją
chowana na inne [niesłyszalne]?
>> R.J. AQUINO: slajdy te będą się po zakończeniu sesji przeglądarki.
Będziemy zamieszczać je na stronie internetowej.
I tak przejdziemy na nieco ruchu szybciej, będziemy rozmawiać o danych
struktury.
Istnieje wiele.
Zrobiliśmy kilka z nich.
Oto, co należy rozumieć o strukturze danych.
>> Należy zrozumieć, co naprawdę wysokie poziomie, co każda struktura jest.
Można wyjaśnić w języku angielskim, aby Twój przyjaciela, który nie podjął CS50 jak
my organizując nasze dane i dlaczego my używać czegoś w ten sposób?
To jest rzecz, jeden.
Sprawa dwa, zrozumieć realizacja.
Więc zrozumieć, jak korzystać z tych rzeczy, w C. i będziemy będzie nad tym.
>> A następnie co trzy będą wiedzieć prowadzone razy i ograniczenia
różne struktury używasz.
Więc zrozumieć, dlaczego należy użyć zamiast tablicy hash tabeli.
Zrozumieć, jak szybko, średnio, dostępu do tabeli mieszania jest.
Zrozumieć, jakie operacje są szybkie na powiązana lista, ale powoli i na tablicach
odwrotnie.
Tak więc, aby zrozumieć, że musisz zrozumieć notacji Big-O tylko wiedzieć
jak rozmawiać o nich różne rzeczy.
I porozmawiamy o tym.
>> Tak więc pierwszą rzeczą, związane list.
Oto obraz na wysokim poziomie z połączonej listy.
Pokażemy to w klasie.
My zazwyczaj 10 osób stojąc na scenie.
Ale mamy szereg węzłów, gdzie każdy węzeł ma pewną wartość i wskaźnik
do następnej wartości.
Tak więc, aby z jednego węzła do następnego, można tylko powiedzieć, daj mi następny węzeł.
Masz ten węzeł.
Daj mi następny węzeł.
Masz ten węzeł.
Daj mi następny węzeł itd. dopóki nie ma lewej węzeł.
>> Więc nadal mówić o jest na wysokim poziomie.
To bardzo proste, aby wstawić rzeczy w połączonej listy.
Jeśli nie dbasz o zamówienie, możesz umieścić je
na samym początku.
To jest stała czasowa.
Ale trudno jest znaleźć wartość.
Jeśli starasz się zapytać, jest siedem w mojej liście?
Musisz przejść przez każda pojedyncza wartość.
Czy to siedem?
W kółko.
I to jest O (n).
Tak więc, gdy przygotowania do quizu, Porównaj to z tablic.
>> Czy to w porządku?
Zgasły światła przyciemnione.
OK.
Gdy lista jest związana lepiej?
Kiedy tablica lepiej?
Więc spójrzmy na jakiś kod.
Oto potencjał węzła.
Jest to struktura.
Ma int n, która będzie nasza wartość.
I ma węzeł struct * obok, które jest nasz wskaźnik do kolejnego węzła.
Więc widzimy, że się aby podwyższyć int w naszym węźle.
Ale gdyby to było związane lista char gwiazdek i powiązana lista pływaków, my
całkowicie mógł zrobić zbyt.
>> Zapamiętaj w pset6, prawdopodobnie miał powiązana lista gwiazd char lub zaledwie
statyczne tablice char.
Przyjrzyjmy się tutaj na pracy.
Dlatego chcemy, aby wstawić nowy n do naszej listy.
Zaczynamy z głowy, który jest wskaźnikiem wskaźnik do węzła, który ma
wartość n, a następne od wskaźnika, który Punkty do tego węzła jest wartość
n i następny null, ponieważ jest to ostatni węzeł.
Tak więc w interesie czas, będę umieścić cały kod na ekranie.
I będziemy chodzić po nim kilka linii na raz.
>> Tak tu jest kod.
Mam nadzieję, że to czytelne.
Pierwszą rzeczą, jaką możemy zrobić, to my malloc nowy węzeł.
Więc to sprawia, że ​​wskaźnik do nowego węzła, który nie dość mają coś ustawić
się w nim jeszcze.
Możemy sprawdzić, aby upewnić się, że nowy węzeł nie jest null.
W przeciwnym razie musimy zrezygnować.
Więc po sprawdzeniu, że teraz ustawić wartości węzła.
Więc umieścić w naszej nowej n n dziedzinie.
I ustawiamy kolejny wskaźnik, aby wskazywał przy głowicy, tak, że możemy
teraz to włożona węzła na naszej liście.
>> Wreszcie mamy globalnego punktu głowy do naszego nowego węzła, tak, że gdybyśmy
zaczynają się od głowy, że będziemy w tym nowy pierwszy węzeł zamiast
Stare pierwszy węzeł.
A kiedy ta funkcja się kończy, Zmienna nowy węzeł już nie istnieje,
ponieważ było lokalne do funkcji.
Więc to jest stan świata.
Nasza globalna głowa wskazuje na nasz nowy Pierwszy węzeł, co wskazuje na nasze
przy pierwszym węźle, które punkty do węzła potem.
>> To było wprowadzenie.
Mam nadzieję, że był stosunkowo proste do naśladowania.
W przypadku wątpliwości, narysować obrazek.
Więc uważam, że mówienie o związane i patrząc na listy
Kod nie jest bardzo pomocne.
Natomiast patrząc na obraz połączony Lista pozwala mi myśleć, oh, tak
Mam tu ten węzeł.
Ale jeśli mogę zaktualizować tego wskaźnika, kończy się odłączony.
I zapomniałem gdzie węzeł przechodzi.
I kod wychodzi.
I masz wiele węzłów , które są odłączone.
I nie kończy się z Lista chcesz.
>> Więc jeśli narysować obrazek i zrobić to krok po kroku, mam nadzieję, zobaczysz
prawidłowy porządek rzeczy w kategoriach aktualizowanie wskazówek, aby upewnić
że lista jest razem.
Wkładka jest stosunkowo proste.
Bardziej skomplikowany byłoby wstawiania w uporządkowanym wykazie.
Funkcja ta jest bardziej skomplikowane usuwanie i znaleźć, więc patrząc przez liście do
zobaczyć, czy coś tam jest.
Być może zrobił to w pset6 kiedy ma do swojej tabeli mieszania i powiedział,
dobrze, jest słowo jabłko w moim połączonej listy?
>> Więc może już to uczyniło.
Ale na pewno, odświeżyć pamięć i spróbuj reimplement znaleźć i
reimplement usunąć dla połączonej listy.
Zabawa marginesie, tam również związany podwójnie list, w którym mają
wskaźniki, które wskazują zarówno do przodu i do tyłu, tak, że można przejść do
następnego węzła i poprzednim węzłem.
I nie było pytanie na zeszłorocznym Quiz z tego typu, rozmawia
o podwójnie związany list.
>> Teraz, to jest struktura, że ​​jesteś stosunkowo znane, ponieważ większość
z was zapewne używał ich na pset6.
Oto jeden, który jest nieco mniej znane.
Na marginesie, uważam, że jest quiz 1 przede wszystkim trudniejszy niż Quiz 0, ponieważ
rzeczy robisz, ty nie zrobił tyle.
Aby dodawać, że w inny sposób, na Quiz 0, Ci napisał wiele C. I
poprosił Cię o C.
>> Dla Quiz 1, będziemy prosić o PHP i JavaScript, które można
nie napisał tyle.
Zamierzamy poprosić o kodu C nie napisałem tyle,
Ten zaawansowany C rzeczy.
Więc na pewno, ćwiczyć my stuff mowa w wykładzie, który
nie koniecznie zrobić na problem ustawienia.
>> Skoro o tym mowa, nie zostały napisane Stos na problem ustawić.
Ale to było w wykładzie.
Oto obraz wysokiego poziomu stosy, które pokazują co roku.
To w stos tac stołówce Mather.
Na wysokim poziomie, stosy są ostatnio , pierwszy z struktury danych.
Oznacza to, że będziesz aby to w -
1, 3, 7, 12, 14, ujemna 0.
Jedna rzecz nie może mieć powiedział - ujemny 3, 0.
Umieścić wszystkie te rzeczy w.
I ostatni włożysz to pierwszy jeden, że przyjdzie się.
>> Więc masz dwie operacje -
wcisnąć i pop.
Wszystkie wprowadzenie, że jestem wskazując w ten sposób są Push.
A potem, kiedy osiągnie się chwycić coś lub dotrzeć na górę, aby złapać
coś, że to pop.
Więc mamy zamiar wdrożyć stosy.
I pokazaliśmy je w wykładzie za pomocą tablic.
Ale można je zrobić za pomocą połączonych list.
Stos jest koncepcyjnego danych struktura, a nie jak
jeden wdrożenie specyficznych.
>> Więc co by to wyglądało?
To wygląda trochę jak ten.
Chcesz mieć wielkość całkowitą.
I chcesz mieć tablicę wartości, które my dzwoniąc tace, bo to
co to za obraz nam - int tace -
a nawet Maksymalna.
Więc co się pchać wygląda?
Cóż, jeśli mamy stosu s, a następnie wcisnąć coś na s, dostaniemy
Wielkość s.
Oraz że byłoby obok otwarte miejsce z naszej tablicy.
Więc jeśli mamy trzy rzeczy w naszym stosie, Następnie tace 3 będzie następny
otwarte miejsce, ponieważ 0, 1, i 2 są już wypełnione.
>> Więc umieścić wartość w s.trays [s.size], trzecie miejsce.
A następnie zwiększamy s.size powiedzieć, hej, mieliśmy trzy rzeczy przed.
Teraz mamy cztery.
Więc następnym razem, kiedy pchasz, jesteś zamiar umieścić coś na 4.
Lub następnym pop, będziesz spojrzeć na 3 zamiast 4 lub cokolwiek.
A potem wrócimy wierny powiedzmy, hej, udało się.
To działało.
Jako zasada, jeśli funkcja jest powinien powrócić true lub
fałszywe zawsze zwraca true, możesz zrobić coś złego.
Tak to działa?
>> Cóż, to działa dobrze na 1, i 2 i 3 i 4 i pięć.
Ale powiedzmy, dotarcia do zdolności.
Mam następnie uruchomić na problem, ponieważ jeśli rozmiar jest taki sam, jak zdolności, jestem
teraz stara się umieścić coś w tablica, gdzie nie mam miejsca.
Tak krótki wyboru, aby to naprawić.
Jeśli s.size == pojemności, return false.
W przeciwnym razie, iść i zrobić to, co zrobiliśmy.
Co jeszcze możemy zapytać o na stosach?
Co jeszcze trzeba studiować?
Co jeszcze trzeba ćwiczyć?
>> Cóż, wdrażanie pop.
My już nie impuls.
Zrobię to.
Realizacja nie tablica, gdzie użyć połączonej listy, być może.
Nie-int wdrożenie.
Zrobiliśmy ints tutaj.
Ale mogło być pływaków.
Mogłem być ciągi.
To mógł być char gwiazdkowych.
Spójrz na ostatnie konkursy dla rodzaju pytania poprosiliśmy o stosach.
>> Powiem, że stosy wokół pokryte same, jak omówiliśmy je w
lat przeszłości.
Więc pytania quizu być dobrym wskaźnikiem.
Do przodu jeszcze szybciej, kolejek.
Są jak stosy.
Ale są pierwsze weszło, pierwsze wyszło.
Jeśli jesteś Brytyjczykiem, kolejka słowo zapewne wiele sensu dla Ciebie.
W przeciwnym razie może być dowiedział się o tym, jak w linii.
Działają one podobnie jak linii w sklepie Apple.
Pierwsza osoba, która pojawi się na 03:00 rano jest pierwszy
Osoba kupić jego iPada.
>> Tak więc mamy dwie operacje -
enqueue i usunie.
Enqueue stawia kogoś w linii.
Dequeue ciągnie pierwszy osoba z linii.
Ponownie, możemy realizować to z tablicy.
Tak więc to, co jest, że struktura pokazał w wykładzie?
To był ten jeden.
Ponownie, numery.
Ponownie, rozmiar i to nowa rzecz przodu.
Dlaczego istnieje coś, co nazywa przodu?
To następny indeks element z kolejki.
To tylko wewnętrznie śledzenie Pierwszy facet, aby pokazać się, więc, że
może wyciągnąć go, kiedy musimy.
>> Zdecydowanie patrzeć na notatki z wykładów i spróbuj wdrożyć enqueue i usunie
podczas studiów na quiz.
Ważne rzeczy do przemyślenia.
Owijanie wokół jeśli przód plus Rozmiar kończy się większe niż zdolności.
Ponownie, jeśli struktura jest pełna, będziesz mieć problem.
Hash tablice widziałeś wcześniej.
Większość z was zapewne realizowane te na pset6.
Jest to struktura, która dąży do O (1) stały czas wstawiania i O (1)
stały czas wyszukiwania.
>> W CS50, wdrożyliśmy to jako tablica połączonych listach.
Kluczowym składnikiem w tabeli mieszania jest funkcja skrótu.
Tak konwertuje to Twój wkład, powiedzmy, słowo spoza słownika, w ilości,
który będzie nasz indeks.
I użyjemy tego indeksu na naszej tablicy.
Więc tutaj jest śliczny obraz z study.50.net.
Rzucamy wszystkie słowa w Nasza funkcja skrótu.
I funkcja skrótu mówi nam gdzie umieścić te słowa.
>> To wszystko jest super w kraju, gdzie Jest tylko jedno słowo na każdej szczelinie.
Ale, jak to z pset6 istnieje się więcej słów niż szczeliny.
Więc co się dzieje, gdy uzyskać kolizji?
Zamiast przechowywać jedną wartość w, powiedzmy, tabeli mieszania 3, można
przechowywać połączonej listy.
I tak zamiast kantalupa tutaj, to masz listę, na
gdzie pierwszy węzeł jest melon.
I następny węzeł jest kot.
I trzeci węzeł jest kolizja, niech powiedzieć, bo wszystkie te słowa zaczynają
z C
>> Tak więc większość z was to zrobił dla pset6.
Jeśli nie zrobić tabeli mieszania na pset6 i próbował coś takiego
trie, zdecydowanie przeglądu tabel mieszania.
Jeśli zrobił to na pset6, zdecydowanie przeglądu tabel mieszania.
A jeśli nie to na pset6 i nie poćwiczyć rację i ci
miał wiele kłopotów z nim, na pewno przeglądu tabel mieszania.
Tak naprawdę to z pewnością lekcja przeglądu tabel mieszania.
>> Zdecydowana mniejszość z was próbował obecnie próbuje na pset6.
Obraz na wysokim poziomie.
To jest coś takiego, gdzie każdy węzeł zawiera zbiór dzieci, w którym każdy z
Dziecko odpowiada na list.
I każdy węzeł mówi również, hej, jestem słowo.
Tak więc w tym przypadku słowa Maxwell jeśli się M do A do
X-W-PL-P-P, a następnie po nim jeszcze jeden.
I masz ten symbol, Delta, które to oznacza oznacza to słowo.
Więc Maxwell jest słowo.
Te różnice są przez oznaczający którego słowa i rzeczy, które są
rzeczy nie są.
>> Więc w pset6, że przechowywane dane obok jednego z naszych węzłów było "Jestem
Słowo. "I fajna rzecz o próbach jest w stanie wykazać wkładanie i
odnośnika w O (długość słowa).
Tak po prostu przejść przez Maxwella, to M-W-X-E-L-L. Tak, siedem lub osiem -
Nie mogę liczyć -
kroki, aby dostać się do końca i sprawdzić rzeczy.
Tak szybkie wdrożenie tutaj.
Rob przeszedł związane listy w jego śmierci.
Więc sprawdź to.
Przepraszam.
Przeszedł trie w jego śmierci.
Więc sprawdź to.
>> Ale w zasadzie mieć każdy węzeł posiada 27 wskaźniki do kolejnych węzłów i jeden
Boolean dla mam słowo.
Wyjazd po śmierci Roba na jak to faktycznie jest realizowany.
Nasza ostateczna struktura, nasze drzewa i drzewa wyszukiwań binarnych.
Więc patrząc na nich, były one objęte ostatnio Tydzień 8, poniedziałek.
Drzewo jest podobny do trie, oprócz ciebie nie muszą mieć 27 węzłów na
każdy punkt.
I nie masz tych danych w każdym krok, który oznacza, czy -
Ścieżka nie ma znaczenia.
Natomiast trie, od góry do ścieżki dolny, Maxwell, było dla nas ważne.
>> Ale każdy węzeł ma wiele dzieci, być może.
Mamy trochę więcej słownictwa.
Korzeń drzewa jest na samym szczycie.
I powiedzieć, że bardzo najniżej Węzły, które nie mają
dzieci są liście.
Tak jak trie, drzewo jest Struktura węzłów.
Popularny rodzaj drzewa, który zamierzamy rozmawiać o to drzewo binarne, w którym
każdy węzeł ma dzieci lub jedno dziecko lub dwoje dzieci.
Więc to nie jest obraz o Drzewo binarne, ponieważ
Węzeł 3 ma troje dzieci.
>> Ale jeśli mielibyśmy ignorować tych, resztę z nich jest drzewo binarne, ponieważ
wykazuje tę właściwość, że każdy węzeł ma zero, jedno lub dwoje dzieci.
Więc jak możemy wyrazić to w kodzie?
Możemy mieć węzeł, w którym każdy węzeł ma całkowita wewnątrz niej, a także
jako wskaźnik do drzewa po lewej stronie i wskaźnik do drzewa na
Dobra, więc dwóch dzieci.
Jak jest to przydatne?
Dobrze, jeśli uda nam się zasady o tym, gdzie jesteśmy umieścić węzły, możemy wyszukiwanie szybciej.
>> Więc jest koncepcja poszukiwania binarnego drzewo, w którym wszystkie węzły
lewo poddrzewo mają mniejszą wartość niż węzeł patrzymy.
I wszystkie węzły na prawym poddrzewie mają większą wartość
od węzła głównego.
Teraz wygląda na to, że wiele słów.
Mam zamiar umieścić go wewnątrz podwójna cytaty i pokazać obraz.
Więc tutaj jest przykładem wyszukiwanie binarne drzewo.
Zobacz, że zaczynamy z 10.
Wszystko po lewej 10 jest mniejsza niż jej.
I wszystko w prawo jest większa od niej.
>> Lecz większa niż każdy węzeł drzewo wyraża tę właściwość.
Więc węzeł 7 ma 3 do po 9 na prawo.
Tak więc wszystkie te są mniejsze niż 10.
Ale patrząc na tylko tych, 7 ma 3 do jego lewej i 9 do jej prawo.
I podobnie z prawej strony, 15 ma 14 do jego lewej i 50 po prawej stronie.
Tak więc trzy węzły tam, 15, 14, i 50 są również ważne drzewo binarne
lub ważny wyszukiwanie drzewo binarne.
I wszystkie są większe niż 10.
Więc mogą być na tam.
Czy jest pytanie?
>> PUBLICZNOŚCI: Jak radzić sobie, gdy masz dwie siódemki?
>> R.J. AQUINO: Tak.
Jak radzić sobie z dwóch wartości które są takie same?
Niektóre wyszukiwania binarne drzewa powiedzieć, że ci ignorować duplikatów, ponieważ celem jest
tylko powiedzieć, widziałem takie rzeczy jak na razie.
Niektóre drzewa binarne wyszukiwania można powiedzieć mają grubość wewnątrz węzła.
Inni mogą powiedzieć, że wszystko, co do lewo jest mniejsza niż lub równa.
I wszystko w prawo jest większa niż.
>> To po prostu zależy od tego, co Problemem jest to, masz rozwiązanie.
Tak więc w słowniku, na przykład, gdy nie dbają o duplikaty.
Można by je wyrzucić.
Ale inny problem może cię to obchodzi.
>> PUBLICZNOŚCI: Czy jest możliwe, aby 1 do lewej 15, która
mniej niż 10?
>> R.J. AQUINO: Nie.
Jeśli 14 tutaj były 1, to byłoby nie jest ważne wyszukiwanie drzewo binarne,
bo wszystko na prawo od 10 musi być większe niż to.
I zobaczymy, dlaczego.
Jeżeli w kraju poszukiwania moim celem jest aby znaleźć 14, zaczynam w katalogu głównym.
Więc patrzę.
OK.
Zamierzamy rozpocząć u podstaw.
Spójrz na 10.
>> Cóż, 14, nasz cel, jest większa niż 10.
Więc musi być po prawej stronie.
Jest to bardzo podobne do całego komórkowego Książka, co zrobiliśmy, binarne
szukaj tam.
Jednak zamiast przeszukiwania binarnego w tablicy, jesteśmy binarny
szukając w tym drzewie.
Więc my wciąż szukamy 14.
No, 14 jest mniejszy niż 15..
Więc jeśli jest to w naszym drzewie, musi być w tej dziedzinie tutaj.
Musi ona być na prawej 10, a po lewej stronie 15.
>> I tak możemy sprawdzić ten węzeł.
I yay, znaleźliśmy 14.
I nie zamierzam przejść przez to.
Ale tutaj jest kod.
To rzeczywiście dość proste,
ponieważ jest rekurencyjne.
Co możemy poprosić, żebyś na quiz?
Możemy poprosić o napisanie tego kodu.
Możemy poprosić, aby spojrzeć na ten kod i modyfikować ten kod i wyjaśnić, co
to robi.
Tak.
Pytanie?
>> PUBLICZNOŚCI: Czy te slajdy będzie udostępnione, gdyż były one ostatni raz?
>> R.J. AQUINO: Tak.
Więc na pewno te slajdy być wysłana.
>> PUBLICZNOŚCI: Oni rzeczywiście pisał Teraz na stronie internetowej.
David po prostu to zrobił.
>> R.J. AQUINO: Slajdy są Teraz na stronie internetowej.
Pewnie załatać kilka Zauważyłam, że literówki i je naprawić.
Ale jest obecna Wersja na miejscu.
Inne rzeczy, które moglibyśmy zadać ci to zrobić -
Napisać wkładka.
Napisz iteracyjny wersję Funkcja rekurencyjna właśnie pokazałem
lub porozmawiać o tych sprawach, tak jak w pkt, w słowach, w zdaniach.
Porównanie czasów pracy i wyjaśniając co chcesz użyć pliku binarnego
drzewo wyszukaj zamiast hash tabeli, na przykład.
>> Więc rozumiem tych struktur w dość głębokim poziomie.
Zrozumieć, jak je pisać, jak używać ich, jak rozmawiać o nich.
I będziesz wszystko ustawione.
Pytanie?
>> PUBLICZNOŚCI: Kiedy piszesz Wyszukiwanie binarne drzewo, w jaki sposób można
określić, jaką wartość zrobić to jako root?
>> R.J. AQUINO: Więc pytanie, co Wartość sądzisz jako korzeń?
W zależności od kodu, można może mieć globalne korzenie.
Więc może prawdopodobnie miał w pset6 globalnym tabeli mieszania.
Lub może przekazać korzeń jako argument.
Więc to tutaj funkcja wyszukiwania przyjmuje argument node *.
I tak co węzeł zdarzy ci się być patrząc na to jeden traktujesz
jako root, kiedy mijamy go w.
I jestem ustawiony.
To są moje slajdy.
Następna osoba może przyjść swapa z laptopem i mikrofonem.
>> ROB BOWDEN: Myślę, że mam różnie interpretować to pytanie.
Ale interpretować go jako, jeśli masz numery 1, 2 i 3, w jaki sposób
wiedzieć, aby 2 korzeń w porównaniu z 1 lub 3?
Jeśli zrobimy 2 korzenia, to jest ładnie 1 i 3 w lewo i prawo.
Ale jeśli 1 jest korzeniem, to jest od 1 do góry, 2 w prawo, 3 w prawo.
Tak domyślnie, nie wiesz, co do korzenia.
I dla każdego algorytmu spodziewamy się dać, tylko pierwszą rzeczą, którą
Wkładka będzie korzeń.
Lub chcemy dać binarne drzewo, które już istnieje, że ma pierwiastek.
Ale istnieją inne algorytmy takie, że główny zaktualizuje, tak, że jeśli
kończy się w sytuacji, gdy jest to 1, 2, 3, to automatycznie zaktualizuje się do
zrobić 2 nowego korzenia, tak że to jeszcze ładnie wyważone.
>> ANGELA LI: Cool.
Hej, chłopaki.
Jestem Angela.
I mam zamiar skończyć naszą C a następnie przejść do niektórych z naszych sieci
technologie -
HTTP, HTML i CSS.
Tak więc pierwszą rzeczą jest bufor ataki przepełnienia.
Warto więc spojrzeć na ten kod.
To bardzo proste.
Jest bla funkcji.
I to nic nie powrócić.
Ale to ma się wskaźnik na ciąg o nazwie bar.
>> I to się oświadczyć to bufor, który jest znakiem
Tablica ma 12 slotów.
I wykorzystuje memcpy, który jest po prostu funkcja, która kopiuje z jednego adresu
do drugiego.
Więc to próbuje skopiować do nasz bufor z tego co
Pasek wskazuje.
Więc jakiś pomysł co jest nie tak z tym kodem?
>> PUBLICZNOŚCI: Jeżeli pasek jest dłuższy niż C, będą one zastąpić.
>> ANGELA LI: Tak, dokładnie.
Nie mamy gwarancji, że bar będzie mniej niż 12 lat.
My po prostu się trochę dowolną liczbę 12.
I byliśmy jak Miejmy nadzieję, że nasze wejście użytkownika jest mniejsza niż
12 znaków.
Tak więc w idealnym świecie, jeśli nasz wkład jest zawsze zgodnie z oczekiwaniami, to dostaniemy
coś, witam.
To mniej niż 12 znaków.
Robi się czytać w char c.
A potem coś z tym zrobić.
To naprawdę nie ma znaczenia.
>> Ale osoba mogłaby zrobić coś więcej jak to, w którym
dać nam cokolwiek bar wskazuje, to będzie wskazywać na tej ogromnej tablicy
po prostu jest.
I to jest sposób dłużej niż 12 lat.
Tak to się dzieje, aby przejść całą drogę tu, gdzie powrót
Adres kiedyś.
Więc powiedzmy, że z tej funkcji nazywa bla.
Może foo był nazywany przez niektórych innych Funkcja, która została wywołana przez główny.
Więc gdy foo jest uruchomiony, to musi wiedzieć, gdzie wrócić.
>> Jeśli foo został nazwany przez niektórych funkcji o nazwie baz, to musi wiedzieć, że jest to
iść z powrotem do baz.
I to właśnie ten adres zwrotny tu mówi nam.
Ale jeśli zastąpić go inny Adres w tym przypadku jest
reprezentacja adresu w początku tego bufora, a następnie
co się faktycznie wydarzy się to, że zamiast wrócić z powrotem do baz,
które nazywa naszą funkcję, to jest po prostu zamiar iść do przodu tego kodu.
>> I czy to nie dlatego, Złośliwy haker koleś przyszedł i
wstrzykuje to, to może kwota ta o nie jest w rzeczywistości jest.
I to właściwie tylko zakodować, że przerwy komputer czy coś.
Więc być obronny o tego rodzaju rzeczą, trzeba założyć, że nigdy nie
wprowadzania danych przez użytkownika jest pewne ilość znaków.
Na przykład, kiedy robisz ortografii, pan powiedział, że słowa były
tylko będzie 40 znaków długo maksymalna.
I to było dobre.
>> Ale jeśli nie, to trzeba by upewnij się, że tylko do odczytu w 45
znaków na raz.
W przeciwnym razie, można zastąpić Twój bufor.
Wszelkie pytania na ten temat.
Tak.
>> PUBLICZNOŚCI: można po prostu porozmawiać trochę więcej o nich?
>> ANGELA LI: Przepraszam.
Tak.
>> PUBLICZNOŚCI: mikrofon jest tylko dla filmu.
Postaram i projekt.
Cześć, chłopaki.
Sup?
Więc idziemy na kilka rzeczy w Biblioteka CS50, które już przy
cały semestr, głównie na dane użytkownika.
Jak wiesz, obejmują CS50 biblioteka po prostu robi CS50.h, które
zawiera wszystkie prototypy Funkcje, z których można korzystać, jak
GetString i GetInt i GetFloat, et cetera.
I jest to jedna linia w CS50 biblioteki, które definiuje ciąg, który
wy wszyscy wiemy już, tylko char *.
>> Ale rzućmy okiem na jak GetString działa.
To jest bardzo skrócona wersja.
Można wyciągnąć pliki biblioteki CS50 od, myślę, manuals.CS50.net.
Można przeczytać Rzeczywista funkcję.
Ale to dotyczy niektórych ważne elementy.
Więc stworzyliśmy jakiś bufor z niektórych zdolności.
I to, co robimy jest dostać jeden znak w czasie od standardowego N.
To miejsce, gdzie wprowadzane przez użytkownika tekst w konsoli.
>> I tak będziemy czytać charakter, tak długo, jak to nie jest nowy
linii i to nie koniec sprawy, które jest koniec standardowego wejścia.
I dla każdej postaci, które czytamy w, jeśli kończy się dodawanie znaków
do liczby znaków czytaliśmy i to jest więcej niż naszych możliwości,
to co możemy zrobić, to po prostu zmienić rozmiar naszego bufor tak, że jest to dwa razy więcej czasu.
Ponownie więc, w tym ochronę przed buforze ataki przepełnienia, bo czytają w
znaków na raz.
A jeśli w dowolnym momencie można też przeczytać w wiele, po prostu rozwinąć swój bufor.
Należy pomnożyć ją przez dwa.
I wtedy masz więcej miejsca.
>> W przeciwnym razie, po prostu dodaj znaków do bufora.
I po skopiowaniu wszystkich znaków, to zmniejszyć bufor
z powrotem do normalnego rozmiaru, dodać terminator null, a następnie wrócić.
Teraz spójrzmy na GetInt.
Czy wy tego przeczytać?
Można powiększyć trochę.
Nie wiem jak działają komputery.
Nic nie szkodzi.
Nie mogę powiększyć prawidłowo.
>> To jest naprawdę trudne.
Przykro mi.
Po prostu spójrz na to.
Więc co GetInt robi to najpierw czyta w ciąg, który z GetString
mamy wdrożone wcześniej.
I ważny element, aby pamiętać o jest, jeśli ten podział, że kończy się
czytanie jest jak faktycznie nie łańcucha, wtedy po prostu wrócić INT_MAX do
oznaczają awarii.
Dlaczego zamiast wrócić INT_MAX ujemnej 1 lub 1?
Jakieś pomysły?
>> PUBLICZNOŚCI: [niesłyszalne] ujemne 1 na jednego.
>> ANGELA LI: Tak, dokładnie.
Więc jesteś o wiele bardziej prawdopodobne, po prostu chcę do wejścia 1 lub ujemną 1, gdy pojawi się monit
dla uruchamianego n i co n-ty maxes.
Jest ogromny.
Nie jesteś prawdopodobnie będzie go używać.
Tak to jest jak się do projektu decyzji upewnij się, że nie przypadkowo
zwróci błąd i nie wrócić 1, które mogą być przetwarzane
jako właściwej odpowiedzi.
Tak więc, jeśli linia nie istnieje, wracamy INT-MAX.
W przeciwnym razie, możemy użyć sscanf, który jest jak scanf.
Ale to czyta z łańcucha.
>> I mamy to sformatowany Ciąg, który jest% i% c.
A my postaramy się dostosować, które z co użytkownik dał nam.
Chcemy liczbę pasujących rzeczy na 1, co oznacza, że ​​tylko
Naprawdę chcesz, aby dopasować liczbę całkowitą otoczony może biały
miejsca, a może nie.
W tym przypadku, jeśli umieścić w coś jak bar, bar nie zgadza się na wszystko,
ponieważ nie musi być liczbę całkowitą od początku.
Więc nigdy sscan odwrócił 0.
Więc nie wrócić, że.
>> Alternatywnie, jeśli umieścić w coś tak jak 1, 2, 3, A, B, C, które pasuje
zarówno całkowitą, lecz także charakter po nim.
Więc sscanf zwróci 2, które nie jest jednak wygodne.
Nie chcesz, 1, 2, 3,, B, C jest ważna int.
Tak, że również nie działa.
Ale powiedzieć można umieścić w coś jak 50.
, Że będzie pasować do% i, co oznacza, będzie się czytać w n.
A teraz, n zawiera numer 50.
A potem możesz go zwrócić.
>> W przeciwnym wypadku trafisz Ponów.
A potem po prostu ponownie przechodzi do momentu masz prawidłowe wejście od użytkownika.
Wszelkie pytania na ten temat?
>> PUBLICZNOŚCI: Więc jeśli były, aby wydrukować wartość GetInt na [niesłyszalne]
byłoby po prostu całkowitą i max?
>> ANGELA LI: Tak.
Więc jeśli używasz GetInt, należy założyć, że nie chce n-ty max do
Wejście jest ważne, ponieważ masz zamiar założyć, że to było złe.
>> PUBLICZNOŚCI: Jeśli nie mamy char c i ktoś umieścić w 1, 2, 3, Sam, prawda
nadal działa przez 1, 2, 3?
>> ANGELA LI: Myślę, że to działa.
Ale ty nie chcesz 123Sam do wejście podany jest przez użytkownika.
To naprawdę nie jest int.
Więc to nie jest sprawiedliwe analizować je jako int.
OK.
W tym przypadku, przejdźmy do Internetu.
Więc HTTP nie jest język.
HTTP jest tylko zestaw standardów dla jak wysyłać rzeczy z klientami,
to ty, do serwerów.
To inni ludzie w internecie.
>> Więc HTTP oznacza Hypertext Transfer Protocol.
To serce i dusza całej sieci.
Hipertekst tylko część odnosi się do HTML.
Transfer jest dla klientów, jak będzie wysyłać żądania do
Serwery, które dają odpowiedzi.
I protokół jest tylko, w jaki sposób można oczekiwać serwer zachowywać?
A jak się ma zachowywać tak, że można usprawnić ten
proces komunikacji?
>> Żądania HTTP wyglądać tak dużo jak to.
GET jest rodzaj wniosku.
Wy widzieliście żądania GET i żądania POST.
Druga rzecz, że tam, / mi, że to tylko URI lub adres URL, gdzie
chcesz iść w przyjmującym.
Więc wniosek jest prośbą o Strona, jak www.facebook.com / mnie.
I jest to żądanie GET.
A potem to HTTP/1.1, to tylko wersja HTTP używasz.
To prawie zawsze 1.1.
>> I jest jeszcze grono innych rzeczy też.
Rzeczywiście można zobaczyć te, jeśli otworzyć konsolę, kiedy jesteś
przeglądania stron internetowych.
Odpowiedzi wyglądać więcej tak.
Górna część jest, ponownie, typ HTTP używasz
następnie kod stanu.
Więc 200 OK jest wszystko działało.
Oto treść.
Treść będzie podążać.
A potem będzie wam jakie treści i innych rzeczy też.
>> Kody stanu, istnieje kilka Najważniejszymi, które powinieneś wiedzieć.
200 OK, to wszystko jest jak złote.
Wszystko działa.
403 Forbidden.
To już prawdopodobnie widział jeśli zapomniałeś chmod coś poprawnie.
Oznacza to, że nie masz odpowiednie uprawnienia do
dostęp, że w serwerze.
To jak, nie, nie możesz tego zobaczyć.
404 oznacza, że ​​coś nie istnieje.
Nie znaleziono.
Prawdopodobnie widziałeś, że dużo.
>> 500 Internal Server Error jest zwykle jakby coś poszło nie tak po stronie
serwera.
Więc kiedy się realizacji pset7, jeśli miał błędy PHP, można
faktycznie przejść na stronę i zobacz cała masa rzeczy błędów PHP.
Ale to zwykle nie stało, ponieważ strony nie bardzo chce
powiedzieć, dlaczego ich strona jest podzielona.
Oni prawdopodobnie tylko powrócić 500 Internal Server Error.
>> A jeszcze 418 Jestem czajniczek.
Jest cała historia Dlatego, że jest rzeczą.
Ale można o tym przeczytać w wolnym czasie.
Jest cała masa inne kody stanu też.
Ale są to te powinieneś wiedzieć.
Więc porozmawiajmy o HTML.
HTML, pamiętaj, że nie jest język programowania.
Jest to język znaczników.
Oznacza to, że opisuje treść.
Dowiesz się, co wygląda na dokument HTML podoba, czy nie, jak to wygląda
ale jak to jest skonstruowane.
>> Tak, że tworzy strukturę i Semantyka stron internetowych.
To jak to jest paragraf.
Jest to uporządkowany.
To jest jak odcinek mojej stronie.
Oto tytuł.
Robi takie rzeczy.
Nie styl któregokolwiek z tym, ponieważ że to, co robisz w CSS.
I wygląda jak seria z zagnieżdżone znaczniki.
Więc korzystać przykład naprawdę podstawowe Strona HTML, masz DOCTYPE
Deklaracja tam.
>> To jest deklaracja DOCTYPE mówiąc, używamy HTML5.
To masz duży znacznik HTML.
Zawiera on głowicę oraz korpus.
W głowie masz tytuł.
To, co dzieje się w tytule Bar w przeglądarce.
Mamy tag linku, który łączy w zewnętrznym arkuszu stylów.
A potem mamy skrypt, który ściąga z zewnętrznego JavaScript, jak również.
>> A następnie wewnątrz naszego ciała jest w rzeczywistości co zostanie pokazane na stronie.
Mamy punkt, a następnie obrazu wewnątrz tego ustępu.
Ten jest obraz kociąt.
Zauważ, że obraz tag zamyka się.
Więc zamiast otwarcia z obrazka a następnie robi kolejną / obrazu, można
tylko ten mały ukośnik Tutaj, które zamyka je.
I tag obraz ma również ten klucz wartość atrybutu Alt.
To, że tekst alternatywny zdarza się po umieszczeniu nad nią.
>> Większość elementów HTML ma pewne wartości klucza rzeczy, które można nadać mu różne
dostosowywania.
Tak.
>> PUBLICZNOŚCI: [niesłyszalne].
>> ANGELA LI: Cóż, tak to jest atrybut znacznika.
Więc jeśli były przy użyciu jQuery, można Czy Select image.getAttribute.
A potem można szukać uzyskać atrybutu alt.
I to daje kocięta.
Jeśli pamiętasz formularzy w HTML, wejście elementy będą miały atrybuty nazw.
I to jest to, co wykorzystuje do wysyłania PHP wnioski, gdy formularz jest składany.
>> PUBLICZNOŚCI: Czy coś wymienić o tym, jak w przypadku korzystania kittens.jpg lub
coś, co ma brakujących plik folderów lub inne pliki?
>> ANGELA LI: Tak.
Więc to jest to, co nazywa się względna ścieżka, bo nie oddam
Ci pełną ścieżką.
To jak, kiedy w C, jeśli nie fopen jakiś plik, jeśli fopen hi.txt, że
Oczekuje się hi.txt się w taki sam katalogu, chyba że dasz mu więcej
złożona ścieżka.
>> PUBLICZNOŚCI: Tak można określić który folder [niesłyszalne]?
>> ANGELA LI: Tak.
I można sprawdzić, jak to zrobić.
Ale gdybym chciał dostać kittens.jpg się z katalogu nadrzędnego, zrobiłbym
.. / Kittens.jpg.
Tak.
Przepraszam.
Tak.
O rany, zapomniałem pytanie.
Jakie było pytanie?
Och, pytanie jest, kittens.jpg Oczekuje się w katalogu?
I w tym przypadku, jest to.
Ale można też dać pewną ścieżkę tak, że nie jest to konieczne.
Dobry?
>> CSS.
Tak, CSS, podobnie jak HTML, nie jest język programowania.
CSS to tylko seria zasad stylizacji.
To oznacza kaskadowych arkuszy stylów.
I go używać w połączeniu ze strony HTML do stylu.
Tak więc istnieją trzy sposoby można dołączyć go.
Jednym ze sposobów można to zrobić jest w głowie część kodu HTML, możesz po prostu
otworzyć znacznik, a następnie trzymać się stylu niektóre CSS rządzi tam.
To całkiem OK.
Tak.
>> PUBLICZNOŚCI: Możesz umieścić te tagi stylu w latach, niech
powiedzmy, ciała i / ciało.
I wtedy można byłoby stylizacji Tylko w organizmie.
>> ANGELA LI: można.
Uda się.
Ale nie powinien, bo stylizacja jest rodzaj metadanych, które powinny znaleźć się w
Szef dokumentu.
Ciało powinno naprawdę zawierają tylko co się naprawdę dzieje na
pojawi się na stronie.
>> PUBLICZNOŚCI: Więc chcesz umieścić stylu w twojej głowie do stylu
cała strona, prawda?
>> ANGELA LI: Tak.
Więc wprowadzenie stylu tutaj, te reguły CSS będą miały zastosowanie do całej strony w oparciu o
ich selektorów.
Więc lepszy sposób to zrobić to zamiast posiadania tag styl w głowie,
masz link do stylu zewnętrznego Karta jak pokazałem w
Poprzedni przykład.
Co to robi, jest to stara i znajduje plik style.css i ciągnie go
i że gdy używa style dla strony.
By i twoja style.css tylko wyglądać.
Byłoby to po prostu banda CSS.
>> I w końcu, że jest inny sposób mogą zawierać CSS, które naprawdę
nie powinien nigdy robić.
To połączenie w jednej linii do stylizacji.
I tak każdy element HTML może również ma atrybut stylu.
A następnie w tym atrybutem stylu, możesz dać mu CSS.
Więc w tym przypadku, niezależnie od div jestem definiowania tutaj, to będzie
mają czarne tło i biały kolor tekstu.
Ale nie powinno się tego robić, bo to, co to nie jest to stawia swoją stylizację
wewnątrz kodu HTML.
>> I wiem, że rozmawialiśmy o HTML jest struktura i CSS styl.
Jeśli to zrobisz, to miesza je razem.
I nie jest to bardzo czysty.
Więc nie rób tego.
Korzystanie przykład CSS, tam, my wystarczy wybrać ciało HTML
dokumentalny.
I jesteśmy jak, wszystko jest będzie Comic Sans.
Ja również nie polecam tego.
Ale może to zrobić.
>> Druga zasada tutaj, to będzie , aby wybrać element na
Strona o identyfikatorze magistrali.
Więc cokolwiek HTML elementem, powiedziałem ID = Główny, mam zamiar dać, że
Marża 20 pikseli i wyrównać wszystko, cały tekst do środka.
Ostatnią rzeczą, wybiera według klasy CSS.
Więc dowolny element na stronie, że dałem sekcja klasy, mam zamiar zrobić to
kolor tła z jasnoniebieskim.
Tak.
To wszystko, co mam.
Pytanie?
>> PUBLICZNOŚCI: Co hashtag przed głównym zrobić?
>> ANGELA LI: Pytanie jest, co robi hashtag przed głównym zrobienia?
W tym przypadku skrótu w CSS oznacza, wybierz przez ID.
Więc gdybym miał jakiś element HTML, jak Divid = CSS to główne reguły wybiera
rzecz o identyfikatorze magistrali.
Podobnie, okres przed sekcja jest Selekcja według klasy CSS lub
wybrać przez klasy HTML.
>> PUBLICZNOŚCI: Dlaczego nie ma przed 6 w kolorze tła?
>> ANGELA LI: Tak.
Tak jest, dlaczego jest pytanie hash przed 6?
To jest inny niż tego skrótu.
To oznacza, że ​​dajesz kolor heksadecymalny.
Tak hex kolory, to po prostu oznacza kolor.
A pamiętasz trójek RGB kiedy zrobiłeś pset lekarzy sądowych?
Jest to podobne.
Pierwsze dwie cyfry oznaczają ile czerwony jest kolor.
Drugie dwa reprezentują jak bardzo zielony.
A trzecia reprezentuje jak bardzo niebieski.
I mieszania jest to się dzieje reprezentowania koloru.
>> Więc wszystko od 0, 0, 0, 0, 0, 0 do F, F, F, F, F, F jest ważny.
To jakiś ważny kolor, które mogą być wyświetlane przez przeglądarkę.
Pytanie?
>> PUBLICZNOŚCI: Jaka jest różnica między korzystania przez ID i klasy?
>> ANGELA LI: Pytanie jest, co jest Różnica pomiędzy
korzystania przez ID i klasy?
Możesz mieć tylko jeden element Dokument HTML, który ma dany identyfikator.
Tak, tylko jedna rzecz na mojej stronie może mieć ID main.
Więc można używać go na to nagłówek.
To jest nawigacja.
To jest stopka.
Ćwiczenia są różne, ponieważ można stosuje się do tak wielu klas elementów HTML
jak chcesz.
>> Tak na przykład, zrobiłem punkt klasy, bo jest prawdopodobnie więcej niż jeden
punkt na mojej stronie.
Jesteś po prostu może mieć tak wiele elementów na stronie z tego samego
klasy, ale tylko jeden z pewnym identyfikatorem.
>> PUBLICZNOŚCI: kropka oznacza więc klasa?
>> ANGELA LI: Tak.
Kropka reprezentuje klasę.
Fajne.
To wszystko, co mam, chłopaki.
Dziękuję.
>> [Aplauz]
>> ZAMYLA Chandler: Cześć wszystkim.
Jestem Zamyla.
Idę do pokrycia PHP, MVC i SQL dziś.
Dużo materiału, że będę Pokrycie będzie dość dużo
prosto z pset7.
Dobrze.
Więc co to jest PHP?
PHP oznacza PHP Hypertext Preprocesora.
Tak więc, jako taka, jest rekurencyjne Nazwa, która jest całkiem fajny.
PHP jest językiem skryptowym po stronie serwera, i zapewnia backend
i logiczne podwaliny naszej stronie internetowej.
>> Więc Angela mówił wiele o HTML i CSS, które sprawi, że struktury
strony internetowej.
Ale co, jeśli chcesz zmienić zawartość dynamicznie lub gdy zmienia się
w przeliczeniu na użytkownika lub określone warunki?
To gdzie jest cala PHP
Teraz zazwyczaj, PHP może zająć kilka Mniej linii do wdrożenia to samo
w C. To dlatego, że PHP obsługuje pamięć Zarządzanie dla programisty,
w przeciwieństwie do nam to malloc wolne, takie rzeczy.
>> Ale ponieważ PHP jest interpretacyjny język, zazwyczaj, może wykonać
nieco wolniej niż w C, która jest kompilowany język.
Ponieważ idziemy programowania języki, spójrzmy na to, jak
składnia będzie się różnić.
Bądźmy bardzo ostrożni, aby nie pomylić z tym.
Tak ze składnią PHP, czy jesteś Umieszczanie PHP wewnątrz HTML
pliku lub w pliku PHP. się, jesteś należy ująć w otwarty kod
PHP i zamknięte znaczniki PHP, takie jak Wynika z tego, jak na ekranie.
>> Zmienne w PHP.
Każda zmienna rozpocznie się Znak $, a następnie imię
zmienna.
Teraz, zmienne w PHP są luźno wpisane, co oznacza, że ​​nie trzeba
do wskazania typu danych jest wtedy, gdy jesteś deklarowania.
Jednakże, nie oznacza to, że Nie mamy żadnych typy na wszystkie.
Więc jeśli zadeklarować zmienną i po prostu ustawić jest równa 1, a następnie oświadczam
innej zmiennej, ustaw go równy "1" , a potem jeszcze jeden 1.0, dobrze,
W zależności od rodzaju równości Operatorzy używam, jeśli chcę, aby porównać
we wszystkich typów, a następnie będą one równe.
Ale jeśli chcę, aby upewnić się, że Typy są równe, można jeszcze zrobić w PHP
, że chociaż nie wskazują jakiego typu jest to, kiedy
najpierw plik.
>> Teraz, w PHP, choć jesteśmy przełączania z programowaniem
Języki z C, nadal mamy nasze wierny, jeśli warunek, tak jak to.
Wciąż mamy nasze pętle while, tylko jak to, gdzie można umieścić w swoim
stan i następnie ciała pętli.
A następnie Posiadamy również dla pętli, która zazwyczaj wygląda tak.
Więc jeśli chcę iteracyjne nad wszystkie dziewięć psets i złożyć i zadzwonić
Funkcja submitPset, to może to zrobić tu, co wy wszyscy
wykonywana przez ten punkt.
Gratulacje, tak przy okazji.
>> Do kamery, ludzie powiedział, dziękuję.
Teraz, jeśli nie chcą po prostu skorzystać z tej dla pętli, to rzeczywiście również PHP
ma rzeczy nazywane pętli foreach.
Więc gdybym miał tablicę liczb całkowitych, 0 do 8, przechowywane w psets tablicy,
wtedy mógłbym pętli foreach, że iteracje nad każdym numerem w psets.
I wtedy będę mógł zadzwonić sam funkcjonować osiem razy,
tak jak przedtem.
Więc to dla każdej pętli jest miły, ponieważ nie masz się, jeśli nie wiesz,
Dokładna długość tablicy, że nie, a następnie za pomocą tej pętli foreach
zajmie to za Ciebie.
>> Więc zrobiłem psets jako tablica.
Spójrzmy na to.
Tablice w PHP są zazwyczaj takie same, jak te, które my mieliśmy w C, gdzie
można zadeklarować tablicę.
I tutaj, mogę oświadczyć, pustą tablicę i tworzyć dynamicznie z wykorzystaniem
Wskaźniki jako liczby całkowite.
Więc indeksie 0, idę do przechowywania całkowitą o nazwie 1.
O indeksie 1 mojej listy, będę do przechowywania wartości 2.
, A na trzecim indeksu, ale Drugi numer, mam zamiar
zapisać numer 12.
>> Teraz, to jest w porządku, że działa to działa dobrze.
Ale powiedzieć, że dla mnie liczy co posiada każdy indeks.
Dla mnie, jak indeks 0 oznacza wiele kotów mam.
I indeks 1 oznacza, jak Mam wiele sowy.
I kolejna oznacza jak wiele psów.
Cóż, to, aby określić, że zamiast zapamiętywać 0 odpowiada
koty i 1 do sowy, można użyć asocjacyjnych, co oznacza, że
zamiast liczb całkowitych jak moich indeksów, Mogę właściwie używać łańcuchów.
>> Więc to jest bardzo przydatne.
I już w zasadzie tylko wymienić liczby całkowite z ciągów.
I nie masz asocjacyjna.
Tak.
>> PUBLICZNOŚCI: Czy istnieje powód, dla którego nie ma podkreślenia na sekundę
część, bo moja lista ma tablicę.
>> ZAMYLA Chandler: Pytanie było, jest Istnieje powód, dla którego nie ma
podkreślenia między moim i listy?
Nie.
To tylko jak jestem nazywania moja zmienna.
>> PUBLICZNOŚCI: Na pierwszy linia, jest to jedno słowo.
>> ZAMYLA Chandler: Przepraszam.
Zrobię to.
Tak.
Powinny być one takie same nazwy zmiennej.
Dobry połów.
OK.
Więc przejdźmy do łańcucha konkatenacji.
Gdybym chciał wziąć dwa ciągi, potem można je złączyć
z kropki.
Więc jeśli mam Milo jako imię i Banana jako nazwisko, a następnie
łącząc się z kropki i następnie oddanie przestrzeni pomiędzy
będzie ciąg zawierający Milo Bananów, które można następnie echo lub,
raczej wydrukować.
>> Mówiąc o echo, porozmawiajmy o mało użyteczne -
Ups.
Przykro mi.
Kilka użytecznych funkcji PHP.
Więc mamy -
trudności techniczne.
Jeden drugiego.
Wysłałem go.
Problemy PowerPoint.
I jesteśmy z powrotem z funkcji PHP.
>> Mamy więc funkcję wymagają, gdzie jeśli przejdzie w pliku, tutaj jest tylko
Przykład pliku Może przekazać w.
Następnie, że będzie zawierać kod PHP z tego sprawy, że wskazania.
I oceni, że w.
Następnie mamy także echo, które jest równoległa do printf.
Wyjściem jest równoległa do złamania, która wychodzi z bloku
Kod, który jesteś w.
A następnie sprawdza, czy pusty podano Zmienna jest jak wartość null lub zero lub
co jest utożsamiane z jest pusty.
Tak.
>> PUBLICZNOŚCI: Dla połączonego łańcucha znaków Operator kropka jeden, w PHP, jest to, że
same jak w JavaScript, w których jest to przy użyciu kropka na łączenie oznacza Plus?
Tak dla pełnej nazwy, można mieć dolara podpisać pierwsze + + i następnie trwać?
>> ZAMYLA Chandler: Tak.
Więc pytanie, czy w PHP mamy może korzystać z tego samego konkatenacji ciągów
jak w JavaScript z plusów.
Józef będzie dostać się do tego później.
Myślę, że on ma poślizg w tej sprawie.
Właściwie, to co innego.
Więc w JavaScript, trzeba użyć oraz łączenia ciągów.
W PHP, trzeba użyć operatora kropki.
Więc są one różne.
>> OK.
Więc teraz, że omówiliśmy wszystkie to PHP, gdzie to
naprawdę się przydać?
Cóż, to jest przydatne, gdy mamy Można połączyć je z naszą HTML.
Więc nasza PHP daje nam siłę do zmiany treści HTML zawartość stron przed
jego ładowania.
Tak więc na podstawie różnych warunkach zazwyczaj jest to określony użytkownik
zalogowany, możemy wyświetlić inna informacja.
Linda, nie masz pytanie?
>> PUBLICZNOŚCI: Czy można łączyć całkowitą również?
>> ZAMYLA Chandler: Tak, można.
Więc pytanie, czy można złączyć liczby całkowite lub inne
variable.s teraz przechodzimy do MVC, które jest paradygmat, że stosowane w
pset7 i wiele projektantów stron internetowych użyć do organizowania kodu w plikach
na swojej stronie internetowej.
M oznacza Model.
I w zasadzie, będzie zajmować pliki modeli z interakcjami z bazy danych.
Przeglądać pliki, odnoszą się one do estetyka strony.
Kontroler i uchwyty parsuje żądania użytkownika,
danych, czy inną logikę.
>> W pset7, połączyliśmy model i kontroler.
I nazywa je po prostu i kontrolery umieścić je w katalogu publicznym.
I przeglądanie plików, używamy ich jako szablony w katalogu szablonów.
Więc to tu przedstawia również schemat tego samego rodzaju z podziałem
modelu i kontroler w kolorze fioletowym tu po lewej i
Widok z prawej strony.
Więc to jest schemat, że niektórzy z was Może widziałeś w godzinach pracy biura,
Schematy, które byliśmy rysunek jak ty było zastanawianie się swoją pset.
>> Więc tutaj, w danym kontrolerze, modelu Kontroler, mamy funkcje
które odnoszą się do wykonywania kwerend SQL bazy danych, wykonywanie logiki PHP.
Może chcesz wyszukać Zdjęcie w Yahoo!
Finanse.
A może chcesz po prostu sprawdzić na czy użytkownik złożył
mając już przed Formularz odwiedziło stronę.
I wtedy można uczynić tworzą tutaj.
Następnie formularz został złożony przez użytkownika, które to działania
określony w tagu formularza HTML Wskazywałoby to, że strona
zwraca, że ​​dane.
>> Tak więc wszystkie te informacje będą odesłane do kontrolera.
Wtedy pewnie zrobić nieco więcej logika na to i może wykonać kilka
więcej zapytań w bazie danych SQL i w końcu, wymyślić ładnie
zapakowany zestaw informacji, które by przekazać w do innego szablonu
pokazywany te informacje.
Teraz, w jaki sposób właściwie zapakować że informacje w górę?
Cóż, mamy funkcję o nazwie Render że był w pliku functions.php w
pset7, gdzie przechodzą w imię plik, nazwa szablonu.
>> A potem także przekazać w asocjacyjna.
I tak, że asocjacyjna reprezentuje różne informacje
, które chcesz przekazać w.
Teraz, co dzieje się na stałym poziomie w Te przykłady to, że klucze lub,
a klawisze asocjacyjnych tablice, są to, co dzieje się
Oczekuje się na stałym poziomie przez szablonu ponieważ wie, że potrzebuje
coś, co nazywa wiadomość lub o nazwie nazwa.
A potem to, co na prawo, Rzeczywiste wartości, więc w tym przypadku, kto jest
dobry chłopak i Milo, te będą jako wartości, które zmieniają
że zmienia się za każdym razem, kontroler lub na podstawie określonego warunku i
minie, który w.
>> Więc tutaj w szablonach, widzimy, że używasz HTML znaków specjalnych,
które po prostu w zasadzie oznacza, że ​​chcemy aby uzyskać ciąg peer,
Użytkownik wtrącił
I chcemy, aby zastąpić Komunikat tam.
Więc wtedy, kiedy rzeczywiście zobaczyć plik, specyficzne
Informacje te są przekazywane widok
Należy pamiętać, że kluczem jest jak czynią prace że klucze asocjacyjnych
tablice, te zmienne stają się Nazwy tutaj.
A więc wartości tego klucza w asocjacyjna staje
wartość zmiennej.
>> Teraz przejdźmy do SQL.
To oznacza Structured Query Language.
I tak jest to tylko programowanie język zaprojektowany
do zarządzania bazami danych.
I stało się dla nas w poręczny nasza strona pset7 finansów.
Zasadniczo, jest to po prostu łatwy sposób śledzenie i zarządzanie obiektami i tabele
i połączyć je ze sobą.
Teraz, że z bazy danych SQL w zasadzie w postaci pliku Excel, być może,
z wieloma zakładkami arkuszy.
>> Więc można mieć wiele tabel, Być może, że połączone ze sobą.
I podobnie jak Excel, mamy dużo Funkcjonalność, że chcemy.
Na przykład, możemy wybrać niektóre wiersze.
Możemy wstawić informacje.
Możemy aktualizować wiersze.
Możemy również usunąć rzeczy.
>> SQL wybrać utwory wybierając wiersze lub rząd określonych kolumn z
bazy danych, które pasują pewne kryteria, które wskazują.
Więc tutaj, gdy widzę select * from czarodzieje gdzie dom = Ravenclaw, a następnie
Ja wybierając *, co oznacza, że ​​jestem wybierając każdą kolumnę w które
wiersz z tabeli, ale tylko jeśli kreatorów Kolumna dom równa Ravenclaw.
Teraz, to jest czysta lub SQL.
Jeśli więc poszedłem do phpMyAdmin, który jest specyficzny sposób, że używamy do zarządzania
nasze bazy danych SQL, a następnie mogę wstawić że na stronie internetowej phpMyAdmin.
I że będzie wykonać.
>> Ale tak naprawdę chcę robić że na stronie PHP.
Więc jak to zrobić?
Cóż, używamy funkcji zapytań, które zasadzie, że zapytanie SQL wykonuje.
Korzystanie?
jako miejsce, możemy przejść w niektórych wartości do naszego łańcucha, że
chcesz zastąpić.
Więc może ja przechowywania różne Wartości w curr_house, które
reprezentuje aktualny dom że ja przechodzę.
Więc mogę przekazać, że jako miejsce ze znakiem zapytania.
I wtedy ja po prostu wykonać samo, co przedtem, z wyjątkiem
teraz jestem w PHP.
>> I zapytanie zwróci asocjacyjna.
I mam zamiar przechowywać go w rzędach.
Teraz zapytanie zawsze może się nie powieść.
Być może zapytanie SQL nie może wykonać ponieważ tabela nie istnieje.
A może, kolumna nie istnieje.
Coś poszło nie tak.
Cóż, w tym przypadku, będziemy chcieli, aby Upewnij się, że należy sprawdzić, czy
zapytanie zwróciło fałszywe.
I to za pomocą potrójnego równa pracy tam.
>> A ja przepraszam, co jest kolejnym Funkcja CS50, przekazując wiadomości.
A jeśli spojrzeć na nią przeprosić wszystkich naprawdę nie jest renderowanie apology.php.
Tak.
>> PUBLICZNOŚCI: Czy mógłbyś wyjaśnić, co to gwiazda robi między wybierz i od?
>> ZAMYLA Chandler: Tak, absolutnie.
Więc gwiazda pomiędzy wybierz i od Oznacza to, że chcę wybrać całość
Cały wiersz z moim stole.
Mogłem wskazano wybierz imię, rok, dom.
I chciałbym dostać tylko te trzy kolumny w moim stole.
Ale jeśli powiem SELECT *, wtedy będę dostać wszystko, co w tej kolumnie.
Potem pójdę cię w pierwszym z tyłu.
>> PUBLICZNOŚCI: Więc to jest nadal w SQL, prawda?
Czy to zapytanie czy jest to w PHP?
>> ZAMYLA Chandler: Jesteśmy w kwerendzie.
Tak to jest w PHP.
Tak więc za pomocą funkcji PHP zapytanie, jesteśmy wykonywania zapytania SQL.
>> PUBLICZNOŚCI: Czy jest coś nie w SQL wielkość liter, jak wybrać
lub czarodzieje lub dom?
>> ZAMYLA Chandler: Czy coś w SQL wielkość liter?
Wierzę, że tak.
Wierzę, że SELECT i FROM i gdzie są wrażliwe na wielkość liter.
Nie?
>> ROB BOWDEN: Tak, to jest odwrotnie.
Nazwy kolumn i środki stołowe, wszystkie te są wrażliwe na wielkość liter.
Ale każda z tych słów kluczowych MySQL, jak SELECT, FROM i WHERE, to nie są
wielkość liter.
OK.
Więc przeciwieństwem tego, co powiedziałem.
Więc wszystkie słowa kluczowe MySQL -
wybrać, z, gdzie - tych, nie jest uwzględniana wielkość liter.
Ale wszystko inne jest.
OK.
Ci z przodu.
>> PUBLICZNOŚCI: Jeśli mam $ wiersze w kategoriach więcej niż jeden wiersz, to znaczy, jest
po prostu staje się asocjacyjna?
>> ZAMYLA Chandler: Więc pytanie, czy wiersze ma więcej niż jeden wiersz w nim nie
stać asocjacyjna?
Tak to jest tablica stowarzyszeniowej Tablice już.
Tak więc, nawet jeśli jest tylko jeden wiersz wrócił, to trzeba było iść do
Indeks 0 z tego wyniku.
A potem trzeba było, że pierwszy wiersz.
Tak, Belinda?
>> PUBLICZNOŚCI: Kiedy używasz ===, Jest to jedyny przypadek?
Czy są inne?
>> ZAMYLA Chandler: Więc w tym przypadku, === jest porównanie różnych typów.
Przepraszam. === Jest porównanie że porównuje typy.
A następnie == porównuje we wszystkich typów.
>> PUBLICZNOŚCI: Czy możesz wyjaśnić, co wierszy jest w tej sytuacji?
Jest to wiersz danych?
>> ZAMYLA Chandler: W następnym slajdzie, jestem wyjaśnię co wiersze jest.
Więc jeśli nie masz nic przeciwko gospodarstwa się na tym.
A potem w plecy?
>> PUBLICZNOŚCI: Dla funkcji, takich jak kwerendy, renderowanie i przeprosić [niesłyszalne]?
>> ZAMYLA Chandler: pytanie, czy te funkcje - kwerendy, przepraszam,
i renderowanie -
są wspólne dla PHP.
Wśród nich są te, które CS50 napisał do pset7.
I Jay?
>> PUBLICZNOŚCI: Kiedy trzeba powiedzieć, $ _SESSION, Jest to, że tylko dla identyfikatorów?
Czy można powiedzieć, że tutaj?
>> ZAMYLA Chandler: Więc pytanie, kiedy używamy $ _SESSION, to był szczególny
zmienna globalna, że ​​używamy.
Tutaj zmienna ta będzie być lokalne do naszej funkcji.
Więc my po prostu deklarując Nowa zmienna.
>> PUBLICZNOŚCI: Jak przeprosić realizowane?
>> ZAMYLA Chandler: pytanie, jak realizowany jest przeprosić?
I myślę, że to jest rzeczywiście dość dobre praktyki dla wy pójść do
Sekcja functions.php i spojrzeć na przeprosić i zobaczyć, jak można mieć
zrobić to sam.
Tak że może zostawię was, ale tylko do powiedzieć, że jeśli spojrzeć na przeprosiny,
to przyjmuje wiadomość, którą złożone przeprosić, a następnie
sprawia, że ​​wiadomość.
Jeszcze jakieś pytania?
Uwielbiam pytania.
Tak trzymać je nadchodzi.
>> PUBLICZNOŚCI: [niesłyszalne]
echo lub print tam?
>> ZAMYLA Chandler: pytanie, nie może po prostu wprowadziły
echo lub print istnieje.
Tak, by coś zrobić nieznacznie.
Które zostały wydrukowane zapytanie nie powiodło się, że -
Cóż, teraz, że jesteśmy rzeczywiście w naszym kontrolerze.
Tak więc w rzeczywistości nie mają HTML ustawić tutaj.
Przepraszamy za rendering apologize.php rzeczywistości przekierowuje do apology.php.
OK.
>> Więc teraz, idziemy na zajęcia pytanie o to, co z wcześniej
naprawdę to wiersze.
Cóż, kwerenda zwróci Tablica rzędach.
I każdy rząd jest reprezentowany od tablicy asocjacyjnej.
Więc jeśli mam wykonywane jakieś zapytanie SQL i Mam zapisany wynik w rzędach, a następnie
stosując foreach, to tablica Nazwa jest pierwszy tam - wiersze.
A potem mam zamiar zadzwonić każdy wiersz w tam $ row.
>> Więc iterowanie, że mogę to dostęp do danego wiersza w kolumnie Nazwa,
rok kolumna, a dom kolumna.
Należy pamiętać, że nie byłby w stanie zrobić z wierszy, ponieważ indeks wierszy
Nazwa nie istnieje.
Wiersze jest tylko tablica Tablice asocjacyjne.
Więc masz dwa poziomy tam.
Gdy masz tablicę wierszy, trzeba dostać się do tego.
A następnie można przejść do kolumny.
To się jasno?
Tak, z przodu?
>> PUBLICZNOŚCI: [niesłyszalne] otworzyć Uchwyty na [niesłyszalne]?
>> ZAMYLA Chandler: Przepraszam?
>> PUBLICZNOŚCI: Otwarte wsporniki.
>> ZAMYLA Chandler: Są tutaj?
To pozwala mi m.in. że zmienna.
Tak.
>> PUBLICZNOŚCI: Podczas drukowania, jesteś drukowania do kodu HTML?
>> ZAMYLA Chandler: Tak.
Podczas drukowania, to tutaj jest w środku mój szablon teraz, tak
mój widok metody MVC.
Więc mam do drukowania HTML.
>> PUBLICZNOŚCI: Więc jeśli poszliśmy do dewelopera Po uruchomieniu tego narzędzia, mogliśmy
że faktycznie w kodzie?
>> ZAMYLA Chandler: To jest wielki pytanie, tak.
Więc jeśli poszedł do narzędzi deweloperskich W przeglądarce Firefox za pomocą Firebug lub
Chrome, to tak, można patrz odpowiedni kod HTML.
Więc nie pokaże $ row ["nazwa"].
Niezależnie od tego, by to pokazać Nazwa jest w tym wierszu.
>> PUBLICZNOŚCI: Tylko ogólny problem, co tr i td są zdefiniowane jako?
Dlaczego mielibyśmy [niesłyszalne]?
>> ZAMYLA Chandler: wiersz tabeli tr, Tabela następnie td kolumnę.
OK.
>> PUBLICZNOŚCI: Tak, to dane z tabeli.
>> ZAMYLA Chandler: dane z tabeli.
Tak.
>> PUBLICZNOŚCI: Jest to wiersz, w którym wiersz jest traktowany jak kolumny?
>> ZAMYLA Chandler: Przykro mi.
Czy możesz powtórzyć?
>> PUBLICZNOŚCI: Jak będzie można wizualizację wierszy?
>> ZAMYLA Chandler: Jak można wizualizować Wiersze w jakie sposób?
Mówisz o nich wiersze tutaj lub wiersze tr?
>> PUBLICZNOŚCI: Wiersze.
>> ZAMYLA Chandler: Te wiersze tutaj?
Chciałbym wizualizację tego, jak I wykonać moje zapytanie.
I mówi: OK, mam albo 0 do n ilość wierszy spełniających kryteria
że nie zapytał.
Więc mam trochę liczbę wierszy.
Więc wierszy, wiersze, sklepy $ każdy jeden z tych wierszy w tablicy.
Więc nawet jeśli jest to tylko jeden z nich, to jeszcze szereg wierszy, które to odpowiadają.
>> Tak więc, na przykład, jest podobnie jak przy naciągane
cache od użytkowników.
Oraz kryteria tam gdzie ID jest równe ID sesji.
Istnieje naprawdę tylko jeden wiersz które mogą odpowiadać.
Ale wciąż wiersze właśnie wrócił jeden wiersz.
Tak, że musisz iść do wierszy, indeks 0, cache index
rzeczywiście dostać się do pamięci podręcznej.
>> PUBLICZNOŚCI: Czy funkcja druku w echo to samo?
>> ZAMYLA Chandler: Tak.
Tak.
Wydrukuj echo samo.
>> PUBLICZNOŚCI: Czy pętla foreach Jedynym sposobem, aby wskaźnik na wiersze?
>> ZAMYLA Chandler: Czy pętla foreach Tylko w ten sposób, że można
iteracji wierszy?
Nie.
Można również użyć pętli, pod warunkiem, że wiesz, długość
z tablicy wiersz za.
>> PUBLICZNOŚCI: Czy możesz uzyskać do niego dostęp przy użyciu wiersza jako [niesłyszalne]?
>> ZAMYLA Chandler: Więc nie można uzyskać do niego dostęp tylko przy użyciu wiersza, jeśli nie masz
pod warunkiem, że pętla foreach nie zadeklarowały wiersz.
Tak.
Tak, w bieli.
>> PUBLICZNOŚCI: Więc co tr i td zrobić?
>> ZAMYLA Chandler: Więc tr i td są znaczniki HTML.
TR wskazuje początek z wiersza tabeli.
I każdy td wskazuje Nowa kolumna danych tabeli.
>> WIDOWNIA: Dla wzrokowa co rząd jest podobne, tylko sobie wyobrazić, SQL, jak
mają rząd.
[Niesłyszalne].
>> ZAMYLA Chandler: Tak.
To świetny punkt.
Można tylko wyobrazić, jak wiersze jak w tabeli programu Excel, tak
Wykaz rzędach.
OK.
Dobrze.
Więc teraz, że posunęliśmy się wybrać, jeśli nie ma żadnych więcej pytań, będziemy
przejść na wkładce.
Więc gdybym chciał wstawić do niektórych Stół i wstawić pewną kolumnę
wartości, mogę wstawić się do Ravenclaw w roku 7.
Ale czasami może być duplikat wartości, jak widzieliśmy w pset7 kiedy
zostały aktualizujemy nasze portfolio.
>> Tak więc w tym przypadku chcemy używać na DUPLIKAT KEY UPDATE, tak, że nie mamy
przechowywanie wielu rzędy same wartość, ale raczej je zaktualizować.
Wtedy faktycznie mamy aktualizację, co nie jest wkładka.
To tylko zmiana, gdzie aktualizacji w pewnej tabeli z danym
kryteria i wtedy wreszcie usunąć, która ma bardzo podobną rzecz.
>> PUBLICZNOŚCI: Czy mógłbyś w skrócie przejść duplikatu klucza?
>> ZAMYLA Chandler: Tak.
Zasadniczo tutaj, mam INSERT INTO Gringotta, jest, galeony, te wartości.
Ale ID, prawdopodobnie, jest kluczem Wartość ustawiona w tabeli MySQL.
Więc jeśli już, że ID skonfigurować, to nie mogę wstawić nowy wiersz.
Więc jeśli jeszcze nie istnieje, to muszę go zaktualizować.
W środku w białej.
>> PUBLICZNOŚCI: Więc insert, update, delete, i wybierz, to te wszystkie dostępne
lokalnie [niesłyszalne]?
>> ZAMYLA Chandler: Więc włóż, aktualizacji, usuwania i
wybierz są wszystkie zapytania SQL.
Więc gdy używasz SQL, musisz te dostępne.
>> PUBLICZNOŚCI: Powrót do przeszłości quizy -
nie było wątpliwości, że rozpatrywane jeśli miał stół i chciał
wstawić wyniki testów w jednym i włożeniu Twoje imię, więc nie pozwolę ci
[Niesłyszalne] wynik testu twojego przyjaciela.
Jak to zrobiłeś z wkładką?
>> ZAMYLA Chandler: Więc pytanie o poprzedni średniookresowy pytanie.
Nie jestem świadomy, które jeden jest teraz.
Więc może później, jeśli chcesz przyjść i pokaż mi, to mogę
na pewno daje wskazówki.
Ale mówiąc o wstawianie rzeczy, jak biorąc czyjś wynik po
nie powinno, porozmawiajmy o Ataków SQL injection.
Więc atak SQL injection jest zasadniczo gdzie ktoś bierze
Zaletą niskiej bezpieczeństwa sposób, że pacjent w danych.
>> Więc tutaj, podobnie jak w CS50 finansów, kiedy zalogowany, możemy wejść w
nazwa użytkownika w formularzu logowania, pierwsze pole tekstowe, a
następnie wpisać hasło.
Być może nasz kod PHP może wyglądać coś jak to, gdzie $ username
jest nazwa użytkownika po danych i hasło to hasło po danych.
A potem po prostu wykonać nasze zapytanie, powiedzmy, OK, dobrze, nasze zapytanie będzie
wybierz z naszych użytkowników, gdzie nazwa użytkownika to
jeden, że złożone.
A hasło jest hasłem, co oznacza, że ​​hasła pasujące.
>> Teraz, co jeśli zamiast faktycznie Składając rzeczywistego hasła, jak
12345 i zgadywania na zęba, który mówi hasło i próbuje włamać się ich
konto, co zrobić, jeśli zamiast one złożone w tym.
Mogli wpisać może Domyślam się hasłem.
A następnie będą one zakończyć cytat następnie wpisać lub 1 = 1.
To by chodzić bezpośrednio do SQL zapytanie wyglądać mniej więcej tak.
Wybierz z użytkownikami, gdzie nazwa użytkownika = zęby i hasło
lilia lub równa 1 = 1.
>> Więc albo hasło ma za prawidłowe lub 1 = 1,
które jest zawsze prawdziwe.
Więc w tym przypadku, w zasadzie, użytkownik może skorzystać z tego i po prostu zaloguj
sami i siekać czyjeś konto.
Więc dlatego chcemy uniknąć ktoś mający to zrobić.
Ale na szczęście, funkcja zapytanie przez przechodząc w zastępcze odbędzie
troska o to za Ciebie.
Ponadto, będziesz zazwyczaj nie chcą faktycznie złożyć hasła
sami.
Dlatego zakodowane lub zaszyfrowane je w CS50 finansów.
>> PUBLICZNOŚCI: Quiz mówił przeszłości o ciągi ewakuacyjne MySQL.
Czy musimy się o to martwić?
>> ZAMYLA Chandler: To jest dobre pytanie.
Ciągi ewakuacyjne MySQL jest zdecydowanie Funkcja ta, którą zastosowano w naszym zapytaniu.
Ale na pewno wygląda na to.
Powiedziałbym, że to uczciwa gra wiedzieć że trzeba by nazwać
funkcjonować na sznurku.
Tak, Belinda?
>> PUBLICZNOŚCI: Skąd wiesz, kiedy jest pojedyncze cudzysłowy lub podwójne cudzysłowy?
A także, czuję się jak w wykładzie można wspomniał coś o nie mając
[niesłyszalne] lub coś lub drugi apostrof na końcu.
Myślę, że zauważył, że w wykładzie jesteś ma mieć apostrof 1
i wtedy nie ma apostrof czy coś.
>> PUBLICZNOŚCI: [niesłyszalne].
>> PUBLICZNOŚCI: jest to ostatni singiel cytat tam w tym drugim polu
Nie powinny być.
[Niesłyszalne]
Bo kiedy się, że ostatni singiel Cytując się i dopasować je do zawartości
gdzie hasło jest, że jeśli masz zapytanie, jest w pojedynczy cudzysłów
koniec już.
Chcesz używać tego pojedynczy cudzysłów jak ten, który jest skierowany w jednym
[Niesłyszalne].
Więc co tak naprawdę w tym tekście skrzynka nie powinny mieć.
>> ZAMYLA Chandler: Ja zmienić.
OK.
Jeśli nie ma żadnych pytań, a potem będę przekazać go do Józefa, aby porozmawiać
o JavaScript, et cetera.
>> [Aplauz]
>> JOSEPH ONG: Więc są uruchomione trochę w tyle.
Więc jeśli masz odejść, to jest OK.
Ale prosimy o utrzymanie głowy w dół jeśli jesteś w środku, więc
nie zablokować kamerę i użyć zjazd z powrotem, jeśli trzeba.
Jestem Józef w drodze.
Cześć.
Test, test.
Dan, jest to, że dobry?
Fajne.
>> Więc film będzie również pisał online dla tych, które
już iść.
Niewygodne.
OK.
Więc ocena quizu.
Jest cat.
Teraz JavaScript, który może nie jest jak aww dla niektórych z was.
OK.
Więc to jest po pierwsze, przypomnieć, z Zamyla.
Pamiętaj, że PHP jest działać na serwerze.
I wiele razy, chłopaki napisali pętle w PHP wydrukować HTML, prawda?
Tak kiedyś, że kod jest wykonywany, że Wyjściowych HTML wydrukowanie
zostaje wysłany do użytkownika.
I raz tak się dzieje, może nie więcej PHP być uruchamiane, chyba że odświeżyć stronę, z
Oczywiście, co reexecutes PHP.
Ale po wydrukować tym HTML, Nie można przejść w dowolnym miejscu.
>> Tak że HTML jest przesyłany do użytkownika, która jest tu przeglądarki, gdzie
Milo jest za pomocą komputera.
I tak dobrze, jest kilka rzeczy, raz wysyłamy HTML do użytkownika.
Czasami chcemy zrobić coś podobnego po kliknięciu na coś, chcemy
Alert pudełka do pop-up, te rodzaje interakcje, jak po naciśnięciu
klucz, po kliknięciu na coś strona, chcę coś się wydarzy.
Cóż, nie można reexecute PHP raz, że kod HTML jest ustawiony.
Więc jak to zrobić?
>> Wprowadzamy nowy język o nazwie JavaScript, który działa w przeglądarce
że pozwala robić rzeczy, do HTML po otrzymaniu
je z serwera.
I dlatego nazywamy to po stronie klienta język programowania.
To działa na komputerze -
klient.
Wszelkie pytania na temat, który do tej pory?
Że paradygmat ma sens dla ludzi?
OK.
Dobry.
Dobrze.
Tak więc pierwszą rzeczą, aby pamiętać, jest obsługa JavaScript nie jest PHP.
>> Mają trochę inną składnię, którym pojedziemy do.
I mają bardzo różne zastosowania.
JavaScript, ponownie, na swój Przeglądarka dla klienta.
Serwer działa gdzieś na cudzym komputer, który wysyła informacje
do ciebie, prawda?
Jeśli więc prosimy napisać kod PHP na pytania egzaminu, nie pisać
JavaScript i vice versa.
Będziesz tylko tracić punktów, a to nie będzie prawda.
>> Więc przejdźmy do niektórych Różnice składniowe -
JavaScript lewej i PHP na prawo.
Pierwszą rzeczą, jaką można zauważyć w JavaScript, deklarujemy zmienne z
słów kluczowych var -
V-R. PHP używany znak dolara, jak Zamyla omówione wcześniej.
Jeśli chcesz zadeklarować asocjacyjną Tablica widzimy znajomą na składnię
prawa strona z PHP.
Po lewej stronie, natomiast użyć nawiasów klamrowych.
A następnie klucze są po lewej stronie.
Wtedy masz dwukropek.
I wtedy masz wartości że chcesz.
>> Tak to jest jak można to zrobić w PHP po prawej stronie z tym drugim
linia, która rozpoczyna się Milo.
I to w jaki sposób to zrobić na lewej strony w JavaScript, jeśli chcesz
co nazywamy obiekt.
I obiektów w JavaScripcie są zaledwie Tablice asocjacyjne.
Więc jeśli chcesz uzyskać dostęp do pól, w PHP można użyć tej składni wspornika.
I w ten sposób, można przypisać to właściciel pola do Lauren.
>> Cóż, w JavaScript, jeśli ktoś chce dostępu do pola i zmienić go, można
użyć składni z kropką.
Możesz także użyć składni wspornika.
Ale nie można używać kropka składni w PHP.
To nie będzie działać.
To działa tylko w PHP.
I wreszcie, aby wydrukować rzeczy konsoli, należy użyć console.log, które
chłopaki używają dużo w pset8.
Możesz console.log że.
>> Jeśli chcesz wydrukować tablicę w PHP, trzeba użyć druku r.
I po prawej stronie, widać i mieszania łączenie ciąg tam.
Ktoś zapytał wcześniej.
Używam Plus w JavaScript.
Jeśli chcę coś łączyć w PHP, używam kropki.
Są różne.
Jeśli piszesz kod PHP, nie używaj plus.
Jeśli piszesz JavaScript Kod, nie pisać kropkę.
To będzie źle.
I będziesz smutny.
>> Więc składni różnice.
Znać składnię, bo jeśli trzeba napisz pytanie i użyć składni
z niewłaściwym języku to nie będzie działać.
I to będzie źle.
Więc porozmawiajmy o niektórych kontroli różnicy przepływu, jak korzystać
pętle w każdym z nich.
Zamyla podszedł z prawej strony.
Rzeczy na prawej stronie powinny być znane.
Przyjrzyjmy się po lewej stronie.
>> W przypadku korzystania przez n pętli w JavaScript, zmienna pętli, var i tam,
Pętla na klucze tablicy.
Więc widać nazwę, dom, i rolę.
Gdybym console.log i, mam nazwisko, dom, i rola.
To są klucze.
W JavaScript, pętla foreach przechodzi na wartości tej tablicy.
Tak więc można zauważyć, że są zarówno ja.
Ale tutaj na stronie PHP, drukuje z Milo, CS50 i Mascot.
To są wartości w PHP.
>> To są, jak te dwa są różne w różnych językach.
Więc jeśli używasz foreach pętla, nie zakładamy, że
daje klucze.
A jeśli używasz dla n pętli, nie Zakładamy, że daje wartości.
Czy to ma sens tak daleko?
Następny slajd jest zamiar pokazać, w jaki sposób można uzyskać dostęp do przeciwnego w
każdego z nich.
>> Cóż, jeśli masz klucz w JavaScript i chcesz, aby wartość z,
po prostu indeks do Tablica z tym.
Milo z I tak będzie, co chcesz - wartości.
Jest to inna składnia w PHP.
Jeśli naprawdę chcesz to wiedzieć, nie wiem pokazał, że mamy jeszcze do Ciebie.
Ale jeśli jesteś zainteresowany, możesz skorzystać Ten dodatkowy składni po prawej
strona, która będzie rzeczywiście pozwalają uzyskać klucze w PHP, kiedy używasz
Pętla foreach.
Więc po prostu trochę ciekawostek jeśli jesteś zainteresowany.
>> Więc to jest tylko do wykazania Różnice między tymi dwiema pętlami.
Nie mieszać je, gdy jesteś programowania pytanie.
Wszelkie pytania o to.
Fajne.
Dobrze.
JavaScript obiekty.
Rozmawiałem o nich.
Są jak asocjacyjnych.
Jedna rzecz, chciałbym Ci zwrócić uwagę, tutaj jest to, że napięcie w asocjacyjną
Tablica może być coś w JavaScript.
>> To może być nawet funkcja, jak tam.
Mam funkcję, która jest wartością klucza.
A jeśli chcę zadzwonić tej funkcji, Ja po prostu przejść kory.
A następnie umieścić nawiasy po tym.
I to działa.
Więc jakieś pytania?
Nie?
OK.
Dobry.
JavaScript, takich jak PHP, jest luźno wpisane.
Co to znaczy?
>> To ma rodzajów.
Ale kiedy zadeklarować JavaScript zmienna, można powiedzieć var ​​i.
Nie mów.
To nie jest rzeczą.
Wystarczy powiedzieć, że jest zmienna.
A następnie będą obsługiwać JavaScript typy pod maską dla Ciebie.
Możemy swobodnie konwertować między Typy z tego powodu.
Więc zaczyna się jako liczbę w tym przypadku.
A potem mam ciąg.
A ja dodam do niego.
I przypisać go do I.
>> Więc na tej pierwszej linii, i jest liczbą.
W drugiej linii, i teraz staje się Ciąg po zrobić zmiany przeznaczenia.
I tu, po prostu łącząc że liczba na string.
Więc widać, że mimo, że był całkowitą w pierwszej części, to jest rodzaj
lubią przekształcono w łańcuch, a następnie dodawane
na tego łańcucha Hello.
A więc to, co mam na myśli przez luźną pisania.
To, że można konwertować pomiędzy typy bardzo łatwo.
I nie rzucać ostrzeżenia co lubisz C robi.
>> Tak i teraz zawiera komentarzy 123 do ciągu.
Następny.
Możemy również swobodnie porównać między typami.
Więc jeśli po prostu użyć ==, bardzo jak w PHP, JavaScript
robi coś podobnego.
Łańcuch 123 jest taki sam jak numer 123 po użyciu dwu równych.
Kiedy stosować potrójne równych, to również chce się upewnić, że
typ jest taka sama.
Tak dlatego, że jest i że jest ciąg liczba, choć oboje
123, podczas korzystania z potrójnym taniej, można uzyskać fałszywe.
W przypadku podwójnego równa, masz prawdziwe, ponieważ nie równości podwójne
dbać o rodzaju.
Potrójne dba o równości typu.
Pytania?
OK.
>> I jeszcze jedno o JavaScripcie jest zakres jest rodzajem globalnego, chyba że jesteś
w funkcji.
I to działa tak samo sposób w PHP faktycznie.
Warto więc przejść przez ten przykład.
I zestaw I do 999.
A następnie przejść do tego na pętli.
Więc jeśli mam drukowania I w tym dla pętla, spodziewam 0, 1, 2, 3, 4.
I dostać się do i = 4.
Zwiększa to teraz do 5 w koniec pętli for.
A potem wybucha z pętli, ponieważ nie spełniają
warunkują już.
>> Co myślisz, że obok console.log wypisuje?
Więc to, co by to zrobić w C. W C, bo jeśli masz jak var i poza
i masz var i wewnątrz pętli, jak do pętli, to jest takie, że czyni
to scoped że dwa I są różne.
W JavaScript, to będzie po prostu traktować jako ten sam i.
Mam 5, bo to była wartość po odszedł z pętli.
Więc tych, są takie same ja.
Czy to ma sens?
>> Cóż, ma to sens z Stanowisko JavaScript.
Ale sam paradygmat nie przenieść na C. Mają
różne zasady dotyczące zakresu.
Tak.
>> PUBLICZNOŚCI: [niesłyszalne]
poza funkcją [niesłyszalne]?
>> JOSEPH ONG: Więc na zewnątrz, co funkcja?
Więc mogę, że w ciągu sekundy.
Więc wywołać foo (i).
To przechodzi I w Foo, przyrosty go, a następnie rejestruje je.
Więc było to 5.
Tak więc staje się to 6.
Ale to, co mówię jest że w tej funkcji.
Ponieważ jest to parametr, to zawężona do tej funkcji.
Więc kiedy już rzeczywiście się z tego funkcji, to teraz pójdzie
powrót do starej i.
, Że tylko dlatego, że jest objęty zakresem jest w funkcji.
I mamy zakres i funkcje.
Ale nie mamy możliwości na zewnątrz funkcji w JavaScript.
Czy to ma sens?
Tak.
Pytanie.
>> PUBLICZNOŚCI: Same [niesłyszalne]?
>> JOSEPH ONG: Więc tak.
W PHP, to jest ten sam rodzaj rzeczy.
Jest niewielki subtelność faktycznie.
Ale możesz poprosić mnie o że po przeglądzie.
Tak naprawdę nie musisz wiedzieć że subtelność na zagadkę.
Dla wszystkich zamiarów i celów, jak zmienne globalne i PHP, chyba że
są w funkcję, sam rzeczą w JavaScript.
Tak.
>> PUBLICZNOŚCI: Dlaczego jest to dozwolone w JavaScript a nie gdzie indziej?
>> JOSEPH ONG: Więc dlaczego jest to dozwolone w JavaScript, a nie w C?
To jest po prostu ten, kto wymyślił JavaScript zdecydował, że to było OK
JavaScript.
Tak to jest jak język programowania Konwencja, jak byśmy powiedzieli.
Tak.
>> PUBLICZNOŚCI: Więc dlaczego poszło od 6 do 5?
>> JOSEPH ONG: Więc poszedł z 6 do 5, bo kiedy zdałem I w foo, że
i wewnątrz foo jest zawężona do foo, ponieważ zakres istnieje w funkcji w
JavaScript.
Ale kiedy się stąd wydostać, ponieważ została zawężona do funkcji, jestem
stosując regularne I, który był w środku Reszta sterowania przepływem.
Ma sens?
Czy mogę przejść?
Dobrze.
Fajne.
>> Akceptacja to obiekty przepuszcza się przez odniesienie.
Wiesz, jak kiedy przechodzą tablica w C można
faktycznie modyfikować tablicy?
To samo w JavaScript.
Gdybym przekazać obiekt, w tym przypadku, przeszedł Milo do tej funkcji catify.
Milo zaczyna.
Jego nazwa jest Milo Banana.
I przekazać ten obiekt do funkcji ponieważ jest to obiekt, asocjacyjne
tablicy w JavaScript.
>> Kiedy wykonać operację w tej funkcji, to będzie
faktycznie zmienić obiekt.
Tak to się stanie, tylko dla obiektów w JavaScript, tak jak to się dzieje
na tablicach wewnątrz nazwy C tak Milo rzeczywiście się kot teraz.
Czy to ma sens?
Tak to działa tylko dla obiektów.
Obiekty są przekazywane przez referencję.
Tak.
>> PUBLICZNOŚCI: Więc mówisz, że W przeciwieństwie do zmiennego i.
>> JOSEPH ONG: Tak.
Która zmienna i tylko liczba, prawda?
To tak jak w C, gdy mijamy liczby całkowitej, to sprawia, że ​​kopie.
I kiedy przekazać tablicę, to rzeczywiście zmienia rzeczywistej tablicy w
C. To samo dzieje się z Obsługę JavaScript w tym przypadku.
Dobrze.
I następny, Milo jest smutny, bo on jest teraz kot.
To był rzeczywiście Milo po niektóre wycieczka do weterynarza.
>> Jak więc używać JavaScript na stronie internetowej?
Możemy umieścić go.
Jest to kod HTML ze znacznikami striptizem.
Więc mam tam tagi taśmy.
A następnie umieścić jakąś JavaScript kod w tagach skryptu.
A następnie wykonuje to.
Po prostu robię to tak, że to nazywany inline JavaScript.
To trochę brudny, ponieważ JavaScript jest rzeczywiście w HTML.
>> Lepszy sposób to zrobić, o wiele ładniejszy, jest pisać w JavaScript
Plik zewnętrzny, a następnie dostarczyć tag skrypt ze źródłem.
I to będzie do tego pliku JavaScript i odczytać kodu JavaScript z
że zamiast pliku.
I w ten sposób, nie trzeba dużo JavaScript na początku swojego
Plik HTML, co sprawia, to naprawdę brudny.
Wystarczy umieścić go gdzieś indziej.
A następnie odczytuje go stamtąd.
Zrobił to ma sens?
>> Kwestie stażu.
W tym szczególnym przypadku, Skrypt jest przed ciałem.
Więc kiedy wykonać, że nie ma nic w organizmie jeszcze.
Może to będzie trochę więcej Wyczuwam, kiedy pokazać następną część.
W tym przypadku, skrypt przychodzi po div.
Więc rzeczywiście wydaje dz na pierwsze strony.
Tutaj, w tym małym czerwonym kółku, widzisz pojawia tekstu.
I wtedy pojawia się alert.
>> W pierwszym przypadku, ponieważ skrypt było przed dz,
Alarm pojawia się w pierwszej kolejności.
I wtedy pojawia się po dz można zamknąć okno.
Więc wykonanie liczy.
Będziemy więc mieć to na uwadze.
To jest ważne w trochę.
OK.
Tak dobrze, jak można czekać, aż Cała strona jest ładowana, a następnie przed tobą
wykonać jakiś kod?
Dojdziemy do tego trochę nieco później też.
Ale po prostu zachować to miejsce docelowe Sprawy w umyśle do kiedy
się do innego slajdu.
>> Tak więc mamy do DOM teraz.
I to, co jest DOM?
Więc jeśli spojrzeć na HTML kod, to tylko kilka tekstu na ekranie.
Więc w jaki sposób JavaScript wiedzieć, że jest to element HTML?
Więc musimy mieć trochę pamięci reprezentacja to
Struktura, że ​​mamy.
I kiedy mamy to w pamięci reprezentacja w JavaScript, nazywamy
że DOM.
I to jest właśnie sposób, w jaki ludzie zdecydowali że powinniśmy reprezentować ten
Struktura HTML jak.
>> I co to DOM wygląda?
Cóż, w reprezentacji pamięci, bierzemy ten tekst.
I zwracamy go do pamięci reprezentacja.
Więc to jest HTML.
Więc najpierw dowiedzieć się, że każdy DOM drzewo ma dokumentu.
To wygląda jak drzewo.
I dokument zawiera kod HTML tag, faktycznie wszystko
wewnątrz tego teraz.
Znacznik HTML, ma dwoje dzieci.
Ma głowę.
Że głowa, jeśli spojrzeć na wgniecenia tam, jak to jest skonstruowane
między bliskich znaczników, Głowica ma dziecko.
Dziecko jest tytuł.
Dokładnie.
>> Teraz mamy dziecko ciała.
A następnie, że ciało ma Dziecko nazywa rodzina.
I że rodzina ma troje dzieci -
Najstarsza, środkowa i najmłodszych.
Tak więc należy wiedzieć, jak narysować wykres tak, gdy pytamy, jak
narysować schemat, gdy dajemy Ci HTML z lewej strony.
Wie, jak produkować drzewa DOM.
I wewnątrz z tych rzeczy, nie tylko jakiś tekst, który mam reprezentowane
jako małe kwadraciki.
>> Czy to aby struktura drzewa DOM sens, a co jest DOM?
Więc co ma p oznacza?
Tu, tam p w tym tagu reprezentuje
pkt tag HTML.
Więc można to sprawdzić.
Ale to oznacza, że ​​jest jakiś miejsca na tekst.
I to ma jakiś domyślny CSS stylizacji, bo to tag pkt.
Ale tak naprawdę nie martw się o część za dużo.
Po prostu wiem, że to symbol zastępczy na tekst.
Tak.
Pytanie?
Tak.
>> PUBLICZNOŚCI: Wystarczy wspomnieć CSS.
Rodzina i hash hash wszystkie rzeczy jest w zasadzie
stanowiących identyfikatory w CSS?
>> JOSEPH ONG: Tak, dokładnie.
Wezmę to, co te skróty myśli na sekundę.
Kiedy Angela podeszła CSS, ona mówił o selektorów CSS.
Są to selektory CSS, które ona mówi.
Tak, Rob?
>> ROB BOWDEN: Chciałbym również skomentować że DOM wewnątrz tagu tytułu
także węzeł tekstu.
>> JOSEPH ONG: Prawo.
Tak wewnątrz tagu tytułu, Mam DOM tekstu.
Tak naprawdę, to tytuł powinien mieć jak małe pole spadając z nim również.
Ale to nie ma znaczenia, zbyt wiele w tym przypadku.
Tak naprawdę nie obchodzi węzłów tekstowych, jak je nazywamy, za dużo.
OK, mamy.
Najwyraźniej mamy.
I będzie to naprawić, gdy Przesłać go ponownie.
Czy to ma sens?
>> Więc w jaki sposób pracować z DOM?
Zawsze, gdy masz do czynienia z DOM w JavaScript, występują dwa etapy.
Wybranie elementu DOM.
I wtedy robić rzeczy do niego.
Więc w tym przypadku, abstrakcyjnie, mam wybrany element środkowy.
A następnie przykład robi rzeczy do niej będzie się zmieniać tekst.
Że kiedyś Bob.
Teraz, co zrobiłem to ja zmienił Bob z Milo w tym przypadku.
>> Jak więc faktycznie jest?
Jak to robimy wybieranie?
I jak mamy robić rzeczy do co raz podjęliśmy ją?
Cóż, sposób wy nauczyli go w tej klasie jest coś, za pomocą
nazywa jQuery.
Więc co jest jQuery?
jQuery to biblioteka, która sprawia, JavaScript łatwiej napisać.
Więc ktoś wziął czas i napisał jQuery.
>> jQuery jest rzeczywiście napisane w JavaScript.
A następnie dlatego, że zrobił to, teraz mają całą masę funkcji, które
możemy użyć, które czynią nasze mieszka bardzo proste.
Więc jakie są niektóre rzeczy robi?
To sprawia, że ​​wybierając elementy łatwiejsze.
To sprawia, że ​​zmienia się HTML, dodanie klas łatwiejsze.
To sprawia, że ​​Ajax łatwiejsze.
Dojdziemy do tego za chwilę.
>> I to jest analogiczne do bibliotek C.
Więc m.in. , można się strlen.
Otrzymasz strcpy, wszystkie te rzeczy.
Kiedy m.in. jQuery, masz ładny sposoby zaznaczania elementów do zmiany
rzeczy, i tak dalej.
Otrzymasz dodatkowe funkcje, które JavaScript nie daje.
Więc nie jest obsługa JavaScript jQuery.
jQuery to biblioteka, która jest napisana w JavaScript sprawia, że ​​JavaScript
łatwiej napisać.
>> Więc nie jest jQuery programowania język.
Ale obsługa JavaScript jest.
zrobić.
Czy masz swoją terminologię prawo.
Masz pytanie?
Tak.
Czy to pytanie?
Dobrze.
Więc jak można użyć jQuery?
Cóż, kiedy piszesz niektóre Kod JavaScript i dołączyć
jQuery na początku pliku jako plik skryptu, należy użyć znaku dolara
teraz aby uzyskać dostęp do jQuery.
A jest różny od znak dolara w PHP.
>> To ten sam symbol, który pisania na klawiaturze.
Ale znaczy bardzo różne rzeczy.
Znak dolara w PHP oznacza to, Oto jak zadeklarować zmienną.
W JavaScript, kiedy już zawarte jQuery, to oznacza dla jQuery.
Więc miej to na uwadze.
Więc jak możemy wybrać elementy DOM?
Cóż, kiedy robisz to brzydkie JavaScript sposób można uzyskać dostęp do
udokumentować zmiennej globalnej.
A następnie dostać się elementu przez ID rodziny.
To jest naprawdę długi i rozwlekły i nie bardzo miły.
>> Czy można uzyskać wszystkie elementy że są tag p.
Że działa zbyt w JavaScript.
Ale my nigdy nie pokazał Ci składnia zbyt wiele.
Co nam pokazał pan był jQuery.
Tak, że cała się tam, że selektor wyrażono w JavaScript po prostu staje się
kondensuje się do tego bardzo ładny dolara zaloguj rodzinę hashtag.
I $ p, tylko gdzie to jest tak.
Jeśli chcesz wybrać wszystkie tagi p wewnątrz rodziny, stawiamy spację
między nimi.
A teraz, mamy wszystkie p tagi wewnątrz rodziny.
>> I wygląda znajomo?
Cóż, Angela mówił o Selektorów CSS.
Daj mi chwilę.
I tak, aby wybrać element, po prostu użyć tego samego, co ty
by zrobić z selektora CSS.
Jeśli umieścisz hash przed o tym, że wybranie przez ID.
Kropka wybiera według klas.
Jeśli po prostu nie mają nic skróty lub kropki, to wybiera te tagi.
Pytania.
Tak?
>> PUBLICZNOŚCI: Kiedy używamy kropki w naszym HTML, jest to, że nie jQuery?
>> JOSEPH ONG: Dot w naszym HTML jest rzeczą JavaScript.
To nie jest rzecz, jQuery.
Sposób wy nauczyli go jQuery jest w użyciu. html.
A potem to, co minęło HTML będzie.
Więc mogę tylko, że w Drugi rzeczywiście.
Tak jak robimy rzeczy do elementu raz wybraliśmy go?
Więc to jest przykładem wybraniu elementu.
Więc teraz, że chcemy robić rzeczy do niego.
>> Więc w tym przypadku, pozwól mi wrócić do poprzedniego slajdu.
To był Bob wcześniej.
I chcę to zmienić wewnątrz HTML do Milo.
Więc wywołać funkcję HTML od elementu.
Że funkcja HTML Sposób elementu.
A potem dać to, co Chcę HTML być.
I to, co jest po prostu zastępuje wewnątrz że znak z co daję.
Tak.
Pytanie?
>> PUBLICZNOŚCI: hashtag jest używany tylko dla jQuery.
[Niesłyszalne]
nie będziemy używać.
>> JOSEPH ONG: Tak, dokładnie.
Ale nie martw się zbyt wiele o czystym JavaScript.
Chcę tylko, żebyś faceci skupić się na jak by zrobić z jQuery, ponieważ
że będzie to ważne część na quiz.
Prawo.
Dokładnie.
Więc widać, że hashtag, tak aby odpowiada na wybór elementowi
średnim ID powodu tego tagiem.
Hashtag oznacza identyfikator.
I ten element ma identyfikator środku.
Więc to jest element możemy wybrać.
>> PUBLICZNOŚCI: [niesłyszalne].
znak dolara hashtag [niesłyszalne]?
>> JOSEPH ONG: Więc nie ma.
Pytanie można użyć. Wartość.
I. Wartość działa tylko na elementy które są wejściami.
W jQuery, byłoby . Val, nie. Wartość.
Więc mam do małego przykład, że Demonstruje to wszystko w połączeniu
w drugim.
Ale myślę, że to służy mały fragment ma sens dla ludzi, do tej pory.
Chcesz zmienić HTML, wywołać metodę HTML.
Tak.
>> PUBLICZNOŚCI: Czy możesz wyjaśnić ponownie metoda?
>> JOSEPH ONG: Więc metoda jest po prostu Funkcja, która należy do jednej, w tym
przypadek, jeden z tych elementów DOM, bo widzisz, że
wybiera pierwszy element.
Właściwie, pozwól mi użyć myszy.
Wybrałem pierwszy element.
A potem zadzwoniłem ten HTML funkcjonować, że miał.
A ponieważ ta funkcja należy do to coś, nazywamy to metoda.
To jest tylko nazwa na to.
Powiedz to jeszcze raz.
Więc pamiętaj, że wybrana Element teraz.
I umieściliśmy go w środku element zmienny.
Poprawić?
>> Tak więc, gdy chcemy zmienić na HTML w środku, bo to był Bob wcześniej,
Aby zmienić ten tekst, aby Milo.
Tak nazywamy HTML.
I powiemy co HTML wewnątrz że element powinien być teraz.
I tak to się zmienia go Milo, bo dałem Milo.
>> PUBLICZNOŚCI: Tak pracują razem.
[Niesłyszalne]
>> JOSEPH ONG: Tak, tak.
Pracują razem.
Tak więc jeden z nich wybiera ten pierwszy element.
A druga ma coś w tym jest.
Tak.
>> PUBLICZNOŚCI: [niesłyszalne].
Jeśli ta metoda jest inna niż w HTML masz metodę równego rzeczywista.
>> JOSEPH ONG: Tak.
Który jest różny sposób.
I możemy pokryć, że w ciągu sekundy gdy mamy na przykład.
Chcę się upewnić, że możemy przyspieszyć bo kończy nam się czas.
Ale Zabrakło mi drogę na czas.
OK.
Fajne.
Więc jeśli chcesz dodać klasę, jest także metoda klasy dodatek.
To tylko przykład tego, co można zrobić z jQuery.
Że po prostu dodaje klasę.
>> Jeśli chcesz go usunąć, możesz zadzwonić usuń.
To tylko kolejny, co można zrobić.
Więc więcej przykładów rzeczy, które możesz zrobić.
Więc może po prostu umieścić go w Najwięcej w ten sposób?
Najmłodszy usunąć.
Gdybym tylko wykonać ten JavaScript na Najwięcej z mojego pliku, który będzie działać?
Prawo.
Ponieważ środkowa jeszcze nie istnieje.
Więc to nie będzie działać.
Kolejność wykonywania.
Idzie do góry w pierwszej kolejności.
Co?
>> PUBLICZNOŚCI: Najmłodsze jeszcze nie istnieje?
>> JOSEPH ONG: Tak.
Najmłodszy jeszcze nie istnieje.
Dokładnie.
>> PUBLICZNOŚCI: Powiedziałeś średnim.
>> JOSEPH ONG: Przepraszam.
Najmłodszy jeszcze nie istnieje.
A druga rzecz, to nie mam wliczone w jQuery
plik zapytać skryptu SRC.
Tak, że nie będzie działać.
Właściwie, to nie zrobiłem w następny slajd, który jest
powinien ustalić, że albo.
Ale sposób, w jaki to zrobić jest obsługa JavaScript jest kierowane przez zdarzenie.
Więc co możemy zrobić, to używamy zdarzenie handler aby tak się stało.
A więc wybierz dokument zestaw pierwszy.
I powiedzieć, OK, gdy dokument jest gotowy, pozwól mi uruchomić funkcję.
Więc to wszystko, środki składniowe.
>> Wybrałem ten dokument.
Teraz, gdy dokument jest gotowy, uruchomić funkcję.
I tak tu, gdy dokument jest gotowy, co oznacza, HTML ma wszystko
załadowany, a następnie uruchomić funkcję usuwający tego elementu.
A więc teraz, kiedy uruchomić tę funkcję że przeszedł w gotowy, jestem
gwarantuje, że wszystkie HTML na strona będzie istnieć pierwszy.
Tak.
Pytanie?
>> PUBLICZNOŚCI: Co to jest słowo kluczowe wydarzenie w funkcji?
>> JOSEPH ONG: Więc to kluczowe wydarzenie w Funkcja ta jest po prostu parametr
zostanie przekazany do funkcji w każdym razie.
To jest po prostu coś, co można dostać za darmo.
Gdy używasz ładowarki w kluczowych pset8, że impreza może ci powiedzieć, na
Przykładem, który klawisz został naciśnięty na.
W tym przypadku, dla gotowej wypadku to nie jest naprawdę bardzo przydatne.
Ale dla kluczowego wydarzenia w dół, jest to bardziej przydatne, ponieważ można poznać, które
klawisz został naciśnięty przez dostęp klucz Kod z tego obiektu zdarzenia.
Poprawić?
Czy to ma sens?
OK.
Tak.
Pytanie?
>> PUBLICZNOŚCI: Więc można umieścić tag skrypt niżej?
>> JOSEPH ONG: Więc tak.
Można umieścić skrypt oznaczyć niżej.
Ale to po prostu staje się naprawdę brudny.
I lubimy scentralizować wszystkie naszego kodu w jednym miejscu.
A to pozwoli nam to zrobić.
Zapamiętaj wcześniej powiedziałem jest ładniejszy sposób, aby zapewnić, że elementy
na stronie przed wykonaniem kodu?
I to jest po prostu dobry sposób chcesz osiągnąć.
>> PUBLICZNOŚCI: [niesłyszalne].
>> JOSEPH ONG: Tak.
Nadal będzie musiał, prawda?
Bo pamiętaj, że zawarte złożyć na górnej stronie.
Więc to będzie pierwszy do wykonania przed można dostać się do dolnej części strony.
OK.
Więc można również dodawać różne typ obsługi zdarzeń.
Ten właśnie przetwarza kliknięć.
Po kliknięciu na najmłodszych, a następnie to pojawiają się z wpisem.
To jest po prostu inna Typ zdarzenia.
W przeciwieństwie do gotowego razie teraz używać zdarzenie click, gdy pojawi
kliknie na element.
>> A więc w tym przypadku należy pamiętać, kliknięcia Ładowarka jest dołączony do najmłodszych.
Tak to się dzieje tylko, gdy I kliknij na najmłodszych.
I w drugim przypadku, gotowej przyłączono do dokumentu.
Tak więc oczekuje dokumentu być gotowy.
Ma sens?
Myślę, że mogę iść dalej.
Tak.
Pytanie?
>> PUBLICZNOŚCI: [niesłyszalne].
w tym przypadku można użyć [niesłyszalne].
>> JOSEPH ONG: Tak, ponieważ w tym sprawa, muszę czekać na najmłodszych
Element pierwszy pojawia się na ekranie przed mogę dołączyć obsługi kliknij, aby
to, co jest, dlaczego umieścić go wewnątrz z gotowy dokument.
OK.
I następny, więc to jest duży przykładem jak można połączyć wszystko.
To jest tylko przykład walidacji formularza widziałem w wykładzie.
Więc weź to krok po kroku, jak przejść przez to.
I to będzie zupełnie OK.
Wystarczy przeczytać ją od góry do dołu.
>> Mam formularz na dole.
Kiedy dokument jest gotowy, załączyć złożyć obsługi do postaci, na przykład, że
Kiedy przesłać formularz, uzyskać wartości zaś wewnątrz każdej z tych wejść.
I sprawdzić, czy jest pusty.
Jeśli jest to puste, to return false, ponieważ Nie chcę, aby wysłać formularz,
bo forma jest nie tak.
Jeśli hasło jest puste lub jest to mniej niż osiem znaków, nie złożę
formą, bo to też źle.
I powrót tylko zapobiega fałszywe Formularz od składania i
idzie do nowej strony.
>> I miejmy nadzieję, że to ma sens.
Myślę, że chłopaki powinni przejść przez Kod ten krok po kroku na własną rękę.
I po zrozumieniu, co wybrać elementy i zrobić z nim rzeczy
faktycznie pociąga za sobą, to będzie wiele sensu dla Ciebie.
Tak?
>> PUBLICZNOŚCI: Co robi name = nazwa użytkownika oznacza?
>> JOSEPH ONG: Więc nazwa = nazwa użytkownika i name = hasło po prostu oznacza, spojrzeć na
atrybut cokolwiek masz wybór.
A więc, że ma takie same.
Więc idziemy do rejestracji.
A potem spojrzeć na wszystkich wejściach i rejestracji.
A następnie wybieramy ten, w którym nazwę atrybutu jest równa użytkownika.
Tak tylko, że pierwszy selektor wybiera Wejście nazwa użytkownika.
I że tylko drugi selektor wybiera hasło jeden, bo te mają
Nazwa ustaw ich atrybuty jak co oni mają być.
Pytanie?
>> PUBLICZNOŚCI: W dniu złożenia wniosku, w jaki sposób dolna część rozwiązać górną część?
>> JOSEPH ONG: Więc to dlatego, procedury obsługi zdarzeń.
Więc czekamy na razie przedłożenia że zostanie zwolniony z formularza.
I to jest wszystko, co jest przedłożyć.
Dlaczego nazywam złożyć tam?
Mówi, gdy formularz jest składany, Mam zdarzenie przedstawienia.
Pozwólcie mi, że i przechwycić następnie uruchomić ten kod zamiast.
Tak?
>> PUBLICZNOŚCI: Dlaczego masz mieć zdarzenie funkcji?
Dlaczego nie można po prostu [niesłyszalne]?
>> JOSEPH ONG: Ponieważ w JavaScript, to muszą zadeklarować funkcji.
To jest po prostu, jak to działa w JavaScript.
Trzeba powiedzieć, że to się dzieje uruchomienia funkcji.
Więc mówisz, że jesteś go spodziewa się tu zamiast funkcji
tylko nawiasy klamrowe.
>> PUBLICZNOŚCI: A funkcja jest co następuje?
>> JOSEPH ONG: Tak.
Funkcja jest wszystko, co jest w środku Nawiasy klamrowe po
że kluczowe funkcje.
Tak?
>> PUBLICZNOŚCI: [niesłyszalne].
>> JOSEPH ONG: Dla przedstawienia?
>> PUBLICZNOŚCI: Nie, dla funkcji bez zdarzenia.
>> JOSEPH ONG: Tak.
Tak więc bez wypadku możesz mieć.
Jeśli nie potrzebujesz zdarzenie, Następnie można po prostu pominąć go.
Ale jeśli nie, to wystarczy umieścić go tam.
Tak.
Szybkie pytanie?
>> PUBLICZNOŚCI: [niesłyszalne].
>> JOSEPH ONG: Tak.
Bo to, co trzeba zrobić, document.ready tylko mówi czekać na wszystko
HTML na stronie, aby załadować pierwszy.
I zwykle, chcesz, aby elementy w miejscu przed uruchomieniem kodu.
Dobrze.
Musimy dostać się do Ajax.
Nie mamy wiele czasu.
Więc plusy i minusy.
JavaScript jest łatwiej spróbować Napisać z jQuery.
Ale jQuery jest rodzaj powolne.
>> To jak PHP jest wolniejszy niż C, bo to interpretować.
I jQuery jest nieco wolniejsze niż JavaScript, ponieważ ma wiele
rzeczy pod maską.
A więc jeśli używasz jQuery, to tylko trochę wolniej niż
JavaScript, mimo że daje piękny elegancji.
I wreszcie, Ajax.
Do tej pory z Ajax, nie widziałem Ajax w odniesieniu pset7 jednak ze względu
kiedy to zrobisz, możesz złożyć Formularz do zacytowania.
Ładuje nową stronę.
Więc masz ten duży biały błysk Na stronie natomiast
druga strona się ładuje, prawda?
>> Byłoby naprawdę miło, gdyby ci nie ma ten flash.
Takich jak Facebook, czy po prostu przejść do dolny, dodaje nowe treści
bez odświeżania całej strony.
Więc coś takiego byłoby miło.
To jest kod JavaScript Po lewej stronie.
Dostajesz to, co jest wewnątrz tego wejścia.
Otrzymasz informacje giełdowe z Yahoo!
A potem zrobić duży ciąg mówi: OK, to jest wiadomość chcę
pokazać na ekranie.
A następnie umieścić tę wiadomość wewnątrz jakiegoś elementu HTML, który pobiera
wyświetlane na ekranie.
>> Więc to wszystko, co się tu dzieje.
Więc w zasadzie, bo to wszystko jest JavaScript i nie trzeba, aby uruchomić
już w PHP, to sprawi, że że strona nie odświeża.
Więc to jest tylko abstrakcyjną ideą że mówię tu teraz.
Abstrakcyjny pomysł jest, że jeśli robisz to wszystko w JavaScript, nie musisz
Odśwież stronę.
Ale jak właściwie to zrobić?
>> Cóż, faktycznie, porozmawiajmy o Problem z tym pierwszym.
Problem jest w JavaScript, wykonanie jest synchroniczna.
Więc trzeba czekać na jednego Linia, aby zakończyć przed tobą
wykonać następną linię.
A co jeśli mam na Yahoo!, i ich serwery są bardzo powolne, a
zajmuje im trzy sekundy, aby oddaj mi tego info akcji?
Kiedy hit tej linii cen, jeśli realizacji jest synchroniczny, a to przez
domyślnie, co to jest po prostu to zrobi Twoja przeglądarka będzie stoisko na
trzy sekundy.
A ty nie będziesz w stanie zrobić , podczas gdy robi coś, że dane.
To będzie zamrożone.
>> I to jest złe.
Nie chcesz użytkownikowi mają zamrożone stronę.
Poprawić?
To jest po prostu złe.
Wszyscy zgadzają?
Jeśli i to przeglądanie Facebooka zawiesza i nie można nic zrobić,
się bardzo sfrustrowany.
Więc rozwiązaniem jest zrobić coś asynchroniczne zamiast.
Więc wszystko to, co mówi, asynchroniczne jest, mam zamiar zapytać to
Adres URL dla niektórych danych.
A potem mam zamiar iść dalej.
Idę do utrzymania wykonywania niezależnie od kodu, który był po.
>> A potem, gdy, że dane są gotowe, to ja go przetworzyć.
To wszystko mówi.
>> PUBLICZNOŚCI: Ajax po prostu sprawia, że asynchroniczny kod?
>> JOSEPH ONG: To asynchroniczny sposób pobierania danych.
Tak więc pierwszą rzeczą, o Ajax to pozwala mi uzyskać dane
z zewnętrznej strony.
I druga rzecz to to sprawia, że ​​na pewno że moja strona nie utyka, a ja jestem
pobieranie tych danych.
To asynchroniczny częścią.
Bo to idzie gdzieś indziej, bo powiem, że wracamy na chwilę
to pobieranie tych danych, które sprawia, że ​​asynchroniczne.
Trzymam wykonywania.
>> Miejcie to asynchroniczny Pomysł w głowie.
, A pokażę ci, co różnica.
Wersja synchroniczna znajduje się po lewej stronie.
Wersja asynchroniczna jest po prawej stronie.
Spojrzeć na liczby, aby zobaczyć, które kroków spełnia co
wykonywany w każdym wierszu.
Tam, pojawia się pierwszy wpis.
Ponieważ uzyskanie informacji akcji z Yahoo!
trwa trzy sekundy, stalle w ciągu trzech sekund.
A następnie informuje, że ceny Po tych trzech sekund.
>> Więc teraz, że pokazuje alert się w tym czasie -
trzy sekundy w.
A następnie informuje, że przez po.
Więc to tylko po to krok po kroku.
To jak to, co faceci zaakceptuje, prawda?
Z wykonywania asynchronicznego, Ci ostrzegają pierwszy.
Następnie udać się do tego adresu URL.
I mówisz, będę po prostu poprosić o dane.
A potem mam zamiar przetwarza je później.
Więc natychmiast wykonuje następna linia sprawiają, że po I
asynchroniczne żądanie.
>> Więc 0,001 sekundy widzisz powiadomienie hi.
Wykonanie tej funkcji, powiadomienie bye.
I dlatego, że złożył obietnicę, że będzie przetwarzać dane później, co
zdarza się, że gdy wróci danych trzy sekundy później, a następnie uruchomić, że
Funkcja, że ​​mam tam.
Tak?
>> PUBLICZNOŚCI: Czy możesz podać lub wyjaśnić, co oznacza, Ajax?
>> JOSEPH ONG: Ajax jest więc sposób, że jeśli Potrzebuję danych, gdy jestem na stronie internetowej i
Nie chcę, aby odświeżyć stronę, a następnie I korzystać z tej technologii o nazwie Ajax.
Oznacza, że ​​w istocie tak, idź przynieś dane z innej strony.
I zrobić to w taki sposób, że tylko nie opóźniać moją stronę internetową.
>> PUBLICZNOŚCI: Więc jest to nieodłączny część JavaScript lub jQuery?
>> JOSEPH ONG: Więc ktoś napisał sposób to zrobić to w JavaScript dawno temu.
W pewnym momencie, że nie istnieje.
I tak ktoś wymyślił tą technikę aby ludzie do żądania tych danych
w ten sposób.
I napisał kilka rzeczy zrobić to za Ciebie.
I jQuery tylko daje to bardzo dobry sposób, aby to zrobić
z tego $. funkcję dostać.
pytania?
Mogę odpowiedzieć na pytania dotyczące Ajax potem też.
Będę tutaj.
>> Więc niech nam pobrać dane bez odświeżania strony.
I niech nam to zrobić w asynchroniczny sposób, że
nie zamrażać stronę.
Zbyt długo, nie czytaj, jeżeli Wyjaśnienie było zbyt długo na Ciebie.
Więc w końcu, cross-site ataki z wykorzystaniem skryptów.
Widzieliśmy to z Zamyla.
Jeśli ktoś w mojej bazy danych ma tę nazwę, co jest tego tagu skrypt, a ja
jakiś kod na mojej stronie, która drukuje z nazwiskami ludzi z rzędu, lub mam
jakiś kod JavaScript, który wstawia nazwa ta do strony,
czego HTML zostanie wyprodukowane?
Cóż, wydrukować znacznik HTML.
Wydrukować wszystkie te tagi.
>> I dostać się do części, w której jestem drukowanie z przyjaciółmi.
Wydrukować Lauren się.
Wydrukować Milo się.
I wtedy moje nazwisko w bazie danych jest skrypt postu
niepochlebny statusu Facebook.
Bo to dodaje do strony bo wygląda na to, kiedy JavaScript
ta strona zostanie wysłana do użytkownika, to zostanie wykonany w JavaScript.
I tak to jest to, co nazywamy atak cross-site scripting.
Ktoś stawia złośliwego informacji bazy danych, które mogą odpowiadać
kilka dodatkowych znaków lub niektóre ciąg JavaScript.
>> I kiedy zostanie wydrukowany na strona w ten sposób, to co
zdarza się, że zły kod zostanie wykonany że nie zamierzają
na to, aby wykonywane.
I to wszystko, cross-site atak skryptowy jest.
I sposób poruszania się to jest jak Zamyla powiedział.
Po prostu zawinąć rzeczy w HTML znaki specjalne.
I znaki specjalne HTML to jest PHP Funkcja, która będzie zapobiegać tego rodzaju
rzeczy z tobą dzieje jeśli złośliwy
ciąg w bazie danych.
Jest tylko opuści ją, tak, że nie robi się interpretować jako HTML.
Zastępuje ono małe wsporniki z tego, co nazywamy podmiotów.
I udaliśmy się nad tym w wykładzie też.
Więc myślę, że chłopaki powinni mieć dobra znajomość w tej sprawie.
Pytania?
Tak.
>> PUBLICZNOŚCI: Więc w jaki sposób [niesłyszalne]?
>> JOSEPH ONG: Powiedz to jeszcze raz.
>> PUBLICZNOŚCI: Jak by monitor -
>> JOSEPH ONG: Prawo.
Więc masz coś, co mówi, kiedy Zarejestrować, typ w moim imieniu.
Po prostu wpisz w tym polu, nazywam się stript po niepochlebny Facebook
Status blisko tagu skrypt.
I że po prostu zostanie oddany do bazy danych, ponieważ nie mogę powiedzieć, ktoś
na świecie nie ma nazwy z lewej strzałki w nim lub
Skrypt słowo w nim.
Że tak naprawdę nie ma sensu.
Więc po prostu upewnić się, że zdezynfekować rzeczy zanim je wydrukować
się na stronie.
>> PUBLICZNOŚCI: Więc HTML specjalne karty zapobiega tagów skryptu?
>> JOSEPH ONG: Tak.
Więc to nie przeszkadza tagów skryptu.
To właśnie sprawia, że ​​pewność, że znaczniki skryptów nie dostać
interpretowany jako HTML lub -
tak.
To właśnie to, co pojawia się jako jest w rzeczywistości.
Dobrze.
Tak aby była ocena quizu.
Fajne.
>> [Aplauz]