Cum sincronizezi XAMPP pe mai multe calculatoare folosind Dropbox

Created at: iulie 5, 2014; Last update: iulie 5, 2014

Cu totii am trecut prin asta: am instalat XAMPP pe calculator, am realizat un site superb, dar, cand a venit vorba sa mai lucram la site pe un alt calculator sau laptop, a trebuit sa mergem cu un USB stick dupa noi ca sa transferam fisiere dintr-o parte in alta si sa importam/exportam baza de date dintr-o parte in alta. Apoi, iar, sa ne intoarcem la calculatorul pe care am avut munca originara, cu stickul pe care am facut modificari. Si du-te… vino… du-te… vino…

Apoi am vazut pe YouTube un tutorial unde, de fiecare cand utilizatorul facea o salvare, iconita de la dropbox facea refresh. Mi-am zis “ia te uita… nu m-am gandit la asta”. Dar altii s-au gandit (http://www.pmkelly.com/2012/07/sync-xampp-dropbox/).

Asadar…

Cum iti sincronizezi serverul pe mai multe calculatoare?

Voi pleca de la presupunerea ca toate calculatoarele care intra in discutie sunt cu sistem de operare Windows. De asemenea, voi pleca de la presupunerea ca toate calculatoarele vor avea ca server aplicatia XAMPP.

Pasul 1: Instaleaza Dropbox (https://www.dropbox.com/downloading?src=index).

Dupa ce l-ai instalat, vezi daca esti de acord unde a instalat Dropbox folderul ce va fi sincronizat. De obicei, aplicatia face un folder numit Dropbox in folderul utilizatorului (“C:\Users\NumeleTau\Dropbox”). Eu prefer insa sa instalez folderul respectiv in root-ul discului (C:\Dropbox).

Pasul 1a: Modificarea locatiei folderului Dropbox ce va fi sincronizat.

Se va face destul de simplu: dai clic pe iconita Dropbox din system tray, apoi dai clic pe rotita din dreapta sus a ferestrei care s-a deschis si selectezi “Preferences…”. Acolo selectezi tabul “Account” si apesi pe butonul “Location”. In fereastra care se va deschide selecteaza discul “C:” (sau orice alt disc pe care vrei sa ai fisierele).

Pasul 2: Hotaraste-te unde vei pune fisierele necesare ale serverului.

Eu am facut un folder numit “server” in care am pus inca un folder numit “databases“. In “server” voi pune tot ce in mod normal se afla in “htdocs“-ul serverului XAMPP, iar in “databases” voi pune bazele de date.

Pasul 3: Instaleaza XAMPP

Pentru a evita orice probleme, asigura-te ca vei instala pe toate calculatoarele aceeasi versiune de XAMPP.

Asadar, descarca XAMPP: https://www.apachefriends.org/ro/index.html

Instaleaza XAMPP. Aplicatia iti va spune ca cel mai bine este sa o instalezi pe partitia C:, ca urmare a unor nevoi speciale care altfel ar fi interferat cu securitatea sistemului.

Pasul 4: Modificarea locatiei pentru Apache

Dupa ce ai instalat serverul, nu il porni ca sa putem face modificarile (adevarul este ca poti sa il si pornesti, dar dupa ce faci modificarile va trebui sa repornesti Apache si MySQL).

Cauta fisierul “httpd.config“. Daca ai instalat XAMPP in “C:”, acesta ar trebui sa fie in “C:\xampp\apache\conf\httpd.conf“.

Acolo inlocuieste liniile in felul urmator:

Vechiul parametru Noul parametru
DocumentRoot “C:/xampp/htdocs” DocumentRoot “C:/Dropbox/server”
<Directory “C:/xampp/htdocs”> <Directory “C:/Dropbox/server”>

Pasul 4a: Testarea modificarii

Totul ar trebui sa fie ok, dar daca vrei sa testezi daca modificarea locatiei pentru htdocs s-a realizat cu succes, realizeaza un fisier index.html in “C:\Dropbox\server“. Acolo poti scrie ceva simplu: <h1>Salut</h1>. Dupa ce ai salvat fisierul, porneste Apache si viziteaza http://localhost/index.html. Ar trebui sa vezi un titlu mare “Salut”.

Pasul 5: Modificarea locatiei pentru bazele de date MySQL

Asigura-te ca serviciul MySQL este inchis, verificand asta in panoul de control al XAMPP. Apoi cauta fisierul “my.ini“. El ar trebui sa se regaseasca in locatia: “C:\xampp\mysql\bin\my.ini“. Deschide-l cu un editor de text si modifica liniile in felul urmator:

Vechiul parametru Noul parametru
datadir=”C:/xampp/mysql/data” datadir=”C:/Dropbox/server/databases”
innodb_data_home_dir = “C:/xampp/mysql/data” innodb_data_home_dir = “C:/Dropbox/server/databases”
innodb_log_group_home_dir = “C:/xampp/mysql/data” innodb_log_group_home_dir = “C:/Dropbox/server/databases”

Dupa ce ai salvat fisierul, porneste MySQL si totul ar trebui sa fie ok.

Pasul 6: Repeta aceiasi pasi pe toate celelalte calculatoare.

Ce sa eviti cand lucrezi cu sincronizarea Dropbox

Evita sa ai pornit MySQL pe doua calculatoare (care au pornite si aplicatiile Dropbox) in acelasi timp. Daca se va intampla asta, vor exista erori de sincronizare care se vor oglindi in log-urile MySQL. Nu este o problema grava, dar Dropbox o sa lucreze de pomana in incercarea de a sincroniza bazele de date de pe cele doua calculatoare.

De ce nu merge si cu un sistem Linux?

In principiu, sincronizarea ar trebui sa mearga si cu un sistem Linux. Am incercat sa fac o sincronizare intre un web server pe Linux si un web server pe Windows folosind ca intermediar Dropbox si totul a mers ok pana la faza cu bazele de date (se pot sincroniza doar fisierele din www). Se pare ca MySQL functioneaza diferit pe cele doua sisteme. Daca stii cum sa faci o astfel de sincronizare, as fi bucuros sa te las sa scrii despre asta pe blogul meu (sau sa imi trimiti un link catre o astfel de postare).

O noua carte despre Codeigniter de la Packt Publishing

Created at: octombrie 28, 2013; Last update: octombrie 28, 2013

4704OT_cov

Comunitatea CodeIgniter o duce bine si continua sa activeze, in ciuda evenimentelor din ultima perioada de la EllisLab (http://ellislab.com/blog/entry/ellislab-seeking-new-owner-for-codeigniter). Iar ca dovada in acest sens vine, pe langa pregatirea unei versiuni 3.0 de catre comunitatea de pe GitHub, chiar o carte care a aparut in luna septembrie a acestui an la Packt Publishing.

Scrisa de Eli Orr – un programator cu peste 30 de ani experienta in industria high tech, in prezent un dezvoltator PHP la nivel avansat, centrat pe proiecte care au la baza framework-ul CodeIgniter – si Yehuda Zadik – cu peste 20 de ani experienta in industria IT si peste 8 ani in programarea orientata pe obiecte in PHP, cartea “Programming with CodeIgniter MVC” vine parca pentru a reintari convingerea ca acest framework mai are inca multe de spus.

Cartea este o dovada de curaj din partea celor doi autori, mai ales daca tinem cont ca pe subiectul CodeIgniter nu au mai aparut carti serioase inca de la versiunea 1.7.

De o astfel de carte as fi avut eu nevoie in momentul in care m-am apucat de CodeIgniter. Din pacate, la vremea la care a aparut deja versiunea 2.1 a acestui framework, nici macar internetul nu parea sa faca fata schimbarilor de la versiunea 1.7, neexistand tutoriale care sa ia cu binisorul incepatorii in ale utilizarii OOP si a framework-urilor.

Si, cu toate ca acum cel mai la moda framework pare sa fie Laravel, este nevoie si de existenta unor framework-uri care nu sa nu fie greu de invatat si care, intr-un final, sa te duca la rezultatele pe care te-ai fi asteptat sa le ai.

Aici intervine CodeIgniter. Si daca, impreuna cu un framework fara mari pretentii, usor de invatat si foarte performant, ai alaturi o carte care iti indruma pasii in invatare, atunci vei putea spune fara nicio indoiala ca stii principiile care stau la baza oricarui framework care poate exista pe piata.

Si desi cartea te atentioneaza ca ai nevoie de “ceva cunostinte OOP” pentru a o parcurge, iti pot spune ca chiar si un programator PHP care se afla la nivelul programarii procedurale poate incepe sa o citeasca.

Pornind de la ceva simplu precum faimosul “Hello World”, cartea iti explica in ce consta filosofia Model-View-Controller, permitandu-ti in acelasi timp sa exersezi codul specific framework-ului.

Si, cu toate ca autorii ar fi putut sa se opreasca la elementele de baza care, in fond, intr-o forma sau alta, pot fi regasite disparat pe internet, acestia continua lucrarea cu exemple din lumea reala. Astfel, “Programming with CodeIgniter MVC” nu doar ca te ajuta sa trimiti email-uri cu atasamente sau ca te indruma in realizarea unui sistem de logare, dar iti si arata cum sa realizezi si sa folosesti bibliotecile in CodeIgniter. Regasesti aici exemple de utilizare pentru API-uri importante precum Google Maps, Flickr, Linked In sau Facebook ce iti permit sa faci aplicatii profesioniste ce integreaza cu usurinta elementele sociale.

Nu pot sa nu regret faptul ca in aceasta carte nu este abordata si tema HMVC (Hierarchical Model View Controller) – ce permite o dezvoltare modulara a aplicatiilor in CodeIgniter, dar apreciez in acelasi timp discutia despre ORM-uri. Sper ca astfel de subiecte, impreuna cu altele mai avansate, sa faca parte dintr-o alta carte scrisa de Eli Orr si Yehuda Zadik, stilul celor doi fiind unul usor accesibil si practic.

Avand toate acestea in vedere, aceasta carte este utila nu doar comunitatii CodeIgniter, despre care as putea spune ca este una foarte saritoare, dar si celor care intra pentru prima data in universul framework-urilor PHP sau chiar celor care vor sa migreze si catre un framework care este inca foarte fiabil si fara complicatii.

Cumpara aceasta carte de pe site-ul Packt Publishing.

Cum sa iti faci propriul CAPTCHA in PHP – versiunea de baza

Created at: august 13, 2013; Last update: noiembrie 1, 2013

Codurile CAPTCHA ofera o protectie suplimentara daca vrei sa reduci cantitatea de spam venita din partea spiderilor. Astfel, pentru a te asigura ca un comentariu nu este de fapt spam si ca este nevoie sa fie om cel care vrea sa scrie pe site-ul tau ai nevoie de o imagine care ar trebui sa fie mai greu de citit (intuitia este inca greu de emulat de calculatoare). Dupa cum spune chiar si denumirea…. CAPTCHA este acronim pentru “Completely Automated Public Turing test to tell Computers and Humans Apart”. Continuă să citești

PHP si expresiile regulate (partea II) – prescurtari, interpretarea regex “lenesa”

Created at: iulie 12, 2013; Last update: noiembrie 1, 2013

In prima parte a acestui tutorial v-am mentionat cratima ca metacaracter. Aceasta, pusa in cadrul unui sir de caractere cuprins intre [ si ], indica o plaja de caractere posibile. Astfel, daca punem in regex [a-z], aceasta echivaleaza cu orice caracter alfabetic, de la a la z; daca punem in regex [0-9], aceasta echivaleaza cu orice caracter numeric, de la 0 la 9 etc.

Dar exista si alte modalitati prin care poti reprezenta caractere alfabetice sau alfanumerice. Continuă să citești

.htaccess: Cum sa blochezi/permiti accesul la folder/fisier anumitor IP-uri

Created at: iunie 25, 2013; Last update: octombrie 27, 2013

Vrei, nu vrei, exista momente cand ai nevoie sa blochezi accesul anumitor persoane/IP-uri. Printre motive pot enumera: incercarea de a ti se bloca site-ul printr-un numar foarte mare de cereri, un site care iti copiaza automat continutul, incercarea de logare pe contul tau de catre un asa-zis hacker, comentariile belicoase sau poate simplul fapt ca nu iti place persoana respectiva. Continuă să citești

Codeigniter: Formularele – Lectia 1: Realizarea formularelor. Cum faci un formular in Codeigniter

Created at: aprilie 12, 2013; Last update: noiembrie 1, 2013

Formularele si securitatea… acestea au fost motivele pentru care am decis sa apelez la un framework. Si daca Codeigniter mi s-a parut cel mai usor de invatat, am decis sa folosesc acest framework.

Asadar, intai ar trebui sa realizam formularul pentru preluarea de date de la vizitatorii site-ului nostru. Continuă să citești