Kierroksen 5 purku

Toiseksi viimeisen tapaamisemme alussa käsittelimme kuvan varsinaisesti piirtämiseen liittyviä aiheita. Olimme jälleen kahden viikon ajan keränneet informaatiota erinäisistä asioista, ja tässä ovat lopputulokset tiivistettyinä:

Animaatio:

Animaatiot ovat käytännössä peräkkäin näytetty sarja kuvia, joita tarpeeksi nopeasti vaihtamalla saadaan ihmiselle luotua illuusio liikkeestä. Usein sanotaan, että kuvia on tietty määrä sekunnissa (frames per second), ja sen avulla voidaan hieman vertailla animaatioiden sulavuutta. Toteutustapoja on Scalassa useita, mutta yksinkertaisinta lienee päivittää näytölle piirrettävien Image-olioiden kuvaa tarvittaessa. Siinä on kuitenkin lukuisia puutteita – uudelleenpiirrettäessä ei voida suorittaa muuta ohjelmakoodia, animaation ajoitus oikeaan aikaan on vaivalloisempaa ja etenkin pelien toteuttaminen näin on ongelmallista.

Monella tapaa parempi ratkaisu olisi hyödyntää säikeitä. Luomalla Thread -olio ja jättämällä animaatioiden ylläpitäminen täysin sen huoleksi, saadaan ajoitus paljon helpommin toteutettua, samanaikaisesti suoritettua muiden objektien ohjelmakoodia sekä renderöidä kuvaa efekteillä haluttaessa. Kuitenkin sykronointi pääohjelman koodin suorittamisen vaiheiden kanssa voi olla erittäin olennaista tällä tavoin.

Canvasia käyttävä Graphics2D on hidas, kun piirrettäviä kuvaolioita on paljon. OpenGL on nopeampi monissa tilanteissa, ja muut menetelmät voivat olla tilanteesta riippuen vielä nopeampiakin. Tämä tuskin tulee kuitenkaan ongelmaksi, ellei luoda ohjelmia esimerkiksi puhelimille tms.

2D-grafiikka Scalassa

Scalassa ei ole natiiveja grafiisia ominaisuuksia, vaan kaikki piirtämistoiminnot tulevat suoraan Javan kirjastoista. Abstract Window Toolkit eli AWT ja Swing ovat Javan kaksi 2D-grafiikan kannalta erittäin olennaista pakettia. Niissä on paljon samanlaisia piirto-ominaisuuksia ja ne osittain käyttävät samoja luokkiakin, mutta erittäin olennainen ero tulee käyttöliittymän suunnittelun kanssa.

AWT ottaa käyttöliittymän ikkunaelementtien tyylit suoraan käyttöjärjestelmän omista tyyleistä, kun taas Swing piirtää ikkunaelementit omista tyyleistään. Muun muassa ongelmia aiheuttaa AWTia käyttävien ohjelmien porttaus, sillä eri käyttöjärjestelmissä ikkunaelementit voivat näyttää hyvinkin erilaisilta. Swingillä tehdyt ohjelmat sen sijaan näyttävät huomattavasti yhtenäisemmiltä eri käyttöjärjestelmien välillä. Tästä on etua, sillä ikkunaelementtien tyyli sisältää informaatiota mm. siitä, minkä kokoisia ja näköisiä erilaiset napit ja valikot ovat. Jos ero on kovin suuri, voi tarkkaan suunniteltu käyttöliittymä näyttää huonolta tai jopa aiheuttaa hankaluuksia muilla tietokoneilla käytettäessä.

Swing

Swing on Scalan peruskirjasto, jonka avulla on helppo rakentaa monenlaisia käyttöliittymiä. Sen luokat sisältävät määrittelyjä ja metodeja mm. nappuloiden, tekstikenttien, valikoiden ja valintalaatikoiden luomiseen ja käyttöön. Nämä käyttöliittymäelementit sitten jaetaan paneeleihin, joilla voidaan tarkemmin valikoida niiden sijaintia ruudulla.

