<?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>Видео</title>
    <description>Подборки разнообразных интересных видео, посвящённых программированию: записи выступлений, видеоуроки, руководства, презентации и многое другое.</description>
    <link>https://tproger.ru/video</link>
    <atom:link href="https://tproger.ru/video/feed" rel="self" type="application/rss+xml"/>
    <lastBuildDate>Sat, 03 Oct 2026 19:52:33 GMT</lastBuildDate>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>12</sy:updateFrequency>
    <image>
      <title>Видео</title>
      <link>https://tproger.ru</link>
      <url>https://tproger.ru/apple-touch-icon.png</url>
    </image>
    <item>
      <title>Применение 1С ERP УХ для автоматизации проектной организации</title>
      <link>https://tproger.ru/video/primenenie-1s-erp-uh-dlja-avtomatizacii-proektnoj-organizacii-2</link>
      <comments>https://tproger.ru/video/primenenie-1s-erp-uh-dlja-avtomatizacii-proektnoj-organizacii-2?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Мария Кривоченко]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/video/primenenie-1s-erp-uh-dlja-avtomatizacii-proektnoj-organizacii-2</guid>
      <description><![CDATA[<p>Рассказали, как организовать эффективный проектный учёт с помощью 1С ERP УХ. Делимся записью митапа и объясняем, как мы настроили систему</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/video/primenenie-1s-erp-uh-dlja-avtomatizacii-proektnoj-organizacii-2">Применение 1С ERP УХ для автоматизации проектной организации</a>»</p>]]></description>
      <category><![CDATA[1C-Bitrix]]></category>
      <category><![CDATA[Аналитика]]></category>
      <category><![CDATA[Управление проектами]]></category>
      <category><![CDATA[Видео]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 26 May 2022 12:46:08 GMT</pubDate>
      <content:encoded><![CDATA[<p>Задача организовать эффективный проектный учёт часто встаёт перед специалистами. Нужно собирать аналитику по проектам, и в то же время быстро выгружать всю информацию о них — чтобы принимать верные решения. Для этого обычно требуются доработки.</p><p>Юля Килина и Лада Евтюкова, эксперты департамента бизнес-приложений КРОК, смогли решить задачу с помощью инструментов блока бюджетирования «коробочной» версии 1С. И провели по этой теме митап, где рассказали, как быстро формировать нужные документы и эффективно организовать учёт по краткосрочным бизнес-проектам, используя базовые инструменты 1С ERP УХ.</p><p>Делимся записью митапа и важной информацией из него: что важно учитывать в работе, как формировать отчёты, как использовать инструменты 1C ERP УХ. А также кратко описываем, как настроили свою систему.</p><h2>Что учитывать при организации проектного учёта</h2><h3>Бэкграунд компании</h3><p>Проектные компании ведут несколько внешних проектов одновременно. Искомый учёт должен адекватно это отражать, и процесс установки и внедрения системы для каждой компании требует индивидуального подхода.</p><p>Кроме того, перед началом работы стоит решить методологические задачи и зафиксировать их в учётной политике. Обычно они касаются:</p><ul><li>формирования структуры прямых затрат;</li><li>распределения накладных расходов между проектами;</li><li>разработки методики трансфертного ценообразования — при работе над проектами разных подразделений;</li><li>учёта коммерческих затрат, формирующихся перед началом проекта и направленных на него.</li></ul><p>Чем точнее будут описаны методики, тем лучше будет оценка рентабельности и финансовой эффективности проекта.</p><h3>Отчёты</h3><p>Кроме стандартных отчётов: по доходам и расходам, по движению денежных встреч, финансовые результаты, управленческий баланс — стоит формировать дополнительные.</p><p>Среди них отчёт по маржинальной стоимости в разрезе проектов, отчёт о рентабельности по проектам, распределение денежных средств по проектам, план-факт БДР и план-факт БДДС.</p><p>Чтобы сделать дополнительные отчёты, сперва нужно сформировать требования. Они должны исходить от потребителя: собственника, акционера, инвестора, менеджера или исполнителя. Форма и аналитика также могут меняться в зависимости от пользователя.</p><p>Формировать отчеты нужно в два этапа.</p><p>Сперва задаём структуру строк и колонок, уровни детализации статей доходов и расходов. И определяем состав проекта: что приносит доход, а что требует расходов. Получаем отчётность, удобную для использования, — таблицу данных, опираясь на которую сможем принимать решения по проекту.</p><p>Дальше создаём методологию.</p><ul><li>Определяем источники данных, которые будем использовать для ведения проектного учёта и формирования отчётов. Обычно это набор ресурсов, уникальный для каждой компании.</li><li>Определяем варианты использования данных, решаем, какую сумму отразить в отчёте, где и как отражать операции, какую аналитику выгружать и так далее. То есть определяем состав отчётных форм.</li></ul><p>Итогом всех наших усилий становится распределение всех доходов и расходов и создание дополнительных отчётов.</p><h2>Как мы управляем скоупом проекта с помощью 1С ERP УХ</h2><ol><li>Определяем функциональные блоки системы: регламентированный учёт, блок закупок, блок продаж, склад, доставка, расчёты с персоналом и так далее.</li><li>Выделяем характерные для каждого блока бизнес-процессы. Среди них авансовые отчёты, расчёты по заработной плате, заключение договора с поставщиком, приобретение товаров, инвентаризация.</li><li>В процессе моделирования собираем требования к шагам и ранжируем их по типам: стандартная функциональность, настройка, кастомизация.</li><li>Далее мы определяем, где нужна кастомизация, объединяем доработки в блоки, оцениваем и переходим к проектированию.</li><li>Когда система разработана, проводим локальное, функциональное и интеграционное тестирование.</li><li>Пишем инструкцию для пользователей.</li></ol><p>Для всей работы у нас есть инструмент — интегрированный стенд разработки, который помогает снизить нагрузку и отслеживать все процессы. Как он работает:</p><ul><li>Сначала мы в системе прикладных решений регистрируем все бизнес-процессы и функциональные блоки. Далее описываем процесс по шагам, привязываем требования, которые система ранжирует.</li><li>Затем формируется функциональный дизайн расширения, и разработчику поступает документ с прописанными объектами метаданных. Это позволяет ему исключить ошибки. Дальше разработчик делает проект, который мы тестируем, превращаем бизнес-процесс и передаём заказчику.</li><li>Наконец, бизнес-процесс превращается в инструкцию. Мы дополняем её скриншотами — и всё готово.</li></ul>]]></content:encoded>
    </item>
    <item>
      <title>Искусственный интеллект и бизнес будущего. Гендиректор МТС AI — о технологиях и IT-рынке</title>
      <link>https://tproger.ru/video/iskusstvennyj-intellekt-i-biznes-budushhego-gendirektor-mts-ai-o-tehnologijah-i-it-rynke</link>
      <comments>https://tproger.ru/video/iskusstvennyj-intellekt-i-biznes-budushhego-gendirektor-mts-ai-o-tehnologijah-i-it-rynke?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Мария Кривоченко]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/video/iskusstvennyj-intellekt-i-biznes-budushhego-gendirektor-mts-ai-o-tehnologijah-i-it-rynke</guid>
      <description><![CDATA[<p>Что сейчас происходит с искусственным интеллектом? Рассказывает Александр Ханин, генеральный директор МТС AI и сооснователь VisionLabs</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/video/iskusstvennyj-intellekt-i-biznes-budushhego-gendirektor-mts-ai-o-tehnologijah-i-it-rynke">Искусственный интеллект и бизнес будущего. Гендиректор МТС AI — о технологиях и IT-рынке</a>»</p>]]></description>
      <category><![CDATA[Искусственный интеллект]]></category>
      <category><![CDATA[Бизнес]]></category>
      <category><![CDATA[Видео]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 27 Apr 2022 15:30:54 GMT</pubDate>
      <content:encoded><![CDATA[<p>Издатель The Bell и «Русских норм» Анфиса Воронина обсудила с Александром Ханиным, сооснователем компании VisionLabs и генеральным директором МТС AI, что сейчас происходит с технологиями искусственного интеллекта в России, как адаптироваться к изменениям и развивать собственные продукты в новых условиях.</p><p>А также:</p><ul><li>что сегодня умеет искусственный интеллект;</li><li>где его применяют чаще всего;</li><li>в каких сферах его можно будет использовать в ближайшие годы — и почему это стоит делать;</li><li>как это повлияет на жизнь большинства людей, и стоит ли бояться проблем с работой.</li></ul><p>00:24 О спикере</p><p>01:51 Можно ли создавать классные IT-продукты в условиях ограниченного технологического обмена?</p><p>06:55 Как ИИ изменит нашу жизнь в ближайшие 5 лет?</p><p>11:40 Видеоаналитика, виртуальные ассистенты, edge computing: на какие технологии делает ставку МТС AI</p><p>15:00 «Мы не верим, что придут злые роботы и отнимут у нас хлеб»: ИИ и рынок труда</p><p>20:45 Не для галочки: когда ИИ может помочь бизнесу</p><p>22:57 Сектора, в которых внедрение ИИ наиболее экономически оправдано</p><p>23:54 Влияние биометрической идентификации на жизнь и бизнес</p><p>27:15 Могут ли технологии узнать нас по походке?</p><p>31:50 Кража идентичности: надо ли бояться биометрических технологий и что такое Liveness</p><p>36:40 Зачем нужны дипфейки</p><p>38:25 Можно ли в современном мире сохранять полную конфиденциальность?</p><p>39:41 ИИ и реконструкция прошлого</p>]]></content:encoded>
    </item>
    <item>
      <title>Паттерн Стратегия в Golang</title>
      <link>https://tproger.ru/video/pattern-strategija-v-golang</link>
      <comments>https://tproger.ru/video/pattern-strategija-v-golang?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[theartofdevel]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/video/pattern-strategija-v-golang</guid>
      <description><![CDATA[<p>Паттерн «Стратегия» в Golang решает типовую задачу выбора поведения. Ключевые аспекты: его устройство и случаи применения в проекте.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/video/pattern-strategija-v-golang">Паттерн Стратегия в Golang</a>»</p>]]></description>
      <category><![CDATA[Golang]]></category>
      <category><![CDATA[Пост пользователя]]></category>
      <category><![CDATA[Видео]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 11 Feb 2022 13:02:53 GMT</pubDate>
      <content:encoded><![CDATA[<p>Паттерн это возможный способ решения известной проблемы, при котором ваш код не потеряет в тестируемости и правильной архитектуре. Один из таких мы сегодня и рассмотрим, это паттерн Стратегия в языке Golang.</p>]]></content:encoded>
    </item>
    <item>
      <title>Дженерики в Golang 1.18</title>
      <link>https://tproger.ru/video/dzheneriki-v-golang-1-18</link>
      <comments>https://tproger.ru/video/dzheneriki-v-golang-1-18?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[theartofdevel]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/video/dzheneriki-v-golang-1-18</guid>
      <description><![CDATA[<p>Дженерики в Golang 1.18 позволяют писать обобщённый код. Ключевые аспекты: назначение возможности, варианты использования и связь с практикой разработки.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/video/dzheneriki-v-golang-1-18">Дженерики в Golang 1.18</a>»</p>]]></description>
      <category><![CDATA[Golang]]></category>
      <category><![CDATA[Пост пользователя]]></category>
      <category><![CDATA[Видео]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 10 Feb 2022 12:07:18 GMT</pubDate>
      <content:encoded><![CDATA[<p>В язык Go версии 1.18 добавили поддержку дженериков (в бета-версии), в этом ролике мы посмотрим на них: быстро и сухо, что это и как можно использовать. Плюс я рассказал, как хотел бы их применять, но пока что так нельзя.</p>]]></content:encoded>
    </item>
    <item>
      <title>Делаем сортировку для REST API</title>
      <link>https://tproger.ru/video/delaem-sortirovku-dlja-rest-api</link>
      <comments>https://tproger.ru/video/delaem-sortirovku-dlja-rest-api?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[theartofdevel]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/video/delaem-sortirovku-dlja-rest-api</guid>
      <description><![CDATA[<p>Сортировка в REST API строится с ORM, query builder и контекстом: пример показывает структуры, варианты запросов и обработку параметров.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/video/delaem-sortirovku-dlja-rest-api">Делаем сортировку для REST API</a>»</p>]]></description>
      <category><![CDATA[API]]></category>
      <category><![CDATA[Golang]]></category>
      <category><![CDATA[Пост пользователя]]></category>
      <category><![CDATA[Видео]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 04 Feb 2022 13:28:33 GMT</pubDate>
      <content:encoded><![CDATA[<p>В новом ролике я реализую сортировку в REST API, используя язык Go. В качестве СУБД возьмем PostgreSQL. Мы поговорим про ORM, будем использовать query builder, создадим структуры для сортировки, рассмотрим разные варианты, а также поработаем с контекстом.</p>]]></content:encoded>
    </item>
    <item>
      <title>Работаем с PostgreSQL в Go</title>
      <link>https://tproger.ru/video/rabotaem-s-postgresql-v-go</link>
      <comments>https://tproger.ru/video/rabotaem-s-postgresql-v-go?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[theartofdevel]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/video/rabotaem-s-postgresql-v-go</guid>
      <description><![CDATA[<p>Работа с PostgreSQL в Go включает создание репозитория и запросов к базе данных; пример показывает базовую структуру такого взаимодействия.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/video/rabotaem-s-postgresql-v-go">Работаем с PostgreSQL в Go</a>»</p>]]></description>
      <category><![CDATA[SQL]]></category>
      <category><![CDATA[Golang]]></category>
      <category><![CDATA[Пост пользователя]]></category>
      <category><![CDATA[Видео]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 02 Feb 2022 15:18:39 GMT</pubDate>
      <content:encoded><![CDATA[<p>В этой серии роликов мы рассмотрим, как работать с СУБД PostgreSQL в языке Go. Создадим репозиторий, сделаем запросы в БД, посмотрим на ошибки, с которыми можно столкнуться в процессе работы. И многое другое! Приятного просмотра.</p>]]></content:encoded>
    </item>
    <item>
      <title>Уроки по Golang. Advanced. Чистая Архитектура / Clean Architecture Часть 1 &amp; 2</title>
      <link>https://tproger.ru/video/uroki-po-golang-advanced-chistaja-arhitektura-clean-architecture-chast-1-2</link>
      <comments>https://tproger.ru/video/uroki-po-golang-advanced-chistaja-arhitektura-clean-architecture-chast-1-2?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[theartofdevel]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/video/uroki-po-golang-advanced-chistaja-arhitektura-clean-architecture-chast-1-2</guid>
      <description><![CDATA[<p>Clean Architecture на Go пришла из другой среды; сравнение подхода показывает его привлекательность и причины, по которым его не считают лучшей практикой.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/video/uroki-po-golang-advanced-chistaja-arhitektura-clean-architecture-chast-1-2">Уроки по Golang. Advanced. Чистая Архитектура / Clean Architecture Часть 1 & 2</a>»</p>]]></description>
      <category><![CDATA[Обучение программированию]]></category>
      <category><![CDATA[Golang]]></category>
      <category><![CDATA[Пост пользователя]]></category>
      <category><![CDATA[Видео]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 07 Dec 2021 10:54:02 GMT</pubDate>
      <content:encoded><![CDATA[<p>В этих видео мы разбираемся с Чистой Архитектурой на Go. Есть луковая архитектура, есть гексагональная. Чистая архитектура является миксом луковой и гексагональной. Она пришла из другого мира и не является бест практисом для большинства приложений, но оттого она и притягательна. Давайте разбираться.</p><p><a href="https://github.com/theartofdevel/golang-clean-architecture/">GitHub репозиторий</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Упаковываем сервисы в Docker и деплоим через GitHub Actions и Ansible + docker-compose</title>
      <link>https://tproger.ru/video/upakovyvaem-servisy-v-docker-s-deploem-cherez-github-actions-i-ansible-docker-compose</link>
      <comments>https://tproger.ru/video/upakovyvaem-servisy-v-docker-s-deploem-cherez-github-actions-i-ansible-docker-compose?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[theartofdevel]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/video/upakovyvaem-servisy-v-docker-s-deploem-cherez-github-actions-i-ansible-docker-compose</guid>
      <description><![CDATA[<p>Сервисы системы заметок упаковываются в Docker; для каждого создаются Dockerfile и Ansible playbook, а деплой запускается через GitHub Actions.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/video/upakovyvaem-servisy-v-docker-s-deploem-cherez-github-actions-i-ansible-docker-compose">Упаковываем сервисы в Docker и деплоим через GitHub Actions и Ansible + docker-compose</a>»</p>]]></description>
      <category><![CDATA[DevOps]]></category>
      <category><![CDATA[Docker]]></category>
      <category><![CDATA[Пост пользователя]]></category>
      <category><![CDATA[Видео]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Sat, 04 Dec 2021 18:38:12 GMT</pubDate>
      <content:encoded><![CDATA[<p>Это новая серия сериала про разработку системы заметок. В этом видео мы упакуем все сервисы системы заметок в Docker, для каждого напишем Dockerfile, для каждого сервиса напишем ansible playbook чтобы был continuous deployment, а запускать все это дело будем через GitHub Actions.</p><p><a href="https://github.com/theartofdevel/notes_system">GitHub репозиторий</a></p><p>Плейлист с предыдущими частями</p>]]></content:encoded>
    </item>
    <item>
      <title>Продвинутый Golang. Урок 6: REST API, middleware, обработка ошибок</title>
      <link>https://tproger.ru/video/prodvinutyj-golang-urok-6-rest-api-middleware-obrabotka-oshibok</link>
      <comments>https://tproger.ru/video/prodvinutyj-golang-urok-6-rest-api-middleware-obrabotka-oshibok?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[theartofdevel]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/video/prodvinutyj-golang-urok-6-rest-api-middleware-obrabotka-oshibok</guid>
      <description><![CDATA[<p>Продолжаем изучать Golang с помощью видеокурса. Очередной урок посвящён обработке ошибок через middleware.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/video/prodvinutyj-golang-urok-6-rest-api-middleware-obrabotka-oshibok">Продвинутый Golang. Урок 6: REST API, middleware, обработка ошибок</a>»</p>]]></description>
      <category><![CDATA[Обучение программированию]]></category>
      <category><![CDATA[Golang]]></category>
      <category><![CDATA[Для продолжающих]]></category>
      <category><![CDATA[Пост пользователя]]></category>
      <category><![CDATA[Видео]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 29 Sep 2021 10:12:28 GMT</pubDate>
      <content:encoded><![CDATA[<p>В этом уроке мы займёмся обработкой ошибок. Сделаем это одним из способов, а именно через middleware.</p><p><a href="https://github.com/theartofdevel/go-advanced-lessons">Репозиторий проекта на GitHub</a></p><p>Предыдущие уроки:</p><p>Урок 1 — <a href="https://tproger.ru/video/prodvinutyj-golang-urok-1-rest-api-i-veb-server/">REST API и веб-сервер</a>.</p><p>Урок 2 — <a href="https://tproger.ru/video/prodvinutyj-golang-urok-2-rest-api-logirovanie/?autoload=1">REST API, логирование</a>.</p><p>Урок 3 — <a href="https://tproger.ru/video/prodvinutyj-golang-urok-3-rest-api-konfiguracija/?autoload=1">REST API. Конфигурация</a>.</p><p>Урок 4 — <a href="https://tproger.ru/video/prodvinutyj-golang-urok-4-rest-api-mongodb/?autoload=1">REST API, MongoDB, первая часть</a>.</p><p>Урок 5 — <a href="https://tproger.ru/video/prodvinutyj-golang-urok-5-rest-api-mongodb-prodolzhenie/?autoload=1">REST API, MongoDB, вторая часть</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Продвинутый Golang. Урок 5: REST API, MongoDB, продолжение</title>
      <link>https://tproger.ru/video/prodvinutyj-golang-urok-5-rest-api-mongodb-prodolzhenie</link>
      <comments>https://tproger.ru/video/prodvinutyj-golang-urok-5-rest-api-mongodb-prodolzhenie?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[theartofdevel]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/video/prodvinutyj-golang-urok-5-rest-api-mongodb-prodolzhenie</guid>
      <description><![CDATA[<p>Учимся взаимодействовать с MongoDB в Go. Реализуем методы и проверяем работоспособность системы.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/video/prodvinutyj-golang-urok-5-rest-api-mongodb-prodolzhenie">Продвинутый Golang. Урок 5: REST API, MongoDB, продолжение</a>»</p>]]></description>
      <category><![CDATA[Обучение программированию]]></category>
      <category><![CDATA[Golang]]></category>
      <category><![CDATA[Для продолжающих]]></category>
      <category><![CDATA[Пост пользователя]]></category>
      <category><![CDATA[Видео]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 28 Sep 2021 06:51:02 GMT</pubDate>
      <content:encoded><![CDATA[<p>В предыдущем уроке начали работать с MongoDB, написали клиента и реализовали пару методов. В этом уроке сделаем оставшиеся методы и проверим работоспособность системы.</p><p><a href="https://github.com/theartofdevel/go-advanced-lessons">Репозиторий проекта на GitHub</a></p><p>Предыдущие уроки:</p><p>Урок 1 — <a href="https://tproger.ru/video/prodvinutyj-golang-urok-1-rest-api-i-veb-server/">REST API и веб-сервер</a>.</p><p>Урок 2 — <a href="https://tproger.ru/video/prodvinutyj-golang-urok-2-rest-api-logirovanie/?autoload=1">REST API, логирование</a>.</p><p>Урок 3 — <a href="https://tproger.ru/video/prodvinutyj-golang-urok-3-rest-api-konfiguracija/?autoload=1">REST API. Конфигурация</a>.</p><p>Урок 4 — <a href="https://tproger.ru/video/prodvinutyj-golang-urok-4-rest-api-mongodb/?autoload=1">REST API, MongoDB, первая часть</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Как начать писать на Go в Visual Studio Code</title>
      <link>https://tproger.ru/video/kak-nachat-pisat-na-go-v-visual-studio-code</link>
      <comments>https://tproger.ru/video/kak-nachat-pisat-na-go-v-visual-studio-code?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[theartofdevel]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/video/kak-nachat-pisat-na-go-v-visual-studio-code</guid>
      <description><![CDATA[<p>Видеотуториал, который поможет разобраться, как настроить Visual Studio Code для написания и запуска код на Go.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/video/kak-nachat-pisat-na-go-v-visual-studio-code">Как начать писать на Go в Visual Studio Code</a>»</p>]]></description>
      <category><![CDATA[IDE]]></category>
      <category><![CDATA[Golang]]></category>
      <category><![CDATA[Пост пользователя]]></category>
      <category><![CDATA[Видео]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 10 Sep 2021 08:21:53 GMT</pubDate>
      <content:encoded><![CDATA[<p>Было много вопросов о том, как работать с языком Go в Visual Studio Code. В этом видео я решил разобраться с этой IDE.</p><p>Установка VS Code с нуля и полная настройка для написания и запуска кода на Golang.</p>]]></content:encoded>
    </item>
    <item>
      <title>Продвинутый Golang. Урок 4: REST API, MongoDB</title>
      <link>https://tproger.ru/video/prodvinutyj-golang-urok-4-rest-api-mongodb</link>
      <comments>https://tproger.ru/video/prodvinutyj-golang-urok-4-rest-api-mongodb?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[theartofdevel]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/video/prodvinutyj-golang-urok-4-rest-api-mongodb</guid>
      <description><![CDATA[<p>В этом видеоуроке мы создадим клиента для работы с MongoDB, используя драйвер для языка Golang.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/video/prodvinutyj-golang-urok-4-rest-api-mongodb">Продвинутый Golang. Урок 4: REST API, MongoDB</a>»</p>]]></description>
      <category><![CDATA[Обучение программированию]]></category>
      <category><![CDATA[Golang]]></category>
      <category><![CDATA[Для продолжающих]]></category>
      <category><![CDATA[Пост пользователя]]></category>
      <category><![CDATA[Видео]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 06 Sep 2021 04:57:48 GMT</pubDate>
      <content:encoded><![CDATA[<p>В этом ролике мы начнём работать с MongoDB, напишем клиента и реализуем пару методов.</p><p><a href="https://github.com/theartofdevel/go-advanced-lessons">Репозиторий с кодом уроков</a></p><p>Предыдущие уроки:</p><p>Урок 1 — <a href="https://tproger.ru/video/prodvinutyj-golang-urok-1-rest-api-i-veb-server/">REST API и веб-сервер</a>.</p><p>Урок 2 — <a href="https://tproger.ru/video/prodvinutyj-golang-urok-2-rest-api-logirovanie/?autoload=1">REST API, логирование</a>.</p><p>Урок 3 — <a href="https://tproger.ru/video/prodvinutyj-golang-urok-3-rest-api-konfiguracija/?autoload=1">REST API. Конфигурация</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Учимся разрабатывать на Golang. Урок 15: работа с JSON</title>
      <link>https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-15-rabota-s-json</link>
      <comments>https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-15-rabota-s-json?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[theartofdevel]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-15-rabota-s-json</guid>
      <description><![CDATA[<p>Рассматриваем встроенные средства Golang для работы с форматом обмена данными JSON. Видеоурок с подробным объяснением и демонстрацией.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-15-rabota-s-json">Учимся разрабатывать на Golang. Урок 15: работа с JSON</a>»</p>]]></description>
      <category><![CDATA[Для начинающих]]></category>
      <category><![CDATA[Обучение программированию]]></category>
      <category><![CDATA[Golang]]></category>
      <category><![CDATA[Пост пользователя]]></category>
      <category><![CDATA[Видео]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 03 Sep 2021 06:03:15 GMT</pubDate>
      <content:encoded><![CDATA[<p>В этом ролике мы разберёмся с форматом обмена данными JSON и поработаем с ним в Golang. Также посмотрим на две библиотеки GJSON и JSON, которые упрощают работу с JSON в Go.</p><p>JSON — формат, который используется повсеместно для передачи данных по сети. В языке Go есть встроенные средства для работы с ним.</p><p>Предыдущие уроки:</p><p>Первый урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-1-osnovy-jazyka-pervoe-prilozhenie-i-veb-server-v-3-stroki/?autoload=1">основы языка, первое приложение и веб-сервер в 3 строки</a>.</p><p>Второй урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-2-cikly-vetvlenija-operator-defer/?autoload=1">циклы, ветвления, оператор defer</a>.</p><p>Третий урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-3-ukazateli-struktury-massivy-i-slajsy/?autoload=1">указатели, структуры, массивы и слайсы</a>.</p><p>Четвёртый урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-4-iterator-for-range-i-struktura-map/?autoload=1">итератор for range и структура map</a>.</p><p>Пятый урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-5-funkcii-i-metody/?autoload=1">функции и методы</a>.</p><p>Шестой урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-6-interfejsy/?autoload=1">интерфейсы</a>.</p><p>Седьмой урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-7-rabota-s-oshibkami-i-interfejs-reader/?autoload=1">работа с ошибками и интерфейс Reader</a>.</p><p>Восьмой урок — <a href="https://tproger.ru/video/testirovanie-v-golang/?autoload=1">тестирование с помощью стандартной библиотеки</a>.</p><p>Девятый урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-9-mnogopotochnost-gorutiny-i-kanaly/?autoload=1">многопоточность, горутины и каналы</a>.</p><p>Десятый урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-10-mnogopotochnost-primitivy-sinhronizacii/?autoload=1">многопоточность, примитивы синхронизации</a>.</p><p>Одиннадцатый урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-11-rabota-s-panikami/?autoload=1">работа с паниками</a>.</p><p>Двенадцатый урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-12-testirovanie-s-pomoshhju-goconvey/">тестирование с помощью GoConvey</a>.</p><p>Тринадцатый урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-13-rabota-s-fajlami-i-vypolnenie-shell-komand/?autoload=1">работа с файлами и выполнение shell-команд</a>.</p><p>Четырнадцатый урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-14-rabota-s-context/?autoload=1">работа с Context</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Пишем приложение на Electron. Часть 1. Знакомство с Electron</title>
      <link>https://tproger.ru/video/pishem-prilozhenie-na-electron-chast-1-znakomstvo-s-electron</link>
      <comments>https://tproger.ru/video/pishem-prilozhenie-na-electron-chast-1-znakomstvo-s-electron?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[theartofdevel]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/video/pishem-prilozhenie-na-electron-chast-1-znakomstvo-s-electron</guid>
      <description><![CDATA[<p>Делаем приложение на Electron, которое позволит быстро запустить и развернуть любой продукт, без единой строчки конфигурации в простом режиме.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/video/pishem-prilozhenie-na-electron-chast-1-znakomstvo-s-electron">Пишем приложение на Electron. Часть 1. Знакомство с Electron</a>»</p>]]></description>
      <category><![CDATA[JavaScript]]></category>
      <category><![CDATA[Pet-проекты]]></category>
      <category><![CDATA[Пост пользователя]]></category>
      <category><![CDATA[Видео]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 01 Sep 2021 10:28:55 GMT</pubDate>
      <content:encoded><![CDATA[<p>Это не уроки. У меня родилась идея приложения, которое я хочу реализовать. Решил сделать это вместе с вами. Затем появилась идея интеграции Electron-приложения с приложением на Go. Интересно? Вот мне тоже!</p><h2>Идея приложения</h2><p>Вы хотите поднять локально PostgreSQL или MongoDB, или RabbitMQ, или nginx, или ещё что-то. Но открывать терминал, искать Docker-образ, настраивать его — лень. Что уж говорить о решении с виртуальной машиной и ручной установкой продукта.</p><p>Я хочу сделать десктопное приложение, которое позволит быстро запустить и развернуть любой продукт, без единой строчки конфигурации в простом режиме.</p><p>Конечно, можно предусмотреть продвинутый режим, в котором будет возможность отредактировать конфигурацию docker’a или docker-compose файла. Но основная мысль в том, чтобы развернуть PostgreSQL, не исправляя ни единой строчки в конфигурации, а просто нажав 2-3 кнопки в интерфейсе.</p><p>Подробности и мои мучения в видео.</p>]]></content:encoded>
    </item>
    <item>
      <title>Первый митап Tproger по GameDev: UX и реверс-инжиниринг</title>
      <link>https://tproger.ru/video/pervyj-mitap-tproger-po-gamedev-ux-i-revers-inzhiniring</link>
      <comments>https://tproger.ru/video/pervyj-mitap-tproger-po-gamedev-ux-i-revers-inzhiniring?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Александр Ланский]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/video/pervyj-mitap-tproger-po-gamedev-ux-i-revers-inzhiniring</guid>
      <description><![CDATA[<p>Митап Tproger по GameDev посвящён UX игровых интерфейсов и реверс-инжинирингу в гиперказуальных играх; темы показывают разные стороны разработки.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/video/pervyj-mitap-tproger-po-gamedev-ux-i-revers-inzhiniring">Первый митап Tproger по GameDev: UX и реверс-инжиниринг</a>»</p>]]></description>
      <category><![CDATA[Разработка игр]]></category>
      <category><![CDATA[Дизайн интерфейсов и UX]]></category>
      <category><![CDATA[Видео]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 25 Aug 2021 10:30:12 GMT</pubDate>
      <content:encoded><![CDATA[<p>Недавно Tproger провёл свой первый митап. Семён Красиков рассказал о проектировании интерфейсов в играх и дал несколько советов для этого, а Артемий Джикия рассказал про реверс-инжиниринг в гипер-казуальных играх. После выступления спикеры ответили на вопросы:</p><p>02:05 Доклад Семёна Красикова «UX в игровых интерфейсах и в играх в целом».</p><p>33:00 Ответы на вопросы по докладу Семёна Красикова.</p><p>41:05 Доклад Артемия Джикия «Реверс-инжиниринг в гипер-казуальных играх».</p><p>50:40 Ответы на вопросы по докладу Артемия Джикия.</p><p>1:05:37 Ответы на дополнительные вопросы по докладу Семёна Красикова.</p><p>1:13:47 Афтерпати. Зритель показывает свою игру и рассказывает подробности её разработки.</p><p>Если вам интересна тема геймдева, подписывайтесь на наш телеграм-канал:</p>]]></content:encoded>
    </item>
    <item>
      <title>Продвинутый Golang. Урок 3: REST API. Конфигурация</title>
      <link>https://tproger.ru/video/prodvinutyj-golang-urok-3-rest-api-konfiguracija</link>
      <comments>https://tproger.ru/video/prodvinutyj-golang-urok-3-rest-api-konfiguracija?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[theartofdevel]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/video/prodvinutyj-golang-urok-3-rest-api-konfiguracija</guid>
      <description><![CDATA[<p>В этом ролике мы добавим конфигурацию проекта, напишем config на YAML и запустим приложение с использованием unix-сокета.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/video/prodvinutyj-golang-urok-3-rest-api-konfiguracija">Продвинутый Golang. Урок 3: REST API. Конфигурация</a>»</p>]]></description>
      <category><![CDATA[Обучение программированию]]></category>
      <category><![CDATA[Golang]]></category>
      <category><![CDATA[Для продолжающих]]></category>
      <category><![CDATA[Пост пользователя]]></category>
      <category><![CDATA[Видео]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 24 Aug 2021 12:30:36 GMT</pubDate>
      <content:encoded><![CDATA[<p>В этом ролике мы добавим конфигурацию проекта, напишем config на YAML и запустим приложение с использованием unix-сокета.</p><p>Для конфигурации мы будем использовать библиотеку Clean Env.</p><p><a href="https://github.com/ilyakaznacheev/cleanenv">Используемая библиотека для конфигурации</a>.</p><p><a href="https://github.com/theartofdevel/go-advanced-lessons">Ссылка на репозиторий с кодом уроков</a>.</p><p>Предыдущие уроки:</p><p>Урок 1 — <a href="https://tproger.ru/video/prodvinutyj-golang-urok-1-rest-api-i-veb-server/">REST API и веб-сервер</a>.</p><p>Урок 2 — <a href="https://tproger.ru/video/prodvinutyj-golang-urok-2-rest-api-logirovanie/?autoload=1">REST API, логирование</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Продвинутый Golang. Урок 2: REST API, логирование</title>
      <link>https://tproger.ru/video/prodvinutyj-golang-urok-2-rest-api-logirovanie</link>
      <comments>https://tproger.ru/video/prodvinutyj-golang-urok-2-rest-api-logirovanie?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[theartofdevel]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/video/prodvinutyj-golang-urok-2-rest-api-logirovanie</guid>
      <description><![CDATA[<p>Второй видеоурок из продвинутого курса по Golang посвящён логированию с использованием логгера logrus.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/video/prodvinutyj-golang-urok-2-rest-api-logirovanie">Продвинутый Golang. Урок 2: REST API, логирование</a>»</p>]]></description>
      <category><![CDATA[Обучение программированию]]></category>
      <category><![CDATA[Golang]]></category>
      <category><![CDATA[Для продолжающих]]></category>
      <category><![CDATA[Пост пользователя]]></category>
      <category><![CDATA[Видео]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 20 Aug 2021 01:55:13 GMT</pubDate>
      <content:encoded><![CDATA[<p>В новом видео мы поговорим про логирование в REST API сервисе на примере <a href="https://github.com/sirupsen/logrus">логгера logrus</a>.</p><p>Существует много разных логгеров. Мне понравился logrus. Я написал для него обёртку, он справляется со своей задачей. Вы можете взять любой другой логгер. Это не важно. Важно использовать логирование и использовать его по назначению. Это позволяет понять, что сейчас происходит, что конкретно приложение делает.</p><p>Предыдущие уроки:</p><p>Урок 1 — <a href="https://tproger.ru/video/prodvinutyj-golang-urok-1-rest-api-i-veb-server/">REST API и веб-сервер</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Продвинутый Golang. Урок 1: REST API и веб-сервер</title>
      <link>https://tproger.ru/video/prodvinutyj-golang-urok-1-rest-api-i-veb-server</link>
      <comments>https://tproger.ru/video/prodvinutyj-golang-urok-1-rest-api-i-veb-server?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[theartofdevel]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/video/prodvinutyj-golang-urok-1-rest-api-i-veb-server</guid>
      <description><![CDATA[<p>Первый урок продвинутого курса по Go, в котором будет REST API, работа с БД, многопоточность, конфигурация, логирование и многое другое.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/video/prodvinutyj-golang-urok-1-rest-api-i-veb-server">Продвинутый Golang. Урок 1: REST API и веб-сервер</a>»</p>]]></description>
      <category><![CDATA[Обучение программированию]]></category>
      <category><![CDATA[Golang]]></category>
      <category><![CDATA[Для продолжающих]]></category>
      <category><![CDATA[Пост пользователя]]></category>
      <category><![CDATA[Видео]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 13 Aug 2021 14:20:51 GMT</pubDate>
      <content:encoded><![CDATA[<p>Мы начали новую серию уроков по языку Go. В них будет про REST API, работу с базами данных, многопоточность, конфигурацию и логирование, а также многое другое.</p><p>Также я устроил конкурс. Разыгрываю 2 купона на IDE Goland.</p><p>Правила:</p><ol><li>Подписаться на <a href="https://www.youtube.com/c/TheArtofDevelopment">ютуб-канал</a>.</li><li>Написать комментарий под этим видеоуроком по Golang.</li><li>Присоединиться к группе Telegram или VK (ссылки в описании к видео)</li><li>Написать реализацию функции замыкания (closure), выложить на github.com в виде репозитория или Gist.</li><li>Ссылку на Gist или репозиторий прислать в личку в VK или в Telegram.</li></ol><p>Два победителя (выберет сайт random.org) получат купон на IDE Goland от компании JetBrains.</p><p>Приятного просмотра и желаю удачи в конкурсе!</p>]]></content:encoded>
    </item>
    <item>
      <title>Учимся разрабатывать на Golang. Урок 14: работа с Context</title>
      <link>https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-14-rabota-s-context</link>
      <comments>https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-14-rabota-s-context?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[theartofdevel]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-14-rabota-s-context</guid>
      <description><![CDATA[<p>В этом уроке мы научимся работать с интерфейсом context.Context. Рассмотрим его методы на примере работы с web-запросами.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-14-rabota-s-context">Учимся разрабатывать на Golang. Урок 14: работа с Context</a>»</p>]]></description>
      <category><![CDATA[Для начинающих]]></category>
      <category><![CDATA[Обучение программированию]]></category>
      <category><![CDATA[Golang]]></category>
      <category><![CDATA[Пост пользователя]]></category>
      <category><![CDATA[Видео]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 12 Aug 2021 11:20:33 GMT</pubDate>
      <content:encoded><![CDATA[<p>В этом уроке мы научимся работать с интерфейсом context.Context. Рассмотрим его методы на примере работы с web-запросами.</p><p>Предыдущие уроки по Golang:</p><p>Первый урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-1-osnovy-jazyka-pervoe-prilozhenie-i-veb-server-v-3-stroki/?autoload=1">основы языка, первое приложение и веб-сервер в 3 строки</a>.</p><p>Второй урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-2-cikly-vetvlenija-operator-defer/?autoload=1">циклы, ветвления, оператор defer</a>.</p><p>Третий урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-3-ukazateli-struktury-massivy-i-slajsy/?autoload=1">указатели, структуры, массивы и слайсы</a>.</p><p>Четвёртый урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-4-iterator-for-range-i-struktura-map/?autoload=1">итератор for range и структура map</a>.</p><p>Пятый урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-5-funkcii-i-metody/?autoload=1">функции и методы</a>.</p><p>Шестой урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-6-interfejsy/?autoload=1">интерфейсы</a>.</p><p>Седьмой урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-7-rabota-s-oshibkami-i-interfejs-reader/?autoload=1">работа с ошибками и интерфейс Reader</a>.</p><p>Восьмой урок — <a href="https://tproger.ru/video/testirovanie-v-golang/?autoload=1">тестирование с помощью стандартной библиотеки</a>.</p><p>Девятый урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-9-mnogopotochnost-gorutiny-i-kanaly/?autoload=1">многопоточность, горутины и каналы</a>.</p><p>Десятый урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-10-mnogopotochnost-primitivy-sinhronizacii/?autoload=1">многопоточность, примитивы синхронизации</a>.</p><p>Одиннадцатый урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-11-rabota-s-panikami/?autoload=1">работа с паниками</a>.</p><p>Двенадцатый урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-12-testirovanie-s-pomoshhju-goconvey/">тестирование с помощью GoConvey</a>.</p><p>Тринадцатый урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-13-rabota-s-fajlami-i-vypolnenie-shell-komand/?autoload=1">работа с файлами и выполнение shell-команд</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Учимся разрабатывать на Golang. Урок 13: работа с файлами и выполнение shell-команд</title>
      <link>https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-13-rabota-s-fajlami-i-vypolnenie-shell-komand</link>
      <comments>https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-13-rabota-s-fajlami-i-vypolnenie-shell-komand?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[theartofdevel]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-13-rabota-s-fajlami-i-vypolnenie-shell-komand</guid>
      <description><![CDATA[<p>В новом видео мы поработаем с файлами и научимся выполнять shell-команды из языка Go. Будет интересно, поехали!</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-13-rabota-s-fajlami-i-vypolnenie-shell-komand">Учимся разрабатывать на Golang. Урок 13: работа с файлами и выполнение shell-команд</a>»</p>]]></description>
      <category><![CDATA[Для начинающих]]></category>
      <category><![CDATA[Обучение программированию]]></category>
      <category><![CDATA[Golang]]></category>
      <category><![CDATA[Пост пользователя]]></category>
      <category><![CDATA[Видео]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 10 Aug 2021 03:39:10 GMT</pubDate>
      <content:encoded><![CDATA[<p>Очередной урок посвящён работе с файлами и командной строкой — точнее, выполнению команд shell из языка Go.</p><p>Чтобы работать с файлами, используется модуль ioutil. Какие возможности он предоставляет и как ими пользоваться — рассказано в видео.</p><p>Предыдущие уроки по Golang:</p><p>Первый урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-1-osnovy-jazyka-pervoe-prilozhenie-i-veb-server-v-3-stroki/?autoload=1">основы языка, первое приложение и веб-сервер в 3 строки</a>.</p><p>Второй урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-2-cikly-vetvlenija-operator-defer/?autoload=1">циклы, ветвления, оператор defer</a>.</p><p>Третий урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-3-ukazateli-struktury-massivy-i-slajsy/?autoload=1">указатели, структуры, массивы и слайсы</a>.</p><p>Четвёртый урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-4-iterator-for-range-i-struktura-map/?autoload=1">итератор for range и структура map</a>.</p><p>Пятый урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-5-funkcii-i-metody/?autoload=1">функции и методы</a>.</p><p>Шестой урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-6-interfejsy/?autoload=1">интерфейсы</a>.</p><p>Седьмой урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-7-rabota-s-oshibkami-i-interfejs-reader/?autoload=1">работа с ошибками и интерфейс Reader</a>.</p><p>Восьмой урок — <a href="https://tproger.ru/video/testirovanie-v-golang/?autoload=1">тестирование с помощью стандартной библиотеки</a>.</p><p>Девятый урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-9-mnogopotochnost-gorutiny-i-kanaly/?autoload=1">многопоточность, горутины и каналы</a>.</p><p>Десятый урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-10-mnogopotochnost-primitivy-sinhronizacii/?autoload=1">многопоточность, примитивы синхронизации</a>.</p><p>Одиннадцатый урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-11-rabota-s-panikami/?autoload=1">работа с паниками</a>.</p><p>Двенадцатый урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-12-testirovanie-s-pomoshhju-goconvey/">тестирование с помощью GoConvey</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Учимся разрабатывать на Golang. Урок 12: тестирование с помощью GoConvey</title>
      <link>https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-12-testirovanie-s-pomoshhju-goconvey</link>
      <comments>https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-12-testirovanie-s-pomoshhju-goconvey?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[theartofdevel]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-12-testirovanie-s-pomoshhju-goconvey</guid>
      <description><![CDATA[<p>GoConvey используется для тестирования программ на Go; работа с фреймворком продолжает изучение средств проверки, доступных разработчикам на Golang.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-12-testirovanie-s-pomoshhju-goconvey">Учимся разрабатывать на Golang. Урок 12: тестирование с помощью GoConvey</a>»</p>]]></description>
      <category><![CDATA[Для начинающих]]></category>
      <category><![CDATA[Обучение программированию]]></category>
      <category><![CDATA[Golang]]></category>
      <category><![CDATA[Пост пользователя]]></category>
      <category><![CDATA[Видео]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 06 Aug 2021 09:28:16 GMT</pubDate>
      <content:encoded><![CDATA[<p>Мы уже говорили про тестирование в одном из предыдущих уроков, но тогда рассматривали использование стандартной библиотеки Golang. На этот раз научимся работать с фреймворком GoConvey.</p><p>Предыдущие уроки по Golang:</p><p>Первый урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-1-osnovy-jazyka-pervoe-prilozhenie-i-veb-server-v-3-stroki/?autoload=1">основы языка, первое приложение и веб-сервер в 3 строки</a>.</p><p>Второй урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-2-cikly-vetvlenija-operator-defer/?autoload=1">циклы, ветвления, оператор defer</a>.</p><p>Третий урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-3-ukazateli-struktury-massivy-i-slajsy/?autoload=1">указатели, структуры, массивы и слайсы</a>.</p><p>Четвёртый урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-4-iterator-for-range-i-struktura-map/?autoload=1">итератор for range и структура map</a>.</p><p>Пятый урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-5-funkcii-i-metody/?autoload=1">функции и методы</a>.</p><p>Шестой урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-6-interfejsy/?autoload=1">интерфейсы</a>.</p><p>Седьмой урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-7-rabota-s-oshibkami-i-interfejs-reader/?autoload=1">работа с ошибками и интерфейс Reader</a>.</p><p>Восьмой урок — <a href="https://tproger.ru/video/testirovanie-v-golang/?autoload=1">тестирование с помощью стандартной библиотеки</a>.</p><p>Девятый урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-9-mnogopotochnost-gorutiny-i-kanaly/?autoload=1">многопоточность, горутины и каналы</a>.</p><p>Десятый урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-10-mnogopotochnost-primitivy-sinhronizacii/?autoload=1">многопоточность, примитивы синхронизации</a>.</p><p>Одиннадцатый урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-11-rabota-s-panikami/?autoload=1">работа с паниками</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Учимся разрабатывать на Golang. Урок 11: работа с паниками</title>
      <link>https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-11-rabota-s-panikami</link>
      <comments>https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-11-rabota-s-panikami?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[theartofdevel]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-11-rabota-s-panikami</guid>
      <description><![CDATA[<p>Разбираемся, что такое паники в языке Go, как с ними работать, как обрабатывать и как использовать для написания бизнес-логики.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-11-rabota-s-panikami">Учимся разрабатывать на Golang. Урок 11: работа с паниками</a>»</p>]]></description>
      <category><![CDATA[Для начинающих]]></category>
      <category><![CDATA[Обучение программированию]]></category>
      <category><![CDATA[Golang]]></category>
      <category><![CDATA[Пост пользователя]]></category>
      <category><![CDATA[Видео]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 06 Aug 2021 03:35:13 GMT</pubDate>
      <content:encoded><![CDATA[<p>В Go есть операции, которые автоматически возвращают паники и завершают работу программы. Большинство из этих ситуаций — ошибки во время программирования, которые компилятор не может выявить при компиляции вашей программы.</p><p>В этом видеоуроке мы разберёмся, что такое паники в языке Go, как с ними работать, как обрабатывать и как использовать для написания бизнес-логики.</p><p>Предыдущие уроки по Golang:</p><p>Первый урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-1-osnovy-jazyka-pervoe-prilozhenie-i-veb-server-v-3-stroki/?autoload=1">основы языка, первое приложение и веб-сервер в 3 строки</a>.</p><p>Второй урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-2-cikly-vetvlenija-operator-defer/?autoload=1">циклы, ветвления, оператор defer</a>.</p><p>Третий урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-3-ukazateli-struktury-massivy-i-slajsy/?autoload=1">указатели, структуры, массивы и слайсы</a>.</p><p>Четвёртый урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-4-iterator-for-range-i-struktura-map/?autoload=1">итератор for range и структура map</a>.</p><p>Пятый урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-5-funkcii-i-metody/?autoload=1">функции и методы</a>.</p><p>Шестой урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-6-interfejsy/?autoload=1">интерфейсы</a>.</p><p>Седьмой урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-7-rabota-s-oshibkami-i-interfejs-reader/?autoload=1">работа с ошибками и интерфейс Reader</a>.</p><p>Восьмой урок — <a href="https://tproger.ru/video/testirovanie-v-golang/?autoload=1">тестирование с помощью стандартной библиотеки</a>.</p><p>Девятый урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-9-mnogopotochnost-gorutiny-i-kanaly/?autoload=1">многопоточность, горутины и каналы</a>.</p><p>Десятый урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-10-mnogopotochnost-primitivy-sinhronizacii/?autoload=1">многопоточность, примитивы синхронизации</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Учимся разрабатывать на Golang. Урок 10: многопоточность, примитивы синхронизации</title>
      <link>https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-10-mnogopotochnost-primitivy-sinhronizacii</link>
      <comments>https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-10-mnogopotochnost-primitivy-sinhronizacii?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[theartofdevel]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-10-mnogopotochnost-primitivy-sinhronizacii</guid>
      <description><![CDATA[<p>Видео с подробным объяснением примитивов синхронизации в языке Golang и примерами их использования.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-10-mnogopotochnost-primitivy-sinhronizacii">Учимся разрабатывать на Golang. Урок 10: многопоточность, примитивы синхронизации</a>»</p>]]></description>
      <category><![CDATA[Для начинающих]]></category>
      <category><![CDATA[Обучение программированию]]></category>
      <category><![CDATA[Golang]]></category>
      <category><![CDATA[Пост пользователя]]></category>
      <category><![CDATA[Видео]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 23 Jul 2021 09:55:14 GMT</pubDate>
      <content:encoded><![CDATA[<p>В прошлом уроке мы разобрали каналы для общения между горутинами. Но что если нам не нужно общение? Что если мы хотим просто убедиться в том, что только одна горутина имеет доступ к переменной в конкретный момент времени? Для этого в Golang, как и во многих других языках программирования, используется механизм mutex (mutual exclusion — «взаимное исключение»).</p><p>В этом видео мы разберём примитивы синхронизации в языке Golang.</p><p>Это часть видеокурса по изучению Golang для решения практических задач. Другие уроки курса ниже:</p><p>Первый урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-1-osnovy-jazyka-pervoe-prilozhenie-i-veb-server-v-3-stroki/?autoload=1">основы языка, первое приложение и веб-сервер в 3 строки</a>.</p><p>Второй урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-2-cikly-vetvlenija-operator-defer/?autoload=1">циклы, ветвления, оператор defer</a>.</p><p>Третий урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-3-ukazateli-struktury-massivy-i-slajsy/?autoload=1">указатели, структуры, массивы и слайсы</a>.</p><p>Четвёртый урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-4-iterator-for-range-i-struktura-map/?autoload=1">итератор for range и структура map</a>.</p><p>Пятый урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-5-funkcii-i-metody/?autoload=1">функции и методы</a>.</p><p>Шестой урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-6-interfejsy/?autoload=1">интерфейсы</a>.</p><p>Седьмой урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-7-rabota-s-oshibkami-i-interfejs-reader/?autoload=1">работа с ошибками и интерфейс Reader</a>.</p><p>Восьмой урок — <a href="https://tproger.ru/video/testirovanie-v-golang/?autoload=1">тестирование с помощью стандартной библиотеки</a>.</p><p>Девятый урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-9-mnogopotochnost-gorutiny-i-kanaly/?autoload=1">многопоточность, горутины и каналы</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Учимся разрабатывать на Golang. Урок 9: многопоточность, горутины и каналы</title>
      <link>https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-9-mnogopotochnost-gorutiny-i-kanaly</link>
      <comments>https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-9-mnogopotochnost-gorutiny-i-kanaly?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[theartofdevel]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-9-mnogopotochnost-gorutiny-i-kanaly</guid>
      <description><![CDATA[<p>Это видео познакомит вас с горутинами и каналами в Golang. Вы научитесь работать с многопоточными приложениями.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-9-mnogopotochnost-gorutiny-i-kanaly">Учимся разрабатывать на Golang. Урок 9: многопоточность, горутины и каналы</a>»</p>]]></description>
      <category><![CDATA[Для начинающих]]></category>
      <category><![CDATA[Обучение программированию]]></category>
      <category><![CDATA[Golang]]></category>
      <category><![CDATA[Пост пользователя]]></category>
      <category><![CDATA[Видео]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 21 Jul 2021 05:40:35 GMT</pubDate>
      <content:encoded><![CDATA[<p>В этом видео мы поговорим про многопоточность, а именно про горутины и каналы в языке Go. Научимся работать с многопоточными приложениями, запускать горутины, а также научим горутины общаться между собой.</p><p>Это часть видеокурса по изучению Golang для решения практических задач. Другие уроки курса ниже:</p><p>Первый урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-1-osnovy-jazyka-pervoe-prilozhenie-i-veb-server-v-3-stroki/?autoload=1">основы языка, первое приложение и веб-сервер в 3 строки</a>.</p><p>Второй урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-2-cikly-vetvlenija-operator-defer/?autoload=1">циклы, ветвления, оператор defer</a>.</p><p>Третий урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-3-ukazateli-struktury-massivy-i-slajsy/?autoload=1">указатели, структуры, массивы и слайсы</a>.</p><p>Четвёртый урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-4-iterator-for-range-i-struktura-map/?autoload=1">итератор for range и структура map</a>.</p><p>Пятый урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-5-funkcii-i-metody/?autoload=1">функции и методы</a>.</p><p>Шестой урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-6-interfejsy/?autoload=1">интерфейсы</a>.</p><p>Седьмой урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-7-rabota-s-oshibkami-i-interfejs-reader/?autoload=1">работа с ошибками и интерфейс Reader</a>.</p><p>Восьмой урок — <a href="https://tproger.ru/video/testirovanie-v-golang/?autoload=1">тестирование с помощью стандартной библиотеки</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Видео: основы Apache Kafka</title>
      <link>https://tproger.ru/video/video-osnovy-apache-kafka</link>
      <comments>https://tproger.ru/video/video-osnovy-apache-kafka?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[theartofdevel]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/video/video-osnovy-apache-kafka</guid>
      <description><![CDATA[<p>Короткое видео, которое объясняет основы Apache Kafka и некоторые нюансы его использования.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/video/video-osnovy-apache-kafka">Видео: основы Apache Kafka</a>»</p>]]></description>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Пост пользователя]]></category>
      <category><![CDATA[Видео]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 09 Jul 2021 07:42:21 GMT</pubDate>
      <content:encoded><![CDATA[<p>Основная задача, которую выполняет Apache Kafka, — это передача данных из системы источника в целевую систему. При такой схеме всё просто. Но что если у вас 4 source-системы и 6 target-систем?</p><p>В таком случае вам придётся реализовать 24 интеграции. Каждая интеграция требует протокола взаимодействия, формата данных и валидации по схеме. Также нам необходимо выполнить нефункциональные требования, такие как:</p><ul><li>надёжность и гарантия доставки;</li><li>подключение новых получателей (target систем);</li><li>интеграция разных стеков.</li></ul><p>Такая задача уже не кажется простой.</p><h2>Почему стоит использовать Apache Kafka</h2><p>Apache Kafka — это распределённое, отказоустойчивое решение с гибкой архитектурой. Скейлится до 100 брокеров и миллиона запросов в секунду, по опыту удавалось выжать 550-600 тысяч сообщений в секунду, до миллиона не доходил. Есть возможность обрабатывать данные с задержкой менее чем 10 ms, то есть в реальном времени.</p><p>Apache Kafka создали в компании LinkedIn. С 2012 года это Open Source проект в составе Apache Foundation. Kafka написан на Scala и Java, а своё название получил в честь писателя Франца Кафки.</p><p>Для чего можно использовать Kafka:</p><ul><li>Система обмена сообщений в микросервисной архитектуре.</li><li>Сбор журналов событий, логов и метрик с различного ПО и оборудования.</li><li>Stream processing — возможность потоковой обработки данных хранящихся в Кафке.</li><li>Интеграция с Apache Spark, Storm, Hadoop и другими технологиями, использующимися для Big Data и Machine Learning-решений.</li></ul><p>Kafka используют в 2000+ компаниях — то есть это очень распространённое программное обеспечение.</p><ul><li>Netflix применяет для онлайн-рекомендаций, пока вы смотрите кино.</li><li>Uber собирает всю информацию о такси и поездках в реальном времени, также высчитывает маршрут, прогнозирует загруженность и считает цену поездки.</li><li>LinkedIn использует для спама и сбора данных о действиях пользователей в режиме реального времени.</li></ul><p>Во всех этих кейсах Kafka выступает в роли транспорта.</p><h2>Основные сущности Apache Kafka</h2><p>Основными сущностями для Apache Kafka являются:</p><ul><li>Broker — часть, отвечающая за приём, передачу и хранение сообщений.</li><li>ZooKeeper — отдельный вспомогательный продукт для хранения состояния кластера, конфигурации и метаданных.</li><li>Message или Record — сами данные.</li><li>Producer — информационная система, которая отправляет данные в Kafka.</li><li>Topic — то, куда попадают данные. Отправляются они в том же порядке что и прилетели (FIFO).</li><li>Consumer — тот, кто получает данные из Kafka.</li></ul><p>Record состоит из полей Key — опциональное поле для распределения сообщений по кластеру, Value — массив байт, Timestamp — время сообщения в формате Unix time, Headers —  key-value пары с пользовательскими атрибутами.</p><p>Topic может быть разделён на партиции для организации высокопроизводительной работы. Партиции могут быть распределены между узлами кластера, но Kafka может это сделать неравномерно.</p><p>Например, у вас три топика с тремя партициями. Один топик очень нагруженный, а два — не очень. Kafka может все партиции нагруженного топика распределить на один узел, и он будет очень нагружен. Это решается ручным конфигурированием.</p><p>Данные топика или партиции хранятся в log-файлах. Обычно там три файла: .log, .index и .timeindex. Они хранят в себе всю информацию по сообщениям.</p><p>В .log хранятся данные, offset, position и timestamp. В index хранится маппинг offset на position, а в timeindex — маппинг timestamp на offset. Максимальный размер .log-файла — 1GB. Когда этот размер превышен, создаются новые три файла log, index и timeindex. Эти три файла называются сегментами.</p><h2>Особенности Kafka</h2><p>Kafka не поддерживает ручное удаление данных из топика. Только автоматическая чистка по времени, которая настраивается через параметр Time-To-Live.</p><p>Kafka поддерживает репликацию, чтобы при потере узла кластера не потерялись данные. За это отвечает параметр replication-factor, который говорит, сколько копий партиций будет на разных узлах кластера.</p><p>Kafka обеспечивает согласованность данных при помощи master-slave кластеризации партиций топика. Например, топик делится на три партиции и одну из них Kafka назначает лидером. Остальные являются фолловерами.</p><p>Все операции чтения и записи происходят через лидер-реплику партиции. Поэтому если все лидер-реплики партиций окажутся на одном узле кластера, то этот узел станет самым нагруженным, а остальные будут просто отдыхать. В этом случае надо вручную перебалансировать кластер.</p><p>Если лидер-реплика умерла, нужно выбрать нового лидера. В дефолтной конфигурации фолловеры могут не обладать всеми данными. Это плохие кандидаты для лидеров.</p><p>Для исключения такой ситуации в Kafka есть механизм insync-реплик. Их количество задаётся в конфигурации. В таком случае при записи данных в лидер-реплику происходит синхронная запись в ISR-реплики-фолловеры. Такие ISR-реплики являются кандидатами на нового лидера. Внимание, это драматично влияет на производительность.</p><p>Producer отправляет сообщения только в лидер-реплик партиции. У отправителя есть опции отправки — acks. Она принимает параметры 0, 1 и −1 или all.</p><ul><li>Если acks = 0, значит отправителя не интересует подтверждение доставки и сообщения могут теряться. Этот режим нужен при огромных объемах данных и в специальных случаях.</li><li>Если acks=1, значит отправитель ожидает подтверждения доставки сообщения от лидер-реплики.</li><li>Если acks=all или −1, то отправитель ждёт синхронизации сообщения между всеми ISR-репликами лидер-реплики.</li></ul><p>Также producer поддерживает все известные семантики доставки: at most once, at least once, exactly once (idempotence).</p><p>Consumer читает пачки сообщений только из лидер-реплики партиции. Их можно объединять в группы, чтобы в несколько потоков читать данные. Это делается при помощи параметра group.id. Consumer должен закоммитить получение данных из Kafka. Есть 2 вида коммитов: автоматические и ручные. Если после получения данных при автокоммите consumer упал, то он не получит эти данные повторно.</p><p>Kafka — очень популярна, это проверенное, высокопроизводительное и очень гибкое решение. Но при его использовании нужно понимать нюансы.</p>]]></content:encoded>
    </item>
    <item>
      <title>Учимся разрабатывать на Golang. Урок 8: тестирование с помощью стандартной библиотеки</title>
      <link>https://tproger.ru/video/testirovanie-v-golang</link>
      <comments>https://tproger.ru/video/testirovanie-v-golang?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[theartofdevel]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/video/testirovanie-v-golang</guid>
      <description><![CDATA[<p>В языке Golang есть стандартная библиотека для тестирования. В этом видео мы научимся с ней работать.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/video/testirovanie-v-golang">Учимся разрабатывать на Golang. Урок 8: тестирование с помощью стандартной библиотеки</a>»</p>]]></description>
      <category><![CDATA[Для начинающих]]></category>
      <category><![CDATA[Обучение программированию]]></category>
      <category><![CDATA[Golang]]></category>
      <category><![CDATA[Пост пользователя]]></category>
      <category><![CDATA[Видео]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 06 Jul 2021 10:03:59 GMT</pubDate>
      <content:encoded><![CDATA[<p>В восьмом уроке мы поговорим о тестировании приложений на Golang. Это первая часть, в которой речь пойдёт только про использование стандартной библиотеки языка.</p><p>Предыдущие видео курса:</p><p>Первый урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-1-osnovy-jazyka-pervoe-prilozhenie-i-veb-server-v-3-stroki/?autoload=1">основы языка, первое приложение и веб-сервер в 3 строки</a>.</p><p>Второй урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-2-cikly-vetvlenija-operator-defer/?autoload=1">циклы, ветвления, оператор defer</a>.</p><p>Третий урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-3-ukazateli-struktury-massivy-i-slajsy/?autoload=1">указатели, структуры, массивы и слайсы</a>.</p><p>Четвёртый урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-4-iterator-for-range-i-struktura-map/?autoload=1">итератор for range и структура map</a>.</p><p>Пятый урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-5-funkcii-i-metody/?autoload=1">функции и методы</a>.</p><p>Шестой урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-6-interfejsy/?autoload=1">интерфейсы</a>.</p><p>Седьмой урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-7-rabota-s-oshibkami-i-interfejs-reader/?autoload=1">работа с ошибками и интерфейс Reader</a>.</p><p>А у вас есть опыт использования языка Go?</p>]]></content:encoded>
    </item>
    <item>
      <title>Учимся разрабатывать на Golang. Урок 7: работа с ошибками и интерфейс Reader</title>
      <link>https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-7-rabota-s-oshibkami-i-interfejs-reader</link>
      <comments>https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-7-rabota-s-oshibkami-i-interfejs-reader?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[theartofdevel]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-7-rabota-s-oshibkami-i-interfejs-reader</guid>
      <description><![CDATA[<p>Golang поддерживает обработку ошибок и интерфейс Reader для чтения потока байтов; оба механизма используются при работе с данными.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-7-rabota-s-oshibkami-i-interfejs-reader">Учимся разрабатывать на Golang. Урок 7: работа с ошибками и интерфейс Reader</a>»</p>]]></description>
      <category><![CDATA[Для начинающих]]></category>
      <category><![CDATA[Обучение программированию]]></category>
      <category><![CDATA[Golang]]></category>
      <category><![CDATA[Пост пользователя]]></category>
      <category><![CDATA[Видео]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 28 Jun 2021 04:52:51 GMT</pubDate>
      <content:encoded><![CDATA[<p>Продолжаем изучение языка Golang. Цель этого видеокурса — разработка полноценного приложения с API, бизнес-логикой и базой данных. Седьмой урок посвящён работе над ошибками в Golang. Кроме того, мы разберём интерфейс Reader. Он обладает единственным методом Read, который позволяет вычитывать поток данных в байтах.</p><p>0:10 Error and Stringers</p><p>13:57 Reader Interface</p><p>Первый урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-1-osnovy-jazyka-pervoe-prilozhenie-i-veb-server-v-3-stroki/?autoload=1">основы языка, первое приложение и веб-сервер в 3 строки</a>.</p><p>Второй урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-2-cikly-vetvlenija-operator-defer/?autoload=1">циклы, ветвления, оператор defer</a>.</p><p>Третий урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-3-ukazateli-struktury-massivy-i-slajsy/?autoload=1">указатели, структуры, массивы и слайсы</a>.</p><p>Четвёртый урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-4-iterator-for-range-i-struktura-map/?autoload=1">итератор for range и структура map</a>.</p><p>Пятый урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-5-funkcii-i-metody/?autoload=1">функции и методы</a>.</p><p>Шестой урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-6-interfejsy/?autoload=1">интерфейсы</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Учимся разрабатывать на Golang. Урок 6: интерфейсы</title>
      <link>https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-6-interfejsy</link>
      <comments>https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-6-interfejsy?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[theartofdevel]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-6-interfejsy</guid>
      <description><![CDATA[<p>Шестой урок видеокурса по Golang: интерфейсы с методами, интерфейс структуры с конструктором, устройство под капотом, nil interface и type assertions.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-6-interfejsy">Учимся разрабатывать на Golang. Урок 6: интерфейсы</a>»</p>]]></description>
      <category><![CDATA[Для начинающих]]></category>
      <category><![CDATA[Обучение программированию]]></category>
      <category><![CDATA[Golang]]></category>
      <category><![CDATA[Пост пользователя]]></category>
      <category><![CDATA[Видео]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 18 Jun 2021 05:55:58 GMT</pubDate>
      <content:encoded><![CDATA[<p>Шестой урок видеокурса посвящён интерфейсам в Golang. Интерфейсный тип определяет и описывает конкретные методы, которые должны быть у какого-то другого типа. Это большая тема, с которой часто возникают сложности у тех, что изучает Golang.</p><p>0:10 Interface с методами</p><p>09:03 Interface структуры + конструктор</p><p>18:30 Interface «под капотом»</p><p>20:10 Nil Interface</p><p>22:43 Interface как тип данных</p><p>26:30 Type assertions</p><p>Первый урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-1-osnovy-jazyka-pervoe-prilozhenie-i-veb-server-v-3-stroki/?autoload=1">основы языка, первое приложение и веб-сервер в 3 строки</a>.</p><p>Второй урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-2-cikly-vetvlenija-operator-defer/?autoload=1">циклы, ветвления, оператор defer</a>.</p><p>Третий урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-3-ukazateli-struktury-massivy-i-slajsy/?autoload=1">указатели, структуры, массивы и слайсы</a>.</p><p>Четвёртый урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-4-iterator-for-range-i-struktura-map/?autoload=1">итератор for range и структура map</a>.</p><p>Пятый урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-5-funkcii-i-metody/?autoload=1">функции и методы</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Учимся разрабатывать на Golang. Урок 5: функции и методы</title>
      <link>https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-5-funkcii-i-metody</link>
      <comments>https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-5-funkcii-i-metody?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[theartofdevel]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-5-funkcii-i-metody</guid>
      <description><![CDATA[<p>Пятый урок видеокурса по Golang: callback-функции, замыкание, методы структур и указатели на пути к приложению с API и базой данных.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-5-funkcii-i-metody">Учимся разрабатывать на Golang. Урок 5: функции и методы</a>»</p>]]></description>
      <category><![CDATA[Для начинающих]]></category>
      <category><![CDATA[Обучение программированию]]></category>
      <category><![CDATA[Golang]]></category>
      <category><![CDATA[Пост пользователя]]></category>
      <category><![CDATA[Видео]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 16 Jun 2021 00:20:38 GMT</pubDate>
      <content:encoded><![CDATA[<p>Продолжаем изучать Golang для разработки полноценного приложения с API, бизнес-логикой и базой данных.</p><p>Пятый урок посвящён функциям, замыканию, а также методам структур и указателям.</p><p>0:10 Callback functions</p><p>5:00 Замыкание</p><p>10:55 Методы структуры и указатели</p><p>Первый урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-1-osnovy-jazyka-pervoe-prilozhenie-i-veb-server-v-3-stroki/?autoload=1">основы языка, первое приложение и веб-сервер в 3 строки</a>.</p><p>Второй урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-2-cikly-vetvlenija-operator-defer/?autoload=1">циклы, ветвления, оператор defer</a>.</p><p>Третий урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-3-ukazateli-struktury-massivy-i-slajsy/?autoload=1">указатели, структуры, массивы и слайсы</a>.</p><p>Четвёртый урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-4-iterator-for-range-i-struktura-map/?autoload=1">итератор for range и структура map</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Учимся разрабатывать на Golang. Урок 4: итератор for range и структура map</title>
      <link>https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-4-iterator-for-range-i-struktura-map</link>
      <comments>https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-4-iterator-for-range-i-struktura-map?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[theartofdevel]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-4-iterator-for-range-i-struktura-map</guid>
      <description><![CDATA[<p>Четвёртый урок видеокурса по Golang: цикл for с ключевым словом range, структура map как реализация хеш-таблицы и декодирование map в структуру.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-4-iterator-for-range-i-struktura-map">Учимся разрабатывать на Golang. Урок 4: итератор for range и структура map</a>»</p>]]></description>
      <category><![CDATA[Для начинающих]]></category>
      <category><![CDATA[Обучение программированию]]></category>
      <category><![CDATA[Golang]]></category>
      <category><![CDATA[Пост пользователя]]></category>
      <category><![CDATA[Видео]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 10 Jun 2021 08:25:53 GMT</pubDate>
      <content:encoded><![CDATA[<p>Продолжаем изучать Golang для разработки полноценного приложения с API, бизнес-логикой и базой данных.</p><p>В четвёртом уроке мы разберём цикл for с ключевым словом range и структуру map, которая реализует в Golang хэш-таблицу.</p><p>0:10 Цикл for с ключевым словом range</p><p>2:03 Структура map</p><p>15:30 Декодирование map to struct</p><p>Первый урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-1-osnovy-jazyka-pervoe-prilozhenie-i-veb-server-v-3-stroki/?autoload=1">основы языка, первое приложение и веб-сервер в 3 строки</a>.</p><p>Второй урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-2-cikly-vetvlenija-operator-defer/?autoload=1">циклы, ветвления, оператор defer</a>.</p><p>Третий урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-3-ukazateli-struktury-massivy-i-slajsy/?autoload=1">указатели, структуры, массивы и слайсы</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Видео: Необычный Python. Паттерны, продолжение. Урок 5</title>
      <link>https://tproger.ru/video/video-neobychnyj-python-patterny-prodolzhenie-urok-5</link>
      <comments>https://tproger.ru/video/video-neobychnyj-python-patterny-prodolzhenie-urok-5?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[theartofdevel]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/video/video-neobychnyj-python-patterny-prodolzhenie-urok-5</guid>
      <description><![CDATA[<p>Пятый урок видеокурса по Python посвящён каталогам и классификации паттернов AbstractFactory, Strategy и Proxy, а также тому, как они появляются.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/video/video-neobychnyj-python-patterny-prodolzhenie-urok-5">Видео: Необычный Python. Паттерны, продолжение. Урок 5</a>»</p>]]></description>
      <category><![CDATA[Для начинающих]]></category>
      <category><![CDATA[Обучение программированию]]></category>
      <category><![CDATA[Python]]></category>
      <category><![CDATA[Паттерны проектирования]]></category>
      <category><![CDATA[Пост пользователя]]></category>
      <category><![CDATA[Видео]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 09 Jun 2021 03:51:11 GMT</pubDate>
      <content:encoded><![CDATA[<p>В этом видео мы продолжим рассматривать паттерны. Теперь это будут AbstractFactory, Strategy и Proxy.  Я расскажу, как они появляются, как классифицируются и какие каталоги бывают.</p><p>0:10 Каталоги паттернов</p><p>2:50 AbstractFactory</p><p>15:18 Strategy</p><p>21:46 Proxy</p><p>Во время прохождения уроков этого видеокурса вы сможете разработать полноценное первое приложение на Python.</p><p>Первый урок — <a href="https://tproger.ru/video/video-osnovy-python-i-razrabotka-pervogo-prilozhenija-s-pomoshhju-fastapi-urok-1/?autoload=1">основы Python</a>.</p><p>Второй урок — <a href="https://tproger.ru/video/video-neobychnyj-python-cikly-klassy-i-dekoratory-urok-2/?autoload=1">циклы, наследование и абстракции</a>.</p><p>Третий урок — <a href="https://tproger.ru/video/video-neobychnyj-python-polimorfizm-inkapsuljacija-i-peregruzka-metodov-urok-3/?autoload=1">полиморфизм и инкапсуляция</a>.</p><p>Четвёртый урок —<a href="https://tproger.ru/video/video-neobychnyj-python-interfejsy-i-patterny-urok-4/?autoload=1">интерфейсы и паттерны</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Учимся разрабатывать на Golang. Урок 3: указатели, структуры, массивы и слайсы</title>
      <link>https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-3-ukazateli-struktury-massivy-i-slajsy</link>
      <comments>https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-3-ukazateli-struktury-massivy-i-slajsy?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[theartofdevel]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-3-ukazateli-struktury-massivy-i-slajsy</guid>
      <description><![CDATA[<p>Третий урок видеокурса по Golang продолжает знакомство с основами языка: указатели, структуры, массивы и слайсы на пути к полноценному приложению.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-3-ukazateli-struktury-massivy-i-slajsy">Учимся разрабатывать на Golang. Урок 3: указатели, структуры, массивы и слайсы</a>»</p>]]></description>
      <category><![CDATA[Для начинающих]]></category>
      <category><![CDATA[Обучение программированию]]></category>
      <category><![CDATA[Golang]]></category>
      <category><![CDATA[Пост пользователя]]></category>
      <category><![CDATA[Видео]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 03 Jun 2021 14:49:09 GMT</pubDate>
      <content:encoded><![CDATA[<p>Эта серия уроков посвящена изучению языка Golang. Мы начали с азов, а закончим полноценным приложением с API, бизнес-логикой и базой данных.</p><p>В третьем уроке продолжаем получать базовые знания — про указатели, структуры, массивы и слайсы.</p><p>0:14 Указатели</p><p>6:29 Структуры</p><p>15:40 Массивы</p><p>19:55 Слайсы</p><p>Первый урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-1-osnovy-jazyka-pervoe-prilozhenie-i-veb-server-v-3-stroki/?autoload=1">основы языка, первое приложение и веб-сервер в 3 строки</a>.</p><p>Второй урок — <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-2-cikly-vetvlenija-operator-defer/?autoload=1">циклы, ветвления, оператор defer</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Видео: Необычный Python. Интерфейсы и паттерны. Урок 4</title>
      <link>https://tproger.ru/video/video-neobychnyj-python-interfejsy-i-patterny-urok-4</link>
      <comments>https://tproger.ru/video/video-neobychnyj-python-interfejsy-i-patterny-urok-4?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[theartofdevel]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/video/video-neobychnyj-python-interfejsy-i-patterny-urok-4</guid>
      <description><![CDATA[<p>Четвёртый урок видеокурса по Python: реализация интерфейсов и паттерны Builder, FabricMethod, TemplateMethod, Chain of Responsibility и Command.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/video/video-neobychnyj-python-interfejsy-i-patterny-urok-4">Видео: Необычный Python. Интерфейсы и паттерны. Урок 4</a>»</p>]]></description>
      <category><![CDATA[Обучение программированию]]></category>
      <category><![CDATA[Python]]></category>
      <category><![CDATA[Пост пользователя]]></category>
      <category><![CDATA[Видео]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 31 May 2021 11:00:31 GMT</pubDate>
      <content:encoded><![CDATA[<p>В этом видео мы посмотрим на реализацию интерфейсов в Python и разберемся с несколькими паттернами: Builder (Билдер), FabricMethod (ФабричныйМетод), TemplateMethod (Шаблонный Метод), Chain of Responsibility (Цепочка Обязанностей) и Command (Команда).</p><p>0:11 Interfaces</p><p>7:14 Patterns</p><p>8:55 Pattern: Builder</p><p>13:15 Chain of Responsibility</p><p>29:24 Patterns: FabricMethod and TemplateMethod</p><p>32:43 Pattern: TemplateMethod</p><p>37:15 Pattern: Command</p><p>Цель этого видеокурса — помочь вам разработать полноценное первое приложение на Python.</p><p>Первый урок — <a href="https://tproger.ru/video/video-osnovy-python-i-razrabotka-pervogo-prilozhenija-s-pomoshhju-fastapi-urok-1/?autoload=1">основы Python</a>.</p><p>Второй урок — <a href="https://tproger.ru/video/video-neobychnyj-python-cikly-klassy-i-dekoratory-urok-2/?autoload=1">циклы, наследование и абстракции</a>.</p><p>Третий урок — <a href="https://tproger.ru/video/video-neobychnyj-python-polimorfizm-inkapsuljacija-i-peregruzka-metodov-urok-3/?autoload=1">полиморфизм и инкапсуляция</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Видео: Необычный Python. Полиморфизм, инкапсуляция и перегрузка методов. Урок 3</title>
      <link>https://tproger.ru/video/video-neobychnyj-python-polimorfizm-inkapsuljacija-i-peregruzka-metodov-urok-3</link>
      <comments>https://tproger.ru/video/video-neobychnyj-python-polimorfizm-inkapsuljacija-i-peregruzka-metodov-urok-3?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[theartofdevel]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/video/video-neobychnyj-python-polimorfizm-inkapsuljacija-i-peregruzka-metodov-urok-3</guid>
      <description><![CDATA[<p>Третий видеоурок курса по Python посвящён полиморфизму и инкапсуляции, а также позиционным и именованным аргументам и декоратору с аргументами.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/video/video-neobychnyj-python-polimorfizm-inkapsuljacija-i-peregruzka-metodov-urok-3">Видео: Необычный Python. Полиморфизм, инкапсуляция и перегрузка методов. Урок 3</a>»</p>]]></description>
      <category><![CDATA[Обучение программированию]]></category>
      <category><![CDATA[Python]]></category>
      <category><![CDATA[Пост пользователя]]></category>
      <category><![CDATA[Видео]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 27 May 2021 14:06:53 GMT</pubDate>
      <content:encoded><![CDATA[<p>Цель этого видеокурса — помочь вам разработать полноценное первое приложение на Python. Третий урок посвящён полиморфизму и инкапсуляции.</p><p>1:10 Позиционные и именованные аргументы</p><p>8:35 Декоратор с аргументами</p><p>14:40 Полиморфизм</p><p>24:40 Инкапсуляция</p><p>34:24 Ломаем Python. Singledispatch. Почти перегрузка методов</p><p>В <a href="https://tproger.ru/video/video-osnovy-python-i-razrabotka-pervogo-prilozhenija-s-pomoshhju-fastapi-urok-1/?autoload=1">первом уроке</a> мы разобрали основы Python, научились настраивать виртуальное окружение и даже создали первое небольшое приложение.</p><p>Во <a href="https://tproger.ru/video/video-neobychnyj-python-cikly-klassy-i-dekoratory-urok-2/?autoload=1">втором уроке</a> мы поговорили про циклы, наследование и абстракции, а также затронули декораторы.</p>]]></content:encoded>
    </item>
    <item>
      <title>Учимся разрабатывать на Golang. Урок 2: циклы, ветвления, оператор defer</title>
      <link>https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-2-cikly-vetvlenija-operator-defer</link>
      <comments>https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-2-cikly-vetvlenija-operator-defer?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[theartofdevel]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-2-cikly-vetvlenija-operator-defer</guid>
      <description><![CDATA[<p>Второй урок курса по Golang охватывает константы, возвращаемые параметры, оператор ветвления if и ключевое слово defer на пути к приложению с API.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-2-cikly-vetvlenija-operator-defer">Учимся разрабатывать на Golang. Урок 2: циклы, ветвления, оператор defer</a>»</p>]]></description>
      <category><![CDATA[Для начинающих]]></category>
      <category><![CDATA[Обучение программированию]]></category>
      <category><![CDATA[Golang]]></category>
      <category><![CDATA[Пост пользователя]]></category>
      <category><![CDATA[Видео]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 24 May 2021 14:13:35 GMT</pubDate>
      <content:encoded><![CDATA[<p>В этой серии уроков мы научимся разрабатывать, используя язык Golang. Начнем с азов и закончим полноценным приложением с API, бизнес-логикой и базой данных. <a href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-1-osnovy-jazyka-pervoe-prilozhenie-i-veb-server-v-3-stroki/">Первый урок был посвящён</a> основам языка. Мы также написали первое приложение и веб-сервер на Golang в 3 строчки.</p><p>Второй урок тоже посвящён базовым знаниям. Мы разберём, как работают циклы, какие есть операторы ветвления, а также посмотрим на ключевое слово defer.</p><p>0:10 Константы</p><p>2:55 Возвращаемые параметры</p><p>7:25 Именные возвращаемые параметры</p><p>12:17 Пустой return</p><p>18:59 Оператор ветвления if</p><p>29:55 Оператор ветвления switch</p><p>33:25 Отложенные операции. Ключевое слово defer</p>]]></content:encoded>
    </item>
    <item>
      <title>Учимся разрабатывать на Golang. Урок 1: основы языка, первое приложение и веб-сервер в 3 строки</title>
      <link>https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-1-osnovy-jazyka-pervoe-prilozhenie-i-veb-server-v-3-stroki</link>
      <comments>https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-1-osnovy-jazyka-pervoe-prilozhenie-i-veb-server-v-3-stroki?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[theartofdevel]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-1-osnovy-jazyka-pervoe-prilozhenie-i-veb-server-v-3-stroki</guid>
      <description><![CDATA[<p>Первый урок курса по Golang: выбор и настройка IDE, типы данных, компиляция под разные ОС и запуск собственного веб-сервера на macOS и Windows.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/video/uchimsja-razrabatyvat-na-golang-urok-1-osnovy-jazyka-pervoe-prilozhenie-i-veb-server-v-3-stroki">Учимся разрабатывать на Golang. Урок 1: основы языка, первое приложение и веб-сервер в 3 строки</a>»</p>]]></description>
      <category><![CDATA[Для начинающих]]></category>
      <category><![CDATA[Обучение программированию]]></category>
      <category><![CDATA[Golang]]></category>
      <category><![CDATA[Пост пользователя]]></category>
      <category><![CDATA[Видео]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 20 May 2021 15:57:15 GMT</pubDate>
      <content:encoded><![CDATA[<p>В этой серии уроков мы научимся разрабатывать, используя язык Golang. Начнём с азов и закончим полноценным приложением с API, бизнес-логикой и базой данных.</p><p>В первом видео мы поговорим про сам язык Golang, выберем и настроим IDE для написания кода, напишем первое приложение, разберёмся с типами данных, посмотрим на компиляцию и сборку приложения под разные ОС. А ещё напишем веб-сервер и запустим его на macOS и Windows!</p><p>0:19 О языке Golang. Вводная</p><p>6:08 Выбор IDE</p><p>8:07 Создаем проёкт в GoLand</p><p>9:50 Переменные окружения ОС</p><p>11:36 Настраиваем GoLand</p><p>13:44 Первое приложение, функция main</p><p>16:42 Компиляция и запуск приложения</p><p>29:15 Переменные и типы данных</p><p>51:00 Конкатенация fmt.Sprintf()</p><p>56:04 Особенности сборки под macOS</p><p>58:50 Веб-сервер на Golang в 3 строки</p><p>1:00:42 Сборка и запуск веб-сервера под Windows и Linux</p>]]></content:encoded>
    </item>
    <item>
      <title>Видео: Необычный Python. Циклы, классы и декораторы. Урок 2</title>
      <link>https://tproger.ru/video/video-neobychnyj-python-cikly-klassy-i-dekoratory-urok-2</link>
      <comments>https://tproger.ru/video/video-neobychnyj-python-cikly-klassy-i-dekoratory-urok-2?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[theartofdevel]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/video/video-neobychnyj-python-cikly-klassy-i-dekoratory-urok-2</guid>
      <description><![CDATA[<p>Второй видеоурок курса по Python охватывает циклы, классы, наследование и абстракции, а также декораторы — с разбором ключевых аспектов языка.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/video/video-neobychnyj-python-cikly-klassy-i-dekoratory-urok-2">Видео: Необычный Python. Циклы, классы и декораторы. Урок 2</a>»</p>]]></description>
      <category><![CDATA[Обучение программированию]]></category>
      <category><![CDATA[Python]]></category>
      <category><![CDATA[Пост пользователя]]></category>
      <category><![CDATA[Видео]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 17 May 2021 10:17:36 GMT</pubDate>
      <content:encoded><![CDATA[<p>В этом видео мы поговорим про циклы, наследование и абстракции, а также затронем декораторы. Это не обычные лекции, коих тысячи. Здесь мы рассматриваем только некоторые аспекты Python и программирования, самые сочные и важные на мой взгляд.</p><p>2:05 Циклы</p><p>10:00 Классы, наследование, сущности</p><p>25:30 Декораторы</p><p>А вот <a href="https://tproger.ru/video/video-osnovy-python-i-razrabotka-pervogo-prilozhenija-s-pomoshhju-fastapi-urok-1/?autoload=1">первый урок</a>. В нём мы разобрали основы Python, типы данных, научились настраивать виртуальное окружение, разобрали ООП и функциональное программирование, разработали первое приложение (калькулятор) и познакомились с фреймворком FastAPI.</p><p>Цель этих уроков — помочь вам написать первое приложение. Но уже не калькулятор, а что-то более серьёзное, например, с использованием того же фреймворка FastAPI. Чтобы погрузиться в академическую разработку, читайте книжки, записывайтесь на курсы, экспериментируйте, читайте чужой код. И всё время пишите сами.</p>]]></content:encoded>
    </item>
    <item>
      <title>Видео: основы Python и разработка первого приложения с помощью FastAPI. Урок 1</title>
      <link>https://tproger.ru/video/video-osnovy-python-i-razrabotka-pervogo-prilozhenija-s-pomoshhju-fastapi-urok-1</link>
      <comments>https://tproger.ru/video/video-osnovy-python-i-razrabotka-pervogo-prilozhenija-s-pomoshhju-fastapi-urok-1?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[theartofdevel]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/video/video-osnovy-python-i-razrabotka-pervogo-prilozhenija-s-pomoshhju-fastapi-urok-1</guid>
      <description><![CDATA[<p>Видеоурок знакомит с Python: установка языка, выбор IDE, настройка VirtualEnv, переменные и типы данных, а также запуск первого приложения.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/video/video-osnovy-python-i-razrabotka-pervogo-prilozhenija-s-pomoshhju-fastapi-urok-1">Видео: основы Python и разработка первого приложения с помощью FastAPI. Урок 1</a>»</p>]]></description>
      <category><![CDATA[Для начинающих]]></category>
      <category><![CDATA[Обучение программированию]]></category>
      <category><![CDATA[Python]]></category>
      <category><![CDATA[Пост пользователя]]></category>
      <category><![CDATA[Видео]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 13 May 2021 07:49:21 GMT</pubDate>
      <content:encoded><![CDATA[<p>В этом видео мы познакомимся с языком программирования Python, рассмотрим его синтаксис и попробуем написать первое приложение.</p><p>Python — язык общего назначения. На нём можно разрабатывать разные приложения, от калькулятора до полноценных информационных систем. Ещё он отлично подходит для изучения в качестве первого языка программирования.</p><p>0:37 Устанавливаем Python</p><p>7:48 Выбираем IDE для разработки на Python: VS Code, PyCharm и другие варианты</p><p>13:07 Создаём виртуальное окружение VirtualEnv: зачем это нужно и как настроить</p><p>15:45 Разбираем код на Python и запускаем скрипт для его выполнения</p><p>23:00 Изучаем основы Python: переменные и типы данных</p><p>46:20 Разрабатываем первое приложение на Python — калькулятор</p><p>01:00:38 Функциональное и объектно-ориентированное программирование: разбираем две парадигмы написания кода на простом примере с книгой</p><p>01:12:40 Разрабатываем веб-приложение на Python с помощью <a href="https://fastapi.tiangolo.com/">фреймворка FastAPI</a></p><p>Хотите изучить основы Python самостоятельно? Прочитайте историю разработчика, которому это удалось. Он также <a href="https://tproger.ru/articles/moja-istorija-v-it-kak-samostojatelno-izuchit-javascript-i-python-chtoby-osushhestvit-svoju-mechtu/">поделился источниками, которыми пользовался для самостоятельного изучения Python</a>: книгами, курсами, видео на YouTube.</p>]]></content:encoded>
    </item>
    <item>
      <title>Квантовый компьютер в России: как он выглядит внутри, подходит ли для майнинга, какие планы у учёных</title>
      <link>https://tproger.ru/video/kvantovyj-kompjuter-v-rossii-kak-on-vygljadit-vnutri-podhodit-li-dlja-majninga-kakie-plany-u-uchjonyh</link>
      <comments>https://tproger.ru/video/kvantovyj-kompjuter-v-rossii-kak-on-vygljadit-vnutri-podhodit-li-dlja-majninga-kakie-plany-u-uchjonyh?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[serg1us]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/video/kvantovyj-kompjuter-v-rossii-kak-on-vygljadit-vnutri-podhodit-li-dlja-majninga-kakie-plany-u-uchjonyh</guid>
      <description><![CDATA[<p>Экскурсия в лабораторный корпус МФТИ: чем кубит отличается от бита, как работает российская машина и какие проблемы стоят перед технологией.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/video/kvantovyj-kompjuter-v-rossii-kak-on-vygljadit-vnutri-podhodit-li-dlja-majninga-kakie-plany-u-uchjonyh">Квантовый компьютер в России: как он выглядит внутри, подходит ли для майнинга, какие планы у учёных</a>»</p>]]></description>
      <category><![CDATA[Квантовые вычисления]]></category>
      <category><![CDATA[Пост пользователя]]></category>
      <category><![CDATA[Видео]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 07 May 2021 10:43:27 GMT</pubDate>
      <content:encoded><![CDATA[<p>Мы добрались до лабораторного корпуса МФТИ, чтобы узнать, что такое квантовый компьютер, как он работает и чем кубит отличается от бита. В этом видео мы также обсудим, над чем сейчас работают учёные и какие проблемы стоят перед реализацией универсального квантового компьютера.</p><p><b>Содержание:</b></p><p>2:36 Первый квантовый компьютер в России</p><p>Первый кубит был получен в 2015 году. В 2017 году реализовали дисперсионное считывание, соединив кубит с резонатором. Первый двухкубитный алгоритм в МФТИ реализовали в 2019 году. Это совсем молодая технология для России, да и в мире она ещё достаточно сырая.</p><p>4:04 Принцип работы квантового компьютера и его отличия от классического компьютера</p><p>В квантовом компьютере без коррекции ошибок всё аналоговое: состояние кубитов непрерывно меняется. Переходы между состояниями описываются матрицами.</p><p>Квантовый компьютер берёт огромный вектор и умножает его на гигантские матрицы из реальных действительных чисел. В классическом компьютере работа с матрицами такого размера невозможна, потому что они не влезают в оперативную память.</p><p>6:52 Как квантовый компьютер выглядит внутри</p><p>Как и в обычном компьютере, процессор подключается к материнской плате. В квантовом компьютере материнская плата представляет собой весь криостат и подключенное к нему электронное оборудование, которое посылает управляющие импульсы.</p><p>13:13 Состояние кубита на Сфере Блоха</p><p>Для представления чистых состояний кубита используется Сфера Блоха. Например, у вас есть основное состояние. Вы посылаете на кубит импульс, после чего он переходит из основного состояния в возбуждённое. Сфера Блоха описывает для одного кубита все состояния, в том числе суперпозицию.</p><p>16:51 Процессор в квантовом компьютере</p><p>20:07 Подключение ПК к квантовому компьютеру</p><p>Квантовый компьютер выступает как сопроцессор. Уже даже появилось понятие QPU. К обычному бинарному компьютеру через PCI-слот подключается ретранслятор для работы с квантовым компьютером.</p><p>21:45 Квантовые алгоритмы</p><p>Самые популярные квантовые алгоритмы:</p><ul><li>алгоритм Шора — факторизация целых чисел;</li><li>алгоритм Гровера — решение задачи перебора.</li></ul><p>Ещё много алгоритмов предложено для решения задач, например, из линейной алгебры — перемножение матриц, решение систем линейных уравнений, — но они очень громоздкие. Пока нет системы коррекции ошибок, они работать не будут.</p><p>23:58 Использование квантового компьютера для машинного обучения</p><p>Всё делается в обычном Jupyter Notebook на ПК. Пишешь код на Python, загоняешь его в ретранслятор, дальше в работу включается квантовый компьютер.</p><p>Пример задачи: есть оценки сомелье и набор химических показателей вин. По набору химических показателей нужно определить, какая оценка будет у вина от сомелье. Это можно сделать классической нейросетью, а можно сделать квантовым алгоритмом. Фишка в том, что в квантовых алгоритмах вроде бы меньше параметров, которые нужно использовать, чтобы решить задачу. Но этот вопрос сейчас только изучается.</p><p>26:16 Управление криостатом</p><p>27:13 Устройство ретранслятора</p><p>28:07 Можно ли майнить на квантовом компьютере</p><p>Теоретически майнить на квантовом компьютере можно. Но пока нет подходящего для этого алгоритма.</p><p>28:26 Планы учёных</p><p>Сейчас идёт активная исследовательская деятельность в области создания кодов коррекции ошибок. Такие системы есть в классических компьютерах. Например, когда через канал передачи данных отправляются 5 одинаковых бит. Даже если 1 бит испортится, останется ещё 4 работающих бита. То же самое хотят реализовать в квантовом компьютере. Подобная система позволит получить так называемый логический кубит, но на нём будет труднее совершать операции, так как он стабилизирован.</p><p>29:29 Как измерить мощность квантового компьютера</p><p>Измерять мощность квантового компьютера можно по мощности классического компьютера, который был бы необходим для решения аналогичных задач.</p>]]></content:encoded>
    </item>
    <item>
      <title>Система заметок с нуля. Часть 5: знакомство с объектным хранилищем MinIO и разработка микросервиса на Golang</title>
      <link>https://tproger.ru/video/sistema-zametok-s-nulja-chast-5-znakomstvo-s-obektnym-hranilishhem-minio-i-razrabotka-mikroservisa-na-golang</link>
      <comments>https://tproger.ru/video/sistema-zametok-s-nulja-chast-5-znakomstvo-s-obektnym-hranilishhem-minio-i-razrabotka-mikroservisa-na-golang?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[theartofdevel]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/video/sistema-zametok-s-nulja-chast-5-znakomstvo-s-obektnym-hranilishhem-minio-i-razrabotka-mikroservisa-na-golang</guid>
      <description><![CDATA[<p>Знакомство с объектным хранилищем MinIO, его первый запуск и настройка через docker-compose, а также разработка File Service на Golang.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/video/sistema-zametok-s-nulja-chast-5-znakomstvo-s-obektnym-hranilishhem-minio-i-razrabotka-mikroservisa-na-golang">Система заметок с нуля. Часть 5: знакомство с объектным хранилищем MinIO и разработка микросервиса на Golang</a>»</p>]]></description>
      <category><![CDATA[Микросервисы]]></category>
      <category><![CDATA[Форматы хранения данных]]></category>
      <category><![CDATA[Пост пользователя]]></category>
      <category><![CDATA[Видео]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 30 Apr 2021 11:36:24 GMT</pubDate>
      <content:encoded><![CDATA[<p>Мы продолжаем создание системы заметок. На этот раз посмотрим на разработанный File Service, который работает с хранилищем MinIO. Но сначала разберёмся с самим хранилищем и его настройкой.</p><p>Содержание:</p><p>0:17  Знакомство с MinIO</p><p>3:54  MinIO docker-compose.yml</p><p>5:43 Разработка микросервиса на Golang</p><p>28:08  Текущее состояние системы заметок</p><h2>Знакомство с хранилищем MinIO</h2><p>MinIO создано для размещения неструктурированных данных, таких как фотографии, видеозаписи, файлы журналов, резервные копии, а также образы виртуальных машин и контейнеров. Небольшой размер позволяет включать его в состав стека приложений. В MinIO также поддерживается распределённый режим (Distributed mode), который предоставляет возможность подключения к одному серверу хранения объектов множества дисков, в том числе расположенных на разных машинах.</p><p>MinIO крайне минималистичо, у него нет красивого и функционального UI. Но по части использования ресурсов оно крайне жадное — оперативную память и процессор кушает достаточно много. Также хочу отметить, что такие известные решения, как FreeNAS и TrueNAS под капотом используют именно MinIO.</p><p>В MinIO используется внутренний механизм избыточного кодирования (Erasure coding), обеспечивающий системе достаточную устойчивость, чтобы она оставалась работоспособной даже при отказе половины дисков. Также хранилище управляет целостностью и безопасностью данных, используя собственное хеширование и шифрование на стороне сервера.</p><p>Производительность MinIO сильно зависит от конфигурации операционной системы и файловой системы, на которой будут храниться файлы. По сути, этот инструмент даёт лишь метод хранения объектов поверх файловой системы и никак не влияет на саму файловую систему. Если у вас есть задача хранить и оперировать миллиардами объектов, необходимо подумать в первую очередь о файловой системе, которая будет использоваться под MinIO.</p><h2>Использование MinIO Erasure Coding</h2><p>Erasure Coding — это программная защита данных от повреждения и потери. Как рейд, только намного надёжней. Если классический RAID 6 может позволить себе потерять 2 диска, то MinIO спокойно переживает потерю половины.</p><p>Вся информация хранится в виде блоков данных, к которым есть блоки чётности. И вроде это всё уже было сделано много раз, только есть важное «но»: мы можем явно указывать соотношение блоков чётности к блокам данных для хранимых объектов.</p><p>Хотите 1:1? Пожалуйста! Хотите 5:2? Без проблем! Очень важная функция, если вы используете сразу несколько нод и хотите найти свой собственный баланс между максимальной безопасностью данных и количеством затраченных ресурсов.</p><p>Из коробки MinIO использует формулу N/2 (где N — общее количество дисков), т.е. делит ваши данные между N/2 дисками данных и N/2 дисками чётности. Перевожу на человеческий: можно потерять половину дисков и восстановить данные. Это соотношение задаётся через Storage Class, позволяя вам самостоятельно выбрать, что важнее — надёжность или ёмкость.</p><p>Предположим, что у вас инсталляция на 16 дисков и вам надо сохранить файл размером 100 Мб. Если используются настройки по умолчанию (8 дисков под данные, 8 под блоки чётности), то файл в итоге займёт практически двойной объём т.е. 200 Мб. Если отношение дисков будет 10/6, то понадобится 160 Мб. 14/2 — 114 Мб.</p><h2>Настройка и запуск MinIO</h2><p>Cкачиваем файлы docker-compose.yml и nginx.conf, после чего можно запускать.</p><p>Давайте поближе посмотрим docker-compose файл.</p><p>По дефолту здесь 4 сервиса MinIO. Их количество можно увеличить до 16, но мы уменьшим до 2, чтобы сохранить кластер. Большее количество узлов для нас сейчас избыточно. Также здесь описан сервис NGINX, для которого мы скачивали конфигурацию. Он нужен для балансировки запросов между узлами кластера.</p><p>Описание сервисов MinIO по сути одинаковое. Давайте посмотрим на minio1:</p><ul><li>image с тегом релиза от определенной даты;</li><li>два volume, их можно распределить по разным физическим дискам, чтобы обеспечить отказоустойчивость;</li><li>наружу выставляется 9000 порт для обращения к API;</li><li>указываются переменные среды с логином и паролем доступа к MinIO;</li><li>команда для запуска сервера MinIO в URL  которой используется синтаксис указания множества серверов: [http://minio{1…2}](http://minio{1…2})/data{1…2} раскрывается как массив http://minio1/data1 и http://minio2/data2;</li></ul><p>Далее описан healthcheck, который позволяет мониторить здоровье сервиса. У него есть параметр test. Это Shell-команда, которая вызывает Curl и передает ему URL для проверки того, живёт ли сервис. Делать такую проверку мы будем каждые 30 секунд. Если за 20 секунд сервис не ответит, он будет помечен как нездоровый.</p><p>Запустив compose-файл, открываем интерфейс в браузере. Слева в сайдбаре отображены бакеты — корзины, в которых хранятся файлы, справа — список файлов в бакете. Функционал здесь минимален: можно загрузить, расшарить или удалить файл и создать или удалить бакет.</p><p>На этом знакомство с MinIO завершено, далее — продолжение разработки системы заметок с нуля. В предыдущих частях мы:</p><ul><li><a href="https://tproger.ru/articles/razrabotka-sistemy-zametok-s-nulja-chast-1-proektirovanie-mikroservisnoj-arhitektury/">спроектировали микросервисную архитектуру</a>;</li><li><a href="https://tproger.ru/articles/razrabotka-sistemy-zametok-s-nulja-chast-2-rest-api-dlja-restful-api-service-jwt-swagger/">разработали RESTful API Service на Golang cо Swagger и авторизацией</a>;</li><li><a href="https://tproger.ru/articles/razrabotka-sistemy-zametok-s-nulja-chast-3-znakomstvo-s-neo4j-rabota-nad-mikroservisami-categoryservice-i-apiservice/">познакомились с графовой БД Neo4j и работали над микросервисами CategoryService и APIService</a>;</li><li><a href="https://tproger.ru/articles/sistema-zametok-s-nulja-chast-4-razrabotka-mikroservisov-noteservice-tagservice-i-userservice/">разработали микросервисы NoteService, TagService и UserService</a>.</li></ul><p><a href="https://github.com/theartofdevel/notes_system">Исходный код проекта на GitHub</a></p><p>Какая текущая ситуация? Мы разработали все сервисы. Осталось реализовать веб-клиент в виде приложения на Vue.js, а также заняться инфраструктурой системы, такой как Service Discovering и OpenTracing, упаковать все сервисы в docker-контейнеры и настроить CI/CD.</p>]]></content:encoded>
    </item>
    <item>
      <title>Недавний взлом PHP как ещё один повод задуматься о текущем состоянии языка</title>
      <link>https://tproger.ru/video/nedavnij-vzlom-php-eshhjo-odin-povod-zadumatsja-o-tekushhem-sostojanii-jazyka</link>
      <comments>https://tproger.ru/video/nedavnij-vzlom-php-eshhjo-odin-povod-zadumatsja-o-tekushhem-sostojanii-jazyka?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[theartofdevel]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/video/nedavnij-vzlom-php-eshhjo-odin-povod-zadumatsja-o-tekushhem-sostojanii-jazyka</guid>
      <description><![CDATA[<p>Хакеры добавили бэкдоры в исходники на сервере git.php.net, подписав коммиты как «Fix typo»: что это значит для языка и сфер его применения.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/video/nedavnij-vzlom-php-eshhjo-odin-povod-zadumatsja-o-tekushhem-sostojanii-jazyka">Недавний взлом PHP как ещё один повод задуматься о текущем состоянии языка</a>»</p>]]></description>
      <category><![CDATA[PHP]]></category>
      <category><![CDATA[Пост пользователя]]></category>
      <category><![CDATA[Видео]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 28 Apr 2021 07:20:20 GMT</pubDate>
      <content:encoded><![CDATA[<p>Не так давно хакеры взломали Git-репозиторий PHP для добавления бэкдоров в исходный код языка. Это породило новый виток обсуждений о языке и его месте в современной разработке.</p><p>Кратко напомню суть истории.</p><p>Исходники PHP хранились не на GitHub (на нём было только зеркало), GitLab или Bitbucket, а на собственном Git-сервере git.php.net.  Этот <a href="https://tproger.ru/news/hakery-vzlomali-git-repozitorij-php-dlja-dobavlenija-bjekdorov-v-ishodnyj-kod-jazyka/">сервер взломали</a> и сделали коммиты от лица известных разработчиков PHP. Название подобрали безобидное: Fix typo, то есть изменение как будто коснулось исправления опечатки в комментарии или в документации.</p><p>Но на самом деле всё не так просто. Разберём код:</p><ol><li>На 366 строчке злоумышленник получает значение заголовка HTTP_USER_AGENTT в двумя буквами T на конце.</li><li>На 368 строчке проверяет, что текст в заголовке начинается со слова zerodium.</li><li>Если условие верное, с 369 по 371 строчку выполняется попытка интерпретировать текст из заголовка HTTP_USER_AGENTT как PHP-код и исполнить его.</li></ol><p>Эти изменения затронули ветки разработки для версии PHP 8.1, выпуск которой запланирован на конец 2021 года.</p><h2>Какие проблемы мог принести взлом PHP</h2><p>Допустим, никто не заметил, коммит попал в сборку и разошелся по всем источникам, включая официальные репозитории для пакетных менеджеров ОС Linux. Разработчики обновили бы PHP из официального репозитория и запустили свои сервисы на последней версии PHP. Что это даёт? Что можно сделать?</p><p>С этого момента можно отправить абсолютно любой запрос на сервер с последней версией PHP. В этот запрос можно добавить заголовок с именем HTTP_USER_AGENTT. Значением может быть любой PHP-код.</p><p>Например, мы добавим строку, начинающуюся со слова zerodium. Далее будет PHP-код, который выкачает бинарник по ссылке, положит его в папку /tmp и запустит. В свою очередь, этот бинарник выкачает другой бинарник, который уже может содержать в себе вредоносный код для взлома и предоставления доступа к этой операционной системе злоумышленнику.</p><p>Такой сценарий был бы возможен для ЛЮБОГО сервера где развернуто PHP-приложение. В широко известных сообществах в узких кругах даже пошли шутки, что слово zerodium является паролем к PHP.</p><p>Конечно, такую ситуацию и представить страшно, а допустить и вовсе было бы эпик-фейлом. Поэтому хорошо, что разработчики PHP заметили проблему и ревертнули коммит. Но хакеры ещё раз ревертнули реверт коммита. Скорее всего, после этого разработчики приняли решение перенести репозиторий со своего сервера на GitHub и ещё раз ревертнули коммит, который ревертил коммит, который ревертил коммит злоумышленика, чтобы избежать ещё одного реверта.</p><h2>Нынешнее состояние PHP</h2><p>Я не большой любитель PHP. Меня приводит в панику его синтаксис, особенно стрелочка для вызова методов. Везде через точку, здесь — через стрелочку. Возможно, этому есть объяснение, но в целом неважно, выглядит ужасно.</p><p>У самого языка нет ни одного значимого преимущества перед Python или Java, чтобы на нём что-то разрабатывать. Один Xdebug чего стоит. С одной стороны, мощное средство дебаггинга. С другой стороны,  работает на сервере и пожирает ресурсы VPS, купленной специально для командной разработки и тестирования.</p><p>PHP сегодня — это, по сути, поддержка legacy-кода и CMS вроде WordPress, Drupal и других. Даже новые CMS иногда пишут на PHP. А к ним надо писать плагины. Поэтому нет, PHP живее всех живых, пока есть мелкие интернет-магазины, коих тысячи. Их надо поддерживать, улучшать. А ещё — создавать новые плагины для CMS. Пока вся эта экосистема жива и использует PHP, язык тоже будет жить.</p><p>Какие-то новые проекты тоже пишутся на PHP, но особого смысла в этом нет, когда есть Golang, Rust, Python, да тот же C# и Java. По сути, у каждого языка есть своя ниша, хотя они все и являются языками общего назначения. Ниша PHP всегда была там, где нужно разработать быстрый MVP, проверить гипотезу и не заплатить много денег. Ну и CMS, куда же без них.</p><p>По сути, CMS и является сейчас основной нишей языка. Примерно такая же ситуация с Java. Много enterprise legacy-кода, который надо поддерживать и развивать, но при выборе языка для микросервиса скорее возьмут Python, Golang или Rust/Ruby, чем PHP или Java.</p>]]></content:encoded>
    </item>
    <item>
      <title>Видео: разработка микросервиса на Go на примере реального проекта</title>
      <link>https://tproger.ru/video/video-razrabotka-mikroservisa-na-go-na-primere-realnogo-proekta</link>
      <comments>https://tproger.ru/video/video-razrabotka-mikroservisa-na-go-na-primere-realnogo-proekta?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[theartofdevel]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/video/video-razrabotka-mikroservisa-na-go-na-primere-realnogo-proekta</guid>
      <description><![CDATA[<p>Разбор API Gateway на Golang: структура проекта, авторизация через JSON Web Token, система ошибок и паттерны разработки, исходный код лежит на GitHub.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/video/video-razrabotka-mikroservisa-na-go-na-primere-realnogo-proekta">Видео: разработка микросервиса на Go на примере реального проекта</a>»</p>]]></description>
      <category><![CDATA[Микросервисы]]></category>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[Golang]]></category>
      <category><![CDATA[Пост пользователя]]></category>
      <category><![CDATA[Видео]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 23 Apr 2021 07:38:08 GMT</pubDate>
      <content:encoded><![CDATA[<p>В этом видео мы рассмотрим готовый проект на Go, являющийся API Gateway для микросервисной архитектуры. Он используется в рамках системы заметок, которую мы <a href="https://tproger.ru/articles/razrabotka-sistemy-zametok-s-nulja-chast-1-proektirovanie-mikroservisnoj-arhitektury/">разрабатываем в отдельной серии материалов.</a></p><p>Мы разберём реализацию JSON Web Token авторизации и систему ошибок. Посмотрим на программную архитектуру проекта, изучим программные паттерны разработки и посмотрим, как использовать в проекте язык программирования Golang.</p><p>Исходный код проекта <a href="https://github.com/theartofdevel/notes_system">доступен на GitHub</a>.</p><p>0:33 Обзор структуры проекта, функции main в файле main.go — точке входа в приложении.</p><p>2:42 Обзор обёртки над логером logrus. Логирование в разные файлы с разным уровнем логирования.</p><p>12:34 Создание объекта конфигурации из YAML-файла при помощи библиотеки cleanenv.</p><p>16:30 Разбираем обёртку над кэшем в Golang и реализацию кэша с использованием библиотеки freecache.</p><p>21:40 Реализация JSON Web Token.</p><p>32:05 Смотрим на хендлеры — обработчики запросов к сервису, разбираем паттерн Data Transfer Object в Golang.</p><p>41:13 Система обработки ошибок и определения статуса HTTP кода возврата по ошибке.</p><p>1:00:10 Общий REST Client для взаимодействия с RESTful сервисами.</p><p>1:09:00 Разбираемся с сервисами бизнес-логики и контекстом в Golang.</p><p>1:23:10 Функции старта приложения по порту и на сокете, Graceful Shutdown с закрытием ресурсов.</p><p>1:26:40 Разбираемся с особенностью Golang: nil != nil.</p>]]></content:encoded>
    </item>
    <item>
      <title>Видео: разработка микросервисов на Python на примере реального проекта</title>
      <link>https://tproger.ru/video/video-razrabotka-mikroservisov-na-python-na-primere-realnogo-proekta</link>
      <comments>https://tproger.ru/video/video-razrabotka-mikroservisov-na-python-na-primere-realnogo-proekta?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[theartofdevel]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/video/video-razrabotka-mikroservisov-na-python-na-primere-realnogo-proekta</guid>
      <description><![CDATA[<p>Разбор архитектуры сервиса на Flask и Neo4j: паттерны MVC, Dependency Injection и Data Transfer Object, исходный код проекта выложен на GitHub.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/video/video-razrabotka-mikroservisov-na-python-na-primere-realnogo-proekta">Видео: разработка микросервисов на Python на примере реального проекта</a>»</p>]]></description>
      <category><![CDATA[Python]]></category>
      <category><![CDATA[Микросервисы]]></category>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[Пост пользователя]]></category>
      <category><![CDATA[Видео]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 21 Apr 2021 08:03:35 GMT</pubDate>
      <content:encoded><![CDATA[<p>В этом видео мы изучим программную архитектуру проекта, разберём программные паттерны разработки, такие как MVC и Dependency Injection, посмотрим, как правильно разрабатывать микросервисы на языке программирования Python. Мы также познакомимся с фреймворком Flask и графовой базой данных Neo4j в качестве хранилища.</p><p>Рассматриваемый в видео микросервис — часть системы заметок, которую мы <a href="https://tproger.ru/articles/razrabotka-sistemy-zametok-s-nulja-chast-1-proektirovanie-mikroservisnoj-arhitektury/">разрабатываем с нуля в отдельной серии материалов</a>.</p><p>Исходный код проекта <a href="https://github.com/theartofdevel/notes_system">доступен на GitHub</a>.</p><p>Содержание:</p><p>0:20 Разбираем файл app.py — это главная точка входа в приложение. Также смотрим на классы и методы для работы с категориями с использованием библиотеки Flask RESTful и паттерн Data Transfer Object для обработки пользовательских данных.</p><p>17:40 Разбираем паттерн Dependency Injector, который позволяет внедрять зависимости, избегая дополнительной связанности, и поддерживать паттерн Low Coupling.</p><p>25:22 Пишем класс CustomJSONEncoder для сериализации вложенной структуры категорий в JSON-строку.</p><p>29:13 Разбираем класс реализации бизнес-логики и бизнес-смысл проекта.</p><p>34:12 Разбираем паттерн Data Access Object и смотрим на реализацию работы с хранилищем Neo4j из Python.</p><p>41:42 Учимся работать с ошибками во Flask и определять статус-код транспорта HTTP в зависимости от ошибки.</p><p>45:40 Тестируем сервис, дёргая эндпоинты.</p>]]></content:encoded>
    </item>
    <item>
      <title>Проекты на Django для начинающих: двухчасовой видеокурс</title>
      <link>https://tproger.ru/video/proekty-na-django-dlja-nachinajushhih-dvuhchasovoj-videokurs</link>
      <comments>https://tproger.ru/video/proekty-na-django-dlja-nachinajushhih-dvuhchasovoj-videokurs?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Сергей Почекутов]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/video/proekty-na-django-dlja-nachinajushhih-dvuhchasovoj-videokurs</guid>
      <description><![CDATA[<p>Сокращатель ссылок, список дел и словарь английских слов — три проекта на Django для знакомства с веб-разработкой на языке Python.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/video/proekty-na-django-dlja-nachinajushhih-dvuhchasovoj-videokurs">Проекты на Django для начинающих: двухчасовой видеокурс</a>»</p>]]></description>
      <category><![CDATA[Для начинающих]]></category>
      <category><![CDATA[Python]]></category>
      <category><![CDATA[Django]]></category>
      <category><![CDATA[Видео]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 08 Feb 2021 04:41:36 GMT</pubDate>
      <content:encoded><![CDATA[<p>В этом видео показаны проекты на Django, которые будут полезны начинающим разработчикам. Они помогут разобраться со структурой и освоить базовые техники создания веб-приложений на языке Python.</p><p>2:40 URL Shortener — простой сокращатель ссылок.</p><p>48:48 ToDo List — приложение для управлением списками дел.</p><p>1:34:28 English Dictionary — словарь английских слов со значениями, синонимами и антонимами.</p><p>После прохождения этого видеокурса попробуйте сделать более сложный проект. Например, у нас есть <a href="https://tproger.ru/translations/django-react-webapp/">подробная инструкция по созданию веб-приложения с бэкендом на Django и фронтендом на React</a>.</p><p>Если хотите узнать больше о Django, <a href="https://www.djangoproject.com/start/">посмотрите документацию фреймворка</a>. В ней описаны основные возможности с примерами использования на практике.</p>]]></content:encoded>
    </item>
    <item>
      <title>Веб-разработка для начинающих: бесплатный видеокурс, который поможет оценить свои силы</title>
      <link>https://tproger.ru/video/veb-razrabotka-dlja-nachinajushhih-besplatnyj-videokurs-kotoryj-pomozhet-ocenit-svoi-sily</link>
      <comments>https://tproger.ru/video/veb-razrabotka-dlja-nachinajushhih-besplatnyj-videokurs-kotoryj-pomozhet-ocenit-svoi-sily?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Сергей Почекутов]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/video/veb-razrabotka-dlja-nachinajushhih-besplatnyj-videokurs-kotoryj-pomozhet-ocenit-svoi-sily</guid>
      <description><![CDATA[<p>Основы HTML, CSS и JavaScript на реальных примерах: курс помогает понять, интересен ли фронтенд и стоит ли продолжать обучение веб-разработке.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/video/veb-razrabotka-dlja-nachinajushhih-besplatnyj-videokurs-kotoryj-pomozhet-ocenit-svoi-sily">Веб-разработка для начинающих: бесплатный видеокурс, который поможет оценить свои силы</a>»</p>]]></description>
      <category><![CDATA[JavaScript]]></category>
      <category><![CDATA[Для начинающих]]></category>
      <category><![CDATA[CSS]]></category>
      <category><![CDATA[HTML]]></category>
      <category><![CDATA[Видео]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 19 Jan 2021 12:12:49 GMT</pubDate>
      <content:encoded><![CDATA[<p>Веб-разработка — популярная точка входа в IT для начинающих. Особенно это касается технологий фронтенда — создания всего, с чем взаимодействуют пользователи в браузере.</p><p>Этот видеокурс поможет понять, будет ли вам интересно заниматься веб-разработкой со стороны фронтенда. В нём рассмотрены основы HTML, CSS и JavaScript на реальных примерах. Минимум теории, максимум впечатлений от работы с кодом.</p><p>После прохождения курса вы точно будете понимать, что такое веб-разработка. Это поможет принять взвешенное решение, стоит ли тратить время и силы на дальнейшее обучение или лучше обратить внимание на другие сферы.</p><p>06:05 Основы HTML</p><p>20:05 Основы CSS</p><p>02:49:24 Основы JavaScript</p><p>Если поняли, что фронтенд — это ваше, вот дорожная карта фронтенд-разработчика в 2021 году:</p><p>Если после прохождения курса веб-разработка со стороны фронтенда не впечатлила, посмотрите другие полезные статьи для начинающих:</p><ul><li><a href="https://tproger.ru/articles/dorozhnaja-karta-po-pentestu-kak-stat-pentesterom-s-nulja/">Дорожная карта по пентесту: как стать пентестером с нуля</a></li><li><a href="https://tproger.ru/articles/backend-roadmap-2021/">Как стать бэкенд-разработчиком в 2021 году: дорожная карта</a></li></ul>]]></content:encoded>
    </item>
    <item>
      <title>Data Science для начинающих: 12 проектов на Python за 3 часа</title>
      <link>https://tproger.ru/video/data-science-dlja-nachinajushhih-12-proektov-na-python-za-3-chasa</link>
      <comments>https://tproger.ru/video/data-science-dlja-nachinajushhih-12-proektov-na-python-za-3-chasa?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Сергей Почекутов]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/video/data-science-dlja-nachinajushhih-12-proektov-na-python-za-3-chasa</guid>
      <description><![CDATA[<p>Практика на фреймворке Streamlit: сбор и визуализация данных, таблицы, графики и тепловые карты, а также развёртывание готовых приложений.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/video/data-science-dlja-nachinajushhih-12-proektov-na-python-za-3-chasa">Data Science для начинающих: 12 проектов на Python за 3 часа</a>»</p>]]></description>
      <category><![CDATA[Для начинающих]]></category>
      <category><![CDATA[Python]]></category>
      <category><![CDATA[Data Science]]></category>
      <category><![CDATA[Видео]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 12 Jan 2021 05:13:09 GMT</pubDate>
      <content:encoded><![CDATA[<p>Для начинающих в Data Science важна практика, которая помогает быстро прокачать навыки. С помощью этого видео вы научитесь обрабатывать и визуализировать данные, а затем развёртывать созданные приложения.</p><p>Для создания проектов вы будете использовать фреймворк <a href="https://www.streamlit.io/">Streamlit</a>. Один из его главных плюсов — простая визуализация данных. С первых строчек кода на Python вы получите веб-приложение. которое обновляется в режиме реального времени. Можно управлять сортировкой, представлять данные в виде таблиц, графиков и тепловых карт. Вы будете сразу видеть результаты своей работы.</p><p>По ссылке — код проекта на GitHub:</p><p>2:54 1. <a href="https://github.com/dataprofessor/streamlit_freecodecamp/tree/main/app_1_simple_stock_price">Simple Stock Price</a></p><p>13:24 2. <a href="https://github.com/dataprofessor/streamlit_freecodecamp/tree/main/app_2_simple_bioinformatics_dna">Simple Bioinformatics DNA Count</a></p><p>29:44 3. <a href="https://github.com/dataprofessor/streamlit_freecodecamp/tree/main/app_3_eda_basketball">EDA Basketball</a></p><p>50:39 4. <a href="https://github.com/dataprofessor/streamlit_freecodecamp/tree/main/app_4_eda_football">EDA Football</a></p><p>1:00:48 5. <a href="https://github.com/dataprofessor/streamlit_freecodecamp/tree/main/app_5_eda_sp500_stock">EDA SP500 Stock Price</a></p><p>1:24:03 6. <a href="https://github.com/dataprofessor/streamlit_freecodecamp/tree/main/app_6_eda_cryptocurrency">EDA Cryptocurrency</a></p><p>1:50:47 7. <a href="https://github.com/dataprofessor/streamlit_freecodecamp/tree/main/app_7_classification_iris">Classification Iris</a></p><p>1:58:58 8. <a href="https://github.com/dataprofessor/streamlit_freecodecamp/tree/main/app_8_classification_penguins">Classification Penguins</a></p><p>2:16:08 9. <a href="https://github.com/dataprofessor/streamlit_freecodecamp/tree/main/app_9_regression_boston_housing">Regression Boston Housing</a></p><p>2:27:53 10. <a href="https://github.com/dataprofessor/streamlit_freecodecamp/tree/main/app_10_regression_bioinformatics_solubility">Regression Bioinformatics Solubility</a></p><p>2:54:27 11. <a href="https://github.com/dataprofessor/penguins-heroku">Deploy to Heroku</a></p><p>3:04:37 12. Deploy to Streamlit Sharing</p><p>Больше полезных материалов, которые помогут понять, с чего начать в Data Science:</p><ul><li><a href="https://tproger.ru/translations/a-beginners-guide-to-data-science/">Data Science с нуля: подробный гайд для начинающих</a></li><li><a href="https://tproger.ru/translations/create-and-deploy-app-with-pycaret/">Создайте и разверните своё первое веб-приложение для машинного обучения</a></li><li><a href="https://tproger.ru/experts/data-science-practice/">Практика Data Science: где искать датасеты и что с ними делать — отвечают эксперты</a></li></ul>]]></content:encoded>
    </item>
    <item>
      <title>Веб-скрейпинг на Python: запускаем парсинг сайтов за 1 час</title>
      <link>https://tproger.ru/video/veb-skrejping-na-python-zapuskaem-parsing-sajtov-za-1-chas</link>
      <comments>https://tproger.ru/video/veb-skrejping-na-python-zapuskaem-parsing-sajtov-za-1-chas?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Сергей Почекутов]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/video/veb-skrejping-na-python-zapuskaem-parsing-sajtov-za-1-chas</guid>
      <description><![CDATA[<p>Автоматизированное извлечение данных с сайтов помогает отслеживать скидки и сравнивать цены — видеокурс по библиотеке Beautiful Soup.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/video/veb-skrejping-na-python-zapuskaem-parsing-sajtov-za-1-chas">Веб-скрейпинг на Python: запускаем парсинг сайтов за 1 час</a>»</p>]]></description>
      <category><![CDATA[Для начинающих]]></category>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Python]]></category>
      <category><![CDATA[Видео]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 07 Jan 2021 10:13:32 GMT</pubDate>
      <content:encoded><![CDATA[<p>Веб-скрейпинг — это метод автоматизированного извлечения данных с сайтов. С его помощью можно решать разные задачи. Например:</p><ul><li>отслеживать скидки на определённые товары в интернет-магазинах;</li><li>сравнивать цены на разных сервисах;</li><li>ловить низкие цены на авиабилеты.</li></ul><p>Вариантов применения намного больше, надо только включить фантазию. Главное, не собирать информацию, защищённую законом, — например, персональные данные пользователей.</p><p>В этом видео парсинг на Python реализован с помощью библиотеки Beautiful Soup. Она позволяет собирать информацию с любых ресурсов, будь то социальная сеть, Википедия или интернет-магазин. Библиотека предоставляет методы для навигации, поиска и изменения синтаксического дерева.</p><p>01:22 В первой части курса вы изучите концепцию на примере скрейпинга базовой HTML-страницы.</p><p>24:48 Во второй части курса научитесь извлекать данные с реального сайта.</p><p>1:01:53 Напоследок узнаете, как сохранить собранные данные.</p><p>Посмотрите также <a href="https://tproger.ru/articles/tips-and-libraries-for-web-scraping/">подборку других инструментов для веб-скрейпинга</a>. Там есть примеры онлайн-сервисов, а также библиотеки для Python, JavaScript и Java.</p>]]></content:encoded>
    </item>
    <item>
      <title>Как компилятор преобразует код на C в Assembler?</title>
      <link>https://tproger.ru/video/kak-kompiljator-preobrazuet-kod-na-c-v-assembler</link>
      <comments>https://tproger.ru/video/kak-kompiljator-preobrazuet-kod-na-c-v-assembler?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Олег Борисенков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/video/kak-kompiljator-preobrazuet-kod-na-c-v-assembler</guid>
      <description><![CDATA[<p>Автор видео с ручкой и бумагой сравнивает программу на C и её ассемблерный вид на примере вывода чисел Фибоначчи, объясняя машинный код.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/video/kak-kompiljator-preobrazuet-kod-na-c-v-assembler">Как компилятор преобразует код на C в Assembler?</a>»</p>]]></description>
      <category><![CDATA[Компиляторы]]></category>
      <category><![CDATA[Язык Си]]></category>
      <category><![CDATA[Язык ассемблера]]></category>
      <category><![CDATA[Видео]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Sun, 03 Jan 2021 09:12:27 GMT</pubDate>
      <content:encoded><![CDATA[<p>Автор видео, используя только ручку и бумагу, сравнивает код на C и скомпилированный в Assembler. Он делает это на примере программы, которая выводит на экран <a href="https://tproger.ru/problems/finding-fibonacci/">числа Фибоначчи</a>.</p><p>В комментариях подсказывают, что в реальности машинный код получается более оптимизированным. <a href="https://godbolt.org/z/7dYv58">По этой ссылке</a> вы найдете компилятор из языка Си в Assembler, который подсвечивает соответствующие друг другу строки программы на С и Assembler.</p><p>0:00 Как программа на C считает числа Фибоначчи</p><p>2:28 Как скомпилировать и дизассемблировать программу</p><p>3:20 Разбор машинного кода</p>]]></content:encoded>
    </item>
    <item>
      <title>Боты для Discord на Python: проект для начинающих</title>
      <link>https://tproger.ru/video/boty-dlja-discord-na-python-proekt-dlja-nachinajushhih</link>
      <comments>https://tproger.ru/video/boty-dlja-discord-na-python-proekt-dlja-nachinajushhih?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Сергей Почекутов]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/video/boty-dlja-discord-na-python-proekt-dlja-nachinajushhih</guid>
      <description><![CDATA[<p>Видеоурок учит создавать простых ботов для Discord: от сервера и базовых функций до хранения настроек, тестирования, веб-сервера и уведомлений из GitHub.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/video/boty-dlja-discord-na-python-proekt-dlja-nachinajushhih">Боты для Discord на Python: проект для начинающих</a>»</p>]]></description>
      <category><![CDATA[Для начинающих]]></category>
      <category><![CDATA[Python]]></category>
      <category><![CDATA[Боты]]></category>
      <category><![CDATA[Видео]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 25 Dec 2020 08:06:35 GMT</pubDate>
      <content:encoded><![CDATA[<p>Боты для Discord решают разные задачи — ищут и воспроизводят музыку, делают мемы, общаются с пользователями. После просмотра этого видео вы научитесь создавать своих ботов. Они будут очень простыми, но главное здесь — понять, как это вообще работает. Дальше можно улучшать своих ботов и добавлять новую функциональность.</p><p>Что вы изучите:</p><ul><li>библиотеку discord.py;</li><li>Discord API;</li><li><a href="https://repl.it/">Repl.it</a> — сервис, который позволяет создавать полноценные приложения в браузере.</li></ul><p>01:18 Создаём сервер на Discord</p><p>01:52 Создаём бота</p><p>06:05 Создаём проект на Repl.it</p><p>09:33 Настраиваем базовые возможности бота</p><p>20:14 Улучшаем бота</p><p>33:35 Настраиваем хранение настроек бота</p><p>56:09 Тестируем бота</p><p>58:42 Создаём веб-сервер</p><p>01:03:36 Настраиваем бесперебойную работу бота</p><p>01:05:21 Создаём ещё одного бота, который сообщает обо всех обновлениях в репозитории на GitHub</p><p>Больше интересных проектов на Python:</p><ul><li><a href="https://tproger.ru/video/12-proektov-na-python-dlja-novichkov-trjohchasovoj-videokurs/">12 проектов на Python для новичков: трёхчасовой видеокурс</a></li><li><a href="https://tproger.ru/translations/13-python-projects-for-intermediate-developers/">13 проектов для Python-разработчиков среднего уровня</a></li></ul>]]></content:encoded>
    </item>
    <item>
      <title>Основы Docker: исчерпывающий видеоурок для начинающих</title>
      <link>https://tproger.ru/video/osnovy-docker-ischerpyvajushhij-videourok-dlja-nachinajushhij</link>
      <comments>https://tproger.ru/video/osnovy-docker-ischerpyvajushhij-videourok-dlja-nachinajushhij?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Марина Александровна]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/video/osnovy-docker-ischerpyvajushhij-videourok-dlja-nachinajushhij</guid>
      <description><![CDATA[<p>Видеоурок за полтора часа объясняет, что такое Docker и когда его применять: работа с портами, временная база данных и деплой через DockerHub.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/video/osnovy-docker-ischerpyvajushhij-videourok-dlja-nachinajushhij">Основы Docker: исчерпывающий видеоурок для начинающих</a>»</p>]]></description>
      <category><![CDATA[Для начинающих]]></category>
      <category><![CDATA[Docker]]></category>
      <category><![CDATA[Видео]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 18 Dec 2020 06:50:44 GMT</pubDate>
      <content:encoded><![CDATA[<p>Основы Docker за полтора часа: данный видеоурок сэкономит вам кучу времени, которое вы бы потратили на поиск в Google, раскуривание мануалов и самостоятельные попытки что-то реализовать.</p><p>Автор доступно рассказывает о том, что такое Docker, когда следует использовать этот инструмент, а также даёт возможность попрактиковаться. В отличие от стандартных туториалов, где присутствует лишь практика с «Hello World», здесь вы узнаете, как работать с портами, сможете поднять временную базу данных, а также развернёте и задеплоите небольшой проект с использованием DockerHub.</p><p>2:22 Что такое Docker?</p><p>16:29 Простой пример Hello World</p><p>31:34 Пример WEB приложения</p><p>35:55 Работаем с портами</p><p>41:10 Что такое docker volume</p><p>46:54 Поднимаем временную базу данных</p><p>55:26 Разворачиваем реальный проект</p><p>1:00:35 Что такое docker-compose</p><p>1:05:23 Создаём виртуальную машину (подробно)</p><p>1:08:25 Ставим Docker и Docker compose на Linux</p><p>1:10:17 Деплой проекта с ипользованием GitHub</p><p>1:16:50 Деплой проекта с ипользованием DockerHub</p><p>Держите также <a href="https://tproger.ru/articles/chto-takoje-docker/">гайд по работе с Docker для начинающих</a>.</p>]]></content:encoded>
    </item>
  </channel>
</rss>