Сверим часы

«Точность – вежливость королей» Людовик 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. На самом деле, это не сервер, а “линк” на все украинские серверы точного времени, которые добавились в пул. 

book review#2: Вы, конечно, шутите, мистер Фейнман!

«Беда с компьютерами состоит в том, что ты с ними играешь. Они так прекрасны, столько возможностей — если четное число, делаешь это, если нечетное, делаешь то, и очень скоро на одной-единственной машине можно делать все более и более изощренные вещи, если только ты достаточно умён.
[…]
Но если вы когда-нибудь работали с комрьютерами, вы понимаете, что это за болезнь — восхищение от возможности увидеть, как много можно сделать.» — Р. Ф. Фейнман

О том, что Фейнмана стоит почитать, я знал давно. Когда был школьником и увлекался физикой, мне советовали его лекции по физике. Позже неоднократно попадались упоминания его книг. Но в те времена я не представлял себе, где их можно купить. Почему-то это казалось нереально сложным. Уж не знаю, почему.

И вот совершенно недавно, просматривая своих соседей в библе, натыкаюсь на «Вы, конечно, шутите…». Пройти мимо было бы преступлением :)

Не смотря на то, что успел прочитать только полкниги уже спешу поделиться впечатлениями. А впечатления — супер. Очень познавательно, море интересных фактов, историй, юмора. Период «Манхэттенского проекта» пока что самый интересный.

И ещё одна цитата для подогрева интереса :)

«А [Джон] фон Нейман, подал мне интересную идею: вовсе не обязательно быть ответственным за тот мир, в котором живешь. В результате совета фон Неймана я развил очень мощное чувство социальной безответственности. Это сделало меня счастливым человеком с тех пор. Именно фон Нейман посеял зерна, которые выросли в мою активную позицию безответственности!» — Р. Ф. Фейнман

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. 

LegalCamp ‘09

LegalCamp09

LegalCamp заинтересовал меня сразу, как только я о нём услышал. После начавшейся заворухи с «законом 404» интерес к теме подскочил настолько, что я даже был готов заплатить за участие в кемпе, чтоб услышать мнение компетентных людей.

Но, зайдя на сайт с целью уточнить реквизиты счета, был приятно удивлён — LegalCamp дарят бесплатный вход каждому, кто пропиарит у себя в блоге событие. Ну как можно от такого отказаться? ;)

Основная повестка дня на LegalCamp для меня:

  • Закон 404 — насколько реально принятие, что народ планирует делать в случае его принятия, как будут обстоять дела с правовой защитой от неправомерного применения закона 404 проектов, которые хостятся в украине.
  • Правовая поддержка интернет-бизнеса: в-первую очередь — правовая защита от государства (как с правовой точки зрения организовывать массовый платный веб-сервис), во-вторую — от конкурентов.
  • Ещё было бы интересно проконсультироваться на тему OpenSource лицензий. Как они вписываются в наше правовое поле, как они совмещаются с закрытым кодом в рамках нашего законодательства и т. п.

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

Что почитать интересного

old book

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

Для того, чтоб книги не вылетали из головы как ветер и год-два спустя можно было вспомнить, о чем была книга, где-то год назад завел себе список в Reading List на LinkedIn.

В принципе, сервисом можно было бы пользоваться, если бы не два недостатка.

  • Первый — заточеность под Амазон. Т.е. в список можно добавлять только те книги, которые есть в Амазоне. Т.к. я последнее время читаю преимущественно зарубежные книги, то с этим недостатком мирился.
  • Второй — очень низкая стабильность. От 10% до 20%1 запросов сваливаются с извинениями «Sorry, service is temporary unavailable». Особенно сильно это раздражает, когда хочешь засабмитить коментарий к прочитаной книге. :/

Вобщем, постоянные глюки и ограниченость сервиса, намекали на то, что нужно искать/делать что-то лучшее.

И вот совсем недавно, буквально вчера, это лучшее было найдено — Библа. Что такое Библа? Как говорит автор сервиса:

«Библа — это сервис, помогающий мне ориентироваться в океане книг и осмысленно с ними работать.»

Основная функция библы — ведение списков книг. Базовые: «Прочитал», «Хочу прочитать», «У меня есть». И сколько угодно дополнительных (например вот таких). Работать со списками удобно — легко добавлять новые книги и копировать из других списков. К примеру понравившуюся книгу, которую нашел у другого пользователя. Книги в списки добавляются просто и удобно: можно дать прямой линк на Амазон/Озон, просто указать автора и название книги, или же воспользоваться букамрклетом2. К каждой книге можно оставить заметку, метки.

