22. December 2011

How to disable stealing of focus by Console in Eclipse

There is one very annoying issue in Eclipse: stealing of focus by Console window.

Console window is displayed when you run application.

When you set focus to some other window like Search results and application prints something on output then Eclipse will automatically switch to Console window. Your search results are gone.

There is simple way how to get rid of such a behavior.

Go to Window -> Preferences -> Run/Debug -> Console. Uncheck options:

  • Show when program writes to standard out
  • Show when program writes to standard error

29. August 2011

Managing LDAP with Apache Directory Studio

One of key downsides of LDAP in past was lack of cross-platform tools for managing directory structure.

Recently I found very good implementation of LDAP management tool based on Eclipse. It is Apache Directory Studio.

It is possible to connect it also to Microsoft Active Directory. Good work!

27. July 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

11. April 2010

Nástroj na kontinuálnu integráciu Hudson

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.

8. October 2009

Básnik alebo Vývojár?

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.

26. August 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

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

27. June 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.

25. June 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.

9. June 2009

Sklamanie fanúšikov Adobe Flex?

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?

  • 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