Переезд

Поддавшись на коварные рекламные уловки в очередной раз переехал, на этот раз на digitalocean.com. Привлёк конечно же тарифный план, вчетверо дешевле аналогичного в linode, но при этом на ssd-дисках:

hdparm -Tt /dev/sda

/dev/sda:
Timing cached reads: 16536 MB in 1.99 seconds = 8293.49 MB/sec
Timing buffered disk reads: 1026 MB in 3.00 seconds = 341.97 MB/sec

# dd if=/dev/zero of=/test-output bs=8k count=1000k; rm -f /test-output
1024000+0 records in
1024000+0 records out
8388608000 bytes (8.4 GB) copied, 98.9558 s, 84.8 MB/s
# dd if=/dev/zero of=/test-output bs=8k count=10k; rm -f /test-output
10240+0 records in
10240+0 records out
83886080 bytes (84 MB) copied, 0.246461 s, 340 MB/s

За прошедшие месяцы проблем не выявлено, полёт проходит нормально.

На linode был slackware (расставаться было жалко), но digitalocean такого выбора не дал, из предложенных Ubuntu/Debian, CentOS/Fedora и Arch Linux выбрал последнее. После короткой, но победоносной войны с незнакомым мне ранее systemd всё идёт гладко, uptime растёт.

P.S.
Собрался уничтожать линоду и увидел баннер, предлагавший бесплатно апргрейд (увеличивают ресурсы вдвое) – оказалось, что план linode-512 совсем исчез из тарифной сетки, и теперь за $20 предлагают 1gb ram/48 gb hdd. Но рука не дрогнула (такие ресурсы сейчас попросту не нужны) – сервер удалился, неиспользованный баланс вернулся.

Update: с момента написания прошёл ещё месяц и теперь, будь такая возможность, я бы послал весточку себе прошлому с настоятельной рекомендацией НЕ пользоваться arch-ем на рабочем сервере, спички детям не игрушка – будьте внимательны и осторожны, не повторяйте чужих ошибок.

redmine_ldapserver

В настоящее время для авторизации в subversion мы пользуемся учётными данными из redmine (с помощью немного доработанного модуля к mod_perl из стандартной комплектации самого redmine) и когда возникла необходимость в появлении ещё одного внутреннего сервиса, который требовал авторизации, то немедленно захотелось использовать существующие аккаунты.


Появившимся сервисом оказался zabbix, веб-интерфейс которого написан на php. Я сделал несколько грубых попыток влезть в его нутро и прикрутить внешнюю авторизацию (пока redmine и zabbix раскручивались на одном сервере было легко манипулировать базами данных обоих, но после их разъезда это стало “затруднительно”), затем реализовал более изящную, как тогда показалось, идею – в zabbix (как и во многих других продуктах) имеется штатная возможность использовать авторизацию через ldap, мысль заключалась в том, чтобы реализовать набор стандартных функций расширения ldap в которых обращаться к БД и/или используя http api redmine.

***

К счастью наработки оказались бесследно утеряны, однако сама идея претерпела неожиданные мутации и выродилась в прямо противоположную реализацию. Вместо создания псевдо-ldap-клиента был сделан “сервер”. Он весьма прост и незатейлив и умеет лишь то, для чего создан – метод simple_bind для авторизации (реализован шутейный метод search, но лишь для того, чтобы тестировать запросы к серверу в процессе разработки стандартными утилитами).

Полученное оформлено в виде плагина к redmine, к тестированию которого теперь приглашаю всех желающих: код и краткая инструкция по запуску на github-е.

Жду комментарии и неудобные вопросы.

07.06.13  |  , ,  | стань первым

Вернём былые краски старым видео-роликам.

Вы обладатель видимо-карты NVidia, у вас Linux и с некоторых пор видимо-ролики внезапно посинели, словно Кэмерон переснял весь youtube с использованием фирменного avatar-эффекта?
Если вам тоже надоели низкобюджетные спецэффекты, то вы можете их убрать.

В баг-трекере adobe проблема названа “косметической” и решения не видать (проплачено распоясавшимся режиссёром?!)

