Skip to content


Почтовый клиент Alpine

Есть один весьма удобный консольный почтовый клиент - Alpine, о некоторых фичах которого пойдёт речь в этой заметке. Раньше он назывался Pine и создан в University of Washington.

1. Переносы строк.
При настройках по-умолчанию Alpine имеет одно странное свойство - если в конце строки перед переводом строки оставить пробел, то, несмотря на то, что при отправке письмо выглядит нормально разбитым на строки, при получении письма следующая строка после строки с пробелом в конце будет отображена как продолжение той первой (что с пробелом). Вот на скриншотах пример такого кривого поведения. У отправителя:

У получателя:
Здесь видно, что фрагмент "Это слова из строки N2" в почтовом клиенте получателя отобразились как продолжение предыдущей строки. Это очень раздражает, когда отправляешь какой-то форматированный текст, например, вывод mtr - всё съезжает и ничего разобрать нельзя из того, что хотел сказать аффтар. Поэтому аффтару нужно следить за тем, чтобы в конце каждой строки не было пробелов (если он хочет чтобы разбиение текста на строки у получателя было точно таким же как у него). Вот пример правильно отформатированного письма. У отправителя:

У получателя:
Тут обе строки одинаково отображаются как у отправителя, так и у получателя, поскольку отправитель проследил за тем, чтобы в конце строк не было пробелов.

Но, к счастью, такое поведение лишь при настройках по-умолчанию, которые можно изменить. Чтобы Alpine шибко не умничал и оставлял переносы строк в точности там, где мы их поставили, нужно включить опцию "Do Not Send Flowed Text" (в главном меню выбираем Setup, потом Config). Тогда независимо от наличия пробелов в конце строки следующая строка у получателя отобразится реально как следующая.

2. Автоматическая проверка орфографии.
Чтобы перед отправкой письмо проверялось на наличие ошибок, нужно установить какой-то spell-checker, например aspell, и указать Alpine его использовать. В случае с aspell это делается так: идем из главного меню в Setup, потом Config, потом ищем опцию "Spell Check Before Sending" и включаем её, далее ищем параметр "Speller" и устанавливаем его значение в

/usr/bin/aspell --dont-backup --mode=email check -l ru_RU

Путь, естественно, нужно поправить чтобы соответствовал Вашей системе. Через параметр -l задаётся язык проверямого текста. Тогда при нажатии комбинации Ctrl-X в случае, если aspell посчитает, что хоть одно слово в письме написано неправильно, вылезет такая вот менюшка:
Проверка орфографии через aspell
При нажатии клавиш 0-9 подсвеченное слово замениться на соответствующий предложенный aspell-ом вариант. При нажатии клавиши r (Replace) aspell попросит набрать слово для замены. При нажатии a (Add) или l (Add Lower) подсвеченное слово внесётся в пользовательский словарь и в дальнейшем будет считаться правильным. Разница между a и l в том, что при Add Lower слово будет внесено в нижнем регистре, а при просто Add - так, как встретилось в тексте. Если же в тексте всё правильно, то письмо просто отправиться как обычно.

3. Сортировка писем "нитями"
Чтобы письма при переписке по одному и тому же вопросу отображались вместе, а не в порядке поступления, как происходит по-умолчанию, удобно использовать сортировку Thread-ами. Для этого в окне индекса нужно нажать Shift-4, затем H. Тогда Alpine по заголовкам Subject и In-Reply-To будет отслеживать письма на одну и ту же тему и отображать их примерно так:

Posted in *nix, Howto.

Tagged with .


Data call в Nokia 7610

смартфон нокия 7610Попалась как-то мне мобила Nokia 7610, которая изначально была предназначена для рынка Западной Европы и приехала в Украину из тех краёв. На ней есть логотип оператора T-mobile, внутри тема тоже вся в их корпоративных цветах, с логотипом и т.д. И была у этой мобилы одна странная особенность - при звонках на неё с городских телефонов она звонок идентифицировала как "Data call", звук звонка при этом отличался от обычного и ответить на него никакой возможности не было. В меню на момент поступления такого звонка было только 2 пункта - "Activate modem" и "Reject". Соответственно, звонящие не с мобильных сетей абоненту с этой мобилой дозвониться не могли. Когда абонента это вконец запарило, он меня попросил разобраться нельзя ли как-то починить сие безобразие. Оказалось, можно. Причём довольно просто.

Полазив по буржуйским форумах, я обнаружил, что проблема не есть уникальная только для этой трубы - у прочих Nokia тоже есть такая болезнь с Data call при звонке с landline-аппаратов. И народ пишет, что помогает сброс телефона к заводским настройкам (через меню "Tools" → "Settings" → "Phone" → "General" → "Orig. phone settings"). При попытке сброса телефон спрашивает lock code, который по умолчанию должен быть 12345. Но в моём случае это было не так, 12345 не прокатило.

Дальнейшее гугление привело меня к сакральному знанию того, что существует некий "Master Code" который можно использовать в том числе и как lock code. На сайте одного хорошего человека из Британии есть тулза, которая на основе IMEI телефона вычисляет этот Master Code. И, действительно, после получения 10-тизначного цифрового Master code, ввода его в диалоге возврата к оригинальным настройкам и перезагрузки телефона чудо таки случилось - телефон стал принимать звонки с прямых CDMA-номеров и городских телефонных аппаратов! Такие вот чудеса зарубежного мобилостроения.

