А ещё развернулась, кстати, уже недельная ожесточённая драма вокруг AO3 learning, и это хилариус.Кто не в курсе - ао3 - это аналог фикбука, тока англоязычный. И вот значит некие энтузиасты сделали бесплатное! приложение без рекламы!, которое использует обычный! браузерный переводчик, чтобы можно было прямо в процессе тыкать на незнакомые слова в тексте, и они бы тебе переводились.Так вот господа борцы за права решили.... что это кража 😐Что приложение крадёт фанфики,браузерный встроенный переводчик, напоминаю😭 на сайте, в котором можно скачать текст! ещё и переводит без согласия автора! а злые изучатели английского настоящие воры, разумеется. и это осуждают те же самые люди, которые в любой игре пишут englsh plz и ничё не щёлкает. А ещё они призывают жаловаться на руаккаунты, защищающие AO3 learning... в роскомнадзор!! а они точно понимают, что твиттер у нас типа офишали заблокирован? Ну, конечно, известный факт - люди из стран, где нет запретов и санкций, и где в целом всё удобно, вообще редко подкованы в темах компьютерной безопасности, и для них слова браузер и расширение - это что-то из тёмной шумерской магии. Наверное, всё-таки изучение языков и правда влияет на интеллект как же я люблю вавилонский твиттер и мировые срачи 💅 мейкс ми фил элайв
Программирование — страница 2
Лента темы
https://www.re-gent.dev/а вот еще нашел на тему трекинга. git показывает, какие файлы поменялись.re_gent показывает, из какого промпта и какой сессии появились эти изменения. Работает поверх клодовского PostToolUse, хз за остальные харнесы
коротко: vibe-кодинг и г-но-кодинг имеют множественные пересечения, но звучит первое куда приятней и опрятней :) - так что у прогресса всегда есть и плюсы :).
4 плагина, которые превратят твой Obsidian в ИИ-второй мозгClaudian сам по себе меняет всё. Остальные три делают картину полной.Claudian → встраивает Claude Code прямо в твоё хранилище. Общайся с Claude прямо поверх своих файлов, не покидая Obsidian. Создавай презентации, анализируй документы, проводи мозговые штурмы — там, где живёт всё твоё знание.https://github.com/YishenTu/claudianShow Hidden Files → делает скрытые папки, например .claude, видимыми внутри хранилища. Именно там хранятся твои установленные навыки.https://github.com/polyipseity/obsidian-show-hidden-filesVS Code Editor → позволяет открывать и редактировать файлы с кодом как обычный текст, не запуская их. В настройках я включил следующие расширения: ts, js, py, css, c, cpp, go, rs, java, lua, php, cshttps://github.com/sunxvming/obsidian-vscode-editorGit → синхронизирует хранилище с облаком. А ещё — страховочная сетка на случай, если Claude сделает что-то неожиданное.https://github.com/Vinzent03/obsidian-gitПервые два плагина отсутствуют в официальном магазине. Укажи Claude Code в десктопном приложении на эти ссылки — и он установит их сам.
Я привыкла читать и отвечать очень быстро. Но тут есть проблема. Я печатаю и печатаю правильно, потом не перечитываю и нажимаю 'отправить' — а жуткая автозамена автозаменяет некоторые слова на слова с ошибками. Вопрос. Это какой-то баг клавиатуры или тг? На ком обучалась вообще такая автозамена? Ведь идея автозамена исправлять ошибки, а не наоборот! Я филолог с красным дипломом и мне стыдно, когда потом перечитываю и вижу ошибки 😭
Пока все заняты дронами, мелкое капание на мозги СведуСлушайте, а что у вас там за проблемы постоянные с мгновенными платежами? Каждый раз какие-то отлупы приходят — по 5 раз приходится пробовать заново! Лучше бы заняли качеством своих услуг, а не удалением русского языка из интерфейсов!@degikarayev
Покусюсь на святое!В апреле вышли Fedora 44 и Ubuntu 26.04, с разницей в 5 дней. Концептуально это совершенно разные ОС.Ubuntu (которую я всегда выбирал для корпоративных проектов, последнее время только немного пересел на Arch "ради лулзов" :) -- это по сути "apple": удобно, но закрыто (серверная часть Snap Store закрыта от зеркалирования, телеметрия, привязка к вендору...)..Fedora же -- это полная открытость.GNOME 50 (Wayland-only, X11 удалён), KDE Plasma 6.6, GCC 16.1, Python 3.14, Go 1.26, Rust 1.85, OpenJDK 25, DNF5 (на C++),NTSYNC (ускорение Wine/Steam), Whisper, и при этом ноль телеметрии по дефолту.Скачиваешь весь архив (всего-то терабайт:), подписываешь своими ключами.Минусы: NVIDIA всё ещё через RPM Fusion. Остаются известные баги установщика (с нелатинскими клавиатурами...). Зависимость от Red Hat / IBM: после сокращения команды QA Red Hat два бага (реально наверняка больше) попали в релиз.И далее вероятно урезание суппорта десктопа RHEL, сжатие жизненного цикла, приоритет AI-фич от IBM...=Бери Ubuntu 26.04 если нужна сертификация железа, LTS 5-12 лет и более гладкий опыт с NVIDIA.Бери Fedora 44 если важна возможность пересобрать систему из исходников и отсутствие vendor lock-in, а также философия Linux (а не потому, что это очередной Apple).
🤑 Вайбкодинг здорового человека, не курильщика.ИИ открывает окно возможностей (особенно, если насмотрелся инфоциган) и первое, что делает начинающий вайбкодер - бежит делать клон какого-то продукта, чтобы заработать хулиард денег, а еще хуже, если начинает играть в новатора и придумывать крутой, но никому не нужный продукт, а лучше не один, а сразу несколько, ну чтобы реализовать все свои гениальные идеи!Трещина на розовых очках появляется когда его Франкенштейн с тысячами строк кода, кучей интеграций, десятком технологий в стеке отказывается работать, как было задумано! Модель, тариф и количество токенов не спасут т.к. дело не в этом!Сначала кодинг, потом вайб! Дабы сделать что-то большое и стабильно работающее, нужно на базовом уровне разбираться в разработке - синтаксис, архитектура и т.д. Только при таком комбо будет ожидаемый результат.Но есть и хорошие новости! ИИ реально может вас апгрейдить, если вы будете использовать его локально в задачах автоматизации... Не пилить второй ahrefs, а сделать скрипт для обработки выгрузки из ahrefs. Не пилить тысячный таск трекер, а сделать скрипт, который из выгрузки закрытых задач генерирует отчет для клиента и т.д.Такими мелкими ИИ рычагами вы можете существенно оптимизировать время на выполнение рутинных задач. Больше задач за один и тот же промежуток времени = профит.Это как использовать электрическую газонокосилку вместо ручной косы, оказывая услуги по стрижке газонов!Всем профита и хорошего дня 🤘👉 SeoPraktika | Кравцов Виталий
Про AI-ускорение рутины разработчиков, которого... НЕТ! ч.5: свежие рандомизированные контролируемые исследования (РКИ) и не только.Покопался в актуальных исследованиях, отделил всякие опросы и ангажированные репорты от РКИ, выбрал только актуальные, за полгода-год. Вот, что получается:1️⃣ Самая известная работа METR (пост), которая показала прирост +20% по ощущениям и -20% по факту, получила странную попытку репликации (фев'26) от тех же авторов: взяли больше разрабов (57), понизили ставку ($50/час), получили +18% AI-ускорения для 10 участников из прошлой работы и +4% для 47 новых. Но до половины разработчиков отказались от неAI задач (??!!) и организаторы посчитали результаты ненадежными.Непонятно, почему самая известная работа по теме так и не получила нормального продолжения, с актуальными инструментами. Есть интересный разбор второго исследования на lesswrong. tldr: "ничего непонятно".2️⃣ "How AI Impacts Skill Formation" (фев'26): РКИ про обучение новой python-библиотеке - участники случайно делали задачу либо с AI-помощником, поиском и инструкциями, либо только с поиском и инструкциями. AI не дал статистически значимого ускорения по времени задачи, но результат теста на понимание упал на 17% (vs контроль без AI).Другими словами, AI помогает сделать задачу, но может мешать понять, что сделано. Особенно опасно для джунов и для ситуаций, где потом надо самому поддерживать код. Есть еще работа с такими же выводами (мар'26).3️⃣ Echoes of AI (фев'26), проверяли влияние AI на поддержку кода: разработчик добавлял фичу в Java/Spring Boot проект (с AI или без AI), другой разработчик получал решение и вручную его дорабатывал. Первые сделали задачу на 30% быстрее (и аж 56% для power AI-юзеров), а у вторых при поддержке кода был большой разброс от -45% до +33%, и в среднем весь прирост пропадал. 4️⃣ Не РКИ, но интересная работа (янв'26): американские разработчики в SAP несколько дней сдавали анкеты, записи экрана/мыши/клавиатуры, физиологические данные с браслета. В контролируемых сессиях были задачи на Java: кодинг, дебаг, документация, unit-тесты, мозговой штурм и др. Выводы кратко:• Умеренное использование AI сокращало время выполнения задач, но избыточное - мешало.• Когда разработчик начинает постоянно переключаться между кодом, подсказками, чатом и проверкой ответов, то продуктивность падает. • Лучше выглядели сценарии, где было взаимодействие с чатом. Вероятно, потому что чат лучше подходит для объяснений, проверки логики и задач, где нужно понять контекст.• AI одновременно воспринимался как повышающий и продуктивность, и когнитивную нагрузку.5️⃣ Тоже не идеальная "Speed at the Cost of Quality" (ноя'25): как влияет AI кодинг на дистанции в месяцы. tldr: главный вывод авторы вынесли в название работы - AI резко ускоряет разработку в краткосрочной перспективе, но одновременно увеличивает технический долг и сложность кода, что потом начинает тормозить проект. Добавленные строки выросли на +281% в первом месяце и +48% во 2-м, к 3-му месяцу вернулись к базовой линии. По коммитам аналогичный паттерн +55%/+14%.Рост накопленной сложности на 100% вызывает падение будущей скорости на 65%, создавая самоусиливающийся цикл технического долга.Устойчивая деградация качества: +30% предупреждений статического анализа и +41% когнитивной сложности, удерживается на горизонте наблюдения и переживает контроль на динамику скорости. То есть AI-код внутренне более сложен, а не просто более многочислен.6️⃣ На самом деле свежих качественных работ я найти больше не смог - остальное что-то странное, ангажированное или устаревшее. Очевидно, что в каких-то частях разработки AI может дать буст, особенно для коротких циклов, крошечных команд и джуниоров. Но этот буст скромный, а не 10х (как нам многие обещают). Массовых увольнений инженеров из-за этого тоже не будет. А я еще три года назад писал (раз, два, три), что AI изобретен, и наша задача - искать те редкие части своей работы, где AI реально помогает! @kyrillic
❔ Как правильно форматировать числа в JSIntl.NumberFormat помогает форматировать числа под конкретную локаль: с правильными разделителями, символами валют и единицами измерения.Вместо ручной склейки строк можно использовать встроенный API:new Intl.NumberFormat("de-DE", { style: "currency", currency: "EUR"}).format(123456789);// 123.456.789,00 €new Intl.NumberFormat("pt-PT", { style: "unit", unit: "kilometer-per-hour"}).format(50);// 50 km/hnew Intl.NumberFormat("fr-FR", { style: "unit", unit: "kilobyte", unitDisplay: "long"}).format(123456);// 123 456 kilooctets↖️ Что это даёт:— формат под локаль— корректные разделители— валюты без ручной склейки— единицы измерения из коробки📍 Навигация: [Вакансии]🐸 Библиотека фронтендера#readme #js
Создание словаря из набора ключейДля создания словаря из известного набора ключей и одинаковых значений часто используют генераторы словарей (dict comprehensions).Однако класс dict имеет удобный метод fromkeys, который был создан специально для таких случаев.📲 Мы в MAXПодписывайтесь на канал 👉@pythonofff
Слушайте, я стал меньше писать полезных вещей, потому что занят тем, что, как маленький ребенок, реализую все штуки, которые всю жизнь хотел реализовать.Например, свой трекер.Я много раз пытался пользоваться готовыми: один быстрый, второй удобный, третий красиво выглядит. Но когда нужно быстро скинуть мысль, разобрать её, привязать к проекту, не потерять контекст и потом вспомнить, что я вообще хотел сделать, всё превращалось в ручную возню.А ручная возня — это ровно то, от чего таск-трекер обычно и умирает.Поэтому я собрал свою версию: inbox-first трекер. Я пишу обычным языком, система кладёт всё во входящие, разбирает через LLM и предлагает карточки на review. Из одного куска текста могут получиться задача, заметка, напоминание или несколько объектов сразу.Сейчас уже есть Web/PWA, inbox, разбор через OpenRouter с fallback на обычный parser, задачи, заметки, напоминания, области, проекты, уведомления, browser push, Telegram-уведомления, API для внешней постановки задач и публичная ссылка, которую можно дать человеку.Дальше хочу довести то, ради чего всё это и затевалось: голосовой ввод, постановку через Телеграмм, пересланные сообщения, нормальное сжатие, исправление формулировок и автоопределение проекта, области, срочности и важности.Короче, делаю трекер для людей, которые не хотят вести трекер. Кажется, это ровно мой случай.
Прочитал в этом семестре для ВШМят про то как писать в латехе с использованием ИИ ну и вообще о всяких полезных инструментах с этим связанным. Кому интересно, объединённая презентация будет в приложении. И есть ещё папочка где есть примеры к лекциям.Что я рассказал.1. Создаём документ в LaTeX — базовая структура, формулы, окружения, нумерация.2. Окружения и нумерация — теоремы, списки, таблицы, кросс-ссылки.3. Ссылки и гипертекст — гиперссылки, QR-коды, библиография.4. Картинки и графика — TikZ, Asymptote, pgfplots, готовые пакеты.5. Библиография — как оформлять (BibLatex, ага), откуда брать (Perplexity, SemanticScholar, GoogleScholar и т.д.), зачем читать.6. Презентации в Beamer — темы, фреймы, анимация слайдов.7. Быдлокодинг с помощью ИИ на SymPy — пишем промпты, получаем код, запускаем в Colab, ловим галлюцинации.8. Sage — компьютерная алгебра для математика (спасибо Михаилу Анатольевичу, надоумил).Из-за всяких переносов и отмен лекций было 8, но для такого курса кажется вполне достаточным. Насколько оказалось полезным для студентов сказать пока сложно, впрочем скоро им предстоит сдача задания, там и поглядим. Кстати, сдача задания будет выглядеть так: они получили по брошюре (издательства МЦНМО) и должны её затехать, сделать презентацию и постер по мотивам. Ну и сделать небольшой доклад на эту тему.Надеюсь что там будет всё хорошо, и с удовольствием ещё раз расскажу об этом деле.#AI #научпоп
👋 Привет, сетевой друг! Сегодня про python3-nmap - библиотеку, которая превращает nmap в нормальный Python API.🟣Что это: обёртка над nmap, где каждая команда становится вызовом функции. Не нужно помнить флаги, парсить текстовый вывод или городить subprocess. Запустил метод - получил JSON с результатами.🟣Зачем это нужно: nmap мощный, но встраивать его в скрипты неудобно. Парсить вывод хрупко - формат может отличаться в зависимости от версии и флагов. python3-nmap убирает эту боль и возвращает структурированные данные сразу.🟣Что умеет: сканирование топ-портов, определение версий сервисов, детекция ОС, DNS-брут для поддоменов, техники сканирования (SYN, FIN, UDP, idle), обнаружение хостов через ARP. Каждая техника - отдельный метод, не нужно держать в голове синтаксис.🟣Установка простая:pip3 install python3-nmapapt-get install nmapnmap должен быть установлен на системе - библиотека вызывает его под капотом.🟣Важный момент: часть сканов требует root. Определение ОС, SYN-сканирование, сканирование подсетей, всё это нужно запускать через sudo. Без прав получишь ошибку ещё до начала сканирования.Делаем вторую часть уже о том, как использовать этот тул?Серверная Админа | Zeroday | #Инструмент
Швейцарский стол#golang"Швейцарская таблица" - это продвинутый движок для хэш-таблиц, который сейчас используется в новых версиях Go. Идея в том, чтобы отойти от примитивного линейного поиска, когда при коллизии мы просто тыкаемся в следующую ячейку, и использовать хитрую последовательность шагов, которая не дает образовываться "пробкам" из занятых слотов. Но все соль в группровке. Вместо одного ключа в ячейке мы храним сразу по 8 штук, и для каждой группы добавляем специальные контрольные байты (младшие 7 битов хэша). Это позволяет за одну операцию сравнивать с хэшем все восемь элементов через битовые трюки с uint64, а это очень быстро. На практике хоть обычный подход и шустрее на малых объемах, swiss table раскрывается при высокой заполненности: если забить ее под завязку, она тормозит в разы меньше обычнойhttps://kodikapusta.ru/news/991-shveitsarskii-stolПоддержать проект на boosty: https://boosty.to/kodikapusta
PowerToys 0.99: управление окнами, мониторами и командами по-новомуMicrosoft выпустила обновление PowerToys 0.99 с тремя ключевыми новинками. Утилита Grab And Move позволяет перемещать и менять размер окон, удерживая ALT + ЛКМ/ПКМ в любом месте — особенно удобно для больших экранов или «потерявшихся» окон.Power Display добавляет иконку в трей, откуда можно регулировать яркость, контраст и цветовые профили подключённых мониторов без физических кнопок, а также переключаться между сохранёнными профилями — даже автоматически при смене темы Windows.Палитра команд стала мощнее: теперь она показывает текст и изображения, хранит историю калькулятора, поддерживает закрепление поверх других окон и компактный режим.Также обновились ZoomIt (скриншоты с прокруткой и OCR), Диспетчер клавиатуры (ручная настройка переназначений и отключение клавиш) и интерфейс всего набора — стал современнее и легче в ресурсах.#софт @pcTeapot
ВТБ (2025)/** * Необходимо получить список пользователей, * которые состоят в группе, начинающейся на "Х" */class SomeConsumer { public List<User> consume(Stream<User> usersStream) { //TODO return usersStream. }}@Dataclass User { private String username; private Integer age; private List<Group> groups;}@Dataclass Group { private String name; private String description;}#vtbПрислать задачу | Подписаться
🍿 Что скрывает auto(x): новый синтаксис C++23В C++23 появился синтаксис auto(x) и auto{x}. Это не очередной сахар для объявления переменных. На самом деле — это именованная операция, у которой есть точная семантика. 🥳 Что происходит под капотом:auto(x) — это decay-copy: создаётся prvalue того же типа, что и x, но после применения std::decay. То есть:• Ссылки снимаются• Cv-квалификаторы (const/volatile) удаляются• Массивы → указатели• Функции → указатели на функцииconst int& r = 42;auto copy = auto(r); // int, не const int&⚡️ До C++23 для того же результата писали:auto copy = std::decay_t<decltype(r)>(r);❓ Зачем нужна явность? В простых случаях auto copy = r тоже даст int — auto и так делает decay. Но в обобщённом коде важно явно сигнализировать намерение: "я хочу копию, а не прокси или view".Главное применение — защита от UB при модификации контейнера. Классический пример — реализация pop_front:void pop_front(auto& container) { std::erase(container, auto(container.front())); // Без auto() — UB: front() может инвалидироваться // в процессе удаления элементов}Без auto() мы передаём ссылку на элемент, который erase может разрушить до сравнения. С auto() — сначала создаётся копия значения, потом происходит удаление. Безопасно и читаемо.❗️ auto(x) закрывает целый класс subtle-багов в шаблонном коде — там, где случайная ссылка вместо копии приводит к UB или неожиданному поведению.📍Навигация: Вакансии • Задачи • СобесыБиблиотека C/C++ разработчика#константная_правильность
📱 Django Ninja — быстрая альтернатива DRF для APIФреймворк для тех, кто хочет Django-экосистему, но без медлительности DRF.Pydantic-типизация, async/await, автогенерация OpenAPI и скорость в 2-3 раза выше. ORM, аутентификация и админка работают как обычно.⛓ Читать статьюtags: #статья➡ Python Developer | 📲 MAX | ИИ-Бот
Шпаргалка основных команд mysql по работе с базой данных и таблицамЗдесь в компактном виде собраны основные команды администрирование сервера MySQL посредством консоли, позволяющие получить информацию о состоянии баз данных, таблиц, просмотреть их структуру.SHOW DATABASES; — список баз данныхSHOW TABLES [FROM db_name]; — список таблиц в базеSHOW COLUMNS FROM таблица [FROM db_name]; — список столбцов в таблицеSHOW CREATE TABLE table_name; — показать структуру таблицы в формате «CREATE TABLE»DESC table_name; — узнать полную структуру таблицыSHOW INDEX FROM tbl_name; — список индексовSHOW GRANTS FOR user [FROM db_name]; — привилегии для пользователя.SHOW VARIABLES; — значения системных переменныхSHOW [FULL] PROCESSLIST; — статистика по mysqld процессамSHOW STATUS; — общая статистикаSHOW TABLE STATUS [FROM db_name]; — статистика по всем таблицам в базеUSE db_name; — использовать базу данных, для которой будут выполнятся дальнейшие запросыDELETE FROM table_name; — удалить все записи из таблицы. Сначала нужно выполнить USE db_name;SELECT * FROM table_name; — просмотр всех записей из таблицы📲 Мы в MAX👉 @sysadminof
🚀 Сегодня покажу, как быстро диагностировать «тормоза» в PostgreSQL - без всяких внешних тулов и дополнительных логов. Только pg_stat_activity и немного здравого смысла.Пользователи жалуются - "всё тормозит". Как понять, что именно? Открываем сессию в psql от суперпользователя и запускаем:SELECT pid, state, wait_event_type, wait_event, query, now() - query_start AS durationFROM pg_stat_activityWHERE state != 'idle'ORDER BY duration DESC;📌 Что это нам даёт:- Видим все активные (и зависшие) запросы.- Сколько времени они уже выполняются (duration).- На чём конкретно «висят»: CPU, IO, Lock, Client и т.д. (wait_event_type + `wait_event).Пример:wait_event_type: Lockwait_event: relation→ Сразу ясно: кто-то держит блокировку на таблицу, и все остальные ждут.🔥Чтобы найти виновника, можно запустить:SELECT blocked_locks.pid AS blocked_pid, blocking_locks.pid AS blocking_pid, blocked_activity.query AS blocked_query, blocking_activity.query AS blocking_queryFROM pg_locks blocked_locksJOIN pg_locks blocking_locks ON blocked_locks.locktype = blocking_locks.locktype AND blocked_locks.database IS NOT DISTINCT FROM blocking_locks.database AND blocked_locks.relation IS NOT DISTINCT FROM blocking_locks.relation AND blocked_locks.page IS NOT DISTINCT FROM blocking_locks.page AND blocked_locks.tuple IS NOT DISTINCT FROM blocking_locks.tuple AND blocked_locks.transactionid IS NOT DISTINCT FROM blocking_locks.transactionid AND blocked_locks.classid IS NOT DISTINCT FROM blocking_locks.classid AND blocked_locks.objid IS NOT DISTINCT FROM blocking_locks.objid AND blocked_locks.objsubid IS NOT DISTINCT FROM blocking_locks.objsubid AND blocked_locks.pid != blocking_locks.pidJOIN pg_stat_activity blocked_activity ON blocked_activity.pid = blocked_locks.pidJOIN pg_stat_activity blocking_activity ON blocking_activity.pid = blocking_locks.pidWHERE NOT blocked_locks.granted;Этот запрос покажет, кто кого блокирует, и с каким запросом.🙌 Это простая, но мощная техника диагностики. Помогала мне не раз в проде - особенно, когда времени мало, а багов много.Ты пользуешься pg_stat_activity в проде? Или сразу лезешь в лог? Расскажи в комментах!📲 Мы в MAX#db👉 @database_info
Господа эксперты. Если сотрудникам компании похер на сообщения через LinkedIn. HR специалист компании вообще не заинтересован в том что у компании есть утечка кастомеров с именами, email и телефонами. Региональный CERT не смог так же уведомить их и принудить к исправлению системы. Что дальше? Gdpr репорт в региональное управления?
👩💻 Spring совет: таймауты RestTemplate лучше настраивать централизованноЕсли в проекте много REST-запросов через RestTemplate, не разбрасывай таймауты по коду.✅ Правильнее сделать конфигурацию через RestTemplateBuilder:- один общий RestTemplate с дефолтными timeout- плюс отдельные клиенты под “медленные” сервисы (через @Qualifier)Так у тебя:- единая точка настройки- меньше багов в проде из-за “вечных” запросов- проще дебажить и менять параметры💡 Особенно полезно в микросервисах, где внешние сервисы могут подвисать.Подписывайся на наш канал в Mакс 🟪
[1/3] System Design. Подготовка к сложному интервью по GenAI (Рубрика #SystemDesign)Изучил интересную книгу для подготовки к интервью по System Design, но уже в новой реальности, когда проектировать надо не только базы, очереди, кэши и микросервисы, но и системы вокруг LLM, diffusion models, RAG, мультимодальных моделей и AI-powered продуктов. Это русское издание книги "Generative AI System Design Interview" из экосистемы ByteByteGo. Авторы - Али Аминиан и Хао Шенг. Али Аминиан уже известен по книге про ML System Design Interview, а здесь фокус смещается с классических ML-систем вроде поиска и рекомендаций на генеративный AI: чатботы, генерацию текста, изображений, видео, RAG и персонализированные AI-сценарии.В обычном System Design Interview кандидат часто рисует распределенную систему: API, балансировщики, базы данных, очереди, кэши, фоновые джобы, мониторинг. В GenAI-интервью все это остается, но появляется еще один слой сложности:- Какие данные нужны;- Какую модель выбрать;- Нужен ли RAG или fine-tuning;- Как измерять качество генерации;- Как бороться с hallucinations;- Как учитывать latency и стоимость инференса;- Как встроить safety-фильтры;- Как собирать feedback loop;- Как мониторить деградацию системы после запуска.Именно поэтому книга полезна не только ML-инженерам. Она хорошо ложится и на backend engineers, и на архитекторов, и на технических руководителей, которым сейчас приходится проектировать AI-фичи не как демо на API, а как часть production-системы.Внутри книги заявлены три главные вещи:1️⃣ Фреймворк из 7 шагов для GenAI System DesignАвторы предлагают не начинать сразу с "берем LLM и векторную базу данных", а последовательно пройти путь от требований до деплоя и мониторинга в проде. Это сильно дисциплинирует мышление, потому что в GenAI-задачах легко перепрыгнуть к модной технологии и забыть про реальные ограничения продукта.2️⃣ 10 практических задач с подробными решениямиСреди кейсов есть следующие: Gmail Smart Compose, Google Translate, ChatGPT-like personal assistant, Image Captioning, Retrieval-Augmented Generation, Realistic Face Generation, High-Resolution Image Synthesis, Text-to-Image Generation, Personalized Headshot Generation и Text-to-Video Generation. Этот набор покрывает разные сценарии и сильно шире, чем просто прикрутить трансформер к чат-боту:)3️⃣ Много диаграмм и end-to-end разборовДля System Design это особенно важно. Хороший ответ на интервью - это не только "какую модель выбрать", но и то, как выглядит система вокруг модели: preprocessing, retrieval, prompt builder, inference service, post-processing, safety layer, logging, monitoring, feedback loop. Мне кажется, главная ценность книги в том, что она показывает: "GenAI-система - это не модель в вакууме".В общем, модель - это конечно ядро, но вокруг него есть данные, права доступа, индексы, промпты, ранжирование, guardrails, UX, стоимость, GPU-инфраструктура, A/B-тесты, метрики качества и эксплуатационные ограничения. И если все это не проектировать осознанно, то на выходе получается не production-система, а красивый прототип с непредсказуемым поведением.Книга полезна как способ обновить представление о System Design в эпоху AI, ведь раньше мы проектировали в основном детерминированный софт: запрос пришел, сервис обработал, база ответила, результат вернулся. Теперь все чаще приходится проектировать системы с вероятностным поведением: модель может ответить хорошо, средне, неверно, опасно, дорого или слишком медленно. Поэтому архитектура должна включать не только масштабирование и отказоустойчивость, но и evaluation, safety, feedback и постоянный контур улучшения.В продолжении более подробный разбор фреймворка в 7 шагов от авторов книги.#SystemDesign #AI #GenAI #Architecture #Engineering #ML #Interview #Software
⚙️ Одна функция вместо десяти команд✔️Каждый раз, когда нужно распаковать архив, начинается одно и то же. Это tar.gz или tar.bz2? Какие там флаги у unrar? А 7z вообще как запускается? Приходится лезть в документацию или историю команд. Самописная функция extract() решает именно эту проблему.▶️Скопируйте функцию в ~/.bashrc или ~/.zshrc:extract() { if [ -f "$1" ]; then case "$1" in *.tar.bz2) tar xjf "$1" ;; *.tar.gz) tar xzf "$1" ;; *.bz2) bunzip2 "$1" ;; *.rar) unrar x "$1" ;; *.gz) gunzip "$1" ;; *.tar) tar xf "$1" ;; *.tbz2) tar xjf "$1" ;; *.tgz) tar xzf "$1" ;; *.zip) unzip "$1" ;; *.7z) 7z x "$1" ;; *) echo "unknown archive" ;; esac fi}▶️Потом применяете изменения:source ~/.bashrc▶️Функция определяет тип архива по расширению файла и сама выбирает нужную команду. Вы просто пишете extract имя_файла и получаете распакованное содержимое. Без флагов, без гугления, без ошибок из-за опечатки в параметрах.▶️Поддерживаемые форматы: tar.gz, tar.bz2, bz2, rar, gz, tar, tbz2, tgz, zip, 7z.▶️Один синтаксис для любого формата. Если файл не распознан, функция скажет unknown archive вместо того, чтобы молча упасть.➡️ Что можно добавить:▶️Базовая версия уже полезна, но её можно немного доработать. Например, добавить проверку, что нужная утилита вообще установлена, или выводить имя команды перед запуском. Вот расширенный вариант:extract() { if [ ! -f "$1" ]; then echo "'$1' не найден" return 1 fi case "$1" in *.tar.bz2) tar xjf "$1" ;; *.tar.gz) tar xzf "$1" ;; *.bz2) bunzip2 "$1" ;; *.rar) unrar x "$1" ;; *.gz) gunzip "$1" ;; *.tar) tar xf "$1" ;; *.tbz2) tar xjf "$1" ;; *.tgz) tar xzf "$1" ;; *.zip) unzip "$1" ;; *.7z) 7z x "$1" ;; *) echo "Формат не поддерживается: '$1'" ; return 1 ;; esac}🖼️ Ссылка на источник🔨 bash_help
Относительная нумерацияЧастенько народ интересуется, а почему у меня в виме такая странная нумерация. Да, этим вопросом и я в своё время задавался. Называется это «Относительная нумерация». ㅤГлавная идея здесь — быстрое перемещение по коду с клавиатуры.Например, курсор стоит у меня в 27 строке. Если я сейчас выполню комбинацию: 6j, то курсор у меня встанет на строку: Не забудь подставить своё мыло. Такая нумерация показывает расстояние до строки от курсора, а не её абсолютный номер.Аналогично работает и в других направлениях. В редакторе ZED это включается через конфиг:relative_line_numbers": "enabled"В виме же по классике в конфиге:set number set relativenumberЧестно, если ты пользуешься мышкой, это бесполезная настройка. Для новичков это совсем неочевидная фича и возможно даже вредная. Короче у этой фичи целая философия:➡️ Мышление расстояниями. В заурядной жизни, ты будешь думать — ага, мне бы на строку 15 попасть. А если ты адепт вима, твоё мышление такое — мне бы на 6 строчек ниже.➡️ Ускорение всех count-команд. Тут не только клавиши hjkl задействованы, ты можешь выполнять ряд других операций. Например:5dd — удалить 5 строк3yy — скопировать 3 строки4> — сдвинуть 4 строки вправо2} — прыгнуть на 2 абзацаТы сразу видишь нужное число, сразу прожимаешь нужную комбинацию.➡️ Сильно уменьшает мысленную математику. Без — так… я на 120 строке, мне нужно на 133… это +13. С ней — вижу 13 → 13j. Мозги по сути вообще ничего не считают. Это плюс. Думаешь не головой, а жопой.➡️ Работает лучше с большими файлами. Когда у тебя файл на 1000+ строк, абсолютные номера создают шум, а относительные прям в тему. Ты ориентируешься вокруг курсора, а не во всём файле.Минусы? Да конечно! ➡️ Поначалу выламывает тебя, перестраивает, больно➡️ Плохо подходит для дебага с конкретными строкамиВ общем относительная нумерация, это не про цифры, она про то, чтобы перестать искать строки и моментально перепрыгивать в нужное место.Если есть чё добавить, камон в комменты, будет интересно почитать.🛠 #devops #linux—💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
⭐️ Откуда LLM реально берут ответы В ИИ-выдачу чаще всего попадает инфа с пользовательских форумов (как Reddit). Но с тем же Reddit вы ничего не контролируете: обсуждения живут своей жизнью. А для продвижения в России это вообще слабый управляемый канал.Посмотрим на другие источники. По данным анализа (1000 запросов) чаще всего попадают в ответы LLM:🔴Энциклопедии и справочникиСтраницы с чёткими определениями и базовыми объяснениями. Формат «что это / как работает» заходит лучше всего.🔴Образовательные и академические ресурсыУниверситеты, базы знаний, материалы с ссылками на источники.🔴Медиа и редакционные сайтыСтруктурированные статьи с фактами, цифрами и понятной подачей.🔴Блоги с сильной экспертизойНе «мнения», а разборы с конкретикой и логикой.🔴Документация и гайдыПошаговые инструкции, FAQ, help-центры.Эта выборка подчеркивает важность размещения контента на авторитетных специализированных сайтах.Проверить упоминания вашего бренда в ИИ-выдаче можно в инструменте 🔗 https://pr-cy.ru/ai-serp/____@prcynews
Новые версии продукта - типа, новые ощущения !?Расскажите это админам новомодного S/4HANA.Тут вот на значительном ряде современных ядер от 753 по 919 включительно в утилите tp обнаружили баг, которому наверное "отчень много лет". Ну или мне так показалось..🤓История такая:1) Запрос транспортный успешно отрелизили в разработке.2) Далее мы импортируем его в систему качества для "QA Approval/Rejection"3) Открываем очередь STMS_QA , а там йок(‼), нету нужного запроса.Решение стандартное: качаем свежую версию tp и обновляем в системах.Далее список из версий tp в которых безобразие это - вылечено:KERNEL919: tp 381.733.04KERNEL918: tp 381.715.04KERNEL917: tp 381.709.04KERNEL916: tp 381.700.04KERNEL793: tp 381.588.04KERNEL789: tp 381.577.04KERNEL754: tp 381.40.04KERNEL753: tp 381.30.04(imho) про ядро 777, как обычно успешно забыли...!?#STMS_QA_BUG#TP#KERNEL919#KERNEL753
OpenAI Codex vs Claude Code vs Amp Code vs OpenCode + DS4 ProЯ сегодня закончил сложный рефактор проекта ядра BitGN. И состояние кода теперь просит генеральной уборки.Из интереса я задал один и тот же вопрос разным агентам:Scan through the repository on a high level (ignore code under /modules). I want you to suggest ways, how we can make it more simple and straightforward, refactor away traces of growing pains. Focus on small changes that allow to drop code, or reduce cognitive complexity with a small LOC change cost.OpenAI Codex с GPT-5.5 High потратил 3 минуты и 132k tokens из подписки и предложил:(1) удалить папку /dbg с начинкой - давно пора(2) переименовать пакет stor в store - можно(3) упростить ULID генератор - да, можно(4) убрать AddVMCreateds - можно(5) зарефакторить run finalization/push - надо посмотреть(6) удалить public-release backfill - да, это прямо точно можно(7) почистить Makefile - мелочь, но можно(8) почистить раутинг до виртуальных машин- да, теперь можно(9) утащить виртуальную FS в PAC1 - имеет смыслAmp Code в deep thinking потратил 4 минуты и 90 центов, выдал список первоочередных изменений, которые пересекаются с кодексом:(1) Удалить папку /dbg с начинкой - ok(2) упростить раутинг до виртуальных машин - да, можно(3) зарефакторить run finalization/push - надо посмотреть(4) убрать public-release backfill - ok(5) убрать fx.VM интерфейс и поправить доки - да, действительноClaude Code + Opus 4.7 XHigh потратил 8 минут (говорит, что 2$ из подписки) и предложил прежде всего:(1) убрать fx.VM интерфейс - ок(2) убрать helper err(), который код сильно упрощает - нет(3) оптимизировать ненужные конструкторы storage - надо смотреть(4) переместить файлы с интерфейсами айдишников в файл с интерфейсами IO, ибо “используются вместе и сэкономят одну строчку кода” - нет, спасибо(5) удалить пустую папку /cmd - она даже не в git, но ок(6) удалить proto_api/bitgn/vm/ecom.proto - и оставить вас без интерфейса к соревнованию. Нет, спасибо.OpenCode + DeepSeek V4 Pro потратил 1.15$ + 6 минут и предложил:(1) слить файлы с конфигами - и так нормально(2) переместить файлы с интерфейсами айдишников в файл с интерфейсами IO - как и Claude. Нет, спасибо.(3) удалить папку dbg с начинкой - ok(4) удалить пустую папку с /cmd - ну ок(5) заменить lib/set.go на inline map[string]struct{} - ни в коем случае, это код упрощает(6) удалить systemd socket activation logic, ибо “the most complex code”, что сразу уронило бы все сервера.OpenCode +DS4 Pro пока совсем сыроват. Ответы Claude Opus немного лучше. Codex идет в работу. Amp тоже нашел толковое без шума, но меньше Кодекса.Ваш, @llm_under_hood 🤗
"Диана и Актеон" 1886Художник: Генрих Ипполитович Семирадский@ROMeNIKA