<?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>Verteksi &#187; koodaus</title>
	<atom:link href="http://verteksi.net/soks/aihe/koodaus/feed/" rel="self" type="application/rss+xml" />
	<link>http://verteksi.net</link>
	<description>Se on kiva sillo</description>
	<lastBuildDate>Thu, 17 May 2012 15:17:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Projekti Euler haastaa laskennallisilla pähkinöillä</title>
		<link>http://verteksi.net/soks/2012/01/17/projekti-euler-haastaa-laskennallisilla-pahkinoilla/</link>
		<comments>http://verteksi.net/soks/2012/01/17/projekti-euler-haastaa-laskennallisilla-pahkinoilla/#comments</comments>
		<pubDate>Tue, 17 Jan 2012 18:52:14 +0000</pubDate>
		<dc:creator>Marko</dc:creator>
				<category><![CDATA[koodaus]]></category>
		<category><![CDATA[euler]]></category>

		<guid isPermaLink="false">http://verteksi.net/?p=3662</guid>
		<description><![CDATA[<p>Työskentelen päivisin pääasiassa Java EE -sovelluskehittäjänä, mutta koska 7,5 tuntia päivässä sovelluskehitystä ei aina ole riittävästi, päätin jatkaa vuosia sitten kesken jäänyttä taivaltani <a href="http://projecteuler.net/" class="liexternal">Projekti Eulerin</a> parissa. Eli ratkaista erilaisia laskennallisia ongelmia vapaasti valittavalla ohjelmointikielellä. Tarkoituksenani on samalla opetella myös eri ohjelmointikieliä ja ohessa harjaantuvat myös matemaattiset ja algoritmilliset taidot. Kymmenen ensimmäistä ongelmaa ratkesi Pythonilla suhteellisen helposti.&#8230; <a href="http://verteksi.net/soks/2012/01/17/projekti-euler-haastaa-laskennallisilla-pahkinoilla/" class="read_more">Jatka lukemista <span class=\\\"meta-nav\\\">&#8594;</span></a></p>]]></description>
			<content:encoded><![CDATA[<p>Työskentelen päivisin pääasiassa Java EE -sovelluskehittäjänä, mutta koska 7,5 tuntia päivässä sovelluskehitystä ei aina ole riittävästi, päätin jatkaa vuosia sitten kesken jäänyttä taivaltani <a href="http://projecteuler.net/" class="liexternal">Projekti Eulerin</a> parissa. Eli ratkaista erilaisia laskennallisia ongelmia vapaasti valittavalla ohjelmointikielellä. Tarkoituksenani on samalla opetella myös eri ohjelmointikieliä ja ohessa harjaantuvat myös matemaattiset ja algoritmilliset taidot. Kymmenen ensimmäistä ongelmaa ratkesi Pythonilla suhteellisen helposti.</p>
<p><a href="http://projecteuler.net/" class="liexternal">Projekti Euler</a> tarjoaa sarjan <a href="http://projecteuler.net/problems" class="liexternal">laskennallisia ja matemaattisia ongelmia</a> tietokoneella ratkaistavaksi ja mahdollisuuden tavoitella erilaisia saavutuksia, kisailla kavereiden kanssa ja keskustella ratkaisuista muiden käyttäjien kanssa. Projekti alkoi Colin Hughesin toimesta vuonna 2001 <a href="http://mathschallenge.net/" class="liexternal">mathschallenge.net -sivuston</a> alaosiona ja on nimetty uraauurtavan sveitsiläisen matemaatikon ja fyysikon, <a href="http://en.wikipedia.org/wiki/Leonhard_Euler" rel="nofollow" class="liwikipedia">Leonhard Eulerin</a>, mukaan. Käytännössä projekti pyörii käyttäjien toimesta, jotka ehdottavat uusia pähkinöitä, ja lahjakkaiden matemaatikkojen ja ohjelmoijien tiimi muuntaa ne ratkaistaviksi ongelmiksi. Tällä hetkellä pähkinöitä on 367 ja uusia julkaistaan epäsäännöllisin välein.</p>
<p>Ratkaisemani ongelmat ja niiden koodit löytyvät <a href="https://github.com/walokra/theeuler" class="liexternal">&#8220;theeuler&#8221; -repostani GitHubista</a>. Ratkaisuista huomaa, että niissä ei ole tähdätty elegantteihin ratkaisuihin. Ehkä sitten myöhemmin. Ensimmäiset kymmenen tehtävää, jotka tähän mennessä olen suorittanut, ovat kohtuullisen helppoja ja sisältävät peruskäsitteitä alkuluvujen generoinnista suurimpaan yhteiseen jakajaan. Pythonilla pähkinät ratkesivat suhteellisen helposti, samoin Javalla. Seuraavaksi ehkä Scala ja JavaScript.</p>
<p>Pelkällä raa&#8217;alla voimalla ei ongelmia luultavasti enää alkupään jälkeen ratkaista, vaan vastauksen saaminen vapaasti asetetussa minuutin aikarajassa vaatii sekä tietoa että taitoa kehittää sopiva algoritmi. Koska ongelmat ovat matemaattisia, auttaa niiden ratkaisemiseen muun muassa matemaattisten teorioiden kuten lukuteorian tunteminen. Tuskin kuitenkaan pyyhin pölyjä hyllyssä olevasta Calculuksesta tai Betasta, sillä hakukone tarjonnee vastauksia teorioiden osalta.</p>
<p>Internetissä on tarjolla myös muita vastaavia projekteja, jotka tarjoavat ohjelmoijille keinon virkistää ja kehittää taitojaan. <a href="http://www.codecademy.com/" class="liexternal">Code Academy</a> opettaa ohjelmoimaan (JavaScriptiä) kädestä pitäen, <a href="http://codekata.pragprog.com/" class="liexternal">CodeKata</a> tarjoaa 21 harjoitusta paremmaksi ohjelmoijaksi tulemiseen koodauksen ja ajattelun kautta, Rubyn opetteluun voi seurata <a href="http://rubykoans.com/" class="liexternal">Ruby Koans -polkua</a>, logiikkaongelmia voi ratkoa <a href="https://sites.google.com/site/prologsite/prolog-problems" class="liexternal">99 Prolog ongelman</a> kautta ja <a href="http://www.pythonchallenge.com/" class="liexternal">Python Challenge</a> tarjoaa kuvavihjeellisiä pähkinöitä. Kaikilla sivustoilla on hieman oma lähestymisensä ohjelmoijien aktivoimiseen. </p>
]]></content:encoded>
			<wfw:commentRss>http://verteksi.net/soks/2012/01/17/projekti-euler-haastaa-laskennallisilla-pahkinoilla/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eclipse 3.7 Indigo on askel parempaan</title>
		<link>http://verteksi.net/soks/2011/07/06/eclipse-3-7-indigo-on-askel-parempaan/</link>
		<comments>http://verteksi.net/soks/2011/07/06/eclipse-3-7-indigo-on-askel-parempaan/#comments</comments>
		<pubDate>Wed, 06 Jul 2011 11:40:40 +0000</pubDate>
		<dc:creator>Marko</dc:creator>
				<category><![CDATA[koodaus]]></category>
		<category><![CDATA[ohjelmistot]]></category>
		<category><![CDATA[eclipse]]></category>

		<guid isPermaLink="false">http://verteksi.net/?p=3174</guid>
		<description><![CDATA[<p>Kesäisin juhannuksen ja kesälomien ohella on yksi asia, jota etenkin sovelluskehittäjät odottavat: Eclipsen uuden version julkaisu. Tänä vuonna Eclipse -kehitysympäristöstä <a href="http://www.eclipse.org/org/press-release/20110622indigo.php" class="liexternal">julkaistiin</a> 3.7 -versio, joka on koodinimetty <a href="http://eclipse.org/indigo/" class="liexternal">Indigoksi</a>. Eclipse Foundation koordinoimaan vuosittaiseen julkaisuun osallistui 62:n Eclipse -projektia, joista kehitysympäristön ekosysteemi rakentuu.</p>
<p>Indigon suurimpia uudistuksia Java-kehittäjän näkökulmasta ovat muun muassa:</p>
<ul>
<li><a href="http://www.eclipse.org/egit/" class="liexternal">Egit</a> 1.0: Git-versionhallinnan integroiminen</li>
<li><a href="http://www.eclipse.org/windowbuilder/" class="liexternal">WindowBuilder</a>: Graafisten SWT ja Swing -käyttöliittymien rakentamiseen</li>
<li><a href="http://www.eclipse.org/jubula/" class="liexternal">Jubula</a>: Java ja HTML -sovellusten funktionaalisen GUI -testausten automatisoimiseen</li>
<li><a href="http://www.eclipse.org/m2e/" class="liexternal">m2eclipse</a>: Mavenin integroiminen Eclipsen työtilaan</li>
<li><a href="http://www.eclipse.org/mylyn/new/" class="liexternal">Mylyn 3.6</a> tukee nyt Hudsonin buildien monitorointia</li>
<li><a href="http://www.eclipse.org/mpc/" class="liexternal">Eclipse Marketplace</a> tukee laajennusten lisäämistä vetämällä ja pudottamalla</li>
<li>Tuki WebKitille kaikilla alustoilla</li>
<li>Cocoa parannuksia OS X:llä</li>
</ul>
<p>Tarkempaa listausta uudistuksista voi yrittää etsiä <a href="http://wiki.eclipse.org/Eclipse/Indigo_Plan" class="liexternal">Indigon suunnitelma -wikistä</a>.&#8230; <a href="http://verteksi.net/soks/2011/07/06/eclipse-3-7-indigo-on-askel-parempaan/" class="read_more">Jatka lukemista <span class=\\\"meta-nav\\\">&#8594;</span></a></p>]]></description>
			<content:encoded><![CDATA[<p>Kesäisin juhannuksen ja kesälomien ohella on yksi asia, jota etenkin sovelluskehittäjät odottavat: Eclipsen uuden version julkaisu. Tänä vuonna Eclipse -kehitysympäristöstä <a href="http://www.eclipse.org/org/press-release/20110622indigo.php" class="liexternal">julkaistiin</a> 3.7 -versio, joka on koodinimetty <a href="http://eclipse.org/indigo/" class="liexternal">Indigoksi</a>. Eclipse Foundation koordinoimaan vuosittaiseen julkaisuun osallistui 62:n Eclipse -projektia, joista kehitysympäristön ekosysteemi rakentuu.</p>
<p>Indigon suurimpia uudistuksia Java-kehittäjän näkökulmasta ovat muun muassa:</p>
<ul>
<li><a href="http://www.eclipse.org/egit/" class="liexternal">Egit</a> 1.0: Git-versionhallinnan integroiminen</li>
<li><a href="http://www.eclipse.org/windowbuilder/" class="liexternal">WindowBuilder</a>: Graafisten SWT ja Swing -käyttöliittymien rakentamiseen</li>
<li><a href="http://www.eclipse.org/jubula/" class="liexternal">Jubula</a>: Java ja HTML -sovellusten funktionaalisen GUI -testausten automatisoimiseen</li>
<li><a href="http://www.eclipse.org/m2e/" class="liexternal">m2eclipse</a>: Mavenin integroiminen Eclipsen työtilaan</li>
<li><a href="http://www.eclipse.org/mylyn/new/" class="liexternal">Mylyn 3.6</a> tukee nyt Hudsonin buildien monitorointia</li>
<li><a href="http://www.eclipse.org/mpc/" class="liexternal">Eclipse Marketplace</a> tukee laajennusten lisäämistä vetämällä ja pudottamalla</li>
<li>Tuki WebKitille kaikilla alustoilla</li>
<li>Cocoa parannuksia OS X:llä</li>
</ul>
<p>Tarkempaa listausta uudistuksista voi yrittää etsiä <a href="http://wiki.eclipse.org/Eclipse/Indigo_Plan" class="liexternal">Indigon suunnitelma -wikistä</a>.</p>
<p>Suunnitelluista uudistuksista Java 7 -tukea jouduttiin siirtämään, koska siihen liittyvät speksit olivat saatavilla liian myöhään ja virallinen julkistaminen (28.7.2011) on Indigon julkaisun jälkeen. Vastahan tässä Enterprise-sovellusten osalta (lue Oraclen palikat) päästiin Java 6:sta käyttämään, joten eipä sillä niin tarvetta.</p>
<p>Uusista ominaisuuksista WindowBuilder kuulostaa kätevältä, vaikka onneksi ei GUI-palikoita tarvitse rakennella. Nyt käsin tunkkaamisen asemesta elementtejä voi lähestyä kuten Netbeansin työkalujen kanssa on jo kauan voinut: valitse komponentti ja tiputa paikoilleen. WindowBuilderissa on kaksisuuntainen koodigenerointi, joka mahdollistaa yhteentoimivuuden käsinmuokatun koodin kanssa, joten ehkä se ei tuota yhtä sotkuista koodia kuin koodigenerointi yleensä. </p>
<p>Kokonaisuutena Eclipse 3.7 Indigo on jälleen askel parempaan kehitysympäristöön, vaikka mitään suuria, maata järisyttäviä, uudistuksia ei nähty, kuten ei <a href="http://verteksi.net/soks/2010/07/14/eclipse-3-6-helioksen-myota-kehitysymparisto-on-taas-parempi/" class="liinternal">viime vuonna Helioksenkaan</a> osalta (lukuun ottamatta Marketplacea) tai pari vuotta sitten <a href="http://verteksi.net/soks/2008/06/27/eclipse-34-ganymede-tuo-lukuisia-pienia-uudistuksia/" class="liinternal">Ganymedessä</a>, enkä edes muista mitä uudistuksia Galileo vuosi sitten toi. Saa nähdä vieläkö Eclipse hajonnee ikävän herkästi ja temppuilee. Rohkeat voivat koittaa vanhan Eclipse asennuksen importoimista Indigoon, joka yrittää asentaa vanhassa olleet laajennukset uuteen.</p>
]]></content:encoded>
			<wfw:commentRss>http://verteksi.net/soks/2011/07/06/eclipse-3-7-indigo-on-askel-parempaan/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eclipse 3.6 Helioksen myötä kehitysympäristö on taas parempi</title>
		<link>http://verteksi.net/soks/2010/07/14/eclipse-3-6-helioksen-myota-kehitysymparisto-on-taas-parempi/</link>
		<comments>http://verteksi.net/soks/2010/07/14/eclipse-3-6-helioksen-myota-kehitysymparisto-on-taas-parempi/#comments</comments>
		<pubDate>Wed, 14 Jul 2010 16:30:41 +0000</pubDate>
		<dc:creator>Marko</dc:creator>
				<category><![CDATA[koodaus]]></category>
		<category><![CDATA[ohjelmistot]]></category>
		<category><![CDATA[eclipse]]></category>

		<guid isPermaLink="false">http://verteksi.net/?p=2533</guid>
		<description><![CDATA[<p>Eclipsestä julkaistiin jokin aika sitten 3.6-versio eli tällä kertaa tuttavallisemmin <a href="http://www.eclipse.org/helios/" class="liexternal">Helios</a>, joka jälleen tekee kehitysympäristöstä asteen paremman. Suuria muutoksia ei hyväksi havaittuun kaavaan ole tehty, vaan uudistuksina löytyy pieniä, mutta hyödyllisiä lisäominaisuuksia. Tarkemman listauksen uusista ominaisuuksista löytää Helioksen About-sivulta What&#8217;s New -osiosta (ja netistä: <a href="http://help.eclipse.org/helios/topic/org.eclipse.jdt.doc.user/whatsNew/jdt_whatsnew.html" class="liexternal">JDT</a> ja <a href="http://help.eclipse.org/helios/topic/org.eclipse.platform.doc.user/whatsNew/platform_whatsnew.html" class="liexternal">platform</a>), mutta tässä muutamia  poimintoja.</p>
<ul>
<li>Lisäosien asennus <a href="http://marketplace.eclipse.org/" class="liexternal">Eclipse Marketplacesta</a>: Tarvittavien lisäosien asennus on nyt helpompaa Eclipsen sisältä löytyvän Marketplacen kautta.</li>&#8230; <a href="http://verteksi.net/soks/2010/07/14/eclipse-3-6-helioksen-myota-kehitysymparisto-on-taas-parempi/" class="read_more">Jatka lukemista <span class=\\\"meta-nav\\\">&#8594;</span></a></ul>]]></description>
			<content:encoded><![CDATA[<p>Eclipsestä julkaistiin jokin aika sitten 3.6-versio eli tällä kertaa tuttavallisemmin <a href="http://www.eclipse.org/helios/" class="liexternal">Helios</a>, joka jälleen tekee kehitysympäristöstä asteen paremman. Suuria muutoksia ei hyväksi havaittuun kaavaan ole tehty, vaan uudistuksina löytyy pieniä, mutta hyödyllisiä lisäominaisuuksia. Tarkemman listauksen uusista ominaisuuksista löytää Helioksen About-sivulta What&#8217;s New -osiosta (ja netistä: <a href="http://help.eclipse.org/helios/topic/org.eclipse.jdt.doc.user/whatsNew/jdt_whatsnew.html" class="liexternal">JDT</a> ja <a href="http://help.eclipse.org/helios/topic/org.eclipse.platform.doc.user/whatsNew/platform_whatsnew.html" class="liexternal">platform</a>), mutta tässä muutamia  poimintoja.</p>
<ul>
<li>Lisäosien asennus <a href="http://marketplace.eclipse.org/" class="liexternal">Eclipse Marketplacesta</a>: Tarvittavien lisäosien asennus on nyt helpompaa Eclipsen sisältä löytyvän Marketplacen kautta. Hakusana ja pari kliksautusta, entisen update siten syöttelyn asemasta. Harmillisesti kaikki laajennukset eivät uutta tapaa vielä tue.</li>
<li>Web Tools Project sai tuen Java EE 6 -teknologioille kuten  Servlet 3.0, JSF 2.0, JPA 2.0 ja EJB 3.1. (Jos niitä vielä pystyisi oikeasti toteutuksessä käyttämäänkin)</li>
<li>Formatoinnin kontrollointi: <code>Window > Preferences > Java > Code Style > Formatter > On/Off Tags</code> -kohdasta voi nyt kytkeä päälle annotaation, jolla voi disabloida koodin formatoinnin haluamalleen koodiblokille</li>
<li>&#8220;rawtypes&#8221; -merkki @SuppressWarnings annotaatiolle: Kääntäjä tekee eron ilmoitettujen varoitusten osalta raw typen käytön ja geneeristen unchecked -operaatioiden osalta.</li>
<li>Export All: Formatterin asetuksista voi nyt viedä kaikki käyttäjän määrittelemä asetukset, ja ne voidaan tuoda kerralla. Kätevää, kun Eclipse tulee muutamia kertoja vuodessa asennettua uudestaan.</li>
<li>Pakettien nimien lyhenteet: Java-näkymissä voi lyhentää kustomoitavilla säännöillä pakettien nimet. esim. org.eclipse.ui={UI}, org.eclipse.ui.texteditor={T} ja org.eclipse.ui.internal.texteditor=[iT]. (<code>Preferences > Java > Appearance > Abbreviate package names)</code></li>
<li>Lokaalin historian tyhjennyksen voi disabloida: Lokaalin historian kokoa siivotaan aina Eclipsen sammutuksen yhteydessä, mutta sen voi nyt disabloida. Tällöin historian koko kasvaa rajattomasti. (<code>Preferences > General > Workspace > Local History</code>)</li>
</ul>
<p>Uusi Eclipse on nyt ollut muutaman viikon käytössä ja ihan toimivalta se edelleen vaikuttaa. Kenties hieman myös nopeampi kuin edellinen, ta sitten vain uusi asennus luo hyvää mielikuvaa. Asennuksessa tosin taas meni aikaa säätäessä kaikki kuten aikaisemmin ja Marketplace auttoi hieman lisäosien suhteen, mutta turhan vähän. Samalla vaihdoin Subclipsen käyttöön, joten Maven2-projekien tuonti versionhallinnasta oli kätevämpää. Laitoinpa samalla myös Atlassian Connectorit, jotka vaikuttavat ihan käteviltä. JBossin työkaluista piti tosin asentaa Nightly Build -versiot.</p>
<div class="img-center">
<a href="http://verteksi.net/files/2010/07/eclipse3-6_package-abbreviations-on-e1279123253503.png" class="thickbox" rel="eclipse-3-6" title="pakettien nimet voi kätevästi lyhentää"><img class="colorbox-2533"  src="http://verteksi.net/files/2010/07/eclipse3-6_package-abbreviations-on-e1279123253503-150x150.png" alt="" title="eclipse3-6_package-abbreviations-on"/></a> <a href="http://verteksi.net/files/2010/07/eclipse3-6_formatter-disabling-enabling-tags-preference.png" title="koodin formatoinnin voi nyt estää haluamalleen blokille" class="thickbox" rel="eclipse-3-6"><img class="colorbox-2533"  src="http://verteksi.net/files/2010/07/eclipse3-6_formatter-disabling-enabling-tags-preference-150x150.png" alt="" title="eclipse3-6_formatter-disabling-enabling-tags-preference"/></a> <a href="http://verteksi.net/files/2010/07/eclipse3-6_localHistoryLimitSize.png" title="lokaalin historian koon voi antaa kasvaa" class="thickbox" rel="eclipse-3-6"><img class="colorbox-2533"  src="http://verteksi.net/files/2010/07/eclipse3-6_localHistoryLimitSize-150x150.png" alt="" title="eclipse3-6_localHistoryLimitSize"/></a>
</div>
]]></content:encoded>
			<wfw:commentRss>http://verteksi.net/soks/2010/07/14/eclipse-3-6-helioksen-myota-kehitysymparisto-on-taas-parempi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pitäisikö Web-sovelluksilla olla yhtenäinen tyyli ja logiikka?</title>
		<link>http://verteksi.net/soks/2010/05/08/pitaisiko-web-sovelluksilla-olla-yhtenainen-tyyli-ja-logiikka/</link>
		<comments>http://verteksi.net/soks/2010/05/08/pitaisiko-web-sovelluksilla-olla-yhtenainen-tyyli-ja-logiikka/#comments</comments>
		<pubDate>Sat, 08 May 2010 11:53:47 +0000</pubDate>
		<dc:creator>Marko</dc:creator>
				<category><![CDATA[koodaus]]></category>
		<category><![CDATA[sovelluskehitys]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[käyttöliittymä]]></category>

		<guid isPermaLink="false">http://verteksi.net/?p=2364</guid>
		<description><![CDATA[<p>Nykyään suuri osa sovelluksista toimii Web-selaimissa ja sovellusten osalta on havaittavissa siirtymää työpöydältä Web-sovelluksiksi, jolloin aikaisemmin suhteellisen samanlailla toimivat ja näyttävät käyttöliittymät muuttuvat monimuotoisiksi. Web-maailmassa ei ole yhtenäistä tapaa toteuttaa asioita, vaan jokainen suunnittelija tekee kuten parhaimmakseen näkee ja sovellusten ulkoasut vaihtelevat suuresti. Perinteisten työpöytäsovellusten osalta eri sovellukset toimivat suurin piirtein samoilla periaatteilla ja toimintopainikkeet sekä näyttävät samoilta että löytyvät tutuista paikoista.&#8230; <a href="http://verteksi.net/soks/2010/05/08/pitaisiko-web-sovelluksilla-olla-yhtenainen-tyyli-ja-logiikka/" class="read_more">Jatka lukemista <span class=\\\"meta-nav\\\">&#8594;</span></a></p>]]></description>
			<content:encoded><![CDATA[<p>Nykyään suuri osa sovelluksista toimii Web-selaimissa ja sovellusten osalta on havaittavissa siirtymää työpöydältä Web-sovelluksiksi, jolloin aikaisemmin suhteellisen samanlailla toimivat ja näyttävät käyttöliittymät muuttuvat monimuotoisiksi. Web-maailmassa ei ole yhtenäistä tapaa toteuttaa asioita, vaan jokainen suunnittelija tekee kuten parhaimmakseen näkee ja sovellusten ulkoasut vaihtelevat suuresti. Perinteisten työpöytäsovellusten osalta eri sovellukset toimivat suurin piirtein samoilla periaatteilla ja toimintopainikkeet sekä näyttävät samoilta että löytyvät tutuista paikoista.</p>
<p><a href="http://www.usabilitypost.com/2009/08/24/unified-set-of-styles-for-web-interfaces/" class="liexternal">Usability Post kysyykin, pitäisikö Web-sovelluksilla olla yhtenäinen käyttöliittymä</a>, eli ulkoasu näyttäisi ja toimisi visuaalisesti samoilla periaatteilla, kuten työpöytäsovelluksissakin eri käyttöjärjestelmissä sovellukset ovat usein yhtenäisiä keskenään. Tutut toiminnot näyttäisivät samoilta eri Web-sovellusten välillä, kun nyt painikkeiden ja komponenttien ulkoasut vaihtelevat enemmän tai vähemmän eri sovellusten välillä.</p>
<p>On totta, että sitä toivoisi sovellusten toimivan edes suurin piirtein samoilla periaatteilla, ettei aina tarvitsisi arpoa miten asiat nyt tässä toimivatkaan, mutta yleisesti ottaen on vaikea nähdä, että eri Web-sovellukset näyttäisivät peruspiirteiltään samanlaisilta, toimisivat samalla tavalla tai käyttäisivät samoja komponentteja. Web on visuaalisesti toinen maailma verrattuna työpöytäsovelluksiin, joka myös heijastuu sovellusten toimintoihin. Webin osalta ei oikeastaan odoteta, että eri sovellukset näyttäisivät yhtenäisiltä, vaan ollaan jo totuttu, että jokaisen sovelluksen kohdalla pitää aina oppia uudestaan perustoiminnot ja logiikka. Onneksi suunnittelijat tekevät sovellukset usein helposti opittaviksi ja joissa asiat toimivat kuten niiden olettaa toimivan. Tai ainakin näin haluaisi uskoa, sillä todellisuus on välillä aivan jotain muuta.</p>
<p>Kun asiaa ajatellaan pienemmällä skaalalla, olisi sovelluskehittäjällä hyvä olla karkealla tasolla välineet yhtenäisen käyttöliittymän toteuttamiseksi, ainakin saman asiakkaan sovellusten osalta. Toki usein saman kehittäjän sovelluksissa toistuvat samat ratkaisut ja uudestaan käytettävät palikat, joilla yhtenäisyyttä syntyy kuin itsestään. Miksi keksiä asioita uudestaan, kun ne ovat jo kerran toteutettu, ellei asiaa keksi &#8220;paremmin&#8221;. Suunnittelun ja ratkaisujen avuksi löytyy myös apuvälineitä, joilla visuaalista ilmettä ja sovellusmaista toimintaa voidaan tukea.  </p>
<p>Webissä ei ole yhtä ja oikeaa tapaa toteuttaa asioita, vaan monet ratkaisut ovat yhtä hyviä. Mallia voi ottaa esimerkiksi useilta suunnittelumalli-sivustoilta kuten <a href="http://ui-patterns.com/" class="liexternal">UI Patterns</a>, <a href="http://developer.yahoo.com/ypatterns/" class="liexternal">YPatterns</a> ja <a href="http://uipatternfactory.com/" class="liexternal">UI Pattern Factory</a>. Lisäksi erilaiset komponenttikehykset kuten <a href="http://jqueryui.com/" class="liexternal">JQuery UI</a> ja Java EE -maailmassa <a href="http://livedemo.exadel.com/richfaces-demo/index.jsp" class="liexternal">RichFaces</a> ja <a href="http://www.primefaces.org/" class="liexternal">PrimeFaces</a> tarjoavat omia ehdotuksiaan toiminnoille. Vaihtoehtoja on monia ja lopputulos on usein eri ratkaisujen yhdistelemistä, jolloin sovellus koostuu useista erilaisista käyttöliittymäratkaisuista. Harvoin eri valmiiden ratkaisujen mallit toimivat suoraan omiin tarpeisiin nähden ja niitä joudutaan vähintäänkin visuaalisen ilmeen osalta virittelemään.</p>
<p>Koska Web perustuu pohjimmiltaan HTML:ään ja CSS:ään, voidaan valmiita komponentteja yleensä muokata ulkoasultaan tarpeiden mukaan ja soveltaa toisaalla havaittuja hyviä asioita. Esimerkiksi Web-sovelluksen käyttöliittymää varten voidaan soveltaa <a href="http://cappuccino.org/" class="liexternal">Cappucino</a> tai <a href="http://www.sproutcore.com/" class="liexternal">Sproutcore</a> -kehysten Creative Commons Attribution Share-alike -lisenssin alaisuudessa olevia Ace- ja Aristo-teemoja, jotka näyttävät siisteiltä ja tarjoavat yhtenäisen ulkoasun eri komponenttien välille.</p>
<p>Molemmat teemat näyttävät nykyaikaisilta ja niillä on enemmän yhteistä kuin eroa, jonka voi todeta <a href="http://www.antipode.ca/2009/themes-sproutcore-vs-cappuccino/" class="liexternal">lyhyestä vertailusta</a>. Enemmän teemojen toiminnasta saa selville, kun vierailee teemojen demosivuilla. <a href="http://demo.sproutcore.com/sample_controls/" class="liexternal">Sproutcoren Ace-teemasta</a> on havaittavissa yhtäläisyyksiä OS X:n Aqua-teemaan ja SproutCoren kehitys onkin Applen sponsoroimaa. <a href="http://cappuccino.org/aristo/showcase/" class="liexternal">Cappucinon Aristo-teema</a> ei ole niin silmiinpistävä kuin Ace, keskittyy näyttämään hyvältä sekä Windowsissa että OS X:ssä ja sopii paremmin vakavampiin sovelluksiin.</p>
<p>Molempien teemojen soveltuvuus omaan käyttötarkoitukseen riippuu toteutettavasta sovelluksesta, mutta niistä voi ainakin ottaa hieman mallia, miltä peruskomponentit voisivat näyttää. Cappucinon Aristo-teema on hieman helpommin otettavissa testiin ja se on saatavissa <a href="http://github.com/280north/aristo/tree/master" class="liexternal">PSD -kuvina</a> ja kolmannen osapuolen <a href="http://github.com/maccman/aristo/tree/master" class="liexternal">CSS 3 toteutuksena</a>. Sproutcoren Ace-teema löytyy vastaavasti vain <a href="http://github.com/sproutit/sproutcore/tree/master/themes/standard_theme" class="liexternal">sprite-kuvina</a>, joten teemaus pitää hoitaa itse loppuun, mutta se tarjoaa kattavamman valikoiman eri komponentteja ja malleja.</p>
<p>Ikävä tosiasia valitettavasti on, että sovelluksen ulkoasun eteen joudutaan aina askartelemaan enemmän tai vähemmän. Esimerkiksi jos sovelluksessa otetaan käyttöön jokin valmis komponentti, pitää sen ulkoasua joko muokata vastaamaan muuta sovellusta, tai käyttää valittua kirjastoa kaikilta osin jokaisen komponentin kanssa, jolloin eroavaisuuksia on mahdollisimman vähän. Valituista ratkaisuista riippuen tämä on enemmän tai vähemmän helppoa. Esimerkiksi JQuery UI:n komponenteille voi määritellä haluamansa ulkoasun kätevästi <a href="http://jqueryui.com/themeroller/" class="liexternal">Theme Rollerin</a> avulla, mutta vastaavasti samanlainen teemanrakentaja tarvittaisiin myös <a href="http://www.jboss.org/richfaces" class="liexternal">RichFaces-komponenteille</a>, joiden teemaus on suhteellisen työlästä ja osittain arpapeliä. Muutenkin aina tuntuu, että useat valmiit ratkaisut eivät toimi kuten niiden haluaisi toimivan, eikä niitä usein voi myöskään helposti muokata riittävällä tasolla.</p>
<p>Kaikenkaikkiaan Web-käyttöliittymä voi näyttää upealta, jos siihen viitsii panostaa, mutta Web-sovelluksilla ei mielestäni tarvitse olla yhtenäisiä periaatteita. Web on monimuotoinen ja asiat saavat toimia, kuten ne parhaimmikseen näkee, kunhan ne silti toimivat loogisesti ja ymmärrettävästi. Toki yhtenäiset ratkaisut helpottavat käyttäjän elämää. Toisaalta Webin käyttöliittymät eivät helposti vertaudu perinteisiin työpöytäsovelluksiin, ainakaan nykyisillä teknologioilla ennen HTML5:n ja CSS 3:n yleistymistä, joten sallittakoon niille myös omat tyylinsä, kunhan ne ovat hyvällä maulla toteutettuja.</p>
<p>Pitääkin tässä edistää työlistalle hautautunutta tehtävää jalostaa omaa visuaalisesti yksinkertaista komponettiteemaa eteenpäin ja rakentaa vastaava teemaus myös RichFaces-komponenteille, jolloin asiakkaan sovellus saisi vielä nykyistä yhtenäisemmän ulkoasun.</p>
]]></content:encoded>
			<wfw:commentRss>http://verteksi.net/soks/2010/05/08/pitaisiko-web-sovelluksilla-olla-yhtenainen-tyyli-ja-logiikka/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kumiankka-metodi debuggauksessa</title>
		<link>http://verteksi.net/soks/2009/11/26/kumiankka-metodi-debuggauksessa/</link>
		<comments>http://verteksi.net/soks/2009/11/26/kumiankka-metodi-debuggauksessa/#comments</comments>
		<pubDate>Thu, 26 Nov 2009 18:40:38 +0000</pubDate>
		<dc:creator>Marko</dc:creator>
				<category><![CDATA[koodaus]]></category>

		<guid isPermaLink="false">http://verteksi.net/soks/?p=1574</guid>
		<description><![CDATA[<p>Ohjelmoinnissa koodin kirjoittamisen lisäksi on tärkeää osata debugata koodia, eli selvittää mistä ilmennyt ongelma johtuu ja miten se ratkaistaan. Ongelmanselvitykseen on olemassa erilaisia välineitä, mutta yksinkertaisimmillaan se voi olla esimerkiksi kumiankka, kuten <a href="http://lists.ethernal.org/oldarchives/cantlug-0211/msg00174.html" class="liexternal">Canterbury&#160;Linux&#160;User&#8217;s&#160;Groupin&#160;postituslistalla</a> asia ilmaistiin.</p>
<p>Kumiankka-metodi debuggauksessa menee seuraavasti:</p>
<ol>
<li>Kerjää, lainaa, varasta, osta, valmista tai muuten hanki kumiankka (amme-tyyppiä)</li>
<li>Aseta kumiankka pöydälle ja kerro, että tulet kohta käymään läpi hieman koodia sen kanssa.</li>&#8230; <a href="http://verteksi.net/soks/2009/11/26/kumiankka-metodi-debuggauksessa/" class="read_more">Jatka lukemista <span class=\\\"meta-nav\\\">&#8594;</span></a></ol>]]></description>
			<content:encoded><![CDATA[<p>Ohjelmoinnissa koodin kirjoittamisen lisäksi on tärkeää osata debugata koodia, eli selvittää mistä ilmennyt ongelma johtuu ja miten se ratkaistaan. Ongelmanselvitykseen on olemassa erilaisia välineitä, mutta yksinkertaisimmillaan se voi olla esimerkiksi kumiankka, kuten <a href="http://lists.ethernal.org/oldarchives/cantlug-0211/msg00174.html" class="liexternal">Canterbury&nbsp;Linux&nbsp;User&#8217;s&nbsp;Groupin&nbsp;postituslistalla</a> asia ilmaistiin.</p>
<p>Kumiankka-metodi debuggauksessa menee seuraavasti:</p>
<ol>
<li>Kerjää, lainaa, varasta, osta, valmista tai muuten hanki kumiankka (amme-tyyppiä)</li>
<li>Aseta kumiankka pöydälle ja kerro, että tulet kohta käymään läpi hieman koodia sen kanssa.</li>
<li>Selitä ankalle mitä koodisi pitäisi tehdä ja syvenny yksityiskohtiin kertomalla asiat rivi riviltä.</li>
<li>Jossain vaiheessa tulet kertomaan ankalle mitä teet seuraavaksi ja sitten tajuat, että todellisuudessa se ei ole sitä, mitä oikeasti teet. Ankka istuu seesteisenä, onnellisena siitä tiedosta, että on auttanut sinua.</li>
</ol>
<p>Toimii joka kerta, ja jos kumiankkaa ei ole saatavilla, voi korvikkeena käyttää myös toista henkilöä, joka istuu vieressäsi ja kuuntelee. Tosin, jos työskentelet avokonttorissa ja selität asioita kumiankalle, kannattaa se tehdä ääneti ajatuksissa, sillä muuten voit saada osaksesi outoja katseita. Englanniksi asia tunnetaan nimellä <a href="http://en.wikipedia.org/wiki/Rubber_duck_debugging" rel="nofollow" class="liwikipedia">Rubber Duck Debugging</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://verteksi.net/soks/2009/11/26/kumiankka-metodi-debuggauksessa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vaadin tarjoaa Swingiä Web-sovellusten kehitykseen</title>
		<link>http://verteksi.net/soks/2009/11/21/vaadin-tarjoaa-swingia-web-sovellusten-kehitykseen/</link>
		<comments>http://verteksi.net/soks/2009/11/21/vaadin-tarjoaa-swingia-web-sovellusten-kehitykseen/#comments</comments>
		<pubDate>Sat, 21 Nov 2009 15:33:41 +0000</pubDate>
		<dc:creator>Marko</dc:creator>
				<category><![CDATA[koodaus]]></category>
		<category><![CDATA[sovelluskehitys]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[javaee]]></category>

		<guid isPermaLink="false">http://verteksi.net/soks/?p=1336</guid>
		<description><![CDATA[<p>Web-sovellusten kehitys Javalla on täynnä erilaisten frameworkkien kuten Strutsin, Springin ja JSF:n hyödyntämistä, joista jokaisessa on hyvät ja huonot puolensa ja varsinainen toteutus on usein sekoitus HTML-merkkausta ja koodia. Java EE -sovelluskehitystä voi kuitenkin katsella myös hieman erilaisesta näkökulmasta: Suomalainen IT Mill on rakentanut kokonaisuuden nimeltä <a href="http://vaadin.com/" class="liexternal">Vaadin</a>, joka tuo Javan Swing -maailman Web-sovelluksiin. Lopputuloksena on sovelluskehys, jossa HTML:n koodaaminen unohdetaan lähes täysin ja sovellusta toteutetaan samalla periaatteilla kuin työpöytäsovelluksia, joka on kätevää, jos tykkää Java Swing -tyylisestä sovelluskehityksestä.&#8230; <a href="http://verteksi.net/soks/2009/11/21/vaadin-tarjoaa-swingia-web-sovellusten-kehitykseen/" class="read_more">Jatka lukemista <span class=\\\"meta-nav\\\">&#8594;</span></a></p>]]></description>
			<content:encoded><![CDATA[<p>Web-sovellusten kehitys Javalla on täynnä erilaisten frameworkkien kuten Strutsin, Springin ja JSF:n hyödyntämistä, joista jokaisessa on hyvät ja huonot puolensa ja varsinainen toteutus on usein sekoitus HTML-merkkausta ja koodia. Java EE -sovelluskehitystä voi kuitenkin katsella myös hieman erilaisesta näkökulmasta: Suomalainen IT Mill on rakentanut kokonaisuuden nimeltä <a href="http://vaadin.com/" class="liexternal">Vaadin</a>, joka tuo Javan Swing -maailman Web-sovelluksiin. Lopputuloksena on sovelluskehys, jossa HTML:n koodaaminen unohdetaan lähes täysin ja sovellusta toteutetaan samalla periaatteilla kuin työpöytäsovelluksia, joka on kätevää, jos tykkää Java Swing -tyylisestä sovelluskehityksestä.</p>
<p>Vaadinta voi lyhyesti kuvata sanomalla sen olevan Swing-koodausta sekä hyvässä että pahassa. Web-sovelluksen toteutus Vaatimella on suhteellisen helppoa, mutta toisaalta se myös Swingin tapaan rajoittaa käyttöliittymäsuunnittelua. Toteutuksessa HTML:n ja komponenttien säätäminen jää pois, jolloin toteuttajat voivat keskittyä varsinaiseen toimintaan kuuntelijoiden ja tapahtumien parissa. Kokonaisuutena kehitys on tavallaan selkeämpää kuin esimerkiksi JSF:llä, jossa toiminnot hajoavat sekä sivuille että Java-luokkiin ja erilaisia säädettäviä XML:iä on useita. Totuus ei tietenkään ole aivan näin yksinkertaista, mutta melkein.</p>
<p>Sovelluskehityksen osalta Eclipselle on saatavilla WYSIWYG-editori ja sovelluksen debuggaus onnistuu normaalisti debug-moodissa ja käyttöliittymän osalta Firefoxin Firebug-lisäosalla, eli sen osalta ei ole mitään ihmeellistä. Käytettävissä on <a href="http://demo.vaadin.com/sampler/" class="liexternal">useita erilaisia komponentteja</a> ja hyvä dokumentointi, joilla toimintoja rakentaa. <a href="http://vaadin.com/tutorial" class="liexternal">Tutoriaalien</a> avulla pääsee helposti alkuun ja näkee mistä asiassa on kyse. Vaadin on lisensoitu avoimen lähdekoodin Apache License versio 2.0 -lisenssillä, joten tarvittaessa sen laajentaminen ja bugien korjaaminen on mahdollista. Saatavilla on myös maksullista tukea ja palveluita.</p>
<p>Vaadin perustuu <a href="http://code.google.com/intl/fi/webtoolkit/" class="liexternal">Google Web Toolkitin</a> päälle, jota käytetään selaimelle piirtämiseen ja GWT:hen verrattuna Vaadin-sovellukset pyörivät palvelinpuolella, kun GWT on selainpuolen sovellus. Vaadin-sovellus on paljolti sidottu JavaScriptiin ja siinä on mielestäni myös sen heikoin lenkki, sillä suorituskyvyllisesti käytetty lähestymistapa ei ole kovin tehokas. Etenkin monimutkaisilla käyttöliittymäkomponenteilla ja ulkoasuilla selaimen JavaScript-suorituskyky tulee äkkiä vastaan, vaikkakin tällä saralla on etenkin Googlen Chrome ja Safari kunnostautuneet. Muuten komponentit toimivat hyvin riippumatta käytettävästä selaimesta.</p>
<p>Vaikka Vaadin tavallaan yksinkertaistaa rikkaiden Internet sovellusten (RIA) tekemistä, pidän itse enemmän perinteisestä Java Server Facesiin (JSF) pohjautuvasta Web-kehityksestä. JSF:n kanssa käyttöliittymän koodi on erikseen HTML:ssä, johon on lisätty tarvittavat sidokset ja dynaamisuutta. Tietenkin tässäkin tavassa on omat ongelmansa, etenkin kun JSF 1.2 ja käyttöliittymäkomponentit ovat mitä ovat. Ehkä taustani Web-koodaajana vaikuttaa siihen, että pidän enemmän siitä, että pääsen helpommin näkemään ja säätämään käyttöliittymää HTML-tasolta, eli tekemään juuri sitä, mistä &#8220;perinteiset&#8221; Java-koodarit eivät tykkää. Ainakin saan tarkalleen mitä haluan, jos osaan sen HTML:llä, CSS:llä ja käytössä olevilla komponenteilla toteuttaa.</p>
<p>Vaadin on kuitenkin kätevä tapa toteuttaa Web-sovelluksia ja sillä saa kohtalaisen nopeasti aikaan hyvän näköistä jälkeä helposti. Toisaalta kuten kaikissa sovelluskehyksissä, on myös Vaatimessa asioita, jotka aiheuttavat kehittäjälle harmaita hiuksia. Nimi <a href="http://vaadin.com/forum/-/message_boards/message/19114" class="liexternal">Vaadin tarkoittaa</a> myös naaraspuolista poroa ja sanaa voidaan käyttää esimerkiksi lauseessa &#8220;Vaadin parempia käyttöliittymiä!&#8221;. </p>
<p>Näköjään seuraava <a href="http://vaadin.com/meetup" class="liexternal">Vaadin Developer Meetup</a> pidetään 3.12.2009 Pitäjänmäellä Helsingissä Logican tiloissa (ilmoittautuminen 26.11.2009 mennessä).</p>
<p>Esimerkkinä silloin vielä IT Mill Toolkit -nimellä tunnetulla Vaadin-kehyksellä hahmoteltu sähköpostisovellus:</p>
<div class="img-center">
<a href="/files/2009/tech/itmill_imail_1c.png" class="thickbox" title="" rel="vaadin"><img class="colorbox-1336"  src="/files/2009/tech/itmill_imail_1c_thb.png" alt="iMail" /></a> <a href="/files/2009/tech/itmill_imail_2c.png" class="thickbox" rel="vaadin"><img class="colorbox-1336"  src="/files/2009/tech/itmill_imail_2c_thb.png" alt="iMail" /></a>
</div>
]]></content:encoded>
			<wfw:commentRss>http://verteksi.net/soks/2009/11/21/vaadin-tarjoaa-swingia-web-sovellusten-kehitykseen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mac OS X ja dynaamisten kirjastojen käyttäminen</title>
		<link>http://verteksi.net/soks/2009/07/29/mac-os-x-ja-dynaamisten-kirjastojen-kayttaminen/</link>
		<comments>http://verteksi.net/soks/2009/07/29/mac-os-x-ja-dynaamisten-kirjastojen-kayttaminen/#comments</comments>
		<pubDate>Wed, 29 Jul 2009 20:07:54 +0000</pubDate>
		<dc:creator>Marko</dc:creator>
				<category><![CDATA[aargh]]></category>
		<category><![CDATA[koodaus]]></category>
		<category><![CDATA[mac]]></category>

		<guid isPermaLink="false">http://verteksi.net/?p=2029</guid>
		<description><![CDATA[<p>Olen viime viikkojen aikana yrittänyt saada <a href="https://addons.mozilla.org/fi/firefox/addon/3826" class="liexternal">Firefoxin mozvoikko-lisäosaa</a> toimimaan asiallisesti Mac OS X:ssä ja teoriassa lisäosa toimiikin. Ainoana negatiivisena puolena on, että se vaatii kirjastojen sijoittamisen hakemistoon, jonne ne kääntäessä asennettiin, eli esimerkiksi <em>/usr/local/lib</em> -hakemistoon. Linuxissa ja Windowsissa lisäosa toimii, kunhan vaadittavat kirjastot löytyvät lisäosan sisään leivottuina.</p>
<p>Mac OS X:ssä dynaamiset kirjastot toimivat hieman eri lailla ja <a href="http://developer.apple.com/documentation/DeveloperTools/Conceptual/DynamicLibraries/Articles/UsingDynamicLibraries.html#//apple_ref/doc/uid/TP40002182-SW13" class="liexternal">haluavat täydellisen polun asennushakemistoonsa</a>.&#8230; <a href="http://verteksi.net/soks/2009/07/29/mac-os-x-ja-dynaamisten-kirjastojen-kayttaminen/" class="read_more">Jatka lukemista <span class=\\\"meta-nav\\\">&#8594;</span></a></p>]]></description>
			<content:encoded><![CDATA[<p>Olen viime viikkojen aikana yrittänyt saada <a href="https://addons.mozilla.org/fi/firefox/addon/3826" class="liexternal">Firefoxin mozvoikko-lisäosaa</a> toimimaan asiallisesti Mac OS X:ssä ja teoriassa lisäosa toimiikin. Ainoana negatiivisena puolena on, että se vaatii kirjastojen sijoittamisen hakemistoon, jonne ne kääntäessä asennettiin, eli esimerkiksi <em>/usr/local/lib</em> -hakemistoon. Linuxissa ja Windowsissa lisäosa toimii, kunhan vaadittavat kirjastot löytyvät lisäosan sisään leivottuina.</p>
<p>Mac OS X:ssä dynaamiset kirjastot toimivat hieman eri lailla ja <a href="http://developer.apple.com/documentation/DeveloperTools/Conceptual/DynamicLibraries/Articles/UsingDynamicLibraries.html#//apple_ref/doc/uid/TP40002182-SW13" class="liexternal">haluavat täydellisen polun asennushakemistoonsa</a>. Asiasta löytyy <a href="http://renderfast.com/2008/06/27/using-dynamic-libraries-in-mac-os-x/" class="liexternal">blogikirjoitus</a> ja <a href="http://qin.laya.com/tech_coding_help/dylib_linking.html" class="liexternal">selventävä ohje</a>, jotka kertovat miten asioiden laita on. Kirjoituksissa neuvotaan toimivien dynaamisten kirjastojen luontiin käyttämällä <a href="http://developer.apple.com/documentation/Darwin/Reference/ManPages/man1/install_name_tool.1.html" class="liexternal">install_name_toolia</a> ja LDFLAGS-muuttujien käytöllä.</p>
<p>Hieman asian ympärillä iteroiden ei kirjastojen kääntäminen toivotulla lopputuloksella kuitenkaan onnistunut. Vaikka LDFLAGS-muuttujiin laittoi ehdotetun <em>-Wl,-dynamic,-install_name -Wl,@executable_path/kirjasto.dylib</em> -loitsun, eivät lisäosan vaatimat <em>gettext</em>, <em>iconv</em>, <em>glib-2</em>, <em>malaga</em>, <em>suomi-malaga</em> ja <em>voikko</em> -kirjastot suostuneet toimimaan lisäosan sisältä. Gettextin libintl -kirjastoa varten joutui LDFLAGS-muuttujat lisäämään suoraan Makefileen, mutta muuten loitsiminen onnistui configuren parametreina.</p>
<p>En tiedä onko vika kirjoittajassa, vai missä, mutta ei voi sanoa, että asiaa olisi turhan helpoksi tehty. Joku jippo tässä täytyy olla, kun kirjastot kuitenkin <em>/usr/local/lib</em> -hakemistosta toimivat. Ehkä tämäkin asia joskus selkenee.</p>
]]></content:encoded>
			<wfw:commentRss>http://verteksi.net/soks/2009/07/29/mac-os-x-ja-dynaamisten-kirjastojen-kayttaminen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Joustavat sisennykset selkeyttävät koodin lukemista</title>
		<link>http://verteksi.net/soks/2009/07/05/joustavat-sisennykset-selkeyttavat-koodin-lukemista/</link>
		<comments>http://verteksi.net/soks/2009/07/05/joustavat-sisennykset-selkeyttavat-koodin-lukemista/#comments</comments>
		<pubDate>Sun, 05 Jul 2009 18:44:11 +0000</pubDate>
		<dc:creator>Marko</dc:creator>
				<category><![CDATA[koodaus]]></category>
		<category><![CDATA[ohjelmistot]]></category>
		<category><![CDATA[ohjelmointikäytännöt]]></category>

		<guid isPermaLink="false">http://verteksi.net/?p=1971</guid>
		<description><![CDATA[<p>Ohjelmoijat ovat usein erittäin pikkutarkkoja siitä, miten he kirjoittamansa koodin jäsentelevät: käytetäänkö sisennyksessä tabulaattoria vai välilyöntejä, miten asiat rivitetään, tuleeko sulkeiden jälkeen väli vai ei ja niin edelleen. Teoreettisesti koodi on samaa, jäsenteli sen miten halusi, mutta käytännössä koodin lukeminen on huomattavasti helpompaa, jos se on rakenteeltaan selkeää ja yhdenmukaista.</p>
<p>Koodin jäsentelyyn liittyvien sisennysten toimintaan on <a href="http://nickgravgaard.com/elastictabstops/" class="liexternal">Nick Gravgaardin ideoinut</a> niin sanotun joustavan sisennyksen eli &#8220;elastic tabstops&#8221; -ominaisuuden, jossa rivit sisentyvät selkeiksi ryhmiksi.&#8230; <a href="http://verteksi.net/soks/2009/07/05/joustavat-sisennykset-selkeyttavat-koodin-lukemista/" class="read_more">Jatka lukemista <span class=\\\"meta-nav\\\">&#8594;</span></a></p>]]></description>
			<content:encoded><![CDATA[<p>Ohjelmoijat ovat usein erittäin pikkutarkkoja siitä, miten he kirjoittamansa koodin jäsentelevät: käytetäänkö sisennyksessä tabulaattoria vai välilyöntejä, miten asiat rivitetään, tuleeko sulkeiden jälkeen väli vai ei ja niin edelleen. Teoreettisesti koodi on samaa, jäsenteli sen miten halusi, mutta käytännössä koodin lukeminen on huomattavasti helpompaa, jos se on rakenteeltaan selkeää ja yhdenmukaista.</p>
<p>Koodin jäsentelyyn liittyvien sisennysten toimintaan on <a href="http://nickgravgaard.com/elastictabstops/" class="liexternal">Nick Gravgaardin ideoinut</a> niin sanotun joustavan sisennyksen eli &#8220;elastic tabstops&#8221; -ominaisuuden, jossa rivit sisentyvät selkeiksi ryhmiksi. Ominaisuudessa tabulaattorin pituus voi vaihdella eri riveillä ja teksti on jaoteltu tavallaan kuin taulukon soluihin ja sarakkeisiin.</p>
<p>Esimerkiksi ryhmän rivit sisennetään automaattisesti samalle tasolle.</p>
<div class="img-center">
<img class="colorbox-1971"  src="/files/2009/sw/tabstops-assign1.png" alt="Tab Stops"/>
</div>
<p>ja rivin muuttuessa ryhmän rivien sisennystä muutetaan automaattisesti uuteen pituuteen.</p>
<div class="img-center">
<img class="colorbox-1971"  src="/files/2009/sw/tabstops-assign2.png" alt="Tab Stops"/>
</div>
<p>Ideasta saa paremman käsityksen, kun vilkaisee enemmän <a href="http://code-browser.sourceforge.net/elastic-tabstops.html" class="liexternal">esimerkkejä miten Code Browser -ohjelma asian toteuttaa</a> tai <a href="http://nickgravgaard.com/elastictabstops/" class="liexternal">testata ominaisuutta käytännössä</a>. Sisennyksen automaattinen muuttaminen tekstin muuttuessa tuo selkeyttä koodin lukemiseen muun muassa switch-case -rakenteissa, muuttujaryhmissä ja kommenteissa.</p>
<p>Ominaisuus näyttää kätevältä, mutta harmillisesti se ei ole vielä yleistynyt. Toivoa kuitenkin herättää, että ominaisuudesta on tehty <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=149603" class="liexternal">kehitysehdoitus Eclipseen</a> ja ominaisuus löytyy kuulemma Swingistä, GTK:sta ja tulevasta Visual Studiosta. Gedit-editoriin tämä mullistava uudistus on saatavissa <a href="http://nickgravgaard.com/elastictabstops/" class="liexternal">Nick Gravgaardin tekemän lisäosan avulla</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://verteksi.net/soks/2009/07/05/joustavat-sisennykset-selkeyttavat-koodin-lukemista/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Versionhallinnan parhaat käytännöt koodaajalle</title>
		<link>http://verteksi.net/soks/2008/12/03/versionhallinnan-parhaat-kaytannot-koodaajalle/</link>
		<comments>http://verteksi.net/soks/2008/12/03/versionhallinnan-parhaat-kaytannot-koodaajalle/#comments</comments>
		<pubDate>Wed, 03 Dec 2008 12:57:43 +0000</pubDate>
		<dc:creator>Marko</dc:creator>
				<category><![CDATA[koodaus]]></category>
		<category><![CDATA[scm]]></category>
		<category><![CDATA[vinkit]]></category>

		<guid isPermaLink="false">http://verteksi.net/soks/?p=890</guid>
		<description><![CDATA[<p>Versionhallinnasta ja siihen liittyvistä asioita on kirjoitettu paljon, mutta useissa kirjoituksissa on keskitytty lähinnä teknisiin asioihin ja eri versionhallintajärjestelmien mahdollistamiin asioihin. Harvat kirjoitukset keskittyvät käytännön asioihin ja niin sanottuihin parhaisiin käytäntöihin, joita soveltamalla versionhallinnan käytöstä saa paljon enemmän irti.</p>
<p>Muutamia käteväksi todettuja ja omasta mielestäni &#8220;parhaita käytäntöjä&#8221; koodaajan näkökulmasta ovat muun muassa:</p>
<ol>
<li><a href="#workflow" class="liinternal">Työn kulku</a></li>
<li><a href="#often-early" class="liinternal">Vie koodi versionhallintaan usein ja aikaisin</a></li>
<li><a href="#logical" class="liinternal">Vie yhtenäisiä kokonaisuuksia</a></li>
<li><a href="#messages" class="liinternal">Kirjoita järkeviä commit-viestejä</a></li>
<li><a href="#style" class="liinternal">Tee koodaustyylin muutokset erillään oikeista muutoksista</a></li>
<li><a href="#dynamic" class="liinternal">Älä vie tiedostoja, jotka muuttuvat dynaamisesti</a></li>
<li><a href="#compile" class="liinternal">Älä vie koodia, joka ei käänny</a></li>
</ol>
<p><a name="workflow"></a><br />
<strong>1.</strong>&#8230; <a href="http://verteksi.net/soks/2008/12/03/versionhallinnan-parhaat-kaytannot-koodaajalle/" class="read_more">Jatka lukemista <span class=\\\"meta-nav\\\">&#8594;</span></a></p>]]></description>
			<content:encoded><![CDATA[<p>Versionhallinnasta ja siihen liittyvistä asioita on kirjoitettu paljon, mutta useissa kirjoituksissa on keskitytty lähinnä teknisiin asioihin ja eri versionhallintajärjestelmien mahdollistamiin asioihin. Harvat kirjoitukset keskittyvät käytännön asioihin ja niin sanottuihin parhaisiin käytäntöihin, joita soveltamalla versionhallinnan käytöstä saa paljon enemmän irti.</p>
<p>Muutamia käteväksi todettuja ja omasta mielestäni &#8220;parhaita käytäntöjä&#8221; koodaajan näkökulmasta ovat muun muassa:</p>
<ol>
<li><a href="#workflow" class="liinternal">Työn kulku</a></li>
<li><a href="#often-early" class="liinternal">Vie koodi versionhallintaan usein ja aikaisin</a></li>
<li><a href="#logical" class="liinternal">Vie yhtenäisiä kokonaisuuksia</a></li>
<li><a href="#messages" class="liinternal">Kirjoita järkeviä commit-viestejä</a></li>
<li><a href="#style" class="liinternal">Tee koodaustyylin muutokset erillään oikeista muutoksista</a></li>
<li><a href="#dynamic" class="liinternal">Älä vie tiedostoja, jotka muuttuvat dynaamisesti</a></li>
<li><a href="#compile" class="liinternal">Älä vie koodia, joka ei käänny</a></li>
</ol>
<p><a name="workflow"></a><br />
<strong>1. Työn kulku</strong><br />
<a href="http://svnbook.red-bean.com/" class="liexternal">&#8220;Version Control with Subversion&#8221; -kirja</a> selvittää <a href="http://svnbook.red-bean.com/en/1.5/svn.tour.cycle.html" class="liexternal">normaalin työn kulun</a>, joka on hyvä omaksua versionhallintaa käytettäessä (hieman sovellettuna):</p>
<ol>
<li>Hae koodista tuorein versio versionhallinnasta</li>
<li>Toteuta koodiin tehtävät muutokset</li>
<li>Hae tuorein versio ennen koodin vientiä versionhallintaan</li>
<li>Aja testit uudestaan ja varmista, että tekemäsi muutokset toimivat</li>
<li>Vie koodi versionhallintaan yhtenä kokonaisuutena</li>
<li>Selvitä konfliktit</li>
<li>Tarkista, että versio kääntyy myös build-palvelimella</li>
<li>Korjaa virheet tai palauta</li>
</ol>
<p><strong id="often-early">2. Vie koodi versionhallintaan usein ja aikaisin</strong><br />
On suositeltavaa toteuttaa <a href="http://www.codinghorror.com/blog/archives/001165.html" class="liexternal">Check In Early, Check In Often</a> -periaatetta. Tällöin muut näkevät mitä olet tekemässä ja koodi on muidenkin käytössä. </p>
<blockquote><p>&#8220;If the code isn&#8217;t checked into source control,<br /> it doesn&#8217;t exist.&#8221; &#8211; <a href="http://www.codinghorror.com/blog/archives/001165.html" class="liexternal">Coding Horror</a></p></blockquote>
<p>Lisäksi jos piilottelet koodia omalla koneellasi, etkä synkronoi sitä versionhallintaan pitkään aikaan, voi muutosten yhdistämisestä tulla erittäin työlästä. Pieniä kokonaisuuksia on helpompi verrata ja saadaan aikaan vähemmän konflikteja.</p>
<p>Vaikka idean järkevyys ja käytännöllisyys on helppo ymmärtää, on käytännön toteutus usein jotain muuta. Itse olen ainakin huomannut, että omaa koodia tulee helposti pantattua levyn nurkalla, kunnes kyseinen ominaisuus on &#8220;valmis&#8221; ja testattu.</p>
<blockquote><p>&#8220;Hiding your code until it&#8217;s &#8220;done&#8221; may feel safer, but it isn&#8217;t. Sharing your ongoing code with your coworkers is scary, much less the world &#8212; but it also results in feedback and communication that will improve your code and draw you closer to the project you&#8217;re working on.&#8221; &#8211; <a href="http://www.codinghorror.com/blog/archives/001134.html" class="liexternal">Coding Horror</a></p></blockquote>
<p><strong id="logical">3. Vie yhtenäisiä kokonaisuuksia</strong><br />
On suositeltavaa viedä versionhallintaan loogisesti yhtenäisiä kokonaisuuksia. Tämä tekee versiohistorian seuraamisesta huomattavasti hyödyllisempää, etenkin jos muutokset käsittelevät useita eri tiedostoja.</p>
<p>Eli, jos teet useita yhtäaikaisia muutoksia, jaa ne useampaan loogiseen kokonaisuuteen ja vie ne osissa. Näin yksittäisten muutosten historiaa on helpompi seurata ja nopeuttaa mahdollisten bugien metsästystä myöhemmin. Jos siis teet ominaisuutta A, B ja C sekä korjaat bugeja 1, 2 ja 3, pitäisi niistä muodostua vähintään kuusi committia. Vastaavasti, jos teet suuria muutoksia tai toteutat itsenäisiä muutoksia useisiin loogisiin moduleihin, vie muutokset erikseen, vaikka ne olisivatkin osa isompaa kokonaisuutta.</p>
<p>Käytännössä sitä kuitenkin usein huomaa koodaavansa hieman sieltä sun täältä sitä ja tätä, ja lopulta järkevän yhtenäisen kokonaisuuden vieminen versionhallintaan on käytännössä mahdotonta. </p>
<p>Tietenkin tätä periaatetta on helpompi noudattaa sovelluksen ylläpidossa kuin sovelluksen kehittämisessä, jossa puutteellisia ja koodausta kaipaavia asioita on paljon. Teoriassa järkevä &#8220;commit&#8221;-tapa on helppo omaksua, mutta käytännössä yhtenäisen kokonaisuuden siirtäminen versiohallintaan vaatii itsekuria ja koodauksen suunnittelua.</p>
<p><strong id="messages">4. Kirjoita järkeviä commit-viestejä</strong><br />
Kirjoita aina jokin kommentti viedessäsi koodia versionhallintaan. Kommentin tulisi olla lyhyt ja ytimekäs, ja kertoa mitä muutettiin ja miksi. Jos teit useita muutoksia, kirjoita ne omille riveilleen. </p>
<p>On myös kätevää lisätä kommentin eteen jokin tunniste kuten Fix tai Add, viitaten minkä tyyppisiä muutoksia teit. Tämä myös helpottaa sisällön filtteröintiä myöhemmin.</p>
<p>Korjatessa jotain tiettyä bugia tai pyydettyä ominaisuutta, on suositeltavaa lisätä bugin tai issuen numero commit-viestiin.</p>
<blockquote><p>&#8220;If the changes you made are not important enough to comment on, they probably are not worth committing either.&#8221; &#8211; <a href="http://blog.looplabel.net/2008/07/28/best-practices-for-version-control/" class="liexternal">loop label</a></p></blockquote>
<p><strong id="style">5. Tee koodaustyylin muutokset erillään oikeista muutoksista</strong><br />
Koodaustyyli voi kokea muutoksia ja kehitysvälineessä voidaan esimerkiksi ottaa käyttöön automaattiset koodimuotoilut. On erittäin suositeltavaa, että koodin muotoiluun vaikuttavat muutokset tehtäisiin erillään oikeista muutoksista.</p>
<p>Jos koodimuotoilut ja muutokset sekoitetaan keskenään, on muutosten jäljittäminen ja kohdistaminen käytännössä mahdotonta.</p>
<p><strong id="dynamic">6. Älä vie tiedostoja, jotka muuttuvat dynaamisesti</strong><br />
Versionhallinnassa olevien tiedostojen olisi hyvä olla sellaisia, joiden sisällöstä valta on käyttäjillä eikä esimerkiksi kehitysympäristöllä. Esimerkiksi ei kannata viedä Eclipsen asetuksia tai projekti-tiedostoa, jotka muuttuvat riippuen kehittäjän haluamista asetuksista. Kyseiset tiedostot eivät varsinaisesti liity projektin koodiin ja aiheuttavat vaan turhaa synkkaamista. Myös projektin binäärit ja Javadocit voidaan mieltää turhiksi versionhallinnan näkökulmasta.</p>
<p>(via <a href="http://www.perforce.com/perforce/bestpractices.html" class="liexternal">Perforce</a>)</p>
<p><strong id="compile">7. Älä vie koodia, joka ei käänny</strong><br />
Ei ole suositeltavaa viedä versionhallintaan koodia, joka ei käänny ja hajottaa projektin myös muille kehittäjille. Toisaalta, ideaalissa tilanteessa, ei pitäisi koskaan lähteä toimistolta viemättä koodia versionhallintaan.</p>
<p>Jos teet muutoksia, jotka vaikuttavat muihin, harkitse koodin branchaamista muutoksen toteuttamiseksi ja yhdistä koodi, kun olet valmis. Toisaalta, <a href="http://www.codinghorror.com/blog/archives/001134.html" class="liexternal">toimimaton koodi ei ole syy olla viemättä sitä versionhallintaan</a>.</p>
<blockquote><p>&#8220;It’s better to have a broken build in your working repository than a working build on your broken hard drive.&#8221; &#8211; <a href="http://blog.looplabel.net/2008/07/28/best-practices-for-version-control/" class="liexternal">loop label</a></p></blockquote>
<p><strong>Yhteenveto</strong><br />
Versionhallinnan käyttö on omaksuttu osaksi sovelluskehitystä ja toivottavasti edes osa yllä olevista periaatteista on jo useimpien kehittäjien käytössä. Ellei käytössä olevia työvälineitä hyödynnetä kunnolla, jää paljon etuja saavuttamatta. Edes muutaman yllä olevan käytännön omaksuminen kuten &#8220;loogiset kokonaisuudet&#8221; ja &#8220;commit-viestit&#8221;, helpottaa jo kummasti.</p>
<p>Versionhallinta on käsitteenä laaja ja sen käyttöön liittyy paljon muitakin asioita, joista voidaan määritellä niin sanotut parhaat käytännöt. Tälläisiä ovat muun muassa koodin hallintaan liittyvät asiat, versionhallinnan soveltaminen ja toimintojen laajentaminen, mutta ei niistä sen enempää. </p>
]]></content:encoded>
			<wfw:commentRss>http://verteksi.net/soks/2008/12/03/versionhallinnan-parhaat-kaytannot-koodaajalle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Blueprint CSS -kehys avustaa sivuston taiteilussa</title>
		<link>http://verteksi.net/soks/2008/11/16/blueprint-css-kehys-avustaa-sivuston-taiteilussa/</link>
		<comments>http://verteksi.net/soks/2008/11/16/blueprint-css-kehys-avustaa-sivuston-taiteilussa/#comments</comments>
		<pubDate>Sun, 16 Nov 2008 10:45:46 +0000</pubDate>
		<dc:creator>Marko</dc:creator>
				<category><![CDATA[koodaus]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://verteksi.net/soks/?p=893</guid>
		<description><![CDATA[<p>Kaikkea ei aina kannata keksiä uudestaan, eikä se ole aina edes tarpeellista, sillä hyviä ideoita voi kierrättää. Web-sivujen suunnittelussa taustalla olevat rakenteet ja elementit ovat usein eri projekteissa pohjimmiltaan samanlaisia ja mahdollisuuksia uusiokäytölle on useita. Internetistä löytyykin useita kirjastoja ja frameworkkeja JavaScriptille, web-ohjelmointiin ja viime aikoina enenemissä määrin myös CSS:lle. Yksi kohtalaisen kätevä ja selkeä CSS-framework on <a href="http://www.blueprintcss.org/" class="liexternal">Blueprint CSS -framework</a>.&#8230; <a href="http://verteksi.net/soks/2008/11/16/blueprint-css-kehys-avustaa-sivuston-taiteilussa/" class="read_more">Jatka lukemista <span class=\\\"meta-nav\\\">&#8594;</span></a></p>]]></description>
			<content:encoded><![CDATA[<p>Kaikkea ei aina kannata keksiä uudestaan, eikä se ole aina edes tarpeellista, sillä hyviä ideoita voi kierrättää. Web-sivujen suunnittelussa taustalla olevat rakenteet ja elementit ovat usein eri projekteissa pohjimmiltaan samanlaisia ja mahdollisuuksia uusiokäytölle on useita. Internetistä löytyykin useita kirjastoja ja frameworkkeja JavaScriptille, web-ohjelmointiin ja viime aikoina enenemissä määrin myös CSS:lle. Yksi kohtalaisen kätevä ja selkeä CSS-framework on <a href="http://www.blueprintcss.org/" class="liexternal">Blueprint CSS -framework</a>.</p>
<p>Blueprint CSS on norjalaisen opiskelijan, <a href="http://www.bjorkoy.com/" class="liexternal">Olav Frihagen Bjørkøy:n</a> luoma CSS-framework, joka käytännössä kokoaa yhteen useita hyväksi havaittuja tekniikoita ja tarjoaa hyvän perustan web-sivun rakentamiselle. Kehyksen kokonaisuus rakentuu ristikkotaiton päälle (Grid Layout) ja tarjoaa järkevät perusarvot typografialle ja eri CSS-elementeille. Vakiona sivuston sisältö on suunniteltu 960px leveäksi eli 1024&#215;768 -resoluutiolle. Blueprint CSS:n tarjoamia ominaisuuksia voi laajentaa muun muassa hienommilla napeilla. Jos Blueprint CSS:n taustat kiinnostavat, kannattaa lukaista <a href="http://www.subtraction.com/2007/08/07/the-framewor" class="liexternal">Olavin haastattelu</a>. </p>
<blockquote><p>&#8220;Spend your time innovating, not replicating.&#8221; &#8211; Blueprint CSS</p></blockquote>
<p>Parhaiten Blueprint CSS:n idea selvenee <a href="http://www.blueprintcss.org/tests/" class="liexternal">esimerkeistä</a>:</p>
<div class="img-center">
<a href="/files/2008/web/blueprint_demo_1s.png" title="Monimuotoisen sivuston luonti onnistuu helposti" rel="blueprint" class="thickbox"><img class="colorbox-893"  src="/files/2008/web/blueprint_demo_1s_thb.png" alt="Blueprint CSS" /></a> <a href="/files/2008/web/blueprint_demo_2s.png" title="Grid Layout ja elementtien juoksutus" rel="blueprint" class="thickbox"><img class="colorbox-893"  src="/files/2008/web/blueprint_demo_2s_thb.png" alt="Blueprint CSS" /></a> <a href="/files/2008/web/blueprint_demo_3s.png" title="Typografian perustyylit" rel="blueprint" class="thickbox"><img class="colorbox-893"  src="/files/2008/web/blueprint_demo_3s_thb.png" alt="Blueprint CSS" /></a> <a href="/files/2008/web/blueprint_demo_4s.png" title="Yksinkertaiset ja selkeät perustyylit lomakkeelle" rel="blueprint" class="thickbox"><img class="colorbox-893"  src="/files/2008/web/blueprint_demo_4s_thb.png" alt="Blueprint CSS" /></a>
</div>
<p>Blueprint CSS:llä saa aikaan nopeasti sekä näkyvää että siistiä tulosta ja varsinkin hieman vähemmän CSS:n kanssa taistelleille web-koodareille se on hyvä lähtökohta. Vastaavasti hieman kokeneemmille toteuttajille Blueprint CSS:n käyttäminen voi tuntua hieman rajoittavalta ja jäykältä, vaikka monilta osin se tarjoaakin käteviä palikoita nopeaan toteutukseen. Tältäkin osin Blueprint CSS -framework toteuttaa monen muun frameworkin tavoin yhden niiden käytön ongelman: olet &#8220;rajoittunut&#8221; valitsemasi kehyksen sisään ja sieltä irtautuminen voi olla työlästä.</p>
<p>Kokeilin Blueprint CSS:n kätevyyttä muutaman web-projektin suunnittelussa ja etenkin sen sopivuutta omiin tarpeisiini, mutta vaikka kehys vaikuttikin näppärältä, ei se oikein taipunut haluamiini raameihin. Pala palalta kaipasin jotain hieman erilaista, jota Blueprint CSS ei tarjonnut, ja lopulta totesin helpommaksi vain poimia käyttöön ne osat, jotka havaitsin käytännölliseksi. Eli käytännössä olen osa osalta rakentamassa omaa CSS-kehystä, joka toki hiemankin enemmän web-sivujen suunnittelua tekeviltä jo jossain muodossa löytyy. Työläin vaihehan vain on kaikkien palikoiden kerääminen yhteen ja sen jalostaminen sopivaksi kokonaisuudeksi. </p>
<p>Vaikka Blueprint CSS ei oikein lämmittänyt, sen kanssa leikkiessä tuli kuitenkin todettua, että ristikkotaitto eli Grid Layout on aika kätevä tapa sijoitella komponentit ruudulle. Kehitysvaiheessa ristikkotaiton ja elementtien sijoittelun apuna on lisäksi kätevä käyttää <a href="http://gridlayouts.com/" class="liexternal">Grid Layout JS -palikkaa</a>, joka JavaScriptin avulla näyttää ja piilottaa sivutaiton sarakkeet.</p>
<p>Kenties seuraavaksi pitää tutkia, mitä tarjottavaa <a href="http://bluetrip.org/" class="liexternal">BlueTripillä</a> on ja mitä kaikkia komponentteja <a href="http://developer.yahoo.com/yui/" class="liexternal">Yahoo User Interface Librarysta</a> löytyy. Open Sourcessa on se mainio ominaisuus, että jos jokin asia ei miellytä, lisäyksen saa kohtalaisen helposti toteutettua ja aina voi tietenkin forkata.</p>
]]></content:encoded>
			<wfw:commentRss>http://verteksi.net/soks/2008/11/16/blueprint-css-kehys-avustaa-sivuston-taiteilussa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