Ne osaavat myös kuunnella erilaisia inputin tapahtumia, kuten hiirellä klikkausta tai näppäimistön käyttöä, ja heittävät tiedon käyttäjän tekemistä asioista tapahtumakuuntelijalle. Kuuntelija sitten suorittaa erilaisia metodeja riippuen siitä, mitä tapahtui ja missä. Tällä tavoin saadaan esimerkiksi toimintoja käyttöliittymässä olevaa nappia painettaessa.

OpenGL ja renderöinti

Open Graphics Library, eli OpenGL on ohjelmistorajapinta, joka sisältää lukuisan määrän funktioita 2D- ja 3D-grafiikan luomiselle. Se on käyttäjästä ja käyttöjärjestelmästä riippumaton, sillä OpenGL-funktiot pelkästään käsittelevät kuvien tehokasta renderöintiä. Puhtaasti grafiikkaa käsittelevänä kirjastona OpenGL:n avulla ei siis pysty hoitamaan esimerkiksi standardien mukaisten ikkunakomponenttien tekoa, elementtien kuuntelemista tai muita vastaavia toimintoja. Vaihtoehtoisia rajapintoja on myös; pienempiä kuvien renderöintiin pureutuvia kirjastoja on lukuisia, ja eräs olennainen kilpailija on Microsoftin DirectX.

Renderöinti on kuvadatan luomista aiemman datan avulla, noudattaen tietynlaista mallia. 3D-grafiikan yhteydessä termillä viitataan mm. realististen valoefektien kirkkauksien laskemiseen. Videoiden renderöinnissä voidaan kuvasarjan jokaiseen kuvaan lisätä jonkinlainen efekti erilaisten filttereiden avulla, jotta saadaan esimerkiksi kuvasta terävämpää tai poistettua epähaluttuja asioita siististi. Esimerkiksi pelien yhteydessä reaaliaikaisesti useita kuvia peräjälkeen renderöidessä joudutaan säästelemään efektien hienoudesta, sillä aikaa yksittäisen kuvan luomiseen saattaa olla vain sekunnin murto-osa.

– Esa Koskinen

Tapaus 4 – Purku

Neljännen tapauksen aiheena oli web-teknologiat ja sitä lähdettiin purkamaan yhden miehen vajauksella. Tero sai kuitenkin lähetettyä esityksensä verkon kautta, joten hänenkään aiheensa ei jäänyt käsittelemättä. Aiheista löytyi niin vertaisverkkoa kuin URL:n ja MVC:n toimintaa. Oheen on kasattu töiden muistiinpanoja, joista ilmenee olennainen.

MVC (model-view-controller)

– tapa järjestellä koodia
– useat frameworkit toteutettu käyttäen
– ongelmana, että kontrolleriin kasautuu liikaa kamaa

– model (malli), määrää sen, miten asiat näytetään
– view (näkymä), luo mallin luomasta datasta lopullisen visuaalisen esityksen
– controller (ohjain), vastaanottaa käyttäjän komennot, prosessoi ne ja ohjaa mallia ja näkymää

Sekä hyvä havainnollistava kuva:
mvc

URL

– tietty merkkijono, joka sisältää viittauksen lähteeseen
– rakentuu seuraavasti:
1. ensin protokolla esim. http
2. kaksoispiste ja kaksi kauttaviivaa
3. host, joka yleensä annetaan verkkotunnuksena, mutta joskus myös kirjallisena IP-osoitteena
4. koko loppupolku
– protokolla kertoo miten yhdistää, host määrittää minne yhdistetään ja loput sen, mitä pyydetään

DNS

– nimipalvelujärjestelmä, joka muuntaa verkkotunnuksia IP-osotteiksi
– mahdollistaa helposti muistettavien nimien käytön numeeristen osotteiden sijaan (jolla Internetin laitteet kommunikoivat)
– toimii kuin puhelinluettelo, joka liittää verkkotunnuksia IP-osotteisiin

Nimipalvelun toteuttavia palvelintyyppejä on kaksi:
– resolverit – hakee nimipalvelukyselyihin vastauksia
– auktoritatiiviset nimipalvelimet – antavat vastauksia nimipalvelukyselyihin

