JASON HIRSCHHORN: Benvenuto tutti a otto settimane. Abbiamo una settimana emozionante davanti a noi. Voi ragazzi sono tuffato in questa coppia passato di lezioni a PHP, SQL, HTML, CSS, così quattro lingue nuovo di zecca che sono in corso a prendere il resto di questo corso. Impareremo anche un paio di altri lingue prima della fine del corso. Ma comunque, manco a dirlo, si tratta di una momento molto emozionante in CS50, ora si hanno imparato C, apparentemente, e sono passare alla programmazione per i siti web. Così questa settimana, stiamo per andare avanti un tour attraverso le quattro lingue che ho appena menzionato, HTML, CSS, PHP e SQL. E si spera, lasceremo un sacco di tempo alla fine della sezione per parlare su P set e la risposta di questa settimana tutte le domande che tutti abbiamo. Ogni settimana, lo stesso elenco di risorse per voi, per aiutarvi con della settimana problema di set e andando sul materiale - ma questa settimana in particolare, per questi insiemi di problemi basati sul Web, esistono serie di altre risorse su lì che si dovrà probabilmente trovare incredibilmente disponibile. Li ho qui. Ti email È questo dopo la sezione, e questo sarà anche online. Ma in particolare, ci sono molti di grandi risorse là fuori. Ci sono anche alcuni non così grande quelli, quindi diffidare di quelli. Ma in questa diapositiva, ho quattro buone risorse, uno per ciascuno dei lingue che lavorerete con questa settimana - un foglio di riferimento per HTML, un foglio di riferimento per i CSS. Questo qui è il manuale PHP. Così, invece di digitare l'uomo e poi un PHP comando, questo è dove si farebbe andare a cercare il prototipo di funzione e di esempi e anche alcuni consigli e trucchi per usare funzioni PHP. Potrai utilizzare questo sito spesso, così io incoraggio a diventare familiarità con esso. Può essere un po 'tecnico, ma fornisce anche una tonnellata di risorse e esempi per tutte le funzioni e anche altri, come il modo di utilizzare le matrici o diversi tipi di variabili. Questo sito è molto utile per PHP. E poi, per SQL, se si tuffato in questa problema di set di settimana, saprete che stiamo usando un database. E noi accedere a tale database attraverso relativamente bella interfaccia utente. O questo è un modo per accedere tale database. L'interfaccia utente è chiamato phpMyAdmin. C'è una scheda SQL, che faremo guardare più tardi oggi. Ed è possibile digitare nella loro SQL campione query, per fare le cose nel database e quindi eseguire le query. E se sono corrette, sarà dire, di questo corretto. Se sono corretti, che sarà per esempio, è errato. Questo è un luogo ideale per praticare il vostro Query SQL prima di scriverle in il codice, per essere sicuri di nel formato corretto. Infine, un altro sito web qui. Questo è il sito dove è possibile andare a controllare per assicurarsi che il Il codice HTML è valido. Quindi, prima di trasformare i vostri problemi di set questa settimana, assicurarsi che tutti il codice HTML è valida. La scorsa settimana, si era correre valgrind, a assicurarsi che aveva perdite di memoria. Questa settimana, è necessario assicurarsi che tutte del codice HTML5 è valido. Se non è HTML5 valido, sei andare a prendere punti fuori. Quindi assicuratevi - solo perché funziona non significa che è del tutto valido. Eseguire il codice tramite questo sito web Prima di accendere dentro Ancora una volta, ecco il sito web. Se avete tutte le risposte per me, abbiamo un paio di più sezioni sinistra, e ho sempre voglia di fare quello che posso per tutti voi di fornire la migliore sezione esperienza possibile. Quindi fatemi sapere se c'è qualcosa che possiamo fare per migliorare o se ci sono cose che si vedono che avrei potuto fare di meglio. Grazie, Avi. Mettete sul sito web. Questa è stata la moto che ho avuto quando ho è stato, diciamo, quattro in casa. Si tratta di un Ninja Turtle Teenage Mutant mountain bike, nel caso in cui non si può dire, perché è un po 'sfocata. Si può ottenere ora al ToysRUs per, credo, circa $ 100. Ma la caratteristica di questa moto che voglio di prestare attenzione a questi sono proprio qui. Queste sono le ruote di formazione. Fino ad ora, siete stati palmare attraverso C. E abbiamo preso una lunga tempo, due mesi in più, passare attraverso C. Per questi prossimi due lingue, non stiamo andando a spendere così tanto tempo. Le ruote di formazione sono venuta fuori. E stiamo andando a tuffarsi in questi linguaggi rapidamente e muoversi attraverso rapidamente, il che non vuol dire che stiamo solo andando a lasciare il nuoto là fuori con alcun modo per sostenere te o capire come questi lingue di lavoro. Ho appena mostrato un elenco di risorse per aiutarvi. Ma tenete a mente che PHP è incredibilmente simile al C. Andremo oltre oggi e alcune delle differenze. Ma per la maggior parte, ci sono cicli for. Ci sono se condizioni. Quando si vuole risolvere un problema, hai intenzione di usare una combinazione di questi. E 'molto simile. La logica dovrebbe essere molto simile a quello che hai fatto in passato. Cosa c'è di veramente nuovo di questa settimana è l' sintassi e come ti esprimi. E si vuole scrivere un ciclo for, ma potrebbe sembrare un po 'diverso. O se si vuole creare un array, ma potrebbe sembrare un po 'diverso. Quindi, tenere a mente che, andando avanti, la logica è molto simile a quello che hai fatto in passato. Ma si sta ora andando a incontrare un sacco di nuova sintassi. E non abbiamo intenzione di camminare attraverso tutti gli elementi della sintassi. Quindi è davvero a te a capire, online o tramite raggiungere il Discutere o me email o parlare l'un l'altro, come scrivere le cose in PHP e come scrivere query SQL e come usare HTML e CSS. Ma solo così sai, non è che stiamo cercando di buttare fuori là di nuovo a nuotare gli squali. Questo è ciò che si dovrà probabilmente fare con il progetto finale, se si sceglie un lingua diversa, come IOS e Objective C, o se si decide di iniziare programmazione in futuro e tuffarsi in altre lingue, come Python o Ruby. Spesso, la logica è molto simile in tutte queste lingue, e la sintassi è ciò che è diverso. E spetterà a voi, come il programmatore, per andare utilizzare il web risorse disponibili e figura il modo di esprimere ciò che si sa come esprimere in C, in un lingua diversa. Quindi questa è una buona pratica, sia per la vostra progetto definitivo, e di nuovo, per quello che probabilmente fare dopo aver lasciato CS50. Prima di passare, lo fa nessuno Per qualsiasi domanda su cosa Io ho fatto finora? Grande. Andiamo avanti. In primo luogo, stiamo andando a parlare brevemente sul comando chmod. Questo, faremo all'inizio dei vostri problemi di set. Uno dei primissimi istruzioni per lei, dopo aver scaricato il codice di distribuzione, è quello di cambiare la permessi dei file e directory che ricevete. Qualcuno può azzardare un'ipotesi o conoscere perché è importante per cambiare l' permessi di alcuni file e directory sul vostro computer? Avi - AUDIENCE: Allora nessuno tranne che per si può vedere cosa stai facendo? JASON HIRSCHHORN: OK. Quindi, se vogliamo mettere qualcosa sul web e avete impostato le autorizzazioni che solo tu puoi vedere qualcosa, quindi nessun altro può vedere quello che hai creato. Che altro? Già. AUDIENCE: Evitare chiunque altro che si non vogliono vedere qualcosa, da vedere qualcosa. JASON HIRSCHHORN: Questo è anche vero. Probabilmente c'è un codice che si scrive, che non si fa vogliono che la gente vede. Probabilmente siete OK con la gente vedendo il codice HTML e la tua JavaScript. Ma il vostro PHP, un codice di back-end, un sacco di la logica al codice, forse il cose che memorizzano alcune delle tue password per il database, non è necessario vogliono che la gente a vedere che tipo di informazioni. Quindi è importante che, ogni file e Elenco creiamo dispone di autorizzazioni applicabile a se o non vogliamo persone a vedere questi tipi di file e directory ed essere in grado di accedervi e potenzialmente persino cambiare. Quindi ci sono tre tipi di autorizzazioni. C'è un permesso di lettura, il che significa è possibile leggere un file o una lista contenuto della directory. C'è il permesso di scrittura, che significa che è possibile modificare un file o una modifica una directory e poi l'esecuzione autorizzazione, il che significa che è possibile eseguire un file, o meglio, è può muoversi in una directory. Così CD qualcosa, se avete la il permesso di eseguirlo, è possibile spostare in quella directory. Questo è un breve esempio. Anche in questo caso, sei andato su questo nel problema posto. Ma creo una directory con il comando mkdir. Posso cambiare i permessi. Queste due linee effettivamente fare la stessa identica cosa. È per illustrare che la sintassi per la modifica delle autorizzazioni, se si fa la a + x o 711, quelli sono gli stessi. Guardiamo giù in questo bel tavolo. Vediamo che ci sono utente autorizzazioni prima. Che tu, l'individuo è, e il server, potenzialmente. E poi c'è gruppo e altri. Le differenze tra chi due sono relativamente banale. Quindi in generale, abbiamo ammasseremo quelli insieme. Ma, in sostanza, se abbiamo un file chiamato comprende che vogliamo essere in grado di modificare noi stessi e che vogliamo altri per essere in grado di eseguire, è l'autorizzazione 711. E vediamo che verso il basso qui in questa tabella. Abbiamo una lettura, scrittura ed esecuzione. Per ciascuno di noi, vogliamo essere in grado di fare quelle. Gruppo e gli altri, noi vogliamo solo loro di essere in grado di eseguire. Il nostro modo di tradurre che in un numero di l'autorizzazione è attraverso binario. Quindi, se abbiamo tre quelli, che è un 1 nella colonna quelli, un 1 nelle due a due colonna, colonna 1 dei quattro zampe. Ecco 7 proprio lì. E questa autorizzazione è 1. Questa autorizzazione è 1. Quindi 711 quando è lo stesso dando noi lettura, scrittura ed esecuzione, e tutti gli altri privilegi di esecuzione. Questa linea qui, generalmente avrà leggere e scrivere quando abbiamo creare una directory. Quindi questa linea qui aggiunge semplicemente eseguire privilegi a tutti. Quindi, che sarebbe simile a, in Oltre a quello che abbiamo, aggiungendo 1, 1, 1 a tutti. Considerando questo, è inutile per aggiungere leggere e scrivere. Ma se avete intenzione di utilizzare i numeri, non si può semplicemente aggiungere qualcosa. Si sovrascrivere qualunque autorizzazione fosse lì e la loro attuazione con il nuovo numero si dà. Che era piuttosto veloce. Qualcuno ha domande sulla modifica delle autorizzazioni? OK. Se ho un file PHP, quali autorizzazioni faccio desidera avere? Questo è nel set problema spec. Così si può guardare la specifica e poi mi leggere la risposta. PUBBLICO: Si desidera che l'utente avere i permessi di lettura-scrittura. E volete tutti altrimenti non avere niente. JASON HIRSCHHORN: E che cosa numeri è? AUDIENCE: 600. JASON HIRSCHHORN: 600. Così chmod 600 - ogni volta che si stampa un file PHP, chmod a 600. OK. Ho una directory. Qualcuno oltre a Jeff, Ho una cartella di file. Quali autorizzazioni voglio per dare a quella cartella - anche nel problema proposto spec, proprio sotto questa risposta o la risposta precedente? Anche potenzialmente sulla diapositiva - Marcus. PUBBLICO: Per l' cartella, è 711. JASON HIRSCHHORN: 711 - così una cartella, si vuole dare 711. Si vuole essere in grado di leggere quella cartella, cambiare directory, muoversi in quella cartella. E volete tutti gli altri di essere in grado per navigare all'interno di tale cartella, ma non necessariamente modificarne il contenuto. Che dire di un file non PHP, dire, un file JavaScript? Quali autorizzazioni vogliamo per dare quel tipo di file? AUDIENCE: 644. JASON HIRSCHHORN: 644 - perché vogliamo dare 644? AUDIENCE: per lasciare che altre persone lo leggono. E si legge o scrive. JASON HIRSCHHORN: Quindi a destra, tutti altro può leggere il file JavaScript. E si può cambiare che, oltre ad essere in grado di leggerlo. Così uno dei bug persone più comuni avere con questo problema set e la loro progetto definitivo, se si tratta di una finale basata sul web progetto, che non avrà impostato le autorizzazioni corrette. E non saranno in grado per vedere il loro sito. O una particolare parte del loro sito web. Quindi assicuratevi di impostare la autorizzazioni correttamente. Non dare per scontato che sarà farlo automaticamente per voi. OK. Quella era una piccola cosa che abbiamo trascorso una buona quantità di tempo, in modo abbiamo potuto inchiodarlo. Passiamo a HTML. E ancora, per questi prossimi quattro temi, stiamo andando a passare attraverso di loro in tempi relativamente brevi. Quindi non esitate a fermarmi in qualsiasi tempo, se avete domande, se sono relativi a quello che copro o qualcosa da conferenza o anche dal problema impostato. Stop me ogni volta che è necessario. Quando arriviamo alla fine, ci limiteremo a iniziare andando oltre il problema insieme. Così HTML è l'acronimo di HyperText Linguaggio di markup. Non è un linguaggio di programmazione. Tutto ciò che fa è la struttura tuoi contenuti e anche fornire alcuni metadati. Così, per esempio, presumibilmente, molti dei avete usato Facebook prima. E si può includere collegamenti a, o voi può mettere un link come il tuo stato. E allora, si noterà che collegamento è sempre una bella foto ad essa e del testo. Generalmente, distante alcuni metadati per una pagina web. Ed è metadati Facebook-specifica. E poi, quando Facebook sta leggendo che pagina e inserendo quel link, si cerca il metadati specifici, così sa cosa foto per visualizzare, cosa del titolo per visualizzare e quali testo astratto da visualizzare. Così possiamo includere metadati con la nostra pagina web utilizzando HTML. E ci aiuta anche la struttura il contenuto, in generale, ciò vogliamo andare dove. Tutto in HTML è un elemento. E Elementi proprio qui - questo CS50, testo è l'elemento. E ha alcuni tag. E 'questo un tag. E notiamo c'è un al inizio e poi una barra a, così chiudendo il tag alla fine. A volte, non c'è un open tag e un tag di chiusura. C'è solo una cosa. Vedremo un esempio di tale sulla diapositiva successiva. Quindi non hai bisogno di un open e un tag di chiusura. Ma per questo, stiamo stringe questa Elemento CS50 in un tag di ancoraggio. E in sostanza, questi tag raccontano il browser cosa fare con l'elemento particolare. Quindi, di nuovo, CS50 è il testo stiamo andando a vedere. E sta per essere un tipo di ancoraggio. Anchor è utilizzato essenzialmente per i collegamenti a qualcosa. In particolare, come si può già detto, questo è un collegarsi alla homepage CS50. La parte successiva del tag - o in generale, una parte di tag sono attributi. E vediamo proprio qui, che il tag a ha una attributo, questo attributo href. Ed essi modificano un particolare tag. In realtà, se si va a uno dei siti web o riferimenti che ti ho dato prima o ricercare l'un tag on-line, noterete ci sono un sacco di potenziali attributi. Questo è probabilmente uno dei più comuni. Questo mi sta dicendo di creare un Link al sito specifico. E attribuisce generalmente sono date, se non dato in esclusiva, in coppie chiave-valore. Quindi, ecco la chiave, href. E il valore è questo qui. E che sarà utile in seguito, quando cominciamo con alcune librerie di aiutarci codice in JavaScript o scrivere contenuti HTML. Siamo spesso andando essere - proprio come noi farebbe staffa di matrice 0 e che ci darebbe un certo valore. In futuro, faremo un sacco di cose come staffa qualcosa href. E che ci darà il valore della href, o se vogliamo aggiornare il href chiave e poi dargli un particolare valore. Quindi, proprio come con gli array in cui abbiamo avuto tasto 0 o il tasto 1 o il tasto 2 o anche con un Hash Table, bene, con le tabelle hash così, probabilmente ha avuto - è era un array, così tasto 0, il tasto 1, tasto 2. Tale indice lì, possiamo pensare che come chiave. E il valore è qualunque è stato immagazzinato lì. Tutti questi attributi sono coppie chiave-valore. E che sarà importante per cambiare loro o l'aggiornamento, oppure inserendoli in seguito. Infine, Dopo aver visto questa struttura prima, ma questo è il più fondamentale struttura della pagina HTML. Nella parte superiore, vi diciamo che questo è infatti HTML. E poi abbiamo un open HTML tag e una stretta tag HTML. Quindi, tutto dentro di questo è il HTML. Vediamo la testa e il corpo. La testa del documento generalmente comprende che cosa? Qualche ipotesi per quello che si messo in testa? AUDIENCE: Mettete il titolo e lo stile. JASON HIRSCHHORN: il titolo. Questo è stato un grande congettura. Io ti ho soffiata al. Quali sono alcune altre cose? Abbiamo accennato uno di loro che potrebbe andare in testa. PUBBLICO: Ha detto, gli stili. JASON HIRSCHHORN: Styles - quindi se si desidera collegare in un JavaScript o anche un CSS, che si sta parlando di quando si sta parlando sugli stili. Un altro file, si vuole collegare in un al di fuori del file, che probabilmente va nella testa. Che altro? Abbiamo accennato un paio di diapositive fa una delle cose che HTML può fare per voi. Può fornire - inizia con un M - AUDIENCE: metadati. JASON HIRSCHHORN: Metadata - così un sacco dei metadati andrà nella testa, perché non avrà necessariamente bisogno di ad essere parte del corpo del codice. Questo è in generale - il corpo è l' contenuto, quello che qualcuno vede. E così ho dato via la risposta alla mia prossima domanda. Ma nel corpo è generalmente contenuto che sta per essere visualizzato sulla pagina web. Come vedremo, i siti web complessi tendono a mescolarsi o modificare a ciò hanno messo nella testa e il corpo. Ma in generale, la testa contiene cose che l'utente non sta per vedere sullo schermo. Esso collega in altri file e fornisce metadati. Considerando che, il corpo contiene tutto l'utente è andare a vedere. Qualsiasi idea di cosa significa questo tag p? PUBBLICO: Il paragrafo? AUDIENCE: Stampa. AUDIENCE: Non significa stampa. AUDIENCE: Significa punto? JASON HIRSCHHORN: Paragrafo - quindi questo è un paragrafo. E questo tag p, ho potuto appena digitato questo sullo schermo e poi inclusa una interruzione di linea al termine di essa. Qualcuno sa come includere un'interruzione di riga? AUDIENCE: pr - JASON HIRSCHHORN: pr - AUDIENCE: Slash pr? JASON HIRSCHHORN: barra pr sta per interruzione di riga. Ma paragrafi hanno determinato formattazione. E ci arriveremo alla formattazione in un in secondo luogo, quando si parla di CSS. Ma tutto all'interno di questi tag p avrà qualche formattazione predefinita esso associato, probabilmente alcuni spaziatura tra differenti paragrafi. E sarà un modo per differenziare blocchi di codice. Eventuali altri tag - Quali sono altri tag che hai visto? JASON HIRSCHHORN: h1 attraverso h6. h1 attraverso h6, e che cos'è? PUBBLICO: Si denota quanto grande e in grassetto le lettere sono. JASON HIRSCHHORN: Destra, si distingue per l'intestazione. E così header1 è un grande colpo di testa. E probabilmente, per impostazione predefinita, essere coraggiosi, una grande dimensione del carattere, probabilmente incentrato su lo schermo, tutta la strada fino a h6, che è una dimensione di carattere più piccolo, meno ha sottolineato. Naturalmente, è possibile, in sei file CSS o da qualche parte nel codice - che, ancora una volta, ci arriveremo in un secondo - cambiare ciò che il comportamento predefinito di un tag h1 è. Ma tenete a mente che Chrome, Safari, Firefox, Internet Explorer hanno tutti predefinito cerca per un sacco di questi tag standard. Si può, ancora una volta, cambia sempre quello che sembrano. Eventuali altri tag che tutti ha visto? Sì - PUBBLICO: Un sito div. JASON HIRSCHHORN: Un tag div - div tag non ha formato incorporato, per SE, che viene utilizzato per bloccare diversi tipi di codice. Eventuali altri tag? Sì. AUDIENCE: li - JASON HIRSCHHORN: li - ciò che è li per? AUDIENCE: List. PUBBLICO: List JASON HIRSCHHORN: li è per gli elementi della lista. Ci sono due tipi di elenchi. Quali sono i due tipi? AUDIENCE: ordinato e non ordinato. JASON HIRSCHHORN: Ordinato e non ordinate - stand così ul per la lista non ordinata. Ecco, se volete un proiettile punto, una lista di proiettili. Un elenco ordinato è un elenco numerato. E così farai un tag ul aperto e poi tonnellate di elementi della lista e poi chiudere il tag ul. e che la volontà creare una lista non ordinata. Andiamo a vedere alcuni esempi di HTML in un po '. Ma prima di allora, voglio arrivare a CSS. E CSS sta per Cascading Fogli di stile. E questo è strettamente correlato HTML ma leggermente diverso. Questo ti aiuta a formattare tutto il contenuto che le strutture HTML. Quindi, in CSS, che generalmente non vogliamo lo stile di ogni singola intestazione o ogni singola immagine o ogni punto singolo. Vogliamo stile alcuni elementi o forse un elemento specifico. E il nostro modo di stile di una specifica elemento per dare un ID. Quindi questo è un attributo. Ha una chiave e un valore. ID è la chiave. Logo è il valore. Ho scelto il logo in modo casuale. E se si dà qualcosa di un ID, in generale, che dovrebbe essere data solo a un elemento. E poi, nel foglio di stile, è possibile stile di quel particolare elemento, tuttavia si desidera guardare. Se vuoi per lo stile di un certo numero di elementi, forse è una certa classe di intestazioni, solo alcune delle intestazioni. Forse è un colpo di testa e un'immagine e un punto tutti voi volete essere centrato. Poi si può dare quei gruppi di tutti gli elementi di una classe. E si può dare la classe stili specifici. Così un ID e una classe sono due modi per rompere il codice, in modo da poter aiutare sia più preciso in quello che stile. Ci sono tre modi per acconciare. Il primo è, con questo attributo style. Quindi, vedete, la chiave di stile è stile. Il valore di stile è in realtà un altro elenco di valori chiave. In questo caso, ho scelto una chiave, text-align. E ho detto, il centro. Potreste essere voi stessi chiedendo in questo punto, come facevo a sapere in merito text-align. Che cosa significa che anche fare? Questa è una grande domanda da fare, e stiamo per arrivare in un secondo. Ecco, questo è un modo per lo stile qualcosa, basta dargli l'attributo style. Un altro modo per lo stile qualcosa è - questo è Akshar menzionato in precedenza. È possibile utilizzare i tag di stile e di mettere che nella testa del documento HTML. Quindi stai dicendo in sostanza, il contenuto qui dentro è alcuni contenuti di stile. E il formato che è la cosa che voglia di stile e poi, all'interno di parentesi graffe, la coppia di valori chiave attributi che si vuole dare al quel particolare tipo di elemento. Infine, e questa è la modo più comune. E questo è il nostro modo di farlo in p set 7. Si tratta di un foglio di stile esterno. Così avete un file css.. E dentro di esso, si vede un sacco di cose che sembrano come questo, il nome di un certo tipo di elemento o un ID o una classe e poi, all'interno di ricci bretelle, una lista di coppie di valori chiave. Naturalmente, se si crea un esterno il file, si sta andando a necessario includerlo - sharp comprendere, che avrebbe essere l'analogia C - nel file HTML. Quindi bisogna includere questo codice nel file HTML. Questo è il nome del file e ammesso che sia nella stessa directory. OK. Che era un sacco. E ora stiamo andando a respirare e guardare ad un certo reale, il sito vivo e esplorare questa più. Ma prima di farlo, lo fa nessuno Per qualsiasi domanda? Quindi, se si vuole fare questo insieme a me, possiamo andare all'apparecchio. E ho scelto la home page CS50. È possibile farlo con qualsiasi sito web. Ma perché non iniziamo con homepage CS50? Facciamo rinfrescare. Io in realtà raccomando caldamente di fare questo insieme con me, perché ciò che stanno andando a fare ora sta per essere incredibilmente utile per voi, non solo in P-Set 7, ma in P-Set 8 pure. Già. AUDIENCE: C'è un modo per fare commenti in HTML, senza l'utilizzo di PHP? JASON HIRSCHHORN: Sì, è possibile fare commenti in HTML. AUDIENCE: Qual è la sintassi? AUDIENCE: Punto esclamativo dash dash. AUDIENCE: OK. JASON HIRSCHHORN: sì. Questa è la sintassi. È possibile fare commenti in HTML. È possibile fare commenti in PHP. Come vedrete, commentare in HTML ancora presentarsi, quando guardiamo la Codice sorgente HTML di un sito particolare. Quindi questo cs50.net. Se si fa clic destro in più moderna browser sulla maggior parte qualsiasi pagina, si visualizza il sorgente della pagina. Allora, facciamo che in CS50. Ed ecco, noi vedere una cosa gigantesca. CS50 sembra davvero molto carino. Un sacco di siti web non sarà guardare questa bella. Se andate alla homepage di Google e aprirlo. Non sarà così bello. Ma si nota che, nella parte superiore - questo è una specie di piccolo. Facciamo questo grande. OK. In cima, DOCTYPE HTML, che è familiare. Poi vediamo il tag HTML aperto e la testa, proprio qui, tutti di questi meta tag. E si può vedere questo OG, non per andare in quel momento. Ma io sono quasi positivo che quelli sarebbero Facebook. Questo è in realtà il Facebook. Penso che sta per Open Graph. Così ricordo, accennavo c'è Metadati specifici Faceboook è possibile dare a una pagina. Questo è ciò che è proprio qui. Così, quando si collega questa pagina su Facebook, l'immagine sta andando a mostrare è questa immagine qui. E che non si vedrà che si tratta di Facebook, perché è l'immagine di Facebook. Ma comunque, stiamo ottenendo da parte. Così abbiamo alcuni tag di metadati qui. Vediamo il titolo CS50. E ancora, il titolo è quello che va qui nella scheda del browser. Vediamo questo è il collegamento in, proprio qui, un file JavaScript esterno. Non abbiamo parlato molto di JavaScript, ma la prossima settimana - e sicuramente se stai facendo un problema di set web-based, si utilizza JavaScript. Questo è come si collega in esterno JavaScript file. Vediamo qui, infine, la CSS foglio di stile, che documenta questi stili di questo codice. Facciamo in realtà aperti che e un'occhiata molto velocemente. Questo sembra pazzesco. Non c'è modo sarei in grado di leggere. Così si può effettivamente però, se si prende uno sguardo, si può vedere che sorta di ci sono - ci andiamo. Che assomiglia a qualcosa che abbiamo visto prima, il colore di sfondo, impostandolo pari a un valore rosso-verde-blu. Questa roba tipo non deve sembrare che esteri, anche se, quando viene presentato come questo, può essere un po 'opprimente. Non stiamo andando a guardare questo file CSS o spendere molto tempo su di esso, perché è, ancora una volta, piuttosto difficile da leggere. Torniamo al presente Pagina HTML per CS50. E cerchiamo di scorrere verso il corpo. E dentro noi vediamo questo tag div. Vediamo un colpo di testa proprio qui. Vediamo il tag di ancoraggio. E questo elemento della lista è Data una classe specifica. E vediamo che classe ripetuto più e più volte. Vi siete Curtis. C'è il commento in HTML5. E come si nota, possiamo ancora vedere , ma non è rivelando. In realtà è davvero interessante. Sembra che questo elenco punteggi elemento è commentata. Se andiamo a questa pagina, ancora una volta, ancora appare lì, così interessante. Oh, ecco perché, perché di questa riga successiva. Che cosa vediamo di interesse? Il resto di questo è più confuso, in affrontare questa metà destra del sito, che è un po ' po 'più complessa. Quindi questo è quello che alcuni HTML sta andando a guardare come. Per me, però, questo è un po travolgente, e questo non lo fa aiutarmi più di tanto. Tuttavia, c'è qualcosa che fa, infatti, mi aiutano molto. Ed è quello che io uso ogni volta che sono cercando di capire come qualcosa guarda il modo in cui lo fa, o come può Ho modificato il mio sito web. E questo è uno strumento di sviluppo che è costruito in Chrome. Quindi se andate a questa tre barre a destra qui e scendere a strumenti cliccare su Developer Tools, una piccola finestra sarà comparire in fondo alla pagina. E in particolare, Cromo, poiché è meraviglioso, si formattare questa finestra e prendere il codice HTML e farlo sembrare molto più bello per voi. Così ora è realtà alcuni pieghevole HTML che è possibile esplorare per ispezionare gli elementi della pagina. Se vogliamo guardare il corpo, in realtà mette in evidenza. Quando si scorre su una parte del codice HTML, giù in questa finestra, sarà evidenziare la parte che sta parlando circa nella grande finestra. Quindi fammi provare di nuovo e saltare questo un po '. OK. Quindi cerchiamo di aprire il corpo. E sto scorrendo su questo div sinistra. E si nota che sta mettendo in evidenza questa metà sinistra dello schermo. Quindi cerchiamo di fare clic su questo ed espandere tale. All'interno di esso, sembra ci sono due div. C'è questa prima div. Non vedo che ha evidenziato. Non lo so, ma sembra che questo secondo, sinistra interna, è il contenuto sul lato sinistro dello schermo. Poi c'è questa cosa chiamata intestazione. Sembra che sta mettendo in evidenza la parte CS50. Se apriamo che fino, vediamo che si tratta di nient'altro che intestazione 1. E 'dato un ID, ed è dato il CS50 testo. Quindi, di nuovo, guardando attraverso questo console o utilizzando gli strumenti di sviluppo riquadro nella parte inferiore della schermata marchi esplorare questo sito, si spera, un molto meno intimidatorio e molto più accessibile. Essa ci permette anche di capire che questo sito, anche se sembra molto bella e piacevole, non è poi così tanto più di quello che sta andando ad essere facendo sul Problem Set 7. E questo è totalmente all'interno la vostra capacità di creare. Se vogliamo - l'altra cosa bella di utilizzo di questi strumenti è, se si fa clic destro sul titolo, è possibile modificare il codice HTML. Allora chiamiamolo Jason. E ora si noterà che ho cambiato il codice HTML in questa pagina. Certo, non ho cambiato in modo permanente. Se rinfresco mio browser, allora sarebbe tornare al HTML originale. Ma a volte mi voglio eseguire il debug il mio codice, e io non voglio guardare solo avere il mio finestra gedit e cercare di capire cosa sta succedendo. Voglio vedere cosa accadrà in diretta. Così Io modificare il codice come questo e ottenere così il modo in cui voglio farlo sembrare. E poi farò l' cambiamenti nel mio codice. E trovo che sia molto più facile quando si possono fare le cose istantaneamente, come quella. Dire, ancora una volta, vogliamo fare un altro caso, perché stiamo esplorando con HTML e CSS in questo momento. Posso modificare il codice HTML in questo momento. E ho intenzione di includere un link. Quindi ho intenzione di cambiare casa di CS50 pagina, in modo che si collegherà a - diciamo - la mia home page. Qual è il nome, se qualcuno ricorda, o qual è l'attributo che voglio dare ad una linguetta di ancoraggio quando voglio per collegare qualche altra parte? AUDIENCE: href? JASON HIRSCHHORN: href - Così ora, vedrete che vi è una sottolineatura sotto Jason. Questo perché Chrome, per impostazione predefinita, dà ancore una sottolineatura. Avete probabilmente visto che prima quando sei andato a una pagina web. Le cose che sono collegamenti sono sottolineato e in blu. Lo stile predefinito per un collegamento è da sottolineare generalmente e metterlo in blu. Se non mi piace che, Posso cambiare la situazione. E noi cambieremo in un secondo. Ma ora, si noti anche che, se mi passa il mouse su questo, in basso a sinistra della schermo, proprio sopra gli elementi verbali Ecco il link che ho dato. Quindi, se ho fatto clic su questo - e possiamo fate clic destro su questo, aprire una nuova scheda. Questo non è in realtà la mia homepage. E 'solo il mio nome. Ci si va. Abbiamo rivolgiamo ora in un link. Analizziamo alcuni CSS pure. La cosa bella - e ho intenzione di rendere questo un po 'più piccolo - circa questa console è, quel foglio CSS pazzo abbiamo visto prima, che era davvero difficile da analizzare, è ora ben predisposto per noi sul lato sinistro di questo riquadro. Così possiamo guardare. E se espandiamo questa scheda stili, può vedere tutti i diversi stili che sono associati, in questo caso, questo particolare elemento, questo elemento di collegamento. Se facciamo la scheda stili composti, che appena ci mostra, non dove tutto proviene, ma essenzialmente tutti questi stili che operano su questo particolare elemento in questo momento. E diciamo, vogliamo per cambiare un po '. Quindi questo è tutti gli stili che sono operare su questo particolare elemento. Diciamo che vogliamo cambiare, perché noi vogliono vedere come qualcosa sembra. E stiamo solo giocando intorno adesso. O vogliamo testare qualcosa, prima iscritto nel codice e spingendo e rendendolo vivo. Possiamo andare alla scheda stili. E nella prima casella si dice, element.style. E qui, è possibile inserire, si può aggiungere qualcosa. Quindi voglio - andiamo a mio link e la impostare il colore di sfondo. E in realtà AutoFills per voi, tutte le possibili proprietà. Colore di sfondo, e voglio per fare che blu. Blus non è una parola. Blue è una parola. Ho vedo venire? Oh, è che perché è in href? OK. Quindi non vedo alcun cambiamento qui. E questo perché, se si evidenzia il collegamento, si noterà che il link non è effettivamente controllare il proprietà di questo particolare elemento. In realtà, se apriamo il collegamento, questa intestazione proprio qui che è controllo di quello che sembra. Quindi, se voglio rendere lo sfondo blu, io in realtà devo cambiare colore di sfondo sul elemento di intestazione. E ora vediamo che l' sfondo è blu. Quindi, di nuovo, in fretta potrebbe andare attraverso questo materiale abbastanza rapidamente. Ma questo è essenzialmente quello si sta andando a fare. Non è il problema Set 7, ma certamente quando sei codifica sul web. OK. Voglio fare lo sfondo blu. Anche se, in questo caso, blu sembra piuttosto brutto. Posso andare qui, giocare. Vedo che la modifica al blu non funziona su un. Devo cambiare effettivamente l'intestazione elemento per includere il blu sfondo. E poi, se poi torno al mio CSS di file, come faccio attualmente impostato questo sfondo di essere blu e questo cambiamento bastone? Perché se notiamo se mi rinfresco la pagina, tutte le modifiche che ho fatto sono andati. Così mi sono reso conto, OK, la mia sfondo è blu. Ho bisogno di andare in quell'elemento header1 e cambiare il colore di sfondo blu. Come posso effettivamente fare questo cambiamento? Beh, ricordare che, se andiamo dentro di qui, questa intestazione, l' titolo ha un ID. E questo è il titolo. E così nel nostro file CSS, possiamo dire, OK, portare nulla con ID di titolo e dare questa proprietà aggiuntiva. Come referenziamo qualcosa con l' ID del titolo, tutte le idee, o chiunque Sappiamo come abbiamo riferimento ID nel nostro file CSS? Un hash, che è esattamente vero. E hai un pizzico di tale diritto qui. Così, da qualche parte in questo file CSS, c'è questa riga di codice - # # Sinistra sinistra-interno # header # titolo. E sta dando fondo margine, definire il margine inferiore di questa particolare elemento. Beh, se volevo cambiare la situazione, Vorrei andare in questo file CSS. E potrei trovare sia questo parte del file CSS. Oppure potrei scrivere il mio. Potrei fare hash titolo ricci brace e poi il colore di sfondo del colon blu punto e virgola e chiudere quella parentesi graffa. E che avrebbe cambiato lo sfondo colore di questo elemento al blu. Il motivo per cui ti danno tanti: ecco questo, è necessario in questo caso, perché è una ID univoco. Ma cosa si può fare è nidificare le cose. Quindi questo sta dicendo, OK, andate a sinistra. Questo è molto piccola. Mi scuso per questo. Ma andare alla cosa con ID sinistra. All'interno di questo, cercare il cosa con ID sinistra interna. All'interno di quello sguardo, cercare la cosa con l'intestazione ID. All'interno di questo, cercare la cosa Titolo ID e cambiare il titolo ID. Quindi questo è solo un modo delle cose nidificazione. Alcune persone, come nido, perché lo rende un po 'più chiaro. Vedrete giù anche qui, a destra Qui, non c'è hash. E 'solo H1. Questo perché h1 è data la il nome di un tag generico. E ci sono alcune proprietà CSS associato ad ogni singolo h1. Quindi, se ho trovato un altro h1 su questa pagina Vorrei anche vedere che questo stile è stato applicato ad esso pure. Se avessi voluto applicare uno stile a una classe, come faccio riferimento a una classe o parlare di una classe in un file CSS? AUDIENCE: Dot. JASON HIRSCHHORN: E 'con un punto. Quindi torniamo a questa pagina prima. Se faccio ID hash. Che sta cambiando lo stile della cosa con ID. O scusate, se faccio hash logo, che è trovando la cosa con l'ID del logo e dandogli un particolare stile CSS. Se faccio qualcosa. Top, che sta trovando tutto con la classe di alto e cambiando i propri stili. Se faccio semplicemente H1, che trova ogni singoli h1 e dà la qualunque stile che voglio dare. Se faccio spazio h1 e poi. Top. Che andare a trovare tutte le h1s e poi tutti quelli con la classe di alto e modificare solo quegli stili di quello che voglio dare. E ancora, avremmo potuto scrivere alcune di queste per conto nostro. Ma non avremmo ottenuto che lontano. Molto meglio, sembra andare effettivamente su un vero sito Web dal vivo e vedere come lo fanno e guardare tutte le cose fantastiche si arriva a fare. Diamo un'occhiata a un altro sito prima di passare. E questo è quello che probabilmente vi acquisire familiarità con. Questo è CS50 Finanza. Quindi, di nuovo, si può effettivamente andare in e osservare questo file CSS sul tuo computer, perché hai scaricato questo File CSS, se è stato scaricato il problema set. Possiamo andare su Strumenti e Strumenti per gli sviluppatori. E vediamo un layout HTML molto più semplice. Abbiamo alto, al centro e in basso. E di nuovo, qualcosa che dovrebbe essere conoscenza, perché hai guardato attraverso il codice distribuzione per il problema di questa settimana set. Nella parte superiore è, per il codice, una singola immagine chiamato. E questo è fonte dell'immagine. Dire che ho finito tutto quello che Volevo per Problem Set 7. E sta funzionando correttamente, ma Voglio cambiare come appare. E voglio cambiare lo sfondo della parte superiore della pagina, per esempio, blu. Se mi fosse, mi sarebbe venuto in qui e capire, cosa OK voglio cambiare. Vediamo, div top ID, che l'aspetto come all'inizio della pagina. Quindi cerchiamo di andare lì. Proviamo a cambiare l' colore di sfondo. Andiamo a fare Alice blu, perché questo è uno più bello. E noterete che - probabilmente non può vedere che. Ma c'è una luce blu, accanto al logo CS50. Cambiamo invece al rosso. E noterete ora ho solo cambiato il colore di sfondo rosso. Così ora vorrei andare nel mio file CSS e digitare # top parentesi graffe proprio qui. Potete vedere il codice giusto qui, parentesi graffa. E poi, vorrei aggiungere sfondo colore, rosso. E poi, non ci sarebbe essere una parentesi graffa. Quindi è così che vorrei esplorare e sperimentare la formattazione sul CS50 Sito Finance. Potrei farlo qui e prova fuori il mio browser. E poi, potrei andare nel mio codice attuale e apportare le modifiche che saranno effettivamente andare a vivere e che la gente effettivamente vedere, se dovessero venire a il mio sito specifico. OK. Che era un sacco. Mi scuso per passare attraverso così rapidamente. Qualcuno ha domande affatto di HTML o CSS? AUDIENCE: si può solo andare su come si linked quello che è diventato Jason, di nuovo? JASON HIRSCHHORN: Cosa cosa vuoi dire collegati? AUDIENCE: è fornito un link ad un altro sito, usando l'ancoraggio. JASON HIRSCHHORN: Quindi stai chiedendo, solo genericamente, come fare un link? AUDIENCE: Già. JASON HIRSCHHORN: OK. Il codice per fare un link - PUBBLICO: No, come nel codice HTML. JASON HIRSCHHORN: Quaggiù, vuoi dire? Quindi, se voglio includere un link da qualche parte, diciamo, questo è il codice HTML sul mio pagina qui. Questo è l'HTML. Forse è aperto in un file index.html. Vado dentro Diamo questo autore John Harvard link a qualcosa. Quindi dovremo modifichiamo tutto questo come HTML. Tutto quello che fare è includere l'una, così Una staffa da vicino il inizio, e poi la staffa barra una stretta staffa alla fine. Così ora ho incluso un tag di ancoraggio. E in realtà, se si fa clic fuori di questo, questo si formattarlo modifica come HTML. E diciamo, vogliamo collegarlo. Vi saremmo l'attributo href. E diciamo - E ora, come si nota, copyright John Harvard è blu. E quando ho Scorri esso, è ormai un link. Così è possibile scrivere il codice. È possibile racchiudere praticamente nulla si desidera in un tag di ancoraggio e di trasformarlo in un link. AUDIENCE: OK. Capito. JASON HIRSCHHORN: E se non volevo it - naturalmente, a volte le persone tendono a pensare queste cose che sembrano appena blu genericamente e sottolineato sono non è il modo più bello per fare un collegamento. Quindi, se io vengo qui, si vede che, qualche parte in un file CSS, c'è scritto questo una e poi due parentesi graffe. Quindi diciamo che, per i collegamenti, non lo faccio vogliono che diventino blu, piuttosto che desidera che il colore di un collegamento a essere questo bel magenta. Diamogli il colore. Riprendiamo magenta. Ora, tutti i link sulla mia pagina hanno diventare questo bel colore magenta. Alcune persone non amano i colori a tutti. Alcune persone non piace sottolineature. Si arriva a scegliere. Con i link, potete stile come guardare una volta che li hai visitato. Come noterete un sacco di pagine, Link diventare viola su di loro si visita. È possibile cambiare quel colore pure. Già. AUDIENCE: Così si cambia per ogni singolo collegamento. Ma se si voleva solo fare quel link stesso, sarebbe basta fare in ID fondo o qualcosa del genere? JASON HIRSCHHORN: Così grande domanda. Come avrete notato qui, ho cambiato un po ' parte del CSS che si applica a tutto ciò che è una A. Se volevo basta fare link in fondo, mi sarebbe andato al mio file CSS e probabilmente fare proprio come hai detto tu, hash spazio di fondo. E questo mi darebbe Come tutti in fondo. Oppure potrei, in alternativa, dare un ID univoco e poi basta fare collegamento hash. E questo mi avrebbe permesso per cambiare questo fuori. Tuttavia, solo distribuendo ID volente o nolente è generalmente una cattiva pratica, perché quelli dovrebbe essere univoco. E più ci sono quelli, si può ottenere un po 'di confusione. Già. AUDIENCE: Puoi dare lo stesso ID a più proprietari? JASON HIRSCHHORN: Tecnicamente, sì. Nulla fermerà, ma voi Non si dovrebbe si dovrebbe dare una classe. OK, tutte le altre domande di HTML o CSS? OK. Passiamo a PHP. Oh, sì. AUDIENCE: Di cosa si tratta questi siti web che significa che possiamo modificare prima ci aggiorniamo. Ma una volta che aggiorniamo che ritorna tornare alla HTML iniziale? JASON HIRSCHHORN: Grande questione - così quando abbiamo caricato questo pagina web, è HTML. Ed è JavaScript. Il suo PHP viene eseguito per darci qualunque tipo di sito web che vediamo. Ed è creato alcune HTML, un po ' JavaScript, e alcuni CSS. E che è ora accessibile dal nostro computer. E una copia di questi file viene salvato in locale sul nostro computer, per il momento. Quindi possiamo modificare la copia locale. Ma, naturalmente, non stiamo modificando la copia sul server. E quando si aggiorna la pagina, otteniamo un'altra copia sul server. E così vediamo le cose indietro come erano. Se siamo stati in grado, da qui, per modificare l' sito ufficiale, avremmo un sacco di problemi. PUBBLICO: Sì, così possiamo leggere e scrivere quella copia. JASON HIRSCHHORN: Giusto. Stiamo facendo solo cambiamenti locali qui, ma ancora una volta, molto utile per esplorare, spesso. Quando sto scrivendo il mio progetto finale, per esempio, voglio vedere come alcuni sito web fatto qualcosa di sguardo il modo in cui hanno fatto. Andrò in e utilizzare questo riquadro in basso qui, a guardare a ciò che i CSS hanno dato a o di che colore sono venuti o come ottenuto in modo che, quando si librava su qualcosa, la lista è venuto giù in un bel modo cascata. E 'un ottimo modo per controllare quali altri siti web fanno e prendere in prestito da loro. Passiamo a PHP. PHP rappresenta, in un certo senso ricorsiva, PHP Hypertext Processor. E PHP, che cosa sta andando a fare è eseguire codice lato server. Quindi stiamo andando mai a vedere il codice PHP. Tuttavia, non gioca bene con HTML e genera spesso un sacco di codice HTML. Ma come avrete familiarità con il problema Impostare 7, il codice PHP eseguirà, generare codice HTML, ed è quello che l'utente finirà vedere. PHP è incredibilmente simile al C. Tuttavia, ci sono un paio di differenze, e queste differenze sono importanti da notare. Una differenza è che le variabili in PHP sono debolmente tipizzato. Qualcuno ha un senso di che cosa significa? AUDIENCE: Non c'è bisogno di lanciare da soli. Come non c'è bisogno di scrivere in testo. JASON HIRSCHHORN: non vorrei usare il Cast parola, ma sì, non c'è bisogno di dichiarare un tipo per una variabile specifica. Come invece facciamo noi dichiariamo una variabile? AUDIENCE: Usare un segno di dollaro. JASON HIRSCHHORN: Usare un segno di dollaro. Quindi $ x è una variabile. $ 1 è una variabile. $ String è una variabile. Quelli variabili, $ x potrebbe essere un numero intero. Quindi, potrebbe essere una stringa. Quindi, potrebbe essere un carattere. Non ha molta importanza. Inoltre, la cosa bella di PHP è, diciamo, $ x è una stringa. E $ y è il carattere uno. Puoi aggiungere $ xe $ y, e sarà dare 2, quello che ti aspetteresti. Quindi ci sono operazioni in PHP. Perché è debolmente tipizzato variabili, alcuni cast implicito è fatto per voi e alcune operazioni. È possibile fare operazioni sulle cose di diversi tipi. Mentre prima, spesso si ottiene un errore in C detto, questo non è il tipo di questo dovrebbe andare qui. Solo cose di questo tipo possono andare qui. Non avete intenzione di ottenere quel tipo di errore, in generale, in PHP. Quindi questa è una grande differenza - come abbiamo a che fare con le variabili. La seconda grande differenza è che Codice PHP viene interpretato. Wheres, codice C viene compilato. Cosa vuol dire? Beh, per il codice C è stato eseguito attraverso un compilatore. È stato generato un file binario. Ed è stato eseguito il file binario. Hai preso cura di tutti gli errori prima è stato generato il file binario. Certo, ci sarebbe stato segmentazione difetti, quando è stato eseguito il file binario. Ma non è che ti sei dimenticato di includere la definizione di printf, o non è stata utilizzata una variabile e solo creato una variabile spreco. O non è stato definito un prototipo di funzione. Tutto quello che è successo prima si è compilato. E ti ha dato tutti gli errori o cattivo cose che si pensava sarebbe potuto accadere. E poi, hai avuto il tuo 0 e 1 file che è stato eseguito. Codice PHP non funziona così. Stai andando a scrivere il codice PHP. Quindi, si sta andando a salvarlo, presumibilmente. E almeno in P-Set 7, si sta andando per aggiornare il vostro browser web e si sta andando a vedere cosa è successo. Stai andando vedere l'uscita di tale codice PHP. Si potrebbe anche vedere, in alto della pagina, un errore. Perché hai avuto qualche errore nel PHP. Si potrebbe ancora vedere il resto la pagina web sta cercando bene. Ma una parte è sbagliato, e non c'è un errore in quel luogo. E questo perché quella parte di il codice PHP non funziona. Infatti, quando si esegue, quando si andare a qualcosa come by.php. E 'intenzione di passare attraverso il vostro PHP il file riga per riga ed eseguirlo allora e solo allora. Non è intenzione di compilarlo in anticipo tempo o compilare una copia e poi dare che compilati copia a tutti. Ogni volta, che sta per passare attraverso riga per riga ed eseguirlo. Così alcune linee potrebbero funzionare e Uscita qualcosa di corretto. E altre linee potrebbero essere rotti e l'uscita di un errore. Così, quando il debug con PHP, abbiamo dato un paio di cose utili per aiutare il debug, come la funzione di discarica. Ma in generale, si sta andando per vedere questi errori. Ed è così che si sta andando a sai che hai fatto qualcosa di sbagliato. Ma si sta solo andando a vedere l'errore una volta che effettivamente esegue il codice. Un altro aspetto importante di PHP e lo sviluppo del web è l'idea di get contro il palo. Qualcuno può spiegare che cosa la differenza tra GET e POST sono? Nessuno - Sì. AUDIENCE: Non uno di loro permette all'utente di visualizzare i dati, e uno di loro non? JASON HIRSCHHORN: Great. Sì, avete qualcosa da aggiungere? PUBBLICO: I postale sottile è un variabile super-globale. JASON HIRSCHHORN: Quindi entrambi questi le variabili sono date a voi. Questi sono solo variabili. E sai che sono variabili, perché proprio qui ho utilizzare il simbolo del dollaro. Queste sono variabili data a voi da PHP. E quando ci si sposta tra le pagine web, si desidera salvare alcune informazioni. Probabilmente si desidera salvare se l'utente è loggato Questo non è salvato in GET e POST. Questo è salvato in qualcosa d'altro, una variabile diversa. Qualcuno sa che cosa variabile che viene salvato in, o quello variabile si usa in P-Set 7, per assicurarsi che l'utente è loggato? $ _SESSION, Che è esattamente a destra, Probabilmente importante avere familiarità con i nomi di queste cose si usa spesso. Quindi si utilizza la variabile di sessione per salvare informazioni da una pagina all'altra. Questa è una variabile eccellente. Esiste in ogni pagina, forse come un variabile globale, se si vuole pensare su di esso così. Ci sono un paio di altre variabili che consentono di trasferire le informazioni da pagina a pagina. In particolare, quelli che ci concentreremo su sono GET e le variabili POST. In PHP sembrano $ _GET E $ _POST. E la differenza, come Marcus rilevato out, tra i due è che, informazioni in $ _GET è visualizzato nell'URL. Quindi, se guardiamo qui, vediamo un link di YouTube. Vediamo questo punto interrogativo. Vediamo v = e quindi un certo valore. Torna a questa idea del valore della chiave coppia, v è la chiave. E qui è il valore. Quindi, se dovessimo andare a questa pagina oppure codifica su questa pagina, avremmo una variabile denominata $ _GET. Se siamo andati a $ _GET parentesi aperta "v" chiudere la staffa, molto simile alla matrice notazione, questo è un array associato perché non stiamo utilizzando indici. Stavano usando stringhe come chiavi. Ma l'idea molto simili. Se siamo andati noi, otterrebbe questo valore. In questa pagina, saremmo in grado utilizzare questo valore. Se ci guardiamo in realtà, cerchiamo di andare a una pagina di YouTube. Quello che il video che dovremmo guardare? Questo, sono le persone Hobbit fans? PUBBLICO: Sì. JASON HIRSCHHORN: Così sto copiando loro URL condividere e incollarlo in una nuova finestra. E ora, se si guarda qui, ti notare che, ancora una volta - Io vado a copiare e incollare questo in gedit, così possiamo vederla più grande. Si noterà che essa ha questo interrogativo. Il punto interrogativo indica che tutto dopo questo sta andando essere salvato nella variabile get. Si ha quindi la v, che è la prima chiave, e questo primo valore. Ampersand è speciale. Ampersand sta dicendo, OK, abbiamo terminato il primo valore. Ci stiamo spostando su un altro coppia chiave-valore. Qui, la soluzione è chiamata funzione, e il valore è youtu.be. Quindi, se fossi una codifica questa pagina e qualcuno è andato a questo indirizzo e ho avuto forse watch.php. Ed ero Coding questo. E potrei utilizzare la variabile $ _GET. E vorrei avere una v, e Vorrei avere una caratteristica. E se uso il tasto V, I sarebbe ottenere questo valore. E se ho fatto $ _GET staffa "feature" chiudere la parentesi, vorrei ottenere questo valore. Ancora una volta, non necessariamente applicano a - ovviamente, le chiavi ei valori di YouTube e ottenere informazioni non si applica alle Il nostro problema Set 7. Ma ci sono alcune cose che abbiamo passare tramite GET nel nostro Problema Set 7. E certamente, quando si va a una pagina web o si codifica la propria pagina, il $ _GET Sarà utile quando codifica vostro. Che è uno dei motivi per usare $ _GET poi, se non offre alcuna privacy? Vedete tutte queste informazioni che viene trasferito. E 'tutto visualizzato all'utente. Ma che cosa è una ragione che si potrebbe vuole risparmiare qualcosa in $ _GET, come invece di $ _POST? Perché si potrebbe desiderare di fare questo? Bene. Ti ho chiesto a Quiz 1. Qual è il pro di $ _GET? Cos'è un pro? Sì - PUBBLICO: E 'più facile condividere le informazioni. JASON HIRSCHHORN: Penso che è grande. E 'più facile per condividere le informazioni. E 'più facile da segnalibro. È possibile contrassegnare ora, YouTube.com / watch? V = qualcosa e andare a quel determinato video. Se YouTube sempre fatto richieste POST per diverse pagine, ogni URL di YouTube sarebbe YouTube.com. Non si poteva segnalibro per un singolo video. Perché se dici condiviso questo link con qualcun altro, non lo fanno ottenere automaticamente la variabile posta. Stanno solo ottenere questo link, e la collegamento è lo stesso per tutti. Così che è un pro. Esso consente di bookmark questo informazioni o condividere queste informazioni o fare un po ' più user-friendly. Naturalmente, non c'è privacy, così abbiamo questa variabile postale. E le informazioni post non è visualizzato nell'URL. Non è completamente privato. Ma è marginalmente più privato. E così vedrete questo URL qui, cs50.net. O se non si è registrato nel sito, che sta per avere lo stesso URL, cs50.net. Ovviamente, qualcosa è diverso, se si è registrato nel sito. Hai, uno, probabilmente inserire il PIN. E ha confermato che con il server. Ed è probabilmente il risparmio alcune altre informazioni. Ma l'URL non cambia affatto. E così questo è il caso, quando qualcosa che viene inviato per posta. L'URL non cambia. Questa informazione POST non è visualizzato nell'URL. Ma alcuni di stato è cambiato, e forse ci sono alcune informazioni salvate nel Variabile POST. Scusi. prima di andare in SQL, qualsiasi domande su PHP, in particolare, domande su cose che non sono andate oltre che hai trovato o di sintassi o domande di logica su PHP? OK. La lingua finale sarà interagendo con questa settimana è l' Structured Query Language, SQL, pronunciato sequel spesso. Che ti permette di interagire con il database in modo formalizzato. E gioca molto bene con PHP. Come vedrete nel Problema Set 7, abbiamo dato una funzione chiamata query. E si prende una stringa SQL ed esegue la query sul database. Negli anni passati, non eri Data tale funzione. Si doveva usare funzioni PHP per fare la query sul database e di controllo per gli errori e quindi ottenere i risultati. E in realtà, non è così difficile, perché ancora una volta, si gioca molto bene con PHP. E PHP ti dà un sacco di funzioni di interagire con un database SQL. Così spesso, i due di questi vanno insieme. Naturalmente, è possibile interagire con il database SQL con qualsiasi numero di altre lingue. Ma PHP è un grande da scegliere. Un database - andremo su in fretta, perché Questa è una parola buzz che andremo a iniziare a utilizzare spesso - è un insieme di tabelle. Così possiamo pensare di esso come file Excel. Un file Excel dispone di più schede nella parte inferiore dello schermo. Ogni scheda faremo ora chiamare un tavolo, dove una tabella è un insieme di righe. E che cosa è una riga? Beh, una riga è la stessa cosa nel file Excel. Che ha appena determinati valori per ciascun determinato settore o ogni colonna data. E 'come una voce nella tabella. E 'uno studente, che ha un ID, un ID specifico, e un nome e una specifica casa specifica. Quindi un database è una raccolta di tabelle. E le tabelle stesse sono una numero di righe o record. Ci sono anche, in ogni tavolo, alcuni campi. E che specifica ciò che ogni record è andando ad avere, campi a volte chiamati colonne, ma generalmente chiamati campi. In questa tabella molto semplice, ho tre campi, un campo ID, un nome utente campo, e un campo di hash. E ho tre righe. In questo momento, sono vuote. Probabilmente non sarebbero vuote se questo fosse il mio vero database. Quindi, se hai utilizzato Excel, un'idea simile per ciò che si fa in Excel, però, Ovviamente, ora stiamo andando ad essere in grado di fare molto più potenti cose sul informazioni memorizzate nel nostro database. Sarete voi stessi creando una database per Problem Set 7. Ma sarete Creazione di più tabelle all'interno del database. Sarete crea un database o un tavolo per gli utenti. Sarete anche la creazione di un tavolo per probabilmente transazioni di magazzino, per mantenere traccia di loro, perché è necessario implementare una funzionalità storia. Entrambi tali tabelle dovranno diversi campi. Ad esempio, in un campo utente, probabilmente vogliono che il loro nome utente e una ID e un hash della propria password. Nella tabella Azioni che tiene traccia di la storia o la tabella di Storia, si probabilmente non è necessario il nome utente e l'hash e l'ID. È probabilmente solo bisogno di uno di quelli valori che sono unici, da associare con un dato utente. Ma poi, si desidera memorizzare altri cose come, a che ora è stata effettuata transazione. Che titolo è stato acquistato o venduto? Quante azioni del è stato acquistato o venduto? Qual è stato il prezzo al quale il titolo è stato acquistato o venduto? Quindi, di nuovo, si sta andando ad essere interagenti con un database che è in andando ad avere più tabelle. Ogni tavolo avrà proprio insieme di campi. Tuttavia, ci sarà probabilmente un simile campo in ogni tabella, che li si riferisce ad uno all'altro. Di solito, questo è un campo ID. Perché se ogni utente ha un ID univoco e si associa ID che con ogni transazione che l'utente fa o tutta la storia di quell'utente. E tu hai ID dell'utente. È possibile ottenere informazioni da entrambe le tabelle. È possibile ottenere il proprio nome utente, e possono ottenere tutte le loro transazioni. Hai domande su banche dati, o domande specifiche? In realtà, cerchiamo di tenere questo. Saremo lì in due parti. Quindi ci sono quattro operazioni su database che si intende utilizzare in Problema Set 7 e probabilmente essere mai usare. La prima cosa che voglio fare è inserire un nuovo record in una tabella o di una nuova riga in una tabella. Questa è la funzione generica, la forma generica, di tale query SQL. INSERT INTO tabella, a prescindere colonne si desidera inserire e quindi i valori che si sta andando a voler mettere in quelle colonne o campi. Se si dispone di più tabelle in un o più database, voi potrebbe anche essere necessario specificare il database e la tabella che si desidera per mettere le cose in. Ma molto semplice, se si desidera inserire in qualcosa, direte voi, qui sono i campi che voglio inserire. E qui sono i valori. In alcune tabelle, inoltre, e questo utente di tavolo è un buon esempio. Probabilmente nella tabella di questo utente e probabilmente nella tabella del proprio utente in P-Set 7, non c'è solo un valore nome utente. Non c'è solo un valore in denaro, o un campo, piuttosto. Vi è anche un campo ID. Non ho intenzione di inserire quel campo ID. Che sta per essere dato a automaticamente me, quando un È inserito nuovo record. Quindi c'è qualche campo che si può impostare per essere automatico. Forse si vuole dare ad ogni utente 10 mila dollari di denaro fuori del blocco. Quindi non ho bisogno di inserire un certo numero di denaro contante qui. Tutto quello che serve per inserire è il nome dell'utente. E poi, il campo di cassa sarà pre-popolato, e il campo ID verrà essere pre-popolato. Così spesso, non stiamo inserendo qualcosa in ogni campo, perché gli altri campi sono pre-popolate. Perché è così che istituire quel tavolo. La seconda cosa che sta andando a voglio fare è eliminare un record. Eliminazione di qualcosa è molto semplice. Tu dai la tabella in cui si desidera per cancellare qualcosa dal. E tu dici, ok, voglio eliminare il record che ha un nome utente di Milo. O Voglio eliminare tutti i record che avere un nome utente di Milo o che erano un transazione da numero ID utente 2. Tutte le domande su questi due tipi di query? AUDIENCE: [incomprensibile]. JASON HIRSCHHORN: sì. Quindi ho intenzione di usare fila e registrare intercambiabile e alcuni con la colonna e il campo. Ma una riga è un record. Una colonna è un campo, andando tornare a questa tabella. OK. La prossima cosa che probabilmente siete intenzione di fare è ottenere alcuni informazioni dalla tabella. Questa è una query di selezione. E ancora, cosa tavolo sto selezionando la partenza? E quale colonna voglio per selezionare, o quale valore voglio per selezionare e da cui fila? Quindi il Select è un po specifico. Io dico, OK, voglio questa tabella. E poi voglio il nome utente colonna e Voglio che dalla riga con ID 2. Questo è un modo per fare un Select. O posso dire, mi danno ogni singolo utente. O posso dire, dammi un intero riga di questa tabella, dove il nome utente è 1. Quindi ci sono un paio di modi diversi per fare query di selezione, a seconda di come più informazioni desiderate, Puoi sempre sufficiente selezionare tutto Da tale tabella specifico e quindi ciclo attraverso di essa, individuando le cose che vuoi. Ma tenere a mente, se si sta selezionando un sacco di cose da una tabella e si hanno davvero un grande tavolo, che si terrà qualche tempo, quindi è meglio selezionare solo cose che si sta andando per finire con. Inoltre, con Select e con tutti questi altri comandi SQL pure, io sono dandovi la versione bare-bones. Ma dico, sto selezionando gli utenti e voglio per stamparli in ordine alfabetico, Ho potuto selezionare tutti gli utenti e quindi ordinare alfabeticamente nel mio codice. O c'è un modo per scrivere la selezione interrogazione, che seleziona le cose in un di modo alfabetico, in base al largo di un colonna specifica, ascendente o decrescente. Quindi, tenere a mente che, molto di ciò che si vuole fare probabilmente può essere fatto in la query attraverso un ulteriore attributo. Quindi cercare queste query online o le altre cose si possono fare con questi query per espandere loro. Infine, l'ultima cosa che vuoi fare non inserire qualcosa o cancellare qualcosa, ma piuttosto aggiornare qualcosa. E questo è fatto con l'aggiornamento query e ancora una volta, che cosa tavolo. E quale cambiamento voglio fare? E per quale riga o registrare fare Voglio fare questo cambiamento? Hai domande su SQL? OK. Così abbiamo circa 15 minuti. E questa è l'ultima diapositiva che ho. E si spera, questa ultima diapositiva è un buona Segue nel problema impostato, perché capire dove vogliamo inserire record, eliminarli, selezionare loro, e li aggiorna ci aiuteranno comprendere la logica più grande e il flusso di Problem Set 7. Così so tutte le risposte a queste domande. Non ho intenzione di dirvi tutte le risposte. Ma se qualcun altro vorrebbe presentare una domanda al gruppo o di un rispondere ad una di queste domande, possiamo utilizzare che come un punto di partenza per parlare del problema insieme. Oppure, se qualcuno ha un più generico domanda fuori il problema insieme, sentire liberi di chiedere quello. E possiamo cominciare da lì. Tenete a mente che tacere sta danneggiando tutti. Già. AUDIENCE: Così è l'unico modo per passare variabili da e per diverse web pagine o il più conveniente modo, usando POST o GET? JASON HIRSCHHORN: Quindi sì, che è l' modo più conveniente per dire - quando qualcuno compila un modulo - ottenere informazioni su un altro sito pagina, utilizzando GET o POST. A causa del quadro che stiamo usando in questo problema insieme, si noterà che, molte volte, rendering un'altra pagina. O ci rendiamo un altro file, non necessariamente un'altra pagina. Quindi passiamo in una variabile. E poi, rende un Pagina HTML, utilizzando il informazioni da quella variabile. Questo non è tecnicamente passando informazioni tra diverse pagine web. Che sta passando informazioni tra file diversi. E così possiamo usare qualsiasi variabile per farlo. Ma sì, se volessimo passare informazioni da una pagina particolare un'altra pagina, GET e POST sarebbe essere il modo per farlo. Tutte le altre domande su impostare il problema? OK. Andiamo attraverso, poi, una specifica parte del problema impostato. Stai andando avere bisogno di, ad un certo punto, visualizzare portafoglio di qualcuno su schermo. Cosa intendo quando dico portafoglio, nel contesto di questo problema impostare? PUBBLICO: E 'come le azioni che essi hanno how, numero delle azioni possedute, il prezzo, e quanto soldi che hanno lasciato. JASON HIRSCHHORN: Che suona alla grande. Quindi voglio visualizzare tutti i titoli possiedono per ogni società per azioni di azioni e probabilmente quanto questo è pena, e poi una variabile indipendente, quanti soldi possiedono. Quindi dico: voglio descrivere quello. Cominciamo a parlare di come ho potuto Vado a fare che cosa le tabelle sono andando ad avere bisogno di dover essere in grado di farlo. Sì - AUDIENCE: gli utenti bene, e poi, credo che si può fare una tabella chiamata Azioni o qualcosa di simile, che sarebbe come molti che hanno comprato. JASON HIRSCHHORN: OK. Quindi ho intenzione di bisogno di una tabella denominata Gli utenti, che tiene traccia del username, presumibilmente, probabilmente qualche ID, Probabilmente la password di un individuo. Che è un'altra cosa che si appena detto che è associato? Qualcuno oltre a Michael, che cosa è qualcos'altro che è associato con ogni utente, unica per loro? PUBBLICO: ID. JASON HIRSCHHORN: ID - cosa c'è un'altra cosa che siamo probabilmente andando a voler visualizzare in questa pagina? PUBBLICO: Il loro nome. JASON HIRSCHHORN: Il loro nome - che cosa è un'altra cosa relative a questo set particolare problema? AUDIENCE: Cosa scorte di loro proprietà - JASON HIRSCHHORN: Ci stanno per essere un sacco di quali azioni che possiedono. Qual è un valore specifico, però, che stanno per avere associato con loro? Come stanno andando a comprare e vendere le loro azioni? AUDIENCE: Cash. JASON HIRSCHHORN: Sono andando ad avere contanti. Quindi, ogni utente avrà un valore per contanti. E che sta per essere unica per ogni utente. Così nella tabella dell'utente, rende senso mettere in contanti. Si potrebbe, naturalmente, creare un altro tabella che ha ID utente e la loro valore del denaro. Ma non ha senso. Ha senso mettere solo tutto questo in una tabella. Quindi stiamo andando ad avere un tavolo con queste informazioni. E allora, qual è l'altra tabella stiamo andando ad avere? Lei ha detto, un tavolo Azioni. Quello che stiamo mettendo in la tabella Azioni? Chiunque, idee - PUBBLICO: L'azienda. JASON HIRSCHHORN: Stiamo andando mettere in nome della azienda, in modo AAPL per Apple. Già. AUDIENCE: Quante sono le azioni e quanto valgono. JASON HIRSCHHORN: Quante azioni, quanto valgono - cosa c'è qualcos'altro che bisogno in quel tavolo? PUBBLICO: Un ID utente di indicizzarlo. JASON HIRSCHHORN: un ID utente. Quindi, in quel tavolo, faremo probabilmente - diciamo, se si tratta di qualcuno che possiede tre titoli, tre file, ognuna con che ID utente o utente individuale ID, ma un nome di società diversa, una diverso numero di azioni presumibilmente, e un valore di prezzo diverso per ogni di queste scorte. Ancora una volta, quello che sto dicendo ora non è necessariamente l'attuazione, perché ti rendi conto che ci sono alcuni più modi efficaci per attuarlo. Ma questo è un buon punto di partenza. OK. Quindi questi sono i due tabelle che abbiamo. Ora vogliamo visualizzare questa pagina. Qual è il primo tipo di query avremmo bisogno di fare. Su ogni pagina, presupposto che è un utente è registrati, abbiamo l'ID utente. Allora, qual è il primo tipo di Query dobbiamo fare? Già. PUBBLICO: Il loro ID utente. JASON HIRSCHHORN: Abbiamo proprio ID utente, quando stiamo cominciando a codice alla inizio della nostra pagina. Allora qual è il primo tipo di query che bisogno di fare, dato ID di un utente? Siamo andati oltre i quattro tipi. Ci sono solo quattro possibili risposte. AUDIENCE: è selezionare un record. JASON HIRSCHHORN: A Select - vogliamo selezionare da parte dell'utente del tabella per ottenere, diciamo, la loro quantità di denaro. E possiamo stampare la quantità di denaro sulla parte superiore dello schermo. OK. Qual è il prossimo tipo di query che vogliamo fare? Abbiamo alcune altre cose abbiamo bisogno di visualizzare. Quelli che vengono salvati in un'altra tabella. Quindi, come facciamo a ottenere che? PUBBLICO: Si seleziona per loro. JASON HIRSCHHORN: A Selezionare - ancora una volta, ci sono solo quattro opzioni. Selezionare probabilmente suoni come quella giusta. Quindi abbiamo bisogno di fare un'altra query di selezione, nuovamente utilizzando l'ID utente. Ed ora, vogliamo tornare non solo fila, bu tutte le righe che hanno il nostro criteri, dove ID utente uguale a 1. E allora possiamo andare e lasciare un loop solo stampare tutti coloro sullo schermo, magari stampare la società da ciascuno di questi sullo schermo. Grande, che suona come questo è la visualizzazione di un portafoglio, non molto di più complicato di così. OK, l'utente decide poi che hanno un sacco di soldi rimasti. E vogliono comprare un po ' più azioni di una società. Diciamo, che già possiedono magazzino troppo di questa società. Così vanno alla tua pagina di acquisto. Ingresso Hanno il nome della società. Qual è la query, dopo l'ingresso del il nome dell'azienda, che è necessario eseguire il prossimo? Già. AUDIENCE: Update. JASON HIRSCHHORN: Aggiornamento - e che Tavolo vuoi aggiornare? PUBBLICO: Il loro tavolo, a base di il loro numero ID? JASON HIRSCHHORN: Quindi aggiornare Non tabella dell'utente - in modo da aggiornare la tabella Stocks, dove l' ID utente corrisponde non solo, ma l' archivio di nome corrisponde anche. Otterrete un certo valore. E poi, ti consigliamo di prendere tale valore e aggiungere tuttavia molti stock sono vuole comprare di esso. Quindi non si vuole ciecamente sovrascrivere tale valore. Ma si può, infatti, prendere quella iniziale valorizzare e basta aggiornarlo. Si può fare come un più uguale, piuttosto che solo un pari. Che è qualcosa però - se siamo pensando a questo e noi vogliamo essere robusto come possibile - dobbiamo fare prima che corriamo che query di aggiornamento? Vogliono comprare cinque anni di Apple. Ogni azione di Apple, è di $ 200. AUDIENCE: Dobbiamo controllare il denaro in primo luogo. JASON HIRSCHHORN: Dovremmo controllare i soldi prima. Dobbiamo fare in modo che hanno abbastanza soldi. Che tipo di query che possiamo eseguire a assicurarsi di avere abbastanza soldi? PUBBLICO: Un altro Select. JASON HIRSCHHORN: A Select - selezioniamo in base al loro ID utente, per ottenere il loro valore in contanti. Fate un rapido calcolo. E se questo passa Muster, hanno abbastanza denaro. Poi possiamo eseguire il nostro aggiornamento. O forse, se non, passiamo allora. Diamo loro un avvertimento. OK. Dire che non hanno una società. Stanno comprando una nuova società. Stanno comprando Microsoft. Che tipo di ricerche vogliamo fare, se vogliono acquistare Microsoft? E loro non possiedono Microsoft. Non Manu, chiunque altro, chiunque oltre a Marcus? Carlos - PUBBLICO: A Selezionare, per assicurarsi hanno abbastanza soldi. JASON HIRSCHHORN: Suona bene. PUBBLICO: E quindi si inserisce il [incomprensibile]. JASON HIRSCHHORN: Esattamente, siamo intenzione di voler inserire nella tabella Azioni. E stiamo andando a voler inserire. Possiamo inserire l'ID utente, il nome della società, e quante azioni vogliono comprare. Quali sono alcune altre operazioni che sono pagine o funzionalità sei andando ad avere per implementare in P-Set 7, che dobbiamo andare oltre? PUBBLICO: In realtà, io tipo di avere una domanda su questo. Prima di visualizzare il portafoglio, dovrebbe si controlla il sito Web di Yahoo per assicurarsi che i prezzi delle azioni non sono cambiate? JASON HIRSCHHORN: Ecco suoni come una buona idea. Così che cosa Marcus sta dicendo è, OK, archivio i prezzi sono in costante evoluzione. Nelle azioni di cui sono proprietari tavolo, la nostra tabella denominata Azioni, potremmo risparmiare l' prezzo del titolo che lo acquistò a. Ma questo non sembra che robusta, perché il prezzo del titolo è costantemente cambierà. Quindi, in realtà, probabilmente non è necessario per salvare il prezzo del titolo. Ma ogni volta che si visualizza il loro portafoglio, si aggiorna o si aggiorna il prezzo del titolo. E se avete - e hai già. So che hai guardato tutti nella problema di imposta già di ritorno. Hai capito che abbiamo scritto codice per voi che vi permetterà di per ottenere il prezzo di un titolo, in nome di una società. Quindi sì, che suona probabilmente un po 'più robusto. Ma quel tavolo non deve necessariamente per salvare il prezzo del titolo. OK. Quali sono alcune altre funzionalità vi necessità di attuare questa settimana che possiamo parlare? Voglio parlare di loro. Che cosa vuoi parlare? E 'probabilmente in questo spec. Vorrei solo scorrere verso il basso della specifica e mi chiedono la prima parola si vede che non ha senso. Un altra funzionalità - parliamo di uno. Inizieremo lì. AUDIENCE: Registrare le storie. JASON HIRSCHHORN: Registrazione la storia, grande. Quindi stai andando ad avere per tenere traccia di una storia delle transazioni. Così si vuole tenere traccia di ogni momento in cui acquistare o vendere un titolo. Ho comprato il mio magazzino. Abbiamo appena detto, è probabilmente un senso per includere un Select, per ottenere la loro quantità di denaro e di controllare. Probabilmente è intelligente quindi includere un inserire o un aggiornamento, a seconda anche se non possiedono tale stock. Se vogliamo anche tenere traccia di una storia, come possiamo farlo? Ritiene che vanno nella tabella Azioni? PUBBLICO: No. JASON HIRSCHHORN: No probabilmente va in una tabella diversa. Perché dici che comprate 10 azioni di Apple. Poi si compra un altro 10 parti. Si vuole trainare registrazioni separate. Si tratta di due operazioni distinte. Così abbiamo un altro tavolo, una tabella di Storia. Quindi, di nuovo, compriamo. Noi eseguiamo una Select, poi un inserimento o un aggiornamento. Che cosa facciamo dopo? Qual è la query successiva eseguiamo quando stiamo comprando qualcosa? Vogliamo tenere traccia della storia. Già. PUBBLICO: Si desidera tenere traccia del fallito troppo transazioni. JASON HIRSCHHORN: Beh, prima di dire che tipo di operazione, quello che vogliamo - Che tipo di query, Carlos, sarebbe ci permettono di tenere traccia delle cose in generale? Avete quattro tentativi. Quale pensi? PUBBLICO: Aggiornamento. JASON HIRSCHHORN: Non aggiornare. Qual è la tua seconda ipotesi? PUBBLICO: Selezione. JASON HIRSCHHORN: Se si desidera mantenere traccia di qualcosa, probabilmente si desidera di scrivere da qualche parte o salvarlo per dopo. Quindi, se si aggiorna, quindi - AUDIENCE: Inserirlo. JASON HIRSCHHORN: Insert, ci andiamo. Sì, in modo da selezionare la quantità di denaro che hanno, suona alla grande. Non hanno abbastanza denaro. Tale operazione non è andare a lavorare. No, non c'è bisogno di tenere traccia di una transazione se non funziona. Oppure si può, se si vuole dare loro un momento difficile. Ma tu non devi. Poi, si inserisce o aggiornamento nella loro tavolo Azioni. E ora, avete la vostra tabella. Tu hai la tua tabella di cronologia o qualunque cosa si voglia chiamare. E in tale tabella, si sta andando per inserire una nuova riga. Questo è probabilmente andando a avere ID dell'utente. E 'probabilmente sta per avere il nome del titolo. E 'probabilmente sta per avere una volta che hanno fatto. E in questo caso, si ll probabilmente desidera inserire il prezzo. Perché per una storia, non è necessario importa quello che il prezzo attuale è. Si cura ciò che il prezzo è quando hanno comprato o venduto qualcosa. Così suona come, ad attuare acquisti coinvolge completamente un certo numero di diversi Query SQL, ma onestamente, non tanto complessiva codice. OK. E che si occupa della storia. Diciamo che vogliamo visualizzare la nostra storia. Abbiamo parlato di visualizzazione il nostro portafoglio. Come avremmo visualizzare la nostra storia? AUDIENCE: Presumibilmente cronologicamente. JASON HIRSCHHORN: Presumibilmente cronologicamente - quello di query pensate avremmo utilizziamo? PUBBLICO: A selezionare. JASON HIRSCHHORN: A select - seleziona forse tutte le righe di quella tabella Quella partita l'ID utente e quindi visualizzarli in ordine cronologico, suona bene. Abbiamo bisogno di scrivere codice per ordinare attraverso quella lista? PUBBLICO: No, perchè hai detto noi c'è un ascendente e discendenti cosa. JASON HIRSCHHORN: cosa? AUDIENCE: Già. JASON HIRSCHHORN: Già. OK, non girare in codice per me, che ordina manualmente tramite le vostre domande, per ordinare loro. Tale codice è già dato. È possibile scrivere una query di selezione che ordina le cose. Ordinarli in anticipo e poi stamparli. Rende molto più senso fare in questo modo, che il contrario. Sì. AUDIENCE: Non abbiamo bisogno di ordinarli in anticipo? Vuol dire che è sorta li nel database? JASON HIRSCHHORN: La query di selezione li restituisce a voi ordinato. Quindi farlo, e non solo loro hanno ritorno a voi in un ordine casuale e poi ordinare da soli. Già. AUDIENCE: C'è un modo per tenerlo ordinato nel database stesso, in modo che non dovete ordinare ogni volta che si - AUDIENCE: Potete inserire ordinato? JASON HIRSCHHORN: Domanda - Non importa che le cose sono ordinato nel database? PUBBLICO: No. JASON HIRSCHHORN: Beh, essi sono ordinati. Sono in ordine cronologico. Ma supponiamo che le cose sono ordinati cronologicamente, da cima a fondo. Abbiamo un modulo di Google. Ogni volta che qualcuno risponde al nostro Google forma, appena viene messo in fondo di detta tabella. Ha importanza che le cose sono non in ordine cronologico? AUDIENCE: Se non è cronologico, Non si deve ordinare ogni volta si prende informazioni fuori. Ma se è già ordinato, non puoi non avere a che fare ulteriore chiamata di funzione? JASON HIRSCHHORN: Così che è in realtà un buon punto. Per noi come i programmatori, potrebbe importanza. E potremmo voler trovare un database che non ordina le cose cronologicamente. O impostare il nostro database, in modo che mantiene le cose filtrate per ID utente. Quindi in questo modo, per esempio, abbiamo 1.000 ID utente. O Facebook, abbiamo milioni ID utente. Non vogliamo che il nostro tavolo per essere solo casuale o la nostra banca dati per essere casuale. Sarebbe bello se tutti i ID utente sono stati ordinati. Allora potremmo eseguire ricerche binarie sul nostro tavolo e poi basta trovare il specifico pezzo. Quindi sì, a seconda - se ci scalato up, potremmo voler trovare un database che le cose tenute ordinati in una diversa modo, in modo che queste query richiederebbe meno tempo. E non abbiamo dovuto passare attraverso il nostro intero database in ogni singola riga una determinata tabella. Ma il livello stiamo lavorando a, abbiamo non c'è bisogno di preoccuparsi di mantenere cose ordinate. Si può presumere che il tempo necessario che query da eseguire sarà trascurabile, dato quello che abbiamo a che fare. Ma sì, ottima idea - come abbiamo scalare, potrebbe avere senso per progettare il nostro database in un po 'di un modo diverso. Una progettazione di database ultima cosa che voglio parlare così, perché si essere classificati, o piuttosto segnato, su la progettazione del database. Abbiamo parlato di questo. Cash è unico per ogni utente. Quindi hai un cash tabella chiamata che ha proprio user ID e la loro quantità di contanti e poi una tabella denominata Gli utenti che ha il loro utente ID e il loro nome utente. Tali tabelle mappa più su ogni altri uno-a-uno. Si rende probabilmente senso per loro di essere una tabella. Quindi supponiamo di avere un utente tabella che tiene traccia di nomi utente e contanti. Ora avete un tavolo che ha la scorte di un individuo possiede. E un individuo può possedere più di un magazzino. Quindi questi non eseguono il mapping su ognuno uno a altro. Non ha senso avere un gigante tabella che contiene 30 record che tutte ripetere un nome utente, che tutti ripetere una password, che tutti ripetere un numero di denaro contante. Ma ciascuno ha forse un titolo diverso nome o un diverso prezzo delle azioni. Non ha senso avere che molte grandi record. Essere intelligenti di quando si creano questi database, in modo che non si sta facendo qualcosa di stupido come quello, ripetendo molte informazioni inutili. OK. Abbiamo due minuti dalla fine. Le persone al di fuori sono entusiasti di partecipare noi o probabilmente, presumibilmente, avviare una propria classe. Qualcuno ha domande prima di finire? OK, questo era davvero un turbine attraverso tutto ciò. Chiedo scusa che doveva essere così veloce e che non potevamo essere più hands-on questa settimana come Avrei voluto essere. Ma se avete dei dubbi nulla siamo andati oltre o nulla in questo problema set - presumendo che hai letto e metterlo in uno sforzo di buona fede - sentitevi liberi di scrivermi o contattarmi. Sono più che felice di lavorare attraverso il codice con voi o rispondere a qualsiasi domande che avete. Tenete a mente che, questa settimana, un sacco di il vostro tempo sarà speso l'apprendimento della nuova sintassi e cercando di capire come scrivere query SQL o PHP funzioni o accordo con un framework MVC. Un sacco di tempo, probabilmente questa settimana Non saranno cercando di capire il logica folle che siamo ti chiede di fare. Un sacco di esso abbiamo appena visto è relativamente semplice. Quindi, questo non significa che aspettare fino all'ultimo minuto. Ma significa regolare come fate il vostro lavorare di conseguenza, per essere sicuri sei la comprensione e imparare la sintassi. Quindi non sei, tutto ad un tratto, sapendo esattamente quello che vuoi fare, ma con nessuna idea di come esattamente scriverlo. Ok, ci vediamo la settimana prossima.