Обновить
16
0

Пользователь

Отправить сообщение

И ни слова про Экспедицию...

Блин, а ведь здорово! Звезду поставил, схоронил, подписался на обновления. Один вопрос - для чего между шагами передавать сырой жсон, а не мапу?

На хэндлеры ложится обязанность сериализации/десериализации, что не выглядит как то, что должно быть в бизнес-логическом слое.

type PaymentHandler struct{}
func (h *PaymentHandler) Name() string { return "payment" }
func (h *PaymentHandler) Execute(ctx context.Context, stepCtx floxy.StepContext, input json.RawMessage) (json.RawMessage, error) { // <- whyyy?
    // Process payment logic
    return json.Marshal(map[string]any{"status": "paid"})
}

Касательно связи никотина и дофамина - для меня интересным эффектом (в дополнение к целевому) вортиоксетина стало полное отсутствие желания курить. Так и завязал, через лечение депрессии. Не является рекомендацией, обязательна консультация с врачом!

Кстати, да, мне нравится ваша мысль. OTEL, по сути, предоставляет интерфейсы и предлагает самому подложить реализацию. Возможно, однажды попробую

Есть смутное ощущение, что Metabase может закрыть все потребности. Логику вынести в экшены, отображение данных на витрины.

А знаете, я с вами согласен.

Вот из недавнего буквально - в одной из команд разработки появился новый разраб (глубь финтеха, чтобы попасть, нужно было пройти несколько этапов, как ХРных, так и технических).

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

А потом как-то разговорились в неформальной обстановке, и таки да, рассказал свою историю - курсы-ментор-псевдомидл-шестизначная зп. От нас уволился в другой финтех на чуть ли не х2 зарплату.

И вот соовсем недавно ещё пяток таких "мидлов" появилось.

Чую и надеюсь, что этот порочный клубок из гадов обоюдно себя пожрёт.

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

Всё описанное очень сильно похоже на... Nomad. Всё описывается в HCL нативно (ну ещё бы), пакетный менеджер из коробки (Nomad Pack), всё состояние хранится в распределенном Consul KV.

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

Почему Go такой странный

Ожидание: нехватка юнион-типов, недостаточно гибкие дженерики, нужен ли тернарный оператор или его функциональный аналог

Реальность: как вкатиться?? как назвать папки??? зочем софты????

А Го тут каким боком вообще?

Какой-то неполноценный гайд, семафор есть в виде конкретной реализации с весами - 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

... паузы GC неприемлемы. Именно поэтому крупные компании всё чаще выбирают Rust (или даже C++) в этих средах

А что, когда-то было иначе? Где-то, где важен каждый такт, были языки с ГЦ? По личному опыту, там всегда сидели плюсы, которые сейчас вытесняются растом.

Ну а Го осел в нишах, где нужна параллельность-конкуррентность

Можно ли закрыть досрочно?
Можно. Более того — нужно, если можете. Мы даже делаем скидку до 10% за это.

Этак выходит, что можно оформить рассрочку, тут же оплатить полностью и получить скидку?

Не надо так

reader := kafka.NewReader(kafka.ReaderConfig{
    Brokers:        []string{"localhost:9092"},
    Topic:          "my-topic",
    GroupID:        "my-group",
    CommitInterval: 0, // Отключаем автоматический коммит
})

for {
    msg, err := reader.ReadMessage(context.Background())
    if err != nil {
        panic(err)
    }
    fmt.Printf("Received: %s\n", string(msg.Value))

    // Коммитим оффсет вручную после обработки
    err = reader.CommitMessages(context.Background(), msg)
    if err != nil {
        panic(err)
    }
}

Ридер не следит за тем, что коммитит, после реблансировки консьюмеров можно внезапно обнаружить, что произошел коммит в уже чужую партицию.

Лучше создать консьюмер группу и в её рамках обрабатывать старт нового поколения - https://pkg.go.dev/github.com/segmentio/kafka-go#Generation.Start

Плюс в том, что пока горутины, запущенные в Start(), не завершат работу, клиент не отдаст ОК на перебалансировку. Это даёт время дообработать и закоммитить уже вычитанное.

DevSecOps - очередная попытка натянуть сову на глобус заткнуть несколько позиций одной вакансией. В лучшем случае на выходе имеется выгоревший инженер, в худшем к этому добавляется дыра в безопасности. Доколе же будет страдать бедная сова?

Исправил, спасибо

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

нам нужно снимать экран, действия пользователя, сайты, на которых он сидит, и используемые приложения

Это точно функционал, которому место в тайм-трекере? Во-первых, кажется, что без этого переход с электрона не нужОн, во-вторых, не вяжется с позиционированием продукта; цитата с сайта:

ведите учёт рабочего времени без нарушения личных границ

1

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность

Специализация

SRE
Старший