ZendCasts.comDažas dienas iepriekš jau Twitterī padalījos ar saiti uz Web lapu ZendCasts. Tad biju arī nodomājis, ka gan jau tie, kam tas interesē būs piefiksējuši. Taču tagad sāku domāt, ka ne jau visi Twitterī man seko, turklāt arī tie kas seko to nedara 24/7. Turklāt arī Google nebūs manu Tweetu noindeksējusi un nevarēs parādīt potenciālajiem informācijas tīkotājiem.

Tad nu lūk. Ir tāda Web lapa – http://www.zendcasts.com, kurā apkopoti vairāki screencāsti (šim vārdam latviskojums vispār ir?) par un Zend Framework. Autors par lapu saka šādi:

Zendcasts is a weekly podcast in screencast format covering different parts of the Zend Framework, a PHP framework designed for developing enterprise application development. The site was launched at the beginning of 2009 and is managed by Jon Lebensold.

Nu jau video skaits ir ~ 30 un regulāri tiek pievienoti jauni. Apskatītās tēmas ir ļoti dažādas. Sākot no pavisam elementārām, beidzot ar tēmām, kuras būs interesantas jau pieredzējušākiem Zend Framework lietotājiem.

Turklāt šiem screencastiem ir vairākas ļoti labas īpašības:

  • Runātājam ir laba izteiksmes forma. Visu var labi saprast. Nav čarkstoša skaņa vai murmināšana zem deguna.
  • Video ir liela izšķirtspēja – nav nepieciešams samiegt acis, lai kaut ko redzētu, turklāt viss rādāmais ielien kadrā.
  • Video ir svaigi. Tas nozīmē, ka nebūs šajās pamācībās novecojusi informācija.
  • Video var ne tikai skatīties Web pārlūkā, bet lejupielādēt arī iTunes.

Ja esi viens no nedaudzajiem Zend Framework lietotājiem (nē – pasaulē to lieto daudzi, bet Latvijā, diemžēl, retais), tad tevi varētu interesēt rīks, kuru dēvē par Scienta ZF Debug bar. Kā jau nosaukums liecina – tā ir rīkjosla ZendFramework aplikāciju kukainīšu ķeršanai. Šķiet, ka citiem ietvariem šādi risinājumi jau ir pieejami krietnu laiku, taču Zend Framework tāds izveidots nesen (jāpiebilst, ka Scienta ZF Debug bar ir trešās puses izstrādāts rīks).

Izskatās tas šādi:

2009-scienta_debugbar

Šāda rīkjosla tiek parādīta apakšējā kreisajā stūrī pa virsu web lapai. Līdz ar to nekādi neietekmē web lapas izkārtojumu/dizainu.

Kā jau pēc bildes noprotams – ir iespējams redzēt kāda Zend Framework versija tiek izmantota, kādi mainīgie piesaistīti skatam (View variables, Cookies, Request), cik pieprasījumi veikti datu bāzei (kā arī redzēt pilnīgi visus pieprasījumus SQL pierakstā, papildinātus ar katra izpildes laiku), cik daudz atmiņas izmantoja skripti, PHP kļūdas, cik pavisam laiks bija nepieciešams (kādi tieši faili no visa lielā ietvara tika ielādēti utt.). Uz katra no mazajiem lodziņiem uzklikšķinot parādās lielāks logs, kurā redzama detalizētāka informācija.

Jāsaka kā ir – ļoti ērts un glīts rīks. Izmantoju tikai vienu dienu, bet jau esmu jutis no viņa reālu jēgu. Līdz ar to šis nu būs neatņemama sastāvdaļa tālākajā izstrādē, kur izmantošu Zend Framework.

Pats Scienta ZF Debug bar lejupielādējams http://jokke.dk/software/scientadebugbar . Tur ir arī atrodama sīkāka informācija par to kā rīks konfigurējams un uzstādāms (izdarāms ar dažu rindiņu palīdzību). Taču ja rodas problēmas uzstādīšanā – jautā – palīdzēšu.