P2P -verkot (vertaisverkko, peer-to-peer-verkko)

Markuksen tekemän hienon esityksen voi katosa tästä:
ME-C2110 Kierros 4 – Web-teknologiat – P2P

— Karri Haranko

Tapaus 6 – Käyttöliittymäsuunnittelu, purku

Viimeisen OLO-session angendana oli kuudennen eli kurssin päättävän kierroksen (GUI) purku ja lopuksi ryhmän jäsenten yhteisen palautelomakkeen täyttäminen. Kun kaikki ryhmän jäsenet olivat saapuneet paikalle kävimme heti purkamaan viimeisen tapauksen sisältöä. Edellisellä kerrallahan tutkittavaksi aiheiksi oli valikoitunut käytettävyystestit, hidden test ja käyttöjärjestelmille laaditut interaktion suositukset, joista edelleen tarkasteltiin Windows Phonen ja Androidin ominaisuuksia. Seuraavassa lyhyesti, mitä saimme aiheesta irti.

Videopelien oudot ominaisuudet

– Tyyppi 1 – Debug-toiminnot:

Joihinkin peleihin on kehitysprojektin jäljiltä jäänyt erilaisia debug-toimintoja. Esimerkiksi Windows XP:n Space Cadet -pinball pelissä pelin aikana kirjoitettu “hidden test” avaa useita eri debug-ominaisuuksia. Palloa on mun muassa mahdollista liikuttaa hiirellä ja pistesaldo on mahdollista muuttaa arvoon 1,000,000,000. Lisäksi on esimerkiksi mahdollista katsoa pelin viemän muistin määrä ja kehysnopeus. Tarkemmin Pinballin “hakkeroinnista” on kerrottu tämän linkin takana.

– Tyyppi 2 – Pelin tekijöillä oli tylsää tai he halusivat välittää jonkin viestin:

Avoimesta pelimaailmastaana tunnettu Grand Theft Auto -pelisarja on tästä mainio esimerkki. Esimerkiksi GTA IV – pelissä New Yorkin edustalla sijaitsevalla, Liberty Islandin saarella Vapaudenpatsas on kaikkea muuta kuin pelkkä viaton patsas. Vapaudenpatsaan ovikyltissä nimittäin lukee…

“No Hidden Content this way”

…ja mitä patsaan sisältä paljastuukaan…

“Heart of the City”

Eivätkä patsaan kasvotkaan taida ihan vastata esikuvaansa…

Jos kiinnostuksesi heräsi, aiheesta löytyy enemmän tietoa tämän linkin takaa.

– Tyyppi 3 – Pelin tekijät olivat laiskoja tai budjetti loppui kesken:

Seuraava video kertoo luultavasti kaiken tarvittavan siitä, mitä seurauksia tällä voi olla.


Sittemmin huippusuosion saavuttanut Creepy Watson on myöhemmissä saman studion Sheerlock Holmes -peleissä jätetty tarkoituskella enalleen.

Käytettävyystestit

Käytettävyystestaus on prosessi, jossa käyttäjien avulla arvioidaan tietyn tuotteen käytettävyysongelmia, esimerkkinä käyttöliittymien testaus. Tuotteen kohderyhmästä valitaan käyttäjiä, jotaka testaavat tuotetta valvotuissa olosuhteissa. Pelkkä mielipiteiden keräämien ei ole käytettävyystestausta, vaan olennaista on nimenomaan myös testin systemaattinen tarkkailu. Käyttäjien toiminnasta voidaan päätellä, mitkä asiat esimerkiksi juurikin käyttöliittymän käytössä aiheuttavat ongelmia ja mitkä taas luonnistuivat helposti.

Vuorovaikutus käyttäjien kanssa antaa suoraa palautetta siitä, mtien tuotetta kannattaa kehittää eteenpäin. Tarkoituksena ei välttämättä ole löytää joka ikistä ongelmaa tai todistaa nitä tieteellisesti.

Testiin osallistuu usein muutamia käyttäjiä, koska parilla ei saada tarkkoja tuloksia ja todella suuret ryhmät vaatiavat paljon resursseja. Testillä on tarkkailijoita tyypillisesti yhdestä kolmeen, ja he voivat olla joko taustahavannoitsijoita tai näkymättömissä.

Käyttöjärjestelmien interaktion suositukset

Tarkastelun kohteina oleiden moobilialustoiden Windows Phonen ja Androidin sovelluskehittäjille annettuissa ohjeissa on monia yhtäläläisyyksiä, mutta vähintään yhtä paljon löytyy myös poikkeavaisuuksia.

Alustoiden varmasti tärkein omien sovellusten yhtäläisyys on appien ulkoasu. Valmistajat haluavat säilyttää niissä samat piirteet, jotta sovellusten käyttäminen olisi kautta linjan helppoa ja intuitiivista. Windowsilla ulkoasun määrittely on ehkä kuitenkin Androidia vähän tiukempaa. Android-alustalla sovelluksilla ei nimittäin aiemmin ollut ulkoasun määräviä kriteereitä, mutta sittemmin Google on halunnut järjestelmänsä ulkoasuun yhdenmukaista logiikkaa.  Molemmille käyttöjärjestelmile yhteistä on myös omien sovelluksien johdonmukainen käytettävyys. Tämä tarkoittaa sitä, että jos esimerkiksi sovelluksessa olevalla painikkeella on tietty toiminto, täytyy vastaavan ulkoasun omaavan painikkeen suorittaa toisessa ohjelmassa samankaltaiset toimenpiteet.

Mobiilialustoiden eroavaisuuksia mainitakseni Windows Phonen sovelluksissa painotetaan liikettä ja elävyyttä, kun taas Androidin puolella asiat pitäisi ilmaista mielummin kuvien avulla kuin tekstillä, kertoohan kuva tunnetusti enemmän kuin tuhat sanaa. Androidilla myös tiedon nopea käytettävyys on avainasemassa, mikä tarkoittaa sitä, että käyttäjän syöttämää tietoa pitäisi tallentaa laitteen musitiin, jotta sama tieto on myöhemmin nopeasti saatavilla. Tällä pyritään siihen, että samaa asiaa ei tarvitsisi kertoa laitteelle joka kerta uudelleen. Windowsin kehittäjille annetaan puolestaan ohjeeksi sovelluksen ongelmaton eri ympäristöissä; onhan Windows alun alkaen ollut PC-tietokoneiden käyttöjärjestelmä eikä mobiilikäyttöjärjestelmä.

Tämän linkin takaa löytyy vielä pääpiirteet Androidin appien kehittämiseen annetuista ohjeista, joiden avulla sovellusten kehittäjät voivat laatia käyttäjäystävällisiä ohjelmia.


Markus Pajari

23.10. OLO3:n purku

Tällä viikolla neljättä olo-tapausta, joka oli siis kuva, oli saapunut purkamaan vain noin puolet ryhmämme vahvuudesta. Lieneekö tenttiviikko sitten tehnyt tehtävänsä vai mikä, mutta muutama aihe kuvaan littyen saatiin kuitenkin käytyä läpi.

Väriavaruus

Väriavaruus on matemaattinen malli siitä, kuinka esittää värejä lukujen avulla. Usein tämä toteutetaan kolmella tai neljällä luvulla, elöi komponentilla. Väriavaruus määrittelee, mitä kaikkia värejä voidaan käyttää – määrä ja määrittely vaihtelee värimallien välillä.

Erilaisia värimalleja ovat esimerkiksi:

  • RGB (Red Green Blue) – tietokonegrafiikassa varmasti yleisin värimalli

  • HSB (Hue Saturation Brightness) – sävyyn, kylläisyyteen ja kirkkauteen perustuva malli. Yleisesti käytetty valo- ja videokuvan käsittelyssä, sillä se mahdollistaa kuvan helpon värikorjauksen.

  • CMYK – tulostukseen tarkoitettu värimalli (värit sekoittuvat eri tavalla kuin tietokoneen näytöllä)

  • Lisäksi mm. PAL-videokuvan YUV, sekä RGB:n johdannaiset sRGB ja Adobe RGB.

