14. December 2010

Bez testů do vývoje nelez

Parafráza na: Bez peněz do hospody nelez ;-)

Príklad z praxe: Finálny výsledok bol zle generovaný. Asi 50 krát som prešiel kód. Prešiel som všetky vrstvy. To proste nebolo možné, výsledok sa musí generovať správne!

Pozorný čitateľ iste poznamenal: Nemusí. :-P

Presne tak. Výsledok sa generoval nesprávne. A to aj napriek mojej utkvelej predstave, že všetko je napísané správne.

Tak som sa zamyslel, napísal som 5 testov, ktoré sa spustili za menej než jednu sekundu. Nad testami som pustil debugger, predebuggoval som chybný test.

Ajhľa. Bug. Miniatúrny. Fakt malý. Chýbajúci jeden riadok v štvrtej vrstve.

Preto nezabudnite písať testy a hlavne nezabudnite na to, že testy sa dajú ľahšie debuggovať než finálna aplikácia. :-)

Ešte poznamenám, že pre vývoj na Pythonierskom Googliom AppEngine, je Intellj IDEA 10 (s Python pluginom) parádny nástroj. Pri unittestoch je potrebné správne nastaviť PYTHONPATH, a to nie len do google_appengine, ale aj do google_appengine/lib/webob.

29. November 2010

Materiály z prednášky – Vývoj v C++

Aj tento rok som mal možnosť odprednášať jednu prednášku vrámci kurzu C++ na FI MUNI v Brne. Ďakujem Petrovi Švendovi za pozvanie.

Pribudlo niekoľko noviniek.

Predovšetkým kontinuálna integrácia, profiling a debugging. Zo zaujímavostí pribudlo Adobe Alchemy – kompilátor z C++ do ActionScript Virtual Machine2.

K dispozícii sú materiály z prednášky vo formáte PDF a ukážky vo formáte Tar.gz.

19. September 2010

Záznam z prednášky – Když něco rozeberem, tak leda debuggerem

Záznam z mojej minuloročnej prednášky z WebExpa 2009 – Když něco rozeberem, tak leda debuggerem. Ďakujem tímu WebExpa za spracovanie záznamu.

BTW: Nezabudnite sa zúčastniť aj WebExpa 2010, ktoré sa bude konať už za pár dní.

27. February 2010

IntelliJ IDEA 9.0 na Linuxe nefunguje sieť. Pozor na IPv6.

Potreboval som nejaké rozumné prostredie, v ktorom je možné pohodlne vyvíjať Flex na Linuxe. Adobe Flex Builder 3 alpha 5 nie je úplne dobre použiteľný. Nefunguje tam Design view na kreslenie GUI. To by mi až tak nechýbalo. Horšia je chyba v otváraní MXML dokumentov.

Tým pádom aplikáciu, ktorá pozostáva nie len s ActionScriptu, nie je možné ladiť. Tento problém s ignorovaním supportu Flex Buildra (Flash Buildra) na Linuxe, sa dostal na prvé miesto v rebríčku najsledovanejších bugov. Predbehol dokonca aj FP-40.

Pustil som sa teda do hľadania iného nástroja. Vo fóre niekto odkazoval na IntelliJ IDEA 9.0. Stiahol som toto IDE, stiahol som Flex SDK z Opensource.adobe.com. Vytvoril som projekt. Nádherne všetko fungovalo. Niektoré vlastnosti má IDEA podstatne lepšie spracované než Eclipse. Proste Wow. A teraz prišlo na lámanie chleba.

Naštartujem debugger s náhonom na všetky 4… Nič… Waiting for AIR of Flash player to connect.

Ughm… Flex Debugger Startup Error

O 5 hodín neskôr.

Myslíte, že sa mi to podarilo rozbehať? Nie.

Tu som si všimol niečo čudné. IntelliJ IDEA sa vôbec nechcela pripojiť na sieť. Napríklad zlyhal aj update zoznamu pluginov. List of plugins was not loaded: Network is unreachable. Čudné.

A potom mi to došlo. Ten nešťastník sa pokúšal pripájať cez IPv6 na internet, čo sa mu nepodarilo.

Na základe návodu som v /etc/default/grub.conf zmenil parameter pre štart jadra a deaktivoval IPv6

GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1 quiet"

a zaktualizoval Grub 2

update-grub

Po štarte systému som sa presvedčil príkazom o deaktivovanej podpore pre IPv6:

ip a | grep inet6

Žiadny riadok na výpise. Úspech, nebeží žiadne IPv6 rozhranie.

A výsledok? IntelliJ IDEA 9.0 funguje perfektne a výborne debugguje aj Flexové aplikácie.

27. October 2009

Zdroják.cz – napísali o mne

Rád by som sa pochválil referenciou z portálu zdrojak.cz – Střípky z WebExpo 2009.

