oleg_log – Telegram
oleg_log
1.78K subscribers
1.84K photos
129 videos
9 files
2.75K links
Shelter for antisocial programmers "Oleg"

halp: @olegkovalov
web: https://olegk.dev
fov: @oleg_fov
chat: @oleg_log_blabla
podcast: @generictalks

about: https://news.1rj.ru/str/oleg_log/3200
Download Telegram
☕️ Мерлин заваривает τσάι 🐌
Любопытный, но довольно бесполезный пример полиморфизма в Go В гошечке есть несколько способов писать полиморфные функции: 1. интерфейсы; 2. тайп свитчи и тайп кастинг интерфейсов; 3. рефлексия; Недавно мне понял, что есть чётвёртый подход, который стал…
Чуть поясним. Прикол здесь в самом алиасе, для передачи Cat/Dog в printName их не надо явно приводить к named.

И на этом все. Как можете догадаться, если бы у Cat/Dog было еще 1 поле, то ничего бы не вышло, надо чтобы поля совпадали.

https://play.golang.org/p/xpyO7pE6ASv (уберите = и будем вам счастье)
не работа, а мечта
о да, ода уходящего года...
C + плюшки = Zig. Ну простой же как палка.

https://gist.github.com/ityonemo/769532c2017ed9143f3571e5ac104e50

Воодушевлено длиннопастой про Rust https://fasterthanli.me/articles/a-half-hour-to-learn-rust
(A half-hour to learn Rust, Jan 27, 2020 · 51 minute read. Нуда)
Вы ведь знаете, что в го надо аккуратно с переменными из for-range обращаться, да?

Наверное каждый хоть раз обжигался о
for k, v := range foo {
go func() { run(k,v) }()
}

или что-то похожее, где "захватывается" значение в кложуре. Есть даже пропозал, что давайте от этого уйдём (в го2, когдатотам) https://github.com/golang/go/issues/20733

Там забавный комент добавили, может слышали, Let's Encrypt недавно откатили 3М+ сертификатов. Угадайте из-за чего)))

https://github.com/letsencrypt/boulder/pull/4690/files#diff-d02067a9f9a2bed1110fd4e98641c2effcf5d1d5f18461e35d6ac1535f6e2c21L1411-R1414
oleg_log
А по случаю таких массовых гуляний - новый проект: @oleg_log_plus 🎉🎉🎉 Стало интересно вести патреоно-спонсируемый проект, на котором я буду делиться с вами постами, докладами и прочими видами информации, которые на мой взгляд пропускать не стоит, ведь все…
Подведём итоги ~1 месяца.

Все даже хорошо. Есть посты, за которые не стыдно. Есть приятные и критикующей-правильные отзывы. Есть желание продолжать дальше.

Хотя местами хочется уйти в дикие и непрактичные темы, но по большому счёту пользы от таких мало.

Для заинтересованных @oleg_log_plus
oleg_log
Вы ведь знаете, что в го надо аккуратно с переменными из for-range обращаться, да? Наверное каждый хоть раз обжигался о for k, v := range foo { go func() { run(k,v) }() } или что-то похожее, где "захватывается" значение в кложуре. Есть даже пропозал…
Внезапно многие не знали этой проблемы (кроме тех кто не пишут на го). Так вот.

Есть даж спец страница на вики про эту особенность (а сколько статей с пеной у рта это совсем другое).

Поэтому советую прочитать https://github.com/golang/go/wiki/CommonMistakes и включить scopelint (хотя мне кажется еще кто-то ругается) в golangci-lint
:slowpoke: там слак прилёг. https://status.slack.com/#

на самом деле теперь все веселее, там всё красное, хотя днём были только сообщ.
Карантин в 2020 положительно повлиял на меня (спорт, хобби, отношения, скмья, работа, тд). Перед тем как отвечать - подумайте полминуты. Спасибо.
Anonymous Poll
21%
Да
25%
Скорее да
11%
Не знаю
26%
Скорее нет
17%
Нет
Такс, ушастики мои. Кто хочет канкаренси задачку на Go ?

Там нет явного бага, но кое-что там сделано неправильно. Мы нашли это в тестовом задании, точнее там бага не было, нам показалось) Вам конечно же версию с багом принёс.

Подсказка для тех, кто не уверены в себе ZXJyb3IgcmV0dXJuZWQgaW4gZ29yb3V0aW5l

Собственно код https://play.golang.org/p/Ktcwsdlfyyj

Ответы лучше в бота, если хотите потестить себя @oleg_log_bot
Понравился сборничек Rust Design Patterns. Чем-то (но точно не оформлением) напомнило go-advice, который я медленно веду к новой версии.

https://rust-unofficial.github.io/patterns/intro.html

Чем-то еще напоминает https://nnethercote.github.io/perf-book/ но тут скорее про перформанс и попытки выжать наносекунды, чем о идиоматичности кода (хотя не противоречит).

Еще подобные ридми-книги-сборники вспомните?

Хоть домен и кричит unofficial, но это ничего не значит)
DALL·E: Creating Images from Text

https://openai.com/blog/dall-e/
(не моя) Цитата из чата @generictalkschat

Привет всем. Я тут запилил небольшой сайтик-поисковик по рассылке Golang Weekly. Это пока что больше проверка гипотезы, но работает сносно. Надеюсь кому-то сможет помочь 😊

http://golangweeklysearch.com

Все на го в одном бинарнике, лайк (обещали опенсурс)
oleg_log
Такс, ушастики мои. Кто хочет канкаренси задачку на Go ? Там нет явного бага, но кое-что там сделано неправильно. Мы нашли это в тестовом задании, точнее там бага не было, нам показалось) Вам конечно же версию с багом принёс. Подсказка для тех, кто не уверены…
Долгожданный для некоторых ответ.

Проблема в утекающих горутинах при возврате ошибки из функции do.

В оригинальном коде канал data был объявлен буфферезированным (значением count), соотв все бы горутины в итоге все дописали бы (даже если бы 1я вернула ошибку), и любимый GC все бы почистил.

Один из проверяющих это тестовое не заметил, что канал с буффером и заявил, что там будет дедлок. Но чуть подумав и проверим убедились в его отсутствии.

Там по коду можно еще чуть докопаться, но это выходит за рамки поста и вопроса.

Меня удивило, сколько людей не заметили этого. Было много опытных людей, кстати. Я даже задумался, а может какой-то курс по канкаренси в го (и не только) провести 🤔

(а вообще спасибо ответившим)
)))