navod

Hyper is the new Super

Hyper is the new Super

Na tohle (at uz to je cokoliv) by se hodila klavesova zkratka. Jenomze jaka? Ctrl+pismeno, nebo cislo, muze kolidovat s nekterymi aplikacemi a s ovladanim terminalu (zvlast Ctrl+C,Z,Q a S je velmi neprakticke odchytavat). Alt+pismeno pouzivaji jine aplikace. Alt+F-klavesa se pouziva na prepinani pracovnich ploch. Mackat vice modifikatoru je docela nepohodlne (i kdyz uzivatele Emacsu trenuji, co mohou).

Docela prakticke je pouzit jako modifikator klavesu Wokno, kterou X prijme jako Super_L, nebo Super_R (levou a pravou) a dale ji mapuje na X-ovy modifikator Mod4. Pak takova klavesova zkratka v konfiguraku fluxboxu vypada napriklad takto:

Mod4 x :Exec xterm

Ale ne na kazde klavesnici takova klavesa je. Treba na psani velmi pohodlna IBM model M ji nema.

Behem techto uvah jsem si znovu uvedomil, jak me stve CapsLock. Uz pred nekolika lety doslo k deCapsLockizaci jedne klavesnice sroubovakem, protoze se na ni povedlo az prilis casto tuhle klavesu strefit omylem spolecne s pismenem “a”. Po nalezeni redukce z velkeho DINu na PS/2 a prechodu na jiz zminenou IBM Model M CapsLock opet vyvstal, znovuzrozen, jako Fenix. Model M mi, narozdil od scheisse-membranovky, bylo lito nicit. A to byla idealni prilezitost pro sber statistiky o vyuzivani teto klavesy.

Vyuziti CapsLock
umyslne neumyslne
------------------
0       mockrat

Nesel by CapsLock predefinovat na neco uzitecnejsiho? Pry se dal prohodit s Ctrl, jako to mely stare layouty klavesnic. Nezbylo, nez zacit hledat.

Nakonec jsem se dostal az sem: https://en.wikipedia.org/wiki/Space-cadet_keyboard. Dobre si prohlednete modifikatory z pred-UNIXove doby a jejich rozmisteni. Vsechny ctyri modifikatory jsou na obou stranach klavesnice, zrcadlove proti sobe a v jedne rade. Takze bylo mozne zmacknout jejich kombinaci i bez polydaktilie, kterou si dnes preji k vanocum ctyri z peti uzivatelu Emacsu.

Takze to mame do prostredka do kraje: Ctrl: jasne, ten mam na klavesnici taky, ne? Meta: ne, tahle ne. Vetsinou (a defaultne) se jako Meta mapuje na PC klavesnici Alt. Super: tam je namapovana klavesa s wokynkem, tucnakem, nebo jinum obrazkem jako v materske skolce. Hyper: WTF, to jsem jeste nevidel.

Klavesu Hyper jde na PC klavesnici namapovat treba na klavesy s wokynkem a nebo prave na zmineny CapsLock. Staci v Xkach pustit:

setxkbmap -option caps:hyper

a je to. Jenomze se chova stejne, jako klavesa Super (wokynko). Proc?

To, ze do Xek prijde scankod klavesy Hyper jeste mnoho neznamena, Xka zmaji 8 modifikatoru (a vic jich mit nemohou, protoze modifikatory jsou v bitove maper v jednom Byte) a do toho se pocita i Shift, CapsLock, NumLock a prepinac layoutu klavesnice. Hyper je na vsech pocitacich, na ktere jsem se koukal, defaultne nastaveny na Mod4 stejne jako Super.

Takze nasleduje prehozeni na (defaultne prazdny) Mod3.

xmodmap -e "remove Mod4 = Hyper_L" -e "add Mod3 = Hyper_L"

a hned to vypada lepe:

$ xmodmap -pm

xmodmap:  up to 3 keys per modifier, (keycodes in parentheses):

shift       Shift_L (0x32),  Shift_R (0x3e)
lock
control     Control_L (0x25),  Control_R (0x69)
mod1        Alt_L (0x40),  Meta_L (0xcd)
mod2        Num_Lock (0x4d)
mod3        Hyper_L (0x42),  Hyper_L (0xcf)
mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce)
mod5        ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)

A ted uz staci pouzit klavesovou zkratku s Hyper na neco uzitecneho, takze do ~/.fluxbox/keys zapiseme treba:

Mod3 b :Exec xmessage -center -timeout 2  "$(/home/username/bin/bt)"
Mod3 i :Exec xmessage -center -timeout 5  "$(/home/lhc/username/show_ip_addrs)"

a jeste naplnime oba soubory a zapneme jim executable flag (chmod +x jmeno_souboru):
/home/username/bin/bt:

for bat in /sys/class/power_supply/BAT*; do
        cat "$bat"/energy_now | tr '\n' ' '
        echo -n 'from '
        cat "$bat"/energy_full | tr '\n' ' '
        echo -n '= '

        (
                cat "$bat"/energy_now | tr '\n' ' '
                echo -n '*100/'
                cat "$bat"/energy_full  | tr '\n' ' '
                #rounding
                echo '+0.005'
        ) | bc -l | sed 's/\([^.]\...\).*/\1 \%/'
done

Na ruznych notebookach muze byt informace o bateriich v ruznych adresarich, takze je nutne si prohlednout /sys/ a nahradit /sys/class/power_supply/ spravnou cestou.

/home/lhc/username/show_ip_addrs (na jeden radek):

/sbin/ifconfig | sed 's/        inet /#inet /;s/^\([^# ]\)/#@\1/' | tr '@\n' '\n#' | sed 's/^\([^:]*\)[^#]*#*/\1\t/; s/inet//; s/netmask.*//' | grep -v '^#'

Pak uz staci jenom zmacknout Hyper b (teda vlastne CapsLock b) a uprostred monitoru se na dve sekundy objevi informace o stavu akumulatoru. Misto prehistoricke xmessage se da samozrejme pouzit treba mnohem modernejsi notify-send, ale ten se neumi zobrazit doprostred monitoru (bacha, prijima timeout v milisekundach).

