Как стать автором
Обновить
4
0

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

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

А как атакующему воспользоваться этой уязвимостью? Промежуток времени такой есть, но всё это время каталог пуст.

Гугл отменит возможность чтения писем в браузере

А можно подробнее? А то я что-то нагуглить не могу.

Несколько лет назад, когда преподавал в университете, покупал для лаб за свои деньги полдюжины плат Lattice MachXO3L StarterKit — стоили они тогда примерно 30 баксов за штуку. Сами платы довольно приятные, но слегка спартанские: есть программатор, тактовый генератор, несколько светодиодов и DIP-свитчей и тонна GPIO — если для лабы нужно что-то ещё (например, семисегментный индикатор или угловой энкодер, до звука и видео просто не успевали дойти за семестр), студенты собирали это что-то рядом на макетках. Это занимало кучу времени, но студенты готовы заниматься чем угодно, лишь бы код не писать.

Поэтому они стараются использовать один тип плат в фиксированной конфигурации, если всего этого нельзя избежать вообще и просто показывать плату издалека.

И правильно делают, в противном случае преподаватель только тем и будет заниматься, что бегать от студента к студенту, разбираясь с их «А почему у меня не работает?!». Я бы ещё и периферию всю использовал максимально одинаковую, чтобы не получить комбинаторный взрыв у себя в голове.

В следующей статье подумаю над чем-нибудь менее бросающимся в глаза

Как насчёт такого?

// Файл: client/model.c
// Функция: void Mod_LoadTexinfo (lump_t *l)

Или же, если проверяемый проект есть на гитхабе, рядом с фрагментом кода давать прямую ссылку на релевантную строчку в коде.

Скажите, пожалуйста, вам не кажется, что полсотни комментариев // PVS-Studio: в одной статье — это как-то слегка перебор? Это у вас KPI для технических писателей такое?

... но она не имеет ассоциаций для вашей памяти

Да, нужно сначала сгенерировать пароль, а потом придумать к нему какую-нибудь ассоциацию. Придумать ассоциацию к нескольким случайным словам проще, чем к паролю из случайных символов с той же энтропией.

... и это в той же степени криптостойкий пароль.

Увы, но нет. Пространство поиска среди осмысленных сочетаний качественно меньше, чем пространство поиска среди сочетаний случайных слов. Строгих пруфов не приведу, но если бы это было не так, люди бы с трудом распознавали речь на слух и нейросетевые языковые модели работали бы намного хуже.

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

... но он состоит из реальных слов, которые попадают под dictionary attack.

Если ваш пароль состоит из достаточного количества случайных словарных слов, уже неважно, что каждое по-отдельности — словарное.

... это больше на тему юмора и концепции, чем про реальное применение.

Для реального применения более чем годится и рекомендуется EFF. По ссылке написано: бросьте кость несколько раз, составьте броски в число, выберите по этому числу слово из большого словаря, повторите так шесть раз. Вот, например, онлайн-генератор, который ровно это и делает: Diceware. А ещё генерация случайных словарных фраз есть в менеджерах паролей (как минимум, в KeepassXC и Bitwarden).

Думаю, вы зря так быстро отбросили DVI: он простой, как палка и верёвка, и работает на любой разумной пискельной частоте.

Выяснилось, что [HDMI —] последовательный, а это значит, частота вывода пикселей составляет порядка 25 МГц, а после сериалайзера — все 250 МГц.

Это совершенно не проблема. Если верить даташиту на это семейство ПЛИС, OSERDES2 (сериализующий выходной дифференциальный буфер) на чипах спидгрейда -2 (такой чип на картинке) выдаёт 500-1080 мегабит/с в зависимости от источника клока. Если не все OSERDES2 заняты под DDR-память, на них можно было бы организовать видеовыход.

Цифры я смотрел тут: https://docs.xilinx.com/v/u/en-US/ds162, стр. 18.

К тому же этот интерфейс требует модуль TMDS [...]

У этого семейства заявлена поддержка TMDS, но есть ограничения по банкам и питающим напряжениям. Для TMDS-источника даже внешних резисторов не надо, они ставятся на стороне приёмника.

Про схему согласования есть в другом даташите: https://docs.xilinx.com/v/u/en-US/ug381, стр. 36.

Внутри данного интерфейса, как и у HDMI, есть LVDS-линии [...]

У вас тут фактическая ошибка. LVDS — это не общий термин для вообще любого дифференциального интерфейса, а отдельный стандарт. У LVDS и TMDS отличаются уровни напряжений и по-разному делается согласование приёмника с источником. Поэтому ни в DVI, ни в HDMI нет LVDS-линий.

А что выберешь ты?

Для честного голосования добавьте вариант: «Ничего не предпринимать». Появится ваш василиск — будем решать проблему.

И именно в этом видится настоящая угроза человечеству.

У человечества есть тысяча угроз пострашнее этой унылой псевдофилософской концепции. Вся значимость которой, к тому же, раздута из единственного поста Юдковского и прикольного названия.

Модуль AES сейчас стоит даже в копеечных старших STM32

