30 июн. 2016 г.
30 мар. 2011 г.
Будни собеседований
Вот так один претендент реализовал алгоритм подсчета длины строки на языке С:
int strlen(char* b)
{
int i, a=0;
while (*(b+i) != "0")
a++; i++;
else break;
return a;
}
Кто не знает язык С, поверьте мне на слово - это очень смешно:)
5 мая 2010 г.
15 качеств программиста
Одна хорошая знакомая, которая учится на психолога (Лена привет), попросила написать 15 качеств, которые необходимы программисту. Вот мой список, в порядке от самых важных к самым неважным:
Аналитический склад ума
Умение работать в команде (коммуникативность)
Ответственность
Инициативность
Стрессоустойчивость
Быстрая обучаемость
Лень
Упорство в достижении цели
Постоянная тяга к саморазвитию
Адекватная самооценка (ни самомнение, ни самоуничижение)
Умение планировать
Любознательность
Креативность
Внимательность
Перфекционизм
Сразу оговорюсь, "Лень" выступает в той же роли, что и во фразе: "Лень - двигатель прогресса".
А вы бы что изменили/добавили/убрали?
22 февр. 2010 г.
Трудности кодировок
Вчера вечером, совершенно неожиданно, пришла в голову мысль сделать кросспостинг этого блога в систему ВКонтакте.ру. Поскольку наработки у меня уже были, я решил, что это дело будет весьма легким. Но как я ошибался, кто бы знал.
Проблемы начались с парсинга RSS потока. В Питоне есть гениальная и простая библиотека feedparser. Все советуют ее использовать и по всему интернету разбросаны примеры ее использования. Но, есть один нюанс. Эта библиотека написана для версии питона 2. Я пытался ее сконвертировать для работы с третьей версией и она даже стала запускаться, но заглючила притащеная ей библиотека SGMLParser. Самое противное, что на сайте у этих ребят нигде не написано, что она предназначена исключительно для питона 2. Я был разочарован. В итоге пришлось побыстрому набросать свой собственный парсер на основе библиотеки minidom.
Дальше больше. Теперь у меня был прекрасно распарсеный RSS фид. Осталось самое малое - запостить его ВКонтакт. И вот тут меня ожидал еще один неприятный сюрприз. Фид у меня в кодировке UTF8, а ВКонтакт ожидает данные в формате CP1251 (дикие люди, весь мир уже давно перешел на UTF8). Это простое несовпадение кодировок, стоило мне многих часов упорного труда. В итоге, я лег в 5:30 утра, усталый и злой, так как не смог заставить питон посылать то, что мне надо (вернее в той кодировке, которая нужна).
Встав в 11 утра, я твердо решил добить этот вопрос. Вооружившись снифером и такой-то матерью, я вышел на бой с ненавистными кракозябрами. Теперь я в совершенстве знаю, как в Питоне представляются строки, байты, кодировки и как они посылаются на сайты в любых запросах. К двум часам дня, кодировки были побеждены.
Пришлось опять самому писать перекодирование (escaping) CP1251 символов для POST реквеста, так как стандартный Питоновский модуль нагло продолжал конвертировать мой текст в UTF8. Универсальность не всегда хороша, как оказалось.
Что в итоге: есть скрипт, который берет RSS фид этого блога, определяет появились ли новые статьи, и если появились, постит их ВКонтакт, убирая предварительно весь HTML (кстати стандартного striptags в Питоне тоже нет, пришлось искать сторонний - опять для питона 2 - и конвертить его для тройки).
Выводы:
1. Отпуск до добра не доводит
2. Питон 3 еще долго будет порабощать мир - слишком велик вес питона 2
3. Еще раз убедился, что документация для Питона бедновата
4. Справедливости ради стоит признать, что Питон - очень мощный язык
P.S.: На лекции по Питону в универе у меня прозвучала фраза: Анаконда написана на Питоне. Красиво:)
Написал
Neo
в
16:33:00
0
коментариев
Тэги: блог, вконтакте, кросспостинг, питон, программирование, python, RSS, vkontakte.ru
5 февр. 2010 г.
ВКонтакте
Я не могу общаться на сайте ВКонтакте, так как меня раздражает, что постоянно приходится туда заходить и проверять обновления. Я слишком уж привык к Google Reader и RSS. Мне нравится, что я могу получать только обновления, а не гадать видел я эту новость уже или нет. Именно эта функциональность меня раздражает на сайте ВКонтакте.
Поскольку весной мне предстоит читать лекции на тему языка Python, я подумал, что неплохо было бы его хорошенько изучить. Для этого надо бы реализовать на нем какой-либо проект. А для этого нужна потребность. Проблема ВКонтакте показалась мне неплохой задачей.
Сказано - сделано. Решил я сделать следующее: мой проект должен логиниться на сайт ВКонтакте под моим именем, скачивать все новости, определять, какие из них новые и отсылать мне на почту (в идеале, конечно, надо бы сделать из них RSS фид, но это можно оставить на потом). Итак, задача поставленна. Надо делать.
Долго ставил питон и мучился с поиском IDE. Пробовал работать в NetBeans - не понравилось. Очень тормозная система. Ну просто очень. В итоге остановился на старом добром Notepad++. Завтра попробую Eclipse с Python плагином.
На работе немного поигрался со скачиванием сайта через прокси. Очень долго ничего не работало. Оказалось потому, что в моем пароле к проксе есть символ "@". Парсеры внутренних питоновских библиотек не умеют работать с такими паролями.
В конце концов, логин на сайт ВКонтакте был успешно запрограммирован. Теперь можно приступать с следующей части: парсилке новостей.
В процессе разработки нашел несколько багов сайта ВКонтакте, а также открыл забавную фичу Яндекса. Когда в Яндексе набираешь слово, он выдает подсказки. Оказывается эти подсказки можно получить вот по этому URL (подставьте свой запрос всесто параметра part): http://suggest.yandex.ru/suggest-ya.cgi?ct=text/html&part=tes&v=2
Написал
Neo
в
01:53:00
0
коментариев
Тэги: вконтакте, пайтон, питон, программирование, google reader, ide, netbeans, python, RSS, vkontakte.ru
5 янв. 2010 г.
ЖЖ
Когда-то давно завел себе ЖЖ аккаунт - http://alex-arkhipov.livejournal.com, чтобы писать там комментарии к другим дневнекам. Это уже потом я узнал об OpenID, то есть о том, что не обязательно иметь дневник, чтобы комментировать других. Вот так и висел у меня этот дневник сиротливо с одной единственной записью.
И решил я: зачем добру пропадать, сделаю-ка я его зеркалом моего блога на Blogger.
Поскольку лень двигатель прогресса, я решил поискать готовые решения. Итак, задача заключалась в том, что бы взять RSS поток моего блога, распарсить его и отправить в ЖЖ аккунт.
У меня есть свой сайт - http://ark.nnov.ru. Там есть блог, который так же является зеркалом моего блога на Blogger. Зеркалит он при помощи специального плагина к CMS Joomla - Feeds Gator (Кстати плагин работает гениально. Для его работы надо вручную настраивать запуск скрипта через крон. Извращение.) Соответственно, первой моей мыслью было найти еще один компонет для Joomla для кросспостинга в ЖЖ. Каково же было мое удивление, что ничего подобного я не нашел, кроме какого-то платного решения. Я был очень удивлен, но решил не отступать. Дело в том, что у меня есть еще один старый блог про поисковые системы и там работает плагин для WordPress для кросспостинга его контента в ЖЖ. Таким образом, у меня были все компоненты для написания своего собственного скрипта: код для размещения постов в ЖЖ и код для выдирания последних постов с блога через RSS.
Вообщем, потратив 2 часа работы, при помощи клавиатуры и такой-то матери, работа была благополучно выполнена. Теперь мой блог транслируется в ЖЖ. Если вам удобно, читайте меня там...
P.S.: Не стал делать поддержку тегов. Лень. Да и не верю я что, кто-то ими пользуется:)
