Blueprint CSS -kehys avustaa sivuston taiteilussa

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 Blueprint CSS -framework.

Blueprint CSS on norjalaisen opiskelijan, Olav Frihagen Bjørkøy:n 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×768 -resoluutiolle. Blueprint CSS:n tarjoamia ominaisuuksia voi laajentaa muun muassa hienommilla napeilla. Jos Blueprint CSS:n taustat kiinnostavat, kannattaa lukaista Olavin haastattelu.

”Spend your time innovating, not replicating.” - Blueprint CSS

Parhaiten Blueprint CSS:n idea selvenee esimerkeistä:

Blueprint CSS Blueprint CSS Blueprint CSS Blueprint CSS

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 ”rajoittunut” valitsemasi kehyksen sisään ja sieltä irtautuminen voi olla työlästä.

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.

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ää Grid Layout JS -palikkaa, joka JavaScriptin avulla näyttää ja piilottaa sivutaiton sarakkeet.

Kenties seuraavaksi pitää tutkia, mitä tarjottavaa BlueTripillä on ja mitä kaikkia komponentteja Yahoo User Interface Librarysta 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.

Eclipse: jätä target-hakemistot huomioimatta Monkey-skriptillä

Eclipse on kätevä, joskin välillä ärsyttäväkin sovelluskehitystyökalu, mutta on laajennettavuudessaan erinomainen. Jos jotain ominaisuutta ei löydy paketista valmiina, löytyy se aika varmasti lisäosana tai sen voi itse toteuttaa.

Kaikki Eclipseä käyttäneet varmasti tietävät, että haettaessa jotain esimerkiksi Ctrl+Shift+R (Open Resource), tulee hakutuloksiin myös kohde-hakemiston (Target folder) tiedostot, joista ainakaan itse en ole tähän mennessä ollut kiinnostunut. Tietenkin kyseiset hakemistot voi merkitä manuaalisesti Derived-tilaan, jolloin ne jätetään huomioimatta. Valitettavasti käännettäessä sovellus cleanin kanssa esimerkiksi mavenillä tai antilla, kyseinen tila häviää ja se on asetettava uudelleen. Onneksi tämänkin asian voi automatisoida.

Eclipselle on saatavilla lukuisia eri lisäosia ja ominaisuuksia ja tällä kertaa pelastuksemme on dash-projektin Monkey Script, joka JavaScriptiä käyttäen suorittaa haluamiamme tehtäviä. Lisäksi tarvitsemme sopivan skriptin, joka toteuttaa target-hakemistojen merkitsemisen. Tätäkään ei tarvitse itse alkaa uudestaan keksimään, vaan voimme käyttää valmista skriptiä. Helppoa.

Skriptien ajamista varten tarvitsemme siis Eclipse Monkey -työkalun, jonka Eclipse Update -site löytyy osoitteesta http://download.eclipse.org/technology/dash/update/. Annetaan osoite Eclipse Update Managerille ja asennetaan Eclipse Monkey ja Mozilla Rhino -palikat.

Monkey

Eclipse Monkeyn asennuksen jälkeen kopioidaan alla oleva skripti:

--- Came wiffling through the eclipsey wood ---
/*
 * Menu: Maven > Make Maven Targets Derived
 * Kudos: Donnchadh
 * License: EPL 1.0
 * DOM: http://download.eclipse.org/technology/dash/update/org.eclipse.dash.doms
 */

function main() {
  var files = resources.filesMatching(".*/pom\\.xml");
  var targetFolder;

  for each( file in files ) {
    if (targetFolder = file.eclipseObject.parent.findMember("target")) {
    	targetFolder.setDerived(true);
    }
  }
}
--- And burbled as it ran! ---

ja valitaan Eclipsen valikoista "Scripts > Paste New Script".

Monkey

Tämän jälkeen pitäisi Scripts-valikosta löytyä uusi tehtävä "Scripts > Maven > Make Maven Targets Derived" ja Project Explorerissa Eclipse Monkey Scripts -kansiosta kyseinen skripti.

Monkey Monkey

Nyt skriptin ajamisen jälkeen Eclipse ei huomioi Target-hakemistoja hakutuloksissa tai resurssia avatessa.

(via Some things to remember)

Eclipse 3.4 Ganymede tuo lukuisia pieniä uudistuksia