Posted in Misc.

Tagged with .


WordPress-плагин WP Super Cache

Недавно обнаружил плагин для WordPress под названием WP Super Cache, который создает статические копии страниц блога для ускорения их загрузки (за счет минимизации количества обращений к базе данных и за счет отсутствия необходимости работы PHP-интерпретатора при повторных обращениях к странице, уже находящейся в кеше). Плагин довольно гибко настраивается, позволяя отключать кеширование некоторых страниц по различным критериям (например, по категориям, по меткам, по URL-у). Также умеет сжимать страницы по алгоритму gzip, что ускоряет их передачу по сети. Для проверки эффективности плагина я использовал утилиту ab (Apache HTTP server benchmarking tool), используя серию из 20 запросов к серверу (-n 20) и разрешая максимум два одновременных запроса (-c 2):

# ab -n 20 -c 2 http://avz.org.ua/index.php

Результаты тестирования до установки плагина:

Document Path:          /
Document Length:        38826 bytes
 
Concurrency Level:      2
Time taken for tests:   5.494602 seconds
Complete requests:      20
Failed requests:        0
Write errors:           0
Total transferred:      780563 bytes
HTML transferred:       776520 bytes
Requests per second:    3.64 [#/sec] (mean)
Time per request:       549.460 [ms] (mean)
Time per request:       274.730 [ms] (mean, across all concurrent requests)
Transfer rate:          138.68 [Kbytes/sec] received
 
Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.0      0       0
Processing:   436  548 316.0    447    1480
Waiting:      303  419 338.0    309    1463
Total:        436  548 316.0    447    1480
 
Percentage of the requests served within a certain time (ms)
  50%    447
  66%    452
  75%    454
  80%    457
  90%   1465
  95%   1480
  98%   1480
  99%   1480
 100%   1480 (longest request)

Результаты тестирования после установки плагина:

Document Path:          /
Document Length:        38969 bytes
 
Concurrency Level:      2
Time taken for tests:   0.472452 seconds
Complete requests:      20
Failed requests:        0
Write errors:           0
Total transferred:      786360 bytes
HTML transferred:       779380 bytes
Requests per second:    42.33 [#/sec] (mean)
Time per request:       47.245 [ms] (mean)
Time per request:       23.623 [ms] (mean, across all concurrent requests)
Transfer rate:          1623.45 [Kbytes/sec] received
 
Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.0      0       0
Processing:    39   44   5.9     44      68
Waiting:       31   39   6.3     39      62
Total:         39   44   5.9     44      68
 
Percentage of the requests served within a certain time (ms)
  50%     44
  66%     44
  75%     45
  80%     47
  90%     47
  95%     68
  98%     68
  99%     68
 100%     68 (longest request)

Как видно, время отклика после активации и настройки плагина значительно уменьшилось (максимальное: 1480мс -> 68мс, среднее - 548мс -> 44мс). Вывод --- плагин действительно полезный, рекомендую.

Posted in *nix, Web-apps.

Tagged with , .


Windows 7 и два маршрута по умолчанию

В Windows 7 мне несколько раз приходилось наблюдать следующую странность. По DHCP сетевые настройки клиент нормально получает. Но Интернет не работает и команда ipconfig /all показывает 2 маршрута по-умолчанию: один правильный, а второй - 0.0.0.0. При пинге куда либо сообщение "Ответ от xx.xx.xx.xx: заданный узел недоступен", где xx.xx.xx.xx --- адрес этого же компьютера. Причиной такого безобразия чаще всего является софт по имени bonjour, который без спросу устанавливается с некоторыми программами от Adobe (Creative Suite, Acrobat и др.)

Восстановить нормальную работу Интернет помогает следующий workaround: зайти в свойства подключения, снять галочку с "Протокол Интернет версии 4", нажать "OK", "Закрыть". Затем повторить операцию, поставив галочку на место. После этого всё чудесным образом начинает работать, но до следующей перезагрузки.

Чтобы решить проблему раз и навсегда, следует проделать следующее:

  1. Найти поиском (Win-F) файл mDNSResponder.exe, запомнить имя директории, где он находится. Обычно это "C:\Program Files\Bonjour\"
  2. Нажать Ctrl-Shift-Esc, в открывшемся окне диспетчера задач найти процесс mDNSResponder.exe и прибить его
  3. Открыть коммандную строку (Win-R) и набрать там
    "C:\Program Files\Bonjour\mDNSResponder.exe" -remove
    sc stop "Bonjour Service"
    sc delete "Bonjour Service"
  4. Зайти "Проводником" или любым другим файл-менеджером в каталог из п.1 (C:\Program Files\Bonjour) и переименовать файл mdnsNSP.dll, например, обозвав его mdnsNSP.txt
  5. Скачать программу LSP-Fix (http://cexx.org/lspfix.htm), запустить, установить галочку "I know what I'm doing", выделить mdnsnsp.dll слева и нажать кнопку ">>", чтобы mdnsnsp.dll переместилось в правое окно, затем нажать кнопку "Finish"
  6. Перезагрузить компьютер и удалить директорию C:\Program Files\Bonjour

Posted in Howto, Windows.

Tagged with .