A pokud jste behem cteni nezapomneli, proc jsem s vyzkumem alternativnich vyuziti CapsLocku zacal, je vam asi jasne, ze klavesova zkratka Hyper a zustava neobsazena. Technicky samozrejme nic nebrani tomu namapovat na ni shozeni Firefoxe (aspon by se restartoval driv, nez stihne vyzrat celou RAM). Hlavne si nezapomente namapovat nejakou dulezitou funkci na Hyper Super Shift Ctrl Alt H. Jiste to ocenite, az ji budete potrebovat zmacknout mene, nez trema rukama :-).

Poznamka: pokud by se jednalo pouze o klavesnici IBM Model M, stacilo by namapovat na CapsLock Super_L timto prikazem: “setxkbmap -option caps:super”, ale pracuji na vice pocitacich s ruznymi klavesnicemi, takze chci vyuzit najednou Hyper i Super na klavesnicich bez numerickeho bloku.

Posted by zelenohlav in Linux, 2 comments

Klavesnicova makra podruhe – lokalni

Diky Jendove komentari pod jak-automaticky-vkladat-text-i-kdyz-se-nekdo-snazil-aby-to-neslo jsem objevil xdotool. Precetl jsem si manualovou stranku a dostal par napadu. A o tech, ktere se mi zatim osvedcily bude tento clanek.

UNIXova graficka nadstavba X-window ma sice nekolik schranek (clipboardu), ale pokud je chcete normalne pouzivat – treba oznacit levym tlacitkem text v browseru a vlozit ho prostrednim tlacitkem do textoveho editoru otevreneho v terminalu, nebo naopak – je nutne system nakonfigurovat tak, aby se choval, jakoby mel schranku jednu. Jenomze obcas by se hodilo vice schranek u kterych si clovek muze sam vybrat, do ktere co ulozi. Staci se snazit nekomu poslat mail, ve kterem je cast textu z jineho mailu. Ctu zdrojovy mail, oznacim text, zavru zdrojovy mail, otevru novy mail, chce to po me adresu, zjistim adresu, chci ji oznacit a tim prichazim o puvodni text. Ne, ze by to byla neresitelna situace, ale zbytecny opruz to je.

Nekdo mozna namitne, ze mam mit adresar s maily primo v klientovi … ale tak muj mozek nefunguje. Ne, opravdu nevim, jestli jsem si toho cloveka ulozil pod jmenem, prijmenim, nebo prezdivkou. Pripadne pod kterou prezdivkou. A pokud je to firma, tak si dost mozna pamatuju jenom jednu vec, kterou jsem tam kupoval a nic jineho. Takze by ten mailovy klient musel umet prohledavat bloky textovych dat podle (nekdy i vice) klicovych slov a ve vybranem textu pak hledat mailove adresy. Ne, ze by to principialne neslo, ale nic takoveho jsem nikde nevidel, takze mam svuj program na adresar. Adresu oznacim levym tlacitkam, prejedu do terminalu (nebo jen prehodim screen) s mailovym klientem a vkladam prostrednim tlacitkem.

Obcas se take stava, ze clovek potrebuje posbirat data z vice mist a vlozit je do jednoho. Treba prijde URL rozlamana na vice radek od nekoho, kdo ma mail na seznamu. Nebo je potreba vykopirovat z nejakeho clanku na webu jenom to dulezite a ne kecy okolo.

Cim to ovladat?

Zadani je jasne a ted nastava otazka cim to ovladat. Samozrejme by slo pouzit zvlastni klavesove zkratky, ale pak je problem pri vkladani textu, protoze text prichazi jako z klavesnice, takze je nutne pockat, nez uzivatel pusti vsechny modifikatory (Control, Alt, Shift, Tucnak …), jinak se mohou stat nejruznejsi veci. Samozrejme by slo poslat text z vedlejsiho pocitace pres inputattach (klavesnicova makra poprve), ale jak ho pohodlne dostat tam? Taky by slo poslat nejake nevyuzivane scankody, ale na bezne klavesnici se par nevyuzivanych klaves najde.

Kdysi jsem psaval cisla zasadne na numericke klavesnici. Jenomze pak prisly vykonne notebooky, vice cestovani a numericka klavesnice najednou nebyla k dispozici, takze nezbylo, nez se naucit psat cisla na hornim radku klavesnice. Po par letech uz mi to ani neprislo a od te doby je numericky blok me klavesnice zcela nevyuzit. Precijen je zbytecne daleko na to, aby tam clovek presouval ruku, kdyz chce napsat cislo a zdrzuje to. Jeste se da pouzit Ctrl a numericky +/- na zmenu velikosti textu v browseru, ale to uz funguje i s normalnim + a -, jak se mi povedlo zjistit po ziskani noveho notebooka, ktery uz numericky blok ani neemuluje pres Fn. Tim ziskavame klavesy 0-9 na 10 schranek a nekolik dalsich okolo.

Jak to ovladat?

Zkusime tedy vymyslet intuitivni ovladani.

Do schranky je potreba ulozit a pak z ni cist. Prepinani modu je pakarna, protoze si clovek musi pamatovat v jakem je modu (a samozrejem VIM ktery textovy editor je nejlepsi, ale i tak je lepsi se tomu vyhnout, kdyz to jde). Slo by rozdelit klavesy na 0-4 a 5-9, ale to by bylo intuitivni jak brainfuck. Takze zbyvaji tri rozumne varianty: vkladat bez modifikatoru a cist s modifikatorem, nebo opacne, pripade delat vse bez modifikatoru a hadat, co chce uzivatel udelat. Systemy, ktere hadaji, co chce uzivatel udelat vetsinou funguji blbe a clovek se kvuli nim nauci sprosta slova v mnoha cizich jazycich. Dalo by se predpokladat, ze s prazdnou mysi schrankou se ma extra schranka vypsat a s plnou se ma text prekopirovat z mysi do extra schranky. Ale na rovinu – mazete po pouziti obsah schranky? Asi ne, to by byl opruz navic. Delat si zivot tezsi neplanuju, takze posladni moznost pada.

