pomodoro.sh

Letöltés

A pomodoro egy módszer, ami segíthet az idő hatékonyabb kihasználásában. Irodai, kreatív munka során különösen hasznos lehet. A lényege, hogy a munkákat rövidebb - alapvetően 25 perces - szakaszokra bontva végezzük el, minden szakasz között rövidebb szünetet tartva. A legfontosabb, hogy egy pomodoro menetben kizárólag az adott feladattal foglalkozzunk. A kizárólag főleg azt jelenti, hogy nem olvasunk e-mailt, mi nem kapcsolódik a témához, nem chat-elünk, nem szólunk senkihez, nem kalandozunk feladataink véget nem érő listájában, hanem csak azt az egy kiválasztott munkát végezzük. Ha letelt az idő, akkor pedig dobjunk el mindent, akkor muszáj bármi mást csinálni, e-mailezni, kismacskát simogatni is. A koncentrált munkavégzés miatt a produktivitásunk hatalmasat nőhet, a szünetek pedig megakadályozzák, hogy idő előtt elfáradjunk.

Mondanom sem kell, a legnehezebb figyelmen kívül hagyni azt a rengeteg ingert. Chat, e-mail, kolléga a másik asztalnál nem ismer viccet.

Természetesen a nagy analóg csörgőóra mellett rengeteg program létezik, ami mást sem tesz, mint visszaszámol, esetleg letilt értesítéseket. Éppen ilyen természetes, hogy nekem egyik sem felel meg tökéletesen és különben is egy igazán egyszerű igényről van szó, amit élvezet mégegyszer megoldani.

