[webdev] Proiectul de curs

"Ionuț G. Stan" ionut.g.stan at gmail.com
Sat Jan 14 16:49:14 EET 2012


On Jan/14/2012 16:04, "Ionuț G. Stan" wrote:
> On Jan/14/2012 10:22, Dan Filimon wrote:
>> Salut!
>>
>> După ultima revizie a planurilor am vrea să stabilim un proiect pe
>> care să-l folosim pentru a motiva diversele prezentări.
>> Astfel, am decide uite, vrem să dezvoltăm ceva ca StackOverflow. Hai
>> să vedem ce implică asta pas cu pas și toate cursurile să fie făcute
>> din unghiul ăsta.
>
> Nu mi-e clar un aspect. Proiectul ăsta când va fi realizat? După
> cursurile propriu zise, adică în perioada Hackday-urilor din aprilie și
> mai, sau de-a lungul cursului?

Ok... brain dump ahead. Constructive criticism more than welcome.

Eu îl văd proiectul (e unul de Q&A doar pentru exemplificare) dezvoltat 
treptat în fiecare dintre cursuri. Cam așa:

1. Fundamente web: li se spune în mare ce înseamnă web și eventual 
prezintă chiar pe stackoverflow.com cam ce se întâmplă când cineva dă 
click acolo, sau face mouseover acolo, ce vezi dacă dai click pe "view 
source" în browser. Eventual se deschide un firebug și se arată cererile 
asincrone. Nu știu... s-ar prezenta workflow-urile specifice web în 
cazul stackoverflow.com, *cel puțin*. Ideal ar fi să existe cel puțin 
2-3 exemple.

2. HTML & CSS: li se povestește despre HTML și CSS tot în contextul unui 
site de Q&A. Li s-ar putea arată o imagine cu ceea ce își imaginează 
artistul, apoi treptat se transpune imaginea în HTML + CSS. Practic, 
acum se fac view-urile folosite mai târziu în cursul de server-side 
views, dar și de client-side. Se învață practica folosirii Firebug 
pentru furarea de CSS de la alții mai învățați.

3. JS: se iau fișierele de la punctul 2 și se adaugă ceva interacțiune 
la ele. Nimic Ajax la punctul ăsta, asta ar urma în partea a doua de JS. 
Ce s-ar putea arată sunt chestii gen click on question title to toggle 
question content display. Click on "comment" link to open textarea. 
Validări de formular. Chestii din astea super ușurele.

4. Server-side Ruby: habar n-am... nu înțeleg de ce nu există atunci și 
un echivalent "client-side JS".


Aici aș face un mic swap între următoarele două cursuri. Model vs. views 
+ controllers.


5. Views + controllers. Se creează controllere pentru principalele 
URL-uri ale site-ului, și se transpun template-urile HTML în 
template-uri... de care vrea prezentatorul, să zicem RHTML. Cred că va 
fi ceva de vorbit aici despre structura unui proiect Rails (dacă nu se 
vorbește deja la primul curs de server-side). Cereri POST ale căror date 
se rețin doar în sesiune, iar view-urile de listare răspunsuri și 
întrebări vor scoate de aici datele. În felul ăsta se poate vorbi despre 
sesiuni și redirect-uri fără să te legi de persistență.

6. Models. Mmm... cred că e timpul să vă hotărâți ce framework folosiți 
pentru server-side, că nu prea putem trece la altul acum. Eu aș merge pe 
Sinatra, dar mă rog. Oricum, la punctul ăsta se poate trece la 
"modelarea" principalelor entități ale site-ului: question, response, 
user, etc. SQL, migrări... chiar, curs de SQL nu există? Se înlocuiesc 
acum modelele session-based cu astea DB-based. Se creează totodată și 
câteva acțiuni folosite în JS2 la partea de cereri Ajax.

7. JS2. Listare, creare comentarii. Up/down votes. JSON, chestiuni de 
securitate.

8. APIs. Am putea lista Twitter feed-ul pentru contul rosedu într-o 
coloana a site-ului.

9. Deployment. Nu prea-mi dau seama aici. Vreți să spuneți ceva despre 
Capistrano? Fabric? La partea de securitate, cred că ăsta e un subiect 
ce trebuie integrat în toate celelalte cursuri. SQL injection la modele. 
CSRF + XSS attacks la controllere + views. XSS, remote script execution, 
same origin policy la cele de JS. Scalabilitate... habar n-am, știu doar 
teorie aici, n-am niciun pic de experiență.


-- 
Ionuț G. Stan  |  http://igstan.ro


More information about the webdev mailing list