<?xml version="1.0" encoding="UTF-8"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" >

  <channel>
    <title><![CDATA[Все посты подряд / iOS / Хабр]]></title>
    <link>https://habr.com/ru/hubs/ios_dev/posts/</link>
    <description><![CDATA[iOS – мобильная ОС компании Apple]]></description>
    <language>ru</language>
    <managingEditor>editor@habr.com</managingEditor>
    <generator>habr.com</generator>
    <pubDate>Sat, 18 Apr 2026 17:11:49 GMT</pubDate>
    
    
      <image>
        <link>https://habr.com/ru/</link>
        <url>https://habrastorage.org/webt/ym/el/wk/ymelwk3zy1gawz4nkejl_-ammtc.png</url>
        <title>Хабр</title>
      </image>
    

    
      
        
    

  

  
  <item>
    <title><![CDATA[Пост @svetlana_dolmatova — Блог компании Wildberries & Russ (+1) — 15.04.2026 15:09]]></title>
    <guid isPermaLink="true">https://habr.com/ru/companies/wildberries/posts/1023798/</guid>
    <link>https://habr.com/ru/companies/wildberries/posts/1023798/?utm_campaign=1023798&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/fc3/0b1/a56/fc30b1a5680dba96a97770022ad82982.png" width="3840" height="2160"></figure><p><strong>Save the date: встречаемся 22 апреля на iOS Meetup Wildberries &amp; Russ</strong></p><p>22 апреля в 19:00 мск приглашаем на iOS-митап. В программе три технических доклада и нетворкинг с инженерами, которые ежедневно строят мобильную разработку в Wildberries &amp; Russ. Поговорим про автоматизацию релизного процесса, масштабируемое UI-тестирование и тонкости работы с файловой системой iOS.<br><br><strong><a href="https://doit.rwb.ru/pages/ios-meetup?utm_source=habr&amp;utm_medium=smm&amp;utm_campaign=ios-meetup&amp;utm_content=post" rel="noopener noreferrer nofollow">Регистрация</a></strong></p><p><strong>Доклады:</strong></p><p><strong>— Автоматизация релизов в Wildberries | <em>Севастьян Жуков, Deploy Lab Team Lead</em></strong></p><p>Как команда с нуля создала инструмент для управления релизным процессом мобильного приложения и масштабировала его на другие продукты компании. Разберём этапы автоматизации и работу с App Store API: управление релизами и отслеживание их статуса.</p><p><strong>— UI-тестирование приложения Wildberries | <em>Руслан Колчаков, iOS TestLab Lead и Валерий Карачаков, iOS TestLab Dev</em></strong></p><p>Руслан расскажет про вызовы при организации тестирования, инфраструктуру и метрики здоровья TestLab. Валерий дополнит докладом про распределённое UI-тестирование на динамически формируемом кластере раннеров: как избежать простоев, эффективно утилизировать ресурсы и ускорить тестирование.</p><p><strong>— Работа с файловой системой на iOS | <em>Александр Игнатьев, iOS-разработчик команды Асто</em></strong></p><p>Разберём нюансы работы с файлами, структуру iOS Sandbox и App Group как способ выйти за её пределы.</p><p>⏹️Формат: офлайн в Москве + онлайн-трансляция<br><a href="https://doit.rwb.ru/pages/ios-meetup?utm_source=habr&amp;utm_medium=smm&amp;utm_campaign=ios-meetup&amp;utm_content=post" rel="noopener noreferrer nofollow"><br></a><strong><a href="https://doit.rwb.ru/pages/ios-meetup?utm_source=habr&amp;utm_medium=smm&amp;utm_campaign=ios-meetup&amp;utm_content=post" rel="noopener noreferrer nofollow">Регистрация</a></strong></p> <a href="https://habr.com/ru/posts/1023798/?utm_campaign=1023798&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Wed, 15 Apr 2026 12:09:08 GMT</pubDate>
    <dc:creator><![CDATA[svetlana_dolmatova (Wildberries & Russ)]]></dc:creator>
      
      <category><![CDATA[ios]]></category><category><![CDATA[ios development]]></category><category><![CDATA[ios app]]></category><category><![CDATA[ios design]]></category><category><![CDATA[ios programming]]></category><category><![CDATA[митап в москве]]></category><category><![CDATA[митап]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @NataliaZheltova — Блог компании 2ГИС (+1) — 07.04.2026 18:43]]></title>
    <guid isPermaLink="true">https://habr.com/ru/companies/2gis/posts/1020494/</guid>
    <link>https://habr.com/ru/companies/2gis/posts/1020494/?utm_campaign=1020494&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>От хакатонного эксперимента до релиза,&nbsp;</strong>или как появился <a href="https://carplay.2gis.ru/?utm_source=habr" rel="noopener noreferrer nofollow">параллельный режим в CarPlay</a></p><p>Раньше при подключении CarPlay пользователи видели в приложении 2ГИС на телефоне «заглушку» — почти пустой экран. И наш iOS‑разработчик Ваня задумался: «Почему бы не добавить полезности?»</p><blockquote><p><em>Идея родилась на внутреннем хакатоне. Он решил не&nbsp;переносить интерфейс целиком, а&nbsp;разделить роли между устройствами. Телефон&nbsp;— для действий. CarPlay&nbsp;— для результата.</em></p><p><em>Собрал прототип, а затем команда подхватила инициативу. И это одна из самых быстрых задач, которая дошла до&nbsp;релиза.</em></p></blockquote><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/0b1/d99/01a/0b1d9901a63c8b9cec43ee3082efc96f.png" alt="Все действия выполняются на&nbsp;телефоне и&nbsp;сразу отображаются на&nbsp;экране в&nbsp;машине. Без переходов, без ожидания и&nbsp;без разрыва между устройствами" title="Все действия выполняются на&nbsp;телефоне и&nbsp;сразу отображаются на&nbsp;экране в&nbsp;машине. Без переходов, без ожидания и&nbsp;без разрыва между устройствами" width="1259" height="648"><div><figcaption>Все действия выполняются на&nbsp;телефоне и&nbsp;сразу отображаются на&nbsp;экране в&nbsp;машине. Без переходов, без ожидания и&nbsp;без разрыва между устройствами</figcaption></div></figure><p>Это интересно, потому что:&nbsp;</p><ul><li><p>новый сценарий для автомобилистов: теперь можно взаимодействовать с приложением на телефоне, пока навигация идёт в CarPlay;&nbsp;</p></li><li><p>красивый обход архитектурного ограничения;&nbsp;</p></li><li><p>инженерная инициатива, которая с хакатона дошла до прода. </p></li></ul> <a href="https://habr.com/ru/posts/1020494/?utm_campaign=1020494&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Tue, 07 Apr 2026 15:43:21 GMT</pubDate>
    <dc:creator><![CDATA[NataliaZheltova (2ГИС)]]></dc:creator>
      
      <category><![CDATA[carplay]]></category><category><![CDATA[ios]]></category><category><![CDATA[apple]]></category><category><![CDATA[навигатор]]></category><category><![CDATA[2ГИС]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @denis-19 — Swift (+2) — 01.04.2026 11:53]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1017886/</guid>
    <link>https://habr.com/ru/posts/1017886/?utm_campaign=1017886&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>Apple <a href="https://t.me/sparrowcode/308" rel="noopener noreferrer nofollow">представила</a> Swift Hypertext UI для вайбкодеров.</p><p>SwiftHUI новый декларативный язык разметки интерфейсов для iOS и macOS.</p><p>Никакого Swift. Никакого Xcode. Просто описываешь интерфейс словами.</p><pre><code class="bash">vstack spacing=20
  text font=title "Hello, Vibe!"
  button action=tap "Do the thing"