Volt nekem erre már IRC/Slack botom (https://github.com/Ajnasz/hubot-pomodoro). Ezekről gyakran lemaradtam, mert az irc másik tmux sessionben fut és hangot sem ad. Hónapokkal ezelőtt kezdtem el csinálni az egyszerűbb megoldást, amit shellben meg tudok pattintani.

sleep 10 && aplay /usr/share/sounds/purple/alert.wav

10 másodperc után egy hangfile lejátszása. A tmux is kiemeli az ablakot, mert változás történt.

sleep $(echo "1 * 5" | bc) && aplay /usr/share/sounds/purple/alert.wav

Itt azt próbáltam, hogy milyen volna bc paranccsal lehetne kiszámolni, hogy meddig tartson a sleep.

sleep $((25 * 60)) && aplay /usr/share/sounds/purple/alert.wav

Látszik, hogy mennyivel szebb, ha a bc sincs bevonva.

i=0;while [ $i -lt $((1 * 1)) ];do sleep 1; i=$(($i + 1)); echo $i;done; aplay /usr/share/sounds/purple/alert.wav

Na itt már látszik, hogy nem fog egy sorban megállni. Csak illene tudni, hogy mennyi idő telt el. Egymás alá írogatja a másodperceket.

i=0;while [ $i -lt $((1 * 5)) ];do sleep 1; i=$(($i + 1)); echo -n "\r$i";done;echo; aplay /usr/share/sounds/purple/alert.wav

Itt pedig az utolsó egy soros, ahol helyben frissítjük a kiírt eltelt időt.

Nagyjából ezután került be minden egy file-ba és lett a neve pomodoro.sh.

Ha pedig már shell script, akkor igyekeztem mindent konfigurálhatóvá tenni. A minden kimerült abban, hogy lehessen másik hangot játszani és tetszőleges időt beállítani. Aztán, ahogy az evolúció megkívánta, a desktop notification is megjelent, hogy már nagyon biztosan lássam, ha véget ért a pomodoro session. Ezzel kapcsolatos, hogy notification daemonként a dunstot használom, majd a notify-send-et is lecseréltem dunstify-ra.

Ez volt a pont, ami után már hetekig hozzá sem kellett nyúlni a scripthez, nem volt ötletem, amitől még fantasztikusabb lehetne. Viszont felismertem, hogy Slack üzenetek még mindig csak jönnek és jönnek, én meg nézem őket, ami a fókusz elvesztésével jár. Nosza, több se kellett, feltúrtam a Slack API dokumentációját, hogy megtudjam, miképpen lehetne scriptből roppant elfoglalttá beállítani magam. Így történt az, hogy a ha van SLACK_TOKEN, akkor a pomodoro menet kezdetekor beállítja a "ne zavarj" státuszt és még egy pofás paradicsom ikont is elhelyez a nevünk mellé, a session végén ezeket természetesen törli. Sőt, újabban nem csak törli, hanem visszaállítja a korábban beállítottra.

Korábban egy gistbe küldtem a változásokat, de a projekt érettsége nyomán úgy döntöttem, hogy egy saját Github repositoryt is megérdemel.

Raspberry Pi külső drive kernel panic

Ha a Raspberryn a root partíció egy külső (USB) drive-on van, akkor ügyelni kell arra, hogy a /boot/cmdline.txt-ben, a root értéke PARTUUID formában legyen megadva, nem pedig /dev/sda1 vagy hasonló módon. Ellenkező esetben Kernel Panic - not syncing: VFS: Unable to mount root fs on unknown-block... és ehhez hasonló hibaüzenet várhat, legkésőbb akkor, amikor egy reboot paranccsal szeretnéd újraindítani a gépet.

A PARTUUID a sudo blkid paranccsal kinyerhető, valami ehhez hasonló lesz az output:

József Attila Telegram bot

távirat

Múlt héten volt a költészet napja és a városszerte kiragasztott versek sokasága sugallta, hogy mennyire jó lenne többet olvasni belőlük.

Mindeközben már régóta szerettem volna valamivel izgalmasabbá tenni a Telegramot és ez egy kiváló alkalom egy robot megszületéséhez.

Így mekről beszereztem a József Attila összest, kicsit megsimogattam, megformáltam, hogy használható legyen a chaten is, majd elkészült Jószef Attila bot, aki kérésre egy véletlenszerű verset küld neked.

Kicsit tovább gondolva jó ötletnek tűnt, ha nem csak kérésre, hanem akár naponta, kérés nélkül küldene egy-egy verset, csak azért, hogy társuljon valami izgalmas, szép a reggeli metrózáshoz. Ezért készült el a József Attila versek Telegram csatorna is. Ehhez csatlakozva naponta egy verset kapsz majd.

HashBackup DigitalOcean Spaces-be

Korábban a Raspberry PI-n keresztül töltöttem le a mentéseket, viszont a minap az SD kártya teljesen tönkrement így gyorsan kellett találnom valami megoldást a mentésre, mert ennél már csak az lenne rosszabb, ha mindenem eltűnne.

Szeretném ha valami rendes helyen lennének a mentések és nem az én összetákolt tárolóimon. Gondoltam, milyen jó lenne erre a DigitalOcean Spaces nevű object storage megoldása.

Ezelőtt duplicity-t használtam, azt hittem, hogy nem lehet egy ördöglakat megoldani, hogy mostantól máshová küldje a mentést. Igazából nem az, de akkor hirtelen képtelen voltam megoldani (azóta már sikerült).

Ezért elkezdtem egy olyan mentési megoldás után kutatni, amit hamar össze tudok rakni. A nagy sietségben a hashackup-ot választottam.

Shell script argument parsing

Ha shell scriptet írunk, gyakran előfordulhat, hogy szeretnénk azt paraméterezhetővé tenni.

Az alapvető módszerem, hogy vannak bizonyos beállítások definiálva a fájl elején egy alapértelmezett értékkel, majd a paraméterektől függően változtatom ezek értékét:

#!/bin/sh

IS_FLAG_A_SET=0

for i in $@; do
    case $i in
        '-a')
            IS_FLAG_A_SET=1
            ;;
        *)
            echo "Usage $0 -a"
            exit 1
    esac
done

if [ $IS_FLAG_A_SET -eq 1 ]; then
    echo "FLAG A"
fi

Lekezeltük még azt is, hogy össze-vissza paramétereket ne engedjünk csak úgy bepasszintani, ekkor ugynis kiírjuk a használati utasítást és hibakóddal kilépünk.