Tie, kas seko šim blogam būs pamanījuši, ka es pirms kāda laika sāku pastiprināti interesēties par Zend Framework. Nu jau būs pagājuši kādi pāris mēneši kopš aktīvi esmu sācis izmantot Zend Framework viena Web projekta izstrādē. Tas ir pirmais projekts, kuru veidoju izmantojot kādu ietvaru, tāpēc gribētu pastāstīt par to, kādi secinājumi man ir radušies izstrādes laikā. Es domāju, ka lielākā daļa no secinājumiem būtu tādi paši izmantojot arī citus ietvarus, nevis tikai specifiski Zend Framework.

Pirmais un pats svarīgākais – vai es arī nākamo projektu taisīšu izmantojot ietvarus? Jā – noteikti! Tas tāpēc, ka ietvari palīdz izstrādē krietni vairāk, kā rada problēmas.

Lielākās problēmas ir:

  • laiks, kurš jātērē, lai ietvaru apgūtu
  • neviennozīmība ātrdarbības novērtējumā

Varētu jau likties, ka ietvaru apgūstam vienu reizi – pēc tam tikai to izmantojam, jo visu jau zinām. Tā gan īsti nav. No sākuma ir jāapgūst ietvaru kā tādu. Savukārt vēlāk ir regulāri jāseko līdzi ietvara attīstīšanas gaitai – tam kāda papildus funkcionalitāte tiek pielikta, kāda ir labā prakse izmantošanā, optimizācijas iespējas utt. Tas ir nepārtraukts izglītošanās process.

Savukārt par ātrdarbību ir tā, ka neviens nestrīdās par to, ka uz ietvariem veidota Web lapa būs lēnāka no koda izpildes viedokļa par Web lapu, kura tiktu būvēta uz ne tik sarežģītiem/universāliem skriptiem. Diskusijas notiek par to, kurš ietvars ir lēnāks/ātrāks un cik liela ir šī atšķirība. Mans viedoklis ir tāds, ka skriptu izpildes ātrdarbība nav tik svarīga šajā gadījumā (par to kādēļ – pastāstīšu turpinājumā). Tāpēc šādas diskusijas ir tīri tikai tāpēc, lai pamērītos, kura izmantotais ietvars ir pārāks kādā parametrā.

Kādi tad ir ieguvumi? Vismaz es jau tagad varu uzskaitīt sekojošus:

  • jauna pieredze un zināšanas
  • plaša funkcionalitāte, kuru pašam nav jāraksta – līdz ar to izmantojama out of the box
  • izstrādes ātrums
  • pārskatāmība un kārtība

Lai gan iepriekš minēju, ka viena no problēmām ir laika veltīšana ietvara apgūšanai, šoreiz ir jāsaka, ka ja var atļauties šo laiku ziedot, tad var iegūt nenovērtējamu pieredzi un zināšanas. Es šo divu mēnešu laikā esmu apguvis vairāk kā pēdējos pāris gados kopā. Esmu apguvis vairākus design patterns, jaunas valodas konstrukcijas, programmēšanas stilus utt. Ja iepriekš es dzīvoju uz tādām zināšanām, kādas biju ieguvis pirms vairākiem gadiem vai arī tās papildināju ļoti lēnām, tad tagad jaunu lietu apguve notiek tik strauji, ka pēc kāda gada varēšu uzskatīt, ka esmu zinošs PHP programmētājs.

Ietvaros ir realizētas daudzas tādas funkcijas, kuras parasti nāktos rakstīt pašam. Šo funkciju izmantošana ieekonomē ļoti daudz laika. Turklāt, ja tiktu izmantotas savi skripti attiecīgajām lietām, tad šādi skripti savā kvalitātē un funkcionalitātē progresētu daudz lēnāk, kā tie, kurus izstrādā kā ietvaru sastāvdaļu. Nav jēgas izgudrot riteni vēlreiz! Protams, neviens neliedz aizvietot kādu ietvara funkcionalitāti ar tādu, kas pašam šķiet ātrāka/labāka/ērtāka. Ņemam to, kas šķiet svarīgs un ērts.

