Michal Čihař - Archive for Jan. 1, 2005

Předvolební agitka

Cestou do práce jsem si všimnul jednoho z předvolebních billboardů. Nějak moc nechápu, proč nás s tím otravují půl roku před volbami, ale co už se dá dělat, asi potřebují utratit hodně peněz…

Na tomto billboardu byl pan inženýr (ne že bych to věděl, ale titulem se tam chlubil) M. Kalousek a u něho nápis „Nejčestnější muž ve státě“. No nevím, ale takto by mě nenapadlo nazvat žádného politika, natož tohoto.

Přehled složek v IMAPu

Už opět nastala situace, že mi napsání vlastního skriptu připadalo jednodušší než hledání hotového nástroje :-). Pokud se tedy někdo potřebuje podívat na stav složek na IMAPu, může použít následující skriptík.

 #!/usr/bin/python
import sys
import imaplib

m = imaplib.IMAP4('SERVER')
res = m.login('USERNAME', 'PASSWORD')
if res[0] != 'OK':
    sys.stderr.write("login: %s\n" % str(res))
    sys.exit(1)

typ, list = m.list()
if typ != 'OK':
    sys.stderr.write("list:")
    sys.exit(2)

for item in list:
    vals = item.split()
    name = vals[2][1:][:-1]
    typ, val = m.status(name, '(UNSEEN RECENT)')
    if typ != 'OK':
        sys.stderr.write("status:")
        sys.exit(2)
    print val[0]

Setup phpMyAdmina

Další dílko, které vznikno během víkendu je nastavovací skript pro phpMyAdmina. Začalo to jednoduchým generováním konfigurace serverů a skončilo to prozatím u 60 kB skriptu, který umí nastavit vše, co jsem považoval za důležité :-).

Vůbec z posledního vývoje začínám mít pocit, že další verze opět zvýší jiné číslo než bylo původně zamýšleno (2.7.0, které brzy vyjde mělo být původně 2.6.5), nějak se tam začíná objevovat čím dál více změn k lepšímu :-).

EPG v DVB česky

Už delší dobu mám k počítači připojený DVB-T přijímač a zhruba stejnou dobu mě štve nedostupnost rozumně fungující aplikace. Program dodaný výrobcem a fungující pod Windows padá naprosto neuvěřitelně, Linuxové alternativy jsou zatím dost ve vývoji. Existuje Klear , což se aplikace přímo pro DVB a Kaffeine , který je multimediálním přehrávačem s přidanými funkcemi pro DVB.

Ani v jednom ovšem nefunguje česky EPG (Electronic Program Guide), tedy zobrazení programu. Když se naskytl volnější víkend, tak jsem se rozhodl s tím něco udělat a tady je výsledek. Klear s těmito patchi už češtinu zvládá bez problémů. Sice ještě pořád zbývá 30 nepodporovaných kódování, ale to ať zkoumá někdo, kdo to může vyzkoušet :-).

PS: Proč není povolena značka ABBR?

Suspend s nvidií a 2.6.14

Kernel 2.6.14 konečně vyřešil můj problém s memory leakem kdesi v ACPI, takže nezbylo než upgradovat :-). Ovšem nvidiacký modul se poté zuřivě bránil suspendu do paměti, přestože to dříve fungovalo.

Samozřejmě řešení je jednoduché, stačí se podívat, jaké eventy se posílají:

 /*
 * There are 4 important states driver can be in:
 * ON     -- driver is working
 * FREEZE -- stop operations and apply whatever policy is applicable to a
 *           suspended driver of that class, freeze queues for block like IDE
 *           does, drop packets for ethernet, etc... stop DMA engine too etc...
 *           so a consistent image can be saved; but do not power any hardware
 *           down.
 * SUSPEND - like FREEZE, but hardware is doing as much powersaving as
 *           possible. Roughly pci D3.
 *
 * Unfortunately, current drivers only recognize numeric values 0 (ON) and 3
 * (SUSPEND).  We'll need to fix the drivers. So yes, putting 3 to all different
 * defines is intentional, and will go away as soon as drivers are fixed.  Also
 * note that typedef is neccessary, we'll probably want to switch to
 *   typedef struct pm_message_t { int event; int flags; } pm_message_t
 * or something similar soon.
 */

