Prolog
Lahko bi se tolažil z nam vsem znanim latinskim pregovorom da je vsak začetek težak, le da meni začetki nikoli niso delali preveč težav. Prav nasprotno. Rad imam zečetke, nove stvari, izzive, naloge, saj le tako lahko nahranim male sive celice, ki vedno hrepenijo po svežem znanju. V moji situaciji gre za primer “čevljarjeve babe” in “kovačeve kobile”, ki sta vedno bosi. ;) Že dva meseca, tistih nekaj prostih ur na teden, ki jih imam med projekti, porabim za “krpanje” bloga. Odločil sem se, da bom blog objavil, čeprav še ni stoodstotno pripravljen in preveden.

Blog! O čem?
Predvsem seveda “reklamiranju moje dejavnosti”. Vsi prispevki na blogu pa bodo imeli skupno nit oziroma slogan – Human knowledge belongs to the world. :) Našli boste kakšen pameten tanač[1], “code snippet”, tutorial, … Če drugega ne se boste lahko kratkočasili nad mojim modrüvanjon[2]. Zapisi na blogu so zanimi in privlačni predvsem za “web developerje”, ki si svoje znanje in izkušnje šele nabirajo. Ne bom se trudil pisati v popolni slovnično pravilni slovenščini, vmes bo padla kakšna angleška skovanka, za posladek še prekmurska rejč[3].


Prvi post
Kot je glava polna idej, bo ta prvi prispevek ena velika mešanica – en mindenfele[4] izlivov in razmišljanj. Dobra dva meseca nazaj sem zaključil z delom v AV studiu in se odločil za meni ugodnejšo opcijo – delo doma. Kar naenkrat se je pojavila potreba po predstavitveni spletni strani. Klasične spletne strani so “pase”, torej je bila edina pametna izbira blog. Odločil sem se, da bom “hvatal krivine”, in uporabil “open source”, saj mi že časa za redne projekte skorajda primanjkuje. Vprašanje izbire je bila trivialna odločitev, saj sem bil iz vseh strani bombardiran s slavospevi Wordpressu in malem morju več ali manj (ne)uporabnih pluginov.
Nemudoma sem to “čudo tehnike” potegnil dol z neta. Programerska žilica mi ni dala miru in pogledal sem v php “source fajle”. Sledilo je veliko razočaranje! Kje je PHP 5 in tri leta razvoja? Trezna glava je počasi prevladala poklicno deformacijo in odgovor je bil na dlani. Na več kot 77% vseh strežnikov, ki imajo inštaliran PHP še vedno kraljuje verzija 4, kar pomeni za WP velik delež pogače. Dejstvo je, da je v PHP 4 lažje programirat[5], kar prinaša kvantiteto pluginov ki jih pišejo uporabniki stari od 10 do 90 let. Wordpress – zagotovljena zgodba o uspehu.
PHP 5 je hiter in stabilen, v razvoju je že verzija 6, in ni prav nič pretresljivega, da se je PHP odločil da bo “pokopal” verzijo 4. Poskrbeli bodo samo za kritične “security” flajštre[6]. A to dejansko pomeni konec verzije 4? A bodo sedaj vsi naenkrat na vrat na nos presedlali na 5-tko? Dvomim! Poglejmo na primer samo stari dobri ASP. Zadnja verzija 3.0 je ugledala luč sveta novembra 2000, od takrat naprej ni bilo sprememb. Microsoft ne nudi več tehnične podpore, ampak pod taktirko IIS7 še vedno lepo laufa. Precej programerjev danes razvija web aplikacije v klasičnem ASP-ju. Zakaj ne gredo enostavno na ASP.NET ki je naslednik starine? Odgovor leži v arhitekturi frameworka. ASP.NET je tako imenovani “event-driven” framework in programerja vzpodbuja da razvija aplikacije po “event-driven” GUI vzorcu z razliko od ASP in PHP, ki sta klasična “web-skriptna” jezika. Za prehod na novejšo različico je potrebno drugačno razmišljanje.

Podoben vzorec lahko najdemo v PHP-ju. Proceduralno programiranje v 4-ki zahteva drugačne pristope kot pa objektno programiranje 5-ke z vsemi njenimi čari[7]. Ta miselni preskok je za marsikaterega programerja pretrd oreh in se rajši držijo “starih” (ra)(na)z(v)ad.
PHP 5 se prepočasi prebija na strežnike[8]. A to pomeni smrt 6-ki še preden se je rodila? :)
Upajmo da ne, he, he. V izogib tega so se združili posamezniki iz nekaterih glavnih “open source” projektov in nastal je GoPHP 5. Projekt so med drugim podprli: Drupal, Gallery, PEAR, PHPUnit, PHPMyAdmin, in kopica ponudnikov “web hostinga“. Preden so nekateri pristopili k projektu, so se na netu prirejale prave borbe in verbalna klanja okrog PHP verzij in katera je “Über Alles”. Več ali manj se je vse odvijalo po načelu “svaki cigo svoga konja hvali”. Seveda diskusija ni prizanesla niti WordPressu oziroma njenemu “očetu” Mattu Mullenwegu, ki na svojem blogu piše: Fast forward 3 more years and PHP 5 has been, from an adoption point of view, a complete flop.
He, he, pravi komedijant tale Matt, ni kaj. :) No, kakorkoli že se bo Matt odločil, Wordpress nima problemov z PHP 5, le njegovih potencialov ne izkorišča, kar je prav škoda.
Nazaj k blogu. Naslednji korak je bil oblačenje in okinčanje[9]. Web design mi nikoli ni šel preveč od roke, na srečo pa je na netu cela armada “Wordpress Themes“. Iskal sem nekaj prepostega in bog ne daj kockastega. :) Navdušil me je iTheme, čeprav domači računalnik poganja Linux. Z malce “šaranja” po kodi sem dodal še en stolpec in spremenil glavo dokumenta. SGML Parser ErrorKot web developer uporabljam trenutne standarde in včasih že malce pretiravam. Čeprav večina templatov zagotavlja, da so XHTML Valid mi je rdeč križec HTML Validatorja govoril ravno obratno. Pridem do spoznanja, da po kodi rovari Wordpressov WYSIWYG editor in ker že skoraj desetletje kucam HTML na roke, je izklop le tega edina prava rešitev. Kljub temu Wordpress še naprej avtomatično formatira poste in ne zaključuje pravilno paragraph tagov? Ko že obupam in se spravim popravljat kodo, se vseeno spomnim na strica Googla, ki najde plugin z imenom Disable wpautop. Vsebuje le dve vrstici:

remove_filter ('the_content',  'wpautop');
remove_filter ('comment_text', 'wpautop');

Ti odstranita “buggy” funkcijo wpatuop iz “hooka” in s tem preprečita avtomatsko formatiranje teksta. Tisti, ki malce bolje poznate Wordpress veste da filtri – “Filters” in akcije – “Actions” skupaj tvorijo tako imenovane “Hooks”, ki enostavno omogočijo pluginu da se priklopi v WordPress.
Res, vse zveni tako enostavno. Kot primer podajam najbolj preprosti Foo Bar plugin, ki na koncu posta doda tekst:

/** add foo bar filter on content */
add_filter('the_content', 'addfooBar');

/**
 * Add foo bar at end of the content
 *
 * @param string $content
 * @return string
 */
function addFooBar($content) {
	$foo = 'Foo Bar';

	return  $content . " $foo";
}

Za komentarje v kodi uporabljam Documentation block oziroma DocBlock ampak o tem kdaj drugič. ;) Vrnimo se k pluginih. Niso vsi tako nedolžni kot izgledajo, zato previdnost pri njihovi uporabi ni odveč. Do pred kratkim je bil Ultimate Tag Warrior ranljiv na SQL injection. Kaj to za čuda je v kakem prihodnjem postu, je pa ta vrsta varnostne luknje zelo pogosta pri programerjih, saj enostavno pozabijo, da je potrebno vsak uporabniški vnos preverjati in filtrirati. Na varnostno luknjo sem opozoril tudi avtorico plugina, ki je sicer že popravila napako. Še screen: SQL injection UTW – PoC. No Matt, če bi bil Wordpress napisan za PHP 5 bi naprimer lahko uporabil PDO exstension, ter parameteriziran SQL vnos in bi zadeva bila s tem zaključena ;)
Hrošči v aplikacijah so čisto nekaj običajnega, to bo potrdil vsak, ki je napisal vsaj eno vrstico kode. Ni aplikacije, ki bi bila stoodstotno brez napak. Da bi programer imel čimmanj poznejšega “debuggiranja”[10] mora dobro poznati okolje v katerem programira. Poznavanje robnih pogojev določenega problema, vsako preverjanje in filtriranje vnosnih podatkov, ustrezno reagiranje na napake, lahko že prepreči nepričakovano obnašanje programa oziroma aplikacije, ki se v najbolj nežni obliki pokaže kot “sesuvanje”, da pa o črnih scenarijih nite ne bomo razmišljali. Tudi sam Wordpress ni nobena izjema kar se tiče “luknjavosti”, o tem se lahko prepričate na spletni strani od NVD-ja (National Vulnerability Database).

Epilog
Treba bo zaključiti, ker bom drugače pisal še tri dni ;) Upam, da vam s tem prispevkom nisem odvrnil želje od bloganja in uporabe Wordpress-a. ;) Če imate željo po “izlivih” v elektronski obliki je Wordpress pravo orodje za to[11], saj ga obdaja ogromen “cummunity”, ki skrbi da nikoli ne zmanjka oblekic in priboljškov za njega. Poskrbite za to, da boste imeli na strežniku inštalirano karseda “friško”[12] verzijo. Po vsaki posodobitvi preverite vaše plugine, obstaja velika verjetnost da ne bodo več delovali. :) Za sledenje verzij pluginov, ki jih imate nameščene na vašem blogu priporočam WP Plugins Tracker. Ne uporabljajte tiste, katerega zadnja posodobitev je bila pred več kot pol leta, definitifno obstaja boljša ekvivalenca. In nabolj važno: redno skrbite za backup!

Happy blogging(coding)!

  1. nasvet; Dala mi je že ene par dobrih tanačof. []
  2. gostobesedno in nesmiselno govoriti; Ne modrüj telko. []
  3. beseda; Tak se guči, tao je rejč! []
  4. mindenfele: raznorazne []
  5. če izvzamemo da ne programiramo objektno v PHP 5 – a ima potem sploh smisel preiti na petko :) []
  6. flajšter: obliž []
  7. konstruktor, dedovanje, polimorfizem, statične metode, php design paterni … []
  8. le dobrih 20% ga je na vseh svetovnih inštalacijah []
  9. okrasiti; Krispan so inda okinčali z oreji pa s süjon sadjon. []
  10. razhroščevanja – postopek iskanja in odpravljanja softverskih hroščev []
  11. pustimo programsko kodo v ozadju, he, he []
  12. sveže: Pobrao san friško šalato. []

Sorodni zapisi: