Как стать автором
Обновить
3
Карма
0
Рейтинг
Vlad Bespalov @win32asm

Ядерный пользователь

Горячие клавиши в терминале Linux

Пользователи Konsole, Terminator, Guake и прочих xterm`ов пользуются тем же bash/ksh/zsh/sh, но почему-то хоткеи у них чутка другие.

«Бог не играет в кости!»

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

Более того, если я всё правильно понимаю, то экспериментально получены нарушения неравенства Белла, что означает что "локальных" скрытых параметров нет. (ну, если не считать теорию супердетерминизма, которая как следствие может ставить под сомнение реальность критерия Поппера, и поэтому требует пересмотра философии науки вообще).

arr[-1] или самые редкие конструкции в С

Ну, например, если в хедере определена общая для нескольких файлов структура, и обращение к каким-то полям удобно выделить в функцию:

struct Object {
    enum State state;
    ...
};
static bool objectInTransition(struct Object *obj) {
   return obj->state == STATE_TRANSITION_1 ||
          obj->state == STATE_TRANSITION_2;
}

arr[-1] или самые редкие конструкции в С

В Си статическими удобно делать мелкие функции определяемые в хедерах.

Sizeof это оператор, такой же как +, - или ?:. Формально в скобках (как вызов функции) пишется напрямую тип, а без скобок - выражение, размер типа которого нам нужен. Практически gcc и clang считают оба использования синонимичными, но есть люди которые настаивают на различии для большего контекста.

Вычисление стихотворного размера

А есть смысл уменьшить штраф для безударной в ударном положении, если в этом же слове есть ударная в другом ударном положении?

В примерах '... предадимся бегу...' это норм, а '... доел сорок яблок' на том же месте - очевидно нет.

C++20 Ranges — Полное руководство

Верните нам наш Турбо Си 2.01 и МС Дос 6.0 !

(Нет, лучше закопайте их поглубже...)

Собственный vector на c++

А как ещё гарантировать, что объект будет убит не когда нибудь после дождичка в четверг?

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

Странные вещи в Солнечной системе

Органами (?) сепуления, же!

Python как инструмент сборки

< del, предыдущий комментатор уже предложил scons >

О том, как мы с сочувствием смотрим на вопрос на StackOverflow, но молчим

Непрямое преобразование в bool идиоматично для C

void *result = someFunc();
if (result) { ... }

и если на каждое такое преобразование ругаться - будет много false positive.

Для C++ это гораздо более оправдано. Хочешь bool - пиши каст, хочешь идиоматичность - используй умные указатели или перегружай оператор каста.

Конечно же пример в статье с большой вероятностью указывает на ошибку (в частности потому, что можно вывести конкретное значение). Но при этом совершенно не важно, что было в значении, приведённом к bool - потому что программа обязана в дальнейшем вести себя так, как будто было присвоено значение true или false.

bool a = 4; // не делайте так!
int b = 4 + a; // b == 5

с другой стороны а как ещё-то?

int r = 4;
// какой-то путь, по которому r не меняется
bool cond1 = r;       // так плохо
bool cond2(r);        // а чем это лучше?
bool cond3 = bool(r); // много писать
bool cond4 = !!r;     // лучше откомментить, если не везде

О том, как мы с сочувствием смотрим на вопрос на StackOverflow, но молчим

По стандарту С++ тип bool имеет константы true=1 и false=0.

см. https://en.cppreference.com/w/cpp/language/implicit_conversion#Integral_conversions

If the source type is bool, the value false is converted to zero and the value true is converted to the value one of the destination type

На этом основан метод приведения - !!x гарантировано или 0 или 1.

Что не так с современным преподаванием информатики

А потом дети пишут код, про который говорят WAT?

Дело не в том, могут они понять или нет — выучить таблицу приведений объектов в яваскрипте не труднее стиха «буря мглою небо кроет...».
Дело в том, что у любого действия должен быть наиболее ожидаемый результат. Для питона это особенно справедливо — у него нет «костылей» статической типизации, и a * b может внезапно оказаться скаляром, массивом или объектом.

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

Мне кажется, именно такую физическую силу ясность чувства надо воспитывать в детях, а не «я чёт написал, оно чёт сделало — и ладно».

Агент 007: как слова-призраки защищают английские словари

это примерно как ели (сущ.), ели (гл.) и ели (сокр. от метро Елизаровская)

gravy (сущ.) — подливка
gravy (прил.) — могильный, от grave
gravy (сокр.) — любое производное от grav_I_ty, но в англ. не любят когда слова на i заканчиваются, поэтому y

ПФ же очевидно развернули антикурительную пропаганду, потому что на момент wish you were here у них уже не было яркого психоделического движка в лице Барретта (собственно, которому этот альбом и посвящен).

с уважением, ваш КО.

Шпаргалка полезных команд GDB

По описанию похоже на битый стек.
Я бы посоветовал погонять с ASAN/MSAN/TSAN, а если только в gdb — то, возможно, record и обратное исполнение что-нибудь покажут. Ну или руками попытаться раскрутить стек, глядишь, что получится.

Почему хабражители предпочитают велосипеды, вместо готовых решений? Или о systemd, part 0

Привет от Оникс (но это не я) 8-)
Системд это хорошо, но ещё лучше указывать дистр где это всё работает. Например, в центосе 7 несколько устаревшая версия, и я не могу по человечески ограничить логгирование демона. 8-(

Устали от глупых шуток о JS? Напишите свою библиотеку

НЛО воровало аватарки здесь

к нам в деревню залетало ufo

Хватит качать и хранить нули

Окей. Попробуем начать с основ статистики.
Да и с подсчётом я облажался. N бит представляют 2^N различных блоков, и тогда 512 мб это 2^32 бит, и соответственно 2^(2^32) различных блоков, и на одно значение хеша приходится, как вы и сказали, 2^(2^32-160) различных блоков.

Но только вот какая штука:
Если нам дали значение хеша, и мы генерируем некий блок данных, то мы получим именно тот хеш, который нам дали с вероятностью 2^-160. Ок.
Но если значение хеша, которое нам дали, внезапно совпало с хешем блока, который мы вот только что сгенерили (т.е. наша вероятность коллизии 2^-160 уже сработала) — то вероятность того, что «на той стороне» посчитали хеш именно из этого блока — 2^-(2^32-160), если у нас нет каких-либо предположений о распределении данных «на той стороне».

Собственно, это должно быть свойством криптохеша — см. п.3 для свойств идеального криптохеша:
3. Невозможность сгенерировать сообщение из его хеш-значения, за исключением попыток создания всех возможных сообщений


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

Буду рад, если мне укажут на ошибку в моих предположениях.
Спасибо.

PS. И за Перельмана отдельное спасибо. 8-)

Информация

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