How to Go wrong
1.6K subscribers
11 photos
1 video
193 links
Download Telegram
Через 50 минут буду в Go Time рассказывать про GitHub Copilot.
Что про него рассказывать-то? Подскажите.
Не писал ничего про log4j, так как это не по теме канала, но мимо этого пройти не могу.

К И Б Е Р В А К Ц И Н А Ц И Я

https://github.com/Cybereason/Logout4Shell
Путём ручного удаления тысяч строк кода нашёл эпичный баг в Go. И задумался — а есть ли инструменты для автоматического уменьшения примеров, воспроизводящих проблему? Если нет, то как сложно такой сделать? Чтобы не просто упрощать код, а прямо удалять его, пока проблема воспроизводится.
Заменил

var dbFound bool
for _, d := range dbs {
if d == db {
dbFound = true
break
}
}

на

dbFound := slices.Contains(dbs, db)

и заплакал
Всех с годом, когда в Go завезут дженерики!
🎉44🤩16😱13🔥10👎2
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; перезагрузка помогла.

Кроме этого забавного комментария – отличная библиотека, рекомендую.
👍2
12-ого выступаю с докладом на митапе GDG Berlin про FerretDB. Что бы вы хотели на нём узнать?
👍5
Кстати, вы знаете, что не так с кучей кода, делающей 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.