Translate to:

Sledujte YouTube

 

September 2010
P U S Š P S N
« Aug    
 12345
6789101112
13141516171819
20212223242526
27282930  

Odznaky

Pixmac pictures
Opencaching.cz - Statistika - georgik


Add to Technorati Favorites

PageRank - hodnotenie tejto webstranky
  • 27Júl

    Pokiaľ používate Eclipse, napríklad v kombinácii s Flash Builderom, určite sa pozrite na článok na blogu DevGirl. Nájdete tam veľa užitočných rád, ako zrýchliť prácu s IDE.

    Pokiaľ máte čas, určite si pozrite nasledujúce video z konferencie Max 2009 – Flash Builder 4 Advanced Tips and Tricks

    Tags: , , , , ,

  • 11Apr

    Vývoj softvéru je náročná disciplína. S rastúcim časom, počtom vývojárov a počtom zmien, rastie komplexita kódu a narastá možnosť vzniku chyby. Chyby sú samozrejme nežiadúce, ich odstránenie predstavuje niekedy skutočne nemalé náklady.

    Nástroje pre kontinuálnu integráciu (continuous integration) slúžia na to, aby sme mali prehľad o kvalite kódu a aby sme včas dokázali zachytiť chyby. Pomocou nástroja Hudson CI dokážeme zachytiť trendy vo vývoji. Získame prehľad o množstve chýb a o rôznych patologických príznakoch v kóde. Typickým zástupcom patologického stavu v softvérovom projekte je kopírovanie kódu.

    Hudson CI je prepojený s nástrojom PMD, ktorý má výstižný podtitul: “Nezastreľte posla správy! (Don’t shoot the messanger)”. PMD by som označil ako kladivo na vývojárov.  Pomocou pravidiel dokáže veľmi rýchlo odhaliť rôzne vývojárske zlozvyky. Je to veľmi užitočný nástroj, ale používajte ho len s dostatočným množstvom soft-skills.

    Pre rôzne bežne používané IDE existuje PMD ako plugin, takže vývojár si môže sám overiť kvalitu svojej práce.

    Michal Gron na mítingu Adobe User Group Slovakia v Bratislave pekne zhrnul dôvody na používanie nástroja Hudson a PMD. Toto použitie demonštroval na projekte, ktorý využíva Flex a AIR – Picasa Flash API.

    Pokiaľ vás téma kontinuálnej integrácie zaujala, odporúčam diel podcastu z SE-Radio.net s Chrisom Readom, kde túto problematiku rozoberajú hlbšie.

    Hudson CI získal ocenenie: Duke’s choice award – Developer Solutions

    Informácie o možnostiach hosting Hudson CI nájdete na stránke SinusGear.com.

    Tags: , , , , , , , ,

  • 08Okt

    Mal som opäť tú česť, stretnúť sa s veľmi zaujimavou kompozíciou zdrojového kódu. Bolo potrebné doplniť veľmi jednoduchú funkciu. To však samo o sebe nebolo jednoduché.

    Pri pohľade na dadaisticko abstraktný zhluk tisícov písmen som zostal chvíľku vydesene sedieť a rozmýšľal som, či sa nenechať zamestnať radšej v jednotke špeciálneho nasadenia alebo v továrni na pyrotechniku. Život by bol asi podstatne bezpečnejší. Už drobná zmena jedného riadku môže spôsobiť obrovský zosuv funkcií a na povrch by mohli vyliezť noví kostlivci, ktorí sa doteraz pokojne ukrývali pod marastom.

    Vravím si. Nebudem sa báť. Trochu to tu prevetráme. Zobral som Eclipse s CDT pluginom a hovorím mu: “Naformátuj ten kód, lebo sa v tom ani kompilátor nevyzná!”. Eclipse schramstol súbor. Začal pracovať. Jedno jadro procesora – plný výkon. Druhé jadro procesora – plný výkon. Kačička začína loziť po strope, tak ako postupne dochádza pamäť. Voda fialovie, tak ako dochádza swap. Vetráky zvyšujú obrátky, tak  ako sa zvyšuje teplota procesoru. Po chvíli Eclipse pustil obe jadrá a kód bol krásne naformátovaný.

    Listujem kódom a hľadam jeho význam. Jednoznačne som identifikoval autorov sklon využívaniu refrénu a tajomna, ktoré dosahoval nedokumentovaním funkcií a kryptickými premennými typu: _nFlag. Ďalší zaujímavý literárny prvok bolo otváranie nových tém, bez dokončenia predchádzajúcich. Tento prvok bol dosiahnutý pomocou vnárania obrovského množstva ifov s náhodným returnom.

    Nehovoriac o tom, že autor bol skutočným majstrom inotajov. Väčšina básnikov by mu mohla len závidieť. Inotaj bol často tak tajný, že som jeho význam našiel až po dvoch hodinách študovania autorovho rukopisu.

    Celé dielo sa svojím rozsahom blížilo hrdinskému eposu. Menšie funkcie dosahovali len tri tisíc riadkov husto písaného kódu.

    Pokiaľ sa autorovi podarilo identifikovať jeho skrytý talent, musí byť dnes jedným z najuznávanejších svetových básníkov. Pokiaľ pracuje naďalej ako vývojár, tak je to jeho škoda, lebo mohol zarobiť podstatne viac.

    A ako to celé dopadlo? Najskôr som sa pokúsil použiť obojručný debugger, proti ktorému sa kód úspešne bránil využitím forkovania a spúšťaním nových procesov. Nezostávalo nič iné, len porozumieť celému dielu a s presnosťou chirurga odstraňovať kusy mŕtveho kódu a ten živý kód reimplentovať na lepšie miesto.

    Nakoniec to všetko otestovať pomocou BOOSTu a švajčiarského nožíka medzi sieťovými nástrojmi: netcat.

    Tags: , , , , ,

  • 26Aug

    Keď Guido začal dávať dohromady nový jazyk Python, mal už za sebou skúsenosti z návrhu jazyka ABC. Najdôležitejšim kritériom pre vývoj tohoto jazyka bola čitateľnosť. Guido potreboval jazyk, ktorý by bol jednoducho pochopiteľný aj pre bežných ľudí. O Pythone prehlasujú autority, že je to multi-paradigmový programovací jazyk a majú veru pravdu.

    Python je objektový. V čase keď Python začínal, objektové programovanie už malo za sebou nejaký ten rok, ale stále bolo odsúvané na okraj záujmu. Dôkazom toho sú napríklad jazyky ako Perl a PHP, ktoré odsunuli objektovosť naneskôr a potom ju pracne doháňali. V Pythone je proste všetko objekt a hotovo.

    Python obsahuje prvky funkcionálneho programovania. Môj osobný pocit z funkcionálneho programovania je, že vlastne myslíte naruby. Človek musí úplne prevrátiť myslenie, pokiaľ sa chce dostať z procedurálnej paradigmy na funkcionálnu. A oplatí sa to. Získate kratší, účinnejší a čitateľnejší kód. Je síce pravda, že čitateľ musí trochu rozumieť princípom funkcionálneho programovania, ale aj bežný používateľ počítača viacmenej pochopí význam. Dobrá lambda abstrakcia môže výrazne skrátiť kód.

    Python umožňuje použiť Aspektovo orientované programovanie – AOP. Pokiaľ vám táto téma nie je ešte známa, odporúčam si vypočuť diel podcastu z Software Engineering Radio – Úvod do AOP. Podstatnou vlastnosťou AOP je lepšia modularizácia kódu, čo má za dôsledok lepšiu znovupoužíteľnosť kódu.

    Python umožňuje lietať.

    A kde teda začať? Určite treba navštíviť stránky venované Pythonu. A pre začiatočníkov rozhodne odporúčam nainštalovať si IPython shell, ktorý vám môže ušetriť množstvo času. Pre priaznivcov Eclipse odporúčam PyDev s nádherným debuggerom. Pre nepriaznivcov Eclipse odporúčam prostredie Eric, ale mali by ste zvážiť, či sa náhodou nestanete radšej priaznivcami Eclipse ;)

    Nezabudnite si po spustení Python shellu zadať príkaz: import this

    Tags: , , , , , ,

  • 09Aug

    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. ;-)

    Tags: , , , ,

  • 27Jún

    Když něco rozeberem, tak leda debuggerem.
    Konzultate vy jste mi to zavařil,
    ten systém není blbej,
    jen trochu zpomalenej,
    že jste se tenkrát aspoň málo nesnažil.

    - softvérový folklór na motívy lyrickej balady

    Bez debuggera ani ranu. Neznalosť používania debuggera spôsobuje nadužívanie metód ako logovanie a tracovanie. Takže v kóde máte každý druhý riadok nejaký printf alebo iný nezmysel. Keď takémuto vývojárovi niekto nareportuje problém, tak prvé čo spraví: prídá ďalší print. Nakoniec kód, ktorý počíta 10 gramov fazuliek, má 50 kilo. Pričom log komunikácie pri vložení 10 fazuliek do jamky má minimálne 1.5 MB.

    Ako debugovať C++? Veľmi jednoducho. Napríklad pomocou Eclipse. Veľa ľudí zastaví to, že nevedia, ako debugger spustiť. Takže predpokladajme, že máme Eclipse s CDT pluginom. Ideme debugovať pocitadlo_fazuliek_enterprise.

    1. FileImportC/C++C/C++ Executable
    2. Select executable – sem napíšte cestu k binárke, browse borcom moc nefunguje – /home/georgik/geck/pocitadlo_fazuliek_enterprise – Next
    3. New project name – Pozor! Nahraďte medzery znakom _, pretože debugger sa vám nemusím pripojiť pokiaľ je v mene projektu medzera. Samozrejme borci tam defaultne šupnú názov: Debug pocitadlo… Tak ho zmente na Debug_pocitadlo_fazuliek_enterprise
    4. Launch Configuration – zvoľme: C/C++ Local Application – pokiaľ spúšťame aplikáciu, pre fajnšmekrov je k dispozícii možnosť Attach to local application, tekže sa pripojíte k bežiacej aplikácii a debugujuete tú.
    5. Name. To isté ako v bode tri,  odstránte medzeru.
    6. Nastavte dvojklikom na paneli vedľa zdrojového kódu break pointy.
    7. Debug

    Eclipse sa prepne do debug perspektívy. To, čo je veľmi prínosné na Eclipse debuggeri, je možnosť prechádzania premenných formou stromu. Window – Show/View – Variables.

    No a to je celé! Ušetríte tisíce hodín printfovania a iných nezmyselných ladiacich procedúr.

    Ešte klávesové skratky:

    • F5 – step into – vstúpiť do aktuálne zobrazenej fcie
    • F6 – step over – prejsť na ďalší krok v rovnakej úrovni kódu
    • F7 – step return – zastaviť sa až pri opustení fcie o úroveň vyššie
    • F8 – pokračuj až kým nenarazíš na ďalší break point

    Naviac Eclipse vám zastaví debuggovanie v prípade, že aplikácia obdrží signál.

    Debugger podľa môjho názoru patrí k základnej gramotnosti developera.

    Tags: ,

  • 25Jún

    Zorientovať sa vo veľkých softvérových projektoch, ktoré človek doteraz nevidel a žil v šťastnej nevedomosit o ich existencii, nie je vôbec jednoduchá úloha. Vo veľkom projekte sa môže stratiť nie len náhodný cudzinec, ale aj príslušníci kmeňa vývojárov, ktorý sa o projekt starajú. No a z hlavného architekta sa stane kmeňový šaman, veštiaci architektúru z rozhádzaných kostí. Pri projektoch, ktoré rastú a rozvíjajú sa, môže tento problém nastať veľmi rýchlo.

    Na pomoc s orientáciou v kóde sa používa vizualizácia pomocou diagramov a schém. Prvý nápad ako vizualizovať kód napríklad C++ servera je nakreslenie tried do UML. Pokiaľ má projekt niekoľko stoviek až tisícok súborov so zdrojovým kódom, nie je to veľmi šťastný nápad. Existujú nástroje, ktoré vám pomocou Reverse engineeringu zostavia UML schému.

    UML je síce pekné, ale takéto zobrazenie nemá takmer žiadnu vyjadrovaciu silu. Dôležité informácie zapadnú v kvante ďalších informácií a k reverse engineeringu musíte pripojit steganografiu a datamining.

    Existujú projekty, ktoré vedia zanalyzovať kód a vytiahnuť z neho veľmi zaujímavé informácie. Pokiaľ sa pohybujeme v dvojrozmernom svete, tak stojí za to zmieniť dva z nich.

    CodeCrawler prehľadáva kód a zobrazuje ho vo forme jednoduchého grafu. Projekt je určený primárne pre Scheme.

    Zaujímavjším je projekt X-Ray. Jedná sa o plugin do Eclipse. Analýza je omnoho interaktívnejšia, takže priamo v prostredí IDE, je vývojár schopný vidieť, kde sa mu v projekte vytvárajú príliš veľké triedy alebo God objekty.

    Tu len pripojím malú poznámku: god objekt v projekte, je ten, ktorý toho vie príliš veľa a robí príliš veľa. Typicky vzniká postupnou kumuláciu funkcií v singletonoch. Jedná sa o antipattern.

    Trojrozmerný svet prináša novú dimenziu :) Pomocou nástroja CodeCity je možné kód vizualizovať vo forme mesta. Na základe relatívne jednoduchej vizualizácie dokážete  v kóde identifikovať “budovy”, ktoré sú príliš veľké alebo tenké a vysoké. Tieto krajné prípady predstavujú zdroj potenciálnych problémov pri ďalšom vývoji.

    Argo UML v024-coarse

    Dobrý podcast na tému vizualizácia kódu nájdete na stránkach Software Engineering Radio.

    Tags: , , , , ,

  • 09Jún

    Adobe predviedlo skutočne excelentný štart a zavedenie svojích produktov. Flex bol jedným z nich. Podarilo sa im vybudovať komunitu. Fanúšikovia začali pribúdať. Opravy a vylepšenia sa začali množiť. Flex bol k dispozícii pre platformy ako Windows, Mac a Linux. Vďaka nástroju Flex Builder postavenému na Eclipse sa dajú pekne a rýchlo zostavovať aplikácie. Výsledné aplikácie bežia na všetkých operačných systémoch.

    Už tomu bude skoro rok, čo Adobe uviedlo podporu Flex Builderu pre Linux. S radosťou som sa pustil do používania a testovania prvých alfa verzií. Posledná alpha 4 verzia je stabilná a funguje veľmi dobre. Vyzeralo to, že vývoj postupuje úžasnou rýchlosťou dopredu…

    Mrakoplaš s pleskotem zavřel knihu. Všichni se přikrčili v očekávaní oslnivého záblesku, nebo jak to Cohen říkal: “Alespoň párku holubů a mírně zmačkaného králika.”

    A pak se stalo tohle…

    Nic.

    Hej, presne tak, nestalo sa vôbec nič. Linux zrazu ostal na pokraji záujmov Adobe. A v dúhovej záplave nových CS4 produktov sa na tučniaka zabudlo. Zabudnutá časť komunity začala upozorňovať Adobe, ale bez valnej reakcie. Podľa môjho názoru Adobe ignorovaním záujmu o Flex Builder pre Linux prichádza o pomerne veľký potenciál vývojárov. Ignorovaný vývojári radšej prejdú k niečomu čo sa dá priamo používať a kde to žije.

    Čo Linuxový Flex Builder nemá:

    • designér mód
    • mxml editor

    Čo Flash player pre Linux nepodporuje:

    • čžš, žinčicu a lečo

    Tak čo Adobe? Ešte stále si manažéri myslia, že o Flex Builder pre Linux nie je záujem?

    Tags: , , , , ,

  • 03Jún

    Kedysi. Nie je to ani tak ďaleko, ani tak dávno, boli v móde frameworky. Proste kto chcel byť cool a in, používal framework, prípadne si nejaký framework napísal. Ale to už je pasé. Frameworky nie sú moderné ani cool. Pred frameworkami tu boli knižnice a tie už tiež zapadli za zenit marketnigových a iných materiálov.

    Dobre, tak čo je teda v móde dnes. Framework je málo. Dnes sa frčí na Meta Frameworkoch. Huh. A to je ako čo?

    Do bežnej reči to skúsme kostrbato preložiť ako Framework nad Frameworkom. Hm, nič moc preklad, že?

    A kde také rastú?

    Napríklad tu: TurboGears 2. Nedávno sa objavila na svete nová verzia tohoto meta-frameworku pre Python a priniesla so sebou nové vylepšenia, ktoré skutočne stojja za pozornosť.

    TurboGears 2 má podstatne lepšie rozloženie kódu než jeho predchodca. Pôvodného tg-admina nahradil nástroj Paster. Vďaka použitiu Paste frameworku získal TurboGears omnoho lepšie možnosti pre ladenie a spúšťanie aplikácii, či riešenia absolútneho zosypania aplikácie. Vďaka použitiu frameworku Pylons, je možné jednoduhšie debuggovať aplikácie v runtime. Ladenie napríklad silne konkuruje Laděnke PHP frameworku Nette ;)

    Dobrá štrukturalizácia kontrólerov umožňuje jednoduché použitie unittestov. A pri kombinácii s Eclipse a PyDev, je to priamo luxus.

    Taktiež šablónovací systém bol vymenený. Starší predchodca Kid, bol nahradený mladším agresívnejším Genshi. Šablóny sú teda XHTML, takže sa jednoduhšie editujú v HTML editoroch. Zaujímavosťou je, že Kid aj Genshi umožňujú zobrať normálnu tiredu a HTML šablónu definovať ako jej rozšírenie. Šablóna tým pádom ziska funkcie a atribúty rodičovskej triedy. Zjednodušene povedaný “HTML kód” vie dediť z Pythonového kódu.

    Čo sa týka dokumentácie, tak tá je generovaná pomocou epydoc a vyzerá celkom k svetu.

    Ako začať?

    Nainštalovať Python a SetupTools. Nainštalovať TurboGears 2:

    easy_install -i http://www.turbogears.org/2.0/downloads/current/index tg.devtools

    Vytvoriť nový projekt:

    paster quickstart

    Naštartovať portál:

    paster serve --reload --monitor-restart development.ini

    Nakoniec zostáva už len pripojiť sa: http://localhost:8080

    TurboGears 2 určite stojja za pozornosť. Frameworkov, na ktorých stavia tento Meta Framework je podstatne viac, než som tu spomenul :) Ale to už nechám na zvedavého bádateľa.

    Tags: , , , , , , ,