Povzetki

TOREK, 18. junij 2019

 

8:30 REGISTRACIJA

9:00 OTVORITEV KONFERENCE

 

9:15 – 10:40 NA POTI K OBOGATENI INTELIGENCI

vodja sekcije: dr. Boštjan Grašič

Dobre prakse AI na področju zdravstva oziroma zakaj googlanje zdravstvenih težav ni najboljša ideja
Vid Visočnik, Luka Gratej

Visocnik Gratej

Prispevek začenjamo z razlago pojma izboljšana oz. augmentirana inteligence (ang. Augmented Intelligence) in nadaljujemo s predstavitvijo podjetja Your.MD. Pojasnimo problematiko uporabe spletnih iskalnikov, kjer se iskalne poizvedbe glede zdravstvenih težav (pre)pogosto zaključijo na enega izmed dveh načinov: ali bo treba pod nož, ali pa gre za rak. Jedro prispevka vsebuje prikaz delovanja, rešitev in dobrih praks s področja razvoja digitalnega zdravstvenega asistenta (podrobneje v nadaljevanju).

Podrobnosti prispevka:

  • Pristop in ključni izzivi podjetja Your.MD pri reševanju problema pomanjkanja zdravstvenega osebja oz. dostopa do kakovostnih zdravstvenih informacij s pomočjo osebnega, personaliziranega pristopa, ki upošteva bistvene značilnosti posameznika-uporabnika (demografski podatki, podane informacije, razširjenost, sezonskost, itd.)
  • Prenos razmišljanja in znanja zdravnikov v računalniku razumljivo obliko, nadgradnja s pomočjo algoritmov in upoštevanjem vhodnih parametrov za iskanje optimalne rešitve
  • Razvoj hibridnega modela chatbota s poudarkom na razumevanju uporabnika in uporabniških vnosov (naravno strojno procesiranje jezika oz. NLP), algoritmu za diagnostiko (Bayesova logika) in algoritmih za iskanje
  • Zagotavljanje neprekinjenega dostopa do storitev in prilagodljive rasti: distribuirani sistemi neprekinjenega delovanja, ELB (elastic load balancing), reaktivno programiranje v Javi, prisotnost na različnih platformah
  • Zagotavljanje varnosti podatkov in zasebnosti uporabnikov : Amazon KMS, decentralizacija podatkovnih baz, certifikati (Medical Device Class 1, CE Mark)
  • Optimiziranje uporabniške izkušnje , podajanja rezultatov in rešitev (mreža zunanjih partnerjev – OneStop Health™) s poudarkom na preventivi (Health Plan)

 

Pasti pri implementaciji rešitev umetne inteligence
Vili Podgorelec, Sašo Karakatič

Karakatic

Razvoj informacijskih tehnologij, rešitev in storitev je pripeljal do obdobja, v katerem ljudje ustvarjamo, delimo in si izmenjujemo čedalje večje količine podatkov. Tovrsten razvoj prinaša uporabnikom vedno nove funkcionalnosti, za informatike – snovalce in razvijalce novih sistemov in rešitev – pa vse kompleksnejše zahteve in izzive. Sočasno z razvojem tehnologij se pogosto spreminjajo tudi koncepti uporabe le-teh, pri čemer vse bolj raste zavedanje o pomenu ustrezne analize obilice ustvarjenih podatkov in želja po uporabi znanja, skritega v njih. Vse bolj se zavedajoč potenciala umetne inteligence in strojnega učenja, kot dostopnega orodja za spopadanje z naštetimi izzivi, je v zadnjih letih strojno učenje postalo eden od temeljnih elementov informacijske tehnologije. Uporabniki so ozavestili inteligentno obnašanje naprav ter storitev in to od ponudnikov v vedno večji meri tudi zahtevajo. Podjetja so tako primorana nadgrajevati ter razvijati produkte in rešitve v smeri integracije z metodami in tehnologijami strojnega učenja oziroma s pomočjo umetne inteligence. Kljub enormnemu napredku na področju strojnega učenja pa je slednje še vedno zahtevna naloga, ki zahteva obilico domenskega znanja in izkušenj. Izhajajoč iz dveh desetletij praktičnih izkušenj, bomo v prispevku predstavili pogoste pasti, v katere se vse prehitro ujamejo premalo izkušeni razvijalci, ki pod vplivom pogosto prevelikih pričakovanj in nerealnih zahtev vodstva vidijo metode umetne inteligence kot novo »silver bullet« tehnologijo.

 

Korak k samodejni integraciji in testiranje napovednih modelov strojnega učenja
Grega Vrbančič, Vili Podgorelec

S prodorom umetne inteligence in tehnik strojnega učenja v praktično vse veje gospodarstva, še posebej pa na področje informacijskih tehnologij, se vedno pogosteje zastavlja tudi vprašanje o integraciji in zagotavljanju kakovosti takšnih rešitev. V nasprotju z na primer programskim inženirstvom, kjer so procesi integracije in testiranja programske kode ter programske metrike že dodobra opredeljene in uveljavljene, pa pri razvoju napovednih modelov trenutno še ni dobro definiranih okvirjev oz. strategij kako jih pravilno in učinkovito integrirati, testirati in zagotavljati kakovost. Sprejeti in uveljavljeni procesi testiranja in zagotavljanja kakovosti napovednih modelov so nujni za njihovo množično integracijo v obstoječe ali celo kritične dele informacijskih sistemov. Da bi lahko dobro definirali procese testiranja in zagotavljanja kakovosti napovednih modelov, pa moramo najprej definirati kaj na področju strojnega učenja sploh pomeni testiranje. Primarno, se izraz testiranje, v povezavi z umetno inteligenco, navezuje na testiranje uspešnosti napovednih modelov. Na uspešnost napovednih modelov vpliva velik nabor odvisnih in neodvisnih spremenljivk, zato je na mestu vprašanje, kako sploh testirati napovedne modele? Kako zagotoviti, da bodo delovali v skladu z našimi zahtevami in pričakovanji?

V prispevku bomo predstavili problematiko oziroma izzive samodejne integracije in testiranja ter zagotavljanja kakovosti napovednih modelov ter poizkušali odgovoriti na zastavljena vprašanja. Opisali bomo obstoječe smernice in pristope zagotavljanja kakovosti ter naslovili problematiko integracije napovednih modelov v obstoječe informacijske sisteme in na praktičnem primeru prikazali končen doprinos uvedbe testiranja na delovanje napovednega modela.

 

11:00 – 11:45 VABLJENO PREDAVANJE 

vodja sekcije: dr. Dean Korošec

Gartnerjeve napovedi tehnoloških trendov za 2019
Marko Štefančič

 

11:45 – 13:00  BLOCKCHAIN REŠITVE IN TEHNOLOGIJE 

vodja sekcije: dr. Dean Korošec

D3ledger: Decentralized Digital Depository platform for asset management based on Hyperledger Iroha
Nikolay Yushkevich, Andrei Lebedev, Rok Šketa, Makoto Takemiya

Sketa

Blockchain is a general notion related to an emerging technology that keeps transactions in a linked list of post-unforgeable blocks. Transactions are appended to the blockchain via the decision of a decentralized network. Tokenized securities provide investors with new transparency and liquidity levels by decreasing times for traditional operations in capital markets. This allows creating a global post-trade infrastructure for digital assets: tokenized securities and security tokens. This article describes how does D3ledger project allow tokenization of traditional securities, as well as the safekeeping of security tokens from Ethereum and Bitcoin networks.

 