, на форуме nvidia предлагают множество вариантов того, как отчаявшиеся пользователи решают свои проблемы: кто-то откатывается на предыдущие версии flashplayer-а (но ведь chrome!!!), кто-то патчит libvdpau, у кого-то получается победить стихию такими настройками, а у меня получилось лишь “золотой серединой” между найденными решениями. Быть может и вам поможет выполнение следующей команды (и последующий перезапуск браузеров):

[sudo] mkdir -p /etc/adobe && echo -e "EnableLinuxHWVideoDecode=1\nOverrideGPUValidation=true" > /etc/adobe/mms.cfg

Буду рад, если это поможет кому-то избавиться от «голубой угрозы»

26.04.12  |  , ,  | стань первым

PHPUnit_Extensions_TicketListener_Redmine

Если вы тоже используете redmine и PHPUnit, то возможно и вам пригодится расширение для закрытия/открытия задач при удачном/неудачном прохождении теста.

Как это работает подробно написано в статье, на основе которой был написан данный класс.

Для тех кто не осилит – кратенько, в нескольких словах:

  • Update:  Устанавливали PHPUnit с помощью pear? Добавляете расширение следующими командами:
                pear channel-discover pear.rpz.name
                pear install rpz/PHPUnit_TicketListener_Redmine
              
  • Или же скачиваете файл вручную Redmine.php
  • Добавляете в существующий(создаёте новый) конфигурационный файл и добавляете в него содержимое phpunit-configuration.xml.example, исправив путь к файлу Redmine.php и указав адрес redmine свой ключ API (доступен на странице профиля, в сайдбаре)
  • Выбираете отчёт об ошибке из redmine-а, пишите тест, для тестового метода добавляете phpdoc-аннотацию @ticket 6666:
    class ExampleTest extends PHPUnit_Framework_TestCase {
        /**
         * @ticket 6666
         */
        public function testExampleMethod() {
            $this->assertTrue(false);
        }
    }
    
  • Запускаете phpunit, указав путь к конфигурационному xml-файлу
       phpunit --configuration phpunit-configuration.xml ExampleTest.php
    
  • Убеждаетесь в том, что задача закроется как только тест будет пройден:
    PHPUnit 3.5.2 by Sebastian Bergmann.
    
    Updating Redmine issue #6666, status: closed
    .
    
    Time: 0 seconds, Memory: 3.50Mb
    
    OK (1 test, 1 assertion)
    

Google tasks в трее.

Google Tasks in systrayДавно искал удобный способ управлять повседневными задачками – искал всевозможные программки, которые бы были всегда по рукой (перед глазами). Перепробовал всё от банального текстового файла на рабочем столе, до навороченных приложений с категориями, тегами, уведомлениями, шахматистками и какао… В своё время мне очень нравилась deskDo от PixelApes, но в какой-то момент момент основной сайт проекта стал недоступен и я про него позабыл, пользовался различными air-приложениями, плазмоидами типа “remember the milk”, пытался использовать basket note pads и даже приватную задачу в redmine с уставновленным плагином Issue checklist

Золотая середина между простотой и функциональностью был где-то в районе google tasks, но пользоваться им в окне (табе) браузера не очень удобно – он постоянно терялся среди десятков других и как следствие забывался…

Но пару месяцев назад я случайно наткнулся на приложение, которое решило все проблемы, оно называется treb (Treb=tray+web). Приложение позволяет “спрятать в трей” небольшой браузер (он притворяется мобильным для того чтобы отобразить оптимизированную для маленьких экранов версию веб-сайта), в котором можно открыть любую страницу.

Теперь заметки в “шаговой” доступности, всегда под рукой – одним кликом открывается удобный список, в который можно быстро что-то записать или отметить “готовность”, а сетевая природа гуглозадач позволяет иметь единый список на разных ПК.

А чем пользуетесь вы для ведения списка “мелких задачек” и “напоминаний” ?

13.01.12  |  ,  | 4 comments

Failed to initialize the NVIDIA GPU

После обновления ядра до версии 2.6.38.7 система стала работать нестабильно, переодически зависала на продолжительное время, решил не откатываться на предыдущее, не ждать милости Патрика, а собрать более свежее ядро руками (вспомнить молодость, ага).

Процесс прошёл на удивление быстро:

#"инструкция" 
cd /usr/src/
wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.1.8.tar.bz2
tar xfj linux-3.1.8.tar.bz2
rm -rf linux
ln -s /usr/src/linux-3.1.8 /usr/src/linux
cd /usr/src/linux
zcat /proc/config.gz > .config
make oldnoconfig
make menuconfig
make -j3 all
make modules_install
make install
cd /etc/rc.d
mv /boot/vmlinuz /boot/vmlinuz-3.1.8
ln -s /boot/vmlinuz-3.1.8 /boot/vmlinuz
mv /boot/System.map /boot/System.map-3.1.8
ln -s /boot/System.map-3.1.8 /boot/System.map
cp /usr/src/linux/.config /boot/config-3.1.8
rm /boot/config
ln -s /boot/config-3.1.8 /boot/config
mcedit lilo.conf
lilo
reboot

…а главное безболезненно – система загрузилась сразу.

Настал черёд пересобрать драйвера nvidia. В наличии имелся инсталлятор версии 275.09 – он работать отказался сославшись на то, что не может найти исходники ядра. Хорошо – скачал последнюю на данный момент сборку – 290.10, которая установилась без проблем. Но не тут-то было – xOrg не запустился ругнувшись:

NVIDIA: could not open the device file /dev/nvidia0 (Input/output error).
(EE) NVIDIA(0): Failed to initialize the NVIDIA GPU at PCI:1:0:0.  Please
(EE) NVIDIA(0):     check your system's kernel log for additional error
(EE) NVIDIA(0):     messages and refer to Chapter 8: Common Problems in the
(EE) NVIDIA(0):     README for additional information.
(EE) NVIDIA(0): Failed to initialize the NVIDIA graphics device

И пошло-поехало…

  • откатился до 285.05.09 – тоже самое
  • последовательно перепробовал всевозможные опции ядру, которые удалось найти в “этих ваших интернетах” и noacpi и pci=biosirq и vmalloc=XXXm – без результата.
  • перепробовал море разных опций модулю nvidia – без толку

И вот надежда уже погибла, xOrg работает через убогий nouveau и остаётся лишь установить бубунту загрузить старое ядро (и собрать ему старые драйвера nvidia). Поудалял кучу старых инсталляторов и решил скачать (раз пошла такая пьянка) 275.28 и на всякий попробовал их собрать к свежему ядру. И что удивительно – получилось! всё заработало, на первый взгляд система стала шустрее, chrome с полусотней открытых табов больше не вводит иксы в транс. На днях попробую повторить операцию “хватить тупить” на другой машине

“Такой день” (ц)

zoom-слайдер на клавиатуре в linux

После прочтения заметки о “странных кнопках ноутбука” сразу вспомнил о неработающем zoom-слайдере на клавиатуре Microsoft Microsoft® Digital Media Keyboard. Немедленно с помощью showkeys выяснил keycodes событий “слайдер вверх” – 418, слайдер вниз – 419. Перечитав ещё несколько раз заметку понял что мне она больше не поможет – xOrg в принципе не переваривает keycodes выше 255, ситуация казалось бы безвыходная, но оказалось не совсем, нашлось решение в виде evrouter – программы, которая (как видно из названия) “пробрасывает” события одних устройств на другие трансформируя согласно правилам описанным в конфигурационном файле.

После непродолжительных мытарств родился следующий ~/.evrouterrc:

#при нажатии на slider up на клавиатуре - сгенерируй событие "mousewheelup"
"Microsoft Microsoft® Digital Media Keyboard" "/dev/input/event.*" none key/418 "XButton/4"
#при нажатии на slider down на клавиатуре - сгенерируй событие "mousewheeldown
"Microsoft Microsoft® Digital Media Keyboard" "/dev/input/event.*" none key/419 "XButton/5"

Для получения необходимых прав в /dev/input в rc.local была добавлена строка:

# внимание - используйте на свой страх и риск! Слабо представляю какие подсистемы затронет такое наглое вмешательство в /dev
chgrp users /dev/input/event*

В ~/.kde/Autostart добавлен запуск /usr/bin/evrouter /dev/input/event*

Вы можете запускать evrouter через sudo (и не трогать права на /dev), но подозреваю, что с автозапуском могут быть проблемы…

(more…)