kernel panic in userspace

my own self destruction
  • Blog
  • about
  • articles
    • Virtualbox bridge
    • linux blogging
    • Gentoo on Acer Extensa 5630Z
  • code
    • @unfollowr
    • WordPress
      • WordPress-bbPress syncronization
      • IE Warning
      • PostAds
    • Callisto overlay
    • @listwatcher
  • CV
  • belarusian
  • russian
  • english

twitter followers difference

Jan 24 2009
Bearsuit – Keep It Together, Somehow
  • belarusian
  • russian

На падставе сессіённай падрыхтозкі да экзаменаў у мяне зусім зьехаў дах. Да зьехаўшага даху навалілася яшчэ два ў стамільйннай праблем рознай ступені фіговасьці. Гэта адлюстравалася на блёгу, у які я амаль перастаў пісаць. Сюды трэба прыкладаць шмат высілкаў, так што я выліваю душу ў твітэры.

З цягам часу за мной ў твітэры перасталі назіраць дактары людзі і мне хацелася б ведаць пра гэта. Qwitter мяне ігнаруе, таму я напісаў асабісты скрыпт. Хто-небудзь зьдзіўлены? :)

Код ніжэй:

#!/bin/sh

# by Ivan "bobrik" Babrou <ibobrik@gmail.com>, (c) 2009
# licensed under GPLv2
# http://bobrik.name http://twitter.com/ibobrik

# path to followers list,
FPATH="${HOME}/.followers.list"
USER="ibobrik"
PASS="KJ3ku&6dg"

TMPLIST=`mktemp`

echo "Getting followers from twitter.com for ${USER}"
wget -q https://${USER}:${PASS}@twitter.com/statuses/followers/ibobrik.xml -O - | grep '<screen_name>.*</screen_name>' | sed -r 's/.*<screen_name>(.*)<\/screen_name>.*/\1/' | sort > $TMPLIST

if test -e $FPATH; then
  OLD=`md5sum ${FPATH} | sed -r 's/(.{32}).*/\1/'`
  NEW=`md5sum ${TMPLIST} | sed -r 's/(.{32}).*/\1/'`
  if test "$OLD" = "$NEW"; then
    echo "No changes that time"
    rm $TMPLIST
    exit
  fi
  echo "=== followers difference ==="
  diff -u $FPATH $TMPLIST | grep "^[+-]" | grep -v "^+++" | grep -v "^---"
  echo "=== end of list ==="
else
  echo "It seems to be the first run"
  mv $TMPLIST $FPATH
  exit
fi

if test "$1" = "--replace"; then
  cp $TMPLIST $FPATH
fi
rm $TMPLIST

Наладжваецца проста да бязглузьдзіцы. Проста прапісваюцца імя карыстальніка і пароль, астатняе чапаць няма патрэбы. Пры першым запуску захаваецца сьпіс фолавераў, потым будзе паведамляць пра зьмены адносна папярэдняй кантрольнай кропкі, якую магчыма зафіксаваць выклікам з параметрам –replace. Ну, гэта ўсё.

А сэсію я здаў, хаця я не вучыў асабліва. Галоўнае, што стыпендыю не адабралі

p.s.: Пароль з скрыпта для майго логіну нават не спрабуйце ;)
p.p.s.: Мэлянхалічна так напісана, ці мне падаецца?

  • belarusian
  • russian

На почве сессионной подготовки к экзаменам у меня совсем съехала крыша. К съехавшй крыше навалилось ещё два в стопятисотой степени других проблем разной степени паршивости. Это отразилось на блоге, в который я почти перестал писать. Сюда надо прилагать много усилий, так что я выливаю душу в твиттере.

Со временем в твиттере за мной начали переставать следить доктора люди, и мне бы хотелось знать об этом. Qwitter меня игнорирует, поэтому я написал свой скрипт. Кто-нибудь удивлён? :)

Код ниже:

#!/bin/sh

# by Ivan "bobrik" Babrou <ibobrik@gmail.com>, (c) 2009
# licensed under GPLv2
# http://bobrik.name http://twitter.com/ibobrik

