September 2005 Archives

Спроба застосувати expat в якості процесора шаблонів шляхом заборони розбору external entities і встановлення свого skipped entities handler - провалилась: якщо якась сутність зустрічається більше одного разу, то хендлер викликається тільки для першої появи.

Останній ПРОГРАМІСТСЬКИЙ жарт, від якого я майже плакав від щастя:

Буратино дали три яблука. Два він з'їв. Питання: скільки в нього залишилось яблук?
Непрограміст швидко скаже "Одне!" і увесь день пишатиметься собою.
Правильна Програмістська Відповідь: "Невідомо. Бо невідомо скільки яблук було в нього до того."

Мораль: обнуляйте змінні ;-)

Цікавий лінк привів у своєму журналі : top-новини, що не було пропущені цензурою на корпоративні канали Сполучених Штатів.

Блін... Пів-на-четверту. З сусідньої кімнати чути, як брат в Старкрафт рубає зергів. А я... Я морально готуюсь до ребута: зібрав FreeBSD6 і зараз буду її ставити.

В моєму новому ноуті є WiFi-картка (Intel PRO/Wireless 2915ABG), але 5ка його не підтримує. В hackers@ порадили переїхати або на CURRENT або на RELENG_6. Вибрав друге та ще й з SHED_ULE. Подивимось, що з цього виросте.

Необхідність в тій-же статистиці змусила відкрити підручники з чисельних методів і повторити розділи про інтерполяцію та апроксимацію.

Тепер мене мучить ділемма: написати матричні/векторні примітиви самому чи скористатися тим-же lapack++.

Поверхньо розібрався з gnuplot. Дуже приємна штука як для візуалізації графіків. Вміє будувати цілком пристойні графіки функцій, заданих як аналітично, так і таблично.
Мені gnuplot знадобився для візуалізації статистики. Вирішальну роль зіграли тут наявність batch mode та cпроможність виводити свої графіки на цілу купу терміналів, в тому числі PDF та PNG.

Тож, поїхали:

Припустимо, в мене є журнал, в який пишеться кількість клієнтів. Журнал має дуже простий формат:


2005-08-05 2005-08-05 100
2005-08-05 2005-08-04 129
2005-08-05 2005-08-02 156
2005-08-06 2005-08-06 76
2005-08-06 2005-08-05 110
2005-08-06 2005-08-03 146
2005-08-07 2005-08-07 79
2005-08-07 2005-08-06 95
2005-08-07 2005-08-04 138

Кожен день в цей журнал додається три записи: кількість унікальних клієнтів за сьогодні, останні два дня та останні три дня.

Я хочу намалювати графік кількості унікальних клієнтів за кожен день. Тобто, з трьох записів мені знадобиться тільки одна, де значення першого і другого поля співпадають.

Програмка (ледве язик повернувся назвати це програмкою :-) для gnuplot виглядає так:


set output "stats.png"
set terminal png
set title "Clients graph"
set xlabel "Data"
set ylabel "Number of clients"
set xdata time
set timefmt "%Y-%m-%d"
set xrange ["2005-07-17":"2005-09-01"]
plot "< awk '$1 == $2 {print}' clients.log" using 1:3 with linespoints

Особливого пояснення тут потребують тільки останні 4 рядки. set xdata time говорить gnuplot, що по осі абсцис буде відкладатись дата та/або час. Наступний рядок задає формат вхідних даних в форматі (пардон за тавтологію!) strftime. При використанні часових рядів gnuplot вимагає, щоби диапазон значень було задано явно, що і робить рядок set xrange.

Ну і апофеозом є останній рядок, в якому, власне, і виконується малювання графіку. Тут команда plot приймає на вхід результат виконання утіліти awk, котра відфільтровує зайві рядки, бере перший і третій стовбчик і малює отакий симпатичний графік:

В штатах, в New Orlean стрілятимуть по своїм на ураження.
Товариш каже, що NO давно відомий своєю безмежною кількістью наркоманів і об'ємом обігу наркотиків, тобто мародери там не на порожньому місці з'явились.

PS: Здається, саме південні Штати більше всього за Буша голосували?..

Криза, блін... Працювати тупо не хочеться :-(((

Сторінки

Про цей Архів

This page is an archive of entries from September 2005 listed from newest to oldest.

August 2005 is the previous archive.

October 2005 is the next archive.

Свіжі записи можна подивитись на головній сторінці. Все інше - в архіві.