All articles, tagged with “linux”

Сверим часы

«Точность – вежливость королей» Людовик XVIII

NTP

NTP — стандартный способ синхронизировать время. И если админ знаком с ним, то всё уже работает :) Но если вдруг админ не в курсе, а синхронизация времени нужна, кое-что можно проверить самостоятельно, для того, чтоб дальнейший диалог с ним был конструктивным.

Для проверки доступности сервера точного времени старый-добрый telnet не подходит — NTP работает по UDP, на что telnet не способен. Но нам на помощь приходит netcat — сетевой швейцарский нож.

$ nc -v -z -w 3 -u <ntp-server> 123

Если провайдер не предоставляет свой сервер точного времени, или вы его просто не знаете, можно воспользоваться сервером из публичного пула серверов. Например, ua.pool.ntp.org1

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

$ ntpdate -dv <ntp-server>

Должны выводиться сообщения об отправки (transmit) и получении (receive) пакетов.

HTP

Но что же делать в клинических случаях? Например, вы сидите за NATом, который по какми-то неизвестным причинам принципиально не хочет сотрудничать с NTP (скажем, Kerio Winroute Firewall 6.04).

В таком случае можно воспользоваться htpdate — утилитой, реализующей HTTP Time Protocol.

На самом деле, HTP — не совсем протокол. Скорее, это остроумное использование одной особенности HTTP. В соответствии с RFC 2616 — спецификацией HTTP, в заголовках ответа сервер должен указывать дату. С большой долей вероятности, на крупных веб-серверах время настроено точно, и на него можно полагаться. Но для защиты от казусов, можно воспользоваться несколькими серверами. Автор заявляет, что используя этот метод можно получить точность ±0.5 с. С 0.01 мс NTP не сравнится, но тем не менее, довольно хороший показатель.

В целом работает аналогично ntp: есть htpdate для ручной синхронизации, и есть htpd — демон, который будет периодически синхронизировать время.


  1. На самом деле, это не сервер, а “линк” на все украинские серверы точного времени, которые добавились в пул. 

Bluetile.deb

В прошлый раз я посетовал, на то что у Bluetile нету .deb пакета, что несколько усложняет его установку. После некоторых раздумий было принято решение сделать такой пакет самому, ведь это должно быть совсем не сложно. На удивление, пакет собрался довольно быстро.

Если быть откровенным, то у меня есть подозрения, что пакет получился не совсем «кошерным». Т.к. он вроде и бинарный, но попутно скачивает и собирает софт из исходников. Но как сделать лучше я пока что не знаю, так что с радостью выслушаю дельные советы :)

Пакет чрезвычайно прост:

  • control — файл, с описанием зависимостей (компилятор Хаскеля и библиотеки).
  • postinst — скрипт, который скачивает, собирает и установливает cabal и bluetile в $HOME/.cabal/
  • prerm — удаляет симлинки при удалении пакета.
  • Для удобства добавил так же bluetile.desktop — ярлык в главном меню(Applications → Accessories → Bluetile) с иконкой от Xmonad.

Скачать пакет можно тут → bluetile_0.3.deb. Пакет проверялся на Ubuntu 9.10.

Исходники — http://hg.zayats.org.ua/bluetile-deb/

P.S.Кстати, для организации тестовой площадки очень помог проект «VirtualBox® Images». Проект предоставляет готовые к употреблению виртуальные машины с различными предустановлеными ОС.

Bluetile — Xmonad для простых смертных

Image Идея организации окон мозаичным способом мне приглянулась сразу, как только я узнал о Xmonad. Слишком уж часто я замечал, что много энергии и внимания расходуется на манипуляцию окнами: сворачивание/разворачивание, частые переключения между двумя-тремя окнами для синхронизации информации между ними, долгая «мышиная возня» для того, чтоб разместить несколько окон рядом, и т. п. Мозаичный же подход предлагает автоматическое и более оптимальное размещение окон.

