вторник, 13 сентября 2011 г.

Чтение стен ВКонтакте через RSS

Недавно возникло желание читать пару групп ВКонтакте. Регулярно заходить туда и проверять, не появилось ли чего нового - это не наш путь. Поэтому, узрев в этом желании отличную возможность поиграться с Google App Engine и Python'овским HTMLParser'ом, написал себе небольшой "велосипед" - vkontakte-feed.appspot.com. :)

Отдает посты с публичных стен в RSS. Пользуйтесь, если кому надо.

суббота, 11 сентября 2010 г.

Автоматическое скачивание субтитров для сериалов

Ранее я уже писал о том, как можно автоматически скачивать субтитры для сериалов при помощи Subdownloader. И все бы хорошо, но вот только субтитры он берет с www.opensubtitles.org, чьи серверы в последнее время работают очень нестабильно. Поэтому, получив в очередной раз от Subdownloader'а сообщение об ошибке, я понял, что мне это уже начинает порядком надоедать и решил поискать какую-нибудь альтернативу в виде скрипта для скачивания с www.TVsubtitles.net. Как это часто бывает, ничего дельного мне найти не удалось, поэтому пришлось писать самому. :)

Получился небольшой Python'овский скрипт, который принимает через опции командной строки список интересующих вас языков и путь к дирректории(ям) и/или файлу(ам), для которых необходимо скачать субтитры, поэтому можно настроить его запуск в cron и навсегда забыть о том, что субтитры, как правило, не скачиваются вместе с торрент-файлами. :) Поскольку это было совсем несложно, я также добавил и поддержку www.opensubtitles.org, но по-умолчанию скрипт его не использует, по вышеописанным причинам.

Вообщем, если кому-то нужно, то скачать его можно тут.

суббота, 1 мая 2010 г.

Просмотр новостей из Google Reader без доступа в Интернет

Я тут недавно поменял работу, и если раньше она была в 15 минутах ходьбы от дома, то теперь придется каждый день ездить в Москву. Соответственно, встал резонный вопрос, как потратить проведенное в электричке время с пользой (а времени на дорогу туда-обратно уйдет немало). Обычно такое время я заполняю подкастами и чтением Google Reader'а и бумажных книг. С подкастами и книгами никаких проблем нет, но вот с Google Reader все очень грустно - мало того, что 3G в Подмосковье пока что не особо собирается, так еще и при движении электрички ужасно медленное EDGE-соединение рвется чуть ли не каждую минуту, что делает чтение даже мобильной версии Google Reader настоящей пыткой.

Меня, естественно, такая ситуация не устраивала, и я начал искать программу, которая позволяла бы просматривать новости из Google Reader будучи offline. Подобные программы есть, но обладают огромным недостатком - они скачивают для офлайнового просмотра только описание новости из RSS и больше ничего. Все самое интересное (полный текст новости, изображения и сама страница с комментариями, на которую ссылается эта новость) остается в онлайне. Мне же хотелось, чтобы работа с такой программой в офлайне имела минимум отличий от работы с Google Reader в онлайне: чтобы я мог видеть описание новости, все изображения, присутствующие в нем, мог просматривать страницу, на которую ссылается новость (также со всеми изображениями, стилями и т. п.), ну и, конечно, чтобы была возможность помечать новости как прочитанные, star'ить, расшаривать и впоследствии синхронизировать с Google Reader.

Программы с такими возможностями мне найти не удалось - ну так не беда, напишем сами, ибо уже не впервой. :) А если учесть, что я в то время как раз изучал Qt и думал, что бы такое написать, чтобы попробовать ее в деле, то это был просто подарок судьбы. :)

воскресенье, 14 февраля 2010 г.

Восстановление позиции курсора при открытии файла в Vim

Не знаю, как я раньше жил без этого, но вот на днях залез в гугл, и оказалось, что настроить Vim так, чтобы при открытии файла он каждый раз восстанавливал позицию курсора, с которой файл был закрыт в прошлый раз, очень просто: для этого даже не надо ставить никакие плагины, достаточно прописать в ~/.vimrc следующие строки:
if has("autocmd")
    " When editing a file, always jump to the last known cursor position.
    " Don't do it when the position is invalid or when inside an event
    " handler (happens when dropping a file on gvim).
    autocmd BufReadPost *
        \ if line("'\"") > 0 && line("'\"") <= line("$") |
        \   exe "normal g`\"" |
        \ endif
endif

Update:
А еще лучше использовать следующий код:
if has("autocmd")
    set viewoptions=cursor,folds
    au BufWinLeave * mkview
    au BufWinEnter * silent loadview
endif
Он помимо курсора еще и фолдинги восстанавливает (спасибо за подсказку lyn4ed).

вторник, 12 января 2010 г.

Что такое выравнивание, и как оно влияет на работу ваших программ

Как-то раз, обсуждая с одногруппницей тему ее диплома, я посоветовал ей отличную статью Data alignment: Straighten up and fly right, посвященную выравниванию данных в оперативной памяти. Т. к. с английским у нее дела обстоят не очень хорошо, она попросила меня перевести статью на русский язык. Переведя статью, я решил, что незачем добру пропадать, и поэтому с разрешения автора выкладываю сюда перевод. Перевод довольно вольный, но в то же время достаточно точный. Вообщем, буду рад, если кому-нибудь пригодится.

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

Гранулярность доступа к памяти

Программисты привыкли думать о памяти, как о простом массиве байтов. В языке C и его языках-наследниках char* всегда означало "блок данных", и даже в Java™ есть тип byte[] для представления "сырых" данных в памяти.

Рис. 1. Как программисты видят память


Однако, процессор в вашем компьютере считывает данные из памяти блоками размером отнюдь не в одни байт. Считывание данных производится блоками по 2, 4, 8, 16 или даже 32 байта. Далее размер таких блоков мы будем называть гранулярностью доступа к памяти.

Рис. 2. Как эту же память видят процессоры


Разница в том, как программисты видят память, и как процессоры на самом деле с ней работают, приводит к интересным последствиям, которым и посвящена данная статья.

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

четверг, 19 ноября 2009 г.

StarDict: пропадание всплывающего окна с переводом

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

Мне это надоело, и я не поленился залезть в исходники StarDict, чтобы сделать так, как мне хочется. :)

вторник, 17 ноября 2009 г.

The Pirate Bay RSS

В последнее время я скачиваю довольно много сериалов в английской озвучке с The Pirate Bay, и отсутствие RSS-каналов на нем начало порядком надоедать. Поэтому я создал простенький Pipe, выдающий RSS-поток с последними раздачами нужного мне сериала.

Пользоваться им предельно просто: заходите на http://thepiratebay.org/tv/all/, выбираете интересующий вас сериал и смотрите его идентификатор. К примеру, у сериала Lie To Me (http://thepiratebay.org/tv/34512/) идентификатор будет 34512. Вбиваете его в поле ввода моего Pipe'а, нажимаете кнопку "Run Pipe" и щелкаете по появившейся ссылке "Get as RSS".

Вообщем, пользуйтесь, если у кого есть необходимость. При желании можно добавить дополнительные фильтры по качеству релизов (TV Rip, 720p) или автору, которому вы больше всего доверяете. Я, например, создал для себя еще один Pipe, который собирает через данный Pipe раздачи всех интересующих меня сериалов и отбрасывает 720p-релизы, которые мне вообщем-то ни к чему.