Modernit sovellukset ja asynkronisuus Heikki Raatikainen

Koko: px
Aloita esitys sivulta:

Download "Modernit sovellukset ja asynkronisuus Heikki Raatikainen"

Transkriptio

1 1 Modernit sovellukset ja asynkronisuus Heikki Raatikainen Miksi asynkronisuutta? Käyttöliittymät (sekä web että client) Käyttöliittymän pitäminen 'hengissä' Näytön päivitys taustalla Suorituskyvyn parantaminen Moniytimisten prosessorien tehokkaampi käyttö Yksi säie yksi ydin käytössä Logiikka pilkottu pienempiin osiin eri säikeille voidaan ajaa rinnan eri ytimillä 2

2 2 Kosketusnäytöt uudet haasteet koodaajalle Kosketusnäytössä voidaan painonappia painaa, valita listasta, asettaa focus haluttuun kenttään jne aivan kuten missä tahansa muussakin näyttötyypissä Mutta: kosketusnäytössä olevan sovelluksen on reagoitava välittömästi ilman mitään viiveitä jokaiseen käyttäjän toimintoon Yhtään pitkäkestoista toimintoa ei voi tehdä synkronisesti eli sillä perinteisellä tavalla tai sovellus on käytännössä käyttökelvoton käyttöliittymäkoodi muuttuu ja ohjelmoijalla ei ole muuta vaihtoehtoa kuin opetella asynkroninen koodaus ja kaikki sen vaatimat asiat 3 Web sovelluksen nopeudella on väliä Lähde: Amazon: 100 ms of extra load time caused a 1% drop in sales (source: Greg Linden, Amazon). Google: 500 ms of extra load time caused 20% fewer searches (source: Marrissa Mayer, Google). Yahoo!: 400 ms of extra load time caused a 5 9% increase in the number of people who clicked back before the page even loaded (source: Nicole Sullivan, Yahoo!). Siis sekä client- että server-koodi on optimoitava suorituskyvyn suhteen Client: JavaScript ja Ajax 4

