суббота, 5 мая 2012 г.

Тормоза при вводе текста в программах на Mac OS X

Отчего такое бывает « хз, у меня тормоза появились после миграции с одного мака на другой, в Adium & Twitter & Skype.

Как лечить? Вот так:

sudo rm /Library/Preferences/com.skype.skype.plist
rm ~/Library/Preferences/com.skype.skype.plist
rm -rf ~/Library/Caches/com.skype.skype/

Меняем скайп на название тормозящей программы и всё ОК!

воскресенье, 4 декабря 2011 г.

rdesktop+неработающие клавиши со стрелочками

Всё просто:
$ rdesktop -k en-us -z -g WIDTHxHEGIHT -N -a 16 HOSTNAME
  • -k — раскладка по-умолчанию;
  • -z — компрессия передаваемых данных;
  • -g — геометрия окна/экрана, вместо неё можно использовать -f — fullscreen;
  • -N синхронизация Numlock;
  • -a — глубина цвета в битах.

среда, 23 ноября 2011 г.

Автозапуск RoR-приложения в thin при загрузке операционной системы (Debian)

Задача

Необходимо настроить автозапуск RoR-приложения с веб-сервером thin при старте системы [Debian], осложняющими задачу факторами является: запуск из-под определённого пользователя, у которого Ruby & RoR установлены из-под юзерской инсталляции RVM, а само RoR-приложение установленно в определённом gemset.

Решение

Переходим в каталог приложения и выполняем следующие команды:
$ rvmsudo thin install
$ rvmsudo update-rc.d -f thin defaults
# sudo thin config -C /etc/thin/APPNAME.yml -c /PATH/TO/ROR/APP --servers N -e production
$ rvm wrapper RUBYVERSION@GEMSET bootup thin
Вышеприведённые команды выполняют следуещее:
  1. создаёт /etc/thin и /etc/init.d/thin;
  2. устанавливает дефолтные ссылки сценариев инициализации;
  3. устанавливает настройки thin для приложения (в данном случае — production, N серверов) в файл /etc/thin/APPNAME.yml;
  4. создаёт враппер для запуска thin с определённым для приложения гемсетом.
Правим файлик /etc/init.d/thin, чтобы thin запускался с соответсвующим враппером, меняем строку
DAEMON=/usr/local/rvm/gems/ruby-VERSION-VERSION@GEMSET/bin/thin
на
DAEMON=/home/USER/.rvm/bin/bootup_thin
После выполненных действий приложение уже автоматически запускается, но с правами root, чтобы сменить рута на пользователя RVM опять правим /etc/init.d/thin, модифицируя строки запуска/останова/рестарта в таком духе
$DAEMON start --all $CONFIG_PATH
на
su RVMUSER -c "$DAEMON start --all $CONFIG_PATH"
Готовый файл /etc/init.d/thin выглядит так:
DAEMON=/home/rubyworker/.rvm/bin/bootup_thin
SCRIPT_NAME=/etc/init.d/thin
CONFIG_PATH=/etc/thin

# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0

case "$1" in
  start)
        su rubyworker -c "$DAEMON start --all $CONFIG_PATH"
        ;;
  stop)
        su rubyworker -c "$DAEMON stop --all $CONFIG_PATH"
        ;;
  restart)
        su rubyworker -c "$DAEMON restart --all $CONFIG_PATH"
        ;;
  *)
        echo "Usage: $SCRIPT_NAME {start|stop|restart}" >&2
        exit 3
        ;;
esac

:
Всё, теперь можно запускать/останавливать/перезапускать thin командой:
$ sudo service thin start|stop|restart

среда, 2 ноября 2011 г.

Ruby+PostgreSQL+FreeBSD: как установить gem pg & postgres на FreeBSD

Проблема

Собственно, PostgreSQL и RubyGems ставятся [из портов] предельно просто:

# cd /usr/ports/databases/postgresql84-server && make install clean
# cd /usr/ports/devel/ruby-gems && make install clean

После данных манипуляций можно ставить гемы pg и postgres, но... они не ставятся, ругаясь примерно таким образом:

checking for pg_config... yes
Using config values from /usr/local/bin/pg_config
checking for libpq-fe.h... yes
checking for libpq/libpq-fs.h... yes
checking for PQconnectdb() in -lpq... no
checking for PQconnectdb() in -llibpq... no
checking for PQconnectdb() in -lms/libpq... no
Can't find the PostgreSQL client library (libpq)
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

Решение

Чего-то гему не хватает... не хватает библиотечки libpq, которая в этих ваших линуксах идёт отдельным пакетом, а в FreeBSD находится в /usr/ports/databases/posgresql84-contrib. Понять её отсутствие можно, если ставить гемы чисто по-рубийному — gem install pg, но порт /usr/ports/databases/rubygem-pg по непонятным причинам (как это допустила FreeBSD Ports Team?!) не тянет зависимость posgresql84-contrib. Сухой итог:

# cd /usr/ports/databases/postgresql84-contrib && make install clean
после чего можно ставить гемы pg&postgres любым удобным способом без малейших проблем.

P.S.

84 в /usr/ports/databases/postgresql84-* — это версия PostgreSQL 8.4, там же в портах есть куча портов с другими номерами, всё вышеописанное справедливо для них.

пятница, 21 октября 2011 г.

Установка Munin на FreeBSD

Что такое Munin?

На это вопрос есть два ответа, первый, в контексте FreeBSD, Linux и прочей компьютерной ботвы англоязычная педивикия сообщает:
Munin is a network/system monitoring application that presents output in graphs through a web interface.

А чисто-исторически Мунин — это один из двух воронов бога Одина (тут уже даже отечественной педивикии есть что сказать), тот который всё помнит, что символизирует.

Что из себя представляет Munin

Munin состоит из двух частей: часть, которая производит мониторинг всякого на компьютере (munin-node )и часть, которая собирает информацию, хранит её и рисует красивые графики с веб-интерфейсом (munin-master). В портах FreeBSD, однако, есть три порта со словом munin: munin-node, munin-master и munin-common, соответсвенно первый ставить надо на обследуемом компьютере, второй — там, где будем смотреть картинки (можно ставить туда же, куда и первый), ну а третий сам встанет в любом случае.

Установка Munin на FreeBSD

munin-node

$ cd /usr/ports/sysutils/munin-node
$ sudo make install clean
$ munin-node-configure --shell | sudo sh -x
$ echo "munin_node_enable=\"YES\"" >> /etc/rc.conf

В случае, если нода стоит на одном компьютере, а мастер на другом, надо подправить конфиг /usr/local/etc/munin/munin-node.conf: найти место где написано allow ^127\.0\.0\.1$ и вписать рядом похожу строку с IP-адресом мастера (пытливый читатель может тут заметить, что адрес тут пишется в виде регулярного выражения), также, если на обследуемом компьютере несколько сетевых интерфейсов, полезно будет указать на каком интерфейсе необходимо висеть демону мунина — ищем строку host * и вместо * пишем нужный адрес.

Также, необходимо отметить, что команда

$ munin-node-configure --shell | sudo sh -x
имеет самый важный смысл — всё остальное весьма непримечательно, а она создаёт в /usr/local/etc/munin/plugins символические ссылки на плагины, отражающие графики, без её выполнения директория пуста, и мунин при попытке старта ругнётся и не поедет. Почему то про эту волшебную команду не написано в pkg-message непонятно. (Тут замечание для линкусов — в том же Debian ссылочки сами собой появляются в /etc/munin/plugins при установке пакета.)

Всё готово, выводим ноду на орбиту:

$ sudo /usr/local/etc/rc.d/munin-node start

munin-master

$ cd /usr/ports/sysutils/munin-master
$ sudo make install clean

После установки надо настроить две вещи — какие ноды отрисовывать, это редактируется в /usr/local/etc/munin/munin.conf, посредством добавления записи следующего вида:
[node.example.com] address 127.0.0.1 use_node_name yes

Добавляем нужные ноды и всё OK. Munin-master генерирует по крону веб-странички и картинки и кладёт их в /usr/local/www/munin, по-умолчанию скрипт генерации запускается каждые 5 минут (соотв. запись в кроне для пользователя munin создаётся при установке порта). Чтобы подправить крон надо выполнить следующую команду:

$ sudo -u munin crontab -e

Ну и напоследок — надо папочку /usr/local/www/munin подключить в виде папки или виртуалхосту к любимому веб-серверу.