Vektorigrafikka

Vektorigrafiikka eroaa rasterigrafiikasta siinä, että kuvaa ei tallenneta kuvapisteinä, vaan matemaattisesti määriteltyinä muotoina, esim. ympyrä ja neliö.

Käytännössä kuvatiedostoon tallennetaan solmujen paikkoja ja tiedot siitä miten mitkäkin solmut yhdistetään. Alla olevassa kuvassa esim. suorilla viivoilla.

vector4

Määritellyt muodot voidaan lopuksi määritellä täytettäviksi jollakin värillä (kuten mallikuvassa keltaisella) tai vaikka rasterimuotoisilla kuvilla, mikä on mahdollista esim. EPS-vektoriformaatissa. Koska kuva on tiedostossa määritelty ainoastaan matemaattisesti, täytyy lopullinen kuva muodostaa joka kerta uudestaan kuvaa näytettäessä. Tästä on tosin hyötynä se, että vektorigrafiikkaa voidaan skaalata loputomasti ilman että sen laatu kärsii. Yleisimpi vektoriformaatteja on  SVG, johon voidaan itse grafiikan lisäksi suoraan tallenetaa myös esimerkiksi animaatiota. SVG on nettisivuilla eniten käytetty vektoriformaatti sillä kaikki uudenaikaiset selaimet tukevat sitä.

HDR (High Dynamic Range) -kuva

  • Kuvantamista, jossa kuvaa käsitellään muodossa, jossa dynamiikkaa enemmän kuin tavalliset monitorit ja tulostimet pystyvät esittämään
  • HDR-kuvan tulostaminen/näyttäminen monitorilla: tavanomaista laajempi kirkkausalue kutistetaan tulostimen/näyttölaitteen kirkkausaluetta vastaavaksi
  • Yksinkertaisin, lineaarinen kutistaminen →kontrastittomat, mitäänsanomattomat kuvat; eivät vaikuta luonnollisilta.
  • Kehittyneemmättonemapping-algoritmit; pyrkivät säilyttämään paikallisen kontrastin

Dynamiika

  • Tarkoittaa sitä, kuinka laaja kirkkausalue voidaan esittää niin, että kuvan yksityiskohdat vielä erottuvat
  • Mitataan yleensä aukkoina →kukin aukko kaksinkertaistaa kirkkauden
  • Korkealla ja matalalla dynamiikkalla ei yksikäsitteistä rajaa
  • Tyypillinen matalan dynamiikan kamera/filmi/monitori toistaa noin 5-9 aukon laajuisen dynamiikka-alueen

HDR -kuvan ottaminen

  • Tyypillisesti valotushaarukoinnilla: samasta näkymästä otetaan useampi valokuva eri valotuksilla
  • Esim. 1/125 s, 1/250 s, 1/500 s, 1/1000 s, 1/2000 s; muut valotusparametrit (aukko, herkkyys) pysyvät samoina
  • Kuvien yhdistäminen: esim. Photoshop, LuminanceHDR →rekonstruoivat eri valotusajoilla otetuista kuvista kameran toistokäyrän, laskevat kullekin pikselilletodellisen kirkkauden

Tallentaminen

  • Yleensä jossakin muodossa, jossa ei ole käytännössä rajoja, esim. EXR
  • EXR-muodossa kunkin pikselinvärikomponentti (RGB, punainen, vihreä sininen) liukuluku →kirkkauden suuruusluokka voi vaihdella huomattavasti, merkitsevien numeroiden määrää vakio
  • Liukulukuina esitetty HDR-kuva tavallaan rekonstruktio siitä, millaiset valoisuuserot maisemassa oli ennen kuin se kuvattiin, lisättynä mahdollisesti kuvantamisvälineen virheillä

Kuvaputkinäyttö

