Analitycs
вторник, 14 февраля 2012 г.
понедельник, 13 февраля 2012 г.
суббота, 11 февраля 2012 г.
Как проверить string ли переменная в Python? - isinstance(val, basestring)
Когда нужно проверить - строка ли переменная в Python - есть небольшой подводный камень, о котором иногда забывают...
Все ли помнят что строки в питоне разные? (например, str и unicode), так что для общей проверки нужно использовать isinstance(val, basestring):
Например
Все ли помнят что строки в питоне разные? (например, str и unicode), так что для общей проверки нужно использовать isinstance(val, basestring):
Например
$ python Python 2.7.1 (r271:86832, Jul 31 2011, 19:30:53) [GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> isinstance('abcd', str) True >>> isinstance('abcd', basestring) True >>> isinstance(u'abcd', str) False >>> isinstance(u'abcd', basestring) True
пятница, 10 февраля 2012 г.
Как запускать периодические задачи на Tornado? PeriodicCallback!
Продолжая тему периодических задач в Twisted, в Tornado это делается немного по другому - с помощью специального tornado.ioloop.PeriodicCallback.
Примерчик - если кому пригодится
Примерчик - если кому пригодится
#!/usr/bin/env python # -*- coding: utf-8 -*- import tornado.web import tornado.httpserver import tornado.ioloop PERIOD = 30 # в минутах class MyApplication(tornado.web.Application): def period_run(self): # чего-то тут делаем pass ... app = MyApplication(handlers=urls, **settings) http_server = tornado.httpserver.HTTPServer(app, xheaders=True) loop = tornado.ioloop.IOLoop.instance() period_cbk = tornado.ioloop.PeriodicCallback(app.period_run, 1000*60*PERIOD, loop) period_cbk.start() loop.start()
вторник, 7 февраля 2012 г.
Как сделать hard-reset на LG Optimus Black?
Шаманство с зажатием Volume Down + Power + Home при включении не прокатило, может граната у меня не той системы?
В итоге - hard-reset через коды
dial 3845#*970#
Разумеется - все данные похерятся.
В итоге - hard-reset через коды
dial 3845#*970#
Разумеется - все данные похерятся.
понедельник, 6 февраля 2012 г.
Сервер боевой или production? - или лингвистические особенности
Забавный лингвистический факт.
Сервера, на которых крутятся сайты/сервисы для клиентов:
Ох, не спроста имеется эта разница в национальных названиях... ох не спроста ;-) ;-)
Сервера, на которых крутятся сайты/сервисы для клиентов:
- в английском языке они всегда называются production server - PRODUCTION, то есть производственные.
- в русском же языке сплошь и рядом - БОЕВЫЕ сервера. То есть - те, на которые идешь в бой, соответсвенно - либо победишь, либо проиграешь.
Ох, не спроста имеется эта разница в национальных названиях... ох не спроста ;-) ;-)
пятница, 3 февраля 2012 г.
Как перезапустить демонизированный процесс в Supervisord?
Если в supervisord запущено несколько процессов и один из них отвалился, не нужно перезапускать демон целиком - есть консольная утилитка supervisorctl.
Ага, вот процесс-виновник - перезапускаем халявщика
Все ОК - "13 секунд, полёт нормальный. Хьюстон, у нас НЕТ проблемы" (с)
# supervisorctl api-test-data RUNNING pid 22443, uptime 1 day, 16:52:01 api-test-empty FATAL Exited too quickly (process log may have details) auth-service RUNNING pid 22444, uptime 1 day, 16:52:01
Ага, вот процесс-виновник - перезапускаем халявщика
supervisor> start api-test-empty api-test-empty: started supervisor> status api-test-data RUNNING pid 22443, uptime 1 day, 16:52:29 api-test-empty RUNNING pid 27360, uptime 0:00:13 auth-service RUNNING pid 22444, uptime 1 day, 16:52:29 supervisor>
Все ОК - "13 секунд, полёт нормальный. Хьюстон, у нас НЕТ проблемы" (с)
Подписаться на:
Сообщения (Atom)