A příslušně opravit nvidiácké zdrojáky:

 --- orig/nv/nv.c  2005-07-19 01:58:40.000000000 +0200
+++ mod/nv/nv.c        2005-11-15 15:28:46.500089000 +0100
@@ -3624,12 +3624,13 @@
 
     switch (state)
     {
-        case PM_SUSPEND_MEM:
+        case PM_EVENT_SUSPEND:
+        case PM_EVENT_FREEZE:
             nv_printf(NV_DBG_INFO, "NVRM: ACPI: received suspend event\n");
             status = rm_power_management(nv, 0, NV_PM_ACPI_STANDBY);
             break;
 
-        case PM_SUSPEND_ON:
+        case PM_EVENT_ON:
             nv_printf(NV_DBG_INFO, "NVRM: ACPI: received resume event\n");
             status = rm_power_management(nv, 0, NV_PM_ACPI_RESUME);
             break;

Úpadek abclinuxu?

Po přečtení zápisu že Yeti zmizel , jsem si uvědomil, že ani já tu už netrávím tolik času jako dříve. A právě proto jsem ani jeho nepřítomnost nezaregistroval.

Co se v poslední době změnilo, že už jenom v RSS prohlédnu zprávičky, články a blogy, občas nějaký, podle titulku zajímavý, přečtu a na diskuze se už většinou ani nepodívám? Možná už mě nebaví pořád dokola odpovídat na ty samé dotazy, i když to asi nebude ten hlavní důvod (stejně se tomu v mailech nevyhnu). Poslední dobou se tu objevuje stále více provokatérů a nějak nehodlám ztrácet čas (kterého je vždy málo) u naprosto nesmyslné diskuze (i když nějaký ten flame občas neuškodí :-)). Nebo si třeba jenom potřebuju odpočinout (poslední dobou mám stejně nucený částečný odpočinek od počítačů).

Nejspíš to bude kombinace všeho a prostě jiné možnosti trávení času jsou prostě najednou mnohem atraktivnější. Prostě velmi dobře chápu motivaci někoho to tu zabalit, ale já nerad dělám tak silné čáry za minulostí, takže jenom pomalu ustupuji ze získaných pozic :-).

Jsem PERSONÁLNÍ POČÍTAČ

V pátek mi dorazil nádherný český spam, o který se prostě nemůžu nepodělit :-).

Vážený pán,

jsem PERSONÁLNÍ POČÍTAČ společnosti ManMark ECONOMY s.r.o. a pomáhám s vyhledáváním vhodných kandidátů. Protože jste se při hledání svého nového zaměstnání zaregistroval ve společnosti ManMark ECONOMY s.r.o., dovolím si Vám nabídnout aktuální pracovní nabídku na pozici VEDOUCÍHO VÝROBY ODD. AKVÁRIÍ.

Jako PERSONÁLNÍ POČÍTAČ se mohu občas zmýlit ve výběru, který probíhá na základě počítačového vyhodnocení. Přijměte prosím předem mojí omluvu, pokud Vám zaslaná nabídka nebude vyhovovat.

VEDOUCÍHO VÝROBY ODD. AKVÁRIÍ (mcgst)

Požadavky:
- VŠ vzdělání elektrotechnického směru
- praxi na obdobné pozici
- znalost AJ

Pracovní náplň:
- výběr vhodných elektrických spotřebičů do akvárií / filtry,
topení, osvětlení/
- orientace v technické dokumentaci
- testování el. spotřebičů přímo v akváriích
- zdokonalování výrobních technik akvárií v souladu s el.
spotřebiči
- emplementace nápravných opatření
- řízení a organizace na odd. akvárií

