oleg_log
1.72K subscribers
1.88K photos
131 videos
9 files
2.82K links
Shelter for antisocial programmers "Oleg"

halp: @olegkovalov
web: https://olegk.dev
fov: @oleg_fov
chat: @oleg_log_blabla
podcast: @generictalks
Download Telegram
Все так радуются по поводу го 1.13, а я вот чего-то не. Конечно релиз это круто, фиксы, фичи, обновления в пайплайнах, но..

Модули доступны уже с год (если вас занесло еще во времена vgo, ну или полгода с 1.12).

1_000 конечно красиво и полезно, но у меня мало констант в коде.

Новые фции в errors тоже ведь давно доступны в x/errrors...

Прокси и всякие sumdb эт рили классно. go.sum не раз спасал, когда какой-то гений делал форспуши тегов :(
У одних знакомых людей случился инцидент на проде, потеряли деньги из-за healthcheck-ов. Казалось бы, а что же могло пойти не так?

Фаст-форвард в Кубернетес (потому что сейчас почти все ссылки по теме чеков ведет к кубам, скорее всего это было придумано раньше, но такова жизнь).

Так вот, там есть 2 вида: Liveness и Readiness.
1й отвечает на вопрос: сервис жив?
2й отвечает на вопрос: а готов ли?

И вот у людей не было ответа на 2й вопрос, что привело к неправильной обработке запросов и еще неким вещам (детали не важны).

Статья от чеках (с гифками) https://cloud.google.com/blog/products/gcp/kubernetes-best-practices-setting-up-health-checks-with-readiness-and-liveness-probes
Ну и конфиги в кубах (для примеров) https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/

PS: люди жили не на кубернетесе, что-то свое было.
String с большой буквы, значит речь про джаву, мем справедливый, дело закрыто
Утро после "Оно 2" начнётся с треда Go vs Rust. Там ответ идёт на статью с Медиума(окт 2018), но я озвучу ток пару особенно метких вещей.

"Its interfaces aren’t very expressive" → They are, they use a different model tho, so you have to get used to it. Interfaces in go are meant for users, not for implementers of a functionality.

example: I invite you to try and sort a heap in Rust and Go using the stdlib without re-implementing the sorting part and you'll see why sort.Interface is quite nice. Even sorting two slices becomes complicated if you want to abstract them as one.

"The standard library of Rust is just as rich as that of go" → This is just false. Try creating an html template, a webserver, a URL parser... those are not easy things and it doesn't stop there. About the ecosystem replacing stdlib please see here: https://research.swtch.com/deps

"Thus, the already huge performance gap between Go and Rust" → citation needed. Rust is nice for some benchmarks but when you have to deal with a lot of async I/O and thousands of independent threads of execution you either lose fairness or efficiency.

Rust is "zero cost" in the meaning that it is amazing to not make you pay for what you don't use, but if you use something you pay for it, potentially more than stuff that had tens of years of work on it like the Go runtime.

Conclusion: Rust and Go are good tools and they have different philosophies so they will be good at most things, but *best* at different things. Don't try to make this a dichotomy because it is not. They can coexist and improve software development for everyone.

тред: https://twitter.com/empijei/status/1169245932602503170

статья: https://medium.com/@george3d6/the-success-of-go-heralds-that-of-rust-73cb2e4c0500
В OpenSSL багина и го 1.13 дропает запрос. Шо, опять?

https://twitter.com/FiloSottile/status/1169339146667778050
This media is not supported in your browser
VIEW IN TELEGRAM
такс, в тиктоке появился полезный контент, пора заводить акк
This media is not supported in your browser
VIEW IN TELEGRAM
FP:
($) :: (a -> b) -> a -> b

Real FP:
it calls itself, it's pretty dope
oleg_log
Давно не было, сегодня #полезняшки о КАФКЕ https://github.com/edenhill/kafkacat - Generic command line non-JVM Apache Kafka producer and consumer - эту штуку даже на недавнем Kafka Summit в Лондоне рекламировали https://github.com/fede1024/kafka-view - Kafka…
А ведь когда-то я вел #полезняшки так-что сегодня тулзы на Rust.

https://github.com/starship/starship - The cross-shell prompt for astronauts — работает невероятно шустро и приятно расширяет промт консоли.

https://github.com/sharkdp/hyperfine - A command-line benchmarking tool - быстрые и эффективные бенчи.

https://github.com/bootandy/dust - A more intuitive version of du in rust - просто du на стероидах.

https://github.com/mookid/diffr - Yet another diff highlighting tool - когда хочется новый дифф
Damn
Пожалуй один из лучших постов от Дейва Чейни, в этот раз про аллокации, апи и все это в #go

TLDR:
func (r *Reader) Read(buf []byte) (int, error)
vs
func (r *Reader) Read() ([]byte, error)

и как не мучать пользователей своего апи с аллокациями.

Даже немного обидно, что этот вопрос стал глобально озвучен, на интервью теперь не спросишь....

https://dave.cheney.net/2019/09/05/dont-force-allocations-on-the-callers-of-your-api
omg

В #go 1.14 планируется добавить пакет bytes/hash с хешем для строк.

https://github.com/golang/go/commit/bf36219cdd1d354d58107ed8903679f538948154

и ишью почему-зачем https://github.com/golang/go/issues/28322
Человек сменил адрес с 0.0.0.0 на 127.0.0.1 в тестах и время выполнения тестов с 17 минут снизилось до 5. Пару минут в гугле привели к этому:

When a service is listening on 0.0.0.0 this means the service is listening on all the configured network interfaces, when listening on 127.0.0.1 the service is only bound to the loopback interface (only available on the local machine)

https://serverfault.com/a/78049

(если кто-то знает объяснение лучше или подобные трюки, пинганите плс @olegkovalov)
Нашел официальный канал о дизайнах телеги. Куча моков, идей и громких видео (эт тип предупреждение).

Большинство, конечно же, не будет сделано, но повтыкать прикольно.

https://t.me/designers
oleg_log
Я как бы активный жаворонок, спать днём для меня дикое исключение. И вот 1й раз за полгода я решил подремать днём (организм потребовал), как полетели алёрты из любимого PagerDuty , что на тестовом окружении много 4хх. Да чтоб меня :/
Вчера было тож самое, после с 9 вечера стрельнули алёрты, тож тест, тож не критикал. Сегодня ненавязчиво попросили не жать acknowledge, а принимать меры. Ну да, в 9 вечера теперь это буду делать.
Сейчас вообще задумываюсь - какой смысл мониторить что-то кроме прода? (канари считаемчастью прода)

И как бы вопрос напрашивается вопрос: если работоспособность бизнеса не зависит от теста, то какого же чорта лысого надо за это переживать в нерабочее время?

Что СЕО, что фин отделу, что любимому пользователю пофиг, летят ли там 4хх либо вообще демон рмрф ходит по всем дискам, главное что продукт цел-жив-орёл.

Конечно держать метрики, логи и нотификации надо, чтобы потом следать, но не по вечерам же.

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

Мы уже десятки лет пишем вещи, которые выплевывают хтмл по хттп, там нет rocket science, ну и как же так можно писать код, который на вход получает запрос в пару килобайт, выдает ответ в пару десятков килобайт, а между вводом и выводом сжирается гигабайты рам?

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

(речь про жвм и спринг, хотя у других не лучше)
😡