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

wordpress categories parentness

Oct 23 2009
  • belarusian
  • russian

А это снова я со своим WordPress как с писанной торбой. Снова я зол и недоволен, потому что искал баги методом бинарного поиска, расставляя контрольные точки по всему шаблону, да ещё потом и по плагину небезызвестного Alex King. Тот ещё подлец, скажу я вам, не идеальный код пишет, мягко говоря.
Read the rest of this entry »

  • belarusian
  • russian

А гэта зноў я са сваім WordPress як зь пісанай торбай. Зноў я злы і незадаволены, таму што шукаў багі мэтадам бінарнага пошуку, расстаўляючы кантрольныя кропкі па ўсяму шаблону, ды потым яшчэ па плягіну даволі вядомага Alex King. Той яшчэ падлец, скажу я вам, не ідэальны код піша, мякка кажучы.
Read the rest of this entry »

{ Comments : 1 Comment » }
{ Tags: category, cat_is_ancestor_of, coding, dynamic typing, int, php, style, wordpress }

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 }

service command

Nov 02 2008
Детидетей – Трамвай
  • belarusian
  • english
  • russian

Адной з новых фішак у Ubuntu 8.10 называецца каманда service, якую узялі з Red Hat. Калі я пра гэта пачуў упершыню, то быў некалькі зьдзіўлены, бо напісаць такую мелач можа кожны адміністратар, які жадае зручнасьці, на любым дыстрыбутыве. Добра, што большасьць дыстрыбутываў трымае сэрвісы ў строга адзначанах месцах: /etc/inid.d/ і /etc/rc.d/ (bsd стыль, калі я не памыляюся). Невялічка кавалак коду ў ~/.bashrc дадасьць вам каманду service з патрэбным функцыяналам:

service () {
        /etc/init.d/$1 $2
}

У мяне ў Gentoo для аўтакампліта сэрвісаў трэба яшчэ дадаць перад гэтым

[[ -f /etc/profile.d/bash-completion ]] && \
 source /etc/profile.d/bash-completion

Пасьля паўторнага чытаньня конфігу праз source ~/.bashrc зьяўляецца ўсё тая ж каманда service. Функцыю можна разьмясьціць і ў любым іншым файле, які чытаецца пры запуске bash. Таксама магчыма выкарыстоўваць sudo у целе самой функцыі для запуска ад звычайнага карыстальніка.

  • belarusian
  • english
  • russian

Одним из новшеств в Ubuntu 8.10 называется команда service, позаимствованная из Red Hat. Когда я читал об этом впервые, я был несколько удивлён, потому что написать такую мелочёвку способен любой жаждущий удобства администратор на любом дистрибутиве. Благо, большинство дистрибутивов держат сервисы в строго определённых местах: /etc/inid.d/ и /etc/rc.d/ (bsd стиль, если я не ошибаюсь). Небольшой кусок кода в ~/.bashrc добавит вам команду service с нужным функционалом:

service () {
        /etc/init.d/$1 $2
}

У меня в Gentoo для автокомплита сервисов ещё можно добавить перед этим

[[ -f /etc/profile.d/bash-completion ]] && \
 source /etc/profile.d/bash-completion

После повторного чтения конфига через source ~/.bashrc появляется всё та же команда service. Функцию можно поместить и в любой другой файл, который читается при запуске bash. Также можно использовать sudo в теле самой функции для запуска от пользователя.

  • belarusian
  • english
  • russian

Command “service” – one of the innovations in Ubuntu 8.10. To use it in any other distribution, where services are stored in /etc/inid.d/ or /etc/rc.d/ you can use the following code in ~/.bashrc

service () {
        /etc/init.d/$1 $2
}

In Gentoo for service auto-completion, you can add to this before

[[ -f /etc/profile.d/bash-completion ]] && \
 source /etc/profile.d/bash-completion

