☕️ Мерлин заваривает τσάι 🐌
1.17K subscribers
3.5K photos
62 videos
94 files
2.4K links
💊
加入频道
Вышла беточка go1.16 с поддержкой виртуальной файловой системы и встраивания произвольных файлов.

Теперь можно на этапе компиляции вшить виртуальную файловую систему прямо в бинарник.

И ещё приехала поддержка метрик рантайма в стандартную библиотеку — цепляемся к райнтайму через любые сторонние сборщики метрик через тонкий адаптер.

Из мелочей — есть множественные ключи в тегах: вместо json:"field" bson:"field" можно писать json bson: "field"

Люблю этот релиз, дорохо-бохато

https://tip.golang.org/doc/go1.16
Я правильно понимаю, что этот ваш киберпанк надо будет брать через год по скидке, чтобы не разочароваться?
В zig завезли завезли race детектор.

Как ни странно, zig последнее время мне нравится больше чем rust. Если ржавчина – замена плюсов, то zig целится в Си – поэтому мне кажется ближе по духу к Go

https://twitter.com/andy_kelley/status/1341611395482173443
Go: ну короче у тебя есть оператор, который запускает задачу с переданной функцией — дальше всё сделает рантайм;

rust: у нас есть библиотека с тредпулом и пачка макросов;

zig: держи ссылку на список стек фреймов, удачи )))
Forwarded from Bortlog
Тут ребята реверс-инженирят код BioNTech/Pfizer SARS-CoV-2 вакцины. Оказывается это ~1KB довольно интересного кода напечатаного на ДНК принтере, который проникая в человеческую клетку обманывает ее и заставляет в ускореном режиме производить «иголочки» идентичные таким как у короновируса, потом наша имунная система обнаруживает такое проникновенте и учится эти иголочки детектить чтобы обезвреживать в будущем. Там куча всего интересного разбирается код с хедерами, метаданными, модифицироваными нуклеотидами чтобы обмануть чащитный механизм клетки и прикинутся «местным» кодом и тд.

https://berthub.eu/articles/posts/reverse-engineering-source-code-of-the-biontech-pfizer-vaccine/
Почему-то никто не написал, а тем временем в комьюнити Go не всё спокойно. Генератором драмы выступил автор популярного HTTP роутера chi. Решив, что настало время для нового релиза, @pkieltyka вместо версиис v5.*.* выпустил версию v1.5.0, в то время как последняя версия была v4.1.2+incompatible.

К сожалению, go mod не рассчитан на такой слом семантического версионирования и снизил версии других пакетов.

Например, если у вас были зависимости от chi

git.example.com/commons/pkg/rest v1.3.2
github.com/go-chi/chi v4.1.2+incompatible

то после апгрейда их версия упадёт до совместимой с v1:

git.example.com/commons/pkg/rest v1.1.0
github.com/go-chi/chi v1.5.1

Основным мотивом слома версионирования, по словам автора, стало эстетическое неприятие использование номера версий в путях импорта (как пример, github.com/go-chi/chi/v5).

Вокруг этого решения до сих пор бурлят споры, и понятно из-за чего: chi — один из самых приятных в использовании роутеров, к тому же совместимый со стандартной библиотекой. Вокруг него выросла небольшая экосистема пакетов, например, миддлварей, так что большое количество пользователей chi застряли на версии v4.1.2+incompatible.

Если вам зачем-то нужно написать роуты для сервиса руками, постарайтесь избегать чи, пока ситуация не разрешится. К сожалению, мне не известно достойных альтернатив настолько же быстрых, поддерживаемых и совместимых со стандартной библиотекой.

https://github.com/go-chi/chi/issues/561
Любопытный, но довольно бесполезный пример полиморфизма в Go

В гошечке есть несколько способов писать полиморфные функции:

1. интерфейсы;
2. тайп свитчи и тайп кастинг интерфейсов;
3. рефлексия;

Недавно я понял, что есть чётвёртый подход, который стал возможен с появлением type alias — назовём его апкастингом типов. Работает оно так:

func main() {
printName(Cat{"Whiskey"})
printName(Dog{"Chappie"})
}

type Cat struct { Name string }

type Dog struct { Name string }

type named = struct { Name string }

func printName(n named) {
fmt.Println(n.Name)
}

В спеке Go указано, что присваивание x типа V к переменной типа T валидно в случае, если V и T основаны на одинаковых типах и T — не именованный тип ("x's type V and T have identical underlying types and at least one of V or T is not a defined type."). Псевдонимы типов не считются именованными типами, так что мы можем принимать в аргумент n любую кастуемую структуру.

К сожалению, это не слишком полезно — наверное только если вы не хотите делать пачку геттеров и у вас есть пачка одинаковых структур разных типов.
Forwarded from Anton Trunov
“Волшебные сказки программистов мира”:
- Иван-Царевич и Языки-на-которых-нельзя-писать-плохо
- Красивый код и Чудовищный
- Синяя АйтиБорода
- Всё, что остается от вашего стартапа (Золушка)
- Код в сапогах
- Whitespace и Семь Языков (за Семь Недель)
- Красная Шапочка Enterprise Linux
- Гадкая Утиная Типизация
- Джек и Стебель Дяди Боба
- Чип Полины (Эльбрус-2020)
- Сестрица Алёна-С++ и Рыжий Иванушка
- Принцесса на Горутинах
- Волк и семь БД за семь недель
- Категорошек и попытки писать без него на ФП языках
- Ко-лобок
- Coq — Золотой гребешок
- Курочка Agda
- Гит-репка
- Жил-был PS5
Большая подборка фотографий советский компьютеров. Нужно больше этой эстетики! Спасибо @oleg_log https://rusue.com/cemetery-of-soviet-computers/
The live-coding cryptography workshop continues, as Adebayo, Thom, Parish, Thiago, Quinn, Andrew, Umang, and Bryan talk password cracking, and the best kind of rules to ensure password security (none at all!). Will they crack the secret code and find the answer to the Great Question of Life, the Universe, and Everything?

The project is here: https://github.com/bitfield/key

John Arundel is a Go mentor and writer, author of a series of books for Go beginners called 'For the Love of Go'. You can buy them here: https://bitfieldconsulting.com/books
Очень часто слышу вопрос о том, с чего начать изучать Go. Обычно в ответ прилетает совет пройти tour of go и почитать официальный блог

Недавно я удачно натолкнулся на интересную инфографику: https://github.com/Alikhll/golang-developer-roadmap

По сути это дерево знаний молодого бойца с ссылками на конкретные библиотеки — не всегда лучший выбор, на мой взгляд, но сильно поможет набрать опыт при использовании и вообще вкатиться в область