A language is only as good as its developer is.

REST autorizacija

Neseniai teko padirbėti su WebServisais, konkrečiau su REST. Naudojau Zend_Rest komponentą. Susidūriau su problema, kai reikėjo perduoti autorizacijos duomenis.
Intuityviai bandžiau rašyti taip:

...
$client = new Zend_Rest_Client(
'http://username:password@api.uri');
...

Ir po netrumpo debug’inimosi supratau ką darau netaip. Pasirodo norint perduoti autorizacijos duomenis reikia naudoti Zend_Http_Client ir jį peduoti Rest klientui. Tad teisingai parašytas kodas tūrėtų atrodyti taip:

...
$client = new Zend_Rest_Client('http://api.uri');

$httpClient = new Zend_Http_Client();
$httpClient->setAuth('username', 'password',
 Zend_Http_Client::AUTH_BASIC);
$client->setHttpClient($httpClient);
...

Sėkmingo naudojimo ;)

“A” letter fix

Kurie reguliariai skaitote mano blog’ą tūrėtumėte prisiminti, jog rekomendavau zendcasts.com puslapį, kaip mokomąją priemonę mokytis programuoti “Zend Framework”.

Kurie mokėtės ir sekėti, tūrėjote susidurti su problema, kai reikėjo integruoti “Zend Framework” ir “Doctrine”. Problema iškildavo, kai apsirašydavote modelį, kuris prasideda raide “A” (iš tikrųjų pavadinimas galėjo būtų bet koks, iki “Base_” :) ). Klaidos kodas:

“aurimas-computer:scripts aurimas$ ./doctrine build-all-reload force
Fatal error: Class 'Model_Base_Account' not found ...”

Klaida kildavo dėl to, jog “application/scripts/doctrine.php” nebuvo aprašytas autoload’as ir skriptas imdavo viską iš eilės ir vykdydavo (ką rasdavo nurodytoje direktorijos).

Sprenimas – inicijuoti autoload’ą. Reikia pridėti papildomą eilutę:

$application->getBootstrap()->bootstrap('autoload');

Tada kodas tūrėtų atrodyti taip:

$application->getBootstrap()->bootstrap('autoload');
$application->getBootstrap()->bootstrap('doctrine');
$doctrineConfig = $application->getOption('doctrine');

Sėkmės toliau naudojat ir dirbant su ZF ir Doctrine ;)

Insert subquery

Kelis kartus teko susidurti su problema, kai reikėdavo daryti mysql insert’ą panaudojant select’ą. Kitais žodžiais tariant, reikėjo insert’inti subquery. Ir visus tuos kartus ieškojau sprendimo internete, nes kažkaip neužsifiksuodavo sprendimas :) Tad, nusprendžiau pasirašyti reminder’į kur ieškoti ir tuo pačiu gal kam dar pravers :)

Paprastas insert’as atrodytų taip

INSERT INTO table (id) VALUES (1), (2)

O insert’as panaudojant subquery

INSERT INTO table (id) VALUES (SELECT id FROM table2)

Manau realių pritaikymų rodyti nereikia ;)

Šaltinis: http://codespatter.com/2008/03/20/multiple-inserts-with-a-subquery/

I. Jansch “Guide to enterprise PHP development”

Jau nuo knygos išleidimo, tikslus jos pavadinimas I. Jansch “Guido to enterpise PHP development”, norėjau ją nuspirkti ir perskaityti. Tuo metu galvojau, kad gal ji man bus kiek per sudėtinga, tačiau dabar galiu drąsiai pareikšti, kad tada ji būtų buvusi man įdomesnė :) Apie tai ką perskaičiau norėčiau pasidalinti su jums, tam, kad patys galėtumėte susidaryti nuomonę ar vertą skaityti ;) More »

Zend_Pdf & Cirilica

Pastaruoju metu nemažai tenka dirbti su “Zend Framework” komponentais. Tad gal ir dažniau pasidalinsiu sunkumais ir sprendimais su kuriais susidūriau. Šiandien ant operacinio stalo Zend_Pdf komponentas.

Problema. Reikia sugeneruoti pdf’ą failą naudojant pdf šabloną, bei jį užpildyti kirilicos simboliai. Problema ta, kad ‘by default’ Zend_Pdf nepalaiko kirilica simbolių. Pavyzdinis kodas:

$pdf = new Zend_Pdf();
$pdf->pages[] = new Zend_Pdf_Page(Zend_Pdf_Page::SIZE_A4);
$pdfPage = $pdf->pages[0];
$pdfPage->setFont(
  Zend_Pdf_Font::fontWithName(Zend_Pdf_Font::FONT_HELVETICA), 12);
$pdfPage->drawText(’This is my text.’, 72, 740, ‘UTF-8′);
$pdf->save('/somehere/on/the/machine/document.pdf');

Sprendimas. embed’inti šriftus. Siūlau naudoti šiuos šriftus. Tada eilutę ‘Zend_Pdf_Font::fontWithName()’ keičiam į ‘Zend_Pdf_Font::fontWithPath(‘/var/blah/dah/FreeSerif.ttf’)’ ir vuolia :) Po visos procedūros kodas tūrėtų atrodyti taip:

