Tie, kuri mēdz lasīt manus tweetus iespējams pamanīja, ka iepriekšējā nedēļā biju devies uz Veronu, Itālijā, lai apmeklētu PHP veltītu konferenci – phpDay 2012. Vairāk par pašu konferenci var izlasīt http://2012.phpday.it

Šī bija pirmā PHP veltītā konference, kuru līdz šim sanācis apmeklēt. Šī gan nav vienīgā, kura tiek organizēta, to ir daudz. Nākamā, piemēram, būs Dutch PHP Conference jau pēc pāris nedēļām. Līdz šim konferences vienmēr man ir bijušas pārāk dārgas (piemēram, Dutch PHP izmaksas būtu 630EUR + tikpat, lai tur nokļūtu un kādā miteklī naktis pārlaistu). Veronas gadījumā konference maksāja kādus 150EUR un arī nokļūšana/dzīvošana bija krietni lētāk kā citos gadījumos, tādēļ nolēmu nelaist pasākumu garām.

Uzreiz jāsaka, ka biju patīkami pārsteigts par to, kādā kvalitātē viss pasākums noorganizēts. Gan laba vieta, gan daudz pārtikas un dzērienu, gan Social night, gan bezmaksas krekli utt. Vispār varu nosaukt tikai divus trūkumus – ļoti slikts WiFi un viena no telpām bija pārāk maza (līdz ar to populārākajās prezentācijās tautai bija jāstāv kājās). Bet nākošajā gadā tas tikšot novērsts. Domāju, ka pārtikā vien varēja noēst krietnu daļu no summas, kas samaksāta par konferenci. Verona pati par sevi ir skaista pilsēta, līdz ar to garlaicīgi nebija arī brīvajos brīžos. Bet ne jau pārtika vai pilsētas arhitektūra ir tas, kādēļ tur braucu.

Es ikdienā sekoju PHP top cilvēkiem viņu blogos, Twitter utt. Līdz ar to bija patīkami redzēt un dzirdēt vismaz daļu no viņiem dzīvajā. Jā, slavenību nebija gluži tik daudz kā lielākās konferencēs, bet bija OK.

Pašas prezentācijas/runas/uzstāšanās arī bija interesantas. Ne jau viss, bet lielākā daļa. Piemēram, man īsti neinteresē Symfony vai kaut kas tik sarežģīts, kā paplašinājumu programmēšana, kā arī nesaprotu itāļu valodu, tāpēc automātiski atkrita kāda 1/3 daļa no visām prezentācijām. Bet atlikušajās 2/3 atradu sevi interesējošas lietas. Par dažām no tām:

  • Bija patīkami dzirdēt to, ko teica Rasmus (PHP tēvs) par PHP pirmsākumiem, par to, kā tas tika attīstīts, cik izplatīts PHP ir, kā arī, kas jauns ieviests PHP 5.4, kā attiecīgās lietas izmantot, kā arī, kā tās labāk neizmantot.
  • Konferencē uzstājās vairaki cilvēki no Etsy. Viņi piekopj ekstrēmu Agile darbu plūsmu. Vidēji katru dienu tiek publicētas 36 jaunas Etsy versijas. Varēja iepazīties ar to, kādus rīkus viņi izmanto, kā viņi koordinē komandas, kā tik trakā jaunu versiju daudzumā viņi saprot kur un ko skatīties, lai neiekristu kādās drošības problēmās. Vērtīga pieredze visiem Agile piekritējiem.
  • Tiku iepazīstināts ar DataSift arhitektūru. Kā viņi spēj noprocesēt nenormālo datu apjomu (jauni 2TB katru dienu) un piedāvāt analīzi reālā laikā.
  • Biju uz pāris prezentācijām par API – galvenokārt REST un HTTP servisiem kā tādiem. Viena no prezentācijām bija vairāk par ideju, kas ir labi un kas nav labi, otra krietni tehniskāka ar piemēriem, kā taisīt lietas un kā netaisīt. Pat tie, kam REST bija svešvārds, varēja iegūt pietiekami daudz informācijas, lai justos komfortabli runājot par REST.
  • Biju aizgājis paklausīties par Phing (build sistēma PHP). Tā kā man nav svešs Ant piegājiens šai lietai, tad arī Phing likās visai sakarīgs. Iespējams, ka pat pamēģināšu dzīvē.
  • Bija vairākas prezentācijas par tādām lietām, par kurām ikdienā neaizdomājos. Piemēram, par datu struktūrām (PHP pierasts visu mest masīvos, bet tā nav maģiska lode visiem gadījumiem), par to kā rakstīt optimizētāku kodu, par nedaudz netipiskākām lietām (kā, piemēram, par Streams), par darbu Agile vidē utt.

