LINUX.ORG.RU

Сообщения upcFrost

 

Маленькие радости легаси

Форум — Talks

Суп лор, вопрос-опрос к местным код-мартышкам: когда работаете над легаси проектом, за что вам чаще всего хочется убить прежнего разраба? Безотносительно того насколько вы сами на коне и в белом.

Мне лично за любовь к разбивке всего и вся на «микросервисы» без особого понимания зачем и как, в итоге вместо 4 сервисов натурально 50, транзакции на базе юзать нереально, дикая нагрузка просто из-за наличия этих самых 50 сервисов и прочие радости жизни

жж -20 пошёл дальше копать мёд лопатой

 , ,

upcFrost
()

Ищу рисовалку для интерактивной схемы оборудования

Форум — Admin

Ввиду того что список хостов всем всегда обновлять лень, ну и потому что последний аудит меня слегка подвазелинил за стухшую схему сети, ищу сабж

Что хочется: чтоб было можно нарисовать схему сети/серверного хозяйства (мышью, uml, хоть питоном), задать всем нодам как до них подключиться (ssh/rdp/telnet), после чего чтоб при нажатию на ноду выпадал список с этими самыми вариантами подключения, и при выборе скажем ssh открывался терминал с собственно подключением

Плюс-минус похожим когда-то в 2012 была MaSSHandra, но оно давно стухло, а их вебверсия ещё хуже десктопной

Интерфейс пофиг (веб/десктоп), ценник - в целом платные тоже пойдут, только желательно one-time fee

Основной упор не на сеть даже, а на сервера, своего сетевого оборудования у нас нема. Короче такой интерактивный инвентарь в виде схемы, с зонами и прочим

Подскажите кто знает что-то такое

 

upcFrost
()

Качество интернетов в странах уехавших тракторов

Форум — Talks

Минутка тракторного жж на ЛОРе. Господа и господамы трактористы, как в вашем трактор-ленде обстоят дела с интернетом?

Вопрос к тому что в своей стране «с самыми высокими зарплатами» я уже задрался искать как бы домой сеть провести. Единственный не-мобильный интернет какой предлагают - ADSL в 25 мбит за 100 франков в месяц. 4 франка за мбит, здравствуй «стрим» и 2002 год. И судя по отзывам здесь и в соседней Франции это основной режим подключения. Пишу с кофеварки и тихо фалломорфирую

Справедливости ради - в женеве есть два типа подключения, adsl и оптика в 10 гбит. Последняя как витуха в мск в 2001 году - вроде везде есть, а вроде кого не спроси ни у кого нету

 , , , ,

upcFrost
()

Яблоко опять яблоко

Форум — Talks

https://edwardsnowden.substack.com/p/all-seeing-i

Уже обсудили?

Tldr: яббел опять шпионит и сливает штатовским чекистам

 , ,

upcFrost
()

Пре-релиз aiomongowire, комментарии/замечания/предложения

Форум — Development

Пост не совсем про релиз, а скорее request for comments.

Выложил на тестовый pypi первую сборку aiomongowire, реализации mongo wire protocol на asyncio.Protocol. На данный момент умеет все перечисленные в мане опкоды монги кроме command (deprecated уже весьма давно), две разных либы bson (bson и pymongo) плюс интерфейс если хочется свою либу, умеет сжатие.

Ссылки:

Отличия от мотора:

  • это реализация протокола, а не высокоуровневый клиент. Он не умеет find и транзакции, он умеет op_query и op_msg. В будущем хочу написать более высокоуровневый клиент поверх этого.
  • мотор использует run_in_executor для перевода синхронных вызовов в асинхронные. Aiomongowire использует asyncio.Protocol. Имхо так чище.
  • мотор неплох, но комбайн, как и pymongo. Плюс мотор тянет за собой pymongo, таким образом вместо одной небольшой либы сразу приезжает целый вагон.

По поводу кода - я знаю что он пахнет джавой, мне норм.

Замечания предложения welcome

 , ,

upcFrost
()

Монга, микросервисы, разбивка данных

Форум — Development

Суп лор, мучаюсь в попытках найти золотую середину в монге и микросервисах. Суть такая - где провести границу между nested записью/одним микросервисом и dbref/несколькими сервисами. Через слеш поскольку вещи в каком-то смысле связанные.

Warning: ниже много букв.

Упрощённый пример: веб-альбом. Владелец-юзер, директории, картинки, отзывы на них, метаданные с камеры на них. Картинка без директории не существует, хоть в корне но всё-таки. Мета и отзывы без картинок тоже в воздухе не висят.

Для простоты допустим что если все запихать в одну запись, то её размер заведомо сильно меньше 16мб (лимит монги), и даже меньше 4мб (лимит grpc). Также допустим что отзывы не связаны с другими юзерами.

С одной стороны все элементы связаны one-to-many в одно дерево, так что спокойно ложатся в одну nested запись и один сервис. Но тогда начинается геморрой с projection и тонной ручек на каждый чих, иначе для жирного юзера фронт будет получать мегабайты меты чтоб всего-то получить список директорий. Можно graphql, но тогда геморрой обратный - либо писать dataloader, либо тонна запросов в базу чтоб выдрать мету для N картинок. Ну и это все может очень вкусно лечь если сервисов таки больше одного, потому что им всем придется четко знать какие им нужны поля.

С другой стороны мешать юзера с картинками мягко говоря странно, это вообще разные сущности, и логичнее выглядит dbref и/или два сервиса. Но тогда логично вытащить все тоже отдельно в 5 плоских коллекции/сервисов, что начинает выглядеть все более странно с каждым шагом. Плюс это создаёт много радости когда пытаешься навесить на это чудо транзакции если сервисы разные. А отсутствие в монге нормального join только добавляет счастья. Да и вообще для монги это будет антипаттерн.

Можно скажем вытащить юзера, директорию, картинку с метой, и отзывы. Но тогда вопрос будет почему мета вместе с картинкой, а отзывы отдельно, так как они тоже вроде как без картинки не могут.

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

Если смотреть по количеству записей - картина аналогичная. Юзеров разумеется меньше всех, а вот сколько записей в мете и в отзывах сказать сложно, от тишины но срача в комментах. Да и директории бывают почти пустые, а бывают овер 9000 записей.

Короче пытаюсь это разрезать так чтоб красиво было, пока каменный цветочек не выходит. Поделитесь мыслями кто как видит решение

p.s. я не делаю веб-альбом, если что, но выглядит все довольно похоже

 , , ,

upcFrost
()

Объясните про twisted

Форум — Development

Чем дольше копаю эту штуку, тем больше кажется что это какая-то дикая попытка под тяжёлыми наркотиками написать джангу на корутинах без aio (которого тогда не было). Последний эпизод общения с твистедом закончился порванным контекстом, тупящей кафкой и горящим пердаком.

Я конечно тупой, но как нормально (без стенда) тестить и дебажить эту шарманку до меня так и не дошло, равно как и не дошёл life cycle протокола.

Это только мои задвиги и я просто не раскурил священный Deferred, или кому-то еще тоже так кажется?

 , ,

upcFrost
()

Минимальная убунта

Форум — Talks

Поржал сейчас с инсталлера убунты (графического).

Minimal installation в 2021 году это «web browser and minimal utils». Жирноват стал пингвин.

 ,

upcFrost
()

Найти где течет память в пистоне

Форум — Development

Сабж. Кто-нибудь знает нормальный метод это сделать?

Есть скрипт, у которого ну прям очень явно течет память. При этом gc debug рапортует что усе собирается, а tracemalloc вообще считает что скрипт больше 10 метров не ест.

Память течет только под нагрузкой в проде, на локальной машине и тестовом стенде все чисто.

Пока думаю попробовать снять дамп через haystack посмотреть чем эта зараза сожрала полтора гига

upd: залез gdb, говорит 20 метров. система говорит 400. wtf?

 ,

upcFrost
()

Питонисты

Форум — Talks

Немного жж.

Ищем питониста, включил в тест одну из своих любимых задач. Задача на самую базовую синхронизацию тредов (либо тасков если хочется asyncio), и в N=2 варианте решается в 5 строк. Даже в 2 строки, в зависимости от интерпретатора и условия. Тупо пара локов.

Из нескольких сотен кандидатов её кое-как в базовом варианте решил один. Вариант в N>2 потоков не решил вообще никто. Большинство людей походу даже не дошли что там блин надо что-то синхронизировать.

Wtf? Неужели никто из питоноедов ни разу потоки не юзал? Типа фласк/джанга/GIL все стерпят, а что там внутри пофиг?

P.s. вакансия висит в жобс, но нужен паспорт EU/EFTA

 , , ,

upcFrost
()

Dependency management для нескольких питонопроектов

Форум — Development

В мавене есть такая весч как dependencyManagement, где фиксируются версии либ, но при этом нужно ли их ставить каждый child-проект решает сам.

Проблема, которую оно решает: есть 40 проектов, нужно в 30 обновить одну либу, а в 20 - другую, множества пересекаются, тянуть все либы в каждый проект плохо. Каждый проект говорит что ему надо без указания версий, а версии идут из родительского depMgmt.

Кто-нибудь знает что-то похожее в питоне? Poetry вроде так не умеет, чистый pip тоже

 ,

upcFrost
()

Python backend, mid-senior, Женева

Форум — Job

Внимание: нужен паспорт ЕС/EFTA, удаленки нет

Небольшая компания в Женеве ищет питон-бэкендера, уровень мидл-сеньор, направление проекта - ЭЦП.

Что нужно:

  • Английский язык (уровень - говорить 8 часов свободно на любые темы)
  • Питон 3.7+ с asyncio, датаклассами, вот этим всем
  • Умение решать задачи достаточно быстро и без говнокода даже при не слишком четкой формулировке
  • Умение читать чужой код
  • Хотя бы базовые знания по инфраструктуре (армии админов и взвода девопсов, компания небольшая):
    • Контейнеры
    • Хотя бы базовая настройка rs монги
  • (Желательно) опыт работы с GraphQL и gRPC
  • (Желательно) любовь к юнитам, профайлеру, кодстайлу, ООП, периодическое желание натянуть java-сову на питон-глобус
  • (Желательно) нелюбовь к getattribute и адептам Dict[str, Any]
  • (Плюс в карму) хотя бы базовое понимание работы ip-телефонии, в идеале опыт настройки, но просто знание чем sip от rtp отличается и умение снимать tcpdump тоже сойдет (эта часть не про эцп, другой проект)

Что есть:

  • Офис с видом на поля и горы Швейцарии
  • Движ и возможность влиять на ход проекта
  • Кофе

Зарплата по собеседованию, ориентир - средняя по рынку 80-120к франков в год.

Откликнуться - либо скастовать меня, либо в телегу с этим же логином, либо в гмейл с ним же. Либо сразу на https://www.alohi.com, раздел “Careers”

p.s. я знаю что это не linux.org.eu и не linkedin, на последнем вакансия тоже висит

 , ,

upcFrost
()

Производительность Poppler

Форум — Development

Пытаюсь сконвертить страницу из pdf в png, в частности через pdftoppm (еще vips, чистый gs без magick и пачку других).

Есть рабочий яббел-бук прошка, на котором крутится ide, браузер и куча всякого барахла. На нем pdftoppm из homebrew отрабатывает за 0.17 сек.

Есть сервер с зионом, памяти аналогично ноуту, но на нем ничего не крутится. На нем тот же pdftoppm, но из репы (да и самосбором тоже), отрабатывает за 0.70 сек, то есть в 4 раза медленнее.

кто-нибудь знает в чем может быть подвох? сомневаюсь что огрызок на крышке ноута делает магию. poppler пересобирал вручную с нужным march, получил 0.6, но ниже никак. Может отсутствует какая чудесная либа, которая делает его сильно бодрее, или на рендер влияет отсутствие запущенных иксов/вяленого, или еще что-то аналогичное?

 ,

upcFrost
()

Правильная цепочка запросов в базу для Android

Форум — Development

сабж. Пытаюсь понять как правильно сделать цепочку запросов в базу (все в один запрос не предлагать, они и так здоровые). Собственно сейчас на ум приходят два варианта. Либо через LiveData и Transformations типа

Transformations.switchMap(data1) { list1 ->
  Transformation.switchMap(data2) { list2 ->...

и так еще 4 раза для нескольких параметров, либо сразу отдать MutableLiveData наружу и запустить корутину, пост-фактум закинув в нее результат.

Изменяемых полей, которые нужно мониторить прям в этой activity, штуки 2-3, это здоровый экран с результатом расчета и на нем менять ничего не выйдет.

Подскажите кто знает, чую корутина более корректна в этом случае

 , ,

upcFrost
()

Протобуф и кастомные темплейты

Форум — Development

сабж. Кто-нибудь знает как с минимальной болью чуть видоизменить стандартные темплейты protoc и особенно grpcio-tools для питона? хочется добавить пару небольших оберток над вызовом типа метрик для prometheus и логирования. Вручную их добавлять на каждый вызов тяжко, сервисов много, запросов еще больше, половина кода будет в этих самых обертках. Ну и type hints добавить бы

на шваггере делалось с умеренной болью через handlebars, но здесь на вид такого механизма нема

 ,

upcFrost
()

У всех инет протупил или только у меня

Форум — Talks

На вид восточное побережье штатов и север Германии сложились. Кто-нибудь ещё заметил?

 

upcFrost
()

DNS для мейл-сервера с failover

Форум — Admin

привет,

есть мейл-сервер, хочу сделать для него failover. Не мгновенный, пара минут простоя ок, главное чтоб автоматический. Встал вопрос на счет DNS-записей.

Подскажите, логично ли выглядит такая схема (VIP перекидывается на активную ноду по чеку tcp 25 open, mail - ip основной ноды, fail - ip failover-ноды):

MX:
example.com → mail.example.com (pref 10)
example.com → mail-primary.example.com (pref 20)
example.com → mail-backup.example.com (pref 30)

A:
mail.example.com → VIP
mail-primary.example.com → MAIL
mail-backup.example.com → FAIL

PTR:
VIP → mail.example.com
MAIL → mail-primary.example.com
FAIL → mail-backup.example.com

TXT/SPF - ip:VIP ip:MAIL ip:FAIL -all

CallerID - <r>VIP</r> <r>MAIL</r> <r>FAIL</r>

Небольшое уточнение - VIP работает только на вход. На выход нода использует свой собственный внешний IP

 ,

upcFrost
()

Пошто потерли тему с конституцией на гитхабе

Форум — Linux-org-ru

Сабж. Зачетно ж сделали, сразу чётко видны изменения. Танцпол конечно лезет, но сама сцыль вполне достойна упоминания. Скинул всем кто идёт голосовать но кому лень читать 100500 поправок и сравнивать с оригиналом

 ,

upcFrost
()

Фс с failover кучи мелких файлов

Форум — Admin

сабж. Ищу реплицируемую фс для кучи (10^7) относительно мелких (в пределах 1мб) файлов, умеющую failover. Короче тупо raid 1 over ip. Сейчас стоит одиночная nfs-шара, так что крайне желателен posix-интерфейс чтоб не переписывать 100500 строк кода.

Потыкал палочкой CephFS, но под примитивной нагрузкой в 5 wops мелкими текстовыми файлами по 1-2кб тот же ls складывается до 4-5 секунд на 1к файлов в директории, и время продолжает расти линейно при увеличении числа файлов (это ssd кстати). Возможно рукожоп, но хз, как-то такая деградация прям не впечатлила, ровно как и вечные not ready for production в их рассылке

Ceph rdb посмотрел, но там все равно нужна поддержка со стороны фс, банальный ext4 не взлетит

хочу глянуть gluster и lustre, но про первый читал много «приятных» отзывов в плане производительности. В конце концов всегда можно попытаться поставить тот же Moose, хоть он и платный.

Отпишитесь если кто уже решал такую проблему, и как/чем решали

upd: нефиг было тестить производительность через ls, у него свои косяки. ls --color=never отрабатывает за 10мс

 ,

upcFrost
()

Sip и swarm

Форум — Admin

Посоны, кто-нибудь хоть раз сращивал сип со свармом? Сварм затем что все остальное под ним, и пилить рядом отдельный стек того же pcmk будет жёстко, а рулить станциями вручную это совсем кисло.

Дано - два выходных фрисвича, регистраций нет, только работа с провайдером, так что по сути оно stateless в глобальном плане (sip-сессии разумеется надо держать)

Все rtp выставлены в host-mode, плюс торчит 5060 ингресс со свармовой балансировкой. В сессии отправляется белый адрес ноды, так что rtp вроде все ок, приходит куда сказали.

Балансер сварма вроде как на ipvs работает, поставил для нужной fw-маски persistence engine = sip, тут по идее тоже ок, сигнализация между хостами не плутает.

Вроде бегает, но чёт сцыкотно. Кто знает какие ещё подводные камни есть?

 , ,

upcFrost
()

RSS подписка на новые темы