Vypisovat obsah schranky modifikatorem znamena, ze modifikator modifikuje zacatek vypisu. To je sice jakesi technicke omezeni, ktere by mozna slo obejit lepe, nez rychlym uvolnenim modifikatoru v kombinaci s vlozenim cekani pred zacatek vypisu, ale neni to jedina nevyhoda. Druha nevyhoda je vkladani bez modifikatoru. Je sice rychle, ale obcas clovek hrabne po prave sipce, nebo PgUp/PgDn a strefi se i na numerickou klavesnici a prepise si schranku, aniz by si to uvedomil. Na to jsem prisel tim tezsim zpusobem (nejdriv mi to pripadalo intuitivnejsi).

Tim zbyva jedina varianta: prepis schranky mysi do extra schranky: modifikator + cislo na numericke klavesnici (pouzivam Shift), vypsani extra schranky: cislo na numericke klavesnici.

Tim se resi i sber dat po dokumentu, ale kdo si ma pamatovat kterou schranku pouzil naposledy. Takze by se hodila jeste funkce na pridani do schranky. Rozhodl jsem se to nekomplitovat a vytvorit jedenactou extra schranku, do ktere pujde pridavat z mysi schranky. Klavesa tecka na numericke klavesnici ji smaze (krome tecky to je i Delete, ale asi jste ji tak v tomto tisicileti nepouzili), klavesa plus prida (to je docela intuitivni) a klavesa lomitko vypise obsah (protoze minus a hvezdicku uz mam zabranou). Jeste me napadlo, ze by plus se shiftem a altem mohl pridat mezeru, nebo konec radku a teprve pak dalsi data, ale ukazalo se, ze to prilis nepouzivam.

Kdo sezral minus a hvezdicku? Numerickym minusem vkladam obsah schranky, kdyz nechci sahat az na mys a hvezdickou vkladam totez, jen s odstranenou diakritikou (to se obcas hodi). Vyhoda je ta, ze se do grafickych programu text vlozi tam, kde je prave textovy kurzor (stejne, jako do terminalovych pri beznem vkladani prostrednim tlacitkem) a neni treba peclive pozicovat mysi kurzor tam, kde uz je textovy kurzor.

Implementoval jsem toho vice, ale toto jsou veci, ktere od okamziku implementace pouzivam temer denne a prijdou mi kulervouci.

Implementace

Je potreba rozlisit, jestli cisla a dalsi znaky prichazi z alfanumericke casti klavesnice, nebo z numerickeho bloku. To lze vyresit tak, ze vytvorime zkratku na scankod klavesnice a ne na prichazejici znak. Scankody zmacknutych klaves (a dalsich eventu) ukaze program xev.

Navod je specificky pro windowmanager Fluxbox, ktery pouzivam. Pokud pouzivate jiny, ceka vas googleni a cteni manualovych stranek, protoze vlastni klavesove zkratky jsem v zadnem jinem windowmanageru asi nikdy nekonfiguroval (mozna v minulem tisicileti ve fvwm2 a WindowMakeru, ale v takovem pripade uz jsem zapomnel jak). Ve Fluxboxku to je zcela jednoduche. Staci otevrit soubor ~/.fluxbox/keys a pridat par radek:

#Numericke 0-9
Shift 79 :Exec /home/username/bin/xtraclip_mem 79
Shift 80 :Exec /home/username/bin/xtraclip_mem 80
Shift 81 :Exec /home/username/bin/xtraclip_mem 81
Shift 83 :Exec /home/username/bin/xtraclip_mem 83
Shift 84 :Exec /home/username/bin/xtraclip_mem 84
Shift 85 :Exec /home/username/bin/xtraclip_mem 85
Shift 87 :Exec /home/username/bin/xtraclip_mem 87
Shift 88 :Exec /home/username/bin/xtraclip_mem 88
Shift 89 :Exec /home/username/bin/xtraclip_mem 89
Shift 90 :Exec /home/username/bin/xtraclip_mem 90
79 :Exec /home/username/bin/xtraclip_mem_out 79
80 :Exec /home/username/bin/xtraclip_mem_out 80
81 :Exec /home/username/bin/xtraclip_mem_out 81
83 :Exec /home/username/bin/xtraclip_mem_out 83
84 :Exec /home/username/bin/xtraclip_mem_out 84
85 :Exec /home/username/bin/xtraclip_mem_out 85
87 :Exec /home/username/bin/xtraclip_mem_out 87
88 :Exec /home/username/bin/xtraclip_mem_out 88
89 :Exec /home/username/bin/xtraclip_mem_out 89
90 :Exec /home/username/bin/xtraclip_mem_out 90

#Numericky -
82 :Exec /home/username/bin/mouse_copy
#Numericka *
63 :Exec /home/username/bin/mouse_copy_uncs

#Numericky +
86 :Exec /home/username/bin/xtraclip_add
#Numericka .
91 :Exec /home/username/bin/xtraclip_del
#Numericke /
106 :Exec /home/username/bin/xtraclip_out

Misto username si samozrejme dejte svuj username. Asi se to vyrovna i jen se jmenem programu, pokud mate svuj “$HOME”/bin v ceste, ale proc to delat zavisle na promennych prostredi.

xtraclip_mem:

xclip -out > ~/extra_clipboard/"$1"

xtraclip_mem_out:

xdotool type -- "`cat ~/extra_clipboard/"$1"`"

mouse_copy:

xdotool type -- "`xclip -out`"

mouse_copy_uncs:

xdotool type -- "`xclip -out | cstocs utf8 ascii`"

xtraclip_del:

echo -n '' > ~/extra_clipboard/x

xtraclip_add:

xclip -out >> ~/extra_clipboard/x

xtraclip_out:

xdotool type -- "`cat ~/extra_clipboard/x`"

Jeste vytvorit adresar, kde budou v souborech ulozene nove clipboardy (ktere timpadem preziji i restart pocitace):

mkdir ~/extra_clipboard/

Pokud neco z toho nefunguje, jak ma, vlozte do skriptu pred xdotool sleep.

sleep 0.1

Pak uz staci v menu ve Fluxboxu dat reload config (nebo restartovat Fluxbox, nebo Xserver) a muzete se tesit z novych klavesovych zkratek. Nakonec – jak si myslite, ze se do tohoto clanku dostaly obsahy tech vsech souboru. Skutecne jsem nepreklikaval osmkrat sem a tam. Deset schranek je navykovejsich, nez opiaty.

