>> [Daqq tal-mużika]
>> DAVID Malan: Dan huwa CS50, u dan huwa l-bidu ta 'tmien ġimgħat.
U aħna qed hekk eċċitati li jilqgħu lura, sorpriża kbira, Ramon CS50 stess
Galvan, anzjan żieda li kien infiq l-aħħar diversi xhur
minn Lulju fil LA, fil Hollywood, litteralment jaħdmu fuq marka ġodda tat-TV
juru imsejħa Colony, il-kreatur ta 'liema huwa attwalment alumi Harvard innifsu.
U hekk aħna qed eċċitati ħafna biex tara dan debutt fuq in-netwerk USA din Jannar.
Sabiex tissospendi sintonizzat għal dan, u għall aktar Ramon għall-ġimgħat li ġejjin.
>> Kun af issa li t-tmiem huwa qrib.
U dak li dan ifisser huwa li ma jkunx hemm kollha li ħafna xellug tal CS50, imdejjaq ngħid.
Għandna biss tlieta problema settijiet left-- hemm
problema sett six-- li huwa idejk issa jew dalwaqt se jkunu,
lest aktar tard din week-- huwa maħsub biex jimtela dinjiet tagħna ta 'kmand tal-linja, fejn
aħna ħadthom jintefqu ħafna mill-ħin tagħna jużaw C, u d-dinja ta 'programmazzjoni web.
Well, inti taf tara ħafna ideat mislufa mill-ħidma linja tal-kmand,
iżda wkoll ħafna ta 'ġodda u ideat interessanti
li huma wkoll ser ikunu germane għall applikazzjonijiet mobbli u għat-teknoloġija,
b'mod aktar ġenerali, li magħhom inti guys huma kollha familjari llum
fuq laptops u telefowns u simili.
>> Allura inti ser timplimenta mhux paġna web, jew websajt
per se, iżda web server attwali.
Inti se jikteb il-bqija ta 'web server miktub fl C, li l-għan fil-ħajja
huwa li jirċievu talbiet HTTP, dawk pakketti virtwali inżommu nitkellmu
dwar, u effettivament tirrispondi jew ma xi content-- statiku bħal dot HTML
fajl, jew tikka JPEG jew kwalunkwe numru ieħor ta 'fajls,
jew saħansitra fajl PHP biha web tiegħek server se tinterpreta dan PHP
kodiċi u bżiq out-riżultati.
Issa, konna sakemm illi inti ma pjuttost ftit ta 'qafas
għall it-- tabilħaqq l- kodiċi ta 'distribuzzjoni għall-problema
sett sitt huwa aktar minn 1,000 linji twil, Ħafna li huwa kummenti, bħala l fair--
iżda dan huwa tassew maħsub li huwa opportunità
li tinkiseb idejk għadis maħmuġ fi proġett pjuttost kbir
li konna ħafna speċifikament minquxin out biċċiet ta 'għalik,
b'tali mod li verament meta inti ħruġ CS50 u jidħlu fid-dinja reali ta 'programmazzjoni
u jridu dabble fil kwalunkwe numru ta 'proġetti,
inti ser ikollok ħafna akbar kumdità tniżżil xi sors
kodiċi, xi sors miftuħ proġett fuq il-web,
idrokarburi, u għadis u jagħmlu bidliet li tara xieraq.
Problema stabbiliti seba se jkun ta 'madwar jagħmlu web-based applikazzjoni tiegħek
li jieħu kontribuzzjonit dinamika u tipproduċi output dinamika fil-forma
ta 'websajt' etrade.com simili.
U l-problema stabbilita tmien se tiffoka fuq għadhom lingwa oħra magħrufa bħala JavaScript.
>> Sadanittant, l-aħħar proġett huwa fuq l-orizzont.
L-hekk imsejħa pre-proposta huwa dovut ġimgħa mil-lum.
Pre-proposal-- kull l-ispeċifikazzjoni, li hija fuq website-- CS50 s
hija opportunità pretty każwali għall inti tibgħat email pretty qosor
li sħabi tagħlim tiegħek biss li tinforma lilu
jew tagħha ta 'dak li qed jaħsbu, li użu dwarha bħala mezz ta 'ġbir.
U jkollhom sanità check-- jekk int taħseb
dwar gdim off wisq kemm jew forsi ftit wisq,
jew forsi ikollok ebda idea tkun xi tkun u jridu jimpenjaw ruħhom fil-konverżazzjoni.
>> Wara hija proposta u rapport tal-istatus,
l-hekk imsejħa hackathon CS50 hawn fil Cambridge għall Harvard u Yale istudenti
bl-istess mod.
Il-proġett aħħari implimentazzjoni huwa imbagħad lejn.
U mbagħad CS50 ġust hawn, fil Cambridge, kif ukoll ieħor fi New Haven.
Allura l-proposta, tagħti ħarsa lejn il-websajt għall dawk id-dettalji.
>> Iżda aktar excitingly, wisq, huwa opportunità li tikseb idejk maħmuġin,
u imħuħ tiegħek miftuħa lill-impjegati whole mazz ta 'suġġetti u għodod
u tekniki li huma anċillari li sillabu qalba tal-kors, l
iżda madankollu relatati.
U wkoll skaluni isbaħ għal tagħmel proġetti finali verament jibred li
jmorru lil hinn sew mill-materjal konna koperti formalment problema settijiet jew lecture.
Allura jmorru għall-websajt CS50 għall l-roster kollu ta 'seminars.
Jekk inti ma tirreġistra għadhom, li l-multa.
Jimxi 'l quddiem u jiffirmaw xorta u aħna se segwitu ma 'rabta streaming live,
il-jum u l-ħin huwa fuq il-websajt.
U kollox se jkun rreġistrati u mqiegħda online
jekk inti ma tistax tagħmel il- partikolari ġranet u ħinijiet.
>> Fir-rigward dak li jinsab quddiem thereafter-- ukoll, naturalment, hemm il-hackathon CS50.
Dan ir-ritratt, irtirar, minn żero ġimgħa meħuda madwar 4:00 waħda filgħaxija fl-aħħar snin.
Il CS50 ġust, li għal darb'oħra se ssir fiż-żewġ ibliet.
U mbagħad, biss għall-pjanti l- żerriegħa, anke jekk aħna xorta
ikollu xahar plus xellug tal semestru, jekk inti tixtieq li jissieħbu tagħlim CS50 stess
persunal, u inti tixtieq li tibda ħsieb dwar issir CA,
jew sħabi tagħlim, jafu li aħna ser jibda jitkellem aktar dwar dak
aktar tard din semestru.
Iżda isaffru hawn huwa aktar tat-tim din is-sena.
>> U għalhekk, PHP-- u I kien tant imdejjaq aħħar ġimgħa li [? Allyse?] Ġentilment
marru għall-isforz ta 'jkollna us dawn props isbaħ
li jien ma tispiċċa bl-użu, u għalhekk verament biss ħares tip ta 'stupid
li kellna pala seduta hawn kollha jum aħħar Erbgħa, u mgħarfa ftit.
Iżda dan kien metaforika tiegħi mod ta 'tipprova żebgħa
l-istampa ta 'għaliex aħna qed transizzjonijiet minn C għal lingwa bħal PHP.
U l-istess jista 'jingħad dwar kull Numru ta 'languages-- Java, Python, Ruby
jew għenieqed ta 'others-- iżda billi fl C, per eżempju, kitba ta 'programm C
jista 'tipikament ikun simili teħid ta 'mgħarfa bħal dan
u tħaffir toqba fil- art, fir-ramel jew il-ħmieġ.
PHP tippermetti li tieħu ħafna gdim akbar barra mill-problema,
miktub ferm inqas kodiċi użu ta 'għodda ferm iżgħar,
għaliex hemm daqstant aktar funzjonalità għaqqadtu fil.
>> Issa, kieku konna verament drammatiku, aħna'd jkollhom xi ħaġa li pala
hawn, iżda dan ikun hekk.
Sadanittant, l-ieħor metafora aħna ħarāet bil
huwa, ovvjament, inti tista jużaw xi ħaġa bħal wrench
martell fil xi ħaġa bħal dwiefer.
Iżda naturalment, id-dritt għodda għall-użu huwa għaddej
li mhux tant il- lingwa imsejħa C--
u issa I biss imdejqa [? Sanders,?] Probabbilment,
aħna ser jiffissaw dak later-- hekk l-għodda dritt li jużaw spiss
mhux se tkun din l-għodda iktar livell baxx.
U fil-fatt, C ma tkunx lingwa li ħafna minnkom qatt ser tuża,
jew għandhom neċessarjament jużaw mill-ġdid.
>> U fil-fatt, ftit secret-- il-ħin biss
I użu C myself hija pjuttost bejn Settembru u Diċembru ta 'kull waqgħa
semestru.
U dan għaliex aħna jużawha bħala opportunità
biex jgħallmu l-prinċipji fundamentali ta 'programmazzjoni,
u magħha kompjuter fundamentali xjenza, data
strutturi, algoritmi u l- like-- iżda malajr ħafna se inti
tara issa li l-sintassi u l-ideat sottostanti C
huma tant wonderfully trasferibbli għal aktar modern
lingwi ta 'livell ogħla, bħall PHP u Python u Perl u Java
u Għan-C-- attwalment, mhux tant Għan-C-- iżda Swift, dawn aktar ġodda
lingwi li ħafna minnkom se imbagħad dabble miegħek proġett finali.
>> Allura mingħajr aktar dewmien, ejja fil-fatt użu PHP biex isolvu xi problemi.
Ifakkar li kmieni, l-aħħar ġimgħa, aħna biss użati CS50 IDE,
aħna kiteb programm ftit dinky li biss qal, "Hello dinja."
U mbagħad I meħlusin fil fajl imsejjaħ hello.php.
U mbagħad I dam dan il-kmand.
>> U għaliex?
Bl-Ingliż, x'inhu għaddej hawn?
X'kienet I tagħmel meta I dam dan il-kmand?
>> Yeah?
>> UDJENZA: Hemm xi PHP funzjoni li taqra dak li in-- jifhem li.
DAVID Malan: Good, hemm xi funzjoni PHP-- u let me tkun aktar speċifika,
hemm program imsejjaħ PHP, a.k.a.
Interpretu, li jifhem il-kontenut tal hello.php,
u tinterpreta dan fuq għal qiegħ, xellug għal-lemin,
u ma dak dawk jikkmanda jgħidu.
Il-kmandijiet fil hello.php, naturalment, huwa biss sors code-- funzjonijiet
u l-varjabbli u loops u bħalhom, li aħna lilna nfusna
bdew kitba fil-PHP.
>> Iżda b'differenza Ċ, li hija lingwa ikkumpilata,
PHP inti biss jiktbu dan, u run.
Inti skip dak il-pass middleman ta dan jinbidel biex żerijiet u dawk,
u mbagħad ġestjoni tiegħu.
U għalhekk dak li huwa rasu 'dan?
Għaliex aħna taqbeż il-pass?
Għaliex lingwi aktar moderni tendenza li skip dan il-pass?
Liema kienet l-benefiċċju?
>> Jew biss intuwittivament?
Anki jekk aħna ħadthom ma miktub kemm PHP qabel,
x'hemm benefiċċju dwar li ma kumpilazzjoni kodiċi tiegħek taħseb?
Nru?
Mhux jikkommettu?
Grif ras tiegħek?
Yeah.
>> UDJENZA: Aktar dinamiku.
>> DAVID Malan: Aktar dinamiku?
Dak li jfisser?
>> UDJENZA: [inaudible]
DAVID Malan: OK, tajba, sabiex jiddependi fuq il-kontribut,
inti ma għandekx li josservawha kull darba.
U huwa verament huwa kif Sempliċi kemm that-- dak
huwa l-punt ta 'tkomplija biex jikkompilaw kodiċi tiegħek?
Dan huwa biss pass thats making-- dan jeħtieġ,
għall-aħħar diversi ġimgħat, id-doppju passi
kif biss running program tiegħek.
Huwa kien utli li jara li inti tara xi messaġġi ta 'żball u oħrajn,
iżda huwa għadu biss pass annoying.
>> U hekk programmaturi realizzati matul iż-żmien, għaliex ma we
tibda tikteb lingwi li ma jkunux bżonn li pass pjuttost mekkaniku,
sabiex tkun tista tikteb biss kodiċi tiegħek u run.
Imma dak kien il-prezz li rajna aħna mħallsa
ġimgħa li għaddiet, ma eżempju wieħed partikolari?
Iva?
>> Veloċità.
So [? x'hemm?] interpreti ftit aktar bil-mod,
f'dak żerijiet u dawk li huma sbieħ u veloċi għal kompjuter
biex jinftiehem, minħabba li l- Intel CPU, jew kwalunkwe huwa,
biss jifhem x'inhu għaddej fuq ma 'dawk mudelli ta' bits.
Billi interpretu huwa programm li verament
għandu jaqra s-sors ascii kodiċi li għandek bil-miktub,
u jinqaleb, biex ngħidu hekk, jew figura kif li tikkonverti finalment
li żerijiet u dawk.
Allura hija biss tieħu ftit daqsxejn ta 'hit prestazzjoni.
Allura huwa daqsxejn ta 'kompromess.
Issa jekk nagħmlu dan minn hawn, let me imorru quddiem u jagħmlu eżempju kif ġej.
Jekk immur fil hawn, fajl ġdid, jien ser biex jiffrankaw din darb'oħra huwa hello.php.
U issa jien se jimxi 'l quddiem u jgħidu, "print Hello dinja" -
u jfakkru li nista 'nuża print, jien ma għandek tuża print-F. U issa l hawn,
jekk I do PHP ta hello.php, I huh-- ma jidhirx li interpretawha.
What did I do wrong?
>> UDJENZA: Il-brazzuletti angolata.
>> DAVID Malan: Yeah, inti għandek bżonn dak l-angolu bracket top up.
Allura huwa tip ta 'annoying, iżda inti jidraw lilha malajr.
Jekk ikolli biex jikteb il-kodiċi PHP, I ġeneralment jeħtieġu li tgħid il-programm,
jew tgħid il-interpretu, ħej PHP, hawnhekk jidħol xi kodiċi PHP.
U mbagħad għal miżura tajba, nixtieq qrib dan ma ma 'dan, iżda pjuttost
bil angolu marka biss kwistjoni parentesi, b'tali mod li issa r hawn,
jekk I run dan mill-ġdid, issa I tikseb ir-riżultat mixtieq.
>> Issa ejja do a search żgħir, biss sabiex inti stajt tidher qabel.
Dan huwa tip ta 'annoying li I jiddekorri hello.php ispazju PHP,
għaliex fil-passat I tista 'biss tikteb dot slash
isem tal-programm, li huwa tip ta 'sbieħ.
Huwa tip ta 'esperjenza aħjar għall-utent.
>> Għalhekk jirriżulta li inti tista 'tagħmel dan fil PHP mal-I following--
jista 'juża dan pjuttost cryptic incantation fil-quċċata hawn,
li ġeneralment tissejjaħ shebang, li permezz tagħha din hija simbolu qawwi,
biex ngħidu hekk, din hija bang jew punt exclamation.
U dan issa hija t-triq għal programm fuq sistema Linux tipiċi li
huwa msejjaħ ambjent, jew pakk.
U dan line-- storja twila short-- linja waħda biss
jgħid, ħej kompjuter, isibu l-PHP interpretu għalija fl-ambjent,
jsibuha fil-memorja tiegħek, biex ngħidu hekk.
>> U x'hemm sbieħ issa, huwa li jekk jien jinżlu hawn,
I tista 'tagħmel dot slash bonjour dot PHP, or-- hmm.
Permess miċħud.
Well, inti taf tara aktar ta 'dan bil-problema stabbiliti seba ', jekk inti
ma jkunux diġà, ma permessi.
Jirriżulta li għandi bżonn sabiex tesegwixxi dan il-kmand
imsejħa [? chamod?] għall-bidla mode-- plus x hello.php.
I bżonn [inaudible] dan wieħed addizzjonali pass li javżak-kompjuter tiegħi,
jagħmlu eżekutibbli hello.php.
U issa jaraw dak happens-- dot slash hello.php, hija biss tmur.
I m'għandhomx bżonn li jispeċifikaw l-interpretu aktar.
U jien jista 'jagħmilha ferm prettier, xorta, jekk I semmi mill-ġdid dan il-ħaġa.
Jekk nimxi hello.php għal ftit Hello-- hekk avviż fil-quċċata xellug,
isem tal-programm huwa tabilħaqq issa biss Hello.
Issa I jista 'jagħmilha look like a program C, anki jekk huwa miktub fil PHP--
jew franchement kwalunkwe numru ta 'lingwi oħra.
>> Allura titjib marġinali, ebda differenza funzjonali.
Iżda huwa biss kurżità ftit issa, sabiex inti tista 'tikteb programmi
fi kwalunkwe lingwa, u l-utent ma għandek tkun taf jew kura x'inhuma dawn huma.
Well, ejja nħarsu lejn aktar Eżempju konvinċenti issa
li I bit-tarjola up-quddiem.
U dan jissejjaħ quote.php.
U huwa disponibbli online.
U tinnota li huwa pjuttost short-- imma hija programm kmand linja li l-
ser tħares up prezzijiet istokk għalija, li huwa attwalment għaddejjin
li jkun germane għall-problema stabbiliti sebgħa.
>> Mela ejja ara dak li qed nagħmel.
Fuq nett stajt ltqajna l- miftuħa trade mark in kwistjoni parentesi PHP.
Imbagħad I ħadthom ltqajna din il-linja, fejn I am jeħtieġu fajl imsejjaħ functions.php--
aħna qed tmur biex tara aktar fuq dan ftit,
iżda dan huwa simili C verżjoni ta 'jaqtgħu jinkludu,
fejn inti tixtieq li tmur jinkludu fajl ieħor.
PHP jitlob jirrikjedi, għalkemm għandu wkoll jinkludi funzjoni.
U jirriżulta li function.php hija biss xi ħaġa I kiteb qabel klassi.
I poġġih fl-istess direttorju, minħabba Jien ridt li fattur out xi kodiċi
li aħna tista 'tixtieq tuża xi mkien ieħor.
>> Sadanittant, inti tista 'probabbilment jiddeduċu x'inhu għaddej hawn.
Dan huwa xi ftit differenti minn C-- iżda liema do I jfisser minn tiżgura użu xieraq?
Ittraduċi din teknikament aktar.
Taħt liema ċirkostanzi am I jaqtagħhom-programm, jew joħorġu?
Yeah?
>> UDJENZA: Meta inti ma għandekx żewġ argumenti kmand linja.
>> DAVID Malan: Meta I ma jkollhomx għall-kmand argumenti linja.
U ftakar li wieħed minn dawk argumenti huwa l-isem tal-programm innifsu.
U t-tieni se tkun kelma oħra tip I wara l pront.
Hekk biss bħal C, dan huwa tiegħi mod ta 'verifika,
ma l-utent jikkooperaw u imexxu l-programm kif I maħsub?
Issa, hemm xi ħaġa differenti ftit
ma C-- ewwel nett irridu jkollhom dan is-sinjal dollaru,
u x'ma jaħdimx dollaru sinjal jindika fil-PHP?
Just varjabbli.
Li all-- biss varjabbli segwit minn tkun xi tkun tixtieq li attwalment hija sejħa.
Avviż hemm xi ħaġa nieqsa mill-programm PHP tiegħi,
biss bhalu kien nieqes aħħar ġimgħa, versus C, li huwa dak?
>> A tipi, iżda wkoll xi ħaġa oħra.
M'hemm l-ebda ħaġa function-- funzjoni prinċipali.
M'hemm l-ebda funzjoni prinċipali.
Inti biss tibda tikteb kodiċi tiegħek mingħajr ma jkollhom
għalfejn tinkwieta dwar pjuttost arbitrarja konvenzjoni ta 'tismija xi nuqqas
funzjoni prinċipali.
Allura arg C huwa biss verament varjabbli globali
li l-interpretu jagħmel disponibbli għalija.
Issa, dan huwa interessanti.
Sabiex tfittex up Jittieħed.
Istokk sinjal dollaru huwa fuq il- xellug, li l-varjabbli tiegħi.
Min-naħa tal-lemin, apparentement hemm
funzjoni fl PHP imsejħa lookup li Jien tgħaddi linja ta 'kmand tiegħi aħħar
argument to-- ikun x'ikun l-kelma hija.
U aħna ser tara kif dan xogħlijiet fil-mument.
>> U allura finalment jien rappurtar tal-prezz.
Jien stampar ta wieħed sehem tal tali u tali.
U ftakar, dan huwa l- mod PHP-- mod li PHP--
fejn inti ma għandekx tagħmel is-sinjal dollaru S aktar.
Tista 'biss tuża ċineg kaboċċi u plug f'xi varjabbli.
Inti ma għandekx għalfejn tinkwieta dwar użu printf bl-istess mod.
>> U bħala twarrib, meta inti tpoġġi varjabbli ġewwa tal kwotazzjonijiet doppja bħal dan,
qed tuża teknika fancy imsejħa interpolazzjoni varjabbli.
Dan ifisser biss plagg l-varjabbli fil hawn.
U bħala twarrib, xi wħud minnkom li ġejjin minn sfondi programmazzjoni oħra,
inti ma tistax tuża kwotazzjonijiet uniku madwar kordi biex jagħmlu dan.
Għandek tuża kwotazzjonijiet doppja għall interpolazzjoni varjabbli li jaħdmu.
Inkella inti ser litteralment tara dawk braces kaboċċi.
>> Allura fl-aħħar, ejja imorru quddiem u run dan.
Let me jagħmlu terminal tiegħi ftit akbar.
Let me imorru quddiem u run ġewwa ta 'direttorju kwotazzjoni tiegħi.
[? CDsource?] [? AM?] [? quote?] quote PHP dot PHP,
u jien ser tfittex xi ħaġa bħal GOOG, li hija simbolu ticker tagħha,
u sehem wieħed mill-isem ġdid tagħha, Alfabett Inc, l-ispiża $ 717, mil-lum.
Dritt kollox, jekk irridu li run dan mill-ġdid, kulħadd
jkollhom ticker oħra b'responsabbiltà li tixtieq tfittex up?
>> Microsoft naħseb huwa dan wieħed, MSFT-- $ 53.
Naħseb Yahoo huwa forsi dak.
U Facebook huwa dak.
>> Allura dak li huwa dan il-programm tagħmel?
Il-maġija jidher li jkun minsuġ f'dik il-funzjoni lookup.
Mela ejja tagħti ħarsa.
>> Jirriżulta li ma jaqax ma PHP, huwa fil functions.php.
U aħna mhux se jmorru permezz dan f'dettall kbir,
iżda tinnota l-kelma operattiva hawnhekk hija li fuq il-linja sitta mill functions.php--
I litteralment say funzjoni.
I jispeċifika l-isem tal-funzjoni tiegħi.
I imbagħad tispeċifika kwalunkwe argumenti, jew il-parametri,
Irrid dik il-funzjoni li take-- ebda tipi.
U mbagħad I timplimentaha.
>> U jien ser mewġa naħa tiegħi fil-implimentazzjoni,
peress li huwa dritt pjuttost avvanzat issa, imma aħna ser tara mill-ġdid fil-fatt
fil-ġimgħa fil-problema stabbiliti sebgħa.
Imma nista 'tnaddaf dan up, wisq.
I wkoll inklużi fil kodiċi tal-lum verżjoni
tal kwotazzjoni, li m'għandux fajl dot PHP.
Minħabba dak li huwa preżumibbilment fl- quċċata tal-programm imsejjaħ biss jikkwotaw?
Li l-hekk imsejħa shebang-- l incantation pjuttost cryptic
li tgħid ssib PHP u mbagħad run fuq kodiċi tiegħi hawn.
>> Kull dritt, hekk li ġġib ahna fejn aħna jitħalla 'off
aħħar time-- għalkemm xi eżempji aktar avvanzati.
Kwalunkwe mistoqsijiet s'issa dwar PHP jew dak li aħna qed tagħmel?
No-- id-dritt.
Yeah?
>> UDJENZA: Ġewwa l- Fajls HTML, do you--
[? do you?] [? biss sejħa hija?] a [inaudible] file PHP?
DAVID Malan: Tajba kwistjoni.
F'kuntest web, li aħna qed litteralment dwar biex jgħaddi għal,
inti ma jużawx l-hekk imsejħa shebang fil-quċċata,
minħabba li l-server-- web spiss programm imsejjaħ Apache jew Microsoft
IIS, Internet Information Server, jew kwalunkwe numru ta 'software ieħor web server,
jaf li meta jara fajl dot PHP, li
għandhom imexxu l-interpretu fuqha.
Ma nħarsu lejn l-ewwel linja.
Allura dan l-ewwel trick linja huwa biss meta int
miktub linja ta 'kmand programs-- li aħna mhux se tagħmel super spiss,
imma hija mod tagħna ta 'bridging Eżempji Ċ tagħna biex issa PHP tagħna.
>> Mela ejja tabilħaqq titnaqqas id-dinja mid-dinja linja ta 'kmand għall-web
billi tagħmel dan li ġej.
Let me imorru quddiem u tiġbed minn hawn għal ftit mument.
Mela jekk ikollna web server, jew pjuttost jekk ikollna laptop tiegħi hawn fuq,
li jiena ser tiġbed bħal dan.
U hawn aħna għandna l- internet f'xi forma.
U mbagħad minn hawn, aħna għandna server ta 'building--
dan huwa kif l-internet works-- u fil hawn
huwa server ma 'xi dwal forsi.
X'inhu attwalment għaddejjin bejn dawn iż-żewġ konnessjonijiet?
>> Allura f'dan il-bini huwa web server.
Li jinsab biss kompjuter li l-ġirja xi operattiva
system-- forsi l-softwer b'xejn imsejjaħ Apache, li CS50 IDE qed taħdem.
Allura inti tista 'attwalment think ta 'dan il-bini
bħala l-bini li CSt0 IDE huwa maħżun.
Li meta lilkom kollha jkollhom kontijiet, fejn lilkom kollha
jkollhom web server tiegħek stess tmexxija, lilkom kollha
jkollhom URLs unika tiegħek stess, kif bdejna biex jiddiskutu,
u tkun taf tara aktar fil P. stabbiliti sitt.
>> Hawn laptop tiegħi x'imkien inkella fuq l-internet.
U hekk meta I żjara URL li tappartjeni lili, li t-traffiku internet huwa għaddej
trasferiti għas-server, il-server tirċievi HTTP request--
bħal nikseb index.html u huwa risposta għal dik il-paġna web.
Allura dak l-paradigma ġenerali.
Billi kollox up sa issa lum, kollox
kien qed jiġri biss fil- konfini ta 'dan il-bini.
I kienet qed tuża laptop tiegħi, iżda I kienu konnessi mat CS50 IDE,
sabiex kollha ta 'dawk il-programmi I kien għaddej kien ġewwa ta 'dak is-server, hija stess.
>> Imma issa, ejja nibdew użu mill-ġdid PHP jiktbu xi programmi attwali li
huma servuti minn web server.
U biex tagħmel dan, jien se jmorru fi mazz sħiħ ta 'eżempji
li jintroduċu din l-idea hawnhekk.
Allura dan huwa tip ta 'mod fancy ta tiddeskrivi paradigma programmazzjoni.
>> U fil-fatt, kif inti ħruġ CS50 jew jaħdmu fuq proġetti finali,
jew jieħu xi isegwu fuq il-klassi, inti ser tibda
biex tara li l-world-- speċjalment wara li kibret
mal-lingwi bħall C li huma level-- super baxxi
tirrealizza li hemm aħjar modi ta 'kitba software.
Hemm ċerti mudelli inti tista 'ssegwi,
ċerti mezzi ta 'organizzazzjoni fajls tiegħek u modi ta 'ismijiet funzjonijiet tiegħek,
sabiex storja twila fil-qosor, id-dinja għandha toħroġ
bil-mazz sħiħ ta 'akronimi u ismijiet għall-modi ta 'programmazzjoni.
Dawn huma biss tekniki inti tista 'tuża.
>> U wieħed minnhom huwa msejjaħ MVC, għall-Mudell View-Kontrollur.
U dan huwa biss, għall issa, l kkumplikati wisq
mod ta 'tgħid kif għandek jistabbilixxu websajt bbażata fuq PHP, fil-każ tagħna.
Kif inti torganizza fajls tiegħek, kif taħseb li torganizza loġika tiegħek,
b'mod li jagħmilha aktar faċli biex jiktbu websajts aktar ikkumplikati?
U fil-fatt, aħna ser malajr naslu s'hemm bil-p sett sebgħa.
>> Allura fid-dinja ta 'MVC, int ser biex tara li kodiċi tagħna tista ġeneralment
ikunu kkaratterizzati bħala jew kodiċi mudell, jew kodiċi kontrollur, jew kodiċi fehma.
U jien ser oversimplify bħala follows--
il-kontrollur huwa l- imħuħ tal-programm tiegħek,
huwa fejn kollha ta 'l- loġika interessanti jiġri.
Hekk kollox aħna kont qed miktub s'issa fil-klassi,
huwa tip simili kontrollur code-- huwa kontroll
programm tiegħek, loops tiegħek, tiegħek kundizzjonijiet, il-funzjonijiet tiegħek
u l-varjabbli u dak kollu.
>> Views, issa, ser tkun ftit aktar ovvji fid-dinja tal-web.
Veduta hija l-estetika tal-website tiegħek.
Huwa dak l-utent sees-- l-immaġini, it-tabelli HTML, l-tags HTML, u kull
ta 'dak, kollha ta' l-estetika fluffy għalf li ma tkunx dik diffiċli li tikteb,
imma huwa biss dak li qed jiġġeneraw, huwa tal-opinjoni hekk imsejħa, l-estetika.
U l-mudell, finalment, huwa se li jkun stuff-- database li
aħna ser tibda għadis fis kollha Iktar ma din ir-Erbgħa.
Allura kontrollur huwa l-loġika, fehma hija l-għalf estetika,
u l-mudell se jkun fejn aħna jaħżen id-data attwali tagħna.
>> Mela ejja nħarsu lejn dan aktar konkret bl-eżempju li ġej.
Jien se jmorru fil-direttorju tiegħi hawn ta 'sors ta' llum code-- kollha
huwa disponibbli online.
U jien se jmorru fil-verżjoni żero.
U hawn is-- ejja sejħa hija l- Verżjoni żero ta 'website CS50 s.
Hemm Ma tantx hawn fil-livelli kollha.
Huwa page web sempliċi ħafna li l- probabbilment jużaw dak HTML tags-- biss
raden minn eżempji mill-passat?
>> Dak X'inhu?
H1-- probabbilment għal dik kbar grassa titolu, li logo top up, CS50.
U x'iktar huwa waqt il-loghob?
Yeah?
UDJENZA: lista unordered.
DAVID Malan: list-- unordered hekk il Tag UL u forsi ftit tags LI.
U jekk inti ma tiftakarx dawn, onestament ma jimpurtax.
Dawn huma tip fluffy ta dettalji tal-implimentazzjoni ta 'HTML
li inti malajr tfittex up u int lura fuq tiegħek mod.
Aħna ser tiffoka aktar fuq l-ipprogrammar ideat li huma l-biċċiet juicier.
>> Mela ejja ħu quick tħares lejn il-HTML-- u tabilħaqq
jekk I jiftħu s-sors fehma hawn, Yup, dan huwa eżattament x'inhu għaddej hawn.
Hemm xi tag UL.
Nested ġewwa ta 'dan huwa li tags LI.
U mbagħad I mislufa il-URL tal-sillabu attwali hawnhekk.
>> U mbagħad fil- lectures.php hija apparentement
paġna oħra dinamiku iġġenerat li għaddej biex ikollhom, ejja see-- ah,
l-ewwel ġimgħatejn ta 'lecture.
Allura ġimgħa żero u ġimgħa, ejja ħarsa lejn this-- jekk nara sors paġna,
wkoll super sempliċi.
Dawn qed iwasslu għal żewġ paġni imsejħa week0.php, u week1.php.
Għalhekk tikkunsidra issa dak li qed jiġri.
>> Meta I ikklikkja fuq week0.php, laptop tiegħi qed tagħmel talba għal week0.php.
Il-web server, a.k.a., CS50 IDE, qed tirċievi dak il-pakkett virtwali.
Huwa jara messaġġ bħal, jiksbu week0.php.
Huwa mbagħad interpretazzjoni tal-fajl, top għal isfel, xellug għal right---fajl
imsejħa week0.php-- u bżieq r-riżultati.
Allura ġewwa ta 'dan il-fajl, week0.php, għandu jkun
il kontrollur tal-loġika li qed jiġġenera dan HTML, u aħna ser dalwaqt tara li.
>> Iżda għal issa, let me ikklikkja fuq żero ġimgħa, u issa għandna l-Erbgħa u l-Ġimgħa,
u issa għandna l-pjastri bil-mod minn żero ġimgħa.
U inti tista 'recall dan mill-mod lura meta.
Allura li kollox din il-websajt qed tagħmel.
>> Mela ejja tikkunsidra kif dan qed jagħmel dan.
Jien se jmorru lura fil- kodiċi tas-sors hawn, fil CS50 IDE,
u jien ser jiftħu index.php.
Fil-quċċata ta 'dan il-fajl huwa mazz ta 'kummenti.
U allura fin-nofs ta 'dan il-fajl, it jirriżulta, l-ebda kodiċi PHP tkun xi tkun.
Għaliex jekk inti ma għandekx xi waħda minn dawn parentesi miftuħa tags kwistjoni mark PHP,
int ħieles li biss jitqiegħed HTML.
>> Għaliex dak l-PHP interpretu suppost tagħmel,
huwa meta jgħid dan file-- fuq għal isfel, xellug għal right--
dan tinterpreta biss kodiċi jara bejn dawk parentesi angolu kwistjoni mark.
U kull ħaġa oħra li ma jirrikonoxxu bħala PHP, hija biss spits out.
U HTML Huwa fost l-għalf se biss bżiq out.
>> Allura dan il-fajl jista 'jkollu ġie msejjaħ index.html,
imma jien tismija kollox dot PHP bħala pass.
Lectures.php-- simili underwhelming, huwa biss xi HTML.
Week0.php, b'mod simili biss ftit HTML.
>> Imma issa ejja tpoġġi fuq il- hat inġinerija proverbial,
u jikkunsidraw kif nistgħu ntejbu dan.
Mhuwiex diffiċli li tagħmel dan, imma jien xorta tal devoluti fi kopja u paste.
U fil-fatt, jekk nagħmel ġimgħatejn, inti jafu dak li jien probabbilment se jagħmlu?
Jien se jmorru biex week1.php, jien ser jenfasizzaw kollox.
Jien ser kopja, paste fis-fajl ġdid imsejjaħ week2.php,
tweak xi URLs, u tkun fit-triq tiegħi.
>> Allura ibbażati fuq dak li konna jidher fil C diġà,
dan ma jħossx dritt, wieħed jittama.
Kopja, paste rarament is-soluzzjoni dritt.
Allura x'nistgħu nibdew tagħmel biex ittejjeb din?
Fejn huma l-opportunitajiet għal disinn aħjar?
>> Saż-żmien I nikseb biex tmien ġimgħa, li għaddej
biex ikunu verament annoying jekk I trid tibdel
il-font ta 'kull wieħed mill- paġni tiegħi, jew jekk nixtieq
li jibdlu l-istruttura tal-format.
Għalhekk, fejn l-opportunita għal disinn aħjar?
Well, ejja jikkunsidraw x'hemm maqsuma bejn kollha ta 'dawn il-fajls.
>> Hawn ġimgħa, hawnhekk ġimgħa żero, hawn lectures.php,
hawn index.php-- dak li huwa l-istess u dak li huwa differenti, madwar jitkellem,
f'kull wieħed minn dawn il-fajls?
Yeah?
>> UDJENZA: [inaudible]
DAVID Malan: OK, tajba.
Allura hemm mudell, żgur, fejn kull darba I jagħżlu lecture I,
Inkun jiġġeneraw paġna li tħares simili ħafna.
U hekk forsi I tista 'lieva il-fatt li tassew,
aħna deliberatament numerikament indiċjati lectures-- tagħna
jekk I tista 'tpoġġi aktar kliem fil-tweġiba tiegħek.
U dak huwa l-unika ħaġa, tassew, li l-jinbidlu ġimgħa one--
u let me iscroll hekk huwa bejn wieħed u ieħor fl-istess place--
hekk hawn huwa żero ġimgħa, bejn wieħed u ieħor fil-quċċata.
Hawnhekk huwa wieħed ġimgħa, Ġimgħa żero, ġimgħa, zero ġimgħa.
OK, litteralment jekk taf ebda programm tkun xi tkun,
issa dan huwa biss bħal mudell tqabbil logħba.
Allura x'hemm differenti?
Yeah?
>> UDJENZA: [inaudible]
DAVID Malan: Tajba, hekk it-titolu qed tinbidel, dejjem hekk ftit.
Zero ikun għaddej, naturalment, għal wieħed.
L-istess ħaġa jiġri fil-lametta H1.
U aħna ma pjuttost jarawha bħala faċilment, minħabba li l-URLs huma ftit twil.
Iżda dawk URLs qed jinbidlu xi ftit.
>> Imma dak li mhux qed jinbidlu jiġifieri, DARE I jgħidu, ħafna mill-kontenut tal-page--
il-lametta HTML l-istess, il-kap hija l-istess, it-titolu huwa kważi l-istess,
il-korp huwa l-istess, u kważi kollox
huwa l-istess ħlief għall dawk tweaks ftit.
Allura kif nistgħu tmur dwar factoring xi wħud minn dan out?
>> Well let me tipproponi eżattament li fil-verżjoni li jmiss.
Allura hawnhekk fil-verżjoni waħda, għandi l-eżatt istess files, flimkien ma 'koppja ta' oħrajn.
Hawn index.php-- u anki jekk inti stajt qatt dehru PHP qabel,
dak li jien probabbilment jagħmlu biex issolvi din problem-- ibbażati fuq dak li tara hawn?
Yeah, huwa li impenn żgħira?
Nru?
Iva, mur fuq.
>> UDJENZA: [inaudible]
>> DAVID Malan: Yep.
>> UDJENZA: [inaudible]
>> DAVID Malan: I ħtieġa li inti jitkellmu biss louder ftit.
>> UDJENZA: [inaudible]
DAVID Malan: OK, tajba.
UI think-- kien diffiċli biex tisma you-- imma I
jaħsbu dak li qed jkollna lejn huwa li l-tags li kienu komuni top up,
u l-tags li kienu komuni fuq il- qiegħ, issa ġew fatturati out,
jew relegati liema fajls?
Header.php u footer.php-- u aħna qed tmur
biex tagħmel xi tweaks biex indirizzat it-tħassib inti biss
tħassib dwar il-bdil numri, għal eżempju, jekk I smajt inti korrett.
>> Iżda dan jidher li jkun l-gist ta 'dan.
Jekk kien hemm ammont kbir ta ' redundancy fil-quċċata tal-paġna,
u ammont kbir ta ' redundancy fil-qiegħ,
ejja litteralment biss jenfasizzaw u maqtugħa li l-kontenut out,
poġġih fil-file-- separata bħad l-idea ta 'CSS, fejn aħna f'fatturi out
estetika simili ħafna, tpoġġi dan fil-fajl separat dot PHP,
uża l-bżonn mechanism-- li huwa simili C include-- qawwija li
huwa essenzjalment simili qal tmur grab-kontenut tal header.php,
u kopja u paste lilhom hawnhekk.
>> Imma dak li dan ifisser huwa li issa index.php, għandi dawn iż-żewġ linji.
Fil lectures.php, I wkoll għandhom dawn iż-żewġ linji.
Fil week0.php, I wkoll għandhom dawn iż-żewġ linji.
>> Allura issa, jekk I trid tibdel it-titolu ta 'dak kollu paġni tiegħi,
jew I tixtieq li tibdel il istruttura fundamentali,
I tista 'bidla issa biss f'post wieħed, jew tnejn header places-- u footer,
rispettivament.
Issa l-kodiċi tal-bidu li tħares ftit aktar cryptic, right?
Imma jekk inti taħseb dwar dak il-paġna huwa doing-- jekk jien titlob week0.php,
bħad dwar it-tfassil fuq here-- meta week0.php hija mitluba,
xi tfisser?
>> Litteralment, dan il-fajl huwa mitlub mill-browser.
Il-web server-- a.k.a.
CS50 ID-- grabs dan fajl, week0.php, u jaqra
huwa fuq għal isfel, xellug għal-lemin.
Fuq linja waħda, immedjatament jiltaqa bracket miftuħa trade mark in kwistjoni PHP, jeħtieġu
header dot PHP, u għalhekk dak l-interpretu PHP
does-- li l-mibnija fil-web server, għaliex aħna preconfigured
għal you-- li tmur awtomatikament fis header.php, kopji l-kontenut,
pejsts lilhom hawnhekk.
>> Imma mbagħad il-laqgħat interpreti kwistjoni marka bracket-qrib,
għalhekk kollu jsir ħsieb.
Issa hija biss bl-addoċċ spits l-żewġ linji permezz sebgħa,
għaliex huwa biss HTML prima.
Gets għal-linja tmienja, u ma li istess magic again-- ftuħ tal-fajl,
ħtif-kontenut, u billi teħtieġ jew pasta minnhom
dritt allura jew hemmhekk.
>> Imma I biss allużjoni għal bug.
Dan huwa pass parzjali lura, għaliex jekk inħarsu fil header.php,
Stajt tip ta tnaqqas kantuniera.
What karatteristika ma I jieqfu sabiex biex jiksbu dan id-disinn aħjar dibattibbli?
Yeah?
UDJENZA: [inaudible]
DAVID Malan: Yeah, I tip ta tnaqqas kantuniera nontrivial.
Inti enfasizzat li dak li kien qed jinbidlu kien it-titolu, in-numru fit-titolu,
u n-numru fil-H1.
Allura soluzzjoni tiegħi kien, OK, ejja biss semmi mill-ġdid il-paġna,
u mhux tittratta dik problema tkun xi tkun.
Allura dak parzjali pass lura għall-żgur.
>> Imma dak li hu notevoli hawn huwa li dak I għamlu
huwa fatturati inkella l-għalf komuni.
U fl footer.php, avviż I f'fatturi kollha ta 'dan, għalkemm inqas,
Jittieħed komuni.
So I bżonn li b'xi mod issa tkun tista ' tieħu pass ieħor 'il quddiem, u tiffissa
li l-kwistjonijiet titolu.
Mela ejja tagħmel dan.
>> Let me go fis-tieni verżjoni tiegħi hawn, li, għal darb'oħra, għandu l-istess fajls
ħlief għal wieħed żieda ġdida.
U huwa ftit aktar verbose, imma ejja ara jekk irridu
tista tease apparti x'inhu għaddej hawn.
Allura minflok jeħtieġu header.php, u footer.php,
I jidhru li jeħtieġu wieħed biss file-- imsejħa, naturalment, helpers.php.
U let me jistipulaw issa, x'hemm ġewwa tal helpers.php
huwa biss mazz ta 'funzjonijiet li I kiteb, bħad qabel.
Imma I sejħitilha helpers.php.
>> Issa apparentement, fil linja tlieta u 10, jien
sejħa żewġ functions-- tirrendi header, footer jirrendi.
Dawk ma jaqgħux bl PHP, I kiteb dawk myself.
U jien jpoġġuhom fil helpers.php.
>> Issa, konna biss raw dan sintassi darba, u kien qasir super.
Iżda din hija apparentement argument li tirrendi header, il-funzjoni.
Għaliex inkun naf li?
Well Hawn paren qrib, Hawn paren miftuħ.
U ovvjament, bħal fil C, xejn bejn dawk parentesi
hija input-- jew argument għall-funzjoni.
>> X'inhu t-tip tad-data ta 'dan l-argument, ibbażati fuq dak li stajt enfasizzat?
What do dawk parenteżi kwadri jindikaw, ibbażata fuq ġimgħa li għaddiet?
Yeah, huwa ta 'array-- speċifikament firxa assoċjattiva.
U dan sintassi ċertament huwa funky ftit,
iżda dan huwa biss tgħaddi f'wieħed par valur essenzjali.
Il-muftieħ huwa, kwotazzjoni unquote titolu, u il-valur huwa CS50.
>> Jekk aħna kienu għamlu dan fis-C, jista 'minflok
tħares aktar bħal dan, biss quote unquote CS50--
jew fil-fatt ikun kaboċċi ċingi, jew xi ħaġa bħal dik fis-C,
fejn il-muftieħ huwa żero, u il-valur huwa CS50.
Iżda għal darb'oħra, fil-PHP, anki jekk il- sintassi hija, għal darb'oħra, ftit stramb,
li jippermettilek li jgħaddu kliem minflok ta 'numri
għal ċwievet jassoċjaw mal-valuri.
>> Allura dak li jfisser dan kollu jfisser?
Jekk immur fis helpers.php, ejja nħarsu lejn din il-funzjoni.
renderHeader.php, aktar renderHeader hija l-funzjoni tiegħi,
u naf li minħabba nara l-keyword funzjoni hawn.
Dan huwa ġdid mill C-- it apparentament jieħu argument imsejħa data--
imma I setgħet sejjaħ dan xejn, imma jien hija imsejħa data,
biss li jkun clean-- ftit u ħu raden, speċjalment
jekk inti ħadthom programmati xi oħra lingwa f'livell ogħla qabel, xi ħaġa
hawn fuq C, kunċettwalment.
>> Xi jfisser bracket miftuħa ugwali bracket kwadru probabbilment jfisser?
Jew dak li jista jfisser?
Imxejna ma bbenefikawx dan C. Yeah?
>> Firxa vojta.
Speċifikament, dan ifisser li jekk l-utent ma sejħa renderHeader
ma 'argument, jien għadhom għaddejjin li jkollhom argument imsejħa data,
iżda valur ta 'default tagħha huwa se tkun firxa vojta.
Allura huwa biss konvenjenza sbieħ.
I ma jkollhom Yell fil-utent, jew jgħidu inti użati funzjoni tiegħi ħażin.
I tista 'biss jagħti lill-utent ta' default valur, jekk jien ma partikolarment kura.
Issa din il-funzjoni, jien ser mewġa idejn tiegħi fuq.
Iżda din il-funzjoni estratt tippermetti ahna jgħaddu dawn il-varjabbli fid-dejta
fil header.php kif ġej.
U dan huwa l-aħħar biċċa, I think, ta 'sintassi funky.
Hawnhekk huwa verżjoni ġdida tiegħi tal header.php-- dan
użati, jiġifieri, litteralment, open parentesi titolu CS50, u li ma kien.
U istess ħaġa għall-H1.
>> Issa jidher jgħid xi ħaġa pretty funky.
U let me jissimplifika dan għal mument kif ġej.
Dan huwa dak li stajt inbidlet titolu tiegħi li jkun.
Madankollu, huwa jkollna ftit ikrah li parentesi kontinwament miftuħa ma PHP,
u mbagħad jużaw l-funzjoni tal-istampar.
Jirriżulta li PHP għandha shorthand notazzjoni għal dan, li huwa biss
sinjal ugwali, li huwa teknikament funzjoni msejħa eku minflok istampar,
imma hija l-istess ħaġa, effettiv.
>> Li għadha jistenna aħjar.
Huwa biss sintattika zokkor, jekk inti se,
li jagħmel kodiċi tiegħi tfittex ftit aħjar.
Iżda jirriżulta, u Ser naraw dan jerġa
qabel fit-tul, għandna biex sejħa dan annoyingly funzjoni twil imsejjaħ
Chars speċjali HTML fil PHP, għaliex jirriżulta
hemm ċerti inputs li l-utent jista 'jagħti us,
jew li l-utenti jista 'jagħti us, li ser jiksru sit tagħna.
Iżda aħna ser tara li jmiss ġimgħa ma JavaScript.
Iżda għal issa, biss jafu li dan il-fajl, headers.php, sempliċiment
jieħu t-titolu li I għadda fi, dan jagħmel
ċert li huwa sikur biex jiġi injettat ġo web paġna, u spits out bħala titolu tiegħi
u bħala H1 tiegħi.
Mela jekk jien jmorru fil din il-verżjoni issa, avviż li lectures għandha t-titolu tiegħu lura,
zero ġimgħa għandha titolu tiegħu lura, u tabilħaqq, il-HTML jien jiġġeneraw
huwa identiku għal dak ewwel verżjoni tiegħi was-- ħlief għall whitespace tiegħi,
għaliex stajt bdew ifformattjar kodiċi tiegħi ftit differenti.
Imma stajt iġġenerat kollha il-kodiċi I care about.
So let me nieqaf għal ftit mument u ara
jekk ikun hemm xi mistoqsijiet jew konfużjoni Stajt maħluqa.
Kull dritt, so ejja twist ftit diffiċli hawn
biex tara jekk hemm xi opportunità għal titjib.
Helpers.php kellu wkoll dan funzjoni, imsejħa renderFooter.
U x'hemm notevoli dwar renderHeader, u renderFooter?
U għal darb'oħra, għall-finijiet tal-lum, taf li l-funzjoni estratt huwa biss
tiegħi mod ta 'argumenti li tgħaddi fis header.php u footer.php.
>> Jiddispjacini?
>> UDJENZA: [inaudible]
DAVID Malan: Yeah, I biss biddel il-bżonn linja.
So litteralment, stajt impenjata il sin tal ikkupjar u pasta, għal darb'oħra.
Mhuwiex numru kbir tal-linji, iżda jaqgħu on--
jekk jien ikkupjar u pasta kollox biss għall-bidla ftit wieħed kelma,
u l-kelma ftit wieħed li Alan punti out jiġifieri footer hawn, versus header hawn.
Inkella, kollox huwa identiku, ħlief għall-
naturalment, ismijiet tal-funzjoni tal.
Allura dak li nistgħu nagħmlu aħjar?
>> Well let me tiftaħ din il-verżjoni hawn, fejn fil helpers.php,
għaliex ma I biss jiksbu ftit aktar intelliġenti dwar dan?
Ikteb ftit aktar kumplikata kodiċi, iżda sejħa hija tirrendi?
Allura dak li jiena fundamentalment mibdula?
>> Huwa jieħu argument now-- żewġ argumenti, data xorta.
U allura x'inhu l-ewwel isem probabilment qed jintużaw għal,
ibbażati fuq dak li qed taqra hawn?
Anke jekk xi wħud mill-sintassi għadu ġdid.
X'inhu dollaru template sinjal?
>> Jiddispjacini?
>> UDJENZA: Header jew Footer.
>> DAVID Malan: Header jew Footer.
So apparentement, I iddeċieda li jekk l-unika ħaġa li l-jinbidlu
huwa dak template trid I li print-- u mill template
I tfisser li dan huwa blueprint għall kodiċi li nixtieq li output,
imma nixtieq li plug f'xi values-- hekk jekk huwa biss header
jew footer, għaliex ma I parameterize li u jitolbu l-sinjal argument dollaru
template?
U allura dan sintassi funky tippermetti me biex tinħoloq triq fil-varjabbli hawn.
>> Allura triq sinjal dollaru hija varjabbli.
Xi jfisser dan sintassi tagħmel, jekk int familjari?
Yeah?
>> UDJENZA: [inaudible]
DAVID Malan: Eżattament.
Jekk template hija, kwotazzjoni unquote, header, jew jekk template hija,
kwotazzjoni unquote, footer, dik il-linja hemm li stajt enfasizzat, linja tmienja,
huwa sempliċement jieħdu dak l-isem, bħal header, u concatenating bl dot PHP.
Allura aħna ma kellhiex dan l-operatur fil C. Dan l-operatur dot hija
ħaġa aqwa fil PHP-- jekk int familjari ma 'JavaScript jew Java,
inti tista 'tuża l-plus sinjal li tagħmel konkatenazzjoni.
>> Fil C, huwa uġigħ fl-neck-- u jien so sorry, fil-p-sett sitta,
int ser ikollhom jagħmlu this-- huwa uġigħ fl-għonq
li concatenate kordi.
Għaliex?
Ukoll, għaliex jekk inti ħadthom ltqajna string li l dan twil,
u string ieħor li l-dan twil, inti ma tistax biss plug flimkien.
What do you minflok tagħmel fis-C?
Yeah?
>> UDJENZA: [inaudible]
>> DAVID Malan: Int għandek malloc memorja, jew l-użu firxa fuq il-munzell.
U inti attwalment ikollhom tagħmel dik firxa kbir biżżejjed
biex joqgħodu f'din plus dan, flimkien mal-backslash żero.
Imbagħad concatenate flimkien bl-użu ħawwad qattus jew manwalment bi għas loop,
jew kwalunkwe numru ta 'tekniki.
U aħna nuruk koppja fil-p sett sitta.
>> Huwa uġigħ fl-għonq.
U dan huwa verament dak li jfisser I dwar dan versus this-- bħal C versus PHP.
Inti biss tikseb tant aktar funzjonalità b'xejn,
sabiex inti tista 'tiffoka, idealment, fuq il-gost
parti mill kodifikazzjoni, l- proġett inti tixtieq li ssolvi,
aktar milli d-dettalji livell baxx.
>> Allura dan biss jiġġenera header.php jew footer.php bbażata fuq liema waħda I call.
U fil-fatt jekk immur fis index.php, avviż
dak kollu li changed-- Minflok sejħa tirrendi header jew tirrendi footer,
Jien ssejjaħ jirrendu, segwita mill- isem tal-mudell li nixtieq li tagħmel.
U tkun taf tara dan, wisq, fl problema sett sebgħa,
li biha aħna jippermetti li inti tuża l- istess funzjoni li tagħmel għenieqed
u għenieqed ta 'paġni web differenti.
>> Allura minflok nitkellem wisq ħafna aktar fuq dawk details--
li tkun taf tara mill-ġdid fil sett problema seven-- ejja nħarsu
fil issa-bidu ta 'soluzzjoni għal problema aktar interessanti.
S'issa, xejn konna isir jkollu data ffrankata.
Fil-fatt, l-uniku ħin aħna stajt qatt salvati xi ħaġa li aħna ghamilt f'din il-klassi
huwa meta kellna demo sempliċi ħafna awhile lura, fejn użajna fajl IO fl C,
u I think I ittajpjat fl-isem tiegħi, u Isem Hannah, u l-isem Maria,
jew forsi isem Andy, u allura aħna ffranka file-- CSV
comma separati valuri fajl.
>> U aħna użati fopen-- I think aħna użati fprintf bħala I recall,
u aħna salvati fajl.
Issa, dan huwa l-aktar sempliċi forma ta 'database.
Jekk inti tixtieq li tagħmel website għall- Programm Frosh IMs, fejn freshmen
jistgħu jirreġistraw għal sport, inti idealment trid tagħmel xi ħaġa ma 'dik id-data.
Last week, għamilna xejn bl-data-- aħna biss qal,
inti huma rreġistrati, mhux verament.
Jew forsi I emailed l Procter, u li ma kien.
>> Iżda jkun sbieħ jekk I jistgħu tagħti l Procter fajl CSV,
bħal fajl Excel.
Jew aħjar għadhom, ikun Ikun sbieħ jekk I jistgħu
tpoġġi ismijiet dawk l-utenti u dorm ismijiet u kollha ta 'dak
f 'database li biss jgħix fuq għal dejjem,
sal I jagħżlu li tħassar id-dejta.
A database li tippermetti me għall-mistoqsija informazzjoni.
U fil-fatt, dan huwa dak database hu.
>> Aħna jintroduċu llum, u ġimgħa d-dieħla, wisq, teknoloġija
imsejħa SQL-- a Mistoqsija Strutturat Lingwa, li huwa lingwa oħra.
Huwa essenzjalment programmazzjoni lingwa, iżda għal databases.
U database għal issa, ftit jaħsbu bħala verżjoni super fancy
Microsoft Excel, jew Google Spreadsheets, jew Numri Apple.
Huwa ġeneralment programm li tippermetti int taħżen mazz sħiħ ta 'data
f'ringieli u kolonni, pjuttost bħal inti tista fl-Excel.
>> Imma x'hemm sbieħ, speċjalment jekk aħna mhux qed super familjari mal Excel,
dak SQL tippermetti li tagħmel huwa query dan informazzjoni billi tikteb linji ta 'kodiċi
fejn inti tista ', anki jekk tiegħek database għandha miljun ringieli fiha,
inti tista 'ssib affarijiet super fast.
Fil-fatt, Excel hija partikolarment ħażin fil-livelli settijiet ta 'data kbar.
U fil-fatt, sa ftit snin ilu, irriżultaw
Excel jippermetti biss int taħżen sa 65,535 ringieli ta 'data-- li
ħsejjes simili ħafna, iżda fl- time I kien student grad,
u I remember waqgħat fuq dan għaliex I kien qed jiġġenera
CSV fajls għar-riċerka tiegħi u I riedu jiġu analizzati malajr
billi biss ftuħ fl-Excel.
Of course, kompjuter tiegħi biss ġġarraf, minħabba I kellhom aktar minn 65,000 ringieli.
>> Iżda fejn ma l-65535 ġejjin minn?
Dak kien isir Microsoft, preżumibbilment?
Jekk int tajba mal-poteri tiegħek ta 'tnejn?
Yeah, dawn kienu jużaw 16-bit valur għall jirrappreżentaw in-numru ringiela.
U tnejn sa 16 huwa 65,536-- wieħed nieqes, għaliex jekk inti
indiċi żero ifisser li kien l- aktar numru ta 'ringieli I jista' jkollhom.
U kien biss deċiżjoni disinn.
Mill-iffrankar 16 bits, huma limitati me li 16,000 ringieli, minflok 4 biljun,
li I seta 'kellu idealment.
Iżda għal issa, aħna qed tmur biex jintroduċu dan aktar f'kuntest web.
U x'hemm sbieħ dwar SQL hija li anki għalkemm huwa pjuttost qawwija u pretty
sofistikati, huwa verament tagħli isfel sa erba 'operazzjonijiet ewlenin, erba
funzjonijiet ewlenin, jekk inti will-- tagħżel, biex jerġgħu jsibu data, it-tiftix
għal data; iħassru jew tħassir tad-data; daħħal għaż-żieda ringieli tad-database;
u l-aġġornament.
Mela jekk inti qatt jintużaw Google Spreadsheets, Numri Apple, Microsoft
Excel, inti għandek eżegwit, aktar probabbli, kollha
ta 'dawn l-operazzjonijiet bħala bniedem mill biss tuża t-tastiera tiegħek u mouse--
ddaħħal data, bl-użu għajnejn tiegħek biex tagħżel jew tfittxija għal data,
jew data aġġornament, jew tħassar informazzjoni.
>> Allura dak li jfisser dan?
Well, installat minn qabel fil CS50 IDE huwa programm imsejjaħ MySQL.
Huwa ħieles, open-source database li l-super popolari.
Facebook, per eżempju, l-użi li dan jum, fost għodod oħra li huma jużaw.
U ħafna ta 'websajts popolari ħafna użu huwa fil-parti kbira għaliex dan huwa mgħaġġel,
u għaliex huwa b'xejn.
Għalkemm ċertament jeżistu alternattivi.
U xi wħud minnkom tista dabble ma alternattivi għal proġetti finali.
>> Dan huwa screenshot, sadanittant, ta għodda fuq l-internet imsejħa phpMyAdmin.
Huwa koinċidenza li din l-għodda fuq l-internet huwa wkoll
miktuba b'lingwa, PHP, imma dak huwa maħsub biex tagħmel
huwa tagħtina fuq l-internet interface għal database.
Minħabba MySQL tipikament hija xi ħaġa, storikament, inti
jinteraġixxu ma 'biss bil-linja ta 'kmand.
U jkun super annoying u arcane li jkollhom
li jikkmanda testwali tip li tagħżel data, daħħal data, u ħassar id-data.
Allura xi nies fuq l-internet kiteb programm fuq l-internet
li just let us jimmaniġġjaw id-dejta fid-database tagħna.
Huwa simili tikklikkja darbtejn fuq Excel, u tmexxija ta 'verżjoni fuq l-internet tagħha.
>> U dak li int ser tuża dan għal finalment ġimgħa d-dieħla, mhux fil-p sett sitta,
iżda huwa biex tinbena xi ħaġa imsejħa CS50 Finanzi, li
se jkollhom database ta utenti, bl-ismijiet utent u passwords,
dollaru ammonti li huma jkollhom fil-kontijiet bankarji tagħhom.
Li għaddej biex tkun xi ħaġa li għandek tuża biex jaħżnu
is-simboli u l-kwantitajiet ta 'ħażniet li l-utenti
xtraw jużaw virtwali dollari li inti ser tagħti lilhom.
U li għaddej biex jippermettu lill-utenti li jirreġistraw għall-sit tiegħek,
sabiex anke ħbieb tiegħek tista 'tixgħel ir website tiegħek
u fil-fatt jirreġistraw, log in, u play madwar
u tipprova ssib difett fil-kodiċi tiegħek, u tipprova ssib bugs fil-website tiegħek.
U dawn ser sempliċiment jirreġistraw billi żżid infushom, b'mod effettiv,
permezz kodiċi tikteb għad-database tiegħek.
>> Per eżempju, dan huwa screenshot malajr ta 'dak li database jista' dehra.
Dan kien minn wieħed mill solutions-- sena li għaddiet
dan huwa bħal Excel mini fajl, maħżuna fid-database tagħna,
maħżuna dan is-software imsejjaħ MySQL.
Min-naħa tax-xellug, stajt apparentement jingħataw kull utent numru uniku.
Fit-tieni kolonna, stajt mogħtija kulħadd utent name-- tiegħi stess
fosthom.
U fuq il-lemin, Stajt tawhom hash.
>> Issa dan huwa attwalment password, iżda mhuwiex password test sempliċi.
Huwa password encrypted, jekk inti se, jew password hash.
Li aħna ser terga 'lura għal qabel twil.
>> Imma jekk inti stajt qatt taqra artiklu dwar kif
password tiegħek f'xi bank jew xi website seta 'kien kompromess,
dan jista 'ġeneralment ifissru waħda minn żewġ affarijiet.
Allura dan huwa biss silta ta 'sitt utenti.
Kollha inti issa tista figura permezz tar hacking jew qsim
dak passwords sitt poplu tagħna huma.
Imma jekk inti stajt qatt gotten twissija jew apoloġija
minn kumpannija jew tgħid website, sorry, Hacker kissru fil-database tagħna,
inti probabilment għandhom tbiddel tiegħek password, dak li jista 'jfisser?
>> Well, wieħed, jista 'jfisser id kumpanija kien aktar moronic,
u ġie ħażna password tiegħek fil-kolonna bħal dan, unencrypted.
Li jfisser l-avversarju, li seraq il database,
litteralment jaf tiegħek username u password.
Dik hija l-agħar xenarju possibbli.
U kif tkun taf tara fil-p-set seba ', daqshekk faċli biex jiġi evitat.
M'hemm assolutament l-ebda skuża għal dak forma ta 'stupidity fl-internet tal-lum.
Two-- u aħna ser issib xi artikoli li jixhdu l-fatt li din xorta
jiġri, nonetheless-- tnejn, forsi l-avversarju
seraq din il-verżjoni tad-database.
Li għadu tip ta 'ħażin, għaliex issa huma jafu li jien sitt klijenti,
Naf li l-ismijiet utent tas-sitt klijenti,
u naf l encrypted Verżjonijiet, jew il-verżjonijiet hashed,
tal passwords dawk is-sitt klijenti.
Imma kull minnkom li tista għamlu [? Hacker 2?]
fejn inti maqsum passwords, jew ħa A Ħares Fuq dik il-verżjoni tal-problema
sett, għaliex hi għadu tħassib ftit jekk l-avversarju jaf hash tiegħek
passwords?
>> UDJENZA: għax dawn ikunu jistgħu jidħlu fis-dizzjunarju kollu
fil-funzjoni hash.
U jekk password tiegħek hija dizzjunarju kelma, [? dawn jistgħu biss match--?]
>> DAVID Malan: Eżattament, l-avversarju tista 'sempliċement jiktbu kodiċi, bħal xi wħud minnkom
għamlet għall [? Hacker?] 2, fejn inti jtenni fuq
kollha tal-kliem fil-dizzjunarju, jew kumbinazzjoni possibbli ta 'A
permezz Z u wieħed permezz nine-- li tinstema ħafna, u huwa.
Iżda għal kompjuter, huwa pjuttost darn fast.
U fil-fatt, li kien l- punt ta '[? Hacker 2,?] Kien
biex jieħdu għalf li litteralment tidher bħal dan,
u inġinier reverse dak li fil-fatt kien.
>> Allura aħna ser tħares lejn kif nistgħu taħżen dan b'mod aktar effiċjenti.
Jirriżulta, Thankfully fil MySQL, hemm ser ikunu tipi ta 'data.
U waħda mill-partijiet divertenti dwar disinn database, li tkun onest,
huwa attwalment jiddeċiedu għalik innifsek kif għandek tirrappreżenta d-data?
Jekk inti tirrappreżenta numru tat-telefon kif l int, bħal numru kbir, jew twil?
Jew inti fil-fatt tagħmel dan bħala sekwenza ta 'Chars?
U jista 'jkun hemm ħafna impatti mhux trivjali ta 'dan.
>> Fil-fatt, wieħed mill- kmieni, stejjer germane gost
huwa meta Mark Zuckerberg kien bini Facebook, kien oriġinarjament miktub fl-
u xorta hija ġeneralment miktub fil-PHP.
U wieħed mill-akbar sfidi dawn jiffaċċjaw kmieni kien skalar.
Meta jinżammu żżid iskola wara iskola wara l-iskola, sa fejn naf jien,
waħda mis-soluzzjonijiet oriġinali essenzjalment kien li kopja u paste
xi wħud mill-databases u xi wħud mill-kodiċi,
sabiex Harvard kien taħdem fuq server tiegħu stess,
u MIT kien għaddej fuq is-server tiegħu stess.
U dan kien għaliex, għal xi minnkom li jistgħu recall,
inti ma setgħux ħbieb f'networks oħrajn.
>> You probabbilment ma għandekx ħbieb fid MIT jew Harvard 10 jew hekk snin ilu,
imma inti ma setgħux span netwerks għall parzjalment dik ir-raġuni.
U wieħed mill-akbar sfidi għall Mark u għal kumpaniji bħal Facebook
huwa attwalment immaniġġjar mijiet u eluf u miljuni
ta 'talbiet kull sekonda.
Allura l-affarijiet aħna ser tibda jitkellem dwar din il-ġimgħa
huma verament se jkun germane għal kitba software tajba, u popolarment
għodod suċċess li jistgħu jimmaniġġjaw lottijiet ta 'utenti.
>> Allura aħna ser nitkellmu dwar affarijiet bħal indiċjar u tiftix,
iżda li huwa għal-lum.
Aħna se tara lilek għal aktar nhar l-Erbgħa.
>> [MUSIC - "Seinfeld" TEMA]
DAVID Malan: tista 'biex dan, u naqqas minnha.
U inti ma għandekx twaħħal mal xi ammont ta 'pre-determinat ta' memorja.
Ukoll, dak li li għaddej biex jiġu msejħa?
>> SPEAKER 1: Well, x'inhu għaddej?
SPEAKER 2: X'tifhem?
Hu jagħti lecture.
DAVID Malan: U nistgħu nużaw a funzjoni msejħa malloc li memory--
>> SPEAKER 1: Għaliex ma armi tiegħu jiċċaqilqu?
>> SPEAKER 2: Well that's-- inti taf, li l-normali.
Huwa biss bħal hu għandu biss zalzett kbar mdendlin hemmhekk.
>> SPEAKER 1: Li normali?
>> SPEAKER 2: Yeah, I think we biss wieħed jassumi hu aċċidentalment
sostitwiti deodorant tiegħu ma superglue.