<?xml version="1.0" encoding="utf-8" ?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:tt="http://teletype.in/" xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/"><title>Мария</title><author><name>Мария</name></author><id>https://teletype.in/atom/stoic_ftr</id><link rel="self" type="application/atom+xml" href="https://teletype.in/atom/stoic_ftr?offset=0"></link><link rel="alternate" type="text/html" href="https://teletype.in/@stoic_ftr?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=stoic_ftr"></link><link rel="next" type="application/rss+xml" href="https://teletype.in/atom/stoic_ftr?offset=10"></link><link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></link><updated>2026-05-13T09:26:08.770Z</updated><entry><id>stoic_ftr:JafSEiPNKgf</id><link rel="alternate" type="text/html" href="https://teletype.in/@stoic_ftr/JafSEiPNKgf?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=stoic_ftr"></link><title>Релизные процессы. Простыми словами про управление релизами.</title><published>2025-02-28T06:55:28.814Z</published><updated>2025-02-28T06:55:28.814Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img3.teletype.in/files/a8/15/a815e3a2-503f-4e0e-9707-900846bd74c2.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img3.teletype.in/files/a4/8a/a48a0b87-6c78-4179-b1b7-b151bd12681d.png&quot;&gt;В мире современных приложений нельзя просто взять и выложить обновление, не продумав процесс. Если выпустить сырую версию, пользователи столкнутся с ошибками, поставят низкие оценки, а компания может потерять репутацию. Именно поэтому существует управление релизами – это процесс планирования, тестирования и выпуска обновлений, который позволяет избежать хаоса.</summary><content type="html">
  &lt;p id=&quot;pWup&quot;&gt;В мире современных приложений нельзя просто взять и выложить обновление, не продумав процесс. Если выпустить сырую версию, пользователи столкнутся с ошибками, поставят низкие оценки, а компания может потерять репутацию. Именно поэтому существует управление релизами – это процесс планирования, тестирования и выпуска обновлений, который позволяет избежать хаоса.&lt;/p&gt;
  &lt;figure id=&quot;DVpq&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/a4/8a/a48a0b87-6c78-4179-b1b7-b151bd12681d.png&quot; width=&quot;1000&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;Ng6S&quot;&gt;Что такое управление релизами?&lt;/h2&gt;
  &lt;p id=&quot;R1eb&quot;&gt;Управление релизами – это организация процесса выпуска новых версий программного обеспечения. Включает в себя пять основных этапов:&lt;/p&gt;
  &lt;ol id=&quot;oAyi&quot;&gt;
    &lt;li id=&quot;yGSc&quot;&gt;&lt;strong&gt;Планирование&lt;/strong&gt; – определяем, когда и что будем выпускать.&lt;/li&gt;
    &lt;li id=&quot;3VUi&quot;&gt;&lt;strong&gt;Сборка&lt;/strong&gt; – объединяем и тестируем код.&lt;/li&gt;
    &lt;li id=&quot;79UF&quot;&gt;&lt;strong&gt;Пользовательское тестирование&lt;/strong&gt; – проверяем, удобно ли пользователям.&lt;/li&gt;
    &lt;li id=&quot;y2n2&quot;&gt;&lt;strong&gt;Подготовка к релизу&lt;/strong&gt; – финальные правки и контроль качества.&lt;/li&gt;
    &lt;li id=&quot;eiYa&quot;&gt;&lt;strong&gt;Развёртывание&lt;/strong&gt; – постепенный запуск новой версии для пользователей.&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p id=&quot;PoFZ&quot;&gt;В больших командах этот процесс требует чёткого управления и координации.&lt;/p&gt;
  &lt;p id=&quot;bjV9&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;oIrj&quot;&gt;Планирование релиза&lt;/h2&gt;
  &lt;h3 id=&quot;mEDF&quot;&gt;Что такое &amp;quot;трейн-релиз&amp;quot; и почему он важен?&lt;/h3&gt;
  &lt;p id=&quot;0OHT&quot;&gt;Вместо того чтобы выпускать обновления хаотично, можно организовать их по расписанию – как расписание поездов. Так работают &amp;quot;трейн-релизы&amp;quot;. Каждое обновление готовится к заранее определённой дате. Если какая-то функция не готова, она просто переносится на следующий поезд (релиз), а не задерживает весь процесс.&lt;/p&gt;
  &lt;p id=&quot;FiYL&quot;&gt;Пример расписания релиза:&lt;/p&gt;
  &lt;ul id=&quot;e27d&quot;&gt;
    &lt;li id=&quot;gnbE&quot;&gt;&lt;strong&gt;День 1:&lt;/strong&gt; Остановка изменений (&amp;quot;отсечение&amp;quot;) – команды прекращают вносить новые функции, начинается тестирование.&lt;/li&gt;
    &lt;li id=&quot;Thno&quot;&gt;&lt;strong&gt;Дни 2-4:&lt;/strong&gt; Внутреннее тестирование.&lt;/li&gt;
    &lt;li id=&quot;QsQ7&quot;&gt;&lt;strong&gt;Дни 5-7:&lt;/strong&gt; Ограниченный выпуск (1% пользователей).&lt;/li&gt;
    &lt;li id=&quot;gU0r&quot;&gt;&lt;strong&gt;Дни 8-10:&lt;/strong&gt; Полный выпуск.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;4GMm&quot;&gt;Это позволяет избежать сюрпризов и снижает риск критических ошибок.&lt;/p&gt;
  &lt;p id=&quot;Pmov&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;I2SZ&quot;&gt;Сборка релиза и работа с ветками кода&lt;/h2&gt;
  &lt;h3 id=&quot;7rjd&quot;&gt;Как управлять версиями кода?&lt;/h3&gt;
  &lt;p id=&quot;BKF3&quot;&gt;Во время разработки код хранится в системе управления версиями (например, Git). Чтобы не мешать текущей работе, создаются отдельные ветки:&lt;/p&gt;
  &lt;ul id=&quot;mn9A&quot;&gt;
    &lt;li id=&quot;4YtQ&quot;&gt;&lt;strong&gt;Ветка разработки (Development)&lt;/strong&gt; – здесь программисты создают новые функции.&lt;/li&gt;
    &lt;li id=&quot;fZpd&quot;&gt;&lt;strong&gt;Ветка релиза (Release)&lt;/strong&gt; – сюда попадают только проверенные изменения перед выпуском.&lt;/li&gt;
    &lt;li id=&quot;BxNq&quot;&gt;&lt;strong&gt;Горячие исправления (Hotfixes)&lt;/strong&gt; – экстренные правки для уже выпущенных версий.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;JdAq&quot;&gt;Такой подход помогает изолировать ошибки и не мешает разработчикам работать над следующими обновлениями.&lt;/p&gt;
  &lt;p id=&quot;UKwL&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;lu9P&quot;&gt;Основные подходы к релизному процессу&lt;/h2&gt;
  &lt;p id=&quot;Z5P8&quot;&gt;Релизное управление можно организовать по-разному, в зависимости от требований бизнеса и архитектуры продукта. Рассмотрим ключевые стратегии.&lt;/p&gt;
  &lt;h4 id=&quot;7kef&quot;&gt;1. &lt;strong&gt;Традиционные модели релиза&lt;/strong&gt;&lt;/h4&gt;
  &lt;ul id=&quot;D9kK&quot;&gt;
    &lt;li id=&quot;YR1a&quot;&gt;&lt;strong&gt;Waterfall (Каскадная модель)&lt;/strong&gt; – предполагает последовательное выполнение этапов: анализ требований, проектирование, разработка, тестирование и внедрение. Применяется в средах с жесткими регуляторными требованиями (например, в финансовом секторе).&lt;/li&gt;
    &lt;li id=&quot;JjxI&quot;&gt;&lt;strong&gt;Release Train (Релизный поезд)&lt;/strong&gt; – методология, при которой релизы выходят по заранее заданному расписанию, даже если часть функций не готова. Это позволяет добиться высокой предсказуемости поставок.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;h4 id=&quot;mQLN&quot;&gt;2. &lt;strong&gt;Гибкие и DevOps-ориентированные подходы&lt;/strong&gt;&lt;/h4&gt;
  &lt;ul id=&quot;LIlY&quot;&gt;
    &lt;li id=&quot;zWcB&quot;&gt;&lt;strong&gt;Continuous Integration/Continuous Deployment (CI/CD)&lt;/strong&gt; – процесс, при котором код непрерывно интегрируется, тестируется и автоматически разворачивается в продакшн. Используется в высококонкурентных средах, требующих быстрой доставки изменений.&lt;/li&gt;
    &lt;li id=&quot;vBT9&quot;&gt;&lt;strong&gt;Feature Flags (Флаги функциональности)&lt;/strong&gt; – позволяют выпускать код в продакшн, но скрывать новые возможности, пока они не будут готовы к активации.&lt;/li&gt;
    &lt;li id=&quot;aXPD&quot;&gt;&lt;strong&gt;Canary Releases (Канареечные релизы)&lt;/strong&gt; – метод развертывания, при котором новая версия сначала выкатывается на небольшой процент пользователей, а затем постепенно распространяется на всю аудиторию.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;wzCB&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;3BUd&quot;&gt;Приемочное тестирование (UAT). Зачем тестировать с пользователями?&lt;/h2&gt;
  &lt;p id=&quot;Shjw&quot;&gt;Программисты и тестировщики могут не заметить проблем, которые видны обычным пользователям. Поэтому перед официальным выпуском проводится &lt;strong&gt;пользовательское приемочное тестирование (User Acceptance Testing, UAT)&lt;/strong&gt;. Оно отвечает на вопросы:&lt;/p&gt;
  &lt;ul id=&quot;3jAC&quot;&gt;
    &lt;li id=&quot;yHcB&quot;&gt;Удобно ли пользователям работать с приложением?&lt;/li&gt;
    &lt;li id=&quot;pp9L&quot;&gt;Всё ли понятно?&lt;/li&gt;
    &lt;li id=&quot;dAAj&quot;&gt;Работает ли приложение так, как ожидается?&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;yBLr&quot;&gt;Чтобы ускорить процесс, можно использовать специальные инструменты тестирования, например, Google Play Internal Testing, которые позволяют ограниченной группе пользователей протестировать приложение и оставить отзывы.&lt;/p&gt;
  &lt;p id=&quot;hEDZ&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;dKVU&quot;&gt;Развёртывание релиза. Почему релиз делают постепенно?&lt;/h2&gt;
  &lt;p id=&quot;t8Hb&quot;&gt;Вместо того чтобы сразу выпустить обновление для всех, используется поэтапное развёртывание:&lt;/p&gt;
  &lt;ul id=&quot;aVlx&quot;&gt;
    &lt;li id=&quot;PMSD&quot;&gt;Сначала &lt;strong&gt;1%&lt;/strong&gt; пользователей получает обновление.&lt;/li&gt;
    &lt;li id=&quot;Zugx&quot;&gt;Если всё хорошо, доля увеличивается до &lt;strong&gt;20%&lt;/strong&gt;, затем &lt;strong&gt;50%&lt;/strong&gt;, и только потом до &lt;strong&gt;100%&lt;/strong&gt;.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;zxLH&quot;&gt;Так можно быстро остановить выпуск, если обнаружится критическая ошибка.&lt;/p&gt;
  &lt;h2 id=&quot;6K3E&quot;&gt;&lt;/h2&gt;
  &lt;h2 id=&quot;pxad&quot;&gt;Анализ после релиза&lt;/h2&gt;
  &lt;p id=&quot;MZOV&quot;&gt;После выпуска обновления важно отслеживать его работу. Используются инструменты мониторинга, например, &lt;strong&gt;Firebase Crashlytics&lt;/strong&gt;, которые показывают, где и у каких пользователей возникли ошибки.&lt;/p&gt;
  &lt;p id=&quot;3TBe&quot;&gt;Также полезно читать отзывы в Google Play и App Store. Они помогают понять, довольны ли пользователи и что можно улучшить в следующем обновлении.&lt;/p&gt;
  &lt;h2 id=&quot;7Zda&quot;&gt;&lt;/h2&gt;
  &lt;h2 id=&quot;eZUX&quot;&gt;Итоги&lt;/h2&gt;
  &lt;p id=&quot;no6p&quot;&gt;Управление релизами – это не просто кнопка &amp;quot;Опубликовать&amp;quot;, а целый процесс, который помогает выпускать качественные обновления без стресса. Хорошо организованный процесс:&lt;/p&gt;
  &lt;ul id=&quot;yJO7&quot;&gt;
    &lt;li id=&quot;Kfa6&quot;&gt;Улучшает координацию работы команды.&lt;/li&gt;
    &lt;li id=&quot;uEaN&quot;&gt;Позволяет выпускать обновления быстрее и безопаснее.&lt;/li&gt;
    &lt;li id=&quot;ivlC&quot;&gt;Делает продукт стабильнее и удобнее для пользователей.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;EJMB&quot;&gt;Чем лучше выстроен процесс, тем проще разработчикам, менеджерам и пользователям! &lt;/p&gt;

