qemu это как раз таки не виртуальная машина, а эмулятор; можно запустить x64 на x86 например, или arm приложение на вашей x86_64, или отлаживать приложение itanium не имея itanium сервера. Если даже JS версия для браузера для извращенцев поиграть в Doom
в современном автоматическом сварочном аппарате транзисторов больше, чем в intel 8086, не говоря уж о многоосевых станках с ЧПУ. Там программа для одной нетривиальной детали (не втулочка захудалая) может быть больше, чем жёские диски были 50 лет назад.
чтобы без очень точного специализированного детектора заметить эффекты гравитационных волн - они должны быть сильнее порядков на 5, а может быть даже 10.
В результате случайности когда волны складываются, они получаются вдвое выше (очень часто), раз в пять выше (очень редко), раз в 10 выше (это один порядок, оооочень редко или никогда). https://ru.wikipedia.org/wiki/Волны-убийцы
во времена выхода XP не предполагали что патчи на OS будут валиться один за одним, поэтому залепили туда экспоненциональную функцию выбора апдейтов. Уж не знаю как именно они умудрились, но видимо думали "откуда может быть сразу больше 5 штук обновлений в очереди"?
на практике у меня однажды был в команде человек который неплохо решал задачи на leetcode. Но когда надо было оптимизировать обход данных на продакшене (достать запись из очереди -> обновить очередь обработав связанные записи) вместо оптимизации квадратичного алгоритма он добавил кучу кэшей и низкоуровневых оптимизаций, что уменьшило константу в 10 раз.
На тестовой окружении записей были тысячи, на продакшене - миллионы и помогла его оптимизация ровно на неделю.
там на cppreference написано же. Чтобы позволить компилятору писать более оптимальный короткий ассемблерный код
например,
int abs_legs(int my_legs) {
if (my_legs < 0) {
return -my_legs;
}
std::unexpected();
}
это подсказка компилятору что abs_legs() никогда не будет вызвана с положительным аргументом; с другой стороны читающий код тоже видит что в std::unexpected() никогда нить выполнения не попадёт (по крайней мере не должна) в std::unexpected(). Но при этом в случае my_legs - отрицательный (как ожидается), то код будет абсолютно валидным
это что, в новом C++23 добавили специальную функцию которая делает UB по требованию разработчика! std::unexpectedна случай если разработчик не может придумать как сделать UB :)
кроме `return my_legs` в случае если часло положительное нужно ещё расмотреть случай когда my_legs == std::numeric_limits<int>::min()
не отрицательные числа могут быть представлены в виде положительных, а именно -2^31 при отрицании будет ОПАНА ПЕРЕПОЛНЕНИЕ. А переполнение не просто переполнение, а именно Undefined Behaviour и это больно
и что вы там увидете? Вместо "вчера с западного побережья запрос был задан 87 раз" денег посчитают как за "вчера с западного побережья запрос задан 133 раза".
Как это поможет проверить? друг спросит - будет 88 и 134 вместо 87 и 133.
Данные анонимизируются, обезличиваются.
И да, вы можете проверить что запрос "детская одежда NICOLAS Nq0tzKrl" появился в статистике если друг спросит, но как вы проверите что все запросы оттуда от настоящих пользователей?
некоторые рекладатели вместо топика "детская одежда" предпочитают рекламироваться по ключевым словам "NICOLAS" и "детская одежда". если пользователь написал в запрос "детская одежда", то реклама показана не будет. Но если сказать рекламодателю "пользователь стопудово написал `nicolas детская одежда в Нью Йорке`" то деньги будут.
А проверить рекламодателю разумеется нельзя кто там что спрашивал, потому что запросов - тысячи в день + куча фильтраций спамов/ботов/и тд, а рекламодатели видят только аггрегированные обработанные данные; а не сырые показы с личными данными пользователей. Поэтому компания G может сделать что захочет и за руку нельзя поймать
Что произойдет, если я своими глазами видел, что блок 200A был первым, но "сеть" считает, что первым был блок 200B?
Чтож, это значит что ты видел своими глазами что блок 200А был раньше 200B, но это не значит что это правда. Возможно для передачи блока 200B потребовалось больше времени через большее количество узлов, а возможно другой злонамеренный узел сети специально задержал или заблокировал передачу вам блока 200B.
А поэтому нужно отказаться от этой принципиальности и согласиться с консенсусом сети 50+ процентов, иначе консенсус не получится между всеми узлами.
я полагаю, разница в целеориентировании. Если нужны инвестиции или убедить, что его решение/идея лучше - цель есть, главное подобрать способ убеждения.
А сидеть, пить пиво и говорить о чём-то с незнакомыми людьми (или знакомыми) на которых тебе в принципе похрен - ну да, может быть трудно.
а чё xen умеет запустить arm на powerpc? не знал что у Xen была эта фича в год выпуска qemu.
qemu это как раз таки не виртуальная машина, а эмулятор; можно запустить x64 на x86 например, или arm приложение на вашей x86_64, или отлаживать приложение itanium не имея itanium сервера. Если даже JS версия для браузера для извращенцев поиграть в Doom
а вы чем собираетесь заниматься, если вас айтишники из-за станков прогонят? Пробочки собирать или ягоды?
</sarcasm>
очень смешно.
в современном автоматическом сварочном аппарате транзисторов больше, чем в intel 8086, не говоря уж о многоосевых станках с ЧПУ. Там программа для одной нетривиальной детали (не втулочка захудалая) может быть больше, чем жёские диски были 50 лет назад.
как черноту на сияющем снегу, как чёрные строчки на газетном листе
чтобы без очень точного специализированного детектора заметить эффекты гравитационных волн - они должны быть сильнее порядков на 5, а может быть даже 10.
В результате случайности когда волны складываются, они получаются вдвое выше (очень часто), раз в пять выше (очень редко), раз в 10 выше (это один порядок, оооочень редко или никогда). https://ru.wikipedia.org/wiki/Волны-убийцы
во времена выхода XP не предполагали что патчи на OS будут валиться один за одним, поэтому залепили туда экспоненциональную функцию выбора апдейтов. Уж не знаю как именно они умудрились, но видимо думали "откуда может быть сразу больше 5 штук обновлений в очереди"?
https://tech.slashdot.org/story/13/12/16/1959259/exponential-algorithm-in-windows-update-slowing-xp-machines
https://arstechnica.com/information-technology/2013/12/exponential-algorithm-making-windows-xp-miserable-could-be-fixed/
на практике у меня однажды был в команде человек который неплохо решал задачи на leetcode. Но когда надо было оптимизировать обход данных на продакшене (достать запись из очереди -> обновить очередь обработав связанные записи) вместо оптимизации квадратичного алгоритма он добавил кучу кэшей и низкоуровневых оптимизаций, что уменьшило константу в 10 раз.
На тестовой окружении записей были тысячи, на продакшене - миллионы и помогла его оптимизация ровно на неделю.
это потому что не было линейки, доты, а потом фейсбука и инстаграмма. Фокус и тренды меняются каждые N лет
Да, похоже, но есть отличие. Likely используется в случае если нужно указать компилятору более вероятную ветвь для более эффективного когда.
В случае "std::unreachable" вообще никакого кода сгенерировано не будет на этот случай (или будет), на то это UB.
https://youtu.be/ohMyb4jPIAQ?si=yaD5FFuMgqV5F8qG
там на cppreference написано же. Чтобы позволить компилятору писать более оптимальный короткий ассемблерный код
например,
int abs_legs(int my_legs) {
if (my_legs < 0) {
return -my_legs;
}
std::unexpected();
}
это подсказка компилятору что abs_legs() никогда не будет вызвана с положительным аргументом; с другой стороны читающий код тоже видит что в std::unexpected() никогда нить выполнения не попадёт (по крайней мере не должна) в std::unexpected(). Но при этом в случае my_legs - отрицательный (как ожидается), то код будет абсолютно валидным
это что, в новом C++23 добавили специальную функцию которая делает UB по требованию разработчика!
std::unexpected
на случай если разработчик не может придумать как сделать UB :)https://en.cppreference.com/w/cpp/utility/expected/unexpected
тут в 0xC тоже две проблемы:
for (auto format = begin(formats), __end = end(formats); format != __end; ++format) {
переменные начинающиеся с двух знаков подчёркивания зерезервированы для стандартной библиотеки и внутренного использования. Поэтому __end ПЛОХО!
тут в 0x2 две проблемы на самом деле
int abs_legs(int my_legs) {
if (my_legs < 0) {
return -my_legs;
}
}
кроме `return my_legs` в случае если часло положительное нужно ещё расмотреть случай когда my_legs == std::numeric_limits<int>::min()
не отрицательные числа могут быть представлены в виде положительных, а именно -2^31 при отрицании будет ОПАНА ПЕРЕПОЛНЕНИЕ. А переполнение не просто переполнение, а именно Undefined Behaviour и это больно
да, действительно, случайно если увидеть рекламу при строгих ограничениях по альтернативному запросу - будет палево, в самом деле.
и что вы там увидете? Вместо "вчера с западного побережья запрос был задан 87 раз" денег посчитают как за "вчера с западного побережья запрос задан 133 раза".
Как это поможет проверить? друг спросит - будет 88 и 134 вместо 87 и 133.
Данные анонимизируются, обезличиваются.
И да, вы можете проверить что запрос "детская одежда NICOLAS Nq0tzKrl" появился в статистике если друг спросит, но как вы проверите что все запросы оттуда от настоящих пользователей?
некоторые рекладатели вместо топика "детская одежда" предпочитают рекламироваться по ключевым словам "NICOLAS" и "детская одежда". если пользователь написал в запрос "детская одежда", то реклама показана не будет. Но если сказать рекламодателю "пользователь стопудово написал `nicolas детская одежда в Нью Йорке`" то деньги будут.
А проверить рекламодателю разумеется нельзя кто там что спрашивал, потому что запросов - тысячи в день + куча фильтраций спамов/ботов/и тд, а рекламодатели видят только аггрегированные обработанные данные; а не сырые показы с личными данными пользователей. Поэтому компания G может сделать что захочет и за руку нельзя поймать
Чтож, это значит что ты видел своими глазами что блок 200А был раньше 200B, но это не значит что это правда. Возможно для передачи блока 200B потребовалось больше времени через большее количество узлов, а возможно другой злонамеренный узел сети специально задержал или заблокировал передачу вам блока 200B.
А поэтому нужно отказаться от этой принципиальности и согласиться с консенсусом сети 50+ процентов, иначе консенсус не получится между всеми узлами.
я полагаю, разница в целеориентировании. Если нужны инвестиции или убедить, что его решение/идея лучше - цель есть, главное подобрать способ убеждения.
А сидеть, пить пиво и говорить о чём-то с незнакомыми людьми (или знакомыми) на которых тебе в принципе похрен - ну да, может быть трудно.
если вы натренируетесь проходить тест на IQ, то ваш IQ не вырастет, а вырастет навык прохождения теста IQ. Упс. Вы только шкалу сломали себе.
(удалено)