TALLINNA ÜLIKOOL. Haapsalu Kolledž. Rakendusinformaatika. Hendrik Nõgene HELI SALVESTAMISE VEEBIRAKENDUS KASUTADES WEB AUDIO API T.

Size: px
Start display at page:

Download "TALLINNA ÜLIKOOL. Haapsalu Kolledž. Rakendusinformaatika. Hendrik Nõgene HELI SALVESTAMISE VEEBIRAKENDUS KASUTADES WEB AUDIO API T."

Transcription

1 TALLINNA ÜLIKOOL Haapsalu Kolledž Rakendusinformaatika Hendrik Nõgene HELI SALVESTAMISE VEEBIRAKENDUS KASUTADES WEB AUDIO API T Diplomitöö Juhendaja: Andrus Rinde Haapsalu 2017

2 TALLINNA ÜLIKOOL Haapsalu Kolledž Osakond: Rakendusinformaatika Töö pealkiri: Heli salvestamise veebirakendus kasutades Web Audio API t Teadusvaldkond: Infotehnoloogia Uurimuse tasand: Diplomitöö Kuu ja aasta: Juuni 2017 Lehekülgede arv: 33 lk + 2 lisa (2 lk) Referaat: Käesoleva diplomitöö eesmärgiks oli luua veebirakendus, kus oleks võimalik mikrofoniga heli salvestada ja salvestatud heli töödelda. Eesmärgi täitmiseks püstitati järgmised eesmärgid: uurida kuidas on võimalik heli salvestada veebis tutvuda Web Audio API ja varasemate lahendustega otsida Web Audio API teeke heli salvestamiseks ja töötlemiseks luua rakendus Diplomitöö koosneb kahest osast. Esimeses osas antakse ülevaade olemasolevatest rakendustest ning heli salvestamise võimalustest ja vahenditest. Teises ehk praktilises osas kirjeldatakse veebirakenduse arendamist ja tööpõhimõtet. Võtmesõnad: Web Audio API, helitöötlus, heli salvestamine, veebirakendus, mikrofon Säilitamise koht: TLÜ Haapsalu Kolledži raamatukogu Töö autor: Hendrik Nõgene Kaitsmisele lubatud: Juhendaja: Andrus Rinde allkiri: allkiri:

3 TALLINN UNIVERSITY Haapsalu College Department: Applied Computer Science Title: A Web application for recording audio using Web Audio API Science area: Computer Sciences Level: Diploma Thesis Year and month: June, 2017 Number of pages: 33 p + 2 appendix (2 p) Summary: The aim of this Diploma thesis was to create a web application where it would be possible to record audio using a microphone. The following tasks were set up to achieve this goal: explore the possibilities of recording sound on the web research Web Audio API and previous technologies find different Web Audio API libraries for recording and processing audio create an application The Diploma thesis consists of two parts. The first part provides an overview of existing applications and sound recording possibilities and tools. The second part gives an overview of development and working principles of the web application. Key words: Web Audio API, audio processing, audio recording, web application, microphone Deposition The Library of Haapsalu College of Tallinn University Author of the thesis: Hendrik Nõgene signature: Approved for dissertation: Academic advisor: Andrus Rinde signature:

4 SISUKORD SISSEJUHATUS VEEBIPÕHISED TEHNOLOOGIAD HELI SALVESTAMISEKS JA TÖÖTLEMISEKS Heli salvestamise võimalused veebis Olemasolevad helisalvestuse veebirakendused veebis Flash i kasutavad veebirakendused Web Audio API t kasutavad veebirakendused Web Audio API Heli töötlemine Web Audio API s MediaStream API-liides MediaStream MediaStreamTrack MediaStream Recording API-liides Web Audio API teegid Heli salvestamise teegid Heli kodeerimise teegid Heli visualiseerimise raamistikud Adobe Flash ja Web Audio API võimaluste võrdlus HELI SALVESTAMISE RAKENDUSE LOOMINE Serveri konfiguratsioon Heli salvestamine Heli mängimine ja visualiseerimine Heli töötlemise võimalused Salvestatud heli eksportimine Hendrik Nõgene 4

5 2.6. Probleemid rakenduse arendamisel Rakenduse edasiarendamise võimalused KOKKUVÕTE ALLIKAD LISA 1. HELI LÕIKAMINE JA KÄRPIMINE LISA 2. MIKROFONI SISENDI KASUTAMINE VEEBIS Hendrik Nõgene 5

6 SISSEJUHATUS Heli salvestamiseks ja töötluseks on palju erinevaid võimalusi. Operatsioonisüsteemidega on üldjuhul kaasas lihtsamad rakendused, näiteks Windows 10-s Voice Recorder ja Mac s QuickTime Player, millega on võimalik heli salvestada kuid mitte töödelda. Olemas on ka võimsamaid tasuta helitöötlusprogramme nagu Audacity ja Free Audio Editor ning tasulisi helitöötlusprogramme nagu Adobe Audition kuid neid on vaja alla laadida ja installeerida. Võrreldes töölauarakendustega on veebirakendused kättesaadavad kõigile, kellel on ligipääs internetile, nende loomiseks ei ole vaja luua eraldi versioone erinevate platvormide jaoks, faile on lihtsam jagada ja ei ole vajalik midagi arvutisse installeerida. Tarkvara paigaldamine võib kasutajal tööandja arvutis ka keelatud olla ning seega oleks veebipõhine rakendus ainus võimalus. Praegused veebirakendused heli salvestamiseks on enamjaolt loodud kasutades Adobe Flash i. Flash i peetakse aga üsna ebaturvaliseks ning soovitatakse seda mitte kasutada (Kastrenakes, 2015). Flash i hakkab asendama heli salvestuse ning töötluse poole pealt Web Audio API-liides, mille kasutamiseks ei ole vaja ühegi pistikprogrammi (Smus, 2013). Selles töös uurib autor, kas on võimalik luua avatud lähtekoodiga tehnoloogiatega sama võimekat heli salvestamise rakendust nagu on see võimalik olnud Flash ga. Samuti on eesmärk anda ülevaade erinevatest raamistikest, mis tööprotsessi võivad lihtsustada ning teha ülevaade Web Audio API ning Adobe Flash i erinevustest. Loodava rakenduse sihtgrupiks on inimesed, kes tahavad jagada oma salvestatud heliklippe teistega ning inimesed, kes ei saa või ei soovi arvutisse heli salvestamise jaoks eraldi programme installeerida. Selleks on näiteks õpetajad, kelle jaoks on vajalik mõnikord õppematerjalide jaoks heli salvestada. Rakendus võimaldaks ka salvestatud heliklippe vähesel määral töödelda lõigata, kärpida ja lisada lihtsamaid efekte. Samuti integreeruks rakendus mõne pilveteenusega. Hendrik Nõgene 6

