18 марта 2009 г.

Финский программист сделал себе палец-флэшку

У меня вот зуб развалился. Может, вставить себе синий протез с флэшкой? Интересно, есть ли такие миниатюрные источники питания (не батарейки), чтобы запитали Bluetooth с флэшкой? Офигительный девайс для хранения паролей и авторизации бы получился :)

14 марта 2009 г.

Социализм, капитализм...

Занятная статья об общественном строе. Хотя некоторые положения вызывают как минимум скепсис, как например, взаимоотношения владельцев aka акционеров и менеджеров, однако в целом статья вызывает ощущение правильности. Хотя автор говорит, что Перестройка была своего рода революцией и переходом от социализма к следующей эволюционной ступеньке общественного строя, однако у меня складывается ощущение, что революция не удалась. Одним из важнейших факторов, приведших к такой революции, по мнению автора, является «перепроизводство инженеров» и повышение инженерной сложности продукции. Однако, что наблюдается сейчас в России — деградация образования, деградация производства от высоких технологий до производства пластиковых ведер и зажигалок. Даже автомобиль на современном уровне сделать уже некому — можно только собирать из импортных комплектующих. Так что, хотя автор и завершает статью бодренькими «впереди планеты всей» и «правильной дорогой идем, товарищи», но чувствуется, что с правильной дороги мы давно свернули и движемся как раз в противоположном направлении — лет через несколько доля высокообразованных граждан будет на уровне 1917 года (получение корочки о В/О еще не делает гражданина высокообразованным) и общественная формация вернется к той же, что была тогда.

11 марта 2009 г.

Emacs: вставка русского текста

В течение некоторого времени меня мучала проблема: русский текст, выделенный в Firefox, вставлялся в Emacs не в русской кодовой странице, а в японской (да, в японской кодовой странице тоже есть кириллица!), символами двойной ширины, как иероглифы. В какой-то момент я сделал обходной маневр с использованием внешней программы xclip и это решение просуществовало у меня около года, хотя обладало внушительной коллекцией существенных недостатков. И вот, наконец, у меня таки дошли руки поковыряться и выяснить причину. Нет, совсем настоящую причину я не выяснил — она то ли в самом Firefox, то ли в X Window System, магическим образом тяготеющей к японским кодировкам. Однако, был найден более красивый обходной маневр. Для Emacs, причина кроется в функции x-select-utf8-or-ctext, которая выбирала этот самый ctext, если он длинее в байтах. Кто его такого туда клал, так и остется невыясненным, однако решение оказалось простым — переопределить функцию x-select-utf8-or-ctext таким образом, чтобы она без всяких лишних эвристик возвращала utf8, если он не пустой, и ctext в противном случае.
(defadvice x-select-utf8-or-ctext (around prefer-utf8 (utf8 ctext) activate)
  "Prefer UTF8_STRING to COMPOUND_TEXT whenever possible."
  (cond ((= (length utf8) 0) (setq ad-return-value ctext))
        (t (setq ad-return-value utf8))))

10 марта 2009 г.

Безопасность программ

После прочтения новости Анализ уязвимостей за 2008 год: в Firefox ошибок больше, но исправляют их быстрее на OpenNet в очередной раз задумался о безопасности. Почему же FireFox безопаснее, чем IE, да и безопаснее ли? Выскажу результат размышления на пальцах. Я попытался встать на позицию злоумышленника и минимизировать трудозатраты. Согласно теме, нас интересует только процесс заражения жертвы. Делать это хочется массово, а значит автоматически. Для проникновения используются дыры в безопасности (уязвимости). Дыры время от времени латаются, а значит нужно писать новые заражалки (эксплоиты). Сделаем некоторые упрощающие предположения для нашей модели.
  1. Уязвимости появляются через равные промежутки времени.
  2. Время на исправление уязвимости постоянно в пределах одной программы и не зависит от уязвимости.
  3. Тудозатраты на написание эксплоита постоянны и не зависят от уязвимости.
Представим себя на месте злоумышленника. Есть две программы: A и B. В программе A всего 6 уязвимостей в год, в программе B — 120. На первый взгляд, B — лакомый кусочек для нас. Смотрим дальше. В программе A уязвимость исправляются полгода, а в программе B — полмесяца. В среднем получается, что в каждый момент времени в программе A наличествует 3 действующих уязвимости, а в программе B — 5. Отлично! B — находка для злоумышленника. Правда ведь? Однако, теперь оценим объем работ. Для программы A нам нужно писать не менее 2-х эксплоитов в год, чтобы процесс заражения (который идет непрерывно) не прерывался. Для программы B нам нужно не менее 2-х эксплоитов в месяц, а это в 12 раз больше работы. Так что, наш выбор, как злоумышленников, все-таки программа A, а не B. Наша цель — заразить как можно больше машин, а значит мишенью должны служить наиболее популярные программы. Однако, если заражая A, B и C мы накрываем, скажем, 90% машин и пишем 6 эксплоитов в год, а заражая D накрываем те же 90%, но пишем 24 эксплоита, то выбор явно не в пользу D. Какое это имеет отношение к жизни? Очень простое. В последнее время многие отчеты по безопасности показывают, что уязвимостей в FOSS больше, но при этом исправляются они гораздо быстрее. Кроме того, исправление уязвимости производителем — это еще не все. Злоумышленников больше интересует исправление на местах, а это зависит от удобства и надежности системы обновлений — вспомним эпидемии Nimda и Code Red, которые использовали уязвимости, для которых Microsoft давно предоставила исправления. А с обновлениями у большинсва открытых *nix'ов дела обстоят не в пример лучше. Так что, я спокоен за безопасность FOSS вообще и Linux в частности, даже если Linux догонит Windows по популярности.