gentoo.ru
python
python@conference.gentoo.ru
Воскресенье, 23 июня 2013< ^ >
maksbotan установил(а) тему: ЯП Python || https://gist.github.com/289467 || Логи: http://tinyurl.com/gentoo-py-logs || "Python's a drop-in replacement for BASIC in the sense that Optimus Prime is a drop-in replacement for a truck." || Создан список рассылки python@lists.gentoo.org
Конфигурация комнаты
Участники комнаты

GMT+4
[00:55:41] lk4d4 вышел(а) из комнаты
[11:23:17] maksbotan вошёл(а) в комнату
[16:02:20] lk4d4 вошёл(а) в комнату
[16:44:06] <maksbotan> lk4d4: привет
[16:44:08] <maksbotan> есть время?
[17:20:30] <lk4d4> нет, наверное только вечером будет
[17:21:52] <maksbotan> lk4d4: хорошо, тогда я тебя вечером еще дурацкими вопросами подостаю :)
[17:22:13] <lk4d4> окей)
[20:36:33] <lk4d4> maksbotan: ну что ты там хотел?
[20:37:11] <maksbotan> lk4d4: ты можешь мне растолковать в каких случаях могут быть нужны rammit mq или zero mq?
[20:37:33] <lk4d4> ну могу
[20:37:40] <lk4d4> например у тебя есть штука
[20:37:57] <lk4d4> одна ее часть что-то считает, другая рассылает это другим таким штукам
[20:38:08] <lk4d4> и вот они могу общаться через rabbitmq
[20:38:28] <maksbotan> [t[
[20:38:29] <maksbotan> хех
[20:38:48] <maksbotan> я просто обдумываю дизайн системы тестирования решений
[20:38:58] <lk4d4> а что это означает?
[20:39:00] <maksbotan> и я запутался аж в нескольких направлениях
[20:39:34] <maksbotan> lk4d4: смотри, есть сервак, у него в конфигурации задаются
а) список юзеров
б) список контестов
внутри каждого контеста есть список задач
[20:39:52] <maksbotan> юзер может подключиться и отправить решение, сервер его сохраняет, компилирует и прогоняет по тестам
[20:40:09] <maksbotan> и затем сохраняет себе результаты, юзер после может их получить
[20:40:20] <maksbotan> вот во-первых я не знаю как хранить настройки контестов
[20:40:30] <maksbotan> и не знаю куда девать состояние
[20:40:38] <maksbotan> потому что рестарт сервера не должен ничего терять
[20:40:47] <lk4d4> mongodb
[20:41:02] <lk4d4> вообще прям ничего-ничего?
[20:41:16] <maksbotan> ну, у меня есть какая-то наколенная реализация с gevent :)
[20:41:41] <maksbotan> конфигурация читается из JSON файликов, состояние сохраняется в таком же формате
[20:41:46] <maksbotan> но это все как-то грустно и неопрятно
[20:42:10] <lk4d4> ну довольно быстро будет хранить в редисе
[20:42:20] <lk4d4> но можно немного потерять при ребуте
[20:42:30] <maksbotan> тут даже важнее не скорость (клиентов не так уж и много), а удобность написания
[20:42:36] <maksbotan> lk4d4: а что мне может дать mongo?
[20:43:11] <lk4d4> удобность написания)
[20:43:38] <lk4d4> можно и в pg хранить, в принципе если клиентов не много, то что угодно покатит
[20:44:04] <maksbotan> я думал о sqlite, но дизайн таблиц остается непонятным
[20:44:24] <maksbotan> если я смогу хранить иерархическую конфигурацию в этом mongo, будет круто
[20:44:38] <lk4d4> ну там как json можно хранить
[20:44:41] <maksbotan> хотя если использовать алхимовский ORM по-умному...
[20:44:43] <lk4d4> тока bson
[20:45:13] <maksbotan> lk4d4: я пока вот так костылирую :)
[20:45:15] <maksbotan> http://bpaste.net/show/109154/
[20:46:21] <lk4d4> даже reduce есть
[20:46:35] <maksbotan> а сообщения юзерам пихаю простые питоновские списки
[20:46:42] <maksbotan> сообщения надо сохранять после прочтения :)
[20:48:17] <maksbotan> lk4d4: а вообще gevent хорошая штука для использования в больших проектах?
[20:48:37] <lk4d4> да
[20:48:42] <maksbotan> http://bpaste.net/show/109155/ куча говнокода :)
[20:48:52] <lk4d4> у нас gevent
[20:49:01] <maksbotan> lk4d4: а вы что делаете?
[20:49:07] <lk4d4> интернет-кинотеатр
[20:49:20] <maksbotan> lk4d4: а ты не в курсе, как там вообще насчет py3?
[20:49:23] <lk4d4> трафик в россии на третьем месте после ютуба и еще какой-то хрени
[20:49:32] <lk4d4> дак вроде норм там с py3? нет?
[20:50:00] <maksbotan> lk4d4: а что именно за проект? неужто ivi?
[20:50:05] <lk4d4> да
[20:50:17] <maksbotan> $ python3 -c "import gevent"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ImportError: No module named gevent
[20:51:28] <lk4d4> блин, ну я видал коммиты у этого черта, которые что-то делали для py3
[20:51:35] <lk4d4> может не доделали
[20:51:39] <maksbotan> ладно
[20:51:52] <maksbotan> lk4d4: спасибо :)
[20:52:03] <maksbotan> если я смогу сформулировать что-то поконкретнее, спрошу еще потом
[20:52:25] <lk4d4> а тесты у тебя внешней штукой гоняются?
[20:52:32] <maksbotan> не-а
[20:52:40] <maksbotan> ты смотрел вторую ссылку?
[20:52:48] <maksbotan> там как раз то, что компиляет и запускает тесты
[20:53:04] <maksbotan> run.Run это класс, который копирует файлы туда-сюда и дергает решение через subprocess
[20:53:12] <lk4d4> а
[20:53:16] <lk4d4> ну норм тогда
[20:53:27] <maksbotan> а что?
[20:53:45] <lk4d4> да просто можно налететь на блок гринлета какой-нибудь чепухой
[20:54:24] <maksbotan> а еще, ты не знаешь чего-нибудь стандартного вместо такого велосипеда?
[20:54:26] <maksbotan> http://bpaste.net/show/109156/
[20:54:28] <lk4d4> то есть если ты планируешь что-то считать, то либо в другом процессе, либо делить на части и втыкать gevent.sleep
[20:54:56] <maksbotan> я тут собираю сообщения по кускам, на случай если они длинные
[20:55:24] <lk4d4> а зачем?
[20:55:50] <maksbotan> ну смотри, в recv() же надо передать параметр
[20:56:00] <maksbotan> а если там в сокете сообщение больше, чем я передам?
[20:56:06] <maksbotan> обрежется и я не смогу прочитать
[20:56:58] <lk4d4> а зачем это делать в отдельном гринлете?
[20:59:35] <lk4d4> https://github.com/surfly/gevent/blob/master/gevent/server.py
[20:59:41] <lk4d4> вот эта ерунда тебе не подойдет?
[20:59:46] <maksbotan> чтобы можно было одновременно ждать команд с клавиатуры и получать сообщения от сервера
[21:04:48] <lk4d4> ну может ты и прав
[21:06:10] <maksbotan> ладно
[21:06:14] <lk4d4> но сервер тебе наверное тоже подходит
[21:06:47] <maksbotan> ну так это же сервер, а я делал клиент...
[22:49:05] lk4d4 вышел(а) из комнаты
[23:16:30] krigstask вошёл(а) в комнату
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!