Манускрипты и ИИ по воскресеньям. Дописал небольшое пояснение в записку про кусочек папируса с фрагментом “Илиады”, но, думаю, можно вынести и в отдельный текст, тем более, здесь есть что развернуть. Речь о том, почему слово с первой строки египетского папируса 2966 из Британской библиотеки (там от этой строки только фрагмент одной буквы, самый верхний элемент), явно выходит за правую границу следующей строки, если сравнивать с манускриптом Venetus A. Вот скриншоты ещё раз – эффект хорошо видно, поскольку на второй картинке соответствующий “полуостров” пришлось сильно потянуть влево, чтобы он попал на слово:

Papyrus 2966
Venetus A

Что бы это могло означать? Скорее всего, на целом папирусе в этом месте была записана другая, более старая, версия строки 6.4, оканчивающаяся другим словом: στομαλίμνης. Полностью так: “μεσσηγὺς ποταμοῖο Σκαμάνδρου καὶ στομαλίμνης” (дословно: “между рекой Скамандр и лагуной/лиманом”), и эта версия длиннее, чем “современный” вариант, как в Venetus A, поэтому последнее слово могло “уехать” (“The Ptolemaic papyri of Homer”, Köln: Westdt. Verl. 1967). Кусок буквы как раз похож на μ, а возможно, что и на μν тоже тянет.

Считается, что на современный вариант, с потоками (ῥοάων) Ксанфа, мог переписать Аристарх Самофракийский или кто-то из работавших с ним. Версия со Скамандр-рекой указана в комментариях на полях цитируемого манускрипта Venetus A: там буквально написано, что вариант Скамандр-реки и лагуны записан в “старом тексте”, но его поменяли, – поменяли раньше, не в момент записи Venetus A, – на Симоент и Ксанф, потому что (Аристарху) так показалось географически точнее по событиям сеттинга. Кстати, строка в переводе Гнедича: “Меж­ду бре­гов Симо­иса и пыш­но­ст­ру­и­сто­го Ксан­фа” (почему “пышноструистый” – не ясно, но это всё известные особенности перевода Гнедича).

Вообще, между упомянутым папирусом и манускриптом Venetus A, как минимум, тысяча лет. И ещё тысяча – между манускриптом и современной записью текста “Илиады”. Например, тот же английский язык за меньшее количество веков потерял кучу грамматических конструкций, а кроме того, существенно изменил орфографию, что отразилось и в записанных текстах (разные летописи и пр.). Интересно, что в случае английского это явление записывают за нормандцами, с которыми с 1066 года на англосаксонских наречиях, видимо, можно было общаться, только коверкая рода и падежи, в стиле “твоя моя нет понимать”, что и закрепилось в английском, поскольку такой набор выглядел проще, а “высоким” языком всё равно был старофранцузский, к сожалению (сравните, кстати, с автоматизированными “упоминаниями” пользователей в некоторых интернет-соцсетях сейчас, где и для русского языка падеж используется всё равно строго именительный). Всё это применимо и к греческому языку. Но не к некоторым текстам. Поэтому вернёмся к греческому тексту “Илиады”: в записи трудов Гомера, как известно, тоже было много изменений, однако тут, в нашем случае, некоторые слова в записи вообще мало поменялись – можно сравнить:

Etheken-1
(На кусочке папируса. 230 г. до н.э. Сомнительно, конечно, что там “Ν”.)

Etheken-2
(Манускрипт Venetus A. 10 в.)

Etheken-3
(Современный веб-браузер. 2023 г.)

Естественно, сотрудник скриптория, который записал Venetus A, тоже мог пользоваться источниками, которым было по тысяче или около того лет (оно примерно так и считается сейчас).

