Júl 27, 2010

Zrýchlenie práce s Eclipse

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

August 26, 2009

Pre koho je Python?

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

August 9, 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. 😉

Jún 27, 2009

Debuggerem

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.

Jún 25, 2009

Vizualizácia kódu

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.