IMEbeta

IT og utvikling ved IME-fakultetet

IME-API: Campus-, bygg- og romdata

with 2 comments

Et knippe data fra FDV-systemet Lydia er nå gjort tilgjengelig via IME-APIet. Det betyr at du maskinelt og helautomatisk kan hente data om campusene, bygningene og rommene ved NTNU.

Hvert objekt fra et API-kall inneholder data om «seg selv» og tilhørende underobjekter, med referanse til ovenforliggende objekter. Slik ser et oppslag på auditorium F1 ut:

{
    "rooms": [
        {
            "id": 4553,
            "nr": "152",
            "name": "F1",
            "type": "Auditorium felles",
            "buildingId": 2,
            "floorId": 2
        }
    ]
}

Derfra kan man videre slå opp bygningen med ID 2, «IT-bygget, sydfløy», hvor man også vil finne detaljer om etasjen med ID 2.

I tillegg er deler av APIet rensket opp i. Tekst-dumping for debug er fjernet, bruk heller en plugin ala JSONView for å få formatert JSON-dataene på en pen måte i nettleseren. Cache-data finnes nå også som HTTP cache headers «Last-Modified» og «Expires». Bedre håndtering av 404-feil er også på plass.

Happy hacking!

Written by Rune M. Andersen

september 6th, 2012 at 7:06 am

Posted in Tjenester

Tagged with , , , , , , ,

Romskilting med eInk

with 2 comments

Testing av template og data

Testing av template og data

IME-fakultetet bruker et enkelt, egenutviklet system for reservasjon av grupperom i Elektrobygget. Med jevne mellomrom printes det oppslag som angir hvem som har booket hva til hvilke tider, og oppslagene blir hengt opp på dørene. Systemet krever at noen (les: Hilde på Info-hjørnet) går rundt og henger opp nye oppslag, og har den åpenbare svakheten at oppslagene raskt blir utdaterte når nye reservasjoner legge inn.

Hva om vi kunne hatt en skjerm på døra i stedet?

Det ville være en stor fordel å slippe elektroinstallasjon og kabling. På et nybygget kjøpesenter i Sverige oppdaget jeg selvoppdaterende hyllekantprising med eInk-lignende matrisedisplay som kunne vise både tekst og grafikk. Etter å ha sjekket markedet fant jeg noen aktører som solgte lignende løsninger.

Modulex eFlex (PDF-lenke) er egentlig et 10 cm bredt ZBD ePop 500 pakket inn i en Modulex-ramme. Skjermen er en bistable LCD, og oppdateres over trådløs forbindelse fra en sender kalt Bounce. Bounce’en kobles til nettverket og styres av software installert på en IIS-boks. Man kan «tegne» templater (layouten på skjermen) og fylle dem med data fra en CSV-fil. IIS fanger automatisk opp endringer i filen, og sender nye data ut til skjermen(e) ved behov. Enkelt oppsett, og genialt for integrasjon. Alt man trenger gjøre er å oppdatere CSV-filen, så skjer resten av seg selv. Den eneste installasjonen skjermen trenger er en initiell opplasting av template, og et par skruer for å feste den til døra.

It’s alive!

Skjermen bruker ikke strøm så lenge den bare henger der og viser bildet, men trekker bittelitt når den mottar nye data og oppdaterer bildet. Det innebygde knappebatteriet varer opptil 5 år, og selv om det ikke finnes noen batteriluke, antar jeg man kan bryte opp dekselet og erstatte det når det dør. Noe annet ville vært svært dårlig miljøpolitikk.

Selv om testinga gikk bra har vi valgt å ikke ta i bruk akkurat denne modellen. Skjermen er ganske enkelt i minste laget. I stedet kjøper vi den 16 cm brede storebroren ZBD ePop 900.

Coming soon to a møterom near you! (Hvis du jobber på IME-fakultetet, iallfall).

Takk til skiltfirmaet Modulex som lånte oss demokit!

 

Under dekselet

Under dekselet

Sett fra siden

Sett fra siden

Written by Rune M. Andersen