Понятно, что другие варианты, которые когда-то тоже относились к “Илиаде”, но, в процессе трансформации/кодификации текстов, разошлись с современными вариантами за пределы, так сказать, “эластичности” филологических конструкций, просто не будут привязываться к той же “Илиаде”, если где-то обнаружится кусочек папируса с несколькими словами – они теперь видны как фрагменты “договора о покупке земли”, предположим. То есть, такой фрагмент, очевидно, никто и не станет рассматривать как “более старый” или утраченный, даже если он таковым и является, – нет оснований. В случае с нашим папирусом ключевое слово прямо указано в схолиях (комментариях на манускрипте), в других случаях – такого могло и не быть. И, конечно, далеко не каждый кусочек с несколькими словами, даже если эти слова прямо вкладываются в кодифицированный текст “Илиады”, можно к этому тексту тут же приписать – нужно, чтобы осталось достаточно внешней структуры. Из современных реалий, этот процесс хорошо похож на “обучение” ИИ LLM (“больших языковых моделей”): там в процессе сворачивания статистических свойств, эти самые структуры, которые позволяют кусочки папирусов привязывать к кодифицированным текстам, как раз гарантированно “сжимаются” до полного исчезновения (в этом суть “обучения”). Это, впрочем, мало кого смущает.



Комментировать »

Воскресное чтение манускриптов, на этот раз – с кусочком папируса, из серии “лучше всё проверить самостоятельно”. Как известно, один из самых старых полных/точных текстов “Илиады” – это манускирипт Venetus A, на который я уже как-то ссылался. Однако он датирован десятым веком (н. э.), а достоверно выявлен в источниках был и того позже – в 15 веке. Но кусочки текста “Илиады” встречаются то тут, то там – на фрагментах, которые датируются гораздо раньше. Так, египетский папирус (papyrus) 2966 из Британской библиотеки датируют 270-230 г.г. до н. э., то есть, более чем на тысячу и сто лет раньше, чем Venetus A. На этом кусочке папируса (см. скриншот ниже) читают кусочек текста “Илиады”, а именно – фрагменты строк из самого начала шестой книги/песни (VI, 6.4-7). Сравним тексты папируса и Venetus A.

Папирус (Papyrus 2966):
Papyrus 2966

А ниже – соответствующий фрагмент Venetus A, на котором я попытался подсветить отображение (примерное) папирусного кусочка в данный манускрипт:
Venetus A

Попали следующие слова: ῥοάων, Ἀχαιῶν, ἑτάροισιν ἔθηκεν, Θρῄκεσσι τέτυκτο (это момент поражения фракийского “браноносца” Акамаса, в основном). Понятно, что начертания букв различаются. Кроме того, на папирусе выше нет диакритических знаков (как-то без них обходились). Тем более занятно, что фрагменты можно сопоставить с такой высокой точностью – посудите сами: на этом кусочке всего лишь 27 букв, включая частично сохранившиеся. Впрочем, комбинаторно, конечно, этого достаточно.

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

Дополнение, 30/09/2023: кстати, на скриншоте папируса, как можно заметить по отображению на второй картинке, самая верхняя строка длиннее, чем на манускрипте: ну, то есть, как минимум конец слова уехал вправо, а видимые части буквы больше похожи на μ; что бы это могло означать? причина, вероятно, в том, что на папирусе записана другая версия строки 6.4, оканчивающаяся словом στομαλίμνης, а именно: “μεσσηγὺς ποταμοῖο Σκαμάνδρου καὶ στομαλίμνης” (“между рекой Скамандр и лагуной/лиманом”); считается, что на вариант с потоком (ῥοάων) Ксанфа мог переписать Аристарх Самофракийский или кто-то из работавших с ним; /источник комментария к папирусу: “The Ptolemaic papyri of Homer”, Köln: Westdt. Verl. 1967/.



Комментировать »

Как с максимальной точностью ответить на вопрос “Что ты сейчас читаешь?”, заданный в мессенджере? Можно ответить, что “читаю сообщение в мессенджере”. Но ведь можно же и ещё точнее: “Сейчас я читаю слово это”. И нажать Enter. Но и тут есть тонкость: слово “сейчас” стоит в самом начале, так что к моменту начала чтения слова “это” – “сейчас” уже устареет. Соответственно, максимально строгий вариант такой: “Я читаю последнее слово этого предложения сейчас”. Особенно продвинутые читатели спросят, почему же речь о слове, а не о последней букве, например. Очень просто: читать можно минимум слово, а отдельную букву читать нельзя (если, конечно, она не является словом). Этому есть много причин, основных две: во-первых, попробуйте прочитать “ъ” (твёрдый знак, а не сходная по начертанию газета или мнемонический знак, обозначающий некоторое сложное понятие); во-вторых, чтение, как процесс, определяется свойством сборки букв в слова (мы рассматриваем классическое фонетическое письмо, а не пиктограммы и специальные конструкции вроде трансцендентной алгебры). Так что разумно ограничиться словом “сейчас” в конце предложения. Без точки, это допустимо для чатика.

