…”Бабуины и шимпанзе вполне могут работать с компьютерами, заниматься тестированием программного обеспечения и даже программировать. Правда у них возникают некоторые трудности со сложноструктурированными меню. Если в меню больше двух уровней, то для бабуина оно уже представляет сложность”, — говорит МакОлифф….
http://rabota.ua/BeAware/Article/Info.xpx?ArticleId=1183
Очень любопытная таблица с некоторыми подробностями про все компании
ЙА СЦЫЛКО
Достаточно интересный девайс. Жаль батареек в комплекте не было. Воткнул в соседний разьем звуковухи (Audigy2). Ну и прописал алиасы для в asoundrc, чтобы удобно было разруливать звук для тех кто умеет играть через ALSA.
continue reading
В последнее время достаточно часто пользуюсь 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
Обновилсо. В итоге получил время загрузки системы почти 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 решило проблему, но соответственно принтер пошел лесом :)
Второй раз понадобилось перенести с одного тазика на другой одну фигню, собранную с некой либой, при чем фигне нужна только определенная версия этой либы, т.к 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/ можно определить, какая ревизия наиболее точно подходит :)
Таки выкинул слово “jabber” из JID-а. Ну и прочитал, что такое SRV записи в DNS и с чем их едят.
На удивление правдиво написано http://www.habrahabr.ru/blog/community_life/20579.html