EDIT: Zda se, ze jsem se unahlil s optimalizaci. Behem ladeni jsem na zacatku kazdeho z vyse uvedenych skriptu pouzival

sleep 0.5

a postupne jsem ho snizil az na 0.1 sekundy. Pak jsem presel na klavesove zkratky, ktere pri vypisovani nepouzivaji zadny modifikator, takze se sleep zdal byt zbytecnym a pri psani tohoto clanku byl vynechan. Samozrejme bez otestovani, protoze jsem si byl jist, ze tam uz je k nicemu.

Ukazuje se, ze tam k nicemu neni. V pripade, ze tam sleep neni, nevypise se prvni znak, protoze zjevne prijde drive, nez Key Release od klavesy, ktera akci spustila.

Posted by zelenohlav in Linux, 6 comments

Novinka: celoplastikove startovaci kabely!

Zacina zima, pro jistotu si koupim si startovaci kabely a pokud se mi v aute vybije baterka, tak snad nekoho ukecam, aby mi pomohl nastartovat. A navic mam jeste stovku baterku, co vyhazoval kamarad, ze uz mu nenastartuje jeho trilitrovy diesel, ta se mi sice nevejde pod haubnu, ale muzu ji nabit a dat do kufru. Kdyztak ji pripojim na kabely a nemusim ani nikoho shanet. A kdyz ji navic zapojim v aute na 12 voltu, tak se bude za jizdy i nabijet a nebudu ji muset tahat domu.

Tak nejak muze vypadat genialni napad cloveka, ktery treba i vi neco o elektrice, ale netusi, jaky scheissdreck se dneska bezne prodava.

Takze si to rozebereme. Pokud si koupite startovaci kabely, dostanete opravdu, ale opravdu tluste hadice. Tlustostenne plastove hadice, ktere maji uprostred tenky praminek medi. Nejsou uplne celoplastove, jak jsem napsal v titulku. Nejake 4mm^2 medi tam jsou. To je vhodny prurez tak na konstrukci prodluzovacky ke svarecce, ale bohuzel na tu stranu, co se dava do zasuvky a ne na tu, kde tece svareci proud.

Zde muzete takove kabely videt. Udelal jsem z nich kabely k nabijecce a jejich medene jadro je asi tak tluste, jako ten modry a bily drat, co vedou k banankum. Koupeno na benzince nekdy pred deseti lety.

Kabely z benzinky

Jak muze takovy podvod fungovat? Jednoduse. V navodu se pise, ze mate druheho nahodneho ridice ukecat, aby spojil svou baterku s vasi a stal tam s vami jako idiot nejmene ctvrt hodiny, nechal svoje auto zrat palivo na volnobeh a pak mate zkusit nastartovat. Pokud je vase baterka hodne vybita, ale ne uplne v haji, tak ma vyrazne mensi napeti, nez baterka nabijejiciho auta, takze dostane par amper a to ji trosku ozivi na to, aby byla nejaka sance na nastartovani. Jestli ovsem najdete nekoho, kdo tam s vami bude stat v mrazu ctvrt hodiny, zatimco uz davno ma byt nekde jinde. S baterkou v haji, nebo uplne bez baterky, se bud nestane nic, nebo kabely shori. Doslova. Medeny vodic se rozzhavi do zluta a prepali, za vyvinu velkeho mnozstvi dymu z plastove izolace.

To jsem takovy idiot, ze jsem si nevsiml, co kupuji? Nastesti ne. Na techto smesnych kabelech byly medene svorky/kleste na baterku, ktere neumim ziskat levneji, nez z techto kabelu.

Reseni je jednoduche – pouzit svorky ze smesnych kabelu a dat k nim poradne kabely. Treba 35mm^2, tedy kabely s temer 10x vetsim prurezem. Pocitejte ovsem s tim, ze pokud jsou svorky prevazne plastove jen s malymi kousky medi, bude se na ne blbe letovat.

Svorky z benzinky a medene kabely

Videt to na nich moc neni, co? To je proto, ze maji izolaci tlustou necely milimetr a ne sest milimetru. Taky uz neco zazily. Mimo jine i jeden tvrdy zkrat, kdy se trosku natavily (zkratoval se spatny starter). Zelenozluta izolacka na nich je proto, ze plastove krytky z klesti padaly.

Pri letovani nestaci 100W pistolova pajka, ani 75W klempirska odporova pajka. Je potreba pajene misto predehrat. Pouzil jsem pynovou pajku bez hrotu (s horakem), ale muzete pouzit jakykoliv horak, treba i na sporaku. Nebo plotynku elektrickeho sporaku. Bacha, kalafuna hori.

Detail pajeneho spoje

Pajeno dvakrat. Po tvrdem zkratu kleste prehorely, protoze jsou z jen asi 1mm tlusteho medeneho plechu, po sletovani funguji dale.

Tyhle kabely pripojite k autu, ktere sotva rozsviti obrysova svetla, na jejich druhy konec date samotnou nabitou baterku (nebo nenastartovane auto), otocite klickem a nastartujete na prvni pokus. Bez baterky nastartujete take, ale pokud mate novejsi auto, nez Trabanta, nebo Wartburga, tak napetove spicky zpusobene pomalosti regulace alternatoru mohou pri jizde bez baterky odpalit nejakou elektroniku. Tedy v tom Trabantu taky, ale domu dojedete a nahradni radio (pokud neco takoveho vubec provozujete) sezenete v zastavarne za stovku, mozna i s kusem palubni desky a stopami pervitinu. S odpalenou ridici jednotkou dnesniho auta moc daleko nedojedete a za jeji vymenu date mnohem vic, nez za celeho Trabanta i s jeho generalkou.

Jeste par technickych informaci.

Proc se baterka v kufru nenabije?

Protoze je pripojena dlouhymi tenkymi draty (treba 4 metry a 2.5 mm^2) k baterce se stejnym napetim. Takze ubytek napeti na odporu tech dratu zpusobi, ze se baterka v kufru zacne trochu nabijet az v dobe, kdy hlavni baterka v aute bude uplne nabita. Potrebujete-li nabijet druhou baterku o stejnem napeti, nejlepsi reseni je menic.

Proc se baterka v mrazu vybije?

Ona se nevybije, ale poklesne jeji vyuzitelna kapacita, takze jakoby startujete treba z polovicni baterky. K tomu klade vetsi odpor olej v motoru, nemate-li dry sump (coz maji asi jen zavodni motory), nebo dvoutakta. I olej v prevodovce ztuhne. To je mozne obejit vyslapnutim spojky pri startu. Diskusi o tom, jestli to je pro auto bezpecne, nebo ne, je plny internet. Muzete se zapojit. Argument pro nevyslapavani spojky je, ze se nici spojkove lozisko. Trabant a Wartburg s tim problem nema, u ostatnich znacek nemuzu slouzit.

O tom, jak to funguje za ruznych teplot v akumulatoru si muzete precist treba tady (anglicky): why-car-batteries-perform-poorly-in-cold-weather, hledejte “Temperature-Dependent Properties of a Battery”. Clanek se tyka lithiovych akumulatoru, ale fyzika oloveneho akumulatoru je v tomhle velmi podobna.

A tu stovku baterku do Trabanta i Wartburga s troskou snahy nacpete, jenom neprisroubujete originalnimi uchyty. Testovano na lidech.

Posted by zelenohlav in Elektronika, 2 comments

Nabijecka olovenych baterii, ktera snese odpojeni zdroje

Nabijecka

Mate velkou olovenou baterku (at uz startovaci v aute, nebo gelovku, ze ktere napajite treba vrtacku z minuleho prospevku) a obcas ji potrebujete nabit. Nekdo nabiji prehistorickou nabijeckou, ve ktere je jenom transformator a diody (tezko rict, jak presne dodrzi napeti, zvlast kdyz v zasuvce muze byt 220V stejne jako 241V), nekdo z trafa pres zarovku, nekdo pochybnou nabijeckou za par stovek z nejakeho supermarketu. Vsechny tyhle varianty se musi hlidat. Zapomenete na tom baterku, odjedete na dva dny pryc a vyvari vam vsechen elektrolyt. Nebo ma regulaci napeti, tohle neudela, ale nejaky chytrak ji vytahne ze zasuvky, protoze si chce zapnout vrtacku, nerekne vam o tom a za dva tydny je baterka na vyhozeni.

Tato jednoducha nabijecka resi vsechny zminene problemy a nekolik navic.

Schema

Napajet se da z jakehokoliv zdroje od 14 do 39V, ktery da alespon 50W. Treba ze zdroje od notebooka, ktery stal v roce 1997 80 tisic a v roce 2012 navstivil popelnici, prestoze stale fungoval. Ze solarniho panelu, ze dvou gelovych 12V akumulatoru v serii a podobne. 24V transformator usmerneny gratzem je na hrane – zalezi na napeti v siti a rezerve ve vinuti (typicky se pridava 5%).

Omezuje proud na 3A (kdyz jde hodne do zkratu, tak spise ke 4A, ale to se bud rychle dobije, nebo je baterka stejne na vyhozeni). Pro automobilove baterky (40-100Ah) a notebookove zdroje (50-90W) idealni.

V pripade odpojeni napajeni se nestane nic. Baterka se vybiji necelym 1mA pres odpor zpetne vazby a to prezije pres 5 mesicu (40Ah – v realu ma samovybijeni, takze ji tam nechat radeji jen 2-3 mesice).

Navic to moc nehreje, takze staci maly chladic.

Obvod stabilizuje napeti na 14V, ale podle potreby jde nastavit na jina napeti zmenou odporu 12k8. 13.8V pro ochranu kladne elektrody v akumulatoru. 14.4V pro rychlejsi a uplne nabiti akumulatoru, 7V pro 6V akumulator, 21V, nebo 28V pro 18V a 24V akumulatory (to uz bude typicky potrebovat napajet ze dvou zdroju od notebooku v serii), nebo jakekoliv jine pri pouziti jako laboratorni zdroj.

Mozne upravy:
– vyssi napeti na vstupu – az do 63V pri pouziti LM2576HVT-ADJ, ktery je ale 3x drazsi. Nezapomente na maximalni napeti vstupnich kondenzatoru.
– vyssi proud – moznost pridat FET tu je, do nejakych 20V na vstupu je pomerne jednoducha, ale prijdete o proudove omezeni, takze by bylo nutne pridat i proudove omezeni, coz celkove zkomplikuje obvod 3x az 4x.

Nevyhody:
– oloveny akumulator preferuje pulsujici napeti kvuli sulfataci, tento zdroj dava stejnosmerne. Na obcasne nabiti to nevadi.

Inspirace:
http://atrey.karlin.mff.cuni.cz/~metan/?page=electronics&spage=lm2576

A rovnou draze ziskana odpoved na ocekavanou otazku:
Nemuzu pouzit neco podobneho za dve stovky z Ciny?
Muzete to zkusit. Ale treba tento zdroj:
DCDC 60V 15A
mel v popisu, ze omezuje maximalni proud, na desce ma veliky SMD odpor 0.01Ω, ktery nemuze byt k nicemu jinemu, nez ke snimani protekajiciho proudu, ale po pripojeni k akumulatoru se z nej zakourilo rychleji, nez bylo mozne zareagovat.

UPOZORNENI:
S trochou stesti nepracujete s nebezpecnym napetim (pokud jste pouzili zdroj od notebooka, nebo z jineho zarizeni), ale zkratovana autobaterka dokaze dat proudy, pri kterych hori draty, sviti sroubovaky a kapicky roztaveneho kovu letaji vzduchem. Zakaz noseni naramku, prstynku a retizku v akumulatorovnach neni zbytecna buzerace.

Posted by zelenohlav in Nezarazene, 0 comments
Ceske cislice slovy

Ceske cislice slovy

Potreboval jsem automatizovat generovani slozenky. Formular slozenky vypada, ze byl navrzen v dobe, kdy byl Wattuv rozteznik horkou novinkou. Nektere informace obsahuje snad i trikrat, radky v ruznych sloupcich nejsou zarovnane, nelze vytisknout cely najednou, ale je potreba se strefit tiskarnou do predtisteneho papiru a navic vyzaduje castku napsanou slovy.

Skript cisla_cz umi popsat slovy kazde cele cislo od nuly do 999999. Rozsireni na vyssi cisla by bylo pomerne jednoduche, ale miliony jsem slozenkou posilat jeste nevidel. Je napsan v BASHi, ale v zasade jde jednoduse prepsat do jakehokoliv imperativniho jazyka, ktery podporuje ridke pole (sparse array). Staci nahradit retezcove operace se sed-em aritmetikou.

Popis funkce:

Jeho jedinym parametrem je cislo. Pokud najde ve vstupu jine znaky, nez 0-9, stezuje si, ze to neni cislo. To plati i pro zaporna, realna a komplexni cisla, ktera jsem na slozence resit nepotreboval. Zde je prostor pro vylepseni.

Je-li na vstupu 0, vypise nula.

Pro cisla vyssi, nez 9999 urizne posledni tri cislice, rekurzivne zavola skript na zbytek cislic a vypise za to tisic. Dale posle jen posledni tri cislice.

Pote vzdy porovna zbytek s cislem 999, 99 a 9, aby se nesnazil odecitat nulu, odecte prvni cislici, vyhleda ji v poli s prislusnym radem a vypise retezec. Kdyz dojde k nule, skonci.

Cele to bylo napsane bez smycky, protoze jsem ocekaval vice problemu s ceskym jazykem. Nakonec se ukazalo, ze by to slo napsat i ve smycce, ale to uz to bylo hotove a nechtelo se mi to psat znovu jinak.

Sekce zpracovavajici cisla mezi 999 a 9999 je tam kvuli spravnym tvarum slova tisic. Jsou i lide, kteri rikaji treba tricet dva tisice, misto tricet dva tisic, ale zda se, ze spravne jsou oba tvary.

A ted si muzete uzivat generovani cisel.

Posted by zelenohlav in Linux, 2 comments

Teple jidlo na ceste bez hledani restaurace a cekani na obsluhu

Jedete v aute se spalovacim motorem uz druhou stovku kilometru a dostavate hlad. Chtelo by to neco tepleho, ale nechce se vam stravit hodinu hledanim restaurace, cekanim na obsluhu, cekanim na pripravu jidla a cekanim na uctenku? Placeni za jidlo, ktera hodnotite jako: “v pripade hladu pozivatelne” take nepatri k vasim oblibenym cinnostem? Jedno reseni existuje.

Nektera jidla vyzaduji jen jednoduchou tepelnou upravu. Vhodnou dobu ohrivat a pak snist. Ja varit neumim, takze se moje zkusenosti omezuji na konzervy a parky, nicmene patrne by tak slo upravit i prirodni kureci rizek, rybu (soude dle slavneho receptu na rybu v mycce, kde je dosazitelna vyrazne nizsi teplota), nebo treba zapect brambory s cuketou (pokud si doma pripravite zeleninu a marinadu). Naopak caj, nebo instantni polevka jsou problem, jak pochopite za chvilku.

Parky zabalite do asi tri vrstev alobalu, pridratujete na vyfukove parohy spalovaciho motoru, ujedete nejakych 20-30km, sundate, rozbalite a snite.

Par minut na pridratovani, ctvrthodinka na jidlo a muzete pokracovat v jizde. Parky nicim nesmrdi a chutnaji vyborne, protoze prostor pod haubnou je vetrany a vyfukove plyny jdou za auto, ne na parky. Stejne tak jde pridratovat i konzerva, ale protoze se dotyka jen malou plochou, trva ohrev vyrazne dele. Maso se bude patrne upravovat podobne dlouho, jako parky.

Je zjevne, ze pridratovat na motor neco v cem ohrejete vodu bude ponekud tezsi. Nadoba by muzela byt placata (aby se dotykala dostatecne velkou plochou), kovova, uzaviratelna s uzaverem, ktery se neuvolni vibraceni, nenatrena (takze asi nerez, nebo hlinik) a nejlepe s tlakovou pojistkou, abyste po otevreni nezjistili, ze uvnitr je 6 atmosfer a voda tepla 160 stupnu, ktere se chce do vaseho obliceje. Nejlepsi by byla asi vhodne seslapnuta nerezova cutora s privarenou koncovkou na metr silikonove hadicky, ktera by zustala otevrena celou dobu vareni. Ale to uz je vyrazne komplikovanejsi projekt, nez zabalit neco do alobalu a pridratovat to.

Rada pro elektromobilisty: nedratujte parky na elektromotor, radsi je uvarte na plynovem varici behem nabijeni. Pro milovniky extremni kuchyne se da take varit primym pruchodem elektrickeho proudu, ale krome zjevnych a ocekavanych upozorneni na moznost urazu elektrickym proudem bych si take dovolil upozornit, ze ohrev parku stejnosmernym proudem z baterie zpusobi elektrolyzu parku (narozdil od jeho pripojeni do stridave site). Produkty elektrolyzy parku nemusi patrit k nejzdravejsim.

Posted by zelenohlav in Foodhacking, 0 comments

Klavesnicova makra poprve

Tento prispevek navazuje na jak automaticky vkladat text i kdyz se nekdo snazil aby to neslo a odkazuje na SW a HW v nem zmineny.

Klavesnicova makra si predstavuji jako funkce, kterym jdou dat parametry a podle nich se vygeneruje vlozena sekvence uhozu na klavesnici. V nejjednodussim pripade se se parametry dosadi nekam do textu, ktery se posle. Ve slozitejsich pripadech se muze treba podle zadane mailove adresy prijemce rovnou prednastavit osloveni a podpis a podobne pokrocilejsi funkce.

Zatim mam napsana jen hloupa makra: serkbd_in_loop.py. Cely HW a SW na strane prijemce zustava stejny. Staci spustit program v pythonu, jako root* a pak mackat klavesy. Klavesou q se program ukonci, ostatni klavesy zpusobi pokus o nalezeni souboru s jednopismennym nazvem v aktualnim adresari a poslani jeho obsahu.

Pismena jsou samozrejme zadavana na klavesnici druheho pocitace a retezce znaku definovane v souborech prijdou do pocitace prijimaciho.

Takze kdyz vytvorim textovy soubor se jmenem u a s obsahem uname -a, staci na klavesnici ovladajicicho pocitace zmacknout u a na ovladanem pocitaci se napise uname -a (at uz bude focus kdekoliv – do terminalu, do mailu, jako by to bylo napsano primo na klavesnici).

