Duomenų bazių testavimas

Prieš keletą dienų užtikau patikusį straipsnį apie automatizuotus duomenų bazių testus. Programiniam kodui jau senokai tapo įprastinė praktika rašyti testus, bet duomenų bazių struktūra testuojama ne visada. Tiesa, gerai sutvarkytoje duomenų bazėje įmanoma sudėti daug saugiklių: stulpeliams uždėti apribojimus, išorinius raktus ir panašiai, tačiau bendras požiūris į duomenų teisingumą bei validumą vis tiek reikalingas.

Autorius siūlo duomenis testuoti trijose vietose: pirminių šaltinių lygyje, tik juos sukėlus į duomenų bazę ir jau po verslo logikos transformacijų. Šis testų sąrašas atrodo visai nebloga pradžia:

  • Ar visi pirminiai raktai lentelėse unikalūs?
  • Ar [svarbiame stulpelyje] nėra null reikšmių?
  • Ar visi išoriniai raktai egzistuoja lentelėse kaip pirminiai raktai (be dublikatų, ir pan. – referencinis integralumas)?
  • Ar skaitinės duomenų reikšmės neiššoka iš tikėtino reikšmių rėžio?
  • Ar agreguoti duomenys atitinka detalesnių duomenų informaciją (ar čekio suma atitinka atskirų prekių sumai čekyje)?
  • Ar yra visi stulpeliai, kurie bus naudojami galutinėse lentelėse?
  • Ar įmanoma be klaidų paleisti dažniausiai pasitaikančias verslo užklausas?

Dar prie šio sąrašo pridėčiau patikrinimą, ar eilučių kiekis įvairiose duomenų bazės lentelėse yra toks, koks ir tikėtasi – labai dažnai dėl kokios nors lentelių jungimo klaidos duomenys susidublikuoja.

Rožės monitoringas su Raspberry

Noriu pasigirti: žmonos paskatintas pirmą kartą su Raspberry Pi nuveikiau kažką sudėtingesnio nei vien tik pajungiau prie jo kamerą. Jai paklausus, ar nebūtų įmanoma sukonstruoti kokio nors prietaiso, stebinčio rožės dirvos temperatūrą, suėmė savotiškas azartas, ir jau kitą dieną stovėjau prie visiškai neaiškių daiktų kupinos vitrinos elektronikos komponentų parduotuvėje. Kažkokie sensoriai, laidukai, mikroschemos, montažinės dėžutės, rezistoriai ir kiti ten parduodami dalykai – nieko nesuprantu, nieko nežinau. Ar čia man reikia to, ar kito, ar skiriasi kuo DHT-22 nuo DHT-11, kokių ir kiek man reikia rezistorių (o jų iš vis pasirodo reikia?), o jei neturite BCM3008 mikroschemos kur Youtube mačiau kad man reiks, tai ar tiks kas nors kitas? Sakot ADC1115? Jei reiktų apie Hėgelio filosofiją pasikalbėti čiuvašų kalba, manau, kad jausčiausi pasimetęs mažiau nei toje elektronikos parduotuvėje atsakinėdamas į konsultanto klausimus.

Sistemos bandymai

Visgi nukovęs glėbį keistų komponentų, pergalėjau save, praleidau kelis vakarus prie įvairiausių forumų bei straipsnių internete ir sukonstravau kažką veikiančio. Prie Raspberry prijungiau oro temperatūros ir drėgmės jutiklį (net kažkiek apygraibomis supratau, kodėl dar prie jo reikia pajungti rezistorių) ir dirvos drėgmės sensorių. Pastarasis duoda analoginį signalą, tad reikėjo prijungti ir analoginio-diskretinio signalo konvertavimo mikroschemą. Kol kas dar jos nelitavau, tad bet koks sujudinimas dažniausiai reiškia, jog vėl kažkas nusimušė. Buvo šiek tiek vargo.

Nustebau, kad visgi tie visokie su geležimi ir mikroschemomis susiję dalykai buvo ganėtinai nesudėtingi – programavimas tikriausiai sunkiau įveikiamas niekada su tuo nesusidūrusiems. O čia tik reikia teisingai sujungti laidukus, nieko sudėtingo. Ir dar gauni tam tikrą pasitenkinimą, kai matai, jog fiziškai tavo padarytas daiktas veikia.

Viso to pasekmė: rožės monitoringo svetainė, kurioje beveik realiu laiku galima matyti balkone esamą oro temperatūrą, santykinę drėgmę ir dirvos „prilaistymo“ procentą. Pastarasis kol skaičiuojamas gana komplikuotai, mat daviklis duoda įtampą, pagal kurią sukalibruoti drėgnumą reikia pačiam: 100 proc. buvo tik dirvą paliejus, o 0 proc atitiko sensoriaus įtampą jį ištraukus iš dirvos. Tikėtina, kad kažkur ties 50 proc drėgnumu jau galima bus siųsti įspėjimą, jog rožę reikia vėl laistyti. Matyt, reikės ir kitų korekcijų: dieną kylant temperatūrai, dirvos pralaidumas elektrai didėja, tad sensorius mano, jog dirva tampa drėgnesnė.

