Category: it

Category was added automatically. Read all entries about "it".

|, me, hikki, ok

Почти три месяца event_mask is 110111, not able to describe 4th event

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

Из того, что произошло за это время ярко выделяются:
* защита магистерской диссертации,
* поступление в аспирантуру,
* написание отчёта по государственному контракту в TeXе,
* катание по Европе поездами и последствия,
* любовь к NixOS;
* начало ведения другого блога.

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

Про магистерскую я надеюсь когда-нибудь рассказать в другом блоге. Вкратце, я научился кодировать в разрешимом подмножестве зависимой системы (брр, я столько раз писал это словосочетание, что муражки по коже пробежали) типов (Agda) некоторые любопытные утверждения о некотором ограниченном классе программ (подмножество систем управления чем-нибудь достаточно дискретным). Я всё мечтаю допилить это до состояния, когда этим можно будет хотя бы нормально поиграть, но в Агде очень не хватает deriving Eq для эквивалентности по Мартину-Лёфу, я экономил всё, где мог, а потому там пока всё не очень красиво и малоюзабельно (зато научно, ага).

Собственно другой блог это там. Оно в весьма зачаточном состоянии и на английском. В очередной раз хочу выразить благодарность yuno и передать привет всем, с кем после поступления в аспирантуру у меня почти исчезло время поболтать.

Написание отчёта по госконтракту в TeXе это прямо веха в моей жизни, я считаю. Я так смачно натрахался с LaTeX2e, что словами не описать. По дороге возненавидел всё внутренности TeXа всей душой, но выпилил подобие ГОСТовских шаблонов для вёрстки документов и biblatex. Результатами я когда-нибудь тоже поделюсь (я хотел в сентябре, но, как обычно, времени допилить всё до приличного состояния нет, а в неприличном состоянии выкладывать стыдно). Нетипизированные языки программирования надо жечь.

Кстати, любопытно, в сентябре пришлось писать генерировалку doc'овских шаблонов для другого госконтракта. Из любопытства, возьмите достаточно большой вордовский документ, сохраните его в html. Загрузите обратно. За исключением изменения цвета текста (это баг ворда, да) вся разметка сохраняется. Даже ссылки на переменные и вычисляемые выражения в документе. Если почитать сгенерированный html и поэксперементировать с его минимизацией, то можно научиться генерировать красивые htmlные документы, в которых даже нумерация списков, оглавления и ссылки правильно генерируются самим вордом после их открытия им (правда в браузере их бесполезно открывать, вся разметка плывёт в жопу).

Я так нареверсинженерился того, что он там генерирует, что чувствую в себе силы написать компилятор из подмножества LaTeX в этот doc-html. Штука в том, что на этот раз я знаю как LaTeX устроен внутри и, извините, но компиляция документов сделанных при помощи стандартных пакетов и макросов LaTeX2e — занятие не для слабонервных. Если бы между texовским файлом пользователя и LaTeX2e был бы ещё какой-то вменяемый уровень абстракции, то ещё куда ни шло, но там сразу всё макроподставляется в грязнющий Plain TeX, полный всяких хаков, а это нереально декомпилировать обратно в адекватное описание того, что мы хотим получить. Судя по результатам реверсинженеринга, Word, в обмен на флексибилити, пытается держать внутри близкое к адекватному AST документа с которым хоть работать можно.

Короче, надо писать свой компилятор для TeXа.

Дальше. Я вроде писал, что у меня есть свой собственный дистрибутив. Так вот, был. Идея была хороша, из общего описания всех машин кластера генерируются squashfs-образы их систем, при пуске поверх squashfs при помощи aufs2 монтируется rwшный tmpfs. Чтобы закоммитить изменения нужно было запустить скрипт, который смонтировал бы ещё один tmpfs поверх, а предыдущий tmpfs зажал бы squasfsом, положил в специально отведённое место в /boot и добавил в смонтированные слои.
На практике, как оказалось, это работает не очень:
* локальные изменения перетирают изменения в настройках кластера и за конфликтами тяжело уследить (это можно было правильно победить, но лень);
* частые локальные изменения генерируют много слоёв в aufs, засирают неймспейс файловых систем в ядре;
* целиком пересобирать образы каждый раз очень бесит.
Я было стал переписывать систему, чтобы победить все эти недостатки сразу. Думал, думал, писал, писал, писал. И понял, что я пишу то, о чём уже слышал. Есть такой пакетный менеджер с очень неудачным трудно гуглибельным названием и операционная система, которая его использует. Мне лень тут пересказывать куски из его документации, читайте сами. Но эта штука решает почти все традиционные проблемы, связанные со сборками пакетов и деплоем.

По сути, Nix — это такой ленивый функциональный язык программирования, в котором есть специальный строгий тип derivation (по сути «пакет»). Эти деривейшоны (пакеты) генерируются из других деривейшонов (пакетов) функциями, принимающими зависимости (естественно, деривейшоны) пакета в качестве аргументов. Форс деривейшона — сборка пакета. Сборка происходит в изолированном окружении, где доступны только содержимые других явно указанных деривейшонов (аргументы функции). Никаких /usr и /usr/local в NixOS нет.
В итоге, забыть указать какую-то зависимость просто невозможно, пакет просто не скомпилируется. Идентефикатором деривейшона является хеш описания дерева зависимостей, начинающихся с него самого. Изменился исходник, способ сборки или зависимость — изменился идентефикатор.

Энвайромент юзера и системы явно составляются Nixом из списка нужных деривейшонов. Юзеры обычно делают это ручками (типа, мне нужен wget, я прошу Nix добавить мне его в энвайромент, если оно уже скомпилировано, то он просто его добавит, если нет, то скомпилирует и добавит, после этого, если другой юзер попросит добавить ему такой же wget (а не с другими зависимостями, например), то это произойдёт моментально), NixOS позволяет делать описание для всей системы, а nixos/modules по абстрактному описанию системы сгенерируют ещё и все конфиги в /etc и initrd (в том числе и конфиг для самого Nix, где рассказывают сколько ресурсов можно жрать во время сборки, например), например.

Можно откатываться на предыдущую версию пакета/всей системы, если что-то пошло не так (более того, версии системы добавляются в меню в GRUB и всегда можно загрузиться в предыдущую, если эту сломал), можно собрать две версии одного пакета, одну версию с разными зависимостями, установить пакет только для одно юзера (без прав rootа, кстати) и прочие плюшки, которые тут все просто не перечислить. Короче, Nix — это пакетный менеджер вашей мечты, просто вы этого пока ещё не знаете, прочтите их мануалы. Я в начале немного сомневался в удачности дизайна их системы, но, прочитав всю доступную документацию, понял, что там просто вещи не очень удачно названы (тот же «Nix» чего стоит, например, хрен выгуглишь), а по сути всё очень близко к идеалу. Настолько близко, насколько это вообще возможно без выбрасывания нафиг устоявшихся методов работы с системой (shell, не экзоядерное ядро, init, древовидная файловая система как таковая вообще, и без транзакций в частности).

Но и это ещё не всё, у них есть Disnix, который продляет эту логику на распределённые системы. Если у вас там какие-то сервисы друг от друга зависят на разных машинах, то оно даже обновлять и перезапускать их в правильном порядке будет. Чёртова магия.

Так вот, последние несколько недель в свободное время я хачил NixOS под свои нужды (как оказалось, там уже почти всё есть, хачил там-сям, по мелочи). Сделал ещё один уровень абстракции над nixos/modules, который из моего описания кластера генерирует отдельные описания всех машин для nixos/modules, а уже из них оно генерирует содержимое корня и всю ту шелуху, без которой юниксы не работают.

Сегодня, собственно, я закончил переводить последнюю машину в кластере на этот магический дистрибутив. На десктопе тут пока Arch, в универе Debian, но, я чувствую, что это ненадолго.

Фотография стенки рядом с центральным сетевым узлом в доме:
фотография двух сетевых свичей и модема
Стамегабитный свич полностью занят, в гигабитный воткнуты только те, кто делают между собой сетевой RAID1. На переднем плане чифтековский корпус одной из машин (6 винчестеров 3.5 + 3 пятидюймовых корзины для приводов, вместо которых тоже винчестеры), на нём внешний eSATA-бокс для винчестеров, не поместившихся внутрь. Между этим корпусом и стенкой стоит ещё одна машина с большим обёмом RAM, но всего двумя корзинами для винтов (я не хотел ещё один большой корпус, ставить некуда). eSATA-box подключён к ней. Также можно видеть зукселевский модем без крышки. На его CPU лежит чайная ложка, на микросхеме, отвечающей за WAN — десертная ложка на термопасте. Летом в них я воду кипячу. Остальные машины раскиданы по дому.

Если бы в моей деревне был нормальный интернет, то все свои хостинговые нужды я обслуживал бы сам :(

Что касается катания по Европе и последствий, то это самое вкусное, оставлю на следующий десерт. А в заголовке другого блога есть моя фотография из Франции, например.
|, me, hikki, ok

Паттерны проектирования, гриды и прочая безответственность

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

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

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

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

В таком же смысле лямбда-исчисление и теория типов значительно проще, чем объектно-ориентированное программирование и паттерны проектирования. При этом, мне кажется, между первым—третьим и вторым—четвёртым куда больше сходства, чем может показаться на первый взгляд. В каком-то интервью (которое я не смог загуглить) вроде Simon Peyton-Jones говорил, что там, где ООП-кодеры начинают совать UML, хаскелисты расчехляют дополнительные стрелки в типовых аннотациях (вот ещё тред почти про это же на sof). Также и большинство паттернов занимается эмуляцией поведения шашечек из функционального мира (выборочно иду по часто упоминаемым из списка паттернов в Википедии): Adapter — замыкания, Interpreter — GADTs + eval, Listener (тут обман, его в списке в Вики нет) — замыкания, Mediator — ещё раз замыкания, Nullable — пахнет Maybe monad transformer, Proxy — тайпклассы и снова замыкания, Visitor — и тут снова тайпклассы. Ля-ля-ля, все всё давно поняли, а я — Капитан О.

Так вот, вернувшись на два параграфа назад, но глядя в список паттернов в Википедии (нет, там есть что-то осмысленное, но, в целом, один этот размер списка уже о чём-то говорит), нетрудно заметить, что эти паттерны проектирования — это философия какая-то, а совсем не математика. Конечно, философствовать куда приятнее, чем делом заниматься — сиди сочиняй себе паттерны. Частных случаев, выражающихся в случайной перестановке фич GADTs, замыканий, кванторов существования и прочей фигни высших порядков хватит на всю жизнь, можно не одну квази-интеллектуальную книжку по проектированию ПО написать. Тут же можно догадаться почему я там умолчал про всякие MV(C|.*).

В общем, наблюдается ярко выраженная любовь человечества к дисциплинам с огромным количеством мелких деталей, где можно строить из себя умного, вообще по сути ничего не понимая. В этом свете, любовь к преподаванию ООП на всяких «языках, используемых в индустрии», типа там C++, или Java, становится мотивационно оправданной: когда больше нечего сказать, можно пофилософствовать почему условие
(a < b) || (a == b) || (a > b)

для a и b целочисленного типа, может никогда не выполниться.

Надеюсь, я достаточно прямо выразил свою простую мысль: ООП, UML, паттерны и прочая «инженерия ПО» — это (за мелкими исключениями) философия, философия — не математика, программирование — математика. Любовь к такой философии легко объяснить отсутствием достаточного уровня абстрактного мышления, ибо ковыряться в деталях всегда проще, чем построить общую теорию. А работать-то не хочется.

Кстати, в этом смысле достаточно поучителен тот (исторический) факт, насколько сильно отличаются по количеству правил первые формализации систем типов для ООП-языков, и их современные версии. Об этом почему-то не часто вспоминают.

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

В заключение хочу отметить, что со времени последних постов, полных уважения к философии, я пришел к выводу, что всякие философы, любители UMLя, паттернов и прочей мути — вовсе не вредны для общества. Смотрите сами, если бы по мгновению волшебной палочки вдруг все фишеры и спамеры исчезли из сети, то люди так расслабились бы, что появление очередного вида мошенничества могло бы вызвать катастрофу глобального масштаба. Философия, РАЕН и ООП с паттернами просто необходимы обществу, чтобы у адекватных его членов не скисли мозги.
|, me, hikki, ok

CHDK

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

Например, там был пост о том, как какие-то товарищи написали распознавалку движущихся объектов, работающую прямо на фотоаппарате Canon. Сама распознавалка меня не впечатлила, зато она была построена на базе проекта CHDK. А эта штука, в свою очередь, оказалась страшно крутой.

CHDK это такой SDK для хаченья фотиков серии Canon PowerShot. История на офсайте говорит, что штука сия была создана вопреки прошивкам канонов, чтобы снять ограничение на создание фоточек в RAW, ибо железка у Canon такую возможность имеет, а официальные прошивки — нет.

Насколько я понял, по диагонали пробежав документацию, то при загрузке камеры прошивка от Canon, при некоторых условиях, ищет на SD-карте бинарник с обновлениями, загружает его в память и отдаёт ему управление, а после завершения его работы грузится ОС камеры.
CHDK притворяется бинарником с обновлениями, при своей загрузке резервирует верхний кусок оперативной памяти устройства и «слегка» правит основной код ОС, добавляя туда свои «хуки».
Эти хуки вмешиваются во все нажатия клавиш камеры, в процесс фотографирования, сохранения полученных фотографий, etc. В результате на устройстве как бы работают сразу две ОС.

Так вот, совершенно случайно, у меня имеется камера Canon IXUS 860 IS. Потому на игры с CHDK на ней ушёл целый день. Я не профессиональный фотограф, фотографией не увлекаюсь и не собираюсь начать. Лично меня привлекла возможность добраться своими грязными лапами до забавной железки с армовским процессором.
Но возможность произвольно менять выдежку, ISO и три тысячи других настроек, сохранять результаты в RAW, запускать скрипты на uBASIC и LUA меня порадовала. Ещё эта штука рисует на экране чертовски информативный OSD.
Если даже меня впечатляет, то фотографы небось вообще кипятком писают.

Только я как-то обработкой изображений не увлекаюсь, и, в принципе, делать что-то конкретное с CHDK лень, однако есть пара идей.
1) Если вклиниться в USB-стек, то можно, например, сделать из фотика веб-камеру (непонятно, правда, зачем).
2) Сделать набор весёлых пост-процессингов. Например, фоткаем деньги, разбросанные по столу, а оно говорит сумму разбросанного.

Ещё есть отчаянное желание засунуть туда интерпретатор хаскеля или сделать eDSL для компиляции в армовские бинарники, которые CHDK сможет запускать в качестве скриптов. Но от таких идей надо лечиться, я считаю.

Экспериментируя с тулзами для создания стерео-картинок в камере, сделал Collapse )

Краткое руководство для получения стерео-эффекта:
0) открываем картинку из под ката на полный экран,
1) ставим на расстоянии 10см. перед глазами указательный палец,
2) теперь, если (не убирая пальца) посмотреть на монитор, то палец раздвоится,
3) передвигая палец находим такое его (а может быть ещё и головы) положение, когда правый квази-палец находится над правой Тамаки, а левый — над левой,
4) теперь фокусируемся на пальце,
5) медленно убираем палец с линии взгляда (например, сгибаем его), но не меняем точку фокусировки (то есть нужно смотреть в точку, где был палец, а не на монитор, который становится видно после исчезновения пальца),
6) на экране должно быть видно три Тамаки, где средняя — стерео-версия.
После некоторой тренировки палец становится не нужен, можно сразу поставить глаза в нужное положение.
Если стерео-Тамаки сильно размыта, то нужно, не теряя концентрации, медленно отодвинуть голову от монитора (или, наоборот, придвинуть ближе).
Ещё можно попробовать сфокусироваться на плинтусе, который находится за стерео-Тамаки.
Кроме того, теоретически, можно убрать размытость просто заставив глаза правильно деформировать хрусталик, но на практике это очень трудно сделать, ибо мозг привык фокусироваться на то, на что смотрим, а не смотреть в одну точку, а фокусироваться на другой. У меня такая магия получается очень редко, отодвинуться от монитора гораздо проще.

Сама стерео-Тамаки даёт приятное представление о качестве самой фигурки. Такие дела.
|, me, hikki, ok

Хеппи нью йеар

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

Собственно поскольку завтра (в смысле сегодня) у меня военная кафедра, которая уже слегка местами начинает надоедать, то мне почему-то захотелось подвести итоги года что ли..

Итак в топологическом порядке:
* Летом и осенью я успел поработать в администрации СПб, что, несомненно, принесло море жизненного опыта.

* На вырученные деньги купил себе хардварный модем зухель и сервер, который нынче занимается сортировкой почты, файлохранением в размере 1.6 Террабайта, ботосодержанием, виртуализацией, прочими глупостями... и, кроме того, обогревом помещений.

* Онямэ теперь смотрю значительно меньше.
Видимо, окончательно определился-таки с тем, что мне нравится.

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

* Стал агрессивно слушать классику и всякую ня-музыку.

* Прорезались зубы мудрости.

* Агрессивно стал посещать театры, оперу (не ту что быдло-браузир)...
(на фото «семейка» стульев в промежутке между коридором с гардеробными и бенуаром в Мариинке)
40,46 КБ

* Переболел красноглазием :3

* Перепробовал до кучи разных открытых ОС... всякие разные дистры линуха (заодно подсадив половину знакомых на арч), план 9, миникс, блюботл...

* Возродил идеи реализации своей собственной.

* Увлекся лямбда-исчислением.

* Сдал зимнюю сессию. \-.-/

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

* Тетрадь по английскому превратил в рассадник няк.
58,74 КБ65,03 КБ

* На своем любимом десктопе послал все DM куда подальше... сначала там был wmii, сейчас па-дэ-дэ танцует xmonad и его ~100 сделанных под меня шоткатов с моим же проектом xmsl (XMonadStatusLine) (который пока существует только на моем винчестере, ибо столь сыр, что недостоин быть ГПЛьнутым, хотя он уже круче xmobar, который есть бяко).
(кликабельно. xmls - это панелька внизу)


* ГОТИЧНЫЕ ЛОЛИ РУЛЯД!

* Пересмотрел свой взгляд на написание исходного кода, после того как написал > 2000 строк, а потом, подумав 4 дня, в итоге урезал сурс до 320 строк, увеличив при этом производительность в 19 раз и добавив самоверфикацию. Теперь я 2 дня - неделю рисую схемы в тетради, пишу маленькие примеры того, как я хотел бы это использовать, и лишь потом запускаю vim.

* Обзавелся телефоном нокия 5200.

* Вообще перестал понимать рекламу в метро (меня это несколько удручает): какую связь имеет красный волейбольный мяч и ипотека я вообще без понятия.
58,60 КБ

