metaclass: (Default)
[personal profile] metaclass
http://www.cacodaemon.org/content/weather.py (или с подсветкой: http://codepad.org/FxCWtYFD)

класс Daemon взят отсюда: http://www.jejik.com/articles/2007/02/a_simple_unix_linux_daemon_in_python/

Живет демоном, читает данные с ком-порта, парсит, складирует в rrdtool, рисует графики.
Надо бы подумать, как правильно указывать пути для файлов и картинок, где кошерно хранить конфиг, как выселить все константы и подписи для датчиков в конфиг, и как прикрутить к этому мини-сервис для раздачи текущей информации с датчиков по сети.
Заняло 5 часов времени, сильно меньше, чем аналогичное на хаскеле :)

PS: о сторонних либах в хаскеле: http://kkirsanov.livejournal.com/381144.html
Это фактически основная причина, почему хаскель занял настолько больше времени.

Date: 2012-02-02 09:19 pm (UTC)
From: [identity profile] justy-tylor.livejournal.com
Админский конфиг кошерно хранить отдельным файлом на том же Python.
class NormalSettings:
    ...

class BloodyEnterpriseSettings:
    achtung = True
    ...

Date: 2012-02-02 09:48 pm (UTC)
From: [identity profile] avnik.livejournal.com
Нед, это неправильный подход.
Пользователский/админский конфиг должен быть человекопонятным .ini,
(для кровавого энтерпайза есть адъскийъ ZCML еще)

Date: 2012-02-02 10:39 pm (UTC)
From: [identity profile] crazy-coder.livejournal.com
yaml же!

Date: 2012-02-02 10:51 pm (UTC)
From: [identity profile] justy-tylor.livejournal.com
Пользовательский редактировать гуём/вебмордой, хранить (например) в JSON. Много_пользовательский редактировать гуём/вебмордой, хранить в базе. И проверять по 100500 раз, чтобы не ломанули.

Date: 2012-02-03 10:38 pm (UTC)
From: [identity profile] stdray.livejournal.com
Отдельный файл с конфигом на том же питоне человекопонятен.

Date: 2012-02-02 09:49 pm (UTC)
From: [identity profile] eg-fread.livejournal.com
А можно ещё вот так (http://pastie.org/3305223).

Date: 2012-02-02 09:59 pm (UTC)
From: [identity profile] hls-1141.livejournal.com
>>> path = rom+'.rrd'
>>> path = os.path.join(self.rrdpath,path)

Насколько я помню, строки в петоне неизменяемые.
path = os.path.join(self.rrdpath, rom.join('.rrd'))
Edited Date: 2012-02-02 10:03 pm (UTC)

Date: 2012-02-02 10:13 pm (UTC)
From: [identity profile] eg-fread.livejournal.com
rom.join('.rrd') приведёт к неожиданному результату. Чем конкатенация-то не угодила?

Date: 2012-02-02 10:21 pm (UTC)
From: [identity profile] hls-1141.livejournal.com
Действительно, здесь я не прав.
path = os.path.join(self.rrdpath, rom+'.rrd'), так правильно.
Но не суть, я говорил, что в петоне строки менять нежелательно, т.е. объявил path и всё, не трогай.

Date: 2012-02-02 10:32 pm (UTC)
From: [identity profile] avnik.livejournal.com
Если там не сериализация какая -- где по два символа склеиваются миллионы строк, то можно и забить, А если миллионы -- то cStringIO

Date: 2012-02-03 04:51 am (UTC)
From: [identity profile] metaclass.livejournal.com
Если я правильно понимаю, как работают строки - предыдущее значение path соберется сборщиком мусора, точно так же как и результат операции rom+'.rrd', т.е. формально должно быть однохренственно, за исключением того, что явная иммутабельность все таки лучше.

Date: 2012-02-03 08:20 am (UTC)
From: [identity profile] eg-fread.livejournal.com
Ребе, а вы мой комментарий выше сознательно не расскринили или не заметили?

Date: 2012-02-03 08:24 am (UTC)
From: [identity profile] metaclass.livejournal.com
Не обратил внимания, что заскринен.
Идея хорошая, да.

Date: 2012-02-02 11:28 pm (UTC)
From: [identity profile] theiced.livejournal.com
а теперь на руби, чо

Date: 2012-02-03 11:10 am (UTC)
From: [identity profile] bambr77.livejournal.com
Вот я закуплюсь датчиками, и демона буду писать таки на руби :)

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Nov. 13th, 2025 08:23 am
Powered by Dreamwidth Studios