M9K blog

Заметки ITшника обо всём

Меморис: цены на память.

Тёмная сторона силы GM в 2026 — это неадекватный ценник на компьютерное железо. Зашёл посмотреть свою историю заказов в ритейлере, который есть и в РК, и рф, и бодро подивился на цифру.

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

«Источник» бед резюмирует:

Рост цен на ОЗУ сейчас (2025—2026): ~200—300%+ за год — можно сказать, почти трёхкратный взрыв.
Рост цен на видеокарты в криптобум (2016—2018): обычно ~30—70% над MSRP (из-за дефицита, спекуляций, спроса майнеров).

Sasha Komovich — Расскажи, Снегурочка

Генеративные модели плотно вошли в нашу жизнь. Если пару лет назад первые версии Midjourney лично мной воспринимались как игрушка, то теперь сложно представить быт, работу и досуг без условного GPT4ALL или Invoke. То же самое касается и искусства — пусть абсолютная часть генерируемого контента мусор (как, впрочем, и с вещами, которые делали кожаные мешки до явления GM), но стоит наконец признать: это не более чем ещё один инструмент креатива. Трендовый бриллиант начала 2026-го — доказательство тому.

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

Синематики Star Wars

Справедливое в комментариях:
Remember, as long as the only evidence of a game’s existence is a CGI trailer, it doesn’t exist.
Но все равно красиво.

Нейрогенеративная Нара

Будучи в Японии, сделал великолепный снимок одного из храмов в Наре.

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

STALKER2 PS5 Trailer

Время летит быстро — без малого года прошёл с момента релиза. Зашёл на второе прохождение, игра по состоянию на патч 1.6 прекрасна.

 20   3 мес   stalker 2   trailer   youtube

Конак и Қонақ үй

Листал карту Белграда и наткнулся на достопримечательность «Конак кнеза Милоша» (усадьба князя Милоша). Слово и смысл показалось подозрительно знакомыми с казахским «Қонақ үй» (гостиница). Короткий GPT-гуглинг подтвердил мои подозрения:

Серб. konak ‘усадьба, резиденция, постоялый двор’ — это заимствование из османо-тур. konak ‘большой дом, резиденция; постоялый двор’. Турецкое konak связано с глаголом kon-(mak) ‘останавливаться на ночлег, садиться (о птице), размещаться’.

Казахск. қонақ үй — буквально ‘дом для гостей’: қонақ ‘гость’ + үй ‘дом’. Слово қонақ — исконно тюркское, от того же корня қон- ‘садиться, останавливаться на ночлег’.

Итог: сербское konak — турцизм эпохи Османской империи; казахское қонақ — родное тюркское. Оба восходят к одному пра-тюркскому корню *kon- ‘останавливаться/переночевать’.

Windows перемещение файлов в директории по совпадению части имени

В указанной директории ищем файлы с «_45» или «_16», перемещаем во внутреннюю создаваемую директорию.

$dir = "C:\work\pics"
$target = Join-Path $dir 'substrateInstagram'
New-Item -ItemType Directory -Path $target -Force | Out-Null
Get-ChildItem -Path $dir -Filter *.jpg -File |
  Where-Object { $_.BaseName -match '(_45|_16)' } |
  Move-Item -Destination $target

Linux Passwordless oneliner

TARGET=user@host; PORT=22; [[ -r ~/.ssh/id_ed25519.pub ]] || ssh-keygen -t ed25519 -N "" -f ~/.ssh/id_ed25519; ssh -p "$PORT" "$TARGET" 'umask 077; mkdir -p ~/.ssh && cat > ~/.ssh/authorized_keys' < ~/.ssh/id_ed25519.pub && ssh -p "$PORT" "$TARGET" 'echo ">>> Root доступ подтверждён"'

CouchDB, Debian, AstraLinux, Docker и все-все-все

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

FROM debian:bookworm-slim

Простая замена базового образа на

FROM debian:trixie-slim

приводит к тому, что контейнер не собирается по зависимостям.
Смотрим официальную репу в части зависимостей и видим прекрасное — libmozjs-78-0 (>= 78.15.0). Пробуем ставить свежую версию, которая есть в репах — не помогает, пакет couchdb принципиально требует libmozjs-78-0.

Ок, скрещиваем ежа и ужа.

У debian есть механизм apt-pinning. Это механизм, позволяющий задать приоритеты для версий пакетов из разных источников (репозиториев, release-веток, PPA), чтобы фиксировать версию, запрещать обновление или предпочитать конкретный источник.

