jAbLoK

Programátorština pro manažery a další

Zasláno do Tech by Pavel Kolesnikov na Březen 30th, 2005

Pěknou sérii praktických postřehů na téma řízení vývoje software na svém blogu publikoval Tom Evslin:

1. Programátorština pro manažery

Absolutní základ pro vedení projektů a řízení nejen programátorů.

V kostce: říkají vám "bude to co nejdříve" nebo "tohle můžeme přidat bez posunu v harmonogramu"? Pravý význam samozřejmě zní "ještě nemáme harmonogram"

2. Meaning of DONE s výstižným podtitulem "DONE is a four letter word"

3. S "hotovostí" produktu někdy souvisí opak Killer Features — Features Kill

(aneb připomínka věčného členění featur na must/should/nice to have)

4. Great Debuggers

Ano, umět ladit je nezbytnou vlastností výborného programátora (a je s podivem, jak málo lidí při debugování nepochopopí podstatu "rozděl a panuj"). Jakpak takové uchazeče poznáme?

5, 6. … dosud nevyšlo. Zatím si tohohle chlapíka s radostí přidám do RSS čtečky

Strasti vývojáře her v J2ME

Zasláno do Java by Pavel Kolesnikov na Březen 29th, 2005

Na JavaLobby se objevil odkaz na blog autora Doomu Johna Cormacka, věnovaný jeho aktuálnímu činění na J2ME platformě.

A nemá to snadný, cituji:

Write-once-run-anywhere. Ha. Hahahahaha

Zásadnějších sdělení se sice nedočkáte, ale pokud se trápíte s psaním mobilních her, můžete se utěšit tím, že se svými strastmi zdaleka nejste sami.

Dvakrát sémantický web v praxi

Zasláno do Tech by Pavel Kolesnikov na Březen 25th, 2005

V posledním týdnu mne zaujaly dvě informace volně se vztahující k sémantickému webu:

Nejprve mě Petr Olmer upozornil na evropskou unii dotovaný projekt NEWS, který — chápu-li dobře — se mj. neskromně snaží vytvořit univerzální ontologii, díky níž budeme o každé novince vědět, co je zač, a tedy ji i přihrát patřičnému odběrateli.

Dnes jsem si pro změnu u Marigolda v posledním odstavci obecnějšího mudrování přečetl, že (cituji):

Americká armáda hledá blogery. Nechce je zavřít, ale zaměstnat. Proč? Protože armádní verze internetu své vlastní blogery nemá a americká armáda přitom publikuje na své síti materiály pro miliony lidí. Jenže vyhledávat v nich a držet přehled o jednom oboru, se armádě nedaří zajistit.

Americká armáda přitom živými blogery nahradí původní expertní fulltextový systém, který se snažil tyto informace ze všech možných armádních webů extrahovat a analyzovat sám. Prý se to po něm nedalo číst.

Který z těchto přístupů vám přijde zdravější?

Tip: K čemu vlastně Googlu bylo kupovat Blogger? ;)

Z jiného sudu:

Nějak svou aktivitou odsouvám Tomuchův inzerát, takže pro jistotu doplňuji, že programátor slyšící na slovo "Java" se hledá i nadále.

O Commons Chain

Zasláno do Java by Pavel Kolesnikov na Březen 22nd, 2005

Kdo sledujete vývoj frameworku Struts v řadě 1.3, jistě tušíte, že hlavní změnou je redesign hlavní třídy RequestProcessor (význam zřejmý). Dosavadní implementace byla realizovaná jako "Template Method", tedy jedna třída, jejíž klíčová veřejná metoda se sestává z volání překrytelných chráněných metod.

Nevýhody tohoto přístupu se začnou ukazovat v okamžiku, kdy se pokusíme chování RequestProcessoru trochu přizpůsobit. Jednoduchá změna některé fáze zpracovávání požadavku ještě projde, jakmile ale potřebujeme například zkombinovat chování dvou stávajících potomků RequestProcessoru, začneme se potýkat s komplikacemi vyplývajícími z fungování dědičnosti.

