Мнения, высказанные здесь, отражают мои личные взгляды. И мнения и взгляды со временем могут меняться.
четверг, 26 ноября 2009 г.
Manpages для системных вызовов
Потребовалась документация для системных вызовов в linux. Вспомнил, что встречал подходящую коллекцию man-страниц. Соответствующий пакет: manpages-dev
среда, 25 ноября 2009 г.
Отключение русскоязычного интерфейса в git-gui
Сложности в отображении текста для Linux не в новинку. Видимо чтобы в приложении корректно отображался, например, русский язык, нужно учесть множество моментов. И тот или иной момент всегда упускают.
Так оказалось, что в ubuntu 9.10 имеются проблемы с отображением русских букв в интерфейсе git-gui. Поскольку для меня английский язык является техническим, и соответственно англоязычный интерфейс во многих случаях оказывается более удобным, то выбор пути решения оказался очевиден -- отключить русскоязычный интерфейс.
Самым простым способом сделать это, оказалось удалить файл:
Буду благодарен, если кто-нибудь подскажет более верный путь.
UPD: Для gitk изменения аналогичные.
Так оказалось, что в ubuntu 9.10 имеются проблемы с отображением русских букв в интерфейсе git-gui. Поскольку для меня английский язык является техническим, и соответственно англоязычный интерфейс во многих случаях оказывается более удобным, то выбор пути решения оказался очевиден -- отключить русскоязычный интерфейс.
Самым простым способом сделать это, оказалось удалить файл:
/usr/share/git-gui/lib/msgs/ru.msg
Буду благодарен, если кто-нибудь подскажет более верный путь.
UPD: Для gitk изменения аналогичные.
пятница, 20 ноября 2009 г.
Покорение GnuPlot
Возникла задача изобразить график с информацией о работе транспортного протокола. Вначале я хотел воспользоваться привычным AdvanceGrapher'ом, но у него обнаружилось ограничение на размер исходных данных. Поэтому пришлось искать альтернативу.
Потратив некоторое время на поиски и изучение, я пришёл к следующему скрипту для GnuPlot который делает почти то, что мне нужно:
Потратив некоторое время на поиски и изучение, я пришёл к следующему скрипту для 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] одним отрезком спалайна оказалось менее оптимальным, чем приближение некоторым другим многочленом третьей степени. Один из таких многочленов используется в следующем примере.
Когда мы приближаем данную функцию многочленом третьей степени, то погрешность такого приближения можно найти аналитически.
UPD:
UPD2: Математическая запись тех же формул.
Оказывается не для всех метрик приближение с использованием сплайнов даёт лучший результат. Например, приближение функции арктангенс на отрезке [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 г.
И прошёл год
Вот и прошёл очередной год. Даже больше. Поступив в аспирантуру, в этом году я не смог организовать очередной турнир программ. И турнир прошёл без меня. И знаете, я этому рад. Это значит, что я далеко не последний энтузиаст в этой области.
Но дневник я всё таки попробую вести.
Подписаться на:
Сообщения (Atom)