V UNIXu neni prilis prakticke vytvares soubory se jmeny *, nebo – a vytvorit soubor se jmenem / by nastesti nemelo jit vubec. Takze pro seriozni pouziti by se hodil jiny zpusob ukladani maker. Tohle je spise proof of concept.

*) Kdyz poustite program jako root, ziska kontrolu nad celym vasim pocitacem. Takze se hodi alespon trochu rozumet tomu, co v nem je. Mohl jsem tam schovat neco zakerneho (neudelal jsem to, ale to bych sem napsal i v pripade, ze bych to udelal, to da rozum). Nekdo mohl odchytit packety po ceste na siti a zmenit obsah. Nakonec nejjednodussi zpusob je ukrast muj text a program (ten se krade blbe, ma licenci GPL :-)), dat oboje nekam na freeweb a do programu pridat nejaky nechteny bonus.

Happy hacking!

P.S. odmitam prijmout zodpovednost, za skody zpusobene makry. Takze pokud si vytvorite makra s hesly a odkazy na sve oblibene pornostranky a povede se vam je omylem vlozit do pracovniho emailu a diky enteru na konci makra rovnou i odeslat, muzete si za to sami, ja vas varoval.

Posted by zelenohlav in Linux, 2 comments

Jak automaticky vkladat text i kdyz se nekdo snazil, aby to neslo

Clovek obcas narazi na program, nebo webovou stranku, kde si nekdo dal tu praci, se znemoznenim vkladani textu prostrednim tlacitkem mysi. Nekdy se da text vlozit klavesovymi zkratkami, nekdy pres menu, nekdy vubec a vzdy je cloveka nedustojne hledat jakym zpusoben (a jestli vubec) to tentokrat pujde.

V Linuxu nastesti existuje moznost pripojit ps/2 klavesnici po seriovem portu a ta jde vyuzit i zajimavejsim zpusobem. Scankody ps/2 klavesnice muze totiz posilat druhy pocitac. Oba pocitace musi mit seriovy port (konvertor do USB funguje, takze staci USB). Seriove porty se propoji nullmodemem (to je kabel, kde je prekrizeny TX a RX). Zapojeni kabelu je na Wikipedii, nebo se da bezne koupit. A to je cely HW, vic toho neni potreba delat a obejdete se bez pajky a programatoru mikrokontroleru.

Na pocitaci, ktery ma ziskat falesnou klavesnici je potreba pustit jako root:

inputattach --baud 19200 --ps2serkbd /dev/ttyUSB0

a na pocitaci, ktery posila data lze pouzit napriklad serialkbd.py.

Puvodni klavesnice samozrejme funguje dal a dokonce ovlivnuje chovani tehle falesne, takze napriklad zmacknuti shiftu zmeni mala pismena na velka (az do prvniho pusteni shiftu tou falesnou klavesnici).

V pripade, ze bude program pusten pres ssh z terminalu na stejnem pocitaci, jako kam je vkladan text, pak doporucuji vlozit pred program nekolikasekundove cekani, aby bylo dost casu prepnout focus do zadaneho mista:

sleep 3; serialkbd.py datovy_soubor

alternativne by slo treba nakonfigurovat aby se na nejakou klavesovou zkratku spustilo ssh, ktere prekopiruje zvolena data na druhy pocitac a spusti vlozeni po seriovem portu.

Zda se, ze dnes uz jde na ebayi koupit prevodnik z ps/2 na seriovy port – staci hledat ‘ps2 serial arduino’. Temer s jistotou bude mit TTL vystupy, takze bude nutne zkonvertovat napetove urovne MAX232 na +-12V, ale pak by sla pripojit bezna klavesnice na seriovy port pocitace, ktery by zpracovaval psany text a posilal ho dal. To by umoznilo implementovat makra, pridat klavesy (treba vyuzitim normalni klavesnice pripojene k tomu ridicimu pocitaci, jeho paralelniho portu, USB, apod.), nebo treba nahravat psany text a umoznit ho cast znovu prehrat. To se obcas hodi kdyz se povede neco napsat do spatneho okna a nebo kdyz nekdo implementoval na webove strance komentarovy formular tak blbe, ze pri jakekoliv chybe text zmizi a neda se k nemu vratit ani pres tlacitko zpet v browseru.

Jeste zodpovim par predpokladanych dotazu:

Otazka: Musi tam byt druhy pocitac, neslo by spojit tim nullmodemem dva seriove porty na tom samem pocitaci?

Odpoved: Slo.

Otazka: A musi tam vubec byt ten HW, neslo by to nejak udelat pres virtualni porty?

Odpoved: Urcite by to nejak slo, ale z hlavy nevim jak. Treba se k tomu nekdy dostanu, prijdu na to a pridam to sem.

Otazka: To jsi delal jenom kvuli par blbym programum, ktere znemoznuji vkladani mysi?

Odpoved: Chtel bych klavesnici s makry, ktera si budu moci sam programovat. Zkonvertovat ps/2 na seriovy port a zpracovavat nezavislym pocitacem stream dat na seriovem portu mi prijde nejjednodussi. Umozni to nahravat provoz na klavesnici a cast ho znovu prehrat (treba kdyz clovek neco napise do spatneho okna) a navic to muze nahradit i KVM pro praci na vice pocitacich.

Otazka: Ma to smysl? Makra umi nektere herni klavesnice.

Odpoved: Vsechny herni klavesnice, ktere jsem zatim videl (kamarad jich mel plnou skrin) vyzadovaly k programovani maker nejaky program pro Windows, coz je system, ktery nemam, neumim s nim a navic by byl pekny opruz kvuli kazdemu programovani makra prehazovat klavesnici mezi pocitaci. Krome toho je otazka co vsechno tam jde naprogramovat. Moje reseni umoznuje naprogramovat v zasade cokoliv, co jde napsat v C, pythonu, nebo jinem jazyce, ktery lze pustit na pocitaci se dvema seriovymi porty. Tim pocitacem muze byt klidne treba arduino, nebo Atmega8 zabudovana ve fyzicke klavesnici.

