About Blog PGP Key

Archive for October, 2007

Американцы обнаружили у бабуинов способность к программированию

…”Бабуины и шимпанзе вполне могут работать с компьютерами, заниматься тестированием программного обеспечения и даже программировать. Правда у них возникают некоторые трудности со сложноструктурированными меню. Если в меню больше двух уровней, то для бабуина оно уже представляет сложность”, — говорит МакОлифф….

http://rabota.ua/BeAware/Article/Info.xpx?ArticleId=1183

100 BEST COMPANIES TO WORK FOR 2007

Очень любопытная таблица с некоторыми подробностями про все компании ЙА СЦЫЛКО

KOSS HQ1

Достаточно интересный девайс. Жаль батареек в комплекте не было. Воткнул в соседний разьем звуковухи (Audigy2). Ну и прописал алиасы для в asoundrc, чтобы удобно было разруливать звук для тех кто умеет играть через ALSA.

 continue reading

unison и синхронизация логов PSI

В последнее время достаточно часто пользуюсь unison для синхронизации каталогов. Штука достаточно удобная, умеет быстро находить изменения (без рекурсивного сканирования всего содержимого каталогов). Сегодня мне таки надоело руками мержить history-файлы PSI. Смотрел в сторону diff3 и похожих утилит, но как оказалось это можно решить гораздо проще без написания собственных велосипедов. Вот пример мессаги в истории:

|2007-02-13T16:26:49|1|from|N---|текст мессаги

Фактически нечто похожее на CSV только разделитель другой. Дата записана в sort-friendly формате, так что алгоритм объединения двух файлов прост как пробка. Текст правила в конфиге unison:

merge = Name {*.history} -> cat "CURRENT1" "CURRENT2" | sort -u > NEW

Linux kernel 2.6.23

Обновилсо. В итоге получил время загрузки системы почти 10 минут. Достаточно долго висит udev с комментом: “Waiting for /dev to be fully populated…”, затем отваливается по таймауту. После загрузки invoke-rc.d udev stop && invoke-rc.d udev start воспроизвело тормоза. pstree при этом показал следующее:

     ├─udevd─┬─udevd───modprobe
     │       ├─3*[udevd───hplj1020───find]
     │       ├─3*[udevd─┬─hplj1018───find]
     │       │          └─hplj1020───find]
     │       ├─udevd─┬─hplj1018───find
     │       │       └─hplj1020
     │       ├─udevd───hplj1018───find
     │       ├─3*[udevd───hplj1005───find]
     │       ├─udevd───hplj1005───hplj1005
     │       ├─5*[udevd─┬─hplj1000───find]
     │       │          └─hplj1005]
     │       ├─11*[udevd───hplj1000───find]
     │       ├─5*[udevd─┬─hplj1000───find]
     │       │          └─udevd]
     │       ├─3*[udevd─┬─hplj1000───find]
     │       │          └─hplj1005───find]
     │       ├─udevd───hplj1000───2*[find]
     │       └─udevd───hplj1000─┬─find
     │                          └─hplj1000

aptitude purge foo2zjs решило проблему, но соответственно принтер пошел лесом :)

Fuzzy SVN search

Второй раз понадобилось перенести с одного тазика на другой одну фигню, собранную с некой либой, при чем фигне нужна только определенная версия этой либы, т.к API у нее меняется от версии к версии. На старом тазике от либы остались только so-шка и *.h файлы. По содержимому *.h файлов версию либы установить не удалось. В итоге сложил все эти *.h файлы в каталог, рядом положил свежий чекаут SVN-а этих файлов и запустил некий скриптик (запускается в каталоге с чекаутом):

#!/bin/sh

ORIG="/tmp/headers"

NL="
"

while true; do
        OK="y"
        MISMATCH=""
        for FILE in `ls $ORIG`; do
                DIFF=`diff $ORIG/$FILE $FILE`
                if [ "x$DIFF" != "x" ]; then
                        echo "mismatch: $FILE"
                        MISMATCH="$MISMATCH$FILE$NL"
                        #echo $DIFF
                        OK="n"
                        #break
                fi
        done
        if [ "x$OK" = "xy" ]; then
                echo
                echo "match"
                echo
                svn info
                exit 0
        fi
        REV=`svn info | grep "Revision" | sed -e "s/Revision: //"`
        echo "$MISMATCH" > /tmp/log/$REV
        echo "reverting..."
        svn up -r PREV || exit 1
done

Если найдется ревизия, в которой все *.h файлы совпадают, скрипт остановится. Если нет, то дойдет до самой первой :). Дальше по размеру файлов в /tmp/log/ можно определить, какая ревизия наиболее точно подходит :)

JID: s/jabber//

Таки выкинул слово “jabber” из JID-а. Ну и прочитал, что такое SRV записи в DNS и с чем их едят.

Йа баго

Сцылко

На удивление правдиво написано http://www.habrahabr.ru/blog/community_life/20579.html