GPU: RTX 6000 Pro vs H100 на FP8

Так, кто там у меня в комментариях в телеграмном канале спрашивал о сравнении наших графических ускорителей при работе с сетями, квантованными до FP8 (однобайтового типа с плавающей точкой)?

Табличка ниже, использовался «Квен 3.5» с 35 миллиардами параметров (A3B).

Что мы тут видим? А видим мы очень интересную штуку: оказывается, ускорители H100 бывают очень разными. Инференс нашей тестовой модели показывает, что NVIDIA H100 NVL по-прежнему превосходит RTX 6000 Pro WS примерно в полтора раза, при этом ускоритель H100 без приписки «NVL» работает примерно так же, как и RTX 6000 Pro WS, хотя обошёлся нам примерно втрое дороже.

Сравнение полноразмерного «Квена 3» я уже у себя публиковал.

Таблица сравнения производительности GPU H100 96GB NVL, H100 96GB и RTX 6000 Pro при параллельных запросах 100–500: вывод токенов/с, общее время, TTFT, TPOT, ITL в мс.

2 комментария

Чтение образов NeXTSTEP

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

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

Пользоваться утилитой не очень удобно, особенно если не вполне ясно что ищешь, но её довольно просто подключить к известному файловому менеджеру mc (Midnight Commander).

Скриншот файлового менеджера: две панели с директориями /me/Apps/viola940323 и /mosaic-personal-annotations, файлы, даты 1994, строка bash-3.2$.

Достаточно написать обёртку, которая принимает на вход две команды — list (выдача списка файлов в директории) и copyout (копирование указанного файла в указанный путь), — и всё заработает.

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

К сожалению, ничего полезного внутри образа я не нашёл, но опыт интересный.

20 комментариев

Обработка фоток ИИ

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

1 комментарий

TOIlet: цветные шрифты

Вчера я писал, что цветные шрифты — не самое важное расширение стандарта FIGlet. От своих слов я не отказываюсь, но это расширение точно одно из самых весёлых.

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

Идея цветных шрифтов простая: в консоли можно использовать цвета, которые задаются специальными управляющими последовательностями. Терминал не выводит их на экран как текст, а воспринимает как команды. Например: «с этого места рисуй всё зелёным».

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

Немного истории. Сначала появились базовые цвета — классический набор из восьми цветов. Потом к нему добавили яркие варианты, и в результате получилась 16-цветная палитра. Позже этого стало мало, поэтому появился режим, позволяющий выбирать цвет из палитры в 256 цветов. А затем добавили и true color — возможность задавать цвет напрямую в формате RGB, то есть практически из всей 24-битной палитры.

Терминалы работают с разными палитрами, что они, как правило, умеют сообщать через переменные окружения. Например, у меня на «Маке» есть переменная COLORTERM со значением truecolor, что означает, что моему терминал можно отсылать 24-битные цвета, а на рабочих «Линуксах» такой переменной нет. Но там есть переменная TERM со значением xterm-256color, которое указывает на то, что эти терминалы умеют обрабатывать 256 цветов.

Сравнение отображения пиксельных фруктов в терминале: 16-цветный, 256-цветный и truecolor режимы с указанием переменных TERM и COLORTERM.

Когда я начал разбираться с форматом шрифтов TOIlet и библиотекой libcaca, которая их отображает (автор большой оригинал, да), оказалось, что внутри реализована идея цветных шрифтов, но ни одного примера такого шрифта нет. Судя по коду, он слегка не дописан, но тем не менее, вполне работоспособен, жаль только автор остановился на палитре из 16 цветов.

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

Я подумал, что было бы здорово расширить формат, но так, чтобы утилита toilet по-прежнему выводила тот же шрифт в своих знакомых шестнадцати цветах.

Если посмотреть как libcaca парсит управляющие коды, то мы заметим, что парсер достаточно вольно обращается с грамматикой, не реагируя на некоторые ошибки, например, он пропускает все управляющие числа большие 107.