Kuvaputkinäyttö koostuu tyhjiössä olevasta elektrinitykistä, jonka lähettämiä elektroneja ohjataan kaksisuuntaisella magneettikentällä. Elektronit kohdistetaan fosforipintaan siten, että ne muodestavat halutun kuvan. RGB-näytössä elektroneja kohdistetaan erikseen punaista, vihreää ja sinistä valoa emitoiville kohdille fosforipintaa. Yksi kuvaputken erityis-sovelluksista on oskilloskooppi.

Tälläistä siis tällä viikolla OLO-ryhmä #10 purussa.

Antti Virtanen

25.9. OLO1-session Purkumuistiinpanot

Enkapsulointi

-toteutustavan piilottaminen public/private määreillä

-olion sisäisen logiikan voi piilottaa käyttäjältä privatella

-vähentää monimutkasuutta

-estää toimintalogiikan muuttamisen koskematta alkuperäiseen koodiin

-ollennaista esim kirjastoissa joissa tiedonhakua ei tarvitse nähdä, vaan haettava tieto tarvitaan näyttää

-poistaa public puolelta potentiaalista raskasta luettavaa

muuistiinpanot

Interface (rajapinta)

-Antaa ohjelmien käyttää muita ohjelmia kun tiedetään ohjelman kyvyt ja metodit.

-Scalassa ei ole rajapintoja. “Traits” korvaa tämän saman toiminnon

-Tunnetaan myös API:na. Esimerkkejä:

-OpenGL

-DirectX

kalvot

Olio-ohjelmoinnin hierarkia

-On hankala näyttää minkään kielen kaikki hierarkiat ihan yksinkertaisesti koon takia; dataa olisi liikaa

-Scalassa:

-Kaikki ovat olioita

-Kaikkein korkeimmalla on Scala.Any, jonka alla on Scala.AnyRef ja Scala.AnyVal josta sitten kaikki muut oliot periytyvät.

-Null ja None ovat metaforisia “käärmeitä” Scalan maailmassa, kaikista alimpina hierarkiassa.

Tietotyyppien näkyvyys

-Yleisesti muuttujat voi määritellä joko private tai public tyyppisiksi

-Private muuttujat näkyvät vaan sen luokan sisällä tai sen funktion sisällä jossa se on määritelty

-Public:it näkyvät ulkoakinpäin. Näihin voi päästä mistä tahansa käsin.

-Scalassa ei ole julkisia muuttujia, niitä pitää määritellä luokkana tai pitää luoda funktio joka erikseen palauttaa sitä, mitä haluaa.

Perintä 

-tarkoituksena vähentää uudelleenkirjoittamista

-olio-ohjelmoinnissa on tapa luoda ali-luokkia olemassa olevista luokista

kalvot

Oliot ja tietokannat

-Olioita ja dataa halutaan tallentaa tietokantoihin

-tarkoitus ei ole tallentaa jokaista oliota, vaan tiettyjä oleellisia asioita

-voidaan poistaa tallennettuja olioita tietokannoista ja tuoda niitä takaisin muistista käyttäjän halun mukaan

-tyypit ja viittaukset:

-esim string voi olla niin pitkä kun haluaa, joka voi hajottaa tallennusta jos tallennuksessa on rajallinen tila

-dataolioit tulevat yksittäisinä ja eivät peri toisiaan

-pythonissa on django-palikka jossa idea on luoda olio joka kuvastaa jotain taulua ja linkitetään liittyviä indeksejä. Monta oliota voi linkittää samaan aikaan.

Tietorakenteet 

muistiinpanot 1

muistiinpanot 2

Emme valitettavasti saaneet polymorphismista tietoa kuten suunniteltu.

Olo 0:n purku

18.9. Olo0 session purkumuistiinpanot

Scan-koodit

  • näppikset lähettää tietokoneelle
  • näppäimellä oma
  • jäänne historiasta, halpa toteutus
  • näppäimellä voi olla monta(alas, ylös) tai sitten toistetaan samaa koodia
  • pohjassa ja ylös on tärkeitä, koska shift alt jne
  • priorisointi, alt on korkein, sitten ctrl, shift

