Спроба застосувати expat в якості процесора шаблонів шляхом заборони розбору external entities і встановлення свого skipped entities handler - провалилась: якщо якась сутність зустрічається більше одного разу, то хендлер викликається тільки для першої появи.
September 2005 Archives
Останній ПРОГРАМІСТСЬКИЙ жарт, від якого я майже плакав від щастя:
Буратино дали три яблука. Два він з'їв. Питання: скільки в нього залишилось яблук?
Непрограміст швидко скаже "Одне!" і увесь день пишатиметься собою.
Правильна Програмістська Відповідь: "Невідомо. Бо невідомо скільки яблук було в нього до того."
Мораль: обнуляйте змінні ;-)
Цікавий лінк привів у своєму журналі : 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: Здається, саме південні Штати більше всього за Буша голосували?..
Криза, блін... Працювати тупо не хочеться :-(((