Telegram Web Link
Всех с годом, когда в Go завезут дженерики!
Despite using golang, working with the absolute impenetrable monster that is kubernetes (I refuse to believe anyone actually understands this tool), taking on a helpdesk like on-call experience for one week at a time tending to configuration files over code, and not touching C++ at all, I feel more rewarded in my work than I ever did writing any amount of C++ in my entire life.

C++ довёл человека до OCPD.

https://izzys.casa/2021/12/wrapping-up-2021/
How to Go wrong
Crazy craziness, или что показать коллегам, которые думаю, что в Google работают боги: https://github.com/google/gopacket/commit/4370cf9687c957859fefd7963611f49f23338357
Если вы хотели спросить чего это это я первого января полез в gopacket… Что-то на моём Маке выкачало несколько гигабайт за полчаса через телефон в режиме модема, при этом в Activity Monitor’е ничего не было видно. Снял дамп Wireshark’ом, полез разбираться. Оказался какой-то косяк с iCloud / nsurlsessiond; перезагрузка помогла.

Кроме этого забавного комментария – отличная библиотека, рекомендую.
12-ого выступаю с докладом на митапе GDG Berlin про FerretDB. Что бы вы хотели на нём узнать?
Кстати, вы знаете, что не так с кучей кода, делающей os.Getenv("GOPATH")?

edit: То, что go env -w влияет на команду go и рантайм, но не на код, который забыл про этот флаг.
Зарелизили 1.17.6
Готовьтесь обновлять гошечку на проде
https://github.com/golang/go/milestone/240
Дженерики крутые, можно написать любую дженерик функцию. Давайте напишем дженерик функцию сравнения двух объектов через Equal(T) bool (если есть) или ==.

Полчаса спустя…


type Equaler[T any] interface { Equal(T) bool }

func Equal[T comparable](expected, actual T) bool { ... }

func EqualEqualers[T any](e1 Equaler[T], e2 T) bool { ... }

func EqualSlices[T comparable](s1, s2 []T) bool { ... }

func EqualMaps[M1, M2 ~map[K]V, K, V comparable](m1 M1, m2 M2) bool { ... }


И даже этого недостаточно для сравнения map[string]net.IP: net.IP – слайс, а слайсы не comparable.
Последние несколько недель в части интернета не прекращается дискуссия, косвенно связанная с новостями выше: как зарабатывать / нужно ли платить за open source. Хотел поделиться с вами постом, которые очень чётко отражает мою позицию и как мейнтейнера, и как CTO open source startup’а, и как автора канальчика в Telegram:

https://apenwarr.ca/log/20211229

(Если сравнение с коммунизмом вызывает у вас рвотные рефлексы, то можно эту часть пропустить без больших потерь)
Forwarded from oleg_log (Oleg Kovalov)
The right path forward for NPM and package managers like it is to stop preferring the latest possible version of all dependencies when installing a new package. Instead, they should prefer to use the dependency versions that the package was actually tested with, or versions as close as possible to those. I call that a high-fidelity build.

https://research.swtch.com/npm-colors
Несколько дней назад вместе со всеми угорал над Object, Object, Object, […], а сегодня для доклада написал такое:


func MakeDocument3[T1, T2, T3 BSONType](key1 string, value1 T1, key2 string, value2 T2, key3 string, value3 T3) *Document
Мой стартап, FerretDB Inc., нашёл денег и нанимает двух senior разработчиков на Go, чтобы вместе со мной писать FerretDB: полный remote, open source, $$$. Формальное описание вакансии у нас на сайте и в Go Get a Job.

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

Как предложить себя написано на сайте. В комментариях можно задать вопросы. Флудить лучше в Go Get a Job. В личку просьба не писать – ответы на общие вопросы будут интересны и другим людям.
2025/07/02 02:20:40
Back to Top
HTML Embed Code: