@ru_python

Страница 5712 из 9768
Jentry
18.06.2018
14:13:31
Mikhail
18.06.2018
14:14:42
Для кодинга небольшой игры имеет смысл кодить на питоне (panda3d) или ставить юнити сразу?

Денис
18.06.2018
14:14:43
Подскажите, каким образом можно проверить IP-подсети на пересечение?

Google
Jentry
18.06.2018
14:15:16
Не в курсе)
Этот господин не перестает хейтить питон за наличие gil и невозможности ему использовать питон в геймдеве, а Хеттингер отбивается от него asyncio

Mikhail
18.06.2018
14:18:47
Питон - так себе для игр
А куда лучше смотреть? Кодю на питоне, кодил на Дельфи,asm,c

Tigran
18.06.2018
14:19:24
А куда лучше смотреть? Кодю на питоне, кодил на Дельфи,asm,c
Ну юнити норм. Или жс - тоже универсальная платформа

Mikhail
18.06.2018
14:21:04
Dankè, посмотрю после работы

Jentry
18.06.2018
14:22:22
Подскажите, каким образом можно проверить IP-подсети на пересечение?
Для начала можно сравнить подсети, если не хватает, то можно пройтись по адресам https://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Network.subnets

но прям пересечение подсеть и подсеть с ответом новой подсети в либе не вижу

Денис
18.06.2018
14:23:57
Задача такая: в конфиге пользователь должен указать уникальные не пересекающиеся подсети дла разных методов работы скрипта. Так вот перед стартом скрита считаю необходимым проверить подсети на пересечение, чтобы исключить ошибку пользователя

может быть можно решить как-то иначе?

Мне главное понимать, что подсети не пересекаются. Например, пользователь может по ошибке указать: 10.0.0.0/24 и 10.0.0.0/16

Jentry
18.06.2018
14:27:19
может быть можно решить как-то иначе?
Ну смотри, есть compare_networks, можно просто сравнить, можно нажать supernet и повычитать (address_exclude) отдельно A и B, если сети разные, результат будет разный, вариантов масса

Денис
18.06.2018
14:27:46
Окей. Сейчас пробегусь по библиотеке. Спасибо за наводку

Jentry
18.06.2018
14:35:25
Окей. Сейчас пробегусь по библиотеке. Спасибо за наводку
Мне кажется такой вариант ок, поправьте если не прав, если адреса пересекаются, то при вычете из меньшей подсеток большей - в ответе будет непустой список: list(ip16.address_exclude(ip24))

Google
Денис
18.06.2018
14:37:24


Осталось сообразить, как проверить на пересечение все подсети из спсика...

Denis
18.06.2018
14:39:19
Осталось сообразить, как проверить на пересечение все подсети из спсика...
Возьми все начала, все концы, отсортируй и убедись, что соседи не пересекаются

Bogdan (SirEdvin)
18.06.2018
14:40:43
А что вместо них? :)
Ты не поверишь, как в старые - добрые времена, одно цельное приложение. Зачем микросервисы, если не нужен быстрый деплой?

Денис
18.06.2018
14:41:40
Denis
18.06.2018
14:41:57
Попробуй лучше циклом фор пробежаться

Jentry
18.06.2018
14:43:40
Здесь только есть небольшое но - если попробовать вычесть из net3 net1, то будет ValueError, то есть тебе перед вычетом нужно и сравнить к тому же

Денис
18.06.2018
14:44:08
Я уже понял, что арифметические операции не реализованы в этом классе. Уже пробовал

Jentry
18.06.2018
14:45:15
Денис
18.06.2018
14:45:41
Есть только проверка на эквивалентность и для адресов проверка "больше" / "меньше"

пересечений не хватает

Bogdan (SirEdvin)
18.06.2018
14:45:53
Ну, zero-downtime можно сделать с монолитом, поиск проблем в микросервисах обычно заключается в поисках проблем в их взаимодействии, что куда сложнее, чем просто отдежить одно приложение. Ну и там распределенный трейсинг это тоже не так просто.

Единственный профит от микросервисов - возможность деплоя частей приложения независимо, что нужно далеко не всем, все остальное так же или проще можно достичь и цельным приложением или же просто через сервисную архитектуру.

Bogdan (SirEdvin)
18.06.2018
14:48:02
А почему такое же крутое логгирование не запилить в монолите?)

Jentry
18.06.2018
14:48:35
На самом деле еще зависит от качества монолита, но в целом его сложней поддерживать

Google
Bogdan (SirEdvin)
18.06.2018
14:48:51
Вы можете проложить архитектурные границы в коде, изолировав части приложения так, что бы они взаимодействовали только через абстрактные развязки и эффект тот же самый

Не. Ещё принудительно слабая свазность
Не-а. Есть даже такой антипаттер - распределенный монолит

Tishka17
18.06.2018
14:49:23
Ужс

Jentry
18.06.2018
14:50:03
Вы можете проложить архитектурные границы в коде, изолировав части приложения так, что бы они взаимодействовали только через абстрактные развязки и эффект тот же самый
Ага, потом в коммитах появляются "hotfix", "mutherfuckhotfix", "prodinfire" и выясняется, что появилась связность, потому что никто технически это не запрещено, а что не запрещено технически, то будет эксплуатироваться

Bogdan (SirEdvin)
18.06.2018
14:50:44
Ага, потом в коммитах появляются "hotfix", "mutherfuckhotfix", "prodinfire" и выясняется, что появилась связность, потому что никто технически это не запрещено, а что не запрещено технически, то будет эксплуатироваться
А, простите, как вы запретите технически связаность при микросервисах? Судя по тому, что существуют такие вещи, как "распределенный монолит" это так тоже не работает.

Jentry
18.06.2018
14:51:38
А, простите, как вы запретите технически связаность при микросервисах? Судя по тому, что существуют такие вещи, как "распределенный монолит" это так тоже не работает.
Связность микросервисов через endpoint происходит, это и не связность вовсе, а взаимодействие посредством сообщений!

Roman
18.06.2018
14:56:33
А почему такое же крутое логгирование не запилить в монолите?)
потому что всё со всем взаимосвязано. и даже если у тебя все модулями, то жизнь в рамках одного адресного пространства сильно снижает общую надежность.

Bogdan (SirEdvin)
18.06.2018
15:01:56
Связность микросервисов через endpoint происходит, это и не связность вовсе, а взаимодействие посредством сообщений!
У вас связность появляется тогда, когда вы определяете формат для сообщений. И как только из-за косяков проектирования получается ситуация, когда все 10 сервисов (ну или 7 из 10) надо задеплоить одновременно вместе, потому что у одного из них надо было поменять формат ответов, а во всех остальных надо поменять формат, что бы они умели в ним работать - вот тогда у вас появляется связность. Понижать связность в коде можно изоляцией модулей и абстракциями - эффект такой же, но проще и обходится дешевле.

разные адресные пространства. чтобы их преодолеть, придется явно втаскивать механизмы IPC
Всмысле? Так же делается, "hotfix" в один микросервис, "hotfix" в другой и "задеплойте их вместе, пожалуйста".

Roman
18.06.2018
15:04:17
Всмысле? Так же делается, "hotfix" в один микросервис, "hotfix" в другой и "задеплойте их вместе, пожалуйста".
это если наговнякать в оба. микросервисы - это в каком-то смысле развитие идеи процессов операционной системы: если в нем что-то пошло не так, его можно убить/перезапустить.

монолитом так не получится.

хороший способ ограничть размеры failure domain

Bogdan (SirEdvin)
18.06.2018
15:06:06
это если наговнякать в оба. микросервисы - это в каком-то смысле развитие идеи процессов операционной системы: если в нем что-то пошло не так, его можно убить/перезапустить.
Наговнякать в микросервисы - проще пареной репы, достаточно не проработать API, что встречается довольно часто и вуаля. Если вы не можете проработать API классов, с которыми будете работать, почему с микросервисами должно быть по другому?

Bogdan (SirEdvin)
18.06.2018
15:07:14
Ну да, это все следствия того, что можно деплоить части приложения независимо. Но опять же, это не нужно всем, особенно учитывая цену.

Roman
18.06.2018
15:07:20
отдельные части могут течь, но это не будет сказываться на общей работоспособности

Google
Roman
18.06.2018
15:07:50
вообщем-то, это очевидные принципы построения систем массового обслуживания.

все это можно тупо заимствовать из erlang/otp

все эти деревья супервизоров, let it crash итп

Sergey
18.06.2018
15:11:13
Всем привет. Сталкивался кто то с паковкой проекта в standalone сборку ? в том плане что бы можно было завести проект у человека у которого даже python не установлен ? (пока пробую разобраться с pyinstaller и ему подобными но не совсем получается так как проект не маленький и обладает своими конфигами и ресурсами) куда копать ? возможно ли это ?

Sergey
18.06.2018
15:12:58
это уже прикрутил )

и даже работает ) правда требует у клиента поставленый докер.. что логично

Bogdan (SirEdvin)
18.06.2018
15:16:54
отдельные части могут течь, но это не будет сказываться на общей работоспособности
До определенного предела. Опять же таки, как-то куча систем работает и без такого подхода, например, при помощи сервисно-ориентированной архитектуры и кучи воркеров. Та же магическая связка django + celery + rabbitmq + rdbs. Даже если какая-то celery задача упала или сильно грузит ресурсы, то при правильном подходе будет почти такой же эффект.

Jentry
18.06.2018
15:16:57
и даже работает ) правда требует у клиента поставленый докер.. что логично
здорово, теперь донеси клиенту, что докер дефакто-стандарт поставки в современном мире и дело сделано

Sergey
18.06.2018
15:18:50
здорово, теперь донеси клиенту, что докер дефакто-стандарт поставки в современном мире и дело сделано
) понял, спасибо! просто увы на python пишу только последние пол года, до этого не сталкивался с его дистрибуцией

Jentry
18.06.2018
15:21:37
Сейчас докер все заказчики принимают и даже радуются, что не что-то другое

Sergey
18.06.2018
15:23:06
Сейчас докер все заказчики принимают и даже радуются, что не что-то другое
Думаю пока на нем и остановлюсь... извращатся со всякими py2exe, pyinstaller и им подобными смысла нету

Bogdan (SirEdvin)
18.06.2018
15:31:59
окей, вот у вас долгоживущий(десятки часов) коннект и вам надо рестартовать воркер - что вы делать будете?
Мне кажется, иметь долгоживущие коннекты, которые не умеют в рестарт - это немного антипаттер. Но тем не менее, большинство современных инструментов умеет делать graceful shutdown, когда дожидаются, пока все коннекты отключатся.

Bogdan (SirEdvin)
18.06.2018
15:33:16
И первое, что стоит научить делать вебсокет - это реконнект, потому что сеть дофига ненадежная

Roman
18.06.2018
15:34:24
Мне кажется, иметь долгоживущие коннекты, которые не умеют в рестарт - это немного антипаттер. Но тем не менее, большинство современных инструментов умеет делать graceful shutdown, когда дожидаются, пока все коннекты отключатся.
>graceful shutdown, когда дожидаются, пока все коннекты отключатся. во-первых, это очень долго. во-вторых, это адски неудобно. в-третьих, коннект терминируется в твоем процессе, а где-то еще. да, можно точку терминации унести куда-то, но требования по надежности переедут туда.

Bogdan (SirEdvin)
18.06.2018
15:35:57
Так люди так и делают, перенося точку терминации на nginx, зачем тут микросервисы? Ну и как я уже писал раньше - долгие коннекты, которые не умеют в реконнект - это игрушка дьявола. Моргнет сеть и все развалится, а сеть так довольно часто делает.

