You are browsing the archive for Sovelluskehitys.

C# versio 7 – milloin hyvä ohjelmointikieli on riittävän hyvä?

18.4.2017 in Sovelluskehitys, Yleinen by Heikki Raatikainen

Maaliskuun alussa tuli tuotantoon uusin C#-versio yhdessä Visual Studion 2017:n kanssa. Vieläkö kieleen mahtuu uusia ominaisuuksia? No toki hyvääkin voi parantaa. Mutta mitenkä ne aikaisemmat versiomuutokset menikään… Ehdottomasti tärkeimmät versio ovat olleet C#2 (generics, partial class ja nullable) ja C#3 (lambda, extension methods, LINQ, var, anonymous types), joiden piirteitä käytetään jatkuvasti käytännössä jokaisessa sovelluksessa. Toki noissa versioissa oli myös piirteitä, jotka eivät ole muuttaneet koodaustapoja, esim. co- ja contravarianssi. Nelosversiossa tuli parametrien välitykseen helpottavia piirteitä ja dynamic-tietotyyppi, viitosessa taas async/await oli isoin muutos.

Read the rest of this entry →

Maven projekti JavaEE/ReactJS sovellukseen

3.3.2017 in HTML5, Java, JavaScript by Tommi Teräsvirta

Olen käyttänyt Maveniä kohtalaisen paljon Java projekteissa. Myös ReactJS on minulle hyvinkin tuttu viitekehys. Jonkin aikaa sitten tuli kuitenkin ensimmäistä kertaa eteen näiden kahden yhdistäminen Java EE projektissa. Ensi viikolla sattuu tulemaan eteen koulutus, jossa pääsen vastaavan projektirakenteen selittämään ja kouluttamaan. Tekniikoista ja työkaluista tärkeimmät:

  1. Java EE 7, erityisesti JAX-RS & JDBC
  2. Netbeans 8.1 (kyllä, on vanha)
  3. Maven 3.3.9
  4. Glassfish 4.1.1 palvelimena
  5. ReactJS ja Fetch (JAX-RS apin käyttämiseen)
  6. Node ja npm React-osuuden kääntämiseen
  7. Jest React-testien ajamiseen

Read the rest of this entry →

PowerShell-palikka C#:lla

3.2.2017 in DevOps, Sovelluskehitys, Tuottavuus by Heikki Raatikainen

Aika pitkään ehdin C#:lla koodailla ennen kuin tuli ensimmäinen kerta jolloin jouduin miettimään toiminnon paketoimista PowerShell-moduuliksi.
Kaikki alkoi siitä että keksin hienon pienen sovelluksen jota luultavasti joissakin organisaatioissa infrakaverit ajaisivat. No kun ideasta keskustelin meidän oman infraporukan kanssa niin varsin aikaisessa vaiheessa joku totesi että nykyään kaikki pitää olla PowerShell-rajapinnan takana. Ja minä sitten menin tuota uskomaan.

PowerShell-skriptiä en ollut koskaan tehnyt enkä oikeasti ole edes joutunut käyttään CmdLet-palikoita. Ensimmäiset googlaukset menivät hutiksi koska hakusanojen perusteella löytyi vain kuinka kirjoitetaan ps-skripti PowerShell:llä. Aikani lisäilin sopivia hakusanoja niin johan löytyi muutama ihan kunnollinen tutoriaali miten itse tehdään Visual studiolla ja C#:lla oma powershell-laajennusosa. Esimerkiksi tästä löytyy tiiviisti oleellista asiaa PowerShell-moduulien tekemisestä ja niiden parameterirajapinnasta.

Loppujen lopuksi rajapinta CmdLetin tekemiseen on aika yksinkertainen. Periytytetään oma luokka CmdLet-kantaluokasta, määritellään attribuuteilla minkä niminen CmdLet:in verbistä tulee ja minkä tyyppistä dataa se palauttaa. Paluutyyppi kannattaa määrittää putkituksen takia. Lisäksi parametrien välitys CmdLet:lle vaati hieman opiskelua mutta lopulta aika suoraviivaisesti parametrit asettuu propertyihin attribuuttien avulla. Varsinainen toiminto mitä CmdLet-tekee koodataan yhteen ylikirjoitettavaan metodiin ProcessRecord, ei sinällään mitään rakettitiedettä.

Tarkoitus oli alunperin tehdä kolme CmdLet:iä, ensimmäinen etsii halutut tiedostot ja välittää ne seuraavalla prosessoitavaksi ja kolmas olisi sitten kirjoittanut sopivaan paikkaa tulokset. No ennen kuin olin ehtinyt edes kaikkia tehdä niin sain ohjeistuksen että tuohon pitäisi tehdä vielä hieno käyttöliittymä jotta käyttäminen onnistuisi muiltakin kuin PowerShell-osaajilta. Sitä selvitellessä tuli aika nopeasti ilmi että PowerShell-käyttöliittymähän on itse asiassa XAML-koodausta joten siirsin koko projektin koodin WPF-projektiin. Se siitä PowerShell-koodauksesta.

