Обновить
104
0.2

Пользователь

Отправить сообщение

Текущая версия Task Manager написана на WPF.
Следующая, вероятно, будет на Electron, чтобы было удобнее подгружать рекламные баннеры, виджеты погоды/акций и веб-телеметрию.

А что это меняет? Какие-то сердобольные люди будут слушать, что автомат говорит бабульке и давать советы? Так их первый прохожий пошлёт нахрен, потом им надоест.

Да и что такое "зачислить не на ваш счёт"? Перевод "не на ваш счёт" довольно рутинная операция, чтобы заострять на ней внимание. Оплата ЖКХ например, или перевод родственникам.

Мошенники будут знать все фразы банкомата наизусть и заранее обработают жертву. Мол, "ваш" счёт сейчас под угрозой, поэтому надо переводить на "безопасный".

Вот пример.

Есть типичная рассылка сообщений

void add_subscriber(subscriber* s)
{
   lock l(subscribers_list);
   subscribers_list.push_back(s);
}
void send_to_subscribers(message* m)
{
   lock l(subscribers_list);
   for (auto s : subscribers_list) {
      s->receive_event(m);
   }
}

всё просто и логично. пока какой-нибудь внешний код не сделает так:

class user : subscriber { } // user - наследник subscriber, может подписываться
void add_user(user* u)
{
   // что-то делаем с потрохами user, для этого его лочим
   lock l(u);
   u->setStatus(Status::ADDED);
   // и подписываем юзера на события
   add_subscriber(u);
}
// а вот обработчик события
void user::receive_event(message* m)
{
   if (m->address == this->address) {
      lock l(this); // лочим себя, потому что будем менять потроха
      this->payload = m->payload; // каким-то образом что-то приняли в себя из сообщения
   }
}

Вроде бы формально все ваши пожелания соблюдены. Однако, при одновременном выполнении send_to_subscribers и add_user в разных потоках, ловим дедлок.

блокировки сразу нескольких объектов, а именно в этом случае может возникать дидлок

Ах, если бы... В реальных сценариях, попытка блокировки второго объекта, который залочен потоком, заблокировавшим первый объект, разнесена по разным местам кода (шапка цикла, тело цикла), а то вовсе по разным функциям и классам.

Если бы все блокировки были типа "блокируем всё", "отпускаем всё", и "если что-то заблокировали, в этом потоке больше не блокируем", проблемы бы не было.

Очень сомнительно.
Не могу придумать сценарий, любой простенький пример, когда такая диагностика будет полезна. Пока дедлок не возник, сравнение адресов ничего не даст (malloc можно считать аналогом ф-ции rand). Корректное предупреждение можно получить лишь в момент фактического возникновения дедлока, а это можно отследить уже существующими санитайзерами.

Вообще не понял эту идею. Блокировать "в порядке следования" определяется алгоритмом (сначала блокируем корень дерева, потом листья).

Если блокировать в порядке адресов, как писать код? Вот к примеру цикл: перед циклом блокируем контейнер, внутри цикла проходим по элементам и блокирует поочерёдно элементы. Если вдруг адрес элемента окажется меньше адреса контейнера, это уже неисправимая ситуация - блокировка большего адреса выполнена, а согласно потоку управления надо заблокировать объект с меньшим адресом, чем заблокированный ранее. И что делать?

Ctrl+F12 - классическое диалоговое окно «Открыть…»

Пульс надёжно определяется по HD-видео, а вот давление/масса вызывает вопросы.
Перед банкоматом, вероятно, платформа для взвешивания.

Никогда не увлекался гонками, но уловил аналогию со знакомыми жанрами.

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

Но есть и другие категории игроков, которые смотрят на игры, как на "продукт". Ищут там "контент", который надо освоить и пойти дальше. По аналогии с просмотром фильмов/сериалов: посмотрел одно, завтра другое, послезавтра третье.

Это просто принципиально разные способы проведения досуга.

скачаю снапшот майна, запущу локально и буду играть

У меня этих снепшотов скачано с рутрекера на 10 ТБ. Вроде интересные игры, и когда-нить в них надо поиграть, но не сегодня... Именно осознание, что они навсегда твои и никуда не денутся, позволяет их вечно откладывать.

Другое дело онлайн. Если пропустил ивент, то понимаешь, что его уже никогда не будет. Это заставляет зайти и поиграть сейчас.

чтобы не быть рабом всей этой рутины, вы либо платите

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

В genshin impact самые жирные сборки у китов, который занесли сотни тысяч рублей. Помимо констовых персонажей, покупаемых напрямую, на них топовые шмотки, которые купить нельзя, а только дрочить один и тот же данж 5000 раз. А иначе позор: купил максимальную прокачку перса, а одел в обноски.

C++ уже невозможно исправить. Так прям по-серьёзному, чтобы изменения приняли производители компиляторов: Microsoft, Intel, Clang, GCC.

Поэтому те, что устал от C/C++, развлекаются со своими языками: Carbon, Go, Rust.

Не работает, если находишься не в стандартной файловой системе (в архиве или на сетевом диске).

Самый оптимальный вариант - вообще без join

select o.Customer_id, count(*) as orders_count from Orders o group by o.Customer_id

или, если надо получить в том числе клиентов без заказов,

select c.Customer_id, coalesce(t.orders_count, 0) as orders_count
from Customers c
left join (select o.Customer_id, count(*) as orders_count from Orders o group by o.Customer_id) t on t.Customer_id=dd.Customer_id

или чтобы материализовать посчитанных клиентов, не давая оптимизатору много раз проходить по индексу,

select c.Customer_id, coalesce(t.orders_count, 0) as orders_count
from Customers c
left HASH join (select o.Customer_id, count(*) as orders_count from Orders o group by o.Customer_id) t on t.Customer_id=dd.Customer_id

slashing (штрафы за фигню)

А если вредоносный узел, получив задание на проверку, ошибочно обвинит добросовестного клиента, и наложит штраф? Кто будет проверять проверяющих?

Чтобы нормально разобрать кто прав, кто нет, надо логировать все задания и ответы, а это огромный объём хранилища, да и нарушит конфиденциальность.

Microsoft и Google аутентификаторы имеют интересную фичу. Например, при входе в Azure (или при подтверждении google-аккаунта через устройство) после ввода 6-значного кода на сайте, куда входишь, надо ввести 2-значный код на устройстве с аутентификатором. Интересно, эта фича стандартизована? Может ли Aegis так?

Про Aegis я узнал из комментов здесь. Хорошая штука, с ним можно коды входа и на ПК генерить, заботясь о сохранности ключа так, как считаешь нужным.

Мне не актуально, я пользователь FAR3.
А вообще, для Far2L идея полезная "Повторить клав. комбинации Alt-o, Alt-i из MC", чтобы облегчить переход Linux-юзеров.

Я даже скачал консольное приложение aegis-rs. Можно сохранить секреты со смартфона в обычный файл, и коды входа генерить консольным приложением. Небезопасно, зато за телефоном тянуться не надо и точно не потеряешь.

1
23 ...

Информация

В рейтинге
2 833-й
Откуда
Россия
Зарегистрирован
Активность