desember 15th, 2011 at 2:21 pm

API til folket! Emnedata til fri bruk

with 28 comments

Screenshot av tekstdump

Screenshot av tekstdump

NTNU sitter på store mengder nyttig data som få har tilgang til. Tingenes tilstand er blitt bedre de siste årene, og nå finnes det flere WebService’er enhetene kan bruke for å hente rådata fra offisielle kilder. Dessverre er disse ikke åpne for «publikum», men i dag tar vi første steg for å bote på det.

IME-fakultetet tilbyr den første av forhåpentligvis flere APIer: Emne-API.

Tjenesten fungerer ved at man kjører spørringer REST-ish, f.eks. ime.ntnu.no/api/course/tma4105, og den returnerer JSON-data. Vil man ha noe som er lettere å lese kan man slenge på «.txt» og få en tekstdump rett i browseren.

Målsettingen er å få fart i utviklingen av smarte løsninger, og jeg håper én eller flere driftige studenter/studiner tar utfordringen. F.eks. emnekatalog på mobil?

Hvis noen lager noe på grunnlag av denne tjenesten hadde det vært gøy å få en kommentar her på bloggen.

Edit: oppdaterte til nye URLer i eksemplet.

Written by Rune M. Andersen

mars 11th, 2011 at 2:58 pm

Posted in Tjenester

Tagged with , , , , , ,

Tips: data-attributter i HTML5

with one comment

HTML5 for web designers

JavaScript er kjekt/nødvendig innimellom. Noen ganger har jeg måttet ty til skitne triks for å lagre data (som JS senere skal finne og gjenbruke/reagere på) i HTML-koden. En typisk løsning kunne være å definere spesielle klassenavn, lagre data i IDer eller legge inn skjulte elementer.

Enter HTML5!

I HTML5 kan man definere sine egne attributter. Disse har navn som starter med «data-», og i dem kan man lagre ting man ikke finner plass til andre steder. Etterpå kan dataene f.eks. hentes ut igjen med JS, og brukes til å utvide funksjonaliteten på siden.

Eksempel: Adresseliste

Demo

Listeteksten er lett lesbar for et menneske. Men hvis vi f.eks. vil legge til kartsøk trenges noe mer nøyaktig enn løs tekst. IDen til bygningen personen sitter i kan være en fin start, men vi vil ikke forurense den pene lista med tallgraps brukerne ikke har noe forhold til. data-* redder dagen.

    • Torbjørn Digernes, Høgskoleringen 1
    • Rune Andersen, Gamle Fysikk rom 300

En dæsj jQuery-magi gir liv til koden.

$(document).ready(function(){
  $('#contacts li').click(function(){
    // Gjøre noe mer spennende enn en alert, kanskje?
    alert($(this).attr('data-building'));
  });
});

Written by Rune M. Andersen

februar 17th, 2011 at 2:30 pm

Studieplan på web

with one comment

Fakultetene IME, NT og IVT har siden sommeren 2009 hatt et prosjekt gående for å gjøre studieplanene (som nå kun ligger i studiehåndbøkene) tilgjengelige på web. Det finnes allerede PDF-utgaver til nedlasting, men disse er som nødløsninger å regne, i påvente av skikkelig tilgjengeliggjøring. Mange prosjekter før oss har prøvd å løse samme problem – uten hell. «Studieplan på web» er blitt et problem som jevnt over oppfattes som «umulig» å løse.

Screenshot: Studieplan på web

Screenshot: Studieplan på web

Problemet med studieplanene (spesielt tabellene)  er at det finnes et stort antall fotnoter, unntak, valgmenyer og annen «logikk». Noe av dette har kun studieveilederne inngående kunnskap om, annet kan man lese seg frem til i prosatekstene. Dessverre er ikke alle «reglene» lagret i datakilden (FS), ei heller finnes det APIer for å programmatisk hente ut nødvendige data. For å komme forbi «umulige data»-stadiet ble realfagstudieprogrammet Biologi (BBI) valgt som pilot, og FS-dataene gjennomgått og strukturert så godt man kunne. Deretter ble dataene eksportert som XML til vår lokale sandkasseserver.

