<?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><subtitle>Компания с гибким подходом к работе, инновационными проектами, технологичными решениями и яркой корпоративной культурой</subtitle><author><name>Совкомбанк Технологии</name></author><id>https://teletype.in/atom/scbt</id><link rel="self" type="application/atom+xml" href="https://teletype.in/atom/scbt?offset=0"></link><link rel="alternate" type="text/html" href="https://teletype.in/@scbt?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=scbt"></link><link rel="next" type="application/rss+xml" href="https://teletype.in/atom/scbt?offset=10"></link><link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></link><updated>2026-05-14T10:20:17.231Z</updated><entry><id>scbt:docks</id><link rel="alternate" type="text/html" href="https://teletype.in/@scbt/docks?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=scbt"></link><title>Документы при приёме на работу: обязательные и дополнительные</title><published>2023-10-04T11:43:08.807Z</published><updated>2025-03-17T07:06:19.828Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img1.teletype.in/files/c8/6e/c86ef1ef-7807-45d5-9eb7-a50279fea63f.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img3.teletype.in/files/21/d7/21d7b6dd-26f2-4959-b4f3-a023a5ed06c1.png&quot;&gt;Привет, наш будущий коллега! Очень рады, что ты скоро присоединишься к команде Совкомбанк Технологии.</summary><content type="html">
  &lt;p id=&quot;3XrR&quot;&gt;Привет, наш будущий коллега! Очень рады, что ты скоро присоединишься к команде Совкомбанк Технологии. &lt;/p&gt;
  &lt;p id=&quot;jgOx&quot;&gt;При приёме на работу нужно предоставить определённые документы. Список таких бумаг небольшой. Более того, бегать по разным инстанциям и собирать их не нужно: как правило, они всегда при себе или спокойно лежат дома.&lt;/p&gt;
  &lt;p id=&quot;zpdr&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;Bgjq&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/21/d7/21d7b6dd-26f2-4959-b4f3-a023a5ed06c1.png&quot; width=&quot;1200&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;KPPi&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;ngTG&quot;&gt;Чтобы закончить твоё оформление в нашу компанию, необходимо предоставить определенные документы, список которых приведен ниже 👇&lt;/p&gt;
  &lt;p id=&quot;0EqI&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;DRWs&quot;&gt;Ждём от тебя сканы или фото: &lt;/h2&gt;
  &lt;section style=&quot;background-color:hsl(hsl(323, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h3 id=&quot;wnZk&quot;&gt;&lt;strong&gt;Паспорт (при отсутствии - временное удостоверение) &lt;/strong&gt;&lt;/h3&gt;
    &lt;p id=&quot;lFIA&quot;&gt;Понадобятся цветные фото полных разворотов страниц, в том числе если страницы &lt;strong&gt;пустые&lt;/strong&gt;: &lt;br /&gt;2-3 стр. - фото;&lt;br /&gt;4-5 стр. - регистрация;&lt;br /&gt;12-13 стр. - воинская обязанность;&lt;br /&gt;14-15 стр. - семейное положение;&lt;br /&gt;16-17 стр. - дети;&lt;br /&gt;18-19 стр. - сведения о ранее выданных паспортах.&lt;/p&gt;
  &lt;/section&gt;
  &lt;section style=&quot;background-color:hsl(hsl(323, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h3 id=&quot;iRwl&quot;&gt;&lt;strong&gt;СНИЛС/АДИ-РЕГ&lt;/strong&gt;&lt;/h3&gt;
    &lt;p id=&quot;D8nF&quot;&gt;Подойдёт цветное фото одного из документов:&lt;br /&gt;- СНИЛС (зеленая карточка);&lt;br /&gt;- АДИ-РЕГ с подписью и печатью СФР;&lt;br /&gt;- Скрин карточки Страхового Свидетельства Обязательного Пенсионного Страхования из &lt;u&gt;мобильного приложения &lt;/u&gt;Госуслуг.&lt;/p&gt;
  &lt;/section&gt;
  &lt;section style=&quot;background-color:hsl(hsl(323, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h3 id=&quot;y2aR&quot;&gt;&lt;strong&gt;ИНН&lt;/strong&gt;&lt;/h3&gt;
    &lt;p id=&quot;vUtX&quot;&gt;- Если есть бумажная версия, то понадобится цветное фото полной страницы документа.&lt;br /&gt;- Если нет, то подойдёт скриншот полной страницы браузера с Госуслуг или ФНС (&lt;a href=&quot;https://service.nalog.ru/inn.do&quot; target=&quot;_blank&quot;&gt;https://service.nalog.ru/inn.do&lt;/a&gt;). Главное, чтобы хорошо читались номер ИНН и твои ФИО.&lt;/p&gt;
  &lt;/section&gt;
  &lt;section style=&quot;background-color:hsl(hsl(323, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h3 id=&quot;TsZJ&quot;&gt;&lt;strong&gt;Документ(ы) об образовании/квалификации&lt;/strong&gt;&lt;/h3&gt;
    &lt;p id=&quot;EgDW&quot;&gt;Необходимы цветные фото документа о последнем законченном образовании:&lt;/p&gt;
    &lt;p id=&quot;NAcz&quot;&gt;- Диплом(ы) &lt;u&gt;без вкладыша&lt;/u&gt; с оценками (последний или все, если один из них IT);&lt;br /&gt;- Аттестат &lt;u&gt;без вкладыша&lt;/u&gt; с оценками;&lt;br /&gt;- Справка с места учёбы, если еще учишься в ВУЗе. Оригинал понадобится в день приема на работу.&lt;/p&gt;
  &lt;/section&gt;
  &lt;section style=&quot;background-color:hsl(hsl(323, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h3 id=&quot;3pbM&quot;&gt;&lt;strong&gt;Документы воинского учета&lt;/strong&gt;&lt;/h3&gt;
    &lt;ul id=&quot;Cf9x&quot;&gt;
      &lt;li id=&quot;UBWV&quot;&gt;&lt;strong&gt;Для военнообязанных&lt;/strong&gt; – военный билет или временное удостоверение/справка, выданные взамен военного билета. &lt;br /&gt;Необходимы цветные фото &lt;strong&gt;всех страниц&lt;/strong&gt;, где имеются записи:&lt;br /&gt;страница с фото, прохождение службы, воинское звание, состав, категория годности, ВУС, постановка на воинский учет.&lt;/li&gt;
      &lt;li id=&quot;3VYO&quot;&gt;&lt;strong&gt;Для призывников&lt;/strong&gt; – удостоверение гражданина, подлежащего призыву на военную службу (приписное удостоверение). Необходимы цветные фото всех страниц документа.                                                                                                            &lt;strong&gt;Для получения отсрочки&lt;/strong&gt; (при попадании под критерии Минцифры) - фото (позже оригинал) &lt;strong&gt;справки с предыдущих мест работы&lt;/strong&gt; из аккредитованных ИТ-компаний за год до начала призывной кампании (с подтверждением аккредитации).&lt;/li&gt;
    &lt;/ul&gt;
    &lt;p id=&quot;5TGx&quot;&gt;* &lt;em&gt;Возраст призывников с 01 января 2024 г. - 30 лет включительно&lt;/em&gt;.&lt;/p&gt;
  &lt;/section&gt;
  &lt;section style=&quot;background-color:hsl(hsl(323, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h3 id=&quot;2Kyp&quot;&gt;&lt;strong&gt;Трудовая книжка / СТД-Р&lt;/strong&gt;&lt;/h3&gt;
    &lt;p id=&quot;u1Av&quot;&gt;- Скан/фото всех заполненных страниц трудовой книжки и &lt;u&gt;следующая пустая страница &lt;/u&gt;&lt;strong&gt;плюс справка СТД-Р&lt;/strong&gt; &lt;u&gt;с отметкой об увольнении&lt;/u&gt;(если есть ЭТК).&lt;/p&gt;
    &lt;ul id=&quot;5saz&quot;&gt;
      &lt;li id=&quot;hVIA&quot;&gt;Сотрудник, который впервые трудоустраивается – ТК предоставлять не нужно.&lt;/li&gt;
      &lt;li id=&quot;B3xH&quot;&gt;Совместитель - заверенная копия трудовой книжки. Если ведется ЭТК, то справка СТД-ПФР и копия ТК.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/section&gt;
  &lt;section style=&quot;background-color:hsl(hsl(323, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h3 id=&quot;CptC&quot;&gt;&lt;strong&gt;Справка СТД-ПФР&lt;/strong&gt;&lt;/h3&gt;
    &lt;p id=&quot;b70f&quot;&gt;Её можно запросить на Госуслугах после увольнения с твоего предыдущего места работы. Понадобится электронная версия справки.&lt;/p&gt;
  &lt;/section&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h3 id=&quot;meVU&quot;&gt;&lt;strong&gt;Документы, которые необходимо предоставить &lt;u&gt;при наличии&lt;/u&gt;:&lt;/strong&gt;&lt;/h3&gt;
    &lt;ul id=&quot;iEby&quot;&gt;
      &lt;li id=&quot;JLx8&quot;&gt;&lt;strong&gt;Свидетельства о браке/расторжении брака&lt;/strong&gt;&lt;br /&gt;Цветное фото полной страницы документа.&lt;/li&gt;
      &lt;li id=&quot;wJ88&quot;&gt;&lt;strong&gt;Свидетельство о рождении/усыновлении (удочерении) детей*. &lt;/strong&gt; Цветное фото полной страницы документа.&lt;/li&gt;
    &lt;/ul&gt;
    &lt;p id=&quot;Qf1z&quot;&gt;*&lt;em&gt;Документ предоставляется до 24 лет при обучении детей на очной форме обучения, если планируешь оформление налогового вычета.&lt;/em&gt;&lt;/p&gt;
  &lt;/section&gt;
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h3 id=&quot;zwWN&quot;&gt;&lt;strong&gt;Документы, которые мы &lt;u&gt;рекомендуем &lt;/u&gt;предоставить &lt;br /&gt;при их наличии:&lt;/strong&gt;&lt;/h3&gt;
    &lt;ul id=&quot;F7t6&quot;&gt;
      &lt;li id=&quot;NiKC&quot;&gt;&lt;strong&gt;Справка (№ 1031н) &lt;/strong&gt;медико-социальной экспертизы с указанием группы инвалидности и степени ограничения способности к трудовой деятельности и &lt;strong&gt;индивидуальная программа реабилитации (№ 545н). &lt;/strong&gt;Понадобятся скан/фото всех листов со всех сторон.&lt;/li&gt;
      &lt;li id=&quot;oJjj&quot;&gt;Фотография &lt;strong&gt;жетона с личным номером&lt;/strong&gt; при наличии в военном билете соответствующей отметки о его присвоении.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/section&gt;
  &lt;section style=&quot;background-color:hsl(hsl(323, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h3 id=&quot;IVrQ&quot;&gt;&lt;strong&gt;Твоё фото 200*200 px&lt;/strong&gt;&lt;/h3&gt;
    &lt;p id=&quot;90gh&quot;&gt;Мы хотим поскорее познакомить тебя со всеми твоими новыми коллегами, поэтому делаем внутренние рассылки про всех новичков, которые к нам присоединились.&lt;/p&gt;
  &lt;/section&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h3 id=&quot;a7JG&quot;&gt;&lt;strong&gt;&lt;u&gt;Что дальше:&lt;/u&gt;&lt;/strong&gt;&lt;/h3&gt;
    &lt;p id=&quot;6QxC&quot;&gt;Сканы или фото документов отправь на почту рекрутеру из Совкомбанк Технологии или сотруднику, помогающему с оформлением на работу. &lt;br /&gt;Также подойдет ссылка на Google/Яндекс диск, откуда можно скачать сканы/фото документов.&lt;/p&gt;
    &lt;p id=&quot;az4W&quot;&gt;Документы из списка нужно отправить &lt;strong&gt;как можно раньше&lt;/strong&gt;, трудовую книжку можно прислать за 1&lt;u&gt; рабочий день до даты приема (до 12.00&lt;/u&gt;).&lt;/p&gt;
  &lt;/section&gt;
  &lt;section style=&quot;background-color:hsl(hsl(55,  86%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h3 id=&quot;t7mj&quot;&gt;&lt;strong&gt;&lt;u&gt;В день приема:&lt;/u&gt;&lt;/strong&gt;&lt;/h3&gt;
    &lt;p id=&quot;GM41&quot;&gt;Предоставь в отдел кадров все оригиналы документов из списка. &lt;br /&gt;До встречи в команде, мы ждём тебя! 👋&lt;/p&gt;
  &lt;/section&gt;
  &lt;h3 id=&quot;xx8U&quot;&gt;&lt;/h3&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;jJri&quot;&gt;Больше про нас и разные полезности в наши соцсетях:&lt;br /&gt;&lt;br /&gt;Телеграм — &lt;a href=&quot;https://t.me/sovcom_tech&quot; target=&quot;_blank&quot;&gt;https://t.me/sovcom_tech&lt;/a&gt;&lt;br /&gt;ВКонтакте — &lt;a href=&quot;https://vk.com/sovcom_tech&quot; target=&quot;_blank&quot;&gt;https://vk.com/sovcom_tech&lt;/a&gt;&lt;br /&gt;Нельзяграм — &lt;a href=&quot;https://instagram.com/sovcomtech&quot; target=&quot;_blank&quot;&gt;https://instagram.com/sovcomtech&lt;/a&gt;&lt;/p&gt;

</content></entry><entry><id>scbt:km2fllFgVWx</id><link rel="alternate" type="text/html" href="https://teletype.in/@scbt/km2fllFgVWx?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=scbt"></link><title>Привет, давай знакомиться 👋</title><published>2023-09-22T05:05:09.253Z</published><updated>2024-09-19T10:20:30.852Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img1.teletype.in/files/09/d7/09d74064-cc47-461b-80b6-250ed399f190.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img3.teletype.in/files/a5/01/a501c6fa-9c13-42ff-9293-f2a2224a5401.png&quot;&gt;Мы — Совкомбанк Технологии. Аккредитованная ИТ-компания Группы Совкомбанк. Каждый день развиваем сервисы и приложения, которыми пользуются миллионы людей и мы сами.</summary><content type="html">
  &lt;p id=&quot;f5XZ&quot;&gt;Мы — Совкомбанк Технологии. Аккредитованная ИТ-компания Группы Совкомбанк. Каждый день развиваем сервисы и приложения, которыми пользуются миллионы людей и мы сами. &lt;/p&gt;
  &lt;p id=&quot;SjIo&quot;&gt;Не будем долго писать про нашу корпоративную культуру, ИТ-фесты, коворкинг и атмосферу «Лиги Достижений». Лучше покажем. Налей себе чай или кофе и смотри короткий ролик про Совкомбанк Технологии.&lt;/p&gt;
  &lt;p id=&quot;wnfs&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;fSqf&quot; class=&quot;m_column&quot;&gt;
    &lt;iframe src=&quot;https://www.youtube.com/embed/Aev8VKBizNw?autoplay=0&amp;loop=0&amp;mute=0&quot;&gt;&lt;/iframe&gt;
  &lt;/figure&gt;
  &lt;h3 id=&quot;ym0f&quot;&gt;&lt;/h3&gt;
  &lt;h3 id=&quot;3GFg&quot;&gt;Про наши ИТ-фесты&lt;/h3&gt;
  &lt;p id=&quot;XpD8&quot;&gt;ИТ-фесты — это наши традиционные летние вечеринки для сотрудников. География фестов, как гастрольный тур топовых рок-групп. Почти вся Россия. В этом году мы встречались в Хабаровске, Саратове, Санкт-Петербурге, Краснодаре, Уфе, Воронеже, Нижнем Новгороде, Ростове-на-Дону, Москве, Казани, Новосибирске, Череповце, Томске, Екатеринбурге.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;nyCe&quot;&gt;&lt;strong&gt;В этом году на фестах затусило более 2000 человек!&lt;/strong&gt; Побьём ли в следующем году эту цифру? Даже не сомневайся. Уже начали думать, как сделать следующий сезон фестов ещё ярче.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;8Ryr&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;56Wn&quot; class=&quot;m_column&quot;&gt;
    &lt;iframe src=&quot;https://www.youtube.com/embed/GLzn2FuXUog?autoplay=0&amp;loop=0&amp;mute=0&quot;&gt;&lt;/iframe&gt;
  &lt;/figure&gt;
  &lt;figure id=&quot;TO6W&quot; class=&quot;m_column&quot;&gt;
    &lt;iframe src=&quot;https://www.youtube.com/embed/-96a5QmsvJU?autoplay=0&amp;loop=0&amp;mute=0&quot;&gt;&lt;/iframe&gt;
  &lt;/figure&gt;
  &lt;figure id=&quot;1Wx9&quot; class=&quot;m_column&quot;&gt;
    &lt;iframe src=&quot;https://www.youtube.com/embed/KDJNeWH0a4k?autoplay=0&amp;loop=0&amp;mute=0&quot;&gt;&lt;/iframe&gt;
  &lt;/figure&gt;
  &lt;h3 id=&quot;UhxJ&quot;&gt;&lt;/h3&gt;
  &lt;h3 id=&quot;ivH0&quot;&gt;Про спорт&lt;/h3&gt;
  &lt;p id=&quot;x1ux&quot;&gt;Он всегда с нами. Регулярно устраиваем чемпионаты по волейболу, турниры по шахматам и настольному теннису, играем в футбол, катаемся на сноуборде, участвуем в марафонах по бегу.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;4ypI&quot;&gt;Компенсируем покупку абонемента в фитнес-клуб, занятия групповыми видами спорта, например, тренировки по волейболу, футболу, хоккею, участие во внешних соревнованиях, покупку экипировки для команд.&lt;/p&gt;
  &lt;/section&gt;
  &lt;h3 id=&quot;7sup&quot;&gt;&lt;/h3&gt;
  &lt;figure id=&quot;5TbP&quot; class=&quot;m_column&quot;&gt;
    &lt;iframe src=&quot;https://www.youtube.com/embed/R4oPzisUdMU?autoplay=0&amp;loop=0&amp;mute=0&quot;&gt;&lt;/iframe&gt;
  &lt;/figure&gt;
  &lt;h3 id=&quot;s6Fz&quot;&gt;&lt;/h3&gt;
  &lt;h3 id=&quot;z4ru&quot;&gt;Про коворкинг в Сочи&lt;/h3&gt;
  &lt;p id=&quot;Yr0u&quot;&gt;У нас есть собственный коворкинг: 4-х дневная рабочая неделя, дорога туда и обратно, проживание в отеле за счёт компании, командировочные за каждый день. &lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;2wDL&quot;&gt;Днём работаем, вечером танцуем, играем в настолки или бьёмся в Mortal Kombat. По выходным едем на экскурсии и посещаем местные достопримечательности.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;78jE&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;IjzK&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/a5/01/a501c6fa-9c13-42ff-9293-f2a2224a5401.png&quot; width=&quot;1339&quot; /&gt;
  &lt;/figure&gt;
  &lt;figure id=&quot;FkJV&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/0f/a0/0fa0a7df-618c-429b-a97e-b28d945f52ab.png&quot; width=&quot;2328&quot; /&gt;
  &lt;/figure&gt;
  &lt;figure id=&quot;dIXE&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/1e/83/1e838367-a0b4-4fd4-bac3-7f7e15133147.png&quot; width=&quot;1339&quot; /&gt;
  &lt;/figure&gt;
  &lt;h3 id=&quot;3zgH&quot;&gt;Коворкинг на Алтае&lt;/h3&gt;
  &lt;p id=&quot;5ZUV&quot;&gt;Наше место силы. Алтай - это горы, сплавы по бурной реке Катунь, песни под гитару у костра и поездки на «Алтайский марс». А еще это очаровательные, пробирающее до мурашек, виды заходящего солнца.&lt;/p&gt;
  &lt;p id=&quot;m25c&quot;&gt;Как и в коворкинге в Сочи, здесь четырехдневная рабочая неделя. Билеты на самолет, проживание и многие другие приятные “мелочи” берет на себя банк.&lt;/p&gt;
  &lt;figure id=&quot;udEz&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/41/1c/411c14bd-8e59-4ac8-83dc-51e314ae191e.png&quot; width=&quot;1080&quot; /&gt;
  &lt;/figure&gt;
  &lt;figure id=&quot;FBrQ&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/92/09/92096136-ff45-4741-8852-3d619d30020b.png&quot; width=&quot;1080&quot; /&gt;
  &lt;/figure&gt;
  &lt;figure id=&quot;5f7A&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/95/0a/950aabe9-7d92-4520-8ea6-c754d8ad3f7a.png&quot; width=&quot;1080&quot; /&gt;
  &lt;/figure&gt;
  &lt;figure id=&quot;clQt&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/fa/9d/fa9d1b2a-25ab-48a0-9ddb-8ac0ed5d18da.png&quot; width=&quot;1080&quot; /&gt;
  &lt;/figure&gt;
  &lt;figure id=&quot;VZ2r&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/af/e4/afe4571d-6013-4494-92f7-895e985da341.png&quot; width=&quot;1080&quot; /&gt;
  &lt;/figure&gt;
  &lt;figure id=&quot;G8tR&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/f6/e1/f6e1e5bc-b8cd-4265-a2c7-cab3b449855c.png&quot; width=&quot;1080&quot; /&gt;
  &lt;/figure&gt;
  &lt;figure id=&quot;baCA&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/1a/40/1a401af2-c2b7-4e9a-a5da-1f7e6f8dc33b.png&quot; width=&quot;1080&quot; /&gt;
  &lt;/figure&gt;
  &lt;figure id=&quot;ykNk&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/57/b6/57b67e4f-7513-4412-8384-b529041bfc40.png&quot; width=&quot;1080&quot; /&gt;
  &lt;/figure&gt;
  &lt;figure id=&quot;rran&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/20/09/200975a1-b0e4-487c-b016-d9096b4df250.png&quot; width=&quot;1080&quot; /&gt;
  &lt;/figure&gt;
  &lt;figure id=&quot;KTy9&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/88/84/8884c2ac-aee9-442b-9935-a88873c07732.png&quot; width=&quot;1080&quot; /&gt;
  &lt;/figure&gt;
  &lt;figure id=&quot;ebWw&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/7a/e9/7ae97c2b-a30a-4259-8592-53fa333ea65f.png&quot; width=&quot;1080&quot; /&gt;
  &lt;/figure&gt;
  &lt;h3 id=&quot;DgHc&quot;&gt;Про офисы&lt;/h3&gt;
  &lt;p id=&quot;T1rc&quot;&gt;Любим работать в комфорте. Все наши офисы современные и стильные, рабочие места удобные и уютные. Кофемашины и игровые комнаты тоже на месте.&lt;/p&gt;
  &lt;p id=&quot;LzlZ&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;G05T&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/56/be/56be5544-5d00-46c5-9a13-2289ad08429f.png&quot; width=&quot;1618&quot; /&gt;
  &lt;/figure&gt;
  &lt;figure id=&quot;2w5c&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/83/21/8321a42f-1760-4e94-bf47-74adef47367a.png&quot; width=&quot;2814&quot; /&gt;
  &lt;/figure&gt;
  &lt;figure id=&quot;RVxy&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/f0/d0/f0d09328-a3f2-4e21-9b51-8d8326bccd3d.png&quot; width=&quot;1619&quot; /&gt;
  &lt;/figure&gt;
  &lt;figure id=&quot;w7EJ&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/b5/de/b5deeca8-b428-4c62-9ff4-7501b418617d.png&quot; width=&quot;1619&quot; /&gt;
  &lt;/figure&gt;
  &lt;figure id=&quot;QzBc&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/f9/c7/f9c7a6f4-2a34-4c2d-bd70-b46c23c91f86.png&quot; width=&quot;1123&quot; /&gt;
  &lt;/figure&gt;
  &lt;h3 id=&quot;nQHy&quot;&gt;&lt;/h3&gt;
  &lt;h3 id=&quot;nIEz&quot;&gt;Про бонусы сотрудникам&lt;/h3&gt;
  &lt;p id=&quot;5GC2&quot;&gt;&lt;strong&gt;У нас 30+ соцпрограмм&lt;/strong&gt; —  заботимся о здоровье сотрудников и их близких, софинансируем отпуска, поддерживаем развитие сотрудников, есть свой Учебный центр, полностью или частично оплачиваем внешнее обучение (семинары, конференции, курсы), предоставляем банковские продукты по льготным условиям и ещё много всего!&lt;/p&gt;
  &lt;h3 id=&quot;mzys&quot;&gt;&lt;/h3&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;tA8W&quot;&gt;👉 Еще больше про нас, а так же разные полезности, в нашем Телеграм канале: &lt;a href=&quot;https://t.me/sovcom_tech&quot; target=&quot;_blank&quot;&gt;https://t.me/sovcom_tech&lt;/a&gt;&lt;/p&gt;

</content></entry><entry><id>scbt:i57NLb2QdPt</id><link rel="alternate" type="text/html" href="https://teletype.in/@scbt/i57NLb2QdPt?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=scbt"></link><title>Великое противостояние: Windows против macOS </title><published>2023-03-21T13:04:16.445Z</published><updated>2023-03-21T13:04:16.445Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img2.teletype.in/files/d8/f2/d8f266ea-e5a5-44c5-8a3d-29226f439b6a.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://lh5.googleusercontent.com/5fOh_55r_KDa5BTxPFine2kJinwECTWkIdGKIbf42acpXAKVtN5gZ5yTi67RhgVUzlnM9BSyN7NrBNxpezvvlWGhbLYyQXXvIINiXzasBCpq_k9XEHPF-BN2e3MndIhCTikyKYoPBwnPhjpjqiWxzAw&quot;&gt;В этой статье, постараемся беспристрастно сравнить операционные системы Windows и macOS. Сравним их в категориях: свобода выбора «железа» для установки, интерфейс и UX, экосистема, установка сторонних приложений, игры. В конце статьи попробуем сделать вывод. Поехали!</summary><content type="html">
  &lt;h3 id=&quot;hwK8&quot;&gt;&lt;strong&gt;Разбор плюсов и минусов двух самых популярных операционных систем.&lt;/strong&gt;&lt;/h3&gt;
  &lt;p id=&quot;A6nM&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;UkbY&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://lh5.googleusercontent.com/5fOh_55r_KDa5BTxPFine2kJinwECTWkIdGKIbf42acpXAKVtN5gZ5yTi67RhgVUzlnM9BSyN7NrBNxpezvvlWGhbLYyQXXvIINiXzasBCpq_k9XEHPF-BN2e3MndIhCTikyKYoPBwnPhjpjqiWxzAw&quot; width=&quot;1200&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;v93L&quot;&gt;В этой статье, постараемся беспристрастно сравнить операционные системы Windows и macOS. Сравним их в категориях: свобода выбора «железа» для установки, интерфейс и UX, экосистема, установка сторонних приложений, игры. В конце статьи попробуем сделать вывод. Поехали!&lt;/p&gt;
  &lt;p id=&quot;sNyC&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;OHR7&quot;&gt;&lt;strong&gt;«Железо» для установки&lt;/strong&gt;&lt;/h3&gt;
  &lt;p id=&quot;ICFO&quot;&gt;&lt;strong&gt;Windows &lt;br /&gt;&lt;/strong&gt;Полная свобода в отношении оборудование, на которые вы можете установить эту операционную систему. Компьютеры почти любых сборок, ноутбуки разных производителей и даже… холодильники. Да, это не шутка. В 2016 году на выставке потребительской электроники в Берлине компания LG представила холодильник, который работает под управлением операционной системы Windows 10.&lt;/p&gt;
  &lt;figure id=&quot;h8yY&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://lh3.googleusercontent.com/3N1ao03Wzsdh8CfgvkgtHph-VlZrM9HnxSChQeiSLxoF5P1Ofn8DmUohLZextDXqldzaFRHER3ztA_MRernxnmHjtEodiTkDVXeJmdV7OpiBV3pOuRh3ncj8I_80xEtJ0Beq4Hmbi0Ykuy7IadvCnjQ&quot; width=&quot;810&quot; /&gt;
    &lt;figcaption&gt;Источник: https://me.pcmag.com/&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Ue45&quot;&gt;Собирая настольный компьютер под Windows, мы получаем широкий выбор комплектующих. Кастомный PC ограничен только бюджетом и теми задачами, под которые он будет собираться. Windows без проблем запуститься как на бюджетных сборках за 20-30 тысяч рублей, так и на игровых мощных машинах, с топовыми процессорами, мощными видеокартами за сотни тысяч рублей. Можно собрать для начала скромную машину, которая будет закрывать базовые задачи, а потом постепенно апгрейдить, улучшая характеристики своего PC.&lt;/p&gt;
  &lt;p id=&quot;ODNn&quot;&gt;&lt;strong&gt;macOS&lt;/strong&gt;&lt;br /&gt;Работает только на Маках. Да, благодаря энтузиастам и Хакинто́ш, можно запускать macOS на компьютерах не от Apple, но в этой статье мы не будем разбирать подобные решения.&lt;/p&gt;
  &lt;p id=&quot;ltdo&quot;&gt;&lt;em&gt;Минусы&lt;br /&gt;&lt;/em&gt;За «железо» в стационарных компьютерах и ноутбуках от Apple придётся платить. Точнее переплачивать. В современных маках возможности самостоятельного апгрейда минимальны. Вы можете выбрать готовые маки или собрать свой, используя конфигуратор на сайте Apple. Например, если нужно увеличить оперативную память в ноутбуке MacBook Air на M2 с 8 Гб до 16 Гб, будьте готовы доплатить $200. Это официальная цена и в России итоговая стоимость ноутбука будет выше.&lt;/p&gt;
  &lt;p id=&quot;y5YF&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;imyR&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://lh4.googleusercontent.com/37RDPzQJv2wNf-j_AE72YBZWejKkRl9fGdP5DOdavgb9qnMlSv3kMFgShshMiFzXG4EUFYPfGVIJf3ws1H2sf6vfjZ9jLTrYNhLF_DxCQiEM6NlYy3stMcmcWsQeIOcPWa4PgDBiMXS_4XDbXCS_gu4&quot; width=&quot;1508&quot; /&gt;
    &lt;figcaption&gt;Источник: https://www.apple.com/&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;dySt&quot;&gt;&lt;em&gt;Плюсы&lt;/em&gt;macOS идеальна ведёт себя на «железе» компьютеров Apple. С переходом Apple на процессоры собственного производства на ARM-архитектуре, компьютеры Apple показывают отличные результаты в различных тестах, а ноутбуки ещё и бьют рекорды по автономности.&lt;/p&gt;
  &lt;p id=&quot;brv0&quot;&gt;&lt;/p&gt;
  &lt;blockquote id=&quot;CHuF&quot;&gt;Если нужна свобода в кастомизации компьютеров, то выбирайте PC на Windows. Нужна автономность ноутбуков без потери производительности — это Apple&lt;/blockquote&gt;
  &lt;p id=&quot;qlmF&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;koMo&quot;&gt;&lt;strong&gt;Интерфейс и UX&lt;/strong&gt;&lt;/h3&gt;
  &lt;p id=&quot;HcLM&quot;&gt;С выходом Windows 11 операционные системы Windows и macOS стали очень похожи. &lt;/p&gt;
  &lt;p id=&quot;xJd7&quot;&gt;&lt;strong&gt;Например, работа с нескольким рабочими столами:&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt;
  &lt;figure id=&quot;jM15&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://lh6.googleusercontent.com/PQMFV0ePFJ2jq8pIXRzS9qZCCe4GXnh_05M9OKPzsX_7F9KCYw9qZqxCnAQRYKd3sgFTU1jFNcVeWuAkmEVeOfKLOpgxWvMUZz1_1PGQvFvdVsHXkODtxJIVu8IfGhk8VDdWYq1dB685w_tklGwC9To&quot; width=&quot;1044&quot; /&gt;
    &lt;figcaption&gt;Источник: https://support.microsoft.com/&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;tvwd&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;Fsfo&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://lh5.googleusercontent.com/AOGHT9FDRWLMAutf7oZbDbPKuzlpoW9Eb1j0FqVH4IFDMOy7NzrgO5mI2jXFxCN8LziYrMgq9M07uISphNdVR1WOocqR2vnyb3tqcqkoyr38e82pnbcRinXGCWSX7vqHw6O_6ar_1eTjNxA9enZceBE&quot; width=&quot;849&quot; /&gt;
    &lt;figcaption&gt;Источник: https://support.apple.com/&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;jlSf&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;GSxo&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;tqkQ&quot;&gt;&lt;strong&gt;Системный поиск (Spotlight в macOS), который легко вызывается с клавиатуры:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;jmMv&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;jjqr&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://lh5.googleusercontent.com/9EOjQ_1ClJyPHENZnuan0dzPC3Oq1HitrHPCirAMWO5ssmorEDuYoaiL_8KpODQ3aFVZBuuyr80-eRjjdVD186xdREUUJdixdUCBj4zoTWW4LWu0QvfX3WVDYPudP-bTvmMIS23gQ8sI-p93NR7HzCI&quot; width=&quot;1600&quot; /&gt;
    &lt;figcaption&gt;Источник: https://www.neowin.net/news/closer-look-search-in-windows-11/&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;pnb2&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;sL5Y&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://lh6.googleusercontent.com/BY5EQftjoBOyzlKSqkvQ_t3BivAREaN6ujaN0Qhc1Gd3Kvs2IYxQlyXH-pSYBlCBY0bkKkmEz7XszzpoKpSsTby0UVigBcUReo9UpQB6rpd5DcgqV-ec9fPBwF3yWNr5_D55m3I94xuGKgRpHtEbBRE&quot; width=&quot;1536&quot; /&gt;
    &lt;figcaption&gt;Источник: https://macmagazine.com.br/post/2021/04/10/o-que-e-e-como-usar-o-spotlight-no-mac/&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;yWnP&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;tOxw&quot;&gt;&lt;strong&gt;Размещение приложений, к которым вам нужен быстрый доступ:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;w1EG&quot;&gt;Dock на Mac&lt;/p&gt;
  &lt;figure id=&quot;NyHP&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://lh4.googleusercontent.com/pD3YunV0faEQAOVxLiN73JCTgEDIRdDvfhFBXoLlAYBGDQc1vzg8Yo2YabVQlhq6gnMAERpfBDvPfV8oc0YBYsS7c1JuIeIxISJCGFO3tio84Z7o57caXzQl7b0JZkWldxv3C2X-0Xpd92dxjpAON5k&quot; width=&quot;934&quot; /&gt;
    &lt;figcaption&gt;Источник: https://support.apple.com/&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;aUvh&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;EB81&quot;&gt;Панель задач на Windows &lt;/p&gt;
  &lt;figure id=&quot;QPNW&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://lh5.googleusercontent.com/f6oh9uCi5TsuQxkwdgA9ryhmlEU_tTtl5CEo9cBPm-nnkgbOhU-lpmCi3YCEejFrHq9MEyV0KZ7zTdHozl0aV2RIwmUSDyF0MztJGkUMYJAFO_RyaH_zRgVWXWLKHT-FE5-cYRYX1lbBbXrZJ37kX5Y&quot; width=&quot;1100&quot; /&gt;
    &lt;figcaption&gt;Источник: https://support.microsoft.com/&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;k73j&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;bL66&quot;&gt;&lt;strong&gt;Файловые менеджеры&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;07FT&quot;&gt;Проводник в Windows &lt;/p&gt;
  &lt;figure id=&quot;UyUD&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://lh3.googleusercontent.com/K09Q4YBDmFxKzpeDmQUaxRTMh2YDuGFqiE7MKFxj0jEMcuEIzO-jzs2h5wV_ZHeClbYS0-0nhIZ1CNPjrU7qNJugeYfq__FTEkYte21wUYY36Yat0Vhz9HhkKvx_hK2KPUQuvNsmsGSW3YJDGX0TWXM&quot; width=&quot;1600&quot; /&gt;
    &lt;figcaption&gt;Источник: https://windowsreport.com&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;HC56&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;AeRe&quot;&gt;Finder в macOS&lt;/p&gt;
  &lt;figure id=&quot;nOfn&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://lh4.googleusercontent.com/4VRu6B3CBLCgb7fyoEEfp6OC6MaxIn7NYk6Ly39gKcWn8NyDzXc6Qzpa4O7a2EsLHIyA0qEvoesjdVeJbq9nogaNSk1icpE0D7_FCP2zp7FVOOoOOcJX9AqW5W3UWDo0C4lJdFzbatCD2LSXeOXazS0&quot; width=&quot;1280&quot; /&gt;
    &lt;figcaption&gt;Источник: https://support.apple.com&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;BIex&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;zi9W&quot;&gt;Обе операционные системы предлагают похожие решения. Но, при более детальном рассмотрении, мы увидим различия в том, какой пользовательский опыт (UX) предлагают Windows и macOS.&lt;/p&gt;
  &lt;p id=&quot;uJXS&quot;&gt;Например, в Windows уже из «коробки» есть удобная система работы с окнами. Система предлагает шесть режимов отображения открытых приложений, каждый из них можно адаптировать для повседневного использования.&lt;/p&gt;
  &lt;p id=&quot;3qia&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;HTxv&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://lh5.googleusercontent.com/yBWeTw5I_1Ozqm1cGg1r3ySVKSptadtkaEJ0rSajvkEeJthSRSHfSHm7O0Ghs26wn5XcOa3PjHFRXeQswIQouq_nrewQG0CPiERnoc-87MtelWNbxW8tjIcKaeSqMHMhoX6k9JDM4gt6EtEal80LBZk&quot; width=&quot;1150&quot; /&gt;
    &lt;figcaption&gt;Источник: https://thewincentral.com&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;DgEE&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;1Vd3&quot;&gt;macOS предлагает меньше вариантов разделения экрана для работы с несколькими окнами одновременно. Чтобы на маках получить такое же разнообразие отображения окон, придётся ставить сторонние приложения. &lt;/p&gt;
  &lt;p id=&quot;buQQ&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;Ef3G&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://lh6.googleusercontent.com/V861VPou9Vy7jl3eN-WJHB5PufNTeoKmItzw2iMMnwbW2SyVrTVbzE1jA4PJN9smAY5bgvgq9LRDVJNylbDRaqiMe8HKvexoS0Gs4QEvTFDBnnVVi_SLenyBMKh-uj_CkQ6_KYUEOI6ACB0ixck3kzs&quot; width=&quot;768&quot; /&gt;
    &lt;figcaption&gt;Источник: https://www.digitaltrends.com&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;plqS&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;zEWX&quot;&gt;Но в macOS есть свои фишки. Например, можно сделать углы экрана активными и при наведении мышью в один из углов, будет выполняться определённые действия. По умолчанию, правый нижний угол используется для создания короткой заметки. Удобно, можно быстро что-то записать пока не забыл.&lt;/p&gt;
  &lt;p id=&quot;Kuyi&quot;&gt;Есть в macOS и Launchpad. Он показывает все приложения в виде сетки. Привычный режим для пользователей iPhone. Программы могут отображаться на нескольких страницах, если их слишком много и они не помещаются на одном экране.&lt;/p&gt;
  &lt;p id=&quot;YOTi&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;ElSZ&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://lh6.googleusercontent.com/-s80apGW2kK2iC3snSHakfPZuG1G4rLGE8g8kPK7_aAw-HoScLlIsHCGdG60xhBpxQwn9d7WiLgc9NA60SK5Ug_ANA1UEAs9bjcsV5Zes6X_iVfPXSGCOBJ3zzasqigu_4k-gZBZbBAPO2JdbAn1QiM&quot; width=&quot;931&quot; /&gt;
    &lt;figcaption&gt;Источник: https://support.apple.com&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;IjlX&quot;&gt;&lt;/p&gt;
  &lt;blockquote id=&quot;tZ6S&quot;&gt;Внешне операционные системы становятся всё более похожи. У каждой из них есть свои фишки и слабые места в удобстве использования. Если не нравится функционал одной из этих систем или хочется что-то добавить — помогут сторонние утилиты.&lt;/blockquote&gt;
  &lt;p id=&quot;aANi&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;15G6&quot;&gt;Приложения&lt;/h3&gt;
  &lt;p id=&quot;owoC&quot;&gt;macOS и Windows поставляются с набором базовых приложений. Но есть различие в подходе поставок офисных приложений, нужных для работы с текстом, таблицами и презентациями. Например, покупая ноутбук на Windows, можно получить пробную лицензию на пакет офисных программ Microsoft Office или докупать его отдельно. В macOS набор офисных программ идёт в комплекте с операционной системой и отдельно покупать их не надо. &lt;/p&gt;
  &lt;p id=&quot;Jpv3&quot;&gt;Что касается магазинов приложений в macOS и Windows, то в них можно найти огромное количество утилит для решения разных задач. Есть приложения бесплатные, по подписке или бесплатные. &lt;/p&gt;
  &lt;p id=&quot;r80R&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;KPMR&quot;&gt;Экосистема&lt;/h3&gt;
  &lt;p id=&quot;CODg&quot;&gt;В macOS экосистема — одно из главных преимуществ Apple. Если у вас есть часы, смартфон, планшет и компьютер от Apple, то вы получите отличную синхронизацию в работе этих устройств и удовольствие от их работы в одной экосистеме. &lt;/p&gt;
  &lt;p id=&quot;brOg&quot;&gt;Устройства Apple синхронизируют между собой почти всё: закладки в браузере, медиатеку, заметки. Начав работать с документом на iPhone, можно продолжить его редактировать на макбуке. Наушники подключаются к тому устройству, которое вы используете сейчас, можно начав говорить на смартфоне, продолжить разговор на ноутбуке. Планшет можно подключать, как второй монитор и это будет работать без проводов.&lt;/p&gt;
  &lt;p id=&quot;oldC&quot;&gt;Камеру iPhone можно использовать вместо веб-камеры макбука, если общаетесь в формате видеоконференции и качество встроенной камеры ноутбука вас не устраивает. &lt;/p&gt;
  &lt;p id=&quot;klku&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;ydXo&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://lh3.googleusercontent.com/3Yd_VtnOHxa-8HaOSF02R6Ccwj5cMxK1q76wtoQ7Pf9-9L66CfAZuZ6Hp4JIpVp1MKJe0AT2z3jBjaKwbkLPKpmv07M-wvuBWzMU_T-ua-jpaXY_-x4DC3jVajzHxSh2fkeEPKCH1-dpz8Ewhf0vVm0&quot; width=&quot;1600&quot; /&gt;
    &lt;figcaption&gt;Источник: https://wylsa.com&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;wDjq&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;ghLg&quot;&gt;Windows тоже развивает синхронизацию между разными устройствами. Например, если у вас компьютер на Windows и смартфон на Android, то с помощью приложения «Мой телефон», вы будете получать на компьютер уведомления с телефона и управлять смартфоном с ПК.&lt;/p&gt;
  &lt;p id=&quot;npaT&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;SNBQ&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://lh3.googleusercontent.com/fhEdV1DBZXSgKT9OoUjzyrTjeS60Y2Heb_AEjJnMuG_4JHbIlLiU7FPnG21AhWtZobrwKAr6cTz9kNA0tk-Bb9DljydVexr3rEN3sGxc4JbrmFNZzOpylKHVKH7sBVs55MaC-X8RmvjNSLZuBFA_t7U&quot; width=&quot;680&quot; /&gt;
    &lt;figcaption&gt;Источник: https://justsurvivalcraft.ru&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;8D1h&quot;&gt;&lt;/p&gt;
  &lt;blockquote id=&quot;rSzL&quot;&gt;Экосистема macOS — одна из главных фишек Apple. Windows пока не может похвастаться таким преимуществом. Возможно, если бы не исчезла мобильная операционная система «Windows Mobile», всё могло бы получится по другому.&lt;/blockquote&gt;
  &lt;p id=&quot;wCk5&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;QaRF&quot;&gt;Установка сторонних приложений &lt;/h3&gt;
  &lt;p id=&quot;25K5&quot;&gt;Магазины приложений App Store для маков и Microsoft Store для Windows предлагают огромное количество утилит. Если надо установить приложения от сторонних разработчиков, то Windows и macOS не ограничивают в этом своих пользователей. В отличии от своей мобильной операционной системы, Apple тут даёт больше свободы.&lt;/p&gt;
  &lt;p id=&quot;B3TX&quot;&gt;В Windows и macOS можно запускать мобильные приложения. Для Windows нужно будет установить подсистему Android. На маках запускаются программы для IOS, если на компьютере стоят чипы M-серии. &lt;br /&gt;&lt;/p&gt;
  &lt;blockquote id=&quot;WAPF&quot;&gt;Обе операционные системы не ограничивают своих пользователей в источнике скачивания утилит. Можно скачивать в официальных магазинах приложений, устанавливать программы от сторонних разработчиков или устанавливать «пиратский» софт. &lt;/blockquote&gt;
  &lt;p id=&quot;iLDL&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;3tQS&quot;&gt;Игры&lt;/h3&gt;
  &lt;p id=&quot;ZhJV&quot;&gt;Когда дело касалось игр, то Windows всегда побеждал macOS. Почему так: до перехода на собственные чипы, Apple устанавливала на свои компьютеры далеко не топовые видеокарты. С переходом на чипы M-серии, маки получили достаточно видео ядер и это изменило ситуацию с играми на маках. Например, игра «Resident Evil Village» отлично оптимизирована для игры даже на базовых компьютерах Apple с чипами M-серии. &lt;/p&gt;
  &lt;p id=&quot;BGnj&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;wuRV&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://lh4.googleusercontent.com/RFXxjT7-iA3xxqWGFlUfZvGucp7mjIeqkWepreZ84aw2axaCC94e1qkjIPjr025f-kFJCpxbmF4c_u7W5p4ZaDTJfOhybjbDo9EMbHTOgkHFp8ECBzDP1n7bcnZX9x7D5uLjtgR0e-ZaMIqjH6qeISk&quot; width=&quot;626&quot; /&gt;
    &lt;figcaption&gt;Источник: https://apps.apple.com&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;0yai&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;dZaz&quot;&gt;Пока производители игр неохотно оптимизируют свои игры под macOS. Главная причина — пользователей маков гораздо меньше пользователей PC. Да и Apple всегда позиционировала свои компьютеры, как инструмент для профессионалов, готовый к работе из «коробки», но точно не для гейминга. &lt;/p&gt;
  &lt;p id=&quot;hfXY&quot;&gt;&lt;/p&gt;
  &lt;blockquote id=&quot;mN0w&quot;&gt;Хочеться играть — берите компьютер на Windows или купите себе игровую консоль. Маки уже сделали огромный шаг в сторону геймеров, но этого пока мало.&lt;/blockquote&gt;
  &lt;p id=&quot;jRGq&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;ifkB&quot;&gt;Что в итоге&lt;/h3&gt;
  &lt;p id=&quot;q8SN&quot;&gt;Выбирайте компьютер на macOS, если:&lt;/p&gt;
  &lt;ul id=&quot;AoW0&quot;&gt;
    &lt;li id=&quot;W7Jy&quot;&gt;готовы переплачивать за компоненты&lt;/li&gt;
    &lt;li id=&quot;hqC3&quot;&gt;не хотите заниматься самостоятельной кастомизацией&lt;/li&gt;
    &lt;li id=&quot;xeTV&quot;&gt;не играете в современные игры&lt;/li&gt;
    &lt;li id=&quot;Sa58&quot;&gt;вам нужна отличная автономность ноутбука без потери мощности&lt;/li&gt;
    &lt;li id=&quot;a6I3&quot;&gt;используете специфический софт для работы и ему нет аналогов на Windows или они хуже&lt;/li&gt;
    &lt;li id=&quot;Nu5A&quot;&gt;у вас есть другие продукты от Apple (смартфон, планшет) и вы хотите получать удовольствие от работы этих гаджетов в одной экосистеме&lt;/li&gt;
    &lt;li id=&quot;dS4I&quot;&gt;если вы iOS-разработчик&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;8fzO&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;KetN&quot;&gt;Вам подойдет компьютер на Windows, если:&lt;/p&gt;
  &lt;ul id=&quot;lfki&quot;&gt;
    &lt;li id=&quot;KKRH&quot;&gt;вам нужна свобода выбора комплектующих для сборки компьютера и последующего апгрейда&lt;/li&gt;
    &lt;li id=&quot;NzJN&quot;&gt;играете на своём компьютере в современные игры&lt;/li&gt;
    &lt;li id=&quot;Tsgr&quot;&gt;софт для вашей деятельности есть на Windows и он работает хорошо&lt;/li&gt;
  &lt;/ul&gt;

</content></entry><entry><id>scbt:XGl_mJ_-tzY</id><link rel="alternate" type="text/html" href="https://teletype.in/@scbt/XGl_mJ_-tzY?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=scbt"></link><title>Играем в «Угадай число». Как поможет бинарный поиск</title><published>2023-01-24T07:10:07.448Z</published><updated>2023-01-24T07:10:07.448Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img2.teletype.in/files/52/36/5236f84b-aba7-4030-a942-5073742d6f63.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img2.teletype.in/files/95/40/95404f5b-994b-4d44-8097-2d5924e430eb.png&quot;&gt;Хотите сыграть в простую игру? Предположим, я загадал число от 0 до 100.  Отгадайте какое число я загадал, использовав как можно меньше попыток. При каждой попытке вы будете получать один из ответов: «мало», «много», «угадал».</summary><content type="html">
  &lt;figure id=&quot;h7Xt&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/95/40/95404f5b-994b-4d44-8097-2d5924e430eb.png&quot; width=&quot;1200&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;jq7O&quot;&gt;Хотите сыграть в простую игру? Предположим, я загадал число от 0 до 100.  Отгадайте какое число я загадал, использовав как можно меньше попыток. При каждой попытке вы будете получать один из ответов: «мало», «много», «угадал».&lt;/p&gt;
  &lt;h3 id=&quot;kRmw&quot;&gt;Угадываем число через простой поиск&lt;/h3&gt;
  &lt;p id=&quot;haqI&quot;&gt;Возможно, вы начнёте перебирать все варианты подряд: 1, 2, 3, 4 ... и т.д&lt;/p&gt;
  &lt;figure id=&quot;kPEB&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/48/69/48696fe0-5398-4d6b-9859-edec7b35c66c.png&quot; width=&quot;1200&quot; /&gt;
    &lt;figcaption&gt;Так работает простой поиск&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;HFOh&quot;&gt;При каждым ответе будет исключаться только одно число. Это пример работы простого поиска. Рано или поздно мы дойдём до правильного ответа. Но представьте, если бы я загадал число 99. Чтобы до него добраться, потребуется 99 попыток. Долго.&lt;/p&gt;
  &lt;figure id=&quot;Aq4j&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/26/72/26727e49-aaa2-4da4-b5cf-d82a05365aa5.png&quot; width=&quot;1200&quot; /&gt;
    &lt;figcaption&gt;Да что же это за число?!!&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;0puI&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;Bnmv&quot;&gt;Более эффективный способ&lt;/h3&gt;
  &lt;p id=&quot;yMSb&quot;&gt;Начнём с числа 50. &lt;/p&gt;
  &lt;figure id=&quot;7pAp&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/d8/d8/d8d8f6b5-a649-4e98-8b5c-44fe6cc83d89.png&quot; width=&quot;1200&quot; /&gt;
    &lt;figcaption&gt;Пора не угадали&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;pgxS&quot;&gt;Мало. Но мы только что исключили половину чисел! Теперь мы знаем, что все числа 1 — 50 меньше загаданного. Делаем следующую попытку.&lt;/p&gt;
  &lt;figure id=&quot;IjAn&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/9e/3b/9e3b70af-79d1-4b03-a307-61c5ad41e8bc.png&quot; width=&quot;1200&quot; /&gt;
    &lt;figcaption&gt;Перелёт&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;8vOr&quot;&gt;Много, но мы снова исключили половину чисел! Начинаем использовать бинарный поиск.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;blockquote id=&quot;bIHq&quot;&gt;С бинарным поиском мы каждый раз загадываем число в середине диапазона и исключаем половину оставшихся чисел.&lt;/blockquote&gt;
  &lt;/section&gt;
  &lt;p id=&quot;NmhQ&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;RJD4&quot;&gt;Называем следующее число. Это будет 63 (середина между 50 и 75).&lt;/p&gt;
  &lt;figure id=&quot;lEME&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/88/da/88daee0a-9d03-4a7f-85e6-ce5768080e19.png&quot; width=&quot;1200&quot; /&gt;
    &lt;figcaption&gt;Победа :)&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;JCdW&quot;&gt;&lt;strong&gt;Бинарный поиск работает только в том случае, если список отсортирован. &lt;/strong&gt;Например, бумажный телефонный справочник. Имена абонентов в нём хранятся в алфавитном порядке и при поиске нужного номера телефона можно воспользоваться бинарным поиском.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Что почитать по теме: «Грокаем алгоритмы» Адитья Бхаргава&lt;/em&gt;&lt;/p&gt;

</content></entry><entry><id>scbt:yr5bwqO4XYM</id><link rel="alternate" type="text/html" href="https://teletype.in/@scbt/yr5bwqO4XYM?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=scbt"></link><title>Краткое введение в разработку собственных правил для ESLint</title><published>2023-01-12T06:46:22.855Z</published><updated>2023-01-12T06:46:22.855Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img1.teletype.in/files/ca/af/caaf3080-db29-44a6-835d-ec5f68e6f316.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img3.teletype.in/files/a4/b2/a4b2c8ce-c527-4dea-8110-19ed0afd9ee4.jpeg&quot;&gt;Недавно мы в команде столкнулись с тем, что нам понадобилось кастомное правило для линтера. Немного поиска в гугле, и через час-полтора правило было готово. Делимся базовыми примерами, которые помогут вам погрузиться в процесс разработки правил.</summary><content type="html">
  &lt;p id=&quot;VOQU&quot;&gt;Недавно мы в команде столкнулись с тем, что нам понадобилось кастомное правило для линтера. Немного поиска в гугле, и через час-полтора правило было готово. Делимся базовыми примерами, которые помогут вам погрузиться в процесс разработки правил.&lt;/p&gt;
  &lt;figure id=&quot;LvZT&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/a4/b2/a4b2c8ce-c527-4dea-8110-19ed0afd9ee4.jpeg&quot; width=&quot;780&quot; /&gt;
  &lt;/figure&gt;
  &lt;h3 id=&quot;WVla&quot;&gt;Приступаем&lt;/h3&gt;
  &lt;p id=&quot;SQqL&quot;&gt;Для написания правила, а точнее для исследования кода, нам понадобится абстрактное синтаксическое дерево. Быстрый способ получить его — воспользоваться &lt;a href=&quot;https://astexplorer.net/&quot; target=&quot;_blank&quot;&gt;AST Explorer&lt;/a&gt;.&lt;/p&gt;
  &lt;p id=&quot;tw32&quot;&gt;&lt;strong&gt;Выбираем язык&lt;/strong&gt; — JavaScript.&lt;br /&gt;&lt;strong&gt;Парсер&lt;/strong&gt; — babel-eslint9&lt;br /&gt;&lt;strong&gt;Трансформер&lt;/strong&gt; — ESLint v4 (можно и свежее, но для этой статьи достаточно и версии 4)&lt;/p&gt;
  &lt;p id=&quot;HkXM&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;xkE6&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/5e/24/5e24daa2-89eb-4aad-ac32-936ec55ea17b.png&quot; width=&quot;960&quot; /&gt;
  &lt;/figure&gt;
  &lt;ul id=&quot;NrYb&quot;&gt;
    &lt;li id=&quot;ZxCX&quot;&gt;В левой верхней части вводим пример кода, который будем исследовать.&lt;/li&gt;
    &lt;li id=&quot;sJq0&quot;&gt;В правой верхней части вы увидите дерево вашего кода.&lt;/li&gt;
    &lt;li id=&quot;Ouvg&quot;&gt;В нижней левой части будем писать код правила.&lt;/li&gt;
    &lt;li id=&quot;JXn8&quot;&gt;В правой нижней части отображается результат обработки вашего кода.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;JFf1&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;yr5g&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/59/86/598614f4-7d93-4a29-b4c4-a7411628ae65.png&quot; width=&quot;1560&quot; /&gt;
  &lt;/figure&gt;
  &lt;h3 id=&quot;8oEs&quot;&gt;Задача&lt;/h3&gt;
  &lt;p id=&quot;D6Fp&quot;&gt;Придумаем какую-нибудь задачу для нас. Наше правило должно обрабатывать написанные нами функции следующим образом:&lt;/p&gt;
  &lt;ul id=&quot;Ei1o&quot;&gt;
    &lt;li id=&quot;b5VG&quot;&gt;Если функция асинхронная, то ее название должно содержать Async в самом конце.&lt;/li&gt;
    &lt;li id=&quot;DZlX&quot;&gt;return должен быть отделен от основного кода блока одной пустой строкой.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;Da05&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;NNah&quot;&gt;Подопытный код&lt;/h3&gt;
  &lt;p id=&quot;gBzG&quot;&gt;В левую верхнею секцию AST Explorer вставьте код функции:&lt;/p&gt;
  &lt;pre id=&quot;DuNp&quot;&gt;async function helloFunction(names = []) {
    const namesEdited = names
        .map((name) =&amp;gt; {
            const formattedName = &amp;#x60;hello ${name}&amp;#x60;;
            return formattedName;
        });
    return namesEdited;
}&lt;/pre&gt;
  &lt;p id=&quot;znVd&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;8dY9&quot;&gt;Вот такой результат мы хотим получить в итоге работы наших правил линтера:&lt;/p&gt;
  &lt;pre id=&quot;UEb0&quot;&gt;async function helloFunctionAsync(names = []) {
    const namesEdited = names
        .map((name) =&amp;gt; {
            const formattedName = &amp;#x60;hello ${name}&amp;#x60;;

            return formattedName;
        });

    return namesEdited;
}&lt;/pre&gt;
  &lt;p id=&quot;mOpA&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;nDUN&quot;&gt;Первое правило&lt;/h3&gt;
  &lt;p id=&quot;IBh3&quot;&gt;В верхней правой части отображается дерево c нодами нашего кода.&lt;/p&gt;
  &lt;figure id=&quot;Alqx&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/81/02/810232d0-5d8e-4e76-a47d-a83c3ef78d6c.png&quot; width=&quot;928&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;9311&quot;&gt;По дереву Program -&amp;gt; body видим ноду FunctionDeclaration — это и есть наша функция. В редакторе кода в нижней левой части напишем основную функцию нашего правила:&lt;/p&gt;
  &lt;pre id=&quot;UJ6Y&quot;&gt;export default function(context) {
    return {
        FunctionDeclaration(node) {
    		
        },
    };
};&lt;/pre&gt;
  &lt;p id=&quot;y6et&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;nmNv&quot;&gt;Как видно из кода, функция принимает контекст и возвращает обработчик для блоков FunctionDeclaration, который в свою очередь принимает ноду в качестве аргумента.&lt;/p&gt;
  &lt;p id=&quot;RE64&quot;&gt;Допишем первое условие для проверки функции на асинхронность и наличие Async в конце названия функции.&lt;/p&gt;
  &lt;pre id=&quot;Q9dO&quot;&gt;export default function(context) {
    return {
        FunctionDeclaration(node) {
        	const isAsyncFunction = node.async;
          	const hasAsyncAtEndOfName = /Async$/.test(node.id.name);

      	    if (isAsyncFunction &amp;amp;&amp;amp; !hasAsyncAtEndOfName) {
            	//
            }
        },
    };
};&lt;/pre&gt;
  &lt;figure id=&quot;6cni&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/10/31/103169d1-c03a-4dc3-82a4-35a4167c2e14.png&quot; width=&quot;650&quot; /&gt;
    &lt;figcaption&gt;На рисунке видно, что отображается в дереве нашего кода.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;oY6G&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;qwBF&quot;&gt;Теперь сообщим разработчику, что функция не соответствует правилу для асинхронных функций. Для этого воспользуемся методом &amp;#x60;context.report&amp;#x60;, который присутствует в объекте context.&lt;/p&gt;
  &lt;pre id=&quot;emMY&quot;&gt;export default function(context) {
    return {
        FunctionDeclaration(node) {
        	const isAsyncFunction = node.async;
          	const hasAsyncAtEndOfName = /Async$/.test(node.id.name);
      
          	if (isAsyncFunction &amp;amp;&amp;amp; !hasAsyncAtEndOfName) {
            	context.report({
                	node,
                  	message: &amp;#x27;Названия асинхронных функций должны заканчиваться на Async&amp;#x27;,
                });
            }
        },
    };
};&lt;/pre&gt;
  &lt;p id=&quot;BtSh&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;YXfz&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/72/8d/728db70e-f4af-4b70-9cdd-a3a33c4f6ea1.png&quot; width=&quot;683&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;ovaT&quot;&gt;В правой нижней части AST Explorer мы увидим результат обработки кода нашим правилом. Также заметьте, что в блоке Fixed output follows нет варианта исправленного кода.&lt;/p&gt;
  &lt;p id=&quot;kp8q&quot;&gt;Нужно дописать еще одно свойство в объект передаваемый в метод report:&lt;/p&gt;
  &lt;pre id=&quot;99Ry&quot;&gt;export default function(context) {
    return {
        FunctionDeclaration(node) {
        	const isAsyncFunction = node.async;
          	const hasAsyncAtEndOfName = /Async$/.test(node.id.name);

      	    if (isAsyncFunction &amp;amp;&amp;amp; !hasAsyncAtEndOfName) {
            	context.report({
                    node,
                    message: &amp;#x27;Названия асинхронных функций должны заканчиваться на Async&amp;#x27;,
                    fix: function(fixer) {

                        // Получаем токен названия функции
                        const nameToken = context
                                .getTokens(node)
                                .find(token =&amp;gt; token.value === node.id.name);

                        // Возвращаем исправленное название
                        return fixer.replaceText(nameToken, node.id.name + &amp;#x27;Async&amp;#x27;);
                    }
                });
            }
        },
    };
};&lt;/pre&gt;
  &lt;p id=&quot;CM2c&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;QvEm&quot;&gt;Результат обработки кода изменился, fixer смог изменить название функции на подходящее под правило.&lt;/p&gt;
  &lt;figure id=&quot;XTjF&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/9f/58/9f588f32-f48f-44c8-ad48-5a770bc30418.png&quot; width=&quot;667&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;s1A0&quot;&gt;Давайте допишем второе условие для нашего правила. Выделив слово &amp;quot;return&amp;quot; в исходном коде функции в левой верхней части astexplorer, мы увидим в дереве тип ноды ReturnStatement. Допишем перехватчик в нашу функцию:&lt;/p&gt;
  &lt;pre id=&quot;OiKa&quot;&gt;export default function(context) {
    return {
        FunctionDeclaration(node) {
            // ... тут код не меняем
        },
        ReturnStatement(node) {
            // здесь опишем новый обработчик
        },
    };
};&lt;/pre&gt;
  &lt;p id=&quot;vDh9&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;rVjj&quot;&gt;Для обработки ReturnStatement нам надо:&lt;/p&gt;
  &lt;ol id=&quot;ekw0&quot;&gt;
    &lt;li id=&quot;RyuW&quot;&gt;Убедиться, что return не является первым элементом в родительском блоке.&lt;/li&gt;
    &lt;li id=&quot;mT3V&quot;&gt;Проверить, что перед строкой с return уже нет пустой строки.&lt;/li&gt;
    &lt;li id=&quot;ocgO&quot;&gt;Учесть, что перед return могут быть комментарии.&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p id=&quot;tn7l&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;mdOV&quot;&gt;Для этой функции нам понадобятся функции-помощники. Код снабдили комментариями. Код функций ниже взят из репозитория ESLint.&lt;/p&gt;
  &lt;pre id=&quot;zsH3&quot;&gt;export default function(context) {
    // Получение исходного кода
    const sourceCode = context.getSourceCode();

    // Проверка на возможность исправить найденное нарушение
    function canFix(node) {
        const leadingComments = sourceCode.getCommentsBefore(node);
        const lastLeadingComment = leadingComments[leadingComments.length - 1];
        const tokenBefore = sourceCode.getTokenBefore(node);

        if (leadingComments.length === 0) {
            return true;
        }

        if (lastLeadingComment.loc.end.line === tokenBefore.loc.end.line &amp;amp;&amp;amp;
            lastLeadingComment.loc.end.line !== node.loc.start.line) {

            return true;
        }

        return false;
    }
        
    // Получить номер строки токена предшествующего ноде      
    function getLineNumberOfTokenBefore(node) {
  	    const tokenBefore = sourceCode.getTokenBefore(node);

        if (tokenBefore) {
        	return tokenBefore.loc.end.line;
        }

        return 0;
    }

    // Подсчет строк с комментариемя перед нодой
    function calcCommentLines(node, lineNumTokenBefore) {
  	    const comments = sourceCode.getCommentsBefore(node);

        let numLinesComments = 0;

        if (!comments.length) {
        	return numLinesComments;
        }

        comments.forEach(comment =&amp;gt; {
    	    numLinesComments++;

            if (comment.type === &amp;quot;Block&amp;quot;) {
		        numLinesComments += comment.loc.end.line - comment.loc.start.line;
            }

            if (comment.loc.start.line === lineNumTokenBefore) {
		        numLinesComments--;
            }

            if (comment.loc.end.line === node.loc.start.line) {
      	        numLinesComments--;
            }
        });

        return numLinesComments;
    }

    // Проверка на наличие пустой строки перед нодой
    function hasNewlineBefore(node) {
      	const lineNumNode = node.loc.start.line;
        const lineNumTokenBefore = getLineNumberOfTokenBefore(node);
        const commentLines = calcCommentLines(node, lineNumTokenBefore);

        return (lineNumNode - lineNumTokenBefore - commentLines) &amp;gt; 1;
    }

    // Проверка токена перед нодой на совпадение с элементом массива
    function isPrecededByTokens(node, testTokens) {
  	    const tokenBefore = sourceCode.getTokenBefore(node);

        return testTokens.includes(tokenBefore.value);
    }

    // Является ли нода первой в родительском блоке
    function isFirstNode(node) {
        // Тип родительской ноды
  	    const parentType = node.parent.type;

        /**
        * Если родительская нода содержит body, то проверяем
        * является ли переданная нода телом родительской или первым элементом в ней
        */
        if(node.parent.body) {
    	    return Array.isArray(node.parent.body)
          		? node.parent.body[0] === node
          		: node.parent.body === node;
        }

        /**
        * Если родительская нода является Условием If,
        * то надо проверить, что перед нашей нодой есть &amp;quot;else&amp;quot; или &amp;quot;)&amp;quot;
        */
        if (parentType === &amp;quot;IfStatement&amp;quot;) {
    	    return isPrecededByTokens(node, [&amp;#x27;else&amp;#x27;, &amp;#x27;)&amp;#x27;]);
        }

        /**
        * Если родительская нода является блоком do-while,
        * то надо проверить, что перед нашей нодой есть &amp;quot;do&amp;quot;
        */
        if (parentType === &amp;quot;DoWhileStatement&amp;quot;) {
            return isPrecededByTokens(node, [&amp;quot;do&amp;quot;]);
        }

       /**
       * Если родительская нода является блоком switch case,
       * то надо проверить, что перед нашей нодой есть &amp;quot;:&amp;quot;
       */
        if (parentType === &amp;quot;SwitchCase&amp;quot;) {
           return isPrecededByTokens(node, [&amp;quot;:&amp;quot;]);
        }

        /**
        * Во всех остальных случаях проверяем на &amp;quot;)&amp;quot; перед нашей нодой
        */
        return isPrecededByTokens(node, [&amp;quot;)&amp;quot;]);
    }

    return {
        FunctionDeclaration(node) {
            // тут ничего не меняется
        },
    
        ReturnStatement(node) {
            if (!isFirstNode(node) &amp;amp;&amp;amp; !hasNewlineBefore(node)) {
                context.report({
                    node,
                    message: &amp;#x27;Поставьте пустую строку до return&amp;#x27;,
                    fix: function(fixer) {
    
                        if (canFix(node)) {
                            const tokenBefore = sourceCode.getTokenBefore(node);
                            const whitespaces = sourceCode.lines[node.loc.start.line - 1].replace(/return(.+)/, &amp;#x27;&amp;#x27;);
                            const newlines = node.loc.start.line === tokenBefore.loc.end.line ? &amp;#x60;\n\n${whitespaces}&amp;#x60; : &amp;#x60;\n${whitespaces}&amp;#x60;;
    
                            return fixer.insertTextBefore(node, newlines);
                        }
    
                        return null;
                    }
                });
            }
        },
    };
};&lt;/pre&gt;
  &lt;p id=&quot;qQ9t&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;FU1M&quot;&gt;Результат выполнения наших правил виден в правой нижней части AST Explorer.&lt;/p&gt;
  &lt;figure id=&quot;r5vk&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/b1/83/b183cf1c-dc23-461e-b8ad-f24492991318.png&quot; width=&quot;689&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;qMiV&quot;&gt;Теперь написанные правила нужно оформить в npm-пакет.&lt;/p&gt;
  &lt;ol id=&quot;XiNK&quot;&gt;
    &lt;li id=&quot;XcAg&quot;&gt;&lt;strong&gt;Создаем директорию для пакета:&lt;/strong&gt; &amp;#x60;mkdir my-eslint-rules&amp;#x60;&lt;/li&gt;
    &lt;li id=&quot;vLED&quot;&gt;&lt;strong&gt;Переходим в директорию проекта и инициализируем пакет:&lt;/strong&gt; &amp;#x60;cd my-eslint-rules &amp;amp;&amp;amp; npm init --yes&amp;#x60;&lt;/li&gt;
    &lt;li id=&quot;5krT&quot;&gt;&lt;strong&gt;Создаем файл index.js:&lt;/strong&gt; &amp;#x60;touch index.js&amp;#x60;&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p id=&quot;cDjp&quot;&gt;Внутри index.js размещаем наши правила:&lt;/p&gt;
  &lt;pre id=&quot;4UTA&quot;&gt;module.exports = {
  rules: {
    &amp;#x27;async-func-name&amp;#x27;: {
      create: function (context) {
        return { /* тут код правила добавляющего Async для асинхронных функций */ }
      },
    },
    &amp;#x27;new-line-before-return&amp;#x27;: {
        create: function (context) {
            return { /* тут код правила для добавления пустых строк перед return */ }  
        },
    },
  }
};&lt;/pre&gt;
  &lt;p id=&quot;azr4&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;68tH&quot;&gt;Можно разместить пакет в гит-репозитории или загрузить на npmjs.com. Для статьи мы будем проводить установку правила локально.&lt;/p&gt;
  &lt;ol id=&quot;6DsF&quot;&gt;
    &lt;li id=&quot;oapT&quot;&gt;Перейдите в директорию вашего проекта в котором вы хотите применить новые правила линтера: &amp;#x60;cd my-project&amp;#x60;.&lt;/li&gt;
    &lt;li id=&quot;pFg6&quot;&gt;Установите новый пакет с кастомными правилами: &amp;#x60;npm i ../my-eslint-rules --save-dev&amp;#x60;.&lt;/li&gt;
    &lt;li id=&quot;dsJh&quot;&gt;В файл конфигурации линтера &amp;#x60;.eslintrc&amp;#x60; добавьте наш плагин и определение правил:&lt;/li&gt;
  &lt;/ol&gt;
  &lt;pre id=&quot;udiY&quot;&gt;{
    &amp;quot;rules&amp;quot;: {
        &amp;quot;my-eslint-rules/async-func-name&amp;quot;: &amp;quot;warn&amp;quot;,
        &amp;quot;my-eslint-rules/new-line-before-return&amp;quot;: &amp;quot;warn&amp;quot;
    },
    &amp;quot;plugins&amp;quot;: [&amp;quot;my-eslint-rules&amp;quot;]
}&lt;/pre&gt;
  &lt;section style=&quot;background-color:hsl(hsl(55,  86%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;AyB3&quot;&gt;Предварительно в вашем проекте должен быть установлен ESLint.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;zBEp&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;5AAF&quot;&gt;Материалы по теме&lt;/h3&gt;
  &lt;p id=&quot;Oryb&quot;&gt;&lt;a href=&quot;https://eslint.org/docs/latest/developer-guide/working-with-rules&quot; target=&quot;_blank&quot;&gt;Как работать с правилами. Материал от команды ESLint&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://eslint-utils.mysticatea.dev/&quot; target=&quot;_blank&quot;&gt;Пакет вспомогательных утилит для написания правил&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://docs.npmjs.com/creating-and-publishing-scoped-public-packages&quot; target=&quot;_blank&quot;&gt;Как размещать npm-пакеты&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://habr.com/ru/company/ruvds/blog/415269/&quot; target=&quot;_blank&quot;&gt;Подробнее об абстрактных синтаксических деревьях&lt;/a&gt;&lt;/p&gt;

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