Izgalmasabb a helyzet, ha nem csak flagekkel dolgozunk, hanem szeretnénk valamilyen értéket átadni egy opcióval, mondjuk egy fájlnevet. Ha tudjuk, hogy csak egy ilyen lehet az adott programban, akkor megtehetjük, hogy azt mondjuk, hogy legyen az utolsó paraméter mindig a fájlnév.

FILE_NAME=${@:-1}
echo $FILE_NAME

De ez egyáltalán nem dinamikus, hiszen bármikor lehet olyan igény, hogy több értéket szeretnénk átadni. Ekkor például elkezdhetünk úgy dolgozni a paramétereken, hogy ha például -f kapcsolót kaptuk, akkor a következő paraméter a fájlnévnek vesszük:

Letöltés Humble Bundle-ről gyorsan, batch-ben

Roppant kényelmetlen egyenként végigklikkelni a a sok-sok linken Humble Bundle-on, amikor megvettél egy nagy adag könyvet potom áron.

Ezt kicsit meg lehet gyorsítani, ha vetünk egy pillantást a következő gistre: https://gist.github.com/Ajnasz/3356db6fd0e81013927c9cf5821a73de

cryptsetup luksFormat Invalid argument

enigma részlet

Mondjuk egy már létező howto alapján szeretnél titkosított filerendszert készíteni.
Viszont a cryptsetup luksFormat /dev/sdb1 parancs nem kér jelszót, akkor próbáld meg, hogy --verbose paramétert is beadod neki. Így egy kicsit több outputot fog kidobni magából:

VIM csomagkezelés howto

packages felirat

Az egyre több erre hajazó kiegészítő szinte messziről jövő segélykiáltásként szelte át az internet-étert egy beépített csomagkezelőért.

Így lehetett, hogy Vim 8-ban debütált a csomagok támogatása. github.com/vim/vim/blob/master/runtime/doc/repeat.txt#L471

Sajnos vagy nem sajnos jó ideje Neovim felhasználóvá avanzsáltam és minden informálódás nélkül leírtam, hogy ez a package manageres móka csak Vim-ben van, Neovimben nincs. Viszont a minap a Neovim git logot böngészve mintha erre utaló szavakat olvastam volna. A megérzésem jó volt, Neovimben is van Vim 8 csomagkezelő.

Megjegyzés: A csomagkezelő kifejezés nem a legmegfelelőbb, a Vim 8 packages a csomagok betöltését végzi, de nem telepíti őket.

Nikon D5300 webkamera Linuxon

Fénykép a Nikon D5300 fényképezőgépről

Képzeljük el milyen profi videó társalgást lehetne tartani akárkikkel ha egy jobb objektívvel rendelkező DSLR kamerát használnál webkamerként!
Szépen beállítod a kamerát, fókuszt, fényt és miegymást, és szuper minőségben látnak majd anyuék, apuék vagy akár egy kedves kolléga a föld túloldalán. (Amint lesz webcam támogatás a linuxos Skype-on is.)

Szóval hogyan is lehet Linuxon webkameraként használni egy digitális fényképező gépet? Nekem egy Nikon 5300 van éppen és roppant könnyen össze tudtam hozzá vadászni az információkat az internet végtelen világából.

Hupper 2

Hupper better experience promotion image

Nagyjából az elején kezdem a történetet:
Sok-sok évvel ezelőtt, amikor kiterjesztéseket még többnyire Firefox böngészőhöz lehetett írni, akkor készült a hup.hu weboldalhoz a hupper nevű add-on. Arra hivatott, hogy a napjuk több-kevesebb részét ott töltő kedves felhasználók valamivel hatékonyabban tudják kezelni a weblapot.
Az extension funkcióit főleg a felhasználók igénye alakította, így lehet például közvetlenül navigálni az új hozzászólások között, majd hasonló funkció készült az olvasatlan hozzászólásokkal rendelkező cikkekhez is.
Emellett át lehet kicsit alakítani a megjelenést is, a jobb és bal oldalon található blokkok áthelyezhetőek, összecsukhatóak, eltüntethetőek.
Az egyik legnépszerűbb fejlesztés azonban kétségkívül az úgynevezett troll szűrő, aminek köszönhetően elrejthetőek azok a hozzászólások, amelyeket nem túl kedvelt felhasználók írtak.