Proto se vývojáři Struts rozhodli ve verzi 1.3 přepracovat RequestProcessor do podoby založeném na vzoru Chain Of Responsibility. To znamená, že jednotlivé podúlohy vykonávané během zpracovávání HTTP požadavku jsou rozsekány do jednotlivých "Commandů", jejichž návaznost nadefinuje volající třída, nejlépe na základě konfiguračního souboru. Pro tyto účely bylo použito projektu "Commons Chain" z Jakarta Commons, který implementaci vzoru "Chain of responsibility" poskytuje.

A celé toto povídání o dalším vývoji Struts bylo jen kvůli tomu, abych ozřejmil, proč mi přijde smysluplné odkázat na článek A Look at Commons Chain )

Hledá se programátor slyšící na slovo "Java"

Zasláno do Miscellaneous by tomucha na Březen 21st, 2005

Hledáme Java programátora na plný úvazek. Dobrá znalost Javy, SQL, JSP, HTML a zodpovědný přístup podmínkou; znalost Struts, Swing, Hibernate, EJB, JSTL, XML, XSLT, PostgreSQL, Oracle, CVS, Eclipse, JBoss, Tomcat, Linux, schopnost komunikace se zákazníkem a zdravé unit testovací návyky výhodou.

Nabízíme dobré platové podmínky, mladý pracovní kolektiv, přátelský přístup a atmosféru, zajímavé projekty.

Místo práce Praha 4 — Podolí. Nástup možný ihned.

Pokud říkáte Javě "Ja", pište si o bližší informace na adresu

"zverina ZAVINAC m-atelier.cz".

Mozkom*d aneb Rozšiřme si obzory

Zasláno do Tech by Pavel Kolesnikov na Březen 21st, 2005
++++++++[>+++++++++<-]>.<+++++[>++++++<-]>-.+++++++..+++.<
++++++++[>>++++<<-]>>.<<++++[>------<-]>.<++++[>++++++<-]>
.+++.——.——–.>+.

Tak toto byl zdrojový kód programu Hello World v programovacím jazyce Brainfuck.

Na výše uvedené adrese najdete kompilátor (171 bajtů) a archív ukázek.

Půvabné.

(via komentář k dnešní glose Františka Fuky na Lupě)

Aktualizace

K dispozici je i multithreadová variace Brainfork, která zavádí operátor Y, a pokud vám to nestačí, jistě si vyberete v přehledu esoterických programovacích jazyků na Wikipedii.

Aktualizace č. 2

Whitespace taky stojí za pozornost ;)

Tagged with: ,

Anotace? Ano, ale s mírou

Zasláno do Java by Pavel Kolesnikov na Březen 20th, 2005

Na stránkách java.sun.com se objevil článek Anderse Holmgrena o tom, jak pomocí anotací deklarovat validační kritéria u Java Beans.

Přesněji řečeno, článek je cvičením z nových vlastností, které přináší Java 5, a tyto vlastnosti jsou demonstrovány na design patternu, kterým by používání anotací k ověřování hodnot mohlo být.

Pointu článku nejsnáze shrnu názornou ukázkou kódu:

public class Vehicle {
    private int speed;

    public int getSpeed () {
        return speed;
    }

    @MinValue(0)
    @MaxValue(29979245 8)
    public void setSpeed (int speed) {
        this.speed = speed;
    }
}

(tedy máme třídu vozítek a do kontrolní anotace údaje o maximální rychlosti uvedeme informaci, že nikdy nebude vyšší než je rychlost světla ve vakuu — a pro pořádek ani nižší než nula).

Toto se na pohled může zdát velmi elegantní — pryč s trapnými kontrolami platnosti, nechme kód dělat to podstatné, a otravnou omáčku nechme strojům… pardon, anotacím.

Elegantní?