К сожалению у Xmonad слишком высокий порог вхождения для новичков.

  • Во-первых, смена парадигмы окружения рабочего стола сама по себе сложна и требует времени на адаптацию. Запустив Xmonad я себя чувствовал одновременно потеряным и беспомощным — все мои навыки не работали в новой среде. Почти так же я себя почувствовал как при первом знакомстве с Enlightment 8 лет назад, но там хоть были клёвые выдвигающиеся панельки.

  • Во-вторых, сложный процесс конфигурации. Конфиг нужно писать на Хаскеле. Конечно, это даёт широчайшие возможности по затачиванию среды под свои нужды. Да, хорошему программисту рекомендуется в год изучать хотя бы один новый язык. А Haskell — это, возможно, наше светлое функциональное будущее. Но когда нужно решать сугубо «бытовые» проблемы вроде подстройки клавиатурных сочетаний, неизвестный язык становится серьёзной преградой для внедрения новых инструментов. К тому же, после правки конфига, Xmonad нужно было по-новой компилировать.

Bluetile

bluetile screenshot

К счастью, нашёлся добрый человек, — Jan Vornberger, — который захотел исправить ситуацию и сделать Xmonad более доступным для простых смертных. Итогом его работы стал Bluetile 1.

Главная задача, которую ставил перед собой Jan — создать мозаичный оконный менеджер, которым можно эффективно пользоваться с нулевой предварительной подготовкой. Добился он этого оставив привычные элементы управления вроде titlebar с кнопками, панелей задач и быстрого запуска и предоставив полный доступ ко всем функциям не только с клавиатуры, но и при помощи мыши. Менеджером можно пользоваться «из коробки», не ковыряясь в настройках и не читая длинных мануалов. Кроме того, он прозрачно интегрируется с GNOME.

Небольшой недостаток Bluetile заключается в нетривиальности установки. Проект молод и ещё не успел обзавестись ни PPA, ни даже .deb пакетом. Но, хотя Bluetile и нужно собирать из исходников самому, всё не так сложно, как можно подумать. Для Ubuntu 9.10 процесс выглядит так.

Haskell

Конечно же, нам понадобится Хаскель и биндинги для библиотек GTK+ и Glade.

$ sudo apt-get install ghc6
$ sudo apt-get install libghc6-gtk-dev libghc6-glade-dev

Cabal

Cabal для Haskell — тоже самое, что и easy_install для Python, gem для Ruby, apt для Debian/Ubuntu. В общем, вы поняли, о чём я :)

Кроме того, что кабал умеет разруливать зависимости между пакетами, он хорош ещё тем, что ставит всё в ~/.cabal. Т.е. можно не переживать, что система будет захламляться файлами, которые потом нужно будет искать как иголку в стоге сена.

# ставим необходимые библиотеки
$ sudo apt-get install libghc6-network-dev libghc6-parsec-dev libghc6-mtl-dev libghc6-zlib-dev
# качаем исходники кабала...
$ wget http://haskell.org/cabal/release/cabal-install-0.6.2/cabal-install-0.6.2.tar.gz
# ...распаковываем...
$ tar -xvvf cabal-install-0.6.2.tar.gz
#...и устанавливаем
$ cd cabal-install-0.6.2 && ./bootstrap.sh
# для удобства, сделаем ссылку в /usr/local/bin/
$ sudo ln -s $HOME/.cabal/bin/cabal /usr/local/bin/cabal

Собственно, сабж

$ cabal update
$ cabal install bluetile
~/.cabal/bin/bluetile

В общем, если вы тоже периодически ловите себя на мысли, что «борьба» с окнами отнимает слишком много сил — вам, определенно, следует посмотреть в сторону мозаичных оконным менеджеров и попробовать Bluetile. В качестве бонуса: список хоткеев и для любителей cheetsheets — шпаргалка по Xmonad.


  1. Проект анонсирован в сентябре, а 6 декабря его код был включен в Xmonad. 

Работа с последовательным портом в Linux

Столкнулся недавно с проблемой: есть некий девайс, собирающий данные. Подключается девайс к компу по USB и общение происходит через виртуальный последовательный порт. Собственно проблема была в том, что софт, собирающий данные с устройства, эти данные не собирал.