Ďakujem za referenciu. :-)

16. October 2009

WebExpo 2009 – prednáška – Když něco rozeberem, tak leda debuggerem

Materiály z prednášky sú k dispozícii. Ak sa vám prednáška páčila a niečo vám priniesla, tak je to veľmi dobre ;) Nezabudnite hodnotiť prednášku na stránkach konferencie WebExpo 2009. Ďakujem všetkým, čo prišli. :)

22. September 2009

WebExpo 2009 – prednáška o debuggovaní

16. 10. 2009 o 17:30 budem prednášať v Prahe na konferencii WebExpo 2009. Tento rok sa pozrieme na možnosti ladenia server side aplikácií a ako ich písať o kúsok kvalitnejšie. Prednáška má titul: Když něco rozeberem, tak leda debuggerem. Ctený čitateľ určite bystro sporozoval malú paralelu. ;-)

Tak prídite, ocením každú mexickú vlnu počas prednášky. A ako vždy, malý bonus pre čitateľov. Pokiaľ sa za mnou zastavíte po prednáške s heslom: “Aj ja si kúpim báger.” Čaká vás malá odmena ;-)

14. August 2009

Vzor: Neporiadok

Poznáte ho. Určite ho poznáte. Sedíte si v kresle a on sa zakráda poza váš chrbát. Dokonca niekedy sa drzo objaví aj pred vami. O kom hovorím? O neporiadku.

Neporiadok prechádza niekoľkými vývojovými fázami. Najskôr je malý, nepozorovaný. Schováva sa za kancelárskou sponkou. Ani si nevšimnete a už si k sebe zobral váš hrnček so včerajším čajom. Už sa dostáva do fázy, kedy je pozorovateľný, ale stále nie je agresívny. Neporiadok je samoorganizujúca sa, semidemokratická entita. Následne prejde do fázy: kopovitý neporiadok. Začne kumulovať potenciál. Typicky sa to prejaví v raste výšky kopy, kde sa neporiadok nachádza. Keď už má dostatok potenciálu, expanduje. Z kopy sa oddelia malé kôpky, ktoré majú vyššiu mobilitu než matererská kopa. Obsadia vám napríklad stoličku.

Už ste skúšali odstrániť neporiadok zo stoličky? Určite áno. Vrátili ste neporiadok späť na pôvodnú kopu. To je však len prilievanie oleja do ohňa. Neporiadková kopa získa späť svoju matériu a je tak schopná rýchlejšie expandovať. Narozdiel od vás, neporiadok totiž nespí. Druhý deň už je obsadená nie len pôvodná stolička, ale aj ďalšie. Kopy navzájom fungujú synergickým efektom. Typická útočná metóda používaná kopovitými neporiadkami je zosuv. Neporiadok sa zosunie zo stola, na stoličku a parapet. Z parapetu zhodí kvetináč. Rozbitým kvetináčom sa dostane na zem a vďaka vyliatej vode z kvetináča, presiakne o meter ďalej. Pokiaľ sa neporiadku nepostavíte, ovládne vás, vašu kanceláriu, váš biznis, váš život a akvárium.

Ako vyzerá neporiadok v IT?

Kedysi sa ľudská blbosť šírila rýchlosťou zvuku. Vďaka počítačom sa šíri rýchlosťou svetla.

- anonymný autor ľudovej IT múdrosti

Vďaka IT získal neporiadok nové formy, nové prostriedky a nové zákerné metódy.

Povedzme, že ste mladá, dynamická, progresívna, agilná, agresívne, progresívna firmička. Na počte nálepiek, ktoré si dáte, ale nezáleží. Vyvíjate program, softvér, komponentu alebo ako si už svoj komplexný systém nazvete. Viete, že už od prvého riadku kódu sa v ňom nachádza neporiadok? Neviete. Há. A to je presne moment kancelárskej sponky. Dva zbytočné riadky, kde jeden pričíta jedna a druhý odčíta jedna. O deň neskôr dostane váš vývojár za úlohu naprogramovať takú a takú fciu. Zistí, že podobná tam je. Tu nastupuje na scénu silný pomocník IT neporiadku, spoločnosť Copy & Paste limited. Z dvoch riadkouv sa stanú štryri? Ale kdeže. Osem. Pretože vývojár nemá čas sa zamyslieť. Už po ňom sales chce ďalšiu funkciu. Než sa stihnete spamätať, už je tam tých riakdov sedemnásť.

Potom k sebe tento kód pribalí knižnicu, ktorá je potrebná na nejaké fcie. Vzhľadom na to, že implementujete komplexný, multimodulárny systém, pribudne do systému ďalší modul. Ako vznikne? No duplikáciou už existujúceho a zmenou kódu v ňom. Vývojár v novom module nahradí funkcie, tak aby vyhovovali novým požiadavkam. A množstvo neporiadku sa opäť zdvojnásobilo. Naviac nový modul so sebou ťahá knižnicu, ktorú nepotrebuje. Tá presiakne do build systému. Vzhľadom na to, že je experimentálna, začne kolidovať so systémovými.