Tā kā daudzas lietas pašam nav jāprogrammē, tad krietni pieaug izstrādes ātrums. Protams, sākotnēji nākas zudēt laiku, jo nav īsti zināms, kā strādā katra komponente ietvarā, bet kad tas tiek apgūts, tad izstrādes ātrums pieaug ļoti strauji.

Ietvari visbiežāk uzspiež kaut kādu programmēšanas stilu. Piemēram, MVC patternu, noteiktu metožu nosaukumu veidu utt. Varbūt sākotnēji tas šķiet ļoti ierobežojoši, bet kad pēc kāda laika ir jāveic papildinājumi un labojumi, tad šāda standartizēta pieeja ļoti atmaksājas. Protams, neviens neliedz izmantot kādus nosacījumus koda organizēšanā arī tad, ja netiek izmantoti ietvari. Bet zinot cik brīvi PHP pacieš dažādas izvirtības kodos, var viegli prognozēt, ka ja PHP programmēšanas stils netiek uzspiests, tad agri vai vēlu, bet sāks kodā parādīties dažādi brīnumi, par kuru eksistenci īpaši priecāties nevajadzētu.

Augstāk biju minējis, ka manuprāt uz ietvariem bāzēto skriptu izpildes ātruma problēmas nav būtiskas. Tas tāpēc, ka ne jau vienmēr visu var mērīt tikai tajā, cik ātri izpildās viens kaut kāds skripts. Pieņemsim, ka Web lapa ir samērā apmeklēta. Uz ko tiks likts uzsvars Web lapai, lai nebūtu problēmu ar ātrdarbību. Pareizi – uz kešošanu. Savukārt, cik ātri serveris var parādīt iekešotu lapu viena vai otra ietvara gadījumā? Pieļauju, ka ātruma starpība būs nenozīmīga. Tas pats attiecas uz ietvaru izmantojošas Web lapas salīdzinājumu ar tādu, kura neizmanto ietvarus. Ja abas izmanto kešošanu, starpība nevar būt būtiska. Bet izmaksas, lai izveidotu lapu uz ietvara bāzes būs krietni mazākas, kā tādu, kura ietvarus neizmanto. Tad kāpēc maksāt vairāk?

Ja vēl neizmantojat ietvarus, iesaku pamēģināt. Varbūt, ka iepatīkas. Galvenais atrast tādu ietvaru, kurš patīk un šķiet piemērots. Tā kā ietvaru ir samērā daudz, novēlu, lai meklēšana vainagojas panākumiem.

Nepilnu dienu pēc tam, kad uz serveriem tika izlikts Zend Framework 1.6 RC1 Preview, esam sagaidījuši arī Zend Framework 1.6 RC1 versiju. Šajā versijā ir vairāki būtiski jaunievedumi, kā arī izlabotas vairākas kļūdas. Tā kā šī ir tikai Release Candidate versija, tad attiecīgo pakotni nevajadzētu izmantot uz produkcijas serveriem, bet ar to var jau paspēlēties, lai pārbaudītu vai viss strādā. Un ja gadījumā pamanat kādas kļūdas, tad noteikti ziņojiet, lai tās varētu paspēt izlabot līdz fināla versijai. Pirms fināla versijas būs arī RC2. Lielākais papildinājums funkcijās ir Dojo integrācija. Šī implementācija ir veidota tā, lai būtu vienkārši integrēt arī jQuery un citas JavaScript bibliotēkas. Nedaudz žēl, ka izvēlēts tika Dojo, nevis jQuery, jo ar pēdējo es strādāju ikdienā, taču Dojo pat nekad neesmu izmantojis.

Pilns saraksts ar jaunievedumiem:
* Dojo Integration
– JSON-RPC
– Dojo Data packing
– Dojo View Helper
– Dijit integration with Zend_Form & Zend_View
– Dojo Library Distribution
* SOAP
– SOAP Server
– SOAP Client
– Autodiscovery
– WSDL access
– WSDL Generation
* Preview of Tooling Project in Laborator (see /laboratory folder)
– Command Line Interface
– Project Asset Management
* Unit Testing Harness for Controllers
* Lucene 2.3 Index File Format Support
* Zend_Session save handler for Database Tables
* Paginator Component
* Text/Figlet Support
* ReCaptcha Service
* Zend_Config_Xml Attribute Support
* Character Set Option for DB Adapters
* Zend File Transfer Component
* New Media View Helpers (Flash, Quicktime, Object, and Page)
* Support in Zend_Translate for INI File Format

