A language is only as good as its developer is.

Practical PHPUnit


practical PHP testing

Practical Php Testing

Prieš pradedant laisvai samdomo programuotojo darbą vienas iš tikslų buvo – unit testų rašymas. Tikslo laikytis sekėsi, bet jaučiu, jog mano žinios nėra labai geros, tad norėčiau dar labiau jas pagilinti.

Gal kam iš jūsų tai irgi bus naudinga (aktualu), tad visą medžiagą, pamąstymus ir kodo pavyzdžius aprašinėsiu blog’e ;)

Back to basics

Pradėti planuoju nuo knygos, nuo kurios pradėjau savo pažintį su PHPUnit. Ji yra nemokama, tad galite parsisiųsti: http://bit.ly/5B3Xv4

Nežinau ar pradėsiu nuo pačių pirmųjų skyrių, kurie yra tikrai baziniai ir aiškūs.

Pažiūrėsime kas iš viso to bus. Iki susimatymo kituose įrašuose! ;)

Kaip įmonės gali išnaudoti laisvai samdomus darbuotojus

Šiame įraše daugiau minėsiu programuotojus, bet manau tai puikiai tinka ir kitoms laisvai samdomų darbuotojų profesijoms ;)
More »

We’re humans!

Neseniai atrodau tokį psl. humanstxt.org. Jo ėsmė – sukurti humans.txt failą ir jame aprašinėti žmones, kurie prisidėjo prie projekto kūrimo.

Realiai projekto root’as turėtų atrodyti taip:

  • index.php
  • robots.txt
  • humans.txt

Viename iš savo projektų, jau tai padariau – http://www.pozicijos.lt/humans.txt

Kviečiu ir jus prisdėti prie šios iniciatyvos ;)

P.S. Kadangi seku visus neteisingai parinktus psl. – tai visai neseniai (po humans.txt paskelbimo) – kažkas pozicijos.lt projekte ieškojo failo animals.txt. Įdomu ką tikėjosi jame pamatyti :D

Laisvai samdomas darbas – patirtis

Jau ~ 2 metus dirbu laisvai samdomu programuotuoju, o ~1m. tai yra pagrindinis mano pajamų šaltinis. Tad baigęs knygos apžvalgą norėčiau aprašyti kaip teoriją sekasi pritaikyti praktikoje. Tikslumo dėlei (o programuotojai juk mėgsta tikslumą) reikėtų pasakyti, kad knyga yra gan dažnai atverčiama ir kai kurie skyriai yra iš naujo perskaitomi ;)

Labai daug neišplėsiu – aprašysiu pagrindines gaires, ties kuriomis orientavausi.
More »

ZF FlashMessenger title

Prieš keletą dienų susidūriau su problema, kad naudojant Zend Framework’o (ZF) komponentą FlashMessenger, reikėjo jam perduoti ir pavadinimą (title).

Pagal nutylėjimą – ZF FlashMessenger tokios funkcijos neturi, tad buvau nusprendęs rašyti savo Action Helper’į, bet berašydamas pasigilinau į esantį komponentą ir sugalvojau sprendimą.

Kadangi ZF FlashMessenger palaiko namespace’us kuriuose yra saugomos žinutės ir tų namespace’ų gali būti keli, tad nusprendžiau viename namespace’e saugoti žinutes, o kitam pavadinimus (teoriškai pavadinimas gali būti tik vienas, bet praktiškai visko būna) :)

Žinutės perdavimą apsirašiau paveldėtoje (extend) Zend_Controller_Action (mano atveju – Core_Controller_Action) klasėje.

/**
* add flash message
*
* @param string $message   message to output
* @param string $title     message title
* @return void
* @author aur1mas
*/
protected function _addMessage($message, $title = null)
{
$flashMessenger = $this->getHelper('FlashMessenger');
$flashMessenger->setNamespace('default');
$flashMessenger->addMessage($message);

if (!is_null($title)) {
$flashMessenger->setNamespace('title');
$flashMessenger->addMessage($title);
}
}