Tulipahan tutustuttua yhteen uuteen asiaan ja kynnys jatkossa tehdä joku toiminto PowerShell-moduuliksi laski nollaan. Ja varmasti PowerShell-laajennoksille löytyy koodaajan kannalta paljon hyviä paikkoja missä sitä voi hyödyntää vaikka tällä kertaa ei osunutkaan omalle kohdalle.

Hololens-ohjelmointikokemuksia, osa 1

2.12.2016 in Hololens, Sovelluskehitys, Windows 10 by Heikki Raatikainen

Pääsin kokeilemaan itse ensimmäisen kerran Microsoftin Hololens virtuaalilaseja muutama viikko sitten. Hololens on Mixed Rality-tyyppinen laite eli sen läpi näkyy reaalimaailma johonHololens lisää asioita, esimerkiksi näyttää Excel-taulukon jollain seinällä. Kannattaa katsoa vaikka Youtubesta löytyviä esittelyvideoita Hololensistä joista saa käsityksen siitä miten ne toimivat (Demo). Omakohtainen kokemus on vielä järisyttävämpi vaikka laite on omassa luokassaan ensimmäinen versio ja varmasti teknistä kehitystä tulee paljon lähivuosina.LIsää tietoa löytyy vaikka täältä.
Muutaman kokeilukerran jälkeen sitten miettimään miten tuota laitetta voisi hyödyntää tekemällä siihen omia sovelluksia. Ohjelmointivaihtoehdot ovat UWP, Unity ja DirectX/C++. Koska olen tehnyt C#:lla ja WPF:llä sovelluksia tuntui tuo UWP (Universal Windows Platform) luonnollisimmalta valinnalta ensimmäisen sovelluksen tekemiseen. UWP-sovellukset toimivat kaikilla Windows 10 laitteilla, niin puhelimissa kuin isoilla seinänkokoisilla kosketusnäytöillä. UWP:llä aloittaminen on aika helppoa jos osaa WPF:ää ja C#-kielen mutta aika nopeasti selviää että pelkästään WPF-taidot eivät riitä, UWP-kirjastot ovat sopivasti hieman erilaisia kuin perinteisen .NET:in kirjastot eli opeteltavaa ja googlettavaa riittää.
Kehitysympäristön asentaminen on helppoa ja UWP-sovelluksiahan voi tehdä ja testata Windows 10 -koneessa. Hololensin kanssa homma melkein loppui alkumeterille koska emulaattori asentui hienosti mutta ei suostunut toimimaan minun koneessa. Aikani pähkäilyäni totesin että asennetaan koko homma tyhjään koneeseen ja ongelmat katosivat. Hololens-laitteen ja kehityskoneen yhdistämisen jälkeen deployment ja testaaminen laitteella onnistuu varsin vaivattomasti.
Ensimmäinen sovellus oli totta kai ’hello world’ -tyyppinen yksinkertainen sovellus muutamalla kontrollilla ja tapahtumakäsittelijällä.
Sovelto on mukana T2D-projektissa jonka puitteissa pääsin tekemään hieman oikeampaa sovellusta Hololensille. Toisen Hololens-sovellukseni (Thing Explorer) avulla pystyy lukemaan QR-koodin ja sen sisältämän tunnistemerkkijonon perusteella hakemaan pilvestä inventaaripalvelulta tunnisteen mukaisen ’asian’ tarkemmat tiedot.
UWP-sovellukset ovat käytännössä 2D-sovelluksia joten Thing Explorer ei vielä hyödynnä täysipainoisesti Hololensin 3D-ominaisuuksia. Seuraavana pitää aloittaa Unityn opiskelu jotta pääsen hyödyntämään paremmin laitteen tarjoamat mahdollisuudet. Tästä ja muista Hololens-asioita lisää myöhemmin seuraavissa blogeissa.

Räjäytä siilot ja nosta suorituskykyä DevOpsilla

21.10.2016 in DevOps, Sovelluskehitys by Meiju Sundelin

Viime vuosina on nähty lukuisia hype-termejä: Agile, Scrum, Bigdata, Lean IT… DevOps lienee näistä yksi kaikkein arvoituksellisimmista. Tätä termiä käytetäänkin usein melko häilyvästi ilman, että ihan tarkalleen on selvää, mitä se tarkoittaa. Mitä siis DevOps on ja mitä hyötyä siitä on? Read the rest of this entry →