суббота, 29 января 2011 г.

Мониторинг директорий в linux с использованием dnotify

Сижу, разрабатываю себе на javascript, но вот незадача, после каждой правки надо зайти в командную строку и запустить сборку проекта. И только потом можно наконец оценить результаты трудов. Мелочь, но раз за разом лишнее нажатие начинает раздражать. Привык ведь уже в eclipse - все подкомпилируется в фоне. А вот бы штуку, которая бы смотрела, меняется ли что-то в директории, и по изменении - запускала бы команду.

Конечно, решения из сети - это что-то. Скрипты в bash, которые делают ls директории, затем diff - и если различается, то - запускаем команду. Это круто. Постепенно находим очевидную вещь - сообщить нам об изменении директории должна ОС. Есть и механизм - dnotify. Ищем дальше, находим пример в 10 строк, как это пишется на C. Ну а чем мы хуже, добавим только чуть-чуть логики, чтобы польза была от утилитки. Несколько часов мудоханий Полчаса интеллектуального труда и результат готов:



Самая прелесть в этом, что компилируется все в одну команду:
gcc dnotify.c -o dnotify

Используется следующим образом: первый аргумент - это команда для выполнения, остальные - директории, при изменении который будет позвана команда. Например:

./dnotify "echo hello" .

запускает слушание текущей директории и при изменении в ней скажет нам "hello".

kilork@pantogan:~/projects/dnotify$ ./dnotify "echo hello" .
setting handlers:
.
done.
monitoring started...
... в другом терминале ...
kilork@pantogan:~/projects/dnotify$ touch dnotify.c
... возвращаемся в первый терминал ...
3
hello

Больше всего времени я потратил на то, чтобы заставить утилитку игнорировать события, пока работает дочерний процесс (в процессе компиляции в директории может много чего поменяться, поэтому изменения в процессе компиляции мы игнорируем, хоть это и не совсем корректно, но для нашей утилиты в 5 строчек - пойдет). Для этого пришлось делать fork, и ловить SIGCHLD. Вроде работает, немного фана получено - и снова за javascript...

Исходные коды доступны в hg-репозитории по адресу http://kilork.org/public/notify/.

З.Ы. Добавил статью по inotify - http://kilork.blogspot.com/2011/02/linux-inotify.html.

Мercurial.ru

Подбор ссылок по mercurial - http://mercurial.ru/

Надеюсь, сайт будет развиваться и обрастет со временем новыми русскоязычными сервисами по этой славной системе хранения версий.

Помогите зверушкам - положите денег мне на телефон

Итак, хронология событий. Приходит SMS с номера +79015167055 содержимого "Баланс на счете СкайЛинк 0.00 р. Ожидаемое отключение 29.01.2011."

А я свой СкайЛинк очень редко использую. Номера фактически не помню. Думаю, что за ботва. Полез проверять, не, вроде не мой номер. Думаю, надо пробить гуглом.

И что же мы видим - сразу несколько ссылок на форумы "Пес и кот", где на этот же номер слезно просят перевести деньги для помощи несчастным собакам. Правда, после публикации номера дальше идет указание, что номер неправильный (притом не на одну цифру ошиблись, а на все, что весьма странно). Я думаю это мошенники и мне страшно за собак, изображенных на фотографиях. Помогают люди обычно бескорыстно и за свой счет, а когда на форумах воют - киньте деньги или собака отправится на улицу, это похоже на шантаж и провокацию. Также, детали биографии щенков - все это выглядит достаточно отвратно. Конечно, можно сказать, что это я такой гадкий, а они белые и пушистые - но что-то мне подсказывает, что это не так.

З.Ы. Разобрался со службой поддержки СкайЛинка (после того, как смс о 0-м балансе и отключении на следующий день приходили каждый день в течении 2-х недель). Оказалось, это все же реакция на 0-й баланс моего номера, а номер, с которого приходила смс - служебный номер СкайЛинк. Так что мой начальный посыл как обычно оказался неверным. Т.е. все же, с большей вероятностью это действительно волонтеры, желающие помочь бедным зверушкам - я хочу верить в лучшее...

вторник, 25 января 2011 г.

Upgrade ASUS Eee 901 64GB SuperTalent SATA Mini 2 PCIe SSD

Во вчерашний трагичный день мне пришла посылочка издалека, к счастью, с мирным грузом, который я и распаковал.

Unpacking:




В посылочке были Mini 2 PCIe SSD диск на 64Gb от Super Talent: технические характеристики, и память на 8Gb для ноутбука. Память для ноутбука - это в нагрузку, и не мне, а вот первое мне было очень интересно. Флэшка и 10 копеек на последнем фото - для сравнения габаритов.

Заменять SSD диск на Eee 901 можно было бы и проще, но все равно - очень просто. На всякий случай записал видео:


Собирать/разбирать свой компьютер программист должен как солдат - АК. Быстро и четко, и чтобы работало после цикла операций.

Незамедлительно на свежий диск была установлена Ubuntu 10.10. Что-то их изыски с интерфейсом под нетбуки меня совсем не впечатлили, в 10.04 было лучше. Производительность дисковой подсистемы должна вырасти в 5 раз, но пока приятно то, что не надо маяться с разделами на двух дисках и процедурой апгрейда дистрибутива, которая не проходит из-за недостатка места. Да и собственно, нет недостатка места столь сильного. Стоило удовольствие слегка больше 200$, насколько оправдано - время покажет.

Внимание! Перед upgrade необходимо обновить BIOS на Eee, так как железка под старыми версиями видна не будет.