Layout.phtml failo kodas, kadangi teko daryti kartu su jQuery plugin’u dialog – tai su juo kartu ir pateikiu.

<?$flashMessenger = 
Zend_Controller_Action_HelperBroker::hasHelper('FlashMessenger') ?
Zend_Controller_Action_HelperBroker::getExistingHelper('FlashMessenger') : 
new Zend_Controller_Action_Helper_FlashMessenger()?>
<?if ($flashMessenger->hasMessages()):?>
  <? $flashMessenger->setNamespace('default');
     $message = implode("&ltbr />", $flashMessenger->getMessages());
     $flashMessenger->setNamespace('title');
     $title = implode(" ", $flashMessenger->getMessages());
   ?>
   <script type="text/javascript">
   $(document).ready(function()
   {
     $('#flash-messenger').dialog({ minHeight: 100, minWidth: 450 });
   });
   </script>
   <div id="flash-messenger" style="display: none;" title="<?=$title?>">
    <?=$message?>
   </div>
<?endif?>

Kam nepatogu skaityti kodą – tai sukėliau snippet’ą į Github’o gist’ą.

M. Burke “The principles of successful freelancing” [II dalis]

Pagaliau prisiruošiau užbaigti knygos apžvalgą. Tiems, kurie neskaitė I dalies – tai ją galite rati čia. Kadangi teksto ir taip daug, tad be didelių įžangų tęsiu :)
More »

Automated testing

Pastaruoju metu tenka nemažai skaityti apie testų rašymą, naudojamus pattern‘us ir pan. Ir visai neseniai peržiūrėjau video apie testų rašymą, kuris man labai patiko, tad norėčiau pasidalinti su visais.

Free books

Kadangi paskutiniu metu netaip jau ir daug laiko turiu straipnsių rašymui (o jų tikrai nemažai dar laukia :) ) ir blog’o apleisti nesinori, taip pat ir delicious.com uždaro (ieško pirkėjų). Tad reikia iškelti visas savo sukauptas nuorodas.

Ta proga norėčiau pasidalinti nuorodomis į nemokamas knygas apie programavimą:

  • http://www.e-booksdirectory.com/programming.php
  • http://www.flazx.com

Bent jau man, kai reikia kokio eBook’o – tai visada jį randu viename iš paminėtų puslapių :) Gero naršymo ir linskmų likusių švenčių ;)

Zend Webinars

Kadangi mano turimi videocast’ai nespėja taip greitai atsinaujinti, tad susiradau (prisiminiau) dar vieną šaltinį, kur galėčiau pasižiūrėti apie PHP & Zenf Framework.

http://www.zend.com/en/resources/webinars/

Manau daugumai ši nuoroda ir taip žinoma :) Aš dažniausiai stengiuosi sudalyvauti live webinar’uose, bet ne visada pavyksta. Tad šis resursas kaip tik, kai netūrėsiu ko naujo peržiūrėti :)

P.S. jis reikalauja būti registruotu zend.com vartotoju.

wkhtmltopdf for PHP

Vienam iš projektų, su kuriuo dirbu, reikėjo PDF generavimo. Aišku, aš kaip tingus programuotojas tikrai nesu nusiteikęs generuoti lentelių ir jų stilių, tad pasiėmiau jau naudotą įrankti “Wkhtmltopdf”.

Tada atradau, kad jie turi parašę klasę integracijai su PHP. Bet man ji nelabai patiko, dėl $_GLOBALS ir statinių reikšmių, tad nusprendžiau, kad bus maloniau pasirašyti savo klasę ir ją naudoti.

Rezultatas – https://github.com/aur1mas/Wkhtmltopdf :)

Galvojau klasė bus trumpesnė, bet sumoje gavosi ~500 eilučių. Tikiuosiu dar kam be manęs ji bus naudinga ;)