Eclipsestä julkaistiin alkuviikosta Ganymede-koodinimeä kantava 3.4-versio, joka tuo lukuisia pieniä, mutta käyttömukavuutta selkeästi parantavia uudistuksia. Kattava lista Eclipsen uudistuksista löytyy julkaisun tiedoista. Julkaisutiedoissa uudet ja viritellyt ominaisuudet on jaettu alustan uudistuksiin ja Java-kohtaisiin uudistuksiin.

Eclipse Ganymede

Eclipsen koodinimi Ganymede on Jupiterin seitsemäs kuu ja on aurinkokunnan suurin kuu. Aikaisempia Eclipsen versionimiä ovat olleet Europa (3.3) ja Callisto (3.2), eli Jupiterin kuudes ja kahdeksas kuu.

Uudessa versiossa on parempi ollakin kaivattuja ja käyttömukavuutta parantavia uudistuksia, sillä Eclipsen päivittäminen versionumerosta toiseen on aina yhtä tuskaa. Ominaisuudet ja lisäpalikat pitää asentaa uudelleen, versionhallinnassa olevat projektit pitää hakea uudelleen tai ainakin Subversive ei osannut yhdistää suoraan ja Eclipsen asetukset pitää viritellä takaisin haluamakseen. Parin harjoittelukerran jälkeen tämä toki sujuu nopeasti, ja jos vielä tarvittavat palikat ja niiden update-sivustot ovat tallessa, menee homma kohtalaisen vaivattomasti.

Tässä muutamia ainakin näin päältä päin katsottuna mielenkiintoisia ominaisuuksia (poimittuna Eclipsen julkaisutiedoista):

Software Updates
Eclipsen ominaisuuksien ja lisäosien päivitysmekanismi on päivitetty ja se osaa nyt valita automaattisesti tarvittavat lisäpalikat halutun ominaisuuden lisäämiseksi sekä näyttää vain ne palikat, joita olet asentamassa.

Uudistettu päivitystoiminto

Problems, Bookmarks ja Task -näkymät
Problems, Bookmarks ja Task -näkymät ovat saaneet kasvojenkohotuksen ja parannuksia näkymiin. Muun muassa Problems-näkymä osaa nyt rajata näkymän vain käytössä olevaan working settiin.

Problem -näkymä

Save Actions
Eclipsen Europa-versiossa oli mahdollista määritellä erilaisia toimintoja, jotka suoritetaan tiedostoa talletettaessa. Nyt Save Actionit voi myös rajoittaa koskemaan vain omia rivejä. Window > Preferences > Java > Editor > Save Action -asetuksista määriteltäviä toimintoja voivat olla esimerkiksi:

  • Muotoilu: sisennys, sulut, välilyönnit, tyhjät rivit, kontrollirakenteet, rivinvaihdot, kommentit
  • Importtien järjestely: turhien importtien poistaminen
  • Koodityyli: if/while/for/do -rakenteiden muotoilut, final-muuttujat
  • Turha koodi: poista käyttämättömät muuttujat ja rakenteet
  • Puuttuva koodi: lisää @Override and @Deprecated annotaatiot
  • Koodin jäsentely: järjestele muuttujat, vakiot

Tietenkin toiminnon hyödyntäminen on parhainta, kun projektia varten on määritelty koodaustyylit ja -standardit.

Hakuosumat rivinäkymällä
Tiedostoista haun osumat näkyvät nyt kokonaisina riveinä, kun aikaisemmin näkyi vain tiedosto.

Haun rivinäkymä

Hae/korvaa
Tekstiä korvattaessa voidaan säilyttää kohteen kirjainkoko. Esimerkiksi korvattaessa ”test” ”\CFoo”:lla ”Test test= TEST” -tekstistä, saadaan tulokseksi ”Foo foo= FOO”.

Säilytä kirjainkoko
Säilytä kirjainkoko

Rivinumero vierityspalkissa
Rivinumero näkyy nyt myös vierityspalkista kiskottaessa.

Vierityspalkin rivinumero

Java Editorin murupolku
Java-editori tarjoaa nyt murupolkua elementin sijaintiin. Ominaisuus voidaan kytkeä päälle/pois Toggle Breadcrumb työkaluvalikon napilla tai painamalla Alt+Shift+B. Jokainen elementti on mahdollista valita ja aktivoida siihen liittyviä toimintoja.

