Anna's Archive: An Update from the Team
Мы живы и продолжаем борьбу: усиливаем инфраструктуру и безопасность. С 2022 г. спасли десятки миллионов книг, статей, газет — теперь они защищены от катастроф через торрент-сеть.
Провели крупнейшие скрапы: IA CDL, HathiTrust, DuXiu и др. Опубликовали рекордные метаданные WorldCat и Google Books, чтобы найти и приоритизировать редкие издания.
Партнёрства: два форка LibGen, STC/Nexus, Z-Library — добавили ещё десятки миллионов файлов и зеркалируют наши данные. Один форк LibGen исчез; подробностей нет.
Появился WeLib: зеркалируют нашу коллекцию и форк кода, но не делятся новыми материалами и улучшениями. Не рекомендуем пользоваться.
На серверах сотни терабайт новых коллекций ждут обработки. Нужны волонтёры и пожертвования — бюджет минимален.
Держитесь.
— Anna и команда
Комментарии (38)
- Пользователи выражают поддержку Anna’s Archive, называя сайт «одним из последних хороших мест в интернете» и «возможно, величайшим сайтом».
- Команда Anna’s Archive опубликовала пост, что «жива и бьётся», несмотря на участившиеся атаки, и усиливает безопасность.
- Некоторые удивлены, что ресурс всё ещё работает, вспоминая аресты, связанные с Z-Library, и блокировку в Бельгии через Cloudflare.
- Обсуждают необходимость переработки интернета против DDoS, слежки и скрапинга ИИ, но признают компромиссы: дорогие PoW-схемы, сложные P2P-сети и замедленный Tor.
- Пользователи жалуются, что Libgen больше не работает, и надеются на сохранение Anna’s Archive как источника технической литературы.
Who Invented Backpropagation?
Кто изобрел обратное распространение ошибки (backpropagation)
Современный backpropagation (BP) впервые опубликовал в 1970 г. финский магистрант Сеппо Линнайнмаа [BP1][R7]; 2020 г. отмечали 50-летие метода. Предшественник — работа Келли 1960 г. [BPA].
BP — это обратный режим автоматического дифференцирования: стоимость вычисления градиента примерно равна стоимости прямого прохода. Линнайнмаа дал алгоритм для произвольных разреженных сетей и привёл код на FORTRAN; все современные фреймворки (TensorFlow и др.) опираются на его метод.
В 1960-е уже применяли цепное правило Лейбница для градиентного спуска в многослойных системах (Келли, Брайсон, Дрейфус и др.), но без учёта эффективности для разреженных сетей.
Первое применение BP к обучению весов нейросетей — Дрейфус 1973 г.; первое NN-специфическое описание — Вербос 1982 г. [BP2] (в диссертации 1974 г. его ещё нет).
Уже в 1967 г. Амари с учеником Сайто обучал пятислойный перцептрон SGD, получая внутренние представления; это было глубокое обучение задолго до 1980-х. Параллельно Ивахненко строил глубокие сети GMDH (с 1965 г.).
К 1985 г. вычисления подешевели в 1000 раз; Румелхарт и др. показали, что BP формирует полезные скрытые представления.
Комментарии (34)
- Сторонники Schmidhubera считают, что Нобелевка и Тьюринг не заслужены; остальные напоминают, что награды выносились научным сообществом.
- История backprop многократно «изобреталась» и «забывалась»; корни уходят в оптимальное управление 1960-х (Kelley, Kalman).
- Участники спорят, заслуга ли это «просто цепного правила» или именно эффективная реализация для больших сетей.
- Некоторые проводят аналогии с PID-регуляторами, якобианами в механике и адаптивной фильтрацией.
- Сам Hinton в обсуждении почти не упоминается, что вызывает обвинения в «детской обиде».
The Road That Killed Legend Jenkins Was Working as Designed
27 мая 2025 года в Гастонии, Северная Каролина, семилетний Legend Jenkins с братом шёл к магазину Food Lion и Subway. Отец разрешил, лишь держа их на связи. На обратном пути Legend вышел на West Hudson Boulevard — высокоскоростную магистраль с узкими тротуарами и без безопасных переходов — и был сбит внедорожником. Отец слушал, как это происходит.
Через два дня родителям предъявили обвинение в непредумышленном убийстве, залог — по 1,5 млн долларов каждому, шестерых других детей забрали у них.
Место не предназначено для пешеходов: даже взрослый рискует жизнью. Смерть Legend — не случайность, а статистически неизбежный результат проекта, где человек вне машины — помеха. Планировщики, инженеры, застройщики, чиновники не хотели смерти ребёнка, но создали условия, в которых она неизбежна. Ответственность размыта, поэтому система нашла виноватых — родителей.
Комментарии (56)
- Американские города строятся исключительно под скорость автомобилей, а безопасность пешеходов игнорируется.
- Подземные переходы и пешеходные мосты исчезли из-за высоких расходов на строительство и обслуживание.
- Гибель семилетнего ребёнка — предсказуемый результат системы, где пять полос скоростного движения проходят рядом с жилыми комплексами.
- Обвинение родителей в непредумышленном убийстве вызывает споры: многие считают, что виновата инфраструктура, а не люди.
- Участники сходятся во мнении: нужно заставить власти нести гражданскую ответственность за опасные дороги и проектировать улицы, безопасные для всех.
Комментарии (18)
- Участники обсуждают, кто виноват: пользователи, которые подключают Otter AI без предупреждения, или сам сервис, который не делает запись очевидной.
- Поднимается вопрос, что AI-инструменты теперь могут выгружать чувствительные данные из приватных репозиториев и конференций без явного ведома всех сторон.
- Некоторые считают это «ошибкой пользователя», другие указывают на отсутствие встроенных предупреждений, как в других приложениях для записи.
- Появляются примеры, когда запись продолжалась после ухода участника, и конфиденциальная информация попадала в рассылку всем, включая того, кто уже вышел.
FFmpeg Assembly Language Lessons
FFmpeg/asm-lessons — репозиторий с уроками по ассемблеру для FFmpeg.
Цель: научиться писать высокопроизводительные рутины на x86-64, ARM и других архитектурах, ориентированные на мультимедиа-задачи.
Содержание (кратко):
- Уроки: от базовых инструкций до векторных расширений (SSE/AVX, NEON).
- Примеры: реализация IDCT, фильтров, цветового преобразования.
- Тесты: юнит-тесты и бенчмарки для сравнения C vs asm.
- CI: автоматическая проверка на x86-64 и ARM через GitHub Actions.
Как начать:
- Клонируйте репо.
- Установите
nasm
,yasm
илиllvm-mingw
. - Соберите пример:
make lesson01
.
Полезные ссылки:
Комментарии (38)
- Участники восхищаются масштабом FFmpeg и экономией вычислений даже от мелких улучшений.
- Некоторые ждали более глубоких «жемчужин» из опыта проекта, а не вводный курс по ассемблеру.
- Предлагают добавить математику и примеры запуска (NASM) прямо в репозиторий.
- Обсуждают, как находят узкие места: vtune/ufprof для x86, но для ARM инструментов мало.
- Сомневаются в целесообразности писать LLVM IR вручную вместо архитектурно-специфичного кода.
- Портативность решается отдельной рукописной сборкой под каждую архитектуру + C-заглушка.
Texas law gives grid operator power to disconnect data centers during crisis
- Суть: закон SB 6, подписанный губернатором Техаса, обязывает крупные потребители (ЦОД ≥ 75 МВт) снижать нагрузку при аварийных отключениях ERCOT.
- Добровольная программа: те же объекты могут участвовать в demand response, получая компенсацию за переход на резервное питание.
- Дополнительно: новые правила присоединения, плата за техобследование, прозрачность расходов и возможность колокации с генерирующими мощностями.
Комментарии (85)
- Участники считают, что центры обработки данных (ЦОД) должны выдерживать отключения: у них есть дизель-генераторы, контракты на топливо и практика ежеквартальных нагрузочных тестов.
- Спорят, насколько допустимо принудительно ограничивать крупных потребителей: одни видят в этом справедливое распределение ресурсов «люди в первую очередь», другие опасаются политического давления и произвола.
- Критикуют текущий «свободный» рынок электроэнергии в Техасе: он не учитывает долгосрочную надёжность и выталкивает инвесторов, готовых платить за резерв.
- Упоминают, что биткойн-майнинг может быстро отключаться и тем самым «балансировать» сеть, но многие считают такую «помощь» избыточным созданием спроса.
- Поднимают вопросы логистики: при массовых авариях может не хватить дизеля и времени доставки, а EPA ограничивает часы работы генераторов.
- Резюмируют: если сервис действительно критичен, заказчик сам должен требовать SLA с дублированием и отказоустойчивостью, а не полагаться на исключения из правил.
Vibe coding tips and tricks
Основы
- Определите цель: чётко сформулируйте задачу перед генерацией кода.
- Начинайте с README: описание проекта помогает ИИ и команде.
- Используйте шаблоны: готовые структуры (FastAPI, React) экономят время.
Промпты
- Контекст: указывайте язык, фреймворк, стиль (PEP8, camelCase).
- Мелкие задачи: дробите фичи на куски по 50–100 строк.
- Примеры: прикладывайте JSON-ответы или SQL-запросы.
- Итерации: улучшайте код по одному аспекту за раз.
Рабочий процесс
- Сессии: 30-минутные циклы «запрос-ревью-запуск».
- Git-коммиты после каждого шага для отката.
- Линтеры/тесты сразу:
pytest
,eslint
,mypy
. - Code Review: проверяйте всё, даже «очевидное».
Инструменты
- Copilot Chat в IDE для быстрых правок.
- Cursor / Windsurf для многофайлового рефакторинга.
- Playwright для e2e-спек, сгенерированных из текста.
- Docker для воспроизводимого окружения.
Качество
- Типы: добавляйте аннотации (
TypedDict
, Pydantic). - Док-строки: пишите для всех публичных функций.
- Тесты: покрывайте критические пути ≥80 %.
- Логи: структурированные (
structlog
) для отладки.
Безопасность
- Секреты: проверяйте
.env
иgit history
. - OWASP Top 10: сканируйте зависимости (
pip-audit
,npm audit
). - RBAC: реализуйте роли и разрешения сразу.
Производительность
- Профилирование:
cProfile
,py-spy
для горячих точек. - Кеш: Redis для частых запросов.
- CDN для статики фронтенда.
Деплой
- CI/CD: GitHub Actions → Docker → ECS/Fargate.
- Feature flags для постепенного релиза.
- Мониторинг: CloudWatch + Grafana.
Советы
- Не доверяйте 100 %: всегда читайте сгенерированный код.
- Учитесь у ИИ: спрашивайте «почему так» для роста навыков.
Комментарии (57)
- «Vibe-coding» превратился из мема в маркетинговый термин, но участники спорят о его определении: одни считают, что это «просто пиши спеки и не смотри код», другие — что это «полное доверие ИИ без ревью».
- Многие подчеркивают: если ты проверяешь каждую строчку, это уже не vibe-coding, а обычная разработка с ИИ-помощником.
- Популярный совет «тщательно изучай сгенерированный код» вызывает критику как противоречие самой идее «вайб-программирования».
- Участники жалуются на устаревшую документацию, «ядро контекста» и то, что ИИ часто не следует длинным детальным спецификациям.
- Итоговое мнение: «Don’t go full vibe coder» — лучше использовать ИИ как парного программиста, но оставаться критическим ревьюером.
When you're asking AI chatbots for answers, they're data-mining you
- Security: киберпреступность, патчи, исследования, CSO
- Off-Prem: edge + IoT, канал, PaaS/IaaS, SaaS
- On-Prem: системы, хранение, сети, HPC, персональные технологии, CxO, госсектор
- Software: ИИ + ML, приложения, БД, DevOps, ОС, виртуализация
- Offbeat: дебаты, колонки, наука, юмор, юр. новости, блоги
- Спецпроекты: месяц облачной инфраструктуры, сети ЦОД, хранение, европейские суперкомпьютеры, ИИ-инфраструктура, RSAC, разработка ИИ, аварийное восстановление, GTC Nvidia, ransomware, будущее ЦОД, кибербезопасность, VMware Explore
- Vendor Voice: Siemens + AWS, Mendix + AWS, финансовые потоки, BigQuery, AWS Global Partner Security, GE Vernova
- Ресурсы: whitepapers, вебинары, рассылки
Комментарии (53)
- Все, что вы отправляете в онлайн-сервисы (AI, почта, соцсети), сохраняется навсегда и может быть использовано против вас.
- Большинству пользователей всё равно: удобство «бесплатных» сервисов перевешивает риски.
- Есть альтернатива — локальные модели (Ollama, LM Studio, Oobabooga), но они требуют мощного железа и навыков.
- Даже если вы не пользуетесь сервисом, друзья могут передать ваши данные через чат-ботов.
- Пока не появится жёсткое регулирование, единственный надёжный способ — не делиться чувствительной информацией и минимизировать использование облачных AI.
Комментарии (65)
- Поддержали идею RRT: не использовать LLM в критичных местах, ограничивать права и отслеживать вход/выход.
- Спорят, виноваты ли LLM в росте уязвимостей или это та же человеческая невнимательность, только ускоренная большим объёмом кода.
- Локальные модели и строгие code-review рассматриваются как частичное решение, но не панацея.
- Ключевой риск — давление «делай быстрее» приводит к меньшему тестированию и усталости ревьюеров.
- Сравнение с автопилотами: LLM-генерация кода может стать безопаснее среднего разработчика, но пока не лучше экспертов.
Website is served from nine Neovim buffers on my old ThinkPad
Кратко: плагин nvim-web-server
на чистом Lua отдаёт HTTP-запросы прямо из открытых буферов Neovim, без внешних зависимостей, с нативной поддержкой Djot и быстрее Nginx.
Почему так быстро?
- Однозадачность: только статика.
- libuv + асинхронный I/O Neovim.
- LuaJIT: NaN-тегинг, отсутствие boxing чисел, allocation sinking.
- aiohttp тормозит из-за парсера на чистом Python и boxing в CPython.
Бенчмарк, RPS (среднее):
сервер | 1 | 50 | 100 | 200 | 400 |
---|---|---|---|---|---|
nvim-web-server | 3981 | 15284 | 15124 | 14476 | 14446 |
Nginx | 4451 | 11306 | 11576 | 10011 | 10461 |
aiohttp | 6391 | 8477 | 8448 | 7696 | 7132 |
Развёртывание: живёт на старом ThinkPad, 9 буферов — весь сайт.
Безопасность: да, но мелочи мы игнорируем.
Комментарии (17)
- Пользователи в восторге от статьи: называют её «одной из любимейших» и приводят цитату «они были так заняты тем, могут ли, что не спросили себя, стоит ли».
- Кто-то отмечает, что сайт резолвится на IP Linode, но не объясняется, зачем нужен промежуточный сервер.
- Обсуждают безопасность: пример показывает, что «никогда не бывает так, чтобы код точно не запустили по сети».
- Некоторые шутят, что Neovim теперь можно считать кроссплатформенным рантаймом «ужаса», но признают крутость эксперимента.
- Предполагают, что высокая скорость может быть из-за хранения файлов в RAM, а не на диске, и что всё равно всё закешируется.
MCP doesn't need tools, it needs code
CLI-инструменты часто зависят от платформы/версии, плохо документированы и ломаются при не-ASCII вводе. Агенты путаются в управлении состоянием (например, tmux-сессиями) и теряют контекст после мелкой ошибки. Каждый вызов ещё тормозит из-за предварительной проверки безопасности.
Композиция в CLI работает через bash: цепочки tmux send-keys
, sleep
, base64
и т.д. MCP сегодня так не умеет.
Выход — MCP-сервер с одним «убер-инструментом»: Python-интерпретатор, сохраняющий состояние между вызовами. Пример — pexpect-mcp
: виртуальное окружение + pexpect
, позволяющее скриптами управлять интерактивными CLI-программами. Вместо 30 отдельных MCP-функций достаточно одной, принимающей код.
Комментарии (102)
- Участники спорят, нужен ли MCP: кто-то считает его лишним слоем, другие — полезным способом дать LLM доступ к инструментам.
- Критикуют ограниченность MCP («30 команд Playwright») и то, что он не решает проблему безопасности, а лишь описывает API.
- Предлагают альтернативы: прямое обращение к HTTP/CLI, запуск кода в песочнице, использование LSP-интерфейса вместо строковых grep/sed.
- Отмечают, что LLM обучены работать со строками и bash, а не с AST или MCP, поэтому «старые» инструменты пока эффективнее.
- Главные боли: отсутствие дискавери, раздутый контекст, ошибки при большом числе инструментов, непонятные аббревиатуры для новичков.
Electromechanical reshaping, an alternative to laser eye surgery
Безлазерная альтернатива LASIK: имплантация линзы EVO/ICL
- Что это: вместо выпаривания роговицы лазером в глаз вводится тонкая факичная линза EVO/ICL, которая работает вместе с собственной хрусталиком пациента.
- Преимущества:
– подходит при тонкой роговице и высокой близорукости;
– сохраняется возможность «отката» (линзу можно извлечь);
– быстрая реабилитация (чёткое зрение уже на следующий день). - Риски: повышенное внутриглазное давление, катаракта, световые ореолы; требуется регулярное наблюдение.
- Стоимость: 2500–4000 $ за глаз, страховки не покрывают.
- Кому не подходит: при астигматизме > 6 дптр, глаукоме, возраст < 21 года.
Комментарии (79)
- Участники обсуждают новую «молекулярную хирургию» для коррекции зрения как альтернативу LASIK/PRK/SMILE.
- Основные плюсы: нет разрезов, нет лазера, потенциально обратимо, подходит при тонкой роговице и кератоконусе.
- Минусы: пока только исследования, финансирование заморожено, неясно, поможет ли при астигматизме и ночных ореолах.
- Некоторые делятся негативным опытом LASIK/PRK: отслойка сетчатки, катаракта, сухость, ореолы.
- Есть любопытство, подойдёт ли метод для ринопластики и другой хрящевой терапии.
Web apps in a single, portable, self-updating, vanilla HTML file 🔥 Горячее 💬 Длинная дискуссия
Hyperclay — однофайловые HTML-приложения
Работайте как с глиной: открыли файл, изменили — изменения сохранились. Без сборки, деплоя и фреймворков.
- Прямое редактирование в браузере: меняете DOM — файл перезаписывает себя через
/save
. - Полная переносимость: скачали HTML — запустили где угодно, офлайн.
- Версии: каждое сохранение фиксируется, откат в один клик.
Примеры: dev-log, writer, kanban, landing.
Почему это важно
Статические сайты удобны, но изменения исчезают после перезагрузки. Чтобы сделать цифровой объект «физическим» — нужен сервер, БД, API, аккаунты. Hyperclay убирает всё лишнее: UI, логика и данные — в одном самомодифицирующемся HTML-документе.
Комментарии (178)
- Hyperclay — это NodeJS-сервер + клиентская библиотека, которая позволяет странице «сохранять себя», перезаписывая свой .html-файл после любых изменений DOM.
- Пользователи спорят: нужен ли сервер вообще, безопасно ли это, как быть с версионированием и синхронизацией между устройствами.
- Напоминает TiddlyWiki, HTA-файлы Windows 98 и другие однофайловые подходы, но делает акцент на многопользовательской работе и бекенде.
- Некоторые приводят свои решения: встраивание JSON-стейта в первые строки HTML, генерация «сохранений» через
outerHTML
, использование Git или IPFS. - Главные вопросы: закрытость кода, отсутствие цен, CORS при открытии из
file://
, поддержка iOS и безопасность при редактировании.
SystemD Service Hardening
systemd-харднинг: кратко и по делу
sudo systemd-analyze security
показывает «красную» таблицу рисков.
sudo systemd-analyze security имя.service
— детально по конкретному юниту.
Колонка Exposure — главный ориентир: чем выше значение, тем больше прав можно отнять.
Как править
sudo systemctl edit имя.service
создаст override-файл.- Параметры пишутся в секции
[Service]
(или[Container]
для quadlet). - Сервис не стартует — значит убрал нужное, возвращай.
Часто используемые директивы
Директива | Что делает |
---|---|
NoNewPrivileges=true |
запрет setuid/setgid |
PrivateTmp=true |
изолированный /tmp |
ProtectSystem=strict |
корень только read-only |
ProtectHome=true |
/home , /root недоступны |
ReadWritePaths=/var/lib/app |
белый список для записи |
CapabilityBoundingSet=CAP_NET_BIND_SERVICE |
только нужные capability |
SystemCallFilter=@system-service |
разрешённый набор сисколлов |
RestrictAddressFamilies=AF_INET AF_INET6 |
только нужные семейства сокетов |
MemoryDenyWriteExecute=true |
блок W^X |
LockPersonality=true |
запрет смены personality() |
RestrictRealtime=true |
нельзя захватывать realtime-приоритеты |
UMask=0077 |
файлы создаются 600 |
RemoveIPC=true |
чистит SysV IPC при выходе |
Пример override
[Service]
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=strict
ProtectHome=true
ReadWritePaths=/var/lib/myapp
CapabilityBoundingSet=CAP_NET_BIND_SERVICE
SystemCallFilter=@system-service
RestrictAddressFamilies=AF_INET AF_INET6
MemoryDenyWriteExecute=true
LockPersonality=true
RestrictRealtime=true
UMask=0077
RemoveIPC=true
Проверь: sudo systemctl daemon-reload && sudo systemctl restart имя.service
.
Это не серебряная пуля; подгоняй под каждый сервис и смотри логи.
Комментарии (74)
- Инструмент shh автоматически ужесточает systemd-сервисы, опираясь на профиль strace.
- Участники хвалят статью за конкретные советы и напоминают, что
systemd-analyze security
работает и для пользовательских юнитов. - Почему дистрибутивы не включают жёсткие настройки по умолчанию: боятся сломать нестандартные сценарии (IPv6, ModemManager и др.).
- Предложено завести репозиторий с готовыми «жёсткими» unit-файлами для популярных сервисов.
- Отдельно отмечены механизм credential-management и спор о правильном написании «systemd» (не SystemD).
Google admits anti-competitive conduct involving Google Search in Australia 🔥 Горячее 💬 Длинная дискуссия
Google признал антиконкурентное поведение в Австралии:
- компания согласилась, что ограничивала выбор поисковой системы на Android-устройствах;
- подписала обязательство перед ACCC изменить практику и уведомлять пользователей о доступных альтернативах Google Search;
- обязательство действует 5 лет и подлежит судебному контролю;
- ACCC считает признание важным шагом к восстановлению конкуренции.
Комментарии (165)
- Google заплатила Telstra, Optus и TPG, чтобы быть единственным предустановленным поиском на Android-смартфонах в Австралии с декабря 2019 по март 2021.
- Участники сделки получили долю от рекламной выручки Google; регулятор назвал это антиконкурентным и оштрафовал Google на 55 млн AUD.
- Комментаторы считают штраф «карманными деньгами» и требуют наказывать процентом от глобального дохода или привлекать к уголовной ответственности.
- Многие отмечают, что Telstra, Optus и TPG тоже должны быть оштрафованы как сознательные участники схемы.
- Некоторые пользователи уже перешли на DuckDuckGo, Kagi и другие поисковики, но большинство остаётся «запертым» в экосистеме Google.
Non-Uniform Memory Access (NUMA) is reshaping microservice placement
Codemia
Подготовка к систем-дизайн-интервью через практику:
Начать | Блог | Системный дизайн
Юридика
Условия | Конфиденциальность | Контакт
Комментарии (24)
- Обсуждение подтверждает: для HPC, высоконагруженных и чувствительных к задержкам систем NUMA-распределение критично, и ручное pinning процессов/потоков к нужным узлам остаётся основным способом добиться стабильной производительности.
- В публичных облаках (AWS, GCP) NUMA-топология скрыта, VM часто выглядят как однонодовые UMA; полезны
lscpu
,lstopo
,cpu-latency
, но настроек управления NUMA почти нет. - Сообщество делится инструментами:
mpibind
,sched_ext
, DAMON, fake NUMA, идеями эмуляции NUMA даже на Raspberry Pi 5. - Kubernetes уже умеет NUMA-affinity, но вручную выбирать 64-ядерный инстанс вместо 96-ядерного (чтобы не пересекать сокеты) всё равно приходится самим.
- Крайняя альтернатива — односокетные серверы с NPS=1: «равномерно медленно», но без головной боли.
Mangle – a language for deductive database programming
Mangle — проект Google на GitHub.
Язык: Go.
Лицензия: Apache-2.0.
Описание
Mangle — это компилятор/интерпретатор логического языка, ориентированного на:
- анализ и трансформацию графов;
- декларативные запросы к данным;
- поддержку Datalog-подобного синтаксиса.
Ключевые особенности
- Компилирует логические правила в Go-код или исполняет напрямую.
- Поддерживает рекурсивные запросы и агрегации.
- Работает с in-memory и persistent-хранилищами.
Установка
go install github.com/google/mangle/cmd/mangle@latest
Быстрый старт
- Создай файл
example.mgl
:edge("a", "b"). edge("b", "c"). path(X, Y) :- edge(X, Y). path(X, Z) :- edge(X, Y), path(Y, Z).
- Запусти:
mangle example.mgl --query="path(\"a\", Z)"
Документация
Комментарии (14)
- Участники спорят, связан ли новый язык Google с «Deductive Database» из видео 3b1b: одни считают, что это очередной внутренний эксперимент, другие — просто «люди, которые веселятся под крылом Google».
- Поднимается вопрос, почему почти все инструменты расширяют «ванильный» Datalog: его ограничения делают расширения неизбежными.
- В треде упоминаются альтернативные языки запросов — PreQL/Trilogy, Malloy, PRQL, PathQuery — и обсуждается, как они соотносятся с SQL и реляционной алгеброй.
Clojure Async Flow Guide
Быстрый старт
Библиотека flow отделяет бизнес-логику от развёртывания: топологии, исполнения, обмена сообщениями, жизненного цикла, мониторинга и обработки ошибок.
step-fn и процессы
Логика описывается функциями step-fn, которые flow заворачивает в процессы, крутящиеся в цикле. step-fn не работают с каналами напрямую и не хранят состояние, поэтому легко тестируются и переиспользуются.
step-fn имеет четыре арности:
describe (step-fn) → descriptor
Возвращает статическое описание :params
, :ins
, :outs
— карты имя → документация. Имена входов и выходов не должны пересекаться.
{:params {:size "Максимальный размер"}
:ins {:in "Входной канал"}
:outs {:out "Выходной канал"}}
init (step-fn arg-map) → init-state
Один раз вызывается при старте процесса; превращает параметры из flow-def в начальное состояние.
transition (step-fn state transition) → state'
Вызывается при переходах жизненного цикла (::flow/start
, ::flow/stop
, ::flow/pause
, ::flow/resume
). Используется для управления внешними ресурсами.
transform (step-fn state input msg) → [state' {out-id [msgs]}]
Вызывается для каждого входящего сообщения. Возвращает новое состояние и карту выходных сообщений. Выход может быть пустым, но каждое сообщение — не nil
. Исключения логируются в :error-chan
.
Состояние процесса
Карта с любыми ключами. Дополнительно:
::flow/pid
— идентификатор процесса::flow/in-ports
,::flow/out-ports
— карты cid → внешний канал (создаётся вinit
)::flow/input-filter
— предикат cid для фильтрации входных каналов
Хелперы
lift*->step
— изf(x) → coll
делает step-fn с одним входом и выходомlift1->step
— то же, ноf(x) → single-value
map->step
— из карты с ключами:describe
,:init
,:transition
,:transform
строит step-fn
Запуск процесса
Функция process
принимает step-fn и опции:
::workload
—:mixed
,:io
,:compute
:compute-timeout-ms
— таймаут для:compute
(по умолчанию 5000 мс)
Комментарии (74)
- Участники обсуждают, жив ли Clojure: сообщество стабильно, но менее хайповое; NuBank расширяет core-команду и нанимает Developer Advocate.
- core.async.flow предлагает декларативный, фиксированный граф каналов для «структурированной конкурентности»; ошибки и паузы можно отслеживать, но изменять топологию на лету пока нельзя.
- Сравнивают с GenStage (Elixir), Manifold, Trio и missionary/electric; можно использовать как OS-, так и green-потоки.
- JVM-тулчейн вызывает у новичков страх, но Leiningen/deps.edn упрощают работу, а отладка всё же возможна.
- Clojure-окосистема активно развивается: Babashka, XTDB, Dyna3 и другие проекты; язык недавно получил мажорный релиз и готовится к виртуальным потокам JVM.