A language is only as good as its developer is.

Apie Active-Record Design Pattern’ą

Paskutinėje skaitytoje knygoje pavadinimu “clean code” labai užstrigo ši frazė apie “active record” design pattern’ą:

Unfortunately we often find that developers try to treat these data structures as though they were objects by putting business rule methods in them. This is awkward because it creates a hybrid between a data structure and an object.

Aš irgi taip darau… Bent jau dar neseniai darydavau. Ir mano minėta citata puikiai iliustruoja problemą. Žiūrint dar toliau ir galvojant apie refactoring’ą – tai tokiu atveju vėlesnis logikas atskyrimas (DB schemos ar biznio logikos keitimas) tampa labai sudėtingas procesas.

More »

Kolegų kontaktai. Dalinamės!

Labai dažnai iš įmonių vadovų išgirstu, jog susirasti web-programuotoją (kalbu tik apie šią sritį, kadangi pats joje dirbu) yra labai sudėtinga. Tai patvirtina ir visokie startup’ų renginiai, kur 9/10 pranešėjų ieško programuotojo.

Pradėjau galvoti kaip būtų galima šią situaciją iš dalies palengvinti ir nusprendžiau, jog pasidalinimas nuorodų (kontaktų) į kitus web programuotojus būtų nebloga pradžia. Tobulu atveju kiekvienas web-programuotojas blog’eris turėtų turėti tokį sąrašą :) . Pradėdamas nuo savęs skatinu ir jus tai daryti!

Tokių nuorodų nauda tikiu, nes per mėn. sulaukiu keletos pasiūlymų  apsiimti projektus. Bet deja klientus tenka nuvilti savo dideliu užimtumu. Dažniausiai siūliau pažįstamus kolegas, kurie, kaip taisyklė, irgi būna užimti :) . Tad norėčiau dalintis didesniu sąrašu, o tai galiu padaryti tik jį turėdamas.

Jei tu esi vienas iš web-programuotojai – parašyk man (email, twitter, Facebook, linked ar kur kitur, kur mane randi) savo puslapio adresą ir bent jau mano blog’e (dešinėje pusėje esančioje nuorodų juostoje) būsi matomas. Dažniausiai nuoroda į tave keliaus ir kliento email, kuriam pasiūlysiu kitus kolegas.

P.S. taip pat ieškau laisvai samdomo web programuotojo (PHP) su kuriuo galėčiau bendradarbiauti. T.y. perleisčiau jam savo klientus (su kuriais nebedirbu ar naujus) už sutartą komisinį mokestį. Ką domina – rašykit ;)

Ruby On Rails. Nuo ko pradėti?

Norint būti sėkmingu laisvai samdomu darbuotoju – sekti web’o tendencijas yra privalomas dalykas. Aš, šiuo metu, truputį atsilieku nuo viso to ir tik bandau pasivyti tai ką jau daugelis naudojate.

Šį kartą nusprendžiau pasidomėti Ruby On Rails (RoR) framework’u ir pažiūrėti kodėl jis tiek giriamas :)

More »

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.