/vstack</code></pre><p>Переход на SwiftHUI будет безболезненным — вы уже умеете читать.</p><p>Apple позиционирует SwiftHUI как следующий шаг после SwiftUI: меньше кода и зависимости от инструментов. Работает даже в заметках.</p> <a href="https://habr.com/ru/posts/1017886/?utm_campaign=1017886&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Wed, 01 Apr 2026 08:53:58 GMT</pubDate>
    <dc:creator><![CDATA[denis-19]]></dc:creator>
      
      <category><![CDATA[104]]></category><category><![CDATA[юмор]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @denis-19 — Смартфоны (+2) — 30.03.2026 19:24]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1017090/</guid>
    <link>https://habr.com/ru/posts/1017090/?utm_campaign=1017090&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>Операторы начали предупреждать россиян о вероятном отключении оплаты Apple со счёта телефона. Например, один из операторов, ссылаясь на «сообщения ряда СМИ», предлагает пополнить баланс Apple ID на год.</p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/ee6/43e/9de/ee643e9dee77b3c77af9bd3a17905569.jpg" width="591" height="783"></figure><p>Минцифры РФ <a href="https://habr.com/ru/news/1016818/" rel="noopener noreferrer nofollow">обсуждает</a> возможность временно отключить оплату сервисов Apple со счета мобильного телефона, чтобы вынудить компанию вернуть популярные российские приложения в App Store. По данным СМИ, С 1 апреля 2026 года владельцы iPhone не смогут пополнять баланс Apple ID с мобильного счета.</p><p>Возможность оплаты подписок и покупок в экосистеме Apple напрямую с мобильного счёта на данный момент доступна у МТС и «Билайна». У «Т2 Мобайл» и «МегаФона» такая оплата есть через партнёров.</p><p>У российских пользователей остаётся ещё один обходной путь: цифровые коды пополнения. Физические подарочные карты исчезли из продажи еще в марте 2022 года, хотя раньше их можно было купить у крупных ретейлеров и через банковские приложения. Сейчас на маркетплейсах и у посредников продаются цифровые ваучеры, но за удобство приходится платить комиссией на уровне 15-20%. Есть и техническое ограничение: код должен быть выпущен именно для российского региона, иначе Apple ID просто не примет пополнение.  </p> <a href="https://habr.com/ru/posts/1017090/?utm_campaign=1017090&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Mon, 30 Mar 2026 16:24:28 GMT</pubDate>
    <dc:creator><![CDATA[denis-19]]></dc:creator>
      
      <category><![CDATA[app store]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @denis-19 — Смартфоны (+3) — 30.03.2026 13:34]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1016876/</guid>
    <link>https://habr.com/ru/posts/1016876/?utm_campaign=1016876&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>Минцифры РФ <a href="https://habr.com/ru/news/1016818/" rel="noopener noreferrer nofollow">обсуждает</a> возможность временно отключить оплату сервисов Apple со счета мобильного телефона, чтобы вынудить компанию вернуть популярные российские приложения в App Store. По данным СМИ, С 1 апреля 2026 года владельцы iPhone не смогут пополнять баланс Apple ID с мобильного счета.</p><p>Возможность оплаты подписок и покупок в экосистеме Apple напрямую с мобильного счёта на данный момент доступна у МТС и «Билайна». У «Т2 Мобайл» и «МегаФона» такая оплата есть через партнёров.</p><p>У российских пользователей остаётся ещё один обходной путь: цифровые коды пополнения. Физические подарочные карты исчезли из продажи еще в марте 2022 года, хотя раньше их можно было купить у крупных ретейлеров и через банковские приложения. Сейчас на маркетплейсах и у посредников продаются цифровые ваучеры, но за удобство приходится платить комиссией на уровне 15-20%. Есть и техническое ограничение: код должен быть выпущен именно для российского региона, иначе Apple ID просто не примет пополнение.  </p> <a href="https://habr.com/ru/posts/1016876/?utm_campaign=1016876&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Mon, 30 Mar 2026 10:34:14 GMT</pubDate>
    <dc:creator><![CDATA[denis-19]]></dc:creator>
      
      <category><![CDATA[app store]]></category><category><![CDATA[Apple]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @denis-19 — Смартфоны (+3) — 14.03.2026 15:33]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1010194/</guid>
    <link>https://habr.com/ru/posts/1010194/?utm_campaign=1010194&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>Операторы связи могут <a href="https://t.me/techmedia/19741" rel="noopener noreferrer nofollow">списывать</a> деньги за активацию iMessage по несколько раз за сутки из-за отключения мобильной связи. </p><p>Эта тема не&nbsp;новая, но&nbsp;когда в&nbsp;Москве отключили связь, деньги начали списывать на&nbsp;регулярной основе.</p><p>Списание денег за&nbsp;СМС <a href="https://support.mts.ru/mts_mobilnaya_svyaz/balans-i-spisaniya/pochemu-spisivayutsya-dengi-za-imessage-na-nomer-447786205094?ysclid=mmq5foququ810997341" rel="noopener noreferrer nofollow">связано</a> автоматической активацией сервисов Apple&nbsp;— iMessage или&nbsp;FaceTime. Для&nbsp;их работы айфон отправляет невидимое техническое СМС.&nbsp;Увидеть его нельзя, но&nbsp;оно оплачивается как&nbsp;международное СМС.</p><p>Обычно это происходит, когда вы перезагружаете телефон или&nbsp;переставляйте симку. Сейчас из‑за шатдауна телефон постоянно «переподключается», поэтому деньги списываются по&nbsp;несколько раз.</p><p>Как&nbsp;исправить. Зайти в «Настройки» → «Сообщения» и выключите переключатель «iMessage» Дополнительно можно отключить FaceTime в&nbsp;том&nbsp;же разделе настроек.</p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/63b/a07/275/63ba0727586275ec1c610e83a67d4ae8.jpg" width="1272" height="1272"></figure> <a href="https://habr.com/ru/posts/1010194/?utm_campaign=1010194&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Sat, 14 Mar 2026 12:33:16 GMT</pubDate>
    <dc:creator><![CDATA[denis-19]]></dc:creator>
      
      <category><![CDATA[iMessage]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @denis-19 — iOS (+4) — 03.03.2026 14:03]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1005962/</guid>
    <link>https://habr.com/ru/posts/1005962/?utm_campaign=1005962&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>Разработчик на&nbsp;iOS получает по $5&nbsp;млн каждый месяц на 24&nbsp;ИИ‑приложениях в&nbsp;App Store. В&nbsp;реальности это одно приложение в&nbsp;разных обёртках: распознавание камней, монет, древесины и даже звёзд. Фотографии пользователей по&nbsp;API передаются на&nbsp;серверы OpenAI, после чего ChatGPT идентифицирует предмет. </p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/f81/46b/71d/f8146b71dfc084f53b45a74bfdc31ae5.jpg" width="1280" height="674"></figure> <a href="https://habr.com/ru/posts/1005962/?utm_campaign=1005962&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Tue, 03 Mar 2026 11:03:08 GMT</pubDate>
    <dc:creator><![CDATA[denis-19]]></dc:creator>
      
      <category><![CDATA[iOS]]></category><category><![CDATA[App Store]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @denis-19 — Смартфоны (+2) — 17.01.2026 07:40]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/986022/</guid>
    <link>https://habr.com/ru/posts/986022/?utm_campaign=986022&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>Превращаем обои на iPhone в стильный календарь — он показывает текущую дату на и каждую ночь обновляется. При этом не нужны сторонние приложения — хватит встроенного приложения «Команды». </p><ul><li><p>Открываем <a href="https://calendar.aleynikov.biz/" rel="noopener noreferrer nofollow">сайт</a> проекта и выбираем модель iPhone, стиль оформления, цветовую схему и часовой пояс;  </p></li><li><p>Копируем ссылку, которую сгенерирует сайт; </p></li><li><p>Заходим в приложение «Команды», открываем вкладку «Автоматизация» внизу и жмём на знак «+»; </p></li><li><p>Создаём новую автоматизацию по времени суток: выставляем 00:01, выбираем «Немедленный запуск» и отключаем уведомления; </p></li><li><p>Добавляем действие «Получить содержимое URL» и вставляем туда скопированную ссылку с сайта; </p></li><li><p>Делаем второе действие «Установить фото как обои», выбираем только «Экран блокировки» (снимите галочку с домашнего экрана); </p></li><li><p>Разворачиваем настройки действия и отключаем «Показать окно просмотра»; </p></li><li><p>Нажмите «Play» внизу справа, чтобы проверить команду — обои должны смениться мгновенно.</p></li><li><p>Бонусом внизу будет отображаться прогресс года, чтобы вам удобнее было переживать из-за того, что до Нового года осталось 348 дней. </p></li></ul><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/772/286/761/772286761666ae6a9108f4b3049846bd.png" width="1131" height="740"></figure> <a href="https://habr.com/ru/posts/986022/?utm_campaign=986022&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Sat, 17 Jan 2026 04:40:39 GMT</pubDate>
    <dc:creator><![CDATA[denis-19]]></dc:creator>
      
      <category><![CDATA[календарь]]></category><category><![CDATA[iphone]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @denis-19 — iOS (+4) — 25.12.2025 18:30]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/980596/</guid>
    <link>https://habr.com/ru/posts/980596/?utm_campaign=980596&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>$500 тысяч долларов в месяц заработал разработчик <a href="https://apps.apple.com/us/app/alarmy-loud-alarm-clock-sleep/id1163786766" rel="noopener noreferrer nofollow">будильника</a> для iPhone. Разработчик выпустил приложение, где просто сделал сигнал в несколько раз громче стандартного решения от Apple. Приложение стало популярным в App Store.</p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/fdc/84e/ed6/fdc84eed6016ab392bcd1cb69fb04803.jpeg" width="800" height="346"></figure> <a href="https://habr.com/ru/posts/980596/?utm_campaign=980596&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Thu, 25 Dec 2025 15:30:41 GMT</pubDate>
    <dc:creator><![CDATA[denis-19]]></dc:creator>
      
      <category><![CDATA[App Store]]></category><category><![CDATA[будильник]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @denis-19 — Смартфоны (+4) — 09.12.2025 05:15]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/974688/</guid>
    <link>https://habr.com/ru/posts/974688/?utm_campaign=974688&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>В Telegram заработала система входа в аккаунт через Passkey, но только для российских номеров телефона. Ключевое преимущество Passkeys — возможность войти в аккаунт в одно касание, не вводя номер телефона и одноразовый код. </p><p>Как создать ключ: </p><ul><li><p>Убедитесь, что у вас последняя версия мессенджера (Android — 12.2.10; iOS — 12.2.3). </p></li><li><p>Как и вход по почте, новую функцию нужно предварительно настроить. Для этого откройте <em>Настройки › Конфиденциальность › Ключи доступа</em>. </p></li><li><p>Если пункт «Ключи доступа» отсутствует, то эта опция недоступна для вашего аккаунта. На текущий момент Passkeys доступны только для аккаунтов, к которым привязан российский номер. </p></li><li><p>Нажмите «Добавить ключ доступа» и подтвердите его создание. </p></li><li><p>Устройство может запросить код экрана блокировки или биометрию, чтобы разблокировать хранилище ключей. </p></li><li><p>Созданный ключ появится в списке.</p></li></ul><p> Как войти с помощью ключа: </p><ul><li><p>На актуальной версии Telegram для Android или iOS приложение автоматически предложит выбрать ключ доступа для входа. </p></li><li><p>Если это не происходит, через несколько секунд под заголовком «Номер телефона» появится ссылка «используйте ключ доступа», на которую следует нажать. </p></li><li><p>Нажатие на кнопку запустит ваш менеджер паролей, который предложит выбрать ключ, проверит вашу личность по лицу, отпечатку пальца либо PIN-коду экрана блокировки, а затем передаст выбранный ключ мессенджеру. </p></li><li><p>Ключ доступа выполняет функции как номера телефона, так и одноразового кода подтверждения одновременно.</p></li><li><p>Если вы включили двухфакторную авторизацию для аккаунта, вам потребуется ввести свой облачный пароль, который вы задали самостоятельно.</p></li></ul><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/0f7/1ab/5e6/0f71ab5e636eecfdefcf769e543a0fbc.jpg" width="2560" height="1920"></figure> <a href="https://habr.com/ru/posts/974688/?utm_campaign=974688&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Tue, 09 Dec 2025 02:15:23 GMT</pubDate>
    <dc:creator><![CDATA[denis-19]]></dc:creator>
      
      <category><![CDATA[telegram]]></category><category><![CDATA[passkey]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @denis-19 — Информационная безопасность (+4) — 08.12.2025 05:02]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/974312/</guid>
    <link>https://habr.com/ru/posts/974312/?utm_campaign=974312&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>В Telegram появилась опция авторизации через ключи доступа. Новая функция для Android и iOS под названием Passkey позволит входить в аккаунт без дополнительных подтверждений в виде СМС-кодов и паролей. Активировать ключи доступа можно в разделе «Конфиденциальность». Чтобы подключить функцию, нужно создать ключ и подтвердить личность с помощью сканирования лица (Face ID), отпечатка пальца (Touch ID) или код-пароля. Созданный Passkey будет храниться на устройстве. Функция поможет обойти ограничения при регистрации в мессенджере.</p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/db3/639/e0a/db3639e0a3860b3a6b3a23f812ac2a18.png" width="612" height="548"></figure> <a href="https://habr.com/ru/posts/974312/?utm_campaign=974312&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Mon, 08 Dec 2025 02:02:21 GMT</pubDate>
    <dc:creator><![CDATA[denis-19]]></dc:creator>
      
      <category><![CDATA[passkey]]></category><category><![CDATA[telegram]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @denis-19 — iOS (+2) — 17.11.2025 14:22]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/967200/</guid>
    <link>https://habr.com/ru/posts/967200/?utm_campaign=967200&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>Разработчик Дьюи Чан <a href="https://x.com/khanhduytran0/status/1989626181109653702" rel="noopener noreferrer nofollow">запустил</a> iPadOS 26 на iPhone 17 Pro Max, включая многооконный режим, плавающую клавиатуру, многозадачность, док и Spotlight. Из-за того что iPadOS не оптимизирована под iPhone, интерфейс выглядит мелко и местами работает с лагами. Окна масштабируются плавно, но текст в них выглядит очень мелко. Запустить iPadOS 26 на iPhone тестировщику удалось благодаря уязвимости в MobileGestalt — это системный компонент iOS, отвечающий за идентификацию устройства. Разработчик смог его взломать и заставил систему думать, что iPhone является iPad. Apple закрыла эту уязвимость в iOS 26.2 beta 2.</p><iframe id="691b0515de6a326436838e65" src="https://embedd.srv.habr.com/iframe/691b0515de6a326436838e65" class="embed_video embed__content" allowfullscreen="true"></iframe> <a href="https://habr.com/ru/posts/967200/?utm_campaign=967200&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Mon, 17 Nov 2025 11:22:27 GMT</pubDate>
    <dc:creator><![CDATA[denis-19]]></dc:creator>
      
      <category><![CDATA[iPadOS 26]]></category><category><![CDATA[iphone 17 pro max]]></category><category><![CDATA[iPhone]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @go_shan — Блог компании AvitoTech (+2) — N/P]]></title>
    <guid isPermaLink="true">https://habr.com/ru/companies/avito/posts/965788/</guid>
    <link>https://habr.com/ru/companies/avito/posts/965788/?utm_campaign=965788&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Как научить приложение работать офлайн?</strong></p><p>В новом выпуске подкаста <strong>Mobile Developer </strong>об этом рассказывает <strong>Данила Горячкин, iOS-инженер в Авито</strong>. Даня не понаслышке знаком с потребностью в мире Wi-Fi и развитой мобильной сети создать приложение, которое может работать без интернета, —  а потому ему точно есть, чем поделиться. </p><iframe id="6914a3f7b0f74d5af83d20dd" src="https://embedd.srv.habr.com/iframe/6914a3f7b0f74d5af83d20dd" class="embed_video embed__content" allowfullscreen="true"></iframe><p>Подписывайтесь на&nbsp;<a href="https://clc.to/mnG_FQ" rel="noopener noreferrer nofollow">канал AvitoTech в Telegram</a>, там мы рассказываем больше о профессиональном опыте наших инженеров, проектах и работе в Авито, а также анонсируем митапы и статьи.  </p> <a href="https://habr.com/ru/posts/965788/?utm_campaign=965788&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Wed, 12 Nov 2025 16:19:22 GMT</pubDate>
    <dc:creator><![CDATA[go_shan (AvitoTech)]]></dc:creator>
      
      <category><![CDATA[ios]]></category><category><![CDATA[mobile]]></category><category><![CDATA[avito]]></category><category><![CDATA[avitotech]]></category><category><![CDATA[мобильная разработка]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @daniilshat — iOS (+2) — 06.11.2025 19:05]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/963830/</guid>
    <link>https://habr.com/ru/posts/963830/?utm_campaign=963830&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><a href="https://www.whatsnewinwwdc.com/" rel="noopener noreferrer nofollow">What's new in Dub Dub</a> — сайт, на котором собрали все анонсы WWDC с 2015 года. Есть вкладки по разным операционным системам Apple, списки аппаратных обновлений, фреймворков, API, интерфейса, версий Swift, Xcode, SF Symbols и других инструментов для разработчиков. Для фреймворков и API предусмотрели ссылки на страницы в официальной документации.</p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/7e1/727/68e/7e172768e9691d242ad07f3089609b1b.jpg" width="1280" height="720"></figure> <a href="https://habr.com/ru/posts/963830/?utm_campaign=963830&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Thu, 06 Nov 2025 16:05:32 GMT</pubDate>
    <dc:creator><![CDATA[daniilshat]]></dc:creator>
      
      <category><![CDATA[wwdc]]></category><category><![CDATA[apple]]></category><category><![CDATA[ios]]></category><category><![CDATA[swift]]></category><category><![CDATA[мобильная разработка]]></category><category><![CDATA[разработка мобильных приложений]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @daniilshat — Интерфейсы (+4) — 26.10.2025 16:41]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/960302/</guid>
    <link>https://habr.com/ru/posts/960302/?utm_campaign=960302&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/542/2fc/76c/5422fc76cda44fd9697922420248b71e.jpg" width="1280" height="720"></figure><p>Пользователи <a href="https://www.reddit.com/r/ios/comments/1ofb3jt/really_microsoft/" rel="noopener noreferrer nofollow">жалуются</a>, что новые иконки Microsoft плохо различимы в «стеклянном» интерфейсе iOS 26. Со временем подключается память, но в первое время не всегда получается быстро найти нужное приложение. Больше всего похожи друг на друга иконки Excel, Word и OneNote. Самое яркая их отличительная черта — цвет, которого в «стеклянном» интерфейсе нет.</p> <a href="https://habr.com/ru/posts/960302/?utm_campaign=960302&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Sun, 26 Oct 2025 13:41:19 GMT</pubDate>
    <dc:creator><![CDATA[daniilshat]]></dc:creator>
      
      <category><![CDATA[иконки]]></category><category><![CDATA[microsoft]]></category><category><![CDATA[ios]]></category><category><![CDATA[интерфейс]]></category><category><![CDATA[приложения]]></category><category><![CDATA[софт]]></category><category><![CDATA[дизайн]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @denis-19 — iOS (+4) — 16.10.2025 07:22]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/956984/</guid>
    <link>https://habr.com/ru/posts/956984/?utm_campaign=956984&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>Дизайнеры Apple изменили функцию скриншота в новой версии iOS. Они зачем-то поменяли кнопки местами: кнопка удаления теперь находится на месте привычной кнопки сохранения. Из-за этого пользователи с непривычки удаляют снимки экрана сразу после создания. </p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/3bd/ed4/38a/3bded438ad667d49eba18b936b427076.jpg" width="1170" height="1093"></figure> <a href="https://habr.com/ru/posts/956984/?utm_campaign=956984&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Thu, 16 Oct 2025 04:22:04 GMT</pubDate>
    <dc:creator><![CDATA[denis-19]]></dc:creator>
      
      <category><![CDATA[ios]]></category><category><![CDATA[скриншот]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @NataliaZheltova — Блог компании 2ГИС (+3) — 09.09.2025 10:14]]></title>
    <guid isPermaLink="true">https://habr.com/ru/companies/2gis/posts/945200/</guid>
    <link>https://habr.com/ru/companies/2gis/posts/945200/?utm_campaign=945200&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>2ГИС на Apple Watch</strong></p><p>Год назад мы масштабно обновили приложение для 2ГИС на Apple Watch: начали показывать на часах местоположение близких в рамках функции «Друзья на карте» и поддерживать ведение по пешему маршруту. К очередной презентации Apple решили добавить ещё полезностей.&nbsp;</p><p>Теперь часы умеют вести и по маршрутам общественного транспорта — с указанием номеров маршрутов транспорта и полезными подсказками в пути. Мы сами знаем, что это особенно удобно, когда руки заняты или вокруг суета.&nbsp;</p><iframe id="68bfdbaabcaf78b28d42a4eb" src="https://embedd.srv.habr.com/iframe/68bfdbaabcaf78b28d42a4eb" class="embed_video embed__content" allowfullscreen="true"></iframe><blockquote><p><em>Об интересных моментах реализации рассказывает разработчик Иван Гнатюк.</em></p></blockquote><p><strong>Маленький экран — большие задачи</strong></p><p>Сделать маршрут общественного транспорта на часах оказалось не так уж сложно — помогли два момента:&nbsp;</p><ul><li><p>Во-первых, у нас уже было приложение на watchOS 10+, где работало пешее ведение и была настроена коммуникация телефон ← → часы.</p></li><li><p>Во-вторых, мы раньше делали отображение маршрута транспорта для Live Activity на телефоне, и смогли переиспользовать много вьюшек и бизнес-логики (а она бывает непростой).</p></li></ul><p>Оставалось только собрать из уже имеющихся блоков новое отображение для часов, что мы и сделали довольно быстро. Потом мы подумали, а почему бы не сделать и новое LA для общественного транспорта на часах? Текущее отображение от Dynamic Island с телефона выглядело скучно.</p><p>Сложность в том, что мы ограничены размерами часов, причём размеры варьируются 40– 49 мм. Скролл мы здесь добавить не можем, поэтому нужно попытаться уместить весь маршрут со всеми его сегментами на маленьком экранчике, попытавшись сохранить максимум полезной информации (номер маршрута, номер выхода из метро).</p><p>На помощь пришел <code>GeometryReader</code> — он даёт ширину контейнера, и, зная количество и тип сегментов, мы рисуем маршрут. Если пересадок на маршруте шесть и больше, то оставляем те, что помещаются, а вместо последнего покажем «....». Но на бою нам не удалось построить такой маршрут. Если вам удастся — расскажите нам!</p><p><strong>Разработка на настоящих часах — интересно, но непредсказуемо</strong></p><p>Разрабатывать и собирать на настоящих часах всегда интереснее. Но с этим могут быть свои приключения.&nbsp;</p><ul><li><p>Например, часы могут «отваливаться». Xcode к ним не подключается и приходится постоянно проверять настройки часов и подключение к WiFi.&nbsp;</p></li><li><p>Иногда таргет часов ни в какую не хочет устанавливаться на часы — помогает только их перезагрузка.</p></li><li><p>А в какой то момент на часах перестал отображаться и новый LA, и простая трансляция DI. Перезагружали и часы, и телефон — ничего не помогало. Оказалось, что в какой то момент телефон обновился, а часы нет. Вот так и сломалось.</p></li></ul><p><strong>Как работает для пользователя</strong></p><p>Для того чтобы видеть основные этапы маршрута, нужно построить маршрут на общественном транспорте в приложении на смартфоне и нажать «В путь», а на часах открыть приложение 2ГИС. В пути достаточно посматривать на часы — приложение покажет ключевую информацию с помощью Live Activities: иконки транспорта с цветом ветки метро, номер выхода, время в пути и пересадки, если они предусмотрены. Чтобы просмотреть весь маршрут, достаточно тапнуть на Live Activities и прокрутить Digital Crown.</p><p>Всё будет работать на Apple Watch с watchOS 11, iPhone с iOS 18 и в приложении 2ГИС версии 7.11 или новее. На часы отдельно ничего ставить не нужно — всё подтянется из приложения на айфоне.</p> <a href="https://habr.com/ru/posts/945200/?utm_campaign=945200&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Tue, 09 Sep 2025 07:14:07 GMT</pubDate>
    <dc:creator><![CDATA[NataliaZheltova (2ГИС)]]></dc:creator>
      
      <category><![CDATA[презентация apple]]></category><category><![CDATA[apple watch]]></category><category><![CDATA[2гис]]></category><category><![CDATA[разработка мобильных приложений]]></category><category><![CDATA[тестирование мобильных приложений]]></category><category><![CDATA[ios]]></category><category><![CDATA[watchos]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @atomlib — Android (+4) — 06.09.2025 16:11]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/944572/</guid>
    <link>https://habr.com/ru/posts/944572/?utm_campaign=944572&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>Кормак Хэйден&nbsp;— владелец Oasis, приложения для iPhone и смартфонов на Android, которое публикует якобы научно обоснованные рейтинги воды и фильтров, опираясь на результаты лабораторных тестов и открытые данные. Плату берут за, как утверждается, доступ к части функций, чтобы финансировать независимые (без рекламы) анализы. На сайте проекта <a href="https://www.oasishealth.app/tap-water" rel="noopener noreferrer nofollow">ведётся</a> раздел с рейтингами бутилированной воды и фильтров, поиск по водопроводной воде по городам США, а также возможность заказать домашние тест-наборы для отправки проб в лабораторию.</p><p>В личном микроблоге Хэйден <a href="https://x.com/cormachayden_/status/1963643566443601957" rel="noopener noreferrer nofollow">опубликовал</a> лаконичный пост. В нём он в три слова и две кавычки пожаловался, что его давно просили сделать приложение для Android, но финансовый результат Кормака разочаровал.</p><figure class=""><img src="https://habrastorage.org/webt/ct/na/1r/ctna1rogbdlwgfzvn0nsgvxzgog.jpeg" alt="cormachayden_" title="cormachayden_"><div><figcaption><a href="https://x.com/cormachayden_/status/1963643566443601957" rel="noopener noreferrer nofollow">cormachayden_</a></figcaption></div></figure><p>В комментариях Хэйдену <a href="https://x.com/HiiJax/status/1963714826619765104" rel="noopener noreferrer nofollow">указали</a>, что кнопка покупки на Android попросту была сломана. Кормак <a href="https://x.com/cormachayden_/status/1963736507124232677" rel="noopener noreferrer nofollow">ответил</a>, что локально на его машине всё работает. На самом деле ситуация ещё более смешная.</p><p>Оплата на Android в Oasis действительно сломана, это так. Однако в регионе США всё работает, <a href="https://x.com/cormachayden_/status/1963822020078235957" rel="noopener noreferrer nofollow">указывает</a> Хэйден. Это будет относительно легко пофиксить. Забавно именно то, что поправить уже нельзя: база данных данных Oasis крайне похожа на открытую закраудсорсенную базу данных OpenFoodFacts, а схожие же функции <a href="https://x.com/6thumbs/status/1963739271115997479" rel="noopener noreferrer nofollow">даёт</a> бесплатное приложение Yuka. Кстати, Oasis по дизайну UI сильно напоминает Yuka.</p><p>Один из комментаторов даже <a href="https://x.com/data_ccelerator/status/1963720882167128355" rel="noopener noreferrer nofollow">назвал</a> Oasis всего лишь фронтендом OpenFoodFacts. Кормак <a href="https://x.com/cormachayden_/status/1963735787008319878" rel="noopener noreferrer nofollow">парировал</a>, что в данных последней тяжёлых металлов и ПФАС нету и что Oasis собирает и публикует лабораторные данные, а Yuka якобы устарела, часто ошибается и не включает лабораторные измерения. Впрочем, в комментариях <a href="https://x.com/RedDevi52539977/status/1963735990238900443" rel="noopener noreferrer nofollow">спросили</a>, не заполняет ли Oasis эти значения случайными числами. Один из микроблогеров <a href="https://x.com/janderson45/status/1963792877521191332" rel="noopener noreferrer nofollow">заметил</a>, что на двух скриншотах у бренда Fiji стоит <a href="https://x.com/cormachayden_/status/1963741978501521850" rel="noopener noreferrer nofollow">разная оценка</a>.</p><p>На самом деле часто данные Oasis вводят в заблуждение. В комментариях к твиту <a href="https://x.com/GabyStanAcc/status/1963854689562140782" rel="noopener noreferrer nofollow">нашли</a> ошибки в выставленных предельно допустимых концентрациях: в приложении часто занижены ПДК относительно рекомендуемых властями США, и в реальности представленные количества вредных веществ представлять угрозу <a href="https://x.com/LaissezLucas/status/1963739882968190999" rel="noopener noreferrer nofollow">не могут</a>. Зато эта дополнительная строгость к чистоте на три–четыре порядка ниже ПДК позволяет резко критиковать разные бренды за наличие в них мышьяка и тяжёлых металлов.</p><p>Хэйден резок в суждениях. В ответ на критику он <a href="https://x.com/cormachayden_/status/1963760565412917293" rel="noopener noreferrer nofollow">заявил</a>, что стандарты собеседника в отношении еды и здоровья устарели. Остряки на это <a href="https://x.com/chandlerseita1/status/1963770110205948104" rel="noopener noreferrer nofollow">заметили</a>, что его Oasis допускает грубые грамматические ошибки уже в описании в каталоге приложений.</p><p>Наконец, секретом финансового успеха может быть банальный обман пользователей. Один из комментаторов <a href="https://x.com/shhjawline/status/1963697731492352445" rel="noopener noreferrer nofollow">указывает</a> на тестовый период, который может запутать. Триал длится три дня, а затем начинают списывать по $4,99&nbsp;в неделю. Возможно, что часть пользователей удаляет приложение и просто забывает отключить эту подписку.</p><p>Вызывает вопросы сама цена. Есть ли смысл платить по $30&nbsp;ежегодной подписки за привилегию сравнивать разные бренды бутилированной воды? И вообще, заслуживает ли статуса отдельного приложения то, что может быть страницей в Интернете?</p> <a href="https://habr.com/ru/posts/944572/?utm_campaign=944572&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Sat, 06 Sep 2025 13:11:06 GMT</pubDate>
    <dc:creator><![CDATA[atomlib]]></dc:creator>
      
      <category><![CDATA[Android]]></category><category><![CDATA[iOS]]></category><category><![CDATA[iPhoneOS]]></category><category><![CDATA[мобильные операционные системы]]></category><category><![CDATA[операционные системы]]></category><category><![CDATA[бутилированная вода]]></category><category><![CDATA[вода]]></category><category><![CDATA[ПДК]]></category><category><![CDATA[приложения]]></category><category><![CDATA[монетизация]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @denis-19 — Смартфоны (+1) — 02.09.2025 12:27]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/943044/</guid>
    <link>https://habr.com/ru/posts/943044/?utm_campaign=943044&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>В&nbsp;российских магазинах при&nbsp;покупке iPhone теперь покупателей требуют <a href="https://tass.ru/ekonomika/24931403" rel="noopener noreferrer nofollow">подписать</a> документ об&nbsp;отказе от&nbsp;претензий, связанных с&nbsp;отсутствием RuStore. В&nbsp;документе говорится, что «товар имеет недостаток: невозможно установить и использовать единый магазин приложений RuStore».</p><blockquote><p>Приобретая данный товар, потребитель уведомлен и согласен с&nbsp;обозначенным недостатком и не&nbsp;вправе предъявлять требования в&nbsp;связи с&nbsp;его наличием на&nbsp;основании ст. 18&nbsp;РФ закона «О защите прав потребителей».</p></blockquote><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/3db/f50/976/3dbf50976c9969983a254b7abc7b2fcd.jpeg" width="1440" height="664"></figure> <a href="https://habr.com/ru/posts/943044/?utm_campaign=943044&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Tue, 02 Sep 2025 09:27:41 GMT</pubDate>
    <dc:creator><![CDATA[denis-19]]></dc:creator>
      
      <category><![CDATA[iphone]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @denis-19 — Смартфоны (+2) — 01.09.2025 06:49]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/942626/</guid>
    <link>https://habr.com/ru/posts/942626/?utm_campaign=942626&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>С 1&nbsp;сентября 2025&nbsp;года в&nbsp;России вступили новые правила: все смартфоны и планшеты, продающиеся в&nbsp;стране, должны иметь предустановленный магазин приложений RuStore. На&nbsp;iPhone реализовать подобное невозможно, из‑за чего ритейлеры нашли обходное решение.</p><p>Магазины начали отмечать iPhone специальными пометками. У&nbsp;большинства сетей используется маркировка «без RuStore», а&nbsp;некоторые компании добавляют уточнение, что&nbsp;устройство имеет «недостаток». Такая формулировка юридически приравнивает смартфон к «бракованному» и позволяет покупателю вернуть его в&nbsp;течение года.</p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/b45/52c/2d6/b4552c2d6a61a324249b8a46e7ffea05.jpeg" width="1280" height="1046"></figure> <a href="https://habr.com/ru/posts/942626/?utm_campaign=942626&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Mon, 01 Sep 2025 03:49:54 GMT</pubDate>
    <dc:creator><![CDATA[denis-19]]></dc:creator>
      
      <category><![CDATA[iPhone]]></category><category><![CDATA[брак]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @NataliaZheltova — Блог компании 2ГИС (+1) — N/P]]></title>
    <guid isPermaLink="true">https://habr.com/ru/companies/2gis/posts/941726/</guid>
    <link>https://habr.com/ru/companies/2gis/posts/941726/?utm_campaign=941726&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>App Clip в деле: сделали расписание транспорта без установки приложения и лишних мегабайт</strong></p><p>В 2ГИС мы любим эксперименты с технологиями. Когда Apple представила App Clips — мини-версии iOS-приложений, — мы начали думать, что ж сделать такое полезное, быстрое и удобное. Появилась идея: а что если показать расписание транспорта прямо на остановке, без установки приложения? Идеально для ситуации, когда нужно  получить информацию в моменте.  </p><p>Пилотный проект начали с Екатеринбурга — на остановках в центре города уже появились QR-коды, по которым можно мгновенно получить расписание автобусов, трамваев и троллейбусов. </p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/374/e3c/d40/374e3cd405650743161995f0efd36200.png" width="1912" height="1080"></figure><p><strong>Реализация: просто, но есть нюансы</strong></p><p>У нас была цель — запустить всё быстро и без лишней сложности. Поэтому мы пошли по самому простому пути. Однако не обошлось без сюпризов: мы столкнулись с интересной особенностью сборки и дистрибуции через App Store.</p><p>Когда собирается билд, бинарь App Clip попадает в общий application bundle — вместе с ресурсами, ассетами и иконками. Мы переживали, что это увеличит размер основного приложения для пользователей.</p><p>Однако на этапе загрузки в App Store Connect происходит app thinning (slicing) — бинарь анализируется и оптимизируется на стороне App Store. Получается, что из финальной сборки, доступной пользователю, App Clip удаляется. В результате конечный IPA, который скачивает пользователь, не увеличивается в размере, несмотря на то, что в исходном проекте ресурсы App Clip действительно включены в общий bundle.</p><p>Чтобы убедиться в этом, мы проверили это на практике:</p><ol><li><p>Собрали билд, в котором бинарь App Clip действительно оказался в общем application bundle.</p></li><li><p>Загрузили его в App Store Connect.</p></li><li><p>После релиза скачали IPA напрямую из App Store и проанализировали содержимое.</p></li></ol><p>Результат: в финальном бинаре bundle App Clip отсутствует. Пользователи получают приложение без дополнительного груза, а размер основного приложения не растёт.&nbsp;К слову, в официальной документации Apple этот момент описан довольно туманно, так что мы решили проверить всё на себе. </p><p>App Clips считаются не самой популярной фичей, но всё же было интересно покопаться, собрать, выкатить и посмотреть, как это работает в реальности. </p><p>Если вы пробовали App Clips — расскажите про свой опыт! Может, нашли нестандартные подходы или столкнулись с подводными камнями, о которых стоит знать другим?</p> <a href="https://habr.com/ru/posts/941726/?utm_campaign=941726&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Fri, 29 Aug 2025 11:01:34 GMT</pubDate>
    <dc:creator><![CDATA[NataliaZheltova (2ГИС)]]></dc:creator>
      
      <category><![CDATA[app clips]]></category><category><![CDATA[разработка под ios]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @AppCrafter — iOS (+3) — 29.08.2025 06:50]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/941856/</guid>
    <link>https://habr.com/ru/posts/941856/?utm_campaign=941856&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Cursor теперь помогает составлять User Rules</strong></p><p>В Cursor буквально сегодня увидел новую опцию. А именно: когда с ним работаешь по проекту и по ходу как-то его поправляешь, то внизу слева выскакивает пимпочка и предлагает занести такие вещи в User Rules.</p><p>Очень даже удобно. Не надо самому отдельно все записывать, а потом переносить. </p> <a href="https://habr.com/ru/posts/941856/?utm_campaign=941856&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Fri, 29 Aug 2025 03:50:04 GMT</pubDate>
    <dc:creator><![CDATA[AppCrafter]]></dc:creator>
      
      <category><![CDATA[Cursor]]></category><category><![CDATA[User Rules]]></category><category><![CDATA[Vibe Coding]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @AppCrafter — iOS (+4) — 01.08.2025 04:46]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/933042/</guid>
    <link>https://habr.com/ru/posts/933042/?utm_campaign=933042&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>BPN vs MVM</strong></p><p>В двух, приложенных к этому посту файлах (<a href="https://drive.google.com/file/d/1jj5ntcRRTUKwkn-7-1vqhDh2FbJD7mXh/view?usp=share_link" rel="noopener noreferrer nofollow">здесь</a> и <a href="https://drive.google.com/file/d/1-Qy4jpb9_KOCAtL64B1WtYXsoQE5sN-T/view?usp=share_link" rel="noopener noreferrer nofollow">здесь</a>), показан код для решения одной и той же задачи в мобильном приложении. А именно: запустить обратный отсчёт перед началом игры.</p><p>В одном файле эта задача реализована в архитектуре BPN (Business Process Notation), о которой рассказывал раньше <a href="https://habr.com/ru/articles/866376/" rel="noopener noreferrer nofollow">здесь</a>. А во втором файле тот же код организован по архитектуре MVVM.</p><p>Код и в том, и в другом файле написан с помощью Claude Sonnet. В случае с BPN структурировал код вручную, следуя бизнес-процессам. А во втором случае попросил Клода сделать рефакторинг, используя традиционный современный подход и он выбрал MVVM.</p><p>Что можно сказать в итоге, сравнивая архитектуру в том, и другом случае.&nbsp;</p><p><strong>Объём кода</strong></p><p>В BPN варианте 270 строки кода с комментариями, в MVVM - 524.</p><p>Т.е., в MVVM случае кода практически в 2 раза больше.</p><p><strong>Количество сущностей, объектов.</strong></p><p>BPN - один класс и 3 раширения к нему.</p><p>MVM - 6 классов, 1 структура, 3 протокола, каллбэки, фабрика, расширение.</p><p><strong>Архитектура</strong></p><p>BPN - монолит.</p><p>MVVM - вью и модель, анимация и аудио как сервисы, роутер, отдельная структура для хранения значений свойств и т.д.</p><p><strong>Что лучше</strong></p><p>Как всегда, каждый из подходов имеет свои плюсы и минусы.</p><p>В BPN нравится, что можно видеть модель процесса, в данном случае модель одной из задач приложения.</p><p><strong>Что такое “Модель”</strong></p><p>Наиболее традиционны 2 понимания термина “модель”.</p><p>В одном случае, это структура данных, модель объекта.</p><p>Например:</p><p><code>struct Person {</code></p><p><code>  let firstName: String</code></p><p><code>  let lastName: String</code></p><p><code>  var age: Int</code></p><p><code>}</code></p><p>В другом случае, под моделью понимается всё, что не относится к интерфейсу.</p><p>Но есть и третье понимание модели - это модель приложения, или модель отдельных процессов внутри приложения. Т.е., составные части приложения (процесса) и их последовательность.</p><p>В BPN файле такая модель проступает наглядно:</p><figure class="bordered "><img src="https://habrastorage.org/getpro/habr/upload_files/def/28b/4bf/def28b4bf24268f4617adde0deb5b8ce.png" alt="Модель процесса &quot;Обратный отсчет&quot;" title="Модель процесса &quot;Обратный отсчет&quot;" width="432" height="1424"><div><figcaption>Модель процесса "Обратный отсчет"</figcaption></div></figure><p>&nbsp;Здесь Обратный отсчёт складывается из таких блоков как <strong>подготовка</strong>, собственно <strong>выполнение</strong>, <strong>анимация</strong>, <strong>звук</strong> и <strong>закрытие</strong> экрана. Внутри каждого этапа видны его составляющие - методы и необходимые свойства.</p><p>В файале MVVM блоков кода гораздо больше и нужно несколько раз проскоролить чтобы увидеть их в выпадающем меню. И увидеть целостную модель здесь сложнее.</p><p><strong>Conclusion</strong></p><p>На относительно небольших проектах архитектура MVVM может быть избыточна. Здесь могут использоваться более простые варианты.</p><p>BPN позволяет видеть целостную модель задачи (процесса, приложения).</p> <a href="https://habr.com/ru/posts/933042/?utm_campaign=933042&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Fri, 01 Aug 2025 01:46:19 GMT</pubDate>
    <dc:creator><![CDATA[AppCrafter]]></dc:creator>
      
      <category><![CDATA[MVVM]]></category><category><![CDATA[BPN]]></category><category><![CDATA[архитектура приложений]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @Wok_u3_cBuHuHbl — Фототехника (+1) — N/P]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/921712/</guid>
    <link>https://habr.com/ru/posts/921712/?utm_campaign=921712&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Тесты Project Indigo - альтернативной камеры для iOS</strong></p><p>Прочитал тут на днях новости [<a href="https://habr.com/ru/news/920394/" rel="noopener noreferrer nofollow">раз</a>] [<a href="https://habr.com/ru/companies/bothub/articles/921300/" rel="noopener noreferrer nofollow">два</a>] [<a href="https://www.dpreview.com/news/4142720910/adobe-quietly-made-a-super-powered-camera-app-for-iphone" rel="noopener noreferrer nofollow">три</a>] [<a href="https://gregbenzphotography.com/photography-reviews/project-indigo-the-best-camera-app-for-smart-phones/" rel="noopener noreferrer nofollow">четыре</a>], что Adobe выкатила <em>революционное </em>приложение, и сразу зачесались руки его протестировать. Шутка ли? Теперь же телефон будет снимать как заправская DSLR камера.</p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/c42/b8a/a3e/c42b8aa3efa85afddd6cbda29f4abc20.jpg" alt="AI говорили они.. алгоритмы.." title="AI говорили они.. алгоритмы.." width="583" height="459"><div><figcaption>AI говорили они.. алгоритмы..</figcaption></div></figure><p>Взял я значит свой iPhone 16 Pro и пошел попить пивка в городе, да поискать что можно сфотографировать для теста.</p><p>Я, конечно, не настоящий фотограф, так - зеркалку лет ...надцать назад в руках держал, но по моему мнению <em>прорывом</em> тут и не пахнет.<br>Ниже будут несколько фотографий, снятых на нативное приложение Камера на iPhone, и аналогичные снятые на Indigo. Всё снималось с автоматическими настройками. Что-то "срук", что-то на телефон, прислонённый к какому-нибудь ровному объекту.</p><p><strong>Project Indigo</strong></p><p><a href="https://ibb.co/DPBqPt9p" rel="noopener noreferrer nofollow">Раз</a> <a href="https://ibb.co/3yHyRcK8" rel="noopener noreferrer nofollow">Два</a> <a href="https://ibb.co/nq45SDns" rel="noopener noreferrer nofollow">Три</a> <a href="https://ibb.co/zhjS8BtT" rel="noopener noreferrer nofollow">Четыре</a> <a href="https://ibb.co/TD0MWRFK" rel="noopener noreferrer nofollow">Пять</a> <a href="https://ibb.co/CKCPMh9B" rel="noopener noreferrer nofollow">Шесть</a> <a href="https://ibb.co/5gqwFWsw" rel="noopener noreferrer nofollow">Семь</a></p><p><strong>iPhone Camera app</strong></p><p><a href="https://ibb.co/Rk5LhHS3" rel="noopener noreferrer nofollow">Раз</a> <a href="https://ibb.co/5XGgm2sR" rel="noopener noreferrer nofollow">Два</a> <a href="https://ibb.co/4ZRsCyPG" rel="noopener noreferrer nofollow">Три</a> <a href="https://ibb.co/pvG3skBZ" rel="noopener noreferrer nofollow">Четыре</a> <a href="https://ibb.co/GQs7pkct" rel="noopener noreferrer nofollow">Пять</a> <a href="https://ibb.co/5XVCBhRD" rel="noopener noreferrer nofollow">Шесть</a> <a href="https://ibb.co/MrH7dhK" rel="noopener noreferrer nofollow">Семь</a></p><p>Выводы, как обычно, предлагаю сделать вам самим.</p><p>А, ну эта штука еще очень сильно телефон нагревает, чуть ли не до того, что подсветка экрана до нуля падает.</p> <a href="https://habr.com/ru/posts/921712/?utm_campaign=921712&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Tue, 08 Jul 2025 16:08:46 GMT</pubDate>
    <dc:creator><![CDATA[Wok_u3_cBuHuHbl]]></dc:creator>
      
      <category><![CDATA[Apple]]></category><category><![CDATA[iPhone]]></category><category><![CDATA[Adobe]]></category><category><![CDATA[project indigo]]></category><category><![CDATA[Indigo]]></category><category><![CDATA[нейросети]]></category><category><![CDATA[ai]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @denis-19 — Смартфоны (+2) — 18.06.2025 08:03]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/919404/</guid>
    <link>https://habr.com/ru/posts/919404/?utm_campaign=919404&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>Google опубликовала ролик в рамках своей юмористической рекламной кампании Best Phones Forever с «диалогом» между&nbsp;персонифицированными смартфонами Pixel и iPhone. Повествование разворачивается вокруг анонсированных Apple «прорывных» функций iOS 26, которые, по&nbsp;задумке Google, на&nbsp;самом деле уже давно доступны пользователям Pixel. </p><p>В видео iPhone перечисляет «новые» возможности операционной системы Apple: перевод сообщений и звонков в&nbsp;режиме реального времени, интеллектуальный отбор вызовов и умное удержание. Выясняется, что аналогичный функционал появился на&nbsp;устройствах Pixel еще пять лет назад, что ставит под&nbsp;сомнение новизну представленных Apple решений. </p><iframe id="68524852aadce8eb96b8b225" src="https://embedd.srv.habr.com/iframe/68524852aadce8eb96b8b225" class="embed_video embed__content" allowfullscreen="true"></iframe> <a href="https://habr.com/ru/posts/919404/?utm_campaign=919404&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Wed, 18 Jun 2025 05:03:47 GMT</pubDate>
    <dc:creator><![CDATA[denis-19]]></dc:creator>
      
      <category><![CDATA[google]]></category><category><![CDATA[pixel]]></category><category><![CDATA[android]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @Not_coolEd — Android (+1) — N/P]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/918986/</guid>
    <link>https://habr.com/ru/posts/918986/?utm_campaign=918986&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>📜 M-V-подставь_свое</strong></p><p><strong>Model-View-*** -</strong> это шаблоны проектирования<br> Важное уточнение: это шаблоны проектирования только для <strong>presentation</strong> слоя, а не для целого приложения</p><p>💃 <strong>Model</strong><br> - это как раз та часть приложения о которой мы ближайшее время говорить не будем<br> Чаще всего ее называют бизнес логикой, но это не совсем верно<br> Пока, лучше всего воспринимать ее как модель данных которую наше приложение хочет передать пользователю<br> Причем не важно будет это Ui или API, или что-то другое<br> MV шаблоны не про frontend, а про то как передать данные клиенту, кем бы он ни был</p><p>🖼 <strong>View</strong><br> - это само представление данных пользователю. То, что он по итогу получит<br> В мире андройд это обычно Activity, Fragment, View или Compose</p><p><strong>🪝***</strong><br> - это <strong>какая-то</strong> прослойка между моделью данных и их представлением пользователю</p><p><strong>Для чего все эти шаблоны вообще придумали?</strong></p><p>Дело в том, что View это какой-то вариант отображения данных клиенту 🏐<br> И часто возникает ситуация, что нужно создать другой вариант отображения ⚽️<br> Это может быть как бизнес потребность в перекраске кнопок и проведении при этом ab-тестов, 🏀<br> или желании разработчиков заменить технологию отображения 🏈</p><p>Например, у вас было консольное приложение, а вы вдруг захотели сделать для него UI (GitBash|GitUi здравствуйте),<br> ну или решили заменить <strong>Android.View</strong> на <strong>Compose</strong></p><p>Во всех этих случаях нам хочется чем-то разделить саму <strong>View и работу с Model</strong>, чтобы иметь возможность заменить только View, не трогая ничего другого</p><p>В Android, к этому еще добавляется <strong>проблема пересоздания</strong> View при изменении конфигурации. Когда вы переворачиваете экран (и не только), весь ваш UI просто уничтожается и создается полностью заново. Хотя с точки зрения пользователя это все тот же экран с теми же данными 🫠</p><p>Это создает дополнительную потребность <strong>отвязать View от остального приложения</strong>, чтобы можно было ее подменять прямо в рантайме</p><p>Основные шаблоны это <strong>MVC</strong>, <strong>MVP</strong>, <strong>MVVM</strong> и <strong>MVI</strong><br> О них мы и поговорим в следующих постах...</p><p><em>ПС. Посты с большим опережением есть в тг канале из описания профиля</em></p> <a href="https://habr.com/ru/posts/918986/?utm_campaign=918986&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Tue, 17 Jun 2025 09:00:30 GMT</pubDate>
    <dc:creator><![CDATA[Not_coolEd]]></dc:creator>
      
      <category><![CDATA[arhitectura]]></category><category><![CDATA[mvc]]></category><category><![CDATA[mvp]]></category><category><![CDATA[mvvm]]></category><category><![CDATA[mvi]]></category><category><![CDATA[design templates]]></category><category><![CDATA[templates]]></category><category><![CDATA[notcooled]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @denis-19 — Смартфоны (+3) — 11.06.2025 16:37]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/917660/</guid>
    <link>https://habr.com/ru/posts/917660/?utm_campaign=917660&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>Apple <a href="https://tv.apple.com/ru/clip/haptic-trailer/umc.cmc.5834l80x7lpxvb1wqiz7uvgj7?targetId=umc.cmc.3t6dvnnr87zwd4wmvpdx5came&amp;targetType=Movie" rel="noopener noreferrer nofollow">выпустила</a>  тактильный трейлер фильма F1, улучшенный с помощью вибраций iPhone. </p><p>Если у вас iPhone под управлением iOS 18.4 или более поздней версии, на вкладке Apple TV Plus приложения TV теперь есть трейлер предстоящего фильма Брэда Питта F1, который теперь улучшен с помощью вибраций, создаваемых современным компонентом Taptic Engine в iPhone. </p><p>Пользователи могут не только почувствовать обороты двигателя болида F1, но и более тонкие события в трейлере, такие как щелчок ремня безопасности и нажатие кнопок на рулевом колесе. </p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/68f/db0/bba/68fdb0bba7f2f9b79d6002e74e18302d.png" width="881" height="1042"></figure> <a href="https://habr.com/ru/posts/917660/?utm_campaign=917660&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Wed, 11 Jun 2025 13:37:11 GMT</pubDate>
    <dc:creator><![CDATA[denis-19]]></dc:creator>
      
      <category><![CDATA[iphone]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @Surf_Studio — Блог компании Surf (+3) — N/P]]></title>
    <guid isPermaLink="true">https://habr.com/ru/companies/surfstudio/posts/915980/</guid>
    <link>https://habr.com/ru/companies/surfstudio/posts/915980/?utm_campaign=915980&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Смотрите WWDC 2025 вместе с Surf и участвуйте в розыгрыше</strong> 🎧</p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/553/9b0/44a/5539b044a79faa7fe768fee030c80383.png" width="1920" height="1080"></figure><p>Готовы к WWDC? Подключайтесь к нашей трансляции 9 июня в 20:00 по Москве. В прямом эфире мы вместе с сёрферами разберём главные анонсы и свежие решения Apple. Ожидается много интересного: от революционных обновлений iOS 26 и macOS 26 до новинок в мире ИИ-технологий от Apple.</p><p>Присоединяйтесь к нашему обсуждению. На стриме будут Head of Flutter Surf, Евгений Сатуров, и наши опытные iOS-разработчики — Кирилл и Антон. Они поделятся своим экспертным мнением о свежих решениях Apple. Будем активно общаться в чате, делиться впечатлениями и мнениями о презентации. </p><p>А чтобы было еще интереснее смотреть, мы разыграем на трансляции AirPods 4. Все подробности об этом здесь: <a href="https://surftech.timepad.ru/event/3397366/" rel="noopener noreferrer nofollow">https://surftech.timepad.ru/event/3397366/</a> </p><p>Подключайтесь к стримам 9 июня. Запись сохраним:</p><ul><li><p><strong>VK Видео:</strong> vk.cc/cMuWI5</p></li><li><p><strong>YouTube: </strong>vk.cc/cMuWJL</p></li></ul> <a href="https://habr.com/ru/posts/915980/?utm_campaign=915980&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Fri, 06 Jun 2025 07:27:44 GMT</pubDate>
    <dc:creator><![CDATA[Surf_Studio (Surf)]]></dc:creator>
      
      <category><![CDATA[apple]]></category><category><![CDATA[wwdc]]></category><category><![CDATA[конференции]]></category><category><![CDATA[ios]]></category><category><![CDATA[iphone]]></category><category><![CDATA[ai]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @AppCrafter — iOS (+4) — 01.06.2025 07:06]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/914652/</guid>
    <link>https://habr.com/ru/posts/914652/?utm_campaign=914652&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Опыт использования Claude для написания готового приложения</strong></p><p>Ну вот и я сподобился - написал приложение полностью на Claude.</p><p>Приложение на SwiftUI, не enterprise, но достаточно сложное, из категории Favorite.</p><p>Начал на Claude Sonnet 3.7, потом вышел 4, закончил на нем.</p><p>Всего 1156 строк кода и без ошибок!</p><p>Естественно было несколько итераций. Причём практически все - это уточнение промта.</p><p>Кода он наворотил много, по мне так можно было и проще. Но он уж развернулся по полной - структуры, классы, вью, перечисления, состояния, published, state и т.д. и т.п.</p><p>Как оно там внутри вертится крутится даже не смотрел. Главное - работает и этого достаточно.</p><p>В общем, впечатлён. Не ожидал. Предполагал, что будут ошибки, заторы, что придётся с ними разбираться. Ан нет, все зашло без глюков, с первого раза.</p> <a href="https://habr.com/ru/posts/914652/?utm_campaign=914652&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Sun, 01 Jun 2025 04:06:16 GMT</pubDate>
    <dc:creator><![CDATA[AppCrafter]]></dc:creator>
      
      <category><![CDATA[Claude]]></category><category><![CDATA[SwiftUI]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @Surf_Studio — Блог компании Surf (+1) — N/P]]></title>
    <guid isPermaLink="true">https://habr.com/ru/companies/surfstudio/posts/905492/</guid>
    <link>https://habr.com/ru/companies/surfstudio/posts/905492/?utm_campaign=905492&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Как работать с реактивным кодом в iOS на примере Combine</strong></p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/7f4/637/603/7f46376037a70480403c5aa162ddabcb.png" width="3840" height="2160"></figure><p>Пожалуй, каждый iOS-разработчик видел в требованиях вакансий «знание фреймворков RxSwift, RxCocoa». Эти инструменты основаны на концепции реактивного программирования.</p><p>Реактивное программирование, как следует из названия, основано на реакции на событие: пользователь взаимодействует с интерфейсом и ждёт реакцию от приложения. Этот подход популярен в фронтенд-разработке, в том числе на iOS.</p><p>Мы в Surf долгое время избегали «реактивщины» в приложениях. Во-первых, это лишние зависимости. Во-вторых, подобные библиотеки несут в себе не только преимущества, но и проблемы с дебагом, сложностью поддержки кода и так далее.</p><p>Однако с выходом Combine и SwiftUI, мы решили начать внедрять реактивный подход в наши приложения. Благо, теперь не нужны сторонние решения:<a href="https://developer.apple.com/documentation/combine" rel="noopener noreferrer nofollow"> хватит того, что предоставляет Apple</a>. Давайте посмотрим, как можно работать с реактивным кодом.</p><p><strong>Главные элементы Combine, с которыми происходит работа:</strong></p><p><strong>1) Publisher — издатель</strong></p><p>Протокол, указывающий, что тип может передавать последовательность значений со временем. Publisher предоставляет данные только подписчику (Subscriber) и делает это, когда данные становятся доступны. Без подписки Publisher не активен.</p><p>Publisher описывается двумя ассоциированными типами: <code>&lt;Output, Failure&gt;</code></p><ul><li><p><code>Output </code>— тип выдаваемых значений</p></li><li><p><code>Failure</code> — тип возможной ошибки. Если ошибок быть не может, используется Never.</p></li></ul><p><strong>2) Subscriber — подписчик</strong></p><p>Отвечает за запрос и получение данных от издателя, а также за обработку ошибок.<br>Имеет типы <code>&lt;Input, Failure&gt;</code>:</p><ul><li><p><code>Input</code> — тип входных данных</p></li><li><p><code>Failure</code> — тип ошибки</p></li></ul><p>Subscriber сам инициирует запрос и управляет объёмом поступающих данных. Основные способы обработки:</p><ul><li><p><strong>sink(receiveCompletion:receiveValue:)</strong>Принимает два замыкания: первое вызывается при завершении (успешно или с ошибкой); второе — при получении значений.</p></li><li><p><strong>assign(to:on:)</strong>Присваивает полученные значения свойству объекта по <code>keyPath</code>.</p></li></ul><p><strong>3) Operators — операторы</strong></p><p>Методы, преобразующие данные и потоки. Операторы — это промежуточное звено между издателем и подписчиком. С их помощью строятся цепочки обработки, трансформации и фильтрации данных.</p><p><strong>4) Subjects — субъекты</strong></p><p>Особый вид Publisher. Объекты, реализующие этот протокол, могут отправлять значения подписчикам через метод <code>.send(_).</code></p><p>Subjects полезны для интеграции императивного кода: позволяют вручную вставлять значения в поток.</p><p><strong>Управление подпиской</strong></p><p>Publisher продолжает отправку до завершения или ошибки. Если подписка больше не нужна, её можно отменить с помощью метода cancel(). Все подписчики реализуют протокол Cancellable.</p><p><strong>Пример использования Combine с URLSession</strong></p><pre><code class="swift">var cancellable = Set&lt;AnyCancellable&gt;()

