Kategorijos archyvas: Programavimas

Python: Statistinis klaidingų duomenų taškų eliminavimas

nekorektiski_taskaiPrieš mėnesį prie RaspberryPi prisijungiau porą DHT22 oro temperatūros ir drėgmės jutiklių ir pradėjau automatizuotai iš jų surinktus duomenis saugoti MySQL duomenų bazėje (plačiau čia). Dar programuodamas duomenų surinkimą, pastebėjau, kad laikas nuo laiko DHT22 duomenyse pasitaiko klaidų, pav. vieno iš 10 matavimų rezultatas yra keliais laipsniais didesnis nei likusių ar pan. Tokias klaidas bandžiau eliminuoti suvidurkindamas kelių matavimų duomenis, tačiau tai padėjo tik iš dalies, nes net vienas klaidingas rezultatas gan stipriai iškreipia vidurkio rezultatą (žr. grafiką viršuje). Nusprendžiau matavimų klaidas eliminuoti panaudodamas statistinį „nukrypėlių“ eliminavimo metodą. Skaityti toliau

Avietė: DHT22 -> MySQL

IMG_7148

Viena pagrindinių priežasčių, kodėl aš iš viso pirkau RaspberryPi, buvo noras pagaliau prisiversti susidraugauti su linuxu ir kažkiek pramokti python, php, mysql, java, js, ir visokius kitokius šiandien aktualius velnius. Programuoti vien dėl programavimo yra tuščias laiko gaišimas, todėl iš karto reikia daryti kažką naudingo, o ne rašinėti visokius „hello world“. Vos tik nusipirkęs RPI, nusprendžiau pasidaryti kelių zonų termometrą su istorinių duomenų atvaizdavimo galimybe. Tam, kad spyris į užpakalį kažką daryti būtų kuo stipresnis, nusprendžiau viską programuoti pats. Sukurpiau tokį pradinį planą: Cron jobas kas 5 min. paleidžiai Python scriptą, kuris kelis kartus nuskaito DHT22 jutiklio duomenis, juos suvidurkina ir surašo į MySQL DB. Skaityti toliau

Excel: lietuviškų raidžių panaikinimas (nulietuvinimas)

excel_lietuvisko_raidesNeseniai prisireikė rankiniu būdu sukurti kelis naujus naudotojus vienoje sistemoje. Naudotojų sąrašą gavau su lietuviškomis raidėmis, o mūsų sistema lietuviškų raidžių naudotojo varde nepriima. Ką daryti? Ranka taisyti? Taip neįdomu.. Skaityti toliau

JasperServer JFreeChart grafiko išvaizdos tobulinimas su „Customizer Class“

jfreechart

Įrašas bus apie taip, kaip gan paprastai galima pagal asmeninius poreikius pasikeisti JasperServer grafikų išvaizdą. Tikriausiai žinot, kad grafikai tiek iReport’e tiek pačiame JasperServer grafikai yra išpiešiami naudojant JFreeChart komponentą. iReport šiek tiek leidžia keisti grafiko išvaizdą, bet nepakankamai. Kažkodėl programuotojai iReport’e sukūrė tik galimybę keisti tik grafiko elementų (linijų, stulpelių ir pan.) spalvą, bet nerealizavo galimybės keisti linijų stilių, išpiešimo eiliškumą ir kitus naudingus parametrus. Yra kaip yra. Viską kitą yra gan lengvai padaroma su/per java Customizer Class. Skaityti toliau

Išklausiau kursus „Oracle Database 12c: Introduction to SQL Ed 1“

oracle_mini Ilgai delsiau, bet pagaliau išklausiau „Oracle Database 12c: Introduction to SQL Ed 1“ (lt. Oracle DB: Įvadas į SQL) 5 dienų trukmės kursus. Nors pavadinimas kaip ir nieko daug nežada, bet kaip savamoksliui programuotojui kursai buvo labai naudingi. Ne tik tuo, kad prisisėmiau daug teorinių žinių ir supratau, kodėl kai kas, ką kažkada bandžiau suprogramuoti, net ir negalėjo veikti, bet ir tuo, kad turėjau labai gerą dėstytoją, kuris peržengdamas kursų gaires atsakinėjo į visus man rūpimus klausimus.

Highly recommended!

Laiko rėžis datos rėžio oracle užklausoje

sql_date_time

Laikas nuo laiko tenka ištraukti tam tikrų valandų kelių dienų duomenis, pav. gauti duomenis už praėjusio mėnesio kiekvieną dieną 08:00–09:00 valandomis. Kartais pasitaiko tai įdomesni poreikiai, pav. gauti tam tikro laiko intervalo duomenis tik savaitgaliais arba tik konkrečią dieną (pav. tik antradieniais ir pan.). Užduotis paprasta, bet dėl to, kad tai daryti tenka ne dažnai, vis pamirštu konkrečia sintaksę. Tenka pasikelti senus failus, juose ieškoti konkretaus sprendimo. Taip daryti nusibodo ir nusprendžiau savo naudojamą techniką aprašyti čia. Gal kam nors irgi pravers… Skaityti toliau

Oracle hierarchinės užklausos su WITH ir CONNECT BY

oracle_hierarchine

Darbe iš nutolusių įrenginių kelis kartus per valanda surenkam įvairius duomenis. Kiekviena surinkimo faktą (surinko ar nesurinko duomenis) taip pat fiksuojame ir saugome DB. Kažkada iškilo poreikis grafiškai pasižiūrėti, kaip vis dėl to mūsų įrenginiai veikia, t. y. kaip kokybiškai teikia mums duomenis. Tam pasirašiau paprastą užklausą, kuri tiesiog suskaičiuoja, kiek kiekvieną valandą buvo sėkmingų duomenų surinkimo iteracijų. Kaip ir viskas gerai, tačiau bėda kyla, jei konkrečią valandą nebuvo nei vienos sėkmingos iteracijos. Tada duomenys visai dingsta (žr. nuotrauką viršuje), o norėjosi bent null pamatyti. Skaityti toliau

Pusiau automatinė JasperServer atsarginė kopija

jasperserver_backup

Kaip pasidaryti ir atkurti atsarginę JasperServer saugyklos (angl. repository) kopiją yra puikiai aprašyta sharad-gupta bloge. Iš principo, tereikia js-export.bat įrankį paleisti su –everything ir –output-zip backup.zip raktais,  ir po kelių minučių turėsite pilną JasperServer repository atsarginę kopiją backup.zip archyve. Tačiau ką daryti, jei norime jei norime atlikti periodinius versijuotus backup’us? Kiekvieną kartą rašysim tą pačia komandą nusibodusią komandą, pakeisdami  archyvo pavadinimą?

<js-install directory>buildomatic>js-export.bat --everything --output-zip backup_20140618.zip

Aišku galima, bet tai šiek tiek kvaila. Štai mano liaudiškas metodas..

Skaityti toliau

JasperServer sulietuvinimas

jasperserver_lt

Dažna problema po mūsų saule – iš kur gauti užsienietiškų programinių paketų sulietuvinimus. JasperServer – ne iš imtis. Kai reikėjo, kiek ieškojau internete, niekur neradau bent minimalaus sulietuvinimo varianto. Teko vartotojo sąsają versti pačiam..

Skaityti toliau