Interesanta šķiet Zend File Transfer komponente. Lai gan tā ir vēl tikai savas funkcionālās attīstības sākumā, var redzēt, ka šī komponente būs noderīga. Pamatideja ir līdzīga kā formu apstrādē. Varam sadefinēt dažādus nosacījumus. Augšupielādētās lietas tiek pārbaudītas – vai tās atbilst nosacījumiem utt. Tā kā failu augšupielāde ir viena no nedrošākajām vietām dažādās Web aplikācijās, tad ir patīkami, ka būs komponente, kura varētu novērst lielu daļu no potenciālajām problēmām. Vairāk par šo komponenti var palasīt šajā rakstā.

Ja interesē apskatīties prezentācijā un uzdot jautājumus lektoriem par jaunievedumiem Zend Framework 1.6 versijā, tad iesaku reģistrēties Webināram What’s New in Zend Framework 1.6?. Par to kas ir Webinārs rakstīju kādu laiku atpakaļ.

Zend Framework in Action Īsti nezinu, kā tālāku tekstu nosaukt. Apskats, recenzija vai vēl kā citādi. Lai nu kā, esmu izlasījis grāmatu “Zend Framework in Action” (ZFiA) un vēlos padalīties ar informāciju par to, kas kurā grāmatas nodaļā rakstīts, kā arī kas manuprāt no rakstītā ir īpaši noderīgs un kas nav pateikts. Uzreiz jāpiebilst, ka grāmatas versija, kuru lasīju bija “Nepabeigts melnraksts” stadijā. Taču neskatoties uz to, ka līdz grāmatas izdošanas brīdim tajā var notikt nelieli papildinājumi, pamatlietas nemainīsies. Brīdinu – apraksts sanācis nedaudz pārāk garš.

Kā jau liecina nosaukums, ZFiA ir grāmata par Zend Framework. Šo grāmatu sarakstījuši 3 autori: Rob Allen, Nick Lo un Steven Brown. Visi savas jomas lieli speciālisti. Grāmata ir sadalīta 3 daļās un tai ir divi pielikumi. 3 lielās daļas satur kopā 16 mazākas sadaļas, kuras aptver visus būtiskākos Zend Framework laukus. Šobrīd grāmatai ir 279lpp, bet tā kā izmantotais fonts ir visai smalks, tad iekļautās informācijas apjoms ir liels.Continue reading

Zend Framework in Action Kā jau būsiet pamanījuši, esmu nostājies uz Zend Framework apgūšanas ceļa. Kādu laiku atpakaļ biju pa kreisajiem ceļiem sameklējis grāmatas Zend Framework in Action stipri pavecu versiju. Jautāsiet – kā var būt paveca versija? Ļoti vienkārši. Šī grāmata joprojām ir tapšanas stadijā un tai tiek pieslīpētas pēdējās nodaļas. Savukārt tā versija, kuru biju ieguvis es, bija labi ja puse no tā, kas ir tagad uzrakstīts. Turklāt vecajā versijā bija arī vairākas kļūdas. Taču nu es esmu ieguvis pašu svaigāko grāmatas versiju (neejot kreisos ceļus), kuru tagad cītīgi lasu. Kad lasīšana būs pabeigta, uzrakstīšu recenziju, iekļaujot tajā informāciju par to, kas grāmatā atrodams, kādi iespaidi rodas grāmatu lasot (pozitīvi, negatīvi) utt. Tāpēc, ja jums ir vēlme uzzināt sīkākus iespaidus par grāmatu, neaizmirstiet šeit iegriezties pēc kāda laika. Kā arī – ja jums ir kādi īpaši jautājumi par grāmatu un tajā atrodamajām lietām, droši rakstiet komentāros zem šī raksta. Ja jautājumi būs, tad uz daļu atbildēšu komentāros, bet uz daļu pie recenzijas (atkarībā no tā kāda tipa jautājumi tiks uzdoti).

