Raspberry Pi ja ETV järelvaatamine – Flashi-vaba tsoon.

See siin on lühijutt ühest progeja tüüpilisest õhtust, mis hõlmaks justnagu tervet elutsüklit: ideed, probleemi püstitust, kastist-väljas mõtlemist, tagasivaadet, lihtsustamist, lahendamist ja nautimist.

Häda ajab härja kaevu.

Omal ajal oli ütlemine, et Microsoft kirjutab iga IBMi poolt toodetud arvuti tarkvara kohe pilgeni täis. Siis on põhjust jälle uue ja võimsama soetamiseks, mida taas kord uue tarkvaraga üle koormata. Ja nii ongi see juba aastakümneid kestnud. Ikka ja jälle leian end seda lõbusat legendi meenutamast. Alles huljuti juhtus, kui minu valdusesse sattus üks Raspberry Pi. Mida selle peal esimesena katsetada? Eks ikka GPU võimsust – see ju selle riistapuu eeliseks. Naiivse lootuse – kuid realistliku pessimismiga – hakkasin proovima oma lemmikteenust: ETV salvestiste internetist järele vaatamist. Tulemus oli muidugi ette teada.

Kui juba kahetuumalised CISC protsessorid ei suuda flash player rakendust täisekraanil sujuvalt jooksutada, ei suuda seda ka 25 dollarit maksev RISC. Põhimõtteliselt ei jõudnud isegi nii kaugele, et oleks pildi ette saanud. Kuid kas asi ikka piirdub sellega? Kas peaksin selle teadmisega rahulduma? Üks õige progeja ei rahuldu – enne kui pole ise järgi kontrollinud.

Puude taga on siiski mets.

No mida erilist see flash player siis teeb? Selle teada saamiseks tuleb tänapäeval appi iga endast lugupidav veebilehitseja, kus on võimalik suvalise koha peal paremat hiireklahvi vajutada ja inspect element käsku valida. Vahekommentaariks niipalju, et olles viimased 7 aastat sardsüsteemide C++ progeja olnud, olen üllatunud, millise hüppe veebilehitsejad vahepeal on teinud. Igas brauseris on põhimõtteliselt kogu silumissüsteem (debug) sees. Võimalik on vaadata mitte ainult lehe algset lähtekoodi vaid kogu HTML/JavaScript hetkeseisu, jooksutada käsurealt enda lisatud JavaScripti, profileerida jne. Siiski, esmapilgul ei näe kohe puude taga metsa – kui ainult seda flashi ees ei oleks! Tuleb flashi-vaba tsooni peal hiirt vajutada ja natuke kaugemalgi ringi kolada. Lõpuks selgub, et kõik videod on standardsed RTMP meediavood: vaja ainult URL teada saada. Siit juba midagi koidab. Konstrueerime tervikliku URLi ja anname ette Raspberry Pi vaikemängijale (omxplayer), mis on kohandatud Pi riistvaralist kiirendust kasutama (siiamaani ainuke teadaolev). Ja voila! Nii ilusat, sujuvat, vaikset ja nii suurel ekraanil ETV järelvaatamist pole ma veel kogenud. No mis häda on neil kogu aeg seda fläšši teha!? Meenub vanakooli IT mees. Meil on tõesti vist loomupärane omadus kirjutada ka kõige lihtsamad operatsioonid kõige ressursinõudlikumaks.

Lihtsus on geniaalsus.

Esimene mõte on nüüd teha selle kasutamine võimalikult mugavaks. Aga kuidas? Meil on antud tuhandeid võimalusi, sadu teid, aga ma olen õnnelik, et inimesed on nii ilusad ja head. Peas hakkavad keerlema tuhanded erinevad ideed uuest rakendusest, mis võiks töötada Raspberry Pi peal, mis tõmbaks ERRi serverist uut infot ja kuvaks seda kenasti suurel ekraanil. ETV kodulehel ei paista aga olevat isegi RSSi, rääkimata veebiteenusest. Tõenäoliselt kasutavad ERRi mobiilirakendused mingit rätsepalahendust, aga see polegi enam oluline. Seda kontrollida ma ei viitsi, sest selle kõige tegemine võtaks liiga palju aega. Mõte veereb hoopis analüütiku ja disaineri köögipoolele. Ma istun kodus, diivani peal, läpakas süles ja kolan ringi ETV kodukal. Kasutan justnimelt läpakat, kuna televiisoriekraanilt ei ole mugav teksti lugeda – olgu ekraan kui suur tahes. Videoklippe tahaks aga telekast vaadata. Mõeldud, tehtud. Tuleb teha üks veebilehitseja pistikprogramm või lehitseja liivakast, mis leiaks kodulehelt automaatselt video aadressi üles ja saadaks selle minu Pi-le edasi. Nii poleks vaja kulutada aega uue täisfunktsionaalse programmi kirjutamiseks/hooldamiseks ja jätaks kasutajale alles võimaluse tarbida ETV kodulehe rikkalikku sisu. Seda rikkalikku sisu, mis tavaliselt mobiilidele mõeldud versioonides puudub.

