Блог*
Открыть в Telegram
Блог со звёздочкой. Много репостов, немножко программирования. Небольшое прикольное комьюнити: @decltype_chat_ptr_t Автор: @insert_reference_here
Больше1 927
Подписчики
+224 часа
+47 дней
+330 день
Архив постов
1 927
Что ж поучаствовал я в этом празднике жизни. Рассказываю:
Как понял: у парней есть сервис на питоне, сервис хранит, скажем так, таблицу фильтрации трафика для файервола. Эта таблица раскатывается на сервера облака, чтобы каждый хост мог посылать/получать только пакеты от доверенных хостов. Так как данное решение не очень быстрое они решили переписать его на что-то нативное, раст выбрали из-за того, что при раскатывании на 100500 хостов лучше иметь гарантии безопасности, чем писать на плюсах.
Само собеседование классиченкий клон FAANG - три часа пытаемся решать задачки на алгоритмы в блокноте, отлаживая результат творчества в уме на собственных примера.
1 927
Вы, вероятно, видели новость о том, что Яндекс ищет разработчиков на вакансию, связанную с #rust? Так вот вам отзыв от человека, который там был и проходил собес
1 927
Repost from Гипермда
В MIT Technology Review хорошее о наболевшем — я регулярно писал о различных исследованиях влияния видеоигр на наше здоровье и навыки, чаще всего в ключе "здесь плохая методология и легкие для вооружения в спорах выводы". Оксфорд приходит к нам с таким выводом: мы вряд ли вообще в ближайшем будущем поймем, насколько сильно видеоигры влияют на нас и влияют ли вообще.
В последнем исследовании на эту тему не выявили вообще никаких значительных корреляций между психическим здоровьем и видеоиграми. Причем здесь даже выборка солидная — 38 935 игроков и 7 игр: Animal Crossing: New Horizons, Apex Legends, Eve Online, Forza Horizon 4, Gran Turismo Sport, Outriders, The Crew 2. Данные о проведенном в играх времени предоставили издатели, что весьма нетипично, так как обычно полагаются на рассказы самих игроков — их спрашивали о переживаниях, мотивациях и ощущениях. Какая-то заметная связь между состоянием испытуемых и временем в игре обнаруживалась, только если они играли на 10 часов в день больше обычного.
Вроде как-то не очень круто это все звучит, мы уже хотели бы попривыкнуть к приободряющим исследованиям, когда ученые говорят, что от игр улучшается когнитивка, такой-то облом. Но на самом деле, это крайне полезное исследование — на выборке из почти 40 000 человек, проводящих время в совершенно разных видеоиграх, мы видим, что нет никакого негативного влияния игр на наше состояние; методологически это одно из наиболее крепких исследований. Метаисследование 2020 года, перепроверившее 28 стадисов прошлых лет, не обнаружило никакой связи между жестокими видеоиграми и агрессией. В сумме все это значит, что устаревшая теоретическая база, на которую опирается ВОЗ, внесшая в 2019 году "игровые расстройства" в классификацию заболеваний, как и китайское правительство со своим ограничениями, ничего не стоит.
Понятно, что игры и наше социальное взаимодействие в них может быть разным, в том числе травмирующим, но на обобщающий вопрос "вредны ли для нас видеоигры" единственным ответом может быть "это тупой вопрос".
1 927
#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 меняется в теле цикла, число итераций будет подсчитано неверно. Вариант выше защищает от этого.1 927
#prog #rust #rustlib #article
Как известно, в настоящий момент трейты в Rust не могут иметь асинхронные методы. Причины для этого описаны в статье Никитоса Niko Matsakis why async fn in traits are hard, и если коротко, они связаны с кучей нерешённых вопросов и недопиленных фич — это примерно так же, как в Rust до версии 1.26.0 нельзя было нормально вернуть из функции замыкание.
Для обхода этой проблемы есть несколько путей, которые так или иначе сводятся к стиранию типов. Первый — как и в случае с замыканиями, просто забоксить футуру. Это именно то, что делает async-trait. Второй путь — разместить футуру в некоем байтовом массиве, который хранится инлайн, а не в куче. Именно это делают stackfuture и name-it. Вторая библиотека вычисляет размер футуры и хранит его в байтовом массиве в точности нужного размера, а также (не) реализует все те же авто-трейты, что и исходная футура. Первой нужно наперёд указывать размер хранилища под футуру, но зато она не полагается на макросы для работы.
(thanks @goldsteinq, которому, кстати, и принадлежит авторство второй библиотеки)
1 927
#article
Не трогайте разработчиков. Отстаньте. Просто не беспокойте
Или про процесс разработки, который хорошо работает на практике, но сложно повторить. Комментарии тоже ценны.
1 927
Repost from // Сельский блог 🔥☔️
я, когда не прогаю: блин, хочу, но таааак лень, пойду на ютубчик чтоли
я, когда прогаю: блин в смысле уже 2 часа прошло