Tu ešte namá neporiadok takú silu. Skutočnú energiu mu dáte, až systém spustíte. Zbytočné riadky a knižnice začnú po disku a v databáze vytvárať zbytočné záznamy. Neporiadok začína kysnúť a transformovať sa. Do databázového stroja sa lejú miliardy bitov, ktoré vývojár zabudol zmazať na konci tranzakcie. Neporiadok prechádza na vyšší level. Už ovláda váš server.

Tie hlúpejšie neporiadky si vystačia s tým, že šudlajú s hlavou disku z ľava doprava tak dlho, až vám odpália aj najkvalitnejší disk, ktorému práve skončila záruka. A neporiadok sa presťahuje zo serveru na poličku. Tie inteligentnejšie formy neporiadku vedia, že je nerozumné si pod sebou odpíliť server a preto sa po sieti šíria ďalej. Pomocou klientskej aplikácie sa zo servera dostanú na desktopy. Muhaha. Už ovládli vašu sieť. Ľudia sa zdesia. Začnú vymýšľať obranné mechanizmy, firemné postupy, workaroundy, ako sa vyhnúť zlému fungovaniu, ale stále udržať systém v chode. To je presne to, čo neporiadok potreboval.

Na chviľku si odpočinie a poobede sa nasáčkuje do počítača, ktorý dostal nový zamestnanec. Všetko je stratené. Nikto ho nezastaví. Vďaka svojej rafinovanej podobe užiera ľuďom nervy, firme peniaze. Čo je však ešte zákernejšie. Ľudia s ním spolupracujú. Uveria, že ich Neporiadok je, správna cesta a indoktrinujú ho do malej zdravej nehyperagilnej firmičky, ktorú práve získali akvizíciou.

All your base are belong to us! You’re on the way to destruction. Hahaha!

Všetka základne patria nám! Ste na ceste k zničeniu. Hahaha!

- legendárne AYBABTU

Stop. Ako zastaviť neporiadok, ktorý má väčšiu silu ako lokomotíva. No, holými rukami ho nezastavíte. Zastavovať dôsledky proliferácie neporiadku nie je účelné. Často vedie k workaroundu a neporiadok vám dal ďalší šach-mat.

Jednou z možných účinných techník je prevŕtať sa k jadru problému, z ktorého neporiadok čerpá svoje sily. To chce čas, kľud a nohy v suchu. Budete sa musieť prevŕtať kódom až do oblastí, kam sa už žiadny programátor neodváži vstúpiť. Objavíte odkazy starej programátorskej civilizácie, ktorá zanikla pred dávnymi rokmi. Prebojujete sa cez prales nebezpečných nedokumentovaných funkcií. Až sa dostanete k dvom riadkom. Ktoré tam niekto na začiatku zabudol. S opatrnosťou pyrotechnika ich odstránite. Vrátite sa späť do kresla. Chyba odstránená. Workaround sa stáva zbytočným. Systém je stabilnejší. Uff.

Neporiadok spraví ale ďalšiu ofenzívnu reakciu. A vám nezostáva nič iné, len sa vrhnúť do súboja s ním. V jednej ruke plne nabitý opakovací Debugger, v druhej ruke špeciálne upravený antikódujúci hlbinný vrták značky Valgrind & Helgrind. Ponoríte sa do džungle kódu a mažete nezmysly, čo to dá.

Táto metóda je napríklad súčasť Lean developmentu. Kde je dôležité pre ďalší úspešný rozvoj, včas odstrániť neporiadok.

Aké metódy na boj s neporiadkom používate vy?

9. August 2009

Ladenie PHP aplikácie v Eclipse

Eclipse je výborné IDE, ktoré môže ušetriť veľa času. Napríklad v prípade, že pracujete súčasne na projektoch vo viacerých jazykoch ako Java, Python, Perl, či nebodaj PHP. S konfiguráciou Eclipse a PDT pluginom som dlho nemal úspech. Vždy došlo k nejakej neočakávanej chybe. Problémy boli rôzne, nedostupný server, halušky v Eclipse. Ale to už bolo dávno. Tak som sa pustil do zisťovania, či sa v tomto smere niečo nezmenilo. Milé deti, zmenilo a k lepšiemu. ;-)

