<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/">
  <channel>
    <language>ru</language>
    <title>BASIC</title>
    <description/>
    <link>https://tproger.ru/tag/basic</link>
    <atom:link href="https://tproger.ru/tag/basic/feed" rel="self" type="application/rss+xml"/>
    <lastBuildDate>Mon, 05 Oct 2026 09:40:46 GMT</lastBuildDate>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>12</sy:updateFrequency>
    <image>
      <title>BASIC</title>
      <link>https://tproger.ru</link>
      <url>https://tproger.ru/apple-touch-icon.png</url>
    </image>
    <item>
      <title>10 VSCode расширений, которые реально повышают продуктивность</title>
      <link>https://tproger.ru/articles/10-vscode-raswirenij--kotorye-realno-povywayut-produktivnost</link>
      <comments>https://tproger.ru/articles/10-vscode-raswirenij--kotorye-realno-povywayut-produktivnost?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Татьяна Жукова]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/10-vscode-raswirenij--kotorye-realno-povywayut-produktivnost</guid>
      <description><![CDATA[<p>Топ-10 расширений VSCode для повышения продуктивности: форматирование, тестирование API, управление проектами и многое другое. Ускорьте свою разработку с лучшими инструментами.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/10-vscode-raswirenij--kotorye-realno-povywayut-produktivnost">10 VSCode расширений, которые реально повышают продуктивность</a>»</p>]]></description>
      <category><![CDATA[API]]></category>
      <category><![CDATA[JavaScript]]></category>
      <category><![CDATA[Java]]></category>
      <category><![CDATA[Тестирование]]></category>
      <category><![CDATA[SEO]]></category>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Git]]></category>
      <category><![CDATA[JSON]]></category>
      <category><![CDATA[CSS]]></category>
      <category><![CDATA[Работа]]></category>
      <category><![CDATA[HTML]]></category>
      <category><![CDATA[Боты]]></category>
      <category><![CDATA[TypeScript]]></category>
      <category><![CDATA[BASIC]]></category>
      <category><![CDATA[HR]]></category>
      <category><![CDATA[React]]></category>
      <category><![CDATA[Intel]]></category>
      <category><![CDATA[ICO]]></category>
      <category><![CDATA[Фронтенд]]></category>
      <category><![CDATA[Английский]]></category>
      <category><![CDATA[Сервер]]></category>
      <category><![CDATA[Vue]]></category>
      <category><![CDATA[1C]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 23 Sep 2025 10:00:03 GMT</pubDate>
      <content:encoded><![CDATA[<p>Visual Studio Code — мощный редактор, который становится ещё лучше с правильными расширениями. В этой подборке мы собрали 10 инструментов, реально ускоряющих разработку: они избавляют от рутины и помогают сосредоточиться на главном — качественном коде.</p><h2>1. TabNine</h2><p>Если вам важна скорость — <a href="https://www.tabnine.com/">TabNine</a> стоит попробовать хотя бы ради этого. Расширение —  лёгкий AI-ассистент, который работает как умный автодополнитель кода, непохожий на аналоги вроде Codeium или Copilot.</p><p>TabNine обучен на миллионах строк открытого кода и умеет предсказывать, что вы напишете дальше, с учётом контекста проекта и языка. Отлично справляется с рутинными вещами: автозавершает функции, переменные, конструкции — всё быстро и чаще всего в тему.</p><p><b>Кому подойдёт</b>: тем, кто хочет ускорить набор кода, но не готов передавать весь проект в облако или открывать чат с Copilot. Поддерживает офлайн-режим и локальное обучение модели.</p><p>Плюсы:</p><ul><li>Работает из коробки, не требует тонкой настройки;</li><li>Есть локальная версия — удобно для закрытых проектов;</li><li>Поддерживает большинство языков и фреймворков.</li></ul><p><b>Чем полезен:</b> экономит время на повседневной разработке — особенно когда вы не хотите отвлекаться на документацию или поиск нужной переменной в другом файле.</p><h2>2. GitLens</h2><p><a href="https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens">GitLens</a> встраивает историю изменений прямо в VSCode — и делает это максимально удобно. Показывает, кто и когда изменил строку, коммит-месседж, хэш, ветку и другие детали. Можно не уходить в консоль или отдельный Git-клиент для поиска информации.</p><p>Особенно полезен, когда работаете с чужим кодом или хотите быстро вспомнить, зачем вы сами что-то написали месяц назад.</p><p><b>Кому подойдёт</b>: тем, кто работает в команде, часто читает историю изменений или ревьюит чужие коммиты. Также пригодится в проектах с долгой историей или нестабильным кодом.</p><p>Плюсы:</p><ul><li>Информация о коммитах отображается прямо в редакторе под строкой;</li><li>Есть таймлайн изменений файла;</li><li>Удобный diff по коммитам, авторам, веткам и даже фрагментам кода.</li></ul><p><b>Чем полезен:</b> помогает быстрее разбираться в чужом коде, искать причины бага или откатывать ошибки. Особенно ценится за то, что делает Git прозрачным и доступным прямо в процессе разработки.</p><h2>3. Error Lens</h2><p><a href="https://marketplace.visualstudio.com/items?itemName=usernamehw.errorlens">Error Lens</a> выводит диагностику ошибок и предупреждений прямо в строке кода. Это расширение превращает сообщения линтеров и компиляторов в наглядные подсказки, позволяя сразу видеть, что пошло не так.</p><p>Можно настроить отображение: выделять ошибки цветом, добавлять иконки или даже показывать краткие подсказки с предложениями по исправлению. Поддерживает большинство языков и линтеров, включая ESLint, TypeScript и других.</p><p><b>Кому подойдёт:</b> разработчикам, которые хотят моментально видеть ошибки в коде, и тем, кто ценит визуальную чистоту и скорость отладки.</p><p>Плюсы:</p><ul><li>Ошибки и предупреждения отображаются прямо в редакторе, рядом со строкой кода;</li><li>Гибкая настройка стилей и уровня детализации сообщений;</li><li>Ускоряет процесс отладки, особенно при работе с большими файлами.</li></ul><p><b>Чем полезен:</b> минимизирует время на поиск и анализ ошибок, позволяя сразу фокусироваться на их исправлении. Это особенно ценно, когда вы пишете код в реальном времени или работаете с новыми библиотеками, где легко допустить мелкие недочёты.</p><h2>4. Path Intellisense</h2><p><a href="https://marketplace.visualstudio.com/items?itemName=christian-kohler.path-intellisense">Path Intellisense</a> — одно из тех расширений, которое просто работает и экономит кучу времени. Оно автоматически подсказывает пути к файлам, папкам и модулям в вашем проекте, как только вы начинаете их набирать. Поддерживает абсолютные и относительные пути, учитывает структуру проекта и форматирует предложения так, как это принято в выбранном языке.</p><p>Работает особенно хорошо в проектах с вложенной структурой, когда нужно быстро сослаться на компоненты, конфиги или ассеты.</p><p><b>Кому подойдёт</b>: всем, кто устал вручную прописывать длинные relative-пути или путаться в структуре проекта. Особенно выручает на фронтенде, где модулей десятки и легко ошибиться в названии.</p><p>Плюсы:</p><ul><li>Подсказки появляются автоматически при наборе пути;</li><li>Поддерживает большинство языков и фреймворков;</li><li>Учитывает jsconfig.json и tsconfig.json при работе с alias-ами.</li></ul><p><b>Чем полезен</b>: снижает количество опечаток и неверных импортов, ускоряет переход между файлами и помогает писать код чуть быстрее.</p><h2>5. TODO Highlight</h2><p><a href="https://marketplace.visualstudio.com/items?itemName=wayou.vscode-todo-highlight">TODO Highlight</a> подсвечивает комментарии с задачами (например, TODO, FIXME, NOTE) прямо в коде, делая их заметными и удобными для отслеживания. Расширение помогает не терять важные заметки, которые вы оставляете в коде, и быстро находить места, требующие доработки.</p><p>Можно настроить ключевые слова, цвета подсветки и даже добавить свои собственные метки. Работает с любыми языками программирования и интегрируется с панелью задач VSCode для удобного обзора всех TODO в проекте.</p><p><b>Кому подойдёт</b>: разработчикам, которые оставляют заметки в коде, и командам, которым нужно быстро находить задачи или недочёты в проекте.</p><p>Плюсы:</p><ul><li>Яркая подсветка TODO-комментариев прямо в редакторе;</li><li>Гибкая настройка ключевых слов и стилей;</li><li>Интеграция с панелью задач для быстрого обзора.</li></ul><p><b>Чем полезен</b>: экономит время на поиск и управление задачами в коде, помогая не упустить важные доработки или напоминания. Особенно удобно в больших проектах, где комментарии могут затеряться среди строк.</p><h2>6. Prettier – Code formatter</h2><p><a href="https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode">Prettier</a> — расширение, которое автоматически приводит ваш код к единому стилю, избавляет от ручной правки отступов, кавычек и переносов. Оно поддерживает множество языков (JavaScript, TypeScript, CSS, HTML и другие) и интегрируется с линтерами, чтобы ваш код был не только красивым, но и консистентным.</p><p>Можно настроить правила форматирования под ваш проект или использовать готовые пресеты. Prettier форматирует код при сохранении файла или по команде, а также работает с выделенными фрагментами.</p><p><b>Кому подойдёт</b>: разработчикам, которые хотят экономить время на форматировании, и командам, стремящимся к единообразию кода.</p><p>Плюсы:</p><ul><li>Автоматическое форматирование при сохранении или по хоткеям;</li><li>Поддержка множества языков и кастомных настроек;</li><li>Интеграция с ESLint и другими инструментами для проверки кода.</li></ul><p><b>Чем полезен:</b> убирает рутину ручного форматирования, снижает количество ошибок в стиле кода и помогает сосредоточиться на логике, а не на внешнем виде. Идеально, чтобы ускорить работу и поддерживать чистоту в больших проектах.</p><h2>7. Live Server</h2><p><a href="https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer">Live Server </a>запускает локальный сервер прямо из VSCode, позволяя просматривать изменения в HTML, CSS и JavaScript в браузере в реальном времени. После сохранения файла страница автоматически обновляется, что исключает необходимость ручного перезапуска или обновления браузера.</p><p>Поддерживает кастомные порты, HTTPS, и работает с любыми фронтенд-проектами, от простых HTML-страниц до сложных приложений на React или Vue. Можно настроить, чтобы сервер открывался автоматически при запуске проекта.</p><p><b>Кому подойдёт</b>: фронтенд-разработчикам, которые работают над веб-интерфейсами и хотят мгновенно видеть результат изменений без лишних действий.</p><p>Плюсы:</p><ul><li>Автоматическое обновление страницы при изменении кода;</li><li>Простая настройка и поддержка HTTPS для безопасного тестирования;</li><li>Лёгкий запуск сервера прямо из редактора.</li></ul><p><b>Чем полезен</b>: ускоряет цикл разработки и тестирования веб-приложений, избавляет от ручного обновления страниц. Это особенно экономит время при частых правках в стилях или скриптах, так как можно сразу видеть результат в браузере.</p><h2>8. Project Manager</h2><p>Если работаете над несколькими проектами одновременно — это расширение сэкономит вам часы. <a href="https://marketplace.visualstudio.com/items?itemName=alefragnani.project-manager">Project Manager</a> позволяет создавать список избранных проектов и открывать их в один клик, без ручного поиска папок и недавних вкладок.</p><p>Можно задать свои алиасы, группировать по папкам, запускать с хоткеев — особенно удобно, если у вас десятки репозиториев на локалке или вы фрилансите на несколько команд.</p><p><b>Кому подойдёт</b>: разработчикам, которые ведут сразу несколько проектов, часто переключаются между ними и устали искать нужный путь через File &gt; Open Folder.</p><p>Плюсы:</p><ul><li>Быстрое переключение между проектами через интерфейс или хоткеи;</li><li>Поддержка избранного и тэгов;</li><li>Можно автоматически подтягивать все папки из заданной директории.</li></ul><p><b>Чем полезен:</b> избавляет от рутинных действий при переходе между проектами — особенно когда важно не терять фокус и не сбиваться с рабочего темпа.</p><h2>9. Code Spell Checker</h2><p><a href="https://marketplace.visualstudio.com/items?itemName=streetsidesoftware.code-spell-checker">Code Spell Checker </a>выявляет орфографические ошибки в комментариях, строках и именах переменных прямо в редакторе VSCode. Расширение подчёркивает опечатки волнистой линией и предлагает варианты исправления через Ctrl+. или Cmd+., что позволяет быстро исправить ошибки.</p><p>Поддерживает множество ЯП и словари для разных языков (английский, русский, немецкий — с дополнительными расширениями). Можно добавлять свои слова в пользовательский словарь или игнорировать определённые термины, чтобы адаптировать проверку под проект. Работает с camelCase и snake_case, не помечая их как ошибки.</p><p><b>Кому подойдёт</b>: разработчикам, которые пишут много комментариев или документации в коде, и тем, кто хочет избежать опечаток в строках, API или логах, чтобы повысить читаемость.</p><p>Плюсы:</p><ul><li>Мгновенное обнаружение ошибок с подсказками для исправления;</li><li>Гибкая настройка словарей и игнорируемых слов;</li><li>Поддержка технических терминов и различных стилей написания кода.</li></ul><p><b>Чем полезен:</b> экономит время на поиск и исправление опечаток, особенно в документации или пользовательских сообщениях, которые могут повлиять на восприятие проекта.</p><h2>10. REST Client</h2><p><a href="https://marketplace.visualstudio.com/items?itemName=humao.rest-client">REST Client </a>позволяет отправлять HTTP-запросы и просматривать ответы непосредственно в VSCode. Достаточно создать файл с расширением .http или .rest, написать запрос в простом текстовом формате, и вы увидите кнопку Send Request для моментального выполнения.</p><p>Поддерживает все типы запросов (GET, POST, PUT, DELETE и другие), авторизацию (Basic, OAuth, JWT), переменные окружения и даже генерацию кода на разных языках. Запросы можно сохранять в репозиторий, что удобно для командной работы. Расширение также позволяет использовать динамические переменные по типу {{$timestamp}} или {{$guid}}, всё для гибкой настройки запросов.</p><p><b>Кому подойдёт</b>: тем, кто работает с REST API и хочет тестировать эндпоинты прямо в VSCode, сохранять запросы в проекте и почти не переключаться между инструментами.</p><p>Плюсы:</p><ul><li>Простая отправка запросов через .http или .rest файлы с кнопкой Send Request;</li><li>Поддержка переменных окружения и авторизации для сложных API;</li><li>Возможность сохранять запросы в репозитории для совместной работы.</li></ul><p><b>Чем полезен:</b> ускоряет тестирование API, устраняет необходимость в сторонних приложениях. Запросы хранятся рядом с кодом, что упрощает документирование и повторное использование, особенно в проектах, где API-вызовы нужно часто проверять или делиться ими с командой.</p><p><i>А какими расширениями пользуетесь вы? Пишите в комментариях!</i></p>]]></content:encoded>
    </item>
    <item>
      <title>На GitHub появился коммит 1978 года за авторством Microsoft</title>
      <link>https://tproger.ru/news/--na-github-poyavilsya-kommit-1978-goda-za-avtorstvom-microsoft</link>
      <comments>https://tproger.ru/news/--na-github-poyavilsya-kommit-1978-goda-za-avtorstvom-microsoft?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Булат Яббаров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/--na-github-poyavilsya-kommit-1978-goda-za-avtorstvom-microsoft</guid>
      <description><![CDATA[<p>Microsoft выложила на GitHub исходники BASIC 1.1 для MOS 6502, оформив коммит датой 1978 года. Это исторический код, стоявший у истоков компании</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/--na-github-poyavilsya-kommit-1978-goda-za-avtorstvom-microsoft">На GitHub появился коммит 1978 года за авторством Microsoft</a>»</p>]]></description>
      <category><![CDATA[Git]]></category>
      <category><![CDATA[Apple]]></category>
      <category><![CDATA[.NET]]></category>
      <category><![CDATA[Windows]]></category>
      <category><![CDATA[Microsoft]]></category>
      <category><![CDATA[GitHub]]></category>
      <category><![CDATA[BASIC]]></category>
      <category><![CDATA[MIT]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 04 Sep 2025 02:52:19 GMT</pubDate>
      <content:encoded><![CDATA[<p>На GitHub появился необычный коммит — Microsoft выложила исходники оригинального интерпретатора BASIC для процессора MOS 6502.</p><p>Что интересно, компания <b>задала датой коммита 27 июля 1978 года, 22:00 по московскому времени</b>. Таким образом, формально коммиту — <b>47 лет</b>.</p><h2>Исторический артефакт в прямом эфире</h2><p>Проект под названием<a href="https://github.com/microsoft/BASIC-M6502"> BASIC-M6502</a> содержит полный исходный код Microsoft BASIC версии 1.1. Это один из самых ранних программных продуктов компании, написанный между 1976 и 1978 годами.</p><p>BASIC 1.1 стал основой для множества персональных компьютеров, включая:</p><ul><li><b>Apple II</b> — революционный домашний ПК от Джобса и Возняка.</li><li><b>Commodore PET</b> — один из первых массовых компьютеров.</li><li><b>KIM-1</b>, <b>OSI</b>, <b>PDP-10</b> — популярные среди хобби-разработчиков системы.</li></ul><h2>Коммит из прошлого</h2><p>В коммит-логе можно увидеть:</p><ul><li><b>Дата:</b> July 27, 1978, 22:00 (GMT+3).</li><li><b>Автор:</b> Scott Hanselman (Microsoft).</li><li><b>Файл:</b> m6502.asm — 6955 строк ассемблера.</li><li><b>Текст коммита:</b> «Microsoft BASIC for 6502».</li></ul><p>Microsoft явно вручную подставила дату коммита, чтобы подчеркнуть историческую важность релиза.</p><h2>Зачем Microsoft это выложила?</h2><p>По словам авторов, это попытка сохранить цифровое наследие эпохи ранних ПК. В README подробно описано, почему именно этот код важен:</p><ul><li>Он сделал программирование доступным миллионам пользователей;</li><li>Лицензирование интерпретатора стало основой бизнес-модели Microsoft;</li><li>Код использовался до появления MS-DOS и Windows;</li><li>Интерпретатор легко переносился на разные платформы, заложив принципы кроссплатформенной разработки.</li></ul><p>Проект представлен как <b>учебный и исследовательский ресурс</b>, с MIT-лицензией.</p><h2>Внутри — чистый 6502-ассемблер</h2><p>Код представляет собой полноценный интерпретатор BASIC, написанный на <b>ассемблере для процессора MOS 6502</b>. Он включает:</p><ul><li>Поддержку арифметики с плавающей точкой.</li><li>Обработку строк и массивов.</li><li>Динамическое распределение памяти.</li><li>Сборку мусора.</li><li>Абстракцию ввода-вывода под разные платформы.</li></ul><p>Также внутри есть журнал изменений с точными датами коммитов конца 70-х годов — например, фиксы в парсинге FOR-циклов, улучшения сборщика мусора и добавление пользовательских функций.</p><blockquote>Это не просто учебный проект или архив. Это исходный код, с которого началась история Microsoft как софтверной компании. Без него не было бы MS-DOS, Windows и .NET</blockquote>]]></content:encoded>
    </item>
    <item>
      <title>Как встроить распознавание документов в Android: пошаговое руководство</title>
      <link>https://tproger.ru/articles/kak-vstroit-raspoznavanie-dokumentov-v-android--powagovoe-rukovodstvo</link>
      <comments>https://tproger.ru/articles/kak-vstroit-raspoznavanie-dokumentov-v-android--powagovoe-rukovodstvo?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Smart Engines]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/kak-vstroit-raspoznavanie-dokumentov-v-android--powagovoe-rukovodstvo</guid>
      <description><![CDATA[<p>Разбираемся, как быстро добавить возможность распознавания документов в Android. Пошаговое руководство по встраиванию Smart Document Engine.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/kak-vstroit-raspoznavanie-dokumentov-v-android--powagovoe-rukovodstvo">Как встроить распознавание документов в Android: пошаговое руководство</a>»</p>]]></description>
      <category><![CDATA[API]]></category>
      <category><![CDATA[JavaScript]]></category>
      <category><![CDATA[Java]]></category>
      <category><![CDATA[SEO]]></category>
      <category><![CDATA[Android]]></category>
      <category><![CDATA[Опрос]]></category>
      <category><![CDATA[JSON]]></category>
      <category><![CDATA[IDE]]></category>
      <category><![CDATA[Распознавание]]></category>
      <category><![CDATA[CSS]]></category>
      <category><![CDATA[Работа]]></category>
      <category><![CDATA[Tor]]></category>
      <category><![CDATA[HTML]]></category>
      <category><![CDATA[Боты]]></category>
      <category><![CDATA[BASIC]]></category>
      <category><![CDATA[HR]]></category>
      <category><![CDATA[Intel]]></category>
      <category><![CDATA[ICO]]></category>
      <category><![CDATA[Стартапы]]></category>
      <category><![CDATA[Разработка]]></category>
      <category><![CDATA[Библиотеки]]></category>
      <category><![CDATA[XML]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 10 Jun 2025 14:00:03 GMT</pubDate>
      <content:encoded><![CDATA[<p>Привет, Tproger!</p><p>Мы в <a href="https://smartengines.ru/">Smart Engines</a> занимаемся разработкой софта для распознавания самых разных документов — начиная от паспорта РФ, свидетельства о рождении и заканчивая первичкой вроде УПД или ТОРГ-12, а также банковских карт, номеров телефона и баркодов. Наши библиотеки написаны полностью с нуля (на плюсах), мы уделяем огромное внимание скорости алгоритмов, нейросетям (новым архитектурам, размеру и правильному применению) и оптимизации, за счет чего наш софт портируется на любые архитектуры и может быть использован на любой платформе.</p><p>Сегодня продолжим знакомиться через рассказ о нашем софте, на очереди вторая библиотека — Smart Document Engine и ее возможности работы с жесткими и гибкими формами.</p><h2>Гибкие и жесткие формы</h2><p>Вначале про сами формы: они могут быть «жесткими» и «гибкими». Жёсткие формы подразумевают, что положение всех объектов на форме может быть задано прямо в виде координат на шаблоне. Самое простое определение для жестких форм — они совпадают «на просвет». Возьмите пару листов А4 с распечатанной жёсткой формой, наложите друг на друга, и места расположения полей точно совпадут. Гибкие формы устроены гораздо сложнее, но все равно имеют свою характерную структуру и топологию.</p><p>Распознавание жестких форм можно свести к детекции формы на изображении и распознавании определенных областей, где должны быть искомые поля. Гибкие формы требуют гораздо более сложных систем поиска (к тому же, завязанных на результате предыдущих действий, например, OCR, что только увеличивает возможность ошибки).</p><p>Кстати, иногда вместо распознавания текста целиком достаточно просто ответить на вопрос «есть ли текст в выбранной области, и, если есть, то где»</p><p>Но не надо думать, что жёсткие формы совсем просты — большие белые поля без каких-либо символов (или одинаковый узор по краям, как это бывает с бланками гособразца), малый объём статического текста и некоторая вариативность бланков тоже заставляют потрудиться над детекцией и классификацией шаблонов.</p><p>Также существуют общие для подобных форм проблемы. Правильно интерпретировать галочки в чекбоксах, найти штрихкоды, правильно разметить табличные данные — есть куча проблем, каждая из которых имеет своё state-of-the-art решение и набор алгоритмов, над которыми нужно ломать голову.</p><h2>Почему не LLM, хотя казалось бы</h2><p>Сейчас мы переживаем бум развития нейросетей — генеративные и классифицирующие сети появляются как грибы после дождя. Количество задач, которые они могут решить, тоже кажется неисчислимым: казалось бы — дайте обучающую выборку побольше, и всё получится! Тем более, что примеры использования нейросетей для автоматизации рутины уже можно встретить на каждом шагу: об этом пишут заметки и обзорные статьи на научно-популярных ресурсах, а интеграторы и стартапы предлагают решения по созданию чат-ботов и помощников на основе ИИ, обученного на внутренней документации больших компаний.</p><p>Однако чем сложнее нейросеть, чем глубже степень обучения — тем выше шанс, что она начнёт бредить. Мы все какое-то время назад <a href="https://shedevrum.ai/post/bc5bf060107711eeb9ea06d64eab8f23/">смеялись</a> над шести-семипалыми героями очередных сгенерированных изображений, сейчас посмеиваемся над сгенерированными сетями текстами с описанием несуществующих фильмов и книг, но смешно ли будет нам (а особенно бухгалтерии), если нейросеть начнет галлюцинировать при распознавании платёжных реквизитов или суммы НДС? И чем выше степень развития сетей — тем менее заметными будут становиться такие ошибки.</p><p>В прошлом году на одной из ключевых конференций в области анализа и распознавания документов — ICDAR — учёные традиционно задались вопросом о будущем OCR. И сошлись во мнении, что OCR нисколько не устарела, благополучно развивается и остается наиболее надежным инструментом распознавания. Обеспечить требования консистентности (и ещё всякого такого) информации, извлекаемой из изображения, все равно сможет только старый добрый OCR и прочие детерминированные алгоритмы. И именно их разработкой (и доведением до совершенства) мы и занимаемся.</p><p>Вернёмся к библиотеке <a href="https://smartengines.ru/intelligent-document-recognition/">Smart Document Engine</a>. Как уже говорилось выше, гибкие формы на то и гибкие, что исключительно геометрией на них не обойдёшься — вопрос местонахождения полей решается «на лету». На процесс взаимодействия с библиотекой это влияет в самом конце, на моменте работы с результатом. Перейдем к знакомству с интерфейсом на примере всё того же встраивания в андроид.</p><h2>Встраивание</h2><p>В целом, сценарий работы с библиотекой распознавания документов такой же, как и в <a href="https://tproger.ru/articles/kak-vstroit-raspoznavanie-pasporta-rf-v-android--powagovoe-rukovodstvo">прошлой статье</a> про распознавание паспорта: создаём движок, формируем настройки сессии, заводим саму сессию и кормим её картинками, после чего работаем с результатом распознавания. В отличие от документов, удостоверяющих личность, гибкие и жесткие формы могут быть многостраничными, с одинаковыми «по смыслу» полями на каждой странице. Помимо этого, часто документы загружают «пакетом», и в этом случае на одном изображении могут быть несколько разных документов. Поэтому результат распознавания устроен сложнее, чем в прошлом примере. Есть «результат распознавания», внутри него лежит набор найденных документов, каждый документ разбивается на «логический» и «физический» набор полей:</p><p>Логическая и физическая части документа разбираются отдельно, так как в некоторых случаях геометрия вообще не нужна (если результат распознавания документа дальше идёт в базу данных):</p><p>Как правило, результат распознавания представляют в виде json-объекта, но для наглядности лучше всего пользоваться html — особенно в случае, когда логические и физические поля имеют больше одного соответствия. Вот простенький генератор html на основе документа:</p><p>В результате получается удобная для взаимодействия html-страничка. Если добавить немного фантазии, то можно сразу сделать форму, в которой можно будет проверять и дополнять неуверенно распознанные поля — очень удобно в случае, если качество изображения плохое или документ плохо пропечатан.</p><p>Конечно, помимо андроида встроить распознавание и организовать удобные представление документа (при необходимости) можно и на любой другой платформе, однако с трендом на создание банковских офисов нового поколения и развития курьерской сети автоматизация ввода документов с помощью средненьких мобильных устройств на Андроиде становятся актуальной задачей.</p><p>На этом мы не заканчиваем, ждите новых статей!</p>]]></content:encoded>
    </item>
    <item>
      <title>Лучшие AI-инструменты для написания МоМ’ов</title>
      <link>https://tproger.ru/articles/ai-instrumenty-dlya-napisaniya-mom-ov</link>
      <comments>https://tproger.ru/articles/ai-instrumenty-dlya-napisaniya-mom-ov?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Елизавета Ржевская]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/ai-instrumenty-dlya-napisaniya-mom-ov</guid>
      <description><![CDATA[<p>Лучшие AI-инструменты для написания МоМ’ов. Рассказываем, что они из себя представляют и как применять.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/ai-instrumenty-dlya-napisaniya-mom-ov">Лучшие AI-инструменты для написания МоМ’ов</a>»</p>]]></description>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Опрос]]></category>
      <category><![CDATA[Нейронные сети]]></category>
      <category><![CDATA[Slack]]></category>
      <category><![CDATA[Microsoft]]></category>
      <category><![CDATA[BASIC]]></category>
      <category><![CDATA[HR]]></category>
      <category><![CDATA[OpenAI]]></category>
      <category><![CDATA[Английский]]></category>
      <category><![CDATA[Notion]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 06 Jun 2025 14:00:03 GMT</pubDate>
      <content:encoded><![CDATA[<p>Глобально AI-инструменты для написания Minutes of Meeting (MoM) предоставляют пользователям следующие возможности:</p><p>✅ подробный протокол встречи (транскрипт),</p><p>✅ интеграцию с Google Meet, Zoom, Teams; возможность расшифровки уже записанного аудио или видео встречи,</p><p>✅ автоматически подготовленное саммари —  ключевые моменты встречи, решения, задачи.</p><p>Конкретные инструменты могут оказаться более или менее эффективными в использовании в зависимости от типа встреч. Полный список протестированных инструментов приведен в конце поста, а сейчас расскажем об инструментах, которые готовы порекомендовать в разных ситуациях.</p><h2>Вариант 1: для дейликов или статус-митингов</h2><p>Наши фавориты:</p><p>🤖<a href="https://vk.com/away.php?to=http%3A%2F%2Ffireflies.ai&amp;cc_key=">Fireflies.ai</a></p><p>🤖<a href="https://vk.com/away.php?to=https%3A%2F%2Fwww.supernormal.com%2F&amp;cc_key=">Supernormal.com</a></p><p>🤖<a href="https://vk.com/away.php?to=http%3A%2F%2Ftactiq.io%2F&amp;cc_key=">Tactiq.io</a></p><p>Эти инструменты подойдут для относительно простых созвонов —  дейликов, статус-митингов на одном языке, где нет необходимости видеозаписи экрана.</p><p>Ограничения:</p><ul><li>Низкая поддержка многоязычности —  нужно выбрать язык встречи заранее. Все, что будет сказано на другом языке, будет проигнорировано, либо может быть записано неверно.</li></ul><ul><li>Трудности с пониманием терминов (например, WSR, RAID и пр.).</li><li>Автоматически сгенерированное саммари, задачи, моменты встречи могут быть неполными или неверными. Не отправляйте саммари другим участникам без предварительной проверки!</li></ul><h3>Supernormal</h3><ul><li>Видеозаписи встреч есть только на платном тарифе ($10/месяц). Если для вас критична запись экрана, бесплатная версия не подойдет;</li></ul><ul><li>Нет аудиозаписи;</li></ul><ul><li>Иногда путает, кто из участников что сказал, или на кого в действительности была назначена задача.</li></ul><h3>Tactiq.io</h3><ul><li>Видеозаписи встреч есть только на платном тарифе (Business $20/месяц);</li></ul><ul><li>800 минут на аудиозаписи (потом нужно чистить старые записи);</li></ul><ul><li>В обязательном порядке требует интеграцию с Google/Microsoft-календарем;</li></ul><ul><li>В бесплатном тарифе предоставляет 20 кредитов на AI-саммари (после этого будет только транскрипт, который потом можно скормить чату GPT для подготовки саммари);</li></ul><ul><li>В бесплатном варианте нет экспорта саммари/транскрипта (приходится выделять текст на странице и копировать его, что неудобно, к тому же может теряться форматирование).</li></ul><h3>Fireflies</h3><ul><li>Есть режим записи транскрипта без ограничений на их количество (подробнее);</li></ul><ul><li>Умеет обрабатывать загруженные видео- или аудиозаписи митингов;</li></ul><ul><li>Умеет автоматически выгружать саммари в Google Docs, Slack и Confluence (только Cloud).</li></ul><h2>Вариант 2: для более сложных митингов</h2><p>Наши фавориты:</p><p>🤖 <a href="https://vk.com/away.php?to=https%3A%2F%2Fclaap.io&amp;cc_key=">Claap.io</a></p><p>🤖 <a href="https://vk.com/away.php?to=https%3A%2F%2Fwww.bluedothq.com%2F&amp;cc_key=">Bluedot</a></p><p>🤖 <a href="https://vk.com/away.php?to=https%3A%2F%2Fwww.sembly.ai%2F&amp;cc_key=">Sembly.ai</a></p><p>Эти инструменты лучше подойдут для более сложных митингов (сложнее контекст или больше участников), но их использование предполагает платный тариф, либо создание нового аккаунта каждый раз по достижению лимита.</p><p>Чем они лучше, чем <a href="https://vk.com/away.php?to=http%3A%2F%2Ffireflies.ai&amp;cc_key=">Fireflies</a> / <a href="https://vk.com/away.php?to=https%3A%2F%2Fwww.supernormal.com%2F&amp;cc_key=">Supernormal</a>:</p><ul><li>У всех более качественное саммари.</li><li>Они позволяют отредактировать саммари прямо в приложении..</li></ul><h3>Bluedot</h3><ul><li>Его можно интегрировать с Jitsy.</li></ul><ul><li>Максимум 5 митингов на бесплатном аккаунте (на всю жизнь аккаунта);.</li><li>Видеозаписи встреч есть только на платном тарифе ($18/месяц).</li><li>На Basic-плане ($18/месяц) – 1 час на встречу максимум (на тарифе Pro ($25) этого ограничения нет).</li></ul><h3>Claap.io</h3><ul><li>Видеозапись экрана включена по умолчанию, удобно записывать созвоны с демонстрацией экрана;</li></ul><ul><li>Довольно богатая функциональность (например, в одном из платных тарифов заявлена функция на лету переводить с разных языков на заданный).</li></ul><ul><li>Максимум 10 митингов на бесплатном аккаунте (на всю жизнь аккаунта);</li><li>Дорогой: тариф Pro – 24€/месяц, Business – €48/месяц.</li></ul><h3>Sembly.ai</h3><ul><li>Хорошо справляется с переключением между языками во время митинга (русский, английский, французский).</li></ul><ul><li>Всего 1 загрузка (upload) и 1 час онлайн-записи в месяц на бесплатном тарифе.</li><li>Тарифы: $15 или $30 в месяц.</li><li>Не очень удобный формат экспорта PDF.</li></ul><h2>Как использовать AI-инструменты</h2><h3>Вариант 1. Подключение к онлайн-встрече на примере Fireflies</h3><p>Зарегистрируйтесь на сайте Fireflies.ai.</p><p>Интегрируйте сервис с рабочим календарем (Google Calendar, Microsoft Outlook и др.)</p><p>Note: можно подключить Fireflies к аккаунту с пустым календарем, если не хотите, чтобы он знал о встречах больше, чем нужно.</p><p>Настройте основные параметры в личном кабинете:</p><ul><li>Выберите язык транскрипции, который команда использует на встречах (доступны русский, английский и другие языки);</li><li>Настройте безлимитные <a href="https://guide.fireflies.ai/hc/en-us/articles/21617190473617-How-to-get-unlimited-meeting-transcripts-on-Fireflies-ai-s-Free-plan">транскрипты</a>;</li><li>Укажите круг получателей, которым будут приходить уведомления о готовых транскриптах и МоМ;</li><li>Важно: проверьте, что в <a href="https://app.fireflies.ai/settings">настройках</a> по умолчанию доступ к записям митингов только у вас.</li></ul><p>Установите расширение Fireflies для браузера (Chrome Extension).</p><p>Подключите нужные интеграции для хранения МоМ: Google Docs, Notion, Confluence, Microsoft Teams, Slack или другие платформы.</p><p>Важно: помните, что качество саммари может быть посредственным. Не отправляйте саммари в каналы/спейсы, доступные другим до того, как проверите/поправите саммари/транскрипт вручную.</p><p>При настроенном автозапуске Fireflies бот будет самостоятельно присоединяться к онлайн-встречам. Если вы этого не хотите — не заводите такие встречи в подключенном календаре, а включайте запись вручную через расширение браузера.</p><p>При подключении бота к конференции предоставьте инструменту необходимые разрешения для доступа к микрофону и видео.</p><p>После завершения встречи Fireflies автоматически сохранит аудиозапись, создаст транскрипт и MoM, а затем отправит уведомление о готовности на почту.</p><h4>Лайфхаки</h4><p>Бесплатный план предоставляет 20 кредитов AI (например, 20 бесплатных резюме совещаний). После того, как они закончатся, саммари не будут генерироваться автоматически. Но можно копировать транскрипт в ChatGPT или DeepSeek и просить их сгенерировать саммари.</p><p>Как это сделать:</p><ul><li>Соберите текстовую расшифровку встречи.</li><li>Отправьте запрос в ChatGPT.com / Deepseek.com / Claude.ai / любой другой другой промт. Текст запроса в AI сильно зависит от того, что вы хотите получить в результате. .</li></ul><p>Пример запроса к ИИ:</p><p><i>Привет!</i></p><p><i>Подготовь, пожалуйста, саммари по протоколу встречи.</i></p><p><i>В саммари выдели для каждого участника 2 части:</i></p><ol><li><i>“что сделано”,</i></li></ol><ol><li><i>“что нужно сделать”.</i></li></ol><p><i>Формат результата ожидаю такой:</i></p><p><i>Person 1</i></p><p><i>Что сделано:</i></p><ul><li><i>задача 1,</i></li></ul><ul><li><i>задача 2,</i></li></ul><p>…</p><p><i>Что нужно сделать:</i></p><ul><li><i>задача 1,</i></li></ul><ul><li><i>задача 2,</i></li></ul><p>…</p><p><i>Person 2</i></p><p><i>Что сделано:</i></p><ul><li><i>задача 1,</i></li></ul><ul><li><i>задача 2,</i></li></ul><p>…</p><p><i>Что нужно сделать:</i></p><ul><li><i>задача 1,</i></li></ul><ul><li><i>задача 2,</i></li></ul><p>…</p><p><i>Person N</i></p><p>…</p><p><i>В качестве Person может быть любой из участников встречи: [перечисли имена участников списком. Имена использовать лучше в том виде, как они записаны в транскрипте, чтобы AI смог сделать четкое сопоставление].</i></p><p>——</p><p><i>[вставь текст транскрипта / подгрузи документ транскрипта]</i></p><p>Если результат не понравится – попробуйте:</p><p>Добавить контекст для лучшего результата</p><ol><li>Роли участников (если еще не было указано),</li><li>О чем вообще была встреча (например, “это стендап команды разработки”),</li><li>На какие темы стоит обратить особое внимание.</li></ol><p>Уточнить формат результата</p><ul><li>Добавить пример корректного саммари, по модели которого ИИ должен сгенерировать текст.</li></ul><ul><li>Попросить сделать улучшения/правки выданного результата (например, “добавь в результат список участников и дату встречи” или “добавь после каждой задачи ожидаемый срок выполнения”).</li></ul><ul><li>Если один инструмент выдает некачественный результат (например, ChatGPT) — попробуйте другой чат, например, DeepSeek, с тем же промтом. Удивительно, но иногда результат бывает крайне разный.</li></ul><ul><li>Если указанные выше пункты не дали желаемого результата — отредактируйте саммари вручную. Сохраните полученный результат и используйте его в качестве примера ожидаемого результата для саммари следующих встреч.</li></ul><h2>Вариант использования 2</h2><p>Если у вас есть файл записи митинга (аудио или видео) — можно использовать те же Fireflies, Claap.io, Sembly.ai, чтобы загрузить файл и получить транскрипт/саммари.</p><h3>Как можно создавать серию новых аккаунтов</h3><p>Если у вас есть gmail-почта, например user@gmail.com, то в сервисах можно делать новые аккаунты, используя почтовый адрес вида user+[string]@gmail.com.</p><p>Т.е можно регистрировать аккаунты user+1@gmail.com, user+2@gmail.com, …</p><p>Все письма, отправленные на эти адреса, приходят в ящик user@gmail.com.</p><p>Неудобство, связанное с таким подходом — бывает трудно вспомнить, какой созвон записан в каком аккаунте. Поэтому лучше переносить транскрипт/МоМ в какое-то постоянное место (конфлюенс, гугл-док и пр.).</p><h2>Итоги в двух словах:</h2><ol><li>В бесплатном варианте рекомендуем использовать <a href="https://vk.com/away.php?to=http%3A%2F%2Ffireflies.ai&amp;cc_key=">Fireflies.ai</a>.</li><li>В платном варианте — <a href="https://vk.com/away.php?to=https%3A%2F%2Fclaap.io&amp;cc_key=">Claap.io</a> ($30/месяц) или <a href="https://vk.com/away.php?to=https%3A%2F%2Fwww.bluedothq.com%2F&amp;cc_key=">Bluedot</a> ($20/месяц). Их также можно использовать бесплатно, каждый раз создавая новые аккаунты по достижению лимита. У <a href="https://vk.com/away.php?to=https%3A%2F%2Fclaap.io&amp;cc_key=">Claap.io</a> лимит — 10 митингов на бесплатный аккаунт, у <a href="https://vk.com/away.php?to=https%3A%2F%2Fwww.bluedothq.com%2F&amp;cc_key=">Bluedot</a> — 5. Как можно создавать серию аккаунтов на один ящик gmail, описано выше.</li></ol><p>Список протестированных AI-инструментов</p><ul><li><a href="https://vk.com/away.php?to=http%3A%2F%2Ffireflies.ai%2F&amp;cc_key=">Fireflies.ai</a></li><li><a href="https://vk.com/away.php?to=http%3A%2F%2Fclaap.io%2F&amp;cc_key=">Claap.io</a></li><li>Blue Dot</li><li><a href="https://vk.com/away.php?to=http%3A%2F%2Fsembly.ai%2F&amp;cc_key=">Sembly.ai</a></li><li><a href="https://vk.com/away.php?to=https%3A%2F%2Fapp.supernormal.com%2F&amp;cc_key=">Supernormal</a></li><li><a href="https://vk.com/away.php?to=http%3A%2F%2Ftactiq.io%2F&amp;cc_key=">Tactiq.io</a></li><li><a href="https://vk.com/away.php?to=http%3A%2F%2Fmeetgeek.ai%2F&amp;cc_key=">Meetgeek.ai</a></li><li><a href="https://vk.com/away.php?to=http%3A%2F%2Fturboscribe.ai%2F&amp;cc_key=">Turboscribe.ai</a></li><li><a href="https://vk.com/away.php?to=http%3A%2F%2Fnoota.io%2F&amp;cc_key=">Noota.io</a></li><li><a href="https://vk.com/away.php?to=https%3A%2F%2Fnoty.ai%2F&amp;cc_key=">Noty</a></li><li><a href="https://vk.com/away.php?to=https%3A%2F%2Fwww.scribbl.co%2F&amp;cc_key=">Scribbl</a></li><li><a href="https://vk.com/away.php?to=http%3A%2F%2Fcolibri.ai%2F&amp;cc_key=">Colibri.ai</a></li><li><a href="https://vk.com/away.php?to=http%3A%2F%2Fotter.ai%2F&amp;cc_key=">Otter.ai</a> (transkriptor)</li><li><a href="https://vk.com/away.php?to=http%3A%2F%2Fscreenapp.io%2F&amp;cc_key=">Screenapp.io</a></li><li><a href="https://vk.com/away.php?to=https%3A%2F%2Fwww.laxis.com%2F&amp;cc_key=">Laxis</a></li><li><a href="https://vk.com/away.php?to=https%3A%2F%2Fchromewebstore.google.com%2Fdetail%2Fmeet-transcript%2Fjkdogkallbmmdhpdjdpmoejkehfeefnb%3Fpli%3D1&amp;cc_key=">Meet Transcript</a> – not available anymore</li><li><a href="https://vk.com/away.php?to=https%3A%2F%2Ftranskriptor.com%2F&amp;cc_key=">Transkriptor</a></li></ul>]]></content:encoded>
    </item>
    <item>
      <title>Как я хотел создать ИИ-ассистента, а в итоге развернул свой первый сервер с n8n, Docker и Nginx</title>
      <link>https://tproger.ru/articles/kak-ya-hotel-sozdat-ii-assistenta--a-v-itoge-razvernul-svoj-pervyj-server-s-n8n--docker-i-nginx</link>
      <comments>https://tproger.ru/articles/kak-ya-hotel-sozdat-ii-assistenta--a-v-itoge-razvernul-svoj-pervyj-server-s-n8n--docker-i-nginx?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Михаил Анкудинов]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/kak-ya-hotel-sozdat-ii-assistenta--a-v-itoge-razvernul-svoj-pervyj-server-s-n8n--docker-i-nginx</guid>
      <description><![CDATA[<p>История о том, как попытка автоматизировать рутину привела к открытию и прокачке моих технических навыков в DevOps.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/kak-ya-hotel-sozdat-ii-assistenta--a-v-itoge-razvernul-svoj-pervyj-server-s-n8n--docker-i-nginx">Как я хотел создать ИИ-ассистента, а в итоге развернул свой первый сервер с n8n, Docker и Nginx</a>»</p>]]></description>
      <category><![CDATA[API]]></category>
      <category><![CDATA[Git]]></category>
      <category><![CDATA[GitHub]]></category>
      <category><![CDATA[BASIC]]></category>
      <category><![CDATA[Telegram]]></category>
      <category><![CDATA[Docker]]></category>
      <category><![CDATA[Сервер]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 22 Apr 2025 14:00:03 GMT</pubDate>
      <content:encoded><![CDATA[<p>Сначала я думал, что справлюсь за пару часов. В итоге — несколько суток, десятки ошибок, и первый боевой сервер с доменом, Docker и полноценным развертыванием n8n. История о том, как попытка автоматизировать рутину привела к открытию и прокачке моих технических навыков.</p><p>Я создал свой проект с полноценной документацией с сылкой на <a href="https://github.com/Magbusjap/YandexCloudProject.git">Github</a> по развертыванию n8n на собственном сервере.</p><h2>Завязка</h2><p>Изначально я хотел лишь сократить рутинные задачи. Создавал контент, работал над свежими идеями и понимал — мне не хватает времени на то, что действительно важно. На горизонте замаячила идея: создать собственного ИИ-ассистента, который автоматизирует мелочи вроде шаблонов, публикаций и повседневных действий.</p><p>В сети крутился хайп вокруг n8n — open-source, который можно развернуть на любом сервере, и с полной свободой действий. Конечно, до меня не сразу дошло, на официальном сайте очень дорогие тарифы. Поэтому я начал изучать туториалы на Ютубе. В этот момент я даже не подозревал, что эта идея затянет меня на неделю, подарит десятки ошибок и первый полноценный сервер.</p><figure><img src="https://media.tproger.ru/user-uploads/114647/2025-04-21/ae68a402-c9aa-4922-8f3b-0eb00a46235c.png" alt="" /></figure><h2>Развитие: от ноды до ноды</h2><h3>Railway: первая проба пера</h3><p>Самые простые туториалы были про развертывание n8n на собственном компьютере. Некоторые комментарии под такими видео ссылались на то, что развертывание n8n на собственной машине — не самая лучшая идея, и возможно, не самая удачная. Я тогда прислушался к их мнению и решил попробовать сразу поискать другие способы.</p><p>Подходящей оказалась платформа Railway. Бесплатный пробный период, $5 бонуса за привязку GitHub — всё выглядело перспективно. Я:</p><ul><li>подключил GitHub;</li><li>получил API-ключ;</li><li>запустил n8n;</li><li>настроил Telegram-бота.</li></ul><p>И всё шло нормально, пока не начались проблемы с Telegram Trigger — он просто не отвечал. Ошибок в логах почти не было, но и связи — тоже. Я тратил часы, пробовал разные переменные, гуглил, спрашивал у нейросетей — без толку. Тогда в рекламе мне попался Yandex Cloud с двухмесячным бесплатным периодом. Я решил попробовать развернуть n8n на нем.</p><figure><img src="https://media.tproger.ru/user-uploads/114647/2025-04-21/0d21c9ca-8d12-487b-92b5-f078e45aceea.png" alt="" /></figure><h3>Виртуалка, SSH и первый затык</h3><p>Я развернул ВМ на Ubuntu 20.04 LTS, выбрав её за стабильность и поддержку. Конфигурация:</p><ul><li>2 vCPU</li><li>50 ГБ SSD</li><li>Снятие с бонуса: 2683.50 руб/мес</li></ul><p>Сгенерировал SSH-ключ через Git Bash. Первый облом: ключ исчез. После нескольких безуспешных попыток изменить его, понял — проще пересоздать ВМ. У Yandex Cloud есть ограничения:</p><p>нельзя обновить на лету.</p><p>Подключение выглядело так:</p><p>Когда получилось зайти — был настоящий кайф. Я обновил систему, установил Docker, понял, что GUI у сервера не будет — только терминал. Ну что ж, поехали.</p><h3>Docker, docker-compose, и n8n-raw.env</h3><p>Следующим шагом стал</p><p>и файл</p><p>В нём я прописал:</p><p>Это позволило не держать всё в голове и запускать конфигурации быстрее. Первые ошибки появились почти сразу — что-то не так с путями, потом — с переменными. Без ChatGPT и stackoverflow не обошлось.</p><h3>Домены и HTTPS</h3><p>Купил домен</p><p>настроил A-записи, скачал сертификаты. Nginx — отдельная песня. Нужно было:</p><ol><li>Объединить три сертификата в один;</li><li>Подключить его через конфиг;</li><li>Настроить редирект на HTTPS.</li></ol><p>Вот пример из моего nginx.conf:</p><figure><img src="https://media.tproger.ru/user-uploads/114647/2025-04-21/8594dbbc-d99b-4a63-9f19-fa10a6c4bea5.png" alt="" /></figure><h3>Telegram и «почему ты не работаешь?!»</h3><p>Подключил Telegram Trigger — ноль. Ни один запрос не проходил. Ошибки:</p><ul><li>Lost connection to the server</li><li>Webhook error: unexpected status code 403</li><li>Логи молчали или выдавали бессмысленное.</li></ul><p>Проблема оказалась в том, что webhooks шли через HTTP, а всё у меня уже работало через HTTPS. Куки не обрабатывались, туннель API оказался лишним, docker не доверял IP клиента. Пришлось в docker-compose.yml прописывать:</p><p>Потом был конфликт сертификатов, SSE и WebSocket. Я потратил день на всё это — и наконец бот ответил.</p><h2>Разгрузка: спасение в Obsidian и GitHub</h2><p>Всю документацию, команды, даже ошибки я хранил в Obsidian. Там же создавал шаблоны, чтобы не печатать одни и те же команды. Это было моим вторым спасением после ChatGPT.</p><p>Когда всё начало получаться — создал <a href="https://github.com/Magbusjap/YandexCloudProject.git">репозиторий</a>. Сейчас там:</p><ul><li>README.md с пошаговыми действиями;</li><li>n8n-raw.env для автоматизации запуска;</li><li>Docker-конфиги.</li></ul><p>Проект пока не идеален, но рабочий и повторяемый.</p><h2>Финал: в этой истории я вырос</h2><p>Когда Telegram наконец сработал — было 3 часа ночи. Я сидел в темноте, всматривался в терминал и не верил. Всё. Бот работает. HTTPS есть. Docker жив. Я сам развернул свой первый полноценный сервер. Сам. С нуля. С ошибками. Без опыта.</p><p>Теперь я могу:</p><ul><li>Развернуть ВМ и подключиться через SSH;</li><li>Настроить Docker и Nginx;</li><li>Создать и связать домен;</li><li>Конфигурировать n8n под прод;</li><li>Документировать всё на GitHub.</li></ul><p>Я только начал, но теперь точно знаю — могу не просто тестировать, а создавать решения с нуля.</p>]]></content:encoded>
    </item>
    <item>
      <title>«Самый крутой код, что я писал»: Гейтс выложил исходники Altair BASIC — с него в 1975 началась Microsoft</title>
      <link>https://tproger.ru/news/-samyj-krutoj-kod--chto-ya-pisal---gejts-vylozhil-ishodniki-altair-basic---s-nego-v-1975-nachalas-microsoft</link>
      <comments>https://tproger.ru/news/-samyj-krutoj-kod--chto-ya-pisal---gejts-vylozhil-ishodniki-altair-basic---s-nego-v-1975-nachalas-microsoft?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Булат Яббаров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/-samyj-krutoj-kod--chto-ya-pisal---gejts-vylozhil-ishodniki-altair-basic---s-nego-v-1975-nachalas-microsoft</guid>
      <description><![CDATA[<p>Билл Гейтс выложил исходники Altair BASIC — первого кода Microsoft. Это 157 страниц, с которых началась история компании в 1975 году</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/-samyj-krutoj-kod--chto-ya-pisal---gejts-vylozhil-ishodniki-altair-basic---s-nego-v-1975-nachalas-microsoft">«Самый крутой код, что я писал»: Гейтс выложил исходники Altair BASIC — с него в 1975 началась Microsoft</a>»</p>]]></description>
      <category><![CDATA[IDE]]></category>
      <category><![CDATA[Windows]]></category>
      <category><![CDATA[Microsoft]]></category>
      <category><![CDATA[GitHub]]></category>
      <category><![CDATA[BASIC]]></category>
      <category><![CDATA[Windows 11]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 04 Apr 2025 03:51:31 GMT</pubDate>
      <content:encoded><![CDATA[<p>В честь 50-летия Microsoft, Билл Гейтс опубликовал исходный код Altair BASIC — той самой программы, с которой началась история компании.</p><p>В 1975 году Гейтс и Пол Аллен создали её для микрокомпьютера Altair 8800. Тогда компания называлась Micro-Soft — с дефисом.</p><h2>С чего всё началось</h2><p>Вдохновением для Altair BASIC стала обложка январского выпуска журнала Popular Electronics, где был изображён Altair 8800 — первый массовый персональный компьютер.</p><p>Гейтс и Аллен связались с производителем MITS и предложили написать для машины интерпретатор языка BASIC. Программу они поначалу только «продавали на словах» — кода ещё не существовало.</p><p>Но спустя бессонные месяцы он появился и это стало первым продуктом будущей Microsoft.</p><h2>«Самый крутой код, что я писал»</h2><p>В блоге Gates Notes Билл называет Altair BASIC своим «самым крутым кодом» и вспоминает, как держал в руках метровую распечатку исходников. Теперь эти 157 страниц доступны всем желающим — распечатать, изучать или просто полюбоваться кусочком истории.</p><p>Гейтс подчёркивает, что без таких людей, как Стив Балмер и Сатья Наделла, Microsoft не достигла бы того, что есть сейчас: «50 лет — серьёзная отметка и мы не прошли бы этот путь без невероятной команды».</p><h2>Символичный жест</h2><p>Журнал Thurrott назвал публикацию кода «самым гейтсовским способом отпраздновать юбилей компании» — и с этим трудно не согласиться. В эпоху ИИ, Xbox и Windows 11, Гейтс вернулся к коду, с которого всё началось — строчкам, написанным на бумаге задолго до IDE и GitHub.</p><p>Исходники Altair BASIC доступны на<a href="https://www.gatesnotes.com/microsoft-original-source-code">Gates Notes</a>, а тем, кто решится их распечатать, придётся запастись терпением — файл состоит из 157 страниц.</p>]]></content:encoded>
    </item>
    <item>
      <title>«Код как по нотам? Не с ИИ-копилотом»: senior рассказал о реальной работе с ИИ-помощниками</title>
      <link>https://tproger.ru/news/-kod-kak-po-notam--ne-s-ii-kopilotom---senior-rasskazal-o-realnoj-rabote-s-ii-pomoshhnikami</link>
      <comments>https://tproger.ru/news/-kod-kak-po-notam--ne-s-ii-kopilotom---senior-rasskazal-o-realnoj-rabote-s-ii-pomoshhnikami?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Булат Яббаров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/-kod-kak-po-notam--ne-s-ii-kopilotom---senior-rasskazal-o-realnoj-rabote-s-ii-pomoshhnikami</guid>
      <description><![CDATA[<p>Senior-разработчик объяснил, почему ИИ-помощники не заменят программистов: они ускоряют рутину, но не отвечают за архитектуру и защиту</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/-kod-kak-po-notam--ne-s-ii-kopilotom---senior-rasskazal-o-realnoj-rabote-s-ii-pomoshhnikami">«Код как по нотам? Не с ИИ-копилотом»: senior рассказал о реальной работе с ИИ-помощниками</a>»</p>]]></description>
      <category><![CDATA[Stack Overflow]]></category>
      <category><![CDATA[IDE]]></category>
      <category><![CDATA[Искусственный интеллект]]></category>
      <category><![CDATA[SQL]]></category>
      <category><![CDATA[Боты]]></category>
      <category><![CDATA[BASIC]]></category>
      <category><![CDATA[Бэкенд]]></category>
      <category><![CDATA[Библиотеки]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 01 Apr 2025 05:13:46 GMT</pubDate>
      <content:encoded><![CDATA[<p>Разработчик Матейс Лагерберг <a href="https://mlagerberg.com/blog-ai-copilot/">поделился</a> своим взглядом на работу с ИИ-копилотами — без хайпа и иллюзий.</p><p>Он почти 25 лет пишет код и пережил уже не одну «революцию» в индустрии. Сейчас, по его мнению, мы наблюдаем не конец профессии, а очередной виток развития инструментов.</p><p>Больше новостей — в нашем тг-канале «<a href="https://t.me/your_tech">Представляешь»</a></p><h2>«Когда я был маленьким…»</h2><p>Матейс вспоминает, как начинал программировать на стареньком 486-м ПК отца, с книжкой по DOS-командам и QBasic. Без автодополнения, без подсветки синтаксиса, без Stack Overflow.</p><p>Только PRINT, библиотеки и надежда, что после очередного запуска программа не вылетит. Каждый новый инструмент — будь то ConTEXT, Eclipse или Stack Overflow — упрощал жизнь, сокращал время на рутину и освобождал место для настоящей работы: понимания задач, архитектуры и решений.</p><p>ИИ сегодня — просто следующий шаг в этой цепочке. Как и IDE раньше, он помогает быстрее писать код. Но, как подчеркивает Лагерберг, это не революция. И уж точно не повод увольнять разработчиков.</p><h2>Что ИИ умеет хорошо — и где спотыкается</h2><p>ИИ-помощники вроде ChatGPT, Codeium и Windsurf действительно ускоряют повседневную рутину. Надо сгенерировать перевод, сэкономить на бойлерплейте, быстро понять, как устроен новый фреймворк — пожалуйста.</p><p>В этом смысле ИИ работает почти как персональный наставник: объясняет сложное простыми словами, не скатываясь в обучалку для новичков.</p><p>Но стоит копнуть глубже — и начинаются проблемы. Лагерберг вспоминает, как на коленке сгенерированный бэкенд оказался абсолютно незащищенным от SQL-инъекций. Код работал, но был уязвим до абсурда.</p><p>ИИ знал, как защитить — но не сделал этого сам. Надо было явно спросить. А чтобы задать правильный вопрос, ты уже должен понимать, как работает защита.</p><h2>ИИ — не магия, а просто дорогой предсказатель</h2><p>Многие забывают, что ИИ — это всего лишь продвинутое угадывание следующего слова. Та же логика, что и в автозамене на смартфоне, только с огромными вычислительными мощностями.</p><p>Никакого «разумного понимания» нет. Поэтому ИИ может не только ошибаться, но и выдумывать функции, стирать код, ломать архитектуру — просто потому, что не понял контекста. Особенно если контекста много.</p><h2>Почему нужен человек — и, возможно, даже больше, чем раньше</h2><p>Лагерберг отмечает: даже если ИИ выглядит уверенным, его решения могут быть опасны. Неопытные разработчики, копируя с Stack Overflow, рисковали и раньше. Сейчас они рискуют в разы больше — потому что доверяют коду, который выглядит идеально, но может оказаться полным бредом.</p><p>Поэтому, по мнению автора, сейчас требуется не меньше, а больше экспертизы: нужно уметь распознавать, когда ИИ ошибается. А для этого надо читать и понимать код.</p><h2>Вывод: пусть копилот сидит на пассажирском</h2><p>Лагерберг продолжит пользоваться ИИ, но с оглядкой.</p><p>Он не против помощника — но пусть тот сидит сбоку, а не за рулем. Потому что карту он читает, может, и хорошо. Но рулить всё равно должен человек.</p>]]></content:encoded>
    </item>
    <item>
      <title>Конвейер Devops, часть 1: как организовать рабочее место и настроить облако из KVM+libvirt</title>
      <link>https://tproger.ru/articles/konvejer-devops--chast-1--kak-organizovat-rabochee-mesto-i-nastroit-oblako-iz-kvm-libvirt</link>
      <comments>https://tproger.ru/articles/konvejer-devops--chast-1--kak-organizovat-rabochee-mesto-i-nastroit-oblako-iz-kvm-libvirt?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Олег Филон]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/konvejer-devops--chast-1--kak-organizovat-rabochee-mesto-i-nastroit-oblako-iz-kvm-libvirt</guid>
      <description><![CDATA[<p>В этой серии Олег Филон, ментор Эйч Навыки, рассказывает, как прийти к крутому CI/CD пайплайну. Сегодня разбираемся, как девопсу настроить свое рабочее место.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/konvejer-devops--chast-1--kak-organizovat-rabochee-mesto-i-nastroit-oblako-iz-kvm-libvirt">Конвейер Devops, часть 1: как организовать рабочее место и настроить облако из KVM+libvirt</a>»</p>]]></description>
      <category><![CDATA[Тестирование]]></category>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Git]]></category>
      <category><![CDATA[IDE]]></category>
      <category><![CDATA[DevOps]]></category>
      <category><![CDATA[HTML]]></category>
      <category><![CDATA[GitHub]]></category>
      <category><![CDATA[BASIC]]></category>
      <category><![CDATA[HR]]></category>
      <category><![CDATA[Docker]]></category>
      <category><![CDATA[Intel]]></category>
      <category><![CDATA[QA]]></category>
      <category><![CDATA[AMD]]></category>
      <category><![CDATA[YouTube]]></category>
      <category><![CDATA[ARM]]></category>
      <category><![CDATA[Игра]]></category>
      <category><![CDATA[Приложение]]></category>
      <category><![CDATA[Разработка]]></category>
      <category><![CDATA[Сервер]]></category>
      <category><![CDATA[Машин]]></category>
      <category><![CDATA[1C]]></category>
      <category><![CDATA[CI/CD]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 17 Mar 2025 10:00:03 GMT</pubDate>
      <content:encoded><![CDATA[<p>Открываем серию материалов о том, как устроен конвейер DevOps и как шаг за шагом построить полный CI/CD пайплайн.</p><p>Я — Олег Филон,<a href="https://h.careers/curators/oleg-philon"> ментор Эйч Навыки</a> и Senior DevOps Engineer. Мы разберем ключевые инструменты, которые помогают автоматизировать разработку, тестирование и развертывание приложений. Сегодня на повестке — развертывание собственного облака с помощью KVM и libvirt.</p><h2>О минимальных требованиях и поддержке виртуализации</h2><p>Сейчас популярная тема на Youtube — Home Lab, или домашняя сеть с кучей компьютерного и сетевого оборудования, часто в выделенном помещении вроде серверной. И один из самых известных блогеров в этом направлении — Jeff Geerling, вот его <a href="https://github.com/geerlingguy">GitHub</a>. У меня, кстати, тоже есть небольшой блог — здесь можно <a href="https://ophil.ru/blog/">почитать</a> статьи, а здесь — <a href="https://github.com/ophilon/blog">посмотреть</a> код на Гитхабе.</p><p>Однако наша цель гораздо скромнее — мы будем строить на обычном ПК или ноутбуке персональное облако, используя KVM-модуль из ядра Linux и набор утилит libvirt и qemu. Сразу определимся с минимальными требованиями к железу, чтобы попробовать руками всё обсуждаемое.</p><p>Мой рабочий ноут — китайский Chuwi GemiBook Plus с процессором Intel N100, 4 ядра, 16GB памяти, nvme диск на 960GB — вполне справляется с такими задачами.</p><p>Сразу объяснюсь за невольную рекламу дешёвых китайских ноутов: я не сразу выбрал этот 200-евро-бук. У меня в домашней сети есть несколько SBC (single board computer) на arm64 и risc-V — опыт весьма интересный. Во-первых, Линукс на таких экзотических компьютерах сильно отличается от обычных ПК. Во-вторых, я стал ценить не абстрактные BogoMIPS из dmesg, а реальный отклик в повседневной работе: веб, YouTube, билды приложений. Неудобств нет, а TDP (thermal design power) — 2-5W.</p><p>Как и многие из вас, я беспокоюсь, что оставляю углеродный след, но нельзя сравнивать мой Intel 10W N100 и процессор, который греется как утюг, но для глажки бесполезен, и даже наоборот, требует себя охлаждать — сначала мощными кулерами, а в жаркую погоду ещё и кондиционерами с весьма низким КПД. Короче, ваш компьютер справится с 2-3 виртуалками без проблем. Но на всякий случай проверьте, что аппаратная виртуализация поддерживается процессором.</p><p>Установить связку KVM+libvirt можно во <a href="https://sysguides.com/install-kvm-on-linux">многие дистрибутивы Linux</a>. Не будем, однако, спешить, а выполним полезную подготовительную работу. Моя основная ОС уже много лет — Ubuntu. В ней есть удобный инсталятор, новые релизы каждые полгода и LTS (Long Term Support) для тех, кто предпочитает стабильность. Есть ещё бесплатный на 5 машин <a href="https://ubuntu.com/pro">Ubuntu Pro</a> с патчами безопасности в дополнительном репо. Но главная фича, из-за которой я не меняю дистрибутив — поддержка файловой системы ZFS. Вот о ней и поговорим.</p><h2>Лирическое отступление: что такое ZFS и в чем ее прикол</h2><p>ZFS — самая сложная из многочисленных ФС. Она является дефолтной во FreeBSD и не только, а также в дистрибутиве Proxmox, который использует <a href="https://openzfs.github.io/openzfs-docs/Basic%20Concepts/index.html">OpenZFS</a>. Разница между Open и просто ZFS в лицензии. Оригинальная лицензия не была свободной. Переписывание многих модулей и библиотек, чтобы эту ФС можно было включить в ядро Linux, заняло много лет. В Ubuntu, начиная c версии 20.04, уже можно выбрать ZFS как опцию при установке. Кратко перечислю, что нам даёт ZFS:</p><ol><li>Встроенное шифрование диска, не нужны никакие LUKS и танцы с бубном.</li><li>Модные контейнерные OverlayFS, виртульные диски формата QCOW2, используют COW (copy-on-write). ZFS это тоже умеет, можно сказать, она оптимизирована для контейнеров и ВМ.</li><li>Замечательная фича — встроенный RAIDZ. В моём Proxmox сервере 8 портов SATA, мощный корпус со стойкой на 8 HD. Купил 7 штук одинаковых 4TB дисков, добавил в пул raidZ, в итоге 24TB довольно шустрого хранилища.</li><li>Можно забыть как кошмарный сон мучения с mdadm, lvm2. Партишены увеличиваются без всякой суеты с PV/VG/LV. Впрочем, XFS это тоже умеет, поговорим позже и о ней.</li></ol><p>На будущее: виртуализация никак не привязана к файловой системе, можно использовать то, что уже есть, в том числе и привычный дистрибутив. Буду рассказывать, однако, только об установке на Ubuntu.</p><h2>Готовимся к установке KVM+libvirt</h2><p>По умолчанию libvirt создаёт внутреннюю сеть на виртуальном устройстве в режиме nat. Для единственного хоста это не так важно, виртуалка доступна, но полезно настроить плоскую сеть, где ВМ будет иметь свой IP-адрес и физический хост.</p><p>Для этого сделаем заранее на хостовой машине виртуальное устройство br0 и будем привязывать виртуалки к этому устройству. Cеть в обычном десктопном Ubuntu настраивается сервисом NetworkManager:</p><ul><li>через графический интерфейс,</li><li>через утилиту интерфейса командной строки nmcli,</li><li>через nmtui с текстовым интерфейсом.</li></ul><p>Для серверных конфигураций документация рекомендует <a href="https://documentation.ubuntu.com/server/explanation/networking/configuring-networks/#bridging-multiple-interfaces">netplan</a>. В случае сервера необходимо присваивать хостовым машинам  статические IP-адреса вплоть до того, что Proxmox — гораздо более мощный сервер виртуальных машин с возможностью кластеризации, миграции ВМ, ceph и так далее. Он отказался от NetworkManager и требует наличия ethernet порта.</p><p>Мы же хотим сохранить удобство десктопной OS и добавить серверные возможности, поэтому будем использовать пакет <a href="https://netplan.readthedocs.io/en/stable/howto/">netplan.io</a>, который вполне совместим с NetworkManager. Вот пример конфигурации для хостовой машины, создающий на физическом ethernet устройстве виртуальный интерфейс br0:</p><p>Создав файл /etc/netplan/01-br0.yaml, сначала проверим его корректность: sudo netplan try /etc/netplan/01-br0.yaml, и если Configuration accepted, применяем его: sudo netplan apply .... Посмотрим, что у нас с сетью. Должно быть что-то похожее на это:</p><p>Во второй строке вывода стоит мой eth0, который является физическим интерфейсом, он активен (link state UP), но адреса не имеет. В последней строке мой br0, который выступает виртуальным интерфейсом с правильным статическим адресом. Более того, если мы посмотрим настройки с помощью brctl из пакета bridge-utils, то увидим что у нас появился полноценный бридж:</p><p>Подготовка к установке KVM+libvirt завершена, возвращаемся к документу с сайта <a href="https://sysguides.com/install-kvm-on-linux">https://sysguides.com/</a>. Для Ubuntu это команда:</p><p>На первых порах удобно прибегнуть к десктопному приложению virt-manager, позволяющему создавать, запускать, управлять виртуальными машинами. Под капотом прячется много низкоуровневых утилит, поэтому рано или поздно придётся познакомиться и с libvirt-clients, и с qemu-utils, и с guestfs-tools.</p><h2>Разворачиваем виртуальные машины</h2><p>Теперь можем попробовать создать первые виртуалки. Первым делом, как рекомендовано, добавим себя в группу libvirt, чтобы иметь возможность управлять виртуальными машинами, и настроим ACL на каталог, где хранятся образы виртуальных машин:</p><p>Самый простой и знакомый способ создания виртуальной машины — использовать iso-образ. Установка будет напоминать сотни раз пройденные шаги: скачать образ, указать путь к нему, задать имя виртуальной машины, количество оперативной памяти, выделить ядра процессора и так далее.</p><p>Расскажу чуть подробнее про пару новых опций для virt-manager. Во-первых, это использование настроенного ранее виртуального интерфеса br0. Во-вторых, формат виртуального диска QCOW2. Вот, например, настройки одной из моих виртуалок:</p><p>Здесь показаны 4 размера:</p><ul><li>ls -lh видимый размер файла имиджа;</li><li>du -BM занимаемое место на диске, qemu-img info выдаёт его внутренние параметры, в частности: virtual size — 10 GiB; реальный размер файла disk size — 5.11 GiB.</li></ul><p>Это возможности того самого COW (copy-on-write). Виртуальный размер — тот, что мы указали при создании ВМ, а реальный размер файла — сколько фактически места занято на диске. Внутри ВМ мы будем видеть эту разницу как свободное место, и оно также остаётся свободным на хостовой ФС. Можно заказывать размер диска с запасом, QCOW2-формат не займёт место, пока оно не потребуется под данные внутри ВМ.</p><p>Тут бы надо приложить десяток картинок, но оставляю вам шанс догадаться самим, или поискать инструкцию с картинками. В итоге должно получиться что-то вроде этого:</p><figure><img src="https://media.tproger.ru/user-uploads/101078/2025-03-10/e371863c-d83f-42e4-9e79-76d18fc07130.png" alt="" /></figure><p>Общий вид virt-manager  со списком ВМ на 2 хостах:</p><figure><img src="https://media.tproger.ru/user-uploads/101078/2025-03-10/39371c29-2703-4fed-ba0e-f544a2439887.png" alt="" /></figure><p>Десктопное приложение virt-manager — не единственный способ создания ВМ. Можно (и иногда удобнее) использовать командную строку и соответствующие утилиты. Также установить ВМ из готового образа в формате для libvirt/qemu. Например, для <a href="https://download.freebsd.org/releases/VM-IMAGES/14.2-RELEASE/amd64/Latest/">релиза 14.2 FreeBSD</a> всё, что заканчивается на .qcow2.xz, raw.xz — это образы для libvirt/qemu. После скачивания и проверки контрольных сумм выполним команды:</p><p>Предположим, вы успешно создали одну или несколько ВМ, проверили их в графическом режиме или настроили ключи для ssh. Настало время навести порядок с DNS.</p><p>У меня раздавал адреса и имена роутер от провайдера. Удобнее настроить на вашем основном компе сервис dnsmasq, который включается первым и по умолчанию всегда доступен. Он умеет также dhcp, так что в одном конфиге сможем сразу задавать и IP-адреса, и имена ВМ. Вот часть моего конфига:</p><p>MAC-адреса присваиваются в virt-manager, адреса до 99 оставил под WiFi; со 100 до 200 виртуалки с отдельными диапазонами для каждого хоста; адреса с 201 по 254 — «железные» хосты, то есть реальные устройства. Напомню, после каждой правки конфига сервис dnsmasq надо рестартовать.</p><p>Если в будущем ваше персональное облако разрастётся, рекомендую обратить внимание на китайский KVM-свитч <a href="https://aliexpress.ru/item/1005007906670242.html?sku_id=12000042791841633&amp;spm=a2g2w.productlist.search_results.18.6a711cfeSjG1lb">4K HDMI USB KVM Switch</a>. В этом случае KVM означает Keyboard Video Mouse — переключатель для управления несколькими компьютерами с одного комплекта устройств. Это сокращение как нельзя кстати для нашей темы.</p><p>Мы разобрали, как развернуть персональное облако DevOps с помощью KVM и libvirt. В следующей статье рассмотрим Fedora Core дистрибутив и инструмент mise — удобную альтернативу pyenv и другим менеджерам версий.</p>]]></content:encoded>
    </item>
    <item>
      <title>BASIC исполнилось 60 лет: каким язык был десятки лет назад и чем живет сегодня</title>
      <link>https://tproger.ru/news/basic-ispolnilos-60-let--kakim-yazyk-byl-desyatki-let-nazad-i-chem-zhivet-segodnya</link>
      <comments>https://tproger.ru/news/basic-ispolnilos-60-let--kakim-yazyk-byl-desyatki-let-nazad-i-chem-zhivet-segodnya?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Булат Яббаров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/basic-ispolnilos-60-let--kakim-yazyk-byl-desyatki-let-nazad-i-chem-zhivet-segodnya</guid>
      <description><![CDATA[<p>Накануне легендарный язык программирования BASIC отметил свое 60-летие. Вспомнили, как зарождался инструмент и что с ним происходит сегодня</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/basic-ispolnilos-60-let--kakim-yazyk-byl-desyatki-let-nazad-i-chem-zhivet-segodnya">BASIC исполнилось 60 лет: каким язык был десятки лет назад и чем живет сегодня</a>»</p>]]></description>
      <category><![CDATA[BASIC]]></category>
      <category><![CDATA[Языки программирования]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 02 May 2024 13:50:31 GMT</pubDate>
      <content:encoded><![CDATA[<p>60 лет назад, 1 мая 1964 года, в 4 утра, в колледже Дартмут началась тихая революция в мире вычислений.</p><p>Математики Джон Кемени и Томас Курц успешно запустили первую программу, написанную на новом языке программирования BASIC (Beginner's All-Purpose Symbolic Instruction Code), на мейнфрейме General Electric GE-225.</p><h2>Простота и доступность</h2><p>BASIC был интерпретируемым языком программирования, который работал построчно и использовал номера строк. Программы могли использовать команды типа GOTO для создания простых циклических подпрограмм, что делало язык особенно популярным среди начинающих.</p><p>Простота синтаксиса BASIC, основанная на ключевых словах на английском языке, делала его легким для освоения новичками.</p><h2>BASIC и персональные компьютеры</h2><p>В 1975 году Пол Аллен и Билл Гейтс адаптировали BASIC для персональных компьютеров, таких как Altair 8800, что позволило основать Microsoft.</p><p>В 1976 году Стив Возняк разработал интерпретатор BASIC для Apple I, а затем и Applesoft BASIC для Apple II, который оставался ключевой частью этой платформы на протяжении всего ее существования.</p><p>В конце 1970-х и начале 1980-х BASIC стал важным элементом многих домашних компьютеров, таких как Atari 800 и Commodore 64.</p><figure><img src="https://media.tproger.ru/user-uploads/98945/2024-05-02/969f7e4a-295e-4dee-af10-34b368c48b62.jpeg" alt="" /></figure><h2>BASIC сегодня</h2><p>Сегодня BASIC популярен в кругах любителей ретро-вычислений, но редко используется на практике.</p><p>Однако он продолжил развиваться. Существует множество диалектов BASIC, наиболее известные из которых — это продукты Microsoft, такие как Visual Basic и Visual Basic for Applications (VBA).</p><p>Эти языки стали популярными для разработки Windows-приложений и скриптинга в Microsoft Office. Современные языки, такие как Python и JavaScript, заняли место BASIC, став популярными благодаря своей простоте и доступности.</p>]]></content:encoded>
    </item>
    <item>
      <title>Стартует батл языков программирования 2023</title>
      <link>https://tproger.ru/articles/startuet-batl-yazykov-programmirovaniya-2023</link>
      <comments>https://tproger.ru/articles/startuet-batl-yazykov-programmirovaniya-2023?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Рафаил Агазода]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/startuet-batl-yazykov-programmirovaniya-2023</guid>
      <description><![CDATA[<p>Стартует турнир за звание лучшего языка программирования в 2023 году среди читателей Tproger. Кто же победит в этом году?</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/startuet-batl-yazykov-programmirovaniya-2023">Стартует батл языков программирования 2023</a>»</p>]]></description>
      <category><![CDATA[JavaScript]]></category>
      <category><![CDATA[Java]]></category>
      <category><![CDATA[C++]]></category>
      <category><![CDATA[C#]]></category>
      <category><![CDATA[Python]]></category>
      <category><![CDATA[Ruby]]></category>
      <category><![CDATA[PHP]]></category>
      <category><![CDATA[Swift]]></category>
      <category><![CDATA[Golang]]></category>
      <category><![CDATA[Язык Си]]></category>
      <category><![CDATA[BASIC]]></category>
      <category><![CDATA[Rust]]></category>
      <category><![CDATA[Kotlin]]></category>
      <category><![CDATA[Pascal]]></category>
      <category><![CDATA[Dart]]></category>
      <category><![CDATA[Лучший язык 2023]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 18 Dec 2023 08:27:48 GMT</pubDate>
      <content:encoded><![CDATA[<p>Подходит к концу 2023 год, а это значит, пора подвести его итоги и запустить традиционный батл за звание лучшего языка программирования на Tproger.</p><p>Мы уже проводили батл в прошлых <a href="https://tproger.ru/articles/battl-jazykov-programmirovanija-2022-zavershilsja">2020</a>, <a href="https://tproger.ru/articles/battl-jazykov-programmirovanija-2021-zavershilsja">2021</a> и <a href="https://tproger.ru/articles/battl-jazykov-programmirovanija-2022-zavershilsja-2">2022</a> годах: первые два раза в голосовании победил Python, а в прошлом году — C#.</p><p>Вот, кто поборется за звание лучшего языка в 2023 году:</p><figure><img src="https://media.tproger.ru/user-uploads/48741/2023-12-18/7e3c300f-7dab-486d-af02-360ba8dc5952.png" alt="" /></figure><p>Правила батла остаются прежними:</p><ol><li>В батле участвует 16 языков программирования.</li><li>Ежедневно соревнуются две пары.</li><li>За любимый язык можно проголосовать в течение 24 часов.</li><li>Пары составляются рандомно, так что выбирайте язык, который субъективно нравится больше.</li><li>В финале мы определим тройку победителей.</li><li>Старт — 19 декабря, финал — 26 декабря.</li></ol><p>Примечание Сохраните эту запись в закладки: сюда мы добавим ссылки на все раунды батла во время голосования.</p><ol><li><a href="https://tproger.ru/articles/nachalsya-battl-yazykov-programmirovaniya-2023">Первый раунд</a></li><li><a href="https://tproger.ru/articles/vtoroj-raund-bitvy-yazykov-programmirovaniya-v-2023-godu">Второй раунд</a></li><li><a href="https://tproger.ru/articles/tretij-raund-bitvy-yazykov-programmirovaniya-v-2023-godu">Третий раунд</a></li><li><a href="https://tproger.ru/articles/chetvyortyj-raund-bitvy-yazykov-programmirovaniya-v-2023-godu">Четвёртый раунд</a></li><li><a href="https://tproger.ru/articles/pyatyj-raund-bitvy-yazykov-programmirovaniya-v-2023-godu">Пятый раунд</a></li><li><a href="https://tproger.ru/articles/westoj-raund-bitvy-yazykov-programmirovaniya-v-2023-godu">Шестой раунд</a></li><li><a href="https://tproger.ru/articles/polufinal-bitvy-yazykov-programmirovaniya-v-2023-godu">Полуфинал</a></li><li><a href="https://tproger.ru/articles/final-bitvy-yazykov-programmirovaniya-v-2023-godu">Финал</a></li><li><a href="https://tproger.ru/articles/batl-yazykov-programmirovaniya-2023-zaverwilsya">Результаты</a></li></ol><p>Также подпишитесь на тэг <a href="https://tproger.ru/tag/toplang2023">Лучший язык 2023</a>. Тогда новые раунды батла появятся в вашей личной ленте, а вам будут приходить уведомления об их появлении.</p><p>Старт уже завтра — 19 декабря в 11:00 МСК. Следите, участвуйте, голосуйте!</p>]]></content:encoded>
    </item>
    <item>
      <title>Начался баттл языков программирования 2022</title>
      <link>https://tproger.ru/articles/nachalsja-battl-jazykov-programmirovanija-2022</link>
      <comments>https://tproger.ru/articles/nachalsja-battl-jazykov-programmirovanija-2022?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Рафаил Агазода]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/nachalsja-battl-jazykov-programmirovanija-2022</guid>
      <description><![CDATA[<p>Первые двойки языков программирования готовы столкнуться в битве за звание лучшего в 2022 году: C# против C++, Visual Basic против Pascal.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/nachalsja-battl-jazykov-programmirovanija-2022">Начался баттл языков программирования 2022</a>»</p>]]></description>
      <category><![CDATA[C++]]></category>
      <category><![CDATA[Языки программирования]]></category>
      <category><![CDATA[C#]]></category>
      <category><![CDATA[BASIC]]></category>
      <category><![CDATA[Pascal]]></category>
      <category><![CDATA[Лучший язык 2022]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 13 Dec 2022 08:00:52 GMT</pubDate>
      <content:encoded><![CDATA[<p>Сегодня за звание лучшего языка программирования в 2022 году схлестнутся первые пары:</p><ul><li>Visual Basic против Pascal;</li><li>C++ против C#.</li></ul><p>Выберите сильнейших из них, но помните: не стоит ориентироваться на популярность языка или его востребованность на рынке. В этом турнире важна только народная любовь.</p><p>Подробнее об условиях баттла читайте в анонсе.</p><p>Голосование продлится до завтра, 14 декабря 2022 года, до 11 часов по московскому времени.</p><p>Боитесь пропустить следующие раунды баттла? Подпишитесь на тэг Лучший язык 2022 и следите за новыми раундами в личной ленте.</p>]]></content:encoded>
    </item>
    <item>
      <title>Стартует батл языков программирования 2022</title>
      <link>https://tproger.ru/articles/startuet-batl-jazykov-programmirovanija-2022</link>
      <comments>https://tproger.ru/articles/startuet-batl-jazykov-programmirovanija-2022?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Марина Александровна]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/startuet-batl-jazykov-programmirovanija-2022</guid>
      <description><![CDATA[<p>Батл на звание лучшего языка программирования 2022 уже не за горами. Давайте узнаем, какой ЯП наиболее популярен по версии Tproger!</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/startuet-batl-jazykov-programmirovanija-2022">Стартует батл языков программирования 2022</a>»</p>]]></description>
      <category><![CDATA[JavaScript]]></category>
      <category><![CDATA[Java]]></category>
      <category><![CDATA[C++]]></category>
      <category><![CDATA[Языки программирования]]></category>
      <category><![CDATA[C#]]></category>
      <category><![CDATA[Python]]></category>
      <category><![CDATA[Ruby]]></category>
      <category><![CDATA[PHP]]></category>
      <category><![CDATA[Swift]]></category>
      <category><![CDATA[Golang]]></category>
      <category><![CDATA[TypeScript]]></category>
      <category><![CDATA[Язык Си]]></category>
      <category><![CDATA[BASIC]]></category>
      <category><![CDATA[Rust]]></category>
      <category><![CDATA[Kotlin]]></category>
      <category><![CDATA[Язык ассемблера]]></category>
      <category><![CDATA[Pascal]]></category>
      <category><![CDATA[Лучший язык 2022]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 12 Dec 2022 08:00:40 GMT</pubDate>
      <content:encoded><![CDATA[<p>Предлагаем отвлечься от серьёзных рейтингов вроде <a href="https://tproger.ru/articles/luchshij-jazyk-programmirovanija-rejting-tiobe-2022/">TIOBE</a> или PYPL и выбрать лучший язык программирования 2022 по версии пользователей Tproger.</p><p>Правила батла по-прежнему просты:</p><ol><li>В батле участвует 16 языков программирования.</li><li>Ежедневно соревнуются две пары.</li><li>За любимый язык можно проголосовать в течение 24 часов.</li><li>Пары составляются рандомно, так что выбирайте язык, который субъективно нравится больше.</li><li>В финале мы определим тройку победителей.</li><li>Старт — 13 декабря, финал — 20 декабря.</li></ol><p>Примечание Забирайте эту запись в закладки, ведь именно в неё будут добавляться ссылки на последующие этапы голосования.</p><ul><li><a href="https://tproger.ru/articles/nachalsja-battl-jazykov-programmirovanija-2022/">Этап 1</a></li><li><a href="https://tproger.ru/articles/vtoroj-raund-bitvy-jazykov-programmirovanija-v-2022-godu/">Этап 2</a></li><li><a href="https://tproger.ru/articles/tretij-raund-bitvy-jazykov-programmirovanija-v-2022-godu/">Этап 3</a></li><li><a href="https://tproger.ru/articles/chetvjortyj-raund-bitvy-jazykov-programmirovanija-2022/">Этап 4</a></li><li><a href="https://tproger.ru/articles/pjatyj-raund-bitvy-jazykov-programmirovanija-2022/">Этап 5</a></li><li><a href="https://tproger.ru/articles/shestoj-raund-bitvy-jazykov-programmirovanija-2022/">Этап 6</a></li><li><a href="https://tproger.ru/articles/polufinal-bitvy-jazykov-programmirovanija-2022">Полуфинал</a></li><li><a href="https://tproger.ru/articles/final-bitvy-jazykov-programmirovanija-2022/">Финал</a></li><li><a href="https://tproger.ru/articles/battl-jazykov-programmirovanija-2022-zavershilsja-2/">Результаты</a></li></ul><p>Турнирная таблица:</p><figure><img src="https://media.tproger.ru/uploads/2022/12/Turnirnaja-tablica.png" alt="" /></figure><p>Старт уже завтра — 13 декабря в 11:00 МСК. Следите, участвуйте, голосуйте!</p>]]></content:encoded>
    </item>
    <item>
      <title>Третий раунд битвы языков программирования 2021</title>
      <link>https://tproger.ru/articles/tretij-raund-bitvy-jazykov-programmirovanija-2021</link>
      <comments>https://tproger.ru/articles/tretij-raund-bitvy-jazykov-programmirovanija-2021?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Марина Александровна]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/tretij-raund-bitvy-jazykov-programmirovanija-2021</guid>
      <description><![CDATA[<p>Сегодня за звание лучшего языка программирования 2021 пободаются такие кандидаты: Visual Basic vs. Java, а также Swift vs. Go.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/tretij-raund-bitvy-jazykov-programmirovanija-2021">Третий раунд битвы языков программирования 2021</a>»</p>]]></description>
      <category><![CDATA[Java]]></category>
      <category><![CDATA[Языки программирования]]></category>
      <category><![CDATA[Swift]]></category>
      <category><![CDATA[Golang]]></category>
      <category><![CDATA[BASIC]]></category>
      <category><![CDATA[Лучший язык 2021]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 16 Dec 2021 07:59:34 GMT</pubDate>
      <content:encoded><![CDATA[<p>По итогам вчерашнего голосования C# буквально размотал Pascal, а Python набрал почти в два раза больше голосов, чем Rust. Результаты можно посмотреть <a href="https://tproger.ru/articles/bitva-jazykov-programmirovanija-2021-prodolzhaetsja/">здесь</a>.</p><p>Мы же не останавливаемся и объявляем новых кандидатов на звание лучшего языка программирования 2021:</p><ul><li>Visual Basic vs. Java</li><li>Swift vs. Go</li></ul><figure><img src="https://media.tproger.ru/uploads/2021/12/Frame-13-1.png" alt="" /></figure><p>Выбирайте язык, исходя из личных предпочтений. Текущее голосование будет завершено 17 декабря 2021 года в 11:00 по Москве.</p>]]></content:encoded>
    </item>
    <item>
      <title>Баттл языков программирования 2021 стартует уже завтра</title>
      <link>https://tproger.ru/articles/battl-jazykov-programmirovanija-2021-startuet-uzhe-zavtra</link>
      <comments>https://tproger.ru/articles/battl-jazykov-programmirovanija-2021-startuet-uzhe-zavtra?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Марина Александровна]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/battl-jazykov-programmirovanija-2021-startuet-uzhe-zavtra</guid>
      <description><![CDATA[<p>Отбросьте результаты исследований TIOBE, ведь в нашем баттле именно вы выбираете лучший язык программирования 2021.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/battl-jazykov-programmirovanija-2021-startuet-uzhe-zavtra">Баттл языков программирования 2021 стартует уже завтра</a>»</p>]]></description>
      <category><![CDATA[JavaScript]]></category>
      <category><![CDATA[Java]]></category>
      <category><![CDATA[C++]]></category>
      <category><![CDATA[Языки программирования]]></category>
      <category><![CDATA[C#]]></category>
      <category><![CDATA[Python]]></category>
      <category><![CDATA[Ruby]]></category>
      <category><![CDATA[PHP]]></category>
      <category><![CDATA[Swift]]></category>
      <category><![CDATA[Golang]]></category>
      <category><![CDATA[TypeScript]]></category>
      <category><![CDATA[Язык Си]]></category>
      <category><![CDATA[BASIC]]></category>
      <category><![CDATA[Rust]]></category>
      <category><![CDATA[Kotlin]]></category>
      <category><![CDATA[Язык ассемблера]]></category>
      <category><![CDATA[Pascal]]></category>
      <category><![CDATA[Лучший язык 2021]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 13 Dec 2021 08:12:38 GMT</pubDate>
      <content:encoded><![CDATA[<p>Лучший язык программирования в 2021 году — это Java или Python? Совсем недавно рейтинг TIOBE взбудоражил всё IT-сообщество, ведь именно Python потеснил извечных лидеров в виде Java и C.</p><p>Но давайте отвлечёмся от официальной статистики и узнаем, какие языки предпочитаете именно вы! Завтра стартует баттл языков программирования 2021. Правила просты:</p><ol><li>Всего участвует 16 языков программирования.</li><li>Каждый день соревнуются две пары.</li><li>На возможность проголосовать за любимый язык отводится 24 часа.</li><li>Пары составляются рандомно.</li><li>Выбирайте тот язык, который субъективно нравится вам больше.</li><li>В финале мы определим победителей — языки которые заняли первое, второе и третье место.</li><li>Старт — 14 декабря, финал — 21 декабря.</li></ol><p>Так выглядит изначальная турнирная таблица:</p><figure><img src="https://media.tproger.ru/uploads/2021/12/languages_battle_2021_announce.png" alt="" /></figure><p>А вот как мы <a href="https://tproger.ru/tag/toplang2020/">выбирали лучший язык программирования</a> в прошлом году.</p><p>Подписывайтесь на уведомления на сайте, чтобы быть в курсе лидеров и новых голосований.</p><p>Результаты баттла можно посмотреть по <a href="https://tproger.ru/articles/battl-jazykov-programmirovanija-2021-zavershilsja/">ссылке</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Февральский рейтинг языков программирования TIOBE: последний отчаянный рывок Visual Basic?</title>
      <link>https://tproger.ru/news/tiobe-february-2018</link>
      <comments>https://tproger.ru/news/tiobe-february-2018?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Светлана Хачатурян]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/tiobe-february-2018</guid>
      <description><![CDATA[<p>В февральском индексе TIOBE Visual Basic.NET и классический Visual Basic набрали обороты, а SQL снова появился в рейтинге языков программирования.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/tiobe-february-2018">Февральский рейтинг языков программирования TIOBE: последний отчаянный рывок Visual Basic?</a>»</p>]]></description>
      <category><![CDATA[Языки программирования]]></category>
      <category><![CDATA[SQL]]></category>
      <category><![CDATA[BASIC]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 08 Feb 2018 19:37:37 GMT</pubDate>
      <content:encoded><![CDATA[<p>Второй месяц нового года <a href="https://www.tiobe.com/tiobe-index/">оказался весьма удачным</a> для Visual Basic.NET и классического Visual Basic. Аналитиков этот факт удивляет. Примерно 2 года назад специалисты TIOBE предсказывали полное исчезновение этих языков с рынка.</p><p>Visual Basic считается языком программирования для новичков, а также популярным инструментом для быстрого прототипирования. Именно поэтому о нем сложилось довольно предвзятое впечатление среди профессиональных разработчиков, уверены эксперты. Несмотря на все это, в феврале VB набрал обороты.</p><figure><img src="https://media.tproger.ru/uploads/2018/02/Snimok-jekrana-2018-02-08-v-21.45.35.jpg" alt="" /></figure><p>TIOBE делает акцент на возвращении SQL в индекс, начиная с февраля 2018. Делается это из-за того, что популярный язык запросов является <a href="https://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D0%BB%D0%BD%D0%BE%D1%82%D0%B0_%D0%BF%D0%BE_%D0%A2%D1%8C%D1%8E%D1%80%D0%B8%D0%BD%D0%B3%D1%83">тьюринг-полным</a>, то есть на нем можно реализовать любую вычислимую функцию. При этом его позиция в рейтинге на данный момент не совсем объективна, так как SQL появился в нем впервые за долгое время.</p><figure><img src="https://media.tproger.ru/uploads/2018/02/Snimok-jekrana-2018-02-08-v-21.48.09.jpg" alt="" /></figure><p>Напомним, что TIOBE ежемесячно собирает статистику поисковых запросов и публикует собственные интерактивные рейтинги языков программирования.</p>]]></content:encoded>
    </item>
    <item>
      <title>На GitHub выложили исходный код игры, написанной Биллом Гейтсом и его приятелем на BASIC в 1981 году</title>
      <link>https://tproger.ru/news/donkey-bas</link>
      <comments>https://tproger.ru/news/donkey-bas?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Типичный программист]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/donkey-bas</guid>
      <description><![CDATA[<p>Игра Donkey занимает 131 строку на BASIC и предлагает объезжать ослов на дороге; написана она была в четыре утра в офисе IBM 35 лет назад.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/donkey-bas">На GitHub выложили исходный код игры, написанной Биллом Гейтсом и его приятелем на BASIC в 1981 году</a>»</p>]]></description>
      <category><![CDATA[Ретро]]></category>
      <category><![CDATA[BASIC]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 18 Jul 2016 11:05:47 GMT</pubDate>
      <content:encoded><![CDATA[<p>Вчера на Reddit появилось <a href="https://www.reddit.com/r/programming/comments/4tcbt9/36_years_ago_bill_gates_and_his_buddy_wrote_this/">сообщение</a> о небольшой игре, которую 35 лет назад написали Билл Гейтс и его приятель. Сообщается также, что кодили они всё это в 4 утра в небольшой каморке в офисе IBM.</p><p>Игра называется Donkey и предлагает игроку избегать столкновений с ослами на дороге, меняя свою полосу при езде на автомобиле. При столкновении происходит простенькая анимация взрыва. <a href="https://github.com/coding-horror/donkey.bas/blob/master/donkey.bas">Исходный код</a> на BASIC занимает всего 131 строку. Предупреждаем слабонервных, в нём активно используется GOTO (впрочем, в то время это было нормальным для BASIC).</p><p>Для тех, кто хочет потратить ещё больше своего свободного времени на ностальгию, вот ссылки на подходящие веб-эмуляторы:</p><ul><li><a href="http://www.pcjs.org/">PC DOS во всевозможных конфигурациях</a>;</li><li><a href="https://www.scullinsteel.com/apple2/">Apple II с загружаемыми дисками</a>.</li></ul><p>Эта игра входила в комплект поставки ранных версий PC DOS, распространявшихся с оригинальными IBM PC в то время. Сейчас в неё можно поиграть даже на iOS (искать по словам Donkey bas). Побробнее про историю игры можно почитать на <a href="https://en.wikipedia.org/wiki/DONKEY.BAS">Wikipedia</a>.</p>]]></content:encoded>
    </item>
  </channel>
</rss>