25 сент. 2008 г.

etckeeper. Настройки системы под контролем

Как часто говорили мне никсовые гуру:

Перед тем как править конфиги сделай копии.

Так же часто адепты программирования говорили:

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

Чем отличается конфигурационный файл от исходного кода ? Ничем. По сути это текстовые файлы, которые надо править и иметь возможность откатывать изменния. Желательно так же иметь историю всего этого процеса.
Итак имеем транзитивную зависимость:
Конфиги -> Иходники -> VCS

Вывод
 Конфиги -> VCS 

Но положить конфиги под VCS мало. Причина на то проста: конфиги правит не только пользователь но и система в процесе установки/удаления/обновления нового ПО.

В системе GNU/Linux Debian установкой ПО занимаеться менеджер APT.
Для того, чтобы APT мог согласовывать свои действия с системой контроля версий, которая наблюдает за каталогом /etc, существует пакет etckeeper.

etckeeper устанавливает высокоуровневый интерфейс над системамы контроля версий(git, mercurial,bazaar) и навшивает хуки на события установки/обновления/удаления пакетов.

По-умолчанию система настроена на работу с Git. Так как именно на нем проводиться разработка ядра Linux. Надо отметить, что VCS с которыми работает etckeeper являються распределенными, тоесть не требуют сервера и хранят весь перпозитарий локально.
По понятным причинам SVN и CVS економически невыгодны

Установка

$ sudo aptitude install etckeeper

Если у вас еще не установлен Git, то:

$ sudo aptitude install git-core


Если вы питоновод, то mercurial или bazaar будут естественным выбором ;-)

$sudo etckeeper init # инициализации репозитария
$sudo etckeeper commit "Первый коммит настроек"


Теперь вы можете смело пускаться в самые невероятные эксперементы, если конечно уверенно владеете выбраной VCS. Сменить которую можно в файле /etc/etckeeper/etckeeper.conf

Теперь каталог /etc полностью в вашей власти:

$ git checkout -b new_net_interface


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

$ git checkout master
$ git merge new_net_interface


А если, что-то не срастется, то просто удалите ветку и переключитель на основную.

Вот где пересекаються программисты и администраторы :-)

24 сент. 2008 г.

Очистка каталога

Небольшой скрипт на Ruby для очистки от ненужных и временных файлов:


#!/usr/bin/env ruby

Dir['files/**/*'].each do |f|
if File.file?(f)
sz, ext = File.size(f), File.extname(f)
flag ||= ext.empty? # файлы без расширений
#flag ||= ['.rb', '.bmp'].include?(ext) # файлы с расш-ми
#flag ||= sz < 10 # файлы по размеру

flag && p(f).nil? && ARGV.include?('-f')
&& (File.delete(f) > 0) && p('OK')
end
end

23 сент. 2008 г.

Форматирование Flash накопителей в Linux

Обычно флешки имеют файловую систему FAT16. Такое форматирование выбранно для кросплатформности, чтобы их можно было прочитать как под Windows так и под другие OS, в том числе мобильные устройства типа Palm и д.р.

В симействе *nix подобных система существует утилита mkdosfs.
В GNU/Linux Debian она содержиться в пакете dosfstools.
Если у вас он еще не установлен то:

$ sudo aptitude install dosfstools

Для быстрого форматирования:

mkdosfs -F 16 _имя_устройства_

поскольку флешки представляються в системе как SCSI устройства и у вас не IDE винчестеры, то скорее всего они будут представлены как sdbX поетому:

mkdosfs -F 16 /dev/sdb1

Если хочеться воочию убедиться в целосности физичесих секторов, то команда будет выглядеть так

mkdosfs -cvF 16 _имя_устройства_

22 сент. 2008 г.

Титрование и дубляж в Украине

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

После некоторых раздумий сложилась такая позиция:
- подавляющее большенство титров и материалов для озвучивания укранских фильмов делается на основе русских фильмокопий;
- я желаю слышать оригинальный голос Жерара Депардье и Гью Гранта;

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

21 сент. 2008 г.

Firefox передвижение по истории

По-умолчанию в GNU/Linux поведение клавиши Backspace отличается от типичного поведения в Windows.
Если уж быть точным, то в GNU/Linux функциональность этой клавиши для навигации вообще не задействована.


Набираем в адресной строке about:config и попадаем на страницу настроек.
Ищем целочисленный параметр

browser.backspace_action

0 - движение по истории назад(History Back)
1 - прокрутка на страницы вверх(Page Up)
2 - блокировка функционала

Нажатие с клавишей Shift будет иметь обратное действие к выбраному режиму(вперед по истории или в прокрутка страницы вниз)

Используються только варианты [0, 1]. Остатьные числа блокируют функционал

13 сент. 2008 г.

Тихий звук во время просмотра видео в Linux/Windows

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

Одним из решений вопроса являеться использования хитрых параметров mplayer.

mplayer -af volume=40dB [path]

Такие параметры заставят mplayer прогонять звуковую дорожку фильма через фильтр повышения звука прямо во время просмотра фильма.

Поскольку mplayer кросплатформенный OpenSource продукт, то проблема автоматически решается на всех платформах на которых он может быть запущен.

http://www.mplayerhq.hu/design7/dload.html

12 сент. 2008 г.

День программиста

Зачастую программисты празднуют профессиональный праздник вместе с администраторами.

Ну у нас есть свой собственный!

Поздравляю программистов с праздником :-)

День программи́ста — отмечаемый на 256-й день года (255-й с нуля). Число 256 (28) выбрано потому, что это количество чисел, которое можно выразить с помощью одного байта. Так же "256" в шестнадцатиричной системе счисления - это "100" ("0x100"). И так же это максимальная степень числа 2, которая меньше 365. В невисокосные этот праздник попадает на 13 сентября, a в високосные годы — на 12 сентября.

11 сент. 2008 г.

Assembla.com. Бесплатный хостинг для коммерческого сайта.



Assembla.com - сайт предоставляющий инструментарий и сервисы для разработчиков програмного обеспечения.
Развитие сервиса происходит в трех основных направлениях:


  • Средства разработки - предоставляющий инструментарий и сервисы для разработчиков програмного обеспечения;

  • Подбор партнеров по разработке - вы можете указать свои професиональные
    данные, просмотреть данные других учасников и подобрать себе выгодного
    партнера оп разработке. Вы можете оформить часть своего проекта в виде outsource и опубликовать на рассмотрение другим учасникам проекта;

  • Предоставление консалтинговых услуг сотрудниками и разработчиками Assembla.com.
    Подробнее о консалтинге



Самыми привлекательными моментами являються:


  • Интегрированые решения на базе Trac/Git/Subversion/Mercurial

  • Создание неограниченного количества Svn, Git, Mercurial репозитариев;

  • Закрытое хранение кода для коммерческих и приватных проектов;

  • 200 Мб свободного пространства при бесплатном использования сервиса.



Интеграция с проeктом Assembla


Вы можете синхронизировать Ваши собственные средства разработки.

Практически ко всем инстурментам и данным, касающимся вашего проекта Assembla предоставляет API.

Инструментарий