Благодоря «соседям» легко находить новые интересные для себя книги.

Вобщем, библа оказалась настолько хороша, что я сразу же завел себе «библатеку».

А какую последнюю книгу ты прочитал, %username%? ;)


  1. Оценка проводилась крайне низкоточным прибором — «на глаз». По сему, вопрос точности не стоит в принципе ;) 

  2. Букмарклетом попользоваться ещё не успел. 

book review: NHibernate in Action

NHibernate in Action

Наконец-то дочитал. Хоть в целом кника и хорошая, под конец я немного утомился. Всё-таки 400 страниц — это не шутки :)

В целом — превосходная книга. Читается легко. Главное — пропускать разделы, относящиеся к какому-то неинтересному в данный момент аспекту, лишь запомниная, что позже можно будет вернуться.

В книгу заложена прочная фундаментальная база: проблема персистентности вообще, что такое ORM, зачем и как его использовать, управление сессиями, транзакциями. Проблемы нестыковки объектно-ориентированой и реляционной парадигм.

Кроме NHibernate уделено внимание чуть-ли не всем смежным областям: DDD, TDD, архитектурные шаблоны, интеграция с остальным кодом, логирование, проблемы производительности и многое-много другое.

Просто тьма примеров. Можно использовать справочником по маппингу, запросам (как HQL, так и Query API), NHibernate API да и вообще держать настольной книгой.

Кроме того книга по-настоящему вдохновляет — прочитав очередной раздел так и хочется тут же засучить рукава и взяться за код.

Недостаток я бы выделил один — такой же, как и у всех книг — пока книга писалась, технологии ушли вперёд. Fluent NHibernate и LINQ 2 NHibernate упоминаются, но на момент написания книгм оба проекта только начинались, так что удостоились только упоминания.

В целом вердикт — 5 баллов и must read для тех, у кого предполагается длительная работа с NHibernate.

PS Для пришельцев из Java-мира тем же изданием ранее была выпущена книга Hibernate in Action. Думаю, она не хуже :)

Мысли об образовании: Зачем нужны эти курсачи?

Тяжело в учении

Сейчас довольно модно ругать систему высшего образования. Занимаются этим как студенты, бывшие выпускники, так и те, кто по какой-либо причине сошел с пути «получения корочки». Т.е. все, кому не лень.

Хочу поделиться мыслью, которая пришла ко мне уже после окончания ВУЗа. Речь пойдет о курсовых работах и проектах.

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

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

А всё потому, что:

«Курсачи и дипломы учат тому, как организовать работу над проектом»

И вот почему:

  • В самом начале выбирается тема работы — краткая формулировка проблемы, которая будет решаться. Тема позволяет ограничить поле интересов и оставаться в рамках задачи, быть конкретным при решении задачи.
  • После чего ставится цель работы. Что примечательно и очень важно, цель ставится до начала работы.
  • Далее — формируется техническое задание — формальные критерии проверки конечного результата. Используя это тех. задание, в конце проекта можно определить, то ли получилось, что хотелось.
  • Определяется объём и структура работ. Количество страниц текста, обязательные разделы, чертежи, вычисления, и т.п. В дальнейшем это очень помогает отслеживать состояние проекта — сколько сделано, сколько осталось сделать, скорость выполнения работ.
  • Задаются сроки.

Т.о. по-сути формулируется SMART-задача. Да, часть параметров (объём и сроки) «спускаются сверху», но ведь студент только учится, и такой «спуск» упрощает жизнь и позволяет сфокусироваться на главном.

В итоге, студентам вручается универсальный алгоритм, если угодно — процесс, используя который можно решать практически любые задачи. Причем не просто вручается, а студенты учатся этому алогритму на конкретных примерах. Что намного лучше, ведь, как известно, «Скажи мне, я забуду. Покажи мне, я сделаю. Научи меня, я запомню.»

P.S.Интересно, а как у гуманитариев в этом плане?

XML — это здорово

Читаю тут «NHibernate in Action»:

«Mapping documents written in and with XML are lightweight, are human readable, are easily handeditable, are easily manipulated by version-control systems and text editors, and may be customized at deployment time…»

К сожалению, ребята это всерьёз. А вообще — книга отличная. Рекомендую.

Как отколючить MS SQL 2005 Reporting Service

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

Start → Microsoft SQL Server 2005 → Configuration Tools → SQL Server Surface Area Configuration

В появившемся окне выбираем Reporting Services в нужном инстансе. Дальше все очевидно: стопаем сервис и переводим его с автоматического старта в ручной (или вообще дизаблим, зависит от того, на сколько он достал ;)

Вот и всё — приятного дебага :)