вторник, 19 августа 2008 г.

PyVSB - простая в использовании система бэкапа данных

Меня давно привлекал язык программирования Python - по-моему все мнения о нем, которые мне доводилось слышать, были исключительно положительными, да и в последнее время при работе в Linux я стал замечать, что все больше и больше программ, которыми я пользуюсь, написаны на Python'е. Прочитав Python tutorial и просмотрев Python Library Reference, я понял, что совершенно не зря он стал так популярен в последнее время - это просто замечательный язык, который отлично подойдет как web-разработчику так и разработчику настольных программ, особенно если скорость написания программы для него имеет решающее значение.

После прочтения документации к Python, я стал думать, как бы мне закрепить полученные знания на практике. Идеальным вариантом было бы написание относительно небольшой программы, которая использует как можно больше возможностей библиотеки Python, и которая пригодилась бы мне впоследствии, чтобы не "писать программу, ради написания программы". Попытавшись вспомнить, каких программ мне не хватает, я пришел в тупик - оказалось, что в Linux я нашел для себя все, что мне было необходимо. Однако, я вспомнил, что уже довольно давно для бэкапа использую самописные скрипты, которые хоть и сжимают сохраненные данные, но не обеспечивают инкрементального бэкапа. Поставить какую-нибудь bacula и читать целый том документации к ней мне не хотелось - для "домашнего" бэкапа ее возможности совершенно не нужны. До поиска каких-нибудь более простых систем бэкапа у меня как-то не доходили руки.

Тут то я и нашел, на чем мне можно получить практический опыт программирования на Python - нужно написать относительно простую систему для "домашнего" бэкапа, которая будет иметь только необходимые функции и минимум настроек в конфигурационном файле.

Необходимые для меня функции - это:
  • Инкрементальный бэкап
  • Сжатие сохраняемых данных
  • Отправка уведомлений на email
  • Возможность запуска собственных скриптов до и после бэкапа
  • Фильтрация файлов, подлежащих резервному копированию, по регулярным выражениям

Вот что у меня получилось (взято из Readme файла к программе):

вторник, 12 августа 2008 г.

Ctrl+H и другие Emacs (Bash) клавиши в GTK

Работая в Vim и Bash, я очень сильно привык к комбинации Ctrl+H, которая служит аналогом Backspace, т. к. при слепом методе набора текста на нее нажимать гораздо удобнее, нежели на Backspace. Результатом данной привычки явилось всевозрастающее неудобство при работе с GTK приложениями, которые данную комбинацию клавиш не поддерживали, хотя Qt приложения обрабатывали ее так, как надо. После довольно непродолжительных поисков в интернете нашлось решение данной проблемы.

суббота, 26 июля 2008 г.

Очередной HowTo по Vim

Ранее я уже выкладывал небольшой HowTo по Vim. Тогда я только начинал свое знакомство с ним и решил, что на начальном этапе изучения лучше руководствоваться различными tutorial'ами и HowTo, а официальную документацию пока оставить в стороне. Почему? А потому, что если вы только начинаете изучать Vim, то вы еще не знаете, что вам от него нужно - необходим определенный опыт работы, чтобы при чтении документации вы смогли бы наиболее точно оценить, какие функции будут вам полезны, а о каких можно забыть. Все команды вы все равно не запомните - уж слишком их много, поэтому приходится отсеивать только те, которыми вы действительно будете пользоваться.

Поработав в Vim достаточное количество времени, чтобы понять, что мне от него нужно, я наконец-то принялся за чтение документации. Просто так ее читать бесполезно - все не запомнишь, поэтому в процессе чтения я выписывал те сочетания клавиш, которые считал для себя полезными. Конечно, даже после этого список получился довольно большой, но я его составлял не для того чтобы потом сесть и зубрить. :) Нет, это вообщем-то и не нужно. Вполне достаточно внимательно прочитать его один раз, запомнив описываемые им возможности, чтобы в последствии, когда вы в очередной раз поймаете себя на выполнении повторяющихся действий, от вас потребовалось бы только заглянуть в этот список команд и подумать, как можно сделать то же самое одной комбинацией клавиш.

Подобные HowTo просто подарок судьбы для начинающих пользователей Vim'a, т. к., прочитав их и скопипастив строчки из чужих конфигов в свои, они уже смогут работать в нем, не испытывая при этом особого дискомфорта. Данный HowTo предполагает, что вы уже знаете Vim в объеме Vim Tutor. Опытные пользователи, которые не смогли найти время для прочтения документации, также, возможно, найдут что-то полезное для себя в этой статье - я, например, к своему стыду, о командах gj и gk узнал именно из документации, но сколько же я без них мучился... :)

