<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress.com" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>args4j &amp;laquo; WordPress.com Tag Feed</title>
	<link>http://en.wordpress.com/tag/args4j/</link>
	<description>Feed of posts on WordPress.com tagged "args4j"</description>
	<pubDate>Sat, 28 Nov 2009 16:19:52 +0000</pubDate>

	<generator>http://en.wordpress.com/tags/</generator>
	<language>en</language>

<item>
<title><![CDATA[Links for 2009-11-13]]></title>
<link>http://janmaterne.wordpress.com/2009/11/13/links-for-2009-11-13/</link>
<pubDate>Fri, 13 Nov 2009 15:40:50 +0000</pubDate>
<dc:creator>janmaterne</dc:creator>
<guid>http://janmaterne.wordpress.com/2009/11/13/links-for-2009-11-13/</guid>
<description><![CDATA[Today I found two tools for testing: Byteman and YouDebug. While I haven’t have a deeper look at Byt]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Today I found two tools for testing: <a href="http://www.jboss.org/byteman.html">Byteman</a> and <a href="http://youdebug.kenai.com/">YouDebug</a>.</p>
<p>While I haven’t have a deeper look at Byteman I realized that YouDebug is writte by Kohsuke Kawaguchi. And it is very funny to recognizing him after <a href="http://args4j.dev.java.net">Args4J</a> and <a href="http://hudson-ci.org">Hudson</a> with another project. <em>The world is small and you’ll see another every twice … or more</em> <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Command line parsing in Java]]></title>
<link>http://ranjithchandran.wordpress.com/2009/06/26/command-line-parsing-in-java/</link>
<pubDate>Fri, 26 Jun 2009 06:09:18 +0000</pubDate>
<dc:creator>ranjithchandran</dc:creator>
<guid>http://ranjithchandran.wordpress.com/2009/06/26/command-line-parsing-in-java/</guid>
<description><![CDATA[https://args4j.dev.java.net/ is a neat annotations based library]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>https://args4j.dev.java.net/<br />
is a neat annotations based library</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Tekoälyttömyyksiin hajoamista]]></title>
<link>http://olo2.wordpress.com/2008/12/02/tekoalyttomyyksiin-hajoamista/</link>
<pubDate>Tue, 02 Dec 2008 16:58:17 +0000</pubDate>
<dc:creator>ezku</dc:creator>
<guid>http://olo2.wordpress.com/2008/12/02/tekoalyttomyyksiin-hajoamista/</guid>
<description><![CDATA[Muiden maallisten velvoitteiden aikavaateiden normalisoiduttua ajattelin rustata pienen selonteon ta]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Muiden maallisten velvoitteiden aikavaateiden normalisoiduttua ajattelin rustata pienen selonteon taannoiseen bottiseminaariin osallistuneen IRC-bottimme rakentamisprosessista.</p>
<p>Suunniteluolossa totesimme, että botilla olisi tarkoitus olla mahdollisesti joitakin hyödyllisiä bottimaisia ominaisuuksia kuten päivän teekkariruokalistan näyttäminen ja bussien aikataulun hakeminen, mutta pääasiallinen tarkoitus olisi selvitä Turingin testistä. Tarkemmin toteuttaisimme siis ominaisuuden, jonka avulla botti voisi keskustella ihmisen kanssa – hakien vastauksensa repliikkeihin toiselta ihmiseltä, jolle alkuperäisen puhujan repliikit välitettäisiin botin puhumina ja päin vastoin.</p>
<p>Varsinainen koodi toteutettiin suurelta osin yhteistyössä yhden koneen äärellä kukin vuorollaan näpytellen. Tästä <a title="Bottia Paniikissa vol.2" href="http://olo2.wordpress.com/2008/11/26/bottia-paniikissa-vol2/">Saanalla on enemmän asiaa</a>. Matkalla opittiin kuitenkin kaikenlaista PircBot-kirjastosta, tapahtumapohjaisesta ohjelmoinnista sekä tekstin käsittelystä.</p>
<p>Vaikeaksi ominaisuudeksi toteuttaa osoittautui hyödyllisistä ominaisuusehdotuksista toteutettavaksi valittu ruokalistahaku. Päätin nimittäin kaiken järjen ja lähtöoletusten vastaisesti lähteä parsimaan Ruokalistat.netin tietoja säännöllisten lausekkeiden sijaan sivun XML-esityksen pohjalta, sillä halusin ottaa selvää siitä, miten XML:n käsittely Javalla onnistuu. Ajatus oli saada sivun HTML-koodi XML-muotoon <a title="Tidy (Wikipedia)" href="http://en.wikipedia.org/wiki/HTML_Tidy">Tidy-kirjaston</a> kautta ja kaivella tuloksesta vaadittavat tiedot ulos <a title="XPath (Wikipedia)" href="http://en.wikipedia.org/wiki/XPath">XPathilla</a>.</p>
<p>Toteutus onnistuikin, muttei ilman komplikaatioita. Javan versiota 1.0 olevan XPath-kirjaston rajoitteiden kiertämiseen ja Ruokalistat.netille sopivien XPath-lausekkeiden keksimiseen upposi tunti jos toinenkin. Jouduin toteamaan, että dynaamisiin kieliin tottuneelle XML-datan käsittely oli turhauttavan kankeaa.</p>
<p>(Tämän teknisen puolen sivuaminen ohimennen oli mainittu seminaaripalautteessa negatiivisena seikkana. Jep, anteeksi horinani. Olisi pitänyt joko selittää kunnolla tai olla mainitsematta.)</p>
<p>Kun toiminnot – eli avainsanoihin reagointi, keskustelu ja ruokalistaus – oli saatu laadittua, käsissä oli kasa PircBotia laajentavan FanttiBotti-luokan sisälle laadittuja metodeja. Tässä vaiheessa nostin kissan pöydälle ja totesin, että yksi oppimistavoitteista oli mennyt ohi: jos olisimme toteuttaneet ominaisuuksia itsenäisesti, kuinka yhdistäisimme ominaisuudet jos ne kaikki olisivat itse bottikoodin seassa? Seuraavat pari tuntia käytimme ominaisuuksien refaktoroimiseen sellaiseen muotoon, että jokainen oli nätisti omassa paketissaan ja bottiluokka vain välitti niille tiedot oleellisista tapahtumista. Tämä <a title="Observer pattern (Wikipedia)" href="http://en.wikipedia.org/wiki/Observer_pattern">Observerin</a> soveltaminen sai muutamalla valon syttymään: näinhän tehtiin jo muutamassa Java-harjoituksessa!</p>
<p>Viimeisenä silauksena botti sai kyvyn tulkata komentoriviparametreja. Tarkoitus oli siis että botin käynnistäjä pystyy määrittämään minkä nimisenä ja mille kanaville botti ilmestyy. Tämä onnistui yllättävän mukavasti <a title="args4j (java.net)" href="https://args4j.dev.java.net/">args4j</a>-kirjaston tarjoamia <a title="Java annotations (Wikipedia)" href="http://en.wikipedia.org/wiki/Java_annotations">annotaatioita</a> käyttämällä. Ensitutustumiseni annotaatioihin oli positiivinen, ja suunnittelin hyväksikäyttäväni niitä törkeästi esimerkiksi päätösprojektin yhteydessä.</p>
<p>Kaikenlaista tuli siis säädettyä. Lupauduinpa vielä bottiseminaarin jälkimainingeissa yhdistämään kaikkien bottien hyödyllisiksi koetut ominaisuudet (joita muuten löytyy jokunen) yhteen supermegajättihyötybottiin kaikkien iloksi. Saa nähdä minkälaisella aikataululla sekin projekti valmistuu, mutta ainakaan sitä ei ole kuopattu. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>- Eevert</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Long time ago ...]]></title>
<link>http://janmaterne.wordpress.com/2008/06/19/long-time-ago/</link>
<pubDate>Thu, 19 Jun 2008 19:06:14 +0000</pubDate>
<dc:creator>janmaterne</dc:creator>
<guid>http://janmaterne.wordpress.com/2008/06/19/long-time-ago/</guid>
<description><![CDATA[My last commit to Args4J was long time ago. But I was happy, that my environment works &#8211; and a]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>My last commit to <a title="Args4J Homepage" href="http://args4j.dev.java.net">Args4J </a>was long time ago. But I was happy, that my environment works &#8211; and also my knowledge about the project itself <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  And the pause was fine because I startet a new try to implement the setting of Map-entries &#8230;. with success. Now you can have a bean with</p>
<pre>@Option(name="-map") java.util.Map map;</pre>
<p>and set the values from command line via</p>
<pre>java MyApp -map key1=value1 -map key2=value2</pre>
</div>]]></content:encoded>
</item>

</channel>
</rss>
