Касательно связи никотина и дофамина - для меня интересным эффектом (в дополнение к целевому) вортиоксетина стало полное отсутствие желания курить. Так и завязал, через лечение депрессии. Не является рекомендацией, обязательна консультация с врачом!
Вот из недавнего буквально - в одной из команд разработки появился новый разраб (глубь финтеха, чтобы попасть, нужно было пройти несколько этапов, как ХРных, так и технических).
Разраб как разраб, в инфраструктурных вопросах плавает, ну да ладно, с кем не бывает, мы, девопсы, народ понимающий. Первые сомнения начали закрадываться, когда человек поплыл на базе базовой, вроде включения метрик в сервисе. А разраб - мидл джавист, сервис на спринге. Ну и ещё с десяток таких звоночков было, это уже постфактум понимаю.
А потом как-то разговорились в неформальной обстановке, и таки да, рассказал свою историю - курсы-ментор-псевдомидл-шестизначная зп. От нас уволился в другой финтех на чуть ли не х2 зарплату.
И вот соовсем недавно ещё пяток таких "мидлов" появилось.
Чую и надеюсь, что этот порочный клубок из гадов обоюдно себя пожрёт.
Честно, с номадом последний раз работал ещё до появления номад-пака, тогда весь деплой делали на кастомных ансибл ролях с хранением всего и вся в консуле. Когда увидел анонс пака, уже начал работу в другом месте, где основным (и единственным) рантаймом снова стал кубер. Пак настолько сырой?
Всё описанное очень сильно похоже на... Nomad. Всё описывается в HCL нативно (ну ещё бы), пакетный менеджер из коробки (Nomad Pack), всё состояние хранится в распределенном Consul KV.
Даже немного обидно, что номад не популярен, приходилось с ним работать, и лично мне он показался гибче и проще в настройке и обслуживании, чем кубер. Плюс, умеет в оркестрацию не только контейнеров, но и, например, джавовых сервлетов и обычных бинарей
Про самое интересное и не рассказали - как измерить АКТУАЛЬНОЕ отставание по времени. Дельта между now() и таймстэмпом сообщения не показательна, потому что когда по этой дельте мы переваливаем за SLO, то уже поздно пить боржоми.
Для себя вывел подход вычислять реальное отставание через лаг в штуках, деленный на скорость обработки за интервал. Не идеально, но подсвечивает проблему заранее.
Ну и уже традиционное замечание по kafka-go - незачем городить свой велосипед для вычисления лага - у ридера есть стата с этой метрикой. А для консьюмер групп всё равно нужно запускать по ридеру на партицию, тогда метрика всегда будет корректная.
Конвейер-молотилка данных. Исходно писался, чтобы подразобраться в тонкостях работы с разными штуками, сейчас тихонько работает, перемалывая геоданные и всякие событийные вещи - https://github.com/gekatateam/neptunus
... паузы GC неприемлемы. Именно поэтому крупные компании всё чаще выбирают Rust (или даже C++) в этих средах
А что, когда-то было иначе? Где-то, где важен каждый такт, были языки с ГЦ? По личному опыту, там всегда сидели плюсы, которые сейчас вытесняются растом.
Ну а Го осел в нишах, где нужна параллельность-конкуррентность
Плюс в том, что пока горутины, запущенные в Start(), не завершат работу, клиент не отдаст ОК на перебалансировку. Это даёт время дообработать и закоммитить уже вычитанное.
DevSecOps - очередная попытка натянуть сову на глобус заткнуть несколько позиций одной вакансией. В лучшем случае на выходе имеется выгоревший инженер, в худшем к этому добавляется дыра в безопасности. Доколе же будет страдать бедная сова?
На андроид почему-то не обрабатывается нажатие кнопки "назад" (что вверху слева, что системной), обратно в ленту из поста приходится возвращаться переходом на главную по иконке
нам нужно снимать экран, действия пользователя, сайты, на которых он сидит, и используемые приложения
Это точно функционал, которому место в тайм-трекере? Во-первых, кажется, что без этого переход с электрона не нужОн, во-вторых, не вяжется с позиционированием продукта; цитата с сайта:
ведите учёт рабочего времени без нарушения личных границ
Каждая клетка - отдельный класс, реализующий интерфейс:
type Cell interface {
GetState() state
NextState() error
UpdateState() error
}
Где state - специальный отдельный тип, под капотом маппящий 1 как "жив" и 0 как "мёртв", чтоб можно было расширяться и добавлять новые состояния.
При вызове NextState() каждая клетка должна сходить в один из апи-сервисов, узнать состояние соседей, высчитать своё следующее состояние и приготовиться обновиться по вызову UpdateState().
Создаем сервис-менеджер, который может хранить в себе кусочек поля:
Менеджеры клеток можно разделить по нескольким дата-центрам, каждый из менеджеров может обслуживать свой кусочек поля. Next() и Update(), конечно, асинхронные.
Для большей ентерпрайзности можно положить всё в кубер, а каждый менеджер пусть хранит данные в выделенной базёнке, и чтоб всё масштабировалось налету в зависимости от изначально заданного размера поля.
Теперь нам нужен апи-сервис. Апи-сервис должен знать о расположении всех менеджеров (допустим, что эта информация хранится в кластере Consul). Когда апи получает команду на обновление, он асинхронно кидает команду на менеджеры о вычислении следующего состояния. Когда все вычисления завершаются, отдаётся команда на обновление.
К апи-сервису прилагается какой-нибудь веб-сервер с фронтом, который отображает красивую картинку.
P.S. не воспринимайте серьёзно, просто идея за обеденной чашкой кофе.
Касательно связи никотина и дофамина - для меня интересным эффектом (в дополнение к целевому) вортиоксетина стало полное отсутствие желания курить. Так и завязал, через лечение депрессии. Не является рекомендацией, обязательна консультация с врачом!
Кстати, да, мне нравится ваша мысль. OTEL, по сути, предоставляет интерфейсы и предлагает самому подложить реализацию. Возможно, однажды попробую
Есть смутное ощущение, что Metabase может закрыть все потребности. Логику вынести в экшены, отображение данных на витрины.
А знаете, я с вами согласен.
Вот из недавнего буквально - в одной из команд разработки появился новый разраб (глубь финтеха, чтобы попасть, нужно было пройти несколько этапов, как ХРных, так и технических).
Разраб как разраб, в инфраструктурных вопросах плавает, ну да ладно, с кем не бывает, мы, девопсы, народ понимающий. Первые сомнения начали закрадываться, когда человек поплыл на базе базовой, вроде включения метрик в сервисе. А разраб - мидл джавист, сервис на спринге. Ну и ещё с десяток таких звоночков было, это уже постфактум понимаю.
А потом как-то разговорились в неформальной обстановке, и таки да, рассказал свою историю - курсы-ментор-псевдомидл-шестизначная зп. От нас уволился в другой финтех на чуть ли не х2 зарплату.
И вот соовсем недавно ещё пяток таких "мидлов" появилось.
Чую и надеюсь, что этот порочный клубок из гадов обоюдно себя пожрёт.
Честно, с номадом последний раз работал ещё до появления номад-пака, тогда весь деплой делали на кастомных ансибл ролях с хранением всего и вся в консуле. Когда увидел анонс пака, уже начал работу в другом месте, где основным (и единственным) рантаймом снова стал кубер. Пак настолько сырой?
Всё описанное очень сильно похоже на... Nomad. Всё описывается в HCL нативно (ну ещё бы), пакетный менеджер из коробки (Nomad Pack), всё состояние хранится в распределенном Consul KV.
Даже немного обидно, что номад не популярен, приходилось с ним работать, и лично мне он показался гибче и проще в настройке и обслуживании, чем кубер. Плюс, умеет в оркестрацию не только контейнеров, но и, например, джавовых сервлетов и обычных бинарей
Ожидание: нехватка юнион-типов, недостаточно гибкие дженерики, нужен ли тернарный оператор или его функциональный аналог
Реальность: как вкатиться?? как назвать папки??? зочем софты????
А Го тут каким боком вообще?
Какой-то неполноценный гайд, семафор есть в виде конкретной реализации с весами - https://pkg.go.dev/golang.org/x/sync/semaphore, равно как есть готовый рейт-лимитер с управлением всплесками и прочим - https://pkg.go.dev/golang.org/x/time/rate
В реальности без burst-control в RL и без весов в семафоре почти не обходится
Увидел заголовок, долго думал, чем женщинам не угодил hex...
Про самое интересное и не рассказали - как измерить АКТУАЛЬНОЕ отставание по времени. Дельта между now() и таймстэмпом сообщения не показательна, потому что когда по этой дельте мы переваливаем за SLO, то уже поздно пить боржоми.
Для себя вывел подход вычислять реальное отставание через лаг в штуках, деленный на скорость обработки за интервал. Не идеально, но подсвечивает проблему заранее.
Ну и уже традиционное замечание по kafka-go - незачем городить свой велосипед для вычисления лага - у ридера есть стата с этой метрикой. А для консьюмер групп всё равно нужно запускать по ридеру на партицию, тогда метрика всегда будет корректная.
Конвейер-молотилка данных. Исходно писался, чтобы подразобраться в тонкостях работы с разными штуками, сейчас тихонько работает, перемалывая геоданные и всякие событийные вещи - https://github.com/gekatateam/neptunus
А что, когда-то было иначе? Где-то, где важен каждый такт, были языки с ГЦ? По личному опыту, там всегда сидели плюсы, которые сейчас вытесняются растом.
Ну а Го осел в нишах, где нужна параллельность-конкуррентность
Этак выходит, что можно оформить рассрочку, тут же оплатить полностью и получить скидку?
Не надо так
Ридер не следит за тем, что коммитит, после реблансировки консьюмеров можно внезапно обнаружить, что произошел коммит в уже чужую партицию.
Лучше создать консьюмер группу и в её рамках обрабатывать старт нового поколения - https://pkg.go.dev/github.com/segmentio/kafka-go#Generation.Start
Плюс в том, что пока горутины, запущенные в
Start(), не завершат работу, клиент не отдаст ОК на перебалансировку. Это даёт время дообработать и закоммитить уже вычитанное.DevSecOps - очередная попытка
натянуть сову на глобусзаткнуть несколько позиций одной вакансией. В лучшем случае на выходе имеется выгоревший инженер, в худшем к этому добавляется дыра в безопасности. Доколе же будет страдать бедная сова?Исправил, спасибо
На андроид почему-то не обрабатывается нажатие кнопки "назад" (что вверху слева, что системной), обратно в ленту из поста приходится возвращаться переходом на главную по иконке
Это точно функционал, которому место в тайм-трекере? Во-первых, кажется, что без этого переход с электрона не нужОн, во-вторых, не вяжется с позиционированием продукта; цитата с сайта:
Предлагаю ЖизньЕнтерпрайзЕдишн (по аналогии)
Каждая клетка - отдельный класс, реализующий интерфейс:
Где state - специальный отдельный тип, под капотом маппящий 1 как "жив" и 0 как "мёртв", чтоб можно было расширяться и добавлять новые состояния.
При вызове NextState() каждая клетка должна сходить в один из апи-сервисов, узнать состояние соседей, высчитать своё следующее состояние и приготовиться обновиться по вызову UpdateState().
Создаем сервис-менеджер, который может хранить в себе кусочек поля:
Менеджеры клеток можно разделить по нескольким дата-центрам, каждый из менеджеров может обслуживать свой кусочек поля. Next() и Update(), конечно, асинхронные.
Для большей ентерпрайзности можно положить всё в кубер, а каждый менеджер пусть хранит данные в выделенной базёнке, и чтоб всё масштабировалось налету в зависимости от изначально заданного размера поля.
Теперь нам нужен апи-сервис. Апи-сервис должен знать о расположении всех менеджеров (допустим, что эта информация хранится в кластере Consul). Когда апи получает команду на обновление, он асинхронно кидает команду на менеджеры о вычислении следующего состояния. Когда все вычисления завершаются, отдаётся команда на обновление.
К апи-сервису прилагается какой-нибудь веб-сервер с фронтом, который отображает красивую картинку.
P.S. не воспринимайте серьёзно, просто идея за обеденной чашкой кофе.
@NavalnyTeam прокомментируйте, пожалуйста.
Если описанное имеет место быть (во что очень верится), под угрозой находится каждый, кто что-либо делал на вашем сайте.
Если метрики вам действительно необходимы, может, стоит перейти на Гугл аналитикс?