>> DAVID MALAN: W porządku.
Jest CS50, a to Koniec tygodnia dziewięciu.
Minęło ponad wicher w ciągu ostatnich kilku dni.
I problemu ustawić siedem, jeśli kolano głęboko w to, uświadomić sobie, że to dość
nieco nowy, że tam jest.
Ale zobaczmy, czy nie możemy poskładać wszystko razem tutaj w skrócie
wcześniej skręcając się w jeszcze inny kierunek i widzenie
gdzie indziej możemy iść.
>> Tak jak dotąd, rozmawialiśmy o HTML.
Rozmawialiśmy o CSS.
Rozmawialiśmy o PHP.
Już zaczęli doświadczać SQL.
Dzisiaj porozmawiamy trochę o JavaScript.
Ale w jaki sposób wszystkie te rozbieżne języki do siebie pasują?
>> Więc rozmawialiśmy w zeszłym tygodniu o Pojęcie o serwer.
Więc po prostu wyciągnąć ten prostokąt jako serwer WWW tutaj.
I serwer WWW służy pewno pliki.
A niektóre z tych plików mogą być pliki HTML.
Tak więc jedną z rzeczy, które serwer WWW może wypluć może być plik, który
my tak po prostu narysować zawierający niektóre HTML.
Więc w laika, co nie HTML pozwalają robić?
>> PUBLICZNOŚCI: Strona ładnie wyglądać.
>> DAVID MALAN: OK, aby strona wygląda ładnie, choć myślę, że udowodnione
że inaczej.
Więc HTML nie pozwalają rozłożyć strony strukturalnie, i to pozwala na
rodzaj estetycznie oznaczyć strony, oznaczyć zawartość statyczną, tak aby
można następnie wyświetlić go w przeglądarce internetowej.
>> Ale to jest klucz.
To zawartość statyczna.
Piszesz, masz go zapisać, a następnie wysłać go.
I serwer WWW, a następnie zaprasza to do użytkowników.
>> Ale stylizować za pomocą różne rzeczy języka w ogóle.
Zaczęliśmy korzystać z atrybutu stylu na niektórych tagów.
I atrybut stylu Ustawmy rzeczy takie jak rozmiar i kolor czcionki.
I to prawdopodobnie zacząłem odkrywać, lub wkrótce do finału
projekty, jeszcze innych potencjalnie właściwości, które można używać w CSS.
I tak w laika, co Naprawdę to jest CSS zrobić?
To są ich tylko przykłady.
Jaki jest na to pozwolić HTML Nie wydaje się od tego, co
widzieliśmy do tej pory?
>> PUBLICZNOŚCI: Definiowanie stylów samodzielnie.
>> DAVID MALAN: Definiowanie stylów samodzielnie.
Więc określić takie rzeczy jak klasy, jak ty może nie spotkałem, lub wyjątkowo
identyfikacji węzłów w dokumencie tak że można je stylizować.
Ale konkretnie, to powiedziałbym, że CSS naprawdę pozwala robić rzeczy
ostatniej mili i pozwala określić wiele dokładniej estetyka,
natomiast HTML dla większości pozwala Ci uporządkować swoje strony.
>> I mimo, że istnieją pewne wartości domyślne, jak widzieliśmy, dla tagu
pozycji tag, który z grubsza rzecz biorąc wykonane rzeczy i śmiały.
To dość ogólne określenie z tagiem - i śmiały.
Jaki rozmiar czcionki jest to, że?
Jakiego koloru jest to, że?
Jak pogrubione to jest?
I CSS pozwala Ci bardziej subtelnie dostroić takie rzeczy.
Jak również układ, jak niektórzy z widzieliście.
>> I szczerze mówiąc, CSS jest nieco języka bałagan.
Jest to bardzo potężny, że można zrobić dosłownie każda strona internetowa, która masz
widziałem w internecie dzisiaj z nim, ale jest to rodzaj bólu w szyi.
I niektórzy z was uderzył głową na ścianach już tylko uwagi
coś głupiego jak menu w centrum Problem ustawić siedem, jeśli dotarłeś do
że punkt już.
>> Ale sobie sprawę, te rzeczy się łatwiejsze z czasem.
Zaczniesz dostrzegać wzory.
I znowu, Google będzie twoim przyjacielem na różne sposoby, w którym można
rozwiązywaniu tego rodzaju problemów.
>> I śmiem twierdzić z CSS i HTML więcej ogólnie, można rozwiązywać problemy w
wiele więcej sposobów, z których każdy może bardzo dobrze być poprawne, niż mógłbyś
w coś jak C, nawet teraz PHP lub JavaScript.
Są po prostu wiele różnych sposoby świeckich rzeczy.
>> Ale to zaczęło się niechlujny, powiedzieliśmy.
Tylko rodzaj przemieszania kod HTML i Twój CSS z atrybutem stylu było
trochę zaniedbany.
I tak zamiast powiedział, jakby abstrakcyjnie mówiąc, że powinien
przynajmniej zacząć czynnika z Twojego CSS prawdopodobnie.
Nie Twój styl atrybuty, ale przynajmniej użyć znacznika style wewnątrz, co
część strony internetowej?
>> PUBLICZNOŚCI: Kierownik.
>> DAVID MALAN: W głowie.
Do tej pory mieliśmy tylko tytuł się nie, ale można też dodać styl
tag, można umieścić swój CSS z grubsza Mówiąc w kierunku górnej strony.
Ale potem wzięliśmy rzeczy jeden krok dalej i uwzględnić, że się więcej
w osobnym pliku.
>> I tak te dwa pliki były jakoś teraz połączone.
I rzeczywiście tak było tag, który to zrobił.
I to, co było jednym z nadrzędnych motywacje do faktoringu naszą CSS
Wszystkie więcej?
>> PUBLICZNOŚCI: Ponowne.
>> DAVID MALAN: Ponowne.
Prawda?
Można było zaobserwować w p-set siedem już że wiele stron,
strona kupowanie, strona sprzedaży, strona portfolio, są prawdopodobnie
skonstruowany nieco podobnie.
Jest logo CS50 finansów na szczycie chyba, że ​​postanowiła to zmienić.
Jest stopka na dole strony.
I CSS pozwala następnie go na czynniki to w osobnym pliku, tak, że jeśli
chcesz coś zmienić na świecie w poprzek całej witryny, można naprawdę
po prostu zmienić go w jednym miejscu.
>> Ale jest cena, jaką płacisz potencjalnie przez które zbitek
CSS z mojego pliku HTML do oddzielnego złożyć odwołanie go z
Znacznik, który widzieliśmy w poniedziałek.
Co może minusem jest to?
Wracając tydzień temu, gdy jesteśmy mówić o HTTP i TCP / IP i jak
internet działa.
Coś tutaj?
>> PUBLICZNOŚCI: To zajmuje więcej czasu.
>> DAVID MALAN: To zajmuje więcej czasu.
Dlaczego?
>> PUBLICZNOŚCI: [niesłyszalne].
>> DAVID MALAN: Tak.
Więc to zapewne zajmuje trochę więcej czasu.
Ponieważ jeden, CSS jest oczywiście nie w tym samym pliku.
Więc teraz masz nie robić jeden, ale dwa wnioski.
I każdy z tych wniosków, jak widzieliśmy w Chrome w tzw Inspektora,
i patrzyliśmy na karcie sieciowej, każdy z tych plików wymaga jeden HTTP
Wniosek, który widzieliśmy trwa pewną ilość czasu.
Teraz, być może to nie jest dużo.
Może to tylko 20 milisekund.
Może to 200 milisekund.
>> Ale myślę o stronie, takich jak Facebook, lub CNN, czy Google, które są znacznie
większa niż przykładach ve wyglądał w pory.
Strony te mogą mieć kilkadziesiąt plików, z których każdy może wymagać
pobieranie pliku.
Więc rzeczy mogą potencjalnie zaczynają zwalniać.
>> A szczególnie w tych dniach, gdy wszyscy posiada telefony komórkowe w kieszeniach i
wolnego połączenia internetowego, konieczności poczekać kilka milisekund, kilka
więcej milisekund dla dodatkowego Pliki mogą być w rzeczywistości powoli.
Opóźnienie jest słowo, które opisuje jakby czekając, że masz, że ci
wystąpić podczas oczekiwania na niektóre informacja.
>> Ale jest odwrotnie.
Więc nie jest to wszelkiego rodzaju -
faktycznie jest trochę huśtawce tutaj.
Minusem teraz, ale co może zrobić przeglądarek jeśli jesteś mądry, aby uniknąć
konieczności ubiegania się o ten sam styles.css plik może być ponownie do czego?
>> Buforować go.
Więc buforowanie -
C-C-H-E -
ogólnie oznacza tutaj po prostu zapisać plik, którego szukasz po raz pierwszy, i
następnie sprawdzić pamięć podręczną dla niego.
Sprawdź jesteś rodzaju pojemniku, a jeśli masz już
Kopia styles.css, nawet jeśli niektóre inne strona w p-set, lub stronie internetowej,
prosi go ponownie, tylko dać Użytkownik, który sam w pamięci podręcznej kopii.
Nie przejmuj się o nią.
>> Minusem jest jednak, jak niektórzy z was nie potknąć się w p-set.
Jeśli dokonasz zmian na serwerze i wrócić do przeglądarki i
przeładować, czasami robi przeglądarki Ci przysługę i nie przeszkadza
ponownie pobierając plik styles.css ponieważ, dalej, jakie są szanse
że te style, które używa Facebook zamierzasz zmienić godzinę na godzinę lub
z dnia na dzień?
Jest to dość niski.
Mogą zmieniać się w czasie, ale nie przez minutę lub przez godzinę.
>> Tak więc podstęp, po prostu FYI, gdy robi internetowej rozwój, jest często przytrzymaj
przesunięciem na przykład, a następnie kliknij przeładować w przeglądarce, i że będzie
zazwyczaj powiedzieć reload przeglądarki wszystko, nawet jeśli masz już
że w pamięci podręcznej.
Więc znowu, Plusy i minusy, jednak wszystkie
ostatecznie projekt decyzji.
>> Więc teraz, że nie tylko zakończyć historię tutaj.
Gdybym teraz wrócić i do tyłu i do tyłu i wstecz, zaczęliśmy wprowadzać nie tylko
HTML, ale PHP.
Więc w laika, co nie PHP zróbmy?
>> PUBLICZNOŚCI: [niesłyszalne].
>> DAVID MALAN: Co to jest?
>> PUBLICZNOŚCI: Wprowadzenie logiki w kodzie.
>> DAVID MALAN: Tak, wprowadzenie logiki w kodzie.
Więc to prawda, język programowania z pętli i zmiennych oraz
Funkcje i warunki, i wszystkie rzeczy używaliśmy powrotem
kiedy od podstaw.
I PHP, widzieliśmy, można stosować albo w linii poleceń - to
nie musi mieć nic wspólnego z sieci, nawet jeśli to jest
naprawdę jej początki i co to ma tendencję być dobry i sprzyja -
ale można korzystać jedynie przez naturę PHP z tym, że ma nadruk ()
Funkcja i printf () funkcja, Funkcja lub echo ().
Jest bukiety sposobów można może drukować tekst z PHP.
>> W związku z tym, można użyć tego programowania język do wyjścia dokładnie
co mówiliśmy wcześniej.
Można dynamicznie generować Twój HTML.
Może nie wszystko.
Może twarde rzeczy, jak kod Nagłówek i stopka, a logo,
i arkusze stylów, i to wszystko.
Ale czegoś takiego jak p-set siedmiu, dokąd się wybierasz, zapasów i manipulowania
pokazano portfel użytkownika, który jest będzie dynamicznie zmieniać, można
na pewno korzystać z PHP i logikę to daje Państwo jako język programowania dla
Wyjście dynamicznie podgrupach strony.
>> Więc kiedy mówisz o dynamicznych stron internetowych, lub programowania WWW, to
co tak naprawdę chodzi.
Jak za pomocą języka PHP lub rzeczy nazywa Python lub Ruby lub Java, lub
jeszcze inne języki, do kwerendy bazy danych Często lub innego serwera i
następnie dynamicznie wypluć HTML.
>> Teraz efekt końcowy, jak na bok, jest że większości stron internetowych w formacie HTML,
w tym swoje p-set siedem, to prawdopodobnie będzie ogromny bałagan, jeśli
spojrzeć na źródła Kod w przeglądarce.
To nie jest wielka sprawa.
W tym momencie, gdy zależy nam na styl, dbamy o
rzeczy, które piszesz.
Nie będziemy dbać o rzeczy że co się wyjść kod.
Więc nie martw się o wcięcia tutaj, czy jest to PHP
faktycznie wyprowadzania rzeczy.
Po tym wszystkim, przeglądarka nie będzie obchodziło, i człowiek nie będzie szukał
u źródła i tak.
Mamy zespół, na przykład, by być patrząc na PHP.
>> Więc pozwól mi dać szybkie przykład teraz dlaczego jeszcze to może być przydatne.
Tak szczerze mówiąc, nie pamiętam, ostatni razem użyłem C do rozwiązania problemu w
prawdziwy świat.
To było chyba na studiach, kiedy Musiałem użyć języka, który
był dość niski poziom i dał mi okazja do zrobienia czegoś bardzo wysoki
wykonywania naprawdę zaoszczędzić jak najwięcej CPU cykli, jak mogłem, w dużej części
bo przy użyciu ogromnych zbiorów danych, i każdy cykl CPU liczy.
I szczerze mówiąc, nawet w takie rzeczy jak telefony te dni i inne urządzenia
gdzie nie dość mają tyle pamięci i nie bardzo mają jak
wiele procesorów, używając szybszych językach nadal jest atrakcyjne.
>> Ale w prawdziwym świecie, jeśli tylko chcą rzucić jakiś program wraz z
analizy niektórych danych, lub zebraniu cała masa rejestracji dla
niektóre grupy studentów i chcesz bardzo szybko zautomatyzować wysyłanie e-maili
jeden po drugim, aby każdy z tych rejestrujący, masz zamiar dotrzeć do
wyższy poziom języka niż C tak powiem.
Coś jak PHP lub Python lub Ruby, lub a które istnieją pół tuzina innych
te dni.
Ale te trzy są prawdopodobnie Najbardziej modne teraz.
>> I co to oznacza, że ​​można otworzyć się edytorem tekstu takim jak gedit lub
najbardziej cokolwiek innego i po prostu zacząć pisania kodu, nie martwiąc
o kompilacji, bez konieczności naprawdę martwić o zarządzanie pamięcią,
pamiętając jednak, że mało niechlujstwo w końcu wrócić
ugryźć, czy zestaw danych staje się większy lub problemem dostaje duże.
Ale co to oznacza dla us jest następujące.
>> Pozwólcie mi iść do przodu i uruchamiania Speller z problemem ustawić sześć.
Więc to jest moja realizacja opartego Trie że stosowane na duże
zarządu, w którym nie przeprowadza się tak dobrze.
Wrócimy w ciągu tygodnia i ponownie tych, którzy nie kończą się na szczycie
wielka płyta w naszym ostatnim wykładzie.
Ale teraz, pozwól mi iść do przodu i po prostu uruchomić moje rozwiązanie w tekście, i zrobimy
Biblia Króla Jakuba, i jedziemy.
>> To są podobno wszystkie błędnie napisane słowa z
Biblia Króla Jakuba.
Wdrożenie trwało i mój pół sekundy w sumie.
Więc nie jest tak źle na tym szczególności komputera.
Ale pomyśl, jak bardzo Kod miałem napisać.
Pomyśl, jak wiele kodu trzeba było napisać.
Pomyśl, ile godzin spędził w D-hol lub akademika lub gdziekolwiek
faktycznie kodowania się to rozwiązanie.
>> Cóż, jeśli rzeczywiście mają wyższy poziom język jak PHP, zapoznać się z
co można zrobić tutaj.
Najpierw załóżmy, że jest raczej Twój kod dystrybucji.
Jest to plik o nazwie ortografii.
Jest on dostępny jako część dzisiejszego Kod dystrybucji.
I mam zamiar pomachać ręką w najbardziej o szczegółach, ale to jest rzeczywiście
Ciekawym przykładem na to, jak to polubisz portu język
jak C nad PHP.
I dosłownie otwarte dwa okna tekstowe, jeden z moich wersji C speller.c,
i po prostu zacząłem tłumaczyć to w moim udać się do PHP i wpisując go przy użyciu
najbliższe równoważne funkcje.
>> Więc niektóre z tych rzeczy są różne.
Widzieliśmy ostatni raz, że nie korzysta z PHP uwzględnić w bardzo podobny sposób.
Wykorzystuje wymaga zazwyczaj, choć obejmują nie istnieje.
Define jest trochę inny od # Define w C, ale to
jak zrobić stałą.
$ Argc się okazuje istnieje w PHP, więc widzieliśmy, że przed.
Są to tylko zmienne, wszystkie które zaczynają się dolara.
Przypomnijmy, to tylko kilka pływających punktów.
>> Więc krótko mówiąc, to serdecznie zapraszamy do przerzucać tego, czy ciekawy, to jest
prawie line-dla-line konwersji C wersja speller.c do PHP.
I można to zrobić ponownie na pół tuzina innych języków.
>> Ale co ciekawe, jest to.
Lub co szczerze przygnębiające to jest.
Pozwól mi iść dalej i wpisz temat dictionary.php, i twierdzą, że jestem
zamiar iść do przodu i ponownie wdrożyć Problem ustawić sześć tutaj.
>> Więc proponuję najpierw, że w tym Plik, który będzie realizowany w
PHP, więc pozwól mi otworzyć moje tagi, jak to.
Pozwól mi dać sobie globalny zmienna $ rozmiar dostaje zero.
I mam zamiar dać ja tabeli mieszania.
Będę korzystać z tabeli mieszania dla tej rzeczy.
Jak mogę zadeklarować tabeli mieszania w PHP?
Gotowe.
OK.
>> Tak otwarty uchwyt Uchwyt stanowi blisko co w PHP, jak widzieliśmy?
Tablicy, ale tablica może być tablicą asocjacyjną.
Tablica asocjacyjna jest Struktura danych
kojarzy klucze z wartościami.
>> Teraz w najprostszy indeksowane numerycznie tablicy, te klucze są co?
Zero, jeden, dwa, trzy, prawda?
Stara szkoła rzeczy z powrotem z C, ale może być jak Foo, łańcuchy i barze,
lub Maxwell, czy każdy taki ciąg.
Tak, że mogę wykorzystać za chwilę.
>> Pozwólcie mi iść do przodu i deklarują Funkcja jak -
zróbmy load () w pierwszej kolejności.
Więc obciążenie function ().
I PHP jest trochę inaczej w tym dosłownie wpisać funkcję, ale
nie wpisz typ zwracany.
Mam zamiar iść dalej i powiedzieć, że funkcji load () powinna podjąć w
Argument $ słowniku, po prostu jak wersja C nie.
Robię, że z pamięci.
>> I proponuję, że jestem zamierza to zrobić.
Jestem po prostu zrobić foreach.
Mam zamiar wywołać funkcję o nazwie file (), przekazując w imieniu, które
Plik, który jest zmienny $ $ Słowa jako słownik.
A następnie wewnątrz mój pętli tu jestem zamiar iść do przodu i przechowywać w moim
$ Tabela $ word dostaje prawdziwe.
Gotowe.
Oh, wait.
Gotowe.
OK.
>> To jest funkcja () obciążenie powiedzieć w PHP.
Teraz, dlaczego to działa?
A ja tu trochę oszukuje.
>> Tak, jeden, foreach widzieliśmy krótko ostatnio.
To po prostu oznacza, że ​​można iteracyjnego Tablica z I nie przeszkadza
i n i Plus Plus, i to wszystko.
Słownik jest oczywiście nazwa pliku, coś jak duże lub małe, dwa
słowniki użyliśmy po raz ostatni.
Plik jest funkcja, która otwiera tekst plik, odczytuje go linia po linii, a
ręce Tobą ogromny wachlarz, której każdy z elementów jest
linia z tego pliku.
Więc to połączenie fopen i fread i pętla, oraz fclose,
i to wszystko.
Wreszcie, jako słowo oznacza po prostu, że jest Zmienna będę mieć dostęp do
na każdej iteracji w tej pętli.
>> Tak w skrócie, to oznacza tutaj jeden liniowej otworzyć plik, którego nazwa jest w
Słownik, zmienna, iteracyjnego to linia po linii, i za każdym razem można dostać
Linia, przechowywać w zmiennej o nazwie słowa, a następnie zrobić coś z wyrazu.
Co chcę zrobić?
Chcę umieścić słowo do mojego tabeli mieszania.
>> Cóż, mogę umieścić coś w moim hash tabeli tak jak w C
w nawiasach kwadratowych.
Jest to nazwa dla mojego tabeli mieszania.
Idę do tego indeksu hash Tabela w tym miejscu.
Więc nie wspornik do zera, nie nawias jeden.
Uchwyt cytat coś cytatu, cokolwiek to słowo.
I jak możesz mieć w telefonie trie hash tabeli pracy, po prostu sklep
skutecznie logiczna, w sposób dorozumiany lub jawnie.
Gotowe.
Jestem przechowywania wartość prawda.
>> Teraz jest kilka rzeczy, Jestem na skróty tutaj.
Technicznie, nie będzie przykry nowej linii, / n, w końcu
każde z tych słów.
Więc powinienem chyba wywołać funkcję PHP nazywa kotlet (), która będzie
dosłownie posiekać, że off.
I rzeczywiście trzeba zrobić jedną rzecz.
Powinienem chyba na każdym zwiększyć rozmiar iteracji, więc jestem śledzenie
na całym świecie z tego, co to jest.
I szczerze mówiąc, i to jest jeden z głupsze aspekty PHP, jeśli jesteś
za pomocą zmiennej globalnej, trzeba wyraźnie powiedzieć, że jesteś.
Więc mam zamiar faktycznie wpisz w globalnym $ Rozmiar, $ table globalny, a teraz
moja funkcja jest zakończona.
>> Więc nie jest tak proste, jak wcześniej, ale prawdopodobnie trwało krócej niż C
wersji, może być?
OK.
>> Więc teraz zróbmy kontrolę działania ().
Zobaczmy, czy to trwało co najmniej godzin na koniec, że zabrał nas w C tak,
pozwól mi iść do przodu i deklarują sprawdź w funkcji.
Odbywa się w słowa argumentu, który jest będzie pochodzić z speller.
I mam zamiar sprawdzić, czy następujące zmienne isset, tabela
Uchwyt strtolower słowa -
niech zrównoważyć wszystkie moje nawiasach -
następnie powrócić prawda.
Inny -
że było naprawdę ciężko częścią tego programu.
Indziej, return false.
Gotowe.
To wyboru ().
>> Teraz, dlaczego to działa?
Cóż, jeden zdałem w słowie, który jest ciągiem.
Dwa, mam kontroli wewnątrz hash Stół, który się nazywa $ tabela.
Jestem zmuszając go na małe, dzwoniąc Funkcja bardzo podobna tolower () w
C, ale to nie całe słowo, nie pojedynczy znak.
A jeśli jest ustawiony, to znaczy tam jest ustawiona wartość, innymi słowy
jeśli to prawda, to tak, jest to słowo.
Bo ja je tam z obciążeniem ().
A jeśli nie, mam zamiar wrócić fałszywe.
>> Teraz gdy inne są proste.
Rozmiar function (), jak mogę to zrobić?
I w zasadzie nie zwróci $ rozmiar.
Ale technicznie trzeba zrobić to irytujące rzeczy.
I faktycznie się usłyszeć, byłem cięcia jeden róg zbyt wiele.
I naprawdę trzeba global $ tabela.
>> Ale powiedział, że jest rozładować).
Rozładować () jest niesamowite.
Wyładować function ().
Jak chcę wdrożyć unload ()?
Gotowe.
OK.
>> Tak rozładować (), zarządzanie pamięcią jest całkowicie pod opieką dla Ciebie w
coś jak PHP i wiele języków wyższego poziomu.
Tak, to jest niesamowite.
Jak, dlaczego, do cholery, spędziliśmy przeszłość osiem dodatkowo tygodni na piśmie C
najwyraźniej bardzo wolno, naprawdę czas spożywających problemy z kilkudziesięciu godzin
z pracy w ramach naszych pasów?
>> Cóż, z jednej strony, to może działać grzywny dla małych programów.
To na pewno przyspieszyło mój czas rozwoju.
Ale zobaczymy, co się stanie, w świecie rzeczywistym.
>> Pozwól mi wejść do tego katalogu w oknie terminala.
Jest ortografii.
I zauważyć, jak na bok, a może spotkałem tego problemu ustawić w
Problem zestaw sześciu lub siedmiu.
Nie muszą ściśle końca pliki PHP z. php.
Jeśli umieścisz linię jak ten pierwszy w bardzo góry, to specjalna linia
składni, które zasadniczo oznacza znaleźć Program nazywa się PHP i użyć go do
interpretować ten plik.
Teraz nikt nie wie, że Używam programu PHP.
I można go uruchomić po prostu tak, jakby zostały opracowane w C coś
>> Ale chodzi o to.
Właściwie, zróbmy to jeszcze raz.
Dropbox/pset6 /.
Jest ortografii.
OK, 0,44 sekundy.
Zrobiło się szybciej ten czas.
>> Teraz idziemy do wersji PHP.
Miły akcent.
Ale pomyśl, ile czasu I zapisane w godzinach urzędowania.
OK.
>> Więc 3,59 sekundy, które w rzeczywistości nie brzmi dokładne albo.
Ale to dlatego, że długie opowiadanie, kiedy drukując ogromną ilość
rzeczy do ekranu, to Sam spowalnia rzeczy w dół.
Co tak naprawdę wziął w CPU Urządzenie było 3,59 sekundy, w
przeciwieństwie do C, który odbył 0,44 sekund ostatnio.
To naprawdę kolejność skala inna.
>> Więc gdzie jest ta cena dochodzi?
Dlaczego jest tak dużo wolniej?
Dlaczego PHP wykonać tak słabo?
Danielle?
>> PUBLICZNOŚCI: Ty naprawdę nie użyć tabeli mieszania.
>> DAVID MALAN: tak naprawdę nie użyć tabeli mieszania.
Więc niby nie.
Więc to jest tablica asocjacyjna.
Najprawdopodobniej, jeśli ludzie w PHP są bardzo inteligentny, kiedyś pod
kaptur rzeczywiste tabeli mieszania realizowany w coś jak C lub C + +.
Ale.
Tak.
>> PUBLICZNOŚCI: [niesłyszalne].
>> DAVID MALAN: Tak.
Tak więc każdy z funkcji napisałem teraz - Właściwie można powiedzieć, że po raz kolejny
trochę głośniej?
>> PUBLICZNOŚCI: Każda z tych funkcji, które Czy uwzględniono ma dużo więcej do pełna
pojemność niż -
>> DAVID MALAN: Więc to jest bardzo prawdziwe.
Tam jest dużo więcej, że jesteśmy nad głową naprawdę nie widząc, koncentrując się tylko na
dictionary.php, który właśnie napisał.
Natomiast jest cała tłumacz dzieje się w tle.
Rzeczywiście, kiedy prowadził ten program, to nie został uruchomiony skompilowane zer i jedynek
zaprojektowany dla mojego procesora Intel.
Raczej, że został uruchomiony wiersz po wierszu Kod PHP, który wygląda dokładnie
jak mamy wpisane.
I tak przy każdym użyciu interpretowany język, ty
faktycznie zapłacić tę cenę.
To zajmie trochę czasu, aby przeczytać plik od góry do dołu, od lewej do
w prawo, a następnie wykonać każdy linia znowu i znowu.
>> Teraz w rzeczywistości, szczególnie w internecie, rzeczywiście można przyspieszyć ten proces
poprzez buforowanie wyników Kod PHP jest interpretowany.
I to ma sens w Internecie, ponieważ jeśli nie ma jednego użytkownika, jak
mnie tutaj, ale 1000 lub 10000 użytkowników, a następnie być może po raz pierwszy plik jest
dostępne jest powolne, ale potem to o wiele szybciej.
>> Ale to też, ponownie, jest kompromis.
I na coś w danych badawczych ustaw, a nawet jak coś duża
tego, użytkownicy będą ostatecznie zaczynasz czuć, że spowolnienie.
>> Tak w skrócie, są interpretowane języki bardzo w modzie, bardzo popularne, a
szczerze mówiąc to prawdopodobnie wy języki należy sięgnąć po rozwiązania problemów
Po CS50.
Ale sobie sprawę, jak wiele jesteś naprawdę biorąc za pewnik, pod maską
naprawdę te kilka ostatnich tygodni w hash stoły, i drzewa, i próbuje,
które są stosowane w końcu faktycznie wdrożyć takie rzeczy otwartym uchwytem,
nawias kwadratowy, co możemy teraz wdzięcznością przyjąć za pewnik.
>> Warto więc przyjrzeć się teraz W tym kontekście internetowej.
I ostatni raz wspominałem, że jest Pęczek superglobals w PHP, że
tak naprawdę nie są istotne w wierszu poleceń.
Są bardziej istotne w kontekście z wykorzystaniem PHP w kontekście internetowej.
Więc PHP działa na serwerze WWW w celu do generowania rzeczy jak HTML.
>> A my spojrzał na $ _GET i $ _POST i to tam automatycznie użytkownicy "
Wejście kończy się po prostu, jeśli przedłoży tworzyć w pliku z rozszerzeniem. php na internecie
Serwer jak urządzenia.
Ale załóżmy na chwilę spojrzeć na $ _COOKIE I tablicy $ _SESSION.
>> W laika, co to jest plik cookie, jak można zrozumieć w kontekście
korzystając z internetu?
>> PUBLICZNOŚCI: Plik na komputerze.
>> DAVID MALAN: Tak.
Jest to plik na komputerze użytkownika obsadzony przez co strona
zdarzy ci się odwiedzić.
Tak więc, gdy idziesz do Facebook, kiedy go do bankofamerica.com, gdy idziesz
do google.com, gdy idziesz do niemal każdego Strona www na świecie w tych dniach,
tym cs50.net, plik cookie jest obsadzone na komputerze, który jest
albo wartość przechowywana w pamięci RAM w telefonie Komputer w pamięci przeglądarki, lub
czasami rzeczywiście przechowywany plik na dysku twardym.
>> I co się zazwyczaj przechowywane w tym pliku nie jest nazwą użytkownika, a nie swoje
hasło, zazwyczaj nie jest to coś wrażliwe chyba strona nie jest tak
dobre z ich bezpieczeństwa, ale jest to unikalny identyfikator między duży
innych rzeczy.
To duża liczba losowych zasadzone na swoje komputer, ale można myśleć, jak
jakby pieczęć ręka jak z wirtualnego Klub lub park rozrywki, że niektóre
pozwala pracownicy, właściciele, że usługi, aby pamiętać, kim jesteś.
Więc jeśli duża liczba losowa jest jak 12345678, choć to oczywiście
nie zbyt losowe, pomyśl o tym, jak pieczęć ręka podczas wizyty
facebook.com po raz pierwszy, że pieczęć ten numer na ręku.
A potem, ponieważ po HTTP, można jest przeglądarka, a ponieważ Facebook
Oczywiście mówi sama jak sieci serwera, mówi, że protokół HTTP
kiedy tylko następnie odwiedzić facebook.com, czy to drugie
później godzinę później, nawet na następny dzień, tak długo, jak nie mają wyraźnie
zalogować się, które skutecznie jest jak mycie rąk.
HTTP mówi, należy przedstawić swoje Znaczek za każdym razem ręcznie
powrócić do tej strony.
>> Co Facebook to nie jest to, że spójrz na tego ręki i pieczęć
mówią, oh, 123456789.
Nie wiem, na pierwszy rzut oka, że ​​to jest David Malan w Cambridge,
Massachusetts, ale mogą sprawdzić ich Baza danych i powiedzieć, oh, osoba
, na którego komputerze posadziliśmy 123456789 jest David Malan z Cambridge,
Massachusetts.
Pokażmy, że to jego profil użytkownika Strona lub jego News Feed.
>> Ale jest pewien problem, jeśli to jest to, jak web rzeczywiście działa.
Rzućmy okiem na szybki przykład.
Niech rzeczywiście iść powiedzieć facebook.com.
Ale zanim będziemy mogli pójść tam, pozwól mnie śmiało i otwarcie Chrome
Inspektor tutaj.
Pozwól mi spojrzeć na karcie sieciowej.
A teraz idź i wpisz w https://facebook.com.
I robię to tak, że nie widzimy tych wszystkich przekierowań i odpadów
czas patrząc przez te.
Pozwól mi wciśnij enter.
>> Dobrze.
Widzimy całą masę wniosków.
Przychodzi Facebook.
Jest cała masa plików.
I tutaj, na moje wspomnienie z latency ostatni raz, to
Wiele żądań HTTP.
Jednak pierwsza jest prawdopodobnie najbardziej interesujące.
>> Więc przewiń tutaj, a Będę powiększyć w sekundy.
To będzie rodzaj bałagan, ale zobaczymy.
Facebook jest wysłanie do nas cała masa rzeczy.
>> Ale zaraz, ciekawe.
Oni sadzenia nie jedną, ale cztery znaczki ręki na rękę tutaj.
Set-Cookie, Set-Cookie, set-cookie, set-cookie.
I istnieje kilka funkcji tutaj.
Wszystkie z nich wspomnieć o niektórych rodzaj wydechu.
I wygląda na to Facebook ma nadzieję pamiętali o mnie, aż do 2015 roku.
Więc to zapewne czas, w którym Muszę się wylogować albo będziesz po prostu
automatycznie zakładać, że jestem nie wraca.
Więc to jest naprawdę przyzwoity czas.
>> A są jakieś inne co się tutaj dzieje.
Plik ten wydaje się być siłą usunięta, mówiąc, że wygasł w 1970 roku
przed ciasteczka istniał.
Tak więc przeglądarka jest po prostu będzie założyć, OK, to jak
mycie pieczęć ręce.
>> Ale teraz, gdy moja przeglądarka robi kolejny wniosek -
pozwól mi iść dalej i zrobić ponownie i ponownie.
Teraz pozwól mi przejść z powrotem do top wniosek i zejść
tutaj, nagłówki żądania.
To zauważyć.
Więc teraz nie jestem pod nagłówki odpowiedzi, nie zauważyć, że mówi nagłówki żądania.
I zauważył, że moja przeglądarka w ramach jego wniosek po uderzeniu reload ma
wysyłane co najmniej następujące informacje.
Nie set-cookie, ale ciasteczko.
Więc to jest linia, nagłówek HTTP tak mówić, gdzie moja przeglądarka jest swego
z bez mojej wiedzy to przedstawienie moja ręka do wglądu Facebooka.
>> Więc te ciasteczka mogą być wykorzystywane następnie do czego?
Aby pamiętać, kim jesteś, czy pamiętam, jak wiele razy byłem tam, lub
naprawdę nic.
>> Więc tutaj jest counter.php.
I pozwól mi powiększyć czcionki.
I za każdym razem przeładować stronę, zawiadomienia to pamiętać, ile razy
Byłem tam.
Dobrze, że nie wszystko jest tak imponujące.
Po prostu zamknąć tę kartę, a teraz wróćmy do
http://localhost/counter.php.
>> O, to ciekawe.
Wciąż pamiętał, nawet choć zamknąłem kartę.
I szczerze mówiąc, jeśli zamknąć przeglądarkę, jeśli realizowane w odpowiedni sposób, I
mogą jeszcze pamiętać, że ta osoba jest , kim był pierwszy raz, a
tylko raz idę do menu Chrome, które tutaj jest tutaj, i przejść do
Historia, a następnie kliknij przycisk Wyczyść dane przeglądarki, jak niektórzy z was mogą mieć w
przeszłości, tylko wtedy będzie pliki cookie faktycznie zostać usunięte podczas internecie
rozwój.
>> Tak więc, jeśli mamy go -
niech bliska gedit tutaj.
A jeśli już iść do tego pliku.
Pozwólcie mi odejść do naszego vhosts / localhost / public i pozwól mi zrobić
counter.php.
Zauważ, że jest to dość prosty program.
Jest to dość prosta strona.
>> Tak więc w górnej części pliku Zaledwie komentarzy.
Ale tutaj jest nowa linia, którą może widziałem już w p-set siedem,
session_start ().
To jest linia kodu PHP, który zasadniczo opowiada serwer WWW, należy
Upewnij się, że pieczęć ręce i zrobić sprawdź znaczki rąk.
To wszystko, że linia ma, i to to wszystko z tego procesu dla nas.
Następnie zauważył Mam tylko dwa oddziały tutaj.
Jeśli licznik wewnątrz tego klucza Zmienna globalna zwany specjalny
$ _SESSION Jest - innymi słowy, czy jest jakaś wartość nie -
zabierzmy go i przechowywać go w lokalnym zmienna o nazwie $ licznik.
Else, niech przypisać $ licznik Domyślna wartość 0.
>> Teraz tutaj jest jeden aspekt PHP to zarówno błogosławieństwem, jak i przekleństwem.
PHP jest trochę zaniedbany.
Tak więc podczas gdy w C, co Zakres licznika zostały
tutaj albo tutaj?
>> To były ograniczone z tymi klamrami.
Wiesz co?
W PHP istnieje nawet poza te nawiasy klamrowe, tutaj i tutaj,
i tu, i tu, i nawet na dole.
Więc mówię, to jest szczęście w tym sensie, że nie trzeba myśleć, jak
ciężko jak my tydzień temu.
Ale jest to również trochę przekleństwo w które nie ważne gdzie użyć zmiennej w
PHP, co najmniej takiego programu, to ogólnie dostępne dla
lepsze lub na gorsze.
Więc trzeba pamiętać, że teraz zmienne mogą być niezdefiniowane.
Mogłeś określono je gdzie indziej.
>> Ale co ja mam zrobić, w końcu?
Idę do przechowywania wewnątrz, że globalne zmienna jako wartość
Counter wynik robi licznik plus 1.
Więc to jest tylko arytmetyka że nie
inkrementacji tego licznika.
A fakt, że jestem przechowywania że wartość z powrotem tutaj, jest środkiem do
zasadniczo aktualizacji bazy danych do pamiętać, że użytkownik 123456789 było
tutaj dwa razy.
A kiedy to ponownie następnym razem Odśwież stronę, to będzie sprawdzić
moja ręka pieczęć i powiedzieć, oh, Użytkownik 123456789 ma teraz
tu trzy razy.
>> I co z tego i podobnych języków PHP robią dla nas jest to, że są pojęciami
się, jak i gdzie i na jak długo do przechowywania wartości w tym specjalne
superglobalna.
I to superglobalna następnym razem odwiedzić stronę jest jakby magicznie
wstępnie wypełnione, wypełnione wartościami, które byliśmy tam ostatni raz odwiedził,
czy to było drugie temu, tydzień temu, czy w 2013 roku i jesteśmy obecnie rozmowy
około 2015.
PHP i serwera WWW zadba wszystkich, że dla Ciebie.
>> PUBLICZNOŚCI: [niesłyszalne].
>> DAVID MALAN: Zmienne w PHP są w zasadzie zawsze, chyba że globalna
Oświadczam je wewnątrz funkcji, a następnie są lokalne do
tylko funkcję.
Ale dlatego, że nie napisałem każdy funkcje, są teraz skutecznie
globalna w całym moim pliku tutaj.
>> PUBLICZNOŚCI: Czy istnieje sposób do ich lokalnych?
>> DAVID MALAN: Czy istnieje sposób, aby ich lokalny?
Tylko przez owinięcie ich w funkcji.
Który w najnowszej wersji PHP, możesz to zrobić za pomocą
anonim funkcja.
Ale o tym w kontekst JavaScript.
Ale Krótka odpowiedź brzmi: nie.
Dłuższa odpowiedź jest twierdząca.
Ładne.
Dobry quizu pytanie.
Dobrze.
>> Tak więc na koniec, sama strona rzeczywiście bardzo proste.
Zauważ, że po I wyjść z trybu PHP, wycofanie że wszystkie te rzeczy w dół
poniżej jest po prostu będzie się pluć z surowego do przeglądarki.
Co jest w porządku, ponieważ chcę, aby wysłać Użytkownik niektóre HTML, ale chcę
dynamicznie aktualizować że HTML.
A jednym ze sposobów można to zrobić jest do sortowania bardzo szybko wracać do PHP
tryb, korzystanie otwarty nawias znak zapytania znak równości, a następnie wyjście wartość
licznika.
>> Lub jeśli to wygląda trochę tajemnicze, to Znak równości jest w rzeczywistości tylko niektóre
za to cukier syntaktyczny printf ($ licznik).
Ale szczerze mówiąc, to trochę brzydki i trochę irytujące, aby wpisać.
Więc PHP bardzo ładnie oferuje tę funkcję gdzie można po prostu powiedzieć, że więcej
zwięźle w taki sam sposób.
>> Więc co się dzieje pod spodem kaptur?
Niech szybko zajrzeć na sieci Zakładka tu na counter.php.
I pozwól mi iść do przodu i pierwszy niech wyczyścić pliki cookie.
Wyjaśnijmy od przeglądania danych Początek czasu.
Teraz wróćmy tutaj.
Teraz przeładuj stronę.
I jestem z powrotem na zero.
Bo moja ręka została pieczęć myte, Mam teraz nowy plik cookie.
>> Rzeczywiście, jeśli spojrzeć na karcie sieciowej i spojrzeć na nagłówki odpowiedzi, ogloszenia
że urządzenie wysyła mnie ciasteczko, którego nazwa jest nieco
arbitralnie, ale rodzaj rozsądnie, PHPSESSID.
I to mi naprawdę to wysyłanie duża liczba losowa.
To nie jest całkiem sporo.
To nie jest całkiem szesnastkowym.
Jest to pewnego rodzaju ciąg alfanumeryczny, ale prawdopodobnie jest to przypadkowe.
I to jest tak, aby ręka stempel mówią, że mam na myśli.
>> Tymczasem jeśli reload, a następnie kliknij spojrzeć na ten drugi dla mojej drugiej linii
wniosek, zawiadomienie, że mój wniosek teraz Nagłówki zawierają PHPSESSID równa to,
nie set-cookie, ale tylko ciasteczka.
I to prezentacja mojej przeglądarki mojego znaczka stronie.
>> Więc teraz jak teaser, a porozmawiamy więcej o tym w tygodniu lub tak, ale
W jaki sposób to zrobić ci wrażliwe, konto Facebook
podatne i inne takie Rachunki narażone?
>> PUBLICZNOŚCI: Jeśli ktoś ma plik cookie.
>> DAVID MALAN: Tak, jeśli ktoś ma swoje ciasteczko.
Mam na myśli naprawdę, podobnie jak niektórzy z was może próbowali w jak klub lub
park rozrywki, jeśli spróbujesz czegoś tak, aby skopiować znaczek, choć
do tyłu na ręce innej osoby, a następnie on lub ona prezentuje to jako
własne, czy to rzeczywiście nie wygląda identyczne, 123456789, a internetowej
Serwer jest najwyraźniej po prostu się do zaufanie, że użytkownik jest tobą.
>> I to jest rzeczywiście podstawowym zagrożenie w dowolnym momencie korzystania z plików cookie
bo jeśli ktoś tak po prostu fałszuje mówić swoje ciasteczko, domyśla się, co to
jest, albo naprawdę kopiowanie patrząc na komputerze
i jest jak, OK.
Ciasteczko Dawida jest JJ3JIK i tak dalej, a następnie są one wystarczająco inteligentny, aby wiedzieć,
Jak sortować ręcznie wysłać, że plik cookie z przeglądarki lub z
Program piszą, mogą całkowicie zalogować się na stronie internetowej, jak ty.
To nie jest trudne, aby udawać, że ktoś inny, chyba że ponownie p-set
dwa, które wprowadzono, co?
>> PUBLICZNOŚCI: Kryptografia.
>> DAVID MALAN: trochę trochę kryptografii.
Proste kryptografii przynajmniej Standard Edition, ale krypto
jednak.
mniej.
Okazuje się, czy szyfrować wszystkie te nagłówki za pomocą czegoś, co
mogą teraz wiedzieć więcej swojsko jak SSL, Secure Socket Layer, lub https:// adresy URL,
wtedy wszystkie te rzeczy, które już zerkając na faktycznie szyfrowane,
co oznacza, że ​​jest to jak ty nie może odczytać znaczek ręki.
Tylko facebook.com może lub google.com, lub w tym przypadku, urządzenie może
Przeczytaj tę pieczęć ręki.
>> Tragicznie, choć i znowu, to jest zbyt właściwe z rzeczy NSA
późno, nawet SSL jest łamliwe.
I nie jest to w rzeczywistości, że trudno nawet złamać to szyfrowanie.
Nie tyle złamanie szyfrowania, ale przez oszukiwanie
przeglądarka do odszyfrowania Dane przedwcześnie.
Ale znowu, będziemy cię drażnić się, że przed długi.
Na razie tylko się bać.
To tragicznie rodzaj prawda.
>> Dobrze.
Więc skąd to się nas opuścić?
Dobrze, zróbmy to.
Idziemy do przodu i podjąć szybkie Teaser przed przerwę.
I myślę, że trochę dłużej pozostawać dzisiaj, ale jedziemy do nurkowania w
coś zupełnie nowy i sexy, które będą zaostrzy apetyt na jeszcze więcej.
Więc to jest zapowiedź.
>> Więc SQL, zaczęliśmy rozmawiać o zawsze tak krótko ostatni raz.
Będziesz naprawdę ubrudzić sobie ręce niektóre z nich w p-set siedmiu.
I laika, co robi SQL -
S-Q-L -
dla Ciebie zrobić?
Co to jest?
Tak.
>> PUBLICZNOŚCI: niech Ci dane dostępu.
>> DAVID MALAN: Tak.
To pozwala ci uzyskać dostęp do danych w bazie danych.
Structured Query Language.
I to jest w zasadzie język programowania.
Są to cechy, które nie będzie nawet w klasie.
Ale skutecznie mogą zdefiniować funkcje.
Nazywa się je przechowywać procedur w języku SQL.
Ale będziemy trzymać go w stosunkowo prosty i po prostu używać go do kilku podstawowych operacji
jak wybranie danych, wprowadzanie danych, aktualizowanie danych i usuwania danych.
>> I naprawdę można myśleć o bazy danych, jak bazy danych SQL, jak tylko
jest program Microsoft Excel.
Ponieważ SQL odnosi się do relacyjnej baza danych, w której
relacja po prostu oznacza, tabele.
Wierszy i kolumn.
Więc wszystko można umieścić w arkuszu kalkulacyjnym tak czy Dokumenty Google,
można umieścić w bazie danych SQL oświadczając tabeli.
>> Teraz, w jaki sposób jest ona dostępna że informacje?
Cóż, z polecenia lub pytania, takie jak to.
SELECT, INSERT, UPDATE i DELETE.
I w przeważającej części, to są cztery tylko składniki trzeba
zrobić coś całkiem mocno w błąd ustawić siedem.
>> Teraz z powrotem w dzień, to faktycznie interakcji z bazą danych w
czarno-biały w okno terminalu migający znak zachęty tak.
I bazy danych mamy uruchomiony na Urządzenie to zwane MySQL, który jest
Aparat bazy danych wolne i otwarte.
Jeśli Google i przeczytać w Wikipedii artykuł, będziesz wiedzieć, że nazwa jest
nieco przejścia dla niektórych wersje Linuksa.
Baza danych jest w rzeczywistości Maria widelec więc mówić o MySQL.
>> Krótko mówiąc, Oracle kupił MySQL.
Oracle jest duża firma.
Ludzie są martwi, że byłoby nie pozostają zupełnie jak open source,
tak, to jest po prostu kopia MySQL to jeszcze wolne, wciąż open source, oraz
zainstalowany w Fedora Linux domyślnie.
>> Ale to jest rodzaj bólu szyi do zapoznania się z
bazy danych w ten sposób.
Więc m.in. w urządzenia CS50 darmowe narzędzie open source o nazwie
phpMyAdmin.
Tylko zbieg okoliczności, że jest napisane w PHP.
Nie ma fundamentalne znaczenie Potrzebujemy dla PHP tutaj.
Ale to tylko narzędzie internetowe, które możemy pobrać za darmo, zainstalowane w
Urządzenie, które pozwala nam na graficzny interfejs użytkownika, z którym
zbadać siedem p-set z bazy danych które do tworzenia nowych baz danych,
powiedzieć do własnego ostatecznego projektu gdybyś jak i ostatecznie stworzyć
dynamiczne strony internetowe, takie jak CS50 Finansów które pozwalają na wyszukiwanie danych i
aktualizuje dynamicznie dane.
>> Nie zamierzamy użyć tylko prosty plik tekstowy lub CSV.
Rzeczywiście można korzystać z bazy danych inteligentnych Program, dzięki czemu można wykonać więcej
wyrafinowanych zapytań niż tylko czytanie przez wszystko liniowo.
>> Tak na przykład, to jest to, co daje Ci z pudełka dla p-set siedmiu.
To jest stół z pozoru przynajmniej Trzy kolumny, z których jeden jest
użytkownika, z których jeden jest ziemniaczane i którego drugi ID.
>> Ale ciekawa rzecz, i tylko wydobyć jedną myśl tutaj, nazwa użytkownika
jest przypuszczalnie już wyjątkowy, prawda?
To znaczy, większość każdej strony, jeśli masz nazwy użytkownika, nie
Nie może być dwóch Caesars.
Nie może być dwóch Malans.
Nie może być dwóch jharvards.
Jego unikalna.
W przeciwnym razie, nie wiedzą, które jharvard jest w rzeczywistości.
Więc co może być motywacją również ma trzecią kolumnę, po lewej
tam nazwie ID, który wygląda Numer, który jest podobnie wyjątkowa?
Czuje się trochę zbędny do mnie na pierwszy rzut oka.
Dlaczego to może być atrakcyjne, aby mieć nie tylko unikalne nazwy użytkowników,
ale również unikalne numery?
>> PUBLICZNOŚCI: Mogli samo hasło.
>> DAVID MALAN: Ludzie mogą mieć samo hasło, na pewno.
Które mogą absolutnie zdarzyć.
Ale jeśli ma to unikalny login, ja twierdzą, że tak naprawdę nie ma
sprawa, bo jeśli wpisać swoje nazwa użytkownika, tylko trzeba sprawdzić ich
hasło, tym ich mieszania.
Dlaczego jeszcze?
>> PUBLICZNOŚCI: Szybsze wyszukiwanie.
>> DAVID MALAN: Szybsze wyszukiwanie.
Dlaczego?
>> PUBLICZNOŚCI: ID jest tylko jeden.
>> DAVID MALAN: ID jest tylko jeden znak, lub dokładniej, jest to liczba,
tak to chyba 32 bity lub coś w tym stylu.
Natomiast nazwa użytkownika, najwyraźniej Jason Się Hirschhorn tam jest coś w rodzaju
absurdalnie długi, a to będzie zajmie mi dużo więcej czasu na ciąg
porównaj H-I-R-S-C-H-H-O-R-N i może / 0 lub coś w tym stylu, w celu
zajrzeć do Jasona, a nie tylko mówiąc mi dać numer użytkownika dwa.
To jest 32 bitów.
To, że jeden INT trzeba porównać.
I rzeczywiście, to jest dokładnie, dlaczego baz danych mają tendencję do przypisywania niepowtarzalnych identyfikatorów
Wiersze w nich.
>> Teraz to, co inne typy danych są tam oprócz INT i najwyraźniej
ciągi takie jak ten?
Cóż, być bardziej właściwe, Baz danych SQL, takie jak
MySQL, mają pola char.
A CHAR trochę myląco nie jest wolny CHAR.
CHAR pole w bazie danych MySQL jest jeden lub więcej znaków, ale to
stałą liczbę znaków.
>> Tak na przykład, jeśli pójdę na celu phpMyAdmin, jak może masz już, lub
wkrótce będzie problemu ustawić siedem, a ja go do mojej bazy danych i tylko dla zabawy,
stwórzmy nową tabelę o nazwie test z zaledwie dwóch kolumn.
Będę następnie kliknij przycisk Przejdź.
I to staje się dość znajomo, zwłaszcza jak majstrować
okolice na własną rękę.
Tutaj mogę wpisać ID, aby utworzyć Nowa tabela typu INT.
Ale tutaj mogę wpisać nazwę użytkownika, aby odtworzyć tę wcześniejszą tabelę.
I zauważyć, mam całą masę rodzajów do wyboru.
>> I to też jest dlaczego phpMyAdmin jest miłe.
Jest to rodzaj samo-nauczania w które może po prostu rodzaj punktu i kliknij przycisk, a
spojrzeć na menu rozwijanych i wnioskować z że to, co uprawnienia SQL daje.
>> I rzeczywiście, jeśli wybiorę CHAR, I następnie muszą określić długość, lub jak
wiele wartości, jak wiele znaków.
Tak bardzo wspólne wartości są takie rzeczy jak 255, ale to trochę długo.
Powszechnie jest osiem o nazwę użytkownika.
Ale to trochę małe te dni.
Więc to jest decyzja projektowa.
Czy jest to 8 max znaków, 32, 255, 1000?
To naprawdę zależy od ciebie.
Ale CHAR pole jest stała liczba.
Wybierz więc zbyt mało i jesteś rodzaju skręcane, jeśli chcesz dłuższą nazwę użytkownika.
Wybierz zbyt wiele, a co minusem?
>> PUBLICZNOŚCI: [niesłyszalne].
>> DAVID MALAN: To marnotrawstwo.
Podobnie jak w C, jeśli masz większe fragment pamięci niż trzeba, jesteś
tylko marnowanie czasu i marnowanie miejsca.
Tak więc, jako alternatywa, istnieje VARCHAR, które rozwiązuje ten problem
Długość leczenia nie w stałej długości, ale jako maksymalnej długości i przy użyciu
zmienna liczba znaków, które następnie ma tendencję do korzystania tylko tyle znaków, jak ty
rzeczywiście trzeba.
Brzmi idealnie.
>> Dlaczego nie możemy się pozbyć Char data wpisz wtedy?
Co może być minusem używając varchars, który brzmi
jak to jest ładne zwycięstwo?
Tak?
>> PUBLICZNOŚCI: [niesłyszalne].
>> DAVID MALAN: OK, dobrze.
Tak więc, jeśli wszystkie dane są takie same długości, co jest problemem?
>> PUBLICZNOŚCI: Bo marnujesz dane, mówiąc im wszystko.
>> DAVID MALAN: Więc jeśli wszystkie dane są samą długość, jednak jestem zdania,
określenie, że maksymalna rozpiętość na VARCHAR nie różni się od
określając stałą długość na Char, jeśli wiesz, że numer w góry.
Ale jest rzeczywiście, a ja coś w rodzaju wyciąg z tej odpowiedzi rzeczywistości
że jest jeszcze max, które mogłyby być irytujące, zwłaszcza jeśli
napotkać nazwisko osoby, która jest niezwykle długi, że nie zrobił
przewidywania.
I to jest też trochę mniej wydajny faktycznie wyszukiwać varchars jako
przeciwieństwie do poszukujących znaki, zwłaszcza na długich stołach, które mają dużą i
wiele danych.
Tak więc również tutaj ponownie tematyczna no oczywistym wyborem.
>> Tak po prostu, aby dać poczucie inne typy danych, które mogą być interesujące
albo dla p-set siedmiu lub przyszłość, jest INT.
Jest BIGINT, które to jak długo, długo.
To wydaje się być 64 bity.
Jest dziesiętny, który można zobaczyć w Zestaw problemem, który jest znacznie
Odpowiedź cleaner do problemów, które spotkałem się z pływaka i pływające
nieścisłości punkt.
A wtedy nie DATETIME.
Jest dosłownie typ danych, który ma wyglądać jak rok, miesiąc, dzień,
i godziny, minuty i sekundy.
>> Ale mają również baz danych SQL rzeczy, nazwijmy indeksów.
A index jest coś, co określić podczas tworzenia tabeli do
dokonać wyszukiwania i inne operacje bardziej wydajne.
W szczególności, jest coś, co nazywa indeks podstawowy, że można
oświadczam co następuje.
>> Zrobiliśmy to dla ciebie z tabela użytkowników dajemy ci.
Zauważmy jednak, gdybym ręcznie odtwarzając Stół użytkownicy tutaj dając
to nazwa użytkownika.
I już określone ID.
I podano INT.
I podano nazwy użytkownika z maksymalnie 32 znaków.
Ale jeśli będziemy się przesuwać w ten dość szerokie okno, zauważysz
Kilka innych rzeczy mogę określić.
>> One, można określić atrybuty jak, wiesz co, to
INT powinien być podpisany.
Nie chcę liczb ujemnych, więc zróbmy to UNSIGNED.
Null, nie ma znaczenia tutaj, bo Chcę każdego użytkownika
ma niepowtarzalny numer.
I nie ma to być null.
>> Ale to jest ciekawe.
Można określić, że ID jest albo Klucz podstawowy z tej bazy danych, czy to
wyjątkowy, lub to indeksowane, albo pełny tekst.
Tak więc dla dzisiejszych potrzeb, długa historia krótkie, pierwotna oznacza, że ​​musi to
być zarówno koncepcyjnie i technicznie Pole, które możemy użyć, aby jednoznacznie
identyfikacji użytkowników.
>> Więc kiedy patrzymy się użytkowników, to sort z obietnicą, aby znaleźć je w większości przez
to unikalny identyfikator.
A baza danych zapewnia, że ​​jeśli posiada numer użytkownika 3, nie można
fizycznie wstawić innego użytkownika z tym samym 3 nr.
Baza danych będzie po prostu odmówić , aby zapisać zmiany.
Która jest dobra rzecz, ponieważ można chronić się przed siebie. ja
>> Alternatywnie, dla nazwy użytkownika.
Więc drugi rząd, przypomnijmy, jest pole nazwa użytkownika.
Więc tu jest drugi rząd nazwę użytkownika, jak my się po lewej stronie tam.
>> Więc co jeszcze może chcę podać?
Nie wolno mi, zgodnie z SQL, określić dwa klucze podstawowe.
można określić wspólny klucz, w którym spojrzeć na obu polach, ale nie mogą
indywidualnie za klucze podstawowe.
Więc to nie wchodzi w rachubę.
Więc co może chcę wybrać?
>> Cóż, jest wyjątkowe w duchu podobnym do klucz podstawowy, w którym określenie to
Pole musi być unikalny, ale nie będzie jeden
Używam cały czas.
I nie będziemy korzystać z tego jednego wszystko Czas jakiego powodu jeszcze raz?
To potencjalnie jeśli wolniej to długa nazwa użytkownika.
To tylko strata czasu.
>> INDEKS, w międzyczasie, określa, że ​​jest to nie będzie wyjątkowy, ale chcę
pracę pod swoją magię kaptur zrobić to szybciej dla mnie
szukaj w tej dziedzinie.
Więc to chyba nie jest tutaj istotne.
Dla użytkownika, chciałbym twierdzić, że UNIQUE jest dobra odpowiedź.
Ale załóżmy, że zrobiliśmy więcej użytkowników interesujące niż tylko nazwy użytkowników,
skróty i numery identyfikacyjne.
Co zrobić, jeśli daliśmy ludziom pełne nazwy?
Co zrobić, jeśli daliśmy im adresy i inne dane o nich?
>> Cóż, jeśli można określić, że kolumna w Baza danych jest indeksowana, co oznacza, że
MySQL lub Oracle, lub cokolwiek w bazie używasz, powinien pracować jej magii
i użyć jakiegoś ozdobnego danych Struktura jak drzewo, albo, albo trie
hash tabeli, lub coś w celu zagwarantowania że podczas wyszukiwania danych za pomocą
wybierz na tej konkretnej dziedzinie -
jak mi pokazać wszystkim, że mieszka na Oxford Street.
Zapytanie tak.
Jeśli z góry określone, że chcesz indeks na tym polu,
wyszukiwania będzie o wiele szybciej.
>> Jeśli nie określisz indeksu, najlepiej można zrobić, to wyszukiwanie liniowe, jeśli
to nie jest klasyfikowane.
Ale jeśli podasz INDEX, inteligentny ludzie, którzy się do bazy danych -
ludzie tacy jak ty, którzy teraz wiedzą drzewa i stara i tabele z cebulą -
automatycznie zbudować taki dane Struktura w pamięci RAM, aby upewnić się, że
te pytania są o wiele szybsze.
>> PEŁNOTEKSTOWE tymczasem jest podobny w duchu, ale pozwala zrobić wieloznacznego
pytania, jak mi pokazać wszystkim, że mieszka na ulicach, które zaczynają się
litera O z jakiegokolwiek powodu.
Możesz zrobić wyszukiwań wieloznacznych tak.
Lub, bardziej istotne rzeczy, jak pokazują mnie każdy, kto posiada słowo -
pokaż mi wszystkich, których nazwa zaczyna się od w szczególności list.
Możesz wyszukać słów kluczowych w ten sposób.
Dobrze.
>> Tak więc, możliwości projektowe istnieje potencjalnie.
Są inni, że będę fala w swoje ręce.
Okazuje się, że można mieć różne silniki do przechowywania.
I to jest więcej niż potrzebujemy Arcane na pewno do problemu ustawić siedem.
Domyślnie wy korzystania coś, co nazywa InnoDB.
Zobaczysz wzmiankę o tym gdzieś w interfejs phpMyAdmin najbardziej prawdopodobne.
Ale wiem, że są inne projekty Decyzje, które mają potencjał
odsetek projektów końcowych, jeśli się coś zrobić na stronie internetowej.
>> Ale zróbmy to.
Idziemy do przodu i umieścić to na Ekran jak teaser do historii
udziałem cię, współlokator, i szklankę mleka.
Weźmy dwie minuty lub tak złamać tutaj.
I czy można trzymać się, niech się wstecz, spojrzeć nieco bardziej na SQL i
następnie nieco JavaScriptu z p-set osiem w umyśle.
>> Dobrze.
Więc przejdźmy planujesz Sprawa, która może rogu pojawiają się bardzo łatwo
W związku z zastosowaniem bazy danych, czy szczerze mówiąc, nawet przy użyciu prawdziwego świata rzeczy
jak bankomaty, aby zdobyć pieniądze.
Tak tu jest lodówka.
Załóżmy, że masz też w jednym Twój akademiku lub domu.
I masz jedną współlokatorkę, a obie naprawdę lubisz mleka, na przykład.
>> Więc wróciłem do domu z klasy jeden dzień.
On lub ona nie jest jeszcze powrotem.
Otwierasz lodówkę.
Naprawdę chcesz dużą szklankę mleka.
Nie ma mleka.
Więc co zrobić?
Zamykasz lodówkę.
Chwycić kluczy.
Udać się na plac.
I można dostać w kolejce w CVS w tych rzeczy na własny Checkout, które zawsze
trwać dłużej niż w rzeczywistości mając kasjerów.
Tak czy inaczej.
>> Tak więc, w międzyczasie, dot dot dot, twój współlokator wróci do domu, a on lub ona
podobnie ma tęsknota jakiegoś mleka.
Więc on otwiera lodówkę, wygląda w środku, i oh, cholera.
Bez mleka.
Więc on kieruje się, dzieje się udać drugiej CVS, który był jedynym
blokują wyjazd z jakiegoś powodu, a on lub ona się w kolejce, aby kupić trochę mleka.
>> Tymczasem, można dojść do domu, lub ona wraca do domu, i co zrobić
ostatecznie mają?
Dwa razy tyle mleka.
Ale tak naprawdę nie lubię mleka tyle.
Więc teraz masz tyle mleka, że ​​teraz jeden z nich jest po prostu pójdzie kwaśny
ostatecznie.
Więc to jest bardzo złe problem.
Prawda?
>> Więc co się stało?
Więc zasadniczo, jest to rodzaj od śmiesznej przykład.
Ale pod maską, co mieliśmy stało tu jest oboje sprawdzone
stan niektórych części pamięci, lodówka.
Oboje sprawdzili stan pewnej zmiennej.
Oboje wyciągnął wniosek, że wtedy działał dalej.
Ale niestety, podczas gdy twój współlokator był w sklepie, że stan
Zmienna zmienił, on wrócił i teraz chce zmienić stan, ale
to już zmienił na niego.
I oczywiście, on lub ona nie miałaby poszedł do sklepu, gdyby wiedzieli,
które były już w drodze.
>> Tak w świecie rzeczywistym, jak mogłeś uniknąć tego problemu, zakładając, że masz
lodówka, masz współlokatora, i rzeczywiście lubią mleko?
>> PUBLICZNOŚCI: Komunikacja.
>> DAVID MALAN: Komunikacja.
OK.
Ale jak można komunikować?
>> PUBLICZNOŚCI: Zostaw notatkę.
>> DAVID MALAN: Zostaw uwagę, prawda?
Zawsze zostawić notatkę, na fanów serialu.
W porządku, więc zawsze zostawić notatkę, lub umieścić naprawdę jak na kłódkę lub coś
w lodówce, który utrzymuje współlokator z kontroli stanu
że zmienna.
>> Teraz, dlaczego to może być germane do Problem ustawić siedem lub do bankomatów.
Cóż, wyobraź sobie świat, w którym w bankomacie może być w stanie pójść do bankomatu
Maszyna tutaj, a inny ATM tutaj.
A to zdarza się dość często.
I załóżmy, że miał dwie karty bankomatowe, jaki jest możliwy do uzyskania.
I zalogować się do obu maszyn skutecznie jednocześnie, miejmy nadzieję,
, podczas gdy nikt nie patrzy.
A następnie wpisać kod PIN mniej więcej jednocześnie.
A następnie zrobić kwerendę balansu aby zobaczyć ile pieniędzy masz.
I powiedzmy, że masz 100 dolarów pozostawił na koncie.
Więc w zasadzie jednocześnie, można powiedzieć, jeden, zero, zero, wprowadź.
I mam nadzieję, że wrócę trochę pieniędzy.
>> Ale ile pieniędzy można dostać z powrotem?
Obecnie komputery na koniec dnia zwłaszcza jeśli rozmawiasz
serwery, nie muszą robić rzeczy w kolejności oczekuje.
>> Tak więc przypuszczać, co dzieje się z powodu niezależnie od prędkości sieci tam problemy
to, czy są problemy z procesorem, lub coś nie tak, przypuszczam, że
Pierwszy bankomat sprawdza równowagę i widzi, och, ta osoba ma 100 dolarów.
Ale wtedy zostanie rozproszony, ponieważ może backup się dzieje i dlatego
spowolnienie.
A może podczas sprawdzania, sieci gra się trochę wolniej, bo
to się po prostu dzieje.
Są urządzenia fizyczne.
Tak więc w międzyczasie, drugi ATM zadaje to samo pytanie.
Ile pieniędzy David ma? 100 dolarów jest odpowiedź.
Ale dlatego, że pierwszy jeszcze nie bankomat wysłana wiadomość odejmij $ 100, zarówno
Bankomaty są kontrolowane skarbca banku, widząc tam 100 dolarów tam, i teraz
obie maszyny są potencjalnie będzie wypluwać odpowiedź.
>> Teraz, to jest dobre dla ciebie w pewnym sensie czy to, co bank robi ostatecznie
jest zmienić ilość do minus 100 przez ustawienie zmiennej równa Twój
rachunek bankowy równa 0, w przeciwieństwie do robienia minus 100.
Teraz w najgorszym przypadku dla banku -
lub w najlepszym dla banku, w międzyczasie, dają ci 200 dolarów, a
konta bankowego pokazuje teraz ujemna 100 dolarów, które tak naprawdę nie
korzystać ci w ogóle.
Ale chodzi o to, że ten wyścig Stan dwóch współlokatorów coraz
mleko, lub dla dwóch bankomatów próbujących zdobyć gotówkę i zmienić stan skarbca
w tym samym czasie istnieje jakiekolwiek czas masz bazę danych.
>> Teraz w błąd ustawić siedem, ten problem pojawia się w tym sensie, że jeśli kupisz
Udział Facebooka magazynie, a następnie na Instancja kupić drugą część
Facebook photography, musisz dokonać decyzja programisty.
W celu podjęcia decyzji, jak zaktualizować bazy danych, kursy będziesz
mają jeden wiersz dla tego stada, a to jest jeden sposób, aby go wdrożyć.
I masz zamiar mieć jeden udział FB, która jest symbolem ich giełdowy
dla tej nazwy użytkownika lub użytkownika ID, unikalny identyfikator.
>> Ale sama historia może się zdarzyć tutaj.
Jeśli do SELECT w SQL, jak zobaczysz w błąd ustawić siedem, gdy widzisz,
Och, David ma jedna akcja z Facebooka magazynie.
Chciałbym teraz zmienić na dwa akcji, w bo chce kupić
Drugi akcji.
Ale załóżmy, że rzeczywiście miał dwa David otwarte okna przeglądarki, a przypuszczam, że
to wspólne konto z małżonków, i jak z nich starają się wykonać
sama operacja, tam też potencjał istnieje dla decyzji, które mają być
wykonane w oparciu o poprzednie stan świata -
konto ma jedną akcję -
i obie osoby, lub oba serwery, teraz spróbuj powiedzieć zwiększyć go do dwóch akcji.
Ale w tym przypadku, może być pobierana mi pieniądze zarówno dla akcji, ale
zwiększany tylko ten jeden raz.
>> Tak w skrócie, podstawowy problem tutaj, jak z dowcipu o opuszczeniu
pamiętać, wprowadzanie kłódkę na nim, jest jeśli dwie osoby lub dwa wątki -
że powrót do podstaw -
Można sprawdzić stan jakiejś zmiennej , a następnie spróbować zmienić tę zmienną,
ale te dwie rzeczy nie zdarzają się w w tym samym czasie, ale może się przerwać
przez innych, co dzieje się, dane mogą dostać się do stanu bardzo dziwne.
I można korzystać lub możesz cierpieć w sensie przykładu pieniędzy.
>> Więc w błąd ustawić siedem, dajemy ta jedna linia kodu, który długo
opowiadanie, rozwiązuje ten Problem w MySQL.
To bardzo długa instrukcja, która nie nawet zmieścić się na jednej linii na
Ekran zapewnia, że ​​tu praca jest to, co się nazywa atomowej.
To wszystko dzieje się na raz, lub to nie zdarza się w ogóle.
To bardzo długa fraza nie może się przerwał częściowo.
>> I co robi to dosłownie to co mówi.
Wstawić do jakiejś tabeli następujące trzy pola te szczególne wartości,
ale na duplikatu klucza, nie rób wkładkę.
Wykonać aktualizację.
Tak to jest jak robi SELECT i INSERT niejako w tym samym czasie.
I to, co jest kluczem, który prawdopodobnie są określone tutaj?
>> Okazuje się, i zobaczysz to w Problem ustawić siedem w specyfikacji, ponieważ
mamy zadeklarowane tam być unikalny klucz na tym właśnie stole tak, że
nie można mieć wiele wierszy dla tego samego użytkownika z
sam symbol stock penny -
w tym przykładzie tutaj, DVN.V jest głupie, że czas grosza
znajdują się w specyfikacji.
Ponieważ mamy oświadczył, że jest wyjątkowy, oznacza to, że jeśli
próby wstawienia duplikat wiersz, jesteś zamiast iść do aktualizacji bez
ktoś jeszcze ma szansę na zmianę stan świata albo.
Tak więc, w skrócie, co zapewnia rzeczy są atomowej.
>> Bardziej ogólnie chociaż, bazy danych jak MySQL -
i nie trzeba tę funkcję p-set siedem, ale zachować je w pamięci na
przyszłość -
obsługuje tak zwane transakcje, , gdzie można powiedzieć,
Rozpoczęcie transakcji dosłownie.
Następnie można wykonać dwa SQL.
A SQL, jak zobaczysz w p-zestaw siedmiu, wygląda trochę
coś takiego.
Aktualizacja tabeli o nazwie konta.
Ustaw kolumnę równowagi równą co Obecnie kolumna Saldo
jest minus 1000, gdy liczba, tym Numer konta, jak identyfikator użytkownika,
wynosi 2, a następnie zaktualizować konto dot dot dot.
>> Więc w laika, co te dwa pytania wydają się robić w
prawdziwy sens świata bankowości?
>> PUBLICZNOŚCI: Transfer do oszczędności.
>> DAVID MALAN: Dokładnie.
Przeniesienie środków z jednego konto do innego.
I to jest kolejny przykład, w którym naprawdę chcesz te dwie rzeczy się zdarzyć
czy nie stało.
Nie chcesz coś dostać w środkowy z nich i potencjalnie zepsuć
matematyka lub bałagan, ile masz pieniędzy, ani ile
pieniędzy bank ma.
Więc co jest naprawdę ładny o transakcjach w MySQL jest to, że i
Bazy ogólnie, jest to, że i inteligentnych ludzi, którzy już wdrożone
cechy te dowiedzieć się jak zrobić upewnić się, że obie te rzeczy się
lub wcale.
>> A jeśli jesteś naprawdę aspiruje do Strona, która jest używana przez ludzi na
campus, ludzie w rzeczywistym świecie, robi coś na starcie sensie
Wśród nich jest rodzaj decyzje projektowe, które
się jeszcze tak ważna.
W przeciwnym razie, zaczniesz tracić dane, tracą użytkowników, lub w najgorszym przypadku, jak
widzieliśmy tutaj, potencjalnie stracić pieniądze.
Więc znowu, więcej o tym w problemu ustawić siedem, a także być może w niektórych
Ci w ostatnich projektów.
>> Warto więc zmienić ten obraz mieliśmy chwilę temu tylko w jeden sposób.
Więc pozwól mi faktycznie zobaczyć, czy mogę -
Nie, że nie ma.
Jest.
>> Tak to jest, gdy wyszliśmy ostatni.
I okazuje się, mamy zamiar wrzucić jeszcze jedno w mix tutaj -
Język nazywa JavaScript.
Więc JavaScript rzeczywiście pasuje w tym kawałku -
a ja nie bardzo pozostawić wystarczającą ilość miejsca, więc to nie jest teraz w skali.
OK, to jest naprawdę żałosne.
OK, więc to jest JavaScript.
Dobrze.
Jestem naprawdę robi to krzywdę.
Dobrze.
>> Więc JavaScript jest inny programowania język, a ostatni, jeśli pomaga
zapewnić, że nie ma wiele więcej z hydrantów przeciwpożarowych tutaj.
Więc JavaScript jest interpretowany język, co oznacza, że ​​nie
skompilować go do zer i jedynek.
Wystarczy go uruchomić.
Ale co zasadniczo różni się JavaScript zwykle jest to, że
nie uruchomić go na serwerze WWW.
Nie ma się uruchomić w Urządzenie takie.
Raczej robi pobrany przez użytkownika poprzez HTTP do przeglądarki -
Chrome, Safari, Internet Explorer, Firefox, co -
i to jest przeglądarka, która wykonuje to szczególności język programowania.
>> Tak więc stało się jasne, PHP dotąd nie było wykonywane zarówno w linii poleceń w
nasze czarno-białe okna, na serwerze jak urządzenia, komputer
jak urządzenia, albo to było wykonywane przez serwer WWW
uruchomiony na komputerze.
Ale tematem jest to, że do tej pory PHP została wykonana po stronie serwera, tak
użytkownika i przeglądarka użytkownika nigdy linii kodu PHP widzi.
>> W rzeczywistości, jeśli kiedykolwiek otworzyć przeglądarkę Twoja strona lub inny i ty
rzeczywiście zobaczyć kod PHP w oknie, ktoś spieprzył.
Bo to nie miał być wysłana do przeglądarki bezpośrednio.
To ma być wykonany i zwrócił w coś HTML.
>> Ale JavaScript jest zasadniczo przeciwnie.
To ma być uruchamiane typowo wewnątrz od użytkownika okna przeglądarki.
A jakie rodzaje witryn używać JavaScript to te dni?
>> Podobnie jak dosłownie każdą popularną stronę internetową.
Każda strona, że ​​chłopaki prawdopodobnie używać codziennie używać JavaScript dla
Najprostszym, a nawet najseksowniejszych funkcje.
>> Więc coś w Facebook Czat jeśli użyć.
Jak to właściwie działa?
Cóż do tej pory, wszystkie rzeczy mamy wykonane z HTML i PHP zakłada, że
można wyciągnąć adres URL, i naciśnij klawisz Enter, i widzisz jakieś treści HTML.
I kliknij na link, który zmienia URL, zmienia stronę i ładuje
niektóre nowe treści.
Kliknij inny adres URL lub złożyć formularz, się wymknąć do innej strony i
widzisz jakieś nowe treści.
>> Ale za pomocą coś jak Facebook Chat, lub Gchat lub Google Maps, rzadko
nie cała strona odświeżyć takie, że widzisz biały ekran na chwilę i
to nowa treść.
Raczej, strony internetowe są dziś dynamicznie zaczyna aktualizacja ponownie i
znowu i znowu wszystko sort z za kulisami.
I okazuje się, że gdy pójdziesz do coś jak Facebook lub Gchat,
lub Gmail, oraz aktualizacje strony automatycznie bez przeładowywania
cały ekran, co się stało jest to, że Twoja przeglądarka uczynił rodzaj tajemnicy
- dodatkowe żądania HTTP
nie dla całych stron internetowych, ale tylko dla małe porcje danych, takie jak
wiadomości błyskawicznej, że twój przyjaciel tylko cię przysłał, lub aktualizację statusu,
ktoś po prostu cię przysłał, lub ćwierkanie , że ktoś po prostu wysłana.
To właśnie czyni mało wniosków o danych, a następnie przy użyciu JavaScript, twoja
język programowania, aby zmienić to, co strona wygląda bez
Serwer pomoc, bez serwera generowania tego kodu HTML.
>> Tak w skrócie, JavaScript może być stosowany wtedy nie tylko pobrać nowe dane z
serwer bez przeładowywania całej strona lub przesłanie formularza.
Może być również użyty do zmiany tzw DOM -
Document Object Model -
który jest tylko fantazyjny sposób na mówiąc drzewo HTML
, które widzieliśmy ostatnio.
>> Tak więc, aby zapewnić, JavaScript jest składniowo tak podobny do C, jak również.
Nie ma główną funkcją.
Po prostu zacząć pisać kod i zostanie on wykonany, lub
interpretowane bardziej prawidłowo.
Warunki będą wyglądać tak.
Nie różni się od C lub PHP dla tej sprawy.
Wyrażenia logiczne lub-ed razem będzie wyglądać tak.
AND razem wyglądać.
>> Przełączniki będzie wyglądać tak.
Na pętli będzie wyglądać tak.
Podczas okrążenia będzie wyglądać tak.
Czy podczas pętli będzie wyglądać tak.
>> Jest to nowa.
Więc JavaScript nie foreach skonstruowania per se, ale to skonstruowania
dla i zmiennej w tablicy, a ja w tym Sprawa staje się wartość indeksu.
Więc to jest trochę inna od foreach, choć nowe wersje
JavaScript wychodzą cały czas, więc nawet te język dysponuje
ewoluują.
>> A na marginesie, JavaScript tych dni Można również stosować na serwerze, tak jak
PHP za pomocą ramy nazwie Node.js.
Jednym z TF CS50 jest, Kevin, doprowadziło Seminarium na Node.js, które są dostępne w
cs50.net/seminars.
Więc jeśli jesteś ciekaw, wiem, że jesteś mogą korzystać z tego po stronie serwera, jak
dobrze, ale to jest dość niedawno tendencja, ale potężny na tym.
>> To jest trochę inaczej.
To jest tablica w języku JavaScript.
I co uderza cię w inny w porównaniu z C lub PHP?
Istnieje kilka szybkich historie możemy powiedzieć tutaj.
Czego brakuje w porównaniu z PHP?
>> PUBLICZNOŚCI: [niesłyszalne].
>> DAVID MALAN: Tak?
Niestety, powtarzam jeszcze raz?
>> PUBLICZNOŚCI: Nie deklarując typ zmiennej.
>> DAVID MALAN: My nie deklarując typ zmiennej.
Więc całkiem jak PHP, nie jesteśmy określenia rodzajów tej zmiennej.
Raczej jesteśmy bardziej ogólnie mówiąc var dla zmiennej.
Nie mamy uciążliwości z PHP znak dolara, który podczas żmudnego
typ, czyni bardziej jasne, że coś jest zmienna.
Podczas gdy tutaj, jesteśmy jakby z powrotem do C podejście po prostu dzwoniąc
zmienna o nazwie chcemy dać to, jak liczby.
A także, jak PHP, mamy nawiasy kwadratowe dla
wartości wewnątrz tablicy.
>> Tak więc zmienne w JavaScript również może wyglądać tak.
Zauważcie, że jest to ciąg nazywa s, ale podobnie nie możemy określić
że jest to ciąg.
Tu jednak jest to funkcja, która nie istnieją w taki sam sposób, w PHP,
ale trochę podobnie.
Jest to obiekt w JavaScript.
I obiekty są rodzajem Armii Szwajcarskiej Nóż struktury danych, w które
Można ich używać do dowolnej liczby rzeczy.
>> Tutaj, na przykład, mamy deklarowania zmienną ofertę.
Typ zmiennej jest obiekt.
Można myśleć o tym, jak struct C , który ma klucze i wartości.
Symbol jest kluczem.
FB jest wartość, widocznie symbol stock.
Przecinek.
Cena jest kolejnym kluczowym, a jego wartość jest najwyraźniej zmiennoprzecinkowe, lub
liczba ogólnie w JavaScript, z 49,26 dolarów.
>> Więc PHP nie ma -
nie widzieliśmy w obiektach PHP dość tak, ale widzieliśmy analogowej,
co było, co?
>> PUBLICZNOŚCI: [niesłyszalne].
>> DAVID MALAN: Tablice asocjacyjne.
Tak więc podczas gdy PHP ma tablic asocjacyjnych , którego składnia jest zawsze nieco tak
inny -
widzieliśmy nawiasów kwadratowych.
Widzieliśmy dziwne strzałki symbole.
JavaScript ma obiektów, ale jest to głównie różnica semantyczna i
inna synonimem teraz.
Jednak, jak na bok, PHP ma również obiektów w sposób, który Java i inne
języki mają obiekty w programowanie obiektowe.
Ale będziemy z nich korzystać tylko dla typów danych do teraz.
Obiekty i tablice asocjacyjne.
>> Ta jedna może zrobić to trochę bardziej jasne.
Oto dlaczego obiekt jest przydatny.
Jeśli chcesz zadeklarować ucznia, jak Zamyla, możemy rzeczywiście
symbolizować niejako wewnątrz że Obiekt przy użyciu nawiasów wsporniki jak
zanim cały pęk kluczy i wartości w tutaj.
Mamy ID, dom, i nazwę Zamyla, a po nim średnik jako
Zazwyczaj pod koniec.
>> Tu też jest nieznacznie inna, ale również bardzo silny
te dni.
Oto tablica, i wiem, że z powodu tam jest plac się uchwyt
top i nawias kwadratowy u dołu.
I to jest tablica, jakie dane wpisz najwyraźniej w JavaScript?
To jest tablica wygląda jak trzech obiektów.
I wiem, że to tylko obiekt ze względu na klamrach.
I zauważysz otwarta klamra kręcone, niektóre rzeczy, blisko klamra kręcone, przecinek,
następnie kilka, przecinek, i jeszcze trochę więcej.
Więc to trzy argumenty oddzielone dwoma przecinkami.
>> Więc to jest tablica z trzech obiektów.
I każdy z tych obiektów wydaje się być członek student lub pracownicy niektórych
sort, każdy z identyfikatorem, dom i nazwa.
Ale ja nazywa to coś nazywa JSON -
JavaScript Object Notation.
I jest to format danych, które w rzeczywistości Jest więc bardzo popularne w
vogue te dni, że jeśli piszesz Aplikacja korzystająca z Facebooka
API, Twitter API, naprawdę prawie każdy API tam tych dni,
w tym niektóre z własnego CS50 jest, Dane wrócisz nie jest w
old school w formacie CSV.
>> Ponieważ przypomnieć, że CSV jest bardzo prosta.
To jest zaledwie kolumny oddzielone przecinkami.
JSON danych daje więcej metadanych.
Skupia Klucz z każdej wartości, tak nie trzeba zakładać, że
Kolumna zerowe jest jedna wartość, kolumna z nich jest inna, kolumna dwa jest inny.
Wszystko w obiekcie JSON tutaj jest swego z samo-opisujący, ponieważ każdy
jedno z nazwisk w tym pliku ma dosłownie Nazwa przed nim jako
cudzysłowiu.
>> Warto więc przyjrzeć się Kilka przykładów tutaj.
Pozwól mi wejść do urządzenia.
I pozwól mi odejść do naszego vhost do katalogu publicznego.
I pozwól mi iść do Katalog JavaScript.
I idziemy dalej i otworzyć dom-0.html, gdzie DOM tylko oznacza
Document Object Model.
Jest to drzewo, do którego stuff I, o którym mowa wcześniej.
>> I pozwól mi zaproponować następujące.
Oto strona internetowa, której Ciało jest dość prosta.
Więc tu, na dole, zawiadomienia Mam formularz.
Widzieliśmy te przed.
Posiada dwa wejścia, z których jeden ma Numer nazwy, z których jeden ma typ
przedstawienia, a pierwszy czyjaś typ jest tekst.
Więc to rzeczywiście brzmi dość prosta.
>> Chodźmy tutaj.
Wróćmy do tej strony tutaj.
Chodźmy na localhost, i przejść do nasz katalog JavaScript, i przejść do
dom-0, a tu mamy ten formularz.
Więc to jest najwyraźniej wszystko to strona robi.
Ma pole nazwy z przycisk Prześlij.
Ale ja nie zamierzam używać PHP tutaj.
Zamierzam zrobić wszystko po stronie klienta że tak powiem w JavaScript w następujący sposób.
>> Zauważ, że ja rzeczywiście otrzymał nazwę Pole tego wejścia unikalnej
identyfikator, który będzie rzeczywiście zapisać mi trochę czasu w jednej chwili.
I zauważyć, że wprowadziliśmy inny znacznik w głowie mojej stronie internetowej,
tag.
>> Więc jest to w tym sensie, że JavaScript jest client-side język programowania.
W tym przypadku, podobnie jak CSS, wrzuciłem to proste wewnątrz mojego HTML.
Zauważmy jednak, mam zadeklarowanych funkcji , który wygląda trochę jak PHP
składniowo, ale w rzeczywistości jest to JavaScript, bo znowu, to jest
po stronie klienta w przeglądarce.
I weź wiecie co to będzie zrobić, nawet jeśli niektóre z składni
tutaj jest nowy.
>> PUBLICZNOŚCI: Przywitaj się z kimkolwiek.
>> DAVID MALAN: To się przywitać aby każdy, kto odwiedza tę stronę.
Więc jak?
>> Więc uprzedzenia, okazuje się w JavaScript jest funkcja alert ().
To jest bardzo rodzaj smutnego funkcji, tak naprawdę ma tendencję do drażnić użytkowników.
To nie jest jeden naprawdę powinieneś użyć zazwyczaj, ale szybkie i brudne
sposób coś w rodzaju drukowania do graficznego użytkownika
Interfejs, podobnie jak przeglądarki.
Zauważcie, że mam Łańcuch w pojedynczych cudzysłowach.
Okazuje się, że w przeciwieństwie do C, JavaScript może faktycznie nie używasz single
cytaty, i szczerze mówiąc to tylko rodzaj w konwencji stylistycznej między
Programiści JavaScript używać apostrofów.
PHP, rzeczywiście mają lekko inne znaczenie.
Ale teraz, po prostu wiem, że to jest jedyny powód.
Konwencja w JavaScript jest często używać apostrofów, ale możemy użyć
cudzysłów w obu miejscach.
>> Więc to jest interesujące.
Przypomnijmy, ostatni raz, że mieliśmy, że obraz na ekranie, dzięki którym drzewo
gdzie miał węzeł HTML oraz węzeł głowy i węzeł ciała,
a potem jakiś tekst.
Ale był jeden węzeł w specjalnej górze, że zadzwoniłem do dokumentu.
Cóż, okazuje się, w JavaScript, każdy Czas napisać program w JavaScript
w przeglądarce, użytkownik ma dostęp do specjalny zmienna globalna.
W duchu podobnym do superglobals PHP, ten nazywa się
wszystkie małe dokument.
>> To jak struktury, ale to struct posiada również funkcje wewnątrz niego.
Więc struct C ma tylko dane zazwyczaj.
Ale jak ten obiekt JavaScript technicznie jest również wyposażony w funkcje,
zwie metod, w jej wnętrzu.
I można wywołać funkcję wewnątrz ten obiekt dosłownie robi swoje
nazwa, kropka, a następnie nazwę funkcja lub kolejny sposób.
To jest po prostu synonimem, naprawdę.
>> I co ta funkcja zrobić?
Można trochę domyślić z nazwy.
Pobierz elementu przez ID.
Więc to będzie sprawdzić na stronie internetowej, sprawdzić to drzewo, szuka
bez względu na węzeł, AKA elementem, ma unikatowy identyfikator z nazwą Koniec cytatu.
I co ja mam teraz zrobić?
Zamierzam uzyskać wartość wewnątrz że węzeł w drzewie, i mam zamiar
jakoś przywitać się tą nazwą.
>> Więc zgadywać, chociaż nie mam widziałem tego jeszcze, co zrobić oraz
symbole oznaczają tutaj i tutaj chyba?
>> PUBLICZNOŚCI: Łączy.
>> DAVID MALAN: Łączy.
Prawo, i to tylko rodzaj projektowania decyzje
ludzie się lata temu.
W PHP można łączyć rzeczy z kropkami.
W C, skakać przez kilka obręcze i funkcje, takie jak strCopyDatabaseOK () lub zadzwoń
strcat () lub inne takie funkcje.
Ale w JavaScript, używasz plusy.
Więc to jest po prostu łącząc trzy ciągi -
witam, nazwisko, a następnie wykrzyknik.
>> Tak więc, kiedy i dlaczego jest to funkcja nazywa chociaż?
No, zgadnij z HTML na dole.
Dlaczego pozdrawiam () nazywa się, lub kiedy?
>> Podobno, jak najlepiej mogę powiedzieć, na złożyć, gdy formularz jest złożony,
Zamierzam zrobić wszystko, co jest wewnątrz tych cytatów.
A konkretnie, zamierzam zadzwonić pozdrawiam (), a następnie zwraca wartość false.
>> Cóż, zobaczymy, co netto Efekt tego jest pierwszy.
Więc pozwól mi iść do przodu, a następnie wpisz w, powiedzmy, Loren, Zatwierdź.
Witaj Loren.
Zobaczmy, czy może to była tylko szczęście wdrożenie.
Nie.
Więc to, co wpisywać się nazwa faktycznie umieścić tam.
>> Jednak zauważyć, co nie zmienia.
Adres URL jest jeszcze dom-0.html.
Nie ma register.php.
Nie ma drugiego pliku.
Nie ma atrybut działania.
Więc co to jest return false przypuszczalnie robi?
Dlaczego dzwoni pozdrawiam (), a następnie powrót fałszywe prawdopodobnie?
Co zwykle dzieje się po kliknięciu Złożyć na formularzu, że nawet mamy
widziałem w zeszłym tygodniu?
>> PUBLICZNOŚCI: [niesłyszalne].
>> DAVID MALAN: To idzie gdzieś, prawda?
To idzie do pewnego docelowego adresu URL.
Ale nie chcę, żeby to się stało tutaj.
Chcę, aby moja strona internetowa jest całkowicie dynamiczny jak Gmail, gdzie, kiedy jesteś
tam, tam.
Adres URL nie zmienia się w sposób, który wskazuje, cała strona jest przeładunek.
Raczej, po prostu chcę coś zmienić coś jak drukowanie
tutaj na ekranie.
>> No to niech mi sprzątać się trochę.
Pozwól mi otworzyć się nie dom-0, ale pozwól mi otworzyć Dom-2.
Po prostu tak, że widziałem jakieś składni tutaj.
>> Okazuje się, że to, co my właśnie nie korzysta z surowego JavaScript.
Więc jest to naprawdę język JavaScript.
Niektórzy z was mogą znać z Biblioteka nazywa jQuery.
>> Tak więc jQuery jest sam coś jak JavaScript.
To jest po prostu biblioteka naprawdę mądry facet napisał i spopularyzował takie
że prawie każdy na świecie teraz wykorzystuje jQuery, gdy za pomocą JavaScript.
I na pierwszy rzut oka, szczerze mówiąc, to wygląda trochę bardziej tajemnicze.
Ale przekonasz się, szczególnie jeśli go nie dla końcowego projektu z sieci
rozwój, przekonasz się, że to czyści rzeczy i zaoszczędzić dość
kilka linii kodu.
>> Więc jak tylko okiem na ta forma działa.
Zauważ, co ja usunąć pozornie z mojego HTML?
Nie ma on złożyć obsługi że tak powiem.
Nie ma atrybut.
Bo wiesz, co I tak naprawdę nie podoba?
Czułem się jak my spadały do starych nawyków nie.
Podobnie jak to było zaczynam czuć niechlujstwa do przenikają zarówno CSS z
HTML, ponieważ jesteś trochę rzucanie różnych językach na całym
miejsce, podobnie to się zaczęło odczuwać jak zły drogi zejść gdzie
Kładę kodu JavaScript wewnątrz mojego HTML niż faktoring to.
>> Więc to jest lekcja.
W DOM-2.html, jestem faktoring to.
I robię rzeczy lekko inaczej.
Na razie mam zamiar pomachać ręce na to, co to naprawdę
pod wyciągiem.
Ale tylko na razie zakładamy, że pierwsza linii kodu w tej bibliotece
nazywa jQuery po prostu oznacza, gdy Dokument jest gotowy, wykonaj następujące czynności.
>> Ponieważ stron internetowych mogą trochę czasu do załadowania.
Możesz być na wolnym internecie zasilania, a to może być przędzenia
i spinning, a na końcu jest załadowana.
Że linia kodu po prostu mówi, poczekaj, aż cała strona jest gotowa, dokument
jest gotowy, przed wykonaniem tego kodu.
>> A teraz zauważyć, że jest to prawdopodobnie Najbardziej użyteczne pierwszy
zabrać z jQuery.
Linia ta tutaj jest bardzo podobny w duchu do tego znacznie dłuższy linii tutaj.
Natomiast w surowego kodu JavaScript, tam istnieje globalny obiekt dokumentu, który
ma funkcję o nazwie getElementById (), ludzie, którzy pisali
jQuery uproszczone, aby po prostu powiedzieć, że znak dolara, a następnie wewnątrz
nawiasy umieścić dwa cytaty, a następnie umieścić symbol hash następnie
unikatowy identyfikator, chcesz złapać.
Tak więc jest równoważna document.getElementById.
>> Tymczasem. Złożyć tylko oznacza na Złożenie jakiejkolwiek formie jesteś
powołując się na lewej stronie, przejdź dalej i wykonać to.
Ale teraz jest to ciekawość też.
Co dziwne, o tym, co Mam podkreślił tutaj?
Nie tylko jest to rodzaj składniowo nowy, nie ma też czegoś brakuje.
>> PUBLICZNOŚCI: To właśnie nazywa się funkcja?
To nie nazywa się powiadomienie?
>> DAVID MALAN: Tak.
Cóż, tak alert () jest w dół tutaj, aby być uczciwym.
Ale nie ma wzmianki o Nazwa, jak wiesz, bla lub
coś się tutaj.
I rzeczywiście, jest to jedna z cech języka JavaScript, który jest dość
potężnym, ale także całkiem nowy.
I PHP faktycznie ma to jak dobrze.
>> Pozwólcie mi iść do przodu i robić coś bardzo szybko.
Pozwólcie mi iść do przodu i umieścić to tutaj.
Pozwól mi to zrobić.
Funkcja.
Nazwijmy ten moduł obsługi ().
Funkcja obsługi tak powiem.
Coś, co zajmuje jakieś działanie.
Pozwól mi posprzątać mój wcięcia.
I umieścić to tutaj.
Tak.
OK.
>> Więc teraz mam funkcji o nazwie Ładowarka (), że tak naprawdę nie wiemy
co robi jeszcze.
To po prostu ciągle ma te rzeczy.
Ups.
Wziął za dużo.
Zróbmy to.
Dobrze.
Przepraszam.
Dobrze.
Pozwól mi to zrobić.
OK.
Że wygląda ładnie i prosto przekazania teraz.
Pozwól mi to zrobić.
To zrobić.
I OK.
Więc teraz, zróbmy to tutaj.
Nie więcej programowania w locie.
OK.
>> Więc teraz, wróćmy do gdzie historia zaczęła.
Wcześniej powiedziałem, że ta linia tutaj Oznacza, gdy dokument jest gotowy, przejdź
naprzód i to zrobić.
Co chcę zrobić?
No dokładnie, chcę iść do przodu i wykonaj następujące czynności.
Wykonanie tej linii kodu, a następnie co masz zrobić, to nazywamy to
działa, gdy formularz jest składany.
>> Teraz to, co jest interesujące.
To samo nie jest funkcją.
Zauważ, nie jestem wprowadzenie nawiasów tutaj w zwykły sposób.
Jestem dosłownie przejściu funkcję o nazwie Ładowarka () do innej funkcji
nazywa przedstawienia () jako argument, jak choć to jak zmienna.
A jest jedną z cech JavaScript, to sami Funkcje
są tak naprawdę obiekty.
W rzeczywistości, oni są naprawdę Zmienne pewnego rodzaju.
A jeśli nazwa funkcji jest Ładowarka (), nie ma powodu, nie mogę
przekazać ją jako argument tutaj.
A to oznacza, gdy formularz z ID jest demo
złożone, wywołać tę funkcję.
>> Ale teraz, jeśli mogę cofnąć wszystko, dlaczego to ja może zrobić
to przed chwilą?
Cóż, to jest anonimowa funkcja.
Bo szczerze mówiąc, zdałem sobie sprawę, dlaczego jestem przeszkadza, by tracić czas deklarowania
Funkcja o nazwie obsługi () tylko zadzwonić to w jednym i tylko w jednym miejscu?
Jeśli nie potrzebujesz nazwy, a ja nie trzeba nazwać to więcej niż jedno miejsce,
niech tylko realizacji funkcji dokładnie tam, gdzie go potrzebuję.
I tak, JavaScript i PHP obsługuje co nazywane są anonimowi, że funkcje
pozwoli mi zrobić dokładnie to tutaj.
>> Ale jesteśmy tylko zarysowania powierzchni.
Miejmy dokuczać z tylko kilka Ostateczne przykłady tutaj.
>> Jeśli pójdę do quote.php.
Zauważ, że jest to rzeczywiście PHP funkcja, program PHP, że napisałem
że oczekuje parametr HTTP o nazwie Symbol i mogę przekazać w
wartość jak FB.
A jeśli rzeczywiście spojrzymy na źródła Kod ten jest odpytywanie darmową stronę
zwany Yahoo Finance, podobnie jak zestaw p siedem, i to wraca do mnie
Najwyraźniej coś w znany jest w formacie JSON -
JavaScript Object Notation.
To tylko przedmiot.
Zwróć uwagę na nawiasy klamrowe, cytaty, dwukropek i przecinki.
>> Teraz zaś, to jest całkiem fajne.
Prawdopodobnie dlatego, że mogą korzystać z programowania języka do generowania adresów URL
że wyglądać tak dynamicznie, prawda?
Mogę zmienić na Google i wrócić Google'a
cena akcji w wysokości $ 1,017.55.
Zobaczmy więc, jeśli nie możemy użyć tego teraz.
>> Pozwólcie mi odejść do ajax-0 o, które wygląda następująco.
To tylko strona, która ma formularz z przyciskiem.
Pozwól mi tutaj śmiało wpisać Yhoo dla Yahoo symbolem stanie, kliknij przycisk Pobierz
Cytat, a teraz zauważyć, stałam powiadomienie o 32.86.
>> Pozwól, że faktycznie go do wersji hodowcy z ta strona, wersja dwa, a
wpisz powiedzmy Microsoft, MSFT.
Get Quote.
A teraz zauważyć, nie ma wpisu.
Zauważ, gdzie jest napisane cena należy określić?
Jest to najprostsze przykładach wskazuje na jakim Gchat i Facebook
Czat i Gmail i inne takie strony internetowe robią przez właściwie
zmiana strony internetowej.
>> To zauważyć.
Pozwól mi odświeżyć stronę.
Pozwól mi otworzyć Chrome inspektorze.
Pozwólcie mi odejść do elementów Zakładka tutaj.
Teraz zauważył, gdybym powiększyć tu i otworzyć to się zauważyć, że jest to mój
HTML DOM - Document Object Model moje.
To jest mój HTML.
Ale teraz zauważyć, chociaż to będzie być trochę trudne, aby zobaczyć go w obu
miejscach na raz, jeśli wpisać FB tutaj, obserwować dno
ekranu tylko.
>> To rzeczywiście się zmienia moja HTML w locie.
I robi to po prostu robiąc coś takiego.
Jeśli otworzyć ajax-2, informacja realizacji coś tak sexy jak
, że choć jest to dość brzydki, ale jako wyrafinowane, jak
funkcjonalnie, posiada pewne HTML na dole.
Ale zauważ Kiedyś oznaczyć.
Nie używałem tego wcześniej, ale jest to jak, ale nie na siłę
wszystko na nowej linii.
To właśnie sprawia, że ​​obszar prostokątny w jednej linii zasadniczo.
>> Zauważ, że dałem mu identyfikator cenie.
Okazuje się przy użyciu tego samego JavaScript biblioteki, mam funkcji
nazywa cytat (), która jest wywoływana, gdy tylko formularza.
I co ja robię to.
Jestem deklarowanie zmiennej w JavaScript nazywa url, wartość oszczędności
quote.php? symbol =.
Innymi słowy, ja zaczynam przygotowanie żądania HTTP, a następnie
Jestem złączenie na które z plusem co element o ID
z symbolem jest, która to informacja, że pole tekstowe aż tutaj.
Więc tak jak mieliśmy formy w przeszłości.
>> A potem okazuje się, w jQuery, jeśli zadzwonić. val (), która wywołuje z val
funkcja, funkcja wartości, które pobiera co użytkownik wpisał w.
A potem ruchu sieciowego że dzieje się to.
$. GetJSON.
>> I jak na bok, znak dolara jest tylko skrótowym zapisem.
To naprawdę jQuery.getJSON.
Zabierz mnie do JSON z tego adresu URL, a gdy Wniosek wraca, nazywamy to
Funkcja i przekazać jako argument w co wrócił z serwera.
>> Więc innymi słowy, jeśli wrócę do przeglądarki, a ja wrócę do quote.php,
co moja przeglądarka robi to coraz ten fragment danych.
A kiedy idę do tej strony tutaj, zauważyć, gdybyśmy zamiast iść do sieci
Zakładka i wyczyścić go, a następnie wpisz coś GOOG dla Google i dostać
Cytat, zawiadomienia strona nie zmieniła.
Ale żądania HTTP powstał, a co wrócił tutaj, jeśli spojrzymy na
Odpowiedź jest cała masa JSON że dostęp wreszcie
ta prosta linia tutaj.
>> Danych jest to, co dostał z serwera.
Cena jest nazwa dbam o klucz.
Więc data.price daje mi to.
>> Teraz zaś, co jest ostatnim przykładem.
Można zrobić jeszcze więcej ze strony.
Jeden faktycznie, dobrze dwa.
Możemy przywrócić tag, jeśli pamiętam.
To JavaScript.
Możemy to zrobić.
Bardzo ekscytujące.
Zostawimy to jako cliffhanger.
>> Ale bardziej emocjonująco, można robić takie rzeczy.
Jeśli pójdę do geolokalizacji-1, okazuje się, że Chrome wie, że jesteśmy w
Szerokość Długość 42.37. -71,10.
Więc jest jeszcze nie do Państwa dyspozycji.
Ale o tym w przyszłym tygodniu.
Do zobaczenia w poniedziałek.