Java-editorin murupolku
Murupolun konteksti-valikko
Muropolun alasvetovalikko

Parempia Javadoc-vinkkiruutuja
Javadoc-vinkkiruutu näyttää nyt parempia vinkkejä ja on mahdollista selata Javadocia linkkejä seuraten, avata se ulkoiseen selaimeen, sekä muuttaa ruudun kokoa.

Javadoc vinkit

Muuttujan luku- ja kirjoitustapahtumat
Painamalla Alt+Shift+O, voidaan korostaa muuttujan luku- ja kirjoitustapahtumat eri väreillä. Ominaisuus on asetettavissa General > Editors > Text Editors > Annotations -asetuksista.

Muuttujan luku- ja kirjoitustapahtumien korostus

Java-kääntäjä moniytimisillä koneilla
Eclipsen Java-kääntäjä osaa nyt hyödyntää moniytimisten suorittimien monisäie-kapasiteettia.

Ulkoiset luokkakirjastot
Luokkakirjastot voivat nyt sijaita workspacen ulkopuolella.

Viritelty debug-näkymä
Sovellusta debuggatessa, on mahdollista nähdä muuttujien arvot.

Debug-näkymä

Oraclen tietokannat haltuun Oracle SQL Developerilla

Oraclen tietokantojen kanssa askarteluun on tarjolla useita eri tasoisia ja etenkin erilaisilla hintalapuilla varustettuja ohjelmia, mutta ilmaisiakin vaihtoehtoja löytyy. Oraclen ilmainen SQL Developer on oiva työkalu SQL:n ja PL/SQL:n kanssa työskentelyyn ja tarjoaakin maksullisiin ohjelmiin lähes verrattavissa olevia ominaisuuksia etenkin satunnaiselle käyttäjälle. Maksullisista ohjelmista mainittakoon Golden, PL/SQL Developer, Hora ja Toad.

Oraclen SQL Developer tarjoaa monipuolisen työkalun tietokannan hallintaan, selaamiseen, raporttien luontiin, SQL-kyselyihin ja PL/SQL-kehitykseen, vaikka ei aivan kaikkia vastaavia ominaisuuksia tarjoa kuin Oraclen SQL+. Toisaalta käyttöliittymä on paria astetta miellyttävämpi, kuin komentorivi-tyylisessä SQL+:ssa. Javalla toteutetuksi Swing-kirjastoa käyttäväksi ohjelmaksi SQL Developer on nopea ja tuntuu ihan ”normaalilta” työpöytäsovellukselta. Kokonaisuutena ohjelma vaikuttaa myös selkeämmältä kuin vastaavan tason Golden, mutta tietenkin ilman vanhojen ohjelmien painolastia nykyaikainen SQL Developer vaikuttaa hyvältä ja helpolta käyttää.

Muutamia pieniä puutteita ohjelmasta vielä löytyy, kuten date-kentän formaatti, joka on ilmeisesti ns. ominaisuus ja pitää asettaa haluamakseen sessio-kohtaisesti. Lisäksi tuettuja kantoja ovat vain 9i-sarjan tietokannat (9.2.0.1), vaikka tuen puuttumisen huomautuksesta huolimatta myös 8i-kannat toimivat.

Tuorein SQL Developer 1.5 -versio tuo mukanaan muun muassa tuen versionhallinnalle ja muita uudistuksia sekä täydentää 1.2-version hieman puutteellista tukea SQL-käskyille. Valitettavasti versio myös tiputtaa täysin pois tuen 8i-kannoilta, jota ainakin itse jäin vielä kaipaamaan, vaikka lähitulevaisuudessa häämöttävät jo 10g-kannat.

SQL Developer 1.5 on ladattavissa Oraclen sivuilta Windowsille, Linuxille sekä Mac OS X:llle. Eniten ohjelmasta saa irti käyttämällä sitä Oraclen 9i, 10g ja 11g -tietokantojen kanssa, mutta tuettuja tietokantoja ovat lisäksi Microsoft Access, SQL Server, MySQL ja SyBase. Ohjelman käyttöön löytyy myös videodemot.