Roman
18.06.2018
15:36:13
и проблема монолитов в том, что целая пачка довольно противоречивых требований оказывается заперта в одном процессе.

Google
Roman
18.06.2018
15:37:24
или любой другой протокол, который nginx не умеет.

например, у тебя сервис умеет redis-протокол

потому что куча библиотек и кода

Bogdan (SirEdvin)
18.06.2018
15:40:06
Ну, то есть микросервисная архитектура позволяет исправлять костыли в коде, прибегая к архитекрутным костылям в виде того, что входную точку можно научить в терминацию по нужному протоколу?

Опять же таки, я не совсем понимаю, почему нельзя сделать тоже самое, просто втыкнув сервис, который будет это делать перед монолитом?

Jentry
18.06.2018
15:42:24
Монолит можно разрабатывать согласно всем принципам и подходам, но это сложно поддерживать и сложно не запустить, с увеличением объема строк кода это перестанет помещаться в голову лиду проекта и может начаться хаос. Яркий пример, того, что это сложно - ядро линукс. Попробуйте посмотреть на PR

В случае распределения и делегирования ответственности на мироксервисы их и держать в голове проще и при разрастании также продолжать декомпозицию

Bogdan (SirEdvin)
18.06.2018
15:47:39
Вы можете сделать абсолютно так же в коде, проводя архитектурные границы между компонентами, заставляя разработчиков использовать только через публичное API компонентов (абстрактные компоненты). И микросервисная архитектура абсолютно так же должна помещатся в голову тех лиду, что бы он понимал принципи того, как это все взаимодействует. Проблема только в том, что размытие архитектурных границ в монолите приводит к не очень хорошему коду, размытие архитектурный границ между микросервисами приводит к адской боли у всех, кто с этим работает.

Jentry
18.06.2018
15:49:24
Давай по классике, есть user, есть orders, два сервиса, как ты видишь себе возможное размытие границы в микросервисах? А вот размыть эти границы в монолите очень даже просто

Roman
18.06.2018
15:52:49
Ну, то есть микросервисная архитектура позволяет исправлять костыли в коде, прибегая к архитекрутным костылям в виде того, что входную точку можно научить в терминацию по нужному протоколу?
это не архитектурные костыли. это обычные требования к живучести. ровно по той же причине делают переборки на кораблях/подлодках.

Jentry
18.06.2018
15:53:29
Хм ... подскажите, как их размыть в монолите? Что-то в духе "user.get_orders()?)
Хотя бы даже это - нахождение в одной базе и хождение друг к другу через базу, минуя бизнес-логику сверху в каких-нибудь вьюхах, через которые ты ходить не можешь

Vitaly
18.06.2018
15:54:03
в csv можно переделать из dbf

Roman
18.06.2018
15:54:51
Хотя бы даже это - нахождение в одной базе и хождение друг к другу через базу, минуя бизнес-логику сверху в каких-нибудь вьюхах, через которые ты ходить не можешь
потом люди начинают ходить в обход orm, потом апдейтить тулзами сбоку, потом начинают манкипатчить код, чтобы не ходить через mq

Bogdan (SirEdvin)
18.06.2018
15:56:09
Jentry
18.06.2018
15:56:36
Ну за это уже по рукам, а получить в монолите объект напрямую без логики вьюхи это общепринятый паттерн, а если вдруг выясняется, что хотелось бы эту логику провернуть, то мы ее куда-нибудь вытащим и будем использовать отовсюду! Ура успех, реюзабельность

Roman
18.06.2018
15:57:14
Как можно требовать живучести, если ее обеспечить можно только в комнатных условиях?
ну каких комнатных? 2бп, 2 отдельных ввода, резервирование коммутаторов и аплинков.

Страница 5712 из 9768