Analitycs

суббота, 17 марта 2012 г.

MD5 проверка PHP, Python и MySQL

Несколько лет поймал одну особенность - md5 суммы посчитанные в PHP и MySQL отличались(!!!) - но хоть убей не помню на каких версиях.

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

PHP

php -r "echo md5('domains.txt');"
aeae2f628c54f10054e5c70076e1237b

md5sum

# echo -n "domains.txt" | md5sum
aeae2f628c54f10054e5c70076e1237b 

Python

# echo "import md5;print md5.md5(\"domains.txt\").hexdigest()" | python
aeae2f628c54f10054e5c70076e1237b

MySQL

SELECT MD5('domains.txt');

aeae2f628c54f10054e5c70076e1237b

Уф, отпустило ;-) Приступ паранойи навеян вот этой заметкой.

четверг, 15 марта 2012 г.

Logging в Tornado

После большого рефакторинга проекта на Tornado пропало логгирование в stdout. То есть ошибки писались только в stderr, который выводился в лог сидящего уровнем выше сервиса  Supervisord (который за сервисом, собственно говоря, и наблюдал).

После небольшой отладки выяснилось, что проблема была в одной строчке, случайно удаленной из проекта

tornado.options.parse_command_line()

То есть должно быть примерно так

def main(): 
    application = tornado.web.Application([ 
        (r"/", MainHandler), 
    ]) 
    # this line will setup default logging no matter if you use command options 
    tornado.options.parse_command_line()
    logging.info("starting torando web server") 
    http_server = tornado.httpserver.HTTPServer(application) 
    http_server.listen(8888) # hardcoded port 
    tornado.ioloop.IOLoop.instance().start() 

После восстановления строчки-"беглянки" лог торнадовского приложения выглядит как положено


mneradkov@mneradkov-thinkpad:~/workspace/mysuperproject$ ./webapp.py 
[I 120315 16:33:28 mixins:28] [INFO] Directory [/home/mneradkov/workspace/mysuperproject]
[I 120315 16:33:28 mixins:28] [INFO] Connected to MySQL [xx.xx.xx.xx:xxxx]
[I 120315 16:33:28 mixins:28] [INFO] Connected to memcache [127.0.0.1:11211]
[I 120315 16:33:28 mixins:28] [INFO] 
[I 120315 16:33:28 mixins:28] [INFO] Server [My Super Server] version [X.Xalpha] binded to [127.0.0.1:11100]
[I 120315 16:33:28 webapp:37] Starting I/O loop to serve requests...

понедельник, 12 марта 2012 г.

Как синхронизировать Google c Bada (Samsung Wave 3) ?

Если вы пользователь Google и нужно засинхронизировать ваш аккаунт с телефоном на Bada (в моем случае - это Samsung Wave 3), то необходимо проделать следующие телодвижения.



  • Создаем Exchange ActiveSync аккаунт
  • Вводим имя-логин-пароль, но оставляем поле domain пустым
  • Затем нажимаем далее и после того как проверка будет неуспешной - в поле Server URL вводим m.google.com и выставялем галочку для SSL
  • Заодно выставляем галки синхронизировать и Календарь, Адресную книгу и Задачи. (Кстати - явный баг - при выборе одной галки СРАЗУ начнется синхронизация, в итоге у меня девайс синхрился 4(!) раза ;-) ) 

  • Теперь с этой странной зверюшкой можно как-то жить ;-)

    Вообще забавная платформа - воспринимается как Android без приложений от Google

    Подрезано тут

    четверг, 1 марта 2012 г.

    Как удалить все папки .svn от subversion?

    Есть у subversion (в отличии от git) не очень удобная особенность хранить служебную информацию в скрытых папках .svn. При каких-то манипуляциях с переносом каталога они жутко раздражают. Быстренько их удалить

    find . -name .svn -exec rm -rf {} \;
    

    среда, 29 февраля 2012 г.

    Как правильно деплоить Python сервис запущеный через supervisord?

    Иногда supervisord заглючивает и он неправильно определяет необходимость перекомпиляции pyc файлов при обновлении python файлов, что при деплое новой версии сервиса на Python приводит к забавным, но неприятным эффектам

    Рекомендуемый порядок действия

    # supervisorctl stop my_super_service
    

    Теперь обновляем файлы, затем РУЧКАМИ удаляем pyc

    # find path_to_my_service -type f -name "*.pyc" -delete
    # supervisorctl start my_super_service
    

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

    понедельник, 27 февраля 2012 г.

    Ищу Python developer - Junior, СПб


    Ищу будущих коллег и хороших людей:


    Обязанности:

    Разработка и сопровождение серверной части проекта Омлет.ру (легальный видео-контент);

    Что хотим  от вас?

    • Хороший опыт работы с бекендами сайтов
    • Опыт разработки на Python или устойчивое желание его изучить - при наличии знаний других языков (С#, PHP, Perl , Ruby);
    • Знание MySQL;
    • Аналитический склад ума,
    • Коммуникабельность,
    • Знание основ ООП,
    • Самообучение и саморазвитие,
    • Чувство юмора и адекватность - обязательно.

    Вы кандидат нашей мечты, если...

    • уже работали с Python
    • есть опыт работы с no-SQL решениями,
    • есть опыт работы с высоконагруженными веб-сервисами/сайтами - не стесняйтесь показывать портфолио - нам это интересно;
    • владеете хорошей математической базой;
    • знаете и применяете различные языки программирования, новейшие технологии,
    •  владеете английским языком
    Если есть практический опыт Tornado/Twisted - вам большой такой плюс, перекрывающий многие минусы.

    Что мы предлагаем?

    • Возможность забросить PHP - вам еще не надоело? 
    • Работу в большом и интересном проекте
    • Офис - ст. метро Василеостровская + 5 минут ходьбы - и то прогулочным шагом 
    • Неординарные задачи
    • Полностью белое оформление и ЗП
    • Повышенный отпуск - как компенсация за ненормированный рабочий день
    • Корпоративную симку для связи
    •  После испытательного срока - ДМС

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