# path to followers list,
FPATH="${HOME}/.followers.list"
USER="ibobrik"
PASS="KJ3ku&6dg"

TMPLIST=`mktemp`

echo "Getting followers from twitter.com for ${USER}"
wget -q https://${USER}:${PASS}@twitter.com/statuses/followers/ibobrik.xml -O - | grep '<screen_name>.*</screen_name>' | sed -r 's/.*<screen_name>(.*)<\/screen_name>.*/\1/' | sort > $TMPLIST

if test -e $FPATH; then
  OLD=`md5sum ${FPATH} | sed -r 's/(.{32}).*/\1/'`
  NEW=`md5sum ${TMPLIST} | sed -r 's/(.{32}).*/\1/'`
  if test "$OLD" = "$NEW"; then
    echo "No changes that time"
    rm $TMPLIST
    exit
  fi
  echo "=== followers difference ==="
  diff -u $FPATH $TMPLIST | grep "^[+-]" | grep -v "^+++" | grep -v "^---"
  echo "=== end of list ==="
else
  echo "It seems to be the first run"
  mv $TMPLIST $FPATH
  exit
fi

if test "$1" = "--replace"; then
  cp $TMPLIST $FPATH
fi
rm $TMPLIST

Настраивается просто до безобразия. Просто прописываются имя пользователя и пароль, остальное трогать нет нужды. При первом вызове просто сохранит список фолловеров, затем будет сообщать об изменениях относительно предыдущей контрольной точки, которую можно зафиксировать вызовом с параметром –replace. В общем, это всё.

А сессию я сдал, хоть и не учил особо. Главное, что стипендию не отобрали

p.s.: Пароль из скрипта для моего логина не пробуйте даже ;)
p.p.s.: Меланхолічно так написано, не правда ли?

{ Comments : 8 Comments » }
{ Tags: bash, coding, diff, qwitter, scripts, shell, twitter }

gajim and mpd daemon

Dec 28 2008
Мумий Тролль – Проспали
  • belarusian
  • russian

На вікі jabber кліента Gajim ёсьць цэлы набор скрыптоў для выстаўленьня ў якасьці статуса прайграваемай у дадзены момант песьні ў mpd. Ёсьць нават патч у асноўную ветку, толькі ён у мяне не запрацаваў. Па некаторых прычынах мяне не задаволіў ніводзіны варыянт з прапанаваных, так што прыйшлося самаму дапісваць.

Мой варыянт не спрабуе выставіць статус адключаным уліковым запісам (у мяне ёсьць запіс для лякальнай сеткі, якая за 300 км ад мяне), не спрабуе выставіць кожны раз статус на «Online» і ня робіць іншых падобных непатрэбных штук. Назова кампазыцыі аднаўляецца кожныя 10 сэкундаў, што дазваляе ёй заставацца актуальнай і таксама не напружвае працэсар, таму што выклік gajim-remote кожную сэкунду – рэч даволі цяжкая. Код ніжэй

#!/bin/bash

# from http://trac.gajim.org/wiki/GajimAndMpd
# modified by bobrik (http://bobrik.name)

function reset_status_message() {
  gajim-remote change_status `gajim-remote get_status`= ""
}

trap reset_status_message EXIT

while sleep 10
do
  if [ "`mpc | wc -l`" == "1" ] ; then
    CURRENT_TITLE=""
  else
    CURRENT_TITLE="`mpc --format \"[%artist% - %title% [(%album%)]\" | head -n 1`"
  fi

  for i in `gajim-remote list_accounts`; do
    STATUS=`gajim-remote get_status $i`
    if [[ "$CURRENT_TITLE" != "$LAST_TITLE" && $STATUS != "offline" ]]
    then
        if [ -n "$CURRENT_TITLE" ]
        then
          gajim-remote change_status `gajim-remote get_status $i` "♫ $CURRENT_TITLE" $i
        else
          gajim-remote change_status `gajim-remote get_status $i` "" $i
        fi
    fi
  done
  LAST_TITLE="$CURRENT_TITLE"
