Brownian motion

around the essentials…

 

Публікації Tagged ‘[lang_uk]Програмування[/lang_uk][lang_en]Programming[/lang_en]’

Знову календар нашвидкуруч

Я колись писав, як можна швиденько зробити календар у Inkscape, — а зараз я хочу ще швидше робити ще кращий (як на мене) календар, користуючись PGF у LaTeX.

Отже, імітуємо календарі від ReAl — місяці розташовані саме так, назви днів тижнів — саме отак:

Далі »»

(1 votes, average: 5 out of 5)

Трохи роботи .)

Щойно дописав підтримку IPv6 для свого конфігуратора (Django/Python) шейпера (HTB/Linux).

«Воно жахливе, але працює чудово»™ .)

(No Ratings Yet)

How to cook Pizza with SVG?

Чудова стаття (собі у нотатник): http://y3x.ru/2012/08/how-to-cook-pizza-with-svg/.

(No Ratings Yet)

Gnuplot — малюємо час на отримання результату від Informix’а

Є Asterisk, через який дзвонить купа клієнтів. Є задача — отримати від сервера Informix (не питайте, бо не знаю) кількість секунд, які певний клієнт може наговорити, дзвонячи на певний номер телефону. Тобто, для спрощення, на сервер іде запит [номерА, номерБ], сервер віддає число (>=0).

При цьому є підозра, що під кінець місяця сервер думатиме довше; є також підозра, що ті клієнти, що більше говорять, довше чекатимуть відповіді.

Хочеться це все якось бачити. Для цього у той скрипт, який бере дані з Informix’а, додаємо двійко рядків, щоб писати журнал, у приблизно такому вигляді:

# час, «номер клієнта», куди дзвонив, залишок секунд, час на отримання
# звісно, всі номери <номерБ> різні:
"2012-04-05 17:29:34.455199","01",<номерБ>",0,"0:00:00.078631"
"2012-04-05 17:46:47.482675","02",<номерБ>",0,"0:00:00.895389"
"2012-04-05 17:48:19.594244","02",<номерБ>",0,"0:00:00.029423"
"2012-04-05 17:53:18.827345","02",<номерБ>",0,"0:00:00.033318"
"2012-04-05 18:02:59.955417","02",<номерБ>",0,"0:00:00.042353"
"2012-04-05 18:05:10.750765","02",<номерБ>",0,"0:00:00.031215"
"2012-04-05 18:05:53.240702","02",<номерБ>",0,"0:00:00.029587"
"2012-04-05 18:06:47.190297","03",<номерБ>",0,"0:00:00.063169"
"2012-04-05 18:56:49.293827","02",<номерБ>",0,"0:00:01.110830"
"2012-04-05 19:03:51.475956","02",<номерБ>",0,"0:00:00.032815"
"2012-04-05 19:42:59.389716","02",<номерБ>",0,"0:00:00.034776"

Так, зараз на всі запити сервер віддає нуль, не зважайте .)

Зверніть також увагу, що у журнал падає, насправді, не 01, 02, 03 тощо, а номер телефону, з якого йшла спроба дзвонити, — але я ховаю номер телефону, ховатиму його й на графіку, і у скрипті нижче для цього буде вжито певних заходів (тобто, це робитиму не я, а awk). Тобто, замість номеру телефону awk підставлятиме «номер клієнта».

На графіку хочемо бачити щось таке (по координаті X буде час):

  • червоними хрестиками — час відгуку;
  • синіми колами — час від попереднього дзвінка;
  • для відгуків > 0.5 секунди біля хрестика писатимемо клієнта;
  • і ще якісь усереднення.

Я нижче поясню, чому це не надто ілюстративно для даної задачі, і що варто було б зробити натомість, але — нижче.

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

Отже, цей скрипт тягне журнал з іншого сервера, прибирає лапки, додає до кожного рядка різницю між часом запису цього рядка (перше поле у журналі) і часом запису попереднього, замість номерів телефонів клієнтів пише абстрактний «номер клієнта» (кожному наступному номеру телефону — який ще не траплявся — дає наступний порядковий номер) і записує «скрипт» для Gnuplot’а.

Читати далі »»

(No Ratings Yet)

WordPress: грати всі долучення

Коментуючи одну з попередніх публікацій, Юрко спонукав таки мене написати короткий код (shortcode) для вставляння програвача з переліком всіх долучених до публікації аудіофрагментів.

Тобто, я хочу до даної публікації доліпити кілька mp3 файлів, підписати їх і у публікації використати якийсь короткий код… Словом, нижче.

У файлі functions.php дописуємо таке:

function get_player( $post ) {
  $urls    = array();
  $titles  = array();
  $artists = array();
 
  $attachments = get_children(
      array('post_parent' => $post->ID,
            'post_type' => 'attachment',
            'post_mime_type' => 'audio/mpeg',
            'order_by' => 'menu_order', 'order' => 'ASC'));
  if( $attachments ) {
    foreach ( $attachments as $att_id => $att ) {
      // allow non-latin chars in file names:
      $url = wp_get_attachment_url($att_id);
      $url = preg_replace('#(.*/)([^/]*)$#e', "'\\1'.rawurlencode('\\2')", $url);
      $url = rawurlencode( $url );
      $urls[] = $url;
 
      $title  = rawurlencode( str_replace(",", ":", $att->post_title) );
      $titles[] = $title;
 
    }
    $player_id = 'audioplayer-' . $post->ID;
    $player = '<p class="audioplayer_container"><div class="np-audioplayer" id="'. $player_id .'">(No Adobe Flash Player?..)</div></p>' . "\n"
            . '<script type="text/javascript">' . "\n"
            . '    AudioPlayer.embed("' . $player_id . "\", {\n"
            . '      soundFile: "' . implode(",", $urls)    . "\" // ,\n"
            . '      titles: "'    . implode(",", $titles)  . "\"\n"
            . "    });\n"
            . "</script>\n";
    return $player;
  }
  return false;
}
 
