[Powered by Google Translate] [Semajno 8]
[Davido J Malan] [Universitato Harvard]
[Jen CS50.] [CS50.TV]
>> Bonvenon dorso.
Ĉi tiu estas CS50, kaj ĉi tiu estas la komenco de la semajno 8.
Paro de ŝancoj ĉi semajno,
inter ili ĉi diskuto ĉi tie, en kiu iuj manĝo estos utilis.
Por pli da detaloj rigardu la diapozitivoj kiuj estas ensalutintaj.
Kaj ankaŭ alia okazaĵo ĉi semajno per nia propra Thomas Carriero.
Li estas unu el CS50 la eksĉefo instruado uloj kiuj nun estas en Dropbox,
kaj li estas la tipo kiu enganchó nin kun la vi scias kion,
do se vi volas pli de tiu kapo ĝis ilia diskuto posttagmeze por Dropbox kaj pli.
CS50 tagmanĝo estas ĉi vendredo.
Ĉu aliĝi ni se vi estas kapabla, 1:15, kiel kutime, ĉe fajro kaj glacio.
>> Kaj nun ni plonĝi en ion nomita Seminarioj.
Nia CS50 Seminarioj, revokon, estas ĉi tiuj nedeviga klasoj gvidata de la instruado uloj
kaj kompreneble helpantoj kaj amikoj de la kurso,
uloj de grupo de kampuso nomis ABCD, kiu estas grupo de
technophiles la campus, tiel kiel grupo nomita HCS,
la Harvard Komputila Societo, studentoj, kiuj simile interesita en komputado.
Ĉi-jara roster de seminarioj inkluzivas seminariojn en Android kaj iOS kaj JavaScript
kaj PHP, Unikso, Vim, kaj pli, do kompreni ke tiuj seminarioj venas supren.
Se vi ŝatus RSVP por ajna el ili direktas al tiu retadreso tie.
Ni poste afiŝi en la paso de afiŝinto la tempoj kaj lokoj iam ili finis.
Sed sciu ke ekzistas 5-jara valoro de antaŭaj seminarioj havebla surlinia,
multaj el kiuj estas ankoraŭ tre multe fluon en terminoj de teknologioj vi povus
volas ludi kun via fina projektoj, tiel direkti dum kelke disponebla filmetoj largxo.
>> CSS, la de vi, kiu estas familieca kun CSS jam,
kio ĝi estas en vortoj?
Kio estas CSS?
Ĝi estas akvofalo stilo littukoj, kaj kion tio signifas?
Kion tio do por ni, CSS?
Bone, ni hejtas per facila unu, HTML, hiperteksta markado lingvo.
Kion tio do por ni?
Iu ajn?
Ĝi faras vere mallertaj petante tiuj demandoj.
HTML, hiperteksta markado lingvo.
Jes? Ne?
[Inaudible studento respondon]
Konsentite, bona, ĝi permesas al ni por marki supren teksto por montri per foliumilo.
Tio ne estas programlingvo.
Estas ja markado lingvo, kio signifas ĝin instruas la retumilo kiel vidigi
informo, do la plej simpla personigo de ĉi kiel ni vidis
Estas io super simpla kiel boldfacing, malferma krampo b fermita krampo diras
fari ĉi teksto aŭdaca, kaj tio estas vere nur unu el multaj manieroj
en kiu ni povas fari tion, kaj ja, tiuj tagoj pli bonan alproksimiĝon
al stylizing vian retpaĝon, farante aferojn aŭdaca kaj kursivo
kaj centrita kaj pravigis kaj similaj, ne estas farita tra HTML etikedoj sola
sed prefere kun tekniko nomita CSS, akvofalo stilo littukoj.
Tiu estas lingvo al si mem.
Ĝi ankaŭ tio ne estas programlingvo sed-
ĉiuj, ĉi tiu estas Dan, kiu subtenas kunigi nin hodiaux.
Iuj teknikaj malfacilaĵoj. Ne estas problemo.
>> CSS nin permesas stylize paĝon
per opcio kio nomiĝas propraĵoj, do ni rigardu tiun
per maniero de iuj bazaj ekzemploj.
Lasu min iri en la aparaton hodiaŭ.
Mi havas la fonto 8 lundo dosierujo en ĉi tie,
kaj mi tuj iru en dosierujo nomita CSS kie ni havas tuta amaso
de dosieroj atendis nin tie ĉi,
kaj en tiu ĉi dosierujo ni havas, ekzemple, search0.html de lasta tempo.
Nun, memori kun search0 ni lasis en tiu ĉi noto
per ia apliki Google aŭ vere nur la antaŭa fino por gxi unu semajno aŭ tiel antaŭe,
kaj rimarki ke ni havis iujn novajn etikedoj tie.
Ni havis h1 por granda, aŭdacaj rubro,
formo, kiu ebligis al ni efektive havas HTML formo por uzanto enigo.
Ago, kio estis la signifo de ago atributo
en la HTML-formo etikedo?
Kio estis la signifo de tio, ago?
Mi nur faras ĉi hodiaŭ.
Ago estas la destino al kie la formo tuj estos afiŝita.
La fakto ke tiu diras agado = "google.com / search"
signifas ke kiam la uzanto klakoj la submeti butono aŭ la ekvivalento
kion ajn formo kampoj ili plenumis tuj sendos ne al nia servilo
aŭ nia aparaton sed prefere al tiu specifa URL ĉe Google.
Kaj la metodo ĝi estas tuj uzos nomas get,
kaj akiri, nuntempe, estas nur tekniko por pasi informo kune al TTT-servilo
pere de la URL, do ni preni rapidajn rigardon malantaŭen en kiel ĉi verkoj.
>> Rimarku ke estas eniga kies nomo estas q
kies tipo estas teksto kaj poste duan enigo de tipo submetiĝi
kies valoro estas CS50 Serĉu, kaj efektive, se ni malfermas tiun dosieron ĉi tie,
search0.html, estas super simpla formo,
kaj se mi serĉo iu kiel komputiko
kaj poste batis eniri aŭ alklaku CS50 Serĉu
rimarki, ke kio okazas estas preter alveni al Google
Mi specife finis en ĉi URL supre,
google.com / serĉo? q = komputilo + scienco,
kaj komputiko estas evidente, kion mi tajpis in
La + simple signifas ke estas kie spaco karaktero estis,
kaj ĝi estos farita de la retumilo nur por certigi ke ne estas
konfuzo kaj blanka spaco en la efektiva retadreso.
Kaj tiam q, kompreneble, estas la parametro nomo.
Ni ne vidis kiel ni, la programisto, povas fakte aliro q ankoraŭ.
Ni povas supozi ke Google scias kion fari kun ĉi tie,
sed ni ricevos tie gxustatempe hodiaŭ.
>> Sed lasu min rigardi anstataŭ ĉe search1.html,
kiu aspektas iom malsama ĉar mi decidis ke tiu formo ĉi tie estis nur iom lama.
Mi volas diri, estas supre maldekstre.
Estas vere neniu estetiko al ĝi, kaj do mi volas stylize ĉi
iom pli kiel Google, kies hejmpaĝo, revokon,
kvankam vi eble ne vizitos ĝin, ke ofte, similas tiun hodiaŭ en Halloween.
Se ni anstataŭ malfermi versio 1 de ĉi tiu dosiero, serĉo 1.html, mi centrita ĝin.
Ankoraŭ bela malbela, sed almenaŭ nun mi komencis kontroli la estetiko de ĉi tiu paĝo,
ne nur la markiloj ĉe tio.
Ni rigardu serĉo 1, kaj estas vere nur unu diferenco ĉi tie,
kiu povus salti tra vi, aŭ eble ne,
sed kio estas la unu linio aŭ fragmento de diferenco?
>> Estas ĉi tiu stilo atributo, do rezultas ke en HTML
plej elementoj, plej etikedoj povas havi stilo atributo sur ili,
kaj ene de tiu stilo atributo estas citita kordoj,
kaj ke citita linio estas CSS.
Vi povas meti akvofalo stilo folio tien
ĉar oni petas ĝin kiel propraĵo nomo
sekvata de dupunkto sekvis per valoro.
Tio estas speco de malfeliĉa dezajno decido antaŭ kelkaj jaroj
ke CSS estas lingvo al si mem,
sed sintakse ĝi estas tre malsama de HTML.
En ĉi tiu kazo, ni vidas ke interne de mia retpaĝo, kiu estas skribita en HTML,
Mi havas CSS ene de tiuj citaĵoj, kaj la konvencio por CSS
estas ke vi havas kion nomas propraĵo sekvis, denove, dupunkto,
sekvata de la valoro de tiu proprieto, tiel ne estas egala signo.
Ne pliaj citaĵoj.
Estas nur tiun dupunkto disigis ŝlosilo valoro paro,
kaj teksto linio faras precize kion ĝi diras.
Ĝi vicigas la tekston en la korpo de la paĝo, kiu estas vere la intestoj de la paĝo,
en la centro.
>> Konsentite, la fina rezulto tiam, esti klara, estas tio.
Ne ĉiuj kiuj sexier, sed almenaŭ ĝi estas centrita kaj iom pli kiel la reala Google.
Sed kion se mi anstataŭ malfermi la versio 2 de tiu
kaj atentigi cxi tie nova tag aro?
Nun en la kapo de mia paĝo, kiu antaŭe havis nur kion etikedo
en ĉiuj antaŭaj ekzemploj?
Ĝi simple devis tion, la titolo.
Post momento antaŭe la kapo etikedo aspektis kiel ĉi tio.
Nun anstataŭ ĝi havas stilon etikedo ene de ĝi,
kaj ankaux, mi pardonpetas, sintakse aspektas tre malsama de HTML,
sed vi kutimiĝas al ĝi, per kiu ene de la stilo etikedo
Mi povas nun faktoro, kio estis antaŭ momento
atributo, la stilo atributo, kaj mi povas meti ĝin en la plejsupro de mia paĝo.
>> Kial?
Nu, temas pri paŝo direkte al pureco aĵojn, multe kiel skribe C kodo
ni devus kelkfoje skribi funkciojn al faktoro ekster komuna funkciojn.
Estas nur iom pli pura komenci faktoranta ekster aĵoj kiel la estetiko
al unu centra loko prefere ol, havante ĉion intersperse viaj HTML.
Ĉi tro faras kion diras, kvankam tie estas iom da novaj sintakso.
Ĉi tie estas elekto, kaj korpo simple signifas elekti la korpon elemento
kaj apliki la jenaj propraĵoj al ĝi.
Nu, la proprieto estas precize la sama.
Por bona mezuro Mi aldonis punktokomo ĉe la fino,
kio emas esti konvencio, kaj mi envolvis ĉi tiu tuta posedaĵo
en bukla krampoj ĉar mi povis efektive havas malsamajn aferojn ĉi tie.
Mi povis vere diri ion kiel koloro: blua;
>> Nun ankaux ne tuj estos paŝo al io cxiuj belaj,
sed se mi nun reiru al la versio 2 Mi almenaŭ nun faris la korpo de mia
paĝo teksto ĉiu blua.
La butono restas la sama, ĉar estas ja enigo. Ne pura teksto.
Sed ĉio alia kiu estas teksto, kiel CS50 Serĉu supren supro, estas fakte blua.
Denove, ĉiuj ni faris nun eltiri de la korpo etikedo, avizo,
la stilo atributo, kaj ni faktorita ĝin ĉi tie.
Tiu ne estas grandega plibonigo, sed se ni prenos ĉi unu paŝon
rimarki, kion ni povas fari en tiu tria versio tie.
>> En search3.html la retpaĝo estas preskaŭ identa
krom kio nova tag nun?
Ligilo, do ĉi tiu estas ne tre _aptly_ nomis
ĉar vi ne kunligante en la senco de alklakebla hyperlink.
Pli ĝuste, vi estas ia faras la ekvivalento de # include en C
per la ligilo etikedo kun href atributo
kaj rel atributo diras antaŭeniri
kaj kopio almeti la enhavon de dosiero nomata search3.css ĉi tie, esence.
Ĝi ne sufiĉe faras tion, sed tio estas la spirito de ĝi.
Ĝi diras iri malfermita tiu dosiero, search3.css,
kaj trakti ĝin kvazaŭ la uzanto estis tajpita ĝin ĉi tie en la kapo de la paĝo
kiel mi faris en la antaŭa ekzemplo.
Search3.css, dume, estas sufiĉe simpla.
Vere nur enhavas precize kio estis antaŭ momento
en la stilo etikedo, sed mi havas faktorita ĝin ĉi tie al lia propra dosiero.
>> Kvankam ni ne pasis multe da tempo tute en HTML aŭ ttt programado
nur intuicie kio estas la motivado, eble, por faktoranta ekster
tiu malgranda fragmento eĉ de CSS en ĝian propran dosieron
kaj tiam inkludante ĝin per ĉi tiu ligilo etikedo tie?
[Inaudible studento respondon]
Konsentite, pli facilas legi en la senco, ke vi havas vian CSS en CSS-dosiero.
Vi havas viajn HTML en via HTML-dosieron, do ĝi estas pli legebla en tiu senco.
Kion alian povus esti konvinka? Yeah.
[Inaudible studento respondon]
Yeah, do vi povas aldoni ĝin multfoje, do nun ni faras ĉi tiuj
bazaj ekzemploj kun individuaj dosieroj, sed supozas ke vi efektive fari
vera retejo kiel vi faros por pset 7 aŭ vian fina projekto eble,
kaj vi volas havi plurajn retpaĝoj, kiel estas certe komuna en
la reala World Wide Web, kaj estus speco de lama
devos kopii kaj almeti la sama blua koloro
kaj la sama teksto vicigitaj centro en cxiu el tiuj paĝoj.
Pli ĝuste faras pli sentita faktoro ekster, multe kiel ni faris en C
kun la. h dosiero, metis ĝin en unu centra loko,
en ĉi tiu kazo search3.css, kaj poste permesi ajnan dosieron
en via retejo por fakte inkluzivas tiu dosiero tra ĉi etikedo tie en linio 16.
Kiel estas tipe la kazo, ni komencis kun versio 0, kiu speco de verkoj
sed ne nepre la plej bona, kaj kun ĉiu paŝo,
serĉante 1, serĉo 2, kaj nun serĉo 3 ni prenis tiujn bebo paŝoj
al dezajnoj kiuj estas iom pli pura kaj estas pli prepara
por pli kompleksaj paĝoj ke ni faru sur la vojo.
>> Lasu min malfermi unu lasta ekzemplo tie nur por montri
eĉ pli stiligita paĝo, sed unue ni rigardu la HTML.
Ĉi tiu estas search4.html, kaj rimarkas ke strukture estas preskaŭ la sama
krom la enkonduko de nova etikedo, Div.
Div estas etikedo kiu enkondukas divido de la paĝo.
Vi povas pensi pri tio kiel nevidebla rektangulo.
Ĝi ia kreas swath de areo en la retpaĝo
ke vi povas stylize ĉiuj samtempe.
Kion mi faris tie estas kiel sekvas.
Ene de mia korpo etikedo, kiu estis tie ĉiuj kune,
Mi dirante krei divido de la paĝo ĉi tien per linioj 45 tra 47,
kaj tio signifas esence donu al mi nevidebla rektangulo sur la supro de la paĝo.
Tiam donu al mi duan ortangulo, kvankam nevidebla, sub tiu,
kaj identigi ĝin per la nomo enhavo, kaj tiam laste,
donu al mi tria divido de la paĝo ĉe la malsupro
vokis ID.
Ni vidos kial mi faris tion en nur momente,
sed koncepte mi havas header divido.
Mi havas enhavon divido, kaj mi havas piedlinio divido de la paĝo
kvankam ĉi tiuj estas nur en markado.
La uzanto ne tuj vidas 3 rektanguloj,
sed ia strukture tie malantaŭ la scenoj
ili estas reale ĉeestas.
>> Nun, kiu zorgas? Kial vere faras tion?
Ĉio alia en la paĝo estas la sama kiel ni vidis antaŭe.
Jen mia formo. Jen mia eniro, mia eniro, linio rompas ks.
Jen bildo, tamen, do ni vidos, kie tio venis de en nur momento.
Jen piedlinio, kiu estas nova, nur ĉar mi volis enkonduki
iuj pli enhavon ĉi tie.
Se ni rulumu supren rimarki ke ID de ĉi div estas kaploko.
La ID de ĉi div estas enhavo, kaj la ID de ĉi tiu estas piedlinio.
Kaj kiel la nomo sugestas, kiam vi havas ID atributo
en HTML, per difino devas unike identigi
unu el la elementoj, unu el la etikedoj en via paĝo.
La sxargxo estas plene en vi memoras, ke vi havas header ID jam.
Vi havas piedlinio. Vi havas enhavon ID jam.
La komputilo ne tuj elkompreni kiel disponeblan ID estas por vi,
tial vi povis hazarde doni 2 etikedoj an ID de kaplinio,
kaj tio estus nur malbone.
>> Vi devas ne forgesi, kion vi kreis,
sed kiam vi faris ke avizo kion ni povas fari tie.
Mi povas nun precizigi en mia stilo etikedo ĉe la supro
aŭ ekvivalente en mia CSS-dosiero, se mi ankoraux uzas tiun version,
Mi povas diri # kaploko, kaj kion tio signifas estas kiu ajn etikedo
en ĉi tiu retpaĝo havas ID de kaplinio
kaj #, kun nur homaj konvencio, reprezentas ID.
La akra signo aŭ funto signo reprezentas ID.
Header estas la nomo kiun mi donis ĝin.
Tio signifas apliki ĉi CSS proprieto
al kiom etikedo en tiu ĉi paĝo portas la ID de kaploko.
Sama traktado ĉi tie.
Apliki ĉi tiu propraĵo, kio okazas al esti la sama, por ajna elemento
kies ID estas enhavo, kaj tiam ĉi tie
rimarki I got iom amatoro kun piedlinio.
Neniu elemento kies ID estas piedlinio, de kiuj povas esti nur unu per difino,
antaŭeniri kaj fari liajn tiparo grandeco pli malgranda,
lia tiparo pezo kuraĝa, lia rando 20 rastrumeroj.
>> Kion tio signifas?
Estas nur rando supre, malsupre, kaj la maldekstra kaj la dekstra.
Tio signifas doni al mi 20-pixel nevidebla rando ĉirkaŭe
nur puŝi ĉion alian for de gxi iomete, kiel vi eble fari en Word,
Microsoft Word aŭ Paĝoj aŭ similaj.
Kaj tiam teksto centrigi.
Ni vidu la fina rezulto, kaj poste ni reiros al la ceteraj fragmento de CSS tie.
Ĉi tiu estas la versio 4, nia lasta por la serĉo ekzemploj, kaj gxi estas multe, multe sexier.
Nun, en justeco, mi nur googled "google tiparo logo generatoro."
Kaj kiu permesis al mi por krei GIF, bildo formato, kiu aspektas kiel tiu tie.
Fakte, vi povas fari tion ankaŭ.
Ni havas "google tiparoj logo generatoro."
>> Ni vidu se ni povas fari ĉi tion.
Konsentite, mi pensas tio estas la retpaĝo mi uzis.
Ni povas diri Ec 10, ekzemple, kaj Mi faros ilin iliaj.
Vi povas ludi kun ĉi tutan tagon kaj tiam dekstre alklaku ĝin
kaj elŝutu la efektiva GIF, kiu estas ĉio, kion mi faris.
Kaj efektive, jen kial en mia HTML, memoras, super tie
Mi havis bildon etikedo, kiun ni vidis mallonge pasintsemajne
kies fonto estas logo.gif.
Kaj kio denove estis la motivado por havi tiun alt atributo,
ĉi alternativa atributo?
Yeah.
[Inaudible studento respondon]
Bona, do 2 kialoj vere, se la retumilo ne povas tiri supren la bildo
ĉar vi havas malrapidan retkonekto aŭ la bildo estas koruptita
aŭ io kiel ke almenaŭ la homa povas vidi "CS50 serĉo,"
kaj tiam ankaŭ por alirebleco kialoj.
Se vi havas uzanto kiu estas blinda kaj uzas ekranon leganto
kaj sekve evidente ne povas vidi bildojn ili povas almenaŭ
aŭdi teksto se ilia komputilo parolas ĝin al ili.
>> Ĝenerale, ĉi tiu estas bona praktikas kiam temas pri la alirebleco de paĝoj
tiel ke eĉ uzantoj en tiu situacio povas aŭdi aŭ vidi, por tiel diri,
kio estas tio en via paĝo.
Estas unu alia afero kiun mi faris tie
kiu estas iom interesa, kaj ni vidos pli pri tio en problemo starigis 7
tra unu el la mallongaj gvidata de unu el la instruado kamaradojn.
Sed # enhavo rilatas al la etikedo
kies ID estas enhavo, sed tiam ne estas spaco karaktero, kaj tiam tie estas la vorto enigo.
Nu, kio estas interesa pri CSS estas ke vi povas
raporti al etikedoj en paĝo ia jerárquicamente,
kaj kion tiu fragmento de CSS signifas trovi la etikedo
kies ID estas enhavo, kaj tiam apliki la jenaj propraĵoj
al ĉiuj de la enigo etikedoj kiuj estas posteuloj de enhavo,
tio estas ke dentadas ene de ĝi.
Deŝovon, denove, estas nur grava por la komputilo, ne al la homo,
sed per konvencio ni indent aĵoj kiel ni iru profunden en iu paĝo,
do tio signifas apliki rando de 5 rastrumeroj al ajna enigo elemento
jen ie ene de aŭ anidado interne de
la elemento kies ID estas enhavo.
>> Kies estas tiu aplikas al?
Nu, estas vere nur tiuj 2 infanoj tie.
Rimarku ke ene de la formo ekzistas 2 enigoj,
ĉar jam pasis por ĉiuj el tiuj ekzemploj.
Sed avertas ke tiuj 2 enigoj okazi esti anidado ene,
kvankam iom profunde, paro tavoloj de deŝovon,
ene de la etikedo kies ID estas enhavo.
Kion tio signifas?
Se ni iras al la retumilo tie vi povas vidi nur milde-
lasu min zoom in-ke estas iom da kompletigo inter la butono
kaj inter la teksto kampo.
>> Lasu min portempe igi tiun for.
Lasu min iri al mia CSS, kaj lasu min antaŭeniri kaj justa
ŝanĝi ĉi rando de la 5 rastrumeroj al 0 pixels.
Lasu min tiam kaj savu la dosieron, reiru al la serĉilon
kaj reŝarĝi, kaj rigardas la mezo de la paĝo.
Ĉio got kunpremita kune, kaj kiam mi unue skurĝita ĉi tiu ekzemplo supren
Mi pensis ke aspektis stulta kun la teksto kampo kaj tiam la butono tuj sub ĝi.
Mi volis pad ĝin iomete, do mi enkondukis randoj.
Kion ni ne faros en prelego estas iri tra la pluraj dekduoj
CSS propraĵoj kiuj ekzistas ĉar, denove, estas aĵoj kiel tiparo grandeco,
tiparo pezo, rando, teksto vicigi, kaj kelkdek aliaj,
kaj ni raporti al vi en problemo starigis 7 al diversaj lernilojn linio
kaj referencoj kiuj permesas al vi elekti tiujn aĵojn.
Sed kio estas vere grava al la fino de la tago
>> estas kompreni kiel tiuj aĵoj estas aplikita.
Denove, se ni havas la stilon etikedo ene de kiuj
povas iri la seleccionadores, la speco de ensalutiloj kiuj specifas
al kiu vi volas apliki tiujn bienojn,
kaj tiam vi metu la propraĵoj kiel ŝlosilo valoro paro
apartigita per dupunkto kaj tiam finiĝis per punktokomo,
aŭ vi povas ŝiri ĉiuj de tiu ekster kaj metis ĝin en aparta CSS-dosiero
al si mem.
Bone, demandojn en la konceptoj
aŭ la granda bildo de CSS?
Vi denove vidi pli de ĝi en pset 7,
sed ni tenu ĝin ĝenerale sufiĉe simpla.
Ne? Bone.
Estas tempo por reala programlingvo,
kaj ni revenos al iom de CSS en formo de ekzemplo.
PHP estas fakte mirinde atingebla lingvo
en tiu estas sintakse preskaŭ ekvivalenta al C.
En aliaj vortoj, se vi konas C, vi scias plejparte PHP,
almenaŭ sintakse, kvankam estas kelkaj novaj funkcioj
kaj iuj novaj konceptoj ni devos rigardi.
>> Sed plejparte, nun ke ni transiro de C al PHP
la plejparto de la novaj aferoj estas vere en la granda bildo,
kiel vi uzi lingvon por programo en la retejo kiel kontraŭ
en la komanda linio aŭ en palpebrumante prompto kiel ni estis farante tiel for.
Por referenco, speciale kun pset 7 kaj la fina projekto antaŭen,
do utiligi tiun URL tie se vi volas legi sur la formalaĵoj de PHP.
Ĝi estas fakte kiel senpaga interreta lernolibro efike,
kaj vi ankaŭ trovos ke kio estas vere bela pri PHP
estas ke ekzistas centoj da funkcioj kiuj venis kun li,
dum en C vi ne nepre havas aliron al
pli funkcioj ol estis en la matematika biblioteko, la CS50 biblioteko.
En PHP kaj multaj modernaj lingvoj, Python kaj Ruby inter ili,
vi ricevas aliron al tiom multaj pli funkcioj, kiu signifas, ke vi atingos skribi
multe malpli kodo ĉar vi povas stari sur la ŝultrojn de aliaj personoj
kiuj jam skribis pri kelkaj aferoj por vi.
>> Ni prenu rapida ĝiras de la sintakso de PHP kaj poste skribos kelkajn ekzemplojn.
Kio estas agrable pri PHP unuavice
Estas ne estas ĉefa funkcio.
Se vi volas skribi programon en PHP vi komencu skribi kodon,
kaj vi ne devas zorgi pri ĉefaj.
Ne int. Ne reveno.
Ne argv, argc ke tio postulas kiam vi skribas la programo.
Prefere vi povas simple komenci skribi kodon, kaj ĉi tiu estas en parto
ĉar PHP estas kio nomiĝas interpretita lingvo.
C estis kompilita, kaj tio estis kompilita en la senco ke vi komencu
kun fontkodo, ruli ĝin per Clang, kiu estas tradukilo,
kaj finfine post kelkaj da paŝoj vi ricevas celkodo, _0s_ kaj _1s_.
PHP kaj Python kaj Ruby kaj Pearl kaj aliaj
Estas malsamaj tipoj de lingvoj en kiuj vi ne kompili ilin.
Vi ne iri de fontkodo al _0s_ kaj _1s_.
Vi nur ruli la fontkodon, kaj vi kuros la fontokodo
per skribanta en kutima teksto-dosiero, finante en. php en ĉi tiu kazo
anstataŭ. c, kaj kion la programo faras sur via komputilo
ĉu laŭvorte interpretas via kodo linio por linio por linio.
>> En aliaj vortoj, anstataŭ skribi programon kaj rulu la programon
rekte vi anstataŭ skribi programon kun dosieron ending in. php.
Tiam vi kuras reala programo nomata php.exe, se vi estas en Windows,
aŭ nur PHP se vi estas en Mac OS aŭ Linukso,
kaj vi provizis kiel eniro al la PHP programo vian propran fontkodo,
kaj lia celo en la vivo estas por legi vian kodo supre sube, maldekstre dekstren,
kaj do kion ajn vi rakontis ĝin fari.
>> Ni vidu kion ĉi tuj signifas sintakse.
En PHP ni havas kondiĉojn.
Ĉi glito estas identa al kio vi vidis tie en semajno 1
ĉar sintakse kondiĉoj, IFS kaj alia IFS kaj alie en PHP
aspektas precize kiel tiu.
Kiam temas pri bulea esprimoj ili tuj rigardi ĝuste kiel ĉi tiu.
Kiam temas pri anding aĵoj kune kiel booleans ĝi tuj rigardi ĝuste kiel ĉi tiu.
Ŝaltiloj aspektas same, kaj vi akiris la aldonita profito en PHP
ke ŝaltiloj en C povis nur ŝanĝi sur char aŭ int.
Vi ne povus ŝanĝi la ĉenon valoro.
En PHP vi povas reale havas esprimon
ke estas variablo kies enhavoj estas ĉeno,
kaj vi povas reale fari ĉenon komparo en la reala intuicia vojo,
ne puntero komparo, por decidi cxu fari kazo i aŭ j aŭ ion alian.
Ni vidos ke potenciale antaux longe.
>> Maŝojn tro mirinde estas la sama.
Por maŝojn havas inicialización, kondiĉo, kaj iuj nombro de ĝisdatigoj.
Dum cikloj ankaŭ ekzistas en PHP.
Ĉu dum maŝojn ankaŭ ekzistas en PHP,
kaj tabeloj ekzistas en PHP, sed tie estas kie la sintakso komencas akiri iom malsama,
sed la konceptoj estas la sama, kaj la konceptoj vere estas samaj
kiel estis en Semajno 0 kun Scratch.
Unuavice estas la $ signo.
Tiu estis dezajno decido en PHP per ajna variablo
en PHP per dezajno startas kun $ signo.
Ne pli X, Y, Z. Ĝi estas nun $ X, Y $, $ Z nur ĉar.
Estas io por teni en la menso, kaj nun en la dekstra flanko
ĉi aspektas simila al tabelo,
sed ni uzas kvadrataj krampoj tie.
En PHP kaj en JavaScript, kiel ni fine vidas,
deklari tabelo vi faras malfermita kvadrata krampo kaj fermis kvadrata krampo,
kaj tiam vi havas apartigita de komoj listo de valoroj, ĉu ints
aŭ ŝnuroj aŭ signoj, kion vi volas, ene de tiu esprimo ekzistas.
>> Nun, kiel estiĝis ni faru ion kiel tiu en C?
Kio estis la sintakson por statike deklarante tabelo de konataj numeroj?
Estis frizita krampoj, tiel malgranda diferenco ĉi tie, sed en ambaŭ PHP
kaj finfine JavaScript simple uzas kvadrataj krampoj, do vere
la sola interesa detalo jen la $ signo por la variablo nomo
kaj ankaŭ la rektaj krampoj, kaj tie estas unu kurioza
ke tio estis preterlasitaj siavice sur la maldekstra flanko de la = signo.
Kio mankas ke ni estis postulanta dum semajnoj nun? Yeah.
[Inaudible studento respondon]
La grandeco, do ne estas mencio de la grandeco de la tabelo.
Sincere, ne estas mencio de kvadrataj krampoj sur la maldekstra flanko
de la = signo, kaj kio ajn estas malaperita el la linio?
Yeah. >> [Inaudible studento respondon]
La tipo, do kio estas interesa aparte pri PHP
estas ke ĝi ne estas forte tajpitaj lingvo kiel C estas,
kaj tio forte tajpita en la senco, kiun vi devas diri char,
vi devas diri int, vi devas diri kaleŝego.
>> Anytime you want a variablo vi devas diri al Clang kion lia tipo estas.
PHP estas iom lazier.
Ĝi estas libere tajpita en la senco ke
vi povas havi flosas kaj signoj kaj kordoj
kaj ints ktp, sed la lingvo mem
Ne vere gravas kion oni metis ene de variablo.
Vi ne devas informi ĝin anticipe kion datumtipo
tuj en variablo.
Estas tute dependas de vi, do ĉi tiu estas agrabla
en kiu vi ne devas maltrankviligi tiel datumoj tajpado
kaj maltrankviligante kion via argumentoj estas ks.
Ĉi tio ankaŭ signifas eventuale funkcioj en PHP tuj povos reveni
ĉu int plejparto de la tempo, kaj eble fojfoje
ili revenos al bool, bulea falsa, ekzemple, por signifi, ke io iris malbone.
Tio donas al ni iun upsides, sed ankaŭ nin faros ia per dezajno
iom lazier kiam temas datumoj tajpi.
>> Kio alia estas tie por memoru ĉi tie?
Variabloj aspektas sufiĉe ŝatis tion, do $ s = "Saluton, mondo."
Tio estas eble inferable de la antaŭa ekzemplo,
kaj ni havas alian tipon de ciklo.
Ĉi tiu ni efektive vidas fojfoje ekde ĝi estas sufiĉe utila,
a foreach konstrui.
En ĉi tiu kazo, la foreach buklo portas ene de lia krampoj 3 vortoj tipe,
$ Io unue, kio estas kion tabelo vi volas persisti super la membroj de,
tiam laŭvorte la ŝlosilvorto kiel, kaj poste laste,
alia variablo nomo kiun vi ricevas elekti.
Ĝi povas esti foo, trinkejo, aŭ elemento,
kaj kion tiu konstruo faras
estas se la $ tabelo enhavas 10 elementoj
sur ĉiu ripeto de tablo-sorry, sur ĉiu ripeto de ĉi maŝo
la variablo nomata elemento tuj estos ĝisdatigita
esti la unua elemento de la aro, tiam la dua elemento en la tabelo,
tiam la tria ero de la tabelo, tiel obviating la bezono
fari la iomete ĝena kvadrata krampo notacio kaj
$ I por indekson en tabelo.
PHP faras ĉiu el tiu laboro por vi kaj sur cxiu ripeto
nur manoj vi la sekva elemento de la tabelo
sen vi devi scii pri aŭ zorgas pri lia nombraj indekso loko.
>> Kaj poste persiste, nuntempe, estas alia karakterizaĵo de PHP
ke tuj estos ege utila, precipe kiam ni komencos programado en TTT,
kaj tio konata kiel asocieca tabelo.
La tabeloj, ke ni konas ĝis nun ekde 20 sekundoj antaŭe
kaj dum la lastaj 8 semajnoj estas ciferece indeksita arrays,
speco de tradicia arrays kie la indeksoj estas ints,
0, 1, 2, la tuta vojo plu supren.
Asocieca tabeloj estas multe pli potenca.
Ili permesas al vi havi arbitraj klavoj,
arbitraj indeksoj kaj arbitra valoroj.
Dum en tradicia tabelo estas 0, 1, 2,
en asocieca tabelo vi povas havi indekso
aŭ ŝlosilo de foo kies valoro estas trinkejo.
Vi povas tiam havi alian klavon kies nomo estas baz kaj kies valoro estas qux.
>> Denove, stulta komputiko generic variablo nomojn ĉi tie,
sed la punkto estas ke tiu tabelo ne havas krampo 0 aŭ krampo 1.
Ĝi estas anstataŭ tuj devos krampo foo kaj krampo baz.
Tio estas multe pli versátil en tiu nin tuj povos asocii
vortojn kun aliaj vortoj, ŝlosilojn kun valoroj tute arbitre,
kaj ni tuj povos akiri tiujn valorojn reen en konstanta tempo
ĉar sub la kapuĉo kion asocieca tabelo
vere estas hash tablo.
Memori, ke hash tablo permesas meti en iuj enigo
kiel meti en la vorto David, se vi volas enmeti Davido en ia vortaro,
kaj tiam vi reiros iu valoro tipe.
En la kazo de Speller, vera aŭ malvera.
David aŭ kion ajn vorto estas en aŭ ne estas en la vortaro.
Asocieca tabelo estas vere nur hash tablo,
sed ĝi estas multe pli uzanto amika personigo de ĝi.
Kiel ni vidos, ĝi estas tuj permesos al ni fari kelkajn aferojn
tre tre facile.
>> Ni rigardu kelkajn bazajn PHP
ekzemploj kaj vidi kion ni povas fari kun tiu lingvo.
Lasu min kaj malfermu en nia fonto katalogo hodiaŭ
dosiero nomata hello1.php.
Ĉi tiu dosiero estas pli komento ol ĝi estas reala kodo,
do lasu min vere forigi ĉiujn komentojn de la dosiero
kaj aktualaj al vi eble la plej simpla PHP programo ĉi tie.
5 linioj, kaj kelkaj el tiuj estas blanka spaco,
tiom rimarkos iujn ŝlosilo diferencoj tie.
La dosiero estas nomita hello1.php.
La unua linio, tamen, estas <? Php.
Simila en spirito al HTML,
ke vico de signoj rakontas la komputilo
"Hej, komputilo, tie venas programo ni estas en en PHP."
Ĝi certigas ĝi ne konfuzita, ke estas iu alia lingvo.
Linio 2 estas interesa blanka spaco.
Linio 3 estas nia malnova amiko printf,
ĉi tiu tempo en la kunteksto de PHP.
PHP havas sian propran version de printf kiu kondutas ĝuste la sama,
tial ĉi estas nur tuj presi "saluton, mondo."
Kaj tiam ĉi malo etikedo tie,?>, Tio signifas ke estas por mia PHP-kodo.
>> Ni vidos kiel funkcias ĉi.
Mi tuj iros reen al mia fina fenestro tie.
Mi tuj iros en mian PHP dosierujo.
Rimarku ke ni havas tuta amaso de dosieroj, la unua el kiuj estas hello.php.
Lasu min kaj kuras ĉi, hello1.php, eniru.
Permeso rifuzita. Okay.
Per kio ni fiksis aĵojn kiel tiu en la estinteco?
Kio estas tio? >> [Inaudible studento respondon]
Ni bezonas legi kaj skribi, sed lasu min fari ls-l.
Memoru tion iom críptico eligo per hello1
Ŝajnas esti legebla kaj skribebla por mi
sed legebla per ĉiuj aliaj.
Ĝi rezultas ĉi efektive ne estas paŝo en la ĝustan direkton.
La diferenco, denove, kun interpretita lingvo
Estas vi ne kuras la programo rekte.
Vi anstataŭe kuras interpretisto kaj transdoni ĝin al la kodo
ke vi skribis tiel ĝi povas interpreti ĝin linio por linio.
En ĉi tiu kazo, la interpretisto aŭ programo mi vere volas kuri
estas laŭvorte nomis PHP.
>> Ie sur tiu malmola disko de la aparaton tie estas programo
iu alia skribis nomis PHP, aŭ en Windows php.exe.
Kion mi faros cxi tie estas mi iros al reale kuri PHP
sed donu ĝin kiel komanda linio argumento la kodon, kiun mi skribis,
kaj tiam Mi malzomi kaj batis eniri.
Ĝi kuras mia programo por mi, supre sube, maldekstre dekstren.
Lasu min kaj malfermu malpeza varianco de ĉi.
En hello2.php avertas ke ĉi tro
estas plejparte komentoj, do lasu min forigi tiujn kiel distro,
kaj kio estas klare malsama nun pri tiu dosiero?
Estas ĉi nova linio, iom enigmaj al la pinto.
En linio 1 estas #! / Bin / php.
Bin estas konvencio en Linukso kaj Mac OS por binaroj,
do / bin signifas ĉi estas dosierujo enhavanta aron da binaraj
ke estas planita, unu el kiuj estas PHP.
La #! Estas apodado shebang,
kiu estas la rapida maniero diri ĝin, kaj kion tiu signifas
estas, ke kiam vi kuros ĉi programo nun estas aludo al la pinto de la dosiero
kiu rakontas la komputilo kio interpretisto uzi.
>> Ĝi alvenas iom ĝena se vi devis diri al viaj uzantoj kaj viaj klientoj
"Hej, ni skribis tiun programon nomata hello1.php."
Vi devas fari estas eterne kuras PHP kaj tiam la nomo de tiu programo.
Sincere, estus nur esti pli agrabla por kuri hello1.php,
kaj ja, oni povas, se ni faros la sekvajn.
Lasu min kaj faru ls-l, kaj anonco en hello2 ĝi estas ankoraŭ apenaŭ legis skribi
kaj poste legi legi, do mi ne povas tamen fari tion, hello2.php.
Sed ni enkondukis ĉi iam tiel mallonge lasta fojo, la chmod komando.
Se mi faras chmod a + x, kiu signifas ĉiuj krom executability,
kaj tiam hello2.php kaj do ls-l denove rimarki kio ŝanĝis.
Unu, Linukso montras al mi la dosiernomo en verdo por esprimi la ideon
ke ĝi estas plenumebla, sed pli grave, en la maldekstra flanko
rimarki, ke la iom reprezenti x por ruleblan nun starigis.
Kio ĉi nun signifas Estas mi povas kuri ./hello2.php kiel kutime,
batis eniros, kaj pro la shebang ĉe la plejsupro de la dosiero
tio estas aludo, denove, por Linukso kiu diras
uzi ĉi interpretisto kuri ĉi tiu dosiero.
Ne maltrankviliĝu pri devigante al la uzanto efektive tajpi ĝin.
>> Kaj kio estas bela hodiaŭ estas la speco de pala al mia klientoj aŭ mia amikoj
kio lingvo mi skribis tiun programon en, do mi povas antaŭeniri per mv
kaj renomi tiun aferon al hello2, ekzemple.
Kaj nun se mi faras ./hello2
kaj malzomi mia programo daŭre funkcias.
Tiuj dosieraj sufiksoj estas homa konvencio, ke necesas
por iu kiel Clang kaj Faru kiuj serĉi ilin.
Sed por PHP, mi povis nomi tiun dosiersufikso ajn mi volas.
Mi povis trompi la mondon en pensante ke mi estas vere bona en Rubeno,
kaj mi ne povis skribi hello2.rb kaj poste ekzekuti ĉi,
kaj voila, nun mi havas la Rubeno versio, kiu estas kompleta mensogo.
Sed la dosieron sufiksojn sensignifa
se la dosiero estas plenumebla kaj havas tiu speciala aludo al la pinto de la dosiero.
>> Nun, kiel flanken, lasu min montri al vi rapide versio 3,
kiu estas speco de utila lertaĵo scii.
En hello3 mi faris ion iomete erara
ke mi ĝisdatigos la fontkodon ensalutintaj.
En la versio 3 rezultu ke en la plimulto Linukso komputiloj
tie estas programo nomata Koverto por medio,
kaj kion vi povas fari ĉi tie estas se vi ne havas ideon kie PHP
estas instalita sur la loka malmola disko, ĉar efektive povus varii en funkcio de la komputilo
ke iu uzante, Koverto nur diras kuri Koverto,
kiu estas sur la plej multaj sistemoj, kaj eltrovi kie PHP estas.
Nur komuna artifiko tiel vi ne devas zorgi pri eltrovi kie programo estas.
Sed se vi faras zorgon por eltrovi kie programo estas kaj vi ne zorgis ĝis nun
vi povas uzi la komandon kiun.
>> Lasu min malzomi kaj tipon kiu php,
kaj rimarki ĝin diras al mi ke fakte en usr / bin / php.
Estas speco de mensogo. Estas same en bin.
Ĝi estas nur montrante al mi la unua sukceso.
Se vi iam scivolis kie Clang estas, kion Clang, jen en usr / bin / clang,
kion fari, usr / bin / fari, kaj kion tio signifas do tio estas tempo
vi povus esti tajpi usr / bin / clang eniri kuri Clang,
sed estas speco de teda fari tion, do iuj dosierujoj
kiel usr / bin kaj bin estas alprenita al esti implicite
do la komputilo scias rigardi en ilin por vi.
Demandojn skribi la super, super simplan Saluton Mondo programo
en PHP kaj poste kurante ĝin?
Ĉar nun ni komencas enkonduki pli konvinkaj sintakso.
Bone, jen ni iru.
Tiuj programoj ni vidis vere ĉiuj ili antaŭe.
>> Se mi malfermi, ekzemple, ni faru beer1.php,
ni ne iros tra pluraj versioj de ĉi tiu, sed kion mi faris
Estis mi sidiĝis kaj verŝis ĝin aŭ konvertita
miaj C-kodon al PHP kodo tie.
La plejparto de la supro de la dosiero estas komentoj ĉe tie.
Ĝi rezultas ekzistas unu nova funkcio necesas nomi readline.
GetString, revokon, de Semajno 0 antaŭen iris CS50 afero.
PHP venas kun lia propra uzantamika funkcio nomita readline
kiu prenas 1 argumenton kiu specifas la prompto
ke vi volas montri al la uzanto, kaj kion faras readline
Estas li revenas ajn uzanto tipoj in
En ĉi tiu kazo, mi deklari variablon nomita $ n.
Mi stokante en ĝi la reveno valoro de readline
post instigante la uzanto kun tiu linio.
Nur por subteni, por reale kuri tion, lasu min iri antaŭen
kaj kuri php beer1.php.
Kiom da boteloj estos esti? Ni nur faru 2 ĉifoje.
Eniri. Tio estas ĉio.
>> La programo estas funkcie identaj al la C versio de semajnoj.
Sed sintakse ni vidu kio estas malsama.
Post kiam mi ricevas int de la uzanto rimarkos, ke mi faras iun eraron kontrolanta,
kaj se n estas malpli ol 1 Mi quit kaj mi presi
arrepentido mesaĝon al la uzanto kaj eliro kun 1.
Ĉi tro estas iom malsama.
En C kion ni faru? En C ni revenis 1.
En PHP vi eliri kun 1, kiu sincere estas mi pensas iom pli intuicia
ĉar vi laŭvorte elirejanta la programo.
Bone, kaj tiam malsupren tie la ĝena kanto estas identaj sintakse
krom la variablo, do ĉi tie en linio 24 antaŭen
rimarki mian por buklo estas preskaŭ la sama,
sed mi havas $ antaŭ i kaj n,
kaj kio ankaŭ mankas en linio 26 ke ni havis en la pasinteco
kiam deklari variablon i?
Ne tipo.
Ĝi estas malĝusta en PHP diri int.
Vi simple ne bezonas fari tion.
La komputilo, la interpretisto PHP estas inteligenta sufiĉe por realigi
ke se vi metas numeron en $ Mi estos trakti ĝin
kiel nombro por vi.
Kaj poste malsupren tie plug en $ i, $ i, $ i - 1.
Ĉiuj de tiu estas la sama, kaj tiam ĉi tie ni faras "Wow, jen ĝena" printf
kaj poste eliri (0).
>> Denove, la takeaway tie estas ke kvankam ni pasigos relative
iom tempo en PHP, certe kontre kion ni faris sur C,
ĝi estas preskaŭ la sama, kaj tial, kion ni faros hodiaŭ kaj venontan semajnon
kaj preter estas enfokusigi vere en iuj el la novaj ideoj.
Nur por vidi tiu alia aĵo traduki super de C,
tio estis la super simpla programo ni faris en la semajno 1
aŭ 2 kiu potenco de valoro.
Sed kio estis interesa tiutempe pri tiu programo estas ke
enkondukis la nocion de kutimo skribita funkcio kiu ni mem skribis.
La sintakso en PHP estas preskaŭ la sama.
Jen mia programo ĝis supro.
Rimarku denove forestas estas ajna nocio de ĉefa.
Mi komencas skribi kodon, kaj ĉi tiu estas kio okazas al get ekzekutita de la interpretisto.
Mi presi x estas nun 2, supozeble.
Tiam mi asertas cubing ...
Tiam mi nomas la kubo funkcio kaj pasi en $ x
kaj atribui la reveno valoro al $ x.
Poste mi pretendas, ke ĝi estas potenco de, kaj tiam mi diros tion, kion ni atendas
diros x estas nun 8.
La sintakso por la funkcio en PHP estas nur milde malsama.
Denove mankas estas la reveno tipo.
Denove mankas estas la reveno tipo kaj ankaŭ mankas estas kion alia tipo?
[Inaudible studento respondon]
Nu, bone, tio estas bona. Ni revenu al tio en dua.
>> Ni ne havas, ekzemple, int tie.
Ni ne, ekzemple, ili int tien ĉar, denove, en PHP
vi simple ne bezonas kaj ne devus fari tion,
sed prefere tie estas tio nova ŝlosilvorto nomita funkcio.
En PHP estas preskaŭ iom pli klara ĉar kiam vi volas funkcio
vi laŭvorte diras funkcio, vi donos ĝin nomon kaj tiam apartigita de komoj listo
se iu el liaj argumentoj.
Neniu bezonas diri malplena aŭ io tia, kaj tiam reveno estas la sama,
$ A * a * $ $ a.
Kio estas ankaŭ mankas? Sammy montris tiun cxi tie.
Sur la supro de la dosiero tute forestas en PHP ankaŭ estas prototipo.
Ĉi tiu estas ankaŭ por dezajno.
Lingvoj kaj interpretistoj kiel PHP estas pli inteligenta ol C iam estis
en tradukiloj kiel Clang.
>> Rememoru, ke Clang, se vi ne diris ke kubo ekzistas,
se vi ne diris ke printf ekzistas kiel kun prototipo
aŭ kun # include, nu, tuj krias al Vi kaj ne eĉ kompili vian kodon.
PHP kaj pli modernaj lingvoj estas multe pli inteligenta kiam temas pri tio.
Ili portos sur si legi tra ĉiuj viaj kodo
kaj tiam krias al vi nur se ĝi trovas kubo nenie.
Ne gravas se kubo estas malsupre aŭ en la kapo aŭ eĉ en iuj aparta dosiero.
PHP kaj similaj lingvoj estas nun sufiĉe inteligenta por rigardi antaŭen
ĉion antaŭ deeming vin kiel esti eraris.
Kie tio lasas al ni?
>> Ni faru unu lasta ekzemplo tie en kondiĉoj,
kaj se mi malfermas conditions2.php avizo tro
sintakso tie estas preskaŭ la sama.
Mi uzas readline anstataŭ GetString, sed tiu linio estas sama kiel antaŭe,
"Mi ŝatus entjero bonvolu."
Mi tiam havi se kondiĉo, estas alia se, kaj poste alian,
sed funkcie tiu programo estas ankaŭ identa al kion ni faris semajnoj,
do se mi kuros ĉi afero, php de conditions2,
kaj mi donos kelkajn kiel 23 -
Mi plukis pozitiva nombro. Se mi donas ĝin -1 mi prenis negativa nombro.
Se mi donas ĝin 0 mi ja elektis 0.
Do kiu zorgas pri ĉio ĉi?
Nu, unu el la amuzaj ia ekzercoj ĉi tie
por mi almenaŭ estis iri tien kaj vidi kiel rapide mi povus apliki pset 5,
la fuŝo pset.
Memori, ke estas la dosiero nomata speller.c,
kaj tie estis dosieron nomatan dictionary.c.
Kion mi faris estis mi specon de pasigis kelkajn minutojn kaj mi konvertis la C kodo
al PHP kodo, kaj ni ne pasigas multe da tempo en Speller
ĉar ĝuste kiel en pset 5 vi ne vere bezonas
elspezi multe da tempo en Speller mem ĉar via atento estis sur vortaro.
>> Sufiĉas diri, ke se vi legis tra Speller,
tiun dosieron ĉi tie, estas preskaux ekvivalenta al la C kodo
ni donis al vi por pset 5.
Mi ĵus aldonis kelkajn $ en lokoj.
Mi ŝanĝis iujn funkcion nomojn se ili ne ekzistas en PHP.
Estas unu plia afero ĉi tie, preg_match,
kiu estas iom amatoro maniero fari ion, sed ni revenos al tiu eventuale.
Sed en fino, Speller estas preskaŭ identaj, kaj se vi rigardas la tre malsupro
kio eventuale kraĉas out estas ĉi tie,
vortoj misspelled, vortoj en la vortaro, vortoj en teksto.
Bone, do kio estas interesa nun estas jeno.
Sur la supro de mia dosiero mi postulanta dictionary.php.
Ĝuste kiel C estas # include PHP havas specialan funkcion nomita postulas
ke preskaux faras la samon, postulas dosiero nomata dictionary.php.
Kiel mi povas iri apliki pset 5?
Lasu min kaj malfermu dosieron ĉi tie.
Lasu min preni iom referenco tie.
Kaj lasu min krei novan dosieron kaj komenci nomi ĉi dictionary.php.
Lasu min metis ĝin en alian dosierujon do ni povas fari ĉi tion vivi.
Kaj nun mi zoom in
Mi tuj komencos mian PHP-dosiero kun malfermita krampo php fermita krampo.
Kaj tiam en ĉi tie estis kelkaj funkcioj mi bezonis apliki por pset 5,
do lasu min komenci apliki iujn el tiuj,
tiel funkcio ĉeko, kiuj devis porti vorto en kiel argumento.
Ni faras tion kaj revenu al tio post momento.
>> Estis funkcio ŝarĝo, kiu prenis en kio kiel argumento?
Vortaro, tiel kiel la dosiero, kiun mi fakte volis ŝarĝi.
Estis funkcio grandeco, kiu ne prenis iu argumentoj
kaj farigxis funkcio-kio estis la alia?
Malŝarĝi, kiu ne prenas neniun argumentoj ankaŭ ne.
Ĉi tiuj estas la 4 funkcioj, ke mi bezonus nun apliki en PHP,
kaj kion mi faros estas faru tion.
Multaj el vi uzis hash tablo en pset 5,
do lasu min antaŭeniri kaj krei hash tablo en PHP.
Faris.
Tio donas al mi hash tablo. Nu, kial?
Unu, la variablo estas nomita $ tabelo, nur por sorĉvenigi la ideo de hash tablo.
La rektaj krampoj, tamen, memoru, ili reprezentas kion?
Tabelo, sed en PHP tabeloj ne devas esti ciferece indeksita.
Ili povas ankaŭ esti asocia arrays,
kio signifas ke vi povas havi arbitraj klavoj kaj valoroj.
>> Multe kiel en pset 5, tiuj el vi, kiuj faris hash tablo implementaciones
vi probable insertos la vorto kaj tiam insertos gxin en ĉeno de ligitaj lertaj,
aŭ vi stokitaj la valoron de vera ie aŭ io pri tio.
Vi iel rememoris la fakton ke la vorto estis tie.
Por la momento, ke tuj estos mia hash tablo,
kaj tiel nun iri pri realigo de la ĉeko funkcio
Mi nur bezonas rigardi interne de tiu hash tablo
kaj vidu se vorto estas tie.
Kion mi faros estas mi intencis diri, se-
diru isset, kiu estas PHP-a funkcio kiu laŭvorte signifas simple estas la ŝlosilo aro,
tiel isset ($ tabelo [$ vorto],
kaj se tiel reveni vera.
Estas tio. Tio pset 5 en PHP.
Nu, en justeco, okay.
Else reveni falsa, do ĝi ne estas tie.
Kio vere okazas ĉi tie?
Nu, se tablo-aŭ hash tablo tie pli ĝenerale-
estas asocieca tabelo kiu signifu vi povas indekso en ĝin
kun vorto kiel "vorto", kaj vi devas reiri iu valoro.
>> Ni estas speco de prenanta unu paŝon antaŭe de ni mem.
Estus ia agrabla se ni efektive ŝarĝas la dosiero unua,
tiel ŝarĝo estas netute kiel simpla, sed lasu min antaŭeniri kaj skurĝi supren
vere rapida efektivigo de ŝarĝo.
Lasu min kaj diri vortojn ricevas dosieron vortaro.
La dosiero funkcio en PHP malfermas dosieron
kaj denove vi tabelo de ĉiuj vortoj en tiu dosiero,
nur manoj ilin al vi.
Tio estis granda doloro tro, estis ne?
Nun foreach, ĉi tiu estas nia nova konstruo, foreach ($ vortoj kiel $ vorto).
Ĉi buklo tuj komenci ripetanta super la tabelo vortoj
kaj atribui al la $ vorto variablo ĉiu vorto en la dosiero
de la unua al la dua al la tria al la kvara tuta vojo
do mi ne devas fari la ĝena [i] skribmaniero kaj similaj.
Kaj kion mi simple tuj do por ĉiu el tiuj vortoj
estas stoki ĝin en mia tablo per indeksado en tabelo
kaj tiam fari veran ĉar memori
ke vorto estas en mia vortaro cxiuj mi vere devas fari
estas ia klaki iom kaj diru tiun vorton en miaj hash tablo estas tie, vera.
Kaj se ĝi ne estas tie, mi ne devas eksplicite metis falsa,
alie mi devus meti malvera por ĉiuj eblaj vortoj en la universo.
>> Ĝi sufiĉas por mi nur fiksi indekso valoro
al vera se unu vorto estas fakte en mia hash tablo.
Nun, mi tranĉis paro de anguloj tie Mi skuos miajn manojn ĉe nuntempe,
sed nun la ŝarĝo funkcio estas farita.
Mi montru ĉiujn vortojn de la dosiero en tabelo.
Mi persisti super tiu tabelo, kaj por ĉiu vorto en la tabelo
Mi konektas ĝin en mian hash tablo kun 1 linio de kodo.
Tio estas amuza. Vi scias, kiel ni povas apliki grandeco nun?
Nu, grandeco estas ĉiam bela facila, en justeco.
Ĉi tie ni povas simple reveni grafo de tablo.
Tio estas bela facila ankaŭ, kalkuli la nombron de aferoj en la tablon.
Tio estas vere afabla de ne la plej efika.
Mi devus probable havas variablo nomas grandecon do ni povas fari ĝin
en konstanta tempo, sed tio estas sufiĉe facila.
Ho, kaj tiam malŝarĝi, se ni vere volas esti anal tie
ni povas diri ke estas kiel vi malŝarĝi ion.
Vi nur starigis la variablo egalas al malplena aro,
kaj ĝi liveras de ĉio, kio estis tie.
Neniu bezonas nomi libera.
>> Denove, mi tranĉis iuj anguloj, kaj mi pardonpetas pro atribuante problemo aro 5
eble en C, sed se ni nun iru antaŭen kaj kuri ĉi,
Mi tuj vere kuras la versio kiun mi skribis en anticipo
nur tiel, ke mi ne faris ajnan sintaksa erarojn ajn.
Lasu min kaj kuras Speller. La uzado estas la sama.
Jen estas vortaro dosiero kiu nur enhavas la vorton foo.
Jen estas teksto dosiero kiu nur enhavas foo trinkejo.
Ni literumas kontrolu ĉi, do Speller, uzante ĉi vortaro dosieron pri tiu teksto dosiero.
Estas unu misspelled vorto, trinkejo, kaj voila.
Farita kun pset 5.
Ni prenu la 5-minuta paŭzo tie, kaj ni revenos kaj pli en PHP.
Bone, ni revenis.
Ni ne-malamas min pro iom da tempo.
Ni nun vere vidi ĉu tio ne estas pozitiva
reale efektivigi tion en PHP.
Donita, ĝi prenis 45 sekundoj por apliki.
>> Sed ni iru antaŭen kaj nun kuras aĵoj.
Lasu min kaj kuras C versio
de Speller, kaj ni kuros ĝin sur unu el la plej grandaj dosieroj,
kiu estas la Reĝo James Biblio.
Kaj ke ĉi tie estas in-ni iru en niajn C dosierujo,
Speller sur Reĝo Jakobo la 5-a.
Multaj misspelled words.
Okay, do tio estas la eligo vi verŝajne ricevis eĉ se la tempoj estas iom malsamaj,
se vi havas ĉion funkcias, kaj tiel fojo totale literumi kontroli
la Reĝo James Biblio estis .38 sekundoj, do sufiĉe bona uzante tiu apliko.
Nun mi iras en la PHP-version, kiun ni ĵus skribis.
Mi kuros Speller sur Reĝo Jakobo.
Whoops, ignori ke eraro. Mi estas en la malĝusta dosierujo.
Speller sur Reĝo Jakobo la 5-a.
Preskaŭ farita.
>> Konsentite, la ruza observanto rimarkos ke estis pli ol 3 sekundoj tie.
Tio estas la vera rula tempo.
Ĝi rezultas ke ĝi prenas tempon por kracxi multan tekston el
pro buffering aferoj, sed longan rakonton,
kiu estis 3.15 seconds de maŝino tempo, CPU tempo,
kontre kio estis antaŭ momento?
Kiel .3.
Mi volas diri, estas ordo de grando pli malrapida, do kie estas tiu
ridindaj malrapidiĝo devenante?
Nu, kiel estis la kazo kun plej ajna dezajno decido ni faris
en la klaso dum la lastaj 9 semajnoj tie estas preskaŭ ĉiam tiu tradeoff.
Foje inter nur spaco, kelkfoje inter spaco kaj tempo,
spaco, tempo kaj evoluo penado, kaj ja tie, eĉ se
ni savis grandegan kvanton de tempo, eble potenciale 10-20-30 horoj
de disvolviĝo tempo realiganta la ortografia kontrolilo
vipante ĝin en nur 45 sekundoj kun ĉi tiu lingvo
la prezo ni pagas estas ke ĝi estas ordo de grando pli malrapida kiel rezulto,
kaj ĉi tiu estas ĝenerale la kazo kun plej ajna interpretita lingvo,
PHP, Python, Rubeno, Pearl aŭ aliaj per
se vi tuj kuri ĝin tra interpretisto kaj havas ĝin legi vian kodo
linio por linio, supre sube, maldekstre dekstren,
ke middleman tuj prenos iu momento de lia propra,
kaj kion vi sentas ĉi tie en la 3 sekundojn kiel kontraŭ .3 sekundoj
estas la fakto ke ekzistas ĉi middleman kiu devas laŭvorte interpreti nian kodo
linio por linio, kaj Dio malpermesu, se vi estas interne de ciklo
kun grandega dosiero enhavanta centojn da miloj da vortoj.
>> Ke supre tuj adicii kaj adicii kaj adicii kaj aldonu supren.
Por ilo kiel ĉi tio probable ne estis la plej bona lingvo por uzi por realigi
sorĉas Kontrolilo se inmediatez estas de intereso al viaj uzantoj kaj al vi.
Sed la lukson kiun ni havas en momento estas se vi
uzi lingvon kiel PHP aŭ multajn interpretitaj lingvoj
en la kunteksto de la TTT, tiurilate, vi havas la profito
ke la interreto estas multe pli malrapida ol la plimulto komputiloj.
Vi havas GHz CPU en via komputilo, 2 GHz, eble eĉ pli ĉi tiuj tagoj.
Sed la realo estas en interreto estas alta kvanto de latencia
per di retumilo paroli al servanto, kvankam ni vidis pasintsemajne
ke tio estas sufiĉe rapida, duona milisegundo aŭ tiel,
ke tro adicias supren, kaj se vi elŝuti aĵoj kiel bildo
aŭ Facebook foto aŭ atingi tujmesaĝojn super Facebook babilado,
Gchat aŭ similaj, ĉiuj tiuj rondaj-vojaĝo fojoj
inter la legilo kaj la servilo komenco aldoni supren,
kion faras via specifa elekto de lingvo en multaj kazoj
Ne ĉiuj kiuj rilatajn, do vi estas bela uzante iomete malrapida lingvo
kiel PHP aŭ Python aŭ Rubeno
sed por kio ekzistas grandega upsides al vi kaj viaj kolegoj
kaj viaj amikoj, ĉar vi povas apliki tion tiel, tiel multe pli rapida.
Kaj cetere, vi havas multe malpli da risko de iu sekureco difektojn.
Ne punteros en PHP.
Ne seg kulpoj, ke vi povas facile konkludi
en la sama maniero vi povus en C.
Kun C vi estas super proksime al la aparataro.
Kun PHP kaj similaj lingvoj vi estas speco de pli alta nivelo, por tiel diri,
kun multaj arieruloj inter vi kaj kio fakte okazas
interne de la maŝino, kaj estas nur tradeoff.
>> Ni alvenis al la punkto de havi tiuj pli modernaj, altnivela lingvoj
kiel PHP pro la lecionoj lernitaj en lingvoj kiel PHP en C.
Sed se vi ne komprenas kio daŭras sub la kapuĉo tiel tempo
vi certe ne povas fari la dekstra dezajno decidoj,
kaj certe kiam temas pri laboro en loko kiel Facebook aŭ Google
aŭ iu el tiuj lokoj kiuj estas pli ludante kun granda datumoj aroj
eĉ se vi reiros kaj do premed kaj laboras kun iuj MD
sur iu granda datuma aro engaĝante pacientoj kaj kuracistoj
kaj similaj uzante la rajton iloj estas ege konvinka
ĉar alie viaj analizo de iuj datumoj aro povus preni duaj,
aŭ eble laŭvorte preni horoj.
Tio estas nur unu ekzemplo, ne por detrui vin kun kiom pli penado
estis en C sed helpi vin dankas, ke kiam vi apliki io ​​en C
vi vere komprenas, aŭ en teorio, vere kompreni
kiel ĉiu estas aŭ devus funkcii, kaj vi havas preskaŭ plena kontrolo
super kio okazas sub la kapuĉo, kaj kun tiuj pli alta nivelo lingvoj
vi devas cedi pli kontrolo al la personoj kiuj inventis ilin
kaj estas temo pli al iliaj decidoj de dezajno ol via.
Sed se ni prenos por koncedis ke la rendimento
estas ne tute tiel grava en la TTT pro tiuj aliaj temoj,
nur reto rapidoj estas iom malrapida ol CPU rapidoj ĉiuokaze,
do ni povas ordigi de permesi uzi iom pli malrapida lingvo
se la upsides ni povas evoluigi aĵoj 10 fojoj pli rapida aŭ eĉ pli.
>> Ni vidos kiel ni povas ekuzi ĉi.
Lasu min iri al dosierujo
inter la hodiaŭa ekzemploj nomis frosh.ims,
kaj ĉi tiu estis fakte persone motivita de la fakto ke la unua afero
Mi skribis por la TTT jarojn post preni CS50 kaj CS51
Estis retejo por la Frosh IMS programo, freshman intramural sportoj,
kiu tiutempe tio estis sufiĉe da jaroj antaŭe ke en la momento
ne estis retejo por la programo, kvankam estis Retejo,
kaj anstataŭ estis Proctor en Wigglesworth per se vi volas
registri por flugpilkon aux futbalo aŭ kion ajn vi volas plenigi pecon de papero.
Vi devus tiam marŝi trans la korton.
Vi devus tiam frapas sur lia pordo kaj glito en ilia pordo aŭ manon al la Proctor
peco da papero kun via nomo sur ĝin, ĉu aŭ ne vi volas esti teamestro,
kion sporto vi volis fari, kaj kion dormejo vi estis in
Estis speco de malnova lernejo maniero fari tion, kaj tio estis prima
ŝanco por aŭtomatigi multon de ĉi tiu procezo.
Vi nur iru al la retejo. Vi tajpas ion in
Vi ricevas retpoŝton konfirmon, kaj bum, vi faris.
>> Ĉi tiu estis la unua afero, kiun mi faris, kvankam en lingvo nomita Pearl,
sed estas relative facile fari en PHP, kaj ĉi tiu estas speco de reprezentanto
el la problemoj vi povas komenci solvi kiam oni povas esprimi sin
programmatically kaj ne devas fidi aĵoj kiel Google ejoj
aŭ Excel aŭ iloj kiuj enmanigis al vi.
You guys nun havas la kapablon fari tion kiel ĉi tio.
Ĉi tiu estas super malbelaj versio de formo,
sed ni nur uzas ĝin por la komenco de la konversacio per ĉi tiu estas
krude kio la formo aspektis kiel jarojn por ni
por ebligi homojn en la retejo por registri Frosh IMS.
Ni petis nomo, checkbox por ĉu ili volis esti kapitano,
viro aŭ virino, kaj tiam kio dormejo trovis en,
kaj poste ili prezentas tiun formon.
Ni unue rigardu sub la kapuĉo en la HTML kiu reprezentas tiun retpaĝon.
Lasu min iri en froshims0,
kaj kiel flanken, por pset 7 Mi ferios por donita
la dosierujoj kaj la dosierujojn Mi metante aĵoj in
Ni iru vi per precize kie stuff devas iri en la aparaton,
kiu mod ordonojn vi devas kuri, do ne zorgu pri ĉiuj
stulta detaloj sinkronigi en de la get-go tie.
>> Bone, jen froshims0.php.
Lasu min rulumi malsupren, kaj kio estas kurioza tie,
ĉi tiu estas PHP-dosiero, sed kio estas interne de ĝi, klare?
Estas tutaj multajn HTML, kaj ja, PHP la originoj
vere estis por esti TTT-centrita lingvo.
Post momento antaŭe ni uzis por efektivigi la biero ekzemple,
la kondiĉoj ekzemple, la saluton ekzemplo, kaj tio estas fajna.
Vi povas uzi PHP kiel scripting lingvo
kie skripto estas vere nur la nomenklaturo donita al rapida kaj malpura programo
aŭ io, ke vi skribu en skripto aŭ pli ĝenerale interpretita lingvo.
PHP estas super utila por ke ĉar vi vidis kiel rapide
relative povas skurĝi supren programoj en PHP.
Sed ĝi estis vere desegnita por esti uzata por la retejo,
kaj desegnita por la retejo en la senco ke rimarki tien sur la supro de la dosiero
Mi komencos per <? Php.
Tiam mi havas faskon da senutilaj komentoj, koncedis, sed tiam mi fermi PHP modo.
Sed tiam mi faligis en HTML modo.
>> Kio estas interesa pri PHP estas eĉ se la dosiero finiĝas. Php
ĝi estas ĝenerale signifis esti co-miksitan kun HTML,
iuj PHP kodon, iuj HTML.
Kaj ni vidos poste, ke ni povas starti al tease tiuj aparte
kaj observu niajn HTML aparta de niaj PHP aro,
sed la originoj de PHP vere devis doni al vi tiun flekseblecon,
ke se vi deziras iom HTML nur skribi ĝin, kaj tio estos
kraĉ el idente al la retumilo.
Sed se vi bezonas iun programado tekniko,
iuj programado kodon, vi povas ankaŭ meti ĝin en la sama ĝusta dosiero, kiel ni baldaŭ vidos.
Jen mia HTML.
Mi havas titolon de ĉi por Frosh IMS.
Mi havas korpon etikedo kiu havas iujn CSS sur ĝi al centro ĉiu en la mezo,
kaj tiam ĉi tie mi havas formon kiu ŝajne tuj estos afiŝita
al nova dosiero nomata register0.php, do ni vidos ke en momento.
Oni uzas metodon nomita post, kion ni revenos al tiel.
Tiam mi havas iun formon enigoj, unu nomita nomo, kies tipo estas teksto,
kies nomo estas kapitano, kies tipo estas checkbox,
kaj ĉi tiu, ni ne vidis ĝin antaŭe, sed ĝi faras ĝuste kio ĝi diras.
Vi ricevos checkbox anstataŭ teksta kadro.
Sube jen vi havas radio-butonon, kiu estas unu el tiuj cirkuli butonoj
ke vi povas aŭ elekti ĉi tiu aŭ tiu.
>> Rimarki estas intenca, kiun Mi donis ambaŭ radioaparato butonoj la nomo de varo.
Jen kiel vi ricevas reciprokan ekskludon per vi devas klaki
ĉu ĉi tiu aŭ tiu, kaj klakante la alia
ĝi unchecks la alia, tiel vi devas doni al ili la saman nomon
se vi volas ilin esti reciproke ekskluzivaj tiel.
Kaj tiam por dormejo, mi ne kredas ke ni vidis ĉi ankoraŭ, sed ĝi estas unuaranga menuo, a falmenuo.
La etikedo por tiu estas unuaranga.
Vi tiam donos la falmenuo nomon,
kaj tiam vi havos tutan faskon da tiuj ebloj.
La unua, nur por estetiko, estas malplena linio.
Mi nur volis ke la guto malsupren por esti malplena implicite,
kaj tiam tie estas Apley, Canaday, Grays, ks.
Kaj rimarki la dicotomía tie.
La eblo en la guto malsupren havas valoron,
sed tiam ĝi havas homan-amika nomo, kiu en ĉi tiu ekzemplo
estas identaj, sed se ni vere volis esti anal ni povus havi
la valoron de ĉi tiu guto malsupren nur esti la mallonga versio,
Grizaj, sed ni povis vere diri Grays Salono ke la homa efektive vidas,
sed tio ne estas ĉio, kion interesa, do mi simple konservis ĝin simpla kaj faris ilin identaj.
Tiam malsupren malsupre ni havas submeto-butonon
kion ni vidis antaŭe, sed fiksis ke nur donis ĝin alian vorton.
Anstataŭ CS50 serĉo donis la etikedo "Aliĝi".
>> La fina rezulto estas ĉi retpaĝon tie, kaj denove,
kie tiu ĉi get submetita al?
Ĝi prenas afiŝita al iu dosiero, la valoro de la ago atributo,
kiu estis register0.php.
Ni vidu kion efektive okazas tie.
Lasu min kaj plenigu tiun formularon, diru David
masklo, Matthews, kaj tiam mi diros registriĝi.
Lasu min malzomi kaj klaku registriĝi.
Okay, do speco de senutilaj, sed ni vidu kio reale okazas.
Rimarki ke la URL ŝanĝis esti register0.php.
Kio estas kurioze forestas el la URL, tamen, eĉ se ni simple donita formo?
[Inaudible studento respondon]
Konsentite, tio estas nur Chrome esti uzanto amika tiuj tagoj.
Tio estas vere tie. Ili nur kaŝi ĝin por ŝpari spacon.
Sed bona penso, bona penso.
Al la alia fino de la URL, tamen, kio mankas? Yeah.
[Studenta] La demando kordoj.
La query string, do memori el nia simpla serĉo de Google ekzemploj.
Tuj kiam mi premas la butonon submeti la URL
prenis min al Google, sed tiam ne estis? q = komputiko aŭ kion ajn mi tajpis in
Tio estas ĉar ni uzas la get metodo kun la serĉo ekzemplo.
>> Ĉi-foje ni uzas kion metodo anstataŭ?
Afiŝi, kaj unu el la tujan distingoj
inter akiri kaj afiŝi estas ke post ne metas la uzanto enigo en la URL.
Ĝi kaŝas ĝin. Ĝi ankoraŭ sendas ĝin.
Fakte, kion ni vidas en la retumilo tie, kiel ni malkaŝi en momento
rigardante register0, estas mi nur vidas la enhavon
de la tabelo kiuj afiŝita de la retumilo al la servilo.
Sed la URL ne havas?, Ĝi ne havas ajnan ŝlosilvortoj
aŭ valorojn en ĝi, kaj kial estas tiel?
Nu, post vi permesas ankoraŭ sendi datumojn de la formo al servilo,
sed ne metas ĝin en la URL, do kia informo estas posteno
aparte taŭga por eble kiam vi petas la uzanto
tajpi en enigo al formo?
Io kiel pasvorto, simile kiel tio alia?
Kreditkarto nombroj.
Io, kio estas milde sentema vi verŝajne ne volas fini la URL-on
se nur ĉar ĝi signifas vian kompano aŭ membro de la familio povas simple troll tra
vian interreto historio kaj tiam laŭvorte vidi vian pasvortoj,
laŭvorte vidi vian kreditkarto nombroj ĉar plej retumiloj
memori en la historio ajn URL vi estas je,
do se nur ĉar tio estus malbona ideo.
Uzanta post kaŝas tiun detalon de la uzanto.
>> Ankaŭ, kiel vi alŝuti foton al Facebook?
Nu, la nur 2 mekanismoj vi povas vere uzi,
kvankam ekzistas kelkaj aliaj pli arcano bonaj, estas akiri kaj afiŝi.
Kiel vi eble alŝuti foton tra URL?
Vi povas vere fari ĝin.
Vi povas preni JPEG aŭ bitmap aŭ GIF kaj vi povas reprezenti ĝin en deksesuma
aŭ io nomata bazon 64.
Anstataŭ bazo 16 vi uzas bazon 64, kiu esence similas
ASCII signoj, kaj vi povas reale alŝuti foton tra URL
post demandosigno, sed estas ĝenerale grandeco limoj.
Plej kroziloj devigi URL esti ne pli ol 1.000 signoj,
eble 2.000 karakteroj aŭ similaj, do vi ne povas alŝuti
de 10 MB Facebook foto.
Por ke vi uzas post tiel, do por nun get metas la parametroj en la URL,
kio estas agrabla kaj utila kelkfoje, sed por nenio sentema aŭ granda
post estas la maniero iri.
Kio register0 reale faras ĉi tie?
Nu, se mi malfermos register0 avertas ke ĉi tiu estas super simpla paĝo,
sed ĝi estas pruvante la fakton, ke mi povas kunlabori miksi, por pli bona aŭ por malbona,
HTML kun PHP.
Ĉi tuta dosiero, krom la komentojn ĉe la supro, estas HTML
krom ĉi tiu viro tie.
>> Rimarki en la mezo de mia PHP kodo,
en la mezo de mia HTML, mi havas ia provizore
eniris PHP modo.
Mi vokas speciala funkcio nomita impreso r.
Ĝi signifas presi rekursie, kaj kion faras estas ĝi rekursie presas
kion ajn variablo vi transdonu ĝin, punktokomo, eliro PHP modo.
Kaj la antaŭ etikedo donas pre formatitan tekston,
simio spaco teksto tiel ke ĉiu spaco vi reale vidi ĝin.
Ĝi ne malaperas. Kio estas post?
Nu, kio estas interesa kaj konvinkaj pri PHP
estas ke kiam ajn vi submetas formo uzanta akiri aŭ afiŝi
io ke tio submetita al vi per retumilo
PHP mem ciferojn el kio tiuj ŝlosilaj valoro paroj estas,
figuroj, ĉu ekzistas egala signoj, figuroj, ĉu tie estas demandosigno.
Ĝi faras la laciga laboro por vi, kaj tiam manoj vi asocieca tabelo
enhavanta ĉion la uzanto tajpas en la formon.
Nu, kion kampoj ne tiu formo havas?
>> Ĝi havis 4 kampoj.
Unu estis tekston kampo nomata nomo.
Tiu estis checkbox nomita kapitano.
Tiu estis radiobutono nomis sekso,
kaj tiu estis falmenuo nomis dormejo,
tiom rimarkos, kiam mi presi rekursie
la enhavo de ĉi tiu speciala variablo.
Ĉi tiu estas speciala tutmonda variablo nomis laŭvorte $ _POST, en ĉiuj ĉapoj.
Ĉi tiu estas speciala tutmonda variablo kiu PHP nur kreas por vi
kaj manoj al vi por ke vi povas aliri ĉio
kiu estis afiŝita tra formularo de uzanto.
Kaj por nomi impreso r sur ĝi-vi ne farus tion en normala apliko.
Ni faras ĉi por vidi ene de ĉi variablo,
kaj kio estas interne de ĝi, nu, 4 klavoj,
4 http parametroj, por tiel diri,
nomo, kapitano, sekso, dormejo, kaj poste la valorojn kiujn la uzanto
tajpita kun unu escepto.
Mi faris tipo D-Al-V-mi-D.
Mi kontrolis la skatolon, kvankam, por vira, kiu ŝajne prezentis valoro
de ĵus m esti konciza.
>> Kiam mi selektis Matthews tio estas la valoro kiu got selektita,
kaj ĉi tiu estas iom stulta, sed estas la konvencio.
Kiam mi kontrolis la skatolo, valoro de sur, "sur", got afiŝita la checkbox.
Se mi ne kontrolis ĝin, neniun valoron estus senditaj ajn.
Tiu estas ĝuste doni al ni enrigardojn en kio estas ene de tiu speciala tutmonda variablo,
kaj estas tiel speciala, ke ĝi estas nomata super malloka variablo.
Ekzistas ĉie por vi inter viaj kodo por ke vi povas reale konsenti li.
Ĉi tiu ne estas kiun konvinkaj, do ni vere uzas la super tutmonda
kaj fakte provas registri iu.
En froshims1 Mi tuj faros unu ŝanĝo.
Mi ŝanĝas la ago esti register1.php,
kaj mi faras unu alia afero.
Mi estis speco de embarasita por la kvalito de mia retpaĝo tie.
Estas bela malbelega, honeste, do rezultas
ke vi povas uzi tre facile en la TTT
fremdajn kodo JavaScript, fremda CSS
ke mi skribis kaj malfermita fonto kaj faris disponebla kiel biblioteko,
por tiel diri, kaj ekzemple, tie Mi uzas de libere disponebla biblioteko,
faskon de kodo ke iu alia skribis.
>> Twitter okazis skribi ĉi tiun kodon, kaj ĝi estas nomata la bootstrap biblioteko,
kaj tio estas nur amaso de CSS stilo littukoj, faskon da. css-dosieroj
ke iu alia skribis kaj supozis, kiel akiri ĉio bela kaj bela
por ke la homo kiel ni povas zorgi iom malpli pri estetiko kaj enfokusigi multe pli
sur la logiko kaj la efektiva programado.
Por kunligi ĝin kun la etikedo, kiu estas la sama etikedo mi uzis memoru por styles3.css antaŭe,
Mi nun havas aliron al dosiero nomata bootstrap.min.css.
Min simple signifas tiu persono jam minified ĝin kaj ili jam liveris de ĉiuj blanka spaco kaj tiel plu
nur por certigi ili ne sendi al mi pli bitokoj ol mi reale bezonas.
Sed en tie estas tuta amaso de CSS, do se mi nun malfermi versio 1 de Frosh IMS
rimarki, ke mia dosiero estas definitive pli bela.
Nun ĝi estas ankoraŭ apenaŭ nigra kaj blanka, sed rimarkas ke per nur uzante sian stilon folio
kaj uzante iujn trajtojn de ĝi sur mia formo ĝi ne estas mirinda,
sed estas definitive pura ol estis antaŭe, kaj la projekciilo ne fari ĝin justeco.
Estas iom griza linioj ĉirkaŭ la butonojn kaj ĉirkaŭ la teksto kampo tie ĉi,
sed estas definitive pura ol ĝi estis antaŭe.
>> Nun, en justeco, mi ne devas ŝanĝi mian markado iom.
Tio estas versio 1, kaj rimarkis ke mi uzis kelkajn novajn etikedoj,
kaj honeste, mi tute ne sciis kiel fari ĉi ĝis mi legis la dokumentaron
por Twitter bootstrap biblioteko, kaj ili diris al mi, se vi volas uzi nian bibliotekon
uzi fieldset elemento ene vian formon,
metu la vorton vi volas montri apud kampo ene de etikedo tag,
tiam donu vian enigo nomon, same kiel antaŭe,
kaj poste por la checkbox, ne nur vi envolver ĝin en etiketo elemento,
vi uzas iun nomita klaso, do ni ne vidis tiun antaŭe,
sed vi vidos tion en unu el pset 7 La mallongaj.
Klaso en CSS permesas fari ion tre simila al la ID,
sed antaŭ kiam ni havis ID kun la # simbolo
kiu estis por unu kaj nur unu elemento.
Kio estas agrable pri klaso estas ke multnombraj elementoj povas havi la sama klaso
aŭ la sama CSS stuff aplikita al ĝi.
>> Sed denove, pli en tiuj en la mallonga, kaj la resto de ĉi tiu estas nur kopii kaj almeti
el iliaj dokumentado kie mi aldonis etikedon tie kaj tie.
Kaj fine, ĉar mi komprenis la ligilon etikedo ĉe la supro,
ĉio aspektas pli belaj aŭtomate
per simple esti markitaj mian paĝon en maniero, ke
Twitter atendis, kaj tie estas tiom da malsamaj manieroj
por tion fari kaj tio estas ja tre taŭga.
Je ĉi tiu punkto en la semestro, kiel vi vidos en pset 7 La specifo,
Googling ĉirkaŭe, legante sur bibliotekoj, uzante fremdajn CSS
kaj JavaScript por solvi helpaj problemoj
al la problemo aro mem estas certe kuraĝigis kaj estas la vojo
la TTT estas konstruita tiuj tagoj, per piedo sur fremda ŝultrojn
por ke vi povas vere fokusigi la nova kaj interesa problemo.
Sed ni nun enfokusigi, denove, la logiko.
>> Tio estis rapida kromvojon en estetiko nur por montri al vi la direkto en kiu vi povas iri.
Mi tuj restarigu reen al la pli malbelaj por nun nur ĉar
ne estas distroj kun Twitter stuff, kaj lasu min antaŭeniri kaj malfermu
froshims2, kiu, denove, diferencas nur en la ago, register2.php,
kaj ni rigardu kio la efekto estas ĉi tie.
Lasu min kaj tajpu en David.
Mi ne estos kapitano ĉi tiu tempo.
Mi diros masklo, Matthews, enskribi.
Damn it. Konsentite, tio estas ŝraŭbo sur mia parto.
Staras.
Register2, linio 22, se malplena aŭ-sorry.
Ni reŝargi.
Konsentite, sur submitting ĉi formo kio ĵus okazis?
Mi tajpis en David, kontrolis masklo, clicked Matthews, enskribi.
Vi estas registritaj. (Nu, ne vere.)
Tio estas klare paŝo preter nur presi el la enhavon de iu variablo,
sed kio estas ĉi tiu dosiero fakte faras?
En register2.php
rimarki, ke mi havas iom novan kodon.
Ene de mia korpo tag mi havas esence se alia konstrui,
sed ĉar mi co-mingling ĉi kun iu HTML
Mi devas eniri kaj eliri PHP mode tien kaj reen, do ni vidu kion mi faras.
>> En la unua linio tie mi estas diranta se ĝi estas la kazo
ke la post super tutmonda estas malplena por la ŝlosilo de nomo,
tiel en aliaj vortoj, se la uzanto ne donis al mi valoro por nomo en la formo,
tiam malplena tuj revenos vera ĉar la valoro estas malplena.
Or-rimarkos la vertikala stangoj-se varo estas malplena
ene de tiu speciala super tutmonda, kiu, denove, reprezentas la enhavon de la formo,
aŭ la dormejo estas malplena, tiam mi tuj iros antaŭen kaj krii en la uzanto.
Kiom? Nu, rimarki Mi intencis diri vi devas provizi vian nomon, genro, kaj dormejo.
Ni efektive indukti tiun eraron.
Lasu min reiri al mia formo. Lasu min reŝarĝi demeti ĝin.
Kaj mi nur tuj donos ilin David kaj ili ne bezonas scii kie mi loĝas.
Registriĝi. Ŝajne mi devas diri al ili, kie mi loĝas.
Vi devas provizi vian nomon, genro kaj dormejo. Reiru.
>> Kaj mi povus alklaki reiri al tiu formo, sed kial estas tio?
Nu, en tiu kazo nomo ne estis malplena, sed varo estis, kaj dormejo estis,
do ĉi tiu tuta esprimo taksita al vera, kaj kvankam la sintakso estas iom nova,
denove, ni eniras PHP modo, familiara se propozicio,
sed la nova parto jen ĝuste ĉi dupunkto, kaj mi estis ŝraŭbita far preterlasante paréntesis
hazarde, sed rimarki la dupunkto, kaj tio signifas
kvankam ni elirejanta PHP mode ĉio
kiu sekvas devus kracxi el laŭvorte al la retumilo
ĝis vi vidas alian bloko, kiel ni ĉi tie,
tiaokaze vi devus anstataŭe kracxis this out
ĝis vi vidos la endif, do iuj iomete nova sintakso
kiu min permesas Baskuligi inter HTML kaj PHP.
Ni povas purigi ĉi supren eventuale, sed por nun,
ĝi estas speco de konvinkaj maniero de eraro kontrolanta la formo.
>> Nun, mi diras ke vi ne vere registrita ĉar evidente ni faris nenion krom la datumo,
do ni vere provas fari ion cool.
En froshims3 la sola diferenco estas ke mi tuj sendi al register3,
tial la HTML tie estas la sama.
En register3 rimarki tion.
Ĉi tiu estas speco de sexy.
Ĉe la supro Mi uzante postulas deklaron, do ĉi tiu estas kiel # include.
Ĉi-foje ĝi ne estas stdio.h aŭ io kiel tio.
Estas PHP biblioteko, kaj ĉi tiu estas nomata PHPMailer.
Kiel mi scias inkludi precize tiu citita kordoj?
Mi legis ĝin en la dokumentado, do kiam oni diris al mi metis ĉi sur la supro de la dosiero
se vi volas uzi specialan bibliotekon nomis PHPMailer kiu faras kion ĝi diras.
Ĝi permesas al vi sendi retpoŝton per PHP.
Nun ni rulumu malsupren plu.
>> Rimarku komenci mi en PHP modo ĉi tiu tuta tempo,
tial nun rimarkas cxi tie post importante ke biblioteko,
por tiel diri, mi faras iujn prudento ĉekoj.
Se temas pri la kazo tiu nomo ne estas malplena
kaj sekso ne estas malplenaj rimarki la ekkrio poentoj-
kaj dormejo ne estas malplena, tiam la uzanto logike plenigis la formularon, almenaŭ sufiĉe.
Mi ne zorgas se ili estas kapitano aŭ ne. Mi nur bezonas ilia nomo, sekso, kaj dormejo.
Se ili plenigis tiuj el tiel ke neniu el tiuj kampoj estas malplenaj
ĉi tiu estas iomete nova sintakso.
PHP, kiel flanken, estas objektema programlingvo
kiu iuj el vi infanoj povas memori el APCS aŭ similaj.
Nuntempe, se ne konas, nur scias, ke por uzi tiun bibliotekon
vi devas skribi linion de kodo kiel ĉi uzante nova ŝlosilvorto,
laŭvorte nova ŝlosilvorto nomita nova.
Sed preter tio, ni havas iom familiara sintakso.
Estas sago operatoro, kiu estas simila al kion ni uzas por structs en la kunteksto de punteros.
Por hodiaŭ PHP ne havas punteros,
sed sciu nun ke ene de la poŝto variablo
estas esence speco de puntero al speciala biblioteko
ke iu alia skribis, kaj se mi volas aliri al specifaj funcionalidad
ene de tiu biblioteko mi, kiel en C, uzu la sago operatoro,
kvankam ĉi tiuj estas ne reale punteros.
Estas iel PHP propra versio de gxi.
Tio signifas iri en la biblioteko kaj alvoki IsSMTP funkcio.
SMTP, revokon, de nia Soldatoj de la Reto raportas al email,
kaj tio nur signifas uzi retpoŝton servilo por ĉi Frosh IMS registriĝo.
>> Kio gastiganto mi volas uzi?
Nu, Harvard, se vi Google ĉirkaŭe, havas retpoŝtan servilon nomis smtp.fas.harvard.edu.
Se vi ludas kune hejme aŭ vi loĝas sur Comcast reto
gxi estu io kiel smtp.comcast.net.
Ĝin plene dependas de kie vi loĝas kaj kiu via ISP estas.
Post tio mi iros al Mian el adreso arbitre esti jharvard@cs50.net.
Mi tiam tuj fiksis la trakti esti jharvard@cs50.net.
La sola maniero mi sciis, ke tiuj funkcioj estis nomita SetFrom kaj AddAddress
estas, denove, mi legis la dokumentaron.
Ĉi tiu ne estas speco de magie konata al ĉiuj programistoj.
Tiam mi starigis temo al "registro".
Kaj nun ĉi tiu linio estas iom malbela pro kion la skalara operatoro signifas en PHP?
Anyone know?
Concatenate.
En C estas doloro en la kolo al concatenate 2 kordoj kune.
Vi devas trakti malloc aŭ realloc aŭ ĉiuj kiuj stuff
nur etendi la longo de linio.
En PHP, en JavaScript kaj aliaj lingvoj
vi povas kutime fari tion kun sola karaktero.
En ĉi tiu kazo, ĝi pentras signifas preni tiun ĉenon tie
kaj aldonas al ĝi tiun ĉenon.
>> Ho, kaj por la vojo, aldonas al ĝi tiun ĉenon,
kio okazas al esti variablo ene de tiu super tutmonda.
Tiam aldonas al ĝi novan linion, do ĉiuj tiuj punktoj simple signifas
teni farante pli kaj pli granda kaj pli granda ĉeno,
kaj vi ne devas prizorgi ajn pri malloc aŭ kiel en lingvo kiel ĉi tiu,
kaj tie estas aliaj manieroj por fari tion, sed tio estas unu el la plej rapida
manieroj meti ĝin.
Kio estas ĉi faras?
Oni kreas retmesaĝon korpo kiu tuj diri Nomo: Kapitano: Sekso: _Dorm_:
ĉiuj sur apartaj linioj, kaj poste laste,
unu linio de kodo, kaj mi iros por ignori tion por nun.
Se == malvera nur signifas, ke io estis malbone,
sed la magio okazas tie.
Sendi sendu signifas sendi tiun ĉi mesaĝon.
Ni vidu kion la pura rezulto estas.
Ĉe la malsupro de la dosiero, rimarkis tuj diros al vi estas registritaj vere
se mi havas tiun for.
Se, tamen, la uzanto ŝraŭboj supren, rimarki ke ni komencis tiun
se kondiĉo ĝis tie, se ĝi ne estas malplena kaj ne malplena
kaj ne malplenigos ni sendos la poŝto.
Alie ni tuj sendu jenan linion de kodo,
kiu tuj havos la efikon, kiel vi vidos en pset 7, de redireccionando la uzanto
reen al kie ili venis, froshims3.php.
>> Fingroj transiris, alikaze tiu tuj estos la plej seniluziiga demo hodiaŭ.
Ĉi tie ni iru.
Lasu min malfermi mian retpoŝton enirkesto por jharvard en Gmail.
Neniu retpoŝto nun. Bone.
Nun lasu min malfermi froshims3, kiu estas la tria kaj lasta ekzemplo ni vidas tie.
Konsentite, jen ni iru.
Nate, li estos kapitano, virseksa, el, ekzemple, Apley.
Registriĝi. Okay, vi estas registrita vere.
Nun, se mi rulumi pli al mia retpoŝto, ho mia Dio.
Mi ĵus dinamike sendis retmesaĝon en la TTT.
>> Ni lasu en tiu noto.
Video estas venonta por la prelego ni maltrafis. Vidi vin proksima semajno.
[CS50.TV]