<?xml version="1.0" encoding="UTF-8"?>
<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/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Anders Hassis &#187; Java</title>
	<atom:link href="http://hassis.com/tag/java/feed/" rel="self" type="application/rss+xml" />
	<link>http://hassis.com</link>
	<description>Did mmorpgs overwrite your common sense?</description>
	<lastBuildDate>Sat, 21 Jan 2012 01:19:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Citerus Hackers Night 2011: Crazy Snake</title>
		<link>/2011/05/05/citerus-hackers-night-2011-crazy-snake/</link>
		<comments>/2011/05/05/citerus-hackers-night-2011-crazy-snake/#comments</comments>
		<pubDate>Thu, 05 May 2011 14:09:26 +0000</pubDate>
		<dc:creator>Anders</dc:creator>
				<category><![CDATA[Programmering]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://hassis.com/?p=516</guid>
		<description><![CDATA[Citerus anordnade i tisdags (3/5) ett event i Stockholm där uppdraget var att programmera en ormhjärna. Din ormhjärna skulle sedan tävla mot andra ormar som andra lag programmerat. Jag, Oskar Wirén och Jim Sagevid var ett lag, vi hade inte tittat så mycket på API:t innan så vi hade ganska dålig koll på det. Tävlingen [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.citerus.se/hackers_night_snake_edition">Citerus anordnade i tisdags (3/5) ett event</a> i Stockholm där uppdraget var att programmera en ormhjärna. Din ormhjärna skulle sedan tävla mot andra ormar som andra lag programmerat.</p>
<p>Jag, <a href="http://se.linkedin.com/pub/oskar-wir%C3%A9n/33/212/986">Oskar Wirén</a> och <a href="http://jimsagevid.se">Jim Sagevid</a> var ett lag, vi hade inte tittat så mycket på API:t innan så vi hade ganska dålig koll på det. Tävlingen gick ganska dåligt för oss, vi slarvade alldeles för mycket och vi blev väldigt stressade. Istället så fick vi ihop en fungerande version på vägen hem på tåget på ca. 4-5 minuter&#8230;</p>
<p>Det lutar åt att några av de andra lagen hade lite förberett kod, då det var ganska stressigt med tid att få klar en första prototyp (~1h), eller så var de helt enkelt grymt snabba! Hade vi haft lite framförhållning så hade det nog varit en ganska smart idé, men det är alltid lätt att vara efterklok. Det var i alla fall en väldigt trevlig kväll och ett riktigt kul arrangemang!</p>
<h3>Demonstration</h3>
<p><iframe width="480" height="390" src="http://www.youtube.com/embed/_1FCyXG5Nt8" frameborder="0" allowfullscreen></iframe></p>
<p>Här kör vi mot ett annat lag som också kommer ifrån Uppsala, vi heter &#8221;Team Borm&#8221; (den kör v2) och de är &#8221;Sneaky Brian&#8221;. Vi märker tydligt att det är en del problem när båda två är väldigt nära samma frukt.</p>
<h3>Källkod</h3>
<p><a href="https://github.com/parse/borm-snake-citerus">Finns samlat på Github</a>. </p>
<p>Den första versionen <a href="https://github.com/parse/borm-snake-citerus/blob/master/java-brain/src/main/java/org/badass/snake/brain/MadBormBrain.java">finns här</a> (v1, som vi inte hann slutföra på tävlingen) och den som vi fortsatte lite på <a href="https://github.com/parse/borm-snake-citerus/blob/master/java-brain/src/main/java/org/badass/snake/brain/BormBrain.java">finns här</a> (v2).</p>
<p>Själva <a href="https://github.com/parse/borm-snake-citerus/blob/master/java-brain/src/main/java/org/badass/snake/brain/PathPlanner.java">path-hanteraren finns här</a>.</p>
<h3>Mer läsning</h3>
<p><a href="http://www.citerus.se/post/325559-lag-paxport-vann-crazy-snake">Lag Paxport vann Crazy Snake</a><br />
<a href="http://www.citerus.se/post/325558-ladda-clojure-kod-med-java-util-serviceloader">Ladda Clojure-kod med java.util.ServiceLoader</a></p>
]]></content:encoded>
			<wfw:commentRss>/2011/05/05/citerus-hackers-night-2011-crazy-snake/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Runestone 2011: WALL-E</title>
		<link>/2011/03/22/runestone-2011-wall-e/</link>
		<comments>/2011/03/22/runestone-2011-wall-e/#comments</comments>
		<pubDate>Tue, 22 Mar 2011 17:54:37 +0000</pubDate>
		<dc:creator>Anders</dc:creator>
				<category><![CDATA[Programmering]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[RMI]]></category>
		<category><![CDATA[Uppsala Universitet]]></category>

		<guid isPermaLink="false">http://hassis.com/?p=455</guid>
		<description><![CDATA[Uppdaterad 2011-03-31 med källkod och lite mer information Vi har under de senaste 7 veckorna arbetat med ett projekt i en kurs som heter &#8221;Distribuerade system med projekt&#8221;. Vår projektbeskrivning var i korta drag detta: &#8221;You are to design and implement a complete software system that provides Internet access to semi-autonomous soft-realtime robot.&#8221; Då hälsar [...]]]></description>
			<content:encoded><![CDATA[<p><em>Uppdaterad 2011-03-31 med källkod och lite mer information</em></p>
<p>Vi har under de senaste 7 veckorna arbetat med ett projekt i en kurs som heter &#8221;Distribuerade system med projekt&#8221;. Vår projektbeskrivning var i korta drag detta:</p>
<blockquote><p>&#8221;You are to design and implement a complete software system that provides Internet access to semi-autonomous soft-realtime robot.&#8221;</p></blockquote>
<p>Då hälsar vi WALL-E välkommen!</p>
<p><a href="http://hassis.com/static/uploads/hassis.com/2011/03/Wallereal.jpg" rel="lightbox[455]" title="Runestone 2011: WALL-E"><img class="alignnone size-medium wp-image-492" src="http://hassis.com/static/uploads/hassis.com/2011/03/Wallereal-300x146.jpg" alt="" width="421" height="204" /></a><br />
<em>WALL-E med orginalet</em></p>
<h3>Introduktion</h3>
<p>WALL-E är konstruerad i Lego, den är ifrån <a href="http://mindstorms.lego.com/">Lego Mindstorms NXJ</a> och omflashad med <a href="http://lejos.sourceforge.net/">LeJOS</a> för att vi ska kunna köra Java på den.</p>
<p>Vårt projekt krävde att vi skulle kunna styra roboten från vilken klient som helst, därför valde vi att köra Java RMI mellan våra olika system.</p>
<p><a href="http://hassis.com/static/uploads/hassis.com/2011/03/System-diagram.jpg" rel="lightbox[455]" title="Runestone 2011: WALL-E"><img class="alignnone size-full wp-image-456" src="http://hassis.com/static/uploads/hassis.com/2011/03/System-diagram.jpg" alt="" width="463" height="329" /></a><br />
<em>System diagram</em></p>
<h3>Klienten</h3>
<p><a href="http://hassis.com/static/uploads/hassis.com/2011/03/walle-client.jpg" rel="lightbox[455]" title="Runestone 2011: WALL-E"><img class="alignnone size-medium wp-image-460" src="http://hassis.com/static/uploads/hassis.com/2011/03/walle-client-300x207.jpg" alt="" width="300" height="207" /></a><br />
<em>Windowsklienten</em></p>
<p>Klienten är skriven som en Java-applet och kan därför köras ifrån alla möjliga operativsystem, de vi har testat är Linux, Mac OS X samt Windows 7. Den ansluter till ett externt ip som &#8221;robotservern&#8221; körs på.</p>
<p>&nbsp;</p>
<p><a href="http://hassis.com/static/uploads/hassis.com/2011/03/manual-mode.jpg" rel="lightbox[455]" title="Runestone 2011: WALL-E"><img class="alignnone size-medium wp-image-462" src="http://hassis.com/static/uploads/hassis.com/2011/03/manual-mode-300x129.jpg" alt="" width="300" height="129" /></a><br />
<em>Dataflöde &#8211; Manuellt läge</em></p>
<p>Ovan ser ni även hur flödet ser ut när vi skickar enskilda kommandon ifrån det manuella läget i klienten.</p>
<h3>Autopiloten</h3>
<p>I projektet ingick även att vi ska samarbeta med en annan robot i Sverige och söka av ett rum. Vi satte därför upp ytterligare en service som sköter kartan, den körs via RMI och använder sig av en MySQL-databas som robotarna sedan kommunicerar med via interfaces. Kartan genereras sedan med hjälp av GD och PHP och skickas sedan till klienten.</p>
<p>Denna del är den som tagit överlägset längst tid, vår autopilot gör väldigt komplicerade beslut på egen hand. Bra jobbat <a href="http://sportfantast.se/">Julius</a>, Erik och Henrik!</p>
<p>&nbsp;</p>
<p><a href="http://hassis.com/static/uploads/hassis.com/2011/03/automode.jpg" rel="lightbox[455]" title="Runestone 2011: WALL-E"><img class="alignnone size-medium wp-image-461" src="http://hassis.com/static/uploads/hassis.com/2011/03/automode-300x280.jpg" alt="" width="300" height="280" /></a><br />
<em>Dataflöde &#8211; Autopilot</em></p>
<p>När roboten körs i autopilot-läget så gör den inga beslut själv, alla beslut sker genom robotservern och den i sin tur kontrollerar hela tiden med kartservern vilka ytor som är lediga/upptagna.</p>
<h3>Kartläggningsalgoritm</h3>
<ul>
<li>Allting baseras på en &#8221;tile map&#8221; för att förenkla algoritmen. </li>
<li>Den använder en egenkomponerad Dijkstra-algoritm med viktbaserad beslutshantering för all kartläggning. </li>
<li>Den använder även ett poängsystem för att bestämma vilken del av kartan den ska besöka härnäst. </li>
<li>Varje gång den kollar något så kollar den detta tre gånger, med små vinkelskiftningar, för att förbättra avläsningen.</li>
</ul>
<p><a href="http://hassis.com/static/uploads/hassis.com/2011/03/mapping_algorithm.png" rel="lightbox[455]" title="Runestone 2011: WALL-E"><img src="http://hassis.com/static/uploads/hassis.com/2011/03/mapping_algorithm-300x186.png" alt="" width="300" height="186" class="alignnone size-medium wp-image-502" /></a></p>
<h3>Demonstration</h3>
<p>Detta är en 40 sekunder lång demonstration, där WALL-E har kört igenom en hinderbana och håller på att slutföra kartan. Håll koll på den övre högra delen på kartan på laptopen där den monterar ut väggarna allt eftersom den flyttar på sig (jag ber om ursäkt att ljudet hackar i videon).</p>
<p><iframe title="YouTube video player" width="560" height="349" src="http://www.youtube.com/embed/add8DNRPVbw" frameborder="0" allowfullscreen></iframe></p>
<h3>Källkod</h3>
<p>Finns i <a href="https://github.com/parse/runestone2011">Runestone2011 på Github</a>. </p>
<p>Tyvärr verkar den ha tappat all commit-historik när jag flyttade över det, det var lite trist. För en fullständig historik av commitsen så har jag en lokal kopia lagrad med all information.</p>
<p>Så här i efterhand så är vi väl inte särskilt nöjda med kodresultatet, vi hade nog gjort om det mesta <a href="http://xkcd.com/844/">på ett &#8221;bättre&#8221; sätt</a>.</p>
]]></content:encoded>
			<wfw:commentRss>/2011/03/22/runestone-2011-wall-e/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kalkylator i Java</title>
		<link>/2009/12/09/kalkylator-i-java/</link>
		<comments>/2009/12/09/kalkylator-i-java/#comments</comments>
		<pubDate>Wed, 09 Dec 2009 15:59:05 +0000</pubDate>
		<dc:creator>Anders</dc:creator>
				<category><![CDATA[Programmering]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Uppsala Universitet]]></category>

		<guid isPermaLink="false">http://hassis.com/?p=60</guid>
		<description><![CDATA[Som en del av en inlämningsuppgift för en kurs jag läser just nu så har vi gjort en kalkylator i Java. Den kan hantera derivering, evaluering osv. Den är dessvärre lite kinkig på paranteserna. Det medföljer testfiler som du enkelt kan ändra i klassen Calculator så att den läser ifrån dessa istället för kommandoraden. Källkod [...]]]></description>
			<content:encoded><![CDATA[<p>Som en del av en inlämningsuppgift för en kurs jag läser just nu så har vi gjort en kalkylator i Java.</p>
<p>Den kan hantera derivering, evaluering osv. Den är dessvärre lite kinkig på paranteserna.</p>
<p>Det medföljer testfiler som du enkelt kan ändra i klassen Calculator så att den läser ifrån dessa istället för kommandoraden.</p>
<h3>Källkod</h3>
<p><a href="https://github.com/parse/Uppsala-University-Courses/tree/master/ImpOOP-Calculator">Finns att se på GitHub</a>.</p>
]]></content:encoded>
			<wfw:commentRss>/2009/12/09/kalkylator-i-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using memcached
Object Caching 475/505 objects using memcached

Served from: hassis.com @ 2012-02-04 03:48:04 -->
