Как стать автором
Обновить
8
2.1
Данильченко Артем @serjeant

backend-разработчик

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

Спасибо за статью!
Хотел бы дополнить, что квадрифилярную антенну можно купить и на территории РФ (правда частота там больше для cubesat подходит) https://radial.ru/catalog/antennas/circularly/vh-436/
Так же кроме приема фото метеоспутников, можно организовать прием телеметрии cubesat.
https://satnogs.org/about/


Спасибо за статью. Подскажите,а почему вы не захотели использоваться MQTT из состава NATS?

Не просто форк, мы так же самостоятельно реализуем функционал, который доступен только в Vault EE версии. Так же в нашем roadmap учитываются запросы от наших клиентов, например, сертификация ФСТЭК и шифрование по ГОСТ.
Из последнего что мы сделали - встроенный механизм auto unseal кластера Stronghold, репликация KV, автоматические бэкапы по расписанию (файл / S3).

Отличный подход! Спасибо за статью! Надеюсь рано или поздно компании откажутся от лавкодинга в пользу рефакторинга.
Когда приходишь на новую работу в первую очередь на тебя вываливают кучу легаси кода и с ним приходится разбираться. А не деревья вертеть как на собесе.

А, теперь понял. Да согласен, это надо учитывать. Спасибо, что подсветил.

А можете привести пример?

Вот например такой код работает нормально
func main() {
ctx, done := signal.NotifyContext(context.Background(), syscall.SIGINT, syscall.SIGTERM, syscall.SIGKILL)
defer done()
g, gctx := errgroup.WithContext(ctx)

// just a ticker every 2s g.Go(func() error { ticker := time.NewTicker(2 * time.Second) i := 0 for { i++ if i > 10 { return nil } select { case <-ticker.C: fmt.Println("ticker 2s ticked") case <-gctx.Done(): fmt.Println("closing ticker 2s goroutine") return gctx.Err() } } }) // just a ticker every 1s g.Go(func() error { ticker := time.NewTicker(1 * time.Second) i := 0 for { i++ if i > 10 { return nil } select { case <-ticker.C: fmt.Println("ticker 1s ticked") case <-gctx.Done(): fmt.Println("closing ticker 1s goroutine") return gctx.Err() } } }) // wait for all errgroup goroutines go func() { err := g.Wait() if err != nil { if errors.Is(err, context.Canceled) { fmt.Println("context was canceled") } else { fmt.Printf("received error: %v\n", err) } } else { fmt.Println("finished clean") } }() time.Sleep(5 * time.Second) fmt.Println("before done") done() fmt.Println("after done") time.Sleep(1 * time.Second) }

Вывод:
ticker 1s ticked
ticker 1s ticked
ticker 2s ticked
ticker 1s ticked
ticker 2s ticked
ticker 1s ticked
before done
closing ticker 1s goroutine
closing ticker 2s goroutine
context was canceled
after done

/

Очень странно, почему вы не использовали синтаксис go для обмена значениями переменных:
first,second = second,first

*first,*second = *second,*first, кстати прежде чем разыменовывать указатели, было бы неплохо их на nil проверить.

Статья вообще ни о чем.

Спасибо за статью, очень интересная идея! Скажите, а есть возможность развернуть вашу систему на своем железе? Не каждый согласится хранить всю информацию о себе где-то во внешнем хранилище. Тут и вопросы безопасности и отказоустойчивости.


Определение буферов протоколов
Эффективная сериализация с использованием буферов протоколов

Это я так понимаю дословный перевод protobuf с искажением смысла?

Спасибо за статью! Благодаря вашему циклу публикаций, я тоже построил дома систему резервирования на базе стабилизатора и инвертора от компании MicroArt. Очень радуюсь, что удачно вложил деньги. Спасало и зимой при отключении света на сутки и летом, когда в СНТ либо очень низкое напряжение, либо отключения каждый час.

Не надо так... Пожалуйста, оставайтесь на java и не пишите код на go. Зачем забивать гвозди микроскопом? Потом обычным гошникам очень тяжело будет после вас поддерживать проект, проще будет выкинуть всё и переписать.

Спасибо большое за статью! Ваш пример вдохновляет и дает повод развиваться в профессиональном плане!

А почему вы не смотрите в сторону задач по разбору и поиску ошибок в коде? Это же ближе к практике и тому чем человеку придется на работе за ниматься.

А зачем вы её на английском написали? При этом рекламируете для русскоговорящей аудитории. Было бы правильно делать на 2х языках сразу.

Спасибо, что поделились своим опытом! Наконец-то хоть кто-то признал всю провальность алгоритмических собесов с онлайн коддингом.

Вот вы устраиваете онлайн кодинги, какие-то задачки придумываете. А как это раскрывает потенциал человека? Особенно если у него опыта 10-15 лет и он может спокойно устроиться в другое место, где нет такого маразма на собеседовании.
Первый рабочий день нового сотрудника будет состоять совсем не в распарсивании строки на токены или разворачивании двусвязного списка. Вы на него вывалите кучу кода из репозитория, кучу багов и задач из бэклога, с формулировкой - разберись и сделай!
Так может стоит так же и собесы проводить?
Дайте кусок своего кода или кода с ошибкой, код мз МР джуна. Попросите разобраться и выполнить рефакторинг, объяснить, что код делает, найти в нем ошибки.

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

Спасибо за статью, было интересно прочитать.

Информация

В рейтинге
1 345-й
Откуда
Ростов-на-Дону, Ростовская обл., Россия
Дата рождения
Зарегистрирован
Активность

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

Software Developer, Backend Developer
Lead
Golang
C++
Qt
C
System Programming
Linux Kernel