Nabízí:
- zajímavou práci s možností profesního růstu
- dynamické prostředí s důrazem na kreatvitu a samostatnost
- nadstandartní platové ohodnocení

Ano určitě mám tu nejlepší kvalifikaci na VEDOUCÍHO VÝROBY ODD. AKVÁRIÍ :-).

Stěžujte si s argumenty

Probíhaující boj mezi GIMPem a Photoshopem mě přinutil připomenou jednu stokrát omílanou věc.

Když si stěžujete, že něco je určitě špatně a že existuje lepší řešení, tak řekněte jaké řešení je lepší a proč. Jinak tady budeme stále mít jednoznačné chyby , které nemají jednoznačné řešení a nesmyslná nastavení , o kterých nikdo neví, proč jsou nesmyslná.

A tradiční věta na závěr: plácání v blogu nic nevyřeší, používejte bug tracking systémy!

Demo phpMyAdmina na VServeru

Jakmile jsem se dozvěděl o nové nabídce Pipni.cz , rozhodl jsem se že to je ideální služba na to co chci. Už delší dobu potřebujeme někam umístit demo phpMyAdmina, ve kterém by si uživatel mohl vyzkoušet všechno a ne jen něco s omezenými privilegii.

Registrace byla lehce problémová , ale nakonec se podařilo a nový server s Debianem mi naběhl. Následoval okamžitý upgrade na unstable a už se mohlo začít testovat. Bohužel pak jim služba nějak chcípla a následoval můj odjezd, ale dnes jsem vše dokončil.

Po běžné instalaci potřebných programů bylo nutné zajistit automatické opravování oprávnění, protože se určitě najde někdo, kdo to rozhrabe. Zatím to řeším pomocí primitivního skriptu, který kontroluje možnost připojení systémových uživatelů:

 # check for root
if ! echo 'SELECT * FROM mysql.user' | mysql -uroot > /dev/null ; then
    /root/bin/mysql-clean-mysql.sh
# check for debian
elif ! /usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf ping > /dev/null ; then
    /root/bin/mysql-clean-mysql.sh
fi

A případně obnoví databázi mysql ze zálohy:

 kill `cat /var/run/mysqld/mysqld.pid`
cd /var/lib/mysql
rm -rf mysql
tar xfj /root/mysql.tar.bz2
/etc/init.d/mysql start > /dev/null

To je asi nejjednodušší možné řešení, ale asi by to šlo řešit elegantněji, kdybych nebyl tak líný :-).

No server zatím běží, tak uvidíme jak pravdivé jsou pověsti o nespolehlivosti neplacených služeb u pipni.cz.

A pokud by se někdo chtěl podívat, tak je to pma.cihar.com .

Hrátky se symlinky

Právě se mi podařilo se zamotat ve vlastním chaosu symlinků, tak jsem se vydal trochu zkoumat jejich chování. Proč je pro ls symlink něco jiného než pro cd?

Nejdříve příklad, na kterém si to můžete vyzkoušet:

 mkdir dir1 dir2
touch dir1/file_in_1 dir2/file_in_2
ln -s ../dir1 dir2/d1

Tím vznikla takováto struktura:

 $ ls -lR
.:
total 0
drwxr-xr-x  2 michal michal 22 2005-10-25 22:09 dir1
drwxr-xr-x  2 michal michal 31 2005-10-25 22:09 dir2

./dir1:
total 0
-rw-r--r--  1 michal michal 0 2005-10-25 22:08 file_in_1

./dir2:
total 0
lrwxrwxrwx  1 michal michal 8 2005-10-25 22:09 d1 -> ../dir1/
-rw-r--r--  1 michal michal 0 2005-10-25 22:08 file_in_2

Proč ale z d2 je .. něco jiného pro cd a pro ls?

 dir2/d1$ ls
file_in_1
dir2/d1$ ls ..
dir1  dir2
dir2/d1$ cd ..
dir2$ ls
d1  file_in_2

Jak na ten zápis po napsání koukám, tak mi to připadá spíš jako core dump než zápis do blogu :-).