Posts tagged with “LUA

23. 02. 2013

Osm (Awesome 3.5 současně se 3.4)

Docela dlouho používám Awesome a tak sem chtěl přirozeně vědět, k čemu (jesli vůbec) mi bude nová verse. Na Debianu bohužel nic zbalíkovanýho není, ale to mi až zas tak úplně nevadí, protože chci novou verzi vyzkoušet, asi i zmigrovat konfy a možná i používat. Takže buildit samička.

Tak jaká? Asi vás nemine instalace par balíčů xcb-blablabla-dev lua-dev lua-lgi dbus-dev atd. Pak make atd. Nic zvláštního. Zkompilovat to není problém. Problém je to spustit. Jako vždycky, může to bejt specifický pro Debian. Jen do mě.

Asi sem idiot, ale nejsem sto přinutit cmake udělat prefix tak, aby fungoval, takže výsledek je takovej, že když awesome chcete pustit, tak hledá Lua knihovny uplně jinde, než v systému jsou. Docela dlouho sem laboroval s LUA_PATH a to je vlastně důvod proč tohle píšu. Možná se to někomu bude hodit.

  • zkopírujem starý a nahrubo pomergujem konfiguraky:

    cp ~/.config/awesome ~/.config/awesome35

    kdiff3 /etc/xdg/awesome/rc.lua ~/.config/awesome/rc.lua /opt/awesome-3.5/awesomerc.lua.in -o ~/.config/awesome35/rc.lua

  • přidáme deset deka xephyru, aby sme mohli jednoduše testovat za běhu…

    Xephyr -ac -br -noreset -screen 800x600 :1&

  • a teď na rozpálenou pánvičku jebněte celejch osm:

    export 'LUA_PATH=/opt/awesome-3.5/build/lib/?/init.lua;/opt/awesome-3.5/build/lib/?.lua;;'; DISPLAY=:1.0 /opt/awesome-3.5/awesome -c ~/.config/awesome35/rc.lua

Pokuď se vám to rozjede rovnou, tak teda upřímně závidim! Já sem zatim tak na půl cesty. Nicméně konfy se někdy zjeví tady na githubu. Zatim sou tam jen ty ze 3.4.

Až budem dostatečne ready na vostrej provoz, tak si stačí udělat někde spustitelnej soubor s obsahem:

#!/bin/bash
export 'LUA_PATH=/opt/awesome-3.5/build/lib/?/init.lua;/opt/awesome-3.5/build/lib/?.lua;;'
/opt/awesome-3.5/awesome -c ~/.config/awesome35/rc.lua

a přidáme tenhle awesome do sessions tim, že v /usr/share/xsessions/awesome35.desktop nasypeme:

[Desktop Entry]
Encoding=UTF-8
Name=awesome35
Comment=Highly configurable framework window manager (3.5)
TryExec=/home/starenka/bin/awesome35
Exec=/home/starenka/bin/awesome35
Type=Application
no comments yet
05. 02. 2013

Vyčuránek (Lua & Redis)

Jakožto objevitel všech objevenejch světadílů, vynálezce nejšišatějších kol a lenivá svině v jedný osobě, jsem snad stokrát neuspěšně hledal jak přímo v redic-cli smazat všechny klíče s nějakým prefixem (nebo prostě klíče, který matchnou glob-like výraz — tedy prostě a jednoduše to, co umi KEYS). Marně. Takže:

  • Redis to neumí,
  • volat xargs & redis-cli nechci,
  • připojit se nějakým klientem a procyklit nechci (mega boilerplate kvůli pičovince)
  • blablablá

a tak jsem objevil (tadá), že Redis má od 2.6 integrovanou Luu. Chachá!

verze z první ruky:

eval "for k,v in ipairs(redis.call('keys', 'bsedv*')) do redis.call('del', v) end" 0`

z druhý (má kontrolu, že se fakt něco stalo):

eval "local kexpr='bsdev*'
      for k,v in ipairs(redis.call('keys', kexpr)) do redis.call('del', v) end
      return #redis.call('keys', kexpr)" 0

no a něco normálnějšího:

eval "local kexpr='bsedv*'; redis.call('del', unpack(redis.call('keys', kexpr))); return #redis.call('keys', kexpr)" 0

když to ořežu na to podstatný, nevypadá už to tak zle:

eval "redis.call('del', unpack(redis.call('keys', 'bsedv*')))" 0

PS. Luu moc neovladám, ale začínám na to makat. Stejně jako na čemkoliv jiným. Tedy výhledově.

no comments yet