Lokálne ladenie PHP aplikácie v Eclipse je brnkačka, nepotrebujete ani nainštalovaného Apache, či inú web potvoru. Postup je jednoduchý, ale zradný. Ak šliapnete mimo vyznačenej cesty, hrozí vám prepad do bažiny, kde vás zožerie nejaká chyba.

  1. stiahnite Eclipse for PHP developer (návod je písany na Eclipse 3.5)
  2. rozbaľte ho, vytvorí sa adresár eclipse (pre Windows odporúčam použiť na rozbaľovanie 7zip, natívny rozzipátor akosi nefunguje správne, aspoň mne nerozbalil všetko)
  3. doinštalujte Zend Debugger, EclipseHelpInstall new softwareAdd
  4. Name: PDT, URL: http://downloads.zend.com/pdt, Ok, vyberte Zend Debugger a pokračujte v inštalácii
  5. presvedčte sa, že po reštarte Eclipse máte zvolený správny debugger, EclipseWindowPreferencesPHPPHP Executables, mali by ste mať zvolené niečo ako PHP 5.2.9 CGI z adresára, kde je Eclipse

A hurá debuggovať. EclipseNewPHP Project – zadať Project name – Finish. Pozor! Ak dáte Next namiesto Finish, je možné, že skončíte s chybovým hlásením duplicated entry. Pravdepodobne chyba vo workflow.

Vytvorte si nový PHP súbor, napríklad pozdrav.php:

<?php
echo “Ahoj Georgik!”;
?>

Dvojkliknite na pásik panelu vľavo na riadku 2, čím nastavíte break point.

eclipse-php-break-poing

A môžeme s chuťou debuggovat. Pravý klik v editovacom okne – Debug asPHP script. Eclipse sa prepne do PHP Debug perspektívy a zastaví sa na break pointe. Ovládanie debuggera som už popisoval :-) .

Takto nastavený Eclipse môžete použiť na lokálne ladenie. Nezabudnite používať vhodný framework na písanie PHP aplikácii. Skupina zubných lekárov odporúča framework Nette. ;-)

17. June 2009

Vzor: Prekvapenie!

Náročný projekt. Na všetkých je kladená vysoká záťaž. Tu dostane manažér nápad, že by bolo dobré zdvihnúť motiváciu ľudí. Tak zvolá všetok pospolitý ľud z projektu. Ľud preruší debuggovanie, vystavovanie faktúr, konzultácie s klientami, prácu na dátových poliach a húfne sa prihrnie do míting rúmu.

Projektový ľud diskutuje, čo sa bude diať. Zvyšovať platy? Prepúšťať? Všetko je možné.

Vtom vstúpi sám veľký manažér a asistentka za ním nesie nejakú krabicu.

“Drahí účastníci projektu. Pracujete tvrdo a preto sme sa My Manažment rozhodli odmeniť tých najschopnejších z Vás.”, manažér vystrúha 1.5 kW americký úsmev.

Začne vyvolávať mená ľudí. Ľudia postupne chodia a berú z rúk manažmentu cetky ako USB kľúče, dáždniky, poukážku na obed v reštaurácii.

Bolo “odmenených” cca 30 ľudí z celej pospolitosti projektového ľudu, čítajúceho 100vku osôb.

Myslíte si, že sa týmto podarilo manažérovi zlepšiť atmosféru?

Nie, nepodarilo. Pretože ľudia, čo dostali USB cetky, dáždnik cetky sa cítia podvedený. Do projektu vložili hodiny svojho času, pracovali vo voľnom čase, bez nároku na preplatenie hodín, aby projekt dokončili. Cetku od manažmentu vnímajú ako lacný trik, ktorým si ich chce kúpiť.

Chlapík, čo dostal poukážku na obed pre dvoch, sa po skončení mítingu zastaví za sekretárkou a vracia jej poukážku so slovami: “Keby som prišiel za manželkou s touto poukážkou ako odmenou za všetky nadčasy a víkendy, čo som strávil na projekte, tak ma zastrelí. Zoberte si to.”

Ľudia, čo nedostali nič sa cítia dotknutý, že manažment nedokázal rozpoznať ich prácu a znechutene odchádzajú debuggovať a vymáhať nezaplatené faktúry od klientov.

Takže manažérovi sa Prekvapením podarilo dosiahnuť úplne opačnú reakciu než chcel.

Tento vzor je pekne popísaný aj v knihe Adrenaline Junkies and Template Zombies, ako vzor Surprise!

Čo dodať? “Prekvapenie!” rozhodne nie je príjemný zážitok. Preto dajte pozor na to, akým spôsobom odmeňujete ľudí vo vašom projekte. Aby Prekvapenie, nebolo Prekvapením pre vás.

  • Babel fish

      Translate from:

      Translate to:

  • Where’s the fish?

  • Further info

  • Badges

  • Video channel

  • Learning

    Grow your brain.
  • Tags

  • Topics

  • May 2013
    M T W T F S S
    « Feb    
     12345
    6789101112
    13141516171819
    20212223242526
    2728293031  
  • Comments