WordPress-ul are un mecanism bine pus la punct in ceea ce proveste pluginurile si widgeturile.
Pasul 1 – Directorul:
Ca sa scrii un plugin nou in primul rand trebuie sa ii creezi un director (atentie la nume, sa fie unic, sunt multi creatori de pluginuri pe lumea asta si nu ai vrea sa te suprascrie cineva). Plugin-urile sunt tinute in /wp-content/plugins/
Pasul 2 – Plugin-ul in sine:
Structura unui fisier cod WordPress e clasica.
Inceputul: descrierea (necesara pentru ca WordPress-ul sa poata detecta si identifica pluginul corect)
/*
Plugin Name: Salut Lume
Plugin URI: http://www.dan.fratean.ro/2010/05/10/WordPress-episodul-2-plugins-widgets/
Description: Salut lume!
Version: 1.1
Author: Dan Fratean
Author URI: http://www.dan.fratean.ro
*/
Plugin-ul in sine (simplu si la obiect):
function salut_lume(){echo"Salut lume! Eu sunt un exemplu!";}
Cam aici se termina plugin-ul. Ceea ce urmeaza tine de partea de widget. Urmatoarea functie tine efectiv de ceea ce va afisa widget-ul. Cum va arata, ce titlu si body va avea; variabilele extrase cu ”extract” tin de integrarea widget-ului in tema aleasa.
function widget_salut_lume($args){extract($args);echo$before_widget;echo$before_title;echo"Salut lume!";echo$after_title;
salut_lume();echo$after_widget;}
Tot ce trebuie sa mai facem este sa anuntam WordPress-ul ca aveam un widget atasat pluginul-ui. Fuctia urmatoare face exact acest lucru. In momentul in care se activeaza plugin-ul, inregistreaza widget-ul “Salut Lume” legat de functia “widget_salut_lume()”.
function salut_lume_init(){
register_sidebar_widget(__('Salut Lume'),'widget_salut_lume');}
add_action("plugins_loaded","salut_lume_init");
Eram bulversat. Deodata, situl la care lucram si era destul de nou, reusea cumva sa supraincarce procesorul serverului in asa hal, incat nici macar nu ma puteam loga in mai putin de 20 de secunde… daramite sa mai dau un banal “grep”!
“El maestro” ma bazaie pe GTalk: “Sefu’! Imi omori serveru’! Pune si tu un memcache, ceva!”
Huh?! Parca am auzit de memcache. Dai pe google! In 3 secunde “yum install php-pecl-memcache”, instaleaza “El maestro” demonul, opreste httpd-ul ca sa il configureze (asa era de incarcat procesorul incat nu putea sa configureze demonul de memcache!) si ii da drumul.
Repornesc apache-ul si in 5 minute 50% din rezultatele query-urilor de mysql erau mutate pe memcache:
$memcache=new Memcache;$memcache->connect('localhost',11211);$rows=$memcache->get("UNIQUE_ID".$query);if(!$rows){$query="select bla_bla from bla limit 10";$result=mysql_query($query);$rows=array();while($row=mysql_fetch_assoc($result))$rows[]=$row;$memcache->set("UNIQUE_ID".$query,$rows,false,2600+rand(0,3600));}foreach($rowsas$row){//do your thing}
Rezultatele? Infricosator de bune!
[root@- www]# telnet localhost 11211
Trying 127.0.0.1.
Connected to localhost.localdomain (127.0.0.1).
Escape character is .^]..
stats
STAT pid 22162
STAT uptime94932
STAT time1273161939
STAT version 1.2.8
STAT pointer_size 32
STAT rusage_user 9.150608
STAT rusage_system 25.857069
STAT curr_items 22086
STAT total_items 27106
STAT bytes 5533400
STAT curr_connections 5
STAT total_connections 33875
STAT connection_structures 76
STAT cmd_flush 0
STAT cmd_get 110985
STAT cmd_set 27106
STAT get_hits 84537
STAT get_misses 26448
STAT evictions 0
STAT bytes_read 14775620
STAT bytes_written 100118868
STAT limit_maxbytes 33554432
STAT threads 5
STAT accepting_conns 1
STAT listen_disabled_num 0
END
Adica, are in cache peste 76% din rezultate! Serverul se misca acum, paginile se incarca, MySQL-ul nu mai taraie dupa el coada de 100 de query-uri.
Viva Memcache!
P.S. Atentie, sa nu puneti in cache valori prea mari sau care se perimeaza repede!
Motto:
Daca il pui pe fiu-miu sa iti zica ce e taica-so… “calculator de calculatoare”!
Daca ma pui sa iti zic cand am vazut prima data un calculator… nu stiu… probabil cel cu baterii solare adus de taica-mio de la sarbi cu ajutorul caruia a calculat darul la nunta lui frate-so…
Daca ma pui sa iti zic daca mi-am dorit sa lucrez ca informatician… nu stiu… dar de mic m-au pasionat problemele de logica si de matematica simpla.
Daca ma pui sa iti zic daca imi place sa lucrez ca informatician… DA.
De ce? Nu stiu!
Am fost nas de cununie deunazi. Stiti ce inseamna asta?! La partea invizibila ma refer. ORDINE SI CURATENI!. Am scos totul din casa, am rasturnat-o cu susul in jos pentru nobila cauza. Degeaba, pentru ca nu a intrat nimeni inauntru, au stat in curte, dar si pe aceasta am facut-o luna/bec. Bataturi si pete de grund pe maini, taieturi si lovituri cauzatoare de grimase asezonate cu o injuratura ca sa taie durerea, erau la ordinea zilei, asta cand nu te durea spatele de nu te puteai misca sau capul de la insolatia facuta pe nesimtite in timp ce replantai iarba pe unde ti-a distrus-o catelul sau alte vremuri grele.
Ideea e ca am dat peste ceva magic. Ceva ce mi-a adus aminte de copilarie. O caseta cu jocuri pentru HC!!! Magnific! Un val de amintiri m-a napadit!
pac-man
Primul contact cu lumea jocurilor “pe calculator” l-am avut cand am “imprumutat” 150 de lei din casa si am chiulit o zi de la scoala in clasa a 3-a impreuna cu un amic de clasa a 5-a (mandru ca in clasa a 3-a aveai numai o absenta daca lipseai o zi, el avand 4!) si am spart banii la pac-man.
Urmatorul a fost prin clasa a 4-a cand am ajuns la cineva din cartier cu un Spectrum Sinclair, unde am stat 20 minute pana a incarcat un joc (din 3 incercate, al 4-lea a fost cu noroc) pentru a ma putea da cu motocicleta printre copaci. WOW ce senzatii!! Eram asa de transpus incat parca iesea un pumn din televizorul Sport la care era legat calculatorul si ma lovea in stomac de fiecare data cand ma izbeam violent de un copac.
Dar adevaratul boom a venit cand, intr-o zi de vara, au venit ai mei de la Craiova (fiind mutati deja la Tg Mures) si am primit propriul meu HC-90! O minunatie!!! Eram in vacanta de primavara din clasa a 7-a. Imediat am mers la vecinul de sus sa imi mestereasca un cablu “de date” cu mufa jack mic intr-un capat si cu mufa cu “5 picioare” in celelalt (acest drum facandu-l cel putin o data / saptamana timp de aproape 3 ani, data fiind calitatea cablurilor). Al treilea pas a fost sa cer o caseta cu jocuri de prin vecini (din partea cealalta de oras!). A urmat epoca asteptarilor luuuuuungi (nu sunt atatea u-uri pentru cat am asteptat) pentru incarcarea jocurilor.
Jocuri minunate si senzatii pe care nu le-am mai trait in nici o lume virtuala de atunci incoace!
Jumping Jack
Cronos si al lui Jing it Baby!
Great Escape
fractali!
In clasa a 9-a (prima de liceu) am inceput sa invat cu adevarat programare. Am mai avut eu contacte cu ea, dar nu o prea pricepeam (desi eu ma credeam as!) si odata cu ea, a inceput explorarea limbajelor de programare (este fascinant cum poti face o masina sa reactioneze cat mai uman posibil). Mergeam peste tot cu al meu HC-90. Incapea in valiza cu care plecam la bunici laolalta cu nedespartitul casetofon, 2-3 cabluri de date si setul de casete cu jocuri sau programe. “Programam” de toate: sigle miscatoare pentru firma lui taica-mio, ceasuri sau fractali (sau ceea ce credeam eu ca sunt fractali… simple linii cu XOR). Programam, si cand scoteam HC-ul din priza disparea toata munca mea (nu aveam casetofon cu record, foloseam un “walkman” banal). Dar era fascinant! A doua zi, o luam de la capat, cu idei imbunatatite de experienta zilelor anterioare.
codul "fractalilor"...
Incet, incet am “explorat” in intregime saracul HC-90. Am creat primul meu joc in mod text. O minunatie!!! Explorai jungla, cadeai in capcane, te atacau tigrii, etc, jucandu-ma zile intregi in minunata lume randomizata. Nu stiam pe atunci, ca timp de 10 ani (imediat dupa terminarea liceului) voi fi pasionat de un joc similar pe net (MUD). Ne jucam sau cream jocuri pana si la “pregatirea” pentru olimpiada (nu aveam voie cu casete sau casetofoane in laboratotul de informatica).
Era HC-ului a disparut incet, incet, odata cu trecerea in clasa a 10-a si mutarea pe perfomantele XT-uri. HC-ul in sine nu a disparut, donandu-l pe umila suma de 100 de mii la vecinul de sus, care cred ca a consumat mai mult cositor pe cablurile mele decat valoarea HC-ului + cei 100 de mii.
Gone but never forgotten!
P.S. Pentru cei vor sa isi reaminteasca:
http://www.worldofspectrum.org (inclusiv http://www.worldofspectrum.org/ZXBasicManual/)
Prima problema de care m-am lovit dupa instalare: pagini custom.
Vreau informatia mea pe pagina! Nu vreau articole! Vreau sa pun ce vreau eu!
Solutia gasita? Custom template/theme pages.
Primul pas: Stabilirea temei. Acest pas e important, pentru ca modificarile ulterioare se vor face in tema aleasa.
Pasul 2: Crearea unei pagini goale.
Am copiat index.php sub numele dorit (tema localizata in : /wp-content/themes/numele-temei). La editarea noii pagini astfel create am adaugat urmatoarele 3 randuri (imediat dupa php start tag):
/*
Template Name: CE NUME DORESTI ex: custom_page_1
*/
Pasul 3: Pregatirea noii pagini.
Am golit noua pagina de continut, lasand numai functiile necesare: get_header(), get_footer(), etc. Astfel am obtinut panza pe care pot picta in voie .
Pasul 4: Atasarea unei pagini WordPress templateului nou creat.
Din wp-admin, am creat o pagina noua si i-am atasat sablonul nou creat (custom_page_1).
Pasul 5: Codul
Aici intervine programatorul. Se poate folosii de libraria pusa la dispozitie de WordPress sau de codul propriu pentru a creea pagina dorita.