Про важность статического анализа

воскресенье, 18 марта 2012 г.

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

Вот простой пример:
sub very_bin_integer($) {
    my $length = int(shift) or die "Illegal length";
    my $ret = '';
    for ( 1 .. $length )
    {
        my $n = 0;
        while ( not $n ) {   
            $n = int(rand(9));
        };
        $ret .= $n;
    }
    return $ret;
}
Даже обработка некорректного ввода есть. Кто напишет корректный юнит-тест на эту ошибку — может рассчитывать на пирожок.
Показана часть длинного сообщения. Читать дальше ->

Стратегия

среда, 14 марта 2012 г.

Типичная ситуация: две пенсионерки в автобусе точат лясы. На самом деле, не прав тот, кто никогда их не слушает: очень познавательно бывает. Можно изучать повадки таким незамысловатым способом. Одна пенсионерка села в автобус N24 на остановке "Гостиница Останкино", вторая подсела на следующей, "ул. академика Комарова".

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

Показана часть длинного сообщения. Читать дальше ->

Уберите вора и удивитесь

вторник, 13 марта 2012 г.

Не могу не радоваться локальным московским новостям с тех пор, как этого воришку Лужкова выжили с насиженного места. Как только его уволили (хотя могли бы и посадить, но так тоже неплохо) — сразу нашлись деньги и на плитку, и на метро, и на дороги, и на парковки, и вообще.

Очень хорошая и показательная ситуация, надо заметить. Лужков ведь не всегда был воришкой и когда-то Москва настолько хорошо чувствовала себя под его руководством, что москвичи реально сами выбирали его мэром. С тех пор много воды утекло, мэр Москвы стал назначаемым, а не изибраемым, и провёл на этой должности почти двадцать лет, что превратило его из хорошего руководителя в зажравшегося престарелого жулика.

Если Собянин просидит на этом посту двадцать лет, то, можно не сомневаться, скатится туда же. И тут важно даже не вовремя поймать тот момент, когда он покатится. Просто именно по этой причине весь цивилизованный мир осознал необходимость регулярной смены власти. Чтоб не засиживались и не скатывались.

Вы уже поняли, на кого я намекаю, ведь так? Единственное, чего я не понимаю, так это как можно с этим спорить. Всё же перед глазами, даже гуглить ничего не надо.
Показана часть длинного сообщения. Читать дальше ->

Ненавижу наклейки

суббота, 3 марта 2012 г.

Возвращаться к ведению блога — это всё равно, что начинать с нуля. Попробую начать с чего-нибудь несложного. Ненавидеть — просто. Ненавижу чёртовы наклейки.

Эти придурки лепят их куда попало и, что самое ужасное, эти наклейки практически невозможно отлепить. Я покупаю ложку, на ложке налеплена цена и я вынужден эту цену съесть. Я покупаю кастрюлю, оттираю с её стенки позолоченные наклейки с логотипами производителей и вместе с компотом обнаруживаю чёрное пятно. Потому что оттереть клей невозможно. В лучшем случае наклейку можно отмачивать, чтобы отлепить её без использования ножей и щёток, и в лучшем случае это поможет.

В комплекте мебели наклейки на каждой единице. То есть, в каждом шкафу по две (одна на дверке, вторая на самом шкафчике), а если шкаф с ящиками, то ещё больше. Нет большего удовольствия, чем отдирать их. Или созерцать обрывки бумаги и остатки клея. Или, если вовремя остановиться, созерцать эти наклейки нетронутыми.

Такие несъёмные наклейки обожают отечественные и китайские производители, а ещё наши местные продавцы. Они почему-то считают, что налепленная на самое видное место нашлёпка с логотипом супермаркета и ценой товара — это то единственное, ради чего я вообще совершал покупку. Что примечательно, у меня есть покупки, наклейки с которых без проблем снимались пальцами. Они были произведены в Европе и Англии, но я даже не хочу пытаться делать из этого выводы.

Высказался — и полегчало.
Показана часть длинного сообщения. Читать дальше ->

Однопользовательская система

пятница, 3 февраля 2012 г.

Вот зачем ему несколько учётных записей?
Я много думал над этим и пришёл к выводу, что многопользовательские системы не нужны. Этот подход должен умереть. Линукс должен эволюционировать до однопользовательской системы, как и Windows, и хз как там у MacOS.

Любой "компьютер" сейчас используется одним человеком. Этот человек настраивает его под себя как хочет и даже отключает запрос пароля при логине в систему, потому что нафиг его каждый раз набирать, если устройством больше никто не пользуется? Я не ввожу пароль на телефоне, когда мне нужно позвонить. И на телевизоре тоже. И даже если мне захочется сделать запрос пароля, мне совершенно не нужно иметь многопользовательскую систему для этого.

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

Показана часть длинного сообщения. Читать дальше ->

Наличие жизни за МКАДом

воскресенье, 18 декабря 2011 г.

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

Есть у меня мама, живёт она очень глубоко за МКАДом. И есть у мамы с недавних пор ноутбук. К ноутбуку нужен интернет, поэтому я незадолго до появления устройства позвонил в местный интернет с просьбой подключить маму. Состоявшийся телефонный диалог ввёл меня в стостояния кататонической фалломорфии на несколько дней. Суть была такова:
Показана часть длинного сообщения. Читать дальше ->

Негодовайчик

пятница, 9 декабря 2011 г.

Маленькая заметка об осторожности.

Команда cp в консоли копирует файлы из пункта А в пункт Бэ. Если пункт Бэ является каталогом, то из пункта А можно скопировать несколько файлов, если нет, то нет ©. Поэтому когда я экспериментирую на кошках, я нередко делаю так:
$ mkdir ./{storage,sandbox}
$ mv ./important_files_* ./storage/
$ cd ./sandbox/
$ cp ../storage/important_files_* ./
И вот тут может подкрасться пушистый лисёнок. Одна из моих люимых опечаток — промахнуться мимо двух находящихся рядом клавиш ./ и попасть куда попало, например, на Alt и Shift. В консоль при этом ничего не напечатается. Если в каталоге storage много файлов, то всё ок: я получу сообщение об ошибке:
$ cp ../storage/important_file_*
important_file_100500 не является каталогом
А вот если файлов всего два, то будет больно:
$ md5sum ../storage/important_file_*
3b80e8178985f9954e3ce0e9df962914  ../storage/important_file_1
d1af2e429dbd91857cc23fcb747f8bdb  ../storage/important_file_2
$ cp ../storage/important_file_*
$ md5sum ../storage/important_file_*
3b80e8178985f9954e3ce0e9df962914  ../storage/important_file_1
3b80e8178985f9954e3ce0e9df962914  ../storage/important_file_2
Не могу не заметить, что против этого "лома" нет приёма, не использовать же MidnightCommander из-за такой ерунды. Так что просто будьте аккуратнее, да.

Показана часть длинного сообщения. Читать дальше ->