Eka kuva
Toinen kuva

Pysymätön muisti

  • Volatile
  • Keskusmuisti, RAM-muistia
  • Käyttis, ohjelmien runtimeä
  • Nopeampaa kuin kovalevy, hitaampaa kuin prosun välimuisti
  • Rajattu koko
  • Siirtyy väylää pitkin prossuun, Kellopulssien taajuus ja väylän nopeus vaikuttaa kokonaisnopeuteen
  • Virkistettävää, pieniä konkkia, jotka luetaan ja virkistetään

Kuvia muistiinpanoista:

sivu 1
sivu 2

Välimuisti

  • ei tarvi virkistää
  • prossulla
  • ensin haetaan täältä, jos ei löydy, niin haetaan keskusmuistista
  • todennäköisesti tarvittavaa, useasti käytettävää tietoa

Kuva muistiinpanoistapuuttuu

Pysyvä muisti

  • Magneettinen(kovalevy,nauha), optinen(levyt), flash, paperinen
  • Kiintolevy(levyjä, lukupää)
  • tiedostojärjestelmä(fat, ntfs, ext)
  • SSD-levyt nopeita ja kestää tärinää
  • Väylät

Pysyvän muistin tiedostojärjestelmä

  • Jaettuina osiin(clusterit, sektorit)
  • Pirstaloituminen
  • datan haku, hakemistot
  • käyttöjärjestelmä hoitaa tiedostojärjestelmää
  • Metadata(nimi, aika, käyttäjätiedot jne.)

Kuva muistiinpanoista

IO

Sampsa kalvot

IO enemmän output

  • Kertoo muille, mitä tapahtuu
  • näytöt, haptinen jne
  • Näyttö
  • näytönohjain -> piirtää kuvat -> muuttaa signaaliksi näyttöä varten -> näyttö näyttää
  • Näyttö ei tarvi ajuria, koska näytönohjaimen portit on standardoitu
  • Näytönohjaimen grafiikkapiiritä voidaan käyttää kiihdyttämiseen
  • Näytössä tärkeää, resolutio ja virkistystaajuus, jotta kuva voidaan näyttää
  • Analogista signaalia (VGA), digitaalinen(dvi, hdmi)
  • tulostin
  • kuva lähetetään tulostimelle, tulostin tallentaa, sitten tulostaa
  • äänikortti muuntaa signaaliksi, vahvistaa vähän ja pistä äänen kaiuttimelle
  • Haptinen teknologia(tuntoaisti)

Unicode

  • Merkistöjärjestelmä, joka määrittää yksilöivän koodin yli 100000:lle merkille
  • Kaikki maailman merkit mahtuu 🙂
  • kolme koodausta (utf-8, 16, 32)
  • utf-8 = vaihtelevan pitkä, osaksi yhteensopiva vanhojen kanssa, yksi merkki 1-4 tavua, helppo tunnistaa automaattisesti
  • Osin korruptoitunut data voidaan palauttaa ei-korrutoituneiden kohdalta
  • utf-16 on aina tavupareissa
  • utf-32 on aina 4 tavua, simppeli, kaikki saman kokoisia
  • Unicoden käyttö yleistä, koska kieliä on paljon, ennen vanhaan tallennettii miten sattui ei-yhteensopivilla koodauksilla.
  • Tuki myös ohjelmointikielissä

Linkki muistiinpanoihin

Ei-unicode

  • Ennen bitit oli kalliita
  • Monta erilaista
  • suomessa suosituin 8859-1
  • 7-bittisen asciin laajennus
  • Monta muuta iso-merkistöä
  • Muita merkistöjä, venäjällä on koi-8 kyriilisile, aasiassa omansa

Eri Scan-järjestelmät

  • PC-XTn mukana SCAN 1
  • jokasella näppäimellä 7 bittiä, 1 bitti ylös/alas tilaan
  • Merkkien encoodaukset
  • Set 2 on yleisin ps/2-näppiksissä
  • Set 2 imb pc AT:n kanssa
  • USB-näppikset ei käytä

Written with StackEdit.