Brownian motion

around the essentials…

 

Posts Tagged ‘[lang_uk]Програмування[/lang_uk][lang_en]Programming[/lang_en]’

LilyPond → WordPress: update your sheets easy

Sorry, but this post is not available in English yet

(1 votes, average: 5 out of 5)

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

Я колись писав, як можна швиденько зробити календар у 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)

Graphing SNMP counters with Python

I have rebrandered my snmp traffic grapher (see here) — now it is SPy Bulk Grapher, or SPyBG, hip-hop!-) — and created a repository at github: SPyBG.

This happened (i had not thought of this before, at all) because i started to feel like i want to add some features and decided that this would be much easier with code management, using branches etc-etc — so, whether to make repository open or closed (at bitbucket.org, for instance) was not a question at all :О)

(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)

mm-grid in PostScript, a better one

A better mm-grid in PostScript — it’s more convenient to set grid margins from paper’s edge.

Well, and this algorithm i like more :-)

It seems, ps2pdf liked it more too — it created 5,7K size pdf (instead of those 54K for prev. code).

» Read more — code listing »

(No Ratings Yet)

mm-grid in PostScript

Suddenly started to feel like i must make a mm-grid sheet urgently. Decided to read about PostScript finally.

Here is a resulted pdf (ps2pdf mm-grid.ps) — pdf, 54K.

Definitely, it’s not the best algorithm :O)

I will improve .)

Update: here is a better one.

» Read more — code listing »

(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)

Pages

Recent Posts

Most Rated

Highest Rated

Tags

Archives