Pēdējās dienās vairākas reizes esmu saņēmis jautājumu – kāda jēga apmeklēt konfereneces, ja grāmatās/internetā var izlasīt to pašu, ko konferencē dzirdēt. Mana atbilde būtu – konference jau nav tikai prezentācija, tas ir sociāls pasākums. Tā ir iespēja būt to cilvēku vidū, kuriem ir tādas pašas intereses, kuri risina tādas pašas problēmas. Ja ir kas jautājams, tad var pajautāt tādiem cilvēkiem, kurus ikdienā neaizsniegt. Ja konference būtu plika prezentācija, tad tā būtu lekcija. Turklāt tie, kas prezentē lietas, māk (lielākajā daļā gadījumu) savu sakāmo pateikt tā, ka tas ātri vien kļūst skaidrs un pelēkajās šūnās aizķerās uz ilgāku laiku. Konferences ir laba lieta. Taču jāizvērtē ir to, vai cena ir saprātīga. Veronas gadījumā (man šķiet), ka tā tas ir un es noteikti nenožēloju, ka tur devos. Visticamāk, ka došos arī nākamajā gadā. Varētu nedoties tikai gadījumā, ja viņiem neizdosies piesaistīt interesantus runātājus. Bet esmu pārliecināts, ka nākamajā reizē būs vēl interesantāk.

Flattr this!

Ik pa laikam interneta plašumos uzvirmo sarunas par to vai PHP ir slikts vai labs. Parasti gan vairāk par to cik PHP ir slikts. Kā arī PHP programmētāji tiek uzskatīti par iesācējiem, tirliņiem skriptu bērnu līmenī, pati valoda tiek uzskatīta par kaut kādu aizvēsturisku šablonu salipināšanas valodu. Un visbiežāk pretī tiek celti tādi zvēri kā Python un citi. Varētu iesaitēt uz n-tajām diskusijām, bet gan jau tie, kuriem šis jautājums interesē, tāpat zinās kur informāciju meklēt. Nedaudz novēloti, bet arī es gribu izteikt savu viedokli šajā jautājumā. Tomēr 7 gadus programmēju ar PHP un uzskatu, ka pa šiem gadiem ir izveidojies visai objektīvs viedoklis par valodu kā tādu.

Uzreiz gribu pateikt, ka es tagad nesākšu pelt vai cildināt citas valodas – nav man tādu zināšanu, lai varētu izvērtēt kas ir labs un kas nav labs.

Jā – savulaik mēs varējām uztvert PHP kā līmi, lai salipinātu dažādus HTML gabalus kopā, kā arī nedaudz apstrādātu lietotāja pieprasijumus un šo to padarīt ar datu bāzēm/failiem. Ja paskatīsimies vecākas PHP grāmatas redzēsim ka PHP savulaik pat tika mācīts nepareizi (no šodienas skatpunkta). Bet tās bija tā laika prasības pret valodu, kuras šī valoda arī apmierināja.

