<? Петров ?>

Медленное подключение по ssh

Август 8, 2011

Может случиться, что у вас, как и у меня очень ssh-клиент долго подключался к серверу. Я долго жил с этим, а поправить оказалось легко.

Затык оказался в двух местах – во-первых и главных ssh-сервер может делать reverse dns lookup, и это может занимать продолжительное время. В интернетах пишут, что всему поможет выставление настройки UseDNS no на сервере, но я решил вопрос, просто подключаясь к серверу по ip-адресу. Через nslookup или как-то еще узнаем адрес машины, после чего лезем в
~/.ssh/config и добавляем запись:

Host dev-server
      #connect through ip address to speedup connect
      Hostname 172.19.1.234
      #Hostname dev-server.local
      User dev

Соответственно, подключаемся через ssh dev-server

Задержка стала меньше, но все равно бесит. Подключаемся к машине с параметром -vvv и внезапно узнаем, что клиент последовательно перебирает все методы авторизации, начиная не с вашего. Соответственно, выставляем первым тот, который нужен, и начинаем подключаться мгновенно.

Host *
      PreferredAuthentications password,hostbased,publickey,keyboard-interactive

Интеграция sylpheed и Unity

Август 4, 2011

Моим основным почтовым клиентом уже лет пять является sylpheed. Главное его достоинство – он фантастически быстрый. Стартует мгновенно, подвесить его за все это время мне не удалось, ну и функционала у него за глаза. Единственный его минус, вернее особенность – он написан на GTK2 без привязки в гному, соответственно никакой интеграции с третьим гномом или Ubuntu Unity в природе не наблюдается.

Решил добавить костылей, чтобы эту ситуацию исправить. Как оказалось, управлять меню и счетчиком иконки довольно просто. В результате добавил нужные записи в файл ярлыка sylpheed и написал небольшой python-скрипт, который отслеживает появление новых сообщений и выдает об этом информацию. Получилось как надо:

Все выложено, куда следует. Из минусов – для того, чтобы все запускалось внешне без изменений, пришлось переименовать бинарник из пакета и скрипт положить на его место, поэтому при следующем обновлении все конечно сломается. Если такая перспектива пугает, то можно заменить только .dektop файл, ну или сделать нормальный патч к клиенту и запулить его на лаунчпад.

Тренды Javascript

Июнь 5, 2011

На глаза попалась презентация на сто слайдов, которая вкратце описывает все то, что накопилось в закладках моего браузера за последний год-полтора.

http://addyosmani.com/toolsforjqueryapparchitecture/

Виджеты, SPA, MVC, History, templating, deployment и прочие слова, все здесь.

Поиск и замена в vim

Май 28, 2011

При всем великолепии vim’а есть еще плюшки, которые не устают радовать глаз. Одна из них – это поиск и замена в файлах.

Искать можно как вперед ( / ), так и назад( ? ), сразу искать слово под курсором( * ), перемещаться по результатам поиска как туда ( n ), так и обратно( N )

С заменой все тоже очень богато. Можно заменять отсюда и до конца строки/параграфа/текста, так же и наоборот, между определенными строками, на определенное количество строк и т.д.(http://vim.wikia.com/wiki/Search_and_replace). Можно заменить в выделенном блоке текста( выделить и нажать v ).

Самое прекрасное – это то, что везде можно использовать регулярные выражения.
Например, в xml файле есть куча тегов <transition>blablabla</transition>, которые занимают несколько строк. Удалить можно одним махом:

:%s/<transition>\_.\{-}<\/transition>//g

Здесь \_ – это любой символ, включая символы новой строки, \{-} – это нежадный аналог оператора * в других диалектах.

Использованная литература:
Regular Expression matching more than a single line in Vim
Vim Regular Expressions

device и превратности судьбы

Март 21, 2011

Спеки – не панацея, и уже много раз давали сбой. Только все начали облизываться на web sockets, как их выпилили обратно, а теперь новая радость.
В последней версии опера представила поддержку нового тега – device. Мужики в whatwg подумали и решили его отменить.

Поспешили, бывает.

Б.Лоусон, Р.Шарп, «Изучаем HTML5″

Март 10, 2011

Свежая книга по новым технологиям. В книге рассматривается новый стандарт HTML и сопутствующие технологии. Первая глава представляет собой введение, из которого можно узнать историю создания новой версии стандарта, а также о том, как с помощью минимальных действий перевести свой документ под новый стандарт. Во второй главе рассматриваются новые введенные элементы и их место в документе – поясняется смысл новых тегов с точки зрения семантики. Далее авторы переходят к нововведениям для форм и представляют новые
элементы ввода, методы проверки вводимых данных и т.д. Четвертая глава относится к элементам аудио и видео, в пятой рассматривается холст (canvas). Авторы разбирают области применимости элементов и возможности, которые они представляют.

Следующие главы посвящены различным новым jacascript API, которые определены в стандарте или сопутствующих спецификациях. Разбираются такие вопросы, как хранение данных, автономная работа, drag’n'drop, геолокация, а также протоколы для кроссдоменного общения между iframe-ами (web messaging), и протокол для установления двусторонней связи между клиентом и сервером (Web sockets).

Немного о самой книге – при переводе видимо старались сохранить неформальный дух авторов и сохранить все их шутки, в результате все они смотрятся достаточно чужеродно в русском языке, но в целом стиль приемлимый. Также, достаточно много опечаток и мелких ошибок в верстке, которые лезут в глаза. Стоит заметить, что присутствуют они только в поясняющем тексте, в примерах с кодом особых ляпов замечено не было. Примеры коды набраны желтым шрифтом, читать его можно только при достаточно хорошем освещении.

К минусам книги стоит отнести то, что для большинства технологий не очерчен статус их поддержки браузерами, либо это определяется вскользь. Также рассмотрены не все новые технологии (нет, к примеру, File API).

В заключение хочу сказать, что книга является хорошим введением в новый стандарт, и весьма полезна, особенно если есть проблемы в английским языком. Очень понравились первые главы про разметку: очень подробно, грамотно, присутствуют выдержки из спецификации. Примеры вполне жизнеспособные, язык внятный.

Если проблем с английским нет, то книгу вполне можно заменить несколькими добротными сайтами по теме, например – http://diveintohtml5.org/, http://html5doctor.com/, http://caniuse.com/ и, конечно, недавно анонсированным http://developers.whatwg.org/.

% и vim

Март 4, 2011

Меня давно угнетало, что, в vim повторялся следующий шаблон:

находимся в папке ~/someproject
Начинаем работу: cd ~/someproject && gvim some/deep/file1.txt
Предположим, что в той же папке лежит файл file2.txt

Раньше я всегда набирал для file2 путь полность, т.к. до этого путь вводился через командную строку.

И вот, оказывается, что в vim есть спецрегистр %, который содержит имя текущего буфера. В итоге набор сократился до краких:

$ cd ~/someproject
$ gvim some/deep/file1.txt

А теперь делаем в редакторе: :e %C-W C-W C-W
И все, красота!

Закрываю долги

Декабрь 31, 2010

Решил поторопиться и докодить всякие вещи, на которые как всегда не хватает времени.

1) Перевел руководство пользователя к gmpc. Клиент отличный, в нем есть все и еще немного больше для того, чтобы управлять своей музыкальной коллекцией совместно с mpd. Использую уже года три, очень доволен. Кроме богатого функционала у gmpc есть та особенность, что он работает просто реактивно, не жертвуя для этого ни чем. Запускается моментально, без проблем переваривает большие списки файлов и отказывается падать вообще, автор молодец, решил помочь проекту хоть как-то. По скорости работы с gmpc может поспорить только почтовый клиент sylpheed, который можно успеть запустить, проверить почту и быстро ответить на сообщение, пока тот же evolution успеет достроить свой интерфейс.