Весь инструментарий поставляеться бесплатно

  • Chat - страница для ведения диалогов внутри команды разработчиков;

  • Images - Инструменты для графического дизайна: хранение изображений, рысование и коментирование;

  • Mephisto - система управления блогами и контентом;

  • Milestones - управление этапами и заданиями проекта;

  • Member - инструмент для создания портфолио;

  • Staffing - система управления Outsource заданиями, мониторинга переговоров, система оплаты выполненых работ;

  • Scrum - система онлайновых встреч и отчеты для ведения проекта по Scrum методологии;

  • Subversion - система контроля версий. (входит в состав инструмента Trac/Subversion);

  • Tickets - система управления заданиями, которая может быть использована для
    сообщений об ошибках, нововвидениях и постановке заданий;
  • Time - временные метрики проекта;

  • Trac/SVN - интегрированое решение на базе Subversion & Trac

  • External SVN - инструмент интеграции внешнего Subversion репозитария с системой управления заданиями

  • Trac/Mercurial - интегрированое решение на базе Mercurial & Trac

  • Dashboard - настраеваемая панель управления проектом(отчетность, задания, учасники и т.д).

  • Trac/Git - интегрированое решение на базе Git & Trac

  • GitHub - инструмент интеграции внешнего Git репозитария с системой управления заданиями



Платные услуги



  • SSL доступ ко все информации на рабочем пространстве;

  • Автоматическое резервное копирование;

  • Управление доступом по IP адресу;

  • Расширенная отчетность;

  • Отключение автоматической очистки устаревших данных на приостановленных проектах;

  • Техническая поддержка по телефону и электронной почте;

  • От 5 Гбт дополнительного пространства.

10 сент. 2008 г.

Сборка Chrome for Linux

Воодушивленный удачной сборкой Firefox 3 под GNU/Linux Debian/lenny, решил собрать новый браузер от Google Chrome.

И каково же было мое удивление когда после правки нескольких багов и некоторого времени компиляции, пройдя все юниттесты и функциональные тесты, я не обнаружил дальнейших инструкций по запуску.

Тоесть практически непонятно было где было искать Chrome for Linux.

Как долго я смеялся когда прочел строки в рамке в инструкции по сборке:

This page describes how to build the Chromium browser in Linux. Read this if you're interested in testing the build or porting code.

Note: There is no working Chromium-based browser on Linux. Although many Chromium submodules build under Linux and a few unit tests pass, all that runs is a command-line "all tests pass" executable.
Я вот чего-то не пойму первая строка пишет браузер для линукс, а рамка это опровергает.

Chromium is an open-source browser ...

Какой же тут опенсорц ? Гугль где Chrom for Linux ?

Набор модулей и тестов это еще не браузер, а частичное открытие исходников не OpenSource!
 

1 сент. 2008 г.

Git. Сокращение команд

В Git нет возможности сокращать команды, как это возможно в merсurial или svn.

Но, есть более удобный маханизм синонимов(aliases).

Фактически вы можете сами выбрать диалект для общение с Git, сократить команду или вовсе переименовать.
Синонимы

git config --global alias.cf config # конфигуратор
git cf --global alias.st status # текущее состояние репозитария
git cf --global alias.ci commit # подтверждение изменений в локальном репозитарии
git cf --global alias.co checkout # переключение на ветку
git cf --global alias.ad add # добавление
git cf --global alias.tg tag # тэг
git cf --global alias.df diff
git cf --global alias.pul pull # получить в удаленный репозитарий
git cf --global alias.psh push # отправить изменения в удаленный репозитарий
git cf --global alias.lg log # показать лог комитов
git cf --global alias.hp help # получить справку

Теперь можно писать
git st


вместо
git status


Добавление синонима удаленного репозитория

Что-бы не набирать каждый раз длинное имя удаленного репозитария можно тоже дать ему синоним.

git remote add origin [url]


Теперь для получения изменения удаленного репозитария пишем:

git pull origin


Небольшой набор макросов

Макросы можно записать в файл .bash_profile

Недостатком являеться отсутствие возможности автодополнения по TAB, так как это было с сокращениями.

alias gst='git-status'
alias gad='git-add'
alias gci='git-commit -m'
alias gp='git pull && git push'
alias gull='git pull' # отдать изменения
alias gush='git push' # получить изменения
alias gb='git-branch' # работа с ветками
alias gco='git-checkout' # переключиться на ветку
alias gd='git-diff' # показать изменения
alias gt='git-tag' # работа с тегами