<?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>ohjelmointi &amp;laquo; WordPress.com Tag Feed</title>
	<link>http://en.wordpress.com/tag/ohjelmointi/</link>
	<description>Feed of posts on WordPress.com tagged "ohjelmointi"</description>
	<pubDate>Wed, 02 Dec 2009 22:20:41 +0000</pubDate>

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

<item>
<title><![CDATA[Valomaalailua]]></title>
<link>http://pahakollektiivi.wordpress.com/2009/11/08/valomaalailua/</link>
<pubDate>Sun, 08 Nov 2009 18:06:22 +0000</pubDate>
<dc:creator>Pekka</dc:creator>
<guid>http://pahakollektiivi.wordpress.com/2009/11/08/valomaalailua/</guid>
<description><![CDATA[Kaamoksen aikaan on pimeää. Haluaisin luovaa tekemistä, joka toimii pimeässä, joten koodailin omaksi]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Kaamoksen aikaan on pimeää. Haluaisin luovaa tekemistä, joka toimii pimeässä, joten koodailin omaksi ilokseni valomaalailuohjelman. Se toimii niin, että läppärin kameralla kuvataan pimeyttä ja jollain valonlähteellä, vaikka pienellä taskulampulla, luodaan valoa maalaukseen. Enter-nappi tyhjentää ruudun ja muut napit toimivat paussina.</p>
<p>Ohjelma on ladattavissa <a href="http://dl.dropbox.com/u/240393/kaamos_osx.zip">Mäkille</a>, <a href="http://dl.dropbox.com/u/240393/kaamos_windows.zip">Windowsille</a> ja <a href="http://dl.dropbox.com/u/240393/kaamos_linux.zip">Linuxille</a>. Pura zip-paketti ja aja. En mene takuuseen yhdenkään toiminnasta <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><img class="alignnone size-medium wp-image-729" title="Maalaus" src="http://pahakollektiivi.wordpress.com/files/2009/11/picture-2.png?w=300" alt="Maalaus" width="300" height="140" /></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Elämäni ennen ja jälkeen tietotekniikan]]></title>
<link>http://littlemissscareall.wordpress.com/2009/08/25/elamani-ennen-ja-jalkeen-tietotekniikan/</link>
<pubDate>Tue, 25 Aug 2009 20:54:09 +0000</pubDate>
<dc:creator>Little Miss Scare-All</dc:creator>
<guid>http://littlemissscareall.wordpress.com/2009/08/25/elamani-ennen-ja-jalkeen-tietotekniikan/</guid>
<description><![CDATA[Elämäni ennen ja jälkeen tietotekniikan ajoittuu oikeastaan muutamaan eri vaiheeseen, joita aloin tä]]></description>
<content:encoded><![CDATA[Elämäni ennen ja jälkeen tietotekniikan ajoittuu oikeastaan muutamaan eri vaiheeseen, joita aloin tä]]></content:encoded>
</item>
<item>
<title><![CDATA[Projektin elvytys]]></title>
<link>http://sakulaukkanen.wordpress.com/2009/08/21/projektin-elvytys/</link>
<pubDate>Fri, 21 Aug 2009 13:49:23 +0000</pubDate>
<dc:creator>Saku Laukkanen</dc:creator>
<guid>http://sakulaukkanen.wordpress.com/2009/08/21/projektin-elvytys/</guid>
<description><![CDATA[Ajattelin tässä tylsyydessä elvyttää hieman jo unohduksiin jäänyttä MTP-Lastfm-projektia. Projektin ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Ajattelin tässä tylsyydessä elvyttää hieman jo unohduksiin jäänyttä MTP-Lastfm-projektia. Projektin viimeisin versio julkaistiin heinäkuussa, mutta oikeasti projektin kehitys on ollut mitäänsanomatonta kesän alusta lähtien. Se on osaltaan minun syy, olen projektin ajaja eli vast. Minun tulisi huolehtia julkaisuajankohdista ja hallinnoida bugien korjausta. No, eipä tässä tosiaankaan ole tullut niitä hallinnoitua ja projekti on uponnut unholaan. Se on nyt täydellinen ja täysin toimiva. Eihän sitä siis kuuluisi edes päivittää.</p>
<p>Väärin. Kaikkea tulee kehittää jo senkin takia, että kaikki muukin kehittyy. Last.fm:n api antaa jo enemmän myöden ja siellä olisi tälläkin hetkellä monia käyttämättömiä mahdollisuuksia. Ohjelman ulkoasu on vielä lapsenkengissään ja sitä tulisi päivittää. Lisäksi uusi versio tulisi paketoida jo käännöspäivityksien vuoksi, muut ovat ystävällisesti kääntäneet ohjelman kielelleen, muttemme ole päivittäneet käännöksiä mukaan ohjelmaan.</p>
<p>Uuden version kokoonsaaminen vaatii hieman työtä, mutta eiköhän sen kestä. Vaikkei kukaan valita kehityksen uupumisesta, olisi se varmasti jokaiselle käyttäjälle tervetullutta. Eiköhän siis avata vielä kerran nano ja kirjoiteta pari riviä pythonia&#8230;</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Pahista]]></title>
<link>http://pahakollektiivi.wordpress.com/2009/06/08/pahista/</link>
<pubDate>Mon, 08 Jun 2009 18:49:59 +0000</pubDate>
<dc:creator>Airi</dc:creator>
<guid>http://pahakollektiivi.wordpress.com/2009/06/08/pahista/</guid>
<description><![CDATA[Avista on hieno peli, mutta jostain kumman syystä sen valmistus on lopetettu. Lisäksi on niin, että ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><a href="http://fi.wikipedia.org/wiki/Avista">Avista</a> on hieno peli, mutta jostain kumman syystä sen valmistus on lopetettu.</p>
<p>Lisäksi on niin, että takavuosien korteissa jotkut kategoriat tuntuvat aikansa eläneiltä tai ovat ehkä olleet alun alkaenkin virheliikkeitä. Ja miksi ihmeessä &#8220;tanssit&#8221; ja &#8220;hyönteiset&#8221; ovat niin paljon tärkeämpiä kuin muut, että ne mainitaan kahdesti?</p>
<p>Tarvitaan uusi, open source -pohjaisesti käytettävissä oleva versio. Paha kollektiivi voisi toteuttaa sen nimellä Pahista. Pahista ratkaisee sekä korttien saatavuusongelmat että tuo pelin kategoriat ryminällä tälle vuosituhannelle. Jotkut hassut kategoriat voidaan säilyttää nostalgiasyistä.</p>
<p>Pelattavuuden parantamiseksi pahvikorttien rinnalle tarvitaan koodattu versio, jolloin peliä voidaan pelata heijastamalla se videotykillä sopivalle taustalle. Digiversion erityisvahvuus on, että kaikki oikeasti näkevät Kirjaimen yhtä aikaa.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Java-kehittäjillä kiintoisa vuosi]]></title>
<link>http://tieturi.wordpress.com/2009/05/08/java-kehittajilla-kiintoisa-vuosi/</link>
<pubDate>Fri, 08 May 2009 09:43:48 +0000</pubDate>
<dc:creator>Producer</dc:creator>
<guid>http://tieturi.wordpress.com/2009/05/08/java-kehittajilla-kiintoisa-vuosi/</guid>
<description><![CDATA[Java-kehittäjälle vuosi 2009 on kiintoisaa aikaa. Viime vuoden puolella esitellyt uudistukset kuten ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><strong>Java-kehittäjälle vuosi 2009 on kiintoisaa aikaa. </strong></p>
<p>Viime vuoden puolella esitellyt uudistukset kuten Java 6 update 10 ja JavaFX pistävät uusiksi Java-sovellusten asennusta ja käytettävyyttä. Teemana on entistä kevyempää, helpompaa ja näyttävämpää. Selaimesta ruudulle ladattavat appletit, widgetit ja JavaFX sovelmat tuovat rikkautta käyttöliittymiin ja Web Start teknologian avulla Java-sovellukset saadaan helposti levitettyä työasemiin.<br />
Tänä vuonna JavaFX-teknologia siirtyy myös mobiili- ja digitv-alustalle.<br />
Ajan myötä näemme kumpi vetää enemmän, Google Android vai tuleva MIDP 3 + JavaFX -yhdistelmä. Molempia koodataan kuitenkin Java-kielellä.</p>
<p>Palvelinpuolella Java EE 5 -alusta auttaa suunnittelemaan ja toteuttamaan palvelinsovellukset entistä helpommin. Yksinkertaistunut EJB 3.0 -malli auttaa pitämään ylläpidon helppona. JavaServer Faces -tekniikalla saadaan web-käyttöliittymät koottua valmiskomponenteista entistä nopeammin. AJAX-piirteitä on rakennettu JSF-komponenttien sisään. Jos haluaa kattavamman AJAX-ratkaisun, Google Web Toolkit auttaa tekemään senkin ammattimaisesti.<br />
Hype on vaimentunut Web Services -tekniikoiden osalta. Niitä käytetään integraatioratkaisuissa, joita tehdään organisaatioiden välillä.</p>
<p>Kestotrendejä myös Java-puolella ovat mm. Agile menetelmät kuten Scrum ja XP, sekä Test Driven Development (TDD), joilla pyritään pitämään ohjelmistoprojektien tavoitteet selvillä ja näkyvissä, kulut kurissa ja tuottavuus maksimissa mm. JUnit yksikkötestauksella.</p>
<p>Jos olet koskaan kokenut, että ohjelmistoprojektissa on turhia viiveitä, myöhästymisiä tai riskejä niin käy katsomassa miten homman voi tehdä järkevämmin.</p>
<p>Toukokuun <strong>Java One</strong> seminaarissa San Franciscossa on uusia julkistuksia, puheenaiheina mm. Java 7 uudistukset kuten Jigsaw moduulimalli sekä Java EE 6.0 standardi ja EJB 3.1.</p>
<p><strong>Lisätietoja</strong><br />
Arto Santala, Tieturi Oy,  <a href="mailto:arto.santala@tieturi.fi">arto.santala@tieturi.fi</a></p>
<p><strong>P.S.</strong> Nyt viimeistään on paikallaan päivittää osaaminen nykypäivän tasalle ja hakea sovelluskehitykseen tuottavuutta ja ryhtiä!<br />
Valitse mielenkiintoisimmat kurssit <a href="http://www.tieturi.fi/java">www.tieturi.fi/java</a></p>
<p><!--  html .fb_share_link { padding:2px 0 0 20px; height:16px; background:url(http://b.static.ak.fbcdn.net/images/share/facebook_share_icon.gif?8:26981) no-repeat top left; } --><a class="fb_share_link" href="http://www.facebook.com/share.php?u=http://tieturi.wordpress.com" target="_blank">Share on Facebook</a></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Laaduntarkkailua vekottimilla]]></title>
<link>http://miljonaariklubi.wordpress.com/2009/03/03/laaduntarkkailua-vekottimilla/</link>
<pubDate>Mon, 02 Mar 2009 21:32:43 +0000</pubDate>
<dc:creator>jussist</dc:creator>
<guid>http://miljonaariklubi.wordpress.com/2009/03/03/laaduntarkkailua-vekottimilla/</guid>
<description><![CDATA[Yksi universumin siisteimmistä verkkopalveluista, last.fm,  käyttää kehityksen laaduntarkkailuun mai]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Yksi universumin siisteimmistä verkkopalveluista, <a href="http://last.fm" target="_blank">last.fm</a>,  käyttää kehityksen laaduntarkkailuun mainioita vekottimia. Build brakerin koneen vieressä palaa punainen nallekarhu, palvelun vasteaikaa näytetään analogimittarilla. Jotain vastaavaa on tullut suunniteltua omaan firmaan, sinä kauniina päivänä kun tuollaisten tekemiseen olisi aikaa. Lähinnä tosin tuota monitoripuolta, mitä tapahtuu missäkin päin maailmaa, mitkä asiakkaiden koneet ovat offline, ja niin edespäin. Scifihenkinen operation HQ. Sitä päivää odotellessa: last.fm kehittäjän <a href="http://blog.last.fm/2008/08/01/quality-control" target="_blank">Aatu Puupään plokista</a> poimittua.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Visuaalista ohjelmointia - Piet]]></title>
<link>http://miljonaariklubi.wordpress.com/2009/02/28/visuaalista-ohjelmointia-piet/</link>
<pubDate>Sat, 28 Feb 2009 18:45:20 +0000</pubDate>
<dc:creator>jussist</dc:creator>
<guid>http://miljonaariklubi.wordpress.com/2009/02/28/visuaalista-ohjelmointia-piet/</guid>
<description><![CDATA[Esoteric Programming, todellista visuaalista ohjelmointia. Myönnetään en jaksanut tarkemmin tutustua]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Esoteric Programming, todellista visuaalista ohjelmointia. Myönnetään en jaksanut tarkemmin tutustua miten homma menee. Mutta ohjelmakoodi ilmaistaan kuvana, kiintoisaa menoa. Joskus sitä ihmettelee ihmisten mielikuvitusta.</p>
<p><a href="http://www.dangermouse.net/esoteric/piet/samples.html" target="_blank">Esoteric Programming &#8211; Piet Samples</a>.</p>
<p>No, erilaisia ohjelmointikieliä on maailmassa satoja. Yksi loistavimmista on <a href="http://lolcode.com/" target="_blank">lolcode</a>. HAI WORLD:</p>
<p>HAI<br />
CAN HAS STDIO?<br />
VISIBLE &#8220;HAI WORLD!&#8221;<br />
KTHXBYE</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Projektin alku]]></title>
<link>http://juhosa.wordpress.com/2009/02/20/projektin-alku/</link>
<pubDate>Thu, 19 Feb 2009 23:26:00 +0000</pubDate>
<dc:creator>juhosa</dc:creator>
<guid>http://juhosa.wordpress.com/2009/02/20/projektin-alku/</guid>
<description><![CDATA[Kaiken näköistä ohjelmointi (sekä &#8220;ohjelmointi&#8221;) kokemusta on tullut hommattua vähän mis]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Kaiken näköistä ohjelmointi (sekä &#8220;ohjelmointi&#8221;) kokemusta on tullut hommattua vähän mistäkin. Ala-asteella basic-kieltä ihmeteltiin tekemällä Nibblesiin omia kenttiä. Yläasteella kuvioihin tuli HTML ja CSS. Ammattikoulussa tutustuin unix-ympäristöön ja sen erikoisuuksiin. AMKissa oli Java-kurssi. </p>
<p>Yhteistä näillä kaikilla on se, että mitään en hirveästi raapaissut pintaa syvemmältä (paitsi html).</p>
<p>Aina on takaraivossa kuitenkin ollut ajatus, että joskus vielä opettelen oikeasti ohjelmoimaan jotta voisin tehdä omia ohjelmia. Loppuvuodesta 2008 aikaa rupesi ilmenemään ja tammikuussa 2009 päätin aloittaa urakkani. Alustaksi valitsin luonnollisesti OS X:n koska Macbook on palvellut minua uskollisesti pari vuotta ja Ompusta en enää pois vaihda. </p>
<p>Ankaran googlettamisen ja lukemisen jälkeen oli selvinnyt, että Objective-C tulisi olemaan kieli mitä opettelen koska Apple sitä suosittelee käytettäväksi (ja Steve-sedän sana on laki <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  ). Erinäisiltä sivuilta selvisi hyvinkin nopeasti, että ehkä ei ihan heti obj-c:n kimppuun kannata käydä näin aloittelijana. Niinpä päädyin Rubyyn hyvän tutoriaalin saattelemana [lisää linkki]. Siitä saatoin opiskella muunmuassa muuttujien ja arrayn toimintaa.<br />
Parin-kolmen rubyn seurassa vietetyn viikon jälkeen uskalsin siirtyä eteenpäin. Jotakuinkin luonnollinen vaihtoehto oli C. Sitä viikon verran uskalsin astua Objective-C:n maailmaan. </p>
<p>Suurin kimmoke siirtymiseen oli loistava ilmainen e-kirja &#8220;Become an Xcoder&#8221; [lisää linkki]. Ihan perusteista lähtevä kirja oli hyvää kertausta jo opitulle sekä uudelle asialle. Esimerkkien kautta omaa koodia kirjoittamaan oli kirjan linja. </p>
<p>Niin siinä sitten kävi. Yhden oikeasti oman pikkupikku ohjelman olen jo kirjoittanut ja seuraa on kovasti suunnitteilla. Haastetta vähän lisäämällä opin uutta ja vanha jää mieleen. </p>
<p>Jos tätä nyt joku sattuu lukemaan, niin sen vaan sanon et mun peukalo on kipeenä hirveest kirjottelust. Tää on iphonella tehty koko pätkä <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Drupal scandir(); onkin file_scan_directories();]]></title>
<link>http://korpivaellus.wordpress.com/2009/01/16/drupal-scandir-onkin-file_scan_directories/</link>
<pubDate>Fri, 16 Jan 2009 12:28:13 +0000</pubDate>
<dc:creator>mvpfin</dc:creator>
<guid>http://korpivaellus.wordpress.com/2009/01/16/drupal-scandir-onkin-file_scan_directories/</guid>
<description><![CDATA[Drupal tarvitsee vahvaa teemoittamista. Normaalisti eräs käyttäjäystävällinen ja varmatoiminen tapa ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Drupal tarvitsee vahvaa teemoittamista. Normaalisti eräs käyttäjäystävällinen ja varmatoiminen tapa on käyttää omia hakemistoja tietyn kuvaesitysten kuvien tallentamiseen. Drupalissa tiedostojärjestelmän funktiot eivät kuitenkaan toimi, sen sijaan alusta tarjoaa vastaavia, omia funktioitaan esimerkiksi PHP:n scandir(); -funktion toteuttamiseen.</p>
<pre>$myflashphotos = array_diff(scandir('/sites/default/files/flash'), array(".", ".."));</pre>
<p>Tavanomainen tiedoston luku palauttaa Drupalissa virheen.</p>
<ul>
<li>warning: scandir(/sites/default/files/flash)[function.scandir]: failed to open dir: not implemented in /home/test/public_html/sites/default/themes/mytheme/page.tpl.php on line 77.</li>
<li>warning: scandir() [function.scandir]: (errno 0): Success in /home/test/public_html/sites/default/themes/mytheme/page.tpl.php on line 77.</li>
</ul>
<p>Virheestä ei pääse yli eikä ympäri, ei edes muokkaamalla .htaccess -tiedostoa. Niinpä pitää turvautua <a href="http://api.drupal.org">Drupal API</a>:iin. Rajapintaohje kertoo tiedostoja käsittelevässä osiossa funktiosta file_scan_directory() -funktiosta. Funktio tarvitsee parametrikseen hakemistopolun ja säännöllisen lausekkeen, jolla tuloksia seulotaan. Ilman regular expression -sääntöä funktio ei toimi.</p>
<pre>
$myflashphotos = file_scan_directory("/sites/default/files/flash/", '.*');
</pre>
<p>Ylläoleva lause ei vielä toimi. Hakemistopolun alusta ja lopusta on poistettava kauttaviiva. Säännönmukainen lauseke .* ei myöskään toimi, vaikka normaalisti piste-tähti palauttaa kaikki mahdolliset arvot. Korjataan lausetta.</p>
<pre>
$myflashphotos = file_scan_directory("sites/default/files/flash", '.*\.jpg$');
</pre>
<p>Nyt funktio löytää mainitusta hakemistosta jpg-päätteiset tiedostot. Paluuarvo näyttää tältä:</p>
<pre>
array(2) {
  ["sites/default/files/flash/top_picture_2.jpg"]=&#62;
   object(stdClass)#26 (3) { ["filename"]=&#62;
   string(43) "sites/default/files/flash/top_picture_2.jpg" ["basename"]=&#62;
   string(17) "top_picture_2.jpg" ["name"]=&#62;
   string(13) "top_picture_2" } ["sites/default/files/flash/top_picture.jpg"]=&#62;
   object(stdClass)#8 (3) {
   ["filename"]=&#62;
   string(41) "sites/default/files/flash/top_picture.jpg" ["basename"]=&#62;
   string(15) "top_picture.jpg" ["name"]=&#62;
   string(11) "top_picture" }
}
</pre>
<p>Kaikkea tätä informaatiota ei tarvita, tuloksia voi kätevästi supistaa näin:</p>
<pre>
$myflashphotos = array_keys(file_scan_directory("sites/default/files/flash", '.*\.jpg$'));
</pre>
<p>Tuloksena taulukko, jossa pelkät tiedostojen nimet polkuineen.</p>
<pre>
array(2) {
  [0]=&#62;
  string(43) "sites/default/files/flash/top_picture_2.jpg"
  [1]=&#62;
  string(41) "sites/default/files/flash/top_picture.jpg"
}
</pre>
<p>Säännönmukainen lauseke mahdollistaa file_scan_directory();n laajemman käytön. Esimerkiksi seuraava lauseke</p>
<pre>
$myfiles = array_keys(file_scan_directory('sites', 'files.*\.(jpe?g&#124;gif&#124;png)$));
</pre>
<p>palauttaa taulukossa kaikkien jpg, jpeg, gif ja png -päätteisten tiedostojen nimet polkuineen, jotka löytyvät sites-hakemiston alta ja joiden polussa tai nimessä on sana files.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Java 6: Possuban 2.0]]></title>
<link>http://paaedella.wordpress.com/2008/12/17/java-6-possuban-20/</link>
<pubDate>Wed, 17 Dec 2008 10:13:16 +0000</pubDate>
<dc:creator>heid1</dc:creator>
<guid>http://paaedella.wordpress.com/2008/12/17/java-6-possuban-20/</guid>
<description><![CDATA[Viimeinen ohjelmointi tehtävä ennen todellista koitosta.. Java kutonen jatkoi siitä mihin edellinen ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Viimeinen ohjelmointi tehtävä ennen todellista koitosta..</p>
<p>Java kutonen jatkoi siitä mihin edellinen ohjelmointitehtävä jäi eli ei kun Sokobania tuunaamaan.</p>
<p>Ensimmäinen osatehtävä käsitteli aikalaskurin koodaamista. Pääsimme tutustumaan  Timer-luokkaan ja pohtimaan, kuinka ihmeessä sen ajan nyt saa näkymään oikein. Piti muistaa jakaa millisekunnit tuhannella ja laittaa ajastin päivittämään kelloa tarpeeksi usein.</p>
<p>Toisessa osatehtävässä alettiin valmistelemaan tulostaulukkoa, jossa parhaimmat tulokset säilyisivät ajasta ikuisuuteen. Tulosrivi-luokka hoitaisi tulosten muodostamisen ja paremmuusvertailun. Vertailu toteutettiin Comparable rajapinnan avulla ja käytännössä metodilla compareTo, jossa määriteltiin miten tulosten paremmuun muodostuu. Tehtävän yksi haastavimpia kohtia oli ajankohtien käsittely. Niiden muuttaminen oikeaan muotoon ja vertailu tuotti ainakin minulle harmaita hiuksia.. tosin tuskinpa kaikki olivat sinne sitä yhtä ylimääräistä, elämää kummansti vaikeuttavaa space:ä iskeneet.. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Itse tulostaulukko luotiin sitten kolmannessa osassa. Tässä vaiheessa täytyy todeta, että ohjeet alkoivat olemaan hyvin suuntaa antavia ja itse piti keksiä ja tehdä ratkaisuja, kuten minkälaiseen tietorakenteeseen säilöö tulosrivit. Itse päädyin ensiksi TreeSettiin, joka olisi pitänyt rivit järjestyksessä automaattisesti, mutta jouduin myöhemmin tulemaan takaisin ja muuttamaan tietorakenteeksi ArrayList:in, joka mahdollisti tulosten hakemisen indeksiin perustuen. Pääsimpä samalla tutustumaan Collection.sort toimintoon ja toteamaan, että se järjesti tulokset ihan hassusti päin -&#62; lisää pulmia ratkottavaksi. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Tulostaulukko-luokkaan tehtiin myös metodi, joka kirjoitti sinne talletetut tiedot tiedostoon, jossa tulokset olisivat turvassa odottamassa seuraavaa pelikierrosta. Pieni kikkailu ja tutustuminen BufferedWriteriin olivat paikallaan. Myös WindowListenerin lisääminen oli fiksua tässä vaiheessa, jotta sai varmistettua, että tulokset varmasti tallentuisivat tiedostoon jos peli-ikkuna suljetaan kokonaan.</p>
<p>Neljänessä osatehtävässä huolehdittiin tulostaulukon visuaalisesta ratkaisusta. Vaikka tehtävässä hieman ohjattiinkin käyttämään CardLayout:ia päädyin itse toteuttamaan tulostaulukon esille ponnahtamisen tekemällä siitä toisen JFrame:n, johon sijoitin JScrollPane:n, joka sisälsi tulostaulukon. Ei ehkä niin tyylikäs ratkaisu, mutta toimi se niinkin.</p>
<p>Semmoinen tehtävä tällä kertaa. Ja nyt oman projektin kimppuun..</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Ideoita ohjelmointiharjoituksiksi]]></title>
<link>http://projekteja.wordpress.com/2008/12/14/ideoita-ohjelmointiharjoituksiksi/</link>
<pubDate>Sat, 13 Dec 2008 22:21:43 +0000</pubDate>
<dc:creator>Lauri</dc:creator>
<guid>http://projekteja.wordpress.com/2008/12/14/ideoita-ohjelmointiharjoituksiksi/</guid>
<description><![CDATA[Aloittelevan koodarin on usein vaikeaa keksiä mitä koodaisi. Minulta on usein kysytty ideoita, mitä ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Aloittelevan koodarin on usein vaikeaa keksiä mitä koodaisi. Minulta on usein kysytty ideoita, mitä voisi ohjelmoida. Kokosin tähän kirjoitukseen eri tasoisia moneen ohjelmointiympäristöön soveltuvia ideoita. En paljasta aivan kaikkea harjoitusten toteutuksesta, vaan annan vain vinkkejä ohjelmien algoritmeista.  Tavalliset ohjelmointiharjoitukset eivät mene hukkaan, koska koodausrutiinin hankkiminen on tärkeää.</p>
<p><em><strong>Helppoja perusharjoituksia</strong></em></p>
<p>Tästä vaikkapa pakollisen ohjelmointikurssin harjoitustyöksi, jos et ole sen kummemmin kiinnostunut koodaamisesta:</p>
<p><strong> Painoindeksin laskeminen</strong></p>
<p>Painoindeksin laskemiseksi kysytään käyttäjältä paino ja pituus, jonka jälkeen painoindeksi kerrotaan käyttäjälle.  Ohjelmaa voi kehittää vaikkapa kysymään käyttäjän nimen ja ilmoittamaan mihin painoluokkaan käyttäjä kuuluu tyyliin <em>&#8220;Lauri, painoindeksisi on 26,7, olet lievästi ylipainoinen. Sinun tulisi laihduttaa 4,3 kg päästäksesi normaalipainoon</em>&#8220;. Konsoliohjelma toimii while- tai do-while -silmukassa, lopuksi kysytään yritetäänkö uudestaan.</p>
<p><strong> Laskin</strong></p>
<p>Silmukassa toimiva nelilaskin kysyy käyttäjältä kaksi lukua ja niille tehtävän operaation. Tästä voi kehittää vaikka pelin, jossa laskettavat luvut arvotaan ja käyttäjältä kysytään vastaus laskutoimitukseen.</p>
<p><em><strong>Pientä kivaa</strong></em></p>
<p>Tässä pientä kivaa vaikkapa nettisivuille. Nämäkin voivat onnistua aivan aloittelijaltakin.</p>
<p><strong> Intiaanimigeneraattori</strong></p>
<p>Intiaaninimigeneraattorin tekemiseksi joudut keksimään joukon intiaaninimiä, jotka tallennat ohjelmakoodissa taulukkoon tai laitat tekstitiedostoon. Generaattorin saat toimimaan siten, että kysyt käyttäjän nimen ja lasket sen merkeistä luvun esimerkiksi laskemalla merkkien ascii arvot yhteen.  Saadusta luvusta otetaan jakojäännös keksittyjen nimien lukumäärällä. Jakojäännöstä käytetään nimitaulukon indeksinä. Toteutin tallaisen kerran php:llä, löydät sen <a href="http://laurimaatta.wippiespace.com/tynnyri/intiaaninimigeneraattori/" target="_blank">täältä</a>.</p>
<p><strong> Puppulausegeneraattori</strong></p>
<p>Puppulausegeneraattorin saat ohjelmoitua laittamalla virkkeiden pätkiä esimerkiksi kolmeen taulukkoon. Yhteen taulukkoon tulee virkkeen alkuosaksi sopivia, toiseen keskelle ja kolmanteen loppuosaksi sopivia pätkiä.  Arpomalla taulukoista satunnaisen virkkeen alun, keskiosan ja lopun saat hassunkurisia lauseita.</p>
<p><em><strong>Pieniä pelejä</strong></em></p>
<p>Pienten pelien ohjelmointi on mukavaa. Näiden tekemiseksi on parasta perehtyä jonkilaisen grafiikan tuottamiseen, vaikka toki nämä merkkipohjaisinakin voi toteuttaa. Itse opettelin ohjelmoimaan tällaisia pelejä tehden. Pieniä pelejä ohjelmoidessa voi harjoitella dynaamista muistinhallintaa, säikeistystä, olio-ohjelmointia, tiedostonkäsittelyä esimerkiksi tuloslistan tallennuksessa ja erilaisia aikalaskureita. Kunnollisen tykkipelin pelaaminen kaksinpelinä verkon yli on varmasti mukavaa.</p>
<p><strong>Hirsipuu</strong></p>
<p>Hirsipuun toteutukseen tarvit luonnollisesti arvattavia sanoja. Pelin runkona on silmukka, joka loppuu kun sana on arvattu tai vääriä arvauksia on liikaa. Hirsipuun ja siinä roikkuvan ukkelin piirtäminen kannattaa tehdä erilliseen funktioon, jolle välitetään väärien arvausten määrä.  Näitä tietoja on hyvä pitää tallessa pelin edetessä:</p>
<ul>
<li>Väärien arvausten lukumäärä &#8211; tarvitaan pelin loppumisen tunnistamiseksi ja hirsipuun piirtämiseen.</li>
<li>Väärin arvatut kirjaimet &#8211; ei kahta virhepistettä samasta kirjaimesta</li>
<li>Pelitilanteen voi tallentaa merkkijonoon, jossa kaikki arvot alustetaan esimerksi _-merkillä ja korvataan pelin edetessä arvatulla kirjaimella. Kun _-merkkejä ei enää ole, sana on arvattu.</li>
</ul>
<p><strong>Matopeli</strong></p>
<p>Matopelin mato on helpoin tehdä osista. Jokaisen osan koordinaatit ovat tallessa taulukossa. Mato etenee siten, että etuosalle luodaan uusi koordinaatti ja viimeinen osa madosta tuhotaan.  Omenan koordinaatit ovat myös tallessa. Uuden koordinaation kohdalle tehdään törmäystarkistus, eli tarkistetaan, että koordinaattien kohdalla ei ole seinä, eikä madon häntä.  Omenan sattuessa kohdalle mato jatkaa kulkuaan siten, että viimeistä osaa ei hetkeen tuhota, eli madon häntä jää paikoilleen.</p>
<p>Matopelin, jossa mato kääntyy 90 asteen käännösten sijaan loivasti, tekemiseksi sinun täytyy palautella mieleen hieman trigonometriaa.  Mato tehdään samoin taulukkoon kuten edellinenkin, mutta törmäystarkistuksissa joudutaan käyttämään <a href="http://fi.wikipedia.org/wiki/Pythagoraan_lause" target="_blank">pythagoraan lausetta</a> etäisyyslaskentaan. Madon suunnan x- ja y-komponentit muuttuvat siten, että niiden nopeus pysyy vakiona suunnasta huolimatta.</p>
<p>Matopelejä olen tehnyt moneen eri ympäristöön alkaen TexasInstrumentsin graafisesta laskimesta. Kerran tekaisin koulukaverin kanssa JavaApplettiin hieman perinteisestä matopelistä poikkeavan toteutuksen. Löydät sen <a href="http://laurimaatta.wippiespace.com/tynnyri/JavaHarjoitus/" target="_blank">täältä</a>.</p>
<p><strong>Tykkipeli</strong></p>
<p>Tykkipelissä kaksi tykkiä ampuvat toisia. Väliin on hyvä tehdä esteeksi maastoa, ettei suorasuuntaus onnistu.  Ammuntaa säädetään lähtökulman- ja nopeuden avulla. Tuuli otetaan myös huomioon. Tykkipelin tekemiseksi joudut palauttelemaan hieman mieliin fysiikan lakeja. Sen verran annan vinkkiä, että putoamiskiihtyvyys on vakio ja tuulikomponentti vaikuttaa ammuksen x-suuntaiseen nopeuteen.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Single File PHP Gallery]]></title>
<link>http://projekteja.wordpress.com/2008/07/01/single-file-php-gallery/</link>
<pubDate>Tue, 01 Jul 2008 10:49:18 +0000</pubDate>
<dc:creator>Lauri</dc:creator>
<guid>http://projekteja.wordpress.com/2008/07/01/single-file-php-gallery/</guid>
<description><![CDATA[Olen jo monta vuotta sitten tehnyt php:lla kuva-gallerian, joka hakee automaattisesti kuvat annetust]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Olen jo monta vuotta sitten tehnyt php:lla kuva-gallerian, joka hakee automaattisesti kuvat annetusta hakemistosta. Suurin ongelma on ollut, että minulla ei ole ollut käytössä php:n grafiikkakirjastoa ja nyt kun minulla olisi sellainen, en ole kerinnyt perehtymään sen käyttöön. Grafiikkakirjastossa on se etu, että kuvista voi generoida pienet esikatselukuvat ns. thumbnailit ja se nopeuttaa gallerian käyttöä etenkin hitailla yhteyksillä. Tavoitteena olisi saada tehtyä kuvagalleria, jonka saa käyttöön laittamalla yhden tiedoston kotisivulle ja siihen määritellä, mistä kuvat haetaan.</p>
<p>Omasta projektistani on esimerkki <a title="Kuvagalleria" href="http://laurimaatta.wippiespace.com/picviewer.php">täällä</a>. Sen ulkoasun ei ole tarkoituskaan olla hieno, vaan sen hiominen alkaa sitten joskus kun saan sen teknisesti toteutettua. Aikaisemmin olen käyttänyt kuvagalleriaa upotettuna jollekin toiselle sivulle.</p>
<p>Valmiina löytämissäni toteutuksissa on ollut aina jokin asia mikä ei miellytä. Löysin netistä <a title="Single File PHP Gallery" href="http://sye.dk/sfpg/" target="_blank">Single File PHP Gallery</a> -nimisen yhden tiedoston kuvagallerian. Se on paras tähän mennessä löytämistäni. Sen huonoja puolia on kuvatekstien puuttuminen ja JavaScripitin käyttö. Galleriaa voi käyttää myös ilman JavaScriptiä, mutta käyttö on vähän kömpelöä.</p>
<p>Jos minulla olisi käytössäni tietokanta, käyttäisin <a href="http://coppermine-gallery.net/" target="_blank">Coppermineä</a>.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Lääketietopeli]]></title>
<link>http://projekteja.wordpress.com/2008/06/27/laaketietopeli/</link>
<pubDate>Fri, 27 Jun 2008 06:31:25 +0000</pubDate>
<dc:creator>Lauri</dc:creator>
<guid>http://projekteja.wordpress.com/2008/06/27/laaketietopeli/</guid>
<description><![CDATA[Syksystä 2007 kevääseen 2008 projektina oli Mediplorer Oy:n tilaama lääketietopeli. Peli jaetaan kai]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><a href="http://www.mediplorer.fi/oppitroppi.html" target="_blank"><img class="alignleft size-medium wp-image-9" src="http://projekteja.wordpress.com/files/2008/06/oppi_etuboxi.jpg?w=239" alt="OppiTroppi" width="182" height="129" /></a>Syksystä 2007 kevääseen 2008 projektina oli <a title="Mediplorer Oy" href="http://www.mediplorer.fi">Mediplorer Oy</a>:n tilaama lääketietopeli. Peli jaetaan kaikille lääketieteen opiskelijoille ja sen tarkoitus on opettaa opiskelijoille lääkehoidollisia yksityiskohtia. Sain projektin kun toinen Mediplorerin perustajista kyseli kerran koulun kahvilassa, että osaanko minä koodata tietopelin. Vastasin, että riippuu tietenkin mitä peliltä vaaditaan. Siinä vaiheessa en vielä tiennyt mihin vastaus johtaa, mutta asiaan palattiin muutaman kuukauden kuluttua.</p>
<p>Kolmen lapsen isänä aika meinasi olla melko vähissä, mutta niin vain projekti saatiin kasaan. Tein peliin teknisen toteutuksen, <a title="Pääkeskus" href="http://www.paakeskus.fi">Pääkeskus</a> ja erityisesti Jaakko Tikkanen vastasi grafiikasta.</p>
<p>Opin projektissa ainakin C# ohjelmointia. Pelistä tehtiin .NET 2.0 frameworkin päällä toimiva, mutta muuten täysin itsenäinen sovellus, jota voi pelata millä tahansa Windows koneella ilman asentamista.</p>
<p>Projekti oli ensimmäinen, minkä toteutin yksin ulkopuoliselle.</p>
<p><a title="OppiTroppi -pelin kotisivut" href="http://mediplorer.fi/oppitroppi.html" target="_blank">http://www.mediplorer.fi/oppitroppi.html</a></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Vauvakirja.net]]></title>
<link>http://projekteja.wordpress.com/2008/06/27/vauvakirjanet/</link>
<pubDate>Fri, 27 Jun 2008 05:51:24 +0000</pubDate>
<dc:creator>Lauri</dc:creator>
<guid>http://projekteja.wordpress.com/2008/06/27/vauvakirjanet/</guid>
<description><![CDATA[Syksyllä 2006 väsäsin nettiin palvelun vauvakirja.net.  Vaikka itse en pidäkään sivusto kummoisena ,]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><a href="http://www.vauvakirja.net" target="_blank"><img class="alignleft size-medium wp-image-6" src="http://projekteja.wordpress.com/files/2008/06/vauvakirja.jpg?w=300" alt="" width="300" height="90" /></a>Syksyllä 2006 väsäsin nettiin palvelun vauvakirja.net.  Vaikka itse en pidäkään sivusto kummoisena , niin töitä hakiessa haastattelijat ovat olleet todella kiinnostuneita siitä, että olen saanut jotain näkyvää aikaan. Tekisi vähän mieli parantaa sivuston ulkonäköä ja käytettävyyttä, mutta kun päivät koodaa töissä, niin ei vaan saa aikaiseksi. Eipä sitä ole aikaakaan, eikä ulkoasun ja käytettävyyden suunnittelu ole parhaita puoliani.</p>
<p>Projektissa opin aika paljon php:tä ja mysql:ää. Lisäksi sain paljon lisää koodausrutiinia, kun koulun harjoitustyöt oli aika pieniä vielä tuohon aikaan.</p>
<p><a title="vauvakirja.net" href="http://www.vauvakirja.net" target="_blank">http://www.vauvakirja.net</a></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Miten saapasnauha-alan käy, Alan Kay? ]]></title>
<link>http://sankariteot.wordpress.com/2008/04/24/miten-saapasnauha-alan-kay-alan-kay/</link>
<pubDate>Thu, 24 Apr 2008 06:54:07 +0000</pubDate>
<dc:creator>Tatu Siltanen</dc:creator>
<guid>http://sankariteot.wordpress.com/2008/04/24/miten-saapasnauha-alan-kay-alan-kay/</guid>
<description><![CDATA[Alan Kay (s. 1940) oli aikoinaan töissä ARPAlla, jossa tavoitteena oli ihmisen älyn vahvistaminen. Ä]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><a title="Alan Kay Wikipediassa" href="http://en.wikipedia.org/wiki/Alan_Kay">Alan Kay</a> (s. 1940) oli aikoinaan töissä <a title="ARPA Wikipediassa" href="http://en.wikipedia.org/wiki/Defense_Advanced_Research_Projects_Agency">ARPA</a>lla, jossa tavoitteena oli ihmisen älyn vahvistaminen. Älyn vahvistamiseen tarvittaisiin erityisiä laitteistoja, jotka ovat paljon parempia kuin nykyiset koneemme. Kayn mukaan sellaisten avulla voitaisiin siirtyä koulutuksesta oppimiseen ja käskyhierarkioista vertaisryhmittelyyn. Nyt se on ainoastaan todellisuus, jota ei valittu. Mutta osa siitä ehdittiin toteuttaa. Tehtiin esimerkiksi <a title="Alto Wikipediassa" href="http://en.wikipedia.org/wiki/Alto_(computer)">Alto</a>: kone jossa oli <a title="Spaces Wikipediassa" href="http://en.wikipedia.org/wiki/Spaces_(software)">Spaces</a> jo vuonna 1973, koska laite oli suunniteltu työnkulun kannalta ja niin työt oli parasta järjestää. Kopioidessan Alton Apple ja Microsoft unohtivat työnkulun ja idea on kitunut Spacesiin asti.</p>
<p>Sittemmin kävi ilmi, että älyä <a href="http://www.iltalehti.fi/">ei</a> <a title="tärkeä media" href="http://iltasanomat.fi/">tarvitakaan</a> ennakoidussa määrin. Alan Kay tietää, että toinen todellisuus on teknisesti mahdollinen, mutta hän voi vain katkerana puhista: &#8220;Luulisi, että tietojenkäsittelytiedettä opiskelevat käyvät ammattikoulua.&#8221; Tai: &#8220;Powerpoint on Voimatonpoint, koska se kuohitsee: kaikki toimiva on siirrettävä toimimattomaan muotoon, jotta sen voisi näyttää yleisölle – sehän ei ole tarpeen Squeakissa, joka toimii melkein niin kuin pitää.&#8221;</p>
<p><strong>Nykykone verrattuna Altoon:<br />
</strong></p>
<ul>
<li>kellonopeus 75-kertainen</li>
<li>kaistanleveys 150-kertainen</li>
<li>päämuisti 1100-kertainen</li>
<li>kiintolevy on kutistunut näkymättömiin</li>
<li>hinta on enää kymmenesosa Alton hinnasta</li>
</ul>
<p>Vaikuttavia numeroita!</p>
<p><strong>Jäämme jälkeen kehityksestä</strong><br />
Mooren lain mukaan tietokoneiden kapasiteetti tuplaantuu puolentoista vuoden välein. Alton syntyhetkestä lähtien on ehtinyt tapahtua 23 kaksinkertaistumista, ts. koneiden kyky on kahdeksanmiljoonakertaistunut.</p>
<p>Todellisuudessa saavutettu kasvu on kuitenkin paljon tätä pienempi. Alan Kayn omien laskelmien mukaan odotetusta kasvusta 600x on kadonnut kuin tuhka tuuleen. Butlerin mukaan luku on 1000x – eli 10 kaksinkertaistumista puuttuu; eli 15 vuotta kehityksestä on hukattu.</p>
<p>Emme voi pyörittää koodia niin kuin haluaisimme ja periaatteessa voisimme. Syy tähän ei ole tekninen vaan inhimillinen: huono suunnittelu. Yleinen uskomus on, että erikoistuneita laitteita ei pitäisi enää suunnitella, koska Mooren lain jyrätessä se on turhaa työtä. Kay sanoo: &#8220;Bullshit!&#8221;. Tuhatkertainen menetys on liikaa.</p>
<p>Kayn aikoinaan käyttämä tietokone nimeltä <a title="Burroughsin suurkoneet Wikipediassa" href="http://en.wikipedia.org/wiki/Burroughs_large_systems#B5000">Burroughs B5000 (1961)</a> sisälsi Kayn mukaan seitsemän kymmenestä kaikkien aikojen parhaasta ohjelmointi-ideasta sisäänrakennettuna suoraan rautaan. B5000:n suunnittelija päätteli, että ohjelmoijat tulevat käyttämään korkeamman tason kieliä, joten kone on optimoitava sitä varten. Nykyään tällaista rautaa joudutaan matkimaan ohjelmallisesti, koska mikrosirufirmat eivät halua sopeuttaa välineitään niiden käyttöolosuhteisiin.</p>
<p><strong><br />
Mitkä ovat Kayn kymmenen parasta ideaa?</strong></p>
<ul>
<li>Yksi lienee rekursiivisuus, koskapa Squeakissa on sellainen ominaisuus.</li>
<li>Ilmeisesti Alan Kay on <a title="Timelord Wikipediassa" href="http://en.wikipedia.org/wiki/Timelord">timelord</a>: Muiden muassa <a title="Dijkstra" href="http://en.wikipedia.org/wiki/Edsger_W._Dijkstra">Dijkstra</a> kehitti systeemeitä kuten semaphors ja monitors – mistä seurasi pullonkauloja ja lukittumista. Mutta samaan aikaan Simulan kehittäjät ja <a title="McCarthy" href="http://en.wikipedia.org/wiki/John_McCarthy_(computer_scientist)">John McCarthy</a> kehittelivät toista keinoa: pseudoaikaa! Siinä &#8220;kello käy vain silloin, kun ei ole laskettavaa&#8221;. Mitä helvettiä? Monimutkaiset toiminnot näyttävät toimivan reaaliajassa hidastumatta. Mitä helvettiä?</li>
<li>Objektiohjelmointi &#8220;Etoysin objektit tuntevat toisensa.&#8221;</li>
<li><a title="Squeak" href="http://en.wikipedia.org/wiki/Squeak">Squeakin</a> partikkelisysteemi: 1 M partikkelia @ 10fps – &#8220;Particle field programming&#8221;</li>
<li>Korkean tason ohjelmointi 20 000 riviä pitkä ohjelma pystyy toteuttamaan koko paksan.</li>
<li>&#8220;Kultainen laatikko&#8221;. Ian Plumarts (sp?)  &#38; Alex Warth (sp?): &#8220;Golden box&#8221; näyttäisi muuttavan ohjelmointikoodin mille tahansa ohjelmointikielelle konekielen kautta, jolloin ohjelman suoritus nopeutuu 20x.</li>
</ul>
<p><strong><br />
Suurimmat haasteet ohjelmoinnissa</strong></p>
<ul>
<li>Ohjelmistojen kehitys ei seuraa Mooren lakia.</li>
<li>Tavoitteena on täydellinen yhteensopivuus.</li>
<li>Ei vieläkään lasten PC:tä – se on kokemus, ei pelkkä kone. Tosin sittemmin Kay oli mukana OLPC-hankkeessa.</li>
<li>Käyttäjän ymmärrys koneen toiminnasta.</li>
<li>Opettava käyttöliittymä oppimista varten.</li>
</ul>
<p><strong><br />
Lähteet</strong></p>
<ul>
<li>Kay, Alan: How Simply and Understandably Could The &#8220;Personal Computing Experience&#8221; Be Programmed? Videotallenne. Ei päivämäärää, n. 2005-</li>
</ul>
<div id="adb-tooltip" style="z-index:1000;position:absolute;display:none;left:578px;top:782px;">
<div style="border:5px solid #c4dae8;text-transform:uppercase;font-family:arial;font-style:normal;font-variant:normal;font-weight:bold;font-size:11px;line-height:13px;background-color:white;color:#333333;margin:0;">
<div style="border:1px solid #78b3d9;text-align:left;padding:5px;">
<div>Person<span style="color:#006699;"> John McCarthy</span></div>
<div style="text-transform:none;color:#999999;line-height:14px;">Right click for SmartMenu shortcuts</div>
</div>
</div>
</div>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Löydä itsesi ohjelmakoodista]]></title>
<link>http://kohtalo.wordpress.com/2008/03/16/loyda-itsesi-ohjelmakoodista/</link>
<pubDate>Sun, 16 Mar 2008 16:09:11 +0000</pubDate>
<dc:creator>Daniel Schildt</dc:creator>
<guid>http://kohtalo.wordpress.com/2008/03/16/loyda-itsesi-ohjelmakoodista/</guid>
<description><![CDATA[Tänään tajusin kuinka helposti pystyy löytämään, että mihin avoimen lähdekoodin projekteihin on ihmi]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Tänään tajusin kuinka helposti pystyy löytämään, että mihin avoimen lähdekoodin projekteihin on ihminen osallistunut. <a href="http://www.google.com/codesearch?hl=en">Google Code Search</a> mahdollistaa vaikkapa <a href="http://www.google.com/codesearch?hl=en&#38;lr=&#38;q=%22daniel+schildt%22&#38;btnG=Search">minun nimeni</a> löytämisen joistakin tiedostoista, jotka tosin ovat olleet lähinnä muutamien eri ohjelmien tekstien kääntämiseen osallistumista.</p>
<p>Kyseisen hakukoneen käyttötarkoitukset eivät tietystikään rajoitu vain tuohon. Googlen koodihaku on kätevä työkalu etsiessä monia muitakin asioita kuten jo tehtyjä toteutuksia jostakin asiasta. Se voikin olla tarpeellinen apu jos esimerkiksi tarvitsee esimerkkejä ohjelmoinnin opettelua varten.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Ohjelmoinnin logiikkaa]]></title>
<link>http://studiovompatti.wordpress.com/2008/02/21/ohjelmoinnin-logiikkaa/</link>
<pubDate>Thu, 21 Feb 2008 09:42:29 +0000</pubDate>
<dc:creator>streg</dc:creator>
<guid>http://studiovompatti.wordpress.com/2008/02/21/ohjelmoinnin-logiikkaa/</guid>
<description><![CDATA[Ohjelmointia voi opiskella monella tapaa. Itsenäisesti, opastetusti, kirjoista, netistä, kokeilemall]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p class="MsoNormal">Ohjelmointia voi opiskella monella tapaa. Itsenäisesti, opastetusti, kirjoista, netistä, kokeilemalla, arvailemalla tai vaikka kaverilta kysymällä. Tapoja oppia ohjelmointia on monia, mutta tärkein niistä on mielestäni kuitenkin itse tekeminen ja kokeileminen. Kirjoista<span>  </span>voi nimittäin oppia syntaksin ja apinamaisesti tapoja ratkaista yleisimpiä ongelmia joita voi ohjelmoidessa tulla vastaan, mutta paraskaan kirja ei voi opettaa sitä tapaa ajatella joka vaaditaan ohjemoinnin ymmärtämiseen. Tämä toimintatapa ja ajatusmaailma ongelmien ratkaisemiseen tietokoneiden avulla syntyy vain niiden mahdollisuuksia kokeilemalla kun pyrkii itsenäisesti ratkaisemaan eteen tulleita ongelmia.</p>
<p class="MsoNormal">Ohjelmoinnissa syntaksit ja esimerkiksi metodien nimien mistaminen on siis vain erittäin pieni osa kokonaisuutta, vaikka jotkut varmasti kuvittelevatkin ohelmoimisen olevan juuri ohjelmakoodin kirjoittamisen osaamista. Syksyn aikana oli hauska seurata kuinka tietokoneiden ja ohjelmoinnin karu logiikka kuritti välillä pahaa-aavistamattomia fukseja. Itse ”luonnonmenetelmällä” kasvaneena nörttinä ei aina muista kuinka erilainen rakennuspalikkoina<span> </span>ykkösiä ja nollia käyttävä looginen kokonaisuus oikeastaan onkaan. Ainoa mikä voi oikeastaan valmistaa koodin kurimukseen on ehkä matematiikka, sillä ohjelmointi on pohjimmiltaan erilaisten ongelmien ratkomista juuri matematiikan ja logiikan keinoin.</p>
<p class="MsoNormal">Mielenkiintoisa ohjelmoinnista tekee sen erittäin yksinkertainen säännöstö. Ohjelmoidessa voi periaatteessa vain<span>  </span>tallentaa numeroita erilaisiin muuttujiin ja taulukoihin, viitata muisitissa olevaan tietoon ja suorittaa erilaisia tätä tietoa manipuolivia komentoja sarjassa ja erilaisissa loopeissa. Ohjelmoinnin onnistuessa näkee työnsä tulkoset, eli ajatustoimintansa tulokset puhtaana lopputuloksena ilman kehon fyysisiä rajoitteita. Ohjelmat tekevät juuri sitä mitä haluat niiden tekevän, tai sitten jotain aivan muuta.  Karnaveneet taas eivät lopulta useinkaan vastaa alkuperäistä mielikuvaa. Lisäksi on kierolla tavalla kiehtovaa saada ratkoa erilaisia ongelmia mahdollisimman elegantilla tavalla. Vaikka kukaan ei näe tekeekö ohjelmasi 10 vai 1000 looppia jonkun ongelman ratkaisemiseksi, tulee täydellisestä ratkaisusta silti hyvä mieli. Tavoitelähtöisys tulisi mielestäni kuitenkin aina pitää mielesä. Joillain ihmisillä ohjelmoinnista tulee nimittäin <span> </span>itse tarkoitus ja he haluavat tehdä kaiken itse, vaikka vastaava tai parempikin ratkaisu olisikin jo olemassa.</p>
<p>Ohjelmoinnin logiikka on mielestäni samoilla linjoilla niinsanotun ”insinöörilogiikan” kanssa. Ja kuten insinöörimäisyyskin, ohjelmoinnin logiikka tarttuvaa. Siihen jää koukkuun.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[ASP.Net 3.5 Extensions Preview]]></title>
<link>http://troubleshoot.wordpress.com/2007/12/10/aspnet-35-extensions-preview/</link>
<pubDate>Mon, 10 Dec 2007 09:50:16 +0000</pubDate>
<dc:creator>jro</dc:creator>
<guid>http://troubleshoot.wordpress.com/2007/12/10/aspnet-35-extensions-preview/</guid>
<description><![CDATA[ASP.Net 3.5 Extensions Preview on esiversio tulevista toiminnoista ASP.Net 3.5:n ja ADO.Net-kirjasto]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>ASP.Net 3.5 Extensions Preview on esiversio tulevista toiminnoista ASP.Net 3.5:n ja ADO.Net-kirjastoihin. Paketti sisältää ASP.Net MVC:n, ASP.Net Dynamic Datan, Silverlight-kontrollit, ADO.Net Data Servicet, Entity Frameworking ja uudet ASP.Net AJAX-kirjastot. </p>
<p>Kannattaa lukea tämä neliosainen (ja pitkä) artikkelisarja ASP.Net MVC:stä: <a title="http://weblogs.asp.net/scottgu/archive/2007/11/13/asp-net-mvc-framework-part-1.aspx" href="http://weblogs.asp.net/scottgu/archive/2007/11/13/asp-net-mvc-framework-part-1.aspx">http://weblogs.asp.net/scottgu/archive/2007/11/13/asp-net-mvc-framework-part-1.aspx</a>. </p>
<p>Lataa <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=a9c6bc06-b894-4b11-8300-35bd2f8fc908&#38;DisplayLang=en" target="_blank">ASP.Net 3.5 Extensions Preview</a>.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[The New Iteration - Mik&auml; on XAML?]]></title>
<link>http://troubleshoot.wordpress.com/2007/12/09/the-new-iteration-mik-on-xaml/</link>
<pubDate>Sun, 09 Dec 2007 07:54:39 +0000</pubDate>
<dc:creator>jro</dc:creator>
<guid>http://troubleshoot.wordpress.com/2007/12/09/the-new-iteration-mik-on-xaml/</guid>
<description><![CDATA[Microsoft on julkaissut kattavan kokoelman artikkeleja XAMLista (Extensible Application Markup Langu]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Microsoft on julkaissut kattavan kokoelman artikkeleja XAMLista (Extensible Application Markup Language). Artikkelisarjan otsikot ovat </p>
<ul>
<li><a href="http://windowsclient.net/#">Introduction</a>
<li><a href="http://windowsclient.net/#howthispaperisorganized">Organization</a>
<li><a href="http://windowsclient.net/#noteonsilverlight">Note on Silverlight</a>
<li><a href="http://windowsclient.net/#thexamlrevolution">XAML Revolution</a>
<li><a href="http://windowsclient.net/#whyuseamarkuplanguage">Why Use a Markup Language?</a>
<li><a href="http://windowsclient.net/#whatdifferentiates">Differentiating XAML </a>
<li><a href="http://windowsclient.net/#roles">Roles / Workflow</a>
<li><a href="http://windowsclient.net/#thetools">The Tools</a>
<li><a href="http://windowsclient.net/#bestdesigners">Best Practices for Designers</a>
<li><a href="http://windowsclient.net/#bestdevelopers">Best Practices for Developers</a>
<li><a href="http://windowsclient.net/#acknowledgements">Acknowledgements</a>
<li><a href="http://windowsclient.net/#footnotes">Footnotes</a>
<li><a href="http://windowsclient.net/">Return to Windows Client</a></li>
</ul>
<p>Lue kaikki artikkelit: <a title="http://windowsclient.net/wpf/white-papers/thenewiteration.aspx" href="http://windowsclient.net/wpf/white-papers/thenewiteration.aspx">http://windowsclient.net/wpf/white-papers/thenewiteration.aspx</a>. </p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Viisiosainen Silverlight-webcast alkaa]]></title>
<link>http://troubleshoot.wordpress.com/2007/12/08/viisiosainen-silverlight-webcast-alkaa/</link>
<pubDate>Sat, 08 Dec 2007 12:02:05 +0000</pubDate>
<dc:creator>jro</dc:creator>
<guid>http://troubleshoot.wordpress.com/2007/12/08/viisiosainen-silverlight-webcast-alkaa/</guid>
<description><![CDATA[Microsoft aloittaa viisiosaisen Silverlight-webcastin, joka on suunnattu kehittäjille. Ensimmäinen o]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Microsoft aloittaa viisiosaisen Silverlight-webcastin, joka on suunnattu kehittäjille. Ensimmäinen osa lähetetään 10. joulukuuta. Kaikki koulutukset ovat&#160; vaikeustasoltaan 200, joka edellyttää perustason tietämystä kuvatusta teknologiasta sekä melko kattavaa tietämystä teknologian mahdollisuuksista ja ominaisuuksista.</p>
<p>Kaikkien viiden osan aikataulut ja aiheet: </p>
<p><strong>Maanantaina 10. joulukuuta klo 0:00-1:00 Suomen aikaa:</strong></p>
<p><b><a href="http://msevents.microsoft.com/cui/WebCastEventDetails.aspx?EventID=1032359623&#38;EventCategory=4&#38;culture=en-US&#38;CountryCode=US">MSDN Webcast: Developer Series (Part 1 of 5): Introduction to Silverlight 1.1 Using Visual Studio 2008 (Level 200)</a></b></p>
<p><b>Tiistaina 11. joulukuuta, klo 0:00-1:00 Suomen aikaa: </b>
<p><b><a href="http://msevents.microsoft.com/cui/WebCastEventDetails.aspx?EventID=1032359913&#38;EventCategory=4&#38;culture=en-US&#38;CountryCode=US">MSDN Webcast: Developer Series (Part 2 of 5): Silverlight XAML and Dynamic Code (Level 200)</a></b>
<p><b>Keskiviikkona 12. joulukuuta, klo 3:00-4:00 Suomen aikaa: </b>
<p><b><a href="http://msevents.microsoft.com/cui/WebCastEventDetails.aspx?EventID=1032359917&#38;EventCategory=4&#38;culture=en-US&#38;CountryCode=US">MSDN Webcast: Developer Series (Part 3 of 5): Silverlight 1.1 Events and APIs (Level 200)</a></b>
<p><strong>Torstaina 13. joulukuuta, klo 0:00-1:00 Suomen aikaa:</strong>
<p><b><a href="http://msevents.microsoft.com/cui/WebCastEventDetails.aspx?EventID=1032359919&#38;EventCategory=4&#38;culture=en-US&#38;CountryCode=US">MSDN Webcast: Developer Series (Part 4 of 5): Working with XML (Level 200)</a></b>
<p><b>Perjantaina 14. joulukuuta, klo 0:00-1:00 Suomen aikaa:</b>
<p><b><a href="http://msevents.microsoft.com/cui/WebCastEventDetails.aspx?EventID=1032359921&#38;EventCategory=4&#38;culture=en-US&#38;CountryCode=US">MSDN Webcast: Developer Series (Part 5 of 5): Learn How to Work Alongside a Designer (Level 200)</a></b></p>
</div>]]></content:encoded>
</item>

</channel>
</rss>