четверг, 17 июля 2008 г.

Назначение имен заголовкам табов в Vim

Vim предоставляет довольно удобный способ группировки редактируемых файлов - табы (вкладки). И все бы хорошо, но лично мне сильно мешал один недостаток - в именах вкладок не присутствуют их номера, и поэтому при переключении на нужную вкладку командой :tabn[tab_num] каждый раз приходится проводить взглядом по всем табам и высчитывать порядковый номер этой вкладки. При частом переключении это действительно начинает надоедать...

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


четверг, 10 июля 2008 г.

Недокументированные возможности IceWM

Если вы используете IceWM уже довольно давно, то наверняка не раз замечали, что в документации перечислены не все опции, с помощью которых его можно настроить. Я с этим сталкивался не раз, но до недавнего времени мне хватало всех тех опций, которые были мне известны.

Когда же я захотел, чтобы при запуске определенное приложение разворачивалось на весь экран (Fullscreen), то обнаружил, что в документации к ~/.icewm/winoptions нет опции, позволяющей сделать это.

Не поверив, что разработчики не реализовали подобную возможность, я полез в интернет. Не найдя в интернете решения моей проблемы, я решил посмотреть исходники IceWM. Как я и предполагал, разработчики реализовали нужную мне опцию ~/.icewm/winoptions, но не отразили это в документации. Там же я нашел еще несколько опций, о которых в ней не упоминалось. Так как имена опций и их описание находились в коде недалеко друг от друга, то, составив несколько action'ов в Vim'е, я получил из исходных текстов список с парами "имя опции - описание", которым и решил с вами поделиться - вдруг кто-нибудь найдет в нем опцию, которой ему очень не хватало. Описание в коде присутствовало не для всех опций, поэтому и в моем списке они не все документированы, но по их именам в большинстве случаев совсем не сложно догадаться, что они означают.

суббота, 21 июня 2008 г.

Жизнь без gnome-settings-daemon

Я не использую Gnome и вообще не сторонник DE. В качестве оконного менеджера у меня стоит IceWM. Раньше, чтобы при работе в IceWM у меня автоматически задавалась нужная мне тема оформления для GTK приложений, и включалось сглаживание шрифтов, при старте IceWM запускался gnome-settings-daemon.

В последнее время я стал замечать нестабильную работу системы из-за gnome-settings-daemon'а. Например, при работе в VMWare во время выхода из гостевой ОС у меня время от времени блокировалась клавиатура, и после этого не запускалось ни одно графическое приложение - помогал только перезапуск иксов. В итоге я решил от него избавиться, т. к. никакой необходимости у меня в нем нет.

пятница, 13 июня 2008 г.

Установка и настройка Ubuntu 8.04 на ASUS Eee PC


Когда я покупал себе ASUS Eee PC, я совершенно не думал о том, какую операционную систему установлю на нем - однозначно это будет Ubuntu Linux. Во-первых, потому, что Ubuntu у меня стоит и дома и на работе, во-вторых, потому, что и дома и на работе у меня есть локальное зеркало репозитория Ubuntu, а в-третьих просто потому, что данный дистрибутив меня всем устраивает.

После покупки я сразу же полез в Интернет в поисках различных HowTo по установке Ubuntu 8.04 на Eee PC. Результат меня несколько удивил. Несмотря на огромный ажиотаж вокруг Eee PC, этих самых HowTo в сети не так уж и много + большинство из них нацелены на Ubuntu 7.10 и предлагают запустить некий скрипт, который заменит системные конфигурационные файлы своими, заточенными под Eee PC.

На эти скрипты я даже и смотреть не стал, т. к. они предназначены для Ubuntu 7.10, и их запуск на Ubuntu 8.04 может привести к нехорошим последствиям. Поэтому во время поиска необходимой информации в сети я обращал внимание только на те статьи, в которых описывается, как можно настроить Ubuntu под Eee PC "своими руками". Найти такой HowTo, в котором содержались бы ответы на все встающие передо мной вопросы, мне не удалось, поэтому я решил систематизировать собранную мной информацию и слить ее в одну статью. Сейчас моя система уже настроена, поэтому я постараюсь вспомнить все действия, которые я производил над ней, дабы все заработало так, как мне хочется. Надеюсь, я ничего не упущу. :)