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

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

Небольшое прикольное комьюнити: @decltype_chat_ptr_t
Автор: @insert_reference_here
Download Telegram
😁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
#itsec #article

Mobile App Supply Chain Vulnerabilities Could Endanger Sensitive Business Information

We identified 1,859 publicly available apps, both Android and iOS, containing hard-coded AWS credentials. Almost all were iOS apps (98%) - a trend and difference between the platforms we've been tracking for years, possibly linked to different app store vetting practices and policies. In any case, we examined the scope and extent of the risks involved when AWS credentials were found embedded inside apps. We found the following:

* Over three-quarters (77%) of the apps contained valid AWS access tokens allowing access to private AWS cloud services
* Close to half (47%) of those apps contained valid AWS tokens that also gave full access to numerous, often millions, of private files via the Amazon Simple Storage Service (Amazon S3)

(thanks @tech_b0lt_Genona)
😱42👍1
📆 = Matrix2::<f32>::new(-1.0, 0.0, 0.0, -1.0) * 📆;
👍9👎7😁3🤮1💩1
#prog #go #haskell #article

Сложность простоты

Или о том, как Haskell показал себя лучше на задаче, для которых Go преподносится хорошим решением, с точки зрения человека, который и то, и то знал слабо.

Статья старая в том смысле, что она написана до того, как в Go запилили дженерики, но выводы и сейчас остаются валидными.
👍12🔥41