Darbe iš nutolusių įrenginių kelis kartus per valanda surenkam įvairių meteorologinių jutiklių duomenis. Mums ganėtinai svarbu, kad įrenginys veiktų tvarkingai ir visą laiką fiksuotų realią informaciją. Žinoma, visko pasitaiko: lūžta ryšio įrenginiai ar valdikliai, dingsta elektra arba sugenda pavieniai jutikliai. Kaip identifikuoju viso įrenginio veikimą, jau esu rašęs ankščiau poste apie hierarchines SQL užklausas. Su pavienių jutiklių veikimu-neveikimu yra šiek tiek sudėtingesnė situacija. Kartais pasitaiko, kad sugedus vienam ar kitam įrenginio jutikliui, įrenginio valdiklis „užsiciklina” ir kiekvienos tolimesnės iteracijos metu gražina paskutinę iš jutiklio surinktą reikšmę, kas labai iškreipią suvokimą apie įrenginio duomenų kokybę. Skaitykite toliau
Temos Archyvai: Programavimas
Hibridinė JasperServer ataskaita iš Oracle ir MS SQL vienu metu
Taip jau buvo, taip nutiko, kad prisireikė vienoje ataskaitoje dinamiškai „sukirsti” Oracle ir MS SQL Server duomenis. Klasikinis variantas šioje situacijoje yra vienos DB duomenų replikavimas/sinchronizavimas į kitą. Toks variantas gal ir yra pats geriausias/patikimiausiais, tačiau jis toli gražu nėra trivialus. Pirmiausia, aš pats nei vienos iš tų DB neadministruoju, todėl nagų kišti į vidų kaip ir negaliu. Antra, abiejų DB duomenų modeliai yra skirtingi, todėl norint gražiai perkelti duomenis, reiktų juos perskaičiuoti ir „pritraukti” iki vienos iš DB struktūros. Kol DBA keiksnodami bando įsivertinti darbų apimtis, nusprendžiau užduotį atlikti Jasper priemonėmis. Tiesa pasakius, kol pats nepabandžiau net nebuvau tikras, ar Jasperis iš vis gali imti duomenis iš kelių skirtingų DB vienu metu, bet tai atrodė visai logiška, nes Jasperis leidžia vienoje ataskaitoje manipuliuoti keliais tos pačios DB Dataset’ais. Jei jau galima kurti skirtingus datasetus, kodėl gi būtų negalima jų kurti iš skirtingų DB šaltinių? Skaitykite toliau
Automatinis nuotraukų mažinimas
Prisireikė darbe sumažinti krūvą kamerų nuotraukų. Nuotraukų, švelniai tariant, daug. Labai daug, apie 6 mln. vnt. (~1 TB). Visos nuotraukos tvarkingai sudėliotos į hierarchinę aplankų struktūrą pagal kameros pavadinimą, metus, mėnesį ir dieną, todėl „prieiti” iki konkrečios nuotraukos nėra labai jau paprasta. Dar įdomiau, kad ne visų kamerų vaizdus reikia mažinti. Kai kurie kamerų vaizdai jau yra reikiamo dydžio, ir juos papildomai apdorojant būtų be reikalo gaištamas laikas. Ką daryti..? Aš radau tris skirtingo sudėtingumo šios užduoties įgyvendinimo variantus. Skaitykite toliau
Tekstinių failų paieška ir apjungimas į vieną CSV su Python’u
Kolega paprašė susitvarkyti su viena kvaila užduotimi. Yra aibė direktorijų, kurių viduje yra krūva subdirektorijų, kuriuose kiekvienoje yra po tekstinį failiuką „info.txt”. Kiekviename failiuke yra 3 eilutės teksto (timestamp, id numeris ir klasifikatorius). Reikia iš visų tų failiukų suformuoti vieną gražų CSV failą. Rankomis tokia užduotis praktiškai neįmanomą (kolega per pusdienį „surinko” į vieną failą gal tik 250 failiukų), bet su python ji yra išties labai lengva. Skaitykite toliau
JasperServer date input parameters: kaip nustatyti dar gudresnias „default“ vertes
Seniai rašiau, kaip JasperServer ataskaitoms suprogramuoti standartines (angl. default) ataskaitos parametrų reikšmes. Po to radau, kaip lengvai ir paprastai galima įjungti ir išjungti SQL užklausos where sąlygas. Nusprendžiau kad iš šių dviejų „metodikų” galima sukergti visai neblogą sprendimą automatiniam/rankiniam ataskaitų generavimui… Skaitykite toliau
Dinaminis SQL užklausos „where” sąlygų keitimas
Situacija dažnai sutinkama kasdieniniame darbe. Turim select’ą su daug where sąlygų. Vieną kartą select’ą tenka įvykdyti su vienomis sąlygomis, antrą kartą su kitomis, trečią – su visomis išskyrus vieną ir pan. Jeigu select’as trumpas, bėdos nėra: užkomentuojam nereikalingas eilutes ir tiek. Jeigu select’as yra labai ilgas, su daug join’ų, union’ų ir daug daug kintančių sąlygų, problema pasidaro gan rimta. Galima lengvai susipainioti ar kažką praleisti. Taip pat toks „užkomentavimo” metodas nelabai tinka automatiniam ataskaitų generavimui. Na bet pasirodo yra gan paprastas ir patogus where sąlygų įjungimo/išjungimo būdas. Skaitykite toliau
TARDIS modeliuko modifikacija
Esu didelis Doctor Who gerbėjas. Nesu toks pamišęs, kaip „tikrieji” Whovian‘ai, kurie mintinai moka visus dialogus, atsimena senąsias serialo serijas, žino aktorių biografijas ir pan., bet net ir man ilgą laiką norėjosi turėti nors kokios Doctor Who atributikos. Iš ebay pirkti buvo brangu, o Lietuvoje serialų atributikos net su žiburiu nesurasi, todėl ilgą laiką taip ir gyvenau svajodamas apie kokį nors menkniekį. 2014 m. pabaigoje svečiavausi Stoholme, kur visai netikėtai ir tuo labiau visai neplanuotai vienoje komiksų parduotuvėje užtikau Doctor Who kampelį. Tą kart spjoviau į visus suvalkietiško kraujo nuogąstavimus ir įsigijau TARDIS ir Dalek’o modeliukus. Dalek’u likau labai patenkintas, o vat TARDIS mano įgeidžių šiek tiek netenkino. Nors modelio kosmetinė išvaizda ir pagaminimo kokybė yra tiesiog ideali, tačiau TARDIS lemputę galima tik įjungti/išjungti, t. y. arba ji šviečia, arba ne, o ne pulsuoja, kaip turėtų. Na bet tai lengvai pataisoma.. Skaitykite toliau
Flip-Dot Clock laiko sinchronizavimas su Aviete per Bluetooth
Persukdamas savo elektromechaninį laikrodį į vasaros laiką, pastebėjau, kad laikrodis skuba daugiau nei viena minute. Kadangi laikrodis surinktas kreivai – šleivai, gali būti, kad RTC veikimą įtakoja kokia nors elektromagnetinė interferencija ar pan. Per daug į tai gilintis patingėjau, nes prisiminiau, kad prie laikrodžio kaip tyčia yra prijungtas HC05 BlueTooth moduliukas, kuris leidžia laikrodžio laiką atnaujinti nuotoliu būdu, o tai yra puiki galimybė laiko neatitikimą nuo realybės išspręsti reguliaria laiko sinchronizacija su RPI, kuri savo ruožtu laiką gauna iš NTP serverio. Skaitykite toliau
Avietė: DHT22 duomenų atvaizdavimas
Kaip jau rašiau ankščiau, prie savo RaspberryPi esu prisijungęs porą termometrų/higrometrų, kurių duomenis kas tam tikrą laiką saugau MySQL duomenų bazėje. Kaip man ir nepatiktų rašyti SQL užklausas, vis tiek norėtųsi namų „meteo stotelės” duomenis matyti gražiu, suprantamu, grafiniu formatu. Taip pat būtų visai smagu turėti galimybė pasiekti tuos duomenis iš bet kurios pasaulio vietos internetu. Žodžiu, prisižiūrėjęs pavyzdžių internete, nusprendžiau surinktus duomenis atvaizduoti internetinėje naršyklėje grafiku, skalėmis ir tekstu. Skaitykite toliau
Flip-Dot Clock
Idėja susikonstruoti unikalų sieninį laikrodį mano galvoje kirbėjo gan seniai, tačiau iki šiol niekaip iki to „nepriėjo“ rankos. Be to, internetas yra pilnas kuo įvairiausių „nixie“, LED’inių, mechaninių, pneumatinių, hidraulinių ir kitokių laikrodžių, o man norėjosi kažko įdomesnio. Taip pat kaip ir kiekvienas tikras inžinierius esu didelis tinginys, todėl nenorėjau per daug vargti su mandromis konstrukcijomis ir kitokiais velniais, todėl ilgai laukiau reikiamo momento kol į rankas paklius kas nors, iš ko būtų galima pasidaryti laikrodį. Šis momentas atėjo buvusiame darbe, kai į mano rankas pakliuvo elektromechaninė (angl. flip-dot) švieslentė. Skaitykite toliau