Uporaba platforme IOTA za zbiranje IOT podatkov
Vid Keršič, Muhamed Turkanović

Kersic

Tehnologija veriženja blokov (angl. blockchain) kot del tehnologije porazdeljene knjige (angl. distributed ledger technology – DLT) ima prednosti kakor tudi slabosti. Poglavitna slabost je razširljivost, saj je tehnologija neprimerna za sočasno procesiranje velike količine podatkov. Omenjeno pomanjkljivost naslavljajo nove generacije platform DLT. Primer takšne je platforma IOTA, ki je osredotočena na domeno Interneta stvari in z inovativnim pristopom naslovi problem razširljivosti. V prispevku bomo predstavili podrobnosti platforme IOTA in njene poglavitne prednosti. Izpostavili bomo spremenjeno podatkovno strukturo, ki ne temelji na med seboj povezanih blokih transakcij, temveč na usmerjenem acikličnem grafu transakcij, imenovan Tangle. Prav tako bomo predstavili strukturo porazdeljenega omrežja in algoritem porazdeljenega soglasja na katerem temelji. Osredotočili se bomo na predstavitev uporabe platforme na primeru zbiranja in sledenja senzorskih podatkov s pomočjo protokola Masked Authenticated Messaging (MAM). Opisali bomo različne načine uporabe slednjega protokola in njihove praktične primere. Zaključili bomo z analizo prednosti in slabosti, ki jih platforma ponuja, in pregledom trenutnega stanja razvoja IOTA omrežja.

 

Razvoj decentraliziranih aplikacij: razvoj igre na srečo z generatorjem psevdo-naključnih števil
Jure Trilar, Andrej Kos, Emilija Stojmenova Duh

Blokovne verige (ang. Blockchain) zagotavljajo nepotvorljivo revizijsko sled različnih sredstev v obliki kriptožetonov, pametnih pogodb in podatkov v njih, ob tem pa ponujajo učinkovite preživitvene in varnostne mehanizme tudi v primerih velikih varnostnih ali infrastrukturnih motenj omrežja. To odstrani potrebo po zaupanju centralni avtoriteti in uporabnik se lahko zanese na avtonomno delovanje sistema, ki temelji na naboru matematičnih pravil. Primer bolj aktualnih uporab blokovnih verig je za distribuirano izvajanje računalniških algoritmov, ki so zapisani v obliki pametnih pogodb. Na tem področju po odprtosti in razširjenosti prednjači platforma Ethereum, s pomočjo katere izdelujemo t.i. decentralizirane aplikacije (dApp). Kljub temu, da Ethereum okolje za izvajanje ponuja Touringovo celovitost, pa obstajajo določene zadrege, ki izhajajo iz konceptualne zasnove t.i. največjega in najpočasnejšega računalnika na svetu, kjer se programska koda izvaja simultano na več deset tisoč vozliščih, ki praviloma vrnejo isti izid v razdobju nekaj minut. Ob tem se pojavlja vprašanje, kako zagotoviti naključnost (ang. randomness) v takšni distribuirani platformi, kjer morajo vsi akterji praviloma izračunati isti rezultat. Naključnost generiranja števil je bistvena predvsem za igre na srečo; platforma Ethereum pa po zasnovi tega ne more zagotoviti. V članku najprej raziščemo splošne  omejitve platforme pri shranjevanju podatkov v pametnih pogodbah na decentraliziranih sistemih ter obravnavamo tipična varnostna tveganja in luknje v pametnih pogodbah. Nadalje opišemo razvoj in scenarije delovanje igre na srečo, ki temelji na izbranih pravilih in zagotavlja poštenost prek zaledja razvitega na platformi Ethereum. Začelje decentralizirane aplikacije je iz aktualnih spletnih tehnologij Node, Vue in Web3.js. Pri načrtovanju igre je upoštevan pristop, ki vključuje tudi uporabnikove potrebe, predvsem z vidika težavnosti razumevanja in uporabe blokovnih verig, ter temeljne motivacijske mehanizme, kar bi omogočilo večjo privlačnost za pogostejšo uporabo. Članek se zaključi z analizo pridobljenih izkušenj glede razvoja konkretne decentralizirane aplikacije in uporabe te tehnologije ter razmislekom o primernosti in zrelosti te tehnologije ter o ovirah, ki jih bo treba v prihodnje preseči.

 

13:00 – 14:00 KOSILO

 

14:00 – 15:45 PORAZDELJENE INFRASTRUKTURE 

vodja sekcije: mag. Bojan Štok

Orkestracija gruč aplikacij z uporabo Docker Swarm na robnem oblaku
Urban Zaletel, Marko Derganc, Rok Petrič

Trend razvoja programske opreme so že nekaj časa mikroservisi. Za pakiranje teh mikroservisov je najbolj razširjen vsebnik Docker. S pojavom orkestratorskih orodij kot so Rancher, Kubernetes in Docker Swarm se je trend nagnil v smer, kjer želimo imeti čim več naših komponent znotraj teh orodij, saj omogočajo hitro in ponovljivo avtomatsko dostavo, pri čemer je enostavno vračanje v prejšnje stanje. Večina uporablja Kubernetes kot plačljivo verzijo v oblaku znano kot GKE (Google Kubernetes Engine), ki je po mnenju nekaterih tudi edina zadovoljiva implementacija orkestratorja Kubernetes. V poslovnih okoljih smo večkrat omejeni z uporabo javnega oblaka, kljub temu pa bi radi uporabljali enaka orodja, ki so na voljo v oblaku za razvoj sodobne programske opreme. V nasprotju z Googlom smo pogosto omejeni tudi z zmogljivostjo strojne opreme ter njenim številom. V prispevku bomo predstavili odprtokodno knjižnico, ki smo jo razvili v Iskratelu in omogoča postavitev gruč in aplikacij s stanjem na Docker Swarmu.

Predstavljene bodo ključne značilnosti knjižnice, kako jo lahko poljubno razširimo sami, hkrati pa bomo nekaj besed namenili tudi Docker Swarmu, orkestratorskem orodju, ki se na malih postavitvah izkaže z enostavnostjo in minimalnimi sistemskimi zahtevami. Razlogi za uporabo »lažjih« orkestratorskih orodij so na robnem oblaku (Edge cloud) še toliko bolj izraziti, saj imamo namesto gruče desetih in več strežnikov, ponavadi na voljo le tri strežnike, kamor želimo namestiti čimveč aplikacij.

 

Vzpostavitev konzorcijskega omrežja Ethereum
Blaž Podgorelec, Patrik Rek, Miha Strehar, Muhamed Turkanović

Javna omrežja verig blokov prispevajo k robustnosti in varnosti, po drugi strani pa so povezana z upočasnjenim delovanjem in transakcijskimi stroški. Omenjeni slabosti sta tudi eni od razlogov, da se tehnologija veriženja blokov še ni uveljavila v večjem obsegu. Ena od možnih rešitev je vzpostavitev zasebnega oz. konzorcijskega omrežja verig blokov, ki se lahko poljubno konfigurira. Med pomembnejšimi nastavitvami je vsekakor izbira porazdeljenega algoritma soglasja, ki ne zahteva procesa rudarjenja in omogočanje izvedbe transakcij brez potrebe po plačevanju pristojbin.

