Created
January 18, 2012 17:17
-
-
Save paulbarbu/1634217 to your computer and use it in GitHub Desktop.
yap-report
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
*.log | |
*.aux | |
*.out |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
.PHONY: clean | |
pdf: | |
xelatex raport.tex | |
clean: | |
rm -rf *.{log,aux,pdf} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
\documentclass[12pt,a4paper]{article} | |
\usepackage[T1]{fontenc} | |
\usepackage[romanian]{babel} | |
\usepackage{fontspec} | |
\usepackage[colorlinks]{hyperref} | |
\addto\captionsromanian{\renewcommand{\abstractname}{Abstract}} | |
\begin{document} | |
\title{Raport \href{https://github.com/paullik/yaCMS}{yaCMS} \& | |
\href{https://github.com/paullik/dotophp}{dotophp}} | |
\author{Barbu Paul - Gheorghe\\ | |
\texttt{[email protected]}} | |
\date{} | |
\maketitle | |
\begin{abstract} | |
Acest document va prezenta stadiul celor două proiecte \texttt{yaCMS} și \texttt{dotophp} | |
dezvoltate în cadrul cursului \emph{yap-phpro} și cunoștințele acumulate în | |
timpul dezvoltării lor. Prima secțiune are ca scop identificarea abilităților | |
dobândite, iar a doua secțiune prezintă stadiul proiectelor. | |
\end{abstract} | |
\section{Introducere} | |
\texttt{yaCMS} este primul proiect din seria celor două, acesta oferă posibilitatea | |
scrierii de module care oferă o anumită funcționalitate și îmbinarea lor într-o | |
manieră elegantă. \texttt{dotophp} este un set de module deasupra \texttt{yaCMS} | |
care, împreună, formează aplicația propriu-zisă. | |
\section{Cunoștințe} | |
Știind că totul pleacă de pe hârite, din stadiul de idee, orice proiect trebuie | |
gândit în cel mai mic detaliu încă de la început, această strategie oferind | |
posibilitatea de structurare în etape a proiectului și de dezvoltare eficientă. | |
Anvergura proiectelor a impus folosirea unui sistem de versionare, git, dar în | |
special un sistem de lucru pe branch-uri. | |
\texttt{yaCMS} este fundamentul pe care se bazează \texttt{dotophp} și care face | |
posibilă reutilizarea și modularizarea componentelor, de unde și | |
mentenabilitatea codului. În urma completării lipsurilor sistemului de | |
bază s-a acoperit o gamă largă de use-case-uri păstrând simplitatea și logica | |
aplicațiilor, ele putând fi utilizate și modificate ușor de alți programatori. | |
De asemenea orice funcție și structură de date prezentă în aplicație este | |
documentată, iar generarea documentației în vederea publicării se poate realiza | |
cu utilitarul \texttt{Doxygen}. | |
Necesitatea stocării datelor în locații permanente a condus la folosirea | |
fișierelor și a datelor serializate, dar și a bazelor de date, \texttt{MySQL}. | |
În vederea securizării aplicației s-au aplicat filtre pe input-ul utilizatorilor | |
cu scopul de a reduce posibilitatea creării unor vectori de atac ce ar putea | |
compromite aplicația și chiar informațiile personale ale utilizatorilor. | |
Interacțiunea clienților cu aplicația trebuie să fie înlesnită de o interfață | |
simplă și intuitivă, în conformitate cu standardele web. | |
Independența programatorului este și ea un plus în evoluția proiectului, având | |
posibilitatea și puterea de documentare și informare din surse multiple. | |
\section{Stadiul proiectelor} | |
În yaCMS trebuie rezolvată problema dependințelor circulare între module, dacă | |
modulul \texttt{A} are ca dependință pe \texttt{B}, iar \texttt{B} la rândul lui | |
pe \texttt{A} se vor face cereri la infinit, dar asta se poate rezolva | |
cu o funcție care ar trebui să fie apelată imediat după includerea fișierului de | |
configurare \texttt{modules.php}. | |
Apoi issue-urile deschise pe GitHub care constau în îmbunătățiri, legate de | |
accesibilitate și ease-of-use. | |
În ceea ce privește dotophp, nu este un proiect la fel de matur. În primul rând | |
ar fi de rezolvat issue-urile de pe GitHub legate de accesibilitate cât și de | |
funcționalitate. | |
La ștergerea unui eveniment, alarme sau categorii userul ar trebui să | |
confirme ștergerea respectivului item, iar la modificarea unui astfel de | |
item form-ul trebuie golit după ce s-a terminat modificarea pentru a evita | |
confuzia utilizatorului. | |
Faptul că aplicația execută query-uri fără ca input-ul să fie procesat de | |
\texttt{mysqli\_real\_escape\_string()} reprezintă o reală problemă de | |
securitate. | |
O altă problemă este redirect-ul de la login spre alte module, uneori | |
userul este redirecționat, alteori nu, iar când redirecționarea se face cu | |
success formularele nu funcționează corect deoarece parametrii \texttt{GET} rămân | |
setați în URL. | |
O altă componentă neimplementată este funcționalitatea de adăugare rapidă a | |
evenimentelor, Quick Add, input-ul trebuie parsat și interpretat conform unei | |
sintaxe, încă nestabilită. | |
Modulului alarmelor îi lipsesc notificările, pe e-mail după planurile curente. | |
Asta se poate rezolva cu un script rulat de \texttt{cron} care verifică data și | |
ora curentă, iar dacă acestea se potrivesc cu a unei alarme sistemul trebuie să | |
trimită un mail spre clientul care a cerut notificarea. | |
De asemenea o funcționalitate de calendar este necesară în vederea intersectării | |
agendelor userilor, aceștia putând să stabilească întâlniri și ședințe când | |
fiecare participant la eveniment este disponibil. | |
Trecând la partea socială a aplicației, este necesară implementarea unui modul care permite | |
modificarea setărilor, preferințelor cât și a informațiilor personale ale userului, | |
momentan setările inițiale sunt cele obligatorii. În vederea intersectării | |
agendelor s-a cristalizat nevoia unui modul de căutare al utilizatorilor și al | |
evenimentelor publice. | |
Pe lista de features sunt trecute plugin-urile, prin care user-ul are acces | |
la API și ar avea posibilitatea să extindă aplicația. Un modul de administrare, | |
\texttt{admin control panel}, este necesar pentru a interzice accesul userilor | |
abuzivi. | |
Considerând nevoia de instalare rapidă a dotophp, este indispensabil un wizard | |
de instalare al aplicației, care crează baza de date, populează fișierele crontab | |
și verifică existența extensiilor necesare aplicației. | |
În vederea integrarii cu servicii web populare se pot implementa opțiuni precum | |
setarea avatarului userului și posibilitatea creării unui | |
cont folosind servicii web Google, Facebook, Twitter, OpenID, etc. | |
\section{Concluzie} | |
Cantitatea de experiență acumulată într-un asemenea proiect este mare și | |
provocările practice fixează cel mai bine teoria, de asemenea unele lucruri se | |
observă doar lovindu-te de ele. | |
\end{document} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment