2010-02-02

Дневничок

Сюда я пишу очень редко, потому что сказать нечего. Зато я снова завел личный дневник, где пишу обо всем, что меня волнует, почти без самоцензуры. Теперь на ярушке (есть RSS-поток, если надо). Как и раньше, все записи публичные. Чтобы комментировать, нужен аккаунт на Яндексе.

Поскольку я тот еще лузер, дневник уныл чуть менее, чем полностью. Так что читать подряд будет довольно скучно. Но если откопаете что-нибудь для себя интересное, милости просим. Ориентироваться можно по меткам.

2009-03-14

What it’s like?

А есть фантастические рассказы про исследователей, которые изучали квалиа (qualia) и психофизическую проблему (the mind-body problem) и добились потрясающих результатов? Например, ученый ставил эксперименты над своим сознанием, пока не понял, как оно устроено, а когда всем рассказал, его посчитали сумасшедшим. Или физик-теоретик, который на бумаге решил психофизическую проблему и исчез, а герои пытаются разобраться в его записях. Лем, Пелевин, какие-нибудь отцы киберпанка, anyone?

Читаю «The MIT Encyclopedia of the Cognitive Sciences». Увлекательно, лучше английской Википедии. Полный текст есть в сети.

2008-10-14

«Настроения недели»

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

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

Потом drj.ru перестал обновляться и сгинул, когда кончился хостинг. Теперь там офис. Не знаю, что произошло с остальными публикациями, но тексты «Настроений» выложили теперь в другом месте в двух частях (первая, вторая), набранные мелким шрифтом, в чужом для них оформлении с густо-желтой каймой и множеством рамочек. Нет тех безлюдных иллюстраций с заросшими прудами, кошаками, инопланетными граффити, улочками, загадочными дворами и прочими впечатлениями человека, который пошел гулять, в детском, забытом смысле, когда в гулянии и заключается главное содержание жизни.

Впрочем, новые поколения гулятельных картинок продолжают сменять друг друга по сей день, так что их можно вволю насмотреться самостоятельно. А про дурацкое оформление почти забываешь, стоит лишь начать читать. Только сделайте шрифт покрупнее.

2008-05-12

Чем плоха файловая система

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

Файлы могут находиться только в директории, но не внутри другого файла. А я иногда хочу вставить файл-картинку в большой документ так, чтобы файловая система знала об этом. В какой бы программе я потом ни захотел скопировать этот документ, картинка скопируется вместе с ним, аналогично тому, как сейчас копируются вложенные папки и файлы.

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

Внутри файлов нет стандартной структуры, которую понимали бы универсальные утилиты. Например, всякие метаданные хранятся в том же файле, что и основное содержимое. Простая проверка, отличаются ли две аудиозаписи звуком или только ID3-тегами вроде автора и названия, превращается в приключение. Без детального знания формата аудиофайла мне не удастся воспользоваться готовой утилитой для сравнения файлов.

Тип и формат файла принято угадывать либо из расширения, которое вообще-то является частью имени, либо эвристически по содержимому. На разных машинах одно и то же расширение может означать разные типы файлов. Расширение можно перепутать, забыть или специально изменить на неправильное. Эвристики иногда ошибаются, и они тем более не рассчитаны на то, что кто-то захочет их специально обмануть. В результате возможны ситуации, когда файл снаружи выглядит как картинка или текст, а внутри там неизвестно что. А как насчет кодировки символов и переводов строк в текстовых файлах? Они тоже угадываются эвристически. Даже если я точно знаю, что это KOI8-R с CRLF-ными переводами строк, я не могу сохранить эти данные вместе с файлом.

Эрик Рэймонд (Eric S. Raymond) писал об отсутствии произвольных файловых атрибутов в «Искусстве программирования для Unix» (глава 20).

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

Нет стандартных средств управления версиями, чтобы для каждого объекта хранилась история изменений. Как только какая-нибудь программа сохраняет файл, его предыдущая версия безвозвратно теряется. (Отдельные программы сохраняют предыдущую версию в бэкапном файле, но это ненадолго продлевает ей жизнь — до следующего сохранения). Можно, конечно, загнать свои файлы в систему управления версиями вроде Subversion, но тогда придется вручную сохранять для истории все файлы в процессе редактирования. Это слишком муторно. К тому же некоторые файлы меняются автоматически, когда вы об этом даже не думаете. Настройки, например. Ежечасные автоматизированные бэкапы — тоже не выход. Они происходят не когда вы закончили работу над документом, а когда попало, да и жрут слишком много места.

Нужно, чтобы управление версиями стало интегрированной частью API операционки. Тогда все редакторы смогли бы писать историю изменений каждого документа с минимальными подсказками со стороны пользователя. И сбылась бы мечта Темы Лебедева: открыть файл, созданный год назад, и выбрать там Undo.

А как насчет атомарных транзакций? Неудавшиеся операции над группами файлов нужно автоматически откатывать к исходному состоянию. В крайнем случае, сохранять исходное состояние в качестве предыдущей версии в истории изменений. Как вам понравится документ, который программа обрезала до 0 байт, чтобы перезаписать, но неожиданно упала?

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

Будущее где-то рядом. Будьте бдительны.

2008-05-08

Умка. «Я так давно»

Послушайте песню Умки и Броневика (mp3, 4 Мб).

Я так давно не шла, не зная броду.
Я так давно не лезла в бой.
Я так давно не пела песен про свободу.
Я так привыкла, что она со мной.

А вдруг она давно ушла к другому?
А вдруг она давно ушла к другой?
А вдруг она давно ушла из дому?..

Висят на стенах разные картинки.
Три сыра в холодильнике лежат.
Стоят под вешалкой хорошие ботинки,
И школьники под окнами визжат.

