Вступ до Emacs Org-Mode (відео)

[2012/04/02 – 09:16, YurB]

Відео про Org-Mode українською (20 хв):

Зберігання паролів у Emacs

[2012/03/12 – 14:35, YurB]

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

Для цього треба:

  1. Мати або створити власну пару ключів GPG;
  2. Створити файл налаштування forms-mode
  3. Написати функції, які б дозволили легко здійснювати пошук у базі і додавати до неї записи.

Читати далі »

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

[2012/03/10 – 09:48, dor]

Нещодавно мені закортіло написати короткий код (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]. Ось тут — невеличка демонстрація.

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

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

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

[2012/02/28 – 17:43, dor]

Утиліту 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

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

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

[2012/02/28 – 15:50, dor]
  1. Запускаємо inkscape. Розгортаємо на весь екран, натискаємо п’ятірку («вписати документ у вікно»).
  2. Додатки –> Відтворити –> Календар
  3. На закладці «Локалізація» вписуємо назви місяців, днів тижня; на закладці «Кольори» можемо експериментувати з кольорами. Вибираєте системне кодування:
  4. О, до речі, у «Налаштуваннях» вибираємо понеділок як перший день тижня.

  5. Натискаєте «Застосувати». Як бачите, вікно налаштувань не ховається; при цьому на календарі можна клацнути (виділити його), щоб редагувати, посунути, видалити тощо:
  6. Тобто, зараз календар можна видалити, змінити налаштування і знов натиснути «Застосувати».

Додаткові «бантики» »»

Blender: озеро

[2012/02/24 – 01:33, YurB]

Хтось (Jonathan Esquivel) зробив дуже гарний, при тому не задовгий (12хв) швидкоплин (timelapse) створення озера у Blender:

Джерело: blendernation.com

ffmpeg: стрибки у входовому файлі

[2012/02/24 – 00:44, YurB]

Якщо ви, так само як і я чи цей користувач, скориставшись параметром -ss у ffmpeg, довго чекаєте, поки програма стрибне у потрібне місце, або при тому отримуєте від неї помилки (чи навіть, як у мене, вона в певний момент перелазить через оперативку й помирає), поставте -ss перед -i.

Помилка-індикатор:

Buffering several frames is not supported. Please
consume all available frames before adding a new one.

LilyPond: Нотоносець без ліній

[2012/02/23 – 01:07, YurB]

У LilyPond є можливість друкувати ноти на невидимому нотному стані. Таке може стати в пригоді, наприклад, в навчальному процесі чи алеаторичній музиці. Ось як це робиться:

\override Staff.StaffSymbol #'transparent = ##t

Цю команду слід додати прямо перед нотами. Якщо ж Вам потрібно щоб невидимими стали й тактові риски, можете скористатись додатково ще такою командою:

\override Staff.BarLine #'transparent = ##t

Щоб відключити показ номерів тактів, слід додати блок

\layout {
  \context {
	\Score
	\remove "Bar_number_engraver"
  }
}

поза будь-якими блоками \score, або у якомусь із них, якщо потрібно це застосувати лише до одного розділу твору.

Більше про приховання окремих об’єктів читайте тут (англ.).

Запис екранного відео зі звуком з мікрофона (Gnu/Linux)

[2012/02/21 – 04:50, YurB]

Нарешті знайшов придатний спосіб писати екранні відео. Якщо й у вашому дистрибутиві gtk-recordmydesktop та istanbul не працюють через якісь неузгодження з libtheora, цей допис може стати в пригоді. Що вам в такому випадку потрібно:

  • екран, на якому працює X11;
  • програми ffmpeg та arecord (ця, мабуть, вже є у вашій системі);
  • текстовий редактор;
  • термінал.

Читати далі »

tcpdump: відсіювання HTTP GET

[2012/02/06 – 11:41, dor]

Уявимо себе адміністратором сервера, що перебуває під атакою–відплатою за EX.ua (одразу зауважу, що я не є таким адміністратором, у мене просто гарна уява).

У першу чергу, нам було би цікаво, що саме летить на нас, що саме «валить» наш сайт «із ніг».

Щоб довідатися, є різні способи — скажімо, дивитися журнал веб-сервера, дивитися трафік на сервері утилітою tcpdump чи подібною; можна на проміжному комутаторі відгалужувати трафік і дивитися його tcpdump’ом десь на іншому комп’ютері… Але, так чи інакше, завжди цікаво знайти найбільш універсальний інструмент.

На мій погляд, найбільш універсальним інструментом є саме tcpdump.

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

Наприклад, може бути зручним використання утиліти fail2ban; але цей скрипт працює на одному ядрі і на гарно навантаженому сервері (яким, імовірно, є кожен сервер під атакою) почувається невпевнено. Але ми можемо суттєво полегшити йому життя, якщо не змушуватимемо читати журнал веб-сервера, а «згодовуватимемо» вже добре проаналізовану інформацію. Наприклад, із зібраної tcpdump’ом інформації відбирати адреси, з яких надходить більше X [кіло]запитів за одиницю часу.

Отже, tcpdump виглядить («має вигляд» — «виглядить», а не «виглядає»!) досить зручним інструментом. Тож спробуємо з його допомогою ловити лише HTTP GET пакети.

А тепер зазирнемо у нутрощі пакетів »