You are browsing the archive for C#.

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 →

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.

Visual Studio 2015, uusi versio tuotannossa

2.9.2015 in Sovelluskehitys by Heikki Raatikainen

Taas on uusi Visual Studion versio tullut tuotantoon ja se sisältää paljon uusia ominaisuuksia vaikka ensi käynnistyksellä kaikki näyttää kovin samanlaiselta ja siirtyminen uuteen versioon tapahtuu helposti. Visual Studio 2015 toimii kehittimenä myös IOS- ja Android-sovelluksille Windowsin lisäksi.
Read the rest of this entry →