V prispevku se bomo osredotočili na tehnični del vzpostavitve konzorcijskega omrežja Ethereum. Predstavili bomo ključne korake za uspešno izvedbo tega in podali nekaj dobrih praks za takšno vzpostavitev. Med drugim tudi primerjavo med Parity ali Geth vozlišči, povezovanje do teh itd. Predstavitev bo temeljila na uspešno vzpostavljenem mednarodnem konzorcijskem omrežju za platformo EduCTX, ki je popolnoma operativno in združuje tako Ethereum kot IPFS del, katerega vzpostavitev bomo prav tako predstavili.

Pravilna vzpostavitev robustnega konzorcijskega omrežja je lahko zahtevna, saj je potrebno upoštevati številne faktorje na katere se nam v primeru javnega omrežja ni potrebno osredotočati. Med temi faktorji sta pomembna predvsem varnost in učinkovito delovanje. Kljub osredotočanju na tehnično omrežni del vzpostavljanja konzorcijskega omrežja, bomo prispevek gradili iz vidika razvijalcev decentraliziranih aplikacij.

 

Možnosti in izzivi uporabe protokola IPFS
Aida Kamišalić Latifić

Sistem za porazdeljeno in decentralizirano shranjevanje datotek IPFS (ang. Interplanetary File System) temelji na protokolu in omrežju P2P. Služi varnemu shranjevanju in deljenju vsebin in ne omejuje velikosti shranjenih podatkov. Vsako vozlišče v takšnem omrežju lokalno hrani zbirko datotek. Posebnost IPFS je ta, da uporablja zgostitev (angl. hash) vsebine datoteke kot naslov za povezovanje in pridobitev le te iz omrežja, kar posledično pomeni, da se ob zahtevi po datoteki le ta prenese iz najbližjega vozlišča. Združuje uspešne ideje obstoječih sistemov P2P, kot so porazdeljena zgoščevalna tabela (angl. distributed hash tables), izmenjava blokov (angl. block exchanges), sistem za nadzor različic (angl. version control systems) za sledenje vsebini in lastno potrjevanje imenskega prostora (angl. self-certified namespace). Glavne prednosti protokola IPFS so porazdeljeno shranjevanje brez omejitve velikosti shranjenih objektov, neobstoj enojne točke vdora in neobstoj zahteve za zaupanjem med vozlišči.

Čeprav ni prvotno temu namenjen, je protokol IPFS pridobil na priljubljenosti, predvsem zaradi uporabe v sklopu decentraliziranih aplikacij (dApp), ki temeljijo na tehnologiji veriženja blokov. IPFS se kaže kot primerna rešitev za omejeno velikost podatkov, ki jih lahko pri opravljanju transakcije shranimo v verigo blokov. Z IPFS se datoteke s podatki shranijo v decentralizirano in porazdeljeno omrežje, medtem ko se zgostitve vsebine shranijo v omrežje verig blokov, ki delujejo kot kazalec na varno hranjeno večjo količino podatkov. Na ta način se vsebina zaščiti, ne da bi podatke dejansko hranili na verigi blokov.

V prispevku bomo predstavili podrobnosti koncepta in delovanja protokola IPFS ter možnosti in primere uporabe. Izpostavili bomo prednosti in slabosti takšnega sistema za porazdeljeno shranjevanje datotek v primerjavi z drugimi ter potencialne izzive ob uporabi, z ali brez tehnologije veriženja blokov.

 

Platforma GemaLogic Flexibility za združevanje DEA nameščenih v RTP
Tomaž Buh, Ervin Planinc, Primož Bogataj, Simon Mihevc, Sergej Anželj, Miroslav Beranič, Goran Čapelnik

V članku je predstavljena integracija GemaLogic Flexibility na zaledne informacijske sisteme. Na nivoju med platformo GemaLogic Flexibility in integracijskim vodilom je bil uporabljen protokol OpenADR, ki je zasnovan za potrebe prejemanja in izvajanja funkcionalnosti upravljanja odjema električne energije ter omogoča standardizirano izmenjavo podatkov ter temelji na predhodnih OASIS standardih. Članek prav tako podaja pregled razvitih funkcionalnosti za potrebe integracije zalednih procesnih in informacijskih sistemov v podjetju ELES, kot je za potrebe vodenja integracija s SCADA EMS sistemom z uporabo ICCP TASE.2 protokola, sistemom za upravljanje s sredstvi, sistemom obveščanja in alarmiranja, sistemom za zajem števčnih obračunskih podatkov in dizel električnimi agregati z uporabo komunikacijske povezovalne platforme.

Za povezavo integracijskega vodila in dizel krmilnikov smo uporabili povezljivostno platformo. Ta omogoča vnos registrov in izpostavitev njihovih vrednosti in konfiguracijo naprav preko REST vmesnika. Za beleženje števčnih podatkov je bil uporabljen sistem za obveščanje, ki komunicira preko SOAP protokola z povezljivostno platformo in vrača vrednosti o porabi energije.

Komunikacija z kontrolnim centrom SCADA je vzpostavljena z protokolom ICCP. Podatki pa do integracijskega vodila pridejo preko povezljivostne platforme, ki zna komunicirati z ICCP strežnikom z uporabo OPC DA protokola. Sistem za obveščanje uporabnika o napakah komunicira preko SMS-a. GemaLogic pošlje zahtevo na integracijsko vodilo, ki pošlje sporočilo dalje preko SNMP trap protokola do sistema za obveščanje.

 

16:00 – 17:30 KIBERNETSKA VARNOST IN DIGITALNA IDENTITETA

vodja sekcije: Milan Gabor

“Politika” kibernetske varnosti
Boštjan Kežmah

Kibernetska varnost se kot podmnožica informacijske varnosti neločljivo prepleta z zagotavljanjem skladnosti s predpisi. Zaradi vse večjega pomena informacijske tehnologije v poslovnih procesih tako EU kot države članice sprejemajo vse več predpisov, ki se nanašajo neposredno na kibernetsko varnost. Ali predpisi pospešujejo ali zavirajo razvoj kibernetske varnosti in informacijskih sistemov? So predpisi dovolj jasni, da je mogoče izdelati skladne rešitve? Ali je mogoče zagotoviti skladnost v času od objave sprejetega predpisa do uveljavitve? Ali država sledi lastnim predpisom? Se s tem kibernetska varnost oddaljuje od stroke in postaja politično vprašanje?

 

ZKP (Zero-Knowledge Proof) pod drobnogledom
Muhamed Turkanović, Blaž Podgorelec

Področje kibernetske varnosti iz leta v leto postaja vse bolj pomembno. Vzrok temu je vsekakor iskati v vedno večji prepletenosti in odvisnosti od IKT, kakor tudi globalni porasti kibernetskih napadov. Zaskrbljenost je slutiti na političnem, kot tudi na osebni ravni, saj se v času, ko kot posamezniki postopoma izgubljamo možnost nadzorovanja zasebnosti, vse bolj zavedamo pomena le-te.