Otazka: Ma to smysl? KVM nahradi treba synergy a neni nutne tahat seriove kabely.

Odpoved: Je rozdil precist si manual k synergy, zkusit ho na pet minut a pouzivat ho. Ten program (informace stara asi 4 roky, od te doby jsem ho nezkousel) asi tak jednou za hodinu udela nejakou pitomost. To je dost malo na to, aby se to dobre debuggovalo a prilis casto na to, aby to clovek nechtel rozslapat a prohodit oknem. Problemy pretrvavaly i kdyz synergy dostalo vlastni sitove karty a vlastni prekrizeny ethernetovy kabel.

Otazka: Kdyz to pouziju, jako KVM, budu s tim moci nastavovat i BIOS a bootloader?

Odpoved: Ne. Tohle zacne fungovat, az se pod uzivatelem root pusti inputattach. Ten se muze pustit i automaticky, ale aby to fungovalo drive, nez nabehne jadro, bylo by nutne zkonstruovat HW, ktery by ze serioveho portu delal zpet ps/2. S nejakym mikrokontrolerem by to nemelo byt tezke.

Otazka: Muj Linux nema inputattach, kde he sezenu?

Odpoved: Na Debianu je v balicku inputattach, na Fedore to je v balicku linuxconsoletools, na dalsich distribucich doporucuji hledat googlem jmeno distribuce a inputattach, nebo vyuzit nejaky distribucni tool pro hledani balicku.

Otazka: Chci tam doplnit klavesu, nasel jsem nejake scankody ps/2 klavesnice a dela to uplne nesmysly.

Odpoved: Existuji dve mnoziny ps/2 scancodu. inputattach zjevne pouziva set2. V poli keyboard jsou jednotlive polozky serazene podle jejich ascii kodu. Co se stane s unicode znaky netusim, ale python ma podporu unicode, takze predpokladam, ze v nem bude jednoduchy zpusob, jak projit cele unicode znaky v retezci i kdyby to nebyl ten, ktery jsem pouzil. Pak je otazka, jestli prodlouzit pole, nebo to napsat jinak.

Otazka: Bude mi to fungovat na Windows? Treba v cygwinu?

Odpoved: Na prijimaci strane temer jiste ne. Ale treba nekdo portoval inputattach i pro Windows. Na vysilaci strane (serialkbd.py) bude patrne nutne upravit nejake systemove veci (jmena seriovych portu, apod.), pripadne se postarat o konce radku a asi by to fungovat melo. Python je multiplatformni, takze clovek, ktery ma zkusenosti s programovanim v pythonu pro Windows by to podle meho nazoru mel bez problemu rozchodit. Nicmene moje zkusenosti s Microsoftimi operacnimi systemy konci u turbopascalu a qbasicu nekdy v minulem mileniu.

Posted by zelenohlav in Linux, 3 comments

Umeni improvizace – hraci kostka

Vetsinou chcete dosahnout cile a neni az tak dulezite jak, ale spis kdy, kde, nebo za kolik. Casto pomuze se nad problemem zamyslet.

Co udelate, kdyz zjistite, ze k deskove hre, kterou se prave chystate hrat s prateli, potrebujete hraci kostku a prave ta vam chybi?

Muzete zrusit hru.

Nebo dojit kostku koupit. V centru mesta par metru od prislusneho obchodu v pracovni den ve tri odpoledne to bude asi nejlepsi moznost. Jenomze tou dobou jste asi v praci a vasi pratele taky. Nez se v noci ze soboty na nedeli vratite taxikem (nebo jste nic nepili, takze muzete i vlastnim autem?) doprostred Vysociny z nejblizsiho non-stop obchodu s hrami, budou vasi pratele patrne jiz spat a ucet za taxika presahne cenu zpatecni letenky do New Yorku.

Ve skole jsme pouzivali obycejnou sestihrannou tuzku, na ktere byla po obvodu napsana cisla a kutalelo se s ni. Ale dnes je k videni dost kulatych tuzek a take dost reklamnich propisek, takze zustava otazkou, jestli nejakou doma najdete.

Muzete zkusit vyrezat kostku z kusu fosny a pokreslit ji tuzkou. Pokud mate sverak, pilku a kus fosny, jde to i za pet minut. S rozbrusovackou ziskate kostku z ocelove tyce ctvercoveho prurezu jeste rychleji. Otazkou je, jak nahodne vysledky bude davat – to zavisi na presnosti vasi prace.

No a tim jsme vycerpali vsechny rozumne moznosti. Nebo ne?

Pri hodu kostkou chcete generovat cisla 1 az 6. Pri hodu minci generujete panna a orel, tedy 1 a 0. To je dost malo. Ale zijeme v digitalnim veku a temer kazdy uz vi, ze vsechna cisla jdou vyjadrit z jednicek a nul. Vezmene tri ruzne mince. Seradme je tak, aby si to vsichni hraci zapamatovali (treba od nejmensi od nejvetsi). Tri mince predstavuji tri bity a do trech bitu zakodujete cisla 0 az 7 (000, 001, 010, 011, 100, 101, 110, 111). A co udelame s nulou a sedmickou? Muzeme si treba hodit znovu.

A proc nezakodujeme jednicku, jako 000, dvojku 001 … sestku 101? Klidne muzeme, je to preci uplne jedno.

A to jako vsichni u stolu musi umet pocitat s dvojkovou soustavou? Nic na tom neni, ale nemusi. Staci na zacatku nakreslit tabulku a pak cist hodnoty z tabulky.

Dalsi moznost, kterou jsem v takovem pripade pouzil ja, je naprogramovat kratky skript v BASHi, coz je shell, ktery najdete prakticky na kazdem pocitaci s Linuxem, a na mnoha jinych UNIXu vcetne OSX a Androidu. Staci pustit tento skript:

 while true; do echo $((RANDOM % 6 + 1)); read; done 

a pak uz jenom mackat enter. Odchazi se Ctrl-C. Snazite-li se skriptu porozumnet, prikaz read; je tam proto, ze ceka na enter, nactena hodnota se nikde nepouziva. Jednicka se pricita proto, aby cisla byla 1-6 a ne 0-5 a znak % je zbytek po deleni.

Uzijte si hru.

Posted by zelenohlav in Ekonomie, 2 comments