I løpet av prosjektperioden ble det bygget en quick-and-dirty prototype som demonstrerer ett (av flere) forslag til visning. Senere leide vi studenten Bojana Petkov for å tegne wireframes og foreslå utvidet funksjonalitet. Bojana jobbet hos oss i to uker og har i ettertid presenterte sine resultater til stor begeistring i diverse studieadministrative fora. Mye funksjonalitet ble «tenkt inn» i systemet, f. eks.

  • bygg/kladd din egen studieplan
  • del studieplan med medstudenter
  • send til studieveileder for gjennomgang
  • integrasjon mot timeplan

Denne uka tilbød Studieavdelinga å overta og finansiere prosjektet videre, med sikte på implementering for både realfag- og teknologistudiene. Prosjektet er nå overlevert, og vi håper at vi (med det vi har gjort så langt) har demonstrert at problemet er løsbart. Umulig er det iallfall ikke!

Kildekoden til prototypen, inkludert datasettet for BBI, kan lastes ned og benyttes fritt.

Written by Rune M. Andersen

februar 11th, 2011 at 2:50 pm

Fredagstips: Mindre masing

without comments

Som erfaren PC-bruker kan det til tider bli irriterende når Windows leker overformynder og alltid dobbeltsjekker «Er du helt, helt, helt sikker på at du vil gjøre dette? Det kan være farlig!»

Open File - Security Warning

Hvis man f.eks. åpner programmer som ligger på nettverksstasjoner vil XP umiddelbart få spader og fyre løs en skummel dialogboks. De fleste klikker sikkert bare Run og tenker ikke mer på det, men hvis du føler at nok er nok er løsningen egentlig veldig enkel.

Start Internet Explorer, velg Tools og Internet Options. Gå til fanen Security, velg Internet og trykk deretter Custom level…

Internet Options

Et stykke ned i listen (under Miscellaneous) finner du Launching applications and unsafe files. Forandre fra Prompt til Enable, og klikk OK/Yes hele veien tilbake. IE begynner (selvsagt) umiddelbart å klage på at maskinen er ytterste nød, men er du som meg bruker du ikke IE likevel, og kan begynne å leve et litt mer harmonisk liv med PCen din.

Security settings

Oppdatering: Dag Nummedal (drift) påpeker at for nettverksstasjoner er det riktigere å legge stasjonen til under «Local intranet» -> «Sites».

Written by Rune M. Andersen

januar 28th, 2011 at 9:55 am

Live SMS-tavle

with 4 comments

SMS-tavle screenshotI høst fikk jeg spørsmål fra Letizia Jaccheri om det var mulig å lage en enkle teknisk løsning hvor deltakere i en forelesning kunne sende SMSer til foredragsholder, og SMSene ville bli synlige for salen på et lerret. Fakultetet abonnerer allerede på en SMS-tjeneste fra Boost Communications, så mottak av meldinger var ikke noe problem. Etter at en melding er sendt (til riktig nummer med riktig kodeord), dyttes den over til en database hos oss, og arbeidet bestod derfor bare av å hente ut og presentere på et egnet format.

For at systemet skulle leve sitt eget liv uten behov for manuell oppdatering, valgte jeg å bruke jQuery (massive overkill, men det var enklest sånn) og en dæsj AJAX-magi. Et skript sjekker databasen regelmessig og legger nye meldinger over på tavla, samtidig som de gamle «faller» nedover. Noen linjer CSS, og så var systemet ferdig.

Kildekode til fri nedlasting og bruk

Demo

Spørsmålet Letizia stilte var «Hvorfor trenger mennesker informasjonsteknologi?», og salen ble bedt om å SMSe inn sine svar. (Svarene i klippet er dummyer).

Written by Rune M. Andersen

januar 21st, 2011 at 11:28 am

NTNU i 360-graders panorama

without comments

