
Andrey
16.05.2016
08:17:15
?
привет

Alex
16.05.2016
10:01:29
Народ про микро питон кто нибудь слышал?
https://micropython.org/

Google

Roman
16.05.2016
10:05:23
А зачем он?
И микро оффтоп: что вы думаете о lua & moonscript?

Aleksandr
16.05.2016
10:14:39
lua боль. Со вторым дела не имел

Roman
16.05.2016
10:23:00

Green
16.05.2016
10:23:38
Сахар в стиле кофе)
А мне lua нравится. Но это мое субъективное мнение)

Alex
16.05.2016
10:24:37
lua вроде решал боль со строками для си?

Aleksandr
16.05.2016
10:26:20
Ну, для меня болью был в основном синтаксис и философия языка. Например, чтобы объявить переменную локальной нужно использовать ключевое слово. Так же не самое явное для меня использование аргументов по умолчанию. Но самым больным был дебаг и отловка мсключений

Roman
16.05.2016
10:35:40
Ну, да. Лучше бы дефолт в виде local

Chikiro
17.05.2016
12:06:02
Как думаете, дефолтное название базы данных, хоста в настройках это скорее хорошо или скорее плохо?

Serge
17.05.2016
12:06:47
хорошо иметь пример настроек, который не применяется по умолчанию, а лежит рядом

Chikiro
17.05.2016
12:09:16
Вот тоже склоняюсь к такому, x.sample. Но не могу объяснить почему дефолтный file path и дефолтные настройки базы - это не очень.

Andrey
17.05.2016
12:09:57
потому что их ломать будут в первую очередь

Google

Andrey
17.05.2016
12:10:19
можно еще пароль дефолтный поставить

Chikiro
17.05.2016
12:12:02
Это внутренний сервис. Если внутренний, то можно дефолтных значений напихать? Мне кажется, не надо к таким практикам привыкать.

Paul
17.05.2016
12:23:05
кроме того, дефолтные параметры имеют тенденцию менятся от версии к версии, так что лучше прописать недефолт и явно

Chikiro
17.05.2016
12:23:49
Ок, всем спасибо за советы

Serge
17.05.2016
13:10:45
я обычно делаю так:
/settings/
/settings/__init__.py
/settings/dist.py
/settings/local_sample.py
в __init__.py написано:
from .dist import *
try:
from .local import *
except ImportError:
print('FATAL: No local settings module found. Dying.', file=sys.stderr)
sys.exit(123)
local.py в .gitignore
хочешь дефолт - делай cp settings/local{_sample,}.py
в dist.py лежит то что не должно меняться, ну тпа является настройками под приложение разных внешних либ
но и оно всегда может быть переопределено в local.py
а вот то что обязательно должно быть установлено в зависимости от окружения - всегда в local.py, ну типа база или пароли и ключи внешних сервисов
ну и в local_sample.py лежат настройки, с которыми может взлететь, например, на девелоперской машине
по возможности универсальные, т.е. пути не явно прописаны, а от dirname(__file__) все-таки


Roman
17.05.2016
13:18:36
а вот скажите, как вы делаете схему с двумя конфигами: глобальным и перекрывающим его локальным?
ну т.е. понятно что вариантов много, но интересует именно ваш и почему именно так

Serge
17.05.2016
13:21:19

Dmitriy
17.05.2016
13:26:07
?

Chikiro
17.05.2016
13:38:00
Мы сейчас пробуем через env настройки задавать. Но чувствую, там затаились грабли.

Valentin
17.05.2016
13:55:03
Вот допустим я хочу посмотреть содержимое какого-то объекта в памяти запущенного процесса. Вот я пошёл:
$ sudo gdb —quiet -p 22585 -batch -eval-command="print (PyObject*)0x28cfe80"
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
0x00007fe87d777013 in select () from /lib/x86_64-linux-gnu/libc.so.6
$1 = (PyObject *) 0x28cfe80

Google

Valentin
17.05.2016
13:55:25
И вот, что-то я делаю не так, походу =(

Dmitry
17.05.2016
14:48:31
А что у тебя - а не -- перед batch и eval ?

Dmitriy
17.05.2016
14:49:12
Телега заменила

Dmitry
17.05.2016
14:49:33
Не похоже

Dmitriy
17.05.2016
14:49:36
А не. Точно

Dmitry
17.05.2016
15:01:03
А ты кстати уверен в адресе - у тебя вроде x64.

GNU/Docker
17.05.2016
15:01:56
А разве это не адрес в питоньей недовиртуальной машине?
http://stackoverflow.com/a/16408670/2323378
Может так сработает?

Valentin
17.05.2016
15:26:04
Не, когда там ничего нет он пишет <unknown at remote 0x2e00010>, скажем
А это, походу, из-за того что он из коробки не умеет принтовать PyObject

Dmitry
17.05.2016
15:30:04
Я понял ты добавь разыменование типа p *((PyObject*)addr)

Valentin
17.05.2016
15:35:23
Блин, я вообще gdb сломал =(
Он сразу после старта пишет /usr/bin/python2.7-dbg (deleted): No such file or directory.
Мамой клянусь, он там есть =]
Можно сказать symbol-file /usr/bin/python2.7-dbg то, вроде, работает
Но в неинтерактивном режиме — нет =\

Dmitry
17.05.2016
15:36:30
Lol :)
Ну а как подключишься также смотришь через разыменование типа "p *(PyFunctionObject*)addr"

