Senokai aš čia nerašiau ne tik kad išvis, bet juoba apie programavimą. Tai todėl šiandieną parašysiu apie katukus.
Jau kurį laiką (bent pusmetį, turbūt daugiau) naudoju tokią puikią programatūrą i3wm. Tai yra tiling window manageris. Ir nors tiling window manageriai yra plius-minus mano bendraamžiai, pats tokį naudoju pirmą kartą. Kol kas esu labai juo patenkintas, gal kada prikaupsiu medžiagos atskirai apie tai parašyti.
O kol kas, aš kaip visada nekenčiu softo ir kenčiu kančią nuo bugų. Tik skirtingai, nei iki šiol šiame bloge, šįkart ne tik pasibarsiu kaip viskas blogai, bet ir papasakosiu kaip pataisiau. Tiksliau, apie taisymą tai nebaisiai yra ką pasakot, greičiau apie tų bugų atradimą.
Taigi, i3wm’as turi tokią programėlę i3lock, skirtą užlokinti ekranui, kuri paskui paprašo slaptažodžio; nu kaip įprasta. Ir dar ta programūlka moka pasakyti OS’o power managemento sistemai, kad čia įvyko užlokinimas ir galima užmigdyti monitorius. Malonus ir savaime suprantamas fyčeras. Tik bėda tame, kad softas įprastuoju būdu tikisi, kad jį naudos žmonės, su realistiškais, žmoniškais use case’ais. O čia, blyn, namuose katė.
Taigi, pirmas bugas: įjungiu nakčiai locką, jis užmigdo monitorius, o ryte randu monitorius linksmai sau šviečiančius. Negudru buvo suprasti, kad naktį katė prasieina per klaviatūrą, “suveda passwordą” ir durnas softas laukia visą naktį kol paspausi Enter. Pradėjau jungti locką su įjungtu debug logu ir akurat, kasdien randu ką nors tokio:
[i3lock-debug] current password =
xzzzzzzzzzzzzzzzzzzmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmm────────,,,,,,,,,,
,,,,,,,,mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmiuuuuuuuuuuuuuuu
uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuj
oiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
Antras bugas jau gal ir ne visai katės nuopelnas, čia jau ir žmogiško usage patterno turėjo pakakti, kad autoriai padarytų teisingai, bet nepadarė ir teko taisyti: jeigu įjungtas monitoriaus užmigdymas, tai kai grįžti prie kompo ir pradedi taipinti, monitoriai, natūraliai, pabunda ir rodo kažkokį feedbacką, kad tu taipini. Bėda, kad jeigu passwordą mistaipinai ir jis buvo atmestas, tai durnas softas tą pat sekundę vėl užmigdo monitorius ir tenka pasakyti ne tik įprastą blet dėl nepataikyto slaptažodžio, bet ir dar ką nors pridurti dėl durno softo :-)
Na ir trečias, gerokai piktokokas bugas -- vėl katanizmas. Pasireiškia, kai katė ilgesniam laikui užmina ant Enter klavišo. Visus tuos Enter klavišus softas susibuferizuoja ir pradeda vieną po kito apdoroti. T.y. pradeda vis iš naujo ir iš naujo tikrinti tuščią slaptažodį. O slaptažodį sutikrinti su PAM taigi užtrunka. Gal sekundę, gal dvi, ar pan. Rezultatas: softas įpuola į baigtinį, bet labaaai ilgą ciklą, kuris praktiškai reiškia vartotojo lock-out’ą nuo jo kompo daugeliui valandų. Nieko toks bugelis, ane?
Tokia vat padrika, bet bent jau man linksma istorija apie tris bugus, du iš kurių atrado katė :-)
Privalau pagirti i3wm žmones už suprantamą kodą. Tegul ta i3lock programa ir ne pats sudėtingiausias softas planetoje (ir dar ganėtinai kompaktiškas), bet atsivertus nematytą C kodą, kuris ištisai naudoja nepažįstamus API, rasti ir pataisyti problemas buvo lengva.
Todėl bugai pataisyti, patch’ai jau upstreame, tai galit imt ir naudot.
shookees
2014-04-01 08:26
Puiki komanda, dienomis programuoji, naktimis cat-use-case’ai testuojami :D