Som del av campuskartprosjektet ønsker vi å presentere bilder av NTNUs campuser og bygninger. I tillegg til de vanlige flate bildene tenker vi også på 360-graders panoramabilder av utvalget steder, utendørs og/eller innendørs, lagd slik at man kan hoppe fra sted til sted mens man er inne i panoramaet. En slags fattigmanns Street View.

Til nå har vi lekt og eksperimentert med verktøy og arbeidsflyt, dette er en oppsummering av funnene så langt.

Fotografering

Gode bilder er grunnlaget. Bildene må ha lik eksponering (tas i manuell modus), ellers vil fargene variere og man får stygge skjøter. Overlappet bildene imellom må være stort nok til at sy-sammen-alle-delene-programmet finner ut hva som hører til hvor, 1/2 til 1/3 i hver retning duger som regel. Mest mulig av bildet bør være i fokus, det vil si: bruk liten blender. Fordi lyset varierer bør man finne en mellomting mellom beste og verste lysforhold og bracket-eksponere samme utsnitt tre (eller fem) ganger med +-1 EV (eller +-2 EV). Og for å få eksponeringene nøyaktig overlappende bør man naturligvis bruke et stødig stativ. Kanskje også fjernkontroll for å unngå å flytte/berøre kameraet.

Et vanlig pan-hode funker, men et skikkelig panoramahode må til for å unngå feilskjøter og spøkelsestendenser. For å unngå å få forskyvninger mellom objekter langt frem og langt bak i bildet må man også finne objektivets «nodal point»/»no parallax point», punktet man roterer rundt etterhvert som man fotograferer. En kort video på YouTube forklarer prinsippet.

Sammenføyning av bildene/stitching

Hvis bildene er tatt på riktig måte skal stitchingen kunne gå nærmest helautomatisk. Iblant må man sette manuelle kontrollpunkter, men det vil vi helst slippe. De fleste stitching-programmer kan også smelte sammen de tre (fem) eksponeringene til ett godt eksponert bilde automatisk (fusing). Ønsker man mer kontroll eller raskere resultater kan man bruke egne verktøy som f.eks. EnfuseGUI.

Jeg har testet fire forskjellige stitching-verktøy: Hugin, Autostitch, PTGui og Autopano Giga, og blitt både imponert og skuffet. Datasettet var 126 bilder, (5 rader á 8 bilder + nadir/zenith) x 3 eksponeringer, hvert på 10 Mpix, tatt i F-blokka av Elektrobygget. Kameraet stod på stativ, men det var ikke 100% i vater og hadde bare et vanlig pan-hode. Skjeve bygg, samt stygge sømmer og skygger vil derfor være synlig i resultatet. Det tok 15 minutter å knipse alle bildene.

Hugin er gratis og OpenSource, men kræsjet med så mange bilder. Autostitch er gratisdemo og fungerer greit, men ga et litt bløtt bilde. PTGui sviktet etter laaang prosessering pga for lite minne. Autopano virket heldigvis (puh!) slik det skulle. Det er betalingsprogram, men ser ut til å være verdt prisen.

Man starter med å laste bildene inn i programmet. Programmet oppdager selv trippeleksponeringene og foretar en punktmatching for å plassere de forskjellige bildene i forhold til hverandre. Det hele tok ca 3 minutter. Etterpå kan man foreta manuelle justeringer, fikle med eksponeringsgradene, rette feil osv. Til slutt må panoramabildet rendres, og her spiller den endelige størrelsen en stor rolle for hvor lang tid det tar. 2000 px høyt panorama tok 4 min, 3000 px ca 12 min og 4000 px ca 30 min. Jeg lagde også en «lofi»-versjon av 3000 px-bildet hvor jeg først skalerte originalene fra 10 til 1 Mpix. Rendrehastigheten var omtrent som før, men sluttkvaliteten ble noe dårligere. (Vannmerkene tvangspålegges automatisk i demoversjonen).

Sammenligning av resultater

Sammenligning av resultater

Som kompromiss mellom kvalitet, størrelse og tidsbruk valgte jeg å bruke 3000 px høye panoramaer, uten å skalere ned originalene.

Fremvisning