А вдруг она давно ушла к другому?
А вдруг она давно ушла к другой?
А вдруг она давно ушла из дому?..

Меня просили сделать песню длинной,
Да только в этом смысла нет.
Сидит свобода на пороге блинной,
Стреляет пару сигарет.

Она давным-давно ушла из дому,
Она давным-давно ушла к другой.
Она давным-давно ушла к другому…

Она одна гуляет на свободе,
Она смеется за спиной.
Она одна гуляет на свободе.

2002

2008-03-15

Как сделать шифр из MAC’а и мусора

Рональд Ривест (Ronald L. Rivest) предложил интересный способ шифрования сообщений [Rivest 1998, 2000]. Шифр строится на основе кода аутентичности сообщения (MAC) с секретным ключом. Идея в том, чтобы засорить поток подписанных пакетов так, чтобы только адресат мог отличить настоящие пакеты от фальшивых.

Примечательно, что ответственность за отправку конфиденциальных сообщений можно разделить на двоих. Пусть Алиса пишет Бобу, а Чарльз, друг Алисы, имеет доступ к их каналу связи. Алиса не шифрует сообщение, а лишь подписывает его с помощью MAC. Чарльз засоряет поток фальшивыми пакетами, но не знает секретного ключа Алисы и Боба. Тем не менее, сообщение на участке между Чарльзом и Бобом оказывается зашифрованным. Эта хитрость позволяет защититься от властей, которые могут заставить Алису передать им ключи шифрования, но не имеют права затребовать ключи аутентификации.

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

Если Ева прослушивает канал между Алисой и Чарльзом, она может без труда прочитать сообщение, поскольку оно передается открытым текстом. Но если Ева находится между Чарльзом и Бобом, она не сможет отличить настоящие пакеты от фальшивых, не зная секретного ключа. Для Евы сообщение оказалось зашифрованным!

Если власти потребуют у Алисы ключи шифрования, она ответит, что не намеревалась скрывать свою переписку и передавала ее открытым текстом, а секретным ключом пользовалась только для аутентификации. Поскольку знание ключей аутентификации позволяет подделывать сообщения корреспондентов, предполагается, что в демократическом государстве правительству сложнее добиться права затребовать такие ключи. Что касается Чарльза, то у него вообще нет никаких секретов, так что с него властям и спросить нечего.

Когда сообщение разбивается на биты, накладные расходы довольно велики, так как на каждый бит сообщения приходится по два порядковых номера, два MAC’а и один фальшивый бит. Чтобы повысить эффективность, Алиса может пропустить сообщение через преобразование «все или ничего» (all-or-nothing transform) и отсылать результат большими пакетами. Теперь Еве потребуется найти среди всех пакетов именно то подмножество, из которого состояло исходное сообщение. Поэтому Чарльзу не обязательно генерировать по одному фальшивому пакету на каждый настоящий, а можно обойтись меньшим количеством.

Итак, Алиса отсылает сообщения открытым текстом, а Чарльз не знает ключа, но система Алиса — Чарльз шифрует сообщения секретным ключом Алисы и Боба.

[Rivest 1998] Rivest, Ronald L. Chaffing and Winnowing: Confidentiality without Encryption. Manuscript, 1998 (revised July 1, 1998). Originally appeared in CryptoBytes (RSA Laboratories), volume 4, number 1 (summer 1998), 12–17.

[Rivest 2000] Rivest, Ronald L. Some additional remarks on «Chaffing and Winnowing». Manuscript, 2000.

Мои аккаунты на разных сайтах

Блог
alexkon.blogspot.com (atom) — этот дневник

Избранные публикации и картинки разных авторов
Flickr favorites — разные картинки
Vi.sualize.us (rss) — красивые картинки
YouTube — просто видео
Общие записи в Google Reader (atom, alexkon_shared в ЖЖ) — информация, которой я хочу поделиться
Красивое (atom, krasivoe в ЖЖ) — особенно хорошие записи и картинки

Фотографии
Fotki.com — альбомы с 2003 по апрель 2005
Flickr — альбомы и фото с февраля 2005 по сентябрь 2007
Яндекс.Фотки (atom) — новые фотографии, начиная с мая 2008

Музыка
Last.fm (rss) — какую музыку я слушаю

Все вместе и кое-что еще
FriendFeed (atom) — все вышеперечисленное с комментариями плюс микроблог (что я сейчас делаю)

Старые блоги
alexkon — журнал
alexkon_self — личный дневник

В других местах
OpenID-аккаунт в ЖЖ, Google, Google Groups, Hacker News, Google Code Hosting, SourceForge, Launchpad, Wikipedia, Википедия русская, Wikimedia Commons, Hospitality Club, CouchSurfing.

Обновлено 30 июля 2009.

Мои электронные адреса и телефоны

Электронная почта: alexkon@gmail.com

Jabber и Google Talk: alexkon@gmail.com

Интернет-телефон: sip:alexkon@ekiga.net

Телефон в Казахстане: + 7 705 419 76 34 (GSM)

Телефон в Москве: + 7 910 493 59 70 (GSM)

Телефон в Санкт-Петербурге: + 7 921 420 71 34 (GSM)

Обновлено 21 июня 2009.

2008-03-13

Продолжение. Начало см. в номерах за 2003—2007 годы

Предыдущие записи можно найти в моем ЖЖ alexkon. А если интересна подоплека, можно порыться в личном дневнике, alexkon_self.

С помощью Яндекса можно искать по записям и комментариям в ЖЖ. Правда, недоступными для поиска остаются подзамочные записи и журналы, куда хозяева не пускают поисковых роботов.