(Этот текст я как-то уже публиковал, но не здесь.)



Комментировать »

Продолжаем небольшую серию записок про TLS-сервер на tls13.1d.pw. Этот сервер передаёт несколько сертификатов, в том числе и один необычный сертификат, увидеть который можно только в выдаче той или иной специальной утилиты (например, s_client из OpenSSL) или упомянутым сервисом SSLLabs. Этот сертификат сервер генерирует (и даже подписывает, но это тут не важно) в самом начале установления соединения, а в поля Subject и Issuer записываются, соответственно, IP-адрес с номером порта клиента и имя выбранной криптосистемы обмена ключами. Это такой экзотический способ “посигналить” в (закрытой) части TLS-сообщений. Клиенты должны бы игнорировать неподходящий сертификат в процессе валидации (но могут и ошибку выдать, конечно).



Комментировать »

Кстати, индекс 0x6399, который позволяет отличить ключи криптосистемы X25519Kyber768Draft00 в TLS-сообщениях, внесён в соответствующий реестр номеров IANA, в раздел под именем TLS Supported Groups. Название раздела – ещё один пример исторически сложившихся особенностей спецификаций: понятно, что X25519Kyber768 – никакая ни группа, а сразу две криптосистемы, построенные на различном математическом аппарате (но, естественно, группы нетрудно найти и в X25519, и в Kyber768). Изначально, упомянутый раздел параметров TLS содержал индексы именованных эллиптических кривых, то есть, сочетаний из параметров, определяющих конкретную кривую в прикладном смысле. Но так как для криптосистем существенны были именно операции в группе, а кроме эллиптических кривых ещё использовались (и используются) мультипликативные группы колец вычетов, то раздел, довольно давно, переименовали в “Поддерживаемые группы”, теперь туда записывают наборы криптосистем.



Комментировать »

Развивающаяся “битва за банхаммер” приводит к тому, что в “этих интернетах” появляются новые плоскости для осуществления сегментации, поскольку блокирование сейчас модно делать на достаточно высоком уровне – на уровне приложений. Недавний пример – стена (временная) регистрации в Twitter. Есть масса других примеров, где администраторы вроде бы “глобального” массового сервиса ограничивают к нему доступ для некоторых IP-адресов, но не на уровне транспорта, а средствами HTTP или внутри приложения на смартфоне. Вообще, может показаться, что, с точки зрения “маршрутов” и BGP – ничего не меняется: пакеты если ходят, то так и ходят, как ходили. Для инженера NOC, допустим, прежде всего важно, что отправленный по заданному адресу пакет до этого адреса добрался, а что там происходит на уровнях, которые строятся из пакетов, HTTP это или QUIC какой-нибудь, – дело десятое.

Однако, хоть популярное нынче блокирование и выполняется на один или два уровня выше, чем IP, это самое блокирование может спуститься ниже, но уже в виде технологического спагетти. Это происходит в тот момент, когда просят как-то повзаимодействовать с этим блокированием (неважно, в какую сторону) на сетевом уровне. Всем знакомый пример: VPN-доступ, позволяющий прийти на сервис с другим (географически) сетевым адресом. IP заворачивается внутрь UDP, а туннели неожиданным образом проходят между логическими уровнями. А IP в туннеле используется для создания TLS-соединения со скрытым сервисом. Туннелирование туннелей. Сегментация на уровне приложений спускается в маршрутизацию, где порождает неожиданные эффекты доставки пакетов, особенно, если пересекается с anycast-узлами. Попробуйте зарисовать логику на листочке бумаги – получится путаница из спагетти, напоминающая нехорошую практику в области кабельных соединений.