3 3 JavaScript ja rinnakkaisuus Selaimien JavaScript on ollut yksisäikeistä rinnakkaisuus on pitänyt tehdä Timerkäsitteen avulla Toimii kaikilla selaimilla settimeout(haeuutinen, 1000); HTML5: säikeistys voidaan tehdä Web Workereillä var hakutoiminto = new Worker('haku.js'); function hae(query) { hakutoiminto.postmessage(query); 5 Perinteinen UI 'ongelma' Käynnistä toiminto, mahdollisesti keskeytä (haku tai prosessointi) täysin ratkaistavissa, vaatii rinnakkaisuutta ja sen ymmärtämistä 6

4 4 Mikä rinnakkaisuudessa on sitten vaikeaa? Ei pitäisi olla mitään vaikeaa, mutta käytäntö on osoittanut toista Teknisesti esimerkiksi.net kirjastossa ja kielissä on varmasti kaikki tarvittavat osat rinnakkaisuuden toteuttamiseen ja hallintaan Merkittävää on ymmärtää miksi rinnakkaisuutta (asynkronisia) toimintoja tarvitaan ja mitä muita vaatimuksia tulee esille (mm.): säie-turvallinen datan käsittely, synkronointimekanismit käyttöliittymän päivitys vain ja ainoastaan käyttöliittymän tehneeltä säikeeltä Saman datan käsittely eri säikeistä pitää suojata, muuten sovellus voi käyttäytyä epämääräisesti Toimintojen keskinäinen ajastaminen, tarvitaanko? Debuggaaminen on haasteellista 7 Historiasta nykyisyyteen säie (.NET ja Win32API) FX1.1 BackgroundWorker-komponentti Lambda-lausekkeet, Extension-metodit delegaatin Begin-/EndInvoke ThreadPool System.Threading.Timer class FX3.5 Synkronointiluokat: Mutex, Monitor, Semaphore WaitEventHandle, prosessoreiden hyödyntäminen, uudet ohjelmointimallit (Task) Parallel.Invoke, For ja ForEach FX4 CancellationToken Task, Task.Factory Barrier, CountdownEvent, Parallel LINQ SemaphoreSlim, SpinLock, SpinWait F# ConcurrentCollections Asynkroninen UI async ja await (C#5) FX4.5 FX2 8

5 5 Rinnakkaisuuden tekniikoita Thread Käynnistäminen delegaatin kautta: BeginInvoke/EndInvoke BackgroundWorker Parallel.For, Parallel.ForEach ja Parallel.Invoke Task PLINQ async ja await (C#5 ja Task-luokka) Patternit: Asynchronous Programming Model (APM) Event-based Asynchronous Pattern (EAP) Task-based Asynchronous Pattern (TAP) ja tietysti kaikki synkronointi- ja sarjallistamismekanismit 9 Patternien erot Synkroninen APM EAP TAP public class MyClass { public int Read(byte [] buffer, int offset, int count); public class MyClass { public IAsyncResult BeginRead(byte [] buffer, int offset, int count, AsyncCallback callback, object state); public int EndRead(IAsyncResult asyncresult); public class MyClass { public void ReadAsync(byte [] buffer, int offset, int count); public event ReadCompletedEventHandler ReadCompleted; public class MyClass { public Task<int> ReadAsync(byte [] buffer, int offset, int count); 10

6 6 Client-käyttöliittymät WinForms käyttöliittymän päivitys vain sillä säikeellä joka on luonut kontrollin, taustasäikeeltä siirretään suorituskonteksti oikealle säikeelle Invoke-metodilla WPF-sovelluksessa sama rajoite, mutta päivityksessä käytetään Dispacher-luokkaa, monipuolisempi kuin WinFormsin tekniikka private void taustahommadispatcher() { Action<int> lisäälistaan = j => listbox1.items.add(j); for (int i = 0; i < 10; i++) { Dispatcher.Invoke(lisääListaan, DispatcherPriority.Normal, i); 11 BackgroundWorker komponentti Yksinkertaistaa taustasäikeiden käyttöä tuli versioon FX2 helpottamaan 'vaikeaa' rinnakkaisuuden toteuttamista RunWorkerAsync metodi käynnistää toiminnan Toimintologiikka koodataan DoWork tapahtumaan ProgressChanged ja RunWorkerCompleted tapahtumat suorittuvat "pääsäikeessä" Voi käyttää kaikissa sovellustyypeissä, esim. Service:ssä ja konsolisovelluksessa yhtä hyvin kuin Windows-sovelluksessa (WinForms ja WPF) tai Web-sovelluksessakin 12

7 7 Teknisiä rajoitteita ja ongelmia Säikeet eivät ole ilmaisia, niitä käytettäessä tulee Context switch:ejä jotka kuluttavat resursseja ja moniytimisten prosessorien tehokas käyttäminen on haastavaa ThreadPool on ollut tehokkaampi tapa, mutta käynnistetyn metodin tilaa on mahdotonta hallita/valvoa, esim ei tietoa milloin metodi on päättynyt: var mre = new ManualResetEvent(false); ThreadPool.QueueUserWorkItem( (o) => { PitkäHomma(); mre.set();); mre.waitone(); 13 Task Parallel Library PLINQ LINQ-kyselyn suorittaminen pienissä osissa rinnakkain (.AsParallel()) Parallel Helppo tapa käynnistää metodeja rinnakkain suoritukseen ja odottaa niiden päättymistä Parallel.Invoke, Parallel.For ja Parallel.ForEach, näiden tehokas hyödyntäminen edellyttää että rinnakkain suoritettavilla toiminnoilla ei ole keskinäisiä riippuvuuksia Jos on, niin rinnakkaisuuden määrä pienenee ja hyödyt jäävät vähäisemmiksi Task Rinnakkaisuuden merkittävin käsite.net4:stä lähtien Ajatusmallimuutos: Task on enemmän looginen käsite kuin tekniikka.net tarjoaa paljon asynkronisia palveluita jotka perustuvat Task-käsitteeseen Toimintojen keskeytys: CancellationToken ja CancellationTokenSource 14

8 8 Parallel LINQ LINQ-kyselyiden suorittaminen rinnakkain, voidaan määritellä monellako prosessorilla/ytimellä suoritetaan samaan aikaan automaattisesti kaikki kyselyt eivät toimi rinnakkain saattaa olla riippuvuuksia tai rajoituksia oletus sama kuin aikaisemmin yhteensopivuus var q = from p in people.asparallel() where p.name == queryinfo.name && p.state == queryinfo.state && p.year >= yearstart && p.year <= yearend orderby p.year ascending select p; 15 Parallel-luokka Parallel.Invoke rinnakkaisten toimintojen käynnistys, toiminnoilla ei sivuvaikutuksia toistensa toimintoihin Parallel.For saman metodin käynnistäminen useita kertoja rinnakkain private void button4_click(object sender, EventArgs e) { Action toiminto = () => Trace.WriteLine("toimii"); Parallel.Invoke(toiminto, ()=>homma2(42), laskentaa); private void homma2(int indeksi) { // koodia private void laskentaa() { // koodia 16

9 9 System.Threading.Tasks.Task class Task-luokka ja Task.Factory.StartNew mahdollistavat ns. tehtävien (ovat siis metodeja) käynnistämisen Parallel.Invoke:n tavoin, mutta Task-käsittelyssä ohjelmoijalla on parempi kontrolli mitä tehdään ja mitä tapahtuu suorituksen aikana async ja await käyttävät myös Task:ia Action hello = () => { Console.Write("Hello"); ; Action world = () => { Console.Write("World"); ; //Parallel.Invoke(hello, world); Task taskhello = Task.Factory.StartNew(hello); Task taskworld = Task.Factory.StartNew(world); Task.WaitAll(taskHello, taskworld); 17 Task - käynnistys Task sisältää propertynä TaskFactory-luokan, sen static-metodeilla käynnistetään taskit Käynnistyksessä parametrillä ohjataan toimintaa, esimerkiksi voidaan kertoa skedulerille että metodi kestää pitkään ja joutuu odottamaan välillä tai voidaan välittää CancellationToken Käynnistyksessä paluuarvona Task-luokka Sekä Action että Func delegaatit (siis paluuarvo on ok) Task.Factory.StartNew( () => Laskentaa(), TaskCreationOptions.LongRunning); var t = Task<string>.Factory.StartNew(() => 42.ToString()); t.wait(); this.title = t.result; 18

10 10 Tehtävien riippuvuudet toisista Miten seuraavan kaavion mukaiset toiminnot saadaan suoritettu rinnakkain? Nuolet osoittavat keskinäiset riippuvuudet eli metodien suoritysjärjestyksen 19 Task.Factory Parallel.Invoke ei yksin riitä, edellisen sivun esimerkki joko säikeillä tai monella Parallel.Invoke:lla tai Taskeilla: var f = Task.Factory; var build1 = f.startnew(() => Build(project1)); var build2 = f.startnew(() => Build(project2)); var build3 = f.startnew(() => Build(project3)); var build4 = f.continuewhenall(new[] { build1, _ => Build(project4)); var build5 = f.continuewhenall(new[] { build1, build2, build3, _ => Build(project5)); var build6 = f.continuewhenall(new[] { build3, build4, _ => Build(project6)); var build7 = f.continuewhenall(new[] { build5, build6, _ => Build(project7)); var build8 = f.continuewhenall(new[] { build5, _ => Build(project8)); Task.WaitAll(build1, build2, build3, build4, build5, build6, build7, build8); 20

11 11 Task odotus ja jatko Task:ia voidaan odottaa Wait-metodilla Monta taskia: odotetaan kaikkia tai ensimmäistä valmistunutta Jatkumo: kun taski on valmis niin saadaan automaattisesti käynnistymään seuraava metodi (task) var t = Task<string>.Factory.StartNew(() => 42.ToString()); t.continuewith(s=>trace.writeline("valmis", s.result)); var task1 = Task.Factory.StartNew(() => Lue()); var task2 = Task.Factory.StartNew(() => Laske()); var task3 = Task.Factory.StartNew(() => JokuMuu()); Task.WaitAll(task1, task2, task3); // tai Task.WaitAny(task1, task2, task3); Task.Factory.StartNew(() =>{ Thread.Sleep(3000);return "vastaus on 42";).ContinueWith(t => Console.WriteLine(t.Result)).ContinueWith(t => Console.WriteLine("Valmista on!")); 21 Task ja UI Task voi valita mitä skeduleria se käyttää, voidaan hyödyntää UI-ohjelmoinnossa (async/await vielä helpompi ratkaisu) //WPF-koodia: private void B_Click(object sender, RoutedEventArgs e) { button1.isenabled = false; // haetaan UI-säikeen konteksti käyttöön: var uischeduler = TaskScheduler.FromCurrentSynchronizationContext(); var t = Task<int>.Factory.StartNew(() => slowfunc(1, 2)); t.continuewith(x => { label1.content = "tulos: " + t.result.tostring(); button1.isenabled = true;, uischeduler ); 22

12 12 C#5: async ja await C#5 sisältää kieleen lisätyn piirteen, jolla voidaan toteuttaa entistä helpommin asynkronisia toimintoja. Käytännössä saadaan ajettua yhdellä säikeellä eri metodeja vuorotellen. async: esitellään metodi, jonka koodissa on await:lla tehtäviä asynkronisia metodikutsuja. Kääntäjä tuottaa koodia, joka odottaa await-metodin paluuta mutta sillä välin suorittaa async-metodin kutsujaa await: luovutetaan suoritusvuoro jollekin toiselle suorituskelpoiselle metodille 23 async (ja UI) esimerkki private async void B_Click(object sender, RoutedEventArgs e){ Title = "Haetaan uutisotsikoita..."; Otsikot = new ObservableCollection<string>( await haeotsikot ()); // B Click:n kutsuja pääsee suoritukseen sanomajonosta käsitellään // seuraavat sanomat käyttöliittymä pysyy toiminnassa // ja kun haeotsikot on valmis koodin suoritus jatkuu tästä Title = "Löytyi " + Otsikot.Count + " kpl otsikoita"; private Task<List<string>> haeotsikot () { Task<List<string>> t = new Task<List<string>>(() => { return uutispalvelu.haeotsikot(); ); t.start(); return t; 24

13 13 Web-sovellukset ja Taskit Jo.NET 1.0 sisälsi IHttpAsyncHandler rajapinnan ASP.NET MVC 2, 3, 4: AsyncController-luokka Asynkronisen kontrollerin tekeminen on helppoa async/await:in avulla Public class UutisiaController: AsyncController { public async Task<ActionResult> UutisetAsync(string syotenimi) { HakuToiminto.DataPalvelu data = new HakuToiminto.DataPalvelu(); return View("Uutiset", await syotteenuutiset(syotenimi)); // 25 AsyncController aikaisemmin public class HomeController : AsyncController { public void LongRunningActionAsync() { AsyncManager.OutstandingOperations.Increment(); Task.Factory.StartNew(() => DoLengthyOperation()); private void DoLengthyOperation() { Thread.Sleep(5000); AsyncManager.Parameters["message"] = "hello world"; AsyncManager.OutstandingOperations.Decrement(); public ActionResult LongRunningActionCompleted(string message) { return View(); 26

14 14 Milloin AsyncController? Jos Action-metodit ovat yksinkertaisia ja/tai CPU-intensiivisiä, käytä synkronista kontrolleria tai koodia ei haluta monimutkaistaa lainkaan HTTP-pyynnön suoritetaan ThreadPoolista otetun säikeen kontekstissa Asynkroniset kontrollerit/actionit mahdollistavat monen pyynnön yhtäaikaisen suorituksen samalla säikeellä parempi suorituskyky 27 Async ja Framework Task/Async toimintoja valmiina: Toiminto Web-toiminnot Tiedosto-IO Kuvien käsittely WCF Luokka käyttää async-metodeja HttpClient, SyndicationClient, Socket StorageFile, StreamWriter, StreamReader, XmlReader MediaCapture, BitmapEncoder, BitmapDecoder Synchronous and Asynchronous Operations try { string uri = " string body = await client.getstringasync(uri); Console.WriteLine(body); catch (HttpRequestException ex) { Console.WriteLine("Virhe: {0", ex.message); 28

15 15 Task ja.net Task on merkittävä koska sitä käyttää varsin moni luokka/metodi Muita vaihtoehtoja on mm. Reactive Extensions (RX) The Reactive Extensions (Rx)......is a library to compose asynchronous and event-based programs using observable collections and LINQ-style query operators. 29 Synkronointi Muista huolehtia siitä että vain yksi säie/taski käsittelee kerrallaan mitä tahansa tietorakennetta Jopa kokonaislukumuuttujan käsittely täytyy tehdä oikein rinnakkaisessa koodissa Synkronointiluokkia on runsaasti sekä prosessien väliseen synkronointiin että prosessin sisällä eri säikeiden synkronointiin 30

16 16 System.Collections.Concurrent Säieturvalliset kokoelmaluokat, esim: ConcurrentBag<T> ConcurrentDictionary<TKey, TValue> ConcurrentQueue<T> ConcurrentStack<T> ConcurrentList<T> puuttuu koska sen toteuttaminen on säieturvallisesti erittäin vaikeaa Ohjelmoijalta jää pois säikeiden ja taskien välinen synkronointi kokoelmaluokkien käytössä ConcurrentDictionary<int, string> cd = new ConcurrentDictionary<int, string>(); cd.addorupdate(1, "eka", (j, k) => k + j.tostring()); bool ok = cd.tryadd(2, "kakkonen"); string s = cd[1]; ok = cd.trygetvalue(1, out s); 31 Windows 8 ja WinRT Windows 8 sisältää kaksi puolta: perinteinen UI ja Win32API kosketusnäytölle optimoitu WINRT WinRT:ssä kaikki mahdollisesti pitkäkestoiset toiminnot ovat asynkronisia joten rinnakkaisuuteen liittyvät asiat on pakko osata ja käyttää WinRT-sovelluksissa C#-koodaajan kannalta async/await samanlaista private async void Button_Click(object sender, RoutedEventArgs e) { SyndicationClient client = new SyndicationClient(); client.bypasscacheonretrieve = true; Uri feeduri = new Uri(" feed = await client.retrievefeedasync(feeduri); feeddata feeddata = new feeddata(); items feeditem = null; foreach (SyndicationItem item in feed.items) //... 32

17 17 Debuggerin apuvälineitä Debuggerin ikkunat: Concurrency Visualizer (Analyze-valikossa) analyysi suorituksen rinnakkaisuudesta 33.NET-koodarin pakolliset taidot Generics-määrittelyt Extension-metodit Lambda-lausekkeet ja delegaatit, liittyvät kaikkeen asynkroniseen käsittelyyn Task-käsite async/await Synkronointimekanismit Tarvitaan sekä tekninen osaaminen että ymmärrys miksi ja miten asioita pitää tehdä 34

18 18 Aihealueen kursseja Soveltossa Essentials of Developing Windows Store Apps Using C#, 3 pv C# ja.net Framework -ohjelmointi, 4pv ASP.NET MVC, 3pv Thank you for coming! Feedback can be given via mobile or laptop through techdays.fi seminar schedule Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentations. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION. #td2013fi

19 19 Q&A t

Asynkroninen ohjelmointi.net 4.5 versiolla

Asynkroninen ohjelmointi.net 4.5 versiolla Asynkroninen ohjelmointi.net 4.5 versiolla Jari Kallonen Software Specialist at Tieturi Oy Régis Laurent Director of Operations, Global Knowledge Competencies include: Gold Learning Silver System Management

Lisätiedot

Windows Phone 7.5 erilainen ja fiksu älypuhelin. Vesa-Matti Paananen Liiketoimintajohtaja, Windows Phone Microsoft Oy vesku@microsoft.

Windows Phone 7.5 erilainen ja fiksu älypuhelin. Vesa-Matti Paananen Liiketoimintajohtaja, Windows Phone Microsoft Oy vesku@microsoft. Windows Phone 7.5 erilainen ja fiksu älypuhelin Vesa-Matti Paananen Liiketoimintajohtaja, Windows Phone Microsoft Oy vesku@microsoft.com Agenda 29.11.2011 Microsoftin strategia pähkinän kuoressa Kuluttajat

Lisätiedot

Office 2013 ja SQL Server 2012 SP1 uudet BI toiminnallisuudet Marko Somppi/Invenco Oy

Office 2013 ja SQL Server 2012 SP1 uudet BI toiminnallisuudet Marko Somppi/Invenco Oy t Office 2013 ja SQL Server 2012 SP1 uudet BI toiminnallisuudet Marko Somppi/Invenco Oy Agenda 1. Office Excel 2013 2. SharePoint 2013 3. SQL Server 2012 SP1 4. SharePoint 2013 BI-arkkitehtuuri 5. Kunta-analyysi

Lisätiedot

Malleja verkostojen rakentamisesta

Malleja verkostojen rakentamisesta Tieke Tietoyhteiskunnan kehittämiskeskus ry Malleja verkostojen rakentamisesta Antti Larsio, teknologiajohtaja Esityksen sisältö Pelikenttä Win-Win-Win Ansaintalogiikka Verkostot Pelikenttä YHTEISKUNTAJÄRJESTELMÄ

Lisätiedot

SQL SERVER 2012 PARALLEL DATA WAREHOUSE APPLIANCE

SQL SERVER 2012 PARALLEL DATA WAREHOUSE APPLIANCE SQL SERVER 2012 PARALLEL DATA WAREHOUSE APPLIANCE Toukokuu, 2013 Pekka Pykäläinen Tuote- ja ratkaisupäällikkö Application Platform Microsoft HYÖDYNNÄ KAIKKI KÄYTETTÄVISSÄ OLEVA TIETO NEW WORLD OF DATA

Lisätiedot

Kuluttajapalvelun rakentaminen. Omegawave Mikko Heilimo

Kuluttajapalvelun rakentaminen. Omegawave Mikko Heilimo t Kuluttajapalvelun rakentaminen Omegawave Mikko Heilimo Agenda Omegawave lyhyesti Régis Laurent Director of Operations, Global Knowledge Competencies include: Gold Learning Silver System Management Mitä

Lisätiedot

Vi V nk n kej e ä Wi W nd n o d w o s 7: 7 n : käy ä tttö t ö ö n ö Etunimi Sukunimi

Vi V nk n kej e ä Wi W nd n o d w o s 7: 7 n : käy ä tttö t ö ö n ö Etunimi Sukunimi Vinkkejä Windows 7:n käyttöön Etunimi Sukunimi Uudet tuulet, uudet taustakuvat Microsoftilla on ollut tapana julkaista uusia taustakuvia uuden Windows-version mukana. Maisemavalokuvat ovat olleet Windowsin

Lisätiedot

Konesali ilman rajoja Kongressi A 5.3.2013

Konesali ilman rajoja Kongressi A 5.3.2013 Konesali ilman rajoja Kongressi A 5.3.2013 t SC Orchestrator 2012 SP1 Harri Puupponen 5.3.2013 t 2012 Microsoft Corporation. All rights reserved. Sisältö Yleistä Arkkitehtuuri Uudet ominaisuudet Demoja

Lisätiedot

Luottamuksellinen viestintä. Kimmo Bergius Tietoturvajohtaja Microsoft Oy kimmo.bergius@microsoft.com

Luottamuksellinen viestintä. Kimmo Bergius Tietoturvajohtaja Microsoft Oy kimmo.bergius@microsoft.com Luottamuksellinen viestintä Kimmo Bergius Tietoturvajohtaja Microsoft Oy kimmo.bergius@microsoft.com Joustava ja luotettava Jatkuva käytettävyys Yksinkertaistettu hallinta Joustava käyttöönotto Käytettävyys

Lisätiedot

Tech Conference 28.-29.5.2015. Visual Studio 2015, C#6,.NET4.6. Heikki Raatikainen. #TechConfFI

Tech Conference 28.-29.5.2015. Visual Studio 2015, C#6,.NET4.6. Heikki Raatikainen. #TechConfFI Tech Conference 28.-29.5.2015 Visual Studio 2015, C#6,.NET4.6 Heikki Raatikainen #TechConfFI Yleistä Avoimuus Open Source ja tuki yleisesti käytetyille ei-ms työkaluille Kaikki alustat tuettuna:.net 5

Lisätiedot

Rinnakkaisuus (.NET) Juha Järvensivu 2007

Rinnakkaisuus (.NET) Juha Järvensivu 2007 Rinnakkaisuus (.NET) Juha Järvensivu juha.jarvensivu@tut.fi 2007 Sisällys Rinnakkaisuus ja käyttöliittymäohjelmointi GUI-thread Asynkroninen delegaatti System.Timers.Timer Backgroundworker Responsive GUI

Lisätiedot

Office 2013 - käyttöönotto Heikki Bergius heikki.bergius@sovelto.fi

Office 2013 - käyttöönotto Heikki Bergius heikki.bergius@sovelto.fi Office 2013 - käyttöönotto Heikki Bergius heikki.bergius@sovelto.fi Sisältö 2 Office 2013 asennusvaihtoehdot Perusasennus Click-to-Run Office On Demand Asennuksissa huomioitavia asioita Office-asennus

Lisätiedot

Lisäarvoa liiketoimintaan

Lisäarvoa liiketoimintaan Lisäarvoa liiketoimintaan Ari Suominen, Tuote- ja ratkaisupäällikkö Tom Toivonen, Liiketoimintajohtaja Microsoft Oy Microsoft Lync Server 2010 Tervetuloa julkistustilaisuuteen Microsoft Lync Server 2010

Lisätiedot

Juha Karppinen juha.karppinen@microsoft.com liiketoimintajohta palvelinohjelmistot Microsoft Oy. Millaisiin ratkaisuihin pilvipalvelut soveltuvat?

Juha Karppinen juha.karppinen@microsoft.com liiketoimintajohta palvelinohjelmistot Microsoft Oy. Millaisiin ratkaisuihin pilvipalvelut soveltuvat? Juha Karppinen juha.karppinen@microsoft.com liiketoimintajohta palvelinohjelmistot Microsoft Oy Millaisiin ratkaisuihin pilvipalvelut soveltuvat? Esityksen sisältö Minkä tyyppisiä pilvipalveluita on tarjolla

Lisätiedot

Kustannustehokas ohjelmistopohjainen puhe- ja puhelinviestintä

Kustannustehokas ohjelmistopohjainen puhe- ja puhelinviestintä Kustannustehokas ohjelmistopohjainen puhe- ja puhelinviestintä Ari Auvinen, Teknologia-asiantuntija, Microsoft Oy Jani Brander, Teknologia-asiantuntija, Microsoft Oy Matka työnteon tulevaisuuteen Asiantuntijaorganisaatiomallit

Lisätiedot

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo Concurrency - Rinnakkaisuus Group: 9 Joni Laine Juho Vähätalo Sisällysluettelo 1. Johdanto... 3 2. C++ thread... 4 3. Python multiprocessing... 6 4. Java ExecutorService... 8 5. Yhteenveto... 9 6. Lähteet...

Lisätiedot

Tapahtumapohjainen ohjelmointi. Juha Järvensivu juha.jarvensivu@tut.fi 2007

Tapahtumapohjainen ohjelmointi. Juha Järvensivu juha.jarvensivu@tut.fi 2007 Tapahtumapohjainen ohjelmointi Juha Järvensivu juha.jarvensivu@tut.fi 2007 Sisältö Tapahtumapohjainen ohjelmointi Käyttöliittymän rakenne Pääikkuna (top-level window) Lapsi-ikkuna (child window) Dialogit

Lisätiedot

Intel Threading Building Blocks

Intel Threading Building Blocks Intel Threading Building Blocks Markku Vajaranta Esko Pekkarinen TBB Pähkinänkuoressa C++ luokkamallinen rinnakkaisuus Abstrahoi rinnakkaisuutta korkean tason tehtävät (tasks) ja niiden skedulointi suuri

Lisätiedot

Web Services tietokantaohjelmoinnin perusteet

Web Services tietokantaohjelmoinnin perusteet ASP.NET Web Services Web Services tietokantaohjelmoinnin 2 (22) Sisällys Harjoitus 1: Tietokannat ja Web Services... 3 Harjoitus 2: Windows Client... 10 Harjoitus 3: Datan päivitys TableAdapterin avulla...

Lisätiedot

Graafisen käyttöliittymän ohjelmointi

Graafisen käyttöliittymän ohjelmointi TIE-11300 Tietotekniikan vaihtuva-alainen kurssi Graafisen käyttöliittymän ohjelmointi Luento 2 Tapahtumapohjainen ohjelmointi Juha-Matti Vanhatupa Sisältö Tapahtumapohjainen ohjelmointi Tapahtumakuuntelijoiden

Lisätiedot

AJAX-konsepti AJAX. Asynkronisuus. Nykyisten web-ohjelmien ongelmia. Asynchronous JavaScript And XML

AJAX-konsepti AJAX. Asynkronisuus. Nykyisten web-ohjelmien ongelmia. Asynchronous JavaScript And XML AJAX-konsepti AJAX Asynchronous JavaScript And XML Viimeisin muoti-ilmiö web-ohjelmoinissa, termi Ajax tuli käyttöön vuoden 2005 aikana Joukko teknologioita, joiden avulla voidaan toteuttaa uudenlaisen

Lisätiedot

Olet vastuussa osaamisestasi

Olet vastuussa osaamisestasi Olet vastuussa osaamisestasi Ohjelmistoammattilaisuuden uudet haasteet Timo Vehmaro 02-12-2015 1 Nokia 2015 Mitä osaamista tulevaisuudessa tarvitaan? Vahva perusosaaminen on kaiken perusta Implementaatio

Lisätiedot

Yhdistetty viestintä - the next generation of communications. Harri Henell, Nokia Jorma Bergius, Microsoft Antti Kiviniemi, Microsoft

Yhdistetty viestintä - the next generation of communications. Harri Henell, Nokia Jorma Bergius, Microsoft Antti Kiviniemi, Microsoft Yhdistetty viestintä - the next generation of communications Harri Henell, Nokia Jorma Bergius, Microsoft Antti Kiviniemi, Microsoft Agenda Office 365:n uudet toiminnot Exchange Onlinen näkökulmasta Office

Lisätiedot

RINNAKKAINEN OHJELMOINTI A,

RINNAKKAINEN OHJELMOINTI A, RINNAKKAINEN OHJELMOINTI 815301A, 18.6.2005 1. Vastaa lyhyesti (2p kustakin): a) Mitkä ovat rinnakkaisen ohjelman oikeellisuuskriteerit? b) Mitä tarkoittaa laiska säikeen luominen? c) Mitä ovat kohtaaminen

Lisätiedot

Delegaatit ja tapahtumakäsittelijät

Delegaatit ja tapahtumakäsittelijät 14 Delegaatit ja tapahtumakäsittelijät Toinen käyttökelpoinen keksintö C#-kielessä ovat delegaatit. Periaatteessa ne palvelevat samaa tarkoitusta kuin C++:n funktio-osoittimet. Delegaatit ovat kuitenkin

Lisätiedot

Graafisen käyttöliittymän ohjelmointi Syksy 2013

Graafisen käyttöliittymän ohjelmointi Syksy 2013 TIE-11300 Tietotekniikan vaihtuva-alainen kurssi Graafisen käyttöliittymän ohjelmointi Syksy 2013 Luento 10 Rinnakkaisuus käyttöliittymäohjelmoinnissa Juha-Matti Vanhatupa Rinnakkaisuus ja käyttöliittymäohjelmointi

Lisätiedot

Juha Karppinen juha.karppinen@microsoft.com liiketoimintajohta palvelinohjelmistot Microsoft Oy. Millaisiin ratkaisuihin pilvipalvelut soveltuvat?

Juha Karppinen juha.karppinen@microsoft.com liiketoimintajohta palvelinohjelmistot Microsoft Oy. Millaisiin ratkaisuihin pilvipalvelut soveltuvat? Juha Karppinen juha.karppinen@microsoft.com liiketoimintajohta palvelinohjelmistot Microsoft Oy Millaisiin ratkaisuihin pilvipalvelut soveltuvat? Esityksen sisältö Pilvipalveluiden käyttökohteita Mitä

Lisätiedot

Puheviestinnän murros

Puheviestinnän murros Puheviestinnän murros Harri Mikkanen, Ratkaisumyyjä, Microsoft Oy Jani Brander, Teknologia-asiantuntija, Microsoft Oy Sisältö Uudet viestinnän teknologiat murtautuvat puheviestintään. Ajaako aika nykyisten

Lisätiedot

10 Lock Lock-lause

10 Lock Lock-lause 10 Lock Avainsanan lock (Lock keyword) avulla voidaan toteuttaa prosessien ja säikeiden välisessä keskinäisessä kommunikoinnissa käytettäviä synkronointi- ja poissuljentarakenteita. Tämän niin sanotun

Lisätiedot

Tuottavuutta viestinnän välineillä Asiantuntijatyön johtaminen. Ari Rahkonen Toimitusjohtaja, Microsoft Oy 1.10.2008

Tuottavuutta viestinnän välineillä Asiantuntijatyön johtaminen. Ari Rahkonen Toimitusjohtaja, Microsoft Oy 1.10.2008 Tuottavuutta viestinnän välineillä Asiantuntijatyön johtaminen Ari Rahkonen Toimitusjohtaja, Microsoft Oy 1.10.2008 Asiantuntijatyön johtaminen Työntekijöiden ja työnteon tehokkuuden parantaminen 54 %

Lisätiedot

Kill XP. Petri Paavola MVP 5.3.2013

Kill XP. Petri Paavola MVP 5.3.2013 Kill XP Petri Paavola MVP 5.3.2013 Agenda XP-tuki loppumassa Mitä pitäisi tehdä? Mihin pitäisi mennä? Miten maaliin päästään? Vinkki, josta varmasti kaikille hyötyä! Aihealueita: Windows 7, Windows 8,

Lisätiedot

C++11 seminaari, kevät Johannes Koskinen

C++11 seminaari, kevät Johannes Koskinen C++11 seminaari, kevät 2012 Johannes Koskinen Sisältö Mikä onkaan ongelma? Standardidraftin luku 29: Atomiset tyypit Muistimalli Rinnakkaisuus On multicore systems, when a thread writes a value to memory,

Lisätiedot

Rinnakkaisuuden hyväksikäyttö peleissä. Paula Kemppi

Rinnakkaisuuden hyväksikäyttö peleissä. Paula Kemppi Rinnakkaisuuden hyväksikäyttö peleissä Paula Kemppi 24.4.2008 Esityksen rakenne Johdantoa Rinnakkaisuus Pelimoottorien rinnakkaisuuden mallit Funktionaalisen rinnakkaisuuden malli Rinnakkaisen tiedon malli

Lisätiedot

Microsoft Visual Studio 2005

Microsoft Visual Studio 2005 Sovelluksen jako palvelimiksi: Palvelin on sille annettuun vastuulliseen tehtävään erikoistunut sovellusosa. Käyttöliittymäpalvelin (Web-palvelin) vastaa käyttöliittymän toteuttamisesta. Web-palvelin toteuttaa

Lisätiedot

Palvelut. Sulautetut järjestelmät Luku 2 Sivu 1 (??) Sulautetut käyttöjärjestelmät

Palvelut. Sulautetut järjestelmät Luku 2 Sivu 1 (??) Sulautetut käyttöjärjestelmät Sulautetut järjestelmät Luku 2 Sivu 1 (??) Palvelut Käyttöjärjestelmän tehtävänä on tarjota ohjelmoijalla erilaisia palveluita Tyypillisin palvelu, jota sulautetut käyttöjärjestelmät tarjoavat on prosessien

Lisätiedot

Graafisen käyttöliittymän ohjelmointi Syksy 2013

Graafisen käyttöliittymän ohjelmointi Syksy 2013 TIE-11300 Tietotekniikan vaihtuva-alainen kurssi Graafisen käyttöliittymän ohjelmointi Syksy 2013 Luento 8 Suunnittelumallit käyttöliittymäohjelmoinnissa Juha-Matti Vanhatupa Yleistä Suunnittelumalli on

Lisätiedot

C# ja.net. Juha Järvensivu 2007

C# ja.net. Juha Järvensivu 2007 C# ja.net Juha Järvensivu juha.jarvensivu@tut.fi 2007 Sisältö C#.NET-kirjastot C# - C-sharp Standardoitu kieli (2003) Kieli, jossa pyritään yhdistämään C++:n tehokkuus ja Javan helppokäyttöisyys Suunniteltu.NET-ohjelmointiin

Lisätiedot

Salasanan vaihto uuteen / How to change password

Salasanan vaihto uuteen / How to change password Salasanan vaihto uuteen / How to change password Sisällys Salasanakäytäntö / Password policy... 2 Salasanan vaihto verkkosivulla / Change password on website... 3 Salasanan vaihto matkapuhelimella / Change

Lisätiedot

2010-luvun kansalaistaito: Windows-puhelimen ohjelmointi. Kai Lindgren, Teollinen tuotanto/metropolia

2010-luvun kansalaistaito: Windows-puhelimen ohjelmointi. Kai Lindgren, Teollinen tuotanto/metropolia 2010-luvun kansalaistaito: Windows-puhelimen ohjelmointi Kai Lindgren, Teollinen tuotanto/metropolia Paikka: Metropolia Ammattikorkeakoulu, Helsinki, Bulevardi 31. Sali Engel (P317) Ohjelma 9.00 9.15 Tervetuloa!

Lisätiedot

FinFamily PostgreSQL installation ( ) FinFamily PostgreSQL

FinFamily PostgreSQL installation ( ) FinFamily PostgreSQL FinFamily PostgreSQL 1 Sisällys / Contents FinFamily PostgreSQL... 1 1. Asenna PostgreSQL tietokanta / Install PostgreSQL database... 3 1.1. PostgreSQL tietokannasta / About the PostgreSQL database...

Lisätiedot

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin peruskurssien laaja oppimäärä Ohjelmoinnin peruskurssien laaja oppimäärä Luento 19: Rinnakkaisuus Riku Saikkonen (merkityt ei-laajan kurssin kalvot: Otto Seppälä) 24. 3. 2011 Sisältö 1 Säikeet 2 Lukot 3 Monitorit 4 Muuta säikeisiin

Lisätiedot

Web järjestelmän ohjelmointi Kevät 2012 Hans Nieminen

Web järjestelmän ohjelmointi Kevät 2012 Hans Nieminen Harjoitus 1 Käsiteltävät aiheet: C# kielen kertaus luokat, oliot ja periytyminen poikkeukset ja niiden käsittely tapahtumat ja niiden käsittely C# 3.0 uudet ominaisuudet Visual Studio projektin kansiot

Lisätiedot

1. Mitä tehdään ensiksi?

1. Mitä tehdään ensiksi? 1. Mitä tehdään ensiksi? Antti Jussi i Lakanen Ohjelmointi 1, kevät 2010/ Jyväskylän yliopisto a) Etsitään Googlesta valmis algoritmi b) Mietitään miten itse tehtäisiin sama homma kynällä ja paperilla

Lisätiedot

On instrument costs in decentralized macroeconomic decision making (Helsingin Kauppakorkeakoulun julkaisuja ; D-31)

On instrument costs in decentralized macroeconomic decision making (Helsingin Kauppakorkeakoulun julkaisuja ; D-31) On instrument costs in decentralized macroeconomic decision making (Helsingin Kauppakorkeakoulun julkaisuja ; D-31) Juha Kahkonen Click here if your download doesn"t start automatically On instrument costs

Lisätiedot

Javan perusteita. Janne Käki

Javan perusteita. Janne Käki Javan perusteita Janne Käki 20.9.2006 Muutama perusasia Tietokone tekee juuri (ja vain) sen, mitä käsketään. Tietokone ymmärtää vain syntaksia (sanojen kirjoitusasua), ei semantiikkaa (sanojen merkitystä).

Lisätiedot

Rinnakkaisuus. Juha Järvensivu 2008

Rinnakkaisuus. Juha Järvensivu 2008 Rinnakkaisuus Juha Järvensivu juha.jarvensivu@tut.fi 2008 Sisällys Rinnakkaisuus ja käyttöliittymäohjelmointi GUI-thread.NET rinnakkaisuus Asynkroninen delegaatti (.NET) Timerit Backgroundworker (.NET)

Lisätiedot

Power BI 29.5.2015. Tech Conference 28.-29.5.2015. Power BI. Pekka.Korhonen@sovelto.fi. #TechConfFI. Johdanto

Power BI 29.5.2015. Tech Conference 28.-29.5.2015. Power BI. Pekka.Korhonen@sovelto.fi. #TechConfFI. Johdanto Tech Conference 28.-29.5.2015 Power BI Pekka.Korhonen@sovelto.fi #TechConfFI Johdanto 2 1 Microsoft BI komponentit Azure Machine Learning Stream Analytics HDInsight DocumentDB Blob/table storage VM SQL

Lisätiedot

XPages käyttö ja edut Jarkko Pietikäinen toimitusjohtaja, Netwell Oy

XPages käyttö ja edut Jarkko Pietikäinen toimitusjohtaja, Netwell Oy IBM Collaboration Forum ٨.٣.٢٠١١ XPages käyttö ja edut Jarkko Pietikäinen toimitusjohtaja, Netwell Oy ٢٠١١ IBM Corporation Domino-sovelluskehitys Nopea kehitysympäristö (Rapid application development,

Lisätiedot

JReleaser Yksikkötestaus ja JUnit. Mikko Mäkelä 6.11.2002

JReleaser Yksikkötestaus ja JUnit. Mikko Mäkelä 6.11.2002 JReleaser Yksikkötestaus ja JUnit Mikko Mäkelä 6.11.2002 Sisältö Johdanto yksikkötestaukseen JUnit yleisesti JUnit Framework API (TestCase, TestSuite) Testien suorittaminen eri työkaluilla Teknisiä käytäntöjä

Lisätiedot

Harjoitus 7. 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Harjoitus 7. 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti: Harjoitus 7 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti: class Lintu //Kentät private int _siivenpituus; protected double _aivojenkoko; private bool _osaakolentaa; //Ominaisuudet public int

Lisätiedot

Dart. Ryhmä 38. Ville Tahvanainen. Juha Häkli

Dart. Ryhmä 38. Ville Tahvanainen. Juha Häkli Dart Ryhmä 38 Ville Tahvanainen Juha Häkli 1.LYHYESTI Dart on luokkapohjainen, yksiperintäinen, puhdas olio-ohjelmointikieli. Dart on dynaamisesti tyypitetty. Sovellukset on organisoitu modulaarisiksi

Lisätiedot

Tapahtumapohjainen ohjelmointi. Juha Järvensivu 2008

Tapahtumapohjainen ohjelmointi. Juha Järvensivu 2008 Tapahtumapohjainen ohjelmointi Juha Järvensivu juha.jarvensivu@tut.fi 2008 Sisältö Tapahtumapohjainen ohjelmointi Käyttöliittymän rakenne Pääikkuna (top-level window) Lapsi-ikkuna (child window) Dialogit

Lisätiedot

4. Luento: Prosessit ja säikeets. Tommi Mikkonen, tommi.mikkonen@tut.fi

4. Luento: Prosessit ja säikeets. Tommi Mikkonen, tommi.mikkonen@tut.fi 4. Luento: Prosessit ja säikeets Tommi Mikkonen, tommi.mikkonen@tut.fi Agenda Prosessi Säikeet Keskeytykset Keskeytyskäsittely Käyttöjärjestelmäkutsut Prosessielementti Prosessin hallinta Suunnittelunäkökohtia

Lisätiedot

Nykyaikainen viestintäalusta

Nykyaikainen viestintäalusta Nykyaikainen viestintäalusta OSALLISTUMINEN TUOTTAVUUS Mitä viestintä ja milloin Milloin Ensi tapaaminen, tärkeä neuvottelu jne Menetelmä Henkilökohtainen Arvo / vaikutus Suurin vaikutus Päätöksentekoa

Lisätiedot

Projekti 1 Säikeet ja kriittisen vaiheen kontrollointi javalla

Projekti 1 Säikeet ja kriittisen vaiheen kontrollointi javalla Projekti 1 Säikeet ja kriittisen vaiheen kontrollointi javalla Lasse Leino ja Marko Kahilakoski Helsingin Yliopisto Tietojenkäsittelytieteen laitos Rinnakkaisohjelmointi 18. joulukuuta 2006 Sisältö 1 Säikeet

Lisätiedot

Windows 8 Hallinta Petri Paavola Sami Laiho 6.3.2013

Windows 8 Hallinta Petri Paavola Sami Laiho 6.3.2013 Windows 8 Hallinta Petri Paavola Sami Laiho 6.3.2013 t Agenda Rauta Asennukset Käyttäjien tunnistus Start Screen Windows 8 Apps Adminin elämä Windows 8:ssa Keskitetty hallinta Elvyttäminen #td2013fi petri@petripaavola.fi

Lisätiedot

Rinnakkaisohjelmointi, Syksy 2006

Rinnakkaisohjelmointi, Syksy 2006 Rinnakkaisohjelmointi, Syksy 2006 17.12.2006 Opintopiiri WTF Mika Holmström Paula Kemppi Janne Piippo Lasse Lukkari Javan semaforit 1. Menetelmän käyttötarkoitus ja sovellusalue Semaforin idea kehitettiin

Lisätiedot

HiQ Finland Älypuhelinsovellusten käyttäjälähtöisen kehityksen tukeminen

HiQ Finland Älypuhelinsovellusten käyttäjälähtöisen kehityksen tukeminen HiQ Finland Älypuhelinsovellusten käyttäjälähtöisen kehityksen tukeminen HiQ otti käyttöön Lenovon ja Nutanixin hyperkonvergenssiratkaisun tarjotakseen kehittäjille resurssit uusien ja mielenkiintoisten

Lisätiedot

Olio-ohjelmointi Javalla

Olio-ohjelmointi Javalla 1 Olio-ohjelmointi Javalla Olio-ohjelmointi Luokka Attribuutit Konstruktori Olion luominen Metodit Olion kopiointi Staattinen attribuutti ja metodi Yksinkertainen ohjelmaluokka Ohjelmaluokka 1 Olio-ohjelmointi

Lisätiedot

ELM GROUP 04. Teemu Laakso Henrik Talarmo

ELM GROUP 04. Teemu Laakso Henrik Talarmo ELM GROUP 04 Teemu Laakso Henrik Talarmo 23. marraskuuta 2017 Sisältö 1 Johdanto 1 2 Ominaisuuksia 2 2.1 Muuttujat ja tietorakenteet...................... 2 2.2 Funktiot................................

Lisätiedot

C# Windows ohjelmointi perusopas

C# Windows ohjelmointi perusopas Paavo Räisänen C# Windows ohjelmointi perusopas www.ohjelmoimaan.net Tätä opasta saa vapaasti kopioida, tulostaa ja levittää ei kaupallisissa tarkoituksissa. Kuitenkaan omille nettisivuille opasta ei saa

Lisätiedot

Järjestelmäarkkitehtuuri (TK081702)

Järjestelmäarkkitehtuuri (TK081702) Järjestelmäarkkitehtuuri (TK081702) yleistyvät verkkopalveluissa Youtube Google... Avaavat pääsyn verkkopalvelun sisältöön. Rajapintojen tarjoamia tietolähteitä yhdistelemällä luodaan uusia palveluja,

Lisätiedot

Rinnakkaisohjelmointi.NET-ympäristössä

Rinnakkaisohjelmointi.NET-ympäristössä Rinnakkaisohjelmointi.NET-ympäristössä Aleksi Kontkanen Juho Lappalainen Opinnäytetyö Tieto- ja viestintätekniikka Insinööri (AMK) 2014 LAPIN AMMATTIKORKEAKOULU TEKNIIKKA JA LIIKENNE Tieto- ja viestintätekniikka

Lisätiedot

Ohjelmistojen mallintaminen, sekvenssikaaviot

Ohjelmistojen mallintaminen, sekvenssikaaviot 582104 - Ohjelmistojen mallintaminen, sekvenssikaaviot 1 Vuorovaikutussuunnittelu Oliojärjestelmän toiminta perustuu olioiden vuorovaikutukseen ja yhteistyöhön Olioiden yhteistyö toteutuu operaatioiden

Lisätiedot

Rinnakkaisuus. parallel tietokoneissa rinnakkaisia laskentayksiköitä concurrent asioita tapahtuu yhtaikaa. TTY Ohjelmistotekniikka

Rinnakkaisuus. parallel tietokoneissa rinnakkaisia laskentayksiköitä concurrent asioita tapahtuu yhtaikaa. TTY Ohjelmistotekniikka Rinnakkaisuus parallel tietokoneissa rinnakkaisia laskentayksiköitä concurrent asioita tapahtuu yhtaikaa Rinnakkaisuuden etuja: laskennan nopeutuminen (sarjoittuvat operaatiojonot) ilmaisuvoima (ongelman

Lisätiedot

REST rajapintana mobiilikehityksessä

REST rajapintana mobiilikehityksessä REST rajapintana mobiilikehityksessä Django & WP7 Jonne Räsänen 2011 jonne.rasanen@jyu.fi Case iscope Hälytyspalvelu Web-palvelu Mobiilisovellus REST (REpresentational State Transfer) Aikojakin vanhempi

Lisätiedot

HYÖDYNNÄ SUBSCRIPTION-ETUSI

HYÖDYNNÄ SUBSCRIPTION-ETUSI HYÖDYNNÄ SUBSCRIPTION-ETUSI OHJELMISTOJEN LATAAMINEN Autodesk Subscription sopimuksella saat kaikki edut irti ohjelmistostasi. Tässä ohjeessa käydään läpi, kuinka voit ladata Subscriptionsopimukseesi sisältyviä

Lisätiedot

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen Metodit Metodien määrittely Metodin parametrit ja paluuarvo Metodien suorittaminen eli kutsuminen Metodien kuormittaminen 1 Mikä on metodi? Metodi on luokan sisällä oleva yhteenkuuluvien toimintojen kokonaisuus

Lisätiedot

SQL Server 2005 Express Edition tietokannan asennusohje

SQL Server 2005 Express Edition tietokannan asennusohje 1 SQL Server 2005 Express Edition tietokannan asennusohje SQL Server 2005 Express Edition on Microsoftin tietokantaohjelmiston ilmaisversio. Asennukset tulee tehdä käyttäjätunnuksella, jolla on administrator-oikeudet.

Lisätiedot

T Henkilökohtainen harjoitus: FASTAXON

T Henkilökohtainen harjoitus: FASTAXON T-76.115 Henkilökohtainen harjoitus: FASTAXON Suunnittelumallit Group: Muuntaja Pentti Vänskä 52572W 2 1. Toteutus Tämä henkilökohtainen harjoitustyö käsitteli suunnittelumallien (Design Patterns) käyttöä

Lisätiedot

HYÖDYNNÄ SUBSCRIPTION-ETUSI

HYÖDYNNÄ SUBSCRIPTION-ETUSI HYÖDYNNÄ SUBSCRIPTION-ETUSI KIRJAUTUMINEN SUBSCRIPTION CENTERIIN Autodesk Subscription sopimuksella saat kaikki edut irti ohjelmistostasi. Tässä ohjeessa käydään läpi kuinka kirjaudut Subscription Centeriin,

Lisätiedot

XNA grafiikka laajennus opas. Paavo Räisänen. www.ohjelmoimaan.net. Tämän oppaan lähdekoodit ovat ladattavissa näiden sivujen Ladattavat osiossa.

XNA grafiikka laajennus opas. Paavo Räisänen. www.ohjelmoimaan.net. Tämän oppaan lähdekoodit ovat ladattavissa näiden sivujen Ladattavat osiossa. XNA grafiikka laajennus opas Paavo Räisänen www.ohjelmoimaan.net Tämän oppaan lähdekoodit ovat ladattavissa näiden sivujen Ladattavat osiossa. Tätä opasta saa vapaasti kopioida, tulostaa ja levittää ei

Lisätiedot

Web Service torilla tavataan!

Web Service torilla tavataan! Web Service torilla tavataan! Jari Putula Avarea Oy COPYRIGHT BY AVAREA 2009 1 Google Trends COPYRIGHT BY AVAREA 2009 2 1 1. Mahdollistajat 2. Web service? 3. KISS 4. Miksi? 5. Analogia 6. Ajax 7. Esimerkki

Lisätiedot

15. Ohjelmoinnin tekniikkaa 15.1

15. Ohjelmoinnin tekniikkaa 15.1 15. Ohjelmoinnin tekniikkaa 15.1 Sisällys For-each-rakenne. Geneerinen ohjelmointi. Lueteltu tyyppi enum. 15.2 For-each-rakenne For-rakenteen variaatio taulukoiden ja muiden kokoelmien silmukoimiseen:

Lisätiedot

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2 4. Attribuutit 4.1 Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2 Yleistä Luokan lohkossa, mutta metodien ulkopuolella esiteltyjä

Lisätiedot

LX 70. Ominaisuuksien mittaustulokset 1-kerroksinen 2-kerroksinen. Fyysiset ominaisuudet, nimellisarvot. Kalvon ominaisuudet

LX 70. Ominaisuuksien mittaustulokset 1-kerroksinen 2-kerroksinen. Fyysiset ominaisuudet, nimellisarvot. Kalvon ominaisuudet LX 70 % Läpäisy 36 32 % Absorptio 30 40 % Heijastus 34 28 % Läpäisy 72 65 % Heijastus ulkopuoli 9 16 % Heijastus sisäpuoli 9 13 Emissiivisyys.77.77 Auringonsuojakerroin.54.58 Auringonsäteilyn lämmönsiirtokerroin.47.50

Lisätiedot

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2 4. Attribuutit 4.1 Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2 Yleistä Luokan lohkossa, mutta metodien ulkopuolella esiteltyjä muuttujia ja vakioita. Esittely

Lisätiedot

TT00AA12-2016 - Ohjelmoinnin jatko (TT10S1ECD)

TT00AA12-2016 - Ohjelmoinnin jatko (TT10S1ECD) TT00AA12-2016 - Ohjelmoinnin jatko (TT10S1ECD) Ohjelmointikäytännöt 21/3/11 Mikko Vuorinen Metropolia Ammattikorkeakoulu 1 Sisältö 1) Mitä on hyvä koodi? 2) Ohjelmointikäytäntöjen merkitys? 3) Koodin asettelu

Lisätiedot

Object Framework - One. OF-1 is a high-productive Multi-UI OpenEdge data driven development framework. Veli-Matti Korhonen

Object Framework - One. OF-1 is a high-productive Multi-UI OpenEdge data driven development framework. Veli-Matti Korhonen Object Framework - One OF-1 is a high-productive Multi-UI OpenEdge data driven development framework Veli-Matti Korhonen Aiheet OF-1 esittely Mitä ominaisuuksia saa ilman ohjelmointia Miten ohjelmoidaan

Lisätiedot

Rinnakkaisohjelmointi kurssi. Opintopiiri työskentelyn raportti

Rinnakkaisohjelmointi kurssi. Opintopiiri työskentelyn raportti Rinnakkaisohjelmointi kurssi Opintopiiri työskentelyn raportti Opintopiiri: Heikki Karimo, Jesse Paakkari ja Keijo Karhu Päiväys: 15.12.2006 Ohjelmointitehtävä C i C i : Säikeet ja kriittisen vaiheen kontrollointi

Lisätiedot

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena Ohjelmointikielet ja -paradigmat 5op Markus Norrena Ko#tehtävä 4 Viimeistele "alkeellinen kuvagalleria". Käytännössä kaksi sivua Yksi jolla voi ladata kuvia palvelimelle (file upload) Toinen jolla ladattuja

Lisätiedot

Suunnittelumalleja, MVC. Juha Järvensivu 2008

Suunnittelumalleja, MVC. Juha Järvensivu 2008 Suunnittelumalleja, MVC Juha Järvensivu juha.jarvensivu@tut.fi 2008 Sisältö Tarkkailija Strategia Rekursiokooste Tehdas-metodi MVC Tarkkailija suunnittelumalli Tarkkailijamalli (Observer) Määrittelee olioiden

Lisätiedot

Apuja ohjelmointiin» Yleisiä virheitä

Apuja ohjelmointiin» Yleisiä virheitä Apuja ohjelmointiin» Yleisiä virheitä Ohjelmaa kirjoittaessasi saattaa Visual Studio ilmoittaa monenlaisista virheistä "punakynällä". Usein tämä johtuu vain siitä, että virheitä näytetään vaikket olisi

Lisätiedot

15. Ohjelmoinnin tekniikkaa 15.1

15. Ohjelmoinnin tekniikkaa 15.1 15. Ohjelmoinnin tekniikkaa 15.1 Sisällys For-each-rakenne. Lueteltu tyyppi enum. Override-annotaatio. Geneerinen ohjelmointi. 15.2 For-each-rakenne For-rakenteen variaatio taulukoiden ja muiden kokoelmien

Lisätiedot

5. HelloWorld-ohjelma 5.1

5. HelloWorld-ohjelma 5.1 5. HelloWorld-ohjelma 5.1 Sisällys Lähdekoodi. Lähdekoodin (osittainen) analyysi. Lähdekoodi tekstitiedostoon. Lähdekoodin kääntäminen tavukoodiksi. Tavukoodin suorittaminen. Virheiden korjaaminen 5.2

Lisätiedot

Visma Software Oy

Visma Software Oy pidättää itsellään oikeuden mahdollisiin parannuksiin ja/tai muutoksiin tässä oppaassa ja/tai ohjelmassa ilman eri ilmoitusta. Oppaan ja siihen liittyvän muun materiaalin kopiointi on kielletty ilman :n

Lisätiedot

On instrument costs in decentralized macroeconomic decision making (Helsingin Kauppakorkeakoulun julkaisuja ; D-31)

On instrument costs in decentralized macroeconomic decision making (Helsingin Kauppakorkeakoulun julkaisuja ; D-31) On instrument costs in decentralized macroeconomic decision making (Helsingin Kauppakorkeakoulun julkaisuja ; D-31) Juha Kahkonen Click here if your download doesn"t start automatically On instrument costs

Lisätiedot

812315A Ohjelmiston rakentaminen. Asynkronisuus

812315A Ohjelmiston rakentaminen. Asynkronisuus 812315A Ohjelmiston rakentaminen. Asynkronisuus Ari Vesanen ari.vesanen (at) oulu.fi Yleistä moduulista Tällä kertaa sisältää Java-kielistä monisäieohjelmointia Suoritustapa: Neljästä ohjelmointitehtävästä

Lisätiedot

Lab SBS3.FARM_Hyper-V - Navigating a SharePoint site

Lab SBS3.FARM_Hyper-V - Navigating a SharePoint site Lab SBS3.FARM_Hyper-V - Navigating a SharePoint site Note! Before starting download and install a fresh version of OfficeProfessionalPlus_x64_en-us. The instructions are in the beginning of the exercise.

Lisätiedot

Luento 6. T Ohjelmoinnin jatkokurssi T1 & T Ohjelmoinnin jatkokurssi L1. Luennoitsija: Otto Seppälä

Luento 6. T Ohjelmoinnin jatkokurssi T1 & T Ohjelmoinnin jatkokurssi L1. Luennoitsija: Otto Seppälä Luento 6 T-106.1240 Ohjelmoinnin jatkokurssi T1 & T-106.1243 Ohjelmoinnin jatkokurssi L1 Luennoitsija: Otto Seppälä Kurssin WWW: http://www.cs.hut.fi/opinnot/t-106.1240/s2007 Oma Grafiikka Swing-käyttöliittymässä

Lisätiedot

Citizen s skill in 2010s: Programming the Windowsphone. Kai Lindgren, Industrial Production/Metropolia

Citizen s skill in 2010s: Programming the Windowsphone. Kai Lindgren, Industrial Production/Metropolia Citizen s skill in 2010s: Programming the Windowsphone Kai Lindgren, Industrial Production/Metropolia Paikka: Metropolia Ammattikorkeakoulu, Helsinki, Bulevardi 31. Sali Engel (P317) Ohjelma 9.00 9.15

Lisätiedot

Ohjelmistojen mallintaminen Olioiden yhteistyö. 18.11.2008 Harri Laine 1

Ohjelmistojen mallintaminen Olioiden yhteistyö. 18.11.2008 Harri Laine 1 Ohjelmistojen mallintaminen Olioiden yhteistyö 18.11.2008 Harri Laine 1 Olioiden yhteistyö Oliokeskeisen ohjelmistonäkemyksen mukaan ohjelmiston palvelut tuotetaan olioiden yhteistyön tuloksena. Ohjelmisto

Lisätiedot

HYÖDYNNÄ SUBSCRIPTION-ETUSI

HYÖDYNNÄ SUBSCRIPTION-ETUSI HYÖDYNNÄ SUBSCRIPTION-ETUSI KÄYTTÄJIEN PÄÄSY SUBSCRIPTION-ETUIHIN Autodesk Subscription sisältää paljon etuja, kuten joustavammat mahdollisuudet käyttää Autodesk-ohjelmistoja. Tämä ohje käy läpi, kuinka

Lisätiedot

JUnit ja EasyMock (TilaustenKäsittely)

JUnit ja EasyMock (TilaustenKäsittely) OHJELMISTOJEN TESTAUS JA HALLINTA Syksy 2015 / Auvo Häkkinen JUnit ja EasyMock (TilaustenKäsittely) Tehtävässä tarvittava koodi löytyy osoitteella http://users.metropolia.fi/~hakka/oth/mockesimerkki.zip

Lisätiedot

TermBase NET versio 1.0.1. (Beta)

TermBase NET versio 1.0.1. (Beta) TermBase NET versio 1.0.1. (Beta) Sulautettu sanasto- ja termikanta OHJEET TÄRKEÄÄ: Copyright M. Tuittu, 2005 Kaikki oikeudet pidätetään. TermBase NET on toteutettu java -tekniikalla. Java and all Java-based

Lisätiedot

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa(); Sisällys 7. Oliot ja viitteet Olio Java-kielessä. Olion luominen, elinikä ja tuhoutuminen. Viitteiden käsittelyä: sijoitus, vertailu ja varautuminen null-arvoon. Viite metodin paluuarvona.. 7.1 7.2 Olio

Lisätiedot

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++? JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: http://java.sun.com/docs/books/tutorial/index.html Vesterholm, Kyppö: Java-ohjelmointi,

Lisätiedot

9. Periytyminen Javassa 9.1

9. Periytyminen Javassa 9.1 9. Periytyminen Javassa 9.1 Sisällys Periytymismekanismi Java-kielessä. Piirteiden näkyvyys periytymisessä. Ilmentymämetodien korvaaminen. Luokkametodien peittäminen. Super-attribuutti. Override-annotaatio.

Lisätiedot

5 Näppäimistö. 5.1 Näppäimistön eventit

5 Näppäimistö. 5.1 Näppäimistön eventit 5 Näppäimistö Näppäimistö (Keyboard) on Windows Forms -ohjelmissa keskeisessä asemassa. Erityisesti erilaisissa tekstinkäsittelyohjelmissa ja ohjelmissa, joissa tarvitaan datan syöttämistä esimerkiksi

Lisätiedot

Tech Conference 28.-29.5.2015. Mikropalvelut, Kontit ja Nano Server tulevaisuuden ajoympäristöt? Jouni Heikniemi Offbeat Solutions.

Tech Conference 28.-29.5.2015. Mikropalvelut, Kontit ja Nano Server tulevaisuuden ajoympäristöt? Jouni Heikniemi Offbeat Solutions. Tech Conference 28.-29.5.2015 Mikropalvelut, Kontit ja Nano Server tulevaisuuden ajoympäristöt? Jouni Heikniemi Offbeat Solutions #TechConfFI Hei kuka puhuu? Offbeat Solutions 2010 -> konsultti Sininen

Lisätiedot