Sujungtos mikroschemos

Naudotos detalės: ADC1115 mikroschema, DHT–22 temperatūros sensorius, YH–69 dirvos sensorius, Raspberry Pi B series.

Pilietybės išsaugojimo referendumas – negaliu apsispręsti

Prisipažinsiu, kad likus tik gerai savaitei iki referendumo dėl pilietybės išsaugojimo vis dar nesu iki galo apsisprendęs kaip balsuoti. Referendumo intencijos tikriausiai geros, bet įgyvendinimas kelia klausimų, ir nesijaučiu iki galo užtikrintas, kad visi iki galo į juos rimtai žiūri. Lyg ir būčiau linkęs pilietybės išsaugojimui pritarti, bet jaučiu kažkokią keistą abejonę – lyg su džiaugsmu balsuočiau už elektroninio balsavimo įteisinimą iki galo nesuprasdamas jo rizikų (jeigu ką, tai esu stipriai „prieš“ elektroninį balsavimą), o tik vertindamas intencijas.

Teigiamai balsuoti norėčiau, nes manau, jog šiuolaikinė valstybė nebėra ribojama teritorija – geru piliečiu gali būti ir gyvendamas visai kitur. Visai nesvarbu, jog jau dešimtmetį dirbi Londone ar gyveni JAV: jeigu tik yra noras turėti ryšį su Lietuva, tokio noro nereikia slopinti. O ir šiaip, kuo toliau, tuo labiau ribos tarp fizinių valstybių nyksta, nes didžiąją laiko dalį pradedame leisti virtualioje realybėje, kur tavo IP adresas neturi daug reikšmės (nors kuo toliau, deja, visgi jo reikšmė irgi didėja). Be to, realybėje tokių „naujų“ piliečių bus tikriausiai ne tiek jau ir daug: gal tik keli tūkstančiai, tad ar verta dėl to sukti galvą ir ieškoti rizikų?

Lygiai taip pat esu už tai, kad emigrantams būtų galima lengviau keliauti: net jei jie jau įsišaknijo kitose šalyse ir gavo jų pilietybes, Lietuvos pasas suteiktų Šengeno erdvės privalumus. Tai neabejotinas pliusas, palengvinantis gyvenimą, ypač tokioje aplinkoje, kurioje Britanijos išėjimas iš Europos Sąjungos gali sukelti papildomų nepatogumų.

Iš kitos pusės, referendumu keičiame Konstituciją, kurioje numatyti pamatiniai valstybės principai, o dabartinėje formuluotėje pilietybės išsaugojimas numatytas tik Lietuvos Respublikos piliečiams pagal kilmę, kurie įgyja euroatlantinės integracijos kriterijus atitinkančios (ES ir NATO) valstybės pilietybę: ganėtinai specifiška, bet kartu teoriškai su rizika, kad tie kriterijai gali keistis. Taip, suprantu, kad tai yra saugiklis, kuris šiuo metu mus saugo nuo priešiškų valstybių bei „žalių žmogeliukų“, nes išeliminuoja visus, kurie yra už ES ir NATO ribų, bet ar jis bus pakankamas po 20 metų? O po 120-ies? Būčiau žymiai labiau už tai, kad pilietybė būtų išsaugoma visiems, nesvarbu, kokios valstybės pilietybę jie įgyja – taip bent jau rizikos tampa visiems aiškesnės ir suprantamesnės. O jei dėl tokio pasiūlymo daugelis nebūtų linkę pritarti, gal ir dabartinis variantas visgi nėra toks geras? Taip, Konstitucijos atžvilgiu esu konservatyviai paranojiškas.

Turiu ir filosofinių abejonių dėl priesaikos kelioms valstybėms vienu metu. Gerai, jeigu interesų konfliktas niekada nekyla, visada išliekame sąjungininkai ir esame tose pačiose barikadų pusėse. Bet net ir tada, kovojant su vienu priešu, kurios valstybės kariuomenėje turėtų atlikti pareigą dvigubas pilietis? Kuri valstybė turi viršenybę? Kartu su pilietybės teikiamomis privilegijomis ateina ir pareigos, bet ar dvigubi piliečiai net labai norėdami jas gali vykdyti? Šiuo metu asmuo įstatymiškai gali būti tik vienoje santuokoje arba politinėje partijoje, vienguba pilietybė irgi turi logikos. Reziduoti kitoje ES valstybėje turint Lietuvos pilietybę niekas nedraudžia.

Dar gera savaitė galvojimui.