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

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

Небольшое прикольное комьюнити: @decltype_chat_ptr_t
Автор: @insert_reference_here
Download Telegram
#prog #meme

Какая же жиза
я, когда не прогаю: блин, хочу, но таааак лень, пойду на ютубчик чтоли
я, когда прогаю: блин в смысле уже 2 часа прошло
15👍4🤡2
Forwarded from b'Лог' (Алина 🦊)
⚡️Горбачёв анонсировал дебаты с Дарьей Дугиной
👎41🤣11💩6🔥3😁32
😁4😱4👍1👎1👏1
Блог*
#prog #cpp C++ iceberg fouronnes.github.io/cppiceberg
Интересно, выходит, приличную долю из этого я и так знаю
#prog #rust #rustasync #rustlib #article

Как известно, в настоящий момент трейты в Rust не могут иметь асинхронные методы. Причины для этого описаны в статье Никитоса Niko Matsakis why async fn in traits are hard, и если коротко, они связаны с кучей нерешённых вопросов и недопиленных фич — это примерно так же, как в Rust до версии 1.26.0 нельзя было нормально вернуть из функции замыкание.

Для обхода этой проблемы есть несколько путей, которые так или иначе сводятся к стиранию типов. Первый — как и в случае с замыканиями, просто забоксить футуру. Это именно то, что делает async-trait. Второй путь — разместить футуру в некоем байтовом массиве, который хранится инлайн, а не в куче. Именно это делают stackfuture и name-it. Вторая библиотека вычисляет размер футуры и хранит его в байтовом массиве в точности нужного размера, а также (не) реализует все те же авто-трейты, что и исходная футура. Первой нужно наперёд указывать размер хранилища под футуру, но зато она не полагается на макросы для работы.

(thanks @goldsteinq, которому, кстати, и принадлежит авторство второй библиотеки)
🔥7👍1
#prog #cpp

Если вам по каким-то причинам нужно сделать порядковый индекс итерации в range-based for loop и при этом нету возможности или желания использовать ranges, то можно накостылить такое:

size_t i = 0;
for (auto & elem : collection) {
struct IncrementOnDrop {
size_t old;
size_t& assign_to;
IncrementOnDrop(size_t& i): old(i), assign_to(i) {}
~IncrementOnDrop() {
assign_to = old + 1;
}
} inc{i}
// каким бы сложным не был поток управления
// в теле цикла, i будет инкрементировано всегда
// в конце итерации, когда будет вызван
// деструктор inc
...
}

Разумеется, не обязательно объявлять IncrementOnDrop по месту, но если это требуется лишь единожды — почему нет?

Ещё может возникнуть вопрос, почему не что-то попроще в духе:

struct IncrementOnDrop {
size_t& i;
~IncrementOnDrop() {
++i;
}
} inc{i};

Это тоже работает, но в этом случае, если i меняется в теле цикла, число итераций будет подсчитано неверно. Вариант выше защищает от этого.
👏5🔥1
В СМЫСЛЕ УЖЕ СЕНТЯБРЬ
😱8🐳63😢3💔2😐1
Forwarded from я что-то �� и всё ����
🔁 Rezard
😁12😢31👏1
💩8😐6🎉2
👎3
Провайдер подключает только через своё оборудование
🤣10🤮5😁21🔥1🍌1
Вы, вероятно, видели новость о том, что Яндекс ищет разработчиков на вакансию, связанную с #rust? Так вот вам отзыв от человека, который там был и проходил собес
👍1
Forwarded from Anonymous
Что ж поучаствовал я в этом празднике жизни. Рассказываю:

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

Само собеседование классиченкий клон FAANG - три часа пытаемся решать задачки на алгоритмы в блокноте, отлаживая результат творчества в уме на собственных примера.
👍1
Forwarded from Anonymous
Если совсем кратко, то:

* задачи не соответствуют занимаемой должности;
* большая часть кода написана студентами и олимпиадниками с однобуквенными переменными, методами на 1 000 строк и запросами из джоинов через where;
* сверху бесплатно накидывают всякое дежурство и настройку ci/cd;
* зарплата, даже с идеальным прохождением всех этапов примерно на 15% меньше рынка.
🤡33🐳11👍2💩2🔥1
Forwarded from гиг пиг ниг (Valery Datsyuk)
13🔥9