The next step is to re-config using source ~/.bashrc and you`ll get service command. Inside function can use sudo to run from a user.

{ Comments : 15 Comments » }
{ Tags: bash, bash-completion, bashrc, bsd, coding, gentoo, ubuntu }

wordpress plugins localization

Nov 01 2008
  • belarusian
  • english
  • russian

WordPress – вельмі добрая і харошая сістэма, і дакумэнтацыя ў яе добра арганізавана. Толькі вось сёньня апошняя мяне падвяла і агарчыла. І прымусіла бляць доўга мацюкацца.
А ўсё справа ў функцыі для падгрузкі лякалізацый плягіна load_plugin_textdomain. У дакумэнтацыі напісана

If your plugin isn’t in its own subdirectory, you can leave out the second argument of load_plugin_textdomain.

Тут, як аказваецца, маецца на ўвазе не падтэчка тэчкі плягіна. Падтэчкай называецца сама тэчка. А ўлічваючы тое, што нельга трымаць плягіны па-за межамі гэтай тэчкі, то такое з плягінам у базе дадзеных WordPress немагчыма.
Але я ж гэтага адразу ня ведаў. Апусьціў другі аргумэнт. Доўга ўчытваўся, я апошнія пару дзён часта прапускаю важныя моманты. Выпрабаваў усё, што толькі магчыма было выпрабаваць. Нават да танцаў з бубнам вакол самога файла лякалізацыі. Выратавала апошняе – калупаньне кода самаго WordPress (што апошнім часам становіцца маім любімым мэтадам). Аказваецца, што ў функцыі ўвогуле 3 аргумэнты. Для таго, каб атрымаць неабходны мне рэзультат, патрэбна вызваць у выглядзе load_plugin_textdomain($domain, false, $dir), дзе $dir – адносны шлях да дырэкторыі з лякалізацыямі, калі глядзець з wp-content/plugins.
Мараль прыдумайце самі.

  • belarusian
  • english
  • russian

WordPress – очень хорошая и удобная система, и документация у неё отлично организована. Только вот сегодня последняя меня подвела и огорчила. И заставила блять долго ругаться матом.
А всё дело в функции для подгрузки локализаций плагина load_plugin_textdomain. В документации написано

If your plugin isn’t in its own subdirectory, you can leave out the second argument of load_plugin_textdomain.

Тут, как оказывается, имеется в виду не поддиректория директории плагина. Поддиректорией называется сама директория. А учитывая то, что невозможно держать плагины за границами этой директории, то такое с плагином в базе данных WordPress невозможно.
Но я ведь этого не знал. Опустил второй аргумент. Не заработало. Долго вчитывался, я последние пару дней часто упускаю важные моменты. Испробовал всё, что только можно было использовать. Вплоть до танцев с бубном вокруг самого файла локализации. Спасло последнее – ковыряние кода самого WordPress (что уже становится моим любимым методом). Оказывается, у функции вообще 3 аргумента. Для того, чтобы получить необходимый мне результат, требуется вызывать в виде load_plugin_textdomain($domain, false, $dir), где $dir – относительный путь к директории с локализациями, если смотреть из wp-content/plugins.
Мораль придумайте сами.

  • belarusian
  • english
  • russian

From WordPress documentation:

If your plugin isn’t in its own subdirectory, you can leave out the second argument of load_plugin_textdomain.

They mean plugin subdirectory as its directory in wp-content/plugins, so you need to use function like load_plugin_textdomain($domain, false, $dir), where $dir – relative path to plugin directory from wp-content/plugins.

{ Comments : No Comments » }
{ Tags: bugs, codex, coding, domains, gettext, hacking, ie-warning, l10n, localization, plugins, wordpress }

« Previous Entries

RSS antisocial feeling

  • so much i
  • i am freaking bicycle
  • с третьей минуты мне очень. детство
  • не спрашивайте
  • banksystreetart: Banksy / Simon Munnery fuck yeah shit

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

  • saper on antialiased fonts in netbeans (java apps in common)
  • edward on IE Warning
  • Vigoran on WordPress-bbPress syncronization
  • Nikos on WordPress-bbPress syncronization
  • Maxno on free licenses
  • achmad on IE Warning
  • bobrik on bbPress terms filtering & hacks
  • Сергей М. on bbPress terms filtering & hacks
  • Samad Khan on WordPress-bbPress syncronization
  • bobrik on WordPress-bbPress syncronization

Archives

  • July 2010 (1)
  • June 2010 (1)
  • April 2010 (2)
  • 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