[Powered by Google Translate] [Hét 8]
[David J Malan] [Harvard Egyetem]
[Ez a CS50.] [CS50.TV]
>> Üdv újra.
Ez CS50, és ez a kezdete hét 8.
Egy pár lehetőségek ezen a héten,
köztük ez a beszélgetés itt, ahol néhány élelmiszer kerül felszolgálásra.
További részletekért nézd meg a lemezeket, amelyek online.
És azt is, egy másik esemény ezen a héten a saját Thomas Carriero.
Ő az egyik CS50 egykori feje tanítási fickók, akik most a Dropbox,
és ő az, aki minket akasztott fel a tudod mit,
így ha többet szeretne e fej saját talk ma délután a Dropbox és így tovább.
CS50 ebéd ezen a pénteken.
Ne csatlakozzon hozzánk, ha tudja, 1:15, mint mindig, a Fire and Ice.
>> És most belevetik magukat valami úgynevezett szemináriumok.
A CS50 Szemináriumok, visszahívás, ezek a választható osztályok által vezetett oktatási ösztöndíjas
és persze asszisztensek és barátai a kurzus,
emberek egy csoportja az egyetemen nevű ABCD, ami egy csoport
technofilek az egyetemen, valamint a csoport az úgynevezett HCS,
A Harvard Computer Society, egyetemi hallgatók, akik szintén érdeklődnek a számítástechnikában.
Az idei naptárban szemináriumok magában szemináriumok Android és iOS és JavaScript
és a PHP, Unix, Vim, és így tovább, így észre, hogy ezek a szemináriumok jönnek létre.
Ha azt szeretné, hogy Küldjön RSVP visszajelzést, ezek közül bármelyik fejét, hogy az URL-ott.
Ezt követően teszi közzé a kurzus honlapján időpont és hely, amint véglegesítik.
De tudom, hogy a 5 éves érdemes a korábbi szemináriumok online elérhető,
amelyek közül sok még mindig nagyon aktuális szempontjából a technológia lehet,
szeretne játszani a végleges projekteket, így irány ott néhány rendelkezésre álló videók cikke.
>> CSS, azoknak, akik ismerik a CSS már,
mi ez dióhéjban?
Mi az a CSS?
Ez stíluslapokat, és mit jelent ez?
Mit csinál nekünk, CSS?
Rendben, a warm up egy egyszerűbb egy, HTML, Hypertext Markup Language.
Mit csinál nekünk?
Bárki, aki egyáltalán?
Ez kezd nagyon kínos átgondolva a fenti kérdéseket.
HTML Hypertext Markup Language.
Igen? Nem?
[Hallhatatlan hallgatói válasz]
Oké, jó, ez lehetővé teszi számunkra, hogy jelölje ki a szöveget megjeleníteni a böngészőben.
Ez nem egy programozási nyelv.
Ez valóban egy leíró nyelv, ami azt jelenti, hogy utasítja a böngésző hogyan jelenítse meg
információkat, így a legegyszerűbb megtestesülése ezt láttuk
van valami szuper egyszerű, mint boldfacing nyitott zárójel b zárva tartó hozzászólás
hogy ez a szöveg félkövér, és ez valójában csak egy a sok szempontból
ahol tudunk csinálni, sőt, ezekben a napokban egy jobb megközelítés
A stilizáló a weboldal, a dolgok félkövér és dőlt
és középre és indokolni és hasonló, nem keresztül történik HTML egyedül
hanem inkább a technika az úgynevezett CSS stíluslapokat.
Ez egy olyan nyelv hozzátok is.
Ez is nem egy programozási nyelv, de-
mindenki, ez a Dan, aki folyamatosan csatlakozik hozzánk ma.
Néhány technikai nehézségeket. Nem probléma.
>> CSS lehetővé teszi számunkra, hogy stilizál oldal
azáltal, hogy úgynevezett tulajdonságait, ezért vessünk egy pillantást a
útján néhány alapvető példát.
Hadd menjek be a készüléket ma.
Nekem van a forrás 8 hétfő könyvtárban van,
és én megyek be egy könyvtárba nevű CSS, ahol van egy csomó
A fájlok vár ránk itt,
és ebben a mappában van, például, az utolsó search0.html alkalom.
Most, felidézni a search0 mi maradt e feljegyzés
a fajta végrehajtási Google, vagy tényleg csak a front end mert egy hét múlva ezelőtt,
, és vegyük észre, hogy mi volt néhány új tag is.
Volt h1 egy nagy, merész címsor,
formában, amely lehetővé tette számunkra, hogy valóban van egy HTML űrlap felhasználói bevitel.
Action, mi volt az értelme kereset attribútum
A HTML form tag?
Mi volt az értelme ennek, keresetet?
Én csak ezt ma.
Fellépés a cél, ahol a forma fog benyújtani.
Az a tény, hogy azt mondja action = "google.com / search"
azt jelenti, hogy ha a felhasználó rákattint a küldés gombot, vagy az azzal egyenértékű
bármilyen űrlapmezőket azokat kitöltve fognak küldeni, hogy ne a mi szerver
vagy a készülék, hanem az adott URL-t a Google-nál.
És a módszerrel fog használni az úgynevezett kap,
és kap, most, csak egy módszer az áthaladó információk mellett egy web szerver
útján az URL-címet, ezért vessünk egy gyors pillantást, hogy ez hogyan működik.
>> Figyeljük meg, hogy van egy input, akinek a neve q
amelynek típusa szöveg, és azután egy második bemeneti típusú kattintson
amelynek értéke CS50 Search, és valóban, ha megnyitja ezt a fájlt itt,
search0.html, ez egy szuper egyszerű formában,
és ha keressen valami hasonló számítástechnika
, majd nyomd meg az Entert, vagy kattintson CS50 Search
észre, hogy mi történik, túl kezd a Google
Én kifejezetten végül a következő URL a tetején,
google.com / search? q = számítógép + tudomány,
és számítástechnika nyilvánvalóan mit gépelt be
A +, csak azt jelenti, hogy ott egy szóköz karakter volt,
és ez végzi a böngésző, csak hogy győződjön meg arról, hogy nincs
zavart és white space a tényleges URL.
És akkor q, természetesen, a paraméter neve.
Nem láttuk, hogy mi, a programozó, ténylegesen hozzáférhet q még.
Azt feltételezzük, hogy a Google tudja, mit kell tenni, hogy ennek itt,
de mi lesz ott időben ma.
>> De hadd nézzem inkább meg search1.html,
amely úgy néz ki, egy kicsit más, mert úgy döntött, hogy ezt az űrlapot itt volt egy kicsit béna.
Úgy értem, ez a bal felső sarokban.
Itt tényleg nincs esztétika, és ezért szeretném ezt stilizál
egy kicsit több, mint a Google, amelynek honlap, visszahívása,
bár lehet, hogy nem látogat meg, hogy gyakran, így néz ki ma a Halloween.
Ha ehelyett nyitni 1-es verzióját a fájl, keresés 1.html, már középre is.
Mégis elég csúnya, de legalább most már elkezdtem, hogy ellenőrizzék az esztétika az oldalon
nem csak a jelölés felfelé cikke.
Vessünk egy pillantást a keresés 1, és ott tényleg csak egy különbség van,
ami kiugrik rád, vagy talán nem,
de mi az egy vonalra, vagy kódrészletet a különbség?
>> Van ez a stílus attribútum, így kiderül, hogy a HTML-ben
legtöbb eleme, a legtöbb tag lehet egy stílus attribútum őket,
és belül, hogy a stílus attribútum jegyzett string,
és hogy idézett karakterlánc CSS.
Tudod, hogy lépcsőzetes stíluslap ott
megadásával, mint egy tulajdonság nevét
kettőspont követ, majd egy értékkel.
Ez a fajta egy sajnálatos tervezési döntés néhány évvel ezelőtt
hogy a CSS egy olyan nyelv, hozzátok is,
de szintaktikailag nagyon eltér HTML.
Ebben az esetben azt látjuk, hogy belsejében a weboldal ami meg van írva a HTML-ben,
Van CSS belül ezek az idézetek, és az egyezmény a CSS
hogy van az úgynevezett ingatlan után, ismét egy kettőspont,
majd az értékét, hogy az ingatlanok, így nincs egyenlőségjel.
Nincsenek további idézetek.
Csak ez colon elválasztott kulcs-érték párt,
és szöveges sor pontosan, amit mond.
Úgy igazítja a szöveget a szervezetben az oldalon, ami valóban a belek az oldal,
a központban.
>> Oké, a végeredmény akkor, hogy világos legyen, nem ez.
Nem minden szexisebb, de legalább ez középre és egy kicsit több, mint az igazi Google.
De mi van, ha inkább nyitni 2-es verzióját az e
és rámutatnak ide egy új tag összesen?
Most a fejét az én oldalon, ami korábban csak voltak, amelyek tag
Minden korábbi példát?
Csak volt ez a cím.
Egy pillanattal ezelőtt a head tag nézett ki, mint ez.
Most ahelyett, hogy van egy stílusa tag belsejébe,
és ezt is, elnézést kérek, szintaktikailag nagyon különbözik HTML,
de meg lehet szokni, amely belsejében a stílus címke
Most már vennünk, hogy mi volt, egy perccel ezelőtt
egy attribútum, a stílus attribútum, és én tedd legtetején Az oldalam.
>> Miért?
Nos, ez a lépés takarítás dolgokat, akárcsak írásban C kódot
mi lenne néha írni funkciót faktor ki közös alkalmassága.
Ez csak egy kicsit tisztább kezdeni faktoring ki dolgokat, mint az esztétika
egy központi helyen, ahelyett, hogy minden közbeszór egész HTML.
Ez is azt teszi, amit mond, bár egy kicsit az új szintaxist.
Ez itt egy választó, és a test csak azt jelenti, válassza ki a body elem
és alkalmazza a következő tulajdonságokat is.
Nos, az ingatlan pontosan ugyanaz.
A jó intézkedés, adtam egy pontosvesszőt a végén,
amely hajlamos arra, hogy ilyen egyezmény, és már csomagolják az egész ingatlan
A kapcsos zárójelek mert ténylegesen különböző dolgokat.
Azt már valóban mond valamit, mint a színe: kék;
>> Most ez is nem lesz lépés bármi minden szebb,
de ha most menj vissza a 2-es verziója, amit legalább most már a test az én
oldal szövege minden kék.
A gomb marad ugyanaz, mert ez egy bemenet. Ez nem tiszta szöveget.
De minden mást, ami a szöveg, mint a CS50 Search up top, valójában kék.
Ismét minden tettünk Most vegyük ki a body tag, felirat,
a stílus attribútum, és mi volna tényezőként meg itt.
Ez nem egy nagy javulás, de ha ezt egy lépéssel tovább
észre, mit tehetünk ebben a harmadik verziót itt.
>> A search3.html a weboldalon közel azonos
kivéve az, amit az új tag most?
Link, így ez nem nagyon találóan elnevezett
mert nem össze abban az értelemben, egy kattintható hivatkozást.
Inkább, te valami csinál a megfelelője # include a C
ahol a link tag egy href attribútum
és a rel attribútum azt mondja, gyerünk
és másolja be a tartalmát egy fájlt a search3.css itt, lényegében.
Ez nem egészen megtenni, de ez a szellem is.
Azt mondja, menj nyitva a fájl, search3.css,
és kezelni a dolgot, mintha a felhasználó már gépelt ez itt a fejét az oldal
mint én az előző példában.
Search3.css, eközben nagyon egyszerű.
Ez tényleg csak tartalmaz, pontosan mi volt, egy perccel ezelőtt
a stílus tag, de már faktorált ki ide, hogy a saját fájlt.
>> Annak ellenére, hogy nem sok időt töltött egyáltalán HTML vagy web programozás
Csak ösztönösen, mi a motiváció, talán, a faktoring-ből
ezt a kis kódrészletet akár CSS-ba a saját fájlba
majd többek között azt meg ezt a linket tag itt?
[Hallhatatlan hallgatói válasz]
Oké, ez könnyebb olvasni, abban az értelemben, hogy van a CSS-ben a CSS fájlban.
Megvan a HTML a HTML-fájlban, így olvashatóbb ebben az értelemben.
Mi más lehet kényszerítő? Igen.
[Hallhatatlan hallgatói válasz]
Igen, így magában sokszor, így most csináljuk ezeket
az alap, példák egyes fájlokat, de tegyük fel, hogy tényleg így
egy igazi weboldal, mint fogsz a Pset 7, vagy a projekt végső talán,
, és azt szeretné, hogy több weboldalt, a biztosan gyakori
A tényleges World Wide Web, és lenne ilyen béna
hogy másolja és illessze be az azonos színű
és ugyanazt a szöveget igazítva központ minden egy ilyen oldalakat.
Inkább több értelme faktor ki, ugyanúgy, mint tettünk C
a. h fájlt, helyezze egy központi helyen,
Ebben az esetben a search3.css, majd hagyjuk a fájlt
a webhelyére, hogy valóban tartalmazza, hogy a fájl útján ezt a címkét itt a sorban 16.
Mint általában a helyzet, kezdtük 0-s verzió, milyen munkák
de nem szükségszerűen a legjobb, és minden lépésnél,
keresés 1, keresés 2, és most keresés 3 vettünk ezeket a baba lépéseket
felé minták egy kicsit tisztább és több előkészítő
bonyolultabb oldalakat, hogy talán nem az úton.
>> Hadd nyit egy utolsó példát itt csak megmutatni
még stilizált oldalon, de előbb nézzük meg a HTML.
Ez search4.html, és észreveszi, hogy szerkezetileg ez majdnem ugyanaz
kivéve a bevezetett új címke, Div.
Div olyan tag, amely bemutatja a szétválás az oldal.
Azt hiszem, hogy ez egy láthatatlan téglalap.
Ez a fajta teremt rendet a terület a weboldal
hogy akkor stilizál egyszerre.
Amit tettem itt a következő.
Belül a testem tag, amely már ott végig,
Azt mondom, hozzon létre egy részlege az oldal itt vezetékeken keresztül 45 keresztül 47,
és ez azt jelenti alapvetően adjon nekem egy láthatatlan téglalap mentén az oldal tetején.
Akkor adj egy második téglalap, bár láthatatlan, alatti,
és azonosítja azt a nevet tartalom, majd végül
adj egy Division az oldal alján
úgynevezett ID.
Majd meglátjuk, hogy miért tettem ezt, csak egy pillanatra,
de fogalmilag van egy fejléc alá.
Nekem van egy tartalma részlege, és van egy részlege lábléc az oldal
annak ellenére, hogy ezek csak a jelölő.
A felhasználó nem fog látni 3 téglalapok,
hanem egyfajta szerkezetileg ott a színfalak mögött
ők ténylegesen jelen van.
>> Nos, kit érdekel? Miért ténylegesen ezt?
Minden más az oldalon ugyanaz, mint láttuk korábban.
Itt a formában. Itt a bemenet, a bemenet, a sortörést és így tovább.
Itt egy kép, bár, úgyhogy majd meglátjuk, ha ez jött egy pillanat.
Itt egy láblécet, ami új, csak azért, mert azt akartam, hogy vezessenek be
valamivel több tartalom van.
Ha felfelé észre, hogy ID ennek div van fejléc.
Az ID Ennek div tartalmát, valamint a azonosítóját ez egy lábléc.
És ahogy a neve is sugallja, ha van egy attribútum
HTML definíció szerint azt kell egyedileg azonosítják
egyik eleme, az egyik tag-eket az oldalon.
A teher teljesen rád emlékezni, hogy van egy fejléc azonosítója már.
Van egy láblécet. Van egy tartalom azonosító már.
A számítógép nem fog rájönni, hogy mi a rendelkezésre álló azonosító az Ön számára,
így véletlenül így 2 tag Az azonosító fejléc,
és hogy ez csak rossz.
>> Meg kell szem előtt tartani, hogy mi magunk hoztunk létre,
de ha egyszer tettél, hogy hirdetmény mit tehetünk itt.
Most már meg az én stílusom tag tetején
vagy azzal egyenértékű az én CSS fájlt, ha én még mindig használja azt a verziót,
Mondhatom # header, és hogy ez mit jelent az, hogy bármilyen címke
Az e weboldalon van egy azonosítója fejléc
és a #, csak emberi konvenció képvisel ID.
Az éles jel vagy kettőskereszt jelentése ID.
Fejléc a nevet adtam.
Ez azt jelenti, ezt a CSS tulajdonság
hogy bármilyen címke ezen az oldalon viseli ID fejléc.
Ugyanez a helyzet itt.
Alkalmazza ezt a tulajdonságot, ami történik, hogy ugyanaz legyen, hogy bármely elemét
amelynek ID tartalom, majd itt lent
észre Van egy kicsit cifrább a lábléc.
Minden olyan elem, amelynek ID lábléc, amelyből nem lehet csak egy definíció szerint,
megy előre, és megteszi betűméret kisebb,
a font súly félkövér, a különbözet ​​20 pixel.
>> Mit jelent ez?
Ez csak egy margin a felső, az alsó, a bal és a jobb oldalon.
Ez azt jelenti, hogy nekem egy 20-pixel láthatatlan margin körül
Csak, hogy álljon minden mást tőle egy kicsit, mint te talán nem a Word,
Microsoft Word vagy Pages vagy hasonló.
És akkor szöveget igazítsa központ.
Lássuk a végeredményt, aztán megyünk vissza az egy megmaradt kódrészletet a CSS ott.
Ez a 4-es verzió, az utolsó a keresési példák, és ez sokkal, de sokkal szexisebb.
Most, a méltányosság, csak googled "google font logo generátor."
És ez lehetővé tette számomra, hogy hozzon létre egy GIF képet formátum, ami úgy néz ki, mint, hogy van.
Tény, hogy meg tudod csinálni ezt is.
Van "google betűtípus logo generátor."
>> Lássuk, meg tudjuk csinálni.
Oké, azt hiszem, ez a honlap használtam.
Elmondhatjuk Ec 10, például, és azokat a saját.
Ön tud játszani ezzel egész nap, majd jobb klikk rá
majd töltse le a tényleges GIF, amely minden, amit tettem.
És valóban, ez az, amiért az én HTML, emlékszem, ide
Volt egy kép tag, amit láttunk röviden a múlt héten
amelynek forrása logo.gif.
És mi újra volt a motiváció, hogy ilyen alt attribútumot,
ezzel az alternatív attribútumot?
Igen.
[Hallhatatlan hallgatói válasz]
Jó, tehát 2 okból igazán, ha a böngésző nem húzza ki a képet
mert lassú a hálózati kapcsolat, vagy a kép sérült
vagy valami ilyesmi, hogy legalább az ember megjelenik a "CS50 kereső,"
és akkor is, a hozzáférhetőség miatt.
Ha egy felhasználót, aki vak, és használ a képernyőolvasó
és ezért nyilvánvalóan nem látják a képeket, hogy a legalább
hallani szöveg, ha a számítógép beszél nekik.
>> Általában ez a legjobb gyakorlat, amikor a hozzáférhetőségét oldalak
hogy még a felhasználók ebben a helyzetben lehet hallani, vagy látni, hogy úgy mondjam,
mi az, ami az oldalon.
Van még egy másik dolog, hogy én tettem ide
ami egy kicsit érdekes, és meglátjuk meg többet erről a probléma készlet 7
keresztül az egyik sort vezette az egyik tanítási ösztöndíjasok.
De # content utal, hogy a tag
amelynek ID tartalom, de akkor van egy szóköz karaktert, és akkor ott van a szó bemenet.
Nos, mi érdekes a CSS, hogy meg lehet
nézze meg a címkék az oldal egyfajta hierarchikus,
és mi ez a kódrészletet a CSS azt jelenti megtalálják a tag
amelynek ID tartalom, majd alkalmazza a következő tulajdonságokkal
az összes bemeneti címkék, amelyek leszármazottai tartalom
ez az, hogy be vannak húzva benne.
Behúzás, újra, csak az a fontos, hogy a számítógép, nem pedig az emberi,
de megegyezés mi francia dolgokat, ahogy haladunk beljebb egy oldalt,
tehát ez azt jelenti, alkalmazni mozgásteret 5 pixel bármely input elem
ez valahol vagy beágyazott belsejében
elem, amelynek azonosítója tartalom.
>> Ki, hogy alkalmazni?
Nos, valójában csak e 2 srácok itt.
Figyeljük meg, hogy belsejében a formanyomtatvány van 2 bemenet,
mivel van már az összes ezeket a példákat.
De vegyük észre, hogy a 2 bemenet történetesen beágyazva,
bár egy kicsit mélyen, egy pár réteg behúzás,
belül a tag, amelynek azonosítója tartalom.
Mit jelent ez?
Ha megy a böngésző itt lehet látni alig láthatóan,
hadd Nagyításhoz-, hogy van egy kis padding között a gomb
közötti, valamint a szövegmezőbe.
>> Hadd ideiglenesen kapcsold ki.
Hadd menjek fel a CSS, és hadd menjen előre, és csak a
módosításához margin 5-0-ra pixel pixel.
Hadd menjek előre, majd, és mentse a fájlt, menj vissza a kereső
és újra, és nézd meg az oldal közepén.
Minden kapott tömörített együtt, és amikor először vert fel ezt a példát
Azt hittem, hogy nézett ki a hülye a szövegmezőbe, majd a gomb közvetlenül alatta.
Akartam pad egy kicsit, úgyhogy be különbözet.
Amit nem fogunk csinálni előadás megy keresztül a több tucat
CSS tulajdonságok léteznek, mert ismét, vannak dolgok, mint a betűméret,
font súly, margó, szöveg igazítása, és néhány tucat mások,
és mi utalja Önnek problémája készlet 7 különböző oktatóanyagok online
és hivatkozások, amelyek lehetővé teszik, hogy vegye ezeket a dolgokat.
De ami igazán fontos, az a nap végén
>> az, hogy megértsük, hogyan alkalmazzák ezeket a dolgokat.
Ismét, ha van stílusa tag belsejében, amely
mehet a választók, az a fajta azonosítók, amelyek meghatározzák
akinek akarod alkalmazni ezeket a tulajdonságokat,
és akkor tesz a tulajdonságokkal rendelkezik, mint kulcs-érték párt
kettősponttal elválasztva, majd véget ért a pontosvessző,
vagy tudod rip minden, hogy ki és tedd egy külön CSS fájlban
nektek is.
Rendben, bármilyen kérdése van a fogalmak
vagy a nagy képet CSS?
Majd ismét többet látni azt Pset 7,
de majd tartani, hogy általában elég egyszerű.
Nem? Rendben van.
Itt az ideje egy valódi programozási nyelv,
és mi jön vissza egy kicsit a CSS formájában egy példát.
PHP valójában egy csodálatosan érthető nyelven
, mivel szintaktikailag majdnem azonos a C.
Más szóval, ha tudod, C, tudod, hogy a legtöbb PHP,
legalább szintaktikailag, bár van néhány új funkciók
és néhány új fogalmat kell majd nézni.
>> De a legtöbb, most, hogy átmenet C és PHP
a legtöbb új cucc valóban a nagy képet,
hogyan használja a nyelvet a program az interneten, szemben a
a parancssorban vagy egy villogó azonnali ahogy csináltam eddig.
Referenciaként, különösen a Pset 7, és a végleges projekt kezdve
nem kihasználni ezt az URL ide, ha azt szeretné, hogy olvassa fel az alaki PHP.
Ez tulajdonképpen, mint egy ingyenes online tankönyv hatékonyan
és akkor is megtalálja, hogy mi az igazán szép a PHP-ről
az, hogy több száz funkciók, hogy jöjjön vele,
mivel a C, hogy nem feltétlenül férnek hozzá
több funkciót, mint volt a matematikai könyvtár, CS50 könyvtár.
A PHP és a sok modern nyelvek, Python és Ruby köztük
kapsz hozzáférést, így több funkciót, ami azt jelenti, hogy kell írni
sokkal kevesebb kódot, mert akkor álljon a vállára más emberek
akik már írt bizonyos dolgokat az Ön számára.
>> Vessünk egy gyors túra a szintaxis a PHP és írjuk be néhány példát.
Mi a jó a PHP-ről elsősorban
van nincs fő funkciója.
Ha azt szeretnénk, hogy írjon egy programot a PHP, csak kezdjük el beírni kódot,
és nem kell aggódnia fő.
Nincs int. Nincs visszatérés.
Nincs argv, argc, ami szükséges, ha írsz a programot.
Inkább akkor csak elkezd kód írása, és ez részben
mivel a PHP az úgynevezett interpretált nyelv.
C-t összeállítani, és azt állították össze, abban az értelemben, hogy elkezdi
A forráskód, futtasd át csenget, ami egy fordító,
és végül miután néhány számos lépést kapsz tárgykód, 0s és 1s.
PHP és Python és Ruby és a Pearl és mások
Különböző típusú nyelv, amit nem állítanak össze őket.
Nem megy forráskódot 0s és 1s.
Csak fuss a forráskódot, és futtatja a forráskód
írásban a szokásos szöveges fájl, végződik. php ebben az esetben
helyett. c, és mi a program nem a számítógépen
A szó szerint értelmezi a kódot sorról sorról sorra.
>> Más szavakkal, nem pedig levelet programot és futtassa
közvetlenül, ahelyett levelet program egy fájlt végződő. php.
Ezután futtassa a tényleges program neve php.exe, ha a Windows,
vagy csak PHP, ha te vagy a Mac OS vagy Linux
és biztosítják, mint hozzájárulás a PHP program saját forráskódját,
és célja az életben, hogy olvassa el a kódot, felülről lefelé, balról jobbra,
és nem, amit már mondtam, hogy igen.
>> Lássuk, mit fog ez jelenteni szintaktikailag.
A PHP van feltételeket.
Ez a dia megegyezik azzal, amit láttál vissza hét 1
mert szintaktikailag feltételek, IFS és IFS és máshol másnak PHP
nézzen ki, mint ez.
Amikor boolean kifejezéseket fognak nézni pontosan, mint ez.
Amikor AND művelet a dolgokat együtt Logikai ez fog kinézni pontosan olyan, mint ez.
Kapcsolók ugyanúgy néz ki, és megkapod az előnye a PHP-ben
hogy a kapcsolók C csak bekapcsolni a char vagy int.
Nem lehetett bekapcsolni a string értéket.
A PHP akkor valóban van egy kifejezés
ez egy változó, amelynek tartalma egy string,
és akkor ténylegesen karakterlánc-összehasonlítás az igazi intuitív módon,
nem mutató összehasonlítás, annak eldöntésére, hogy kell csinálni ügyben i vagy j vagy valami más.
Majd meglátjuk, hogy a potenciálisan nemsokára.
>> Hurkok is csodálatosan megegyeznek.
A hurkok van inicializálás feltétel, és némely frissítések számát.
Míg a hurkokat is léteznek PHP.
Do while ciklusok is léteznek PHP,
és tömbök léteznek a PHP, de itt, ahol a szintaxis kezd egy kicsit más,
de a fogalmak az azonos, és a fogalmak valóban az ugyanaz
mint volt a 0. héten a Scratch.
Az első és legfontosabb a $ jel.
Ez egy tervezési döntés a PHP, amellyel bármely változó
PHP-by design kezdődik $-jel.
Nincs több X, Y, Z. Ez most $ X, Y $, $ Z csak mert.
Ez valami olyasmi, hogy tartsa szem előtt, és most a jobb oldali
ez hasonlít egy tömb,
de mi a szögletes zárójelben van.
A PHP és a JavaScript, mivel mi végül látni,
állapítsa tömb te nyitott szögletes zárójel és zárt szögletes zárójel,
és akkor van egy vesszővel elválasztott értéklista, hogy ints
vagy a vonósok, vagy karakter, amit akarsz, belső e kifejezés ott.
>> Most, hogy csináltunk valamit, mint ez a C?
Mi volt a szintaxis statikusan nyilvánító egy sor ismert számokat?
Ez volt kapcsos zárójelek, így csekély a különbség itt, hanem mind a PHP
és végül a JavaScript ez csak használ szögletes zárójelben, így igazán
az egyetlen érdekes részlet itt van a $ jel a változó neve
valamint a szögletes zárójelek, és van egy furcsa dolog
ez kimaradt, valamint a bal oldali a = jel.
Mi hiányzik, amit már hetek igénylő most? Igen.
[Hallhatatlan hallgatói válasz]
A méret, így nincs említés a méret a tömb.
Őszintén szólva, nincs említés a szögletes zárójelek a bal oldalon
Az = jel, és mi más hiányzik a sorból?
Aha. >> [Hallhatatlan tanulói válasz]
A típus, szóval mi érdekes, különösen a PHP-ről
az, hogy ez nem egy erősen tipizált nyelv, mint c,
és ez határozottan írt abban az értelemben, hogy meg kell mondani, char,
meg kell mondani, int, meg kell mondjam, úszó.
>> Bármikor szeretne egy változót meg kell mondani, hogy mi a csengés típusa.
A PHP egy kicsit lassabb.
Ez lazán gépelt abban az értelemben, hogy a
akkor már úszók és a karakterek és karakterláncok
és ints és így tovább, de a nyelv maga
nem igazán érdekel, mit betenni egy változó.
Nem kell, hogy tájékoztassa előre milyen adattípust
megy egy változó.
Ez teljesen rajtad múlik, így ez a szép
az, hogy nem kell aggódnia, mint sokat adatok gépelés
és aggasztó milyen érvek és így tovább.
Ez azt is jelenti végül függvények PHP lesznek tudja visszaküldeni
vagy egy int a legtöbb időt, és talán egyszer-egyszer
fognak visszatérni a bool, a boolean false például, annak jeléül, hogy valami rosszul sült el.
Ez ad nekünk néhány upsides, de ez is tesz bennünket egyfajta by design
egy kicsit lustábbak, amikor az adatok gépelés.
>> Mi van még szem előtt tartani itt?
Változók nézd nagyon szeretem ezt, így $ s = "hello, world".
Ez talán inferable az előző példában
és mi más típusú hurok.
Ez akkor valóban látni néha, mert elég praktikus,
a foreach konstrukció.
Ebben az esetben, a foreach ciklus veszi belső cikkére zárójelben 3 szó jellemzően,
$ Valami első, amely az, amit array akarsz navigálhat tagjai felett,
akkor szó szerint a kulcsszót, majd végül
másik változó neve, hogy kapsz választani.
Ez lehet foo, bar, vagy elem,
és mi ez a konstrukció nem
az, ha a $ array tartalmaz 10 lencsetag
minden iterációs ezen array-sajnáljuk, minden iterációs e ciklus
a változó nevű elem lesz frissíteni
hogy az első elem a tömbben, akkor a második elem a tömbben,
akkor a harmadik eleme a tömb, ezáltal szükségtelenné téve
tenni a kissé idegesítő szögletes zárójel és a jelölés
$ I index annak érdekében, hogy egy tömb.
PHP nem az összes, hogy a munka az Ön számára, és minden iteráció
csak átadja neked a következő elemet a tömbből
nélküled kelljen tudni, vagy érdekli a numerikus index location.
>> És végül, mert most, van egy másik jellegzetessége PHP
ez lesz rendkívül hasznos, különösen, amikor elkezdünk programozást az interneten,
és ez ismert, mint egy asszociatív tömb.
A tömbök, hogy tudjuk, eddig 20-másodperc
és az elmúlt 8 hétben a numerikusan indexelt tömbök,
fajta hagyományos tömbök, ahol az indexek ints,
0, 1, 2, egészen akár.
Asszociatív tömbök sokkal erősebb.
Ezek lehetővé teszik, hogy tetszőleges kulcs,
önkényes indexek és tetszőleges értékeket.
Mivel egy hagyományos tömbben ez 0, 1, 2,
Egy asszociatív tömb akkor van az index
vagy kulcs az ize melynek értéke bar.
Ezután egy másik gombot, akinek a neve baz, és amelyek értéke qux.
>> Ismét hülye számítástechnika generikus változó nevek itt,
de a lényeg az, hogy ez a tömb nem tartó konzol 0 vagy 1.
Ez inkább megy, hogy konzol foo és konzol BAZ.
Ez egy sokkal sokoldalúbb, hogy fogunk tudni társítani
szavak más szavakkal, a kulcs az értékek teljesen önkényesen,
és mi lesz, tudja, hogy ezek az értékek vissza az időben állandó
mert a motorháztető alatt, amit egy asszociatív tömbben
valóban egy hash tábla.
Emlékezzünk vissza, hogy a hash tábla lehetővé teszi, hogy hozzanak néhány bemeneti
mint helyezze be a szót David, ha szeretné beszúrni David valamiféle szótár,
és akkor kap vissza valamilyen értéket általában.
Abban az esetben, helyesírás, igaz vagy hamis.
David vagy bármi szó, vagy nem szerepel a szótárban.
Egy asszociatív tömb tényleg csak egy hash táblát,
de ez egy sokkal inkább felhasználóbarát megtestesülése is.
Mint látni fogjuk, ez lesz, hogy tőlünk néhány dolgot
Nagyon, nagyon könnyen.
>> Vessünk egy pillantást néhány alapvető PHP
példák, és mit tehetünk ezen a nyelven.
Hadd menjek előre, és nyissa fel a forrás könyvtárban ma
nevű fájlt hello1.php.
Ez a fájl több hozzászólás, mint a tényleges kód,
hadd valójában távolítsa el az összes észrevételek fájlból
és a jelenlegi Önnek talán a legegyszerűbb PHP program itt.
5 sor, és néhány ezek white space,
így észre néhány fontos különbség van.
A fájl neve hello1.php.
Az első sorban, de az, <? Php.
Hasonló szellemében HTML,
hogy a karaktersorozat jelzi a számítógépnek
"Hé, számítógép, itt jön a program vagyunk a PHP-ben."
Ez biztosítja, hogy nem zavarodott, hogy ez egy másik nyelvet.
2. sor egy érdekes fehér térben.
3 sor a mi régi barátja printf,
ezúttal keretében PHP.
PHP saját verzióját printf viselkedik, pontosan ugyanaz,
így ez éppen nyomdába "hello, world".
És akkor ez ellentétes tag itt?> Azt jelenti, hogy ennyi az én PHP kódot.
>> Lássuk, hogyan kell futtatni ezt.
Én megyek vissza a terminál ablak van.
Én megyek az én PHP könyvtárba.
Figyeljük meg, hogy van egy csomó kép, az első ezek közül az egyik hello.php.
Hadd menjek előre, és fuss ez, hello1.php írja.
Engedély megtagadva. Oké.
Hogyan tudjuk megállapítani dolgok, mint ez a múltban?
Mi ez? >> [Hallhatatlan tanulói válasz]
Meg kell írni és olvasni, de hadd tegyek ls-l.
Ne feledje, ez a némileg rejtélyes kimenet, amellyel hello1
Úgy tűnik, hogy olvasható és írható by me
de olvasható mindenki más.
Kiderült, hogy ez valójában nem egy lépés a helyes irányba.
A különbség ismét egy értelmezett nyelv
van, hogy ne fogyjon a programot közvetlenül.
Te inkább fuss egy tolmács és add meg a kódot
amit írtam így értelmezni sorról sorra.
Ebben az esetben, a tolmács vagy a program Igazából futtatni kívánt
szó szerint hívják PHP.
>> Valahol ezen a merevlemezen a készülék van egy program
valaki írt nevű PHP, vagy Windows php.exe.
Mit fogok csinálni itt fogom a ténylegesen megtett PHP
de hogy ez egy parancssori argumentum a kódot, hogy én írtam,
és aztán kicsinyíteni és nyomd meg az Entert.
Ez fut a program nekem, felülről lefelé, balról jobbra.
Hadd menjek előre, és nyit egy kis variancia ezt.
Ebben hello2.php észre, hogy ez is
többnyire kommentek, hadd megszabadulni e, mint a figyelemelterelés,
és mi egyértelműen különbözik most ezt a fájlt?
Van ez az új vonal, kissé rejtélyesek a tetején.
In line 1 ez: #! / Bin / php.
Bin egy egyezményt a Linux és a Mac OS a binárisokat,
így / bin jelent ez tartalmazó mappát egy csomó binárisok
hogy van programozva, amelyek közül az egyik az a PHP.
A #! a beceneve kocsma,
amely a gyors módja a mondás, és mit jelent ez
hogy amikor futtatni ezt a programot most van egy tipp a tetején a fájl
hogy megmondja a számítógép, amit tolmács használni.
>> Nem lesz egy kicsit bosszantó, ha kellett, hogy mondja el a felhasználók és az ügyfelek
"Hé, mi ezt írta nevű programot hello1.php."
Mindössze annyit kell tennie, hogy örökre fut a PHP, majd a neve ennek a programnak.
Őszintén szólva, ez csak szebb futtatni hello1.php,
és valóban, tudjuk, ha mi a következőket.
Hadd menjek előre, és nem ls-l, és a hirdetmény hello2 ez még mindig csak olvasni írni
majd olvasd el olvasni, így nem tudok még csinálni, hello2.php.
De mi vezetett e valaha is olyan rövid utoljára a chmod parancsot.
Ha megteszem chmod a + x, ami azt jelenti, minden plusz végrehajthatósága,
majd hello2.php majd tegye ls-l újra észre, mi változott.
Egy, Linux megmutatta nekem a fájlnév zöld közvetíteni az ötlet
, hogy ez az végrehajtható, de ami még fontosabb, a bal oldali
észre, hogy a képviselő bit x végrehajtható most állítva.
Mi ez most azt jelenti, nem tudok futni ./hello2.php, mint rendesen,
nyomd meg az Entert, és mert a kocsma legtetején a fájl
ez egy tipp, ismét a Linux, hogy azt mondja
Ezzel tolmácsot futtatni ezt a fájlt.
Ne aggódj kényszeríti a felhasználót, hogy ténylegesen írja.
>> És milyen szép most ez a fajta lényegtelen az én ügyfelek vagy a barátaimmal
milyen nyelven írtam ezt a programot, így tudok menni előre mv
és nevezd át ez a dolog, hogy hello2, például.
És most, ha megteszem ./hello2
és kicsinyítés a program tovább fut.
Ezek a fájl kiterjesztések emberi konvenciót, hogy ez szükséges
valami, mint a csengés és a Make akik keresik őket.
De PHP tudtam hívni ezt a file kiterjesztés, amit akarok.
Tudtam becsapni a világot azt gondolni, hogy én vagyok igazán jó Ruby,
és nem tudtam írni hello2.rb majd futtassa ezt,
és íme, most már a Ruby változat, ami egy teljes hazugság.
De a fájl kiterjesztések értelmetlen
ha a fájl végrehajtható, és e különleges hint a tetején a fájlt.
>> Most, mint egy félre, hadd mutassam meg gyorsan 3-as verziójú,
amely egyfajta hasznos trükk, hogy tudja.
Az hello3 tettem valamit kicsit rosszul
hogy fogom frissíteni a forráskódot online.
A 3-as verzió, kiderül, hogy a legtöbb Linux számítógépen
Van egy program neve env környezetvédelmi,
és mit lehet itt csinálni, ha nem tudod hol PHP
telepítve van a helyi merevlemezre, mert valóban lehetett függően változik a számítógépen
hogy valaki használja, env csak mondja fuss env,
mely a legtöbb rendszeren, és kitalálni, hol PHP.
Csak egy közös trükk, így nem kell aggódnia, kideríteni, ha egy program.
De ha érdekel, hogy megtudja, hol a program, és még nem törődött eddig
akkor használja a melyik parancsot.
>> Hadd kicsinyítés és típusjellel php,
, és vegyük észre azt mondja nekem, hogy ez ténylegesen usr / bin / php.
Ez a fajta hazugság. Ez is bin.
Ez csak megmutatta nekem az első találatot.
Ha valaha is csodálkoztam, ha csenget, melyik csenget, ez a usr / bin / csenget,
amelyek, usr / bin / make, és hogy mit jelent ez az egész idő
akkor lehetett volna gépelni usr / bin / csenget be futtatni csenget,
de ez a fajta unalmas tenni, hogy így néhány mappák
mint usr / bin és a bin Feltételezzük, hogy alapértelmezett
így a számítógép tudja, hogy nézze meg őket.
Bármilyen kérdésre írásban egy szuper, szuper egyszerű Hello World programban
PHP-ben, majd fut?
Mert most kezdjük bevezetni vonzóbb szintaxist.
Rendben, itt vagyunk.
Ezek a programok láttunk valójában mindegyikük előtt.
>> Ha én nyit, például csináljuk beer1.php,
mi nem megy keresztül több változatát is, de amit tettem
volt, leültem, és öntötte vagy átalakított
a C kód PHP kód itt.
A legtöbb tetején a fájl megjegyzések itt.
Kiderült, hogy van egy új funkció van szükségünk hívott readline.
GetString, visszahívás, a hét 0-től volt CS50 dolog.
PHP jön a saját felhasználóbarát nevezett funkció readline
vevő 1 érv, amely meghatározza a prompt
kívánt mutatni a felhasználónak, és mit csinál readline
A adja vissza, amit a felhasználó a be
Ebben az esetben, én nyilvánító változó neve $ n.
Én tárolja benne a visszatérési értéke readline
után a felhasználó megkérdezése ezzel a string.
Csak biztonsági mentéséről, hogy valóban futtatni ezt a dolgot, hadd menjen előre
és fuss php beer1.php.
Hány üveg lesz-e? Csak csináljuk 2 ebben az időben.
Az Enter billentyűt. Ez minden.
>> A program funkcionálisan megegyezik a C verziót héttel ezelőtt.
De szintaktikailag lássuk, mi más.
Miután kap egy int a felhasználó észreveszi, hogy csinálok néhány hibaellenőrzés,
és ha n értéke kevesebb, mint 1 abbahagytam, és azt ki kell nyomtatni
szomorú üzenetet küld a felhasználónak és kilép, 1.
Ez is egy kicsit más.
A C-ben mit csinálunk? A C-ben visszatértünk 1.
A PHP kilép 1, amelyet őszintén van azt hiszem, egy kicsit intuitív
mert te szó szerint kilép a program.
Rendben, majd itt lent a bosszantó dal azonos szintaktikailag
kivéve a változó, ezért itt lent sorban 24-től
észre a for ciklus közel azonos,
de van $ elé i és n,
és mi is hiányzik a 26, hogy már a múltban
amikor nyilvánító i változó?
Nincs típus.
Ez téves PHP mondani int.
Egyszerűen nem kell megtenni.
A számítógép, a tolmács PHP elég okos ahhoz, hogy észre
hogy ha tesz egy számot a $ I fog kezelni
számként az Ön számára.
És akkor ide is plug in $ i, $ i, $ i - 1.
Minden, ami ugyanaz, aztán ide tesszük a "Wow, ez bosszantó" printf
majd kilép (0).
>> Ismét az elvitelre itt az, hogy bár fogunk költeni viszonylag
kevés az idő a PHP, biztosan versus mit csináltunk a C,
ez majdnem ugyanaz, és így fogjuk tenni ma, és a jövő héten
és azon túl összpontosít tényleg néhány új ötleteket.
Csak látom, hogy egy dolog nem fordít át C,
ez egy szuper egyszerű program tettük Hét 1
vagy 2, hogy CubeD értéket.
De milyen érdekes volt abban az időben ezt a programot, hogy
bevezette a fogalmat egyéni írásbeli funkciót, hogy mi magunk írt.
A szintaxis a PHP-ben közel azonos.
Itt a program kidolgozása tetején.
Figyeljük meg ismét hiányzik bármilyen fogalma fő.
Kezdek kód írása, és ez az, hogy mi fog kerül végrehajtásra a tolmács.
Én kinyomtatni x ma 2, feltehetőleg.
Aztán azt állítják, kocka ...
Akkor hívom a kocka függvényt, és adja át a $ x
és hozzá a visszatérési érték a $ x.
Aztán azt állítják, hogy ez kockára vágott, aztán mondom ezt, ami remélhetőleg
fogja mondani x most 8.
A szintaxis a funkció a PHP-ben valaha is olyan kissé eltérő.
Ismét hiányzik a visszatérési típus.
Ismét ki a hiányzó visszatérési típusa, valamint a hiányzó, ami más típusú?
[Hallhatatlan hallgatói válasz]
Nos, oké, ez jó. Akkor gyere vissza, hogy a második.
>> Nincs, például, int itt.
Nem, például, már int itt, mert, ismét, PHP
egyszerűen nem kell, és nem arra,
hanem ott van az új kulcsszót nevű funkciót.
A PHP majdnem egy kicsit világosabb, mert ha akarsz egy funkció
szó szerint azt funkcióval, akkor adja meg a nevét, majd egy vesszővel elválasztott lista
ha bármely érveit.
Nem kell mondani, semmis vagy ilyesmi, aztán vissza ugyanaz,
$ A * $ a * $ a.
Mi is hiányzik? Sammy rámutatott erre itt.
A tetején a fájl teljesen hiányzik a PHP-ben is egy prototípus.
Ez is a design.
Nyelvek és tolmácsok, mint a PHP okosabbak, mint valaha is volt C
A fordítóprogramok, mint csenget.
>> Emlékezzünk vissza, hogy csenget, ha nem mondja meg, hogy a kocka létezik,
ha nem mondja azt, hogy a printf létezik, mint a prototípus
vagy egy # include, nos, ez meg fog kiabálni veled, és nem is fordítsa le a kódot.
PHP és a modern nyelvek sokkal okosabb, amikor ezt.
Fogják venni, hogy magukra, hogy olvassa el az összes kódot
majd kiabálni csak akkor, ha úgy találja kocka sehol.
Nem számít, ha a kocka az alsó vagy a felső, vagy még néhány külön fájlba.
PHP és hasonló nyelven most elég okos, hogy előre nézni
mindent, mielőtt úgy ítélte meg úgy, mint amelyek hibázott.
Hova vezet ez hagy minket?
>> Csináljunk egy utolsó példa itt körülmények között,
és ha nyit conditions2.php nyilatkozat is
szintaxis itt majdnem ugyanaz.
Én használ readline helyett getString, azonban hogy a vonal az ugyanaz, mint korábban,
"Szeretnék egy egész kérem."
Aztán van egy, ha a feltétel, az else if, majd egy más,
de funkcionálisan ez a program is azonos azzal, amit csináltunk héttel ezelőtt,
így ha elfutok ez a dolog, php a conditions2,
és azt, hogy ez egy több, mint 23 -
Felvettem egy pozitív szám. Ha adok neki -1 Felvettem egy negatív szám.
Ha adok neki 0 I valóban felvette 0.
Szóval, aki törődik mindezt?
Nos, az egyik a móka fajta gyakorlatok itt
nekem legalábbis az volt, hogy menjen vissza, és látni, milyen gyorsan tudok végrehajtani Pset 5,
A helyesírási hibák Pset.
Emlékezzünk vissza, hogy volt ez a nevű fájlt speller.c,
és ott volt egy nevű fájlt dictionary.c.
Amit nem én voltam az a fajta töltöttem pár perc, és én át a C-kódot
A PHP kódot, és mi nem töltenek sok időt a helyesírás
mert akárcsak Pset 5 ha nem igazán kell
töltenek sok időt a helyesírás is, mert a figyelem a szótárban.
>> Elég annyit mondani, hogy ha olvassa végig helyesírás,
ezt a fájlt itt, ez nagyjából megegyezik a C kód
adtunk neked Pset 5.
Most adunk néhány $-helyeken.
Már megváltozott bizonyos funkció nevét, ha nem létezik a PHP.
Van egy további dolog itt, preg_match,
ami egy kicsit szakértő módon csinál valamit, de majd jön vissza, hogy végül.
De rövid, helyesírás majdnem azonos, és ha megnézi az legalján
amit végül kiköpi ez itt,
szavak elgépelt szavak a szótárban, a szavak a szövegben.
Rendben, mi az érdekes, most a következő.
A tetején a fájl vagyok igénylő dictionary.php.
Csakúgy, mint a C-# include PHP rendelkezik egy speciális funkciót nevű igényel
hogy nagyjából ugyanazt teszi szükségessé nevű fájlt dictionary.php.
Hogyan megy a végrehajtási Pset 5?
Hadd menjek előre, és megnyitja a fájlt ide.
Engedjék meg, hogy egy kis utalás van.
És hadd hozzon létre egy új fájlt és indítsa hívja ezt dictionary.php.
Hadd tegye a másik mappába, így tudjuk ezt élni.
És most én Nagyítás
Fogom kezdeni a PHP fájl nyitó zárójel php zárt tartót.
És akkor itt volt egy pár funkciót kellett megvalósítani az Pset 5,
ezért hadd kezdjem végrehajtásának néhány ilyen,
így funkció csekket, ami kellett, hogy egy szót érvként.
Fogjuk csinálni, és gyere vissza, hogy egy pillanat alatt.
>> Volt funkció terhelés lépett, amit érvként?
Szótár, így a fájl, hogy én tényleg akartam tölteni.
Volt funkció mérete, amely nem vállal semmilyen érvet
és ott volt a funkció-mi volt a másik?
Unload, amely nem vállal semmilyen érvet sem.
Ezek a 4 funkció, hogy én kell most végrehajtani PHP,
és mit fogok csinálni az megy előre, és ezt.
Sok használt egy hash táblát Pset 5,
hadd menjen előre, és hozzon létre egy hash táblát PHP.
Kész.
Ez ad nekem egy hash táblát. Nos, miért?
Az egyik, a változó neve $ tabla, csak idézik fel az ötlet egy hash tábla.
A szögletes zárójelek, bár emlékszem, képviseli mi?
Egy tömb, de a PHP tömbök nem kell numerikusan indexelt.
Ők is asszociatív tömbök,
ami azt jelenti, hogy tetszőleges kulcsokat és értékeket.
>> Sok hasonlóan Pset 5, azok, akik nem hash tábla implementációk
akkor valószínűleg be a szót, majd beilleszteni azt egy láncot kapcsolt listák
vagy tárolt értékét true valahol, vagy valami ebben az értelemben.
Te valahogy eszébe jutott az a tény, hogy a szó volt.
Most, hogy az lesz az én hash tábla,
és így most megy a végrehajtó az ellenőrzés funkció
Csak meg kell nézni, hogy a belső hash tábla
, és ha egy szó van.
Mit fogok tenni, hogy én fogok mondani, ha-
mondjuk isset, ami egy PHP függvény, amely a szó szoros értelmében csak azt jelenti, a kulcs készlet,
így isset ($ table [$ szó],
és ha igen, vissza igaz.
Ennyi. Ez Pset 5 in PHP.
Nos, a méltányosság, oké.
Else return false, így nincs ott.
Mi folyik itt valójában?
Nos, ha a tábla vagy hash tábla itt több általánosan
egy asszociatív tömb, amely azt jelenti, hogy index bele
egy szó, mint a "szó", és van, hogy újra valami értéket.
>> Mi vagyunk a fajta szerzés egy lépéssel magunkat.
Lenne ilyen jó, ha ténylegesen berakodott a fájl első,
így terhelés nem olyan egyszerű, de hadd menjen előre, és felkap
egy igazán gyors végrehajtását terhelés.
Hadd menjek előre, és azt mondják, szó lesz fájl szótárban.
A fájl PHP függvény megnyit egy fájlt
és visszatér Önnek egy tömb összes szó, hogy a fájl,
Csak átadja el Önnek.
Ez volt a nagy fájdalom is, nem igaz?
Most foreach, ez az új konstrukció, foreach ($ szavak as $ szó).
Ez a hurok fog kezdeni iterációjával az array szavak
és hozzá a $ változó szó minden szó a fájlban
az első és a második, hogy a harmadik és a negyedik végig
így nem kell csinálni a bosszantó [i] jelölést és hasonlók.
És amit én egyszerűen nem megy minden ilyen szavak
A tároljuk az én tábla indexelő figyelembe táblázat
majd ezzel igaz, mert emlékezni
hogy egy szó van a szótárban minden, amit igazán csinálni
az a fajta fordítsa egy kicsit, és azt mondják ezt a szót én hash tábla ott van, igaz.
És ha nincs ott, nem kell kifejezetten fel hamis,
egyébként azt kell tenni false összes lehetséges szavak az univerzumban.
>> Elég nekem, csak állítsa be az index értéke
az igaz, ha a szó valóban az én hash táblában.
Nos, én egy pár vágás sarkok, hogy itt fogok integetni a kezem a most,
de most a terhelés függvényében történik.
Én betölteni a szavakat a fájlt egy tömb.
Én iterációkhoz hogy tömb, és minden szó a tömbben
Én dugja be a hash tábla 1 sor kódot.
Ez a móka. Tudja, hogyan tudjuk végrehajtani Méret most?
Nos, méret mindig elég könnyű, a méltányosság.
Itt is csak azt vissza száma asztalra.
Ez elég egyszerű is, számolja meg a dolgok a táblázatban.
Ez tulajdonképpen a fajta nem a leghatékonyabb.
Azt kéne rendelkeznie nevű változó méretű, így tudjuk csinálni
állandó, de ez nagyon egyszerű.
Ja, és majd kirak, ha valóban akarjuk, hogy az anális itt
azt mondhatjuk, hogy ez hogyan kirakodásához valamit.
Csak állítsa a változót egyenlő egy üres tömböt,
és megszabadul mindent, ami ott volt.
Nem kell hívni ingyen.
>> Megint vágott néhány sarkok, és elnézést kijelölése probléma set 5
talán a C, de ha most megy előre, és fuss ez,
Megyek ténylegesen futtatják verziót írtam előre
csak azért, hogy én nem semmilyen szintaktikai hibák nélkül.
Hadd menjek előre, és fuss helyesírás. A használat az ugyanaz.
Itt van egy szótár fájl, ami tartalmazza a szót, csak foo.
Itt van egy szöveges fájl, amely tartalmazza a csak foo bar.
Nézzük ezt a helyesírás-ellenőrzés, így a helyesírás, ezzel a szótár fájlt a szöveges fájl.
Van egy elírt szó, bár, és íme.
Kész a Pset 5.
Vessünk egy 5-perces szünet van, és mi jön vissza, és inkább a PHP.
Rendben, mi vissza.
Hadd ne-utálsz egy darabig.
Nézzük most valóban látni, ha ez nem volt pozitív
ténylegesen végrehajtó ez a dolog a PHP-ben.
Nyújtott, azt 45 másodperc végrehajtani.
>> De menjünk előre, és most fut a dolgokat.
Hadd menjek előre, és fuss a C változat
A Speller, és mi fuss ez az egyik legnagyobb fájlokat,
amely a King James Biblia.
És ez itt in-menjünk a mi C mappába,
Speller a King James az 5..
Sok elgépelt szavakat.
Oké, ez a kimenet akkor valószínűleg van akkor is, ha az idő egy kicsit más,
ha van minden megfelelően működik, és így időt összesen helyesírás-ellenőrzés
A King James Biblia 0,38 másodperc, így nagyon jó, hogy a végrehajtási használatával.
Most hadd menjen be a PHP verzió, amit most írtam.
Hadd futni helyesírás a King James.
Hoppá, figyelmen kívül hagyja, hogy a hiba. Én vagyok a rossz könyvtárban.
Speller a King James az 5..
Majdnem kész.
>> Oké, a ravasz megfigyelő rájönnek, hogy több volt, mint 3 másodpercig ott.
Ez az igazi működési idő.
Kiderül, hogy időbe telik, hogy köpni sok szöveg-ből
mert a puffer kérdések, de hosszú történet rövid,
volt 3,15 másodperccel a gép idő, CPU időt,
versus mi volt egy perce?
Like .3.
Úgy értem, ez egy nagyságrenddel lassabb, ezért hol van, hogy a
Nevetséges lassulás jön?
Nos, mint volt a helyzet a legtöbb bármilyen tervezési döntést hoztunk
az osztály az elmúlt 9 hetes ott szinte mindig ilyen cserét.
Néha csak a tér között, néha között térben és időben,
tér, idő és fejlesztési erőfeszítések, sőt itt, bár
megmentettük hatalmas mennyiségű időt, talán potenciálisan 10-20-30 óra
A fejlesztési idő végrehajtása a helyesírás-ellenőrző
által ostorozó fel mindössze 45 másodperc alatt ezen a nyelven
az ára az, hogy ez egy nagyságrend lassabb ennek eredményeként,
és ez általában a helyzet a legtöbb bármely értelmezett nyelv,
PHP, Python, Ruby, Pearl vagy mások, amellyel
ha akarsz futtatni tolmács segítségével, és azt olvassa a kódot
soronként, felülről lefelé, balról jobbra,
hogy a közvetítő fog tartani egy ideig a saját,
és mit érzés itt a 3 másodperc, szemben a 0,3 másodperc
az a tény, hogy ez a közvetítő, aki szó szerint értelmezi a kódot
sorról sorra, és Isten őrizz, ha belül egy hurok
egy hatalmas tartalmazó fájlt több százezer szavak.
>> Ezt a felső fog hozzá, és add fel, és adjunk hozzá, és add fel.
Egy eszköz, mint ez, hogy ez valószínűleg nem a legjobb nyelv használatát végrehajtási
A helyesírás-ellenőrző, ha közvetlenség is érdekes, hogy a felhasználók és az Ön számára.
De a luxus van egy pillanat, ha
nyelvet használnak, mint a PHP vagy sok értelmezett nyelv
keretében a weben, ami azt illeti, van az előny
hogy az internet sokkal lassabb, mint a legtöbb számítógép.
Van egy GHz CPU a számítógép, 2 GHz-es, talán még ezekben a napokban.
De a valóság az interneten van egy nagy mennyiségű látencia
amely a böngésző, hogy beszéljen a szerver, bár láttuk a múlt héten
hogy elég gyors, egy fél milliszekundum, vagy úgy,
ez is összeadja, és ha le dolgokat, mint egy kép
vagy egy Facebook fénykép vagy kapok egy azonnali üzeneteket Facebook fecsegést,
Gchat vagy a hasonló, az összes ilyen menettérti idő
között, a böngésző és a szerver kezdet add fel,
ami az adott választott nyelv sok esetben
egyáltalán nem olyan fontos, szóval jól egy kicsit lassabb nyelv
mint a PHP vagy Python vagy Ruby
de amelynek vannak hatalmas upsides hogy Ön és kollégái
és barátai, mert akkor végre dolgokat, így sokkal gyorsabb.
Sőt, akkor sokkal kisebb a kockázata bizonyos biztonsági hibái.
Nincs pointers PHP-ben.
Nincs seg hiba, hogy könnyedén indukálni
ugyanúgy tudna a C
A C te szuper közel a hardvert.
A PHP és hasonló nyelven te valami magasabb szintre, hogy úgy mondjam,
sok védekező közted és mi ténylegesen folyik
a gép belsejében, és ez csak egy üzlet.
>> Kaptunk a pont, amelyek ezeket a modern, magas szintű nyelven
mint a PHP, mert a tanulságok nyelven, mint a PHP-ben C.
De ha nem érted, mi folyik a motorháztető alatt egész idő
akkor biztosan nem tud a tervezési döntéseket,
és természetesen, amikor a munka egy olyan helyen, mint a Facebook vagy a Google
vagy bármely ezeken a helyeken, hogy az egyre inkább játszik nagy adathalmazok
akkor is, ha visszamegyek, és nem gyakornok, és dolgozunk néhány MD
A néhány nagy adatkészlet bevonásával betegek és az orvosok
és hasonló a megfelelő eszközök is rendkívül meggyőző
mert különben az elemzés egyes adathalmaz eltarthat másodpercig
vagy esetleg szó szerint órákig.
Ez csak egy példa, hogy nem meghiúsítsa az Ön számára, hogy sokkal több erőfeszítést
ez volt a C, hanem, hogy segítsen értékelni, hogy amikor te végre valami C
igazán érti, vagy elmélet, hogy valóban megértsék
hogy minden, vagy ki kell dolgozni, és akkor már szinte teljes ellenőrzést
át, mi folyik a motorháztető alatt, és ezek magasabb szintű nyelven
van, hogy lemondjanak több ellenőrzés, hogy az emberek, akik kitalálták őket
és ezekre inkább azok tervezési döntéseket, mint a tiéd.
De ha magától értetődőnek, hogy a teljesítmény
nem annyira fontos az interneten, mert ezeknek az egyéb kérdéseket,
Csak hálózati sebesség egy kicsit lassabb, mint a CPU sebesség egyébként,
így tudjuk rendezni az engedheti meg magának, hogy egy kicsit lassabb nyelv
ha a upsides itt tudjuk fejleszteni a dolgokat 10-szer gyorsabb, vagy még több.
>> Lássuk, hogyan tudjuk kezdeni ezzel.
Hadd menjek be egy mappába
napjaink példák nevű frosh.ims,
és ez ténylegesen személyesen motiválta a tény, hogy a legelső dolog
Írtam a webes éve miután CS50 és CS51
volt a honlap a Frosh IMS-program, gólya intramurális sport,
amely abban az időben ez elég volt évekkel ezelőtt, hogy az időben
nem volt honlapja a program, bár volt egy Web,
és helyette volt Proctor a Wigglesworth amellyel, ha akarod
regisztrálni a röplabda vagy foci vagy bármi mást kíván, töltse ki az egy darab papír.
Te aztán gyalog át az udvaron.
Te aztán kopogtattak az ajtón, és csúsztassa a saját ajtaját, vagy kézzel a Proctor-
egy darab papírt az Ön nevét rajta, vagy nem szeretné, hogy a csapatkapitány,
milyen sport akartál csinálni, és mit kollégiumi voltál be
Ez a fajta egy régi iskola módja a dolgok, és ez volt a legfontosabb
alkalom automatizálni sok ezt a folyamatot.
Csak megy a honlapon. Azt írja valami be
Kapsz egy visszaigazoló e-mailben, és bumm, kész.
>> Ez volt az első dolog, amit tettem, bár a nyelv úgynevezett Pearl,
de ez viszonylag könnyen megoldható a PHP, és ez a fajta reprezentatív
A probléma akkor kezdődik, amikor megoldásához tudja kifejezni magát
programból, és nem kell támaszkodnia dolgok, mint például a Google webhelyein
vagy Excel vagy szerszámokat, amelyek adni neked.
Srácok, most már képes olyan dolgokat, mint ez.
Ez egy szuper csúnya változatát egy űrlapot,
De tételezzük fel, használja azt az elején a beszélgetés, amelyben ez a
nagyjából milyen formában volt, mint évekkel ezelőtt nekünk
annak érdekében, hogy az emberek az interneten, hogy iratkozzon fel Frosh PM.
Megkérdeztük egy név, egy jelölőnégyzetet e vagy nem lenni kapitánynak,
férfi vagy nő, és akkor mi kollégiumi voltak,
és akkor fog benyújtani ezt a nyomtatványt.
Nézzük először megvizsgálja a motorháztető alatt, a HTML, amely ezt a weboldalt.
Hadd menjek be froshims0,
és mint félre, mert Pset 7 veszem biztosra
a könyvtárak és a mappák leteszem dolgokat be
Majd végigvezeti hol dolog van, hogy menjen a készüléket,
mely mod parancsokat kell futtatni, úgyhogy ne aggódj minden
hülye details szinkronizálását-tól a get-go ide.
>> Rendben, itt van froshims0.php.
Hadd lapozzunk lefelé, és mi kíváncsi itt,
ez egy PHP fájl, de mi van a belsejében, tisztán?
Ez egy csomó HTML, és valóban, a PHP eredete
tényleg voltak, hogy egy Web-központú nyelv.
Egy pillanattal ezelőtt használta, hogy hajtsák végre a sör például,
a feltételeket például a helló példa, és ez rendben van.
Használhatja PHP egy programozási nyelv
ahol a script tényleg csak a nómenklatúra adott egy gyors és piszkos programot
vagy valami, hogy írsz egy előre megírt, vagy általában az értelmezett nyelv.
PHP szuper hasznos, mert láttad, hogy milyen gyorsan
Viszonylag tudunk felkap programok PHP.
De ez tényleg tervezték, hogy kell használni az interneten,
és céljuk a webes abban az értelemben, hogy észre ide a tetején a fájl
Tudom kezdeni <? Php.
Aztán van egy csomó haszontalan kommentek, megadják, de aztán közel PHP módot.
De aztán csepp HTML módba.
>> Mi érdekes PHP bár a fájl vége. Php
ez általában azt jelentette, hogy együtt keveredett HTML,
Néhány PHP kód, néhány HTML.
És majd meglátjuk, végül, hogy mi lehet kezdeni, hogy kötekedik azok egymástól
és folyamatosan a HTML külön a mi PHP teljesen,
de az eredete PHP valóban volt, hogy neked ez a rugalmasság,
hogy ha kérsz HTML csak írni, és hogy lesz
kiköp azonos a böngészőben.
De ha szükség van néhány programozási technika,
Néhány programozási kódot, akkor is tedd be a pontosan ugyanolyan fájlt, ahogy azt hamarosan látni.
Itt a HTML.
Van egy címet ezt Frosh PM.
Van egy body tag, aki kapott néhány CSS rajta középre mindent a közepén,
aztán itt lent van olyan formában, amely látszólag fog benyújtani
egy új nevű fájlt register0.php, úgyhogy majd meglátjuk, hogy egy pillanatra.
Ez olyan módszerrel, az úgynevezett post, ami akkor jön vissza is.
Aztán valamilyen formában bemenettel, egy úgynevezett nevét, akinek típusú szöveg,
akinek neve kapitány, amelynek típusa jelölőnégyzetet,
és ez az, amit még nem láttam korábban, de ez pontosan mit mond.
Kapsz egy jelölőnégyzet helyett a szövegdobozban.
Itt lent van egy rádiógomb, amely egyike azoknak a kör gomb
hogy akkor sem ezt választja, vagy hogy az egyik.
>> Figyelje, hogy ez szándékos, hogy én adtam a két rádiógombok nevét nemek.
Így kapsz kölcsönös kizárás, amellyel rá kell kattintani
vagy ez, vagy hogy az egyik, és kattintson a többi
akkor törli a jelet a másik, így van, hogy nekik ugyanazt a nevet
ha azt szeretné, hogy kölcsönösen kizárják egymást, mint ezt.
És akkor a kollégiumi, nem hiszem, láttunk még, de ez egy választó menü, a legördülő menüből.
A címke mert ez válasszuk.
Ezután megkapjuk a legördülő menüből egy nevet,
és akkor van egy csomó ezeket a lehetőségeket.
Az első, csak az esztétika, egy üres string.
Csak azt akartam, hogy a legördülő legyen üres alapértelmezés szerint,
és akkor ott van Apley, Canaday, Grays, és így tovább.
És észre a kettősség itt.
Az opció a legördülő értéke,
de akkor annak van egy ember-barát név, ami ebben a példában
azonos, de ha igazán szeretett volna lenni az anális mi lehetett volna
ennek az értékét legördülő csak legyen a rövid változat,
Grays, de tényleg mondani Grays Csarnok, hogy az ember lát,
de ez nem olyan érdekes, úgyhogy csak folyamatosan egyszerű és tette őket azonos.
Aztán meg az alján van egy submit gomb
amelyek láttuk korábban, de észre én csak adtam egy másik szót.
Ahelyett CS50 keresési adtam a címke "Regisztráció".
>> A végeredmény ez a honlap itt, és újra,
amennyiben ez kap benyújtani?
Egyre benyújtott néhány fájl, az érték a kereset attribútum,
amely register0.php.
Lássuk, mi is történik itt.
Hadd menjek előre, és töltse ki az űrlapot, mondjuk David,
férfi, Matthews, majd azt mondom regisztráljon.
Hadd kicsinyítés és kattintson regisztráljon.
Oké, szóval ilyen haszontalan, de lássuk, mi folyik itt valójában.
Figyelje meg, hogy az URL-címet változott, hogy register0.php.
Mi kíváncsian hiányzik az URL-címet, bár, bár mi csak benyújtotta a formában?
[Hallhatatlan hallgatói válasz]
Oké, ez csak a Chrome, hogy felhasználóbarát ezekben a napokban.
Ez tényleg ott van. Ők csak elrejteni helyet takaríthat meg.
De jó gondolat, jó gondolat.
Felé a másik végét az URL-címet, bár, mi hiányzik? Igen.
[Student] A query string.
A query string, így felidézni a mi egyszerű Google-keresés példákat.
Amint kattintson az elküld gombra az URL-címet
elvitt a Google, de akkor ott volt? q = számítógép-tudomány, vagy bármi én gépelt be
Ez azért van, mert mi használtuk get módszer a keresési példa.
>> Ezúttal mi és milyen módszer helyett?
Tegye fel, és az egyik a közvetlen megkülönböztetés
közötti kap, és írjon, hogy tegye nem tesz a felhasználó bemenet az URL-címet.
Ez elrejti azt. Még mindig elküldi.
Tény, hogy amit látunk a böngészőben itt, mivel mi derül ki egy pillanat
által nézett register0, az Én csak látni a tartalmát
A tömb nyújtották be a böngészőből a szerverre.
De az URL nincs?, Nincs kulcsszavak
vagy értékek, és miért van ez?
Nos, tegye lehetővé teszi, hogy még be adatokat az űrlapot a szerver,
de nem tette be az URL-címet, így milyen információk után
különösen alkalmas talán, ha kéred, hogy a felhasználó
írja bemeneti formában?
Olyasmi, mint egy jelszó, vagy valami ilyesmi, mi mást?
Hitelkártya-számokat.
Bármi, ami enyhén érzékeny, akkor valószínűleg nem akar véget fel az URL-címet
ha csak azért, mert ez azt jelenti, a szobatársad vagy családtag egyszerűen troll keresztül
az internet történetét, majd szó szerint látni jelszavait,
szó szerint lásd a hitelkártya-számokat, mert a legtöbb böngésző
emlékszik a történelem bármilyen URL voltál at,
így ha csak azért, mert lenne egy rossz ötlet.
A hozzászólás nyersbőr, hogy részletesen a felhasználó.
>> Továbbá, hogyan lehet feltölteni egy fényképet a Facebook?
Nos, az csak 2 mechanizmusok igazán használni,
bár van néhány más, misztikus is, az kap, és írjon.
Hogyan lehetséges feltölteni egy fényképet keresztül URL?
Tudod valójában csinálni.
Tudod hogy egy JPEG vagy bitkép vagy GIF és akkor képviseli azt hexadecimális
vagy valami úgynevezett bázis 64.
Ahelyett, hogy 16 alap használata alap 64, amely lényegében úgy néz ki, mint a
ASCII karaktereket, és akkor tényleg feltölteni egy fényképet keresztül URL
után egy kérdőjel, de általában megengedett méretet.
A legtöbb böngésző kényszeríteni URL-eket nem lehet több, mint 1000 karakter,
talán 2000 karakter vagy hasonlók, így nem lehet feltölteni
A 10 MB Facebook fotó.
Mert, hogy használja hozzászólás is, így most kap helyezi a paraméterek az URL-ben,
ami szép és hasznos néha, de semmit érzékeny vagy nagy
post az út.
Mit register0 valójában csinál itt?
Hát, ha nyit register0 észre, hogy ez egy szuper egyszerű oldal,
de ez bizonyítja az a tény, hogy én is együtt keveredik, a jobb vagy rosszabb,
HTML PHP.
Ez az egész fájlt, kivéve a megjegyzések a tetején, a HTML
kivéve ez a fickó itt.
>> Figyeljük meg a közepén a saját PHP kód,
közepén a HTML, van valami átmenetileg
belépett PHP módba.
Hívom a speciális funkciót nevű print r.
Ez azt jelenti, nyomtatás rekurzív, és mit csinál ez rekurzív nyomtat
bármilyen változót adja le, pontosvessző, exit PHP módot.
És a pre tag ad előre formázott szöveget,
mono tér szöveget úgy, hogy minden hely, akkor valóban látni azt.
Ez nem tűnik el. Mi az a poszt?
Nos, mi érdekes és vonzó a PHP-ről
az, hogy amikor be űrlapot kap, vagy postai úton
bármit, ami benyújtott Önnek a böngésző
PHP maga kitalálja, hogy mi a kulcs érték párok,
kitalálja, ha van azonos jeleket, számokat, ha van egy kérdőjel.
Ez nem a kemény munka az Ön számára, és akkor odaadja neked egy asszociatív tömbben
tartalmaz mindent, ami a felhasználó beírt a formában.
Nos, mi nem ezt az űrlapot területeken van?
>> Meg kellett 4 mezőket.
Az egyik egy szöveges mező nevű nevét.
Az egyik egy négyzetet nevű kapitány.
Az egyik egy rádiógomb nevű nemi,
volt, egy legördülő menü nevű kollégiumi,
úgyhogy észre, amikor nyomtatni rekurzív
tartalmát e különleges változó.
Ez egy speciális globális változó neve szó szerint $ _POST, minden sapkák.
Ez egy speciális globális változó, hogy a PHP csak teremt az Ön számára
és a kéz neked, hogy el tudja érni mindent
küldtünk el egy űrlapon keresztül a felhasználó által.
És hívja print r rajta, akkor nem ezt a normál alkalmazás.
Megcsináljuk ezt látni belül ez a változó,
és mi van benne, nos, 4 kulcs,
4 http paraméterek, hogy úgy mondjam,
neve, kapitány, nem, kollégiumban, majd az értékeket, hogy a felhasználói
beírt egy kivétellel.
Én típusa D-A-V-I-D.
Megnéztem a dobozt, bár a férfi, ami nyilvánvalóan be egy értéket
mindössze m legyen tömör.
>> Amikor a kijelölt Matthews, hogy ez az érték, hogy van kiválasztva,
és ez egy kicsit hülye, de ez az egyezmény.
Amikor megnéztem a dobozt, akkor az érték be, "a" kapott be a jelölőnégyzetet.
Ha még nem ellenőrizte azt, nem érték volna elküldött nélkül.
Ez csak ad nekünk betekintést, mi van benne E különleges globális változó,
és ez olyan különleges, hogy ez az úgynevezett szuper globális változót.
Létezik mindenhol tartozó kódot, így tényleg hozzáférni.
Ez nem olyan meggyőző, úgyhogy valóban használja a szuper globális
és valóban megpróbálja regisztrálni valakit.
Az froshims1 fogok, hogy egy változás.
Én megváltoztatja a keresetet register1.php,
és csinálok egy másik dolog.
Én kedves volt zavarba minősége honlapomon ott.
Elég undorító, őszintén, így kiderül,
amelyek segítségével nagyon könnyen az interneten
mások JavaScript kódot, más emberek CSS
hogy már írt és nyílt forráskódú és elérhetővé tenni, mint egy könyvtár,
hogy úgy mondjam, és például, itt vagyok egy szabadon rendelkezésre álló könyvtár,
egy csomó kódot, hogy valaki más írta.
>> Twitter történt írni ezt a kódot, és ez az úgynevezett bootstrap könyvtár,
és ez csak egy csomó CSS ​​stíluslapok, egy rakás. css fájlt
hogy valaki más írta és rájöttek, hogyan lehet mindent szép és csinos
hogy az emberek, mint mi is aggódni egy kicsit kevésbé a esztétika és a fókusz sokkal
A logika és a tényleges programozás.
Azáltal, összekapcsolva azt be, hogy a tag, amely ugyanazt a címkét szoktam emlékezni styles3.css korábban
Most hozzáférhetnek nevű fájlt bootstrap.min.css.
Min csak azt jelenti, hogy már minified, és ők már ütött megszabadulni az összes white space és így tovább
Csak, hogy megbizonyosodjon arról, hogy nem küld nekem több bájt, mint amit ténylegesen szüksége van.
De van egy csomó CSS, tehát ha most nyit az 1-es verzióját Frosh PM
észre, hogy a fájl biztosan szebb.
Most még csak fekete-fehér, hanem észrevenni, hogy csak használ a stíluslap
és használata bizonyos funkciói a számítógépre formában ez nem csodálatos,
de ez határozottan tisztább, mint korábban volt, és a projektor nem csinálja igazságszolgáltatás.
Kevés szürke vonalak körül a gombok és az egész szövegmező itt,
de ez határozottan tisztább, mint korábban volt.
>> Most, tisztesség, tudtam meg kell változtatni a jelölés egy kicsit.
Ez az 1-es verzióját, és vegyük észre, hogy én már használt néhány új tag,
és őszintén szólva, fogalmam sem volt, hogyan kell ezt csinálni, amíg nem olvassa el a dokumentációt
A Twitter bootstrap könyvtár, és azt mondták nekem, ha azt szeretnénk, hogy használja a könyvtári
használata fieldset elem belsejében formában,
helyezze a kívánt szót mellett megmutatja mező belsejében egy címke tag,
majd adja meg a bemenetet egy nevet, mint korábban,
majd a jelölőnégyzetet, nem csak te csavarja be egy címke elem,
használ egy úgynevezett osztály, így még nem láttam ilyet,
de akkor látja ezt az egyik Pset 7-es nadrág.
Egy osztály CSS segítségével csinálj valamit nagyon hasonló az ID,
de mielőtt amikor volt egy azonosítót a # jelet
hogy volt egy és csak egy elem.
Mi a jó egy osztály, hogy több elem is lehet az azonos osztályú
vagy az azonos CSS dolgokat alkalmazva.
>> De ismétlem, inkább azok a rövid, és a többi ez csak másol és tészta
a saját dokumentációját, ahol adtam egy címke itt-ott.
És a végén, mert már tartalmazza a link tag a tetején,
Mindent úgy néz ki, csinosabb automatikusan
egyszerűen miután jelölt oldalam oly módon, hogy
Twitter várható, és van olyan sok különböző módon
Az ezt, és ez valóban nagyon megfelelő.
Ezen a ponton a félévben, mint látni fogod a Pset 7-es spec,
Googling körül, olvassa fel a könyvtárakban, a más emberek CSS
és a JavaScript megoldani járulékos problémák
A probléma halmaz maga bizonnyal ösztönzik és az út
A Web épül ezekben a napokban, az állva más emberek vállára
így valóban összpontosítani új és érdekes problémákat.
De nézzük most összpontosítani, megint csak a logika.
>> Ez egy gyors kitérőt az esztétika, csak, hogy mutassa meg az irányt, amelyben mehetsz.
Fogok visszatérni a csúnyább 1 most csak azért, mert
nincs zavaró Twitter cucc, és hadd menjen előre, és nyissa ki
froshims2, amely ismét különbözik csak az akció, register2.php,
és vessünk egy pillantást, milyen hatása van.
Hadd menjek előre, és írja be David.
Nem leszek kapitány ebben az időben.
Azt mondom férfi, Matthews, nyilvántartásba.
A francba. Oké, ez egy csavar ki a részemről.
Készenlét.
Register2, line 22, ha üres vagy, sajnálom.
Nézzük újra.
Oké, upon benyújtásával ezt az űrlapot, mi történt?
Én beírt David, kockás férfi, kattintott Matthews, nyilvántartásba.
Ön regisztrálva van. (Nos, nem igazán.)
Ez nyilvánvalóan egy lépés nem csupán kinyomtatott tartalmát néhány változó,
de mi ez a fájl valójában csinál?
In register2.php
észre, hogy van valami új kódot.
Belül a testem tag van alapvetően, ha más konstrukció,
hanem azért, mert én együtt keveredés ezt néhány HTML
Meg kell be-és kilépéshez PHP mód oda-vissza, úgyhogy lássuk, mit csinálok.
>> Az első sorban itt azt mondom, ha ez a helyzet
hogy a poszt szuper globális üres a kulcs nevét,
Más szóval, ha a felhasználó nem ad meg egy értéket nevet a formában,
akkor üres megy vissza igaz, mert az érték üres.
Vagy-észre a függőleges vonalak, ha a nemek közötti üres
belül a különleges szuper globális, ami ismét képviseli a tartalmát a forma,
vagy a kollégiumi üres, akkor én megyek előre, és kiabálni a felhasználót.
Hogyan? Hát, észre fogom mondani, meg kell adnia a nevét, a nemek és a kollégium.
Nézzük ténylegesen indukálják ezt a hibát.
Hadd menjek vissza a formában. Hadd töltse be újra, hogy törölje azt.
És én csak megy, hogy nekik David, és nem kell tudni, hogy hol lakom.
Regisztráció. Úgy tűnik, nekem kell mondanom nekik, ahol élek.
Meg kell adnia a nevét, a nemek és a kollégiumban. Menj vissza.
>> És tudtam kattintva vissza, hogy a forma, de miért van ez?
Nos, ebben az esetben a neve ennek ellenére nem üres, de a nemek közötti volt, és kollégiumi volt,
így ez az egész kifejezés értéke true, és bár a szintaxis egy kicsit új,
újra belépünk PHP módba, ismerős if,
de az új rész itt csak ez a vastagbél-, és én elszúrtam elhagyásával a zárójel
véletlenül, de észre a vastagbél, és ez azt jelenti,
bár mi kilépéskor PHP módot minden
hogy a következőképpen kell kiköp szó, hogy a böngésző
amíg meg nem jelenik egy mást tömb, mint mi itt,
ebben az esetben ehelyett köpni ezt meg
amíg meg nem jelenik a endif, így néhány enyhén új szintaxis
, amely lehetővé teszi számomra, hogy váltás a HTML és PHP.
Mi lehet tisztítani ezt fel végül, de most,
ez egyfajta kényszerítő módon hibaellenőrzést az űrlapot.
>> Most azt mondom, hogy nem igazán nyilvántartásba, mert nyilván tettünk semmit, csak az adatokat,
úgyhogy valóban megpróbál tenni valamit cool.
A froshims3 az egyetlen különbség, hogy én megyek be register3,
így a HTML van az ugyanaz.
Ebben register3 észre ezt.
Ez egy ilyen szexi.
A tetején Én használ egy require nyilatkozatot, így ez olyan, mint a # include.
Ezúttal ez nem stdio.h vagy ilyesmi.
Ez egy PHP könyvtárat, és ez az úgynevezett PHPMailer.
Honnan tudom, hogy fel pontosan ezt idézett szöveg?
Olvastam a dokumentációban, így amikor azt mondták nekem, hogy ezt a tetején a fájl
ha szeretné használni a speciális könyvtári nevű PHPMailer, hogy azt teszi, amit mond.
Ez lehetővé teszi, hogy küldjön e-mailt keresztül PHP.
Most lapozzunk lefelé tovább.
>> Közlemény kezdődik vagyok PHP módban egész idő alatt,
így most észre idelent importálása után a könyvtár,
hogy úgy mondjam, csinálok néhány alapvető ellenőrzést.
Ha ez a helyzet, hogy neve nem üres
és a nemek nem üres észre a felkiáltójel-
és kollégiumi nem üres, akkor a felhasználó logikusan töltötte ki az űrlapot, legalábbis elég.
Nem érdekel, ha ők kapitány vagy sem. Csak kell a nevüket, a nemek és a kollégiumban.
Ha kitöltötte azokat ki, hogy ezek egyike sem mezők üresek
ez némileg új szintaxist.
PHP, mint félre, egy objektum-orientált programozási nyelv
amelyek közül néhány a srácok lehet előhívni APC-k vagy hasonló.
Mert most, ha ismeretlen, csak tudom, hogy használja ezt a könyvtárat
Van, hogy írjon egy sort, mint ez egy új kulcsszót,
a szó szoros értelmében egy új kulcsszót nevű új.
De azon túl, hogy van néhány ismerős szintaxist.
Ez egy operátort, amely hasonló ahhoz, amit használt struktúrákat keretében mutatók.
A mai PHP nem mutató,
de tudom, most, hogy belül az e-mail változó
lényegében egyfajta mutató egy speciális könyvtári
hogy valaki más írta, és ha azt akarom, hogy hozzáférjen bizonyos funkciók
belül, hogy a könyvtári én, mint a C-ben, a nyíl üzemeltető,
annak ellenére, hogy ezek valójában nem mutatók.
Ez a fajta PHP saját verzióját cikke.
Ez azt jelenti, menj be a könyvtárba, és hívja a IsSMTP funkciót.
SMTP, visszahívás, a mi Warriors a Net utal e-mailbe,
és ez csak azt jelenti, használjon e-mail kiszolgáló erre Frosh PM regisztráció.
>> Mit host akarok használni?
Nos, Harvard, ha a Google körül, van egy e-mail szerverhez nevű smtp.fas.harvard.edu.
Ha játszol végig otthon vagy élsz a Comcast hálózaton
lehet, hogy valami ilyesmi smtp.comcast.net.
Ez teljesen attól függ, hogy hol élsz, és aki az ISP.
Utána fogok állíthatom be a címet önkényesen kell jharvard@cs50.net.
Én aztán majd állítsa a kezelésére, hogy jharvard@cs50.net.
Az egyetlen módja, tudtam, hogy ezeket a funkciókat hívták SetFrom és AddAddress
van, újra olvastam a dokumentációt.
Ez nem az a fajta varázsütésre mindenki által ismert programozók.
Aztán be a hatálya alá tartozó "regisztrációs".
És most ez a sor egy kicsit csúnya, mert mit jelent a pont operátor jelent a PHP?
Bárki, aki tudja?
Összefűzni.
A C-ben ez a fájdalom a nyak összefűzéséhez 2 karakterláncok együtt.
Meg kell foglalkozni malloc vagy realloc vagy minden ilyesmi
csak azért, hogy bővítse a string hossza.
A PHP, JavaScript és más nyelveken
akkor általában ezt egyetlen karaktert.
Ebben az esetben pont azt jelenti, hogy ezt a fonalat itt
és mellékeli hozzá ezt a fonalat.
>> Ja, és mellesleg, csatolja hozzá a húr,
amely történetesen egy változó belső e szuper globális.
Majd hozzáfűzi, hogy ez egy új vonal, ezért az összes ilyen pont csak azt jelenti,
tartani, hogy egy egyre nagyobb és nagyobb string,
, és nem kell törődni az egész malloc vagy hasonló nyelven, mint ez,
és van más módja van, de ez az egyik leggyorsabb
módon feküdt ki.
Mit keres ez?
Ez létre egy e-mail szerv fogja mondani Név: Captain: Nem: Dorm:
Minden külön sorokban, majd végül
egy sor kód, és én fogom figyelmen kívül hagyja ezt most.
Ha == false csak azt jelenti, ha valami baj,
de a varázslat itt történik.
Mail küldés olyan küldése e-mailt.
Lássuk, mi a nettó eredmény.
Alján a fájl, észre fogja mondani, regisztrált valóban
ha kapok ilyen messzire.
Ha azonban a felhasználó csavarok fel, észre, hogy elkezdtük ezt
ha a feltétel ide, ha ez nem üres, és nem üres
és nem üres küldjük a levelet.
Máskülönben fogunk küldeni ezt a kódsort,
ami megy, hogy a hatás, mint látni fogod a Pset 7, az átirányítása a felhasználó
oda, ahol jöttek, froshims3.php.
>> Drukkolás, különben ez lesz a legnagyobb csalódást demo ma.
Itt vagyunk.
Hadd nyissa fel a postafiókjában jharvard a Gmailben.
Nincs e-mail most. Rendben van.
Most hadd megnyitása froshims3, amely a harmadik és utolsó példában fogjuk nézni itt.
Oké, itt vagyunk.
Nate, ő lesz kapitány, hím, az, mondjuk, Apley.
Regisztráció. Oké, regisztrált igazán.
Most, ha én lépjünk át e-mail címemet, ó, Istenem.
Épp most dinamikusan küldött egy e-mailt a weben.
>> Hagyjuk e megjegyzés.
A videó érkezik az előadás hagytunk. Viszlát jövő héten.
[CS50.TV]