Nüüd alles läheb tehniliseks.

Eesmärk pühendab abinõu. Tegin ühe lihtsa Chrome’i plug-ini, mis iga avaneva lehe pealt otsib Flow Playerit. Leides selle, parsib ta sealt välja video aadressi ja pakub saatmiseks edasi Raspberry’s asuvale väikesele Pythoni skriptile, mis omakorda juhib omxplayerit. Lõpptulemus on üllatavalt mugav – kuigi kahjuks ei tööta RTMP striimi peal veel edasikerimine kuna seda pole lihtsalt siiani kirjutatud. Vabavara-maailmas pidavat aga asjad ju lihtsalt käima – vaja ainult natuke patchida ja confida! Seega, ülesandeks number üks on leida lähtekood! Kloonida omale repo Githubistmountida Raspberry Weezy image – kompileerida omale üks cross-compiler – õppida FFmpeg librat – kirjutada mõned read koodi – konfigureerida, kompileerida… ja… no peaaegu töötab. Edasi kerib, aga mängimist ei jätka. Tuleb käsitsi pausi panna ja paus maha võtta.

Aga nii lõppeb see seiklusterohke hilisõhtu. Aeg saab otsa ja uus päev toob uued väljakutsed. Jäägu siis pealegi nii, et elus tuleb osata käsitsi pausi panna ja seda käsitsi ka maha võtta.

Asjast huvitatud võivad laadida omale praeguse versiooni kogu tehtud tööst siit: ETV Vaarikas.

Kuidas testide automatiseerimisel õnnestuda

Testide automatiseerimine on alati kahe otsaga asi, võimaldades küll testijate igapäevatööd kergendada, kuid sama kergesti võib sellega hoopis probleeme juurde luua. Kuidas toimida, et õnnestuda? Automaattestide juurutamisel võib ette tulla mitmeid probleeme, mõned tüüpilisemad komistuskivid:

 

  • Automatiseerimine vabal hetkel. Automaattestide loomisega tegeletakse siis, kui selleks on aega – projekti töös tekkivate “aukude” täiteks, omast ajast jne. Puudub vajalik pühendumus.
  • Puudulikud eesmärgid. Milleks me üldse automaattestidega vaeva näeme? Aja säästmiseks, testimise lihtsustamiseks, testide katvuse parandamiseks? Testijate motiveerimiseks? Kõike korraga tõenäoliselt ei ole võimalik saavutada, inimeste eesmärgid on erinevad ja kui neid selgelt välja pole öeldud, on lihtne feilida.
  • Kogemus. Õigemini selle vähesus või puudumine. Automaattestid võivad kergelt muutuda haldamatuks džungliks, kui neid arendavate inimeste teadmised tarkvaraarenduse põhitõdedest on puudulikud.
  • Inimesed vahetuvad. Automatiseerimise õppimine võtab aega ja kui meeskonnaliikmed tihti vahetuvad, kaob ka omandatud kogemus.
  • Tahtmatus testida. Paljude inimeste jaoks on automatiseerimise protsess huvitavam, kui tarkvara testimine. Automatiseerimine võib muutuda mugavaks vabanduseks, miks testimisele vähem pühenduda. Sellisel juhul ei ole ka automatiseerimise väljund testimise seisukohalt tihti suurem asi.
  • Tehnilised üksikasjad. Kuidas tarkvara automatiseerida, on tehniliselt huvitav ülesanne, kuid liigne keskendumine tehnilistele probleemidele võib tähendada vajadustele üldse mitte vastavat tulemust.

 

Continue reading “Kuidas testide automatiseerimisel õnnestuda”