Дело в том, что хоть блокировать многие предпочитают на разных уровнях, но привычный идентификатор, по которому ставят задачи блокирования, это всё равно IP-адрес (не всегда, но очень часто). Конечно, никто не отменял локального блокирования на уровне физических портов, на уровне приёма BGP-анонсов, однако для массовых и популярных сервисов, которые работают поверх Интернета, – это всё ещё применяется редко. Напротив, сейчас видно, как довольно быстро выстраивается новый перемешивающий уровень (хороший пример – технология ECH, создающая каналы “TLS внутри TLS”). Это нивелирует возможности прицельного блокирования на уровне базового транспорта или, условно, “физических портов”, но позволяет построить банхаммер уровня приложений. Если, конечно, сохранится связность Сети, пусть и через спагетти-коммутацию транспортного уровня.



Комментировать »

Исходные тексты программ – ценный источник информации о возможной работе этих программ. Относится и к другим текстам. Ниже – два варианта записи одного и того же фрагмента из “Физики” Аристотеля на “языке оригинала”, то есть, это древнегреческий, но, конечно, переписанный много позднее Аристотеля и по другим источникам. В данном фрагменте Аристотель объясняет, что поскольку при падении через “пустоту” нет причин для того, чтобы разные тела набирали разную максимальную скорость падения, потому что отсутствует сопротивление среды, то и все тела будут “одинаково быстро” падать, а это, как считает Аристотель, невозможно – поскольку он так объясняет, что не может быть пустоты. Но это другая история, а здесь текст служит примером того, как могут различаться записи. Красными точками я отметил начало и конец фрагмента. Первый скриншот – из манускрипта, датируемого 12 веком:

Manuscript fragment, Barb.gr.136

Второй – из манускрипта, который “посвежее” и датируется, как я понимаю, чуть позже, то есть, 13 веком:

Manuscript fragment, Vat.gr.241

Хорошо, что сейчас много манускриптов качественно оцифровано крупнейшими библиотеками и опубликовано. Конкретно эти два – из Ватиканской апостольской библиотеки (снова). Не то чтобы первый вариант был легко доступен для чтения, но второй – прочитать гораздо сложнее: там и хитрых “скорописных” сокращений очень много, и шрифт замысловатый (между строками – там ещё и комментарии, кроме специальных знаков). Удивительно, что переписанные тексты в таких непростых конфигурациях вообще совпадают в деталях. Можно даже предположить, что библиотечное дело в 13 веке усложнилось, а в скрипториях поменялся технической распорядок. Но понятно, что это просто манускрипты разного происхождения, типа, класса и предназначения, а ошибки, связанные с неверной расшифровкой сокращений – вполне себе встречались (это отдельная тема).



Комментировать »

Иногда приходится слышать, что “нейросети и машинное обучение работают с действительными (вещественными) числами”. Звучит занимательно, потому что практически никакое действительное число в отдельный компьютер или даже в дата-центр, набитый специализированными “тензорными процессорами”, по записи не уместится. Более того, если бы действительные числа были доступны на этом технологическом направлении, то почему бы тогда не взять десятичную запись π и, вместо “обучения”, не найти там уже готовый набор коэффициентов под нужную задачу?

А процессоры для “машинного обучения”, в лучшем случае, работают с небольшим подмножеством целых чисел, даже когда используется надстройка в виде арифметики с плавающей точкой – что-нибудь из разряда bfloat16, FF32 и т.п. Эта арифметика максимально далека от действительных чисел, в которых, кстати, арифметику вообще очень сложно, если вообще возможно, построить даже теоретически. Свойства привычных “вычислений с погрешностью” уже для целых значений приводят ко всяким дополнительным хитростям, это кроме известных эффектов расщепления одного и того же числа на несколько представлений.

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



Комментировать »

Известно, что греческая буква “о-мега” это, в каком-то смысле, дважды буква “о-микрон”. Если точнее, то “о-микрон” – краткое О (“микро-о”), а “о-мега” – большое или долгое О. Занятно, что в некоторых старинных рукописных начертаниях омега как раз и записывается как два омикрона. Подтверждающий скриншот из манускрипта Urb.gr.15 (“Слова” Григория Богослова, десятый век):

