
Danil
21.09.2016
12:39:50
ну он всё таки оптимизатор, а не "смотровая щель"

Dmitry
21.09.2016
12:40:02
ага
нашёл версию: из-за того, что он видит больше инструкций одновременно, чем компилятор во время генерации кода

Serge
21.09.2016
12:52:10
ну, в peephole часто за раздетыми подсматривают... т.е. оно смотрит на голый байткод. вечная шутка про синонимы bare и naked

Google

Serge
21.09.2016
12:52:45
в git же можно вместо
git clone --bare
написать
git clone --naked
:)

Zart
21.09.2016
13:04:14
примерно как разница между раздетый и неодетый...

Danil
21.09.2016
15:05:56
псс.. есть xslt либа для json? )

Andrey
21.09.2016
15:07:59
хм
а зачем?

Danil
21.09.2016
15:09:24
есть прокся для внутренних апишек, необходимо иногда преобразовывать данные, хочется делать это декларативно

Serge
21.09.2016
15:10:45

Andrey
21.09.2016
15:10:49
я так и подозревал почему-то

Serge
21.09.2016
15:11:42
внезапно
http://stackoverflow.com/questions/1618038/xslt-equivalent-for-json

Sergey
21.09.2016
15:13:02
не xslt но может упростить
http://sedimental.org/remap.html

Serge
21.09.2016
15:13:30
https://stedolan.github.io/jq/ sed for json :)

Andrey
21.09.2016
15:14:18
ну jq я пользуюсь периодически

Danil
21.09.2016
15:14:27

Google

Andrey
21.09.2016
15:14:29
но как я понимаю вопрос был про либу для python

Serge
21.09.2016
15:14:44

Danil
21.09.2016
15:15:10

Serge
21.09.2016
15:15:19
вообще, прежде всего, json слишком гибкий, чтобы можно было легко программно проверить корректность конкретной трансформации
если не грузить в объекты, то всё сложно

Danil
21.09.2016
15:15:59

Serge
21.09.2016
15:16:03
имхо, самое надежное - налабать свой на ноде или поискать для ноды
там хотя бы не будет преобразований регекспами и перкладывания между разными способами представления
ну собственно, очевидно, что оно уже должно было быть https://www.npmjs.com/package/node-json-transform

Danil
21.09.2016
15:18:10
что-то не охото мне пока node тянуть на прод

Serge
21.09.2016
15:18:46
а зато как няшно на колбэках можно было бы проксю сделать;)

Danil
21.09.2016
15:19:05
колбеки? зачем es6 же async )

Serge
21.09.2016
15:19:05
и скачи оно конем
вот так поешь пиццу с человеком, а он потом тебя в твои же слова тыкать будет...

Danil
21.09.2016
15:19:47
python 3.5 + uvloop + httptools ||
pypy + gevent

Serge
21.09.2016
15:20:31
ну вот pypy все портит;) если бы не он, то gevent в топку:)
а, кстати, uvloop же в 3.6 хотели притащить...

Danil
21.09.2016
15:21:38
он как-то с aiohttp всё равно стрёмно работает, хотя руками не приходилось тестить

Serge
21.09.2016
15:27:37
стремно это в смысле так быстро, что пугаешься?

Google

Serge
21.09.2016
15:28:21
я когда с svn на git перелез только, пугался git checkout <branch>, потому что он работал сразу, меня это пугало;)

Danil
21.09.2016
15:28:47
неа, uvloop не даёт ускорения для aiohttp
https://hsto.org/getpro/habr/post_images/734/695/087/7346950870f6b561274c9f62d351acf5.png

Serge
21.09.2016
15:30:21

Roman
21.09.2016
15:36:44
: ) видимо там россыпи питонокода мешают
>However, the performance bottleneck in aiohttp turned out to be its HTTP parser, which is so slow, that it matters very little how fast the underlying I/O library is.

Serge
21.09.2016
15:40:49
который на питоне же, да?

Roman
21.09.2016
15:43:33
не, там всё интереснее )

Serge
21.09.2016
15:43:37
чпок http://aiowsgi.readthedocs.io/en/latest/

Roman
21.09.2016
15:43:40
https://github.com/KeepSafe/aiohttp/issues/858
https://github.com/KeepSafe/aiohttp/issues/858#issuecomment-217771873

Roman
21.09.2016
15:44:43
вот тут подробно

Serge
21.09.2016
15:47:06
и ни одного flamegraph в тредике. чем они там занимались вообще?