PL/SQL-kehitystä suunnitellessani testailin nopeasti myös ensimmäisessä kappaleessa mainitsemiani ohjelmia, mutta hinta-laatu -suhde oli selkeästi paikallaan SQL Developerin kohdalla, vaikka KeepToolin Hora olikin vaikuttava paketti; myös hinnaltaan.

SQL Developer SQL Developer SQL Developer

Subversion ja versionhallinta

Kaikki enemmän tai vähemmän ohjelmointiin tutustuneet varmasti tietävät, että koodia on kätevää säilyttää versionhallinnassa. Pieniäkin projekteja on suhteellisen vaivatonta ja hyödyllistä säilyttää esimerkiksi Subversion-versionhallinnassa, vaikkapa ihan vain omalla työasemalla sijaitsevassa repositoryssä.

Versionhallinta on tietenkin omimmillaan isommissa projekteissa, joissa toteuttajia on useita ja repository sijaitsee keskitetysti jollain palvelimella. Versionhallinnan ei tarvitse rajoittua pelkästään sovelluskoodiin, vaan sen voi ulottaa muihinkin muuttuviin ja versioitaviin projekteihin, kuten esimerkiksi PL/SQL-paketteihin ja asetustiedostoihin.

Coding Horror -blogi ohjeistaa kätevästi Subversionin (SVN) asennuksessa omalle koneelle ja kattaa myös hieman versionhallinnan perusteita. Subversion onkin kohtalaisen hyvin tuettu eri ohjelmien toimesta ja sille on saatavilla useita eri ohjelmistoja eri alustoille kuten TortoiseSVN, SubCommander ja Eclipseen saatava Subversive. Muista ohjelmista mainittakoon Trac, joka tarjoaa projekteille viritellyn wikin, tikettiträkkerin ja liitynnän Subversioniin.

Jos versionhallinta yleisesti ei ole tuttu asia, kannattaa vilkaista visuaalinen opastus versionhallintaan ja sen toteuttamisesta keskitettynä mallina Subversionilla löytyy kattava Version Control with Subversion -kirja.

Vaihtoehtona hajautettu versionhallinta?
Versionhallintaa voi toteuttaa myös hajautettuna mallina, kuten Linuxin Kernelin kehittämisessä Gitiä käyttäen. Muita hajautettuja malleja ovat muun muassa Mercurial (mm. Mozilla) ja Bazaar (mm. Ubuntu). Keskitettyyn malliin verrattuna hajautetussa mallissa on esimerkiksi jokaisella kehittäjällä oma paikallinen repository. Hajautetuista lähteistä tulokset yhdistetään erilaisin perusteilla, kuten määrättyjen projektijäsenten päätöksillä mitkä muutokset siirretään eteenpäin tai sitten voidaan käyttää keskitetyn mallin tapaa. Hajautetun mallin järjestelmät ovat yleistymässä, mutta muutos keskitetystä mallista hajautettuun vaatii totuttelua. Pitämällä paikallista repositoryä, päästään aina käsiksi historiatietoon, sekä saadaan versionhallinnan tarjoamat edut ilman koodin yleisesti julkistamista.

Versionhallinta onkin osaltaan myös uskonnollinen kysymys samalla tavalla, kuten esimerkiksi käyttääkö vimiä vai emacsia, KDE:tä vai Gnomea tai Linuxia vai Windowsia. Erilaisista versionhallintamalleista löytyykin vahvoja mielipiteitä, kuten Linus Torvaldsin esitys hajautetun mallin Gitistä osoittaa. Yleisesti katsottuna tärkeintä kuitenkin on, että käytössä on edes jokin versionhallintajärjestelmä. Oli se sitten Subversion, Git, Mercurial, Bazaar tai vanha kunnon CVS.

Subversionilla alkuun
Tavallaan Subversionin ja yleisesti ottaen keskitetyn versionhallinnan voisi sanoa olevan jo hieman vanhentunutta, mutta Subversion tarjoaa tällä hetkellä helposti lähestyttävän ja hyvin tuetun kokonaisuuden versionhallintaan.

Toisaalta taas Subversionissa on heikkouksiakin, joten muihinkin vaihtoehtoihin kannattanee tutustua, kun perusteet ovat hallussa. Etenkin hajautettu malli vaikuttaa ihan kätevältä.