1.83K subscribers
3.3K photos
132 videos
15 files
3.58K links
Блог со звёздочкой.

Много репостов, немножко программирования.

Небольшое прикольное комьюнити: @decltype_chat_ptr_t
Автор: @insert_reference_here
Download Telegram
Если написать в телеге "справедливо", то телега предложит эмодзи 🌰
#prog #rust

У tokio вышла версия 1.0 (спасибо, как ни странно, @oleg_log)
#game

В стиме сейчас за смешные деньги дают (ну, помимо всего прочего) всю трилогию квестов Deponia разом. Как человек, который с удовольствием прошёл все три — всячески рекомендую (только держите под рукой прохождение — некоторые задачи откровенно издевательские)
#prog #rust #cpp #rustlib

Corrosion (ранее известный как cmake-cargo) — инструмент для интеграции библиотек на Rust в проект на C++, использующий cmake.
Иногда для того, чтобы продвинуться вперёд, нужно сделать несколько шагов назад.

И это не какая-то глубокая философская мысль, а просто описание того, как работают подземные пешеходные переходы.
Что за сайт может находиться на домене верхнего уровня "sexy"? Разумеется, terminal.sexy, сайт для интерактивного подбора цветовой схемы для терминала.

Какие же #prog-раммисты извращенцы.
Итоги года

Итак, очередной, 2020, год, подходит к концу (и слава б-гу!), а это значит, что пора окинуть взглядом прошлое и набросать планы на будущее. Без лишних слов представляю вам мысли, которыми бы хотелось поделиться с вами:

1. Итоги года переоценены.
Forwarded from You Had No Job
Грузчик-тестировщик для проведения нагрузочного тестирования
Любопытный, но довольно бесполезный пример полиморфизма в 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 любую кастуемую структуру.

К сожалению, это не слишком полезно — наверное только если вы не хотите делать пачку геттеров и у вас есть пачка одинаковых структур разных типов.