Kibernetska varnost vključuje številne mehanizme, pri čemer je večini osnova kriptografija. Kriptografske metode, kot so simetrična kriptografija, kriptografija javnih ključev, kriptografske zgoščevalne funkcije itd., večina IT strokovnjakov pozna in vključuje v proces razvoja varnih IKT rešitev. Širši javnosti, kot tudi IT strokovnjakom pa je manj znan protokol imenovan Zero-Knowledge-Proof (ZKP). ZKP predstavlja metodo, ki določeni osebi omogoča uspešno dokazovanje nekega dejstva, brez potrebe, da o dejstvu samem izda kakršno koli dodatno informacijo. Kot primer se lahko protokol ZKP uporabi kot mehanizem overjanja, saj uporabniku omogoča dokazovanje poznavanja gesla za dostop, brez potrebe po podajanju gesla ali kakršne koli druge informacijo o le tem.

Čeprav je protokol ZKP prvič predstavljen leta 1985, je uporaba tega v gospodarstvu splošno neizkoriščena, saj je protokol mogoče vpeljati v delovanje kateregakoli sistema, ki zahteva javno verifikacijo potencialno zasebnih informacij. ZKP je popularnost pridobil predvsem s pojavom tehnologije veriženja blokov, saj so ustvarjalci določenih protokolov kriptovalut le tega uporabili kot mehanizem za zagotavljanje anonimnosti uporabnika v javnih omrežjih verig blokov (npr. Monero, ZCash). V prispevku bomo opisali delovanje omenjenega protokola in podali nekatere možne primere uporabe le tega.

 

Varna uporaba informacijsko-komunikacijske tehnologije na poti in v tujem okolju
Franci Mulec, Franc Močilar, Samo Maček

Značilnost modernih delovnih procesov je uporaba informacijsko-komunikacijske tehnologije (v nadaljevanju IKT) in dostop do informacij in dokumentov od kjerkoli in kadarkoli, visoka razpoložljivost tehnologije, vsebine in tudi skoraj stalna razpoložljivost uporabnikov, informatikov in poslovnih partnerjev. V našem prispevku bomo pokazali na verjetne grožnje in postopke obvladovanja tveganj pri delu na poti oziroma v tujem okolju. To je še posebej pomembno, če smo izpostavljena oseba. Izpostavljena oseba je tista oseba, ki glede na svojo vlogo v delovnem procesu, v organizaciji ali v družbi sprejema ključne odločitve ali razpolaga s ključnimi informacijami, ali je to oseba, ki dela za tako osebo ali v bližini take osebe. V tej vlogi smo zelo pogosto informatiki in vedno tudi administratorji sistemov IKT.

 

18:00 DRUŽABNO SREČANJE

Nagovor predstavnika generalnega pokrovitelja:

Od pametnih telefonov do pametnih mest in skupnosti
dr. Simon Jurič, INOVA IT, direktor

 

Koncert: 

Alya s skupino (unplugged)

Alya

 

SREDA, 19. junij 2019

 

9:00 – 10:50 AGILNI PROCESI IN PRISTOPI K RAZVOJU

vodja sekcije: dr. Tomaž Domajnko

Izkušnje z vpeljavo agilnega ogrodja Nexus pri razvoju programske opreme z več dislociranimi timi
Robert T. Leskovar, Janez Lukan

Leskovar Lukan

V prispevku so predstavljene dvoletne izkušnje z vpeljavo agilnega ogrodja Nexus pri razvoju poslovne programske rešitve. Razvoj poteka v mednarodnem okolju, s petimi timi. V uvodu so predstavljene značilnosti tega agilnega ogrodja in razlogi za vpeljavo. Sledijo razlike glede na agilno ogrodje Scrum, ki je namenjeno razvoju produkta z enim timom, ter temeljne razlike glede na sorodni ogrodji za podporo razvoju produkta z več timi (Scrum@Scale, LeSS). V osrednjem delu so predstavljene prednosti, slabosti in tveganja, ki smo jih zaznali od vpeljave ogrodja Nexus.

 

Praktične izkušnje pri avtomatizaciji razvoja mobilnih aplikacij
Damijan Račel, Žan Skamljič

V procesu razvoja mobilnih aplikacij se v določenih korakih od zasnove do razpoložljivosti aplikacije v mobilnih trgovinah izgublja veliko časa s čakanjem, da računalnik zaključi s procesiranjem, npr. priprava aplikacije v formatu apk, ker je to velikokrat predpogoj za nadaljevanje procesa, npr. nalaganje aplikacije v Google Play. Prispevek opisuje optimizacijo korakov, ki so bili pri dosedanjem procesu razvoja prepoznani kot najbolj ozka grla. Osredotočili smo se predvsem na postopek avtomatiziranega testiranja, distribucije testnih različic za uporabniški test in distribucije aplikacij končnim uporabnikom preko Google Play in Apple Store. Skozi kombinacijo orodij smo uspeli avtomatizirati te korake in s tem prihraniti ure časa tako razvijalcem kot QA inženirjem. Predstavili bomo naše izkušnje z različnimi orodji in končni pristop, ki temelji na sistemu git za verzioniranje kode, okolju Gitlab, ki ima vgrajeno podporo za neprekinjeno integracijo in nalaganje (CI/CD), platformi Fabric, preko katere se izvrši distribucija testnih in beta verzij ter skupku orodij fastlane, ki nam omogočajo podpisovanje aplikacij in nalaganje direktno v mobilne trgovine. Postavljen sistem nam omogoča pripravo različnih testnih, predprodukcijskih ali produkcijskih različic z enim ukazom ali samodejno glede na vejo repozitorija kode, na katero smo naložili spremembe in samodejno pošiljanje testnih različic QA inženirjem, ki lahko pričnejo s testiranjem takoj, ko je različica na voljo in jim ni potrebno čakati razvijalcev, da bi jim posebej ročno pripravili različne verzije aplikacije. Ocenjujemo, da smo z avtomatizacijo skupno prihranili tudi do nekaj ur na dan. Podoben postopek smo uvedli tudi za razvoj spletnih aplikacij, kjer je tak pristop nekoliko lažji in veliko bolj razširjen.

 

Implementacija programskih rešitev s pomočjo inteligentnih asistentov
Mitja Gradišnik, Tina Beranič, Sašo Karakatič

karakatic

Razvijalci neprestano iščejo nove pristope in prakse, s katerimi bi optimizirali in pohitrili razvoj programske opreme. V zadnjih letih postaja vse bolj zanimiva vpeljava pristopov podpore procesu razvoja programske opreme z metodami umetne inteligence. Z umetno inteligenco podprta orodja nadgradijo preproste avtomatizacije ponavljajočih se trivialnih opravil, z avtomatizacijo intelektualno zahtevnejših delov, ki razbremenijo razvijalce. Trenutno je na trgu mogoče najti različna s strojnim učenjem podprta orodja, ki razvijalcem nudijo pomoč v vseh fazah razvojnega cikla programske opreme.

V prispevku se bomo osredotočili na fazo implementacije in rešitve podprte s strojnim učenjem, ki razvijalcem v realnem času svetujejo glede optimalne implementacije programske opreme ter uporabe dobrih praks. Trenutno razpoložljivi inteligentni asistenti, kot na primer Kite za programski jezik Python ali Codota za programski jezik Java, so nadgradnja obstoječih orodij za samodokončanje programske kode, ki predlagajo bolj celostno in kontekstu primerno dopolnitev programske kode. Pregledali in analizirali bomo nekaj izbranih inteligentnih asistentov razvijalca za različne programske jezike in razvojna okolja. Poleg praktičnega preizkusa rešitev bo v prispevku predstavljen tudi podroben opis delovanja algoritmov strojnega učenja, ki so ključni del tovrstnih inteligentnih sistemov.

 

