[Powered by Google Translate] [Seminar] [Web Development: Nga Ideja në zbatimin] [Ben Kuhn] [Billy Janitsch] [Universiteti i Harvardit] [Kjo është CS50] [CS50.TV] [Billy] Hi, unë jam Billy dhe kjo është Ben. >> [Ben] Hi. Ne do të jetë duke folur për zhvillimin e web sot. [WebDev] [Billy Janitsch dhe Ben Kuhn] Pak rreth nesh parë. Ben është lloj i djalë prapa-fund. Ai i bën gjërat. Dhe pastaj do të shkoj në dhe i bëjnë ato mjaft. Unë jam i përfshirë në masë të madhe me më shumë front-fund lloj të projektimit paraqitjen e gjëra, dhe Ben, nga ana tjetër, e di atë që ai e bën kështu që ai punon në gjëra të prapa-fund. Së bashku ne kemi bërë disa gjëra. Për shembull, vitin e kaluar ne kemi punuar më Gimblium e cila është një studio në internet zhvillim lojë. Kjo ishte projekti ynë final për të klasës, dhe që atëherë ne kemi bërë Harvard klasë e cila është një kornizë online për shfletim dhe kurse pazar në Harvard. Ne jemi duke shkuar për të filluar me këtë ide për faqen tonë të internetit. Ne jemi duke shkuar për të bërë Facebook, por për macet. Para se ju në të vërtetë të bërë këtë faqe interneti, nuk e bëjnë këtë faqe interneti për shkak se ajo nuk është e mirë, por ne do të përdorin atë si një kuadër dhe të kalojnë nëpër procesin e se si kemi marrë këtë ide dhe kthyer atë në një faqe interneti të vërtetë ne mund të përdorni. Ne do të fillojnë duke e thyer faqen e internetit poshtë. Ashtu si ju keni qenë duke bërë në CS50, ju doni të mendoni se çka janë komponentët aktuale që shkojnë në këtë faqe interneti. Në thelb duke e kthyer atë nga një ide e cila është vetëm lloj i një koncept abstrakt në një, gjë e vërtetë të prekshme që ju mund të bëni. Ne fillim duke i pyetur disa pyetje. Çfarë është kjo faqe interneti? Pse jemi duke e bërë atë? Çfarë është ajo do të përdoret për të? Atë gjë e tillë. Në rastin e Facebook Cat, ne thelb duam një faqe interneti që lejon Cats rrjet social me njëri-tjetrin. Ideja është se ata mund të postoni në muret e njëri-tjetrit, ata mund të bëjnë komente, atë gjë e tillë. Dhe kjo është ajo ku kemi ardhur në komponentët funksionale. Ne tani e kemi këtë lloj të kornizës së - ne kemi profilet e përdoruesve, ne kemi komente, dhe ne mund të postoni. Ndoshta një ditë ne do influencë pëlqen dhe atë gjë e tillë. Dhe ne lloj duam të prioriteteve për këto karakteristika të shkuar in Ne duam të themi si, rregull, është e vërtetë e rëndësishme që të gjithë ka një profil dhe që të gjithë mund të postoni në muret e njëri-tjetrit. Mesëm për të se, komentet do të ishte mirë. Ndoshta më vonë ne do influencë pëlqen. Pra, ju dëshironi të keni një ide se çfarë është thelbësore për projektin tuaj dhe çfarë është lloj i një funksion më të përgjithshme që do të mund të zbatohet më vonë. Ju dëshironi që të lloj të ketë një listë të veçantë në mendje, por projekti që ju të filloni me të nuk do të jetë projekti që ju të përfundojë me të. Me fjalë të tjera, gjërat do të ndryshojnë, ndërsa ju jeni duke zhvilluar vendin, dhe ju doni të lënë hapësirë ​​për këtë. Unë do të kthejnë atë mbi të Ben kush do të flasim pak për strukturën. [Ben] Unë jam do të jetë duke folur për anën më teknike të zhvillimit të web. Le të shkojë mbi disa bazat e parë. Kur ju jeni duke bërë një app web, Ndarja kryesore që ju jeni do të duhet të ketë është ju jeni do të ketë disa gjëra në vazhdim e sipër në anën e klientit - që është, kodin që ju jeni shfletuesi merr nga vendi dhe JavaScript, HTML, CSS sende. Kjo është e gjitha në anën e klientit. Ju jeni do të ketë kodin tjetër që shkon në anën e serverit e cila mban gjurmët e të gjitha të dhënat që njerëzit të dërgoni në për ju, vendos që për të dhënë atë, stuff like that. Kjo është vetëm disa terminologji në mënyrë që ju djema janë të gjitha të njohur me atë që ne jemi duke folur për. Përtej kësaj ndarje është e mirë për të menduar për app tuaj web në drejtim të disa komponentëve të dallueshme. Kur ju jeni duke bërë web zhvillim një nga gjërat që ju duhet të jetë duke u përpjekur për të bërë është për të reduktuar kompleksitetin. Më komplekse kodi juaj është më e mundësi ka për të bërë mete, aq më e vështirë është për të ndryshuar më vonë. Pra, nëse ju mund të shpërthejë deri app tuaj në disa zona të veçanta funksionale që do të - dhe ju mund të zvogëlojë lloj të shumës së komunikimit ndër-zonë - që do t'ju ndihmojë shumë në afat të gjatë në drejtim të reduktimit të mete. Për të qenë konkret, zakonisht njerëzit ndajnë një app web në - këto janë lloj fjalë të lëvizje tani, por ata janë ende të dobishme. Ju mund të keni dëgjuar njerëz të flasin për modele, pikëpamje, dhe kontrolluesit. Modelet janë të dhënat aktuale që app juaj është duke shkuar për të marrë me të. Për shembull, në Cat tuaj Facebook, modelet e tua do të jetë - ju do të keni një model për postet si dhe një model për profilet e përdoruesve, stuff like that. Pikëpamjet tuaja janë si ju të pranishëm që të dhënat për përdoruesit e juaj. Ju mund të keni 1 pamje për kërkim në një post të vetëm dhe të gjitha komentet dhe një pikëpamje të ndryshme për mur tuaj që ka një listë të të gjitha postet që janë të drejtuara për ju, dhe një pikëpamje të ndryshme për të ushqyer tuaj të lajmeve - stuff like that. Së fundi, ju keni të kontrolluesit të cilat janë në thelb, kur njerëzit ju dërgojnë postimet dhe ju bëjnë më të reja në sistemin tuaj back-fund, ju rritje të një bandë e kundërvihet, dhe çdo gjë. Ata janë kontrolluesit tuaj. Unë jam do të jetë duke folur kryesisht për modele. Pamjet nuk janë teknikisht e vështirë dhe çështja është më shumë me hartimin e tyre Kontrollorët do të jetë specifike për çdo gjë që ju jeni dizajnimin. Por ka disa teknika mjaft të përgjithshme që ju mund të përdorni për të bërë modele tuaj nicer dhe më e lehtë për të punuar me të që unë mendoj se janë shumë të dobishme. Kjo është më së shumti do të jetë se si të merren me Apps web tuaj të dhëna në një mënyrë të bukur. Çështjet kryesore me modele janë se ata jetojnë në të klientit dhe serverit dhe ju duhet të kuptoj se a) se si të merrni ato - të gjitha ato përkatëse - nga serveri tek klienti, dhe b) se si për t'i mbajtur ata në sync. Përdoruesit tuaj do të duan për të bërë disa të reja. Ata do të dëshironi të bëni postime të reja. Ata do të duan të pëlqen gjëra dhe sende në qoftë se ju keni pëlqen. Ata janë sfidat kryesore teknike që kanë të bëjnë me modele. Gjëja e parë që ju jeni do të dëshironi të pyesni veten është çfarë lloj të të dhënave shkon në këtë model dhe çfarë lloj pyetje do të shkojmë për të duan për të bërë - që është, si do të shohim në modelet e? Për Cat tuaj Facebook shembull, Postimi juaj do të ketë një autor lidhur me të, disa tekst pas mur, dhe një marrësi i postës mur. Dhe pastaj ju mund të dëshironi të query se në një bandë e mënyra të ndryshme. Ju do të duan të shikojnë atë nga i cili shkroi se cili post, nga të cilët ka marrë cila postoni, ndoshta në datën ata ishin postuar. Por në qoftë se ju jeni do të bëni atë sipas datës, atëherë ju duhet të shtoni një tjetër fushë për postin tuaj e kur ajo ishte postuar në të vërtetë. Këto 2 faktorë - çfarë të dhënat që ju dëshironi të përdorni dhe si të doni për të parë atë - ju duhet të mendoni për ta parë, sepse ata varen nga njëri-tjetri, dhe ajo do të jetë më e vështirë për të shtuar ato më vonë. Ka disa konsiderata të tjera. Kur ju jeni duke menduar se si të merren me modelet në server atë që ju dëshironi të shikoni në është - ju doni të bëni në thelb server aq e thjeshtë sa të jetë e mundur. Të bësh gjëra në anën e klientit është përgjithësisht shumë më të shpejtë në qoftë se ju mund ta bëni atë thjesht në klientin pa bërë asnjë lloj të kërkesës rrjetit. Ideja është që të bëjë sa më shumë nga pyetjet, si ju mund të në të klientit. Problemi i vetem me se është se në qoftë se ju të kërkojë të gjitha të dhënat tuaja në fillim atëherë kjo do të marrë një kohë të gjatë për t'u ngarkuar. Pra, ideja është për të arritur një të mesme të lumtur në mes të patur të dhëna të mjaftueshme për klientin që ju mund të bëni më të madhe të punës tuaj atje, por jo vetëm duke ngarkuar të gjitha përnjëherë në mënyrë që ju të merrni herë me të vërtetë i ngadalshëm ngarkesës në fillim. Për shembull, për të dhënat tuaj cat ju ndoshta do të duan që të shkoj të marr një bandë e posteve të fundit mur. Ju nuk do të duan që të shkoj të marr të gjithë ata për shkak se mund të kthehem nja dy vjet. Por ju nuk doni të shkoj të marr ato një në një kohë sepse kjo do të futur një shumë të rrjetit lart. Kjo është shpesh mjaft e vështirë - një herë ju keni një running bazës së të dhënave - shpesh është mjaft e vështirë për të ndryshuar atë që të dhënat që ju keni në të - që është, shtoni një kolonë të ri bazës së të dhënave apo diçka - kështu që një strategji e mirë është në të vërtetë vetëm për të mbajtur një shumë të të dhënave tuaja në një pikë të tekstit - një pikë JSON - JSON duke qenë JavaScript Object simbol - Arsyeja që është e dobishme është për shkak se atëherë ju mund të shtoni prona të reja për të gjitha këto blobs JSON pa ndryshuar bazën e të dhënave tuaja. Dobësitë e vetme për këtë është se në qoftë se ju keni një bandë e fushave që ju të shtuar më vonë - si e fshehur në atë pikë të JSON - atëherë është e vështirë për të query ata brenda bazën e të dhënave. Për shembull, në qoftë se ju më vonë - në qoftë se keni pasur modelin tuaj postare që kemi diskutuar më parë me vetëm autorin, marrësit dhe tekstit - ju gjithashtu mund të ketë një pikë JSON dhe pastaj më vonë në qoftë se ju të kërkuar për të shtuar një fushë datë ju nuk do të duhet të ndryshojë bazën e të dhënave tuaja. Ju vetëm mund të shtoni datat për të gjitha fushat e tekstit. Dhe pastaj ju do të jetë në gjendje për të parë në ato në anën e klientit, por ju nuk do të jetë në gjendje të query ata në anën e serverit sepse është e fshehur brenda atë tekst. Çështja tjetër që ju doni të mendoni për është se si klienti juaj dhe serveri juaj do të komunikojnë. Ju zakonisht dëshironi të mbani këtë aq e thjeshtë sa të jetë e mundur. Ju mund të keni vetëm si një të marrë së me Të-këtë kërkesë të të dhënave, një krijuar-a-ri-objekt gjë, dhe një kërkesë për freskimin e-nje-vjetër-objekt. Dhe këto do të jenë të gjitha URL-të e ndryshme në një server që ju - se shfletuesi do - ju mund të përdorni kërkesat AJAX për të gjitha këto dhe ose të marrë ose të dhëna pas. Përsëri, për Cat tonë Facebook shembull, ju mund të keni se URL për të marrë një post individual, dhe ju do të keni një URL për të krijuar një post të ri mur dhe ndoshta një URL për ngarkimi foto e profilit tuaj, gjëra si kjo. Por përsëri, kjo është për të para-shkoj të marr më të madhe të të dhënave tuaja në mënyrë që ju nuk keni për të mbajtur duke e bërë kërkesa të rrjetit. Për këtë arsye, ju nuk mund të dëshironi që të ketë atë kërkesën individuale për të marrë një post të vetëm, dhe në vend të kësaj ju do të duan vetëm 1 kërkesë të merrni për të gjithë murin. Dhe pastaj në qoftë se jeni duke u përpjekur për të arritur një ekuilibër sepse - kjo është gjithashtu do të varet në aplikimin tuaj. Sepse në qoftë se ju jeni duke pritur që njerëzit vetëm kanë 10 ose 20 postimet mur që do të jetë mirë. Por nëse ju jeni duke pritur ata do të kemi mijëra pastaj se kërkesa do të marrë shumë kohë, dhe kështu që ju mund të dëshironi të shtoni një marrë-gjitha-postimet-viti parametër. Për të gjitha këto që ju jeni me siguri do të duan të sync të dhënat tuaja në JSON - JavaScript simbol Object. Shumë e shumë çdo gjuhë merret me JSON shumë mirë. JQuery ka këtë funksion bukur getJSON që do të bëjë të gjithë punën e madhe për ju. Dhe në PHP ka edhe funksione shumë të bukur të komunikimit JSON. Pra, kjo është ndoshta format më e mirë për dërgimin modele tuaj mbrapa dhe me radhë. Si një shembull i asaj që kemi folur deri më tani, këtu është një shembull për rrjedhjen Cat aplikimin tuaj në Facebook. Ajo fillon me shfletuesin tuaj kërkues website URL bazë. Server ndoshta do të dërgojë mbi HTML statike dhe disa JavaScript dhe CSS. Kjo është zakonisht më e mirë që të mos bëni ndonjë pasqyrim në server. Ju ndoshta nuk duan të - çfarë server nuk është duke bërë nuk është duke shkuar poshtë listën e posteve muri dhe gjenerimin e një HTML për çdo një dhe dërgimin se mbi. Kjo është zakonisht më të mirë për të bërë atë në anën e klientit, sepse ndryshe çdo herë që doni të ri-të nxjerrë diçka, ju duhet të bëni një kërkesë server. Dhe se shumë shpejt ju jep një shumë të lart. Kjo është zakonisht më të mirë vetëm për anije lëshon statike HTML dhe pastaj JavaScript dhe CSS që do të bëjë pasqyrim në anën e klientit. Sa më shpejt se stuff vjen në, atëherë ju mund të ketë - në JavaScript - ju mund të bëni kërkesat për të dhënat mur dhe stuff like that, dhe pas se serveri është në thelb vetëm duke bërë pyetje bazës së të dhënave dhe kontrolluar lejet. E vetmja gjë e rëndësishme është se ajo nuk mund të dërgojë më shumë se disa përdorues të tjerë postimet mur se ju nuk jeni i lejuar për të parë. Ajo në thelb mund të jetë një shtresë shumë e hollë qasje në bazën e të dhënave tuaja, dhe pastaj të gjitha duke treguar të dhënat - të gjitha pikëpamjet dhe sende - ata mund të ndodhë në shfletuesin tuaj, dhe pastaj kur ju doni të bëni një post apo diçka ju thjesht dërgoni një kërkesë tjetër. Ka gjithashtu disa sende të dashuroj ju mund të bëni në krye të kësaj. Në kushtet e dhëna më specifike teknike, zhvillimin në të thjeshtë JavaScript mund të jetë pak e dhimbshme, kështu që ka disa biblioteka dhe mjetet që do të ju ndihmojnë shumë me këtë. Unë mendoj se ju keni të gjithë ndoshta dëgjuar për jQuery që e bën duke bërë pasqyrim HTML dhe manipulimi shumë më e lehtë - kanë shumë funksione të dashuroj për vyshket në dhe jashtë, dhe duke bërë animacione gazmor. Ka gjithashtu kjo bibliotekë të quajtur Underscore.js. Ajo ka një shumë të funksioneve të dobishme të shërbimeve, gjëra që ju do të presim JavaScript që të ketë se ajo doesnt të vërtetë - gjëra të tilla si shuffling një rrjet, hequr kopje identike nga lista, ose rrafshim një listë të listave. Kjo është vetëm një mostër të vogël kod. Underscore ka një ton të këtyre funksioneve bukur që ju dëshironi ju do të keni të gjithë kohën. Dhe pastaj nuk ka 1 bibliotekë më shumë që unë do të doja të shpenzojnë pak kohë në quajtur Backbone.js sepse Backbone të vërtetë ju ndihmon të merren me modelet në anën e klientit dhe një shumë të konfuzionit që mund të shkaktojë. Backbone ju jep këtë koncept të modeleve dhe koleksione në JavaScript të cilat janë në thelb pikërisht si objekte JavaScript në vargjeve JavaScript, por ata kanë ngjarjet, kur ju të ndryshojë pronat e tyre. Ashtu si në JavaScript, ju mund të keni një ngjarje kur një buton merr klikuar apo diçka këto modele shtylla kurrizore dhe koleksionet shtylla kurrizore do të transmetojnë gjëra të tilla si se kur ata të ndryshojnë. Kjo do të thotë që ju mund të shkruani vetëm diçka si këtë copë të kodit këtu - këtë thotë, sa herë që ju të shtoni ndonjë gjë për të posts array ju shlyen të gjithë murin. Dhe kjo do të thotë sa herë që numri një post i pëlqen ndryshon, ju njoftojë përdoruesit që dikush i pëlqente postin e tyre. Ose sa herë që çdo pronë e një post ndryshon ju shlyen postin. Stuff si kjo do të ju kursejnë kompleksitetit, sepse ndryshe në qoftë se ju nuk e kanë një kuadër si kjo atëherë çdo herë në kodin tuaj që ju të ndryshojë çdo gjë në lidhje me një post, ju do të keni për të kujtuar veten për të thirrur të gjithë i bëjnë funksionet e dhe stuff like that, dhe nëse do të donit të shtoni diçka të re që ka ndodhur çdo herë që të modifikuar një post ju do të duhet të kalojnë nëpër çdo vend në tuaj kodin që ju të modifikuar një post dhe të shtoni atë gjë të re. Një kornizë e tillë do të heqë një shumë të asaj mes-shtresa komunikimit që bën kodi juaj komplekse dhe e vështirë për të ruajtur. Nuk është pak për pikëpamjet gjithashtu. Unë jam duke shkuar për të lënë pjesën më të madhe kjo për Billy, sepse ata nuk janë teknikisht shumë e vështirë. Përdorimi jQuery për pikëpamjet tuaja. Është praktikisht si një domosdoshmëri në këtë pikë. Ajo thjesht bën çdo gjë në mënyrë shumë më të lehtë. Nuk janë një shumë e bibliotekave. Nëse ju kanë komplikuar elementet user-ndërfaqe, në qoftë se ju doni një gjë të auto-plotë ose si një nga ato dashuroj shumë-selectors - në qoftë se ju doni diçka të tillë, ju duhet ndoshta kërko vetëm rreth dhe ju mund të gjeni një bibliotekë të mirë që do të bëjë atë që ju dëshironi. Billy do të shpjegojë më shumë për pjesët në të vërtetë të vështira të pikëpamjeve. Gjithashtu, si një shënim anë, shtylla kurrizore ka disa funksionalitetin për të bërë shikime komunikojnë bukur me modele - shikoni në dokumentacionin për të gjitha këto biblioteka, në të vërtetë. Vetëm shikoni në docs. Ata janë të shkruara shumë mirë dhe të lehtë për t'u ndjekur. Në përgjithësi, ju mund të shumë e shumë vetëm Google në qoftë se ju keni probleme. Ka shumë njerëz përdorimin e tyre. Unë mendoj se kjo është si një shënim të fundit. Ka edhe disa gjëra më të avancuar që ju mund të bëni nëse jeni duke kërkuar për të bërë app tuaj web shtesë awesome. Ju mund të bëni - Specifikimi i ri HTML5 ka shumë gjëra të dashuroj që mund të bëni. Magazinimit lokale - e cila është që ju mund të ruajtur të dhënat në shfletuesin - në vend që të shkojnë prapa dhe të lexoj server për çdo gjë, ju mund të mbani një pjesë e saj në të klientit dhe lejon që edhe njerëzit - në disa raste ajo mund edhe të ju lejojnë të përdorni webpage offline. Ka kjo gjë quhet websockets të cilat janë një lloj të ndryshme të komunikimit të rrjetit ku në vend të vetëm që ju të bëni një kërkesë, ju merrni përgjigje dhe ju jeni bërë, ju mbani të hapur një lidhje me server dhe kështu ju mund të bëni gjëra të tilla si përditësime në kohë reale. Pra, nëse ju jeni duke u përpjekur për të bërë një app chat, ju mund të përdorni websockets për të komunikuar mbrapa dhe me radhë në mënyrë që ju nuk do të duhet për të mbajtur të kërkuar, "Oh, server, e dikush të më dërgoni një bisedë?" çdo 10 sekonda apo diçka. Ka gjithashtu një tipar interesant HTML5 ku ju mund të bëjë atë të duket si URL e faqes po ndryshon ndonjëherë pa pasur nevojë të vërtetë ringarkoni atë. Ju mund të përdorni butonat prapa dhe përpara pa bërë një bandë e kërkesave të rrjetit. Stuff si kjo është me të vërtetë e dobishme në aspektin e duke e bërë të shpejtë, por edhe të punojnë si një web app duhet. Ka gjithashtu këtë gjë të quajtur CoffeeScript. CoffeeScript është një gjuhë e ndryshme, në të vërtetë, që përpilon deri në JavaScript. Ju do të shkruani të gjithë kodin tuaj në CoffeeScript, dhe pastaj ju drejtuar këtë përpilues, dhe pështyn nga një skedar JavaScript që ju mund të përfshijë në faqen tuaj. Arsyeja që CoffeeScript është e bukur është për shkak se ajo merr shpëtoj shumë Rastet e pazakontë që ka ku JavaScript është e barabartë me të barabartëve, dhe është e barabartë me të barabartë të bëjë gjëra të ndryshme, ose si - ajo ka sintaksën nicer për trajtimin e vargjeve dhe funksionet. Kjo është një copë të vogël të CoffeeScript që prodhon një listë të të gjitha sheshet nga 10 ^ 2 me 1 ^ 2 në mënyrë të kundërt. Siç mund ta shikoni, CoffeeScript shpesh ju lejon të shprehin në 1 linjë ajo do të marrë 5 linjat e JavaScript. Ajo mund të bëjë gjëra shumë më e lehtë. Kjo është pak e sintaksës së re për të mësuar në fillim, por ajo patjetër do të ju bëjë më produktiv në afat të gjatë. Ju mund të përdorni gjuhë të tjera në server se PHP - gjuhë si Ruby, Python, apo ekziston dhe një projekt të quajtur node.js që do të ju lejojnë të përdorin JavaScript në server. Personalisht, unë me të vërtetë, me të vërtetë urrej PHP. Unë thjesht nuk e gëzojnë duke punuar me të. Në qoftë se ju, gjithashtu, mendojnë se ajo është një cluge e tmerrshme e një gjuhe, atëherë ju mund të përdorni një nga këto vend. Në përgjithësi, në qoftë se ju doni të bëni diçka dhe ju nuk e vërtetë e di se si do të bëhet kjo, vetëm kërkoni në Internet. Ka ton dhe ton e burimeve sidomos në - StackOverflow është një njeri i madh. Është ky website ku programuesit shtrojnë pyetje njëri tjetrit. Ju mund të keni të ndeshet me të, nëse ju jeni që ka probleme në grupe me probleme CS50. Dhe ka ton e bibliotekave për të bërë ndonjë gjë shumë e shumë që ju do të dëshironi. Nëse ju doni të bëni diçka dhe ju nuk e dini se si të bëhet kjo, nuk e supozojmë se është e pamundur. Vetëm po shikoj dhe ju mund të gjeni disa burime të mira. Si një gjeneral mbyllë, e takeaways kryesore janë mbajtur gjërat e thjeshta. Më komplekse kodi juaj është në fillim dhe më shumë që të përpiqet dhe të bëjë gjëra të dashuroj, më të gjatë ajo do të marrë për të marrë diçka në të vërtetë funksionale dhe aq më e vështirë do të jetë për të ndryshuar më vonë. Pra, bëni gjëra të pagojë, të lehtë rrugën e parë. Për të shkuar së bashku me atë, mos të jetë i frikësuar e duke hedhur larg kodin e vjetër ose pastrim atë shumë. Në përgjithësi, një herë ju të vërtetë kanë diçka të punës, kjo është shumë më e lehtë për të menduar për se kur ju jeni ende në fazat e fillimit e si mund ta vënë këtë të gjithë së bashku. Është e mirë për të bërë dizajnin dumbest mundshme që punon dhe pastaj të përmirësuar atë iteratively se sa duke u përpjekur për të marrë çdo gjë të drejtë herë të parë. Në kushtet e ndarjes klient-server, provoni dhe për të mbajtur serverin tuaj shumë e thjeshtë - vetëm një bazë të dhënash dhe disa të legalizuara dhe nuk bëni ndonjë punë atje. Bëjë të gjitha stuff tuaj të komplikuar në anën e klientit në shfletuesin në JavaScript sa më shumë që mundeni. Sy përreth për bibliotekat që e bëjnë jetën tuaj më të mirë. Gjithmonë më mirë për të përdorur kodin që dikush tjetër ka shkruar në qoftë se ju - dhe jo për të shkruar atë vetë. Ka shumë gjëra në internet. Google është miku juaj më i mirë. Google është miku më i mirë i programues. Po, patjetër mos kini frikë të shikonte rreth e rrotull për sende. Dakord. Dhe mbi të Billy. [Billy] Në fakt, para se të fillojë me disa sende të projektimit, ka njeri të ketë ndonjë pyetje për Ben rreth çdo gjë që Perëndia i kishte folur për? Mirë, mirë. Përsëri, na tregoni, nëse diçka nuk është e qartë ose në qoftë se ju dëshironi të na për të shkuar mbi diçka pak më shumë. Unë do të hap prapa pak dhe të flasim për pjesët më themelore të projektimit. Ben përmendi modelin e quajtur - vjen keq, modeli pamje kontrollues sistemit e cila është lloj i aspektit teknik, kështu që unë jam duke shkuar për të parë në pikëpamjet në mënyrë specifike, dhe unë jam duke shkuar për të filluar me mënyrën se si ju do të hartojnë një pamje që duket bukur. Këtu është lloj i një template të vërtetë bazë për Cat tonë Facebook. Unë mendoj se ka disa themele në dizajn modern UI që janë me vlerë ringjallet. Ju mund të vëreni se ka shumë hapësirë ​​të bardhë në të gjithë faqen, shumë vend për gjëra. A nuk ndjehen si ju duhet të kungull gjërat në një faqe. Ju dëshironi të lënë shumë hapësirë ​​të hapur, dhe në qoftë se ju shkoni në pothuajse çdo faqe interneti moderne ju do të shihni se ka të bardhë kudo. Ka të bardhë në vende që ju nuk do të presin. Ju e keni këtë paleta ngjyra, dhe është e mençur në fillim për të zgjedhur një gamë ngjyrë që ju jeni do të punojnë me të dhe të zhvillojnë. Ju gjithashtu - ajo ndihmon për të zgjedhur një typeface, dhe në këtë mënyrë ju jeni lloj i punuar me këto bazat konkrete të projektimit. Ju keni llojin tuaj, ju keni ngjyra juaj, dhe pastaj ju mund të lloj përshtaten çdo gjë tjetër në si të nevojshme. Pra, siç thashë, me skemë tuaj ngjyra që ju dëshironi të përdorni ngjyrat e guximshme skemë tuaj ngjyra me masë. Headers janë të këndshme. Buttons janë të mirë që të ketë të vërtetë të mëdha, ngjyra të bie shumë në sy. Por në përgjithësi, në qoftë se ju keni një faqe interneti që ka ngjyrat kudo, të gjithë e ndezur ju në fytyrë, ai thjesht duket cluttered, dhe nuk është e mirë. Ju dëshironi të përdorni ngjyra të lehta në përgjithësi. Mundohuni të, përsëri, të zgjedhë një skemë mjaft koherent ngjyra. Ju mund të keni këto splashes pak e shumë ngjyra - që mund të duket shumë e bukur, por ju doni të përdorni ato goxha me masë. Siç thashë, ju duan të jenë minimale. Më pak është pothuajse gjithmonë e më shumë. Nëse ju mund të shfaqin diçka ose e shfaq diçka, dhe ju jeni lloj i pasigurt nëse ajo duhet të jetë atje nga default - ndoshta ju jeni më të mirë jashtë duke e lënë atë. Ju gjithmonë mund të shtoni atë në më vonë. Po, mbajtur gjërat e thjeshta. Por më e rëndësishmja, ju doni të marrin në konsideratë harton të shumta. A nuk mendoni se kur ju bëni një faqe, ju duhet atë në kokën tuaj që ju jeni do të të bëjë vend në një mënyrë të caktuar, dhe ajo do të duken tamam si kjo. Ajo do të ketë header blu në krye dhe bar anë blu dhe pastaj verdhë sub-goditja gjë. Ju dëshironi të bëni të shumta templates. Ju ose mund të - në qoftë se ju jeni të mirë me Photo Shop, ju mund të hapur atë deri dhe lloj të hartuar një faqe interneti si ju pëlqen që ajo të duket. Nëse jo, ju mund të përdorni vetëm stilolaps dhe letër, por heq dorë dizajne të shumta. Ju dëshironi që të ketë në thelb një formacion ku ju keni shumë dizajne të ndryshme, dhe në qoftë se një përfundon të punës, atëherë kjo është e madhe. Nëse dikush përfundon dështuar, atëherë ju gjithmonë keni një tjetër për ta kthyer për të. Në përgjithësi, nuk do të ndjehen si ju duhet të jetë i kufizuar për çfarëdo dizajn ju fillimisht të vendosur mbi. Designs janë shumë të ndryshueshme, dhe një pjesë e rëndësinë e modelit Sistemi pikëpamje kontrollues është se ju mund të bie në ujdi në dhe nga pikëpamje të ndryshme që ju dëshironi. Ju mund të ndikoj të të dhënave në një mënyrë, dhe pastaj të vendosë, oh, në të vërtetë, kjo nuk funksionon aq mirë. Unë mendoj se është lloj shumë e komplikuar, ose ka një pjesë këtu se nuk është me të vërtetë duke punuar, kështu që unë jam vetëm duke shkuar për të braktisur tërësisht këtë pikëpamje dhe swap në një një krejtësisht të re. Ne ende mund të përdorni modelet e vjetra dhe kontrolluesit e vjetra. Ne mund të bëjmë gjithçka në server dhe klientit, si ne do para. Por vala aktuale e të dhënave si shfaqet do të jetë pak më të ndryshme. Sa i përket në të vërtetë zbatimin e projektimit që ju dëshironi, një herë ju keni një harton disa skicuar në letër apo në Photo Shop apo çfarëdo, ka një numër të mjeteve që janë vënë në dispozicion për ju. E parë që ju jeni shumë i njohur me të cilin është HTML juaj, PHP, ose çfarëdo Gjuha e ju jeni duke përdorur vetëm të kodit faqet statike në web faqen tuaj. Ju keni punuar shumë me HTML të cilat lloj ju jep këto tags që ju mund të vënë gjërat në, dhe në thelb kjo është një mënyrë e organizimit përmbajtjen tuaj. Për shembull, ju keni header deri atje, kështu që ju jeni do të ketë një header tag, dhe ajo do të ketë disa tekst në brendësi të saj e cila është ndoshta do të jetë në një tjetër tag. Pastaj ju keni një sidebar ndoshta me disa lidhje të ndryshme, dhe ata do të të gjithë të jenë në tags veçanta. Pra, në thelb HTML në zemër të saj është një mënyrë për të ndarë deri në faqe se si ju përfundimisht doni të format atë. Pra, përsëri, ju kam parë atë më parë. Ju jeni mjaft të kënaqur me punën me të tani duke qenë se ju keni bërë të pset fundit me shpresë, kështu që duhet të ketë asnjë problem. Pastaj ju keni CSS e cila në thelb merret me të gjitha aspektet e projektimit statike. Ajo do të trajtojë të gjitha ngjyrat, të gjitha të pozicionimin e elementeve të ndryshme, ku shkojnë në lidhje me njëri-tjetrin, sa e madhe ato janë të, llojet e ndryshme të positionings që ju do të keni - me fjalë të tjera, ju mund të keni gjëra të fiksuar në mënyrë që kur ju lëvizni poshtë që ata të qëndrojnë, ose ju mund të ketë gjëra të afërm të elementeve të tjera. Të gjitha të atë lloj stuff është në CSS. Për më tepër, ju mund të bëni dekorata të ndryshme, ju mund të ketë ngjyra tekst, efektet tekst, të gjitha atë lloj stuff. Ben dha një seminar me të vërtetë të mirë në këtë fundjavë e kaluar, dhe kështu që unë patjetër do të shikoni që nëse keni ndërmend për të bërë disa gjëra të zbukuruar me CSS. CSS3 është në të vërtetë versioni më i ri i CSS, dhe kjo mund të bëjë të gjitha llojet e gjërave me të vërtetë bukur. Ajo mund të bëjë një i shkallëzuar, ju mund të ketë bukur, qoshe të rrumbullakosura, ju mund të bëni të gjitha llojet e stuff për të bërë faqen tuaj duken më moderne dhe të sofistikuar. Mjet tjetër është të aktivizoni Java dhe jQuery cila Ben foli pak për, por unë do të merrni pak më larg në. JavaScript, si ju keni punuar me të pak, ose të paktën të parë atë në leksion, është lloj i një mënyrë për të bërë gjëra dinamike në HTML. HTML, siç e dini, është statike, kështu që një herë ju kanë HTML që ju nuk mund ta modifikoni atë. Por JavaScript, në disa mënyra, është një mënyrë që të jetë në gjendje të modifikojë HTML. Kështu që ju mund ta bëjë këtë, dhe kjo është e madhe, por JavaScript me të vërtetë është një dhimbje për të punuar me të. Është aq e gjatë dhe i mpirë dhe për të bërë edhe gjërat e thjeshta kërkon shumë linjat e JavaScript. Pra, jQuery është në thelb një bibliotekë për JavaScript që thjeshton të gjithë se. Ajo thotë, në rregull, në qoftë se ju dëshironi që të ketë një kuti katrore vijnë nga e majta dhe zbehet në faqe në mënyrë që është në mes, në JavaScript që do të marrë - Unë nuk e di, njëqind rreshta për të bërë, dhe kjo do të ishte një dhimbje, dhe ju të dalë nga ajo urren gjithçka rreth programimit web. JQuery ju në thelb kanë të element-dot-zbehet-në, ose diçka të tillë. Funksionet Pra, shumë, shumë të thjeshta që do të ju lejojnë të bëni të gjitha llojet e animacioneve ftohtë dhe se lloj gjë. Gjë tjetër që këto 2 janë të vërtetë e mirë për të është vetëm duke bërë gjëra dinamike me faqen e internetit. Pra, në vend se vetëm duke pasur faqen tuaj HTML - e cila tregon disa të dhëna, por nuk ka të vërtetë bëjë asgjë - JavaScript jQuery dhe do të ju lejojnë të ketë butonat që ju mund të klikoni në, dhe ju mund të tërhiqni elementet dhe ri-kërkesës tyre dhe lloj e tyre, dhe të ketë elemente të reja shtuar ose hequr. Ju mund të shtoni-fshini, atë gjë e tillë. Pra, jQuery ka ton e gjëra të freskët. Dhe Vipul është në të vërtetë duke i dhënë një seminar mbi të sot, unë besoj se, në 5-ora, kështu që nëse ju mund të rrinë rreth për atë kohë, që do të - 5 apo 4? Katër. Më vjen keq. Është në fakt menjëherë pas kësaj, kështu që unë do të rekomandojë ngjitës rreth për atë nëse mundeni. JQuery është super, super të dobishme, dhe ju do të jetë në gjendje të bëjë shumë gjëra të vërtetë të bukur me të për shumë e shumë çdo projekt të zhvillimit web. Tani unë jam duke shkuar për të marrë në lloj të një dallim. Unë kam qenë duke folur kryesisht për ndërfaqen e përdoruesit. User interface është vetëm dizajni i faqes. Por ka lloj tjetër koncept që është user experience. Të dy janë shumë të ndryshme. Interface është padyshim pjesë e përvojës. Me fjalë të tjera, kur ju shkoni në një vend, ju shikoni në ndërfaqe. Kjo është pjesë e se si ju përvojë site. Por përvoja përdorues është më shumë se kaq. Përvoja User është në lidhje me atë përshtypje që përdoruesi merr nga faqja e juaj është. Pra, natyrisht, interface është një pjesë e asaj. Dhe kjo është padyshim një pjesë e domosdoshme, por kjo nuk është e mjaftueshme. Me fjalë të tjera, nëse ju keni një ndërfaqe të bukur, dhe është e bukur dhe të gjallë dhe të gjithë se, kjo është e madhe, por në qoftë se përdoruesi shkon në faqen tuaj, sheh një plan urbanistik të bukur dhe është e hutuar nga çdo gjë, nuk ka asnjë ide se si për të bërë asgjë, atëherë padyshim që ju keni bërë një të vërtetë website i varfër. Kjo është lloj i user experience ku vjen in Unë do të flasim pak për dizajn UX - UX është e shkurtër për user experience - dhe lloj si ju mund të bëni të sigurtë që ju keni një përvojë të mirë të përdoruesit. Pika e parë është se ju mund të hartuar një faqe interneti, ku një përdorues mund të bëjë asgjë që se ndoshta përdoruesi dëshiron. Por në qoftë se përdoruesi nuk mund të kuptoj se si për të bërë gjëra - me fjalë të tjera, në qoftë se përdoruesi nuk ka një ide e mirë, kur ata të shkojnë në faqen tuaj të, "Oh, në qoftë se unë dua të rinovuar profilin tim, atëherë unë klikoni këtë buton, ose në qoftë se unë dua të postoni në mur e dikujt, pastaj do të shkoj në murin e tyre dhe të klikoni në një kuti të vogël. " Nëse shfrytëzuesi nuk e di se, atëherë ju keni në mënyrë efektive në të vërtetë nuk zbatuar këtë funksionalitet në mënyrë korrekte. Një pjesë e zbatimit të një funksionalitet është se përdoruesit janë në të vërtetë në gjendje të përdorin atë. Dhe kjo mund të jetë frustruese - ju mund të bëni një vend, dhe kjo mund të bëjë të gjitha llojet e gjëra të mrekullueshme, por pastaj ju do të keni njerëz të provuar atë dhe të thonë, "Ai nuk mund ta bëjë këtë. Pse nuk mund të bëjë këtë? "Dhe ju do të thoni përsëri në ta, "E pra, ajo mund të. Ju thjesht duhet të shkoni në të 7-drop-down menu për këtë errët Faqja që vetëm është gjetur nga një lidhje në këndin poshtë-djathtas "apo diçka. Natyrisht, ju nuk doni që. Ju dëshironi që ajo të jetë e qartë për përdoruesit e juaj se çfarë ata janë duke menduar për të bërë, dhe ajo duhet të jetë e thjeshtë dhe intuitiv për ta. Një tjetër gjë që ju doni të provoni të bëni është, në qoftë se dikush do të shkojë në faqen tuaj dhe 9 nga 10 herë bëjmë veprimit A, dhe 1 nga 10 herë bëjnë të veprimit B, ju ndoshta dëshironi të përqëndrohet në përvojën e tyre të veprimit A. Me fjalë të tjera, ju doni të bëni atë shumë, shumë e qartë se si të bëhet A. Një duhet të jenë të para-dhe-qendër - shkoni në këtë faqe interneti, e shohin atë, oh, kjo është e drejtë atje. Ndërsa B natyrisht që ju dëshironi që të jetë i qartë, por ju mund të lënë atë pak më shumë në sfond. David jep një shembull të mirë të këtë në leksion, cila eshte sistemi Boston T. Kur ju shkoni në T Bostonit dhe ju doni për të blerë një biletë, ju duhet të merrni në 5 menutë e vërtetë para se të mund të blini një biletë për një vlerë $ 2, $ 2,50, e cila është sa duhet për të ngasin metro në një drejtim. Kjo është një problem, sepse shumica e njerëzve të cilët janë të hipur në metro ndoshta thjesht duan të shkojnë në një vend, të blerë biletën e tyre, të marrë në menjëherë. Kjo nuk ka kuptim që ata duhet të kalojnë nëpër shumë menutë e ndryshme për të arritur atje. Një përdorues përvojë më të mirë do të jetë një buton të shpejtë në faqen e parë që vetëm të thotë: "blej një biletë me një kalim," dhe se do të vinte në të gjitha standardit vlerat default, dhe pastaj në qoftë se dikush dëshiron të blej një biletë të ndryshme se sa që, ata ende, sigurisht, keni mundësi për të, por ju keni optimizuar për rasti i përbashkët përdorim e cila është me të vërtetë e rëndësishme. Ju mund të shihni shembuj të kësaj në Facebook, e drejtë? Nëse ju shkoni në Facebook dhe ju dëshironi të postoni një status, është e drejtë në krye të cilën është ajo që ju shpesh doni të bëni. Sa më shpejt që ju të hyjë në faqen, ju mund të bëni gjërat më të zakonshme që ju doni të bëni. Nëse ju doni të bëni gjëra pak më të komplikuara si, thonë se unë dua të shkoj në mur mikut tim dhe të postoj një foto në të - të cilat unë do të dëshironi të bëni shpesh, por jo aq shpesh sa postimi përditësimet e statsit - kështu që në këtë rast, unë shkruani emrin e tyre në kutinë në krye, klikoni mbi profilin e tyre, dhe më pas, ende, është e drejtë në krye ka një herë unë kam marrë për të profilit të tyre. Përsëri, unë kam optimizuar në prioritet për rastet më të zakonshme me përdorim. Një tjetër gjë e rëndësishme është se shpesh njerëzit do lloj i të përpiqen për të marrë rreth kësaj duke thënë: në rregull, kështu që unë e kam bërë faqen e internetit dhe njerëzit e kanë të konfuze, dhe kjo është një problem, apo jo? Natyrisht, unë nuk dua që njerëzit të jenë të hutuar nga përmbajtja e web faqen time. Por mënyra për të zgjidhur që nuk është që të kemi diçka pop up duke thënë: hej, unë jam do të mësojmë se si të përdorni këtë faqe. Hapi 1 - klikoni këtë buton. Hapi 2 - shkoni këtu. Sure, kjo është një mënyrë për rreth tij - kjo është një mënyrë që ju mund të tregoni njerëzve se çfarë të bëjë, por është e me të vërtetë nuk është mënyra optimale. Nëse unë shkoj në një faqe interneti dhe papritmas unë jam duke bombarduar me këtë tutorial që është thënë mua çfarë të bëjnë dhe ku të shkoni dhe të gjithë që, kjo nuk është e bukur për mua. Kjo nuk është një përvojë e mirë për mua. Kjo është lloj i një dhimbje. Unë dua të vetëm të fillojnë të bëjnë gjëra. Njerëzit janë duke shkuar për të mbyllur nga kutia e dialogut, ose të marrë nga tutorial, nuk dini çfarë të bëni, dhe pastaj ankohen sepse ju nuk e keni thënë atyre se çfarë të bëni. Mënyra për të zgjidhur këtë nuk është duke i dhënë çdo lloj tutorial apo drejtime - diçka të tillë. Sa më shumë që ju mund të shmangur atë, ju me të vërtetë doni për të treguar përdoruesit se çfarë të bëjë thjesht nga natyra e se si në faqen e internetit është hedhur jashtë. Me fjalë të tjera, kur të shkoj te Facebook pa prerje-transportim trupash në, gjëja e parë që unë shoh në faqen kryesore - kjo është një kuti të vogël login. Pra, duh. Unë duhet të hyni in Kjo është e drejtë atje. Ndërsa, në qoftë se unë shkova në Facebook dhe unë kam për të klikoni një lidhje të vogël në pjesën e poshtme se ka thënë 'hyni' dhe pjesa tjetër e faqes ishte vetëm një lloj foto apo diçka, Unë nuk do të vërtetë e di se çfarë të bëjë, apo jo? Unë do të ngatërrohet. Pra, ajo mund të më thoni për të shkuar atje poshtë dhe klikoni butonin që të hyni, ose log në butonin mund të jetë e drejtë në krye ku unë jam duke shkuar për të parë atë. Ju dëshironi që të jetë gjithmonë duke i treguar përdoruesit se çfarë të bëjë, dhe që duhet të jetë e natyrshme në faqen e vetë. Kur ju jeni duke menduar për harton dhe përqeshjen e deri mënyra të ndryshme të shprehur faqen tuaj, ju me të vërtetë doni të mendoni për atë që përdoruesit do të të jetë bërë dhe se si ju mund të tregoni atyre se çfarë të bëjnë. Një gjë e fundit është duke testuar është me të vërtetë, të vërtetë e rëndësishme. Ajo është e madhe për të marrë dikush - të marrë një mik, të marrë dikush ju nuk e dini as - që kurrë nuk është parë faqen e internetit para se të përdorur këtë faqe interneti. Sepse ju keni qenë duke punuar në vend për orë të tëra, ju keni qenë ndezur në të, dhe ju e dini saktësisht se çfarë duhet të bëni në mënyrë të qartë që ju jeni do të jetë testimi gjërat që ju keni qenë duke punuar në dhe që ju e dini punën. Por në qoftë se dikush tjetër vjen së bashku dhe përdor vend që kurrë nuk e ka përdorur atë përpara, kjo është një eksperiencë unike për shkak se ju keni dikë që nuk ka njohuri të para e faqe që shkon në të, kështu që ata do të kenë në mënyrë efektive asnjë ide se çfarë të bëjë ose çfarë lloj të rasteve të përdorimit janë të pranishme për ta. Kjo është e madhe. Kjo është unik për shkak se ata janë në thelb një person me një bosh për një mendje. Ata mund të ju tregojnë nëse diçka është konfuze ose të paqartë. Ata mund të ju jap një ide se pikërisht ajo user experience e faqes tuaj është. Ajo mund të jetë shumë e vështirë për të të treguar se veten, kështu që patjetër do të inkurajoja të të si ju jeni zhvillimin e projekteve tuaja - nëse jeni duke bërë projekte të web-bazuar - për të marrë njerëz duke përdorur këtë faqe interneti sa më shpejt që ju keni disa lloj demo funksionale. Tani unë jam duke shkuar për të folur pak për mënyrën se si për të menaxhuar një projekt të zhvillimit web. Ne kemi shkuar rreth asaj se si ju mund të bëni në anën prapa-fund teknik, se si ju mund të hartohet një faqe të vërtetë të mirë, dhe kjo është e madhe në qoftë se ju jeni duke punuar me veten, por - edhe në qoftë se ju jeni duke punuar me veten dhe sidomos në qoftë se ju jeni duke punuar në një ekip, menaxhimin e projektit bëhet një çështje e madhe. Ju keni dëgjuar lloj e rreth menaxhimit të projektit në forma të ndryshme që nga viti shkollës fillore, kur ju u tha punën në grup. Ju duhet të bashkëpunojnë, të komunikojnë, të gjithë se. Që të gjithë ende vlen këtu, por ka disa rrethana unike me shkenca kompjuterike që ju duan të jenë të vetëdijshëm, dhe ju doni të bëni të sigurtë që ju të trajtojë mirë. Unë do të flasim së pari pak për ekipin që ju do të jetë in Është shumë e rëndësishme të marr madhësinë drejtën e një ekipi që do të punon në, dhe në projektin tuaj përfundimtar Unë mendoj se ju keni mundësi për të zgjedhur në mes të 1 dhe 4 persona në qoftë se unë jam i saktë. Ju dëshironi të bëni të sigurtë që ju nuk jeni vetëm duke zgjedhur numrin e njerëzve që ju dëshironi të punoni me të, sepse ata janë miqtë tuaj. Ju dëshironi të zgjidhni një ekip që është një masë e mirë dhe se do të marrë punë të bërë. Ka një off tregtisë të ketë më shumë njerëz kundrejt më pak njerëz. Nëse ju keni më shumë njerëz, natyrisht më shumë punë mund të bëhet sepse ju keni shumë njerëz, shumë të kodit, shumë ide, dhe kjo është e gjitha e madhe. Por kjo gjithashtu kërkon shumë më tepër menaxhim dhe shumë më tepër komunikimin. Me fjalë të tjera, në qoftë se ju keni 4 njerëzit që punojnë në të njëjtin projekt dhe ata janë të gjithë redaktimi kodin e njëjtë, pak a shumë të gjitha llojet e nevojës për të dini çfarë po ndodh kështu që kërkon nga ju - në qoftë se ju shtoni një funksion të ri që ju lloj keni për të të treguar njerëzve - Jam duke shtuar se kjo, Unë jam duke ndryshuar këtë në këtë mënyrë - veçanërisht nëse ju merrni në gjëra me të vërtetë të thellë si modele dhe kontrollorëve që janë në të vërtetë në vazhdim e sipër për të ndikuar se si punon vend. I gjithë ekipi duhet të jetë i vetëdijshëm për këtë, kështu që ju duhet të bëni të sigurtë që ju nuk jeni të zgjedhur një ekip shumë të madh që do të jetë e vështirë për të bërë që komunikimi. Ju gjithashtu nuk duan të zgjedhin një ekip të vogël të mjaftueshme që ju nuk jeni do të jenë në gjendje të komunikojnë, sepse kjo është vetëm ju. Një tjetër gjë për t'u marrë parasysh është bilanci i ku aftësitë e njerëzve janë. Është e madhe në qoftë se ju jeni të gjithë programuesit të vërtetë të mirë. Por nëse ju jeni të gjithë njerëzit prapa-fund, atëherë faqja e juaj është e nuk do të duken shumë të mirë sepse ju e keni këtë bazë të dhënash të madhe, dhe kjo e bën kërko pyetje super-të shpejtë - e cila është e madhe - por kur ju shkoni për të, është si një faqe 1990 me të kuqe dhe blu kudo, dhe kjo nuk është e mirë as. Vini re se Ben dhe kam punuar si një ekip janë shumë të mirë sepse unë jam lloj shumë në fund para, ne të dy bashkëveprojnë në fund të mesëm, dhe Ben me të vërtetë mirë me sende të prapa-fund, kështu që punon vërtetë mirë, sepse ne mund të projektimit çdo vend dhe në thelb gropat në atë vend që duhet të jetë e mbushur mund të plotësohet nga ose një prej nesh, ose ndoshta të dyja. Ju dëshironi të bëni të sigurtë që nuk ka vrima në ekipin tuaj. Është në rregull nëse ka pak e mbivendosjes. Me fjalë të tjera, në qoftë se ju keni 2 njerëz që janë të dy të mira me fund mbrapa, që mund të jetë i mirë edhe për shkak se ata mund të ndihmojnë njëri-tjetrin me probleme që ata janë të pasur. Ajo mund të jetë një problem në qoftë se ju keni vetem 1 person i cili është përgjegjës për një gjë të caktuar dhe ata të drejtuar në një problem, kështu që ju dëshironi që të ketë pak mbivendosje por më e rëndësishmja ju doni të bëni të sigurtë që të gjitha vrimat e mundshme janë të mbushura. Gjëja e fundit - dhe kjo duhet të jetë e qartë, por kjo shpesh nuk është. Ju me të vërtetë duan të jenë të kesh kënaqësi. Qëllimi i këtij projekti final në CS50 dhe shpesh pika e zhvillimit web në përgjithësi nuk është që vetëm të bëjë një punë për shkak se ajo ka nevojë për të bërë. Ju me të vërtetë duan të jenë të kesh kënaqësi, dhe ju doni të jetë bërë diçka që e motivon ju për të punuar mbi të. Nëse çfarëdo që ju jeni duke e bërë është një dhimbje që të ulen dhe të punojnë në, atëherë ju nuk jeni të zgjedhur projektin e vërtetë. Ju dëshironi të zgjidhni diçka që ju të gjeni interesante, ju me të vërtetë duan të shohin rezultatin ju jeni të ngacmuar kur ju të merrni një ide të re për diçka që ju mund të bëni - kështu që nuk ka të gjitha llojet e projekteve atje që unë jam i sigurt ju mund të gjeni - të gjithë kanë diçka që me të vërtetë do të intrigës e tyre nëse ata janë duke bërë një projekt web-bazuar. Unë do të thonë se ai përsëri tani. Nëse projekti juaj duket si një dhimbje dhe ju nuk duan të punojnë në të, zgjidhni një tjetër projekt. Zgjidhni diçka që me të vërtetë ju frymëzon. Ben përmendur këtë koncept e pak përsëritje, dhe unë dua të shkoj për atë pak. Është me të vërtetë e rëndësishme për të punuar në spurts ku marrin diçka funksionale. Ajo mund të jetë i madh në qoftë se ju e keni këtë plan për një faqe interneti që do të bëjë A, B, dhe C, dhe në fund ajo do të merrni atje. Por ju jeni të mbërthyer në këtë fazë ku ju jeni duke punuar mbi të dhe të punës në të, por asgjë nuk është duke u bërë. Ju nuk keni asgjë për të parë dhe një gjë, funksional të prekshme. Çfarë ju me të vërtetë dëshironi të bëni sa më shumë që duket lloj të një dhimbje ndonjëherë për të punojnë në diçka dhe pastaj lloj kapak atë mënyrë që ajo është të paktën në një të qëndrueshme, duke version edhe nëse ajo nuk ka të gjitha karakteristikat që ju dëshironi. Dhe ndoshta ka disa karakteristika që ju me të vërtetë doni për të shtuar, por ju thjesht nuk mund të për shkak se ju doni të merrni këtë faqe në një pikë funksionale. Dhe kështu që ju doni të lloj ketë procesi i tërë zhvillimit të duket si kjo. Ju dëshironi të fillojë diku funksional - ose në thelb të fillojë me asgjë - por ju doni të merrni diku shumë themelore dhe funksionale. Dhe pastaj përsëri, të bëjë një lloj të kërcejnë dhe për të marrë diku funksionale përsëri. Ju ngadalë do të ndërtuar, dhe kjo mund të shkojë pak më ngadalë se sa do ndryshe, por në afat të gjatë në qoftë se ju jeni të mbërthyer vazhdimisht në këtë fazë të mesme terren ku ju nuk në të vërtetë nuk kanë asgjë të punës, ajo mund të jetë një zhgënjim të vërtetë e madhe për të punuar në projektin tuaj, sepse ju jeni gjithmonë në mënyrë të ngushtë për të marrë atë të punës, dhe kjo është në fakt nuk punojnë. Ju dëshironi që të punojnë në këto spurts funksionale, dhe ju gjithashtu duan të bëni disa reflektim pas secilit. Me fjalë të tjera, një herë ju jeni në një pikë ku vendi tani është duke punuar - kjo nuk do të keni gjithçka që ju pëlqen, por ajo ka disa gjëra - ju doni të mendoni, në rregull, është ky vend të realizuar qëllimin që unë e përcaktuar për të bërë? Me fjalë të tjera, në qoftë se vendi do të bëni X, është ajo që unë kam punuar në drejtimin e X? A janë të gjitha funksioneve që kam kërkuar atje? Dhe për më tepër, është ajo në shërbim të qëllimit të përgjithshëm që unë dua? Nëse ju jeni të gjetur se faqja e juaj ka filluar të largohem në një drejtim tjetër ose ndoshta gjërat vetëm lloji i nuk janë duke punuar jashtë, mund të jetë koha për të zhvendosur ingranazhet pak. Me fjalë të tjera, është e konsideruar vlerë - është e vlefshme hedhur nga idetë e nëse është e nevojshme dhe duke pasur parasysh jam unë me të vërtetë duke punuar drejt atë që unë dua të jem. Unë besoj se është pika ime e ardhshme. Mos kini frikë për të braktisur idetë. Vetëm për shkak se ju shpenzuar shumë orë duke punuar në një funksion dhe më në fund mori atë që punojnë por me të vërtetë nuk është duke shkuar aq mirë - si ajo nuk është se e dobishme apo përdoruesit janë duke pasur probleme duke e përdorur atë - këtë gjë e tillë - mos kini frikë për të hedhur atë larg. Ajo sucks se ju keni shpenzuar shumë kohë duke punuar në atë, por në fund të fundit ju nuk doni një vend që është lloj i vënë së bashku nga këto pjesë që lloj pune, por nuk janë të shërbyer atë mirë. Gjithashtu, mos kini frikë për të përqafuar ide të reja. Nëse dikush vjen së bashku dhe të thotë, hej, që faqja duket me të vërtetë e ftohtë, por nuk do të ishte edhe të jetë i madh në qoftë se ajo edhe e bëri këtë? Vetëm për shkak se kjo është diçka që ju nuk e keni ndërmend dhe diçka që nuk është në tuaj syze, diçka që ju nuk e keni përcaktuara për të bërë, mos kini frikë për të marrë atë në dhe pastaj të punojnë me të. Për shkak se shpesh idetë që ju të drejtuar me të gjithë rrjedhën e zhvillimit të përfundojë si tiparet me të vërtetë e ftohtë të internetit. Unë e kam thënë këtë më parë. Unë do të thonë se ai përsëri. Testers janë super, super të dobishme. Përpiqen për të marrë njerëz të cilët kurrë nuk kanë parë faqen para se të hyni në dhe të shohim se çfarë po ndodh sepse ata mund të testuar jo vetëm dobinë e faqes dhe user experience, por ato gjithashtu mund të provuar funksionimin në mënyra që ju nuk mund. Nëse ju bëni disa veçori që e bën një gjë të caktuar dhe ju e dini se do të bëjë këtë njëjtën gjë si duhet çdo herë të vetme, kjo është e madhe. Por kjo shpesh mund të jetë e vështirë për të llogari për rastet qoshe ku një përdorues mund të shkruani diçka që nuk keni qenë duke pritur - pikërisht për shkak se ju të përcaktuara karakteristikat veten. Pra, të ketë dikush të vijë në të cilët nuk ka asnjë ide se si për të përdorur këtë faqe interneti dhe për të vetëm të thyer atë në çdo gjë që mënyra që mund të bëjnë është me të vërtetë e dobishme për shkak se ju të marrë një ide nga një perspektivë krejtësisht të ndryshme të asaj që në faqen tuaj është duke punuar dhe atë që ka nevojë për riparim. E kaluar, unë jam do të flasim për disa praktika të mira të përgjithshme, dhe ju keni parë shumë këto në CS50, por edhe ata me të vërtetë, të vërtetë të aplikojnë në një mjedis të projektit. Njëra është komente. Gjithmonë të komentuar kodin tuaj veçanërisht nëse ju jeni duke punuar në një ekip të madh. Ajo mund të jetë aq i bezdisshëm që të ketë vetëm një bllok gjigand të kodit që dikush e shkruar dhe ndoshta kjo funksionon, ndoshta kjo nuk ka, por ju nuk kanë idenë se çfarë ajo bën, kështu që ju nuk kanë idenë nëse kjo është e dobishme apo jo, ose nëse ajo duhet të jetë atje apo jo, dhe në qoftë se ju jeni duke punuar në diçka tjetër është edhe më e mundur që ju jeni duke punuar në e njëjta gjë, kështu që vetëm të jenë shumë, shumë të kujdesshëm që të jenë të vëmendshëm e shokët tuaj dhe shkruani kodin që është e dokumentuar mirë. Ju nuk keni për të shkuar aq larg sa për të bërë të gjithë gjë ku të donte, nëse ju ardhura një kundër të ketë një koment që thotë, unë jam duke shtuar 1 të këtij banak. Ajo nuk duhet të jetë që të hollësishme, por për çdo funksion që ju jeni ndonjëherë shkrim ju duhet të keni disa dokumente të asaj që funksioni saktësisht bën, çfarë inputet e saj janë, dhe atë që duhet të kthehen. Në këtë mënyrë ju mund të përdorni të komponenteve të tjera të njerëzve të faqes dhe ju mund të punojnë për ndërtimin e diçka të madhe. Një tjetër gjë e rëndësishme është që ju doni të bëni të rregullta të pastër-ups. Kodi i merr çrregullt. Mos u ndjeni keq nëse kodi juaj është vetëm krejtësisht i paqartë dhe një rrëmujë gjigant. Kjo ndodh në zhvillimin e web gjithmonë. Ju jeni duke shtuar veçori të reja, duke hequr ato të vjetra. Stuff do të jetë atje që nuk duhet të jetë. Kjo është në rregull, por ju doni të bëni të sigurtë për t'u marrë me atë rregullisht. Ju nuk duan të le të ndërtuar deri në pikën ku ju thjesht nuk mund të gjeni ndonjë gjë në kodin tuaj, dhe ju nuk kanë idenë se çfarë bën çdo gjë. Ky është rasti me HTML. Ndonjëherë ju do të përfundojë me objekte që nuk përmbajnë asgjë, dhe ju do të duan të heqin qafe ato. Në CSS, ju mund të duke iu referuar elementeve që nuk janë më aty, kështu që ju doni të heqin qafe atë kod. Në JavaScript, ju mund të keni hequr diçka nga HTML. Pra, ju doni të bëni të sigurtë që ju jeni gjithmonë pastrimin, duke e bërë gjëra mjaft sa më shumë që ju mund të në mënyrë të rregullt. Një tjetër gjë me të vërtetë e dobishme që unë nuk mendoj se është paraqitur shumë në CS50 por është e vlefshme duke marrë në është version kontroll. Ideja e kontrollit version është kur ju jeni në thelb mbajtja e progresin e ju keni bërë drejt faqen tuaj dhe në qoftë se në çdo moment ti e kupton, oh, kjo ishte duke punuar një kohë më parë, por ajo nuk është duke punuar asnjë më shumë, ju mund të shkoni përsëri në versionet e mëparshme dhe të shohim se çfarë ka ndryshuar që atëherë dhe atë gjë e tillë. Mënyra kryesore për të bërë këtë është me Git, dhe Git është ky lloj i tërë sistemi që Unë besoj Tommy MacWilliam dha një seminar në lidhje me vitin e kaluar. Nëse ju shkoni në seminaret CS50 për vitin 2011, ju mund të shihni në seminarin e tij për këtë. Ideja e Git është në thelb që në intervale të rregullta ju jeni duke e bërë këto angazhime cilat janë mënyrat e thënë vend është në një version shumë e qëndrueshme tani në mënyrë Unë jam paketimit atë dhe duke e dërguar atë larg me një server, dhe pastaj ju mund të shkoni në atë server dhe të shikojmë në të gjitha versionet e mëparshme të kodit tuaj dhe të shohim se si është përparuar dhe të gjitha atë gjë e gjëra të mira. Pra, kjo është në thelb ajo. Sa i përket zhvillimit të internetit, ne jemi të lumtur që të rrinë përreth dhe çdo përgjigje pyetje sa i përket prezantimit tonë. Kjo është ajo. Thanks. >> [Ben] Thanks. [Duartrokitje] [Billy] Stafi, ka njeri të ketë ndonjë pyetje rreth gjërave që ne i kemi mbuluar ose gjërat që ne nuk kemi mbuluar se ata ishin duke shpresuar ne do të mbulojë? Ne do të jenë të lumtur për t'iu përgjigjur atyre. Çdokush? [Anëtar audiencë] Cilat janë të mirat dhe të këqijat e përdorimit Ruby ose duke përdorur Python? [Ben] Pyetja ishte, cilat janë të mirat dhe të këqijat e përdorimit Ruby ose Python në vend të si PHP. Pro janë që Ruby dhe Python janë gjuhë shumë më të mirë se PHP. Të paktën sipas mendimit tim, dhe unë mendoj se në një shumë të mendimeve të njerëzve të tjerë si. Ata ishin dizajnuar më shumë për të bërë gjëra të ndërlikuar, dhe më pak për bujshëm bashku faqet web të vërtetë të shpejtë me pak e përmbajtjes dinamike. Të këqijat janë se ka një pak - ka më shumë një kurbë të mësuarit për të marrë ato të ngritur. Kjo është, si në PHP, ju vetëm mund të ketë një file HTML dhe ju shkruani më pak-se, pikëpyetje, dhe pastaj ju shkruani disa kodin, dhe pastaj ju shkruani pikëpyetje, madhe-se, dhe pastaj ju jeni bërë. Në gjuhë të tjera si Ruby ose Python, ju duhet të kalojnë nëpër një pak më shumë punë për të marrë fillestar site running. Ka gjithashtu - të paktën ajo përdoret për të jetë rasti - se ka më shumë dokumentacion në dispozicion për PHP vetëm sepse ka më shumë njerëz duke përdorur atë. Unë mendoj se nuk është aq shumë e një çështje më. Ka me siguri dokumentacioni shumë i mirë për gjëra si Ruby në binarët ose Django për Python është ekuivalente. PHP është ai që të gjithë ka qenë duke përdorur për vite me rradhë, dhe ju e dini se si funksionon. Ruby dhe Python janë pak më pak të pjekur. [Anëtar audiencë] Nëse ju do të zgjidhni në mes të një prej tyre për të mësuar apo të marr, e cila do të preferonit? Sinqerisht, unë mendoj se varet nga personi. Më vjen keq. Pyetja ishte e cila do të ju të vini për dikë për të mësuar? Gjej Python nicest personalisht. Ka shumë njerëz të cilët - Unë i pari projekti im web dev në Python dhe Django. Ka shumë njerëz të cilët si Ruby on Rails gjithashtu. Ndoshta më shumë njerëz që e dinë Ruby në binarët. Sinqerisht, unë do të shkoj vetëm me çfarëdo njerëzit rreth jush e di kështu që ju keni njerëz të bëni pyetje. Pyetja ishte - në serverat e përbashkët është ajo lloj i vështirë për të punuar në Python? Kjo varet nga hosting tuaj. Ka një numër i ushtrive web që do të postoni gjëra Python. WebFaction bën këtë, apo jo? WebFaction është ai që Billy dhe unë kam përdorur për disa projekte. Ata janë me të vërtetë e madhe. Ata mbështesin më gjuhë. Por është e vërtetë se PHP është mbështetur shumë më gjerësisht. Pra, nëse ju jeni të mbërthyer në një web host që vetëm bën PHP, kjo është një arsye e mirë për të përdorur PHP. [Anëtar audiencë] Unë kam vetëm në të mësuarit se si të query disa bazave të të dhënave, dhe unë e di SQL im është i të gjithë vendin, por unë kohët e fundit u ekspozuar për të - dhe ju vuri atë. Ju shikoni JSON dhe bazat e të dhënave expandable. SQL im është ende në të gjithë vendin. Si e shihni se ndodh? A ka do të jetë një tendencë në rritje për më shumë expandable (i padëgjueshëm)? Pyetja ishte - nuk mendoj se do të jetë një prirje drejt bazave të të dhënave jo-SQL. Për shembull, si MongoDB. Unë mendoj se është patjetër e vërtetë. Këshilla ime është kryesisht mySQL të lidhura këtu vetëm sepse mySQL është standard industri. Personalisht, unë më shumë preferoj bazat e të dhënave që nuk kanë schemos si MongoDB ku ju nuk keni çështjen e, oh, unë duhet të shtoni një tjetër kolonë. Mjerë unë, si çdo gjë duhet të bëj? Është shumë e vështirë për të bërë që në mySQL, por kur ju keni diçka si Mongo kjo është shumë nicer. Gjëja tjetër e bukur për Mongo është që të dhënat tuaja të vërtetë janë objekte JavaScript. Nuk ka asnjë lloj hapi konvertimit ku ju duhet të merrni këto rreshta bazës së të dhënave dhe kthyer ato në një objekt JavaScript dhe pastaj t'i dërgonte mbi tela. Unë mendoj gjëra si kjo do të jetë shumë, shumë i dobishëm për zhvillimin e shpejtë të internetit në të ardhmen. [Billy] Diçka që unë do të shtoja që është vetëm një pikë e përgjithshme është se mos të ndjehen si ju duhet të keni mësuar të gjitha gjuhët që kemi diskutuar nga seminari tonë. Natyrisht pikë është që të ju jap një ide se çfarë është atje, dhe në qoftë se ju jeni të intriguar nga ndonjë nga gjërat që ne kemi përmendur që ju mund të Google ato dhe të lexoni deri në to. Dhe siç e përmenda, ka disa seminare që kanë të bëjnë me të pikërisht këto gjëra. Ka edhe shumë seminare që unë nuk e kam përmendur që ndoshta të marrë në kjo stuff si. Ideja është se në qoftë se ju dëshironi të punoni në diçka, këtu janë mjetet në dispozicionin tuaj. A nuk ndjehemi të zhytur plotësisht në qoftë se ju nuk jeni me të vërtetë i sigurt se çfarë të bëjë pikërisht këto mjete, por e di se ata janë atje dhe se ju mund të përdorni të gjerë prej tyre nga Google. [Anëtar audiencë] Çfarë lloj gjëra ju duhet të bëni për të siguruar faqen tuaj te internetit duket e mirë në pajisje të lëvizshme? [Billy] pajisjet celularë janë pak të vështirë. Ka 2 mënyra që ju mund ta kontaktoni atë. Mënyra e parë është se ju në të vërtetë keni një website celular. Me fjalë të tjera, keni kryer një lloj të zbulimit në fillim kur shfletuesi është bërë kërkesën për faqen tuaj te internetit të cilat ose thotë kthyer këtë mendim - i cili do të jetë mendimi për desktop ose laptop shfletuesit - dhe kjo pikëpamje të tjera për pajisje të lëvizshme. Kjo është një vend ku pikëpamjet janë me të vërtetë mirë në atë që ju mund të shumë e shumë swap dy jashtë dhe kanë një ndërfaqe që punon vërtetë mirë në pajisje të lëvizshme dhe të ketë një të krejtësisht të ndryshme që punon mjaft mirë në pajisje të shfletuesit. Problemi me këtë është ajo merr një kohë të gjatë, sepse kjo do të thotë kodim një ndërfaqe krejtësisht të ndryshme. Mënyra tjetër që ju mund ta bëjë këtë është - një shumë e telefonave moderne do të shfaq faqet e internetit dhe të përpiqet që të merr ato si një shfletues do, dhe ata e bëjnë të mirën e tyre. Ju mund të lloj të përpiqen për të qëndruar dritë mbi sasinë e jQuery JavaScript që ju jeni duke përdorur e cila ka tendencë të jetë ku gjërat mund të shkojnë keq pak. Kjo është lloj i mënyrës që ju duhet të përdorni në qoftë se ju nuk keni se shumë kohë. Nëse ju nuk keni kohë për të punuar në një ndërfaqe të lëvizshme, kjo është padyshim opsioni tuaj më të mirë. Unë mendoj se në përgjithësi për projektet CS50, ju jeni do të duan të zgjedhin një ose tjetër. Me fjalë të tjera, ju doni të bëni një app celular apo ju doni të bëni një faqe interneti desktop. Dhe kjo lloj përcakton se ku ju shkoni me këtë. Por në qoftë se ju doni të zgjeruar atë më vonë, ndoshta bast tuaj më të mirë është për të bërë një ndërfaqe për të tjera. Unë kam pak përvojë në zhvillimin e faqet WordPress-bazuar. I priti një faqe interneti personale në WordPress për pak kohë. Këto lloje të kornizave mund të jetë e bukur po aq shumë gjëra themelore. Shpesh ju do të kandidojë vetëm në një shumë të çështjeve customizability pse. Ju do të dëshironi që të ketë diçka të shohim një mënyrë të caktuar ose të jetë një mënyrë të caktuar dhe ju thjesht nuk mund të për shkak se është e vështirë-Wired në sistemin që kjo është se si ju duhet të bëni gjëra të cilat mund të jetë pak e një problemi. Që atëherë unë kam qenë lloj më të prirur për të punuar me vendet nga toka lart. Për gjëra të tilla si bazave të të dhënave blog dhe atë gjë e tillë nuk është e vërtetë se e vështirë për të ndërtuar një kornizë. Nëse ju jeni të shtrirë me të vërtetë për kohën, ju mund të përdorni sigurisht diçka si WordPress ose atë gjë e tillë për një blog. Llojet e gjërave që blogs dyqan dhe nuk janë me të vërtetë mjaft e vështirë që në qoftë se ju jeni drejtimin në ndonjë nga ato llojet e gjërave, ju jeni me siguri më të mirë vetëm për të të bëjë një version në shtëpi. Unë mendoj se kjo është në lidhje me të, kështu që falë përsëri për të ardhur. Ne me të vërtetë gëzuar duke folur për ju djema dhe shpresoj që ju të mësuar disa gjëra. [Ben] Ne jemi të lumtur për të folur - ne kemi për të shkuar, por ne jemi të lumtur për të folur më shumë jashtë në qoftë se ju keni një pyetje tjetër. Thanks përsëri. [Duartrokitje] [CS50.TV]