Так AES — симметричный блочный шифр. На его основе легко сделать «банальный MAC», но ускорить асимметричные шифры такой аппаратный модуль ни капли не поможет.

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

Вот только в приведённых примерах нет никакого нарушения вложенности.

Я бы сделал здесь две разные реализации функции: [...]. Суть длиннее, но читать код намного приятнее.

Имхо, вкусовщина. Лично мне читать стало менее приятно, потому что стало сложнее понять, чем же именно эти функции различаются — нужно сравнить не только смысловые строчки, но и сигнатуры функций, чтобы убедиться, что эти сигнатуры идентичны в обоих вариантах (точно ли они обе const noexcept, например). Чем меньше строк под #ifdef, тем лучше.

Мне кажется, что я перепробовал все варианты, но решения так и не нашел.

А пробовали, как выше предлагает @fk0, объявить ссылку на функцию? Как-то так:

#include <cstdio>

int foo(float x) {
    return 0;
}

constexpr const auto& bar = foo;

int main() {
    foo(1.0f);
    bar(1.0f);
    std::printf("%p\n", foo);
    std::printf("%p\n", bar);
    std::printf("%p\n", &foo);
    std::printf("%p\n", bar);
}

и за одну ночь к нему прилипает примерно 300-500тыс рублей процентами

По моим грубым прикидкам для этого нужно положить на депозит примерно 1,5 млрд рублей. Не каждая компания может похвастаться подобным дневным оборотом.

Но работать в Redmine - это треш и угар, конечно, по сравнению с современными системами.

А что не так с редмайном? Я помню его как довольно приятный багтрекер. Судя по официальному сайту, проект до сих пор живой (в декабре был последний стабильный релиз). Чем он не современный-то?

Ну на кой хрен вы в билете спрашиваете "доказательство теоремы Вейерштрасса" или "второй признак сходимости"?

Потому что студенты должны знать общепринятые терминологию, обозначения и имена, это часть профессиональной квалификации.

И ещё потому, что развёрнутый вопрос содержит в себе половину ответа. Если студент забыл, какой из признаков сходимости второй, пусть напишет все, какие знает.

Когда кэш заполнен и необходимо сохранить новый результат, наименее
использованный результат вытесняется из кэша, чтобы освободить место для
нового. Это называется стратегией наименее использованного результата
(LRU).

Какой-то супернеудачный перевод. Ну не придумывайте вы своих терминов: во всём гугле нет ни одного результата по запросу "стратегия наименее использованного результата" (в кавычках).

На что получаю ответ, что он, опытный мастер, наблюдая за моими руками, никакой осмысленности в моем черновом коде не видит. [...] Человек из Яндекса не может прочесть код с оператором “запятая”?

Я не опытный мастер из "Яндекса", но, кажется, догадываюсь, в чём дело. Человек не "не может" прочитать код, он не хочет его читать, потому что он выглядит как нагромождение строк и не воспринимается взглядом, его нужно декодировать. Этого достаточно для отказа.

Предположу, что собеседующий хотел увидеть декомпозированное на несколько функций решение, как-то так:

ListNode* mergeAndSortInplace(ListNode* a, ListNode* b) {
    a = sortInplace(a);
    b = sortInplace(b);
    return mergeSortedInplace(a, b);
}

ListNode* mergeSortedInplace(ListNode* a, ListNode* b) {
    // Тут делаем в один проход слияние двух отсортированных
    // списков и возвращаем голову результата.
}

ListNode* sortInplace(ListNode* list) {
    // Тут делаем сортировку (быструю или, если не хватает
    // времени, пузырьковую) и возращаем голову результата.
}

В итоге, похоже, нам остаётся один вариант: использовать функции - расширения.

Или использовать операцию умножения, которая здесь очень подходит по смыслу. Например, если понимать обозначение «кг» как синоним величины «1 кг», а «м³» — как синоним «1 м³» (то есть «1 м ⋅ 1 м ⋅ 1 м»), то можно весьма вольно обращаться с числами и единицами измерения:

20*(kg/m3) == (20*kg)/m3 == (20*kg/m)/m2

Так, кстати, сделано в Boost.Units.

ХЕШ файла = хеш (SHA-3+crc32) данных файла + размер файла

Удивительное сочетание алгоритмов! Если у вас уже есть криптостойкая контрольная сумма, зачем добавлять к ней CRC-32? Кстати, а почему SHA-3?

... получить правильный результат можно и через последовательность вызовов OrderBy().OrderBy(), нужно только поменять вызовы местами.

Чтобы это работало, в реализациии OrderBy должна использоваться устойчивая сортировка. В то же время, SQL-оператор ORDER BY не гарантирует устойчивость. Поэтому я бы не поручился за то, что все провайдеры LINQ-to-SQL правильно обработают это ваше .OrderBy().OrderBy().

Неужели вообще кто-то так делает? Откуда возникла идея написать статью на тему «сравним в подробностях два способа сделать сортировку: очевидно правильный, быстрый и предсказуемый и очевидно неправильный, медленный и с граблями»?

Информация

В рейтинге
Не участвует
Откуда
Воронеж, Воронежская обл., Россия
Зарегистрирован
Активность