Når bildet er ferdig rendret må det vises frem. Det finnes haugevis av løsninger, jeg valgte å bruke Flash-baserte krpano. Det tillater blant annet å lenke sammen flere panoramaer til en «virtual tour», og har egne skriptverktøy (krpanotools) for å spytte ut filer av forskjellige oppløsninger, slik at man gradvis kan laste ned mer detaljerte bilder avhengig av brukerens bevegelser og zooming. Som opsjon kan man også utvide lisensen til å laga egne versjoner som fungerer på iPhone/iPad. At Eirik Urke bruker krpano på Gigapix.no gjør at valget føles trygt. (I nær fremtid vil krpano forhåpentligvis kunne benytte HTML5 heller enn Flash).

Konklusjon

Resultatet bærer preg av forberedelsene, det vil si dårlig eksponerte bilder med mye ISO-støy, tatt uten skikkelig panorama-hode. Det er lett å finne feilskjøter og brudd i rette linjer. Ta det for det det er; en demonstrasjon av hva man kan få til med relativt liten innsats. Likevel synes jeg vi har fått til mye fra å starte med blanke ark.

Nå har vi bestilt et skikkelig panohode for å få bukt med de dårlige skjøtene, og alliert oss med Kai på IDI for å ta gode bilder. Lisenser på nødvendig programvare skal vi også anskaffes.

Tips til steder å avbilde mottas med takk!

Written by Rune M. Andersen

september 22nd, 2010 at 9:04 pm

Timeplan – the next generation

with 4 comments

class schedule during summer term 1993

For nesten 10 måneder ble timeplangeneratoren til Thomas Adamcik omtalt her på bloggen. Allerede da snakket vi om å synkronisere mot/lese ut NTNUs offisielle timeplanbase Cumulus Syllabus, men nå – endelig – ser det ut som om vi kan begynne å glede oss. Det er flere prosjekter på NTNU som vil ha tilgang til ferske timeplandata, men inntil nå har de bakenforliggende systemene ikke tillatt det av forskjellige tekniske årsaker. Men arbeidet med å få på plass en webservice er i gang og til høsten kan vi sannsynligvis begynne uttesting i stor skala.

NTNU IT ønsker kun å ha serviceavtaler med interne aktører, fakultetet vil derfor være mellomlager for timeplangeneratoren og andre som ønsker å bruke timeplandata. Tanken er å sette opp et «best effort» REST-basert API som svarer med XML og/eller JSON på forespørsler som f.eks. /timeplan/<emnekode>. Vi blir nok enige om et passende format, og håper prosjektmekkere der ute vil følge gentlemansregler slik at serverne våre ikke blir hakket i stykker.

Forrige semester var http://ntnu.1024.no svært populær blant studentene, i overkant av 5000 timeplaner ble opprettet. Vår lokale variant ble betydelig mindre brukt, så til høstsemesteret oppdaterer vi ikke koden eller datasettet her på fakultetet. Ikke for å være slemme, men fordi Thomas ganske enkelt tilbyr en bedre tjeneste som vi ikke har ambisjoner om (eller evne til) å konkurrere med. Selv om han har levert masteroppgaven vil han fortsette å vedlikeholde systemet. Når han en gang i fremtiden eventuelt går lei skal vi gjøre vårt for å få noen andre til å overta stafettpinnen.

Written by Rune M. Andersen

juli 13th, 2010 at 9:24 am

NTNU-kalenderen ut av isolasjon

without comments

IME-student Lasse Karstensen har funnet en smart måte å tilgjengeliggjøre en NTNU-kalender som iCalendar-fil, eventuelt vist i Google Calendar og/eller lignende verktøy.

Ta én NTNU-kalenderkonto, et par gratis tilgjengelige webtjenester og Lasses Python-script. Koble sammen på en finurlig måte, og voilà: tilgjengelige kalenderdata!

Detaljert veiledning for oppsettet finnes på bloggen hans.

PS: Vær smart, ikke røp NTNU-passordet ditt til resten av verden.

Written by Rune M. Andersen

juni 28th, 2010 at 6:27 pm