Size: a a a

2019 September 04
oleg_log
источник
2019 September 05
oleg_log
Утро после "Оно 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
источник
oleg_log
В OpenSSL багина и го 1.13 дропает запрос. Шо, опять?

https://twitter.com/FiloSottile/status/1169339146667778050
источник
oleg_log
источник
oleg_log
источник
oleg_log
такс, в тиктоке появился полезный контент, пора заводить акк
источник
oleg_log
FP:
($) :: (a -> b) -> a -> b

Real FP:
it calls itself, it's pretty dope
источник
2019 September 06
oleg_log
А ведь когда-то я вел #полезняшки так-что сегодня тулзы на 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 - когда хочется новый дифф
источник
oleg_log
Damn
источник
oleg_log
Пожалуй один из лучших постов от Дейва Чейни, в этот раз про аллокации, апи и все это в #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
источник
oleg_log
omg

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

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

и ишью почему-зачем https://github.com/golang/go/issues/28322
источник
oleg_log
Человек сменил адрес с 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)
источник
oleg_log
Нашел официальный канал о дизайнах телеги. Куча моков, идей и громких видео (эт тип предупреждение).

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

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

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

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

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

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

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

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

(речь про жвм и спринг, хотя у других не лучше)
😡
источник
oleg_log
источник
2019 September 07
oleg_log
Backend: machine learning, AI, highload, distributed computing.
Frontend:

(https://twitter.com/ulyanovskui/status/1170072317642321921?s=12)
источник
oleg_log
Вангую: большинство людей сразу смотрело в скобки или в тело цикла. Рефлексы они такие.
источник
oleg_log
Самсунги анонсировали KV SSD, другими словами: если мы уперлись в софт, давайте перенесем работу на железо. Вроде бы и ничего нового, а приятно. Пожалуй 1 абзац, который все объяснит:

Key-value SSDs have the potential to offload significant work from a server's CPUs when used to replace a software-based key-value database. More importantly, moving the key-value interface into the SSD itself means it can be tightly integrated with the SSD's flash translation layer, cutting out the overhead of emulating a block storage device and layering a variable-sized storage system on top of that. This means key-value SSDs can operate with much lower write amplification and higher performance than software key-value databases, with only one layer of garbage collection in the stack instead of one in the SSD and one in the database.

https://www.anandtech.com/show/14839/samsung-announces-standardscompliant-keyvalue-ssd-prototype
источник