* 27 марта сменил фамилию. Теперь, как только получу новый паспорт, я буду «Ян Малаховски» (ага, без «й» на конце). Или «Jan Malachowski» в языковом оригинале.
Теперь мое имя наоборот - ня. А конец фамилии - ски. Так что я теперь одним только именем каваен чуть более чем на половину. =_=

* Пересмотрел свои взгляды на процесс взросления.
Раньше каждое восьмое число четвертого месяца вводило меня в депресняк, сейчас, пожалуй, я даже немного рад. Не то чтобы я тороплюсь постареть, но, почему-то, теперь подругому смотрю на старичков, гуляющих по паркам и зеленым аллеям.
С другой стороны, будущая перспектива (пускай и весьма маловероятная) стать родителем меня пугает. Страшно подумать, какой труд был вложен в мое воспитание и что пережили мои родители за эти уже почти 20 лет: пробитые лбы и затылки, брызги расплавленного свинца в лицо, болевые обмороки, остановки дыхания, ломанные пальцы, руки, ноги... даже перспектива «ребенок-наркоман» выглядит на этом фоне не столь ужасающей. Потому не могу не выразить им свое глубокое уважение и искреннюю благодарность за все пережитые мучения, лишения и переживания.
|, me, hikki, ok

SCTP. горькая правда

просвещение.
не так давно увидел публикацию RFC за номером 3286 для SCTP (Stream Control Transmission Protocol), сегодня погрузившись в сурсы и хаки для ipfilter решил его таки прочитать [1]

краткое содержание:
как всем известно, сегодня почти вся информация в сети передается по стеку протоколов TCP/IP, который на транспортном уровне имеет собственно TCP и UDP, которыми и обеспечивается существование современного интернета. кратко говоря первый обеспечивает "безопастную" передачу данных (без потерь), а второй "быструю" не замечая этих самых потерь.
VoIP, потоковое радио и потоковое видео для своих целей обычно используют UDP, потому как потеря 0.01 секунды звука в потоке не столь страшна, как потеря линии разговора.
а HTTP, SSH, POP3... используют TCP...

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

так вот протокол SCTP изначально разработанный для VoIP призван решить эти проблемы.
*пакет SCTP может иметь несколько адресатов и несколько обратных адресов (удобно для организации конференций)
*пакет SCTP может передаваться по принципам p2p, что, несомненно, несколько повысит его прожорливость по трафику, зато сведет почти в 0 потери
*SCTP сообщение-ориентированный и не требует лишних уровней обработки
*канал SCTP способен держать в себе потенциально неограниченное количество каналов-детей (удобно было бы сделать ftp на его базе, чтобы не создавать дополнительных соединений для данных)
*SCTP имеет встроенную защиту от Dos-атак, которым подвержены TCP и особенно UDP

т.е. сейчас этот протокол идеален для потокового медиа, а в будущем он может серьезно потеснить пару TCP+UDP и на поприще передачи данных. я прямо так и вижу реализацию torrent-ов на этой базе.

теперь о грустном. реализация этого протокола сейчас есть только в Unix-подобных ОС. мне достоверно известно, что она есть у меня в Linux 2.6 и во FreeBSD. другие системы я не смотрел.
Как известно Майкрoсoфт не собирается делать очередной апдейт для ВинXP, т.к. есть Виста, на которую нужно всех срочно пересадить. И в Висте реализации SCTP тоже нет, но она хотя бы теоретически возможна (в ХП теоретически невозможна).

Чем это грозит? Костылями.
Прямо так и вижу слоган "Хотите качественное VoIP - пересаживайтесь на Висту.", НО Виста - говно и это все знают, Линукса лемминги ("несознательные пользователи") боятся...
Теперь о производителях портируемого софта. Представьте какие встают костыли делать одно и то же для Линуха по SCTP, а для Вин по UDP! Думать страшно... и все из-за того что некоторые компании выпускают что-то недоделанное и не собираются этого доделывать, а некоторые пользователи их в этом поддерживают.