Strategije migracije na zahtevo pri tranziciji do produkcije novega sistema
Tomaž Korelič, Mitja Bombač

Transitioning from a legacy system to a new one presents many challenges including how customer data is migrated. A “big bang” cutover presents many risks regarding system online time, readiness of the new system, fallback strategies and others. In an agile development environment features are delivered continuously, so a go-live point in time where not all features are available in the new system demands different migration approaches. This paper presents a parallel cutover migration strategy where both run in parallel. Is was introduced by a business project where customer data is on-demand migrated based on order processing and feature availability in the new system. Additionally, on-demand back migrations are also covered when requested features are not yet available. Finally, advantages, disadvantages, challenges and lessons learned are presented for the chosen approach.

The new system was introduced in a transformation project and replaced the legacy one. Both are processing the same orders. A “smart proxy” microservice was introduced which handles the order distribution and orchestration between those. Based on the customer inventory location, order content and feature support, on-demand migrations are triggered and when finished, the original order is routed accordingly.

The inventory location is queried based on APIs provided by both systems. Next the order content is evaluated with a configuration of supported features, which is contained in the new proxy microservice. When detected that a customer inventory is persisted in the legacy system, but the accepted order is supported by the new one, a new on-demand migration order is placed in the new system. It migrates the inventory by using provided APIs and terminates the inventory in the legacy system. Finally, the initial order is placed in the new system. Using this approach, the inventory is migrated only when needed and supported. At a specific point in time the inventory of a specific customer is only available in one system.

Another advantage of the described approach is to have the possibility to choose which feature will be provided in the new system at a specific point in time. So-called “go-live soft-launches” can be scheduled where only a specific feature can be activated and if necessary deactivated immediately after a controlling timeframe.

 

11:00 – 12:40  ARHITEKTURE IN ORODJA

vodja sekcije: mag. Ivan Lah

Posodobitev rešitve za mobilni marketing z modularno platformo Liferay in tehnologijo OSGi
Dimitar Ivanovski, Miroslav Beranič

Mobilno trženje postajata vse bolj priljubljena med podjetji po vsem svetu z naraščajočo priljubljenost pametnih telefonov. Za razliko od standardnega trženja, ki učinkovito spodbuja zanimanje občinstva s pomočjo radijskih spotov, časopisov in tiskanih medijev, mobilni marketing podjetjem omogoča, da negujejo bolj osebne odnose s svojimi strankami. Z mobilnim trženjem lahko podjetja svojim strankam posredujejo vsebine z osebno in stroškovno učinkovito komunikacijo. S tem namenu smo za A1 Slovenija razvili in prenovili spletno rešitev za mobilni marketing, ki je namenjena za vsa podjetja, ne glede na velikost, obseg ali poslovne dejavnosti. Rešitev omogoča samostojno oblikovanje mobilnih oglaševalskih akcij, nadzor baze strank in pregled sedanjih in preteklih akcij ter pomaga partnerjem pri iskanju  novih strank, graditvi zvestobe obstoječih kupcev in povečanju prodajne dejavnosti. V prispevku bomo predstavili potek razvoja in posodobitev spletne aplikacije za mobilni marketing, ključne tehnologije s katerimi smo delali (njihove prednosti in slabosti), kaj nam OSGi kot modularna tehnologija omogoča ter praktične izkušnje, ki smo jih pridobili pri izgradnji aplikacije na odprtokodni platformi za digitalno izkušnjo Liferay DXP 7.1.

 

Razvoj univerzalnega podatkovnega nivoja – gonilo digitalizacije generičnih farmacevtskih podjetij
Aleš Temeljotov, Saša Sokolič, Dejan Dovžan, Marjan Kaligaro

Industrijo generičnih farmacevtskih izdelkov (GP) v EU sestavlja 700 podjetij, ki zaposlujejo 130.000 ljudi in ustvarjajo ~ 50 milijard EUR prihodkov s proizvodnjo in prodajo stroškovno učinkovitih, življenjsko pomembnih zdravil. Poleg tega ima ključno vlogo pri zmanjševanju finančnega bremena za javne sisteme zdravstvenega varstva v EU, ki porabijo povprečno 1,5% svojega BDP za zdravila. Vendar je pod vse večjimi pritiski, od intenzivnejše konkurence (tudi iz držav izven EU), zmanjševanja cen zdravil, večanja regulatornih zahtev za večjo varnost zdravil in naraščajočih stroškov. Zaradi tega se marže teh podjetij zmanjšujejo in rezultirajo v zmanjševanju (potrebnih) naložb in zapiranjem proizvodnih obratov (npr. Novartis v Sloveniji, Teva na Madžarskem), kar povzroča veliko izgubo delovnih mest in nepotrebne, škodljive zamude.

Na srečo je rešitev za te izzive na obzorju – gre za digitalizacijo proizvodnje in popolno uvajanje tehnologij industrije 4.0. Podjetja GP lahko z njimi pridobijo globlji vpogled v svoje proizvodne procese in jih izboljšajo z odkrivanjem optimizacijskega potenciala, zagotavljanjem večje stabilnosti procesa, izboljšanjem kakovosti, povečanjem učinkovitosti, odkrivanjem medsebojnih povezav parametrov in pospeševanjem tržnih zagonov. Poleg tega bi lahko drastično zmanjšali proizvodne stroške (za 1,3-2,5 milijarde EUR / leto) in povečali svojo konkurenčnost. Podjetja GP se zavedajo potenciala digitalizacije, vendar so trenutno omejena, saj noben udeleženec na trgu ni uvedel izvedljive rešitve za celovito digitalizacijo. Zato ne morejo premagati sedanjih digitalizacijskih ovir – nekorektiranih, nekontekstualiziranih podatkov v različnih oblikah, razpršenih med različnimi proizvodnimi stroji, procesnimi sistemi in bazami podatkov, ki niso uporabni za celovito analizo. Zato intenzivno iščejo rešitev, ki omogoča hiter, stroškovno učinkovit in širok dostop do kontekstualiziranih produkcijskih podatkov za neomejeno uporabo.

Podjetje Metronik je že od ustanovitve pred skoraj tremi desetletji blizu industrije EU GP in je zaupanja vreden partner vodilnih družb GP (npr. Novartis, Teva, Stada, Krka). Z združevanjem našega obsežnega znanja o proizvodnih procesih z najsodobnejšo avtomatizacijsko in digitalizacijsko tehnologijo pomagamo našim strankam pri izboljšanju vodenja in nadzora njihovih procesov, ugotavljanju priložnosti za prihranek stroškov in razvijanju pobud za optimizacijo. Sposobnost vključitve novih tehnoloških dosežkov v naše rešitve je Metroniku pripeljala do današnjega dne – smo vodilno visokotehnološko podjetje v Srednji in Vzhodni Evropi na področju rešitev Industry 4.0 s 115 zaposlenimi in 16,1 milijona EUR prihodkov.