done

Спампаваць сам па сабе скрыпт магчыма адсюль. Каб не пакутаваць з ручным запуска, у KDE скрыпт магчыма пакласьці ў ~/.kde/Autostart і дадаць біт выкананьня камандай

chmod +x ~/.kde/Autostart/gajim_mod.sh

Пасьля гэтага скрыпт будзе аўтаматычна запускацца пры старце KDE. Для GNOME напэўна таксама павінна быць нешта падобнае, але я пра гэта ня ведаю. Скажыце ў каментах – я дадам.

  • belarusian
  • russian

На вики jabber клиента Gajim есть целый набор скриптов для установки в качестве статуса проигрываемой в данный момент песни в mpd. Есть даже патч в основную ветку, только он у меня не заработал. По определённым причинам меня не устроил ни один вариант из предложенных, так что пришлось самому дописывать.

Мой вариант не пытается установить статус отключенным учётным записям (у меня есть запись для локальной сети, которая за 300 км от меня), не пытается выставить каждый раз статус на «Online» и не делает других подобных непотребных вещей. Название композиции обновляется каждые 10 секунд, что позволяет оставаться ему актуальным, а так же не нагружает процессор, т.к. вызов gajim-remote каждую секунду – вещь довольно тяжкая. Код ниже

#!/bin/bash

# from http://trac.gajim.org/wiki/GajimAndMpd
# modified by bobrik (http://bobrik.name)

function reset_status_message() {
  gajim-remote change_status `gajim-remote get_status`= ""
}

trap reset_status_message EXIT

while sleep 10
do
  if [ "`mpc | wc -l`" == "1" ] ; then
    CURRENT_TITLE=""
  else
    CURRENT_TITLE="`mpc --format \"[%artist% - %title% [(%album%)]\" | head -n 1`"
  fi

  for i in `gajim-remote list_accounts`; do
    STATUS=`gajim-remote get_status $i`
    if [[ "$CURRENT_TITLE" != "$LAST_TITLE" && $STATUS != "offline" ]]
    then
        if [ -n "$CURRENT_TITLE" ]
        then
          gajim-remote change_status `gajim-remote get_status $i` "♫ $CURRENT_TITLE" $i
        else
          gajim-remote change_status `gajim-remote get_status $i` "" $i
        fi
    fi
  done
  LAST_TITLE="$CURRENT_TITLE"
done

Скачать сам по себе скрипт можно отсюда. Чтобы не мучиться с ручным запуском, в KDE скрипт можно положить в ~/.kde/Autostart и добавить бит исполнения командой

chmod +x ~/.kde/Autostart/gajim_mod.sh

Тогда скрипт будет автоматически запускаться при старте KDE. Для GNOME наверняка должно быть что-нибудь подобное, но я об этом не знаю. Сообщите в комменты – добавлю.

{ Comments : 3 Comments » }
{ Tags: autostart, bash, coding, gajim, gnome, jabber, kde, mpd, script, shell, wiki }

wordpress performance fail

Dec 18 2008
Детидетей – Человечек
  • belarusian
  • russian

Захацелася мне чым-небудзь заняцца пасьля пасьпяховай здачы лябараторных работ і я вырашыў заняцца тым, што даўно плянаваў, але не хапала часу, каб заставіць кампутар у спакойным стане. Я вырашыў праверыць, як зьмяніласа хуткасьць WordPress з часоў рэлізу 2.1.
Read the rest of this entry »

  • belarusian
  • russian

Надумалось мне чем-нибудь заняться после успешной сдачи лабораторных работ и я решил заняться тем, что давно планировал, но не хватало времени, чтобы оставлять компьютер в нетронутом состоянии. Я решил проверить, как изменилась производительность WordPress со времён релиза 2.1.
Read the rest of this entry »

{ Comments : 11 Comments » }
{ Tags: bash, blogs, graphics, hits, images, lighttpd, mysql, performance, php, slashdot, tests, wordpress }

portage changes tracking

Nov 23 2008
  • belarusian
  • russian

В ходе поддержки оверлея bobrik-cleartype у меня возникла потребность написания некоторого приспособления для слежения за обновлениями в дереве portage. В оверлее содержатся те же ebuild`ы, что и в portage, но только с патчами для добавления более симпатичного (на мой вкус, по крайней мере) сглаживания.

Соответственно, мне надо поддерживать ebuild`ы до последней версии с добавлением единички к номеру ревизии, чтобы пакеты у людей случайно не обновились из portage. Кроме того, ebuild`ы имеют такое свойство, как keywords, т.е. поддерживаемые архитектуры. Так вот оно меняются вообще без изменений ревизии и версии файла, так что отследить их изменения ещё сложнее, а ведь тоже надо было бы.

Долгое время я как-то мирился с таким ходом вещей, время от времене просто вручную проходясь diff`ом по файлам. И вот мне с утра в голову ударила мысль (может сон какой?), но я решил, что нужно всё сделать просто и красиво и без писаниной на perl. Я решил сделать всё с использованием subversion. Сумасшедшие мысли – частые гости в моей голове.

Но потом я всё же ещё раз подумал и на полпути кинул дурную затею. Я решил не извращаться таким образом и просто изменил в скрипте синхронизации опции rsync на -rcvi, чтобы передавало только изменённые файлы. Теперь скипт выглядит следующим образом:

#!/bin/sh

rsync -rcvi rsync://ftp.byfly.by/gentoo-portage/media-libs/freetype freetype
rsync -rcvi rsync://ftp.byfly.by/gentoo-portage/x11-libs/libXft libXft
rsync -rcvi rsync://ftp.byfly.by/gentoo-portage/x11-libs/cairo cairo

Разумеется, если бы обновления происходили чаще, я бы всё раньше решил. Ну а так, лень, знаете ли, двигатель прогресса. В очередной раз просто не захотелось diff делать.

  • belarusian
  • russian

Падчас падтрыманьня овэрлэю bobrik-cleartype у мяне узьнікала патрэба напісаньня некага прыстасаваньня для адсьледжваньня аднаўленьняў дрэва portage. У овэрлэі усё ты я ж ebuild`ы, што і ў portage, але толькі з патчамі для дадаваньня больш сымпатычнага (на мой густ, па меншай меры) згладжваньня.

Суадносна, мне трэба падтрымліваць ebuil`ы да апошняй вэрсіі з дадачай адзіначкі да нумару рэвізіі, каб пакеты ў людзей выпадкова не аднавіліся з portage. Больш таго, ebuild`ы маюць такое свойства, як keywords, т.б. падтрымліваемыя архітэктуры. Дык вось яно мяняецца зусім бязь зьмены рэвізіі і вэрсіі файла, так што адсачыць такія зьмены яшчэ складаней, а таксама трэба.

Доўгі час я неяк мірыўся з такім ходам спраў, час ад часу проста уручную праходзячыся diff`ам па файлах. У вось сёньня з раніцы ня ведаю што мне ўдарыла ў галаву (можа сон які?), але я вырашыў, што трэба зрабіць усё проста і прыгожа і без усялякай пісаніны на perl, да таго ж. Я вырашыў зрабіць усё з выкарыстаньнем subversion. Бязглуздыя мысьлі – частыя госьці ў маёй галаве.

Але потым я ўсё ж яшчэ раз падумаў і на паўшляху кінуў дурную зацею. Я проста зьмяніў опцыі rsyncва ўжо існуючым скрыпце сінхранізацыі на -rcvi, каб перадавала толькі зьмененыя файлы. Цяпер скрыпт выглядае наступным чынам:

#!/bin/sh

rsync -rcvi rsync://ftp.byfly.by/gentoo-portage/media-libs/freetype freetype
rsync -rcvi rsync://ftp.byfly.by/gentoo-portage/x11-libs/libXft libXft
rsync -rcvi rsync://ftp.byfly.by/gentoo-portage/x11-libs/cairo cairo