for(j = 0; j < argc; j++)
{
    /* Defined in ECMA-48 8.3.117: SGR - SELECT GRAPHIC RENDITION */
    if(argv[j] >= 30 && argv[j] <= 37)
        im->fg = ansi2caca[argv[j] - 30];
    else if(argv[j] >= 40 && argv[j] <= 47)
        im->bg = ansi2caca[argv[j] - 40];
    else if(argv[j] >= 90 && argv[j] <= 97)
        im->fg = ansi2caca[argv[j] - 90] + 8;
    else if(argv[j] >= 100 && argv[j] <= 107)
        im->bg = ansi2caca[argv[j] - 100] + 8;
    else switch(argv[j])
    {
        // парсятся 1—9, 21-29, 38, 39, 48—50

        default:
            debug("ansi import: unknown sgr %i", argv[j]);
            break;
        }
    }
}

Поэтому идея возникла такая. При кодировании цвета TOIlet использует цвет фона и шрифта, чтобы точнее имитировать пиксели в текстовом режиме. Иногда используется только один из них, чтобы реализовывать условную прозрачность. Это я пишу, чтобы рассказать, что у нас есть три варианта — указан цвет фона, указан цвет шрифта или указаны оба.

Если сразу за цветом в палитре из 16 цветов писать значение цвета, к которому я прибавлю такое число, чтобы оно гарантировано пропускалось парсером libcaca, то смогу спрятать от него там более точные значения цвета.

