Gmail, IMAP та «мітки» кирилицею

Gmail дає змогу чіпляти до листа різні мітки, які з точки зору протоколів витягування пошти (POP3 та IMAP4) є скриньками. В принципі, інтерфейс Gmail також їх показує як скриньки з листами.

Іноді у різних рецептах (згодувати spamassassin’у теку «Спам» із гуглопошти, наприклад) окремим пунктом програми передбачено витягування вмісту такої скриньки (за допомогою fetchmail, скажімо).

Рішення просте:

poll imap.gmail.com protocol IMAP 
   user "nouser@gmail.com" is localuser here
   password 'superpassword',
   folder "[Gmail]/Spam",
   # folder 'from Smith',
   # fetchlimit 1, keep,
   ssl

Але проблема виникає тоді, коли мітки українською (не латинкою, взагалі кажучи). І ніде, чомусь, я рішення не знайшов, саме тому це й пишу.

Справа в тому, що кодування назв скриньок має бути у «модифікованому UTF-7»; це зазначено у RFC 3501 (5.1.3. Mailbox International Naming Convention).

При цьому «службові» скриньки зазначаються як «[Gmail]/Скринька»:

poll imap.gmail.com protocol IMAP 
   user "nouser@gmail.com" is localuser here
   password 'superpassword',
   folder "[Gmail]/&BCEEPwQwBDw-",         # «Спам» — обов’язково "[Gmail]/"
   # folder '&BDIEVgQ0- &BCEEMARIBDoEMA-', # «від Сашка» —  *без* "[Gmail]/"
   # fetchlimit 1, keep,
   ssl

Пошук українською

Задача — хочу шукати у мережі українською мовою. Пошуковики, як на мене, видають забагато результатів російською, це не відповідає моїй внутрішній політиці пріоритетів щодо рейтингів сайтів blah-blah-blah. Хочу — і все.

Для мене — користуюся Firefox’ом та шукаю в Google — вирішення виявилося досить простим: почитав про параметри пошуку Google, почитав по створення модуля пошуку для Firefox і зробив.

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

Виявилося, це чудово працює і для Google Chrome — треба лише у віконечку, що вигулькне, змінити «ключове слово» з google.com на щось інше, та у налаштуваннях пошуку Chrome знайти MyGoogle серед «Інших пошукових систем» та встановити його «за умовчанням». І все чудово працює .)

Також замість пошуковика Google можна вписати (у XML файл, див. нижче) будь-який інший, треба лише знати параметри запиту (їх назви) для здійснення пошуку.

Не знаю, чи працюватиме це як треба скрізь :О) Бо використовується ie=uft-8&oe=utf-8. Цікаво, що буде, якщо їх не вказувати зовсім; спробую пізніше.

Релізація і сам модуль (встановіть і собі) »»

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Перший допис…

Вітаю!-)

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

При тому — всі ми різні .)

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

Отже, будемо намагатися накопичувати досвід і ділитися ним 🙂