• Ещё раз о неопределённом поведении или «почему не стоит забивать гвозди бензопилой»

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

      Хотя на самом-то деле, если вспомнить историю Си, всё достаточно очевидно и, главное, логично. А все жалобы людей, «обжёгшихся» на неопределённом поведении для людей не забывших что такое Си и зачем он вообще существует звучат примерно как: «я тут гвозди бензопилой забивал… забивал и забивал, всё было хорошо, а потом я дёрнул за ручку и у неё коготки как забегают, задёргаются, мне руку оттяпало и полноги… ну кто так строит?».

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

      Так какой же важный секрет люди упускают из виду?
    • «Ошибки в ДНК» или как неправильный дизайн может приводить к миллионным убыткам

        Написать эту заметку меня побудили очередная статья с «криком души»: ну почему Windows в очередной раз требует перезагрузки при изменении чего-либо (обычно это установка/удаление программ, но бывают и другие случаи)? Почему разработчики Windows-приложений — такие лохи, а разработчики Linux-программ (где таких сообщений при установке «обычных программ» не бывает) — такие молодцы?

        Этот феномен всем давно известен — но задумывались ли вы о том откуда у него «ноги растут» и почему в других операционных системах (Linux, MacOS X и т.п.) подобные окна являются чем-то исключительным, а в Windows — постоянным?
        Читать дальше →
      • Математические парадоксы и ЕГЭ

          Не так давно на Хабре была опубликована статья, обсуждавшая вопрос ЕГЭ по программированию. И там была бурная дискуссия на тему адекватности конкретных тестовых вариантов и возможности использования тестирования для оценки знаний вообще.

          В связи с этим я вспомнил похожие дискуссии по поводу тестов по математике и связанную с этим забавную задачку.

          Вася и Петя где-то добыли арбуз (считаем арбуз идеальным шаром единичного объёма) и разрезали его на 20 частей — возможно неравных. Таня упросила их дать ей одну часть (по её выбору) и Вася согласился взять себе только 9 частей, а оставшиеся отдать Пете. Каков максимальный объём может гарантировать себе Вася при удачном разрезании?
          A) не более 0.8; B) не более 0.9; C) не более 1.0; D) более 1.0


          Как несложно догадаться «ответ в стиле ЕГЭ» — B. Но правильный-то математический ответ — вовсе даже D! Соответственно вопросы:
          1) Является ли человек давший ответ D на ЕГЭ адекватным?
          2) Захотите ли вы с ним работать в одной команде?
          3) Можете ле вы предложить изменение формулировки, которое бы сделало правильным ответом B — и разумно ли так менять формулировку?

          Исправление. Кажется меня не совсем правильно поняли. Я как раз ни в коем разе не требую чтобы школьник умел дать ответ D. Наоборот — я считаю что в этой задаче правильным вариантом считался только B — а если какой-нибудь любитель «выпендрится» в результате пролетит мимо ВУЗа и пойдёт в дворники — то всем будет только лучше. Точно также как в предыдущем случае я считал неразумным принимать ответ 119бит. Шибко умный специалист без знаний о том, когда и куда их применить — «обезъяна с гранатой»… Лично мне в команде такой не нужен и мне интересно — нужен ли он кому-либо ещё…
        • К вопросу о языках программирования…

            Так как голосование не позволяет оставлять комментарии, то оформлю комментарии отдельной статьёй.

            Особо интересует мнение людей, которые считают что у них такого случиться не может (предпоследний пункт в опросе). Почему?

            Под катом — законченный пример на одном из распространённых языков программирования.
            Читать дальше →
          • Red Hat Enterprise Linux в опасности

              Не знаю — многим ли будет эта информация интересна, но… лучше перебдеть, чем недобдеть.

              Несколько серверов RedHat были взломаны на прошлой неделе. В частности был взломан сервер, на котором подписывались пакеты. RedHat немедленно отключила все обновления и, насколько измвестно, «по официальным каналам» никакой заразы никогда не передавалось. И для пользователей Fedora опасности нет — нужно просто обновить систему и всё (старые ключи «на всякий случай» отозваны, выпущены новые). А вот пользователям Red
              Hat Enterprise Linux повезло меньше. Те кто пользуются ею легально находятся в том же положении, что и пользователи Fedora. А вот те, кто скачивают пакеты с разных странных сайтов могут получить трояна (обновления для Red Hat Enterprise Linux рассылаются только по подписке, так что если кто-то ставит себе пиратскую копию Red Hat Enterprise Linux, то обновления приходится добывать какими-то окольными путями).

              Кто и зачем использует нелицензионный Red Hat Enterprise Linux при наличии CentOS — для меня загадка, но если такие люди всё же есть — проверьтесь (как рекомендует RedHat).
            • Полиморфизм, шмолиморфизм…

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

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

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

                Базовые концепции нужно уметь объяснять без привлечения языков программирования вообще! Второй этап — показать как базове концепции используются в том или ином языке программирования. Но это — уже другая история.
                Читать дальше →
              • МТС начнет продажи Blackberry частным лицам — ЗАЧЕМ?

                  Собственно давно ожидавшееся объявление.

                  Кто-нибудь может объяснить: какой в этом смысл? Кто это покупает? Что они с этим делают? Основная «фишка» Blackberry — то, что это канадская компания, которая хранит всю вашу почту «в надёжном месте», до которого дотянуться можно только по решению американского (для Северной Америки) или английского (для Европы) суда, а не по «звонку от дяди Васи». А МТС ввезла меньше 10000 аппаратов и обещалась передавать все давнные ФСБ. Так что уж на эта-то почту однозначно хватит глаз (это ж не десятки миллионов обычных абонентов). Ну и кто этим будет пользоваться? И зачем? Наверное всё-таки люди пользуются (иначе бы расширения охвата не производилось), но кто они?

                  P.S. У нас на фирме есть немало людей с Blackberry, но они все, разумеется, пользуются западными провайдерами (плюс роуминг) и желания перейти на добровольную отсылку своей почты кому-то у них нет. Так кто же они — эти пользователи Blackberry от Российских провайдеров? Кто-нибудь что-нибудь об этом знает?
                • DNS: Случилось страшное…

                    В протоколе DNS была обнаружена практически используемая дыра. Не в каком-то конкретном клиенте, но в самом протоколе. Причём известна-то она была давным-давно, но все «эксперты» сходились на том, что «ну в теории это — может и проблема, но на практике это использовать невозможно». Но не так давно был изобретён способ практического использоваться «cache poisoning» — и это спутало все карты. Похоже, что это — очередное испытание Интернета на прочность: планируется «largest synchronized security update in the history of the Internet», в котором должны будут участвовать десятки вендоров (что не так страшно) и сотни и тысячи ISP (а вот это уже страшнее — многие из них очень халатно относятся к обновлению ПО на серверах).

                    На настоящее время информации в публичном доступе немного. Есть интервью с человеком, который обнаружил уязвимость, есть сайт на котором вы можете проверить — используется ли ваш компьютер уязвимый DNS или нет (на самом деле, конечно, будет проверен не ваш DNS, а DNS, которым пользуется ваш proxy-сервер).

                    Также есть некоторая информация о возможных последствиях: злоумышленник может заставить кеширующий DNS-сервер считать что любой сайт в Internet находится где угодно. Какие перспективы для злоупотреблений это открывает мне, я надеюсь, объяснять не нужно (что будет если SMTP-сервер вашего партнёра научат отсылать вашу почту не сразу к вам, а на сайт злумышленника — а оттуда уже к вам?).

                    Дэн Камински обещал опубликовать подробности на пресс-конференции 6го августа, но предполагается что к тому времени (на основе опубликованных патчей) она будет уже известна многим (и не все эти люди будут носить «белые шляпы»).

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

                    P.S. Для тех кто в танке: речь не идёт о теоретических изысканиях в вопросе уязвимости DNS-протокола (про это говорили ещё два года назад). Речь идёт о практическом использовании данной узявимости — причём с вероятностью успеха достаточной для того, чтобы засуетелись крупные фирмы типа Cisco, Microsoft (не говоря уже о Linux-вендорах).

                    P.P.S. Обнаружил что про это уже писали, но так как то был топик ссылка, то, похоже, никому не захотелось даже прочить статью, на которую вела ссылка. Все дружно отплюсовали комментарии типа «боян», «фигня», «практически это использовать нельзя» и т.п., после чего успокоились. «Боян» это или «фигня» мы точно узнаем только 6 августа, а пока — для меня является достаточным критерием тот факт, что все известные мне системы были срочно обновлены вчера-позавчера. Не «два года назад», не «месяц» назад, а «буквально на днях». Что-то же заставило кучу вендоров это делать? Или они все борются с ветряными мельницами?
                  • Скринкаст. OOo-Wiki

                      Забавная идея: использование OOo в качестве инструмента для редактирования Wiki. Преимущества очевидны: богатый набор возможностей (по сравнению со стандартными Wiki), GUI (который так любят люди далёкие от IT), etc. Недостатки — тоже понятны: проблемы с разрешением конфликтов и историей, добавление мелочей (типа указания вместо <username> в примерах прямо имя человека читающего Wiki чтобы можно было без проблем делать copy-and-paste) весьма затруднительно, etc. Но всё равно идея — интересная:

                      Тут статья, здесь — описание технологии… На английском…