четверг, 26 ноября 2009 г.

Manpages для системных вызовов

Потребовалась документация для системных вызовов в linux. Вспомнил, что встречал подходящую коллекцию man-страниц. Соответствующий пакет: manpages-dev

среда, 25 ноября 2009 г.

Отключение русскоязычного интерфейса в git-gui

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

Так оказалось, что в ubuntu 9.10 имеются проблемы с отображением русских букв в интерфейсе git-gui. Поскольку для меня английский язык является техническим, и соответственно англоязычный интерфейс во многих случаях оказывается более удобным, то выбор пути решения оказался очевиден -- отключить русскоязычный интерфейс.

Самым простым способом сделать это, оказалось удалить файл:
/usr/share/git-gui/lib/msgs/ru.msg

Буду благодарен, если кто-нибудь подскажет более верный путь.

UPD: Для gitk изменения аналогичные.

пятница, 20 ноября 2009 г.

Покорение GnuPlot

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

Потратив некоторое время на поиски и изучение, я пришёл к следующему скрипту для GnuPlot который делает почти то, что мне нужно:

set sample 1000

set output "output.svg"
set terminal svg size 800,600 font "Helvetica, 10"

set xtics axis 5 scale 0.5
set ytics axis 10 scale 0.5
set mxtics 2
set mytics 2

set key below nobox vertical
set border 3

plot \
"bw.txt" using ($1):($2 / 1024) \
title 'bandwidth (KB)' \
with lines \
lc rgbcolor 'dark-green', \
"mw.txt" using ($1):($2 / 1024) \
title 'max_window (KB)' \
with lines \
lc rgbcolor 'dark-blue', \
"rto.txt" using ($1):($2 * 10) \
title 'rtt_timout (0.1s)' \
with lines \
lc rgbcolor 'red', \
"tout.txt" using ($1):(110) \
title 'timeouts' \
with impulses \
lc rgbcolor 'light-gray'


четверг, 27 августа 2009 г.

Приближённое вычисление функции arctg(x)

Не стал бы публиковать данное сообщение в блоге, если бы не один забавный факт.

Оказывается не для всех метрик приближение с использованием сплайнов даёт лучший результат. Например, приближение функции арктангенс на отрезке [0, 1] одним отрезком спалайна оказалось менее оптимальным, чем приближение некоторым другим многочленом третьей степени. Один из таких многочленов используется в следующем примере.

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

/**
 * Реализация функции arctg(x)
 * (погрешность на отрезке [0, 1] не более .00652- радиана)
 */
double atanImpl(double x)
{
  return (((-0.076413) * x + (-0.13167)) * x + 1) * x;
}

/**
 * Реализация функции atan2
 */
double atan2(double y, double x)
{
  if (y >= 0.0) {
    if (x >= 0.0) {
      if (x >= y) {
        return atanImpl(y / x);
      } else {
        return ONE_HALF_PI - atanImpl(x / y);
    } else {
      x = -x;
      if (x < y) {
        return ONE_HALF_PI + atanImpl(x / y);
      } else {
        return PI - atanImpl(y / x);
      }
    } else {
      if (x <= 0.0) {
        if (x <= y) {
          return - PI + atanImpl(y / x);
        } else {
          return - ONE_HALF_PI - atanImpl(x / y);
        }
      } else {
        x = -x;
        if (x > y) {
          return - ONE_HALF_PI + atanImpl(x / y);
        } else {
          return - atanImpl(y / x);
        }
      }
    }
  }
}

UPD:
/**
 * Реализация функции arctg(x)
 * (погрешность на отрезке [0, 1] не более .0049- радиана)
 * http://www.autex.spb.ru/download/...
 *                     .../dsp/dspa/dspa2006/t1/1-42.pdf
 */
double atanImpl(double x)
{
  return (32 * x) / (32 + 9 * x * x);
}

UPD2: Математическая запись тех же формул.

среда, 8 июля 2009 г.

Трудно искать чёрную кошку в тёмной комнате, особенно если её там нет

Несколько дней пытался придумать способ, как эффективно организовать произвольный доступ к коллекции, поверх inputIterator'ов. И это всё в stateLess окружении.

воскресенье, 14 июня 2009 г.

И прошёл год

Вот и прошёл очередной год. Даже больше. Поступив в аспирантуру, в этом году я не смог организовать очередной турнир программ. И турнир прошёл без меня. И знаете, я этому рад. Это значит, что я далеко не последний энтузиаст в этой области.

Но дневник я всё таки попробую вести.