Skip to content

Instantly share code, notes, and snippets.

@paulbarbu
Created January 18, 2012 17:17
Show Gist options
  • Save paulbarbu/1634217 to your computer and use it in GitHub Desktop.
Save paulbarbu/1634217 to your computer and use it in GitHub Desktop.
yap-report
*.log
*.aux
*.pdf
*.out
.PHONY: clean
pdf:
xelatex raport.tex
clean:
rm -rf *.{log,aux,pdf}
\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