amureki
17.05.2016
18:29:42

Chikiro
18.05.2016
09:47:41
Это очень удобно, какие же грабли?
Допустим, на боевом сервере нужно настроить в django-channels settings логирование с помощью syslog, а на машинах разработчиков писать в консоль, причем гибко настраивать логирование для разных модулей.

Google

Danil
18.05.2016
10:01:59
настройка логгирования прописывается в settings_local или где еще там, а в ENV хранится только MODE: develop, prod, staging.

Chikiro
18.05.2016
10:19:44

Serge
18.05.2016
10:31:18

Chikiro
18.05.2016
10:42:39
А, кстати, вот такие проблемы и их решение - это devops или нет?

Aleksey
18.05.2016
10:46:40
вообще в девопс можно списывать все, что непонятно к какой деятельности относится, очень удобно )

VsegdaZhivoi
18.05.2016
11:21:16
Девопса с инженером по автоматизации часто путают

Paul
18.05.2016
11:21:50

VsegdaZhivoi
18.05.2016
11:22:40
Потому что девопс - это методология, которая призвана за счет автоматизации некоторых процессов удешевить выпуск новых версий продукта

Paul
18.05.2016
11:23:09

Admin
ERROR: S client not available

VsegdaZhivoi
18.05.2016
11:24:38

Roman
18.05.2016
15:09:36
https://github.com/spotify/luigi
кто-нибудь пользует?

Paul
18.05.2016
15:23:07
выглядит очень интересно. Я так понимаю, это такой крутанский celery на стероидах?

Serge
18.05.2016
15:23:38
а amqp там есть?

Roman
19.05.2016
11:12:29
коллеги, а снимите меня с ручника:
https://dpaste.de/fYL0/raw

Serge
19.05.2016
11:13:05
и?
а, память не почистилось;)

Google

Roman
19.05.2016
11:13:26
ну, во-первых - да.
во-вторых, я очень-очень хочу избавиться от такого дикого потребления памяти

Serge
19.05.2016
11:14:15
https://docs.python.org/2/library/xml.sax.html

Roman
19.05.2016
11:14:17
т.е. я могу понять, что у lxml это требует столько памяти

Serge
19.05.2016
11:14:18
не благодари

Andrey
19.05.2016
11:14:20
а если gc.collect(0) написать? он там же поколения еще учитывает

Serge
19.05.2016
11:14:34
DOM всегда жрет память

Andrey
19.05.2016
11:14:44
и чем кстати профилируешь, я тоже так хочу

Roman
19.05.2016
11:15:14
DOM всегда жрет память
я готов смириться с пиковым потребленим на этом этапе. меня волнует почему оно потом не освободило.

Andrey
19.05.2016
11:31:38
ссылку где-нибудь не отпустило

Roman
19.05.2016
11:34:12
http://stackoverflow.com/questions/22380990/how-do-i-free-up-the-memory-used-by-an-lxml-etree
http://comments.gmane.org/gmane.comp.python.lxml.devel/6162
гы, нашёл проблему
Line # Mem usage Increment Line Contents
================================================
264 244.172 MiB 0.000 MiB @profile
265 def body2packages(self, body):
266 2472.121 MiB 2227.949 MiB xml = etree.XML(body)
267 2473.480 MiB 1.359 MiB pdata = xml_xpath(xml, '///ns:package')
268 2493.562 MiB 20.082 MiB packages = [process_node(x, flds=self.primary_flds) for x in pdata]
269 481.312 MiB -2012.250 MiB del pdata
270 481.312 MiB 0.000 MiB del xml
271 481.312 MiB 0.000 MiB gc.collect(0)
272 481.312 MiB 0.000 MiB return packages

Andrey
19.05.2016
12:52:51
ссылка осталась, да

Roman
19.05.2016
12:57:18
нет, дело не в ссылке
а в аллокаторе
https://gist.github.com/anonymous/6a1b9a1f1f8af2c233714f3213b95c61

Dmitry
19.05.2016
13:46:16
Ужас! А что это ты подключил такое?
Какой-то аллокатор сторонний?