Eugene
21.09.2016
17:56:16
Возвращаясь к той задачке с облаком точек, сделал пару вариантов: "в лоб" и с использованием равномерной сетки. Вариант с сеткой работает быстрее, когда много данных, но выдаёт худший результат с точки зрения распределения точек в прореженном облаке. Оба варианта не справляются с миллиардом точек. 10_000_000 точек вариант с сеткой на моём i7 считает ~30 сек. Вариант без сетки ~50 сек.
А код такой получился.
https://gist.github.com/espdev/a16f28be634c3c4999d5053ac5d50710
В общем, надо придумывать что-то ещё...
Для миллиардов точек сама структура KD-Tree уже работает слишком медленно. По крайней мере её Cython-реализация cKdTree в Scipy.

Sergey
21.09.2016
18:00:36
а без него нельзя?

Eugene
21.09.2016
18:00:46
Без KDTree?

Sergey
21.09.2016
18:00:57
да

Google

Eugene
21.09.2016
18:01:43
Не знаю. Может и можно. Но как ещё быстро искать соседей? R-Tree или R*-Tree работают примерно с такой же скоростью.

Danil
21.09.2016
18:38:58

Sergey
21.09.2016
18:42:10

Zart
21.09.2016
18:58:45
по ощущениям человеку хочется рисовать диаграммы вороного в пространстве

Eugene
21.09.2016
19:00:48

Alexey
22.09.2016
05:20:17
Получилось поднять Klein на Blackswift.
пришлось подключить флэшку, потому как 16мб места было очень мало.

Admin
ERROR: S client not available

Alexey
22.09.2016
05:21:15
Connection:keep-alive
Content-Type:text/html
Date:Thu, 22 Sep 2016 00:53:04 GMT
Server:TwistedWeb/16.4.1
Transfer-Encoding:chunked
Содственно вот. http://kntchk.com/

Roman
22.09.2016
07:56:33

Alexey
22.09.2016
08:17:11
Омг
А что не так. Не силен в этом
?

Roman
22.09.2016
08:20:16
Я про запуск твистед на такой железке :)

Dmitry
22.09.2016
08:28:20
https://twitter.com/asmeurer/status/778815696775974913

Roman
22.09.2016
08:52:10
граждане, а кто какими реализациями prefix trie пользовался?

Gregory
22.09.2016
08:52:21

Roman
22.09.2016
08:55:20
Benchmarks show that prefixtree is 200 times slower than the builtin dict and requires 10 times the memory.>

Serge
22.09.2016
09:24:53
коллеги, держаться больше нету сил.
кто еще Sentry использует?
sentry upgrade 4 часа, "бомба продолжает прыгать"
есть ли известный способ выполнить апгрейд без всякого лишнего шлака, типа "fixing number of comments counters"?

Google

Vitali K.
22.09.2016
09:43:59
попадалово

Alexey
22.09.2016
11:06:34
вопрос. запускаю python скрипт.
Он работает у себя в фоне.
Допустим я поменял что-то в нем. и хочу перезапустить, можно ли как-то сказать python перечитать файл заново? не прибивая процесс?

Roman
22.09.2016
11:08:11

Alexey
22.09.2016
11:08:43
ок :(

Roman
22.09.2016
11:09:01
Ну, всякие manhole и reload в помощь

Eugene
22.09.2016
11:10:37
В IPython есть autoreload, например
http://ipython.readthedocs.io/en/stable/config/extensions/autoreload.html

Andrey
22.09.2016
11:19:04

Zart
22.09.2016
12:42:45

Alexey
22.09.2016
12:43:29

Danil
22.09.2016
12:43:46
там можно и не грамотно )

Zart
22.09.2016
13:20:21

Danil
22.09.2016
13:22:30
Насколько я понял, просто стоит вотчер на баше, который супервизит python скрипт и перезапускает его. Кстати можно было через gunicorn запустить там есть авторелоад

Andrey
22.09.2016
13:35:01
не, ну это перезапуск скрипта. а тут как я понял хотелось горячую замену кода

Zart
22.09.2016
13:36:52
import foo
...
reload(foo)
в тройке релоад уехал из встроенных в importlib
а всякие гуникорны и иже с ним делают форк - родитель тупо перезапускает скрипт заново, пока не получит код завершение, а в порожденном процессе крутится тред, который эпизодически сверяет mtime'ы файлов, которые дергаются из sys.modules.values() -> __file__
если хоть чтото поменялось - процесс дохнет и родитель его заводит заново

Serge
22.09.2016
13:44:39
import foo
...
reload(foo)
и это единственный путь, только весь контекст модуля почит вместе с модулем. все коннекшены, если они там хэндлились в том числе. аккуратно и очень вдумчиво надо, иначе смысла нет.
ну т.е. вот кто мешает. запустить второй процесс, не важно каким способом и роутить все новые соединения туда, а старые отдавать пока не надоест со старого процесса.
даже название для такого есть - connection draining

Zart
22.09.2016
13:51:37

Serge
22.09.2016
13:53:09
от архитектуры зависит