All articles, tagged with “tips”

Сверим часы

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

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

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

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

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

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

Хозяйке на заметку #1: Элементы DRY в консоли

Часто, когда работаю в консоли возникает необходимость выполнить новую команду с тем же аргументом, что и предыдущую. Например:

$> hg diff file.py # посмотрели изменения в файле
$> hg rev file.py  # и откатили их

Чтоб следовать принципу DRY и не набирать руками весь текст можно пойти несколькими путями.

На заре своего знакомства с shell, я пользовался старой-доброй копипастой: выделил кусок текста — вставил третьей кнопкой мыши. Дёшево и сердито :)

Немного позже подглядел как кто-то использует!$. Суть в следущем — вводишь в шелле, например vim !$<RET>, а шелл !$ заменит на последний аргумент последней комманды из истории. Правда для работы в интерактивном режиме использовать !$ не очень удобно, т.к. замена происходит только после ввода комманды. К счастью, zsh умеет делать expand для !$ по нажатию на <TAB>. Насчёт bash не в курсе, возможно он тоже умеет проделывать такие фокусы.

И вот совсем недавно наткнулся на ещё более удобный вариант — хоткей <ESC>-.. Принцип тот же, что и у !$: подставляется последний аргумент из истории. Но есть два приятных отличия.
Во-первых, замена происходит in-place — результат видно мгновенно.
И во-вторых, нажимая последовательно <ESC>-. можно перемещаться в глубь истории. Работает в zsh, bash.

UPD: Мне тут только что piranha подсказал, что <ESC>-. === M-.. M почти 100%-но означает Alt. Впрочем, знатоки емакса это знали и раньше, ибо в консоли, как известно, работают емаксовые бинды.

Ubuntu, Emacs & Consolas

Захотелось душе хорошего — Emacs с приятным шрифтом. piranha посоветовал Consolas. К сожалению, прикручивание шрифта заняло больше времени, чем ожидалось, а значит достойно фиксации. Вдруг кому пригодится ;)

Шаг 1: устанавливаем шрифт

Действуем по инструкции:

  1. Качаем Microsoft PowerPoint 2007 Viewer (примерно 25 МБ).
  2. Распаковываем шрифты: $> cabextract PowerPointViewer.exe && cabextract ppviewer.cab
  3. Копируем шрифты в локальный каталог шрифтов: $> find -iname '*ttf' -exec cp {} ~/.fonts/ \;

Опционально можно настроить сглаживание — ходят слухи, что так шрифты будут симпатичней.
В ~/.fonts.conf добавляем:

<match target="font" >
 <test compare="eq" name="family" >
  <string>Consolas</string>
  <string>Monaco</string>
  <string>Inconsolata</string>
 </test>
 <edit mode="assign" name="rgba" >
  <const>rgb</const>
 </edit>
 <edit mode="assign" name="autohint" >
  <bool>true</bool>
 </edit>
 <edit mode="assign" name="antialias" >
  <bool>true</bool>
 </edit>
 <edit mode="assign" name="hinting" >
  <bool>true</bool>
 </edit>
 <edit mode="assign" name="hintstyle" >
  <const>hintslight</const>
 </edit>
</match>

Шаг 2: Подключаем шрифт к Emacs

$> cat ~/.Xresources
Emacs.font: Consolas-12
$> xrdb -merge ~/.Xresources

Если после запуска в емаксе видите шрифт консолас — мои поздравления ;)
Если же емакс отказывается запускаться со словами No fonts match Consolas-12, то у вас скорей всего емакс моложе 23 версии. Что весьма вероятно, т.к. на момент написания эта версия находится в разработке. Самый простой способ исправить эту проблему — установить пакет emacs-snapshot.