Например: \e[31;287;41;297m. Тут \e[ — начало специальной последовательности управляющих кодов (\e в реальности — символ с кодом 27, он никак не отображается, а только говорит, что дальше идёт команда).

Потом 31 — установка фона в красный, 287 — код цвета из 256-цветной палитры с прибавленным числом 256, чтобы оно пропускалось парсером. Так как оно идёт сразу после установки фона, то значит и тут мы ставим фон.

Следующим идёт, как возможно вы уже догадались, установка цвета шрифта, 41 — это тоже красный цвет, но для шрифта, коды разные, надо же отличать что именно мы устаналиваем. За ним — 297, принцип тот же, но так как тут значение идёт сразу после кода установки цвета шрифта, то мы понимаем, что и тут ставится цвет шрифта.

Символ m закрывает управляющую последовательность.

Таким образом утилита toilet и её библиотека libcaca увидят последовательность \e[31;41m, а мой парсер выкинет числа для 16-цветной палитры и оставит себе только 287 и 297, вычтет 256 и поставит нужный цвет.

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

С цветом RGB работает всё так же, только прибавляем 512. Правда цвет у меня кодируется в обратном порядке — BGR, потому что синяя компонента у́же всего используется в эмоджи, а красная — шире, поэтому если развернуть значения, числа получаются меньше и шрифт становится компактнее. Я думаю это оттого, что синий цвет хуже распознаётся глазом, недаром все градиенты во времена эпохи 256 цветов на мониторах старались делать синими.

Окно установки SimCity 3000: копируется файл 00000006_vehicles.dat, прогресс 36%, кнопка «Abbrechen».
Синий градиент в инсталляторе игры «SimCity 3000» в палитре 256 цветов

Шрифты, конечно, получаются просто огромными — по несколько мегабайт, но здесь помогает сжатие: и FIGlet, и TOIlet поддерживают сжатые шрифты.

Для конвертации эмодзи я написал конвертер на «Пайтоне», который преобразует их в шрифт отдельно в 256 цветах и в полноцветной палитре: хранить все варианты цветов было бы слишком накладно. А библиотека при отображении уже сама приближает цвет, если это требуется для конкретного терминала.

Вот, кстати, где ИИ сильно у меня начал буксовать — на задаче как компактнее спрятать новые цвета в старом формате. Сначала пришлось подумать самому, а потом уже пошло веселее — «Опус 4.6», который я не устаю нахваливать, подхватил идею и мы с ним быстро проверили различные гипотезы.

Добавлено позднее: реализацию всего вышесказанного можно увидеть в моём репозитории на «Гитхабе».

4 комментария

Figlet: шрифты из текста

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

Скриншот шахматной игры «ШАХМАТЫ RIGA 1987»: уровень 0,1 : 0, белые-1, чёрные-0 : 1, ваш ход.

С этим типом «графики» (не уверен, нужны ли кавычки) я впервые столкнулся за первым компьютером, на котором начал программировать, — «Радио-86РК». Очень хорошо помню программу «шахматы», которая выводила фигуры знаками псевдографики. К шахматам у меня особого интереса никогда не было, но этот факт я для себя отметил.

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

                          ________________
                         /      MAKE      \
          ___________   /   AMERICA GREAT  \
       (_(  ___ ___  )  \      AGAIN!      /
       /_/-( c) (c )< \  \   _____________/
       | |    <_      |   | /
       |_| '  ()  '   | ___/
      __\_  ( __ )  _/__
  / /|   \        /    |\ \
 (    )    ~      ~    (    )
(    |\  ( .     . )   /|    )
 (   ) \  --     --   / (   )
 |  ,| |     ___     | ,|   |
 \__/ \|  / - | - \  |/ \__/
  \oooO\_____________/Oooo/
        \   _____   /
         \. p | m ./
         | \_____/ |
        /    / \    \
       (____)  (____)
      /_____|  |_____\
    ___|   |    |   |___
   (_______|    |_______)


Не скажу, что я специально искал где-то текстовую графику, собирал её или любил любоваться ею вечерами, но, когда она мне попадалась, её, как правило, было интересно рассматривать.

Среди такой графики попадались и надписи, сделанные подобным образом, — странная, казалось бы, идея: писать буквы другими буквами. Но таким способом можно было имитировать различные шрифты или, например, рукописное начертание.


 ,ggggggggggg,     _,gggggg,_      ,ggggggggggg,     _,gggggg,_      ,ggg,        gg
dP"""88""""""Y8, ,d8P""d8P"Y8b,   dP"""88""""""Y8, ,d8P""d8P"Y8b,   dP""Y8b       88
Yb,  88      `8b,d8’   Y8   "8b,dPYb,  88      `8b,d8’   Y8   "8b,dPYb, `88       88
 `"  88      ,8Pd8’    `Ybaaad88P’ `"  88      ,8Pd8’    `Ybaaad88P’ `"  88       88
     88aaaad8P" 8P       `""""Y8       88aaaad8P" 8P       `""""Y8       88aaaaaaa88
     88""""Y8ba 8b            d8       88"""""    8b            d8       88"""""""88
     88      `8bY8,          ,8P       88         Y8,          ,8P       88       88
     88      ,8P`Y8,        ,8P’       88         `Y8,        ,8P’       88       88
     88_____,d8’ `Y8b,,__,,d8P’        88          `Y8b,,__,,d8P’        88       Y8,
    88888888P"     `"Y8888P"’          88            `"Y8888P"’          88       `Y8


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

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

Я тогда писал много пакетов для ПХП, мне очень нравился этот язык и очень хотелось что-нибудь сделать для сообщества. Поэтому пакет для работы со шрифтами FIGlet я написал именно на этом языке. Несколькими годами раньше это был бы Перл.

В 2008-м году появилось логическое продолжение — утилита toilet и формат шрифтов TOIlet («The Other Implementation’s letters»).

Скриншот терминала с командами программы toilet: «Hello! こんにちは» в радужном шрифте smmono9, «wow, I can read Braille» точками, и «UNICODE ART IS W00T» в стиле metal.

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

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

Оставить комментарий

Раздача интернета и «Айфон»

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

Но вот странность: у меня всё работает нормально, а у жены на «Айфоне» «Режим модема» включается, но машина эту точку доступа просто не видит. Решил разобраться — и выяснилось, что мой смартфон её тоже не видит.

На этом месте я, честно говоря, приуныл: первой мыслью было, что проблема в железе. Но потом почему-то сработала интуиция, и я полез проверять настройки APN.

Мы с женой пользуемся «Т-Мобайлом», причём ещё с тех времён, когда он назывался «Тинькофф-Мобайл». И я подумал: а что, если после ребрендинга они поменяли имя точки доступа, а у жены с тех пор настройки никто не трогал, потому что режимом модема она давно не пользовалась?

Так и оказалось. Поменял APN — и всё сразу заработало.

Что особенно прекрасно: «Айфон» вообще никак не пытался объяснить, в чём проблема. Просто делал вид, что всё в порядке: «Режим модема» включался, но точка доступа при этом фактически не поднималась.

Но что ещё страннее, — потом я вспомнил, что я у себя на «Андроиде» настройки тоже много лет не трогал, но у меня точка доступа работает нормально.

12 комментариев

Возвращение Text_Figlet

Нейросеть «Опус 4.6», конечно, жрёт невероятное количество денег.

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

У меня уже много лет чешутся руки переделать мою старенькую библиотеку Text_Figlet. Это, наверное, самое популярное моё детище — она время от времени встречается мне в каких-то продуктах и даже входит в виде пакета в некоторые дистрибутивы «Линукса».

Библиотека написана на ПХП и умеет выводить текст специальными фиглет-шрифтами, составленными из символов. Та моя версия, помимо этого, умеет делать так называемый smushing — объединение соседних букв по специальным правилам. Этот эффект виден в примере ниже.

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

 _  _     _ _                        _    _ _ 
| || |___| | |___    __ __ _____ _ _| |__| | |
| __ / -_) | / _ \_  \ V  V / _ \ '_| / _` |_|
|_||_\___|_|_\___( )  \_/\_/\___/_| |_\__,_(_)
                 |/                           

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

Какое-то офигительное чувство — когда задуманное так быстро превращается в код. Да, его до сих пор приходится просматривать, чтобы подсказывать нейросети, что переделать, но, в общем-то, меня это не коробит. Зато скорость программирования вырастает многократно. Я даже не могу предположить, сколько ещё откладывал бы переделку этой библиотеки, если бы не было настолько продвинутых нейросетей.

10 комментариев

Звуки китов

Очень люблю истории о том, как учёным удаётся найти что-то потерянное, забытое или расшифровать то, что раньше не удавалось прочесть. Мой фаворит здесь, конечно, — Вилла Папирусов. Но речь не о ней, тем более что в её исследовании пока новостей нет.

Вчера прочитал, что исследователи и архивисты Океанографического института Вудс-Хоул недавно обнаружили, возможно, самую старую из сохранившихся записей китового пения, сделанную 7 марта 1949 года недалеко от Бермудов. Запись была сделана на аудиопластинку, благодаря чему она и сохранилась: была бы она на плёнке — давно бы размагнитилась.

В то время исследователи на борту научно-исследовательского судна «Атлантис» тестировали гидроакустические системы, измеряли громкость взрывов и проводили другие акустические эксперименты в сотрудничестве с Управлением военно-морских исследований США.

На фотографии слева конверт в котором хранилась найденная запись, а справа — диктофон, который записывал звук.

Слева — бланк «Gray Flexograph 60» для записи диктофонных сеансов, справа — женщина с диктофоном Gray Audograph Soundwriter на столе в архиве.
Конверт снабжён примечаниями: «звуки рыб», «эхо рыб», пометки показывают, что учёные тогда ещё не знали, что записали пение горбатого кита

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

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

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

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

7 комментариев

GPU: RTX 6000 Pro vs H100

Провели тестирование графического ускорителя NVIDIA RTX 6000 Pro WE в сравнении с NVIDIA H100. Тестировали в разных режимах, с нейросетью «Квен3» с 30 миллиардами параметров, без квантования. Тесты включали и синтетику, и реальные наши задачи; мы даже подключили ускоритель к «боевой» инсталляции и наблюдали за разницей. Обучение не тестировали, так как у нас таких задач почти нет: нас больше интересовало, как будут вести себя большие языковые модели.

Все цифры публиковать не буду, но небольшую статистику по синтетическому тесту всё же приведу. Вывод такой: на реальных наших данных разницы мы не заметили, а в синтетике H100 производительнее в 1,55—1,6 раза.

Учитывая разницу в стоимости примерно в три раза, RTX 6000 Pro выглядит более выгодным вариантом для покупки, но с оговоркой: для моделей, которые не помещаются в память одной карты, H100 (или ещё более старшие модели) предпочтительнее, так как у таких карт есть собственная высокоскоростная шина для обмена данными, и общая производительность такого решения должна превосходить производительность карт RTX 6000 Pro, соединённых по обычной шине.

Таблица сравнения производительности GPU H100 и RTX 6000 Pro в режимах 100 и 500: Req/s, Output tok/s, Total tok/s, Mean TTFT, Median TTFT, Mean TPOT, Mean ITL.
«Режим» — это количество одновременных запросов

4 комментария

Опознать по голосу

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

Кажется, я очень неплохо распознаю лица, лучше среднего человека: например, я сразу понял, что Леса Гроссмана в фильме «Солдаты неудачи» (2008) играет Том Круз, едва он появился в кадре. Насколько я знаю, мало кто понял, что это он. Или я не путаю Натали Портман и Киру Найтли, да и вообще многих актёров, которых большинство людей считает почти неразличимыми.

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

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

У вас так же?

5 комментариев

ИИ: поиск уязвимостей

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

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

Вернёмся к уязвимостям. На «Хабре» есть очень показательная статья — «Техдиректор Microsoft Azure с помощью Claude AI обнаружил ошибки в 40-летнем коде Apple II». Упомянутый код сеть «Опус» проанализировала на уровне ассемблера процессора 6502, который использовался в тех машинах, и нашла ошибку.

Анализаторы кода не использовались, да и вряд ли они есть для настолько старого ассемблера. Так что в этом смысле это должен быть довольно чистый эксперимент. Моя прежняя попытка читать ассемблерный код нейросетями показала, что существующие на тот момент нейросети справлялись не очень, но видимо «Опус 4.6» продвинулся и в этом.

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

Оставить комментарий

Хищные растения

Выбирая дочке подарок на 8 Марта, гулял по одному из местных торговых центров, где проводилась какая-то очередная ярмарка. В голове не было ни одной мысли о том, что же подарить, поэтому я надеялся, что меня осенит у какого-нибудь прилавка. Так, собственно, и случилось: в одном месте продавались хищные растения, и я вспомнил, что дочь когда-то очень ими заинтересовалась, как и я в детстве, впрочем.

Я даже купил себе что-то хищное много лет назад, но почему оно у меня не дожило до сегодняшних дней, причину не помню. Может, кот съел.

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

Дочка каждое утро льёт воду из пипетки в оба горшка — именно так их и положено поливать, — и сделала попытку покормить растения белковым кормом для улиток. Вроде бы им не понравилось: почему-то листья они не закрыли. Надо будет попробовать самому.

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

Геометрический стеклянный террариум с карликовыми росянками и мхом на фоне других комнатных растений в голубых и чёрных горшках на белом подоконнике.

8 комментариев

Удаление родинок

За прошлый год у меня на шее выросла длинная родинка, которая мне очень не нравилась. Вообще, у меня на теле было несколько таких, но жить они мне не мешали, потому что находились в местах, скрытых под одеждой.

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

В общем, недавно я решил, что время пришло. Выбрал клинику так, как обычно делаю в последнее время: дал нейросети задание составить для меня рейтинг, потом почитал отзывы, записался на приём и пошёл удалять.

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

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

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

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

13 комментариев

Актёр Дэвид Кэррадайн

По случаю выходного дня сегодня пересматривал комедию «Большой Стэн» (2007). Не великое кино, но, как по мне, фильм неплохой — самое то, чтобы снять напряжение рабочей недели. В фильме есть персонаж Мастер — явная пародия на Билла из тарантиновской дилогии «Убить Билла». Ещё обоих персонажей играет один и тот же актёр — Дэвид Кэррадайн.

Закончив просмотр, я понял, что не могу вспомнить, где он ещё играл, и пошёл в «Википедию» смотреть его фильмографию, попутно отметив, что актёр умер в 2009 году.

Каково же было моё удивление, когда я обнаружил, что и после смерти актёр, по-видимому, активно снимается — последний фильм с его участием, «Американский связной» вышел аж в 2021 году! В общей сложности после 2009-го года с его участием вышло десять фильмов и один сериал.

Больше половины вышли на следующий год после его смерти, что легко объяснимо, конечно, но как быть с остальными? Я сначала подумал, что речь идёт о какой-то реконструкции, как делали с Майлом Джексоном, голограмма которого участвовала в одном из концертов после его смерти или о документальном кино, но Кэррадайн фигура не такого масштаба.

Оказалось, что всё проще — актёра частенько приглашали сниматься на небольшие роли независимые студии в одну-две сцены, что позволяло писать на постере, что их фильме снялся Дэвид Кэррадайн, после фильма «Убить Билла» — большая звезда!

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

Два ковбоя в шляпах и жилетах стоят в помещении с деревянной мебелью, один смотрит в сторону, другой — вверх, выражение лиц напряжённое.
Слева — Дэвид Кэррадайн в своей первой роли в фильме Таггарт (1964)

1 комментарий

Отгадки на загадки из музея МВД

Публикую отгадки на загадки из музея МВД.

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

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

А вот назначение второго предмета никто не угадал. Это подхомутник — штука, которую кладут под хомут на шею лошади, чтобы снизить давление и уменьшить трение.

1 комментарий

Загадки из музея МВД

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

Первая загадка — самая простая. Догадайтесь что за предмет. Имеет непосредственное отношение к охране правопорядка.

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

Вторая загадка сложнее. Этот предмет хоть и лежит в музее МВД, но в принципе мог бы лежать в любом нетематическом сельском музее.

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

Третья загадка — самая сложная. Из разряда «если не знаешь, то не догадаешься», по крайней мере я бы не догадался. Для чего предназначался Г-образный предмет под чёрно-белым жезлом?

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

Ответы выложу завтра-послезавтра.

Дополнено: отгадки выложил отдельным постом.

26 комментариев

ИИ: поиск ошибок в bc

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

Очень интересно стало — а как ИИ вообще ищет такие проблемы? Ведь все взаимосвязи в коде он, в силу известных ограничений, просмотреть не может, может речь о каких-то распространённых шаблонных уязвимостях? Я как-то глубоко не погружался в тему.

Поэтому решил посмотреть как будет действовать нейросеть «Опус 4.6» на хорошо знакомом мне проекте — калькуляторе bc, работающем в командной строке. Я выбрал версию для «Линукса», так как там меньше кода.

Скриншот терминала: команды bc с огромным scale (2147483647) вызывают «Segmentation fault» и «Fatal error: Out of memory for malloc».

Я написал небольшой промпт, в котором попросил найти мне переполнения стека, ошибки выделения и памяти и прочие проблемы, характерные для программ на Си. Что интересно, такие проблемы нашлись! Но как же «Опус» это сделал?

Ларчик открывался просто — нейросетка подключила к проекту ASan и UBSan — стандартные инструмент для поиска ошибок работы с памятью, знаковых переполнений, деления и ноль и так далее, а после проанализировала их вывод. Никаких чудес.

4 комментария

30 лет серверному ДжаваСкрипту!

Поздравляю всех фронтендеров с юбилеем серверного ДжаваСкрипта — ровно тридцать лет назад вышел Netscape Enterprise Server 2.0 с поддержкой технологии SSJS (Server-Side JavaScript).

Код можно было писать прямо внутри страницы (как в ПХП, например), оборачивая куски, выполняемые на сервере при помощи тега SERVER:

<SERVER>
write("Click a link to display an image:<P>")
cursor = database.cursor("select * from rockStarBios")
while(cursor.next()) {
    write(cursor.photos.blobLink("image/gif", "Image " + cursor.id))
    write("<BR>")
}
cursor.close()
</SERVER>

Позднее он на этом поле проиграл конкуренцию «Микрософту» и их технологии «Активных Серверных Страниц» (ASP), где можно было программировать на JScript (был такой диалект «ДжаваСкрипта») или VBScript и исчез с радаров.

Добавлено: оказывается я сам эту дату и раскопал, и даже в «Википедию» добавил.

2 комментария

«Сплитуйте»

Бывает у вас, что какое-то слово вызывает у вас омерзение? Например, я знаю, что многие не любят слово «влажный», простите, если вы тоже и вас сейчас передёрнуло.

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

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

Скриншот приложения Яндекс Пэй: баланс карты 10 000 ₽, баллы Плюса 1033, кредит 829 000 ₽, разделы «Сплит», «Сейвы», «Бонусы за остаток», «Зовите друзей».

28 комментариев

Книги: «Детективное агентство Дирка Джентли»

Очень люблю сериал «Холистическое детективное агентство Дирка Джентли». Смотрел его ещё в момент выхода, в 2016 году, и даже недавно показал дочке. Там всего два сезона, и я очень жалею, что сериальная история героев на этом закончилась.

Я почему-то не додумался раньше, что у него может быть литературный первоисточник. Оказывается, есть — это трилогия Дугласа Адамса, небезызвестного многим по экранизации «Автостопом по Галактике».

Узнав, кто автор, я даже обрадовался: серия, которую открывает книга «Автостопом по Галактике», мне в своё время очень понравилась. Так что я подумал, что книги про Дирка Джентли тоже придутся мне по душе — раз сериал оставил такие приятные впечатления.

К сожалению, оказалось, что книга и сериал — это два разных мира. Я прочитал больше половины первой книги, но пока не увидел ничего, даже отдалённо напоминающего события из сериала, кроме того, что одного из героев зовут Дирк Джентли. Да и то, как оказалось, это не его настоящее имя.

Я пока даже не понял, нравится мне книга или нет. Несмотря на мои усилия, полюбить её не удаётся, но бросать не хочется — верю в Дугласа Адамса. Может, перевод неудачный?

4 комментария