[Powered by Google Translate] [Seminar] [Web Development: Od ideje do provedbe] [Ben Kuhn] [Billy Janitsch] [Sveučilište Harvard] [To je CS50] [CS50.TV] [Billy] Bok, ja sam Billy i to je Ben. >> [Ben] Bok. Mi ćemo se govori o web development danas. [Webdev] [Billy Janitsch i Ben Kuhn] Malo o nama na prvom mjestu. Ben je svojevrsni back-end momak. On čini ono što rade. A onda sam otići i učiniti ih lijepo. Ja sam uglavnom bavi s više front-end dizajn izgled takve stvari, i Ben, s druge strane, ne zna što radi, tako da radi na back-end stvari. Zajedno smo napravili nekoliko stvari. Na primjer, prošle godine smo radili na Gimblium što je online igra razvoj studio. To je bio naš konačni projekt za klasu, i od tada smo napravili Harvardu klasi koja je online okvir za pregledavanje i kupovinu tečajeva na Harvardu. Mi ćemo početi s ovom idejom za naše web stranice. Idemo napraviti Facebook, ali za mačke. Prije nego što zapravo čine ovu web stranicu, ne bi ovu web stranicu, jer to nije dobro, ali mi ćemo ga koristiti kao okvir i proći kroz proces kako bismo iskoristiti ovu ideju i to pretvorilo u pravi web stranice možemo koristiti. Počet ćemo razbijanje website dolje. Kao što ste radili u CS50, želite razmišljati o tome što su stvarni sastojci koji idu u ovoj web stranici. Uglavnom ga okreće od ideje koja je samo kakve apstraktan pojam u stvarnom, opipljivom stvar koju bi mogao napraviti. Mi smo započeli tražeći neka pitanja. Što je to web stranica? Zašto mi to radiš? Što se to događa kako bi se koristiti za? Takve stvari. U slučaju Facebook Cat, mi u osnovi želite web stranice koje vam mačke društvenu mrežu međusobno. Ideja je da oni mogu postavljati na međusobnim zidova, oni mogu dati svoje komentare, i takve stvari. I tu dolazimo u komponentama. Mi sada imamo ovu vrstu okvira - moramo korisničkih profila, imamo komentare, i možemo postavljati. Možda jednog dana ćemo se ulijeva voli i takve stvari. I onda smo željeli prioritete te značajke ulazim Želimo reći kao, u redu, to je jako važno da svatko ima profil i da svatko može postavljati na međusobnim zidovima. Sekundarna na to, komentari bi bilo lijepo. Možda kasnije ćemo se ulijeva voli. Dakle, želite imati ideju o tome što je od temeljne važnosti za svoj projekt i što je svojevrsni općenitije obilježje koje bi se mogle primijeniti kasnije. Želite vrsta ima određeni popis na umu, , ali projekt da počnete s neće biti projekt koji ste završili sa. Drugim riječima, stvari će se promijeniti dok ste u razvoju stranice, a vi želite ostaviti prostora za to. Ja ću ga predati Benu tko će razgovarati malo o strukturi. [Ben] Idem se govori o više tehničke strane web razvoja. Idemo preko neke osnove prvi. Kad radiš web aplikaciju, Glavna podjela koje ćemo imati je ćeš imati neke stvari događa u strani klijenta - to jest, kod koji ste preglednik traje od site i JavaScript, HTML, CSS stvari. To je sve na strani klijenta. Ti ćeš imati drugu kôd koji se izvodi na strani poslužitelja koji prati sve podatke koje su ljudi poslali u vama, odlučuje tko dati ono što, takve stvari. To je samo neki terminologija, tako da ti dečki su upoznati s onim što mi govorimo. Iza te podjele je dobro misliti na svoje web-aplikacije u smislu Nekoliko različitih komponenti. Kad radite web razvoj jedna od stvari koje bi trebali uvijek se pokušava napraviti je smanjiti kompleksnost. Složeniji vaš kod je veća vjerojatnost postoji da bi bugove, teže je promijeniti kasnije. Dakle, ako možete razbiti svoj app u nekim osebujnim funkcionalnim područjima koji će - a možete smanjiti kakve iznosu od cross-područja komunikacije - koje će vam puno pomoći u dugom roku u smislu smanjenja bugova. Konkretno, obično ljudi podijeliti web aplikaciju na - to su vrsta krilatica sada, ali su još uvijek korisna. Možda ste čuli ljudi govore o modelima, poglede i kontrolerima. Modeli su stvarni podaci da se vaša aplikacija će se baviti. Na primjer, u svom Cat Facebook, vaši modeli će biti - ne bi se model kao što su radna mjesta, i model za korisničke profile, takve stvari. Vaši stavovi su kako se prezentirati te podatke za svoje korisnike. Možda ste jedan pogled za gleda na jednu poruku i sve komentare i drugačiji pogled na vašem zidu da ima popis svih radnih mjesta koji su usmjereni na vas, i drugačiji pogled na vaše vijesti feed - takve stvari. Konačno, imate kontrolore koji su u osnovi, kada vam ljudi šalju postove a vi napravite ažuriranja za svoje back-end sustava, što prirast hrpa brojila, i što god. To su tvoji kontroleri. Idem se govori uglavnom o modelima. Pogledi su tehnički nije to tako teško, a pitanje je više s njima projektiranje Kontroleri će biti specifične za ono što ste projektiranje. Ali postoje neke prilično opće tehnike koje možete koristiti kako bi vaš modeli ljepše i lakše raditi s tim mislim da su vrlo korisne. To se uglavnom događa da se o tome kako se nositi sa svojim web aplikacije podataka na lijep način. Glavni problemi s modelima su da oni žive na klijenta i poslužitelja, a vi morate shvatiti ) kako ih dobiti - sve relevantne one - s poslužitelja na klijenta, i b) kako ih zadržati u sinkronizaciji. Vaši korisnici htjeti napraviti neke promjene. Oni će htjeti napraviti nove postove. Oni će htjeti vole stvari i stvari, ako imate voli. Oni su glavni tehnički izazovi bave modelima. Prva stvar koju idete da želite da se zapitate je kakav podataka ide u ovaj model i kakva upite ćemo želite učiniti - koji je, kako ćemo gledati na modelima? Za Cat Facebook primjerice, Vaš post će imati autora povezane s njom, neki zid nakon teksta, a dobitnik zidne post. A onda možda želite postaviti upit da u hrpa različitih načina. Vi bi htjeli gledati na to tako, koji je napisao Koji post, po koji je dobio što objavite, možda po datumu kada su bile objavljene. Ali ako ćete to učiniti po datumu, onda morate dodati još jedan teren za svoj post od kada je zapravo bio objavljen. Ove 2 faktora - koje podatke žele koristiti i kako želite da bi je vidjeli - trebali razmišljati o njima prvi, jer oni ovise jedni o drugima, i to će biti teže da ih dodate kasnije. Postoje neki drugi razlozi. Kada razmišljate o tome kako se nositi s modelima na poslužitelju ono što želite pogledati je - vi zapravo želite napraviti server kao jednostavan kao moguć. Doing stvari na strani klijenta je općenito mnogo brže ako to može učiniti isključivo na klijentu bez radite bilo kakav zahtjev mreže. Ideja je napraviti što više upita što možete na klijentu. Jedini problem s tim je da ako zatražiti sve podatke na početku zatim da će potrajati dugo vremena za učitavanje. Dakle, ideja je da se štrajk sretan medij između imati dovoljno podataka o klijentu koje možete napraviti većinu svog posla ima, ali ne samo dobavljanje sve odjednom , tako da se jako sporo vrijeme učitavanja na početku. Na primjer, za svoju mačku podataka vjerojatno biste željeli da donese hrpu posljednjih poruke na zidu. Vi ne želite da donese sve od njih, jer to može vratiti par godina. Ali, vi ne želite da ih dohvatiti jednu po jednu jer bi to uvesti mnogo mreže pretek. To je često vrlo teško - nakon što su trčanje baze podataka - to je često vrlo teško promijeniti ono što podatke imate u njemu - to jest, dodati novu bazu podataka kolumnu ili nešto - tako jedna dobra strategija je zapravo samo da bi puno podataka u tekstualnom blob - JSON blob - JSON bude JavaScript Object zapis - Razlog je to korisno, jer tada možete dodavati nove svojstva za sve ove JSON mrljica bez mijenjanja podataka. Jedini minus za to je da ako imate hrpu polja da li dodati kasnije - kao skrivena u tom JSON blob - onda je teže ih upita u bazu. Na primjer, ako kasnije - ako ste imali svoj post model koji smo ranije sa samo autora, primatelja i tekst - što bi također moglo imati JSON blob i onda ako kasnije htjela dodati polje datum ne bi morala promijeniti svoje baze podataka. Vi samo mogao dodati datume za sve tekstualna polja. I onda će se moći gledati na one koji su na strani klijenta, , ali ne bi bio u stanju da ih upita na strani poslužitelja zato što je skriven unutar tog teksta. Drugi problem koji želite razmišljati o je, kako je vaš klijent i poslužitelj će komunicirati. Obično želite zadržati ovaj kao jednostavan kao moguć. Vi samo možete imati kao get-me-ovom zahtjevu podataka, create-a-new-objekt stvar, a zahtjev za obnavljanjem-star-objekt. I to će sve biti različite URL-ove na poslužitelju koji ste - koji preglednik bi - možete koristiti AJAX zahtjeve za sve ove i primati bilo ili šalju podatke. Opet, za naše Cat Facebook primjerice, što bi moglo imati taj URL dobiti individualni post, i da ćeš imati URL za stvaranje novog zid komentar a možda URL za upload svoju sliku profila, takve stvari. Ali opet, to je na pre-dohvatili većina vaših podataka, tako da ne morate držati stvaranje mreže zahtjeve. Iz tog razloga, možda ne želite da se taj pojedinac dobiti zahtjev za jedan post, i umjesto toga će samo želim 1. Prvi zahtjev za cijeli zid. I onda ako pokušavamo postići ravnotežu, jer - to je također će ovisiti o vašem zahtjevu. Zato, ako ste očekivali da ljudi imaju samo 10 ili 20 poruke na zidu koja će biti u redu. Ali, ako ste očekivali da ćete imati tisuće onda taj zahtjev bi potrajati predugo, i tako možda želite dodati dobili-sve-postove-od parametar. Za sve to vjerojatno idete da želite sinkronizirati podatke u JSON - JavaScript Object zapis. Više-manje svaki jezik bavi JSON vrlo dobro. JQuery ima ovu lijepu getJSON funkciju koja će učiniti sve teško raditi za vas. I na PHP tu je i vrlo lijepo JSON komunikacijske funkcije. Dakle, to je vjerojatno najbolji format za slanje svoje modele natrag i naprijed. Kao primjer onoga što smo razgovarali o do sada, evo primjer toka za svoju Cat Facebook aplikaciju. Ona započinje s web pregledniku traži baze web stranice URL. Server će vjerojatno poslati na statički HTML i neki JavaScript i CSS. To je obično najbolje ne raditi nikakve renderiranje na poslužitelju. Vi vjerojatno ne želite - što server ne radi tamo će se i popis zidnih postova i stvaranje neke HTML-a za svaku od njih, a da je više od slanja. To je obično najbolje da to učinite na strani klijenta, jer u protivnom svaki put kada želite ponovno izvući nešto, morate napraviti zahtjev poslužitelja. I to vrlo brzo vam daje puno pretek. To je obično najbolje samo da brod šalje dolje statički HTML a zatim JavaScript i CSS da će učiniti renderiranje na strani klijenta. Čim je ta stvar dolazi u, onda možete imati - u JavaScriptu - možete učiniti zahtjeve za podacima o zid i takve stvari, a nakon toga server je zapravo samo radi upita baze podataka i provjere dopuštenja. Važno je samo da se ne može poslati preko neke druge korisnička poruke na zidu da ne smijemo vidjeti. To zapravo može biti vrlo tanak sloj pristupa na svoju bazu podataka, i onda sve pokazuje podatke - sve pogleda i stvari - one koji se može dogoditi u vašem pregledniku, a onda kad želite napraviti post ili nešto samo poslati novi zahtjev. Tu je također i neki fancy stvari možete učiniti na vrhu toga. Što se tiče konkretnih tehničkih podataka, razvija se u ravnici JavaScript može biti malo bolno, tako da postoje neke knjižnice i alate koji će vam pomoći puno s tim. Mislim da ste svi vjerojatno čuli jQuery što čini radi HTML renderiranje i manipulacija puno lakše - imaju puno fantazija funkcija za blijedi i izlaziti, i radi Zippy animacije. Tu je i ova knjižnica zove Underscore.js. Ima puno korisnih komunalnih funkcija, stvari koje biste očekivali JavaScript imati da to stvarno doesnt - stvari kao miješanje niz, uklanjanja duplikata s popisa, ili ravnanje popis listama. Ovo je samo mali uzorak koda. Donja ima tonu tih lijepih funkcija koje želite te će imati sve vrijeme. A tu je još jedna kolekcija koja Htio bih provesti malo vremena na zove Backbone.js jer Backbone stvarno pomaže vam nositi se s modelima na strani klijenta i puno konfuzije koja to može izazvati. Backbone vam daje ovaj koncept modela i zbirki u JavaScriptu koji su u osnovi točno poput JavaScripta objekata u JavaScriptu polja, ali su događaji kada mijenjaju svoja svojstva. Baš kao u JavaScriptu, možete imati događaj kada je gumb dobiva kliknuli ili tako nešto Okosnicu ove modele i kao okosnica zbirke će emitirati stvari kao što su da kad se promijeniti. To znači da možete samo napisati nešto poput ovog isječak koda ovdje - to kaže, kad god nešto dodati na postove Array iscrtavanje cijeli zid. A to će reći, kad god tvoj post je broj voli promjene, što obavijestiti korisnika da je netko volio svoj post. Ili kad god je bilo vlasništvo post mijenja li iscrtavanje post. Takve stvari će vam uštedjeti tona složenosti, jer u protivnom ako nemate pojedine okvirne kao što je ovaj onda svaki put u kodu da promijeni išta o post, ne bi se sjećam sebe nazvati sve uzvratiti funkcije i takve stvari, a ako ste htjeli dodati nešto novo što se dogodilo svaki put kada promjene post da ćeš morati proći kroz svako mjesto u vašem kod koji ste promijenili post i dodati da je nešto novo. Okvir kao što je ovaj će ukloniti puno toga između-slojem komunikacije koji čini vaš broj složen i teško održavati. Postoji malo o pogledima također. Ja ću napustiti većina to Billy, jer oni su tehnički nije jako teško. Pomoću jQuery za svoje stavove. To je gotovo kao nužnost u ovom trenutku. To samo čini sve što je tako puno lakše. Ima puno knjižnicama. Ako ste komplicirane elemente korisničko sučelje, ako želite auto-kompletna stvar ili kao jedan od onih fancy multi-selektora - ako želite nešto poput toga, vjerojatno biste trebali samo traži oko i možete naći dobar knjižnicu da će učiniti ono što želite. Billy će objasniti više o doista teškim dijelovima pogledima. Također, kao strani bilješku, Backbone ima funkcionalnost za stvaranje pregleda komuniciraju lijepo s modelima - pogledati dokumentaciju za sve ove knjižnice, zapravo. Dovoljno je pogledati dokumente. Oni su jako dobro napisana i lako slijediti. Općenito, možete prilično mnogo samo Google, ako imate problema. Ima puno ljudi koji ih koriste. Mislim da je to kao konačan bilješka. Tu su i neke naprednije stvari koje možete učiniti Ako ste u potrazi za napraviti svoj web app extra strašan. To možete učiniti - novi HTML5 specifikacije ima puno fancy stvari koje možete učiniti. Lokalna pohrana - što je možete spremiti podatke u pregledniku - umjesto da se vrati i prostudirati poslužitelj za sve, možete zadržati nešto od toga na klijentu, a to čak i omogućuje ljudima - u nekim slučajevima čak i ona može vam koristiti web stranice offline. Tu je ta stvar zove WebSockets koja su drugačija vrsta mrežne komunikacije gdje umjesto da samo napravite jedan zahtjev, te dobiti odgovor i to je to, što bi otvorili vezu s poslužiteljem i tako možete učiniti stvari kao što su ažuriranja u stvarnom vremenu. Dakle, ako su pokušali napraviti chat aplikaciju, možete koristiti WebSockets komunicirati i nazad, tako da ne bi trebala zadržati traži, "Oh, poslužitelj, nije bilo tko poslati mi razgovor?" svakih 10 sekundi ili tako nešto. Tu je i zanimljiva HTML5 značajka gdje možete učiniti da izgleda kao URL stranice se mijenja bez potrebe da zapravo je papirom. Možete koristiti natrag i naprijed bez radiš hrpu mreže zahtjeva. Takve stvari stvarno koristan u smislu što je brz, ali i raditi kao web aplikacija trebala. Tu je i ta stvar zove CoffeeScript. CoffeeScript je drugačiji jezik, zapravo, da se sastavlja prema dolje JavaScript. Ti bi napisati sve svoje kod u CoffeeScript, a onda pokrenuti ovaj prevodilac, i to ispljune JavaScript datoteku koju možete uključiti u svoju web stranicu. Razlog da CoffeeScript je lijepo jer se dobiva osloboditi od mnogo čudni slučajevi da JavaScript ima gdje iznosi jednakima, i iznosi jednaki rade različite stvari, ili mi se - ima ljepši sintaksu za rješavanje polja i funkcijama. To je mali isječak CoffeeScript koji stvara popis svih kvadrata od 10 ^ 2-1 ^ 2, ali obrnutim redoslijedom. Kao što možete vidjeti, CoffeeScript često omogućuje vam izraziti u jednoj liniji što će potrajati pet redaka JavaScript. To može napraviti stvari puno lakše. To je malo novom sintaksom naučiti u početku, ali definitivno će vas više produktivni na duge staze. Također možete koristiti i druge jezike na poslužitelju od PHP - jezika kao Ruby, Python, ili postoji čak i projekt pod nazivom node.js koja će vam koristiti termina na poslužitelju. Osobno, ja stvarno, stvarno mrzim PHP. Ja jednostavno ne uživaju radeći s njim. Ako ste, također, mislim da je to strašno cluge o jeziku, onda možete koristiti jedan od tih, umjesto. Općenito, ako želite napraviti nešto, a vi stvarno ne znam kako će to učiniti, Samo pretraživanje Interneta. Tu su tone i tone sredstava pogotovo na - StackOverflow je jedan veliki. To je ova web stranica gdje programeri pitati jedni druge na pitanja. Možda ste se izvoditi u nju, ako ste imali problema na CS50 problematičnih setovima. A tu su i tone knjižnicama za to prilično mnogo bilo što što bi željeli. Ako želite nešto učiniti, a vi ne znate kako to učiniti, nemojte pretpostavljati da je to nemoguće. Dovoljno je pogledati oko sebe i možda ćete naći neke dobre resurse. Kao opće završiti, glavni takeaways se držati jednostavne stvari. Složeniji vaš broj je na početku i više vas pokušati i napraviti fancy stvari, više će se da se nešto zaista funkcionalnu i to će biti teže mijenjati kasnije. Dakle, raditi stvari glupi, jednostavan način prvi put. Da se s tim, nemojte se bojati baca stari broj ili čišćenja se puno. U principu, jednom kad zapravo imaju nešto raditi, to je mnogo lakše misliti o tome, nego kad ste još uvijek u početnim stadijima od kako sam stavio sve ovo zajedno. To je najbolje napraviti najgluplji mogući dizajn koji radi , a zatim ga poboljšati iteratively nego pokušaj da se sve što je pravo prvi put. U smislu klijent-poslužitelj podjele, pokušajte zadržati svoj server vrlo jednostavan - samo baza, a neki autentikacije i ne učiniti bilo teško raditi tamo. Učinite sve svoje komplicirane stvari na strani klijenta u pregledniku u JavaScriptu koliko god možete. Pogledajte oko za knjižnice da bi vaš život boljim. Uvijek je bolje koristiti kod koje je netko drugi napisao ako - i ne bi ga pisati sami. Postoji puno stvari na internetu. Google je tvoj najbolji prijatelj. Google je programer najbolji prijatelj. Da, svakako, nemojte se bojati da bacite pogled na stvari. U redu. I više od Billyja. [Billy] Zapravo, prije nego što počnem s nekim dizajn stvari, Ima li tko pitanja za Bena o svemu što je on govorio o? Dobro, dobro. Opet, javite nam, ako ništa nije jasno ili ako želite da ide preko nešto malo više. Idem korak natrag malo i razgovarati o više temeljnih dijelova dizajna. Ben spomenuo model zove - Oprosti, Model pogled kontroler sustav koja je vrsta tehničkog aspekta, pa ću pogledati pogledima posebno, i ja ću početi s time kako ćeš dizajnirati stav da izgleda lijepo. Ovdje je vrsta stvarno osnovni predložak za naš mačak Facebooku. Mislim da postoje neke osnove u modernom dizajnu UI koji su vrijedno branje gore. Možete primijetiti da postoji puno bijelog prostora diljem stranici, dosta mjesta za stvari. Ne osjećam se kao da imate squash stvari u stranicu. Vi želite ostaviti puno prostora otvoren, a ako idete na gotovo svakom modernom web stranice vidjet ćete da postoji bijelo posvuda. Tu je bijela na mjestima ne biste očekivali. Imate ovu paletu boja, a to je mudar na početku izabrati paletu boja koje idete raditi i razvijati. Također - to pomaže da odaberete slovima, i na taj način si vrsta rada s ove konkretne osnove dizajna. Imate svoju vrstu, imate svoje boje, a zatim možete vrsta stane sve ostalo što je potrebno. Dakle, kao što sam rekao, s sheme boja želite koristiti hrabrije boje svoje sheme boja štedljivo. Zaglavlja su lijepe. Tipke su lijepo imati stvarno velik, jeftin boje. No, u cjelini, ako imate web stranicu koja ima boje posvuda, sve vas gleda u lice, to samo izgleda neuredno, a to nije dobro. Želite uglavnom koriste svijetlih boja. Pokušajte, opet, pokupiti prilično suvislu shemu boja. Možete imati ove male prskanja puno boja - kako može izgledati prilično lijepo, ali ih želite koristiti prilično rijetko. Kao što sam rekao, da želite biti minimalan. Manje je gotovo uvijek više. Ako možete prikazati nešto ili ne prikazati nešto, a ti si vrsta siguran je li to trebala biti tamo po defaultu - Vjerojatno si najbolji off ga izostave. Uvijek možete ga dodati u kasnije. Da, držati jednostavne stvari. Ali što je najvažnije, želite uzeti u obzir više dizajna. Nemojte misliti da kada napravite stranice, što su ga u glavu da idete napraviti stranicu na neki način, i to će izgledati točno kao što je ovaj. To će imati plavu zaglavlje na vrhu i plave bočnu traku a zatim žuta sub-header stvar. Želite li napraviti više predložaka. Možete bilo - ako si dobar s Photo Shopu, možete otvoriti da se i vrsta dizajniranje web stranica kao što želite da izgleda. Ako ne, možete samo koristiti olovku i papir, ali ispočetka se više dizajna. Želite osnovi imaju postaviti gdje imate puno različitih dizajna, i ako netko završi rad, onda je to super. Ako netko završi u nedostatku, onda uvijek imate još kome obratiti. U principu, ne osjećam se kao da bi trebao biti ograničen na bilo dizajna u početku odlučiti o. Dizajni su vrlo promjenjive, a dio važnosti modela Pogled kontroler je sustav koji možete zamijeniti i iz različitih pogleda koje želite. Možete njišu podatke na jednu stranu, a zatim odlučiti, oh, zapravo, da ne rade dobro. Mislim da je to neka vrsta prekomplicirano ili postoji dio da se ovdje nije stvarno radi, pa ću i to potpuno napustiti ovaj pogled i swap u potpuno novom. Mi još uvijek može koristiti stare modele i stare kontrolere. Mi možemo napraviti sve što je na poslužitelju i klijentu kao što bi prije. No, stvarna val podataka što prikazuju što će biti malo drugačiji. Što se tiče zapravo provedbi dizajn koji želite, Nakon što su nekoliko dizajna skicirao na papiru ili na Photo Shop ili bilo što drugo, postoji niz alata koje su dostupne za vas. Prvi ste dobro upoznati s kojom je vaš HTML, PHP, ili što god jezik koji koristite samo da kod statičke stranice na svoje web stranice. Vi ste radili s puno HTML koja vrsta daje vam ove oznake koje možete staviti stvari u, a zapravo je način organiziranja vaš sadržaj. Na primjer, imate zaglavlje tamo gore, tako da ćemo imati oznaku zaglavlja, i to će imati neki tekst unutar njega koji je vjerojatno će biti u drugoj krpa. Tada imate sidebar možda s nekim različitim vezama, a oni će sve biti u odvojenim tagova. Dakle, u osnovi HTML, au središtu je način podjele stranicu kako što na kraju želim ga formatirati. Pa opet, vidjeli ste to i prije. Prilično ste zadovoljni s njom radili sada s obzirom da ste to učinili posljednji pset nadamo se, , tako da bi trebao biti nikakav problem. Tada imate CSS koji u osnovi obrađuje sve od dizajna statičkim aspektima. To će nositi sve boje, sve pozicioniranju različitih elemenata, gdje idu jedna u odnosu na drugu, koliko veliki su, različite vrste positionings da će morati - Drugim riječima, možete se stvari fiksne, tako da kada se pomaknite prema dolje oni ostati, ili možete imati stvari u odnosu na druge elemente. Sve takve stvari u CSS. Osim toga, možete napraviti različite dekoracije, možete imati boje teksta, tekstualne efekte, sve takve stvari. Ben je dao jako dobar seminar o ovoj prošlog vikenda, pa ja bih svakako to provjeriti ako planirate raditi neki fancy stvari sa CSS. CSS3 je zapravo najnovija verzija CSS, a to može učiniti sve vrste jako lijepih stvari. To možete učiniti na nizbrdici, možete imati lijepe, zaobljene kutove, što možete učiniti sve vrste stvari kako bi vaše web stranice izgledaju modernije i fancy. Sljedeći alat je JavaScript i jQuery koja Ben razgovarali malo o, ali ja ću se malo dalje u. JavaScript, kao što sam radio s njim malo, ili barem vidjeti ga u predavanju, je vrsta način dinamički radi stvari u HTML-u. HTML, kao što znate, je statična, pa nakon što su HTML ne možete ga mijenjati. No, JavaScript, na neki način, je način da se moći mijenjati HTML. Dakle, možete to učiniti, i to je super, ali stvarno JavaScript je bol raditi. To je tako dugo i tup i učiniti čak i najjednostavnije stvari zahtijeva puno linija JavaScript. Dakle, jQuery je u osnovi biblioteka za JavaScript da pojednostavljuje sve to. On kaže, u redu, ako želite imati kvadratni okvir dolaze iz lijeve i nestati u stranicu, tako da je u sredini, u JavaScript da bi bilo potrebno - Ne znam, sto linije učiniti, i to će biti bol, i izaći iz nje mrzi sve o web programiranju. JQuery što u osnovi imaju elementa-dot-fade-in, ili nešto slično. Dakle, vrlo, vrlo jednostavne funkcije koje će vam učiniti sve vrste cool animacije i takve stvari. Druga je stvar da su to 2 su stvarno dobri za samo radi dinamične stvari s web stranice. Dakle, umjesto da samo imaju svoju HTML stranicu - koji prikazuje neke podatke, ali zapravo ne ništa - JavaScript i jQuery će vam imati tipke koje možete pritisnuti, i možete povući elemente i ponovno ih narudžbi i sortirati ih, i ima nove elemente dodati ili ukloniti. Možete dodati-delete, takve stvari. Dakle, jQuery ne tona cool stvari. I Vipul zapravo daje seminar o njemu danas, vjerujem, na 5-sati, pa ako možete držati oko za tako dugo, da bi - 5 ili 4? Četiri. Oprostite. To je zapravo odmah nakon toga, pa bih preporučio držati oko za to, ako je moguće. JQuery je super, super korisna, a vi ćete biti u mogućnosti to učiniti puno stvarno lijepih stvari s njim za prilično mnogo bilo web razvojni projekt. Sada ću ući u svojevrsni razlike. Razgovarao sam u osnovi o korisničkom sučelju. Korisničko sučelje je samo dizajn stranice. No, tu je vrsta drugi koncept koji je korisničko iskustvo. Dva su vrlo različita. Sučelje je definitivno dio iskustva. Drugim riječima, kad idete na stranice, možete pogledati na sučelju. To je dio onoga kako doživljavate stranice. No korisničko iskustvo je više od toga. Korisničko iskustvo je o tome što je dojam da korisnik dobiva iz vaše stranice je. Dakle, očito, sučelje je dio toga. I to je definitivno nužni dio, ali to nije dovoljno. Drugim riječima, ako imate lijepo sučelje, i to je lijepo i šareno i sve to, to je super, ali ako korisnik odlazi na svoje stranice, vidi lijepo izgleda i to je zbunjen sve, nema pojma kako se ništa učiniti, onda je očito da ste napravili stvarno siromašnima web. To je vrsta kojoj korisničko iskustvo dolazi u. Idem razgovarati malo o UX dizajn - UX je kratko za korisničko iskustvo - i vrsta kako možete biti sigurni da ćete imati dobro korisničko iskustvo. Prva stvar je da mogu dizajnirati web stranicu na kojoj korisnik može učiniti ništa da da je korisnik možda želi. Ali, ako korisnik ne može shvatiti kako to učiniti te stvari - Drugim riječima, ako korisnik ne imati dobru ideju kad idu na svoje mjesto, "Oh, ako želim ažurirati svoj profil, onda sam kliknite na ovaj gumb, ili ako želim postavljati na nečiji zid, onda idem na njihov zid i kliknite na malu kutiju. " Ako korisnik ne zna da je, onda ste učinkovito imaju zapravo ne ispravno provodi tu funkcionalnost. Dio provedbi funkcionalnost je da korisnici su zapravo u mogućnosti koristiti ga. A to bi moglo biti frustrirajuće - možda napraviti stranicu, a to može učiniti sve vrste divne stvari, ali onda ćete imati ljudi ga testirati i reći: "To ne može učiniti. Zašto ne mogu to učiniti? ", A vi ćete meni reći da im, "Pa, to može. Samo moraš ići u izborniku 7. padajućeg na ovaj opskuran stranica koja je samo pronašao link na dnu desnom kutu "ili tako nešto. Očito, ne želite to. Vi želite da bude jasno da svojim korisnicima ono što ste trebali učiniti, i to bi trebao biti jednostavan i intuitivan za njih. Još jedna stvar koju želite pokušati učiniti je, ako je netko će ići na svoju stranicu i 9 od 10 puta napraviti akcijski A, a 1 od 10 puta napraviti akcijski B, vjerojatno želite da se usredotočite svoje iskustvo na akciji A. Drugim riječima, želite da bude vrlo, vrlo jasno kako to učiniti A. Trebao biti front-and-centar - otići na stranicu, pogledajte ga, oh, to je upravo tamo. Dok B očito želite da bude jasno, ali možete ga ostaviti malo više u pozadini. David daje dobar primjer za to je u predavanju, što je Boston T sustav. Kada idete u Boston T i želite kupiti ulaznicu, morate doći u 5 izbornika prije nego što zapravo možete kupiti ulaznicu za 2 dolara, 2,50 dolara vrijednosti, koji je koliko je potrebno za vožnju podzemnom željeznicom u jednom smjeru. To je problem, jer većina ljudi koji se voze podzemnom željeznicom Vjerojatno samo želim otići na jedno mjesto, kupite svoju ulaznicu, doći na odmah. To nema smisla da oni moraju proći kroz mnogo različitih izbornika doći. Bolje korisničko iskustvo će biti brza tipka na prvoj stranici da samo kaže, 'kupiti kartu u jednom smjeru,' i da će staviti u sve norme Zadane vrijednosti, a zatim, ako netko želi kupiti neku drugu ulaznicu od toga, oni još uvijek, naravno, imaju mogućnost, ali ste optimiziran za zajedničko korištenje slučaj što je doista važno. Možete vidjeti primjere toga na Facebooku, zar ne? Ako idete na Facebooku i želite objaviti status, to je pravo na vrhu, koji je ono što se često želite učiniti. Čim uđete u stranicu, možete učiniti najčešće stvari koje što želite učiniti. Ako želite učiniti nešto složenije stvari poput: kažu Želim ići na mog prijatelja zid i postavljati sliku o njemu - što ću žele raditi često, ali ne tako često kao slanjem ažuriranja statusa - pa u tom slučaju, ja upisati svoje ime u okvir na vrhu, kliknite na svom profilu, a onda, ipak, to je pravo na vrhu tamo jednom sam dobivši njihovom profilu. Opet, ja sam optimiziran u prioritetu za slučajeve najčešće namjene. Još jedna važna stvar je da često ljudi će nekako pokušati zaobići govoreći, u redu, tako da sam napravio stranicu i ljudi spoznaju da je zbunjujuće, i to je problem, zar ne? Očito, ne želim da ljudi budu zbunjeni sadržaj moje stranice. No, način da se riješi to nije imati nešto pop-up rekavši, hej, ja ću vas naučiti kako koristiti ove stranice. 1. korak - kliknite ovaj gumb. Korak 2 - ići ovdje. Naravno, to je način oko nje - to je način na koji možete reći ljudima što učiniti, ali to je stvarno nije optimalan način. Ako idem na web stranicu i odjednom sam bombardiran s ovom tutorial koji mi govori što učiniti i gdje ići i sve to, to nije zabavno za mene. Nije to dobro iskustvo za mene. To je vrsta boli. Želim samo početi raditi stvari. Ljudi će zatvoriti svoje dijalogu, ili izaći udžbenik, ne znam što da radim, a onda se žale, jer ih niste rekli što da ne. Način da se riješi to nije tako što bilo kakav tutorial ili smjera - bilo što slično. Koliko god to mogu izbjeći, što stvarno želite pokazati korisniku što učiniti Samo po prirodi kako web site je iznio. Drugim riječima, ako idem na Facebooku bez prijave, Prva stvar koju sam vidio na glavnoj stranici - to je malo prijava box. Dakle, duh. Moram prijaviti u. Tamo je. Budući da, ako sam otišao na Facebooku i morao sam se malo kliknite link na dnu koji je rekao 'prijaviti', a ostatak stranice je samo neka vrsta slike ili nešto, Ja stvarno ne bih znao što da radim, zar ne? Ja bi bio zbunjen. Dakle, to bi moglo reći da ide dolje i kliknite na tipku da se prijavite u, ili prijava gumb moglo biti pravo na vrhu, gdje ću ga vidjeti. Želite li uvijek biti prikazivanje korisniku što učiniti, i da bi trebala biti svojstvena samoj stranici. Kada razmišljate o nacrtima i rugajući se na različite načine izražavajući svoje stranice, što stvarno želim razmišljati o tome što su korisnici će se radi i kako ih možete pokazati što treba učiniti. Jedna stvar je testiranje je jako, jako važno. To je velika da se netko - dobiti prijatelja, dobiti netko ne zna ni - koji nikada nije vidio mjesto prije koristiti stranice. Budući da ste radili na mjestu satima, da ste bili bulji u njega, a vi znate točno što učiniti tako očito da ćeš biti testiranje stvari koje ste radili na i da znate raditi. No, ako netko drugi dođe i koristi site koji nikad nije što je nekad prije, to je jedinstveno iskustvo, jer imate nekoga tko nema prethodnog znanja od stranica ide u nju, tako da ćemo imati učinkovito pojma što učiniti ili kakvu korištenja slučajeva su prisutni za njih. To je super. To je jedinstven, jer oni su u biti osoba koja ima prazan um. Oni vam mogu reći je li nešto zbunjujuće i nejasno. Oni vam mogu dati ideju upravo ono korisničko iskustvo vaše stranice. To može biti vrlo teško reći da su se, tako da definitivno bih vas potaknuti kao da ste u razvoju svoje projekte - ako radite web-based projekata - da se ljudi koriste web stranice već imate nekakav funkcionalni demo. Sada ću razgovarati malo o tome kako upravljati web razvojni projekt. Bili smo u tome koliko možete napraviti tehnički back-end stranu, Kako možete dizajnirati stvarno dobar site, i to je super ako radite sami, ali - čak i ako radite sami, a pogotovo ako radite u timu, project management postaje veliki problem. Vi ste vrsta čuli o upravljanju projektima u različitim oblicima od Osnovna škola kad si rekao grupni rad. Morate surađivati, komunicirati, sve to. To sve još uvijek vrijedi i ovdje, ali postoje neke jedinstvene okolnosti s računalne znanosti koje žele biti svjesni, a vi želite biti sigurni ste radili dobro. Ja ću prvo razgovarati malo o tim da ćete biti u. To je vrlo važno da odaberete pravu veličinu tima da se radi o, te u svom završnom projekt mislim da imaju mogućnost da izaberu između 1 i 4 osobe, ako sam točna. Vi želite biti sigurni da ste ne samo odabiru broj ljudi da li želite raditi s jer oni su vaši prijatelji. Želite izabrati momčad koja je dobra veličina i da će dobiti posao ispunjavanja. Tu je trade off u vlasništvo više ljudi ili manje ljudi. Ako imate više ljudi, očito djelo može biti učinjeno jer imate puno ljudi, puno koda, puno ideja, i to je sve super. No, ona također zahtijeva puno više upravljanje i puno više komunikacije. Drugim riječima, ako imate 4 ljudi koji rade na istom projektu i svi oni uređivanja isti kod, više ili manje su sve vrste trebate znati što se događa, tako da zahtijeva od vas - Ako dodate neku novu funkciju ste vrsta morati reći ljudima - Ja sam dodao ovo, Promijenit ću to na ovaj način - pogotovo ako se u jako duboke stvari poput modela i kontrolora koji su zapravo ide na utjecati na to kako stranica radi. Cijeli tim treba biti svjestan toga, tako da je potrebno da biste bili sigurni da niste odabiru preveliku tim da će biti teško da bi taj komunikaciju. Također ne žele izabrati dovoljno malih tim da se ne ide na biti u stanju komunicirati, jer to je samo vas. Još jedna stvar koju treba uzeti u obzir je ravnoteža gdje ljudi vještine. To je super, ako ste svi jako dobri programeri. Ali, ako ste sve back-end ljude, a zatim vaše stranice se neće izgledati vrlo dobro jer imate ovu veliku bazu podataka, i to super-brze upite pretraživanja - što je super - ali kad idete na njega, to je kao mjestu 1990 s crvenim i plavim svugdje, a to nije dobro bilo. Uočite da je Ben i ja raditi kao tim su jako lijepe, jer ja sam nekako više na prednjem kraju, oboje smo u interakciji u srednjem kraju, a Ben je jako dobar s back-end stvari, tako se to radi jako dobro, jer možemo stvoriti bilo koju stranicu i zapravo rupe u tom mjestu koje je potrebno da se napuni može popuniti ni jedan od nas, ili možda oboje. Vi želite biti sigurni da ne postoje rupe u svom timu. To je u redu ako ima malo preklapanja. Drugim riječima, ako imate 2 osobe koje su i dobro s leđa kraj, da može biti dobar kao i zato što oni mogu pomoći jedni drugima s problemima da su oni koji imaju. To može biti problem ako imate samo jedna osoba koja je odgovorna za određenu stvar a oni se izvoditi u problem, tako da ne želim da se malo preklapaju ali što je najvažnije želite biti sigurni da su sve moguće rupe popunjena. Zadnja stvar - a to bi trebalo biti očito, ali to često nije. Vi stvarno želite da se zabavljaju. Poanta ove konačnog projekta u CS50 i često točka izradu web stranica u cjelini Nije to samo obaviti posao, jer to treba raditi. Vi stvarno želite da se zabavljaju, a vi želite da se izradi nešto da se motivira za rad na njemu. Ako sve što radite je bol sjesti i raditi, onda ti ne odabiru pravi projekt. Vi želite odabrati nešto što ćete naći zanimljive, stvarno želite vidjeti rezultat, da ste uzbuđeni kad ste dobili novu ideju o nešto što biste mogli učiniti - tako da se sve vrste projekata postoje to sam siguran možete pronaći - svatko ima nešto što bi stvarno ih zaintrigirati ako oni rade web-based projekt. Ja ću ga opet reći upravo sada. Ako je Vaš projekt izgleda kao bol, a vi ne želite raditi na njemu, odabrati još jedan projekt. Odaberite nešto što vas uistinu nadahnjuje. Ben spomenuo ovaj koncept iteracije malo, a ja želim ići preko njega malo. To je jako važno za rad u spurts gdje ti dobiješ nešto funkcionalan. To može biti velika ako imate ovaj plan za web stranicu koja će učiniti A, B i C, i na kraju to će doći. Ali ste zapeli u ovoj fazi u kojoj radite na tome i radi na tome, , ali ništa se nije uzimajući učinili. Vi nemate ništa za vidjeti i opipljiv, funkcionalnu stvar. Ono što stvarno želite raditi koliko god se čini svojevrsnu bol ponekad raditi na nečemu i onda na neki način cap off, tako da je barem stabilna, trčanje Verzija čak i ako nema sve značajke koje želite. A možda postoje neke značajke koje stvarno želite dodati, ali da jednostavno ne može jer želite da se ove stranice funkcionalne točke. I tako želite vrsta ima cijeli proces razvoja izgledaju kao da. Želite li početi negdje funkcionalna - ili bitno početi s ništa - ali želite da se negdje vrlo osnovni i funkcionalna. A onda opet, napraviti neku vrstu skoka i doći negdje funkcionalna opet. Polako ćemo izgraditi, a to bi moglo ići malo sporije nego što bi inače, , ali na duge staze, ako ste stalno zaglavi u ovoj srednjoj fazi prizemlju, gdje ste zapravo ne moraju ništa raditi, to može biti jako velika frustracija raditi na svom projektu, jer uvijek si tako blizu dobivanja što radi, i to nitko nikada zapravo radi. Želite raditi u tim funkcionalnih spurts, i vi želite napraviti neki odraz nakon svake od njih. Drugim riječima, nakon što se na mjestu gdje je stranica sada radi - to ne mora sve što vam se sviđa, ali to ipak neke stvari - Želite li misliš, u redu, je li ovo mjesto ostvarenju cilja koji sam zacrtao da će učiniti? Drugim riječima, ako je stranica koja će učiniti X, je ono što sam radio u smjeru X? Jesu li sve funkcionalnosti koje sam tamo htjeli? A osim toga, on je služio ukupnu svrhu što želim? Ako ste nalaz da je vaš site je počeo skretati u drugom smjeru ili možda se stvari nekako se ne radi out, možda je vrijeme da se mijenja brzine malo. Drugim riječima, to je vrijedno razmatranja - to vrijedi bacanje iz ideje, ako je potrebno i obzirom sam ja stvarno radi na tome što ja želim biti. Vjerujem da je moja sljedeća točka. Nemojte se bojati da napuste ideje. Samo zato što je proveo puno vremena radeći na lice i na kraju je dobio što radi, ali to stvarno ne ide tako dobro - kao što to nije to korisno ili korisnici imaju problema s njegovim korištenjem - takve stvari - nemojte se bojati da ga bacim. To je sranje koje ste proveli puno vremena radeći na njemu, , ali u konačnici ne želite site koji je nekako složiti po tim komadima koji vrsta posla, ali ne da je dobro služio. Također, ne bojte se prihvatiti nove ideje. Ako netko dođe i kaže, hej, da stranica izgleda jako cool, ali Ne bi to čak i bilo super da ona također to učinio? Samo zato što je to nešto što niste namjeravali i nešto što nije u vašem naočale, nešto što niste zacrtao da će učiniti, nemojte se bojati da se to na i onda raditi s njim. Jer često su ideje koje se pokreću s cijelom toku razvoja završiti kao stvarno cool značajke web stranice. Ja sam to rekao prije. Ja ću opet reći. Ispitivači su super, super korisna. Pokušaj da se ljudi koji nikada nisu vidjeli mjesto prije prijaviti i vidjeti što se događa jer oni ne samo da može testirati korisnost stranice i korisničko iskustvo, , ali oni također mogu testirati funkcionalnost na način da ne možete. Ako bi neki lik koji čini određenu stvar a vi znate da će učiniti to isto ispravno svaki put, to je super. No, to često može biti teško objasniti kutak slučajevima u kojima korisnik može upisati nešto što nisu očekivali - upravo zato što je definirano značajke sebe. Dakle, da netko dođe na koja nema pojma kako koristiti stranicu i samo ga razbiti u svemu načina na koje možete učiniti je stvarno koristan, jer vam dobili ideju iz posve drugačije perspektive onoga što se na vašem mjestu radi i što treba popraviti. Zadnja, ja ću govoriti o nekim općim dobrom praksom, i da ste vidjeli puno njih u CS50, ali oni također jako, jako se primjenjuju u okruženju projekta. Jedan je primjedbe. Uvijek komentirati svoj kod pogotovo ako radite na velikom timu. To može biti tako neugodno da samo imaju div blok koda koji je netko napisao a možda to radi, možda se to ne dogodi, ali nemate pojma što radi, tako da nemam pojma da li je to korisno ili ne i da li bi trebao biti tamo ili ne, i ako radite na nešto drugo to je čak i moguće da radite na ista stvar, pa samo biti vrlo, vrlo oprezni kako bi bili obzirni prema svojim vršnjacima i pisati kod koji je dobro dokumentirana. Ne morate ići tako daleko da to cijelu stvar gdje se sviđa ako prirast brojilo imaju komentar koji kaže, ja sam dodao jedan za ovog pulta. To ne mora biti tako detaljno, ali za bilo koju funkciju koju je ikada pišete trebali imati neku dokumentaciju o tome što to točno znači funkcija, ono što njegovi ulazi su, a što bi trebalo vratiti. Na taj način možete koristiti i druge komponente ljudi na licu mjesta i možete raditi na izgradnji nešto veliko. Još jedna važna stvar je da želite učiniti redovite čiste prozore. Kod dobiva messy. Nemojte se osjećati loše ako vaš broj je samo potpuno nečitljiv i div nered. To se događa u izradu web stranica uvijek. Vi ste dodavanjem novih značajki, uklanjanje starih. Stvari će biti tamo da ne bi trebalo biti. To je u redu, ali želite da biste bili sigurni da se bave koje redovito. Vi ne želite da se izgraditi do točke u kojoj se jednostavno ne može naći ništa u svom kodu, a vi nemate pojma što sve ne. To je slučaj s HTML. Ponekad ćete završiti s objektima koji ne sadrže ništa, i poželjet ćete se riješiti onih. U CSS, možete se odnosi na elemente koji nisu više tamo, tako da želite riješiti taj kod. U JavaScriptu, možda ste ukloniti nešto iz HTML-a. Dakle, želite da biste bili sigurni da ste uvijek čišćenje, čineći stvari prilično koliko god možete na regularnoj osnovi. Još jedna jako korisna stvar koju ja ne mislim da je navedeno jako puno u CS50 ali vrijedi uzimajući u je kontrolu. Ideja kontrolu verzije je kad vi zapravo praćenje sav napredak vi ste napravili prema vašim stranicama, a ako u bilo kojem trenutku ste shvatili, oh, to je radio dok je prije, ali to ne radi više, možete vratiti na prethodne verzije i vidjeti što se promijenilo od tada i takve stvari. Primarni način da to učinite je s Git, a Git je cijela ova vrsta sustava koji Vjerujem Tommy MacWilliam dao seminar o prošle godine. Ako idete u CS50 seminara za 2011, možete vidjeti njegov seminar o tome. Ideja Git je u osnovi da se u redovitim intervalima praviš ove obveze koji su načina da se kaže stranica je u prilično stabilnu verziju upravo sada, tako Ja sam to pakiranje i slanje daleko na server, a onda možete ići u tom poslužitelju i pogled na sve prethodne verzije koda i vidite kako je napredovala i sve to nekako dobre stvari. Dakle, to je u osnovi to. Što se tiče web development, rado ćemo ih staviti oko i odgovoriti na bilo pitanja što se tiče naše prezentacije. To je sve. Hvala. >> [Ben] Hvala. [Aplauz] [Billy] stožera, se bilo tko imati bilo kakvih pitanja o stvarima koje smo pokriveni ili stvari koje nismo smo pokriveni da se oni nadaju da ćemo pokriti? Rado ćemo odgovoriti na njih. Svatko? [Član publike] Koje su prednosti i mane korištenja Ruby ili pomoću Python? [Ben] Pitanje je, koje su prednosti i mane korištenja Ruby ili Python umjesto da kao i PHP. Pros su da je Ruby i Python su puno bolji od jezika PHP. Barem po mom mišljenju, i mislim da u puno tuđih mišljenja, kao dobro. Oni su dizajnirani za obavljanje više stvari složen, i manje za izvanredan zajedno web stranice jako brzo s malo dinamički sadržaj. Kontra su da postoji malo - ima više od krivulja učenja da bi ih postavili. To je, kao što je u PHP-u, možete jednostavno HTML datoteke i pisati manje od, upitnik, a zatim vam napisati neki kod, a zatim vam napisati upitnik, veće od, a onda ste gotovi. U drugim jezicima kao što su Ruby i Python, morate proći kroz malo više posla kako bi dobili početnu stranicu trčanje. Tu je i - barem je nekad bio slučaj - da postoji više dokumentacije dostupan za PHP samo zato što ima više ljudi ga koriste. Ja mislim da nije tako puno problema više. Tu je svakako vrlo dobra dokumentacija za stvari kao što su Ruby on Rails ili Django za Python je ekvivalent. PHP je onaj koji su svi koristili godinama, a znate kako se to radi. Ruby i Python su malo manje zreli. [Član publike] Ako su birati između jednog od njih naučiti ili pokupiti, što bi vi radije? Iskreno, mislim da to ovisi o osobi. Žao mi je. Pitanje je što bi Vas netko naučiti? Smatram Python najljepše osobno. Ima puno ljudi koji su - što sam učinio moj prvi web dev projekt u Python i Django. Ima puno ljudi koji vole Ruby on Rails također. Vjerojatno više ljudi koji znaju Ruby on Rails. Iskreno, ja bih samo ići s onim što su ljudi oko vas znali tako da imate ljude da postavljaju pitanja. Pitanje je - na zajednički poslužitelj je vrsta teško raditi na Pythonu? To ovisi o vašem hosting. Postoje brojne web domaćini koji će postavljati Python stvari. WebFaction to radi, zar ne? WebFaction je onaj koji Billy i ja sam se za neke projekte. Oni su stvarno super. Oni podržavaju većinu jezika. No, istina je da je PHP je mnogo više široko podržan. Dakle, ako ste zapeli na web host da se samo radi PHP, to je dobar razlog za korištenje PHP. [Član publike] Upravo sam dobio u učenju kako da upita neke baze podataka, i znam da je moj SQL je sve više mjesta, ali sam nedavno dobio izloženi - i ti to istaknuo. Vidite JSON i raširiti baze podataka. Moj SQL je još uvijek sve više mjesta. Kako vidite da se to dogodi? Je li će biti sve veći trend za više rastezljiv (nečujan)? Pitanje je - ne mislim da će to biti trend prema ne-SQL bazama podataka. Na primjer, kao što je MongoDB. Mislim da je definitivno istina. Moj savjet je uglavnom ovdje mySQL vezane samo zato MySQL je industrijski standard. Osobno, ja puno radije baze podataka koje nemaju schemos poput MongoDB gdje nemate pitanje, oh, moram dodati još jedan stupac. Jao meni, kao i bilo što drugo da radim? To je vrlo teško učiniti da na MySQL, ali kada imate nešto poput Mongo to je puno ljepše. Druga lijepa stvar o Mongo je da vaši podaci su zapravo JavaScript objekti. Nema vrsta pretvorbe korak gdje trebate uzeti ove retke baze podataka i pretvoriti ih u JavaScriptu objekt, a zatim ih poslati preko žice. Mislim da takve stvari će biti vrlo, vrlo korisno za brzu izradu web stranica u budućnosti. [Billy] Nešto bih dodati što je samo općenito stvar je da Ne osjećam se kao da bi trebao naučila sve jezike koje smo raspravljali iz našeg seminara. Očito se o tome da vam dati ideju o tome što je vani, a ako ste zaintrigiralo bilo od stvari koje smo spomenute možete ih google i pročitati na njih. I kao što sam spomenuo, postoji nekoliko seminara koji se bave upravo tim stvarima. Postoje čak i više seminara koje nisam spomenuo da je vjerojatno ući u ove stvari kao dobro. Ideja je da, ako želite raditi na nečemu, ovdje su alati na raspolaganju. Nemojte osjećati osvaja, ako niste sigurni što ovi alati raditi točno, , ali znam da su tamo i da možete napraviti široku uporabu od njih od strane Googlea. [Član publike] Kakve stvari ti je potrebno učiniti kako bi bili sigurni da vaše web stranice izgleda dobro na mobilnim uređajima? [Billy] Mobilni uređaji su malo teško. Postoji 2 načina na koje je pristup moguć. Prvi način je da zapravo imate mobilni web stranice. Drugim riječima, možete izvesti nekakvu detekciju na početku kada je preglednik koji podnosi zahtjev za svoju web stranicu koja kaže bilo vratiti taj pogled - koji će biti prikaz za desktop ili laptop preglednicima - a ovaj drugi pogled za mobilne uređaje. To je mjesto gdje su pogledi jako lijepo u koji možete prilično mnogo swapa dvije van i imaju sučelje koje radi jako lijepo na mobilnim uređajima i imaju potpuno drugačiji onaj koji radi lijepo na uređajima preglednika. Problem s tim je to traje dugo vremena, jer to znači kodiranje potpuno drugačije sučelje. Drugi način na koji to možete učiniti je - Puno modernim telefonima će prikazati web stranice i pokušati ih čini kao browser bi, i oni daju sve od sebe. Možete vrsta pokušati ostati svjetlo na iznos od jQuery JavaScript koju koristite koji teži da bude u kojima se stvari mogu poći po zlu malo. To je svojevrsni način na koji bi trebali koristiti ako nemate puno vremena. Ako imate vremena za rad na mobilnim sučelje, to je očito vaš najbolji izbor. Mislim da općenito za CS50 projekata, idete da želite odabrati jedan ili drugi. Drugim riječima, želite napraviti mobilnu aplikaciju ili želite napraviti desktop web stranice. I to vrsta određuje gdje idete s tim. No, ako želite proširiti ga kasnije, vjerojatno vaš najbolji kladiti se napraviti još jednu sučelje za druge. Imam malo iskustva u razvoju WordPress-based web stranice. I domaćin osobne web stranice na WordPress za neko vrijeme. One vrste okvira može biti lijepo kao vrlo osnovne stvari. Često ćete samo trčanje u puno prilagodbe pitanja ipak. Vi ćete želite imati nešto izgledati na određeni način ili biti određeni način a vi jednostavno ne mogu, jer je to i poslati u sustav koji to je kako morate činiti stvari koje mogu biti malo problem. Od tada sam nekako bio skloniji raditi s web stranice iz temelja. Za stvari kao što su blog baza podataka i takve stvari to je stvarno ne da teško izgraditi okvir. Ako ste stvarno rastegnut na vremenu, možete naravno koristiti nešto poput WordPress ili tako nešto za blog. Vrste stvari koje blogovi dućan i ne stvarno dosta teško da ako radite u bilo koju od tih vrsta stvari, vjerojatno ste najbolji samo da bi in-house verziju. Mislim da je o tome, tako da još jednom hvala što ste došli. Mi smo stvarno uživali u razgovoru s vama i nadam se da ste naučili neke stvari. [Ben] Mi smo sretni da razgovaraju - moramo ići, ali mi smo sretni što više izvan razgovarati ako imate još jedno pitanje. Hvala još jednom. [Aplauz] [CS50.TV]