Z obsežnim sodelovanjem s podjetji GP je Metronik ugotovil, da se v njihovi proizvodnji proizvaja obilo podatkov in da obstaja več naprednih aplikacij, ki lahko prinesejo vrednost (npr. Tableau, SAS), vendar dve ključni oviri preprečujeta njihovo uspešno izkoriščanje – 1) obstoječe podatki so zaklenjeni v lokaliziranih skladiščih in 2) pridobivanje novih podatkov je drago. Da bi omogočili celovito, stroškovno učinkovito digitalizacijo proizvodnje GP, se je Metronik odločil, da bo razvil Unified Data Gateway (UDG) – programsko platformo, ki bo omogočila dostop do produkcijskih podatkov in pripravila podatke za nadaljnje analize ter obdržala obstoječe podatkovne vire in podatkovne baze. in ohranjene prejšnje naložbe. UDG je edina neodvisna programska platforma, ki temelji na najsodobnejših tehnologijah strojnega učenja, naprednih analitikah velikih podatkov in povezljivosti platform. Produkcijske podatke postavlja v kontekst proizvodnih standardov S95 in S88 ter jih pripravlja za nadaljnjo neomejeno uporabo po izbiri BI in OI aplikacij. Poleg tega UDG zmanjša skupne stroške lastništva za uvajanje novih aplikacij BI in OI za do 70%, pospeši njihovo izvedbo za 3-4 krat, hkrati pa zagotavlja najvišjo raven celovitosti in varnosti podatkov.

 

Orodja za podporo celovitemu razvoju decentraliziranih aplikacij
Patrik Rek, Muhamed Turkanović

Razvoj decentraliziranih aplikacij v omrežju Ethereum je zaradi vključitve številnih komponent (npr. pametne pogodbe, IPFS, RPC, Truffle) in knjižnic (npr. Web3.js, TruffleContract,  IPFS) kompleksen in od razvijalca zahteva številne spretnosti in znanja. Hkrati ima razvijalec za razvoj decentraliziranih aplikacij na voljo številna ogrodja kot so React.js, Vue.js ali Angular, ki pa ne ponujajo načina za enostavno vključevanje in združevanje omenjenih komponent ter konsistenten razvoj z uporabe teh.

Trenutno so v nastajanju orodja, ki naslavljajo zgoraj omenjeno problematiko in so namenjena podpori celovitemu razvoju decentraliziranih aplikacij (npr. Drizzle, Vortex, Web3-React). Namen orodij je samodejno združevati omenjene komponente decentraliziranih aplikacij in omogočiti konsistenten in poenostavljen način razvoja.

V prispevku bomo raziskali uporabnost različnih podpornih orodij in njihove specifične funkcionalnosti pri razvoju decentraliziranih aplikacij. Prav tako bomo orodja med seboj primerjali in izpostavili prednosti posameznih. Zaključili bomo s predstavitvijo uporabe teh na praktičnem primeru.

 

Razvoj aplikacije za oživljanje kulturne dediščine: zasnova interaktivnega prototipa
Klemen Babuder, Vid Stropnik, Emilija Stojmenova Duh

Babuder Stropnik

Ljudje pri obiskovanju njim atraktivnih lokacij uporabljajo mobilne in spletne aplikacije, ki jim olajšajo obisk in pomagajo pri beleženju in deljenju novih doživetij. Pri razvoju aplikacije za oživljanje kulturne dediščine se je torej potrebno vprašati, na kakšen način omenjenim ljudem približati in izboljšati izkušnjo odkrivanja ter doživljanja kulturne dediščine.

Uporabnikom in uporabnicam je najlažja uporaba tiste tehnologije, ki je intuitivna in enostavna za uporabo, ter so jo navajeni oziroma jo že dobro poznajo. Da bi aplikacijo naredili uporabnikom čimbolj poznano, je potrebno poznati uporabnikove karakteristike, potrebe, navade, itn. Z drugimi besedami je uporabnike potrebno postaviti v ospredje. To nam omogoča uporabniško naravnano načrtovanje (ang. User-centered design – UCD), kjer snovalci aplikacij aktivno sodelujejo z uporabniki tekom celotnega procesa načrtovanja in razvoja aplikacije. Pri vsaki fazi razvoja, snovalci in razvijalci preverjajo uporabnikov odziv ter prosijo uporabnike naj jim zaupajo kaj se jim zdi znano, prijazno ter intuitivno za uporabo, in kaj ne. Ker je proces iterativen, nosi veliko težo prva oblika ali prvi prototip naše aplikacije, ko so stroški razvoja relativno nizki.

V članku opisujemo uporabljene metode in postopek ustvarjanja interaktivnega prototipa za mobilno aplikacijo za oživljanje kulturne dediščine. Pri načrtovanju prototipa smo deloma izhajali iz analize stanja priljubljenih aplikacij, ki rešujejo našim podobne probleme, deloma pa iz rezultatov izvedene uporabniške študije. Opišemo nadgradnjo skic v prvi srednje funkcionalni ter interaktivni prototip aplikacije. V zaključku članka dodajamo še kratek razmislek o prednostih in slabostih uporabljenih orodij in vplivu le teh na prototip.

 

12:40 – 13:40 KOSILO

 

13:40 – 15:20SMERNICE RAZVOJA PROGRAMSKIH JEZIKOV  

vodja sekcije: dr. Luka Pavlič

Ko sočasnost in funkcija presežeta objektnost
Bojan Štok, Teodor Veingerl

Stok Veingerl