Коротко приоритеты делятся на:

  • < 0 — никогда не устанавливать.
  • 1..99 — ставить только при явном указании версии.
  • 100 — приоритет уже установленной версии.
  • 500 — дефолт для неприоритетных источников.
  • 990 — приоритет для целевого релиза (-t), либо если явно указан release.
  • >1000 — разрешает понижение версии (downgrade) к закреплённой.

Добавляет в наш Dockerfile:

RUN echo "deb http://deb.debian.org/debian bookworm main" > /etc/apt/sources.list.d/bookworm.list && \
    echo "Package: *\nPin: release n=bookworm\nPin-Priority: 500" > /etc/apt/preferences.d/bookworm && \
    echo "Package: *\nPin: release n=trixie\nPin-Priority: 600" > /etc/apt/preferences.d/trixie && \
    echo "deb [signed-by=/usr/share/keyrings/couchdb-archive-keyring.gpg] https://apache.jfrog.io/artifactory/couchdb-deb/ bookworm main" \
            > /etc/apt/sources.list.d/couchdb.list && \
    apt-get update

Основная часть пакетов ставится из свежей репы, часть, которых в ней нет — из старых.

Curl over ssh-tls-tunnel

Есть ресурс resource.name, на который нужно ходить curl-ом с засылкой данных через JSON. Специфика ресурса такова, что он принимает соединения через TLS 1.3.
Есть сервер A server.name, на котором нет выхода на нужный ресурс, но есть Nginx, и есть ssh-доступ до сервера B
Есть сервер B, на котором есть выход на нужный ресурс, но сам сервер очень старый, и TLS на нём не проходит по требования resource.name.

printf '' | openssl s_client -connect 127.0.0.1:8443 -servername resource.name -tls1_3 -brief

Костылим:
На сервере A поднимаем туннель на внутренний порт:

ssh -fN -o ExitOnForwardFailure=yes -o ServerAliveInterval=60 -o ServerAliveCountMax=3 -L 8443:resource.name:443 user@serverB

На Nginx рисуем конфиг:

server {
        listen 9090;
        server_name         server.name;

        access_log  /site/logs/nginx/port_9090.log  main;
        error_log   /site/logs/nginx/port_9090.error.log;

location / {
        proxy_pass https://127.0.0.1:8443;

        proxy_set_header Host resource.name;
        proxy_ssl_server_name on;
        proxy_ssl_name resource.name;
        proxy_ssl_protocols TLSv1.3;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
        proxy_connect_timeout 10s;
        proxy_read_timeout 60s;
        proxy_ssl_verify off;
}
}

Кидаемся тестовым запросом:

curl -v -X POST 'http://server.name:9090/resource' -H 'Content-Type: application/json' --data '{"login":"$LOGIN","password":"$PASSWORD"}'

Unzip без unzip

Есть сервер без выхода в сеть с древней ОС и мёртвыми репами. Нужно распаковать zip-архив — но утилиты нет.
Решаем вопрос python-ом:

python - <<'EOF'
import zipfile, os
archive = 'archive.zip'
target_dir = 'archive.zip'

if not os.path.exists(target_dir):
    os.makedirs(target_dir)

with zipfile.ZipFile(archive, 'r') as z:
    for name in z.namelist():
        z.extract(name, target_dir)
EOF

Multistage Docker — как пересобирать без кэша не весь Dockefile

Возникла необходимость пересобрать отдельный stage-контейнер из Dockerfile. Первый собранный контейнер — это контейнер сборки OpenSSL, который выполняется очень, очень долго. Для того, чтоб сэкономить время, во вторую часть добавляем:

# Stage 1: OpenSSL-сборка (пусть останется закешированной)
FROM debian:bookworm AS openssl-build
# ... 
# Stage 2: основная
FROM debian:bookworm-slim
# Аргумент, чтобы инвалидировать кэш
ARG CACHE_BREAKER=default
# Используем его в ENV, чтобы Docker счёл слой новым
ENV CACHE_BREAKER=${CACHE_BREAKER}

Project Hail Mary

Огненное сочетание текста Энди Вейра и Райана Гослинга. Это мы ждём.

Ведьмак 3: Дикая Охота — Трейлер к 10-летию игры

Тот самый неловкий момент, когда понимаешь, что уже прошло десять лет с того дня, когда ты просыпался посреди ночи посмотреть, насколько грустно будет идти игра на i3 толь второго, толь третьего поколения (спойлер — шла очень хорошо).

 5   8 мес   Witcher 3   youtube   трейлер
 9   8 мес   trailer   youtube   кино
Ранее Ctrl + ↓