Bouletée

Например, в конце второй (на скриншоте) строки, слово προθύμως – отчётливо видно, что буква ω построена в точности как пара склеенных ο. Такое же начертание омеги нетрудно обнаружить и в первой строке, в слове ἡμῶν (локализация границ самого слова, впрочем, может оказаться затруднительной, если оно не знакомо читателю). А вот пара “омикронов-окружностей”, придавленных сверху чертой – это тоже π.

При изучении скриншота может показаться, что там присутствуют некие “велосипедные” двойные омикроны в начале и в конце первой строки, но нет – это сигма и омикрон в слове ὅσοι.

Кстати, в палеографии этот вариант рукописного древнегреческого называется “минускулом типа bouletée”, а такая запись омеги – один из характерных признаков. (Наверное, скоро можно уже не отмечать записки про древнегреческий и палеографию как офтопики.)



Комментировать »

Кстати, очередной пример, почему ssh forwarding не такой безопасный вариант использования ключей на удалённых системах, как может показаться: при желании, через ssh-agent обратно может приехать исполнение кода на локальной системе, впрочем, с некоторыми дополнительными “плясками” – CVE-2023-38408. Авторы, естественно, не забывают упомянуть ASLR, PIE и NX:

“Surprisingly, by chaining four common side effects of shared libraries from official distribution packages, we were able to transform this very limited primitive (the dlopen() and dlclose() of shared libraries from /usr/lib*) into a reliable, one-shot remote code execution in ssh-agent (despite ASLR, PIE, and NX)”.



Комментировать »

Nuka Cola logo, Wikimedia, Interplay ProductionsВо вселенной Fallout (серия видеоигр, прежде всего) подземные бункеры (vaults), которые преподносятся публике как убежища на случай ядерной войны, на самом деле предназначены для проведения различных экспериментов над обитателями. Это и “социальные эксперименты”, запланированные для проверки тех или иных гипотез о выживании изолированных групп людей в разных условиях (социальная организация, недостаток ресурсов и т.д.), и биомедицинские эксперименты разной степени прямолинейности (например, поиск эффективных лекарственных средств методом “проб и ошибок”). Все эти эксперименты не ограничиваются какими-то “этическими рамками”, за исключением случаев, когда именно “этические рамки” различных версий и являются сутью эксперимента.

То есть, публичная версия о том, что бункеры – это защищённые автономные убежища, где люди могут долгие годы пережидать последствия массированных ядерных ударов, – являлась лишь прикрытием, а причина создания программы строительства бункеров была в другом: в обеспечении экспериментальной базы. При этом для успешного выполнения многих экспериментов бункеры действительно должны были быть автономными и действительно защищать своих многочисленных обитателей от “внешних воздействий”, а небольшая часть бункеров создавались как полноценные бункеры управления, без “экспериментальной части”. За всей этой программой в Fallout стоит секретная (и над-правительственная) организация Enclave (“Анклав”). И после того, как во вселенной Fallout наступило Событие (обмен ядерными ударами), эксперименты в бункерах действительно начались. Как, скорее всего, и планировалось.

Интересно, что в качестве “официальной” скрытой причины всей этой экспериментальной программы выступала идея об отправке колонистов с Земли на другие планеты в космическом корабле: дескать, эксперименты позволят нащупать оптимальный способ организации жизни и деятельности колонистов на борту корабля во время длительного полёта, а также выбрать представителей, наиболее подходящих на роль колонистов. Очень банальное обоснование. В том числе, с точки зрения художественной правды. Однако, насколько можно судить, тема с космическим кораблём и другими планетами, на самом-то деле, не была хорошо разработана, а тоже являлась прикрытием. Предполагался второй слой с объяснениями затеи: дело вовсе не в космическом перелёте, который может и не получиться, а в том, что нужно, при помощи научного подхода и экспериментальным способом, определить новые пути развития человеческого общества на Земле, и для этого нужны эксперименты в бункерах. При этом, вообще говоря, из сеттинга игр серии не очень-то понятно, получилось ли со “второй задачей” – понятно только, что колонисты к далёким планетам точно не полетели. Запутанная история.



Комментировать »