Výhodou tohoto přístupu je bezesporu jistá "elegance" a úspora kódu. Nicméně domnívam se, že vždy, kdy jedinou výhodou nějakého řešení je úspora objemu kódu, je třeba zbystřit. V praxi se totiž ukazuje, že takováto elegance může vyjít velmi draho z důvodu snížené srozumitelnosti kódu, někdy dokonce i před autorem samotným — typickým přikladem je rozšiřováním funkcionalit prvků typu String či tříd z Collection frameworku děděním namísto dekorováním (viz jedna z 57 rad Joshuy Blocha) .

Z tohoto důvodu mi tento přístup přijde vhodný pro velmi jednoduché situace, jako je validace formulářů. Jeho použítí na úrovni doménového modelu může ale být cestou do pekel — případů užití je tam nepoměrně více a tedy je i nepoměrně více způsobů, kterak kreativnější člen týmu může tento nástroj nevhodně použít či přinejmenším zamlžit srozumitelnost jeho použítí.

Mimochodem na podobné téma se vzápětí objevil i článek Validating Objects Through Metadata, který už autor zcela jednoznačně cílí právě na validaci Struts formulářů.

Diskuse

Na zmíněný Holmgrenův článek jsem se dostal tradičně přes avízo na TSS, u nějž tradičně najdeme zajímavější diskusi než u vlastního odkazovaného článku (zde nemohu nezmínit odbočku na TSS parodii ze svérázných zápisků Haniho Suleimana).

Vlastní diskusi komentovat nebudu, za pozornost ale stojí skeptická zmínka ze světa, kde anotace už nějaký pátek fungují:

I have lived with annotations in .NET for several years and find it suprisingly hard to communicate its usage to team members and library users.

Pro zajímavost, dotyčný diskutující pokračoval následující poněkud technooptimistickou douškou:

I think annotations can be very useful, but the world is not ready, it seems.

Nemohu si pomoct, ale na dobré myšlenky, do nichž lidstvo ještě neuzrálo, tak nějak nevěřím. Většinou stačí nevidět v každé novince zlaté kladívko.

Offtopic — inzerát

Velmi kvalitní sníh (via ILblog).

Tagged with: ,

Groovlets a GSP

Zasláno do Java by Pavel Kolesnikov na Březen 18th, 2005

<b><% println "hello gsp" %></b>
<p>
<% wrd = “Groovy”
for (i in wrd){
%>
<h1> <%=i%> <br/>
<%} %>

Nadpis a předchozí ukázka mohou působit bizarně, ale je to tak — populární skriptovací jazyk Groovy (http://groovy.codehaus.com/, viz též starší spot Romana Pichlíka) se snaží zjednodušit vývoj webových aplikací v Javě tím, že se nacpe na místo servletů a JSP.

Více v článku s výstižným podtitulem On-the-fly server-side programming with Groovlets and GSPs u IBM developerWorks.

Google Code - Google nasává open-source vývojáře

Zasláno do Tech by Pavel Kolesnikov na Březen 18th, 2005

Google čerstvě spustil nový web — http://code.google.com/, na němž láká zájemce na možnost účastnit se na vývoji software Google.

Tedy — samozřejmě tam ani zdaleka nenajdete kompletní zdojový kód podstatných technologií, které Google používá. Pro začátek byl web spuštěn s čtyřmi projektíky:

  • CoreDumper — C++ knihovna, umožňující přimět aplikace proti ní kompilované, aby si za běhu mohly odplivnout coredump a nerušeně pokračovat
  • Sparse Hashtable — balík výkonných implementací hashovacích tabulek
  • Goopy/Functional — Pythonová knihovna pro ty, kteří rádi funkcionální programování
  • Perftools — název hovoří výmluvně

Nevylučuje se další rozšíření.

Vzhledem k současnému omezenému obsahu to zatím ani žádná pecka není — až na to, že to dělá Google )

Hibernate 3.0 release candidate

Zasláno do Java by tomucha na Březen 1st, 2005

Vcera tomu bude právě nula dní, kdy Hibernate tým s hrdostí oznámil uvolnění RC Hibernate 3.0. Se stejnou hrdostí předložil i porovnání s Hibernate 2.1.

Tak ať vám to mrazí …