func sendURLRequest(_ urlRequest: URLRequest) {
	URLSession.shared.dataTaskPublisher(for: urlRequest) // 1
    	.map(\.data) // 2
    	.decode(type: LocationModel.self, decoder: JSONDecoder()) // 3
    	.mapError { $0.toServerError() ?? .unidentifiedError } // 4
    	.receive(on: DispatchQueue.main) // 5
    	.sink { completion in // 6
        	print("finished stream with: \(completion)")
    	} receiveValue: { value in
        	print("receive value: \(value)")
    	}
    	.store(in: &amp;cancellable) // 7
}</code></pre><p>Что происходит:</p><ol><li><p>Создание <code>Publisher</code> — оборачивает загрузку данных по URL.</p></li><li><p><code>map(.data</code>) — извлекает Data из ответа.</p></li><li><p><code>decode</code> — преобразует Data в модель LocationModel.</p></li><li><p><code>mapError</code> — конвертирует ошибку в нужный формат.</p></li><li><p><code>receive(on:)</code> — переключает поток на нужную очередь.</p></li><li><p><code>sink</code> — обрабатывает завершение и полученные данные.</p></li><li><p><code>store(in:)</code> — сохраняет подписку, чтобы поток не завершился сразу.</p></li></ol><p>Такой подход делает код более <strong>читаемым, управляемым и реактивным</strong>.</p><blockquote><p>Больше про iOS-разработку — в нашем Telegram-канале Surf Mobile Team. Кейсы, лучшие практики, новости индустрии, анонсы наших мероприятий и вакансий.</p><p><strong><a href="https://t.me/+jqC-A6IquRZmYTEy" rel="noopener noreferrer nofollow">Присоединяйтесь!</a></strong></p></blockquote> <a href="https://habr.com/ru/posts/905492/?utm_campaign=905492&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Wed, 07 May 2025 10:14:56 GMT</pubDate>
    <dc:creator><![CDATA[Surf_Studio (Surf)]]></dc:creator>
      
      <category><![CDATA[ios]]></category><category><![CDATA[combine]]></category><category><![CDATA[swift]]></category><category><![CDATA[swiftui]]></category><category><![CDATA[реактивное программирование]]></category><category><![CDATA[реактивность]]></category><category><![CDATA[xcode]]></category><category><![CDATA[ios разработка]]></category><category><![CDATA[ios development]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @Surf_Studio — Блог компании Surf (+4) — 16.04.2025 17:59]]></title>
    <guid isPermaLink="true">https://habr.com/ru/companies/surfstudio/posts/901466/</guid>
    <link>https://habr.com/ru/companies/surfstudio/posts/901466/?utm_campaign=901466&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Хардкодить допоздна? А может, лучше нет, ворк?</strong></p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/806/060/9da/8060609daa7c93c20cbcd094252a23b6.png" alt="&gt;&gt; Регистрация и программа &lt;&lt;" title="&gt;&gt; Регистрация и программа &lt;&lt;" width="2127" height="1320"><div><figcaption><a href="https://surftech.timepad.ru/event/3321077/" rel="noopener noreferrer nofollow">&gt;&gt; Регистрация и программа &lt;&lt;</a></figcaption></div></figure><p>23 апреля в 20:00 приглашаем воронежских разработчиков на неформальный митап. Для тех, кто не сможет прийти офлайн, будет трансляция.</p><p>Никаких скриншотов кода на слайдах. Никакого душного обсуждения документации. Поговорим о том, что окружает нас вне работы. Прокачаем софт-скиллы и нетворкинг.</p><p>В программе митапа три доклада:</p><ul><li><p><strong>Лёша, Android-разработчик Surf — «Дедлайн "вчера": как работать с приоритетами».</strong><br><br><em>Как рассеивается внимание? Как ставить приоритеты в работе с командой? Когда нужно выносить переписку в звонок, а когда можно обойтись текстом? Ответим на эти и многие другие вопросы про приоритеты в работе и жизни.</em></p></li><li><p><strong>Дима, Flutter-разработчик Surf — «Тимлид — друг или враг? Или так»?</strong><br><br><em>Расскажу о роли тимлида, но со стороны&nbsp;нижестоящего сотрудника. Что мне нравится/что не нравится в лиде, что для меня кажется полезным, а смысл чего я не понимаю.</em></p></li><li><p><strong>Кирилл, iOS-разработчик, наш друг и гость из Una Financial — «Work-life health для IT-шника среднего возраста».</strong><br><br><em>Поделюсь жизненными проблемами разработчиков и способами их решения. Внимательный слушатель вообще сможет их избежать! Обсудим, как сделать жизнь лучше, повысить её качество. Максимально продлим трудоспособный возраст.</em></p></li></ul><p>Митап пройдет 23 апреля, в 20:00, в воронежском пространстве «Eventuki»: ул. Фридриха Энгельса, 52. </p><p>Участие в митапе бесплатное, чтобы прийти или получить ссылку на трансляцию, <strong><a href="https://surftech.timepad.ru/event/3321077/" rel="noopener noreferrer nofollow">нужно зарегистрироваться</a></strong> 👈</p><p>Запись трансляции обязательно сохраним, но если вы из Воронежа, мы очень ждём понетворкать вживую. До встречи 😉</p> <a href="https://habr.com/ru/posts/901466/?utm_campaign=901466&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Wed, 16 Apr 2025 14:59:10 GMT</pubDate>
    <dc:creator><![CDATA[Surf_Studio (Surf)]]></dc:creator>
      
      <category><![CDATA[митап]]></category><category><![CDATA[митапы]]></category><category><![CDATA[воронеж]]></category><category><![CDATA[митапы в воронеже]]></category><category><![CDATA[софт-скиллы]]></category><category><![CDATA[нетворкинг]]></category><category><![CDATA[нетворкинг в ит]]></category><category><![CDATA[нетворк]]></category><category><![CDATA[разработка приложений]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @AlfaTeam — Блог компании Альфа-Банк (+4) — 18.02.2025 21:06]]></title>
    <guid isPermaLink="true">https://habr.com/ru/companies/alfa/posts/883722/</guid>
    <link>https://habr.com/ru/companies/alfa/posts/883722/?utm_campaign=883722&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Как сократить JSON на 74% при 100 элементах?</strong></p><p>Важное преимущество SDUI — возможность внедрять изменения без выпуска новых версий приложений. Но это же преимущество есть его недостаток, ведь передача всех данных по сети зависит от качества соединения и увеличивает объём данных.&nbsp;</p><p>Качество связи мы не можем контролировать, а вот уменьшить количество передаваемой информации посредством сокращения JSON, — вполне.</p><p>Нам нужна функция, которая могла бы вынести и переиспользовать общую логику. В нашем SDUI уже существует концепция «функций», и их разнообразные реализации, но ни одна из них не умела сокращать JSON, поэтому нужна была новая.</p><p>Функция должна брать общую часть и заменять в ней только те части, которые отличаются от элемента к элементу, оставляя остальное неизменным. Подобный подход давно применяется в виде шаблонизации, что и было необходимо реализовать. Идея в том, чтобы взять шаблон и подставлять в него различные значения. В нашем SDUI мы уже умели подставлять значения из других мест, и для этого у нас есть собственный синтаксис. </p><blockquote><p><strong>Детали реализации шаблонизации <a href="https://habr.com/ru/companies/alfa/articles/882054/" rel="noopener noreferrer nofollow">в статье</a>. </strong></p></blockquote><p></p> <a href="https://habr.com/ru/posts/883722/?utm_campaign=883722&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Tue, 18 Feb 2025 18:06:41 GMT</pubDate>
    <dc:creator><![CDATA[AlfaTeam (Альфа-Банк)]]></dc:creator>
      
      <category><![CDATA[шаблонизация]]></category><category><![CDATA[sdui]]></category><category><![CDATA[bdui]]></category><category><![CDATA[json]]></category><category><![CDATA[gson]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @Sravni_Tech — Блог компании Сравни (+4) — N/P]]></title>
    <guid isPermaLink="true">https://habr.com/ru/companies/sravni/posts/880084/</guid>
    <link>https://habr.com/ru/companies/sravni/posts/880084/?utm_campaign=880084&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Kotlin Multiplatform на практике: как работать с технологией (видео-туториал)</strong></p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/53d/b43/239/53db43239b80e0aafe0e6f2e8e1e8698.png" width="1920" height="1080"></figure><p>Выпустили серию видео о базовых аспектах работы с Kotlin Multiplatform, технологией для мультиплатформенной разработки (iOS, Android, Web, Desktop). </p><p>KMP позволяет использовать общую кодовую базу для нескольких платформ. Причём мы можем гибко регулировать, какую часть кода делаем общей (например, оставляем нативный UI-слой, а бизнес-логику делаем общей). </p><p>Рассказали, как и для чего применять технологию на практике, и как к ней подступиться.</p><p>Уже доступны все <strong>шесть выпусков туториала</strong>: </p><p>1. Что из себя представляет технология KMP?</p><p>2. Настройка окружения</p><p>3. Структура проекта</p><p>4. Верстка на SwiftUI</p><p>5. Верстка на Compose </p><p>6. Сетевой слой</p><p>Посмотреть туториал можно здесь: </p><ul><li><p><a href="https://clc.to/yout_kmp_habr" rel="noopener noreferrer nofollow">YouTube</a></p></li><li><p><a href="https://clc.to/rut_kmp_habr" rel="noopener noreferrer nofollow">RUTUBE</a></p></li><li><p><a href="https://clc.to/vk_kmp_habr" rel="noopener noreferrer nofollow">VK</a></p></li></ul><p>К каждому выпуску приложен документ с пояснением некоторых терминов и полезными ссылками (<strong>см. в описании видео</strong>), которые пригодятся при ознакомлении с материалом.</p> <a href="https://habr.com/ru/posts/880084/?utm_campaign=880084&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Thu, 06 Feb 2025 12:00:27 GMT</pubDate>
    <dc:creator><![CDATA[Sravni_Tech (Сравни)]]></dc:creator>
      
      <category><![CDATA[kotlin multiplatform]]></category><category><![CDATA[swiftui]]></category><category><![CDATA[compose]]></category><category><![CDATA[мобильная разработка]]></category><category><![CDATA[мультиплатформа]]></category><category><![CDATA[кроссплатформенная разработка]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @AppCrafter — Разработка под iOS (+4) — 30.01.2025 23:08]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/878164/</guid>
    <link>https://habr.com/ru/posts/878164/?utm_campaign=878164&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>Ну что, народ, что называется "тащусь" от новой сегодняшней версии ChatGPT CodeCopilot.</p><p>Там теперь появились три окна. Слева знакомый чат, в центре код, причём теперь уже с возможностью редактировать прямо здесь. А справа ещё менюшка с несколькими опциями. Там и комментарии, и логи, и борьба с багами и др. В целом, стало даже немного похоже на Xcode.</p><p>Мне же особенно понравилась опция Code Review. Это круто! Типа он проходит по  коду и даёт рекомендации.</p><p>For example:</p><p>I've reviewed the code and suggested improvements for logical consistency, potential crash prevention, layout calculations, and readability. Let me know if you need further refinements! 🚀</p><p>Даже не знаю, как это назвать. Реально круто!</p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/d15/a74/43a/d15a7443af94c2332f73f8a84ecb5025.png" width="860" height="530"></figure><p></p> <a href="https://habr.com/ru/posts/878164/?utm_campaign=878164&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Thu, 30 Jan 2025 20:08:12 GMT</pubDate>
    <dc:creator><![CDATA[AppCrafter]]></dc:creator>
      
      <category><![CDATA[ChatGPT]]></category><category><![CDATA[Code Copilot]]></category><category><![CDATA[Code Review]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @denis-19 — Разработка под iOS (+2) — 14.01.2025 13:29]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/873538/</guid>
    <link>https://habr.com/ru/posts/873538/?utm_campaign=873538&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>Будильник на iPhone с новыми версиями iOS продолжает тормозить. Пользователи <a href="https://www.reddit.com/r/iphone/comments/1hwoney/my_1030am_sleep_alarm_rang_at_1242am_instead/" rel="noopener noreferrer nofollow">жалуются</a>, что мелодия играет с задержкой в несколько часов или не играет вообще. Apple знает о проблеме, но уже год не может её исправить. Временное решение: «Настройки» — «Face ID и код-пароль» — отключите «Распознавание внимания».</p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/242/c32/1de/242c321dea0c8cc8a9c16988849f9d91.jpg" width="1245" height="1280"></figure><p></p> <a href="https://habr.com/ru/posts/873538/?utm_campaign=873538&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Tue, 14 Jan 2025 10:29:51 GMT</pubDate>
    <dc:creator><![CDATA[denis-19]]></dc:creator>
      
      <category><![CDATA[будильник]]></category><category><![CDATA[ios]]></category><category><![CDATA[iphone]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @marklivshits — Разработка под Android (+3) — 06.01.2025 16:49]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/871896/</guid>
    <link>https://habr.com/ru/posts/871896/?utm_campaign=871896&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>Всем доброго дня. Представьте, что есть система, которая автоматически генерирует технические спецификации и документацию для разработчиков на основе описания проекта.</p><p>Фичи:</p><p>Генерация структурированных документов в Markdown/PDF</p><p>Интеграция c Jira/Confluence</p><p>Возможность автоматической генерации диаграмм (ERD, Sequence)</p><p><strong>Полезно ли это/пользовались бы сами?</strong> </p> <a href="https://habr.com/ru/posts/871896/?utm_campaign=871896&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Mon, 06 Jan 2025 13:49:43 GMT</pubDate>
    <dc:creator><![CDATA[marklivshits]]></dc:creator>
      
      <category><![CDATA[разработка]]></category><category><![CDATA[программирование]]></category><category><![CDATA[документация проекта]]></category><category><![CDATA[техническое задание]]></category><category><![CDATA[техническое проектирование]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @denis-19 — Финансы в IT (+4) — 10.12.2024 14:43]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/865392/</guid>
    <link>https://habr.com/ru/posts/865392/?utm_campaign=865392&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>В тестовой версии запущена новая соцсеть под названием <a href="https://www.twocents.money/" rel="noopener noreferrer nofollow">twocents</a>, где вместо никнейма и количества подписчиков в беседе из информации о пользователе отображается только баланс его банковского счета пользователя. Доступ к мобильной версии проекта для пользователей iPhone можно получить после отправки своей электронной почты и ожидания ответа от разработчиков.</p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/6e3/9ab/deb/6e39abdeb6870e0cb7a33891863af863.png" width="1074" height="902"></figure><p></p> <a href="https://habr.com/ru/posts/865392/?utm_campaign=865392&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Tue, 10 Dec 2024 11:43:30 GMT</pubDate>
    <dc:creator><![CDATA[denis-19]]></dc:creator>
      
      <category><![CDATA[соцсеть]]></category><category><![CDATA[twocents]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @alkozin — Разработка под iOS (+4) — 29.11.2024 12:47]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/862376/</guid>
    <link>https://habr.com/ru/posts/862376/?utm_campaign=862376&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<iframe id="674989b5fbab546b0d479f02" src="https://embedd.srv.habr.com/iframe/674989b5fbab546b0d479f02" class="embed_video embed__content" allowfullscreen="true"></iframe><p><a href="https://vk.com/alkozin?w=wall87667585_1903" rel="noopener noreferrer nofollow">VK (видео)</a> </p><p>📦&nbsp;<strong>API for Any(thing)</strong>&nbsp;<strong>2</strong></p><p>☝️Возможно ли создать интерфейс для получения любого объекта одинаковым способом?&nbsp;</p><p>Библиотека работает на продакшене в приложениях:<br><a href="https://apps.apple.com/ru/app/%D0%B0%D0%B7%D1%81-%D1%8D%D0%BD%D0%B5%D1%80%D0%B3%D0%B8%D1%8F/id1562319041" rel="noopener noreferrer nofollow">Энергия</a><br><a href="https://apps.apple.com/ru/app/tool/id1615256537" rel="noopener noreferrer nofollow">NFC Tool</a><br><a href="https://kubstu.ru" rel="noopener noreferrer nofollow">КубГТУ</a></p><p>Во второй части доклада практическая реализация 💡</p><p><a href="https://habr.com/ru/post/674010/" rel="noopener noreferrer nofollow">Хабр</a><br><a href="https://medium.com/@al.kozin/universal-api-7ddc67bb0aa5" rel="noopener noreferrer nofollow">Medium</a><br><a href="https://github.com/el-machine/wand" rel="noopener noreferrer nofollow">GitHub</a><br><br><a href="https://el-machine.com" rel="noopener noreferrer nofollow">El-Machine.com Apps 🤖</a></p><p>Теория:<br><a href="https://habr.com/ru/posts/858198/" rel="noopener noreferrer nofollow">Часть 1</a></p><p></p> <a href="https://habr.com/ru/posts/862376/?utm_campaign=862376&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Fri, 29 Nov 2024 09:47:22 GMT</pubDate>
    <dc:creator><![CDATA[alkozin]]></dc:creator>
      
      <category><![CDATA[Xcode]]></category><category><![CDATA[API]]></category><category><![CDATA[Swift]]></category><category><![CDATA[TDD]]></category><category><![CDATA[Microservices Architecture]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @Sravni_Tech — Блог компании Сравни (+3) — 21.11.2024 10:31]]></title>
    <guid isPermaLink="true">https://habr.com/ru/companies/sravni/posts/860200/</guid>
    <link>https://habr.com/ru/companies/sravni/posts/860200/?utm_campaign=860200&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>iOS vs Android: большая битва платформ. Что лучше для разработчика, бизнеса и простого пользователя</strong></p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/159/20d/afe/15920dafe7153763d1287b6c080ec261.jpg" width="1920" height="1080"></figure><p>В извечном вопросе о «лучшей мобильной платформе» попробовали разобраться вместе с инженерами Сравни: Android-разработчиком Русланом Кадыровым и iOS-разработчиком Константином Китаевым.   </p><p>Обсудили, как платформы различаются в плане технологий и пользовательского опыта, под какую из них проще разрабатывать и может ли «многообразие Android» успешно конкурировать с «магией Apple».  </p><p>Также в выпуске:  </p><ul><li><p>Состояние мобильной разработки — есть ли кризис? </p></li><li><p>Развитие разработчиков для iOS и Android: полезные материалы и практики </p></li><li><p>Превосходство Android Studio над XСode? </p></li><li><p>Когда наступит кроссплатформенное будущее?  </p></li></ul><p>Посмотреть или послушать Sravni Podcast можно здесь:</p><p> ✅<a href="https://clc.to/yout_mobile_habr" rel="noopener noreferrer nofollow">YouTube </a><br> ✅<a href="https://clc.to/rut_mobile_habr" rel="noopener noreferrer nofollow">RUTUBE </a><br> ✅<a href="https://clc.to/vk_mobile_habr" rel="noopener noreferrer nofollow">VK </a><br> ✅<a href="https://clc.to/yam_mobile_habr" rel="noopener noreferrer nofollow">Яндекс Музыка</a> </p><p>Оперативно узнавать о наших новых подкастах, докладах, лекциях и других полезных ИТ-материалах можно в&nbsp;<a href="https://t.me/sravni_tech" rel="noopener noreferrer nofollow">тг-канале Sravni Tech</a>.</p> <a href="https://habr.com/ru/posts/860200/?utm_campaign=860200&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Thu, 21 Nov 2024 07:31:03 GMT</pubDate>
    <dc:creator><![CDATA[Sravni_Tech (Сравни)]]></dc:creator>
      
      <category><![CDATA[ios]]></category><category><![CDATA[android]]></category><category><![CDATA[мобильная разработка]]></category><category><![CDATA[xcode]]></category><category><![CDATA[flutter]]></category><category><![CDATA[kotlin]]></category><category><![CDATA[hackintosh]]></category><category><![CDATA[apple]]></category><category><![CDATA[react native]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @alkozin — Программирование (+3) — 13.11.2024 13:04]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/858198/</guid>
    <link>https://habr.com/ru/posts/858198/?utm_campaign=858198&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<iframe id="67498e98ae0e5d6b31493c31" src="https://embedd.srv.habr.com/iframe/67498e98ae0e5d6b31493c31" class="embed_video embed__content" allowfullscreen="true"></iframe><p><a href="https://youtu.be/eTuk3t_7Bmw" rel="noopener noreferrer nofollow">YouTube (видео) </a></p><p>📦 <strong>API for Any(thing)</strong>&nbsp;</p><p>☝️Возможно ли создать интерфейс для получения любого объекта одинаковым способом?&nbsp;<br><br>Продолжаю развивать свою идею архитектуры для 100% инкасуляции, разбития на модули и тестирования всего слоя Model<br><br><a href="https://habr.com/ru/post/674010/" rel="noopener noreferrer nofollow">Хабр</a><br><a href="https://medium.com/@al.kozin/universal-api-7ddc67bb0aa5" rel="noopener noreferrer nofollow">Medium</a><br><a href="https://github.com/el-machine/wand" rel="noopener noreferrer nofollow">GitHub</a><br><br>Первая часть доклада теоретическая. <strong>В поисках API для любого (Any) объекта</strong><br><br>Во второй части доклада практическая реализация 💡<br><br>Поделитесь мыслями:<br>Что думаете про декларативны подход? Описываю результат и получаю нужный объект</p><p><a href="https://habr.com/ru/posts/862376/" rel="noopener noreferrer nofollow">Часть 2</a></p><p></p> <a href="https://habr.com/ru/posts/858198/?utm_campaign=858198&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Wed, 13 Nov 2024 10:04:00 GMT</pubDate>
    <dc:creator><![CDATA[alkozin]]></dc:creator>
      
      <category><![CDATA[swift]]></category><category><![CDATA[api]]></category><category><![CDATA[теория программирования]]></category>
  </item>
  

	
  

  

  

      

      

      

    
  </channel>
</rss>