$pdf = new Zend_Pdf();
$pdf->pages[] = new Zend_Pdf_Page(Zend_Pdf_Page::SIZE_A4);
$pdfPage = $pdf->pages[0];
$pdfPage->setFont(
  Zend_Pdf_Font::fontWithPath('/var/blah/dah/FreeSerif.ttf'), 12);
$pdfPage->drawText(’This is my text.’, 72, 740, ‘UTF-8′);
$pdf->save('/somehere/on/the/machine/document.pdf');

Viso šio sprendimo minusas yra tas, jog gautas failo dydis pakinta keliais šimtais kilobaitų. Tačiau, lyginant su prieš tai tūrėtomis alternatyvomis, tai gautas failo dydis vistiek buvo ženkliai mažesnis.

Naudoti šaltiniai:

new name – new look

Pribrendo laikas atsinaujinti, tad tuo pačiu sugalvojau pasikeisti ir domeną. Nes http://sektorius.info nelabai ką pasakantis, tad nuo šio mano namų adresas – aur1mas.devnet.lt.

Laikinai dar vyks redirect’as iš aur1mas.sektorius.info domeno.

Taip pat, norėčiau pakalbėti apie mano naująjį dizainą. Atkreipsiu dėmėsį į dešniąją pusę (prie nuotraukos). Kas manęs nepažįsta, tai galima susipažinti (dabar žinosit kaip atrodau :) ). Tada seka ikonos, kurias norėčiau detaliau paaiškinti.

RSS – nuorodą manau visi supratot. Jos paskirties irgi aiškinti nereikia ;)

Kitos ikonos (nuorodos), iš kairės į dešinę:

  1. delicious.com – man bookmark’ų list’as. Straipsniai, kuriuos laikui esant skaitau. Jei norite matyti kuo duomiuosi, bei perskaityti tai anksčiau nei aš iš digg’insiu – tai sekite mane :)
  2. digg.com – straipsniai, kurie man patiko ir manau, kad jie verti pasiskaityti ir kitiems. “Ideas worth spreading” :)
  3. facebook.com – kaip nuorodos be social network’o :) gali būti mūsų susipažinimo ir bendravimo priemonė.
  4. flickr.com – kadangi laisvalaikiu mėgstu fotografuoti, tai įdomesnes foto dedu visam pasauliui.
  5. github.com – man git repozitorija. Visus public projektus planuoju talpinti į ją. Kam bus įdomu ką programuoju plačiąjai visuomėnei – sekite :)

Su nauju vardu ir dizainu planuoju ir daugiau rašyti. Netapsiu naujienų portalu ir nepranešinėsiu kas naujo įvyko IT pasaulyje (mano blog’as apie IT), nes tai puikiai galėsiu išreikšti per delicious.com ir digg.com. Bandysiu rašyti gilesnėm ir analitinėm temom.

Stay tuned! ;)

Every feature is bug

Skype programa sukūrė galimybę redaguoti savo žinutes (leidžia pasitaisyti). Pabandykite, tai padaryti bendruose chat’uose ir “netyčia” paspauskite ant kolegos žinutės ir pasirinkite “Edit message” :) Ugha :D

P.S. Ačiū (ex) kolegai, hipiznui, už leidimą pasidalinti šiuo bug’u (feature’u):)

47k lt :)

Prieš porą dienų su kolegomis kalbėjome apie “open source” projektus ir kaip iš jų uždirbti. Diskusijos eigoje prisiminiau tokį gerą sandorį, kur valstybė nusipirko OpenSource CMS’ą už 47k lt :) .

Ta proga priminiau kolegoms tą psl. adresu vyriausybe.lt ir jau norėjau pasakyti, kad pažiūrėkite HTML kodą, nes jame yra palikti “SiteSupra” komentarai, bet … Pasirodo valstybė, net neslepia šito:

site supra

Pažiūrime į footer’į ir viskas tampa aišku :) Įdomu ką reiškia “Trial version”? Jei “Trial version” kainuoja 47k, tai kiek kainuoja full licence? :)

Google Chrome

Neseniai darbiniame notebook’e vėl susidėjau Ubuntu, tiksliau Wubi (Ubuntu instaliuojamas naudojant Windows aplinką ir naudoja ntfs failų sistemą – joje susikuria ext3 failų sistemą). Naudojam Ubuntu versija yra 64bit’ų. 64bitų, nes Dual Core procesoriaus palaikymas yra šioje architektūroje (bent jau taip rašo Ubuntu :) ).

Kadangi darbe reikia naudoti kelias naršykles, tiek UI testavimui, tiek dėl kitų sumetimų, tai nusprendžiau, kad būtų visai neblogai įsidiegti Google Chrome (Firefox yra instaliuotas jau ‘by default’). Kaip žinia, Google Chrome oficiali versija yra tik Windows platformai. Bet yra kūrėjų komanda, kuri sukūrė alternatyvą kodiniu pavadinimu Chromium
More »

ZF video tutorials

Pastaruoju metu tenka nemažai programuoti su “Zend Framework“. Programuojant kyla nemažai klausymu (logiška :) ), tad kolega pasiūlė visai neblogą resursą, kuriuo norėčiau pasidalinti su jumis.

ZendCasts – video pamokos kaip sukurti web projektą nuo 0 su ZF.

Enjoy! ;)