Gāja laiks, prasības mainījās. PHP kļuva iespējām bagātāks. Kas šajā laikā radās kā blakusprodukts? Nekonsistence funkciju parametros, dažādas backward compability lietas (t.i. – saderības vārdā ilgi jo ilgi tiek atbalstītas nejēdzības) un citi brīnumi. Turklāt tas kā PHP ir veidots (piemēram, brīva lēkāšana starp dažādiem datu tipiem utt.) dod iespēju taisīt dažādas nejēdzības tur, kur tām nevajadzētu būt. Kā arī PHP aizņemās dažādas lietas no citām programmēšanas valodām, kas rada visai izteiktu PHP specifisku – lieta X, kas izskatās pēc Y no valodas Z īsti neuzvedās kā Y, bet kā Y līdzinieks ar piedevu K. Bet tas nav nedz labi, nedz slikti – tāds ir PHP.

Un tādu – kā augstāk aprakstīts – PHP redz daudzi jo daudzi pārbēdzēji, daudzi iesācēji, daudzi tie, kas vispār ar PHP īsti nav tā kārtīgi strādājuši. Es nesen parakņājos pa PHP forumiem un jautājumu dēļiem (lasi SO) – tur ir kaudzēm PHP jautājumu. Turklāt no iesācēju tēmas. Un kā jums šķiet, kā izskatās viņu kods? Gluži tā kā pirms 6 gadiem mācīts grāmatās, kuras jau sen vajadzēja sadedzināt. Pamatīgs spageti, vienā failā kopā pieprasījumi datu bāzei, datu apstrāde, kurā pa vidu iemiksēti HTML fragmenti utt. utml. Protams, kaut ko tādu redzot, nevar rasties labs viedoklis par PHP. Un problēma ir tāda, ka daudzi PHP programmētāji tā arī nekad pāri šim līmenim netiek. Viņi ikdienā strādā/uztur tādu spageti un tādu paši arī ražo. Ja es būtu palicis šādā līmenī vai arī ja man ikdienā būtu jāstrādā ar kaut ko tādu, gan jau arī aizmuktu un lamātu PHP.

Bet. Ziniet ko – tā ir tīri programmētāja vaina. PHP ir ērts, labs, funkcionāls rīks, ja to māk pareizi lietot. Gluži tāpat kā C4. Ērta un stabila sprāgstviela, bet nepareizi lietota var uzlaist gaisā arī ne to ko plānots. Un ja kāds darbojoties ar C4 sevi uzlaistu gaisā, ko vainotu – C4 vai personu? Te arī mana atbilde. Vajag izaugt pietiekoši tālu un tad PHP vairs nebūs kā skabarga vienā vietā, bet kārtīgs rīks.

Es ar PHP esmu taisījis gan lapas ar dažām koda rindām, gan tādas kuras strādā uz daudziem serveriem un tās darbina miljoniem lietotāju. Ir iespējams ar PHP taisīt lielus projektus. Ir iespējams nodalīt atbildības sfēras. Ir iespējams taisīt testējamu kodu (testē pēc tam kaut vai ar PHPUnit vai Selenium). Ja šķiet, ka PHP dod parāk lielu brīvību un ir bail ka pats vai komandas biedri novirzīsies no kāda standarta – uzliekam CodeSniffer, sadefinējam noteikumus un nebūs nepareizu konstrukciju kodā. Ar snifferi kods var būt ļoti strikti konstruēts. Un ar laiku dažādi PHP stiķi un niķi jau kļūst zināmi. Gadās pa kādam WTF momentam, bet atļaušos uzskatīt ka tas tā ir katrā valodā. Ja kāds atļaujās teikt, ka ar PHP nevar taisīt kvalitatīvu produktu, tad, piedodiet, bet šis cilvēks vienkārši nav tik tālu izaudzis, lai saprastu ka kļūdās. Iespējams, ka citās valodās var visu vēl smukāk uztaisīt, neesmu eksperts, lai to zinātu. Bet ir skaidrs, ka arī ar PHP to var izdarīt. Turklāt ātri. Turklāt gala produkts ir viegli piemērojams lietošanai pie lielām slodzēm. Ja kāds uzskata citādāk, satiksimies pie alus vai kafijas un pastāstīšu kāpēc tu kļūdies.