2) Влепил пару патчей для getmap, раньше поле города было позорно регистрозависимым, а по ссылкам только для чтения зачем-то выводились ненайденные запросы.

3) Решил выложить прототип онлайн менеджера паролей, встречайте:
http://kdb.dpetroff.ru/

Эта программа также как и getmap выросла из того, что «а круто посмотреть, можно ли читать двоичные файлы с помощью javascript». Можно, без особых проблем. Особенности программы:

В программе конечно же есть известные и неизвестные баги.

Благодаря этому проектику научился читать cpp код, разобрался в разумных пределах в шифрованием AES256, написал парсер формата файлов keepassx сначала на питоне, потом на js, а на самом js накодил на удивление удачный код для создания многоэкранных приложений в рамках одного html файла.

В общем, было интересно =) Всех с наступающим

Сделал поиск по карте

Декабрь 8, 2010

Как это часто бывает, демка, на которую думал потратить пару дней, отняла у меня больше месяца. Замысел был такой – в яндекс.картах все хорошо, но искать там сразу можно только одну точку. А потом еще одну. И еще. Что делать, если их сто?

Можно делать вот так: http://getmap.dpetroff.ru/

Сайт позволяет загнать сразу большой список адресов и найти их на карте. Вот, например, адреса всех салонов Евросети в Москве. Как ни странно, у этой сети нормальной карты с адресами нигде нет, адреса брал со страницы интернет-провайдера. И ведь эта контора не одна такая ущербная.

При каждом новом поиске генерятся две ссылки – только для чтения и для полного доступа, больше никакой авторизации не предусмотрено. Зато можно искать несколько раз, разные результаты помечать метками разного цвета, и при необходимости перетаскивать как отдельные метки так и целые результаты поиска в другие группы. При большом списке адресов какие-то конечно останутся ненайденными, так их можно тут же на месте подредактировать, и если новый адрес известен яндексу, метка сразу появится на карте, а после этого всего можно подредактировать все заголовки. Теперь можно смело сохранить ссылку в закладках или раздать нужным людям.

При всем при этом сервис не достиг даже половины того удобства, которым мог бы обладать. Можно было бы предоставить возможность тасовать метки между собой в пределах одного поиска, сделать везде возможность добавлять аннотации и комментарии, настоящей киллер-фичей была бы возможность сохранения истории действия пользователя и его предыдущих запросов. Ну и всякие иконочки и ссылочки. И все это можно было бы делать до победного конца, но я решил, что нужно уже выкатить стабильный срез, чтобы поставить точку, ну или точку с запятой и заняться другими делами :)

К слову сказать, анимация неожиданно не тормозит в седьмом эксплорере! Остальные технические детали, пожалуй, как-нибудь потом.

Если вдруг есть комментарии, пожелания или предложения, буду рад услышать.

Импорт utf-8 csv-файлов в Excel

Декабрь 6, 2010

Возникла задача открыть csv экселем, а тот вместо добротного уникода показал мусор. Поиски вывели на тред, где описано приемлемое решение задачи:
1. Конвертируем в UTF-16.
2. Добавляем BOM в начало файла.
3. В качестве разделителей используем символы табуляции.

Если говорить на php, то выдача файла должна происходить следующим образом:

header("Cache-Control: must-revalidate");
header("Pragma: must-revalidate");
header("Content-type: application/vnd.ms-excel; charset=URF-16LE");
header("Content-disposition: attachment; filename=file.csv");
 
echo chr( 0xFF ) . chr( 0xFE ) . mb_convert_encoding( $content, 'UTF-16LE', 'UTF-8' );

Надеюсь, этот пост сэкономит кому-нибудь пару сотен нейронов.