7 1. VEEBIPÕHISED TEHNOLOOGIAD HELI SALVESTAMISEKS JA TÖÖTLEMISEKS Järgnevalt annab autor ülevaate heli salvestamise ja töötlemise võimalustest veebis. Tutvustatakse lühidalt varasemaid võimalusi heli salvestamiseks, antakse ülevaade Web Audio API st ja MediaStream API st, võrreldakse Flash i ja Web Audio API t ning antakse ülevaade kasulikest teekidest heli salvestamiseks ja manipuleerimiseks Heli salvestamise võimalused veebis Ainuke võimalus varem veebis mikrofoni sisendina kasutada oli läbi Adobe Flash i või Silverlight i (Bidelman, 2016). Flash s toimis see läbi flash.media.microphone klassi (Adobe, s.a). Silverlight s töötas mikrofon läbi AudioCaptureDevice ning CaptureSource klassi (ondrejsv, 2009). Esimene katsetus standardiseerida heli salvestamine ilma ühegi pistikprogrammita sai alguse aastal 2011 Device API Police Working Group i poolt. Mõte oli kasutada juba olemasolevat HTML <input type= file > elementi. Selleks, et näiteks mikrofoni kasutada oleks pidanud lisama elemendile juurde accept atribuudi. (Bideman, 2016.) <input type= file accept= audio/*;capture=microphone > Koodinäide 1. <input> elemendi kasutamine mikrofoni sisendi kasutamiseks Selle viisi kaudu sai heli salvestada kuid ei saanud lisada efekte ning ei olnud võimalik reaalajas andmeid näiteks võnkekõverana <canvas> elemendile kuvada. See spetsifikatsioon leidis toetust ainult nutitelefonide brauserites. (Bidelman, 2016.) Teine proov oli läbi uue <device> HTML elemendi. See oli mõeldud toetama ka muid seadmeid peale mikrofoni ning veebikaamera ja toetas ka reaalajas toimuvaid sündmusi. Samal ajal tuli aga ka välja JavaScripti põhiline API-liides getusermedia. Opera, kes oli ainsana tegelenud Hendrik Nõgene 7

8 <device> elemendi arendamisega, otsustas lõpetada selle projekti Web Audio API kasuks. Ükski brauser lõppkokkuvõttes <device> elementi toetama ei hakanud. (Bidelman, 2016.) <device type="media" onchange="update(this.data)"></device> <audio id= stream autoplay></audio> <script> function update(stream) { document.queryselector('stream').src = stream.url; } </script> Koodinäide 2. <device> elemendi kasutamine video ja audio jaoks navigator.getusermedia või navigator.mediadevices.getusermedia() on toetatud moodsates brauserites Chrome, Opera, Firefox ja Microsoft Edge. Ainuke moodne brauser, mis hetkel seda ei toeta on Safari. Samuti puudub sellele toetus vanemates brauserites nagu Internet Explorer. Kuna tegemist on üsnagi uue liidesega, mis pole kõigis brauserites samamoodi teostatud, tuleb ära määrata kasutamisel ka eesliide, näiteks navigator.webkitgetusermedia ja navigator.mozgetusermedia. (caniuse, 2017.) navigator.mediadevices.getusermedia({ video: false, audio: true}).then((stream) => { // Olemas }).catch((err) => { // Viga }); Koodinäide 3. getusermedia kasutamine audio voogedastamiseks On olemas ka veel uuem Media Recorder API, mis toetub getusermedia funktsioonile kuid see on hetkel toetatud ainult Firefox ning Chrome brauseris. Selle programmiliidese eesmärk on teha salvestamise protsess lihtsamaks. (W3C, 2017, MediaStream Recording.) Hendrik Nõgene 8

9 Praegusel hetkel on heli salvestamiseks kaks võimalust. Esimene võimalus on saata getusermedia funktsiooni mikrofoni andmevoog edasi Web Audio API le luues uus ScriptProcessorNode objekt meedia allikast. See võimaldab ka reaalajas lisada mikrofoni sisendile efekte. (Flaherty, 2016.) Positiivseks selle lähenemise puhul on, et salvestatud heli saab hiljem ka töödelda, kuna andmed on esitatud 32-bitiste ujukomaarvudena (MDN, 2017, AudioBuffer). Miinuseks on aga see, et salvestatud massiiv tuleb failiformaatidesse kodeerida enne kui kasutaja saab helifaili alla laadida. Selle jaoks on vaja kasutada JavaScript i teeke, kuna see pole just kõige lihtsam tegevus ja läbi veebibrauseri pole seda ka võimalik teostada. Kodeerimine tuleks samuti teostada läbi erineva lõime, mis ülejäänud veebirakendus, kuna tegemist on ressurssinõudliku tegevusega ja võib seega üsna suurel määral aeglustada ülejäänud rakendust. (Wilson, 2014.) Web Worker i kaudu on võimalik luua uusi lõimi, mille peal saab skripte käivitada. Selle läbi on võimalik luua mitmelõimeline arhitektuur, mille kaudu on võimalik mitut tegumit korraga teha ja peaks raskemad ülesanded kiiremaks muutma. (West, 2013.) Web Audio API s aga hetkel spetsiaalne Web Worker puudub. Heli analüüsimise ja töötlemise jaoks on ScriptProcessorNode liides (MDN, 2016, ScriptProcessorNode). Teine võimalus on kasutada MediaStream Recording API t. Selle kaudu on üsna lihtne heli salvestada ja kodeerida, kuna kasutab kodeerimiseks brauseri koodekeid. MediaStream Recording API miinuseks on see, et pole võimalik pääseda ligi heli puhvrile, kuna salvestamise tulemuseks on bloob. (W3C, 2017, MediaStream Recording.) Võimalik on salvestatud heli muuta tagasi toorandmeteks läbi Web Audio API (W3C, 2016, Media Capture and Streams). See on aga kokkuvõttes keerulisem kui teha kogu protsess läbi Hendrik Nõgene 9

10 esimese versiooni ja üldiselt ka mõttetu kuna pole võimalik luua uut MediaRecorder objekti audio puhvrist (Google Groups, 2015). MediaStream Recording API-liidese kaudu lähenemine on hetkel sobibilik pigem sellisteks juhtumiteks, kus helile pole vaja reaalajas efekte lisada ja pole vaja ka hiljem salvestatud heli töödelda Olemasolevad helisalvestuse veebirakendused veebis Hetkel olemasolevad veebirakendused kasutavad peamiselt Flash i kuid leidub ka rakendusi, mis juba kasutavad Web Audio API t heli salvestamiseks mikrofoni kaudu. Autoril ei õnnestunud leida ühtegi veebirakendust, mis töötaks kasutades kliendipoolset Web Audio API t ning võimaldaks vähesel määral audiot töödelda. Kuna hiljuti on tehtud ka muudatusi mikrofoni signaali kasutamise osas, siis peab autor tõenäoliseks, et sellist rakendust hetkel ei olegi Flash i kasutavad veebirakendused Autor leidis, et suurem osa hetkel olemasolevatest rakendustest kasutavad heli salvestamiseks mikrofoni sisendiga Flash i. Näiteks võib tuua lihtsamad rakendused nagu Vocaroo, Online Voice Recorder, recordmp3online, mis võimaldavad heli salvestada ning tulemuse hiljem alla laadida või siis üles laadida serverisse kuid ei võimalda heli töödelda. TwistedWave, on Flash i kasutav veebirakendus, kus heli salvestamine ja ka hiljem töötlemine on võimalik. Selle rakenduse kaudu saab peale salvestamist kasutada lihtsamaid efekte nagu amplituudi muutmine ja heli normaliseerimine. Samuti on võimalik rakenduse kaudu salvestatud heli üles laadida SoundCloud i või Google Drive i. Probleemiks selle rakenduse puhul on, et heli töötlemine teostatakse serveris, mis pole kõige mõistlikum, eriti kui rakendust kasutab palju inimesi. Hendrik Nõgene 10

11 Web Audio API t kasutavad veebirakendused Leidub ka paar üksikut rakendust, mis kasutavad Web Audio API t mikrofoni sisendi salvestamiseks. Näiteks võib tuua rakendused nagu Clyp ja Voice Spice. Need võimaldavad heli ainult üles laadida ja teistga jagada kuid töötlemine pole võimalik. Autor ei leidnud ühtegi Web Audio API t kasutavat veebirakendust, mis võimaldaks ka salvestatud heli töödelda Web Audio API Web Audio API-liides on kirjutatud assembleerkeeles, C s ning C++ s ning pakub funktsionaalsust läbi JavaScript i liidese. Programmiliides on mõeldud töötama kooskõlas ka teiste veebipõhiliste rakendusliidestega nagu XMLHttpRequest (heli failide laadimiseks), canvas (2D graafika kuvamiseks) ning WebGL (3D graafika kuvamiseks). (W3C, 2017, Web Audio API.) Web Audio API peamised omadused on: modulaarne marsruutimine dünaamilised heliefektid helide töötlus voogedastatava sisendi töötlemine ruumiline heli reaalajaline sageduse analüüs Web Audio API tegeleb töötlusega heli konteksti konteineris. Peamised audio töötluse tegevused teostatakse läbi heli sõlmede, mis moodustavad omavahel kokku heli marsruutimise graafi. Ühe konteksti sees võib olla üks või mitu erinevat audio sisendit. Allikaks võib olla näiteks helifail, mikrofoni sisend või siis genereeritud heliefekt. (MDN, 2017, Web Audio API.) Helisõlmed on omavahel ühenduses oma sisendi ja väljundi kaudu ning neil on tavaliselt üks või rohkem allikat. Allikad tekitavad väga väikestes ajavahemikes massiive, mis sisaldavad Hendrik Nõgene 11

12 helitugevusi. Helisõlmede väljundid võivad olla ühendatud mõne teise helisõlme külge, mis võivad modifitseerida helisõlme mingil kujul. Kui helifaili töötlemine on lõpetatud, tuleks see ka ühendada audio konteksti sihtpunktiga, selleks et oleks kasutajal ka võimalik heli kuulda. (MDN, 2017, Web Audio API.) Joonis 1. Web Audio API tööpõhimõte Täpsemalt saab lugeda Web Audio API kohta aastal Tallinna Ülikooli Digitehnoloogiate instituudis kaitstud Kevin Münteri bakalaurusetöös: Heli manipuleerimine veebilehel Web Audio API t kasutades Heli töötlemine Web Audio API s Heli analüüsimine ja töötlemine teostatakse Web Audio API s läbi ScriptProcessorNode liidese. See on oma olemuselt AudioNode objekt, mis on ühenduses kahe puhvriga üks, mis hoiab endas sisendi heliandmeid ning teine, mis sisaldab töödeldud väljundi andmeid. Iga kord kui sisendpuhvrisse andmed saabuvad, hakkab tööle sündmus onaudioprocess, mis lõppeb kui väljundpuhver täidetud on. (MDN, 2016, ScriptProcessorNode.) Sisendi- ja väljundpuhvri suurus on defineeritud loomise hetkel. Esimese parameetrina createscriptprocessornode funktsioonis on puhvri suurus, mis peab olema kahe aste. Puhvri suurust ei ole üldjuhul hea mõte ise defineerida, sest brauser valib ise parima variandi. Teisteks parameetriteks on sisendite ja väljundite arv. Seda liidest hakkab tulevikus asendama Audio Worker, mis töötab juba eraldi lõimes. (MDN, 2016, ScriptProcessorNode.) Hendrik Nõgene 12

13 1.5. MediaStream API-liides Veebipõhise helisalvestuse rakenduse jaoks on vaja kasutada voogandmeid mikrofonist. Seda pole aga võimalik teha kasutades ainult Web Audio API t. MediaStream API-liides on mõeldud kasutamiseks selleks, et saaks kasutada voogedastatavaid andmeid nagu veebikaamera ja mikrofon. Esialgu oli see seotud getusermedia API-liidesega kuid on nüüd üldisem rakendusliides. Sellegipoolest kasutab see rakendusliidese getusermedia meetodit selleks, et tekitada ühendus seadmega. (Manson, 2013.) Kaks põhikomponenti MediaStream API-liideses on MediaStreamTrack ning MediaStream. MediaStreamTrack objekt esindab ühte meedimi tüüpi, mille allikaks on kasutaja seade. MediaStream objekti kaudu grupeeritakse mitu MediaStreamTrack objekti kokku üheks, selleks et oleks seda võimalik salvestada või esitada mõnes meedia elemendis. (W3C, 2016, Media Capture and Streams.) MediaStream MediaStream objekti heliribad on hoiustatud heliribade hulgas. Iga heliriba hulk peab peab sisaldama MediaStreamTrack objekte, mis leiduvad ka heliribade andmevoos. Heliribad ei ole järjestatud selle API-liidese poolt ning õige viis neid täpselt üles leida on läbi oma id väärtuse. (W3C, 2016, Media Capture and Streams.) Iga MediaStream objekt võib endas sisaldada mitte ühtegi või mitu MediaStreamTrack objekti. Kõik heliribad MediaStream objektis sünkroniseeritakse kui nad ette mängitakse, kuid see pole alati kohustuslik, kuna mõnikord pole see võimalik, kuna allikad võivad olla erinevad. Erinevaid MediaStream objekte ei ole omavahel vaja sünkroniseerida. (W3C, 2016, Media Capture and Streams.) MediaStream objektil on sisend ja väljund, mis esindavad kõikide heliribade kombineeritud sisendit ja väljundit. MediaStream objekti väljund kontrollib seda, kuidas objekti kasutajale Hendrik Nõgene 13

14 kuvatakse objekt muudetakse failiks või määratakse näiteks <video> või <audio> elemendi src atribuudiks. Üks MediaStream objekt võib olla väljundiks mitmesse erinevasse kohta. (W3C, 2016, Media Capture and Streams) Uut MediaStream objekti on võimalik luua juba olemasolevast, kui panna olemasolev uue konstruktorisse. Sellisel juhul lisatakse kaasa ka kõik MediaStreamTrack objektid. Selle läbi on võimalik audiot multipleksida. (W3C, 2016, Media Capture and Streams.) MediaStreamTrack MediaStreamTrack on meedia allikas kasutajaagendis, näiteks füüsiline seade, mis on ühenduses kasutajaagendiga. Mitu MediaStreamTrack i võivad olla sama meediaseadme allikaks, näiteks kui kasutaja valib sama kaamera või mikrofoni peale kaht getusermedia funktsiooni kasutust. (W3C, 2016, Media Capture and Streams.) Üks MediaStreamTrack objekt võib olla ka mitme kanaliga, näiteks stereoheli, 5.1 stereoheli või stereoskoopiline video, kus erinevad kanalid on omavahel seotud. Informatsioonile on võimalik pääseda ligi mõnest teisest rakendusliidesest nagu Web Audio API kuid MediaStream otseselt ligipääsu ei paku. (W3C, 2016, Media Capture and Streams.) Andmed MediaStreamTrack objektis pole alati kindlas binaarvormingus - see võib olla lihtsalt andmete voog, mis hetkel seadmest läbi käib. Selle tõttu on võimalik kasutajaagendil muuta meediat nii nagu sobiks kõige paremini kasutaja platvormile. (W3C, 2016, Media Capture and Streams.) MediaStreamTrack objektil on kaks võimaliku arendaja poolt kontrollitavat seisundit ühenduses (live) ja lõppenud (ended). Uus MediaStreamTrack objekt võib olla mõlemas seisundis vastavalt sellele kuidas ta loodi. Näiteks teise lõppenud heliriba kloonimisel on tulemuseks uus heliriba lõppenud seisundiga. Ühenduses seisundis on heliriba aktiivne ning meedia element saab seda mängida. Seisund on kättesaadav objekti readystate atribuudis. (W3C, 2016, Media Capture and Streams.) Hendrik Nõgene 14

15 Samuti on MediaStreamTrack l veel kaks seisundit, mida pole võimalik arendaja poolt kontrollida. Need on vaigistatud (muted) ja vaigistamata (unmuted). Vaigistatud või välja lülitatud heliriba mängib audiot ilma helita, videot musta pildina või siis tühja sisuga. Kui kõik heliribad, mis on seotud allikaga on vaigistatud või välja lülitatud, siis võib salvestamise indikaatori välja lülitada. Kui see pole enam tumm ega välja lülitatud, siis tuleb indikaator jälle tööle panna. (W3C, 2016, Media Capture and Streams.) Vaigistatud ja vaigistamata seisund näitab ära, kas allikas nagu mikrofon, edastab hetkel andmeid. See pole rakenduse kontrollida ning on üldiselt rakenduseväline tegevus, nagu näiteks kasutaja vajutab füüsilist nuppu mikrofonil, mis selle välja lülitab, kasutaja muudab seaded operatsioonisüsteemis, kasutaja lülitab välja heli kogu brauseris. (W3C, 2016, Media Capture and Streams.) MediaStream Recording API-liides MediaStream Recording API-liides koosneb ühest MediaRecorder liidesest, mis võtab andmed MediaStream objektist ja tagastab selle bloobina, et seda oleks võimalik edasi töödelda ning analüüsida või siis kettale salvestada. Andmed edastatakse dataavailable sündmusetöötlejas failivormingus, mille arendaja esialgselt objekti loomisel määras. (MDN, 2017, MediaStream Recording API.) See API-liides toetub getusermedia funktsioonile, et saada veebikaamera või mikrofoni sisendi andmed. Kogu protsess on üsna lihtne: 1. Küsitakse luba kasutada mikrofoni või veebikaamerat läbi getusermedia funktsiooni 2. Luuakse uus MediaRecorder objekt, mis alustab salvestamist 3. Salvestamise lõppedes on andmed saadavad ondataavailable sündmusetöötlejas suure kahendobjektina 4. Tulemuse saab salvestada kettale või siis mängida läbi <audio> või <video> elemendi. Video koodekitest on toetatud VP8, VP9 ning H.264. Audio koodekitest on toetatud Vorbis ja Opus Audio. (Addpipe, 2015.) Hendrik Nõgene 15

16 1.6. Web Audio API teegid Web Audio API t on lihtne kasutada kuid kuna tegemist on üsna madala taseme rakendusliidesega, on mõnede tegevuste, nagu näiteks võnkekõverate genereerimine ning heli kodeerimine MP3 või Ogg failivormingusse keeruline ja aeganõudev. Nende tegevuste lihtsustamiseks oleks mõttekas kasutada olemasolevaid spetsiaalseid teeke Heli salvestamise teegid Veebis heli salvestamise jaoks on üsna palju teeke. Läbi createmediasource ja ScriptProcessorNode heli salvestamise meetodi tundub olevat kõige populaarsem Recorderjs 1. See lihtsustab pisut tööprotsessi mikrofoni andmevoost Web Audio API-liideseni. See kasutab Web Worker id selleks, et heli kodeerida. Probleemiks on selle raamistikuga see, et võimalik on kodeerida ainult WAV failivormingusse, mille tõttu on salvestatud helifailid üsna suured. Selle tõttu leidub samast teegist ka palju teisi versioone, mis töötavad samal põhimõttel kuid on võimalik kodeerida ka MP3 ja Ogg failivormingusse ja saavutada väiksemad failisuurused. MediaStream Recording API t kasutavatest raamistikest on üsna lihtne kasutada teeki MediaStreamRecorder.js 2. See võimaldab salvestada nii heli kui ka videot ning salvestada tulemus kettale. Heli on võimalik salvestada WAV ja Ogg formaadis. See teek töötab ka Microsoft Edge ja Opera brauseris Heli kodeerimise teegid Kuna heli kodeerimine failivormingutesse nagu MP3 ja Ogg on üsna keeruline, on selle jaoks vajalikud JavaScript i teegid. Peaaegu iga failivormingu jaoks on olemas ka üle porditud JavaScript i teek mp3 jaoks lamejs, ogg jaoks Vorbis, FLAC i jaoks flac.js. Neid samu teeke kasutab näiteks töölauarakendus Audacity ning veebipõhine rakendus TwistedWave. 1 Recorder.js MediaStreamRecorder.js - Hendrik Nõgene 16

17 Probleemiks võib tekkida aga ainult mitme koodeki korraga toetamisega, kuna nad on üldiselt üsna mahukad lamejs 155KB, Vorbis 336KB, flacjs 731KB. Seetõttu on raskendatud paljude koodekite toetamine Heli visualiseerimise raamistikud Heli visualiseerimine on oluline audio töötlemiseks, sest see võimaldab kasutajal aru saada helist ilma audiot kuulamata näeb vaikuse kohti, võimalik aru saada, kus heli vaiksem ja kus valjem. Töölauarakendused nagu Audacity ja Adobe Audition ning veebirakendus TwistedWave kasutavad heli visualiseerimiseks võnkekõverat. Heli visualiseerimiseks võnkekõverana on JavaScript s olemas kaks teeki Wavesurfer.js ja Peaks.js. Mõlemad teegid võimaldavad: Kontrollida suumimist Näidata positsiooni heliklipis Navigeerida võnkekõveral Näidata hetkepositsiooni Luua vahemikke võnkekõveral Peaks.js 3 ja Wavesurfer.js 4 kasutavad mõlemad visualiseerimiseks <canvas> elementi. Peaks.js miinuseks on aga see, et pole võimalik reaalajas genereerida võnkekõverat samal ajal kui mikrofon töötab. Wavesurfer.js teegis on see võimalik läbi loaddecodedbuffer funktsiooni. Samuti on Peaks.js palju suurem kui Wavesurfer.js. Peaks.js on 708KB suur, samal ajal on Wavesurfer.js koos pistikprogrammidega 36.5KB suur Adobe Flash ja Web Audio API võimaluste võrdlus Nagu eelnevast näha, pakub Web Audio API kõiki vajalikke vahendeid heli salvestamiseks, esitamiseks ja töötlemiseks. 3 Peaks.js Wavesurfer.js - Hendrik Nõgene 17

18 Adobe Flash pakub läbi Actionscript i: (Adobe, s.a, Basics of working with sound) Laadida väliseid MP3 faile Mängida helifaile Voogedastada helifaile Manipuleerida heli tugevust ja panoraamimist Kasutada faili metaandmeid Kasutada helifaili toorandmeid Dünaamiliselt luua helisid Kasutada kasutaja mikrofoni heli salvestamiseks Selle jaoks pakub Actionscript 3 seitse erinevat klassi: (Adobe, s.a, Understanding the sound architecture) Tabel 1. Actionscript 3 klassid heli manipuleerimiseks (Adobe, s.a, Understanding the sound architecture.) flash.media.sound Heli klass, mis tegeleb heli laadimise ja mängimisega flash.media.soundchannel Klass, mis annab mängitavale objektile võimaluse kontrollida taasesitust. Igal helil on oma SoundChannel objekt. flash.media.soundloadercontext Määrab ära mitu sekundit heli puhverdatakse ning kasutatakse parameetrina heli laadimisel. flash.media.soundmixer Kontrollib taasesitust ning turvalisust kogu rakenduses. Kasutatakse helide kombineerimiseks. flash.media.soundtransform Sisaldab endas väärtusi, mida kasutatakse helitugevuse kontrollimiseks ning panoraamimiseks. flash.media.id3info Sisaldab ID3 metaandmeid flash.media.microphone Klass mikrofoni kasutamiseks sisendina. Objekt kontrollib ise oma sämplimissagedust, võimendust ja muid laadseid omadusi. Hendrik Nõgene 18

19 Web Audio API on võimalik on omaduste poolest sama võimekas kui Adobe Flash. Mõlemas on võimalik luua dünaamiliselt helisid ning salvestada heli välistest seadmetest. Web Audio API toetab ka efekte nagu näiteks madal- ja kõrgsageduse pääsufiltrid (MDN, 2017, BiquadFilterNode). Flash i miinusteks on see, et tegemist on välise pistikprogrammiga, millel on üsna palju probleeme turvalisusega (cvedetails, 2017). Samuti pole Flash s ilma raamistiketa suurt efektide tuge. (Kuppila, 2009.) Flash on aga pisut lihtsam heli salvestamise poole pealt kui heli on vaja ka töödelda, kuna Actionscript 3-s on võimalik otse ligi pääseda mikrofoni voogandmetele, Web Audio API s on vaja need andmed saata läbi ScriptProcessorNode objekti. MediaStream teeb selle aga pisut lihtsamaks. (Imbert, 2013.) Üks suur probleem on veebis heli salvestamisega ka see, et Media Recording API-liidese kaudu salvestatud helid lähevad arvuti mälusse, mitte ketta peale. Selle tõttu on väga suurte heliklippide salvestamine üsna keeruline. (Addpipe, 2015.) Web Audio API puhul on ka vajalik heli salvestamiseks HTTPS ühendus ning kuna Web Audio API kasutab helide laadimiseks XMLHttpRequest i peab veebileht olema hoiustatud üldjuhul serveris Flash i rakendusi on võimalik ka kasutada kohalikus arvutis laadides alla SWF faili. Web Audio API kasuks räägib aga üha enam ka tema kättesaadavus kasutajatele. Web Audio API on koos mikrofoni kasutusega toetatud 72%-l brauseritest ning ilma mikrofoni sisendita 78%-l brauseritest (caniuse, 2017). Samal ajal on praeguse seisuga Adobe Flash installitud 59%-l kasutajatest ning see arv kahaneb pidevalt iga aastaga (gemiusranking, 2017). Hendrik Nõgene 19

20 120.00% Flash'i kasutus Eestis % 80.00% 60.00% 40.00% 20.00% 0.00% Flash-I kasutus Eestis Joonis 1. Flash'i kasutus Eestis (gemiusranking, 2017) Hendrik Nõgene 20

21 2. HELI SALVESTAMISE RAKENDUSE LOOMINE Töö praktilises osas loodi veebirakendus, mis töötab Google Chrome, Firefox, Opera ja Edge brauseris. Kogu veebirakendus on loodud kasutades kliendipoolseid vahendeid, serverit kasutatakse ainult failide üleslaadimiseks kui kasutaja seda soovib. Loodud veebirakendus võimaldab: Salvestada mikrofoni sisendi kaudu heli Mängida salvestatud helifaili veebilehel Kujutada heli võnkekõverana Võnkekõvera osi valida Laadida salvestatud helifail alla Laadida helifail üles serverisse Salvestada helifail oma Google Drive i Kasutada lihtsamaid helitöötluse funktsioone nagu lõikamine, kärpimine, amplituudi muutmine Mängida ja töödelda ainult valitud osasid heliklipis Töölauarakendused nagu Audacity ja Adobe Audition kasutavad ka nuppude jaoks ikoone, et neid oleks lihtsam eristada. Autor kasutab selle jaoks Bootstrap 5 raamistiku, mis võimaldab kasutada palju erinevaid ikoone läbi kaskaadlaadistiku klassi glyphicon. Bootstrap l olid olemas kõik vajalikud ikoonid heli mängimise ja töötluse jaoks, mida see rakendus kasutab. Helid salvestatakse kasutades ainult esimest kanalit. Autor leiab, et pole mõtet toetada stereoheli, kuna peaaegu kõik mikrofonid salvestavad üldiselt ainult ühte kanalit ning inimesed, kellel on stereoheli salvestavad mikrofonid seda rakendust arvatavasti ei kasutaks. Heli failid eksporditakse MP3 failivormingus kasutades eelnevalt mainitud LAME koodekit, kuna autor leiab, et see on kõigile tuttav heli failivorming ja ka peaaegu igal pool toetatud. MP3 failivorming on ka alates aasta aprillist tasuta (Fraunhofer, 2017). 5 Bootstrap raamistik Hendrik Nõgene 21

22 Helitöötluse funktsioonid nagu lõikamine, kärpimine ja amplituudi muutmine valis autor, kuna need on olemas juba olemasolevates rakendustes nagu TwistedWave ja kuna leidis, et ise heli salvestades kasutab neid funktsiooni kõige rohkem. Kuna aga alati ei ole vajalik rakendada efekti kogu heliklipile vaid teatud vahemikule, tuli lisada võimalus vahemike valida võnkekõveral. Efekt nagu amplituudi muutmine on kasulik kui näiteks salvestatud heliklipp on liiga vaikne või liiga valju. Heli lõikamine on kasulik kui on vaja näiteks väike osa eemaldada ja heli kärpimine jätab alles ainult valitud vahemiku. Mõlemad funktsioonid võimaldavad eemaldada üleliigseid heliandmeid. Kuna kasutajale on vajalik võimaldada ka helifailide üleslaadimine oli vajalik seadistada ka server. Diplomitöö on seega esitamise ajal kättesaadav serveris, aadressil Serveri konfiguratsioon Serverina kasutas autor node.js Express 6 raamistiku koos nginx 7 veebiserveriga. Autor otsustas kasutada ka serveri pool JavaScript i, kuna node.js l leidub ka Web Audio API jaoks teeke ning seega oleks võimalus vajaduse korral kasutada ka serveri poole peal Web Audio API t. Selleks, et mikrofoni sisendit kasutada on vajalik näiteks Google Chrome brauseris ka HTTPS ühendus. Kuna autoril puudus domeen, ei olnud võimalik sertifikaadi jaoks kasutada teenust nagu Let s Encrypt ja oli vajalik sertifikaat ise genereerida ja allkirjastada. Autor kasutas selle jaoks openssl teeki. Express rakendus konfigureeriti HTTP server port 8080 peale ning nginx seadistati pöördproksina, mis suunab ka kõik HTTP ühendused HTTPS ühenduse peale ümber. Autor 6 Express raamistik 7 Nginx Hendrik Nõgene 22

23 leidis rakenduse testimise ajal, et faile, mis olid suuremad kui 1 MB ei olnud võimalik üles laadida, kuna server ei võtnud päringuid vastu. Selle probleemi lahendamiseks oli vaja tõsta nginx i konfiguratsioonis client_max_body_count muutuja suurust. Helifailid võetakse Express serveris vastu kasutades multer vahevara teeki. Multer 8 on vahevara, mis on võimeline kliendilt võtma vastu multipart/form-data päringuid. Üles laaditava faili nimi muudetakse suvaliseks kaheksa tähe pikkuseks numbrite ja tähtede kombinatsiooniks ning salvestatakse uploads kausta. Kliendile saadetakse tagasi loodud faili nimi, mille kaudu on võimalik hiljem faili esitada ning alla laadida Heli salvestamine Tegemist on helisalvestamise rakenduse kõige olulisema funktsiooniga ning töö kirjutamise algusfaasis tekkis sellega probleeme. Heli salvestamiseks oli vaja kasutada getusermedia funktsiooni. Kuna aga getusermedia uuem variant on nüüd navigator.mediadevices.getusermedia, siis on vajalik ka kõigepealt kontrollida ära kõik erinevad versioonid sellest, et funktsioon töötaks kõigis toetatud brauserites. Koodi, mis kontrollib erinevate brauserite tuge, leidis autor MDN i artiklist aadressil Kui kasutaja nõustub mikrofoni kasutamisega, siis saadetakse mikrofoni voog edasi AudioRecorder klassile. Kui peaks tekkima mõni viga kasutaja keeldub või kui brauser ei toeta getusermedia funktsiooni, siis kuvatakse kasutajale veateade. AudioRecorder klassis luuakse andmevoost uus MediaStream objekt ning ühendatakse see ScriptProcessorNode ga, selleks et diskreetidele ligi pääseda. ScriptProcessorNode omakorda ühendatakse audio kontekstiga. Lisaks hoitakse mälus muutujat bufferexists, selleks et teada hiljem, kas juba on midagi salvestatud või mitte. Kui kasutaja uuesti soovib heli salvestada, siis küsitakse, kas soovib jätkata juba salvestatud heliklippi või kustutada vana heliklipp mälust. 8 Multer vahevara Hendrik Nõgene 23

24 record(stream) { this.stream = stream; this.source = this.context.createmediastreamsource(stream); this.source.connect(this.processor); this.processor.connect(this.context.destination); } this.bufferexists = true; Koodinäide 4. ScriptProcessorNode objekti ühendamine audio kontekstiga ScriptProcessorNode saadab kõik andmed edasi Worker le, mis hoiustab need massiivi. Worker le saadetakse ainult esimese kanali andmed. Web Worker te kasutamiseks on vajalik luua eraldi fail. Suhtlus Worker ga käib läbi postmessage funktsiooni, mis vahendab sõnumeid peamise skripti ja Worker i vahel. Sõnumid võetakse vastu läbi onmessage sündmusetöötleja. Läbi postmessage funktsiooni pole võimalik edastada JavaScript i objekte. (Bidelman, 2010.) this.processor.onaudioprocess = (e) => { this.worker.postmessage({ command: 'record', buffer: [ e.inputbuffer.getchanneldata(0) ] }); }; Koodinäide 5. Worker'le saadetakse esimesse puhvrisse talletatud diskreetsed andmed Heli salvestamise lõppemisel lülitatakse välja mikrofoni indikaator ning tagastatakse salvestatud andmed. Indikaatori välja lülitamiseks on vajalik peatada kõik MediaStreamTrack objektid MediaStream s. Kuna see ei peata onaudioprocess sündmusetöötlejat vaid saadab sellele tühja informatsiooni, tuleb veel eraldi ScriptProcessorNode eemaldada audio kontekstist. Hendrik Nõgene 24

25 stop() { let tracks = this.stream.gettracks(); for (let track of tracks) { track.stop(); } this.source.disconnect(); this.processor.disconnect(); } this.source = null; this.stream = null; Koodinäide 6. Mikrofoni andmevoo peatamine 2.3. Heli mängimine ja visualiseerimine Kuna heli diskreedid hoiustatakse massiivis eraldi osadena, on vajalik kõik osad kokku liita üheks suureks massiiviks, selleks et saaks võnkekõverat genereerida ning audiot mängida. Selleks luuakse uus Float32Array tüüpi massiiv. Uuest massiivist luuakse siis uus audio puhver, mis laetakse WaveSurfer i poolt läbi loaddecodedbuffer meetodi. let tempbuffer = this.context.createbuffer(1, buffer[0].length, this.context.samplerate); tempbuffer.getchanneldata(0).set(buffer[0]); this.wavesurfer.loaddecodedbuffer(tempbuffer); Koodinäide 7. Puhvri loomine ja laadimine Mängimise osa eest kannab hoolt peamiselt WaveSurfer i teek, mis võimaldab sündmusetöötlejad heli mängimiseks, peatamiseks ning aja kontrollimiseks. Samuti on võimalik läbi WaveSurfer i luua regioone heliklipil. Kuigi see omadus tundub olevat rohkem märgete lisamiseks on seda ka üsna lihtne kasutada ka näiteks heli mängimiseks ainult teatud alas. if (Object.keys(this.wavesurfer.regions.list)[0]) { const currenttime = this.wavesurfer.getcurrenttime(); const region = this.getselectedregion(); Hendrik Nõgene 25

26 if (currenttime > region.start && currenttime < region.end) { this.wavesurfer.play(currenttime); } else { this.wavesurfer.play(region.start); } } else { this.wavesurfer.play(); } Koodinäide 8. Heli mängimine valitud piirkonnas 2.4. Heli töötlemise võimalused Rakendusega on võimalik kustutada valitud osasid klipist (cut) või jätta alles ainult teatud osa (trim). Samuti on võimalik muuta audio amplituuti. Kõikide heliefektide kasutamiseks on vaja vähemalt kolme parameetrit heli puhver, vahemik ning audio kontekst. Kui vahemik pole määratud, siis mõjub efekt kogu heliklipile. Trimmimise ja lõikamise käigus luuakse uus audio puhver ning kopeeritakse andmed vanast puhvrist ümber vastavalt valitud vahemikule. Amplituudi efekti puhul muudetakse juba olemasolevat puhvrit. Amplituudi efekti puhul avatakse ka modaalaken, kus on võimalik täpsemalt ära määrata detsibellid. Amplituudi efekti puhul arvutatakse ka maksimum mõistlik väärtus, kuna kõik diskreet väärtused peaksid jääma -1 ja 1 vahele. Kasutajal on võimalik see soovitus välja lülitada. let highest = 0; for (let i = this.getbufferstart(); i < this.getbufferend(); i++) { if (Math.abs(this.buffer[i]) > highest) { highest = this.buffer[i]; } } return 20 * Math.log10(1 / Math.abs(highest)); Koodinäide 9. Kõrgeima mõistliku amplituudi suurenduse väärtuse leidmine Hendrik Nõgene 26

27 2.5. Salvestatud heli eksportimine Kasutajal on heli eksportimiseks kolm võimalust laadida alla oma arvutisse, laadida üles serverisse või siis salvestada oma Google Drive i. Helid salvestatakse MP3 failivormingus kasutades LAME koodekit. Kodeerimine toimub eraldi lõimes, et vältida kasutajaliidese aeglustumist. Kodeerimise lõppemisel luuakse uus bloob, mida on ka võimalik alla laadida. Faili üleslaadimisel luuakse uus FormData objekt ning suur kahendobjekt saadetakse POST päringuga serverisse. Peale üleslaadimist saadetakse kasutajale tagasi ka faili asukoha aadress, et sellele saaks hiljem ligi pääseda. Google Drive i puhul avatakse kõigepealt aken, kus on võimalik kasutajal sisse logida. Peale autentimist omandatakse pääsu luba, mida saab hiljem kasutada failide üleslaadimiseks. Selleks, et võimalik oleks kasutada Google Drive API t oli vaja eelnevalt omandada oma rakendusele clientid. clientid saamiseks oli vajalik Google API Console s luua uus projekt ning valida projektis valik OAuth Client ID Probleemid rakenduse arendamisel Peamised probleemid tulenesid sellest, et WebAudio API ja getusermedia rakendamine erineb üsna palju brauserite vahel. Omadused, mis on olemas ühes ei pruugi olla alati teises ning seetõttu peab iga muudatust kontrollima kõigis brauserites. Näiteks on võimalik Google Chrome brauseris ligi pääseda MediaStream objektidele läbi createmediastreamsource loodud muutuja kaudu kuid pole Firefox s. Samuti luues uut audio puhvrit on vajalik Firefox brauseris puhvri suurusena sisestada täisarv, sest muidu võib tekkida teatud olukordadel viga massiivi indeks väljaspool piire. Seda probleemi Chrome brauseris ei ole. Edge veebilehitseja erineb samuti pisut teistest. Kodeeritud kahendobjekti alla laadimiseks on vaja kasutada funktsiooni mssaveblob, mis töötab ainult Edge s, teised brauserid kasutavad createobjecturl meetodit. Edge tundub olevat ka teistest brauseritest aeglasem audio kodeerimine võttis peaaegu kolm korda rohkem aega kui teistes veebilehitsejates. Hendrik Nõgene 27

28 Pisut raskusi oli ka Google Drive i integratsiooniga, kuna ametlik dokumentatsioon oli JavaScript i kohta üsna kehv. Autentimise näide, mis API lehel üleval oli ei töötanud ning puudusid ka näited failide üleslaadimiseks. Töötava näite leidis autor lõpuks Google Drive i GitHub i lehelt Rakenduse edasiarendamise võimalused Tulevikus oleks võimalik lisada veebirakendusele juurde kasulike efekte nagu näiteks müra vähendamine ja eemaldamine. Kuna avatud lähtekoodiga programmis Audacity on need efektid juba olemas, oleks võimalik kood C++ st JavaScript i ümber kirjutada. Arenduse poole pealt saaks lisada juurde automatiseeritud testid, mis teeksid programmi testimise pisut lihtsamaks. Google Chome s on see võimalik kasutades käsurea valikuid --usefake-ui-for-media-stream, mis lülitab välja nõusoleku küsimise ning --use-fake-device-formedia-stream, mis edastab suvalisi voogandmeid. Firefox s on vaja kasutada getusermedia funktsioonis muutujat fake:true ja sätetes sisse lülitada valik media.navigator.permission.disabled:true. (Hancke, 2014.) Hendrik Nõgene 28

29 KOKKUVÕTE Üha enam rakendusi on muutumas veebipõhiliseks. Rakendused nagu Skype ja Office, mis varem olid töölauarakendused on nüüd kättesaadavad ka veebis. Veebirakendused on kasulikud, kuna nende kasutamiseks ei ole vaja midagi installeerida. Hetkel veebirakendused heli salvestamiseks on üldiselt tehtud kasutades Flash i, mis on tänaseks üsna ebaturvaline ja ka halvemini toetatud kui Web Audio API. Autori eesmärk oli luua veebirakendus, mis kasutaks Web Audio API t ning kus oleks võimalik heli mikrofoni kaudu salvestada ja ka tulemust töödelda. Selle jaoks tutvus autor varasemate rakendustega ning uute tehnoloogiatega nagu Web Audio API ja MediaStream API. Diplomitöö tulemusena selgus, et on võimalik luua heli salvestamise rakendus, kasutades vabavaralisi vahendeid ja Web Audio API t. Heli salvestamise rakendusel on mõned piirangud - pole võimalik kodeerida heliklippe ilma väliste teekideta, heli salvestatakse mälusse ja on vajalik HTTPS ühendus. Samas on aga Web Audio API ga palju võimalusi heli töötlemiseks. Võimalik on ligi pääseda heli puhvrile ning samuti lisada salvestatud heliklipile efekte, mida polnud võimalik teha isegi Flash s. Leidub ka teeke nagu Wavesurfer.js, recorder.js ja lamejs, mis tööd oluliselt lihtsustavad. Diplomitöö praktilises osas loodi veebirakendus, mis võimaldab heli salvestada, töödelda ja eksportida MP3 failivormingus. Salvestatud faile on võimalik alla laadida, üles laadida ning salvestada Google Drive i. Autoril on kavas arendamist jätkata lisades rakendusele juurde efekte. Hendrik Nõgene 29

30 ALLIKAD Addpipe. (2015). HTML5 s Media Recorder API in Action on Chrome and Firefox. [2017, aprill12]. Adobe. (s.a). Basics of working with sound. [2017, aprill 13]. e3d118a9b d27.html Adobe. (s.a). Microphone - AS3. [2017, aprill 7]. html Adobe. (s.a). Understanding the sound architecture. [2017, aprill 13]. e3d118a9b d26.html Bidelman, E. (2010). The Basics of Web Workers. [2017, mai 4]. Bidelman, E. (2016). Capturing Audio & Video in HTML5. [2017, aprill 7]. Can I use. (s.a). Can I use getusermedia?. [2017, aprill 10]. Cvedetails. (2017). Adobe Flash security vulnerabilities. [2017, aprill 13]. Player.html Hendrik Nõgene 30

31 Flaherty, D. (2016). AudioRecorder Walkthrough: Web Audio, WebRTC, and Web Workers. [2017, mai 4]. Fraunhofer. (2017). mp3. [2017, mai 8]. gemiusranking. (2017). Flash Player. [2017, aprill 11]. Google Groups. (2015). MediaStream Recording. [2017, mai 4]. Hancke, P. (2014). Automated testing of WebRTC applications. [2017, mai 8]. Imbert, T. (2013). From microphone to.wav with: getusermedia and Web Audio. [2017, aprill 14]. Kastrenakes, J. (2015). Adobe is telling people to stop using Flash. [2017, mai 7]. Kuppila, A. (2009). SoundFX, out-of-the-box audio filters with actionscript 3. [2017, mai 4]. Manson, R. (2013). Getting Started with WebRTC. (2. Chapter). MediaStream API. [2017, aprill 12]. Hendrik Nõgene 31

32 MDN. (2016). ScriptProcessorNode. [2017, aprill 11]. MDN. (2017). AudioBuffer. [2017, mai 4]. MDN. (2017). BiquadFilterNode. [2017, mai 8]. MDN. (2017). MediaDevices.getUserMedia(). [2017, mai 9]. MDN. (2017). MediaStream Recording API. [2017, aprill 12]. MDN. (2017). Web Audio API. [2017, aprill 11]. ondrejsv. (2009). Audio recorder Silverlight 4 sample. [2017, aprill 7]. Smus, B. (2013). Web Audio API. O'Reilly Media. W3C. (2015). Web Audio API. [2017, aprill 5]. W3C. (2016). Media Capture and Streams. [2017, aprill 12]. W3C. (2017). MediaStream Recording. [2017, aprill 10]. Hendrik Nõgene 32

33 West, M. (2013). Using Web Workers to Speed-Up Your JavaScript Applications. [2017, aprill 11]. Wilson, C. (2014). Explaining Web Audio s new Audio Worker. [2017, aprill 11]. Hendrik Nõgene 33

34 LISA 1. HELI LÕIKAMINE JA KÄRPIMINE // Lõikamine static cut(buffer, region, context) { const duration = buffer.duration; const samplerate = buffer.samplerate; const startoffset = Math.floor(region.start * samplerate); const endoffset = Math.floor(region.end * samplerate); const endbit = Math.floor(duration * samplerate - endoffset); const regionlength = Math.floor(startOffset + endbit); let result = context.createbuffer(1, regionlength, samplerate); let temparraystart = new Float32Array(startOffset); let temparrayend = new Float32Array(endBit); buffer.copyfromchannel(temparraystart, 0, 0); buffer.copyfromchannel(temparrayend, 0, endoffset); result.copytochannel(temparraystart, 0, 0); result.copytochannel(temparrayend, 0, startoffset); } return result; // Kärpimine static trim(buffer, region, context) { const duration = buffer.duration; const samplerate = buffer.samplerate; const startoffset = Math.floor(region.start * samplerate); const endoffset = Math.floor(region.end * samplerate); const regionlength = endoffset - startoffset; let result = context.createbuffer(1, regionlength, samplerate); let temp = new Float32Array(regionLength); buffer.copyfromchannel(temp, 0, startoffset); result.copytochannel(temp, 0, 0); } return result;

35 LISA 2. MIKROFONI SISENDI KASUTAMINE VEEBIS if (navigator.mediadevices === undefined) { navigator.mediadevices = {}; } if (navigator.mediadevices.getusermedia === undefined) { navigator.mediadevices.getusermedia = function (constraints) { var getusermedia = navigator.webkitgetusermedia navigator.mozgetusermedia navigator.msgetusermedia; if (!getusermedia) { return Promise.reject(new Error('getUserMedia is not supported in this browser')); } return new Promise(function (resolve, reject) { getusermedia.call(navigator, constraints, resolve, reject); }); } } navigator.mediadevices.getusermedia({video: false, audio: true}).then((stream) => { audiorecorder.record(stream); $('#war-record').html('stop Recording'); }).catch((err) => { log(err); }); (MDN, 2017, MediaDevices.getUserMedia()).

MSDE Upgrade platvormile SQL 2005 Server Express SP4

MSDE Upgrade platvormile SQL 2005 Server Express SP4 MSDE Upgrade platvormile SQL 2005 Server Express SP4 NB! Windos XP puhul peab veenduma, et masinas oleks paigaldatud.net Framework vähemalt versioon 2.0!!! NB! Muutke oma SA parool turvaliseks ( minimaalne

More information

Andmebaasid (6EAP) I praktikum

Andmebaasid (6EAP) I praktikum Andmebaasid (6EAP) I praktikum Mõisteid Server on arvutisüsteem või selles töötav tarkvara, mis pakub teatud infoteenust sellega ühenduvatele klientidele. Klient on tarkvara, mis võimaldab suhelda serveriga.

More information

WD My Net N600 juhend:

WD My Net N600 juhend: WD My Net N600 juhend: 1) Kui WD My Net N600 seade on ühendatud näiteks Elioni Thomsoni ruuteriga (TG789vn või TG784) või Elioni Inteno DG301a ruuteriga, kus üldiselt on ruuteri Default Gateway sama, nagu

More information

Puudub protseduur. Protseduuri nimi võib olla valesti kirjutatud. Protseduuri (või funktsiooni) poole pöördumisel on vähem argumente kui vaja.

Puudub protseduur. Protseduuri nimi võib olla valesti kirjutatud. Protseduuri (või funktsiooni) poole pöördumisel on vähem argumente kui vaja. Puudub protseduur. Protseduuri nimi võib olla valesti kirjutatud. Sub prog1() Msgox "Tere" Sub prog2() a = si(1) Protseduuri (või funktsiooni) poole pöördumisel on vähem argumente kui vaja. a = Sin() Protseduuri

More information

NAS, IP-SAN, CAS. Loeng 4

NAS, IP-SAN, CAS. Loeng 4 NAS, IP-SAN, CAS Loeng 4 Tunniteemad Network Attached Storage IP Storage Attached Network Content Addressed Storage Network Attached Storage Tehnoloogia, kus andmed on jagatud üle võrgu Salvestusvahendile

More information

SQL Server 2005 Expressi paigaldamine

SQL Server 2005 Expressi paigaldamine SQL Server 2005 Expressi paigaldamine Laadige alla.net Framework 2.0 http://www.microsoft.com/downloads/details.aspx?familyid=0856eacb-4362-4b0d- 8edd-aab15c5e04f5 Avage http://www.microsoft.com/express/2005/sql/download/default.aspx

More information

Tabelid <TABLE> Koostanud: Merike Hein

Tabelid <TABLE> Koostanud: Merike Hein Tabelid Tabelite kasutusvõimalus on HTML'is olemas juba pikka aega. Tabelimärgendite esmaseks kasutusalaks oli muidugi mõista tabelkujul info kuvamine. tähendab siis tabelite joonistamist.

More information

TP-Link TL-WR743ND Juhend

TP-Link TL-WR743ND Juhend TP-Link TL-WR743ND Juhend 1) Ühenda oma arvuti TP-Link ruuteriga üle kaabli (LAN). 2) Kui arvuti ja ruuter said omavahel ühendatud, siis võid minna seadme koduleheküljele (interneti brauseri otsingu reasse

More information

Mälu interfeisid Arvutikomponendid Ergo Nõmmiste

Mälu interfeisid Arvutikomponendid Ergo Nõmmiste Mälu interfeisid Arvutikomponendid Ergo Nõmmiste Mälu liigid Read-only memory (ROM) Flash memory (EEPROM) Static random access memory (SRAM) Dynamic random access memoty (DRAM) 1 kbaidine mälu vajab 10

More information

ArcGIS mobiilsed lahendused kasutades pilve teenuseid. Raido Valdmaa, AlphaGIS

ArcGIS mobiilsed lahendused kasutades pilve teenuseid. Raido Valdmaa, AlphaGIS ArcGIS mobiilsed lahendused kasutades pilve teenuseid Raido Valdmaa, AlphaGIS ArcGIS terviklik süsteem üks kaart, erinevad platvormid ArcGIS Online Server Rakendused ArcGIS Viewers ArcGIS APIs Javascript,

More information

SQL Serveri paigaldus. Laadimine:

SQL Serveri paigaldus. Laadimine: SQL Serveri paigaldus Laadimine: http://msdn.microsoft.com/vstudio/express/sql/download/ Tasub paigaldada kõige lihtsam versioon (SQL Server 2005 Express Edition SP2). Samalt lehelt saab laadida ka Sql

More information

Lõimed. Lõime mõiste. Lõimede mudelid. Probleemid lõimedega seoses. Pthreads. Solarise lõimed. Windowsi lõimed. FreeBSD lõimed.

Lõimed. Lõime mõiste. Lõimede mudelid. Probleemid lõimedega seoses. Pthreads. Solarise lõimed. Windowsi lõimed. FreeBSD lõimed. Lõimed Lõime mõiste Lõimede mudelid Probleemid lõimedega seoses Pthreads Solarise lõimed Windowsi lõimed FreeBSD lõimed Linuxi lõimed MEELIS ROOS 1 Ühe- ja mitmelõimelised protsessid code data files code

More information

IT infrastruktuuri teenused. Failiserver. Margus Ernits

IT infrastruktuuri teenused. Failiserver. Margus Ernits IT infrastruktuuri teenused Failiserver Margus Ernits margus.ernits@itcollege.ee 1 Failide hoidmine kasutaja arvutis pole tihti mõistlik, kuna Failiserver Arvuti kõvaketta hävimisega kaovad andmed ja nendest

More information

XmlHttpRequest asemel võib olla vajalik objekt XDomainRequest

XmlHttpRequest asemel võib olla vajalik objekt XDomainRequest 1 2 3 XmlHttpRequest asemel võib olla vajalik objekt XDomainRequest 4 5 6 7 8 https://www.trustwave.com/global-security-report http://redmondmag.com/articles/2012/03/12/user-password-not-sophisticated.aspx

More information

Androidi rakenduste ligipääsu õigused

Androidi rakenduste ligipääsu õigused Tallinna Ülikool Digitehnoloogiate Instituut Androidi rakenduste ligipääsu õigused Seminaritöö Autor: Martin Kütt Juhendaja: Jaagup Kippar Autor:...... 2017 Juhendaja:...... 2017 Instituudi direktor:......

More information

Digitaalne signaal Diskreetimine ja Dirac Delta Digitaalfiltrid. Digitaalne heli. Hendrik Nigul. Mathematics of Sound and Music.

Digitaalne signaal Diskreetimine ja Dirac Delta Digitaalfiltrid. Digitaalne heli. Hendrik Nigul. Mathematics of Sound and Music. Mathematics of Sound and Music Aprill 2007 Outline 1 Digitaalne signaal 2 3 z-teisendus Mis on heli? Digitaalne signaal Heli on elastses keskkonnas lainena leviv mehaaniline võnkumine. amplituud heli tugevus

More information

SEADISTAMISE JUHEND. Zoiper. Toompuiestee 37, Tallinn;

SEADISTAMISE JUHEND. Zoiper. Toompuiestee 37, Tallinn; SEADISTAMISE JUHEND Zoiper Toompuiestee 37, 10133 Tallinn; teenindus@gonetwork.ee; +372 6310700 Sisukord Sissejuhatus... 3 Täpsustav info... 3 Sätted... 3 Windows (UDP)... 4 Allalaadimine ja Paigaldamine...

More information

Andmebaasi krüpteerimine ja dekrüpteerimine

Andmebaasi krüpteerimine ja dekrüpteerimine Andmebaasi krüpteerimine ja dekrüpteerimine Me võime küll asetanud kõikidele andmebaasi objektidele ligipääsuõigused eri kasutajate jaoks, kuid ikkagi võib mõni häkker avada vastava faili lihtsalt failina

More information

Tallinna Ülikooli veebipuhvri teenuse kasutamine väljaspool ülikooli arvutivõrku

Tallinna Ülikooli veebipuhvri teenuse kasutamine väljaspool ülikooli arvutivõrku Tallinna Ülikooli veebipuhvri teenuse kasutamine väljaspool ülikooli arvutivõrku Selleks, et kasutada Tallinna Ülikooli veebipuhvrit väljaspool ülikooli arvutivõrku, tuleb luua ühendus serveriga lin2.tlu.ee

More information

InADS infopäev Villem Vannas Maarja Mahlapuu Janno Tetsmann

InADS infopäev Villem Vannas Maarja Mahlapuu Janno Tetsmann www.datel.ee InADS infopäev Villem Vannas Maarja Mahlapuu Janno Tetsmann Millest räägime Mis on InADS, kasutusjuhud Villem InADS visard keskkond Maarja Arendaja vaade: InADS API Janno Põhiline vajadus

More information

Veebirakendused Java baasil

Veebirakendused Java baasil Veebirakendused Java baasil Märt Kalmo https://ained.ttu.ee/course/view.php?id=126 Loeng 1 Servlet, korraldus, Java EE 2 Aine sisu Väga mahukas aine Veebirakendus Java-s on olemuselt sama mis Php-s või.net-is:

More information

MS Silverlight arendusplatvormi uuenduste rakendamise juhend. A Manual of Features of MS Silverlight Development Platform.

MS Silverlight arendusplatvormi uuenduste rakendamise juhend. A Manual of Features of MS Silverlight Development Platform. Tallinna Ülikool Informaatika Instituut MS Silverlight arendusplatvormi uuenduste rakendamise juhend. A Manual of Features of MS Silverlight Development Platform. Bakalaureusetöö Autor: Eiri Selberg Juhendaja:

More information

Andmebaasid kursuse andmemudel

Andmebaasid kursuse andmemudel Veebiteenused SyBase SQL Anywhere koostanud Sander Sepp SQL Anywhere on andmebaasi juhtsüsteem, mis sisaldab HTTP veebiserveri funktsionaalsust. Veebiserver võimaldab andmebaasi luua veebiteenuseid. Veebiteenused

More information

EESTI STANDARD EVS-ISO 11620:2010

EESTI STANDARD EVS-ISO 11620:2010 EESTI STANDARD EVS-ISO INFORMATSIOON JA DOKUMENTATSIOON Raamatukogu tulemusindikaatorid Information and documentation Library performance indicators (ISO 11620:2008) EVS-ISO EESTI STANDARDI EESSÕNA NATIONAL

More information

IPv6 harjutused. Aadressi kuju, kirjaviis, osad, liigid Aadressi saamise viisid

IPv6 harjutused. Aadressi kuju, kirjaviis, osad, liigid Aadressi saamise viisid IPv6 harjutused Aadressi kuju, kirjaviis, osad, liigid Aadressi saamise viisid IPv6 aadressi kuju IPv4 32 bitti (4 baidi kaupa) Kuju kümnendarvud 4 kaupa punktidega eraldatud 192.168.252.200 IPv6 128 bitti

More information

Nokia E51 kasutamine modemina

Nokia E51 kasutamine modemina Tartu Ülikool Matemaatika-informaatika teaduskond Arvutiteaduse instituut Nokia E51 kasutamine modemina Juhend Koostaja: Allar Tammik Juhendaja: Kersti Taurus Tartu 2008 Sisukord Sissejuhatus...3 Arvuti

More information

Veebilehe loomine HTML5 abil

Veebilehe loomine HTML5 abil Tallinna Ülikool Informaatika Instituut Veebilehe loomine HTML5 abil Seminaritöö Autor: Vladimir Vološin Juhendaja: Andrus Rinde Autor:......... 2011 Juhendaja:...... 2011 Tallinn 2011 Sisukord Sissejuhatus...

More information

EESTI STANDARD EVS-ISO/IEC 27003:2011

EESTI STANDARD EVS-ISO/IEC 27003:2011 EESTI STANDARD EVS-ISO/IEC 27003:2011 INFOTEHNOLOOGIA Turbemeetodid Infoturbe halduse süsteemi teostusjuhis Information technology Security techniques Information security management system Implementation

More information

Bluetooth Software Update Manual for Windows 7. Applicable from 2012 products CDE-13xBT & CDE-W235BT & CDA-137BTi

Bluetooth Software Update Manual for Windows 7. Applicable from 2012 products CDE-13xBT & CDE-W235BT & CDA-137BTi Bluetooth Software Update Manual for Windows 7 Applicable from 2012 products CDE-13xBT & CDE-W235BT & CDA-137BTi 1 Sissejuhatus See juhend kirjeldab samm-sammult kuidas uuendada seadme Bluetooth tarkvara.

More information

Vea haldus ja logiraamat hajutatud süsteemides Enn Õunapuu.

Vea haldus ja logiraamat hajutatud süsteemides Enn Õunapuu. Vea haldus ja logiraamat hajutatud süsteemides Enn Õunapuu enn.ounapuu@ttu.ee Millest tuleb jutt? Kuidas ma näen, millises sammus erinevad protsessid parasjagu on? Kuidas ma aru saan, kas protsess töötab

More information

VEEBIRAKENDUSTE ARHITEKTUUR Tehniline vaade

VEEBIRAKENDUSTE ARHITEKTUUR Tehniline vaade VEEBIRAKENDUSTE ARHITEKTUUR Tehniline vaade KOGEMUS ZeroTurnaround - java engineer Developer tools, used by thousands Proekspert - tarkvaraarhitekt EMT & Elisa backend Danske Bank kaardimaksed LOENGU

More information

Erik Jõgi. twitter.com/erikjogi twitter.com/codeborne

Erik Jõgi. twitter.com/erikjogi twitter.com/codeborne Disain Erik Jõgi erik@codeborne.com twitter.com/erikjogi twitter.com/codeborne Disain? Miks? Bad code Clean Code A Handbook of Agile Software Craftsmanship Robert C. Martin, 2008 Uncle Bob You know you

More information

BC4J - Java ärikomponentide algõpetus Oracle9i JDeveloper arenduskeskkonna baasil

BC4J - Java ärikomponentide algõpetus Oracle9i JDeveloper arenduskeskkonna baasil Tallinna Pedagoogikaülikool Matemaatika-loodusteaduskond Informaatika osakond Triin Lichfeld BC4J - Java ärikomponentide algõpetus Oracle9i JDeveloper arenduskeskkonna baasil Bakalaureusetöö Juhendaja:

More information

VEEBIRAKENDUSE ARENDAMINE QUAKE 3 MOOTORIL PÕHINEVATE MÄNGUSERVERITE MAJUTAMISEKS LINUX SERVERITEL

VEEBIRAKENDUSE ARENDAMINE QUAKE 3 MOOTORIL PÕHINEVATE MÄNGUSERVERITE MAJUTAMISEKS LINUX SERVERITEL TALLINNA TEHNIKAÜLIKOOL Infotehnoloogia teaduskond Tarkvarateaduse instituut IT40LT Janno Esko 134221IAPB VEEBIRAKENDUSE ARENDAMINE QUAKE 3 MOOTORIL PÕHINEVATE MÄNGUSERVERITE MAJUTAMISEKS LINUX SERVERITEL

More information

Camunda protsessimootori tutvustus

Camunda protsessimootori tutvustus Tallinna Ülikool Digitehnoloogiate Instituut Camunda protsessimootori tutvustus Seminaritöö Autor: Keio Arula Juhendaja: Jaagup Kippar Autor: Juhendaja: 2015 2015 Instituudi direktor: 2015 Tallinn 2015

More information

Failide jagamine ilma internetiühenduseta kasutades Android operatsioonisüsteemi

Failide jagamine ilma internetiühenduseta kasutades Android operatsioonisüsteemi Tallinna Ülikool Digitehnoloogiate Instituut Informaatika õppekava Failide jagamine ilma internetiühenduseta kasutades Android operatsioonisüsteemi Bakalaureusetöö Autor: Teele Pae Juhendaja: Jaagup Kippar

More information

FUNKTSIONAALNE PROGRAMMEERIMINE. Animatsioonid

FUNKTSIONAALNE PROGRAMMEERIMINE. Animatsioonid Animatsioon on liikuv, ehk ajast sõltuv, graafika Liikumise illusioon saavutatakse sellega, et teatud ajavahemike järel (optimaalseks peetakse 30 freimi sekundis) joonistatakse erineva pildiga uus freim

More information

2

2 1 2 3 4 5 St. seotud grupid 6 7 Soovitused: Vältida sidusgruppide tähtsuse järgi järjestamist. Minimeerige üksikute sidusgruppide esiletõstmist. 8 9 10 11 12 Päästeameti avalik veebileht (www.päästeamet.ee)

More information

HTML 5 ja CSS 3 uued võimalused ning nende töökindlus veebilehitsejates

HTML 5 ja CSS 3 uued võimalused ning nende töökindlus veebilehitsejates Tallinna Ülikool Informaatika Instituut HTML 5 ja CSS 3 uued võimalused ning nende töökindlus veebilehitsejates Seminaritöö Autor: Anton Birjukov Juhendaja: Jaagup Kippar Tallinn 2012 Sisukord Sissejuhatus...3

More information

TARTU ÜLIKOOL MATEMAATIKA-INFORMAATIKATEADUSKOND Arvutiteaduse instituut Infotehnoloogia eriala. Bakalaureusetöö (6 EAP)

TARTU ÜLIKOOL MATEMAATIKA-INFORMAATIKATEADUSKOND Arvutiteaduse instituut Infotehnoloogia eriala. Bakalaureusetöö (6 EAP) TARTU ÜLIKOOL MATEMAATIKA-INFORMAATIKATEADUSKOND Arvutiteaduse instituut Infotehnoloogia eriala Gerrit Kraav Mobiilse haiglainfosüsteemi broneeringu rakenduse arendamine Bakalaureusetöö (6 EAP) Juhendaja:

More information

Lühike paigaldusjuhend TK-V201S TK-V401S 1.01

Lühike paigaldusjuhend TK-V201S TK-V401S 1.01 Lühike paigaldusjuhend TK-V201S TK-V401S 1.01 Sisukord Eesti 1 1. Enne alustamist 1 2. Riistvara paigaldamine 2 Technical Specifications 8 Tõrkeotsing 9 Version 05.12.2010 1. Enne alustamist Eesti Pakendi

More information

DIGIALLKIRJASTAMINE VEEBIRAKENDUSES BDOC FORMAADIS TALLINNA AVALIKE KOGUNEMISTE INFOSÜSTEEMI JÄRELEVALVE MOODULI NÄITEL

DIGIALLKIRJASTAMINE VEEBIRAKENDUSES BDOC FORMAADIS TALLINNA AVALIKE KOGUNEMISTE INFOSÜSTEEMI JÄRELEVALVE MOODULI NÄITEL TALLINNA ÜLIKOOL Haapsalu Kolledž Rakendusinformaatika õppekava DIGIALLKIRJASTAMINE VEEBIRAKENDUSES BDOC FORMAADIS TALLINNA AVALIKE KOGUNEMISTE INFOSÜSTEEMI JÄRELEVALVE MOODULI NÄITEL Diplomitöö Juhendajad:

More information

D2D Coupon Dissemination

D2D Coupon Dissemination UNIVERSITY OF TARTU Institute of Computer Science Computer Science Curriculum Henri Ots D2D Coupon Dissemination Bachelor s Thesis (9 ECTS) Supervisor: Huber Flores, PhD Tartu 2016 D2D Coupon Dissemination

More information

Libgdx raamistik ja 2D arvutigraafika õppematerjal

Libgdx raamistik ja 2D arvutigraafika õppematerjal Tallinna Ülikool Informaatika Instituut Libgdx raamistik ja 2D arvutigraafika õppematerjal Seminaritöö Autor: Raner Piibur Juhendaja: Jaagup Kippar Autor:...... 2015 Juhendaja:...... 2015 Instituudi direktor:......

More information

VEEBITEENUST KASUTAV KASUTAJA TEGEVUSTE JÄLGIMISE JA SALVESTAMISE RAKENDUS

VEEBITEENUST KASUTAV KASUTAJA TEGEVUSTE JÄLGIMISE JA SALVESTAMISE RAKENDUS TALLINNA TEHNIKAÜLIKOOL Infotehnoloogia teaduskond Informaatikainstituut Infosüsteemide õppetool VEEBITEENUST KASUTAV KASUTAJA TEGEVUSTE JÄLGIMISE JA SALVESTAMISE RAKENDUS Bakalaureusetöö Üliõpilane: Üliõpilaskood:

More information

Pädevushaldus RESTful veebiteenuste abil

Pädevushaldus RESTful veebiteenuste abil Tallinna Ülikool Informaatika Instituut Pädevushaldus RESTful veebiteenuste abil Seminaritöö Autor: Eigen Lenk Juhendaja: Mart Laanpere Tallinn 2010 Sisukord Sissejuhatus... 3 1. Muutused veebitarkvara

More information

Ülesanne1: Saada arvutisse mõne minutiline heli ja töödelda seda (eemaldada müra, alguse ja lõpu mahendamine, kärpimine).

Ülesanne1: Saada arvutisse mõne minutiline heli ja töödelda seda (eemaldada müra, alguse ja lõpu mahendamine, kärpimine). Page 1 Helitöötlus Teemad: Heli salvestamine Eesti keele kõnesüntees http://www.eki.ee/keeletehnoloogia/projektid/syntees/ ja veebis töötav näide http://kiisu.eki.ee/ Lihtsamad helitöötlusvõtted Müra eemaldamine

More information

TARTU ÜLIKOOL. Arvutiteaduse instituut LOODUS- JA TÄPPISTEADUSTE VALDKOND

TARTU ÜLIKOOL. Arvutiteaduse instituut LOODUS- JA TÄPPISTEADUSTE VALDKOND TARTU ÜLIKOOL Arvutiteaduse instituut LOODUS- JA TÄPPISTEADUSTE VALDKOND Anita Scharonberg CVE-2015-3457 Referaat Juhendaja: Meelis Roos Tartu 2016 SISUKORD 1 Sissejuhatus... 3 2 Turvaauk... 3 3 Turvaaugu

More information

MTAT OPERATSIOONISÜSTEEMID praktikumid. Kersti Taurus

MTAT OPERATSIOONISÜSTEEMID praktikumid. Kersti Taurus MTAT.03.008 OPERATSIOONISÜSTEEMID praktikumid Kersti Taurus Mida tehakse praktikumides? Paigaldatakse operatsioonisüsteemid: Windows 7 Professional 64 bit eestikeelne ver. opensuse Linux 11.2 Edasi ülesanded

More information

Google Earth API juhendmaterjali koostamine

Google Earth API juhendmaterjali koostamine Tallinna Ülikool Informaatika Instituut Google Earth API juhendmaterjali koostamine Seminaritöö Autor: Ronald Kaul Juhendaja: Jaagup Kippar Tallinn 2011 Sisukord Sisukord... 2 Sissejuhatus... 3 1 Juhend

More information

AUTOMAATTESTIMISE PLATVORMI ARENDUS TAXIFY MOBIILIRAKENDUSELE

AUTOMAATTESTIMISE PLATVORMI ARENDUS TAXIFY MOBIILIRAKENDUSELE TALLINNA TEHNIKAÜLIKOOL Infotehnoloogia teaduskond Informaatika instituut IDK40LT Gert Valdek 120947IAPB AUTOMAATTESTIMISE PLATVORMI ARENDUS TAXIFY MOBIILIRAKENDUSELE Bakalaureusetöö Juhendaja: Jekaterina

More information

A. Toote kirjeldus. B. Ülevaade

A. Toote kirjeldus. B. Ülevaade A. Toote kirjeldus SUPERTOOTH DISCO on Bluetooth tehnoloogia põhine multimeedia kõlar, mille võib ühendada Bluetooth tehnoloogiaga varustatud mobiiltelefoni, pihu-, süle- või lauaarvutiga traadita leviva

More information

Pallimängude statistika tegemise veebirakendus

Pallimängude statistika tegemise veebirakendus TARTU ÜLIKOOL Arvutiteaduse instituut Informaatika õppekava Alfred-Reinhard Vuks Pallimängude statistika tegemise veebirakendus Bakalaureusetöö (9 EAP) Juhendaja: Eno Tõnisson Tartu 2016 Pallimängude statistika

More information

Pythoni SDK LEGO WeDo 2.0-le

Pythoni SDK LEGO WeDo 2.0-le TARTU ÜLIKOOL Arvutiteaduse instituut Informaatika õppekava Janno Peterson Pythoni SDK LEGO WeDo 2.0-le Bakalaureusetöö (9 EAP) Juhendaja: Aivar Annamaa Tartu 2017 Pythoni SDK LEGO WeDo 2.0-le Lühikokkuvõte:

More information

Mobiilirakendus roboti juhtimiseks

Mobiilirakendus roboti juhtimiseks TARTU ÜLIKOOL Arvutiteaduse instituut Infotehnoloogia õppekava Arvi Kaasik Mobiilirakendus roboti juhtimiseks Bakalaureusetöö (6 EAP) Juhendajad: Taavi Duvin, MA Alo Peets, MSc Anne Villems, MSc Tartu

More information

RASPBERRY PI 3 MODEL B WI-FI SEADISTAMISPROTSESSI LIHTSUSTAMINE

RASPBERRY PI 3 MODEL B WI-FI SEADISTAMISPROTSESSI LIHTSUSTAMINE TALLINNA TEHNIKAÜLIKOOL Infotehnoloogia teaduskond Tarkvarateaduse instituut Valeri Randalainen 142680IAPB RASPBERRY PI 3 MODEL B WI-FI SEADISTAMISPROTSESSI LIHTSUSTAMINE Bakalaureusetöö Juhendaja: Roger

More information

PHP-põhise tarkvaraarenduse abivahendid.

PHP-põhise tarkvaraarenduse abivahendid. Tallinna Ülikool Matemaatika-loodusteaduskond Informaatika osakond PHP-põhise tarkvaraarenduse abivahendid. Seminaritöö Ahti Nurme Juhendaja: Jaagup Kippar Autor:.........2006.a. Juhendaja:.........2006.a.

More information

HTML 5 TEHNOLOOGIA EELISED JA PUUDUSED MOBIILIRAKENDUSTE ARENDAMISEL ADOBE PHONEGAP I NÄITEL

HTML 5 TEHNOLOOGIA EELISED JA PUUDUSED MOBIILIRAKENDUSTE ARENDAMISEL ADOBE PHONEGAP I NÄITEL TALLINNA TEHNIKAÜLIKOOL Infotehnoloogia teaduskond Arvutiteaduse instituut ITI40LT Argo Käsper 134299 HTML 5 TEHNOLOOGIA EELISED JA PUUDUSED MOBIILIRAKENDUSTE ARENDAMISEL ADOBE PHONEGAP I NÄITEL Bakalaureusetöö

More information

Microsoftʼi OneDrive ja Silverlightʼi võrdlus sarnaste tehnoloogiatega

Microsoftʼi OneDrive ja Silverlightʼi võrdlus sarnaste tehnoloogiatega TARTU ÜLIKOOL MATEMAATIKA-INFORMAATIKA TEADUSKOND Arvutiteaduse instituut Infotehnoloogia õppekava Ülari Laurson Microsoftʼi OneDrive ja Silverlightʼi võrdlus sarnaste tehnoloogiatega Bakalaureusetöö (6

More information

Õppejõudude hindamise rakenduse REST API ja kasutajaliides kasutades Spring ja AngularJS raamistikke Bakalaureusetöö

Õppejõudude hindamise rakenduse REST API ja kasutajaliides kasutades Spring ja AngularJS raamistikke Bakalaureusetöö TALLINNA TEHNIKAÜLIKOOL Infotehnoloogia teaduskond Arvutiteaduse instituut Võrgutarkvara õppetool Õppejõudude hindamise rakenduse REST API ja kasutajaliides kasutades Spring ja AngularJS raamistikke Bakalaureusetöö

More information

KASUTAJALIIDESE RAAMISTIK JUHTSÜSTEEMIDELE

KASUTAJALIIDESE RAAMISTIK JUHTSÜSTEEMIDELE TALLINNA TEHNIKAÜLIKOOL Infotehnoloogia teaduskond Tarkvarateaduse instituut Karmo Kuurberg 153389IAPM KASUTAJALIIDESE RAAMISTIK JUHTSÜSTEEMIDELE Magistritöö Juhendaja: Jaagup Irve Tehnikateaduste magister

More information

Objektorienteeritud programmeerimine. 5. märts, 4. loeng Marina Lepp

Objektorienteeritud programmeerimine. 5. märts, 4. loeng Marina Lepp Objektorienteeritud programmeerimine 5. märts, 4. loeng Marina Lepp 1 Loeng Möödunud nädalal Klassid. Isendid. Konstruktorid. Sõned. Mähisklassid Praktikum Objektid ja klassid. Muutujate skoobid. Objektide

More information

3D mängude loomine XNA keskkonnas. Õppematerjal

3D mängude loomine XNA keskkonnas. Õppematerjal Tallinna Ülikool Informaatika Instituut 3D mängude loomine XNA keskkonnas. Õppematerjal Bakalaureusetöö Autor: Tambet Paljasma Juhendaja: Jaagup Kippar Autor:.... 2011 Juhendaja:.... 2011 Instituudi direktor:....

More information

Kirje. Kirje. Tüpiseeritud fail. CASE-lause. Laiendatud klahvikoodid. 1

Kirje. Kirje. Tüpiseeritud fail. CASE-lause. Laiendatud klahvikoodid. 1 Kirje. Tüpiseeritud fail. CASE-lause. Laiendatud klahvikoodid. 1 Kirje Kirje (record) on struktuurne andmetüüp (nagu massiiv) erinevat tüüpi andmete gruppeerimiseks. Kirje koosneb väljadest (field). Iga

More information

AUTHENTICATION WITH MICROSOFT OAUTH2 SERVICE, MICROSOFT OUTLOOK API AND IMPLEMENTED FRAMEWORK

AUTHENTICATION WITH MICROSOFT OAUTH2 SERVICE, MICROSOFT OUTLOOK API AND IMPLEMENTED FRAMEWORK TALLINN UNIVERSITY OF TECHNOLOGY Faculty of Information Technology Department of Computer Science ITV40LT Ilja Krjutškov 112528 AUTHENTICATION WITH MICROSOFT OAUTH2 SERVICE, MICROSOFT OUTLOOK API AND IMPLEMENTED

More information

Näidisrakendusel põhinev Microsoft Silverlight 3 õppematerjal

Näidisrakendusel põhinev Microsoft Silverlight 3 õppematerjal Tallinna Ülikool Informaatika Instituut Näidisrakendusel põhinev Microsoft Silverlight 3 õppematerjal Microsoft Silverlight 3 Tutorial for Creation of a Data Driven Application Bakalaureusetöö Autor: Ilja

More information

ANGULAR 2 JA REACTJS KLIENDIPOOLSETE RAAMISTIKKUDE ANALÜÜS JA VÕRDLUS VÄIKSEMATE ÜHELEHEVEEBIRAKENDUSTE KORRAL Bakalaurusetöö

ANGULAR 2 JA REACTJS KLIENDIPOOLSETE RAAMISTIKKUDE ANALÜÜS JA VÕRDLUS VÄIKSEMATE ÜHELEHEVEEBIRAKENDUSTE KORRAL Bakalaurusetöö TALLINNA TEHNIKAÜLIKOOL Infotehnoloogia teaduskond Tarkvarateaduse instituut Siim Salin 143029IABB ANGULAR 2 JA REACTJS KLIENDIPOOLSETE RAAMISTIKKUDE ANALÜÜS JA VÕRDLUS VÄIKSEMATE ÜHELEHEVEEBIRAKENDUSTE

More information

SDL MultiTerm i koolitus

SDL MultiTerm i koolitus SDL MultiTerm i koolitus Üldist...3 Kasutamisviisid...3 MultiTerm versioonid...3 Varasemad MT versioonid...3 MT komponendid...3 Formaadid...3 Andmebaasi komponendid ja ülesehitus...3 Töö MultiTerm'i põhiprogrammiga...4

More information

ANIMATSIOONID CAP TEOREEMI KOHTA HAJUSATE SQL-ANDMEBAASIDE NÄITEL

ANIMATSIOONID CAP TEOREEMI KOHTA HAJUSATE SQL-ANDMEBAASIDE NÄITEL TALLINNA TEHNIKAÜLIKOOL Infotehnoloogia teaduskond Informaatikainstituut IDU40LT Sander Siniorg 134676IAPB ANIMATSIOONID CAP TEOREEMI KOHTA HAJUSATE SQL-ANDMEBAASIDE NÄITEL Bakalaureusetöö Juhendaja: Erki

More information

HTML elementide animatsioonide optimeerimine

HTML elementide animatsioonide optimeerimine Tallinna Ülikool Informaatika Instituut HTML elementide animatsioonide optimeerimine Bakalaureusetöö Autor : Manuel Vulp Juhendaja : Andrus Rinde Autor:...... 2015 Juhendaja:...... 2015 Instituudi direktor:......

More information

MÄRGISTUSKEELED JA NENDE PRAKTILISUS E-POE NÄITEL

MÄRGISTUSKEELED JA NENDE PRAKTILISUS E-POE NÄITEL Eesti Ettevõtluskõrgkool Mainor Infotehnoloogia Õppetool Veebitehnoloogia eriala Julia Levtšenko MÄRGISTUSKEELED JA NENDE PRAKTILISUS E-POE NÄITEL Lõputöö Juhendaja: Jüri Majak, PhD Tallinn 2015 RESÜMEE

More information

GTK+ raamistiku kasutamine Pythonis PyGl mooduli vahendusel

GTK+ raamistiku kasutamine Pythonis PyGl mooduli vahendusel Tallinna Ülikool Digitehnoloogiate instituut GTK+ raamistiku kasutamine Pythonis PyGl mooduli vahendusel Seminaritöö Autor: Sander Peerna Juhendaja: Inga Petuhhov Tallinn 2016 Autorideklaratsioon Deklareerin,

More information

Tsüklidirektiivid. Klass Math. Staatilised meetodid. Massiivid. Koostada programm, mis leiab positiivsete paarisarvude summat vahemikus 1 kuni 20.

Tsüklidirektiivid. Klass Math. Staatilised meetodid. Massiivid. Koostada programm, mis leiab positiivsete paarisarvude summat vahemikus 1 kuni 20. Harjutustund 3 Tsüklidirektiivid. Klass Math. Staatilised meetodid. Massiivid. Tsüklidirektiivid Vaadake teooriat eelmisest praktikumist. Ülesanne 1 Koostada programm, mis leiab esimeste 20 arvude summat

More information

CSS i laiendusvõimalused läbi Sass i ning selle kasutamine veebirakenduste loomisel

CSS i laiendusvõimalused läbi Sass i ning selle kasutamine veebirakenduste loomisel Tallinna Ülikool Informaatika Instituut CSS i laiendusvõimalused läbi Sass i ning selle kasutamine veebirakenduste loomisel Seminaritöö Autor: Martin Koidu Juhendaja: Jaagup Kippar Tallinn 2012 Autorideklaratsioon

More information

Veebipõhised pilditöötlusprogrammid

Veebipõhised pilditöötlusprogrammid TALLINNA ÜLIKOOL Informaatika Instituut Veebipõhised pilditöötlusprogrammid Seminaritöö Autor: Marilis Aruväli Juhendaja: Andrus Rinde Tallinn 2011 Sisukord SISSEJUHATUS... 3 1 VEEBIPÕHINE TARKVARA...

More information

Xamarin ja Mvvmcross ios ja Android rakenduste loomiseks. Õppematerjal

Xamarin ja Mvvmcross ios ja Android rakenduste loomiseks. Õppematerjal Tallinna Ülikool Digitehnoloogiate instituut Xamarin ja Mvvmcross ios ja Android rakenduste loomiseks. Õppematerjal Bakalaureusetöö Autor: Priit Mattus Juhendaja: Jaagup Kippar Autor:...,,...,,2016 Juhendaja:...,,...,,2016

More information

An integrated development environment for the SecreC programming language

An integrated development environment for the SecreC programming language U N I V E R S I T Y OF T A R T U Faculty of Mathematics and Computer Science Institute of Computer Science Reimo Rebane An integrated development environment for the SecreC programming language Bachelor

More information

Kujundusmalli loomine sisuhaldussüsteemile Magento

Kujundusmalli loomine sisuhaldussüsteemile Magento Tallinna Ülikool Digitehnoloogiate instituut Informaatika Kujundusmalli loomine sisuhaldussüsteemile Magento Bakalaureusetöö Autor: Raul Gordejev Juhendaja: Romil Rõbtšenkov Autor:...... 2017 Juhendaja:......

More information

Tervita oma MacBooki Air.

Tervita oma MacBooki Air. Kiirjuhend Tervita oma MacBooki Air. Alustame. Maci käivitamiseks vajuta toitenuppu ning rakendus Setup Assistant annab sulle mõned lihtsad juhised, kuidas arvuti töökorda seada. See aitab sul Wi-Fi võrku

More information

Tartu Ülikooli Ideelabori veebikeskkonna arendus Bakalaureusetöö (6 EAP)

Tartu Ülikooli Ideelabori veebikeskkonna arendus Bakalaureusetöö (6 EAP) TARTU ÜLIKOOL MATEMAATIKA-INFORMAATIKATEADUSKOND Arvutiteaduse instituut Informaatika eriala Lauri Laur Tartu Ülikooli Ideelabori veebikeskkonna arendus Bakalaureusetöö (6 EAP) Juhendajad: Uuno Puus, Margus

More information

Mis on tõene? Tsüklid, failihaldus. if - näited. unless - näited. unless. Merle Sibola. if ($arv > $suur) { #leitakse suurim arv $suur=$arv; } #if

Mis on tõene? Tsüklid, failihaldus. if - näited. unless - näited. unless. Merle Sibola. if ($arv > $suur) { #leitakse suurim arv $suur=$arv; } #if Mis on tõene? Tsüklid, failihaldus Merle Sibola iga string on tõene, välja arvatud "" ja "0" iga number on tõene, v.a. number 0 Iga viide (reference) on tõene Iga defineerimata muutuja on väär. if if (EXPR)

More information

KOOLITUSTE HALDAMISE SÜSTEEM KEELES JAVA

KOOLITUSTE HALDAMISE SÜSTEEM KEELES JAVA TALLINNA TEHNIKAÜLIKOOL Infotehnoloogia teaduskond Arvutiteaduse instituut KOOLITUSTE HALDAMISE SÜSTEEM KEELES JAVA Bakalaureusetöö ITV40LT Üliõpilane: Maarja Lutsar Üliõpilaskood: 103689 Juhendaja: Jaagup

More information

Vähetuntud tootjate tahvelarvutid ja nende täiustamine

Vähetuntud tootjate tahvelarvutid ja nende täiustamine TALLINNA ÜLIKOOL Digitehnoloogiate instituut Vähetuntud tootjate tahvelarvutid ja nende täiustamine Seminaritöö Autor: Janek Kossinski Juhendaja: Jaagup Kippar Autor:......... 2017 Juhendaja:.........

More information

Tallinna Ülikool Digitehnoloogiate instituut. Cross-platform mobiilirakenduste arendus kasutades Xamarin'i Seminaritöö

Tallinna Ülikool Digitehnoloogiate instituut. Cross-platform mobiilirakenduste arendus kasutades Xamarin'i Seminaritöö Tallinna Ülikool Digitehnoloogiate instituut Cross-platform mobiilirakenduste arendus kasutades Xamarin'i Seminaritöö Autor: Priit Mattus Juhendaja: Jaagup Kippar Autor:,,,, 2015 Juhendaja:.,,,, 2015 Instituudi

More information

Veebiteenuse arendamise teekaart Rada7.ee näitel

Veebiteenuse arendamise teekaart Rada7.ee näitel Tallinna Ülikool Informaatika Instituut Veebiteenuse arendamise teekaart Rada7.ee näitel Bakalaureusetöö Autor: Kirill Milovidov Juhendaja: Jaagup Kippar Autor:...... 2015 Juhendaja:...... 2015 Instituudi

More information

Microsoft DirectAccess ja OpenVPN võrdluses

Microsoft DirectAccess ja OpenVPN võrdluses Tallinna Ülikool Informaatika Instituut Microsoft DirectAccess ja OpenVPN võrdluses Bakalaureusetöö Autor: Toomas Väärt Juhendaja: Meelis Karp Autor:..... 2013. a. Juhendaja:...... 2013. a. Instituudi

More information

POPULAARSEMATE BRAUSERITE VÕRDLUS

POPULAARSEMATE BRAUSERITE VÕRDLUS Tallinna Ülikool Informaatika Instituut POPULAARSEMATE BRAUSERITE VÕRDLUS Seminaritöö Autor: Annika Koppel Juhendaja: Andrus Rinde Autor:...... 2009 Juhendaja:...... 2009 Tallinn 2009 Sisukord Sissejuhatus...3

More information

IDU0080 Veebiteenused ja Interneti-lahenduste arhitektuur Loeng 2 Lahenduste inegratsioon. Enn Õunapuu

IDU0080 Veebiteenused ja Interneti-lahenduste arhitektuur Loeng 2 Lahenduste inegratsioon. Enn Õunapuu IDU0080 Veebiteenused ja Interneti-lahenduste arhitektuur Loeng 2 Lahenduste inegratsioon Enn Õunapuu enn.ounapuu@ttu.ee Millest räägime Vaatleme lähemalt rakenduste integratsiooni vajadust ja võimalusi

More information

INTERAKTIIVSETE REKLAAMIDE TUTVUSTAMINE JA ÜHE NÄITEREKLAAMI LOOMINE NUTISEADMELE CURLIFY CMS ABIL

INTERAKTIIVSETE REKLAAMIDE TUTVUSTAMINE JA ÜHE NÄITEREKLAAMI LOOMINE NUTISEADMELE CURLIFY CMS ABIL Tallinna Ülikool Digitehnoloogiate Instituut INTERAKTIIVSETE REKLAAMIDE TUTVUSTAMINE JA ÜHE NÄITEREKLAAMI LOOMINE NUTISEADMELE CURLIFY CMS ABIL Seminaritöö Autor: Kevin Rull Juhendaja: Jaagup Kippar Autor:...,,.,,

More information

DLK Pro mitmekülgne seade mobiilseks andmete allalaadimiseks Kohandatud-valmistatud erinevatele nõudmistele

DLK Pro mitmekülgne seade mobiilseks andmete allalaadimiseks Kohandatud-valmistatud erinevatele nõudmistele www.dtco.vdo.com DLK ro mtmekülgne seade moblseks andmete allalaadmseks Kohandatud-valmstatud ernevatele nõudmstele Lhtsalt genaalne, genaalselt lhtne DLK ro on VDO tootegrupp, ms on määratud vastavalt

More information

Võrgutehnoloogia MTAT Sissejuhatus

Võrgutehnoloogia MTAT Sissejuhatus Võrgutehnoloogia MTAT.08.033 Sissejuhatus Erkki Laaneoks (7.09.205) 2 Loengu eesmärk 3 4 Mida ootame arvutivõrgult? 5 Probleeme? Üle mille infot edastada ja kuidas? Mürad, kollisioonid, sumbuvus jms. /Noises,

More information

Sisuhaldustarkvarade Drupal ja Joomla! funktsionaalsuse võrdlus

Sisuhaldustarkvarade Drupal ja Joomla! funktsionaalsuse võrdlus Tallinna Ülikool Informaatika Instituut Sisuhaldustarkvarade Drupal ja Joomla! funktsionaalsuse võrdlus Seminaritöö Autor: Indrek Ruubel Juhendaja: Jaagup Kippar Autor:...... 2010 Juhendaja:...... 2010

More information

PILVANDMETÖÖTLUSE RAKENDUSED

PILVANDMETÖÖTLUSE RAKENDUSED TALLINNA TEHNIKAÜLIKOOL Infotehnoloogia teaduskond Arvutitehnika instituut IAG40LT Anett Kann 120903 PILVANDMETÖÖTLUSE RAKENDUSED Bakalaureusetöö Juhendaja: Vladimir Viies PhD Dotsent Tallinn 2015 Autorideklaratsioon

More information

LIFERAY PORTAALILE VEEBITEENUSE JA SELLELE ANDROIDI KLIENDI ARENDAMINE

LIFERAY PORTAALILE VEEBITEENUSE JA SELLELE ANDROIDI KLIENDI ARENDAMINE TALLINNA TEHNIKAÜLIKOOL Infotehnoloogia teaduskond Arvutiteaduse instituut ITI40LT Martin Andreas Maarand 134858IAPB LIFERAY PORTAALILE VEEBITEENUSE JA SELLELE ANDROIDI KLIENDI ARENDAMINE Bakalaureusetöö

More information

SIDE (IRT 3930) Põhipunktid. Loeng 11 Transpordiprotokollid Teema - infotransport. Teenuse (lingi) demultipleks. Infotransport kliendilt serverini

SIDE (IRT 3930) Põhipunktid. Loeng 11 Transpordiprotokollid Teema - infotransport. Teenuse (lingi) demultipleks. Infotransport kliendilt serverini SIDE (IRT 3930) Loeng 11 Transpordiprotokollid Teema - infotransport Klient- mudel Teenuste jaotus Infotransport klient- seoses Töökindel infoülekanne võrgukihi kaudu ja transpordiprotokollid Põhipunktid

More information

Arvutiprogramm laboratoorse töö Juhuvea uurimine automatiseerimiseks füüsikas

Arvutiprogramm laboratoorse töö Juhuvea uurimine automatiseerimiseks füüsikas TARTU ÜLIKOOL MATEMAATIKA-INFORMAATIKATEADUSKOND Arvutiteaduste instituut Tarkvarasüsteemide õppetool Infotehnoloogia eriala Lavrenti Tšudakov Arvutiprogramm laboratoorse töö Juhuvea uurimine automatiseerimiseks

More information

Adobe Edge Animate'i ja Google Web Designeri animeeritud graafika loomise vahendite võrdlus

Adobe Edge Animate'i ja Google Web Designeri animeeritud graafika loomise vahendite võrdlus Tallinna Ülikool Digitehnoloogiate Instituut Adobe Edge Animate'i ja Google Web Designeri animeeritud graafika loomise vahendite võrdlus Seminaritöö Autor: Paul Nestor Juhendaja: Andrus Rinde Autor:......

More information

PHP koodimisstandard PSR

PHP koodimisstandard PSR Tallinna Ülikool Informaatika Instituut PHP koodimisstandard PSR Seminaritöö Autor : Manuel Vulp Juhendaja : Jaagup Kippar Tallinn 2014 Sisukord Sissejuhatus... 4 1 Mis on koodimisstandard?... 5 2 Miks

More information

EESTI STANDARD EVS-ISO/IEC :2011

EESTI STANDARD EVS-ISO/IEC :2011 EESTI STANDARD EVS-ISO/IEC 15408-1:2011 INFOTEHNOLOOGIA Turbemeetodid Infoturbe hindamise kriteeriumid Osa 1: Sissejuhatus ja üldmudel Information technology Security techniques Evaluation criteria for

More information

Milleks tüübid? Mida teeb järgmine programmijupp? x 1 := "Pii siinus on : "; x 2 := ; printx 2 ; print(sin(x 1 ));

Milleks tüübid? Mida teeb järgmine programmijupp? x 1 := Pii siinus on : ; x 2 := ; printx 2 ; print(sin(x 1 )); Milleks tüübid? Mida teeb järgmine programmijupp? x 1 := "Pii siinus on : "; x 2 := 3.1415926;... printx 2 ; print(sin(x 1 )); Ei tea (loodetavasti siiski mitte midagi väga hullu :-) VARMO VENE 1 Milleks

More information