</content></entry><entry><id>stoic_ftr:yj84e4NBdST</id><link rel="alternate" type="text/html" href="https://teletype.in/@stoic_ftr/yj84e4NBdST?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=stoic_ftr"></link><title>RBAC и ABAC. От простого к сложному.</title><published>2025-02-25T08:55:29.540Z</published><updated>2025-02-25T08:55:29.540Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img3.teletype.in/files/6c/ab/6cabc349-fb5c-4711-95d1-16214e7012a7.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img1.teletype.in/files/81/21/81213fa2-64fe-4e25-b6be-98de50c24e76.png&quot;&gt;Для контроля доступа пользователей применяются различные модели управления доступом. Из них две самых распространённые — RBAC (Role-Based Access Control) и ABAC (Attribute-Based Access Control). Давайте рассмотрим их по очереди, начиная с более простых примеров.</summary><content type="html">
  &lt;p id=&quot;I7qW&quot;&gt;Для контроля доступа пользователей применяются различные модели управления доступом. Из них две самых распространённые — &lt;u&gt;RBAC&lt;/u&gt; (&lt;u&gt;Role-Based Access Control&lt;/u&gt;) и &lt;u&gt;ABAC&lt;/u&gt; (&lt;u&gt;Attribute-Based Access Control&lt;/u&gt;). Давайте рассмотрим их по очереди, начиная с более простых примеров.&lt;/p&gt;
  &lt;figure id=&quot;4IUI&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/81/21/81213fa2-64fe-4e25-b6be-98de50c24e76.png&quot; /&gt;
  &lt;/figure&gt;
  &lt;section style=&quot;background-color:hsl(hsl(55,  86%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h3 id=&quot;xsOH&quot;&gt;Что такое RBAC (Ролевой контроль доступа)?&lt;/h3&gt;
  &lt;/section&gt;
  &lt;p id=&quot;RkVn&quot;&gt;&lt;br /&gt;RBAC роли-ориентирован. У каждого пользователя одна или несколько ролей, а у ролей есть разрешения. Если у пользователя есть нужная роль, он получает доступ.&lt;/p&gt;
  &lt;p id=&quot;8pk8&quot;&gt;&lt;br /&gt;Простой пример: Представьте офис. В офисе три роли:&lt;/p&gt;
  &lt;ul id=&quot;emRi&quot;&gt;
    &lt;li id=&quot;8y7Z&quot;&gt;Сотрудник -- может открывать офисные двери и пользоваться принтером&lt;/li&gt;
    &lt;li id=&quot;zsBS&quot;&gt;Менеджер -- кроме прав сотрудника, может подписывать документы&lt;/li&gt;
    &lt;li id=&quot;mJVk&quot;&gt;Директор -- имеет все права менеджера и может нанимать или увольнять сотрудников&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;ID82&quot;&gt;Если Оля является менеджером, то у неё есть доступ к принтеру, подписи документов, но не к увольнению сотрудников.&lt;/p&gt;
  &lt;h3 id=&quot;xMsR&quot;&gt;&lt;br /&gt;Основные особенности RBAC:&lt;/h3&gt;
  &lt;ul id=&quot;WARC&quot;&gt;
    &lt;li id=&quot;qNWs&quot;&gt;Упрощение управления доступом: добавляем пользователя в роль -- он получает все разрешения этой роли&lt;/li&gt;
    &lt;li id=&quot;retC&quot;&gt;Жёсткие связи: если роли плохо спланированы, может потребоваться создавать новые роли для каждой уникальной ситуации&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;zdmd&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(55,  86%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h3 id=&quot;8IqX&quot;&gt;Что такое ABAC (Атрибутный контроль доступа)?&lt;/h3&gt;
  &lt;/section&gt;
  &lt;p id=&quot;sN8r&quot;&gt;ABAC использует атрибуты пользователя, ресурса и среды для того, чтобы сделать решение о доступе.&lt;/p&gt;
  &lt;p id=&quot;ohbx&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;cMRk&quot;&gt;Простой пример: Возьмем тот же офис. &lt;/p&gt;
  &lt;ul id=&quot;if5E&quot;&gt;
    &lt;li id=&quot;7CLp&quot;&gt;Сотрудник может использовать принтер только в рабочее время&lt;/li&gt;
    &lt;li id=&quot;J1H6&quot;&gt;Менеджер может подписывать документы, если это его отдел&lt;/li&gt;
    &lt;li id=&quot;0wtx&quot;&gt;Директор может увольнять сотрудников, но только если он сам находится в офисе&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;auMd&quot;&gt;Теперь не важно, что играет роль Оля -- значимы её атрибуты (позиция, время, место).&lt;/p&gt;
  &lt;p id=&quot;eX0r&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;C0zW&quot;&gt;Основные особенности ABAC:&lt;/h3&gt;
  &lt;ul id=&quot;tePv&quot;&gt;
    &lt;li id=&quot;j3d3&quot;&gt;Состоятельность: доступ не определяется исключительно ролями, но и контекстом&lt;/li&gt;
    &lt;li id=&quot;zYz3&quot;&gt;Наслоение настройки: приходится рассуждать о многочисленных условиях и атрибутах&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;wG9d&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;sXjk&quot;&gt;Сравнение RBAC и ABAC&lt;/h3&gt;
  &lt;figure id=&quot;dwzs&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/ff/fc/fffca248-6578-40cc-aa28-6bddbecdf964.png&quot; width=&quot;719&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;DcTf&quot;&gt;RBAC отлично подходит для небольших и средних компаний с чёткой иерархией. ABAC полезен для больших систем, где доступ зависит от множества факторов.&lt;/p&gt;
  &lt;p id=&quot;ths7&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;H05L&quot;&gt;На практике: &lt;/h3&gt;
  &lt;p id=&quot;Pqdg&quot;&gt;часто используют гибридный подход:&lt;/p&gt;
  &lt;ul id=&quot;ahe1&quot;&gt;
    &lt;li id=&quot;Hezj&quot;&gt;RBAC определяет основные роли и базовые разрешения.&lt;/li&gt;
    &lt;li id=&quot;mw6R&quot;&gt;ABAC добавляет гибкость за счёт условий (например, доступ возможен только в определённое время или из определённого места).&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;yc0e&quot;&gt;Например, в больнице врач может просматривать истории болезней пациентов (RBAC), но только если он лечащий врач пациента (ABAC).&lt;/p&gt;

</content></entry><entry><id>stoic_ftr:-YjQVVkfN6T</id><link rel="alternate" type="text/html" href="https://teletype.in/@stoic_ftr/-YjQVVkfN6T?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=stoic_ftr"></link><title>Как написать классное техническое задание за 5 шагов и избежать хаоса</title><published>2024-12-06T16:09:52.395Z</published><updated>2024-12-06T16:09:52.395Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img1.teletype.in/files/ce/e8/cee8e384-08e1-45f1-8c13-4d2a0b9813d9.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img3.teletype.in/files/26/04/2604a7ea-84ec-41fb-aac5-2d6197cbeb93.png&quot;&gt;Представьте себе: вы собрались разработать крутое приложение, которое завоюет сердца пользователей. Вы наняли топовую команду, бюджет есть, вдохновение бьёт ключом… Но что-то пошло не так. Идут споры, сроки горят, а результат не похож на то, что вы представляли. В чём проблема? Всё просто: не было понятного и подробного технического задания!</summary><content type="html">
  &lt;figure id=&quot;Gv0u&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/26/04/2604a7ea-84ec-41fb-aac5-2d6197cbeb93.png&quot; width=&quot;1020&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;XDZC&quot;&gt;Представьте себе: вы собрались разработать крутое приложение, которое завоюет сердца пользователей. Вы наняли топовую команду, бюджет есть, вдохновение бьёт ключом… Но что-то пошло не так. Идут споры, сроки горят, а результат не похож на то, что вы представляли. В чём проблема? Всё просто: не было понятного и подробного технического задания!&lt;/p&gt;
  &lt;p id=&quot;pQmf&quot;&gt;Не переживайте, сейчас мы всё исправим. Вот рецепт идеального ТЗ в 5 шагов.&lt;/p&gt;
  &lt;p id=&quot;oBHb&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;bIZM&quot;&gt;&lt;strong&gt;Шаг 1: Задайте правильные вопросы&lt;/strong&gt;&lt;/h3&gt;
  &lt;p id=&quot;SXtB&quot;&gt;Техническое задание — это карта сокровищ, где X отмечает конечную цель. Чтобы нарисовать карту, начните с вопросов:&lt;/p&gt;
  &lt;ul id=&quot;7H0a&quot;&gt;
    &lt;li id=&quot;NWEd&quot;&gt;&lt;strong&gt;Зачем?&lt;/strong&gt; Например: &amp;quot;Мы хотим сделать приложение TODO, чтобы пользователи могли планировать свои задачи&amp;quot;.&lt;/li&gt;
    &lt;li id=&quot;vA6x&quot;&gt;&lt;strong&gt;Для кого?&lt;/strong&gt; Например: &amp;quot;Для занятых профессионалов, которые ценят простоту и скорость&amp;quot;.&lt;/li&gt;
    &lt;li id=&quot;h51h&quot;&gt;&lt;strong&gt;Что именно?&lt;/strong&gt; Например: &amp;quot;Приложение должно напоминать, синхронизироваться между устройствами и работать оффлайн&amp;quot;.&lt;/li&gt;
    &lt;li id=&quot;HLRs&quot;&gt;&lt;strong&gt;Какие ограничения?&lt;/strong&gt; Например: &amp;quot;Сделать за три месяца, не превышая бюджет в $20 000&amp;quot;.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;dV1a&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;sm30&quot;&gt;&lt;strong&gt;Шаг 2: Опишите, как это будет работать&lt;/strong&gt;&lt;/h3&gt;
  &lt;p id=&quot;qfeA&quot;&gt;Здесь начинается магия. Вам нужно расписать функции и возможности вашего продукта так, чтобы у разработчиков не осталось вопросов.&lt;/p&gt;
  &lt;p id=&quot;2RzI&quot;&gt;&lt;strong&gt;Функциональные требования для TODO-приложения:&lt;/strong&gt;&lt;/p&gt;
  &lt;ol id=&quot;kE8T&quot;&gt;
    &lt;li id=&quot;4auc&quot;&gt;Создание задач с датой и временем выполнения.&lt;/li&gt;
    &lt;li id=&quot;wz79&quot;&gt;Уведомления о приближении срока задачи.&lt;/li&gt;
    &lt;li id=&quot;V6UO&quot;&gt;Возможность ставить задачи в категории (Работа, Дом, Спорт).&lt;/li&gt;
    &lt;li id=&quot;PePu&quot;&gt;Синхронизация данных через облако.&lt;/li&gt;
    &lt;li id=&quot;4297&quot;&gt;Поддержка оффлайн-режима.&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p id=&quot;6gtp&quot;&gt;&lt;strong&gt;Нефункциональные требования:&lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;dEJw&quot;&gt;
    &lt;li id=&quot;WHdo&quot;&gt;Приложение должно работать на iOS и Android.&lt;/li&gt;
    &lt;li id=&quot;uaD9&quot;&gt;Интерфейс загружается не дольше 2 секунд.&lt;/li&gt;
    &lt;li id=&quot;LqwN&quot;&gt;Хранение данных должно быть безопасным (GDPR compliance).&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;xARW&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;Eebd&quot;&gt;&lt;strong&gt;Шаг 3: Нарисуйте скелет документа&lt;/strong&gt;&lt;/h3&gt;
  &lt;p id=&quot;xY0l&quot;&gt;Без структуры ваше ТЗ — просто набор текста. Представьте, что читаете роман, где главы перепутаны. Вот пример структуры:&lt;/p&gt;
  &lt;ol id=&quot;Hi50&quot;&gt;
    &lt;li id=&quot;8MtY&quot;&gt;Введение (краткое описание проекта).&lt;/li&gt;
    &lt;li id=&quot;4Z2S&quot;&gt;Область применения (для кого, зачем).&lt;/li&gt;
    &lt;li id=&quot;qOox&quot;&gt;Функциональные и нефункциональные требования.&lt;/li&gt;
    &lt;li id=&quot;RS1R&quot;&gt;Дизайн и пользовательский интерфейс.&lt;/li&gt;
    &lt;li id=&quot;iCgv&quot;&gt;Сроки разработки.&lt;/li&gt;
    &lt;li id=&quot;XKlG&quot;&gt;Приложения (прототипы, схемы).&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p id=&quot;JpY0&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;VoHF&quot;&gt;&lt;strong&gt;Шаг 4: Проверьте, что это можно понять&lt;/strong&gt;&lt;/h3&gt;
  &lt;p id=&quot;vb97&quot;&gt;Покажите ТЗ тому, кто не в теме. Если он не засыпает через 5 минут и может пересказать своими словами, вы справились!&lt;/p&gt;
  &lt;p id=&quot;paUu&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;HLvB&quot;&gt;&lt;strong&gt;Шаг 5: Утвердите документ&lt;/strong&gt;&lt;/h3&gt;
  &lt;p id=&quot;TvdP&quot;&gt;ТЗ — это не просто текст, это договорённость. Убедитесь, что все стороны подписали его или хотя бы кивнули в Zoom.&lt;/p&gt;
  &lt;p id=&quot;lIXU&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;FrGn&quot; data-align=&quot;center&quot;&gt;&lt;strong&gt;Пример полного ТЗ для TODO-приложения&lt;/strong&gt;&lt;/h2&gt;
  &lt;p id=&quot;rnzb&quot;&gt;&lt;strong&gt;1. Введение&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Название проекта&lt;/strong&gt;: TODO-Pro.&lt;br /&gt;&lt;strong&gt;Цель&lt;/strong&gt;: Создать простое и функциональное мобильное приложение для управления задачами, которое поможет пользователям быть продуктивными.&lt;br /&gt;&lt;strong&gt;Команда разработки&lt;/strong&gt;:&lt;/p&gt;
  &lt;ul id=&quot;QPvJ&quot;&gt;
    &lt;li id=&quot;C7gM&quot;&gt;Project Manager: Иван Иванов.&lt;/li&gt;
    &lt;li id=&quot;s1OM&quot;&gt;UX/UI-дизайнер: Анна Смирнова.&lt;/li&gt;
    &lt;li id=&quot;hLwQ&quot;&gt;iOS-разработчик: Алексей Петров.&lt;/li&gt;
    &lt;li id=&quot;eEBM&quot;&gt;Android-разработчик: Дмитрий Кузнецов.&lt;/li&gt;
    &lt;li id=&quot;VHO2&quot;&gt;QA-инженер: Елена Васильева.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;x8Db&quot;&gt;&lt;strong&gt;2. Область применения&lt;/strong&gt;&lt;br /&gt;Приложение ориентировано на профессионалов, студентов и занятых родителей, которым нужно организовать свой день. Оно должно быть простым, минималистичным и быстрым.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;JpsI&quot;&gt;&lt;strong&gt;3. Функциональные требования&lt;/strong&gt;&lt;/p&gt;
  &lt;figure id=&quot;VYOA&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/6e/f6/6ef66532-103b-4494-a345-00c9326aa3df.png&quot; width=&quot;724&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;sjJ8&quot;&gt;4. Нефункциональные требования&lt;/p&gt;
  &lt;figure id=&quot;6WO9&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/6d/38/6d38d738-a4da-4cf2-9260-84b7b486ecad.png&quot; width=&quot;720&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;vam5&quot;&gt;&lt;strong&gt;5. UX/UI&lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;QNXd&quot;&gt;
    &lt;li id=&quot;W05h&quot;&gt;Приложение должно быть минималистичным и удобным.&lt;/li&gt;
    &lt;li id=&quot;YNee&quot;&gt;Цветовая палитра: белый, синий, светло-серый.&lt;/li&gt;
    &lt;li id=&quot;e76H&quot;&gt;Главный экран: список задач с кнопками &amp;quot;Добавить задачу&amp;quot; и &amp;quot;Фильтры&amp;quot;.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;WVeF&quot;&gt;&lt;strong&gt;6. Сроки&lt;/strong&gt;&lt;/p&gt;
  &lt;ol id=&quot;7dFe&quot;&gt;
    &lt;li id=&quot;1xe4&quot;&gt;Сбор требований: 2 недели.&lt;/li&gt;
    &lt;li id=&quot;Bvly&quot;&gt;Разработка прототипов: 1 неделя.&lt;/li&gt;
    &lt;li id=&quot;1JWz&quot;&gt;Разработка и тестирование MVP: 2 месяца.&lt;/li&gt;
    &lt;li id=&quot;NLaS&quot;&gt;Релиз: через 3 месяца с момента утверждения ТЗ.&lt;/li&gt;
  &lt;/ol&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;pN77&quot;&gt;&lt;strong&gt;7. Приложения&lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;0kku&quot;&gt;
    &lt;li id=&quot;ubR3&quot;&gt;Прототипы экранов (ссылка на Figma).&lt;/li&gt;
    &lt;li id=&quot;NzZc&quot;&gt;Диаграмма взаимодействия API.&lt;/li&gt;
    &lt;li id=&quot;niv0&quot;&gt;Список используемых библиотек.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;qHMb&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;dRNm&quot;&gt;Теперь вы вооружены до зубов. Напишите своё ТЗ и наслаждайтесь процессом разработки без хаоса!&lt;/p&gt;

</content></entry><entry><id>stoic_ftr:mZkVMDa3Vzs</id><link rel="alternate" type="text/html" href="https://teletype.in/@stoic_ftr/mZkVMDa3Vzs?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=stoic_ftr"></link><title>Давайте представим, что меня пригласили...</title><published>2024-11-03T17:42:26.829Z</published><updated>2024-11-03T17:42:26.829Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img4.teletype.in/files/be/d9/bed9875c-aa24-4196-9d92-d048ad9640f8.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img4.teletype.in/files/79/ef/79ef4675-ac15-478d-bb8c-dbfc0399acb1.png&quot;&gt;Сегодня речь пойдет о выдуманном собеседовании в компанию. Интересный инструмент, которым я иногда пользуюсь, чтобы повышать свои скиллы по прохождению собеседований.</summary><content type="html">
  &lt;p id=&quot;rQ1d&quot;&gt;&lt;strong&gt;&lt;em&gt;Сегодня речь пойдет о выдуманном собеседовании в компанию. Интересный инструмент, которым я иногда пользуюсь, чтобы повышать свои скиллы по прохождению собеседований. &lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;80Co&quot;&gt;&lt;strong&gt;&lt;em&gt;Что нужно сделать? &lt;br /&gt;1. Выбираем рандомную вакансию на hh.ru. &lt;br /&gt;2. Читаем требования&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;figure id=&quot;oy09&quot; class=&quot;m_retina&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/79/ef/79ef4675-ac15-478d-bb8c-dbfc0399acb1.png&quot; width=&quot;585&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;OK8N&quot;&gt;&lt;strong&gt;&lt;em&gt;Отлично! У нас есть список, к которому нужно подготовиться за 3 дня. Почему 3 дня? Это среднее количество времени, которое уходит на то, чтобы ваш отклик был увиден и в случае положительного ответа, вы были бы приглашены на интервью.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;Ubke&quot;&gt;&lt;strong&gt;&lt;em&gt;Давайте распишем план подготовки. Поделюсь своими заметками в данном случае. &lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;figure id=&quot;AQwY&quot; class=&quot;m_retina&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/8c/64/8c641af7-69b5-4a93-9ba1-6b571dd1132c.png&quot; width=&quot;640&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;OZPX&quot;&gt;&lt;strong&gt;&lt;em&gt;3.Рассматриваем каждый пункт отдельно.&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;Вспоминаем все, что было по SQL: &lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;7GPy&quot;&gt; - SQL для начинающих. DML, DDL, DCL, TCL (&lt;a href=&quot;https://telegra.ph/SQL-dlya-nachinayushchih-DML-DDL-DCL-TCL-09-13&quot; target=&quot;_blank&quot;&gt;https://telegra.ph/SQL-dlya-nachinayushchih-DML-DDL-DCL-TCL-09-13&lt;/a&gt;)&lt;/p&gt;
  &lt;p id=&quot;3luc&quot;&gt; - SQL для начинающих. Функции и операторы (&lt;a href=&quot;https://telegra.ph/SQL-dlya-nachinayushchih-Funkcii-i-operatory-09-14&quot; target=&quot;_blank&quot;&gt;https://telegra.ph/SQL-dlya-nachinayushchih-Funkcii-i-operatory-09-14&lt;/a&gt;)&lt;/p&gt;
  &lt;p id=&quot;rMDI&quot;&gt; - Условия и способы фильтрации данных (&lt;a href=&quot;https://teletype.in/@stoic_ftr/1e4_TPbjaeZ&quot; target=&quot;_blank&quot;&gt;https://teletype.in/@stoic_ftr/1e4_TPbjaeZ&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;Этого должно хватить для того, чтобы пройти собес по SQL. Если у вас в вакансии будет строчка &lt;u&gt;включая индексы,&lt;/u&gt; то советую прочитать следующие статьи:&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;1. &lt;a href=&quot;https://habr.com/ru/companies/ruvds/articles/724066/&quot; target=&quot;_blank&quot;&gt;https://habr.com/ru/companies/ruvds/articles/724066/&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;2. &lt;a href=&quot;https://habr.com/ru/articles/247373/&quot; target=&quot;_blank&quot;&gt;https://habr.com/ru/articles/247373/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;Читаем дальше. Описание контрактов интеграций (REST, ESB) &lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;2y3X&quot;&gt;&lt;strong&gt;&lt;em&gt;Для начала выясняем, что такое контракты интеграций (лучше знать точную расшифровку и понятный пример):&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;x6C0&quot;&gt;Контракты интеграций (integration contracts) — это соглашения или договоренности между системами, сервисами или компонентами, определяющие, как именно они будут взаимодействовать друг с другом. Такие контракты фиксируют, какие данные, форматы и методы будут использоваться для успешного обмена информацией. Цель — гарантировать совместимость и предсказуемость работы систем, даже если одна из них развивается или обновляется.&lt;/p&gt;
  &lt;p id=&quot;Nuh1&quot;&gt;Что включает контракт интеграции?&lt;/p&gt;
  &lt;p id=&quot;dwd8&quot;&gt;Контракт интеграции обычно включает:&lt;/p&gt;
  &lt;ul id=&quot;rROs&quot;&gt;
    &lt;li id=&quot;lcde&quot;&gt;&lt;strong&gt;Структуру данных&lt;/strong&gt;: какие поля будут в передаваемых данных, их типы и значения по умолчанию.&lt;/li&gt;
    &lt;li id=&quot;GsFu&quot;&gt;&lt;strong&gt;Форматы данных&lt;/strong&gt;: формат обмена, например JSON, XML, Protobuf и др.&lt;/li&gt;
    &lt;li id=&quot;atU7&quot;&gt;&lt;strong&gt;Протоколы&lt;/strong&gt;: определяет, как данные будут передаваться — через REST API, GraphQL, gRPC и т.д.&lt;/li&gt;
    &lt;li id=&quot;AmIt&quot;&gt;&lt;strong&gt;Ограничения&lt;/strong&gt;: валидность данных, например, минимальные и максимальные значения.&lt;/li&gt;
    &lt;li id=&quot;Uh6Z&quot;&gt;&lt;strong&gt;Версионность&lt;/strong&gt;: управление версиями, чтобы можно было обновлять контракт без ломки существующих интеграций.&lt;/li&gt;
    &lt;li id=&quot;YNEZ&quot;&gt;&lt;strong&gt;Обязательные и необязательные поля&lt;/strong&gt;: указывает, какие поля должны присутствовать в каждом запросе/ответе, а какие — опциональны.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;2yzj&quot;&gt;Простой пример контракта интеграции&lt;/p&gt;
  &lt;p id=&quot;Rw0M&quot;&gt;Представьте, что у нас есть &lt;strong&gt;интернет-магазин&lt;/strong&gt; и &lt;strong&gt;служба доставки&lt;/strong&gt;. Чтобы передавать данные о заказах, они заключают контракт интеграции.&lt;br /&gt;&lt;/p&gt;
  &lt;p id=&quot;3wbS&quot;&gt;Пример контракта интеграции:&lt;/p&gt;
  &lt;ol id=&quot;RLyU&quot;&gt;
    &lt;li id=&quot;uZpp&quot;&gt;&lt;strong&gt;Формат обмена&lt;/strong&gt;: JSON&lt;/li&gt;
    &lt;li id=&quot;nyIS&quot;&gt;&lt;strong&gt;Протокол&lt;/strong&gt;: REST API (через HTTP POST-запросы).&lt;/li&gt;
    &lt;li id=&quot;wbRv&quot;&gt;&lt;strong&gt;Тело запроса&lt;/strong&gt;:json&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p id=&quot;nBrR&quot;&gt;&lt;code&gt;{&lt;br /&gt;  &amp;quot;order_id&amp;quot;: &amp;quot;string (обязательное)&amp;quot;,&lt;br /&gt;  &amp;quot;customer_name&amp;quot;: &amp;quot;string (обязательное)&amp;quot;,&lt;br /&gt;  &amp;quot;customer_address&amp;quot;: &amp;quot;string (обязательное)&amp;quot;,&lt;br /&gt;  &amp;quot;delivery_date&amp;quot;: &amp;quot;string (дата в формате YYYY-MM-DD, обязательное)&amp;quot;,&lt;br /&gt;  &amp;quot;items&amp;quot;: [&lt;br /&gt;    {&lt;br /&gt;      &amp;quot;item_id&amp;quot;: &amp;quot;string (обязательное)&amp;quot;,&lt;br /&gt;      &amp;quot;quantity&amp;quot;: &amp;quot;integer (обязательное)&amp;quot;,&lt;br /&gt;      &amp;quot;price&amp;quot;: &amp;quot;float (обязательное)&amp;quot;&lt;br /&gt;    }&lt;br /&gt;  ]&lt;br /&gt;}&lt;/code&gt;&lt;/p&gt;
  &lt;ol id=&quot;C9Em&quot;&gt;
    &lt;li id=&quot;jQAg&quot;&gt;&lt;strong&gt;Ошибки&lt;/strong&gt;: служба доставки возвращает код 400, если обязательные поля отсутствуют или имеют некорректный формат, и код 200 — если заказ принят.&lt;/li&gt;
    &lt;li id=&quot;GpTN&quot;&gt;&lt;strong&gt;Версионность&lt;/strong&gt;: параметр &lt;code&gt;v1&lt;/code&gt; указывается в URL, чтобы при необходимости службы могли перейти на новую версию, не нарушая старую интеграцию.&lt;br /&gt;&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p id=&quot;AQeb&quot;&gt;Зачем нужны контракты интеграций?&lt;/p&gt;
  &lt;ol id=&quot;pZG4&quot;&gt;
    &lt;li id=&quot;ACmU&quot;&gt;&lt;strong&gt;Упрощение разработки&lt;/strong&gt;: каждая сторона точно знает, что ожидать.&lt;/li&gt;
    &lt;li id=&quot;Hyyz&quot;&gt;&lt;strong&gt;Предсказуемость изменений&lt;/strong&gt;: если одна из систем обновляется, контракт обеспечивает совместимость, и другая сторона не &amp;quot;ломается&amp;quot;.&lt;/li&gt;
    &lt;li id=&quot;lUQI&quot;&gt;&lt;strong&gt;Отслеживание ошибок&lt;/strong&gt;: если одна из сторон отправляет некорректные данные, то легко определить источник ошибки.&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p id=&quot;J7j9&quot;&gt;&lt;strong&gt;Итог&lt;/strong&gt;: контракты интеграций — это четкое соглашение о правилах взаимодействия между системами, позволяющее избегать проблем совместимости и обеспечить предсказуемость и стабильность работы.&lt;br /&gt;&lt;/p&gt;
  &lt;p id=&quot;ncXX&quot;&gt;&lt;strong&gt;&lt;em&gt;Отлично, что такое контракты интеграций, разобрались. Для лучшего понимания тем, советую прочитать:&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;1.Клиент-серверная архитектура. HTTP-запросы, HTTP- ответы (&lt;a href=&quot;https://teletype.in/@stoic_ftr/ozO6MBmRYyn&quot; target=&quot;_blank&quot;&gt;https://teletype.in/@stoic_ftr/ozO6MBmRYyn&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;2. REST, JSON (&lt;a href=&quot;https://teletype.in/@stoic_ftr/5t4UP4M1Uzo&quot; target=&quot;_blank&quot;&gt;https://teletype.in/@stoic_ftr/5t4UP4M1Uzo&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;3. В чем разница между REST и SOAP? Что такое SOAP? Самые популярные вопросы на собеседовании (&lt;a href=&quot;https://teletype.in/@stoic_ftr/xsV8d9WQ86m&quot; target=&quot;_blank&quot;&gt;https://teletype.in/@stoic_ftr/xsV8d9WQ86m&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;4. Postman. Что это? Зачем это? Какой функционал? Когда использовать нужно, а когда не нужно? (&lt;a href=&quot;https://teletype.in/@stoic_ftr/tVszPclkTbU&quot; target=&quot;_blank&quot;&gt;https://teletype.in/@stoic_ftr/tVszPclkTbU&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;Что такое ESB? В это случае тоже лучше узнать определение и легкий пример. &lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;1zzc&quot;&gt;&lt;strong&gt;ESB (Enterprise Service Bus)&lt;/strong&gt; — это инфраструктурная платформа, которая помогает различным приложениям в компании обмениваться данными и работать вместе, даже если они написаны на разных языках программирования, используют разные форматы данных или работают на разных платформах. ESB объединяет их, предоставляя общую «шину» для передачи данных и команд.&lt;/p&gt;
  &lt;p id=&quot;ySN1&quot;&gt;Основные функции ESB:&lt;/p&gt;
  &lt;ol id=&quot;mUZQ&quot;&gt;
    &lt;li id=&quot;xDNy&quot;&gt;&lt;strong&gt;Интеграция&lt;/strong&gt;: подключение разных систем и приложений.&lt;/li&gt;
    &lt;li id=&quot;BUqZ&quot;&gt;&lt;strong&gt;Маршрутизация сообщений&lt;/strong&gt;: отправка сообщений между системами на основе определенных правил.&lt;/li&gt;
    &lt;li id=&quot;I1XU&quot;&gt;&lt;strong&gt;Трансформация данных&lt;/strong&gt;: преобразование данных из одного формата в другой (например, XML в JSON).&lt;/li&gt;
    &lt;li id=&quot;b4Zm&quot;&gt;&lt;strong&gt;Оркестрация&lt;/strong&gt;: управление порядком выполнения сервисов или задач.&lt;/li&gt;
    &lt;li id=&quot;T9Ng&quot;&gt;&lt;strong&gt;Обработка ошибок&lt;/strong&gt;: централизованное управление ошибками и журналирование событий.&lt;br /&gt;&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p id=&quot;bNGT&quot;&gt;Простой пример использования ESB:&lt;/p&gt;
  &lt;p id=&quot;YwwP&quot;&gt;Представьте компанию, у которой есть несколько систем:&lt;/p&gt;
  &lt;ol id=&quot;LHER&quot;&gt;
    &lt;li id=&quot;AjWH&quot;&gt;&lt;strong&gt;ERP-система&lt;/strong&gt; для управления запасами.&lt;/li&gt;
    &lt;li id=&quot;F1IS&quot;&gt;&lt;strong&gt;CRM-система&lt;/strong&gt; для работы с клиентами.&lt;/li&gt;
    &lt;li id=&quot;Iwky&quot;&gt;&lt;strong&gt;Интернет-магазин&lt;/strong&gt; для онлайн-продаж.&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p id=&quot;CYCi&quot;&gt;Эти системы должны обмениваться информацией: если клиент заказывает товар на сайте, информация о заказе должна поступить в CRM для обработки и в ERP для обновления запасов.&lt;/p&gt;
  &lt;p id=&quot;bcw4&quot;&gt;&lt;strong&gt;С ESB&lt;/strong&gt; эти системы подключаются к единой шине, через которую передаются сообщения. При оформлении заказа интернет-магазин отправляет информацию о заказе в ESB, которая:&lt;/p&gt;
  &lt;ul id=&quot;jQG8&quot;&gt;
    &lt;li id=&quot;shv1&quot;&gt;&lt;strong&gt;Маршрутизирует&lt;/strong&gt; заказ в CRM для регистрации данных клиента.&lt;/li&gt;
    &lt;li id=&quot;gzK9&quot;&gt;&lt;strong&gt;Преобразует&lt;/strong&gt; данные заказа в нужный формат и отправляет в ERP-систему для обновления склада.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;3w9m&quot;&gt;ESB упрощает интеграцию, так как вместо прямых связей между системами (каждая система должна &amp;quot;знать&amp;quot; и интегрироваться с другой) все они просто взаимодействуют с ESB, который уже распределяет и преобразует сообщения.&lt;/p&gt;
  &lt;p id=&quot;u3C1&quot;&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;Окей, с ESB разобрались. Что это мы знаем, как это используется мы знаем. Можем ли мы за 3 дня получить более глубинные знания? Вряд ли. Записываем это в наш блокнот дальнейших планов развития. Далее у нас идет описание бизнес-процессов в нотации BPMN. Здесь советую посмотреть: Краткий конспект по нотации BPMN 2.0 (&lt;a href=&quot;https://teletype.in/@stoic_ftr/HdyLMhiN7sQ&quot; target=&quot;_blank&quot;&gt;https://teletype.in/@stoic_ftr/HdyLMhiN7sQ&lt;/a&gt;)&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;nb9x&quot;&gt;&lt;strong&gt;&lt;em&gt;Что нужно для того, чтобы с уверенностью сказать, что ты сможешь отвечать на вопросы по бизнес/системному анализу? Тут поможет небольшая шпаргалка: &lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;y3b1&quot;&gt;1. &lt;strong&gt;Знание ключевых понятий и подходов&lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;54LO&quot;&gt;
    &lt;li id=&quot;hLND&quot;&gt;&lt;strong&gt;Бизнес-анализ&lt;/strong&gt;: Уметь объяснить цели и основные этапы бизнес-анализа, начиная от выявления потребностей бизнеса до разработки рекомендаций и внедрения решений.&lt;/li&gt;
    &lt;li id=&quot;yKzq&quot;&gt;&lt;strong&gt;Системный анализ&lt;/strong&gt;: Понимать, как анализировать технические и функциональные требования, а также концепции построения архитектуры и интеграции систем.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;9Ug3&quot;&gt;2. &lt;strong&gt;Опыт работы с основными инструментами и техниками&lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;dnsu&quot;&gt;
    &lt;li id=&quot;6KTc&quot;&gt;&lt;strong&gt;Техники сбора и анализа требований&lt;/strong&gt;: интервью, анкетирование, воркшопы, анализ процессов, модели “As-Is” и “To-Be”.&lt;/li&gt;
    &lt;li id=&quot;RWQP&quot;&gt;&lt;strong&gt;Методологии и фреймворки&lt;/strong&gt;: Agile (Scrum/Kanban), Waterfall, BABOK. Умение ориентироваться в этих методологиях, знание их плюсов и минусов.&lt;/li&gt;
    &lt;li id=&quot;ebZF&quot;&gt;&lt;strong&gt;Диаграммы и модели&lt;/strong&gt;: Умение создавать и читать BPMN, UML (диаграммы классов, последовательностей), ERD, use cases, и user stories.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;Jm4X&quot;&gt;3. &lt;strong&gt;Понимание жизненного цикла разработки ПО и роли анализа в нем&lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;3ga7&quot;&gt;
    &lt;li id=&quot;I5MV&quot;&gt;Понимание того, как требования меняются по мере прохождения через стадии анализа, разработки, тестирования и внедрения. Знание, как работать с изменениями требований (управление изменениями).&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;KloH&quot;&gt;4. &lt;strong&gt;Навыки документооборота и разработки требований&lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;emkf&quot;&gt;
    &lt;li id=&quot;hn7s&quot;&gt;Опыт написания различных документов: спецификаций требований (SRS), документации к API, описания процессов, инструкций для пользователей.&lt;/li&gt;
    &lt;li id=&quot;zWqx&quot;&gt;Знание стандартов и шаблонов для документации, таких как IEEE для требований.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;q0MG&quot;&gt;5. &lt;strong&gt;Опыт работы с системами и базами данных&lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;I8YB&quot;&gt;
    &lt;li id=&quot;1xQR&quot;&gt;Базовое понимание SQL и работы с реляционными базами данных.&lt;/li&gt;
    &lt;li id=&quot;0Thb&quot;&gt;Понимание основ архитектуры приложений и систем, работы с API, особенностей REST и SOAP.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;vGtu&quot;&gt;6. &lt;strong&gt;Коммуникативные и аналитические навыки&lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;TIWZ&quot;&gt;
    &lt;li id=&quot;2FqH&quot;&gt;Умение задавать правильные вопросы, выделять ключевые моменты из интервью и требований заказчика, представлять результаты анализа команде и стейкхолдерам.&lt;/li&gt;
    &lt;li id=&quot;cfEY&quot;&gt;Способность упрощать сложные концепции и адаптировать свои объяснения под разную аудиторию.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;sQCX&quot;&gt;7. &lt;strong&gt;Постоянное обучение и практика&lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;4k4Y&quot;&gt;
    &lt;li id=&quot;6h33&quot;&gt;Изучение современных практик, прохождение курсов, чтение специализированной литературы и применение знаний на практике. Например, BABOK Guide для бизнес-анализа, курсы по SQL и базам данных для системного анализа, а также кейсы для закрепления навыков моделирования и анализа.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;t5Al&quot;&gt;Сочетание этих знаний и навыков позволит уверенно и всесторонне подходить к вопросам по бизнес- и системному анализу, а также применять эти знания на практике.&lt;/p&gt;
  &lt;p id=&quot;eHVO&quot;&gt;&lt;em&gt;&lt;strong&gt;Ну, и наконец пункт с разработкой проектной, приемо-сдаточной и эксплуатационной документации. Тут проще - нужно просто выучить. &lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;&lt;/p&gt;
  &lt;p id=&quot;OTcJ&quot;&gt;Проектная, приемо-сдаточная и эксплуатационная документация – это типы документов, которые сопровождают жизненный цикл проекта, особенно когда речь идет о технических системах и разработке программного обеспечения. Для понимания этих видов документации важно знать их назначение, содержание и место в процессе разработки.&lt;/p&gt;
  &lt;p id=&quot;mb0P&quot;&gt;1. &lt;strong&gt;Проектная документация&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;d38Q&quot;&gt;&lt;strong&gt;Назначение&lt;/strong&gt;: Проектная документация описывает архитектуру, логику и принципы построения системы. Она создается на этапе проектирования и используется для утверждения проектных решений с заказчиком и командой разработки.&lt;/p&gt;
  &lt;p id=&quot;Mnyw&quot;&gt;&lt;strong&gt;Основные компоненты&lt;/strong&gt;:&lt;/p&gt;
  &lt;ul id=&quot;LbgU&quot;&gt;
    &lt;li id=&quot;FtDG&quot;&gt;&lt;strong&gt;Техническое задание (ТЗ)&lt;/strong&gt;: содержит цели и задачи проекта, требования к функциональности, сроки и бюджет.&lt;/li&gt;
    &lt;li id=&quot;AVsd&quot;&gt;&lt;strong&gt;Спецификация требований (SRS)&lt;/strong&gt;: документирует требования к системе. Охватывает функциональные, нефункциональные и системные требования.&lt;/li&gt;
    &lt;li id=&quot;gLKg&quot;&gt;&lt;strong&gt;Архитектурная документация&lt;/strong&gt;: описывает архитектуру системы, используемые технологии, компоненты, их взаимодействие и интеграции.&lt;/li&gt;
    &lt;li id=&quot;defW&quot;&gt;&lt;strong&gt;Диаграммы и схемы&lt;/strong&gt;: UML, DFD (Data Flow Diagrams) или другие схемы, которые показывают структуру системы, связи между компонентами и основную логику.&lt;/li&gt;
    &lt;li id=&quot;gZ3M&quot;&gt;&lt;strong&gt;План тестирования&lt;/strong&gt;: основные подходы к тестированию, контрольные точки и критерии приемки.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;gQVa&quot;&gt;&lt;strong&gt;Пример&lt;/strong&gt;: Архитектурная схема проекта с описанием интерфейсов, используемых компонентов и их взаимодействия в системе учета заказов.&lt;/p&gt;
  &lt;p id=&quot;rtNA&quot;&gt;2. &lt;strong&gt;Приемо-сдаточная документация&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;7R7t&quot;&gt;&lt;strong&gt;Назначение&lt;/strong&gt;: Документы для передачи системы заказчику. Они подтверждают выполнение всех требований и успешное завершение работ. Эти документы нужны для демонстрации готовности системы к эксплуатации и для юридического закрепления сдачи-приемки работ.&lt;/p&gt;
  &lt;p id=&quot;yVED&quot;&gt;&lt;strong&gt;Основные компоненты&lt;/strong&gt;:&lt;/p&gt;
  &lt;ul id=&quot;TWqP&quot;&gt;
    &lt;li id=&quot;xtXv&quot;&gt;&lt;strong&gt;Акт приемки-передачи&lt;/strong&gt;: документ, который подписывается обеими сторонами и подтверждает, что заказчик принял выполненную работу.&lt;/li&gt;
    &lt;li id=&quot;Fap8&quot;&gt;&lt;strong&gt;Протоколы испытаний и тестов&lt;/strong&gt;: фиксируют результаты тестирования и показывают, что система работает в соответствии с требованиями.&lt;/li&gt;
    &lt;li id=&quot;6yYJ&quot;&gt;&lt;strong&gt;Заключение о соответствии требованиям&lt;/strong&gt;: резюме, которое показывает, что система соответствует всем требованиям, описанным в техническом задании.&lt;/li&gt;
    &lt;li id=&quot;1bEU&quot;&gt;&lt;strong&gt;Инструкции и отчеты по проверкам&lt;/strong&gt;: пошаговые инструкции для проверки работы системы или проведения интеграционных тестов.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;lGnE&quot;&gt;&lt;strong&gt;Пример&lt;/strong&gt;: Заказчик подписывает акт приемки, подтверждая, что программное обеспечение удовлетворяет заявленным требованиям и успешно прошло все предусмотренные тесты.&lt;/p&gt;
  &lt;p id=&quot;CBpR&quot;&gt;3. &lt;strong&gt;Эксплуатационная документация&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;sKfq&quot;&gt;&lt;strong&gt;Назначение&lt;/strong&gt;: Инструкции для эксплуатации, администрирования и обслуживания системы после ее запуска. Эта документация важна для конечных пользователей, администраторов и обслуживающего персонала.&lt;/p&gt;
  &lt;p id=&quot;QQL6&quot;&gt;&lt;strong&gt;Основные компоненты&lt;/strong&gt;:&lt;/p&gt;
  &lt;ul id=&quot;lWbq&quot;&gt;
    &lt;li id=&quot;mjYX&quot;&gt;&lt;strong&gt;Руководство пользователя&lt;/strong&gt;: инструкции по работе с системой для конечных пользователей, включая описание интерфейсов, команд и операций.&lt;/li&gt;
    &lt;li id=&quot;WzLo&quot;&gt;&lt;strong&gt;Руководство администратора&lt;/strong&gt;: включает в себя настройки, учетные данные, процессы администрирования, резервного копирования и восстановления данных.&lt;/li&gt;
    &lt;li id=&quot;bnLo&quot;&gt;&lt;strong&gt;Руководство по установке и настройке&lt;/strong&gt;: пошаговое описание, как установить и настроить систему, чтобы она корректно функционировала.&lt;/li&gt;
    &lt;li id=&quot;fihM&quot;&gt;&lt;strong&gt;Документация по обслуживанию и техподдержке&lt;/strong&gt;: включает процедуры диагностики, устранения проблем, обновления и мониторинга системы.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;kadP&quot;&gt;&lt;strong&gt;Пример&lt;/strong&gt;: Руководство пользователя, описывающее, как работать с интерфейсом системы для создания отчетов.&lt;br /&gt;&lt;/p&gt;
  &lt;p id=&quot;nHRw&quot;&gt;Основные вопросы, которые могут задать на собеседовании&lt;/p&gt;
  &lt;ol id=&quot;2xa6&quot;&gt;
    &lt;li id=&quot;Awbm&quot;&gt;&lt;strong&gt;В чем отличие между проектной, приемо-сдаточной и эксплуатационной документацией?&lt;/strong&gt;&lt;/li&gt;
    &lt;ul id=&quot;0Nmn&quot;&gt;
      &lt;li id=&quot;fHs2&quot;&gt;&lt;strong&gt;Ответ&lt;/strong&gt;: Проектная документация описывает технические решения и структуру системы, приемо-сдаточная подтверждает соответствие требованиям и готовность к эксплуатации, а эксплуатационная ориентирована на пользователей и поддержание системы.&lt;/li&gt;
    &lt;/ul&gt;
    &lt;li id=&quot;dd8F&quot;&gt;&lt;strong&gt;Какие основные документы входят в состав проектной документации?&lt;/strong&gt;&lt;/li&gt;
    &lt;ul id=&quot;cUJo&quot;&gt;
      &lt;li id=&quot;TRJU&quot;&gt;&lt;strong&gt;Ответ&lt;/strong&gt;: Это техническое задание, спецификация требований, архитектурные схемы, диаграммы, и план тестирования.&lt;/li&gt;
    &lt;/ul&gt;
    &lt;li id=&quot;Bwq3&quot;&gt;&lt;strong&gt;Как оформляется акт приемки-передачи?&lt;/strong&gt;&lt;/li&gt;
    &lt;ul id=&quot;PqUk&quot;&gt;
      &lt;li id=&quot;vUGa&quot;&gt;&lt;strong&gt;Ответ&lt;/strong&gt;: Акт включает описание выполненных работ, их соответствие требованиям, подписи обеих сторон (исполнителя и заказчика) и фиксирует передачу объекта заказчику.&lt;/li&gt;
    &lt;/ul&gt;
    &lt;li id=&quot;dAgT&quot;&gt;&lt;strong&gt;Какие типы руководств входят в эксплуатационную документацию?&lt;/strong&gt;&lt;/li&gt;
    &lt;ul id=&quot;A2sW&quot;&gt;
      &lt;li id=&quot;zRU4&quot;&gt;&lt;strong&gt;Ответ&lt;/strong&gt;: Руководства для пользователей, администраторов, по установке, настройке и техподдержке.&lt;/li&gt;
    &lt;/ul&gt;
    &lt;li id=&quot;aePY&quot;&gt;&lt;strong&gt;Как документировать требования в проектной документации?&lt;/strong&gt;&lt;/li&gt;
    &lt;ul id=&quot;mcyx&quot;&gt;
      &lt;li id=&quot;CqHV&quot;&gt;&lt;strong&gt;Ответ&lt;/strong&gt;: Требования документируются в спецификации требований (SRS), включающей описание функциональных, нефункциональных, системных требований и ограничений.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/ol&gt;
  &lt;p id=&quot;n5Cg&quot;&gt;Советы для подготовки:&lt;/p&gt;
  &lt;ul id=&quot;YhFF&quot;&gt;
    &lt;li id=&quot;0uAA&quot;&gt;Изучите примеры этих документов, если есть возможность, чтобы знать их структуру и содержание.&lt;/li&gt;
    &lt;li id=&quot;hPvp&quot;&gt;Потренируйтесь объяснять каждый тип документа в одном предложении, чтобы легко передать суть и назначение.&lt;/li&gt;
    &lt;li id=&quot;G7C8&quot;&gt;Приводите примеры из личного опыта или кейсов, если работали с подобными документами, поскольку это поможет показать ваш практический опыт.&lt;/li&gt;
  &lt;/ul&gt;

</content></entry><entry><id>stoic_ftr:5raBNc_mutI</id><link rel="alternate" type="text/html" href="https://teletype.in/@stoic_ftr/5raBNc_mutI?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=stoic_ftr"></link><title>Топ 25-вопросов по API для бизнес/системных аналитиков</title><published>2024-10-27T01:02:46.084Z</published><updated>2024-10-27T01:02:46.084Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img2.teletype.in/files/d5/34/d534d8bd-eaca-45b4-a4c8-bc6b8bc68177.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img2.teletype.in/files/d1/50/d150fb5f-75ce-4686-b045-f447d0af07a1.jpeg&quot;&gt;1. Что такое API и зачем оно нужно?</summary><content type="html">
  &lt;figure id=&quot;9qlC&quot; class=&quot;m_retina&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/d1/50/d150fb5f-75ce-4686-b045-f447d0af07a1.jpeg&quot; width=&quot;350&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;hZHj&quot;&gt;1. &lt;strong&gt;Что такое API и зачем оно нужно?&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;6LjG&quot;&gt;&lt;strong&gt;Ответ&lt;/strong&gt;: API (Application Programming Interface) — это интерфейс, который позволяет приложениям взаимодействовать между собой. Например, API позволяет мобильному приложению отправить запрос серверу и получить от него данные для отображения.&lt;/p&gt;
  &lt;p id=&quot;wncw&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;2V2r&quot;&gt;2. &lt;strong&gt;Какие существуют типы API?&lt;/strong&gt;&lt;/h3&gt;
  &lt;p id=&quot;c1gf&quot;&gt;&lt;strong&gt;Ответ&lt;/strong&gt;: Основные типы API включают REST, SOAP, GraphQL, RPC и gRPC. REST и SOAP — самые распространённые в веб-разработке.&lt;/p&gt;
  &lt;p id=&quot;StmZ&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;rIYF&quot;&gt;3. &lt;strong&gt;В чем разница между REST и SOAP API?&lt;/strong&gt;&lt;/h3&gt;
  &lt;p id=&quot;rVYG&quot;&gt;&lt;strong&gt;Ответ&lt;/strong&gt;: REST использует стандартные HTTP методы (GET, POST, PUT, DELETE), возвращая данные обычно в формате JSON или XML, и гибче по сравнению с SOAP, который требует определенного XML формата и сложнее для реализации.&lt;/p&gt;
  &lt;p id=&quot;w0Ch&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;u7Fw&quot;&gt;4. &lt;strong&gt;Какие форматы данных используются в API?&lt;/strong&gt;&lt;/h3&gt;
  &lt;p id=&quot;sNNl&quot;&gt;&lt;strong&gt;Ответ&lt;/strong&gt;: JSON и XML — два самых популярных формата для передачи данных в API, хотя JSON используется чаще благодаря своей простоте и легкости парсинга.&lt;/p&gt;
  &lt;p id=&quot;7huJ&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;1Uu9&quot;&gt;5. &lt;strong&gt;Что такое идемпотентность в контексте API?&lt;/strong&gt;&lt;/h3&gt;
  &lt;p id=&quot;lyrd&quot;&gt;&lt;strong&gt;Ответ&lt;/strong&gt;: Идемпотентность означает, что повторение одного и того же запроса приведет к одному и тому же результату, как в случае с методами GET, PUT и DELETE в REST API.&lt;/p&gt;
  &lt;p id=&quot;BaRe&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;rOvx&quot;&gt;6. &lt;strong&gt;Какие существуют методы HTTP-запросов?&lt;/strong&gt;&lt;/h3&gt;
  &lt;p id=&quot;tkbP&quot;&gt;&lt;strong&gt;Ответ&lt;/strong&gt;: Основные методы — GET (получить данные), POST (отправить данные), PUT (обновить данные), PATCH (обновить частично), DELETE (удалить данные).&lt;/p&gt;
  &lt;p id=&quot;wzK5&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;43HX&quot;&gt;7. &lt;strong&gt;В чем отличие между PUT и PATCH?&lt;/strong&gt;&lt;/h3&gt;
  &lt;p id=&quot;w1Yn&quot;&gt;&lt;strong&gt;Ответ&lt;/strong&gt;: PUT заменяет ресурс полностью, тогда как PATCH обновляет только часть ресурса.&lt;/p&gt;
  &lt;p id=&quot;CXXR&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;6HSu&quot;&gt;8. &lt;strong&gt;Что такое аутентификация и авторизация в API?&lt;/strong&gt;&lt;/h3&gt;
  &lt;p id=&quot;5xRQ&quot;&gt;&lt;strong&gt;Ответ&lt;/strong&gt;: Аутентификация — это подтверждение личности пользователя (например, с помощью токена), а авторизация — проверка прав на доступ к ресурсам после аутентификации.&lt;/p&gt;
  &lt;p id=&quot;ABd9&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;UWNh&quot;&gt;9. &lt;strong&gt;Какие существуют методы аутентификации для API?&lt;/strong&gt;&lt;/h3&gt;
  &lt;p id=&quot;gm5V&quot;&gt;&lt;strong&gt;Ответ&lt;/strong&gt;: Наиболее популярные методы — Basic Auth, OAuth 2.0, токены JWT и API ключи.&lt;/p&gt;
  &lt;p id=&quot;5JkE&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;zN0a&quot;&gt;10. &lt;strong&gt;Что такое токен и зачем он используется в API?&lt;/strong&gt;&lt;/h3&gt;
  &lt;p id=&quot;Q1Pq&quot;&gt;&lt;strong&gt;Ответ&lt;/strong&gt;: Токен — это строка, представляющая собой доказательство аутентификации, используется для проверки идентичности пользователя на каждом запросе к API.&lt;/p&gt;
  &lt;p id=&quot;RQA5&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;b4g9&quot;&gt;11. &lt;strong&gt;Что такое JSON Web Token (JWT)?&lt;/strong&gt;&lt;/h3&gt;
  &lt;p id=&quot;nD6k&quot;&gt;&lt;strong&gt;Ответ&lt;/strong&gt;: JWT — это стандартизированный формат токена, который используется для аутентификации и содержит закодированную информацию о пользователе.&lt;/p&gt;
  &lt;p id=&quot;KLMd&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;fxnp&quot;&gt;12. &lt;strong&gt;Что такое rate limiting?&lt;/strong&gt;&lt;/h3&gt;
  &lt;p id=&quot;qpmn&quot;&gt;&lt;strong&gt;Ответ&lt;/strong&gt;: Rate limiting ограничивает количество запросов, которые клиент может отправить на API за определенное время, чтобы предотвратить перегрузку и злоупотребление ресурсами.&lt;/p&gt;
  &lt;p id=&quot;KD4X&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;wbok&quot;&gt;13. &lt;strong&gt;Какие существуют коды HTTP-ответов?&lt;/strong&gt;&lt;/h3&gt;
  &lt;p id=&quot;1ehi&quot;&gt;&lt;strong&gt;Ответ&lt;/strong&gt;: Коды разделяются на 5 классов: 1xx — информационные, 2xx — успешные, 3xx — перенаправление, 4xx — ошибки клиента, 5xx — ошибки сервера.&lt;/p&gt;
  &lt;p id=&quot;Vu9J&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;oXrM&quot;&gt;14. &lt;strong&gt;Какие коды ошибок HTTP могут возникать при работе с API?&lt;/strong&gt;&lt;/h3&gt;
  &lt;p id=&quot;lexX&quot;&gt;&lt;strong&gt;Ответ&lt;/strong&gt;: К популярным ошибкам относятся 400 (Bad Request), 401 (Unauthorized), 403 (Forbidden), 404 (Not Found), 500 (Internal Server Error).&lt;/p&gt;
  &lt;p id=&quot;Ordm&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;LWHV&quot;&gt;15. &lt;strong&gt;Что такое endpoint в API?&lt;/strong&gt;&lt;/h3&gt;
  &lt;p id=&quot;GYzU&quot;&gt;&lt;strong&gt;Ответ&lt;/strong&gt;: Endpoint — это конкретный URL, по которому клиент может получить доступ к данным или операциям API, например, &lt;code&gt;/users/123&lt;/code&gt;.&lt;/p&gt;
  &lt;p id=&quot;QOnE&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;YU76&quot;&gt;16. &lt;strong&gt;Что такое API-документация?&lt;/strong&gt;&lt;/h3&gt;
  &lt;p id=&quot;v4SG&quot;&gt;&lt;strong&gt;Ответ&lt;/strong&gt;: Это описание всех методов и данных, которые доступны через API, включая URL, параметры, примеры запросов и ответов, коды ошибок.&lt;/p&gt;
  &lt;p id=&quot;jrju&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;wDX7&quot;&gt;17. &lt;strong&gt;Какие инструменты используются для тестирования API?&lt;/strong&gt;&lt;/h3&gt;
  &lt;p id=&quot;AeCQ&quot;&gt;&lt;strong&gt;Ответ&lt;/strong&gt;: Популярные инструменты — Postman, Swagger, SoapUI, Insomnia. Они позволяют отправлять запросы и получать ответы от API.&lt;/p&gt;
  &lt;p id=&quot;RO3H&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;BT4M&quot;&gt;18. &lt;strong&gt;Что такое API-клиент?&lt;/strong&gt;&lt;/h3&gt;
  &lt;p id=&quot;wGMz&quot;&gt;&lt;strong&gt;Ответ&lt;/strong&gt;: API-клиент — это приложение, которое делает запросы к API, чтобы получать или отправлять данные (например, мобильное приложение).&lt;/p&gt;
  &lt;p id=&quot;Sjmf&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;RGao&quot;&gt;19. &lt;strong&gt;Как выполняется передача изображений через API?&lt;/strong&gt;&lt;/h3&gt;
  &lt;p id=&quot;hzIn&quot;&gt;&lt;strong&gt;Ответ&lt;/strong&gt;: Обычно изображения передаются в формате Base64, если их нужно отправить в теле JSON, или как multipart/form-data.&lt;/p&gt;
  &lt;p id=&quot;wZg4&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;VRaq&quot;&gt;20. &lt;strong&gt;Что такое версия API и зачем она нужна?&lt;/strong&gt;&lt;/h3&gt;
  &lt;p id=&quot;YcUo&quot;&gt;&lt;strong&gt;Ответ&lt;/strong&gt;: Версионирование позволяет изменять API, не ломая старые реализации, обычно добавляется к URL как &lt;code&gt;v1&lt;/code&gt;, &lt;code&gt;v2&lt;/code&gt; и так далее.&lt;/p&gt;
  &lt;p id=&quot;vtvE&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;Wj16&quot;&gt;21. &lt;strong&gt;Что такое пагинация и зачем она нужна в API?&lt;/strong&gt;&lt;/h3&gt;
  &lt;p id=&quot;Fy7l&quot;&gt;&lt;strong&gt;Ответ&lt;/strong&gt;: Пагинация — это деление результатов на страницы для уменьшения нагрузки на сервер и клиента, особенно для больших наборов данных.&lt;/p&gt;
  &lt;p id=&quot;P2BK&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;RYb0&quot;&gt;22. &lt;strong&gt;Какие существуют подходы к пагинации?&lt;/strong&gt;&lt;/h3&gt;
  &lt;p id=&quot;Bzg9&quot;&gt;&lt;strong&gt;Ответ&lt;/strong&gt;: Основные — Offset и Limit (отступ и лимит), Cursor-based (курсоры) и пагинация по страницам (page-based).&lt;/p&gt;
  &lt;p id=&quot;wABo&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;SKe9&quot;&gt;23. &lt;strong&gt;Что такое CORS и как он связан с API?&lt;/strong&gt;&lt;/h3&gt;
  &lt;p id=&quot;uzVI&quot;&gt;&lt;strong&gt;Ответ&lt;/strong&gt;: CORS (Cross-Origin Resource Sharing) — это механизм безопасности, ограничивающий доступ к ресурсам API из других доменов.&lt;/p&gt;
  &lt;p id=&quot;uN0B&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;HMLH&quot;&gt;24. &lt;strong&gt;Что такое webhook?&lt;/strong&gt;&lt;/h3&gt;
  &lt;p id=&quot;coRb&quot;&gt;&lt;strong&gt;Ответ&lt;/strong&gt;: Webhook — это способ для API сообщить другому приложению о событии, отправляя данные, как только событие произошло (например, уведомление о новом платеже).&lt;/p&gt;
  &lt;p id=&quot;s3OM&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;ZNAK&quot;&gt;25. &lt;strong&gt;Как понять, что API нужно улучшить?&lt;/strong&gt;&lt;/h3&gt;
  &lt;p id=&quot;z7fh&quot;&gt;&lt;strong&gt;Ответ&lt;/strong&gt;: Признаками являются низкая производительность, высокие задержки, жалобы на неудобные структуры данных и часто возникающие ошибки — это указывает на необходимость оптимизации API.&lt;/p&gt;

</content></entry><entry><id>stoic_ftr:tVszPclkTbU</id><link rel="alternate" type="text/html" href="https://teletype.in/@stoic_ftr/tVszPclkTbU?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=stoic_ftr"></link><title>Postman</title><published>2024-10-23T01:03:10.861Z</published><updated>2024-10-23T01:03:10.861Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img3.teletype.in/files/e4/5c/e45cf3e9-55ca-467e-9e50-4fd82fc5378e.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img1.teletype.in/files/07/14/0714ff4a-f2be-4ad1-9304-1d69dacbdd15.png&quot;&gt;Что такое Postman?</summary><content type="html">
  &lt;p id=&quot;WdRT&quot;&gt;Что такое Postman?&lt;/p&gt;
  &lt;p id=&quot;49zP&quot;&gt;Postman — это мощный инструмент, который используется для разработки и тестирования API (интерфейсов программирования приложений). Он позволяет разработчикам и тестировщикам взаимодействовать с API без необходимости писать код для каждого запроса. Postman поддерживает отправку запросов, анализ ответов и тестирование, что делает его незаменимым инструментом в разработке и интеграции программного обеспечения.&lt;br /&gt;&lt;/p&gt;
  &lt;h3 id=&quot;aadY&quot;&gt;Практическая польза Postman&lt;/h3&gt;
  &lt;ol id=&quot;L04Q&quot;&gt;
    &lt;li id=&quot;y2Fu&quot;&gt;&lt;strong&gt;Тестирование API&lt;/strong&gt;: Postman упрощает взаимодействие с API, позволяя разработчикам отправлять запросы, изменять параметры, заголовки и тело запроса без необходимости программирования. Это полезно для быстрого тестирования, как API работают, особенно на этапе разработки или отладки.&lt;/li&gt;
    &lt;li id=&quot;eInu&quot;&gt;&lt;strong&gt;Автоматизация тестирования&lt;/strong&gt;: Вы можете создавать наборы тестов для API, что помогает автоматизировать рутинные проверки. Это критично при разработке сложных приложений, где необходимо убедиться, что после каждого изменения API работает стабильно.&lt;/li&gt;
    &lt;li id=&quot;UqwT&quot;&gt;&lt;strong&gt;Коллаборация&lt;/strong&gt;: Postman позволяет делиться коллекциями запросов с коллегами, что способствует улучшению командной работы и упрощению передачи знаний о проекте.&lt;/li&gt;
    &lt;li id=&quot;kHLC&quot;&gt;&lt;strong&gt;Мониторинг API&lt;/strong&gt;: Postman поддерживает мониторинг API, что позволяет автоматически проверять доступность и корректность работы API через определенные интервалы времени.&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p id=&quot;N3jn&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;8Q8h&quot;&gt;Почему иногда лучше не использовать Postman?&lt;/h3&gt;
  &lt;p id=&quot;co0U&quot;&gt;Хотя Postman удобен для большинства задач, есть случаи, когда его использование может быть не идеальным:&lt;/p&gt;
  &lt;ol id=&quot;L2n3&quot;&gt;
    &lt;li id=&quot;xN5a&quot;&gt;&lt;strong&gt;Производительность&lt;/strong&gt;: Postman предназначен для разработки и тестирования, а не для выполнения запросов с высокой производительностью. Если вам нужно отправить миллионы запросов за короткий промежуток времени (например, нагрузочное тестирование), лучше использовать специализированные инструменты вроде Apache JMeter.&lt;/li&gt;
    &lt;li id=&quot;H0MC&quot;&gt;&lt;strong&gt;Ограничения пользовательского интерфейса&lt;/strong&gt;: Когда вам нужно автоматизировать сложные сценарии с большим количеством логики, интерфейс Postman может оказаться не настолько гибким, как решение, написанное вручную с использованием кода (например, через фреймворки для тестирования на языках программирования).&lt;/li&gt;
    &lt;li id=&quot;ah92&quot;&gt;&lt;strong&gt;Необходимость в коде&lt;/strong&gt;: Если вы работаете над проектом с интеграциями API, где тестирование лучше реализовать программно, Postman может быть лишним звеном, потому что для интеграции и тестирования API в коде обычно используются библиотеки и фреймворки.&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p id=&quot;WUdR&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;1Oqo&quot;&gt;Как использовать Postman: Алгоритм работы&lt;/h3&gt;
  &lt;p id=&quot;gS6H&quot;&gt;Postman имеет простой и интуитивный интерфейс. Вот подробный алгоритм его использования:&lt;br /&gt;&lt;/p&gt;
  &lt;h4 id=&quot;ynkx&quot;&gt;Шаг 1: Установка Postman&lt;/h4&gt;
  &lt;ul id=&quot;gXUa&quot;&gt;
    &lt;li id=&quot;vTKj&quot;&gt;Скачайте Postman с официального сайта &lt;a href=&quot;https://www.postman.com/downloads/&quot; target=&quot;_blank&quot;&gt;Postman&lt;/a&gt;и установите его на свой компьютер.&lt;/li&gt;
    &lt;li id=&quot;lxSJ&quot;&gt;Зарегистрируйтесь или войдите в систему, если у вас уже есть учетная запись.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;h4 id=&quot;1cvJ&quot;&gt;Шаг 2: Создание нового запроса&lt;/h4&gt;
  &lt;ol id=&quot;D6qh&quot;&gt;
    &lt;li id=&quot;gvwt&quot;&gt;&lt;strong&gt;Открытие Postman&lt;/strong&gt;: После установки, откройте Postman.&lt;/li&gt;
    &lt;li id=&quot;xcRH&quot;&gt;&lt;strong&gt;Создание нового запроса&lt;/strong&gt;:&lt;/li&gt;
    &lt;ul id=&quot;Rom6&quot;&gt;
      &lt;li id=&quot;96sP&quot;&gt;В верхней части интерфейса есть поле для ввода URL.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/ol&gt;
  &lt;figure id=&quot;w39Z&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/07/14/0714ff4a-f2be-4ad1-9304-1d69dacbdd15.png&quot; /&gt;
  &lt;/figure&gt;
  &lt;ol id=&quot;KvpN&quot;&gt;
    &lt;ul id=&quot;KmwX&quot;&gt;
      &lt;li id=&quot;EYtJ&quot;&gt;Рядом с полем URL выберите тип HTTP-запроса (GET, POST, PUT, DELETE и т.д.).&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/ol&gt;
  &lt;figure id=&quot;JHza&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/29/bf/29bfbed6-86fa-4370-b8ee-8cfaea5edeec.png&quot; width=&quot;1862&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;RIlH&quot;&gt;Например, выберите &lt;code&gt;GET&lt;/code&gt;, если хотите получить данные, или &lt;code&gt;POST&lt;/code&gt;, если нужно отправить данные.&lt;/p&gt;
  &lt;blockquote id=&quot;mB3t&quot;&gt;&lt;strong&gt;1. Ввод URL&lt;/strong&gt;: Введите URL-адрес API, к которому хотите обратиться. Например: &lt;code&gt;https://api.example.com/data&lt;/code&gt;.&lt;/blockquote&gt;
  &lt;blockquote id=&quot;gKqs&quot;&gt;&lt;strong&gt;2. Добавление заголовков&lt;/strong&gt; (опционально):&lt;/blockquote&gt;
  &lt;figure id=&quot;krTS&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/d8/67/d8677ba8-afac-41df-bd9d-5d380db6074b.png&quot; width=&quot;1912&quot; /&gt;
  &lt;/figure&gt;
  &lt;ol id=&quot;aj36&quot;&gt;
    &lt;ul id=&quot;pl5j&quot;&gt;
      &lt;li id=&quot;ozvl&quot;&gt;Нажмите на вкладку &lt;strong&gt;Headers&lt;/strong&gt;, чтобы добавить нужные заголовки (например, &lt;code&gt;Content-Type: application/json&lt;/code&gt;).&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/ol&gt;
  &lt;blockquote id=&quot;PzpE&quot;&gt;&lt;strong&gt;3. Добавление параметров запроса&lt;/strong&gt; (опционально):&lt;/blockquote&gt;
  &lt;figure id=&quot;kYXE&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/38/da/38dabded-f9af-4cbb-8f71-c029c06738fc.png&quot; width=&quot;1910&quot; /&gt;
  &lt;/figure&gt;
  &lt;ol id=&quot;DxYT&quot;&gt;
    &lt;ul id=&quot;1SFl&quot;&gt;
      &lt;li id=&quot;an6r&quot;&gt;Если запрос требует параметров (например, ?id=123), добавьте их на вкладке &lt;strong&gt;Params&lt;/strong&gt;.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/ol&gt;
  &lt;blockquote id=&quot;hPie&quot;&gt;&lt;strong&gt;4. Отправка запроса&lt;/strong&gt;: Нажмите на кнопку &lt;strong&gt;Send&lt;/strong&gt;, чтобы отправить запрос.&lt;/blockquote&gt;
  &lt;h4 id=&quot;A26J&quot;&gt;Шаг 3: Работа с ответом&lt;/h4&gt;
  &lt;blockquote id=&quot;7Y3T&quot;&gt;&lt;strong&gt;1. Просмотр ответа&lt;/strong&gt;: После отправки запроса в нижней части окна Postman появится раздел с ответом от сервера. Вы увидите тело ответа, код статуса (например, 200 OK), время отклика и другие данные.&lt;/blockquote&gt;
  &lt;figure id=&quot;CiTX&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/7e/65/7e657899-9b01-4165-ba55-4ae722fc7836.png&quot; width=&quot;1906&quot; /&gt;
  &lt;/figure&gt;
  &lt;blockquote id=&quot;NnRh&quot;&gt;&lt;strong&gt;2. Форматирование ответа&lt;/strong&gt;: Вы можете переключаться между форматами представления ответа — JSON, HTML, текст и другими — для удобства чтения.&lt;/blockquote&gt;
  &lt;figure id=&quot;LGea&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/5a/56/5a56c218-9f7b-4b78-85da-9fb767f734ef.png&quot; width=&quot;1919&quot; /&gt;
  &lt;/figure&gt;
  &lt;blockquote id=&quot;jqt1&quot;&gt;&lt;strong&gt;3. Тестирование&lt;/strong&gt;: На вкладке &lt;strong&gt;Tests&lt;/strong&gt; можно писать простые JavaScript-тесты для автоматической проверки ответов.&lt;/blockquote&gt;
  &lt;figure id=&quot;ZPka&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/22/4c/224c2de0-c16d-436d-ab72-679945a43b8d.png&quot; width=&quot;1912&quot; /&gt;
  &lt;/figure&gt;
  &lt;h4 id=&quot;GxpG&quot;&gt;Шаг 4: Создание коллекций&lt;/h4&gt;
  &lt;ol id=&quot;F4KU&quot;&gt;
    &lt;li id=&quot;xdi2&quot;&gt;&lt;strong&gt;Коллекции&lt;/strong&gt;: Коллекции в Postman — это группы запросов, которые вы можете организовать и сохранять. Это удобно, если вы работаете с множеством запросов для одного API.&lt;/li&gt;
    &lt;li id=&quot;XYbn&quot;&gt;&lt;strong&gt;Создание коллекции&lt;/strong&gt;:&lt;/li&gt;
    &lt;ul id=&quot;uO7K&quot;&gt;
      &lt;li id=&quot;EnW7&quot;&gt;Нажмите на вкладку &lt;strong&gt;Collections&lt;/strong&gt; и выберите &lt;strong&gt;New Collection&lt;/strong&gt;.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/ol&gt;
  &lt;figure id=&quot;RbEF&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/35/85/35855d63-784f-4963-8145-b7f7d856a4b6.png&quot; width=&quot;1914&quot; /&gt;
  &lt;/figure&gt;
  &lt;ol id=&quot;rber&quot;&gt;
    &lt;ul id=&quot;Qiua&quot;&gt;
      &lt;li id=&quot;mi2L&quot;&gt;Дайте коллекции имя и добавьте в нее запросы.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/ol&gt;
  &lt;h4 id=&quot;Onxa&quot;&gt;Шаг 5: Авторизация&lt;/h4&gt;
  &lt;p id=&quot;05Fv&quot;&gt;API часто требуют авторизации. Postman поддерживает различные типы авторизации:&lt;/p&gt;
  &lt;ol id=&quot;nPEC&quot;&gt;
    &lt;li id=&quot;ZmNU&quot;&gt;&lt;strong&gt;Basic Auth&lt;/strong&gt;: Простая аутентификация с использованием логина и пароля.&lt;/li&gt;
    &lt;li id=&quot;0mLj&quot;&gt;&lt;strong&gt;Bearer Token&lt;/strong&gt;: Используется для передачи токена доступа (часто применяется при работе с OAuth).&lt;/li&gt;
    &lt;li id=&quot;t8ou&quot;&gt;&lt;strong&gt;API Key&lt;/strong&gt;: Использование ключа API в заголовках или параметрах запроса.&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p id=&quot;Hbkb&quot;&gt;Выберите тип авторизации на вкладке &lt;strong&gt;Authorization&lt;/strong&gt; и заполните необходимые поля.&lt;/p&gt;
  &lt;h4 id=&quot;eQz2&quot;&gt;Шаг 6: Автоматизация тестов&lt;/h4&gt;
  &lt;blockquote id=&quot;aBOZ&quot;&gt;&lt;strong&gt;1. Тестирование в Postman&lt;/strong&gt;: Вы можете автоматизировать тестирование запросов. Для этого на вкладке &lt;strong&gt;Tests&lt;/strong&gt; добавьте JavaScript-тесты, которые будут запускаться после получения ответа от API. Пример простого теста:&lt;/blockquote&gt;
  &lt;p id=&quot;IeKH&quot;&gt;&lt;code&gt;pm.test(&amp;quot;Статус-код 200&amp;quot;, function () {&lt;br /&gt;    pm.response.to.have.status(200);&lt;br /&gt;});&lt;/code&gt;&lt;/p&gt;
  &lt;blockquote id=&quot;QeMF&quot;&gt;&lt;strong&gt;2. Запуск коллекции тестов&lt;/strong&gt;: В разделе &lt;strong&gt;Collection Runner&lt;/strong&gt; можно запустить все запросы из коллекции автоматически и получить отчеты по тестам.&lt;/blockquote&gt;
  &lt;h4 id=&quot;npJM&quot;&gt;Шаг 7: Мониторинг API&lt;/h4&gt;
  &lt;ol id=&quot;rplD&quot;&gt;
    &lt;li id=&quot;RKGk&quot;&gt;&lt;strong&gt;Мониторинг&lt;/strong&gt;: В Postman можно настроить мониторинг запросов, чтобы они запускались через определенные интервалы времени и проверяли состояние API.&lt;/li&gt;
    &lt;li id=&quot;pb0p&quot;&gt;&lt;strong&gt;Создание монитора&lt;/strong&gt;:&lt;/li&gt;
    &lt;ul id=&quot;ZA7d&quot;&gt;
      &lt;li id=&quot;slZy&quot;&gt;Перейдите в раздел &lt;strong&gt;Monitors&lt;/strong&gt;.&lt;/li&gt;
      &lt;li id=&quot;aQM2&quot;&gt;Настройте коллекцию и частоту проверки.&lt;/li&gt;
      &lt;li id=&quot;W4XQ&quot;&gt;В случае сбоя или ошибки вы получите уведомление по электронной почте.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/ol&gt;
  &lt;p id=&quot;tgT2&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;XzRU&quot;&gt;Основные функции Postman&lt;/h3&gt;
  &lt;ol id=&quot;sIs3&quot;&gt;
    &lt;li id=&quot;1btC&quot;&gt;&lt;strong&gt;Запросы (Requests)&lt;/strong&gt;: Отправка различных типов запросов к API (GET, POST, PUT, DELETE и т.д.).&lt;/li&gt;
    &lt;li id=&quot;sF7f&quot;&gt;&lt;strong&gt;Коллекции (Collections)&lt;/strong&gt;: Группировка и организация запросов.&lt;/li&gt;
    &lt;li id=&quot;bejx&quot;&gt;&lt;strong&gt;Тесты (Tests)&lt;/strong&gt;: Автоматизация проверки результатов запросов с помощью JavaScript.&lt;/li&gt;
    &lt;li id=&quot;9SbA&quot;&gt;&lt;strong&gt;Среды (Environments)&lt;/strong&gt;: Использование переменных для настройки запросов под различные окружения (например, тестовое и рабочее).&lt;/li&gt;
    &lt;li id=&quot;oFhX&quot;&gt;&lt;strong&gt;Мониторинг (Monitoring)&lt;/strong&gt;: Автоматическое отслеживание состояния API.&lt;/li&gt;
    &lt;li id=&quot;n19s&quot;&gt;&lt;strong&gt;Документация (Documentation)&lt;/strong&gt;: Создание документации по API прямо в Postman.&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p id=&quot;Cg2U&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;E8dJ&quot;&gt;Когда не стоит использовать Postman&lt;/h3&gt;
  &lt;ol id=&quot;6P8A&quot;&gt;
    &lt;li id=&quot;AbSN&quot;&gt;&lt;strong&gt;Нагрузочное тестирование&lt;/strong&gt;: Если вам нужно провести масштабное нагрузочное тестирование (миллионы запросов), Postman не справится с этой задачей. Для этого лучше использовать инструменты, такие как JMeter или Locust.&lt;/li&gt;
    &lt;li id=&quot;NrUd&quot;&gt;&lt;strong&gt;Сложные сценарии тестирования&lt;/strong&gt;: Если тестовые сценарии требуют сложной логики, условных операторов, циклов и других программных конструкций, Postman может оказаться недостаточно гибким. В этом случае лучше реализовать тестирование с использованием кода на вашем языке программирования.&lt;/li&gt;
    &lt;li id=&quot;EEAE&quot;&gt;&lt;strong&gt;Интеграции&lt;/strong&gt;: Когда проект требует глубоких интеграций API в приложение, Postman хорош для первоначальной проверки и отладки, но полноценную интеграцию удобнее писать на языке программирования.&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p id=&quot;RUMQ&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;ZttJ&quot;&gt;Заключение&lt;/h3&gt;
  &lt;p id=&quot;2Y1t&quot;&gt;Postman — мощный и удобный инструмент для тестирования и взаимодействия с API. Он отлично подходит для разработки, проверки и документирования API. Однако в некоторых случаях его возможности могут оказаться ограниченными, например, для нагрузочного тестирования или сложной логики. Если использовать его правильно, Postman значительно ускорит разработку и улучшит качество работы с API.&lt;/p&gt;

</content></entry><entry><id>stoic_ftr:YuBwn2nq71K</id><link rel="alternate" type="text/html" href="https://teletype.in/@stoic_ftr/YuBwn2nq71K?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=stoic_ftr"></link><title>SQL для начинающих. Индексы.</title><published>2024-10-19T23:56:50.627Z</published><updated>2024-10-19T23:56:50.627Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img3.teletype.in/files/6c/6d/6c6de885-02d5-4d67-8b26-6927b21ec587.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img3.teletype.in/files/e4/2a/e42a2bad-3672-4422-b686-ccdad8601a8a.png&quot;&gt;Когда вы начинаете работать с базами данных, понятие индексов может показаться сложным. Но это одно из ключевых понятий, которое помогает сделать работу с данными более эффективной. В этой части мы поговорим о том, зачем нужны индексы и как они влияют на производительность запросов.</summary><content type="html">
  &lt;p id=&quot;gXQl&quot;&gt;Когда вы начинаете работать с базами данных, понятие индексов может показаться сложным. Но это одно из ключевых понятий, которое помогает сделать работу с данными более эффективной. В этой части мы поговорим о том, зачем нужны индексы и как они влияют на производительность запросов.&lt;/p&gt;
  &lt;figure id=&quot;o9UQ&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/e4/2a/e42a2bad-3672-4422-b686-ccdad8601a8a.png&quot; width=&quot;1099&quot; /&gt;
  &lt;/figure&gt;
  &lt;h4 id=&quot;10FT&quot;&gt;Что такое индексы?&lt;/h4&gt;
  &lt;p id=&quot;HbeE&quot;&gt;Представьте себе большую библиотеку с тысячами книг. Если бы все книги были просто разбросаны по полкам без какого-либо порядка, поиск конкретной книги занял бы часы. Но в библиотеке есть система — книги упорядочены по автору, названию или тематике, и вы можете быстро найти нужную вам информацию. Аналогом этой системы в базах данных являются &lt;strong&gt;индексы&lt;/strong&gt;.&lt;/p&gt;
  &lt;p id=&quot;2I4A&quot;&gt;&lt;strong&gt;Индекс&lt;/strong&gt; — это структура, которая помогает базе данных быстрее находить нужные данные, как алфавитный указатель в книге. Если бы вы каждый раз пересматривали всю таблицу, чтобы найти нужную строку, процесс мог бы занять очень много времени. Индексы ускоряют этот процесс, позволяя базе данных не &amp;quot;просматривать&amp;quot; все записи, а сразу переходить к нужной.&lt;/p&gt;
  &lt;p id=&quot;SixY&quot;&gt;&lt;/p&gt;
  &lt;h4 id=&quot;ZuEQ&quot;&gt;Зачем нужны индексы?&lt;/h4&gt;
  &lt;p id=&quot;J2vK&quot;&gt;Индексы нужны для того, чтобы &lt;strong&gt;ускорить поиск данных&lt;/strong&gt; в таблицах. Когда у вас есть тысячи или миллионы строк в таблице, поиск нужных данных может стать медленным. Индексы решают эту проблему.&lt;/p&gt;
  &lt;p id=&quot;V0QG&quot;&gt;Рассмотрим простой пример. У вас есть таблица &lt;code&gt;students&lt;/code&gt;, где хранится информация о студентах: их имена, фамилии, номера зачеток и даты поступления.&lt;/p&gt;
  &lt;p id=&quot;wMIw&quot;&gt;&lt;code&gt;SELECT * FROM students WHERE student_id = 12345;&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;VOHR&quot;&gt;Запрос выглядит довольно простым. Но если в таблице сотни тысяч студентов, без индекса базе данных придется просмотреть каждую строку, чтобы найти студента с &lt;code&gt;student_id = 12345&lt;/code&gt;. Это называется &lt;strong&gt;полным сканированием таблицы&lt;/strong&gt; (table scan)&lt;/p&gt;
  &lt;p id=&quot;nPnP&quot;&gt;Но если на столбце &lt;code&gt;student_id&lt;/code&gt; есть индекс, база данных вместо просмотра всех строк сразу обратится к индексу, как к указателю, и найдет нужную запись гораздо быстрее.&lt;/p&gt;
  &lt;p id=&quot;dYEE&quot;&gt;&lt;/p&gt;
  &lt;h4 id=&quot;oYcm&quot;&gt;Как индексы влияют на производительность?&lt;/h4&gt;
  &lt;p id=&quot;6xvJ&quot;&gt;Индексы помогают ускорить &lt;strong&gt;чтение данных&lt;/strong&gt;, но при этом они могут замедлить &lt;strong&gt;вставку, обновление и удаление данных&lt;/strong&gt;. Давайте разберемся, почему это происходит.&lt;/p&gt;
  &lt;ol id=&quot;OMQl&quot;&gt;
    &lt;li id=&quot;rkNG&quot;&gt;&lt;strong&gt;Ускорение чтения данных&lt;/strong&gt;:Когда мы добавляем индекс на какой-то столбец, запросы, которые ищут данные по этому столбцу, начинают выполняться быстрее. Например, если у вас есть индекс на столбце &lt;code&gt;student_id&lt;/code&gt;, запросы вида &lt;code&gt;WHERE student_id = 12345&lt;/code&gt; будут обрабатываться очень быстро. Это потому, что база данных больше не должна просматривать всю таблицу, чтобы найти нужные данные.Чем больше строк в таблице, тем более заметной становится польза индексов для ускорения чтения. Запросы, которые используют индекс, могут выполняться в разы быстрее, особенно в больших таблицах.&lt;/li&gt;
    &lt;li id=&quot;BYJ1&quot;&gt;&lt;strong&gt;Замедление вставки, обновления и удаления данных&lt;/strong&gt;:Однако индексы — это не только плюсы. Каждый раз, когда мы добавляем новые данные в таблицу или изменяем существующие, база данных должна обновить не только саму таблицу, но и индекс. Это добавляет дополнительную нагрузку на систему.Например, если мы добавили индекс на столбец &lt;code&gt;student_id&lt;/code&gt;, каждый раз, когда мы вставляем новую строку, база данных должна также обновить индекс. Чем больше индексов на таблице, тем больше времени потребуется на выполнение этих операций.&lt;/li&gt;
  &lt;/ol&gt;
  &lt;h4 id=&quot;mVn0&quot;&gt;Баланс между чтением и изменением данных&lt;/h4&gt;
  &lt;p id=&quot;oIWs&quot;&gt;В реальных системах всегда нужно искать &lt;strong&gt;баланс&lt;/strong&gt; между скоростью чтения данных и скоростью их изменения. Индексы полезны для ускорения чтения, но если таблица часто обновляется или в нее регулярно добавляются новые данные, слишком много индексов может замедлить эти операции.&lt;/p&gt;
  &lt;p id=&quot;Ugme&quot;&gt;Вот почему важно тщательно продумывать, на какие столбцы нужно создавать индексы. Лучше всего создавать индексы только на тех столбцах, по которым часто выполняются запросы &lt;strong&gt;с фильтрацией данных&lt;/strong&gt;.&lt;/p&gt;
  &lt;h4 id=&quot;y9y9&quot;&gt;Пример влияния индексов на производительность&lt;/h4&gt;
  &lt;p id=&quot;FCCk&quot;&gt;Предположим, у нас есть таблица с миллионом строк, и мы часто выполняем запросы по полю &lt;code&gt;email&lt;/code&gt;. Без индекса, каждый раз, когда мы ищем строку с определенным &lt;code&gt;email&lt;/code&gt;, база данных будет просматривать всю таблицу. Это может занять несколько секунд.&lt;/p&gt;
  &lt;p id=&quot;27xG&quot;&gt;Но если мы создадим индекс на поле &lt;code&gt;email&lt;/code&gt;, запросы будут выполняться значительно быстрее:&lt;/p&gt;
  &lt;p id=&quot;iQq4&quot;&gt;&lt;code&gt;CREATE INDEX idx_email ON students(email);&lt;/code&gt;&lt;br /&gt;Теперь запрос:&lt;/p&gt;
  &lt;p id=&quot;Wymo&quot;&gt;&lt;code&gt;SELECT * FROM students WHERE email = &amp;#x27;student@example.com&amp;#x27;;&lt;/code&gt;&lt;br /&gt;&lt;/p&gt;
  &lt;p id=&quot;5H6J&quot;&gt;будет обрабатываться намного быстрее, потому что база данных сначала обратится к индексу и быстро найдет нужную строку.&lt;/p&gt;
  &lt;p id=&quot;3nXs&quot;&gt;Однако, если мы добавим в таблицу новую строку с новым &lt;code&gt;email&lt;/code&gt;, база данных должна будет не только вставить строку в таблицу, но и обновить индекс. Чем больше индексов на таблице, тем больше ресурсов это займет.&lt;/p&gt;
  &lt;p id=&quot;RBQx&quot;&gt;&lt;/p&gt;
  &lt;h4 id=&quot;OIX9&quot;&gt;Заключение&lt;/h4&gt;
  &lt;p id=&quot;zkIt&quot;&gt;Индексы — мощный инструмент для повышения производительности запросов. Они помогают быстрее находить нужные данные, что особенно важно, когда таблицы содержат большое количество строк. Однако индексы также могут замедлить операции вставки, обновления и удаления данных, поэтому важно продумать, какие столбцы нужно индексировать.&lt;/p&gt;
  &lt;p id=&quot;kk5y&quot;&gt;Если подытожить:&lt;/p&gt;
  &lt;ul id=&quot;rryE&quot;&gt;
    &lt;li id=&quot;0HpW&quot;&gt;&lt;strong&gt;Индексы&lt;/strong&gt; ускоряют поиск данных, что особенно полезно для больших таблиц.&lt;/li&gt;
    &lt;li id=&quot;WNv9&quot;&gt;&lt;strong&gt;Чтение данных&lt;/strong&gt; с индексами происходит быстрее, но &lt;strong&gt;вставка и обновление&lt;/strong&gt; данных могут замедлиться.&lt;/li&gt;
    &lt;li id=&quot;nD4W&quot;&gt;Создавайте индексы на тех столбцах, по которым часто выполняются запросы с фильтрацией.&lt;/li&gt;
  &lt;/ul&gt;

</content></entry><entry><id>stoic_ftr:wMEy0zBlMEk</id><link rel="alternate" type="text/html" href="https://teletype.in/@stoic_ftr/wMEy0zBlMEk?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=stoic_ftr"></link><title>Различие между Use Case и User Stories</title><published>2024-10-16T08:16:23.162Z</published><updated>2024-10-16T08:16:23.162Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img3.teletype.in/files/e9/34/e934f1d7-16f7-4667-b745-512d398f336c.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img2.teletype.in/files/14/cd/14cd1807-0a02-4eea-8b3c-fe06225f1593.png&quot;&gt;Когда мы говорим о разработке программного обеспечения или решении задач, связанных с требованиями, часто встречаются два термина: Use Case и User Stories. Они оба помогают описать, как система должна вести себя с точки зрения пользователя, но используются по-разному и имеют различные цели. Давайте разберемся в этом подробно и на примерах.</summary><content type="html">
  &lt;figure id=&quot;P1Nm&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/14/cd/14cd1807-0a02-4eea-8b3c-fe06225f1593.png&quot; width=&quot;960&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;1673&quot;&gt;Когда мы говорим о &lt;strong&gt;разработке программного обеспечения&lt;/strong&gt; или решении задач, связанных с требованиями, часто встречаются два термина: &lt;strong&gt;Use Case&lt;/strong&gt; и &lt;strong&gt;User Stories&lt;/strong&gt;. Они оба помогают описать, как система должна вести себя с точки зрения пользователя, но используются по-разному и имеют различные цели. Давайте разберемся в этом подробно и на примерах.&lt;/p&gt;
  &lt;h4 id=&quot;bcQr&quot;&gt;1. Что такое &lt;strong&gt;Use Case&lt;/strong&gt;?&lt;/h4&gt;
  &lt;p id=&quot;Tp4g&quot;&gt;&lt;strong&gt;Use Case (вариант использования)&lt;/strong&gt; — это формальный документ, который подробно описывает, как пользователь будет взаимодействовать с системой для достижения конкретной цели. Он более структурирован и охватывает взаимодействие на уровне системы.&lt;/p&gt;
  &lt;p id=&quot;akQK&quot;&gt;В Use Case описываются:&lt;/p&gt;
  &lt;ul id=&quot;wsE4&quot;&gt;
    &lt;li id=&quot;XiQ7&quot;&gt;&lt;strong&gt;Акторы (Actors)&lt;/strong&gt; — это те, кто взаимодействует с системой. Это могут быть пользователи или другие системы.&lt;/li&gt;
    &lt;li id=&quot;ilKj&quot;&gt;&lt;strong&gt;Предусловия (Preconditions)&lt;/strong&gt; — что должно быть выполнено до того, как начнется действие.&lt;/li&gt;
    &lt;li id=&quot;QiWT&quot;&gt;&lt;strong&gt;Шаги (Steps)&lt;/strong&gt; — последовательность действий, которые необходимо выполнить для достижения результата.&lt;/li&gt;
    &lt;li id=&quot;9OjP&quot;&gt;&lt;strong&gt;Результат (Postconditions)&lt;/strong&gt; — что произойдет после завершения всех шагов.&lt;/li&gt;
    &lt;li id=&quot;yG6k&quot;&gt;&lt;strong&gt;Альтернативные сценарии&lt;/strong&gt; — что делать, если что-то пошло не так.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;h5 id=&quot;VvCB&quot;&gt;Пример Use Case:&lt;/h5&gt;
  &lt;p id=&quot;OGiV&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;EJvY&quot;&gt;&lt;strong&gt;Название&lt;/strong&gt;: Авторизация пользователя.&lt;/p&gt;
  &lt;p id=&quot;jIB5&quot;&gt;&lt;strong&gt;Актор&lt;/strong&gt;: Пользователь.&lt;/p&gt;
  &lt;p id=&quot;0bWm&quot;&gt;&lt;strong&gt;Цель&lt;/strong&gt;: Пользователь вводит логин и пароль для входа в систему.&lt;/p&gt;
  &lt;p id=&quot;vkir&quot;&gt;&lt;strong&gt;Шаги&lt;/strong&gt;:&lt;/p&gt;
  &lt;ol id=&quot;J89m&quot;&gt;
    &lt;li id=&quot;ucg1&quot;&gt;Пользователь вводит логин.&lt;/li&gt;
    &lt;li id=&quot;R94Q&quot;&gt;Пользователь вводит пароль.&lt;/li&gt;
    &lt;li id=&quot;LCh6&quot;&gt;Система проверяет данные.&lt;/li&gt;
    &lt;li id=&quot;RDKQ&quot;&gt;Если данные верны, пользователь входит в систему.&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p id=&quot;esvF&quot;&gt;&lt;strong&gt;Альтернативный сценарий&lt;/strong&gt;:&lt;/p&gt;
  &lt;ul id=&quot;vWOu&quot;&gt;
    &lt;li id=&quot;FWyo&quot;&gt;Если логин или пароль введены неверно, система выдает сообщение об ошибке и предлагает попробовать снова.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;hr /&gt;
  &lt;h4 id=&quot;Af5c&quot;&gt;2. Что такое &lt;strong&gt;User Stories&lt;/strong&gt;?&lt;/h4&gt;
  &lt;p id=&quot;14mO&quot;&gt;&lt;strong&gt;User Stories (пользовательские истории)&lt;/strong&gt; — это краткие описания функций или задач, которые пользователь должен выполнить с помощью системы. Эти истории написаны простым языком и сосредоточены на том, что хочет сделать пользователь, а не на технических деталях реализации.&lt;/p&gt;
  &lt;p id=&quot;HZzV&quot;&gt;Каждая User Story обычно отвечает на вопрос: &amp;quot;Какую ценность хочет получить пользователь?&amp;quot;. Структура User Story обычно включает три компонента:&lt;/p&gt;
  &lt;ol id=&quot;j4Xz&quot;&gt;
    &lt;li id=&quot;OTD2&quot;&gt;&lt;strong&gt;Кто&lt;/strong&gt; — кто является пользователем?&lt;/li&gt;
    &lt;li id=&quot;k53i&quot;&gt;&lt;strong&gt;Что&lt;/strong&gt; — что пользователь хочет сделать?&lt;/li&gt;
    &lt;li id=&quot;FYZj&quot;&gt;&lt;strong&gt;Зачем&lt;/strong&gt; — зачем это нужно?&lt;/li&gt;
  &lt;/ol&gt;
  &lt;h5 id=&quot;yPzH&quot;&gt;Пример User Story:&lt;/h5&gt;
  &lt;p id=&quot;eTRz&quot;&gt;&lt;strong&gt;Как пользователь&lt;/strong&gt;, я хочу ввести свои учетные данные, чтобы получить доступ к личному кабинету.&lt;/p&gt;
  &lt;p id=&quot;fngb&quot;&gt;Это короткое и понятное описание, которое фокусируется на конечной цели пользователя, а не на шагах системы.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h4 id=&quot;R36y&quot;&gt;3. Ключевые различия&lt;/h4&gt;
  &lt;p id=&quot;DQVX&quot;&gt;Теперь давайте разберем &lt;strong&gt;основные отличия&lt;/strong&gt; между Use Case и User Stories.&lt;/p&gt;
  &lt;figure id=&quot;XeK6&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/f0/f5/f0f5fce1-0f75-49c9-94ac-0b956e2af942.png&quot; width=&quot;1050&quot; /&gt;
  &lt;/figure&gt;
  &lt;hr /&gt;
  &lt;h4 id=&quot;owQd&quot;&gt;4. Примеры для сравнения&lt;/h4&gt;
  &lt;p id=&quot;8Aya&quot;&gt;&lt;strong&gt;Use Case&lt;/strong&gt; для регистрации нового пользователя:&lt;/p&gt;
  &lt;ol id=&quot;ljrN&quot;&gt;
    &lt;li id=&quot;xpij&quot;&gt;&lt;strong&gt;Название&lt;/strong&gt;: Регистрация нового пользователя.&lt;/li&gt;
    &lt;li id=&quot;yK4M&quot;&gt;&lt;strong&gt;Актор&lt;/strong&gt;: Новый пользователь.&lt;/li&gt;
    &lt;li id=&quot;wcgs&quot;&gt;&lt;strong&gt;Цель&lt;/strong&gt;: Пользователь регистрируется в системе.&lt;/li&gt;
    &lt;li id=&quot;eFZF&quot;&gt;&lt;strong&gt;Шаги&lt;/strong&gt;:&lt;/li&gt;
    &lt;ol id=&quot;Pkpl&quot;&gt;
      &lt;li id=&quot;BbSc&quot;&gt;Пользователь вводит email.&lt;/li&gt;
      &lt;li id=&quot;a80L&quot;&gt;Пользователь создает пароль.&lt;/li&gt;
      &lt;li id=&quot;yPFl&quot;&gt;Пользователь подтверждает пароль.&lt;/li&gt;
      &lt;li id=&quot;NqRq&quot;&gt;Система проверяет правильность данных.&lt;/li&gt;
      &lt;li id=&quot;3q8D&quot;&gt;Система отправляет письмо для подтверждения email.&lt;/li&gt;
    &lt;/ol&gt;
  &lt;/ol&gt;
  &lt;p id=&quot;epq4&quot;&gt;&lt;strong&gt;User Story&lt;/strong&gt; для регистрации:&lt;/p&gt;
  &lt;p id=&quot;Pb8z&quot;&gt;&lt;strong&gt;Как новый пользователь&lt;/strong&gt;, я хочу зарегистрироваться в системе, чтобы получить доступ к личному кабинету.&lt;/p&gt;
  &lt;p id=&quot;F47R&quot;&gt;Видно, что &lt;strong&gt;Use Case&lt;/strong&gt; предоставляет намного больше деталей и шагов, описывающих процесс регистрации, в то время как &lt;strong&gt;User Story&lt;/strong&gt; просто определяет, что должен сделать пользователь и зачем.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h4 id=&quot;HdCb&quot;&gt;5. Когда использовать Use Case, а когда — User Stories?&lt;/h4&gt;
  &lt;ul id=&quot;D8BT&quot;&gt;
    &lt;li id=&quot;ipAy&quot;&gt;&lt;strong&gt;Use Case&lt;/strong&gt; лучше всего использовать, когда нужно подробно описать взаимодействие пользователя с системой. Это полезно на этапах проектирования сложных систем, где важны все шаги и исключительные случаи.&lt;/li&gt;
    &lt;li id=&quot;qRbh&quot;&gt;&lt;strong&gt;User Stories&lt;/strong&gt; больше подходят для гибких методологий разработки (например, Agile), где акцент делается на быстрых итерациях и минимальных требованиях. Они дают возможность команде сосредоточиться на потребностях пользователя, не вдаваясь в технические детали.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;hr /&gt;
  &lt;h4 id=&quot;CQcW&quot;&gt;Заключение&lt;/h4&gt;
  &lt;p id=&quot;KXUN&quot;&gt;В общем, &lt;strong&gt;Use Case&lt;/strong&gt; и &lt;strong&gt;User Stories&lt;/strong&gt; — это два разных инструмента для описания функциональности системы с точки зрения пользователя, но они применяются в разных ситуациях. &lt;strong&gt;Use Case&lt;/strong&gt; углубляется в технические детали и шаги, в то время как &lt;strong&gt;User Stories&lt;/strong&gt; помогают быстро зафиксировать пользовательские задачи в простом виде.&lt;/p&gt;
  &lt;p id=&quot;agWz&quot;&gt;Понимание различий между этими подходами поможет вам лучше выбирать подходящие методы для анализа и разработки вашего продукта.&lt;/p&gt;

</content></entry><entry><id>stoic_ftr:xsV8d9WQ86m</id><link rel="alternate" type="text/html" href="https://teletype.in/@stoic_ftr/xsV8d9WQ86m?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=stoic_ftr"></link><title>SOAP</title><published>2024-10-14T02:01:38.941Z</published><updated>2024-10-14T02:01:38.941Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img3.teletype.in/files/6e/1b/6e1bf702-1592-4ac3-b155-3204396e1e4e.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img2.teletype.in/files/5c/14/5c1475f4-399e-40f4-8bbf-f9c07b1f03a2.png&quot;&gt;SOAP (Simple Object Access Protocol) — это протокол обмена сообщениями, который используется для взаимодействия между различными приложениями по сети. В отличие от REST, который работает поверх HTTP и использует более гибкий подход, SOAP основывается на строгих стандартах и протоколах, что делает его надежным и безопасным, но более сложным в использовании.</summary><content type="html">
  &lt;figure id=&quot;guvr&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/5c/14/5c1475f4-399e-40f4-8bbf-f9c07b1f03a2.png&quot; width=&quot;900&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;9mlb&quot;&gt;SOAP (Simple Object Access Protocol) — это протокол обмена сообщениями, который используется для взаимодействия между различными приложениями по сети. В отличие от REST, который работает поверх HTTP и использует более гибкий подход, SOAP основывается на строгих стандартах и протоколах, что делает его надежным и безопасным, но более сложным в использовании.&lt;/p&gt;
  &lt;p id=&quot;Skm0&quot;&gt;Основные черты SOAP:&lt;/p&gt;
  &lt;ol id=&quot;6GIJ&quot;&gt;
    &lt;li id=&quot;7Zs7&quot;&gt;&lt;strong&gt;Формат сообщений&lt;/strong&gt; — все данные в SOAP передаются в формате XML. Это делает протокол независимым от платформы и языка программирования.&lt;/li&gt;
    &lt;li id=&quot;oka0&quot;&gt;&lt;strong&gt;Расширенные возможности&lt;/strong&gt; — SOAP поддерживает безопасность (например, шифрование сообщений) и транзакции, что важно для корпоративных решений.&lt;/li&gt;
    &lt;li id=&quot;xAQE&quot;&gt;&lt;strong&gt;Строгие стандарты&lt;/strong&gt; — SOAP имеет чётко определенные правила, которым необходимо следовать, что упрощает интеграцию в сложных системах.&lt;/li&gt;
    &lt;li id=&quot;i4H3&quot;&gt;&lt;strong&gt;Транспорт&lt;/strong&gt; — обычно SOAP передается через HTTP/HTTPS, но поддерживает и другие протоколы (например, SMTP).&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p id=&quot;Eltw&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;I2X6&quot;&gt;Пример SOAP-запроса:&lt;/h3&gt;
  &lt;p id=&quot;OOrl&quot;&gt;Представим, что нужно запросить информацию о температуре в городе с помощью SOAP. Ниже пример SOAP-запроса на получение текущей погоды.&lt;/p&gt;
  &lt;p id=&quot;wErX&quot;&gt;&lt;code&gt;POST /WeatherService HTTP/1.1&lt;br /&gt;Host: www.example.com&lt;br /&gt;Content-Type: text/xml; charset=utf-8&lt;br /&gt;Content-Length: length&lt;br /&gt;SOAPAction: &amp;quot;http://www.example.com/GetCityWeather&amp;quot;&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;qFPt&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;&amp;lt;soap:Envelope xmlns:soap=&amp;quot;&lt;a href=&quot;http://www.w3.org/2003/05/soap-envelope&quot; target=&quot;_blank&quot;&gt;http://www.w3.org/2003/05/soap-envelope&lt;/a&gt;&amp;quot;&lt;br /&gt;               xmlns:wea=&amp;quot;&lt;a href=&quot;http://www.example.com/weather&quot; target=&quot;_blank&quot;&gt;http://www.example.com/weather&lt;/a&gt;&amp;quot;&amp;gt;&lt;br /&gt;    &amp;lt;soap:Header/&amp;gt;&lt;br /&gt;    &amp;lt;soap:Body&amp;gt;&lt;br /&gt;        &amp;lt;wea:GetCityWeather&amp;gt;&lt;br /&gt;            &amp;lt;wea:CityName&amp;gt;New York&amp;lt;/wea:CityName&amp;gt;&lt;br /&gt;        &amp;lt;/wea:GetCityWeather&amp;gt;&lt;br /&gt;    &amp;lt;/soap:Body&amp;gt;&lt;br /&gt;&amp;lt;/soap:Envelope&amp;gt;&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;naLW&quot;&gt;Этот запрос отправляется на сервер, который работает с веб-сервисом погоды. В теле запроса (Body) передается параметр — название города (&amp;quot;New York&amp;quot;). Сервер получит запрос, обработает его и вернет ответ в формате SOAP с информацией о погоде.&lt;/p&gt;
  &lt;p id=&quot;iQAB&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;ichn&quot;&gt;Пример ответа от сервера:&lt;/h3&gt;
  &lt;p id=&quot;ud0d&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;&amp;lt;soap:Envelope xmlns:soap=&amp;quot;&lt;a href=&quot;http://www.w3.org/2003/05/soap-envelope&quot; target=&quot;_blank&quot;&gt;http://www.w3.org/2003/05/soap-envelope&lt;/a&gt;&amp;quot;&amp;gt;&lt;br /&gt;    &amp;lt;soap:Body&amp;gt;&lt;br /&gt;        &amp;lt;wea:GetCityWeatherResponse&amp;gt;&lt;br /&gt;            &amp;lt;wea:Temperature&amp;gt;22&amp;lt;/wea:Temperature&amp;gt;&lt;br /&gt;            &amp;lt;wea:Description&amp;gt;Sunny&amp;lt;/wea:Description&amp;gt;&lt;br /&gt;        &amp;lt;/wea:GetCityWeatherResponse&amp;gt;&lt;br /&gt;    &amp;lt;/soap:Body&amp;gt;&lt;br /&gt;&amp;lt;/soap:Envelope&amp;gt;&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;0XBm&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;WcPH&quot;&gt;Когда использовать SOAP?&lt;/h3&gt;
  &lt;p id=&quot;N7nH&quot;&gt;SOAP обычно используется в корпоративных системах, где важны безопасность, атомарность операций (транзакции) и строгие стандарты.&lt;/p&gt;
  &lt;h3 id=&quot;VItk&quot;&gt;&lt;br /&gt;Разница SOAP и REST&lt;/h3&gt;
  &lt;p id=&quot;dgJG&quot;&gt;Представьте, что REST и SOAP — это два разных способа, как приложения (например, Ваше и другое на сервере) могут «поговорить» друг с другом через интернет. Оба способа помогают передавать данные, но у них разные подходы, как именно это делать. Вот основные отличия:&lt;/p&gt;
  &lt;h3 id=&quot;CTgl&quot;&gt;1. &lt;strong&gt;Формат данных&lt;/strong&gt;&lt;/h3&gt;
  &lt;ul id=&quot;E1gy&quot;&gt;
    &lt;li id=&quot;Trvv&quot;&gt;&lt;strong&gt;REST&lt;/strong&gt;: Здесь вы можете использовать разные форматы данных: JSON, XML, текст и т.д. Чаще всего используется &lt;strong&gt;JSON&lt;/strong&gt;, потому что он легче для чтения и быстрее обрабатывается.&lt;/li&gt;
    &lt;li id=&quot;xdKB&quot;&gt;&lt;strong&gt;SOAP&lt;/strong&gt;: Всегда использует &lt;strong&gt;XML&lt;/strong&gt;. XML — это более сложный формат, который требует больше ресурсов на обработку.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;EIpS&quot;&gt;&lt;strong&gt;Пример:&lt;/strong&gt; REST может передавать данные так:&lt;/p&gt;
  &lt;p id=&quot;7IQ3&quot;&gt;&lt;code&gt;{&lt;br /&gt;  &amp;quot;city&amp;quot;: &amp;quot;New York&amp;quot;,&lt;br /&gt;  &amp;quot;temperature&amp;quot;: 22&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;А SOAP передаёт их так:&lt;/p&gt;
  &lt;p id=&quot;UMY3&quot;&gt;&lt;code&gt;&amp;lt;weather&amp;gt;&lt;br /&gt;  &amp;lt;city&amp;gt;New York&amp;lt;/city&amp;gt;&lt;br /&gt;  &amp;lt;temperature&amp;gt;22&amp;lt;/temperature&amp;gt;&lt;br /&gt;&amp;lt;/weather&amp;gt;&lt;/code&gt;&lt;/p&gt;
  &lt;h3 id=&quot;hV7g&quot;&gt;2. &lt;strong&gt;Простота использования&lt;/strong&gt;&lt;/h3&gt;
  &lt;ul id=&quot;pJLj&quot;&gt;
    &lt;li id=&quot;ET7I&quot;&gt;&lt;strong&gt;REST&lt;/strong&gt;: Простой и гибкий. Его легко учить и использовать, потому что он использует стандартные HTTP-запросы (GET, POST, PUT, DELETE), как когда ты открываешь сайт в браузере.&lt;/li&gt;
    &lt;li id=&quot;8Jlz&quot;&gt;&lt;strong&gt;SOAP&lt;/strong&gt;: Сложнее, потому что требует строгих стандартов и правил. У SOAP больше &amp;quot;формальностей&amp;quot;, и тебе нужно писать больше кода, чтобы работать с ним.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;h3 id=&quot;lOff&quot;&gt;3. &lt;strong&gt;Легкость и скорость&lt;/strong&gt;&lt;/h3&gt;
  &lt;ul id=&quot;8G9y&quot;&gt;
    &lt;li id=&quot;leGL&quot;&gt;&lt;strong&gt;REST&lt;/strong&gt;: Быстрее и легче, потому что обычно работает с JSON, а JSON — это маленькие и лёгкие данные. REST лучше для веб-приложений и мобильных приложений, где скорость важна.&lt;/li&gt;
    &lt;li id=&quot;fsVi&quot;&gt;&lt;strong&gt;SOAP&lt;/strong&gt;: Более медленный и тяжелый из-за использования XML и дополнительных проверок. Его чаще используют в больших корпорациях, где важна безопасность и надёжность.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;h3 id=&quot;4ElW&quot;&gt;4. &lt;strong&gt;Безопасность&lt;/strong&gt;&lt;/h3&gt;
  &lt;ul id=&quot;ormj&quot;&gt;
    &lt;li id=&quot;SyE6&quot;&gt;&lt;strong&gt;REST&lt;/strong&gt;: Для безопасности REST полагается на механизмы HTTPS (шифрование данных). Безопасность в REST проще, но она не встроена в сам протокол.&lt;/li&gt;
    &lt;li id=&quot;wwjJ&quot;&gt;&lt;strong&gt;SOAP&lt;/strong&gt;: Имеет встроенные механизмы безопасности. SOAP поддерживает &lt;strong&gt;WS-Security&lt;/strong&gt;, что делает его более подходящим для банковских и финансовых приложений.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;h3 id=&quot;xSkv&quot;&gt;5. &lt;strong&gt;Когда использовать&lt;/strong&gt;&lt;/h3&gt;
  &lt;ul id=&quot;BDqV&quot;&gt;
    &lt;li id=&quot;nHEB&quot;&gt;&lt;strong&gt;REST&lt;/strong&gt;: Подходит, когда Вам нужно быстро обмениваться данными и когда важна производительность. Например, REST часто используют для мобильных приложений и социальных сетей.&lt;/li&gt;
    &lt;li id=&quot;1ebC&quot;&gt;&lt;strong&gt;SOAP&lt;/strong&gt;: Используется там, где требуется строгий контроль, безопасность и стандарты. Это часто корпоративные системы, финансовые приложения или когда нужно поддерживать сложные транзакции.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;h3 id=&quot;6zqy&quot;&gt;Пример разницы в запросах:&lt;/h3&gt;
  &lt;p id=&quot;So37&quot;&gt;&lt;strong&gt;REST&lt;/strong&gt;-запрос может выглядеть так:&lt;/p&gt;
  &lt;p id=&quot;tZcD&quot; data-align=&quot;center&quot;&gt;&lt;code&gt;GET http://example.com/weather?city=NewYork&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;gdZZ&quot;&gt;Ты просто отправляешь URL и сервер возвращает тебе данные.&lt;/p&gt;
  &lt;p id=&quot;JxU7&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;lHHa&quot;&gt;&lt;strong&gt;SOAP&lt;/strong&gt;-запрос будет намного сложнее, с XML:&lt;/p&gt;
  &lt;p id=&quot;Mo3y&quot;&gt;&lt;code&gt;&amp;lt;soap:Envelope xmlns:soap=&amp;quot;&lt;a href=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot; target=&quot;_blank&quot;&gt;http://schemas.xmlsoap.org/soap/envelope/&lt;/a&gt;&amp;quot;&amp;gt;&lt;br /&gt;  &amp;lt;soap:Body&amp;gt;&lt;br /&gt;    &amp;lt;GetWeather&amp;gt;&lt;br /&gt;      &amp;lt;CityName&amp;gt;New York&amp;lt;/CityName&amp;gt;&lt;br /&gt;    &amp;lt;/GetWeather&amp;gt;&lt;br /&gt;  &amp;lt;/soap:Body&amp;gt;&lt;br /&gt;&amp;lt;/soap:Envelope&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;/p&gt;
  &lt;h3 id=&quot;jFnl&quot;&gt;Основная разница:&lt;/h3&gt;
  &lt;ul id=&quot;Va9C&quot;&gt;
    &lt;li id=&quot;I4Bh&quot;&gt;&lt;strong&gt;REST&lt;/strong&gt; — это быстрый и простой способ обмениваться данными, часто используется в современных приложениях.&lt;/li&gt;
    &lt;li id=&quot;16Zx&quot;&gt;&lt;strong&gt;SOAP&lt;/strong&gt; — это более сложный, но надёжный способ, который подходит для серьезных корпоративных систем, где важны безопасность и стандарты.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;4WMc&quot;&gt;Таким образом, если Вам нужно быстро обмениваться данными и использовать гибкие форматы — REST отличный вариант. А если требуется строгая безопасность и надёжность — это случай для SOAP.&lt;/p&gt;

</content></entry><entry><id>stoic_ftr:5t4UP4M1Uzo</id><link rel="alternate" type="text/html" href="https://teletype.in/@stoic_ftr/5t4UP4M1Uzo?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=stoic_ftr"></link><title>REST, JSON</title><published>2024-10-10T07:50:02.809Z</published><updated>2024-10-10T07:50:02.809Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img2.teletype.in/files/10/32/10322737-4ca0-445f-aad5-e424c2893296.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img2.teletype.in/files/d7/71/d7716b33-4b31-42e5-b3f4-b1976b10f857.png&quot;&gt;Сегодня мы поговорим о REST и JSON — ключевых понятиях в мире веб-разработки. Эти технологии позволяют создавать современные приложения, которые легко взаимодействуют друг с другом.</summary><content type="html">
  &lt;figure id=&quot;GGhE&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/d7/71/d7716b33-4b31-42e5-b3f4-b1976b10f857.png&quot; width=&quot;1124&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;cuJm&quot;&gt;Сегодня мы поговорим о REST и JSON — ключевых понятиях в мире веб-разработки. Эти технологии позволяют создавать современные приложения, которые легко взаимодействуют друг с другом.&lt;br /&gt;&lt;/p&gt;
  &lt;h4 id=&quot;oe0s&quot;&gt;Что такое REST?&lt;/h4&gt;
  &lt;p id=&quot;tZ0M&quot;&gt;REST (Representational State Transfer) — это архитектурный стиль, который используется для создания веб-сервисов. Если говорить простым языком, REST определяет, как должны взаимодействовать разные компоненты в сети (например, клиент и сервер).&lt;/p&gt;
  &lt;p id=&quot;Hs1Z&quot;&gt;REST работает через HTTP — тот же самый протокол, который используется для просмотра веб-страниц. Веб-сервис по принципу REST позволяет клиенту запрашивать информацию или выполнять действия с помощью стандартных запросов. Сюда входят такие команды, как GET, POST, PUT, PATCH и DELETE.&lt;br /&gt;&lt;/p&gt;
  &lt;h4 id=&quot;3IDG&quot;&gt;Типы HTTP-запросов&lt;/h4&gt;
  &lt;p id=&quot;7eLa&quot;&gt;Давайте разберёмся, что делают основные типы запросов в REST:&lt;/p&gt;
  &lt;ul id=&quot;R88H&quot;&gt;
    &lt;li id=&quot;VGJP&quot;&gt;&lt;strong&gt;GET&lt;/strong&gt; — запрашивает данные с сервера. Это как запрос информации, например, получение списка товаров в магазине.&lt;/li&gt;
    &lt;li id=&quot;eDKI&quot;&gt;&lt;strong&gt;POST&lt;/strong&gt; — отправляет новые данные на сервер. Этот запрос используют, когда ты регистрируешься на сайте или добавляешь новый товар.&lt;/li&gt;
    &lt;li id=&quot;P6gW&quot;&gt;&lt;strong&gt;PUT&lt;/strong&gt; — обновляет существующие данные. Здесь нужно передать все данные объекта, который ты обновляешь.&lt;/li&gt;
    &lt;li id=&quot;0SM7&quot;&gt;&lt;strong&gt;PATCH&lt;/strong&gt; — обновляет часть данных объекта. Например, если нужно изменить только цену товара, но не все данные.&lt;/li&gt;
    &lt;li id=&quot;BLnL&quot;&gt;&lt;strong&gt;DELETE&lt;/strong&gt; — удаляет данные с сервера. Этот запрос удаляет конкретный объект, как, например, удаление товара из корзины.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;jhvT&quot;&gt;&lt;/p&gt;
  &lt;h4 id=&quot;rcTU&quot;&gt;Идемпотентность&lt;/h4&gt;
  &lt;p id=&quot;HQWU&quot;&gt;Идемпотентность — это сложное слово для простой идеи. Оно означает, что результат операции не изменится, если её выполнить несколько раз подряд.&lt;/p&gt;
  &lt;p id=&quot;vPGc&quot;&gt;Пример: если вы делаете запрос &lt;strong&gt;GET&lt;/strong&gt;, чтобы получить список товаров, сколько бы раз вы это ни сделали — результат будет одинаковым. То же самое с &lt;strong&gt;PUT&lt;/strong&gt;: обновление информации о товаре не изменится, если повторить операцию с теми же данными. &lt;strong&gt;POST&lt;/strong&gt; обычно не идемпотентен, потому что при каждом запросе создаётся новый ресурс (например, новый аккаунт пользователя).&lt;/p&gt;
  &lt;p id=&quot;woj9&quot;&gt;&lt;/p&gt;
  &lt;h4 id=&quot;m8Pl&quot;&gt;Что такое JSON?&lt;/h4&gt;
  &lt;p id=&quot;ZZX9&quot;&gt;JSON (JavaScript Object Notation) — это текстовый формат для передачи данных между клиентом и сервером. JSON прост в использовании и чтении человеком. Он похож на объекты в языке JavaScript и состоит из ключей и значений:&lt;/p&gt;
  &lt;p id=&quot;hsrr&quot;&gt;&lt;code&gt;{&lt;br /&gt;  &amp;quot;name&amp;quot;: &amp;quot;John&amp;quot;,&lt;br /&gt;  &amp;quot;age&amp;quot;: 25,&lt;br /&gt;  &amp;quot;isStudent&amp;quot;: true&lt;br /&gt;}&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;Jrxs&quot;&gt;JSON используют для передачи данных в веб-приложениях. Например, когда вы запрашиваете данные о пользователе, сервер может вернуть ответ в формате JSON.&lt;/p&gt;
  &lt;p id=&quot;OTzH&quot;&gt;&lt;/p&gt;
  &lt;h4 id=&quot;PVKR&quot;&gt;Что такое XML?&lt;/h4&gt;
  &lt;p id=&quot;S87E&quot;&gt;XML (Extensible Markup Language) — это другой формат для передачи данных. Он более сложный, чем JSON, и выглядит как HTML:&lt;/p&gt;
  &lt;p id=&quot;Yt6H&quot;&gt;&lt;code&gt;&amp;lt;user&amp;gt;&lt;br /&gt;  &amp;lt;name&amp;gt;John&amp;lt;/name&amp;gt;&lt;br /&gt;  &amp;lt;age&amp;gt;25&amp;lt;/age&amp;gt;&lt;br /&gt;  &amp;lt;isStudent&amp;gt;true&amp;lt;/isStudent&amp;gt;&lt;br /&gt;&amp;lt;/user&amp;gt;&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;kG7a&quot;&gt;XML использовался до того, как стал популярен JSON. Он до сих пор встречается, но из-за своей громоздкости уступает JSON.&lt;/p&gt;
  &lt;p id=&quot;DwNv&quot;&gt;&lt;/p&gt;
  &lt;h4 id=&quot;BFXv&quot;&gt;Разница между PUT и PATCH&lt;/h4&gt;
  &lt;p id=&quot;o1A4&quot;&gt;Оба этих запроса используются для обновления данных, но они работают по-разному:&lt;/p&gt;
  &lt;ul id=&quot;9rcy&quot;&gt;
    &lt;li id=&quot;XbOL&quot;&gt;&lt;strong&gt;PUT&lt;/strong&gt; требует, чтобы вы отправили полный объект с новыми данными. Например, если вы обновляете товар, нужно передать все его данные, даже те, которые не изменились.&lt;/li&gt;
    &lt;li id=&quot;Vrvs&quot;&gt;&lt;strong&gt;PATCH&lt;/strong&gt; позволяет обновить только часть данных. Например, если нужно поменять только цену товара, а не все его свойства.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;uh60&quot;&gt;Представьте, что у вас есть объект товара:&lt;/p&gt;
  &lt;p id=&quot;MrXs&quot;&gt;&lt;code&gt;{&lt;br /&gt;  &amp;quot;id&amp;quot;: 1,&lt;br /&gt;  &amp;quot;name&amp;quot;: &amp;quot;Laptop&amp;quot;,&lt;br /&gt;  &amp;quot;price&amp;quot;: 1000&lt;br /&gt;}&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;A5YX&quot;&gt;&lt;strong&gt;PUT&lt;/strong&gt; потребует, чтобы вы отправили весь объект:&lt;/p&gt;
  &lt;p id=&quot;baEd&quot;&gt;&lt;code&gt;{&lt;br /&gt;  &amp;quot;id&amp;quot;: 1,&lt;br /&gt;  &amp;quot;name&amp;quot;: &amp;quot;Laptop&amp;quot;,&lt;br /&gt;  &amp;quot;price&amp;quot;: 900&lt;br /&gt;}&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;2LYG&quot;&gt;&lt;strong&gt;PATCH&lt;/strong&gt; позволит отправить только изменённые данные:&lt;/p&gt;
  &lt;p id=&quot;RLyu&quot;&gt;&lt;code&gt;{&lt;br /&gt;  &amp;quot;price&amp;quot;: 900&lt;br /&gt;}&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;nTSJ&quot;&gt;&lt;/p&gt;
  &lt;h4 id=&quot;4xhl&quot;&gt;Как передать картинку в REST?&lt;/h4&gt;
  &lt;p id=&quot;VqoJ&quot;&gt;Картинки и файлы в REST-сервисах передаются обычно через POST-запрос. Чтобы передать файл, используют формат &lt;strong&gt;multipart/form-data&lt;/strong&gt;. Это особый формат, который позволяет передавать как текстовые данные, так и бинарные файлы.&lt;/p&gt;
  &lt;p id=&quot;TAP5&quot;&gt;Пример отправки изображения:&lt;/p&gt;
  &lt;p id=&quot;QRKw&quot;&gt;&lt;code&gt;POST /upload HTTP/1.1&lt;br /&gt;Host: example.com&lt;br /&gt;Content-Type: multipart/form-data; boundary=boundary123&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;9ghE&quot;&gt;&lt;code&gt;--boundary123&lt;br /&gt;Content-Disposition: form-data; name=&amp;quot;image&amp;quot;; filename=&amp;quot;photo.jpg&amp;quot;&lt;br /&gt;Content-Type: image/jpeg&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;El4u&quot;&gt;&lt;code&gt;&amp;lt;файл-картинка&amp;gt;&lt;br /&gt;--boundary123— &lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;PkMq&quot;&gt;&lt;/p&gt;
  &lt;h4 id=&quot;1DWr&quot;&gt;Пример работы REST&lt;/h4&gt;
  &lt;p id=&quot;csmg&quot;&gt;Давайте рассмотрим, как работает REST на примере интернет-магазина.&lt;/p&gt;
  &lt;blockquote id=&quot;Khxb&quot;&gt;1. Вы отправляете &lt;strong&gt;GET&lt;/strong&gt;-запрос на сервер, чтобы получить список товаров:&lt;/blockquote&gt;
  &lt;p id=&quot;UMGJ&quot;&gt;&lt;code&gt;GET /products&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;3Zya&quot;&gt;Сервер отвечает:&lt;/p&gt;
  &lt;p id=&quot;y9Lx&quot;&gt;&lt;code&gt;[&lt;br /&gt;  {&amp;quot;id&amp;quot;: 1, &amp;quot;name&amp;quot;: &amp;quot;Laptop&amp;quot;, &amp;quot;price&amp;quot;: 1000},&lt;br /&gt;  {&amp;quot;id&amp;quot;: 2, &amp;quot;name&amp;quot;: &amp;quot;Phone&amp;quot;, &amp;quot;price&amp;quot;: 500}&lt;br /&gt;]&lt;/code&gt;&lt;/p&gt;
  &lt;blockquote id=&quot;fWyh&quot;&gt;2. Вы хотите добавить новый товар. Для этого отправляется &lt;strong&gt;POST&lt;/strong&gt;-запрос:&lt;/blockquote&gt;
  &lt;p id=&quot;Psww&quot;&gt;&lt;code&gt;POST /products&lt;/code&gt;&lt;br /&gt;Данные, которые ты отправляешь:&lt;/p&gt;
  &lt;p id=&quot;CV76&quot;&gt;&lt;code&gt;{&lt;br /&gt;  &amp;quot;name&amp;quot;: &amp;quot;Tablet&amp;quot;,&lt;br /&gt;  &amp;quot;price&amp;quot;: 700&lt;br /&gt;}&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;g6u7&quot;&gt;Сервер создаёт новый товар и возвращает его данные:&lt;/p&gt;
  &lt;p id=&quot;2fAC&quot;&gt;&lt;code&gt;{&lt;br /&gt;  &amp;quot;id&amp;quot;: 3,&lt;br /&gt;  &amp;quot;name&amp;quot;: &amp;quot;Tablet&amp;quot;,&lt;br /&gt;  &amp;quot;price&amp;quot;: 700&lt;br /&gt;}&lt;/code&gt;&lt;/p&gt;
  &lt;blockquote id=&quot;GjAt&quot;&gt;3. Если нужно изменить цену товара, отправляешь &lt;strong&gt;PATCH&lt;/strong&gt;-запрос:&lt;/blockquote&gt;
  &lt;p id=&quot;KYJg&quot;&gt;&lt;code&gt;PATCH /products/3&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;BNH3&quot;&gt;Данные для обновления:&lt;/p&gt;
  &lt;p id=&quot;fO5y&quot;&gt;&lt;code&gt;{&lt;br /&gt;  &amp;quot;price&amp;quot;: 650&lt;br /&gt;}&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;TInD&quot;&gt;Сервер обновляет цену товара и отвечает:&lt;/p&gt;
  &lt;p id=&quot;4fog&quot;&gt;&lt;code&gt;{&lt;br /&gt;  &amp;quot;id&amp;quot;: 3,&lt;br /&gt;  &amp;quot;name&amp;quot;: &amp;quot;Tablet&amp;quot;,&lt;br /&gt;  &amp;quot;price&amp;quot;: 650&lt;br /&gt;}&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;lLBz&quot;&gt;&lt;/p&gt;
  &lt;h4 id=&quot;TSMr&quot;&gt;Что такое timestamp?&lt;/h4&gt;
  &lt;p id=&quot;9Nst&quot;&gt;&lt;strong&gt;Timestamp&lt;/strong&gt; — это отметка времени, которая используется для фиксации даты и времени события. В REST timestamp часто используется для отображения времени создания или обновления данных.&lt;/p&gt;
  &lt;p id=&quot;mFBf&quot;&gt;Пример timestamp: &lt;code&gt;2024-10-10T12:34:56Z&lt;/code&gt;. Здесь:&lt;/p&gt;
  &lt;ul id=&quot;oYIm&quot;&gt;
    &lt;li id=&quot;UlHW&quot;&gt;&lt;code&gt;2024-10-10&lt;/code&gt; — дата (год-месяц-день),&lt;/li&gt;
    &lt;li id=&quot;65Sl&quot;&gt;&lt;code&gt;T&lt;/code&gt; — разделитель между датой и временем,&lt;/li&gt;
    &lt;li id=&quot;ZqJD&quot;&gt;&lt;code&gt;12:34:56&lt;/code&gt; — время (часы:минуты:секунды),&lt;/li&gt;
    &lt;li id=&quot;Jibg&quot;&gt;&lt;code&gt;Z&lt;/code&gt; — это символ времени по Гринвичу (UTC).&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;imen&quot;&gt;&lt;/p&gt;
  &lt;h4 id=&quot;vCmj&quot;&gt;Заключение&lt;/h4&gt;
  &lt;p id=&quot;8UWX&quot;&gt;REST и JSON — это основа современных веб-приложений. REST описывает, как клиент и сервер должны взаимодействовать, а JSON помогает передавать данные в понятном виде. HTTP-запросы, такие как GET, POST, PUT, PATCH и DELETE, позволяют выполнять основные операции с данными. XML — старый формат, который используется реже. А идемпотентность — это свойство запросов, которое гарантирует одинаковый результат при повторении операции.&lt;/p&gt;

</content></entry></feed>