Es pēdējās laikā mēģinu saprast kā notiek lietas pasaulē, kuru dēvē par Zend Framework. Teikšu kā ir – visai grūti un negribīgi šīs pasaules likumi padodas manai saprašanai. Iepriekš nebiju strādājis pēc kādiem PHP patterniem, tāpēc ir visai grūti pierast pie MVC, singleton utt. Turklāt Zend Framework ir sarakstīts izmantojot augsta līmeņa objektorientētās programmēšanas principus (vismaz man tā šķiet). Ar augsta līmeņa es domāju tādu, kur iekļauti teju vai visi objektorientētās programmēšanas principi. Tā kā biju dzīvojies pārsvarā uz PHP4, tad arī OOP prasa visai daudz jaunu lietu apgūšanu.

Tāpēc esmu nolēmis, ka veltīšu blogā speciālu lapu, kurā apkopošu saites uz dažādiem materiāliem par Zend Framework. Lai gadījumā ja vēl kāds sadomā lauzties šajā sistēmā, tad, lai viņam būtu kāds daudz maz sistematizēts resursu apkopojums no kura smelties zinības. Šobrīd resursu uzskaitījums ir visai haotisks, bet cerams, ka ar laiku tas tiks labots.

Domājot par to, kā paātrināt programmēšanu PHP, kā arī kodu padarīt pēc iespējas lasāmāku un vieglāk modificējamu biju sācis veidot pats savas klases dažādu uzdevumu veikšanai. Piemēram, mijiedarbībai ar datu bāzi viena klase, lietotāju autorizēšana un ar to saistītajām lietām cita klase utt. Tādā veidā varēju ieekonomēt laiku, ja vairākos Web projektos nepieciešama kāda daļa pamatfunkcionalitātes, kas atkārtojas. Turklāt, ja jāveic kādi labojumi vecajā kodā, man atliek tikai pamainīt attiecīgo klasi un nomainīt klases failu projektos, kuros tas ir iesaistīts. Bet tad es aizdomājos, ka klases kuras es varu uzrakstīt bieži vien ir stipri ierobežotas kādos apstākļos. Tāpēc vai nu tās būtu jāpapildina, kas prasa daudz laika un daudz testēšanas vai arī vajadzētu paskatīties uz kādu ietvaru pusi. Iepriekš biju pretinieks ietvariem, jo lai tos izmantotu, tie no sākuma ir jāapgūst, bet tas prasa laiku. Turklāt kāda cita taisītu ietvaru nevar tik labi pārzināt kā paša rakstītu ietvaru vai klašu kopumu. Bet tad aizdomājos, ka neesmu jau es eksperts programmēšanā un gan jau, ka tie ietvari kas ir uztaisīti ir tādas kvalitātes, kādu man nekad nesasniegt. Tāpēc esmu nolēmis, ka apgūšu vismaz vienu ietvaru. Un izvēle ir kritusi uz Zend ietvaru.

Paskatoties šo pamācību, secināju, ka pamācīties nāksies diezgan daudz. Bet viens ir skaidrs – ja kāda lapa tiks uztaisīta ar Zend ietvara palīdzību, tad kādam citam to kodu modificēt būs krietni ātrāk un vieglāk nekā ielauzties manā kodēšanas stilā (pieņemot, ka viņš būs zinošs par to kā Zend strādā). Turklāt, ja attiecīgā lieta būs apgūta labi, tad jaunu Web projektu taisīšana varētu notikt krietni ātrāk nekā tas man sanāk tagad. Tie ir pirmie iespaidi. Nezinu kā īsti būs. Bet skaidrs ir viens – nākamo projektu taisīšu ar Zend – vienīgi būs jāmeklē jaunu hostingu, jo tagadējais PHP5 nepiedāvā (pagaidām).

Varbūt kādam ir pieredze ar Zend ietvaru un var padalīties ar lielākajiem ieguvumiem, problēmām?