function playall( $atts ) {
  global $post;
  return get_player($post);
}
 
add_shortcode( "playall", "playall" );

Після цього ми можемо у тілі повідомлення написати [playall]. Ось, для прикладу, я причепив до цього повідомлення три фрагменти:

(No Adobe Flash Player?..)

Всі фрагменти я підписав через відповідний інтерфейс вордпреса, їх порядок також виставив саме там. До речі, якщо закоментувати titles: ..., audioplayer візьме відповідне поле з mp3 id tag. У цьому конкретному випадку він звідти бере інформацію для artists («Neville Marriner – Academy of St Martin in the Fields» у даному випадку).

Чому двічі rawurlencode? Не знаю :-)

До речі, у налаштуваннях вордпресівського Audio Player’а треба вимкнути «криптування» посилань.

(No Ratings Yet)

bc як конвертор основи

Утиліту bc (an arbitrary precision calculator language) можна досить зручно використовувати для конвертування чисел між основами, в тому числі у скриптах:

$ echo "ibase=16; obase=2; 5F" | bc
1011111
 
$ echo "ibase=16; obase=8; 32" | bc 
62
 
$ echo "ibase=10; obase=4; 12" | bc 
30

Може, комусь і згодиться.

(No Ratings Yet)

«Малювалка» трафіку на Пітоні

Свою малювалку трафіку (читай тут) я трохи «заребрендерив» — тепер це SPy Bulk Grapher, або ж SPyBG!-) — і виклав git-сховище на github’і: SPyBG.

Сталося це тому (я ж бо ніколи про це якось і не думав), що виникло бажання дописати деякі можливості, а це буде зручніше робити з нормальним керуванням кодом, з розгалуженнями тощо — а думка зробити сховище публічним (не на bitbucket.org, скажімо) вже й не дискутувалася :О)

(No Ratings Yet)

… я Схему би вивчив уже за одне: зі мною вона українською ;О)

(use-modules (ice-9 rdelim))
(use-modules (ice-9 regex))
 
(define конфігфайл "ZyXEL.confg")
 
(define конфіг (open-input-file конфігфайл))
 
(define (знайти-влани)
  (let повторити ((вже-знайдені '()) (влан #f))
       (if (not (eof-object? (peek-char конфіг)))
           (let ((рядок (string-trim-both (read-line конфіг))))
                (if (not влан)
                    (if (string-match "vlan" рядок)
                        (set! влан (list-ref (string-tokenize рядок) 1)))
                    (begin
                        (if (string-match "fixed" рядок)
                            (set! вже-знайдені
                                      (append вже-знайдені (list влан))))
                        (if (string-match "exit" рядок)
                            (set! влан #f))))
                  (повторити вже-знайдені влан))
             вже-знайдені)))
 
(display (string-join (знайти-влани) ","))

Звісно, можна також:

(define якщо if)
(define стань! set!)
(define зліпити-у-рядок string-join)
...

… і користуватися ними. Але то вже занадто :О)

(No Ratings Yet)

Міліметрівка на PostScript — приємніший варіант

Кращий варіант міліметрівки на PostScript — можна задавати межі у міліметрах від краю паперу.

Ну, і аглоритм мені подобається більше :-)

І не лише мені, схоже, — ps2pdf створив pdf розміром 5,4K (замість тих 54K для попереднього варіанту).

» Читати далі — текст програми… »

(No Ratings Yet)

Міліметрівка на PostScript

Приспічило зробити собі шмат міліметрівки — вирішив таки почитати про PostScript.

Ось тут — pdf (ps2pdf mm-grid.ps), 54K.

Очевидно, це не найкращий алгоритм :О)

Вдосконалю .)

Увага: ось тут покращений варіант.

» Читати далі — текст програми… »

(No Ratings Yet)

Making RtConfig (IRRToolSet) in Ubuntu

Having used IRRToolSet in elder Ubuntu releases (elder compilers, libraries etc), i finally decided to compile it under 9.10 (yes, previously made RtConfig works under 9.10 too, «but anyway»).

But something goes wrong, with several files — illegal conversion and «bad» syntax and the like.

So, if you’ll run into the same problems, hope this patch will help.

Apply patch as usually (in the directory where IRRToolSet-4.8.5 is unpacked):

$ patch -p0 --dry-run < IRRToolSet-4.8.5-ubu-patch.diff

If everything is OK, remove --dry-run switch and run again.

(No Ratings Yet)

Django-based HTB shaper configurator

I’ve decided to make it available after some nice people asked for this.

Now i have no time and, let’s say, health to make it better, so please don’t complain :-)

I guess it maybe would be better to make it available somewhere at code.google.com — i would like to work on this code later, surely.

Anyway. Now — as it now is. With incomplete README:

» Читати далі… »

(2 votes, average: 5 out of 5)

Останні публікації

Most Rated

Highest Rated

Теґи

Архіви