metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2012-02-02 11:45 pm

Тащемта Python

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
Это фактически основная причина, почему хаскель занял настолько больше времени.

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

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

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

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

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

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