Par sevi varu teikt, ka savulaik par PHP esmu lamājies, bet sen jau ir skaidrs, ka no PHP atteikties nedomāju. Protams, zināšanu paplašināšanai gan jau nedaudz apgūšu arī Python un citas valodas. Taču neredzu nevienu iemeslu kādēļ lai es tuvākajos gados atteiktos no PHP. Turklāt lieli projekti jau nav vairs tikai PHP. Tas komplekss pasākums – PHP, datu bāzes (relāciju un NoSQL), JS (klienta un servera pusē) utt., utjp. Un PHP kā starpnieks starp visiem šiem ir labs.

Kopsavilkums: Ar PHP viegli taisīt drazu; daudzi drazu ir taisījuši, taisa un taisīs; PHP ir piemērots lieliem projektiem un tie kas uzskata ka nav piemērots, jūs maldāties (viss ko jūs varat apgalvot ir tas, ka jūs vai jūsu komandas biedri nemācēja PHP pareizi pielietot); iespējams ka valoda X ir elegantāka par PHP, bet tas nenozīmē ka pareizi pielietots PHP ir slikts.

P.S. Ja kāds komentāros sāks ielaisties bezjēdzīgā trololo, es neiesaistīšos.

Flattr this!

Vairākas reizes biju redzējis, ka Zend piedāvā piedalīties kaut kādos mistiskos webināros. Pirms dažām dienām nolēmu, ka jāpapēta kas tas tāds ir. Šoreiz webināra tēma bija “PHP Security”. Tā kā tēma interesanta, tad aizgāju un piereģistrējos. Uz e-pastu saņēmu saiti, kur varēs piedalīties webinārā, kā arī paroli pasākuma pieejai.

Kad pienāca īstais laiks, pieslēdzos attiecīgajai adresei, aizpildīju formu un autorizējos. Firefox sāka kaut ko instalēt, bet pēc procesa beigām tā arī pasākums nepiestartējās. Pamēģināju visu izdarīt ar Internet Explorer un šoreiz viss bija kārtībā. Pieslēdzos šādai videi:

Tātad vide ar vairākiem logiem. Čatošanas iespēja starp dalībniekiem, jautājumu un atbilžu sadaļa, iespēja noregulēt mikrofonu un skaļruņus. Pirmajā mirklī bija apjukums, jo nezināju kā tālāk process notiks. Bet viss bija vienkārši. Lai dzirdētu to ko citi runā ir jāpazvana pa kādu no norādītajiem telefonu numuriem vai arī jāpieslēdzas caur VoIP. Izvēlējos pēdējo variantu.Continue reading

Flattr this!

Raksta par jaunumiem, kuri tiks ieviesti PHP5.3 un PHP6 komentāros minēju, ka nopublicēšu sarakstu ar saitēm uz blogiem, kurus regulāri lasu un kuri ir par tēmu PHP, CSS, Ajax, Web utml. Nedaudz papētot Google Reader attiecīgo sadaļu atlasīju 24 saites, kuras tad redzamas turpinājumā. Lielākā daļa no saitēm ved uz nevis blogiem, bet palieliem resursiem par attiecīgajām tēmām. Ja arī tu regulāri lasi līdzīgas tematikas Web lapas, turklāt tās nebūs pieminēti manā sarakstā, lūdzu dalies ar saitēm komentāros vai savā blogā.Continue reading

Flattr this!

Jau vairākas reizes esmu lasījis dažādus aprakstus par to, kas jauns gaidāms PHP6 un PHP5.3. Pēc katras šādas reizes bija radusies vēlme uzskaitīt jaunievedumus un pastāstīt tos tiem, kas neko par jaunievedumiem nav dzirdējuši vai dzirdējuši pavirši. Beidzot saņēmos.

IBM.com ir nopublicēts raksts “The future of PHP“, kurā smuki uzskaitītas lietas, kuras parādīsies jaunajās PHP versijās, kā arī kuras pazudīs. Es viņas uzskaitīšu, bet ja gribat palasīt sīkāk, kā arī redzēt dažus īsus koda piemērus, tad dodieties uz augstāk pieminēto rakstu.

Jaunievedumi PHP6