Večina modernih programskih jezikov vedno dobiva nove funkcionalnosti tako, da kopirajo novosti in koncepte iz drugih jezikov. Tako postajajo jeziki vedno bolj zapleteni in med sabo tekmujejo (C#, C#, C++, Java, Python, Javascript, Kotlin). Pri jeziku Go pa so se ob nastanku odločili, da bodo razvili enostaven in čist jezik, kjer bosta sočasnost  (ang. concurrency) in gola funkcija (brez objekta) primarno vodilo. Pri tem želijo, da je sintaksa čim preprostejša in nima nepotrebnih konstruktov – manj je več.  Za razliko od večine drugih modernih jezikov, ki se prevajajo v neko interpretirano vmesno kodo, se koda jezika Go prevede v strojno kodo za določeno arhitekturo procesorja in operacijski sistem. Tudi sam prevajalnik za Go je napisan v jeziku Go. Druga posebnost je, da jezik ni objektno orientiran, čeprav ima koncept vmesnikov (interface) in polimorfizma. Za razliko od jezikov C, C++ in Rust, ki se prav tako prevajajo v strojno kodo, ima Go vgrajen upravljavec pomnilnika (ang. garbage collector). Koncept vmesnikov je zelo močan konstrukt, ki omogoča ponovno uporabo programske kode. Kanal (ang. channel) je vgrajeni podatkovni tip.  Jezik Go ne pozna niti, pač pa so implementirali kooperativni časovni razporejevalnik (ang. cooperating scheduler), ki upravlja z Go rutinami. Go rutine so lahke, saj jih lahko znotraj enega procesa hkrati teče tudi 500.000 in več. Go je sicer splošno-namenski jezik za strežniške programe, vendar je namenjen predvsem obdelavam v visoko zahtevnih paralelnih okoljih (npr. strežniške farme), kjer izpodriva klasične večnitne in večprocesne pristope.

 

Praktični primeri elegantnih rešitev za orkestracijo asinhronih operacij v programskem jeziku Go
Marko Gašparič

Gasparic

Go je programski jezik s statičnimi tipi in čiščenjem pomnilnika, ki ima podobno sintakso kot programski jezik C. Pred izvajanjem je potrebno izvorno kodo prevesti v strojni jezik. Osnova tega jezika, in hkrati njegova posebnost, v primerjavi z drugimi priljubljenimi jeziki, je podpora sočasnosti, ki temelji na modelu imenovanem Communicating Sequential Processes.

Zdi se, da je praktična uporaba omenjenega modela, kot jo vidimo v jeziku Go, zelo učinkovit pristop k zniževanju zahtevnosti razvoja aplikacij, ki so namenjene izvajanju na večjedrnih in omrežnih napravah. Go rutina in kanal sta primitivna tipa namenjena enostavni in učinkoviti implementaciji sočasnega izvajanja. Tudi v podjetju H-bit, pri razvoju NiceHash Miner aplikacije, smo z uporabo enostavnih vzorcev, ki temeljijo na teh dveh tipih, pohitrili razvoj, poenostavili razumevanje in vzdrževanje programske kode, ter zmanjšali število napak med izvajanjem.

Poleg priljubljenih Go vzorcev, ki jih ni težko najti na medmrežju, so v NiceHash Miner aplikaciji implementirani tudi nekateri drugi vzorci, ki so se tekom razvoja izkazali za uspešne. V tem prispevku bomo predstavili tri.

Prvi vzorec je namenjen prioritizaciji nalog znotraj modula in se uporablja v vsakem modulu, ki je implementiran v NiceHash Miner aplikaciji. Tudi v primeru asinhronega določanja nalog, s strani večih enot, naš vzorec zagotavlja zaporedno izvajanje nalog istega tipa. Kot zelo uporaben se je ta vzorec izkazal pri obravnavanju napak.

Drugi vzorec je namenjen hkratnemu izvajanju operacij, ob tem da zagotavlja končanje le-teh pred nadaljevanjem izvajanja glavnega procesa. Osnovna struktura je zelo enostavna, ko pa je implementirana, se dodatna operacija vstavi v sočasno izvajanje s spremembo dveh vrstic kode.

Tretji vzorec je namenjen testiranju enot. Podobno kot prejšnji, temelji na enostavni strukturi, ki omogoča zelo hitro dodajanje testnih primerov. Uporabljamo ga predvsem za testiranje modulov, ki se izvajajo avtonomno, tudi pri testiranju. Za vhodne funkcije smo na podlagi tega vzorca spisali zbirke testov, ki omogočajo simulacijo različnih scenarijev.

V prispevku in na predstavitvi bomo s pomočjo primerov iz prakse predstavili uporabnost teh treh vzorcev in jih primerjali s potencialnimi implementacijami v nekaterih drugih priljubljenih programskih jezikih.

 

Prihodnost Jave v luči zadnjih velikih sprememb
Andrej Krajnc, Ciril Petr, Mitja Skuhala, Grega Ramšak

Uporaba Jave je že veliko let eden od vodilnih pristopov za razvoj informacijskih rešitev. Java ni le programski jezik, temveč je skupaj z različnimi specifikacijami in rešitvami postala vodilna razvojna platforma, še posebej na strežniški strani. V zadnjem času se je na področju Jave zgodilo veliko sprememb, ki so postavila uporabo Jave na prelomnico, na kateri ni bila še nikoli. Spremembe v upravljanju specifikacij, spremembe v verzioniranju in licenciranju ter številne druge novosti postavljajo razvijalce v situacijo, ko morajo na novo premisliti, na kakšen način bodo uporabljali Javo v bodoče. Za reševanje sodobnih izzivov pogosto samo Java ni več dovolj, temveč je potrebno za doseganje optimalnih rešitev Javo kombinirati z drugimi tehnologijami. Java tudi v bodoče ostaja pomembna razvojna platforma, vendar bo vse skupaj izgledalo precej drugače, kot do sedaj.

 

Razvoj spletnih aplikacij v ogrodju Yesod
Dušan Fister, Iztok Fister Jr.

DusanFister

Zgodovina računalništva prinaša mnogo različnih načinov programiranja, s tem pa tudi kopico najrazličnejših programskih jezikov. Programiranje je eden izmed najosnovnejših načinov komunikacije med človekom in računalnikom, kjer človek z vpisovanjem ukazov v različnih oblikah neposredno usmerja delovanje računalnika. Obstaja veliko načinov programiranja, med katerimi so najbolj pogosti imperativni, objektni in funkcijski.

Programski jezik Haskell je funkcijski jezik, ki je zelo razširjen v akademskih krogih. Jezik v preteklosti sicer ni bil preveč razširjen v industriji, se pa po zadnjem trendu njegova uporaba v industrijskih aplikacijah močno povečuje. Še posebej na področju razvoja spletnih aplikacij razvijalci vedno bolj posegajo po programskem jeziku Haskell, saj ta izdatno zagotavlja visoko stopnjo varnosti in hitrosti izvajanja. Prevajalnik namreč z vnaprejšnjim prevajanjem programske kode zagotovi, da morebitne napake v programski kodi opazimo takoj. S tem se izognemo kasnejšim napakam pri delovanju (angl. runtime bugs), ki bi utegnile povzročati neželene motnje v delovanju ter tako dovoljevale varnostne luknje.

V tem prispevku predstavljamo programski jezik Haskell. Izpostavljamo njegove prednosti glede na ostale programske jezike, prikazujemo njegovo uporabno vrednost ter demonstriramo delovanje. Podrobneje se osredotočamo na analizo spletnega ogrodja Yesod, ki je najbolj razširjeno spletno ogrodje v jeziku Haskell.

 

15:40 – 17:00 SPLETNE IN MOBILNE TEHNOLOGIJE

vodja sekcije: dr. Boštjan Šumak

Kako razvijati v VUE/NUXT, če si navajen/a objektnih jezikov kot so C++, C# ali Java?
Matjaž Prtenjak

Prtenjak

V zgodovini razvoja programske opreme lahko zasledimo več obdobij ne glede na atribut, ki ga vzamemo kot relevantnega. Lahko govorimo o generacijah programskih jezikov, lahko govorimo o napredku v strojni opremi, lahko pa kot atribut vzamemo tudi razvijalce programske opreme in njihovo razvojno, strokovno pot.

Če začnemo nekje sredi prejšnjega stoletja1 lahko najdemo razvijalce, ki so razvijali programe v strojnem jeziku. V šestdesetih letih so se pojavili razvijalci v ALGOL-u, Fortranu in predvsem COBOL-u. V sedemdesetih letih se jim pridružijo razvijalci v C, ki jim potem v osemdesetih sledijo razvijalci v C++. Devetdeseta leta prinesejo .NET in Javo, nakar se pojavi JavaScript.

Ob vsakem večjem premiku na področju programskih jezikov se moramo razvijalci naučiti novih veščin, predvsem pa marsikdaj povsem novega načina programiranja. Iz preprostih funkcij in rekurzije smo tako prešli do objektnih jezikov in objektne hierarhije, nakar JavaScript predstavi prototipno hierarhijo in propagira funkcijsko programiranje (functional programming).

Razvijalci pa smo ljudje in ob začetku poslovne poti razvijamo v programskih jezikih tistega obdobja (če imamo srečo) ali prejšnjih obdobij (v kolikor vzdržujemo obstoječo programsko opremo). JavaScript programski jezik je programski jezik milenijcev.

Kako pa se z njim spopadamo razvijalci, ki smo poklicno pot začeli v devetdesetih letih? Kako razvijati v sodobnih programskih ogrodjih (VUE, React,…), če dnevno uporabljaš objektne jezike kot so: C++, C# ali Java?

1 Obdobja so okvirna in mnogi jeziki ali celotne veje so seveda izpuščeni! Poudarjena je le veja, ki vodi do programskega jezika JavaScript in posledično VUE.

 

Vizualizacija podatkov v knjižnici React, praktične izkušnje
Alen Rajšp, Gregor Jošt, Viktor Taneski, Saša Kuhar, Luka Pavlič

React je ena izmed treh najbolj priljubljenih knjižnic za razvoj enostranskih spletnih aplikacij (angl. frontend). Omogoča tudi implementacijo ponovno uporabnih gradnikov uporabniškega vmesnika. Dodatne izzive in omejitve predstavlja uporaba zunanjih knjižnic in ogrodij. To še posebej velja v primeru, ko knjižnico React uporabljamo v kombinaciji z enim izmed meta-programskih Javascript jezikov (npr. TypeScript).

V prispevku bomo predstavili možnosti uporabe ogrodja React, s tem povezane dobre prakse in možnosti učinkovite povezave s tretjimi knjižnicami. Podali bomo tudi praktične izkušnje in izzive pri implementaciji tipične aplikacije za vizualizacijo podatkov. Še posebej se bomo omejili na knjižnice za prikaz grafov. Demonstrirali bomo postopek izbora knjižnice, njihove vključitve ter naše izkušnje in dobre prakse pri uporabi izbrane odprtokodne Javascript knjižnice. V prispevku bomo tudi opisali specifike, ki jih morajo izpolnjevati povezani in zaledni sistemi, s katerimi se aplikacije s knjižnico React povezujejo.

 

Vpogled v razvoj v tehnologiji Flutter
Blagoj Soklevski, Andrej Kline

Soklevski Kline

Po tem, ko že nekaj časa opazujemo Flutter in z rapidnim razvojem našega novega ekosistema zavarovalnih suit in sodelujočih mobilnih aplikacij, pod skupnim nazivom »iAgent«, smo dobili priložnost »umazati si roke« z razvojem ene od mobilnih aplikacij za sistem »iAgent« v orodju Flutter. Aplikacija, ki jo razvijamo, omogoča končnemu uporabniku enostavno sklenitev avtomobilskega zavarovanja v realnem času, ne glede na to, ali je uporabnik na odmoru za kosilo, na vožnji z avtobusom ali pa počiva doma na kavču.

V prispevku bomo prikazali vsa dognanja in izkušnje, ki smo jih pridobili v orodju Flutter, od prve napisane vrstice izvorne kode do release procedure, vključujoč kateri IDE smo uporabili, pluse in minuse razvoja v orodju Flutter, krivuljo učenja Dart in težave ob spremembi miselne naravnanosti (»mindset«) ob preklopu od razvoja prvinskih (»native«) do hibridnih mobilnih aplikacij.

Z novo izdano verzijo Flutter 1.2 in Dart 2.2 in z zasnovo, da z eno izvorno kodo lahko pokrijemo platformi Android in iOS, postane velika skušnjava pustiti vso native programiranje in se osredotočiti le na to odprto-kodno ogrodje za razvoj mobilnih aplikacij, ki ga je razvil Google in ga krasi hiter razvoj, izrazen in prilagodljiv UI in izvorne zmogljivosti naprav. Zato sedaj ne letimo preblizu Soncu, ne živimo v perfektnem svetu, vsake toliko moramo pogledati »pod pokrov« in napisati nekaj prvinske kode in – odvisno od naših primerov uporabe – ne zarjaveti prehitro v uporabi Kotlin, Swift ali Java.

Morda vse, kar se sveti, res ni zlato, vendar to ne velja za Flutter!

 

MyPark – Mobilna aplikacija za preverjanje parkirnih mest
Mark Berdnik, Gregor Gril, Matic Strajnšak

Berdnik Gril Strajnsak

V današnjem času ima že skoraj vsakdo svojo osebno prevozno sredstvo, katerega je potrebno nekje parkirati. Zato smo ustvarili mobilno aplikacijo z imenom MyPark. Cilj je uporabnikom dati privilegij za vpogled v prosta parkirišča v izbranem mestu in jim prihraniti čas. Mobilna aplikacija ima več mikroservisov, eden izmed njih je video analitika parkirišča. Ta omogoča prepoznavanje prostih in zasedenih parkirnih mest ter jih prikaže na mobilni aplikaciji.

Arhitektura projekta MyPark je obširna, saj uporabljamo veliko različnih rešitev za izdelavo končnega projekta.  Narejena je z ogrodjem Flutter, to je odprtokodno ogrodje za razvoj mobilnih aplikacij ki ga je ustvaril Google leta 2017. Uporablja se za razvoj aplikacij Android in IOS kot tudi osnovno metodo za ustvarjanje aplikaciji v Google Fuchsia. Za delovanje smo uporabili programski jezik Dart, ta se uporablja za razvoj spletnih, mobilnih in namiznih aplikacij.

Uporabniku je prikazan zemljevid izbranega mesta in vsa njegova prosta parkirišča. Ob kliku na parkirno točko aplikacija izpiše potrebne informacije o parkirišču: Lokacijo parkirišča, število prostih in zasedenih parkirnih mest. Vse to je ustvarjeno za pomoč uporabnikom ob iskanju le-teh. Da je takšno delovanje mogoče je uporabljeno odprtokodno živčno omrežno ogrodje DarkNet (strojno učenje) in OpenCv ki je knjižnica programskih funkcij usmerjena na računalniški vid v realnem času. Vsa ta video analitika je bila napisana v programskem jeziku Python.

Zraven mobilne aplikacije je bila ustvarjena spletna aplikacija. Narejena je bila v MERN stack (MongoDB, Express.Js, React, Node.Js). MongoDB je brez relacijska podatkovna baza ki ne uporablja SQL poizvedb.

Express.Js je ogrodje za Node.Js ki uporablja tako imenovani CRUD (Create, Read, Update, Delete) zapis, uporabljen je za komunikacijo z podatkovno bazo in spletno aplikacijo. React je JavaScript knjižnica  za izdelavo uporabniških vmesnikov. Vzdržuje jo Facebook in skupnost posameznih razvijalcev in podjetij. React se lahko uporablja kot osnova pri razvoju enostranskih ali mobilnih aplikacij. Node.Js je odprtokodno JavaScript okolje za izvajanje tega programskega jezika zunaj brskalnika. Spletna aplikacija omogoča vpogled v nadzorno ploščo tistim ki imajo administrativna dovoljenja.

Uporabljamo dva mikroservisa – server in video analitika. Za ustvarjanje mikroservisa smo uporabili Docker, ki je računalniški program za izvedo virtualizacije na ravni operacijskega sistema. Izdan je bil leta 2013, razvila ga je družba Docker, Inc.

 

ČETRTEK, 20. junij 2019

 

9:30 – 13:00  SEMINARSKI DELAVNICI

Hyperledger Iroha Hands-on Workshop

Osnove globokega učenja in računalniški vid