GNU R: график плотности числа точек

Иногда бывает нужно построить то, что называется диаграммой рассеяния (scatter-plot). Когда число точек на графике превышает некоторый предел, график становится почти бесполезен потому-что на нем появляется гигантская клякса (это точки (или другие символы, которые изображаются) многократно налезают друг на друга). В таких случаях предлагается строить график плотности числа точек. Сначала нужно вычислить её (хоть каким-нибудь образом), в GNU R для этого предусмотрена функция kde2d из пакета MASS. Потом полученный объект можно рисовать через contour.

Пример который рисует отличную разноцветную диаграмму:

density <- kde2d(x1,x2,lims=c(lower1,upper1,lower2,upper2))
mycol <- function(n) gray((n+1):0/(n+1))
filled.contour(density,color.palette=mycol)
filled.contour понимает title и все остальное.

smtp_bind_address

Параметр smtp_bind_address для postfix позволяет привязать ip-адрес для соединений. Бывает полезно, когда на одном интерфейсе привязано несколько(много) ip-адресов, при этом одинаково доступный relayhost предпочитает один определенный (либо явно, либо по причине что один из адресов не резолвится в обе стороны).

udev и video4linux

Оказывается, /lib/udev/rules.d/60-persistent-v4l.rules делает символические ссылки на устройства video4linux (/dev/videoN): /dev/v4l/by-id и /dev/v4l/by-path.

Очень удобно оказалось использовать, например, /dev/v4l/by-id/usb-0471_0329_01690000A6480288-video-index0 вместо /dev/video0 (или /dev/video1), когда камер много.

v4l (video for linux) 1.0

Это пост для миграции с первой версии v4l API на v4l2.

Если правильно понимаю, поддержка первой версии была окончательно удалена этим коммитом. Где-то между ядром 2.6.36 и 2.6.37.

dhcp клиенты

В openSUSE 11.4 оказалось два dhcp-клиента: dhclient (авторства ISC из пакета dhcp-client) и dhcpcd (почему-то версии 3.2.3 авторства авторов dhcpcd из одноименного пакета). Кстати, последний наотрез отказался удаляться, объясняя это тем, что пакет с mkinitrd от него зависит.

Переключаются они между собой в файле /etc/sysconfig/network/dhcp, там есть соответствующая переменная DHCLIENT_BIN.

p.s. А все это для чего. Утром словил с dhcpcd вот это:

wlan0: offered 192.168.1.1 from 192.168.0.1 `host.local'
wlan0: got subsequent offer of 192.168.1.2, ignoring 
wlan0: checking 192.168.1.1 is available on attached networks
wlan0: ARPOP_REPLY received from 192.168.1.1 (00:12:34:56:78:9a)

И пришлось использовать dhcp-клиент, который сделал мне хорошо.

Драйвер базы данных для Akonadi

Выяснилось, что тот самый Akonadi запускает сервер MySQL для собственного существования. Разработчики на этот счет пишут, что ничего лучше не может быть, они честно пробовали SQLite, но он плохо у них справляется с одновременными запросами.

Однако есть способ открутить его оттуда. В файле ~/.config/akonadi/akonadiserverrc есть строчка Driver в секции General, туда подходят следующие значения (не все из них могут быть включены при компиляции):

  • QMYSQL, QMYSQL_EMBEDDED (Mysql)
  • QSQLITE, QSQLITE3 (SqLite)
  • QPSQL (Postgresql)
  • QODBC (Virtuoso)

Вполне богатый выбор.

GPS как источник точного времени в NTP

Драйвер приемника, передающего данные по стандарту NMEA, живет по адресу 127.127.20.x (в этом случае читать его ntpd будет из /dev/gpsx). Нужно позаботиться о наличии символической ссылки на соответствующее устройство: /dev/ttySx (для работы через последовательный порт), /dev/ttyUSBx (для подключения через USB), или /dev/rfcommx (для работы через rfcomm).

Далее надо сделать доступным для ntpd это устройство: проследить, что оно создается в chroot, если ntpd запускается там, установлены ли правильные права доступа, нет ли ограничений на доступ для процесса ntpd в профилях AppArmor или SELinux.

После этого, нужно добавить в конфигурационный файл server 127.127.20.0. Это некоторая форма записи желания работать с драйвером Generic NMEA GPS. Полный список доступных драйверов находится здесь. Они все настраиваются аналогичным образом.

При удачном старте ntpd сообщит в логах примерно следующее:
22 Jun 14:13:15 ntpd[2165]: GPS_NMEA(0) serial /dev/gps0 open at 4800 bps

При этом ntp -np сообщит что-то вроде этого:
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*127.127.20.0    .GPS.            0 l   11   64   77    0.000  -99.226  59.612
 127.127.1.0     .LOCL.          10 l    -   64    0    0.000    0.000   0.000