Uzlabots Unicode atbalsts. Vairākās kodola funkcijās būs nodrošināta iespēja darboties ar Unicode stringiem (virknēm).

Namespace atbalsts. Šī ir lieta, kuru gaida daudzi, kas aktīvi izmanto OOP principus savos skriptos. Namespace atbalsts nodrošina to, ka turpmāk vairs nebūs nepieciešams domāt par to, ka jāizmanto unikāli klašu nosaukumi. T.i. ja agrāk kāds bija uzrakstījis klasi PDF_generator un šo klasi jūs jau savos kodos izmantojāt, bet gribējāt izveidot savu implementāciju ar tādu pašu nosaukumu, tad jūs to nevarējāt izdarīt. Bija jātaisa klasi liekot tās nosaukumam kādu prefiksu vai pavisam citādu nosaukumu. Savukārt, ja ir Namespace atbalsts, tad nav problēmu izmanto kāda cita rakstītu klasi PDF_generator un jūsu paša rakstītu klasi PDF_generator. Iespējams, ka izteicos neskaidri, tāpēc, ja nav skaidrības kas ir Namespaces iesaku izlasīt šo rakstu. Nav gan labākais raksts, bet man kaut kur pazudusi saite uz vienu citu rakstu. Ja atradīšu – piemetīšu vēlāk klāt.

SOAP atbalsts būs iespējots pēc noklusējuma (PHP5 jau ir SOAP paplašinājums, bet tas pēc noklusējuma nav aktivizēts). SOAP ir protokols ar kura palīdzību savā starpā var sarunāties dažādas programmēšanas valodas.

XMLReader un XMLWriter atbalsts kodolā pēc noklusējuma. Kaut gan PHP manuālī teikts, ka XMLWriter atbalst kodolā ir jau tagad un nav speciāli jāpieinstalē, pretstatā XMLReader. Tā, ka šis mani nedaudz mulsina.

Lietas kuras no PHP pazudīs
magic_quotes
register_globals
register_long_arrays
safe_mode

Sīkāk šīs četras lietas neaprakstīšu, jo ja programmējat PHP, tad zināsiet par ko iet runa.

Pazudīs ASP tipa PHP tagu atbalsts. Tātad ja izmantojāt savos skriptos <% %>, tad pienācis laiks aizstāt tos ar <?php ?>.

Pazudīs FreeType1 un GD1 bibliotēku atbalsts.

Arī ereg vairs netiks atbalstīts, tā vietā jāizmanto preg funkcijas. Tātad ereg() un eregi() vietā preg_match(), bet ereg_replace() un ereg_replacei() vietā jāizmanto preg_replace().

Daļa no PHP6 jaunievedumiem tiks ieviesti arī PHP5.3.

Piemēram, Namespace atbalsts un XMLReader un XMLWriter būs kodolā pēc noklusējuma.

Bez jaunām funkcijām PHP5.3 būs arī ievērojams ātrdarbības pieaugums salīdzinājumā ar PHP 5.2 (līdz pat 30%).

Ja es kaut ko aizmirsu vai kaut kur saputrojos – labojiet komentāros.

Flattr this!

Šodien rakstot kārtējo kodu gabalu nonācu līdz situācijai, kad bija jāsakārto masīvu, vadoties pēc kādas noteiktas tā vērtības. Pirmajā minūtē pat nevarēju iedomāties kā lai to izdara. Protams, pēc vēl minūtes apjukums bija pazudis un kods uztapa. Secināju, ka vajadzētu atkārtot klasiskos algoritmus. Ievadu esmu devis. Tagad pats uzdevums. Jums arī piedāvāju uzrakstīt sortēšanas kodu. Lai būtu interesantāk – visas atbildes tiks turētas moderēšanas režīmā 2 dienas. Tas tā – lai citi nešpiko. Pēc šī laika atbildes aktivizēšu. Interesanti būtu redzēt – vai citi izmantotu to pašu algoritmu kuru es – vai pavisam kaut ko citu. Protams, savus variantus var rakstīt arī tie, kas programmē citās valodās, jo uzsvars ir nevis uz konkrētu valodu, bet algoritmu. Un jā – nav arī jēgas tagad atvērt kādu manuāli un uzrakstīt algoritmu. Rakstiet tā kā varat izdomāt.

