В последнее время я очень много пишу на Python: начиная с больших систем типа облаков на работе и заканчивая маленькими скриптами дома. И одновременно с этим я стал за собой замечать, что многие вещи, которые я раньше писал на shell, мне гораздо приятнее писать на Python. Вот только когда пишешь какие-нибудь административные утилиты, зачастую возникает необходимость запускать из них другие программы, в результате чего приходится городить свои обвязки вокруг subprocess, который, на мой взгляд, не очень удобен.
Все свои скрипты и программы я всегда пишу со здравым уровнем паранои, поэтому каждый раз, когда вижу конструкции вида `grep word some_file | wc -l`, мне всегда хочется не только получить вывод `wc -l`, но и проверить, завершился ли нормально grep (вдруг он, к примеру, не смог открыть файл). Делать это каждый раз вручную в shell быстро надоест, а в Python есть исключения, которые как раз могут тут очень помочь.
В общем, захотел я себе максимально удобную запускалку процессов для Python. :) Посмотрев на то, что уже написано, сначала остановил свой выбор на sh, но, глянув внутрь нее и посмотрев, как оно на самом деле работает, я понял..., что этим я пользоваться не буду. :) В итоге решил написать такую библиотеку сам, благо не так уж много времени на это надо, да и напишу так, как будет наиболее удобно для меня. :)
KonishchevDmitry's small blog
С Linux так всегда - сколько не копай вглубь и вширь, всегда найдется что-то новое...
понедельник, 22 октября 2012 г.
вторник, 13 сентября 2011 г.
Чтение стен ВКонтакте через RSS
Недавно возникло желание читать пару групп ВКонтакте. Регулярно заходить туда и проверять, не появилось ли чего нового - это не наш путь. Поэтому, узрев в этом желании отличную возможность поиграться с Google App Engine и Python'овским HTMLParser'ом, написал себе небольшой "велосипед" - vkontakte-feed.appspot.com. :)
Отдает посты с публичных стен в RSS. Пользуйтесь, если кому надо.
Отдает посты с публичных стен в RSS. Пользуйтесь, если кому надо.
Posted by
Dmitry Konishchev
50
comments
Отправить по электронной почтеНаписать об этом в блогеПоделиться в XОпубликовать в FacebookПоделиться в Pinterest
Tags:
ВКонтакте,
rss
суббота, 11 сентября 2010 г.
Автоматическое скачивание субтитров для сериалов
Ранее я уже писал о том, как можно автоматически скачивать субтитры для сериалов при помощи Subdownloader. И все бы хорошо, но вот только субтитры он берет с www.opensubtitles.org, чьи серверы в последнее время работают очень нестабильно. Поэтому, получив в очередной раз от Subdownloader'а сообщение об ошибке, я понял, что мне это уже начинает порядком надоедать и решил поискать какую-нибудь альтернативу в виде скрипта для скачивания с www.TVsubtitles.net. Как это часто бывает, ничего дельного мне найти не удалось, поэтому пришлось писать самому. :)
Получился небольшой Python'овский скрипт, который принимает через опции командной строки список интересующих вас языков и путь к дирректории(ям) и/или файлу(ам), для которых необходимо скачать субтитры, поэтому можно настроить его запуск в cron и навсегда забыть о том, что субтитры, как правило, не скачиваются вместе с торрент-файлами. :) Поскольку это было совсем несложно, я также добавил и поддержку www.opensubtitles.org, но по-умолчанию скрипт его не использует, по вышеописанным причинам.
Вообщем, если кому-то нужно, то скачать его можно тут.
Получился небольшой 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 и думал, что бы такое написать, чтобы попробовать ее в деле, то это был просто подарок судьбы. :)
Меня, естественно, такая ситуация не устраивала, и я начал искать программу, которая позволяла бы просматривать новости из Google Reader будучи offline. Подобные программы есть, но обладают огромным недостатком - они скачивают для офлайнового просмотра только описание новости из RSS и больше ничего. Все самое интересное (полный текст новости, изображения и сама страница с комментариями, на которую ссылается эта новость) остается в онлайне. Мне же хотелось, чтобы работа с такой программой в офлайне имела минимум отличий от работы с Google Reader в онлайне: чтобы я мог видеть описание новости, все изображения, присутствующие в нем, мог просматривать страницу, на которую ссылается новость (также со всеми изображениями, стилями и т. п.), ну и, конечно, чтобы была возможность помечать новости как прочитанные, star'ить, расшаривать и впоследствии синхронизировать с Google Reader.
Программы с такими возможностями мне найти не удалось - ну так не беда, напишем сами, ибо уже не впервой. :) А если учесть, что я в то время как раз изучал Qt и думал, что бы такое написать, чтобы попробовать ее в деле, то это был просто подарок судьбы. :)
Posted by
Dmitry Konishchev
19
comments
Отправить по электронной почтеНаписать об этом в блогеПоделиться в XОпубликовать в FacebookПоделиться в Pinterest
Tags:
google reader,
linux,
qt
воскресенье, 14 февраля 2010 г.
Восстановление позиции курсора при открытии файла в Vim
Не знаю, как я раньше жил без этого, но вот на днях залез в гугл, и оказалось, что настроить Vim так, чтобы при открытии файла он каждый раз восстанавливал позицию курсора, с которой файл был закрыт в прошлый раз, очень просто: для этого даже не надо ставить никакие плагины, достаточно прописать в ~/.vimrc следующие строки:
Update:
А еще лучше использовать следующий код:
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")Он помимо курсора еще и фолдинги восстанавливает (спасибо за подсказку lyn4ed).
set viewoptions=cursor,folds
au BufWinLeave * mkview
au BufWinEnter * silent loadview
endif
Posted by
Dmitry Konishchev
13
comments
Отправить по электронной почтеНаписать об этом в блогеПоделиться в XОпубликовать в FacebookПоделиться в Pinterest
Tags:
vim
вторник, 12 января 2010 г.
Что такое выравнивание, и как оно влияет на работу ваших программ
Как-то раз, обсуждая с одногруппницей тему ее диплома, я посоветовал ей отличную статью Data alignment: Straighten up and fly right, посвященную выравниванию данных в оперативной памяти. Т. к. с английским у нее дела обстоят не очень хорошо, она попросила меня перевести статью на русский язык. Переведя статью, я решил, что незачем добру пропадать, и поэтому с разрешения автора выкладываю сюда перевод. Перевод довольно вольный, но в то же время достаточно точный. Вообщем, буду рад, если кому-нибудь пригодится.
Выравнивание данных - очень важное понятие, которое должен принимать во внимание каждый программист, работающий с памятью напрямую. Выравнивание данных влияет на скорость выполнения ваших программ и на то, будут ли они вообще работать. Понимание основных принципов, заложенных в данном понятии, объясняет на первый взгляд странное поведение некоторых процессоров.
Гранулярность доступа к памяти
Программисты привыкли думать о памяти, как о простом массиве байтов. В языке C и его языках-наследникахchar*
всегда означало "блок данных", и даже в Java™ есть тип byte[]
для представления "сырых" данных в памяти.Рис. 1. Как программисты видят память
Однако, процессор в вашем компьютере считывает данные из памяти блоками размером отнюдь не в одни байт. Считывание данных производится блоками по 2, 4, 8, 16 или даже 32 байта. Далее размер таких блоков мы будем называть гранулярностью доступа к памяти.
Рис. 2. Как эту же память видят процессоры
Разница в том, как программисты видят память, и как процессоры на самом деле с ней работают, приводит к интересным последствиям, которым и посвящена данная статья.
Если вы не понимаете, какое влияние выравнивание данных способно оказать на ваше программное обеспечение, то возможно возникновение следующих проблем в работе вашего ПО (в порядке возрастания пагубного воздействия):
- Приложение будет работать медленнее.
- Приложение может "зависнуть".
- Операционная система может внезапно аварийно завершиться.
- Приложение будет работать непредсказуемо, что в итоге может привести к порче ваших данных.
Posted by
Dmitry Konishchev
19
comments
Отправить по электронной почтеНаписать об этом в блогеПоделиться в XОпубликовать в FacebookПоделиться в Pinterest
Tags:
выравнивание,
перевод,
c,
c++
четверг, 19 ноября 2009 г.
StarDict: пропадание всплывающего окна с переводом
Всем хорош StarDict, но есть одна мелочь, которая порой раздражает. Выделяю какое-либо слово, нажимаю горячую клавишу - появляется плавающее окошко с переводом этого слова. Если теперь слегка отодвинуть мышку в сторону, то плавающее окошко пропадет и больше не появится до тех пор, пока я не выделю другое слово, несмотря на последующие нажатия горячей клавиши.
Мне это надоело, и я не поленился залезть в исходники StarDict, чтобы сделать так, как мне хочется. :)
Мне это надоело, и я не поленился залезть в исходники StarDict, чтобы сделать так, как мне хочется. :)
Posted by
Dmitry Konishchev
9
comments
Отправить по электронной почтеНаписать об этом в блогеПоделиться в XОпубликовать в FacebookПоделиться в Pinterest
Tags:
linux,
stardict
Подписаться на:
Сообщения (Atom)