Зразумела, што калі б аднаўленьні здараліся часьцей, то я б заняўся гэтам значна раней. Але так, лень, ведаеце самі, рухавік прагрэсу. У чарговы раз проста не захацелася рабіць diff.

{ Comments : No Comments » }
{ Tags: bash, bobrik-cleartype, diff, gentoo, linux, overlays, projects, rsync, subversion, svn }

Gentoo package size checker

Nov 15 2008
Blood Red Shoes – You Bring Me Down
  • belarusian
  • russian

Калісьці вельмі даўно ў мяне быў толькі ўнутраны жорткі дыск у ноўтбуку на 80 Gb і мне было вельмі няўтульна. астаянна прыходзілася нешта выдаляць, неяк спрабаваць улезьці ў гэтую прастору. Цяпер у мяне яшчэ ёсьць зьнешні дыск на 500 Gb, на якім толькі музыкі 80 Gb (+ некалькі неразабранай) і які таксама ўжо амаль запоўнены, але які магчыма пачысьціць. Гігабайт гэтак на 100 :)

З тых самых часоў у мяне засталася спадчына ў выглядзе карнявога падзелу Gentoo на 3.5 Gb. Ясная справа, жыць на такой прасторы вельмі сумна й цесна, але магчымасьці пераразьмеціць няма, ды й часу асабліва таксама няма, каб 80 гігабайт туды-сюды цягаць. Канешне, я падключаю пры сборцы /var/tmp/portage са зьнешняга дыску, /home у мяне таксама асобным падзелам (дзе й кэш squid жыве гігабайтны), але вось усталёўваць пакеты ўсё роўна кудысьці трэба.

Для пачатку я б параіў вычышчаць лёгі з /var/log (у мяне сёньня за ноч 400 Мб скапілася, але гэта з-за губленьня зьнешняга дыску, адкуль мкзыка гралася і адкуль torrent працаваў). Усялякі хлам там скапліваецца не асабліва часта, але бываюць выпадкі. Таксама варта трымаць толькі адно дрэва зыходнікаўя ядра ў /usr/src, таму як гэта таксама нямала. Больш за тое, у выпадках асаблівага дэфіцыту месца разумна трымаць несабранае ядро. Калі пры сборцы модуляў праз гэта будуць выяўляцца праблемы, то магчыма пачаць сборку ядра і спыніцца як толькі справа дойдзе да сборкі ўнутраных модуляў, якія пайдуць пасьля стандартных сборачных працэдур. Ну й du -m вам у дапамогу.

Паміма выдаленьня невыкарыстоўваемых пакетаў час ад часу ўзьнікае жаданьне зразумець, што ў сістэме столькі месца займае. З стандартных уціліт такое ўмее equery, але неяк структуравана вывад у яе атрымаць ня выйшла, таму я напісаў асабістую прыблуду, якая сарціруе пакеты па памеры і выводзіць поўны сьпіс. Атрыманьне дадзеных можа заняць прылічны час, займіце сабе чым-небудзь прыемным :)

Спампаваць скрыпт pkgsize

Для запуска выпаўняем

chmod +x pkgsize
./pkgsize

Для адключэньня даданага вываду аб прагрэсе магчыма вызываць наступным чынам

./pkgsize 2>/dev/null

Калі ў вас шмат пакетаў у сістэме і вывад не ўмяшчаецца, то магчыма рабіць яго ў файл ці выкарыстоўваць у пайпе з less

./pkgsize 2>/dev/null | less
  • belarusian
  • russian

Когда-то очень давно у меня был только внутренний жёский диск в ноутбуке на 80 Gb и мне было очень неуютно. Постоянно приходилось что-то удалять, как-то умещаться. Теперь у меня есть ещё внешний диск на 500 Gb, на котором только музыки 80 Gb (+ несколько неразобранной) и который тоже уже почти заполнен, но который можно почистить. Гигабайт эдак на 100 :)

С тех самых времён у меня осталось наследие в виде корневого раздела Gentoo на 3.5 Gb. Ясное дело, жить на таком разделе очень тесно, но возможности переразметить нету, да и времени особо тоже нету, чтобы 80 гигабай туда-сюда тягать. Конечно, я подключаю при сборке /var/tmp/portage с внешнего диска, /home у меня отдельным разделом (где и кэш squid живёт гигабайтный), но вот устанавливать пакеты всё равно куда-то приходится.

Для начала я бы советовал вычищать огромные логи из /var/log (у меня сегодня за ночь 400 Мб скопилось, но это из-за потери внешнего диска, откуда музыка игралась и откуда torrent работал). Всякий хлам там скапливается не особо часто, но бывают случаи. Также стоит держать только одно дерево исходников ядра в /usr/src, потому как это тоже немало. Кроме того, в случае особо сильного дефицита места разумно держать несобранное ядро. Если при сборке модулей будут проблемы, то можно начать сборку ядра и остановиться как только пойдут внутренние модули, после стандартных сборочных процедур. Ну и du -m вам в помощь.

Помимо удаления неиспользуемых пакетов иногда хочется понять, что вообще в системе сколько места занимает. Из стандартных утилит такое умеет equery, но как-то структурированно вывод у неё получить не вышло, посему я написал свою приблуду, которая сортирует пакеты по размеру и выводит полный список. Получение данных может занять приличное время, займите себя чем-нибудь полезным :)

Загрузить скрипт pkgsize

Для запуска выполняем

chmod +x pkgsize
./pkgsize

Для отключения дополнительного вывода о прогрессе можно вызывать как

./pkgsize 2>/dev/null

Если у вас много пакетов в системе и вывод не умещается, то можно либо делать его в файл, либо использовать в пайпе с less

./pkgsize 2>/dev/null | less
{ Comments : 7 Comments » }
{ Tags: bash, disks, du-m, equery, gentoo, kernel, less, logs, packages, perl, pipes, pkgsize, portage, scripts, size }

« Previous Entries

RSS antisocial feeling

  • Ворачиваться в страну шпрот собираешься?
  • (via priskorbno) хочу. давно хотел. где купить?
  • ??
  • "((foldl (+) 0 [1..100]) ^ 2) - (foldl (+) 0 (map (^ 2) [1..100]))"
  • ?

Tags

bash belarus blog blogs bugs coding concerts download friends fun gentoo google images internet javascript kde language life links linux livejournal me money music overlays perl photos php plugins portage projects rss school shell social social networks ssh studying tests twitter ubuntu univer vkontakte wifi wordpress

links

  • asocial feeling
  • Callisto overlay
  • daThumbs
  • last.fm
  • twitter
  • Vkontakte
  • ~idioteque

Recent Comments

  • bobrik on @listwatcher
  • Process_of_illumination on WordPress-bbPress syncronization
  • Process_of_illumination on WordPress-bbPress syncronization
  • Aviva Gabriel on @listwatcher
  • Aviva Gabriel on @listwatcher
  • Larry D. Halstead on @listwatcher
  • neagaoleg on Hide Mentions in Twitter Web Interface
  • neagaoleg on about
  • Martina Bella on @unfollowr
  • gamersroute.com on WordPress-bbPress syncronization

Archives

  • January 2010 (1)
  • November 2009 (2)
  • October 2009 (5)
  • September 2009 (2)
  • August 2009 (2)
  • July 2009 (3)
  • June 2009 (1)
  • April 2009 (2)
  • March 2009 (1)
  • February 2009 (1)
  • January 2009 (2)
  • December 2008 (12)
  • November 2008 (17)
  • October 2008 (20)
  • September 2008 (13)
  • August 2008 (25)
  • July 2008 (18)
  • June 2008 (15)
  • May 2008 (7)
  • March 2008 (1)
  • February 2008 (9)
  • January 2008 (11)
  • December 2007 (24)
  • November 2007 (27)
  • October 2007 (21)

Meta

  • Log in
  • Entries RSS
  • Comments RSS
  • WordPress.org

Creative Commons License rss comments rss valid xhtml