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 →

Mistä tietoa Azuren uusista ja tulevista ominaisuuksista

18.4.2017 in Azure, Pilvipalvelut, Yleinen by Heikki Bergius

Cloud Platform RoadmapMicrosoftin Azure-pilvipalvelualusta kehittyy jatkuvasti. Uusia ja parannettuja ominaisuuksia tulee jatkuvalla syötöllä viikoittain.
Azure-asiantuntijoille on ollut työlästä pysyä kehityksen mukana ja seurata mitä kaikkea mielenkiintoista Azureen on viime aikoina rakennettu. Tämä on monesti haitannut myös Azureen tehtäviä käytännön toteutuksia kun välttämättä ei ole ollut tiedossa kaikki uusia tai lähiaikoina tulevia ominaisuuksia.
Jokin aika sitten Microsoft julkisti netissä toimivan Cloud Platform Roadmap -sovelluksen, joka tuo helpotusta tähän tuskaan.
Kyseisellä sovelluksella on helppo tarkastella niin Azureen jo tulleita uusia asioita ja ominaisuuksia kuin myös ominaisuuksia jotka ovat vielä Preview-vaiheessa tai kehityksen alla.
Kyseinen Cloud Platform Roadmap -sovellus löytyy täältä.

Azure Data Analyst -akatemia

5.4.2017 in Azure, Yleinen by Sakari Kouti

Taustaa

Alkuvuodesta 2017 me Soveltossa aloimme miettiä uudentyyppisiä pitkäkestoisia Azure-valmennuksia. Azure on kuitenkin niin laaja kokonaisuus, joka muuttuu jatkuvasti, että perinteisellä lyhyellä luokkakurssilla sitä on hankala kattaa kuin pieneltä osin.

Päätimme tehdä valmennukset kaikille Azuren parissa työskenteleville toimenkuville, eli arkkitehti, infra-ammattilainen, sovelluskehittäjä ja Data Analyst. Viimeksi mainituille työstimme Azure Data Analyst -akatemian.

Lähtökohtamme Akatemian suunnittelussa oli, että Big Data on nykypäivän kuumimpia trendejä ja monet organisaatiot jo hyödyntävät sitä, tai miettivät, miten voisivat hyödyntää. Niinpä tämän alueen osaajille on kova kysyntä. Toisaalta taas Azure-pilviteknologia tarjoaa uusia työkaluja toteuttaa näitä hankkeita.

Sisältö

Jaoimme Akatemian neljään osa-alueeseen, jotka samalla kuvastavat tietojen analysointimenetelmiä ja visualisointitapoja Microsoftin tekniikoilla, ja lisäksi alussa käydään läpi Big Data Big Picture. Osa-alueet ovat:

  • Big Datan käsittely Azure HDInsightilla. HDInsight on Hadoop Azuressa, eli monipuolinen datan käsittely- ja analysointiklusteri, joka sisältää implementaatiot useista eri klusterityypeistä (mm. Hadoop, Storm, Spark, R Server, jne.) ja tekniikoista (Map-Reduce, Hive, Pig, Sqoop, Mahout, jne.)
  • Big Datan analysointi R-kielellä. R-kieli on johtava tilastomatemaattinen ohjelmointikieli datan käsittelyyn. Microsoftin R Serveristä löytyy yli 8000 valmista Open Source R-pakettia suoraan hyödynnettäväksi omissa analysoinneissa.
  • Azure Machine Learning on tietojen analysointia pilvessä, jossa toteutetaan ennustemalleja. ML perustuu ennustavaan analytiikkaan algoritmien avulla (petosten havainnointi, ostoskorianalyysi, myynnin ennustaminen, jne.). Analyysiratkaisut toteutetaan ML-studiolla hyödyntäen valmiita moduuleita tai itse tehtyjä (esim. R-kielisiä) algoritmeja.
  • Datan analysointi ja visualisointi Power BI:llä. Power BI on puolestaan helppokäyttöinen tietojen analysointi- ja erityisesti visualisointialusta, jolla voidaan luoda näyttäviä koontinäyttöjä esim. Azure-palveluiden tuottamasta datasta.

Azure Data Analyst -rakenne

Puitteet

Päätimme rytmittää Akatemian niin, että kukin neljästä osa-alueesta vastaa yhtä etäjaksoa, jonka kesto on muutaman viikon. Näiden väleihin olemme sijoittaneet lähipäivät. Kussakin sellaisessa käydään läpi menneen jakson harjoitustyö sekä esitellään seuraavan jakson tekniikat ja uusi harjoitustyö.

Näin Akatemian yhteiskestoksi tulee muutama kuukausi ja arvioimme, että kunkin etäjakson aikana osallistujan täytyisi käyttää omaa tai työnantajansa aikaa 15-20 tuntia. Kun neljän etäjakson ympärillä on lähipäivät, ja alussa kaksipäiväinen aloitus, niin lähipäiviä kertyy yhteensä kuusi. Lähipäiviin annamme mahdollisuuden osallistua myös online-muodossa, samaan tapaan kuin Sovelton tavallisillekin kursseille.

Kurssimateriaali on monimuotoista, eli osa on luento- ja osa itseopiskelumateriaalia, osa luettavaa ja osa videomuodossa. Kieleltään ne ovat osin suomeksi, osin englanniksi.

Osallistujan sopiva tausta on mielestämme BI Developer, sovelluskehittäjä, tietokanta-asiantuntija, Report Developer tai infra-asiantuntija. Pakollisia esitietoja emme vaadi, mutta jos ennestään osaat vähän SQL-kieltä ja muuta ohjelmointia, esim. C# tai PowerShell, niin siitä on luultavasti apua.

Alla vielä asia pähkinänkuoressa.

Pekka Korhonen ja Sakari Kouti
Sovelto

Akatemian rakenne

  • Akatemia koostuu neljästä aihepiiristä, joista kuhunkin on noin 3 – 4 vk etäjakso:
    • Big Datan käsittely Azure HDInsightilla
    • Big Datan analysointi R-kielellä
    • Azure Machine Learning
    • Datan analysointi ja visualisointi Power BI:llä
  • Kunkin etäjakson aikana on itseopiskelua ja harjoitustyö, ja päätteeksi lähipäivä, jossa on harjoitustyön purku ja seuraavan jakson alustus. Jaksot päättäviin neljään lähipäivään suositellaan osallistumaan Helsingissä paikan päällä, mutta myös online-osallistuminen on mahdollista.
  • Akatemia alkaa 2 pv kickoffilla, jossa käydään Big Data Big Picture sekä alustetaan ensimmäinen etäjakso. Kickoffiin osallistutaan paikan päällä.
  • Lähipäiviä on yhteensä 2 + 4 = 6, ja akatemian rakenne on
  • 2 pv, etäjakso, 1 pv, etäjakso, 1 pv, etäjakso, 1 pv, etäjakso, 1 pv

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.