Tātad uzdevums. Ir dots masīvs ar nenoteiktu skaitu elementu. Indeksi ir no 0 līdz X, pieaugot pa 1. Vērtības ir masīvi. Šiem vērtību masīviem viens no indeksiem ir ‘value’, savukārt vērtība pie attiecīgā indeksa ir Y. Y ir kaut kāds pozitīvs skaitlis.
Piemērs diviem no iespējamajiem veidojumiem:

$data[0]['value'] = 12;
$data[0]['title'] = 'Some title';
$data[1]['value'] = 43.3;
$data[1]['title'] = 'Some title2';

Masīvu ir jāsakārto tā, lai [‘value’] lauki būtu dilstošā secībā. Tātad piemērā $data[0] vērtība ir jāapmaina vietām ar $data[1] vērtību. Pēc sortēšanas nedrīkst būt pazuduši kādi no masīva uzbūves noteikumos iekļautajiem ierobežojumiem. Piemēram, $data masīva indeksiem joprojām jābūt no 0 un pieaugošiem pa 1.

Ja gadījumā galīgi nav skaidrs uzdevums – sakiet par to komentāros – mēģināšu paskaidrot.

Flattr this!

Es pilnībā saprotu tos, kas PHP koda rakstīšanai izmanto redaktorus nevis IDEs. Pats kādus divus gadus tik vien darīju, kā meklēju man piemērotākos redaktorus, pat neskatoties uz IDE pusi. Laikam baidījos no tā, ka IDEs ir pārāk smagas. Tāpēc priekšroka tika dota kaut kam tik elementāram kā Notepad2. Tagad tas šķiet ļoti neprātīgi, taču vairāki desmiti tūkstoši koda rindiņu ir sarakstīti tieši ar Notepad2. Pāreja uz Linux nozīmēja arī daļāju redaktora maiņu. Jā – uz Linux lieliski strādā arī Notepad2, bet ja ir iespējams, cenšos Wine neizmantot. Līdz ar to bija situācija, ka Windows lietoju Notepad2, bet Linux Gedit. Taču tas bija ļoti nepareizi. Kāpēc? Tāpēc, ka IDE sniedz daudz, daudz tādas lietas, kuras parasti un pat funkcionālākie redaktori nespēj. Tā kā neesmu tik bagāts, lai par IDE izmestu 300$, tad Zend Studio un Komodo nemaz nemēģināju lietot. Tā vietā sāku apgūt EclipsePDT, kas ir pilnībā bez maksas. Nedēļu paspēlējos arī ar Aptana, kam ir bezmaksas versija, bet nepilnīgās funkcionalitātes dēļ Aptana pagaidām netiks izmantota.Continue reading

Flattr this!

Tikko noklausījos Ivo Jansch prezentāciju no phplondon08 konferences.  Prezentācijas tēma bija “Enterprise PHP Develpment”. Prezentācijas ilgums ir nedaudz vairāk par 52 minūtēm. Bet tas ir tā vērts. Jā – Ivo neizstāstīja neko unikālu, bet smuki salika visu pa plauktiņiem. Izstāstīja izstrādes ciklu no sākuma, līdz pat beigām. Kā arī pievērsa uzmanību tam, kas parasti noiet greizi un kādi tam varētu būt standarta risinājumi. Šo prezentāciju būtu jānoklausās visiem, kuriem ir svešs tas, kā taisa nopietna līmeņa PHP projektus. Noklausoties prezentāciju kļūs skaidrs, ka PHP nav kaut kas nenopietns. Nenopietni var būt tikai tā pielietošanas veidi.

Ko tur daudz stāstīt. Noklausieties paši un varbūt radīsies kādi komentāri. Prezentācijas MP3 novelkams šeit (47.8MB), bet slaidi PDF formātā šeit (898KB).

Flattr this!