This media is not supported in your browser
VIEW IN TELEGRAM
Приложение для тренировок для WatchOS с HealthKit + SwiftUI
Каждый, кто хоть раз пробовал делать приложение для часов, представляет, какие проблемы могут возникнуть даже на стадии соединения (не шутка).
Получасовые подключения и копирование символов, потеря аттача в рандомные моменты, ограничения по фичам и так далее.
В своё время в телеге даже был рекордный приз для мобил именно в контесте для Watch OS (вроде около $20 000 за первое место).
Об этом я знаю не просто так, часто пилю виджеты и standalone приложения + консультировал в своё время небольшой стартап при реализации кастомного протокола для работы с часами.
Поэтому каждый пример завершённого (или доведённого до логической отсечки) приложения - это довольно ценная информация.
Например, для тренировок Strava сейчас едва ли не монополист (но может вы знаете и другие приложения).
В проекте ниже 0Itsuki0 делится своим опытом для трека воркаутов:
1️⃣ SwiftUI: простое приложение для тренировок с HealthKit (часть 1)
2️⃣ SwiftUI: чтение данных из HealthKit
3️⃣ SwiftUI: разделение тренировки на составляющие
🛠 Сам проект доступен на GitHub.
😃 iOS Dev
Каждый, кто хоть раз пробовал делать приложение для часов, представляет, какие проблемы могут возникнуть даже на стадии соединения (не шутка).
Получасовые подключения и копирование символов, потеря аттача в рандомные моменты, ограничения по фичам и так далее.
В своё время в телеге даже был рекордный приз для мобил именно в контесте для Watch OS (вроде около $20 000 за первое место).
Об этом я знаю не просто так, часто пилю виджеты и standalone приложения + консультировал в своё время небольшой стартап при реализации кастомного протокола для работы с часами.
Поэтому каждый пример завершённого (или доведённого до логической отсечки) приложения - это довольно ценная информация.
Например, для тренировок Strava сейчас едва ли не монополист (но может вы знаете и другие приложения).
В проекте ниже 0Itsuki0 делится своим опытом для трека воркаутов:
1️⃣ SwiftUI: простое приложение для тренировок с HealthKit (часть 1)
2️⃣ SwiftUI: чтение данных из HealthKit
3️⃣ SwiftUI: разделение тренировки на составляющие
🛠 Сам проект доступен на GitHub.
Please open Telegram to view this post
VIEW IN TELEGRAM
Какой у вас формат работы?
Anonymous Poll
11%
Только офис
26%
Гибридный график (частично офис, частично удалёнка)
63%
Полная удалёнка
Использование ключевого слова Swift defer в контексте async
ℹ️ Про
И несмотря на то, что изначально это не всегда кажется полезным, при написании современного Swift-кода использование defer может быть оправдано.
Например, когда есть несколько потенциальных точек выхода внутри наших функций и замыканий - и особенно при написании кода, в котором юзаем
📖 В этой статье разобрано несколько таких случаев (от соединения с базой данных до выполнения задач по загрузке инфы).
😃 iOS Dev
defer
(в том числе с примерами использования) в канале был пост ранее.И несмотря на то, что изначально это не всегда кажется полезным, при написании современного Swift-кода использование defer может быть оправдано.
Например, когда есть несколько потенциальных точек выхода внутри наших функций и замыканий - и особенно при написании кода, в котором юзаем
throws
или при использовании async/await
.📖 В этой статье разобрано несколько таких случаев (от соединения с базой данных до выполнения задач по загрузке инфы).
Please open Telegram to view this post
VIEW IN TELEGRAM
Акторы в Swift - для чего они вообще нужны?
Актор — это ссылочный* тип, подобный классу, созданный для безопасного управления изменчивым состоянием в многопоточной среде.
Введенные в Swift 5.5, акторы помогают разработчикам писать потокобезопасный, и что не менее важно, предсказуемый код при работе с асинхронными задачами.
📖 В этом материале можно узнать, чем же они отличаются от классов, как (и когда) их использовать, а ещё можно посмотреть простую реализацию чат-сервера и другие примеры.
* Разбор value и reference type c подборкой вопросов есть тут:💰 Boosty • 💬 Telegram.
А в канале можно ещё раз освежить знания с помощью глоссария Swift Concurrency.
😃 iOS Dev
Актор — это ссылочный* тип, подобный классу, созданный для безопасного управления изменчивым состоянием в многопоточной среде.
Введенные в Swift 5.5, акторы помогают разработчикам писать потокобезопасный, и что не менее важно, предсказуемый код при работе с асинхронными задачами.
📖 В этом материале можно узнать, чем же они отличаются от классов, как (и когда) их использовать, а ещё можно посмотреть простую реализацию чат-сервера и другие примеры.
* Разбор value и reference type c подборкой вопросов есть тут:
А в канале можно ещё раз освежить знания с помощью глоссария Swift Concurrency.
Please open Telegram to view this post
VIEW IN TELEGRAM
Swift Play Experimental — новый проект от Apple
🛠В репе эпла появился новый интересный инструмент (который можно юзать и для изучения, и для тренировки, и для тестирования кода).
Прототип состоит из:
- Новый макрос
- Новая команда
- API Playgrounds для конкретных инструментов, позволяющий любому инструменту или IDE добавить поддержку поиска и запуска экземпляров
📖 Описание и примеры использования вот тут.
ℹ️ В настоящее время реализация считается экспериментальной и пока не рекомендована для широкого использования в продакшне, но автор все равно рекомендует попробовать.
😃 iOS Dev
🛠В репе эпла появился новый интересный инструмент (который можно юзать и для изучения, и для тренировки, и для тестирования кода).
Прототип состоит из:
- Новый макрос
#Playground
- с его помощью можно определять исполняемые блоки кода в любом Swift-файле.- Новая команда
swift play
- можно использовать для автоматического повторного запуска при любых изменениях исходного кода.- API Playgrounds для конкретных инструментов, позволяющий любому инструменту или IDE добавить поддержку поиска и запуска экземпляров
#Playground
(как и реализовано для swift play).📖 Описание и примеры использования вот тут.
Please open Telegram to view this post
VIEW IN TELEGRAM
Гонки данных в iOS: определение, причины возникновения и способы решения на практических примерах
В канале и закрытой базе данных я регулярно делюсь не только кейсами, которые могут возникать в разработке и их решениями.
Одна из самых популярных проблем — гонки данных, которые встречаются даже в популярных продуктах.
Они возникают, когда встречается несколько обращений к одной и той же области памяти, при условии, что по крайней мере один из этих доступов — запись.
Без правильной синхронизации это может привести к непредсказуемому поведению, сбоям приложения или невалидности данных.
В iOS IQ я добавил несколько типичных примеров, когда можно столкнуться с таким поведением и привёл варианты решения (не только для DispatchQueue, но и для Swift Concurrency с акторами).
А ещё можно увидеть полезную (и понятную) реализацию для работы с кэшем.
✅ Новый раздел в разборе полётов уже можно найти 💰 в бусти и ⭐️ прямо здесь.
📖 Кстати, в канале можно почитать и про Thread Sanitizer, и про то, для чего ещё нужны акторы.
😃 iOS Dev
В канале и закрытой базе данных я регулярно делюсь не только кейсами, которые могут возникать в разработке и их решениями.
Одна из самых популярных проблем — гонки данных, которые встречаются даже в популярных продуктах.
Они возникают, когда встречается несколько обращений к одной и той же области памяти, при условии, что по крайней мере один из этих доступов — запись.
Без правильной синхронизации это может привести к непредсказуемому поведению, сбоям приложения или невалидности данных.
В iOS IQ я добавил несколько типичных примеров, когда можно столкнуться с таким поведением и привёл варианты решения (не только для DispatchQueue, но и для Swift Concurrency с акторами).
А ещё можно увидеть полезную (и понятную) реализацию для работы с кэшем.
📖 Кстати, в канале можно почитать и про Thread Sanitizer, и про то, для чего ещё нужны акторы.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Робокафе в Токио: новый способ удаленной работы, доступность и аватары
Первое, что написано на вывеске - это не AI, как может показаться на первый взгляд.
OriHime это технология, с помощью которой люди, которые не могут физически присутствовать на работе, получают возможность участвовать в любых социальных процессах удаленно.
🙌🏻 Самими аватарами пилоты могут управлять, используя свои глаза, что позволяет работать даже парализованным людям (но одно из требований - знать японский).
В самом кафе порядка 20 аватаров, каждым из которых управляет человек. И в такие моменты стоит помнить, что одним AI всех проблем не решить.
Это понимал и создатель кафе Кентаро Йошифудзи с весьма интересной биографией. Например, в 2012 году он получил премию за создание робота-аватара для борьбы с одиночеством (чувствуете параллель с фильмом Она?).
И поначалу кафе, которое было экспериментальным и которое планировалось закрыть, вот уже два года функционирует и переосмысливает значение термина доступность.
За символическую плату в 1800 йен с человека вы можете посетить его (и даже тут будет включен напиток, можно алкологольный, можно другой), а затем поговорить с одним из операторов.
Например, мы общались с девушкой-оператором, которая прекрасно говорит на английском языке, играет в теннис и живет рядом с Токио.
За такими технологиями будущее. Ведь даже в Японии 2.5 процента сотрудников в крупных и не только компаниях должны быть с ОВЗ. И это настоящая доступность.
📍 Локация: Токио, кафе Dawn.
📸 Больше фото в комментариях.
😃 iOS Dev
Первое, что написано на вывеске - это не AI, как может показаться на первый взгляд.
OriHime это технология, с помощью которой люди, которые не могут физически присутствовать на работе, получают возможность участвовать в любых социальных процессах удаленно.
🙌🏻 Самими аватарами пилоты могут управлять, используя свои глаза, что позволяет работать даже парализованным людям (но одно из требований - знать японский).
В самом кафе порядка 20 аватаров, каждым из которых управляет человек. И в такие моменты стоит помнить, что одним AI всех проблем не решить.
Это понимал и создатель кафе Кентаро Йошифудзи с весьма интересной биографией. Например, в 2012 году он получил премию за создание робота-аватара для борьбы с одиночеством (чувствуете параллель с фильмом Она?).
И поначалу кафе, которое было экспериментальным и которое планировалось закрыть, вот уже два года функционирует и переосмысливает значение термина доступность.
За символическую плату в 1800 йен с человека вы можете посетить его (и даже тут будет включен напиток, можно алкологольный, можно другой), а затем поговорить с одним из операторов.
Например, мы общались с девушкой-оператором, которая прекрасно говорит на английском языке, играет в теннис и живет рядом с Токио.
За такими технологиями будущее. Ведь даже в Японии 2.5 процента сотрудников в крупных и не только компаниях должны быть с ОВЗ. И это настоящая доступность.
📍 Локация: Токио, кафе Dawn.
📸 Больше фото в комментариях.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Производительность и оптимизация памяти на примере компании Capcom
Продолжая путешествие по Японии и пытаясь поймать лучшие кадры, случайно наткнулся на выставку в Осаке, посвященную компании Capcom (street fighter, monster hunter, resident evil и многие другие).
Так вот, хотя в анонсе были описаны только эпохи развития, внутри было несколько любопытных моментов, посвященных секретам при разработке.
Например, вот как реализовывали прозрачность в первых играх, всего три хитрых способа: через моргание, диттеринг - чередование пикселей значимых и незначимых, и третий - просто через изменение цветов изображения.
Но кроме этого множество проблем было и с памятью ( и ОЗУ, и ROM). Например, вы все знаете, что для анимаций используются спрайты. Так вот, после того, как дизайнеры завершали свой этап работы, вместе с разработчиками они выпиливали лишние уже на финальном этапе. А про то, как работали с ROM, есть кайфовая статья, где описывали, как определяли доступный обьем с помощью бумаги и ножниц.
Кроме этого, на выставке можно посмотреть, как работает motion capture, а в отдельном секторе как работать с масками.
Если вы будете до 6 июня в Осаке, то рекомендую обратить внимание на выставку не только фанатам любой из серий игр выше, но и тем, кто интересуется историей программирования в целом.
📍 Локация: Осака, музей искусства NAKKA.
😃 iOS Dev
Продолжая путешествие по Японии и пытаясь поймать лучшие кадры, случайно наткнулся на выставку в Осаке, посвященную компании Capcom (street fighter, monster hunter, resident evil и многие другие).
Так вот, хотя в анонсе были описаны только эпохи развития, внутри было несколько любопытных моментов, посвященных секретам при разработке.
Например, вот как реализовывали прозрачность в первых играх, всего три хитрых способа: через моргание, диттеринг - чередование пикселей значимых и незначимых, и третий - просто через изменение цветов изображения.
Но кроме этого множество проблем было и с памятью ( и ОЗУ, и ROM). Например, вы все знаете, что для анимаций используются спрайты. Так вот, после того, как дизайнеры завершали свой этап работы, вместе с разработчиками они выпиливали лишние уже на финальном этапе. А про то, как работали с ROM, есть кайфовая статья, где описывали, как определяли доступный обьем с помощью бумаги и ножниц.
Кроме этого, на выставке можно посмотреть, как работает motion capture, а в отдельном секторе как работать с масками.
Если вы будете до 6 июня в Осаке, то рекомендую обратить внимание на выставку не только фанатам любой из серий игр выше, но и тем, кто интересуется историей программирования в целом.
📍 Локация: Осака, музей искусства NAKKA.
Please open Telegram to view this post
VIEW IN TELEGRAM
Николас Рефн и Хидео Кодзима: геймдев, кино и «Satellites»
Одной из последних точек интереса в Токио для меня была выставка двух мастеров, которые с помощью разных языков, стилей и жанров попробовали обсудить дружбу и технологии в философской стилистике.
На пятом этаже в Prada Aoyama можно познакомиться с необычным проектом на стыке игровой индустрии, кинематографа и коктейлем технологий (от древних, но в то же время футуристических телевизоров до записей на кассетах, сгенеренных с помощью искусственного интеллекта).
В заголовке я неспроста не стал переводить satellites, так как в этом заключается суть – не только в трудностях перевода (кстати, прекрасный фильм), но и в понимании разных жанров и попытке объединить разные культуры. И к этой связи можно найти отсылки и в death stranding с ее сложными социальными проблемами, и в драйве Рефна, где суть совсем не в гонках.
🧩 С помощью кассет можно собрать собственную картину происходящего (кстати, среди языков можно найти и русский). Ведь связь может быть даже в несовместимых на первый взгляд технологиях.
Из приятного: можно оставить пару кассет себе.
😃 iOS Dev
Одной из последних точек интереса в Токио для меня была выставка двух мастеров, которые с помощью разных языков, стилей и жанров попробовали обсудить дружбу и технологии в философской стилистике.
На пятом этаже в Prada Aoyama можно познакомиться с необычным проектом на стыке игровой индустрии, кинематографа и коктейлем технологий (от древних, но в то же время футуристических телевизоров до записей на кассетах, сгенеренных с помощью искусственного интеллекта).
В заголовке я неспроста не стал переводить satellites, так как в этом заключается суть – не только в трудностях перевода (кстати, прекрасный фильм), но и в понимании разных жанров и попытке объединить разные культуры. И к этой связи можно найти отсылки и в death stranding с ее сложными социальными проблемами, и в драйве Рефна, где суть совсем не в гонках.
🧩 С помощью кассет можно собрать собственную картину происходящего (кстати, среди языков можно найти и русский). Ведь связь может быть даже в несовместимых на первый взгляд технологиях.
Из приятного: можно оставить пару кассет себе.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Swift Regex — инструмент для проверки регулярных выражений
Недавно полезный инструмент от Кишикавы Кацуми получил кайфовое обновление в виде дебаггера, теперь можно чекать, что происходит при поиске шаг за шагом.
🛠 Сам инструмент доступен здесь.
А исходный код можно посмотреть на GitHub (и внести собственный вклад при желании): репозиторий.
Кстати, на прошедшей конфе в Токио Кишикава делился, как можно запилить собственный небольшой движок regex в Swift, сосредоточившись на трех фундаментальных операциях: конкатенации, чередовании и повторении.
📋 Слайды с презентации также доступны (как и код примера).
😃 iOS Dev
Недавно полезный инструмент от Кишикавы Кацуми получил кайфовое обновление в виде дебаггера, теперь можно чекать, что происходит при поиске шаг за шагом.
🛠 Сам инструмент доступен здесь.
А исходный код можно посмотреть на GitHub (и внести собственный вклад при желании): репозиторий.
Кстати, на прошедшей конфе в Токио Кишикава делился, как можно запилить собственный небольшой движок regex в Swift, сосредоточившись на трех фундаментальных операциях: конкатенации, чередовании и повторении.
📋 Слайды с презентации также доступны (как и код примера).
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Что под капотом у ИИ?
Любую технологию стоит изучить, прежде чем применять её в важных сферах. Это основополагающий принцип существует не только в нашей работе, но и в других отраслях.
Понимание происходящего и способность объяснить как функционирует тот или иной процесс, что происходит в коде и как это улучшить выгодно отличает профессионала.
Уже сейчас я вижу, как многие все чаще полагаются на ИИ: не только в программировании, но и в жизненных вопросах. На мой взгляд, из-за того, что случаются разные проблемы, в любом случае стоит проводить фактчекинг.
И если сейчас современное общество невозможно представить без интернета, то возможно в скором времени к арсеналу инструментов добавится и подписка на ИИ-помощников.
На сегодняшний день я смотрю на это с долей здорового скептицизма, особенно в условиях применения на продакшн-коде. Уже сейчас миллионы людей бесплатно обучают существующие модели, и, к сожалению, слепо верят результатам.
При этом полезно понимать как LLM вообще работает с запросами.
Делюсь прекрасным материалом от FT, в котором можно узнать что вообще представляют собой токены, как LLM работает с контекстом, а также познакомиться с ключевыми концепциями трансформер-архитектуры.
Дэн Кларк, Сэм Лирнер, Ирен де ла Торре Аренас, Сэм Джойнер, Ид Хемингуэй и Оливер Хокинс проделали мощную работу по визуализации и выкатили целую статью про вышеперечисленные аспекты.
📖 Почитать (и посмотреть) можно тут: Что такое генеративный ИИ.
😃 iOS Dev
Любую технологию стоит изучить, прежде чем применять её в важных сферах. Это основополагающий принцип существует не только в нашей работе, но и в других отраслях.
Понимание происходящего и способность объяснить как функционирует тот или иной процесс, что происходит в коде и как это улучшить выгодно отличает профессионала.
Уже сейчас я вижу, как многие все чаще полагаются на ИИ: не только в программировании, но и в жизненных вопросах. На мой взгляд, из-за того, что случаются разные проблемы, в любом случае стоит проводить фактчекинг.
И если сейчас современное общество невозможно представить без интернета, то возможно в скором времени к арсеналу инструментов добавится и подписка на ИИ-помощников.
На сегодняшний день я смотрю на это с долей здорового скептицизма, особенно в условиях применения на продакшн-коде. Уже сейчас миллионы людей бесплатно обучают существующие модели, и, к сожалению, слепо верят результатам.
При этом полезно понимать как LLM вообще работает с запросами.
Делюсь прекрасным материалом от FT, в котором можно узнать что вообще представляют собой токены, как LLM работает с контекстом, а также познакомиться с ключевыми концепциями трансформер-архитектуры.
Дэн Кларк, Сэм Лирнер, Ирен де ла Торре Аренас, Сэм Джойнер, Ид Хемингуэй и Оливер Хокинс проделали мощную работу по визуализации и выкатили целую статью про вышеперечисленные аспекты.
📖 Почитать (и посмотреть) можно тут: Что такое генеративный ИИ.
Please open Telegram to view this post
VIEW IN TELEGRAM
Недавно Apple проиграли суд, после которого приложениям в США было разрешено использовать внешние покупки в приложении.
А сегодня в сторе уже начали появляться приложения, которые используют новый механизм.
Кроме плашки с надписью сверху рядом с кнопкой скачивания также добавили тег external purchases.
Это предупреждение есть и на iOS, и в веб-версии.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Airbnb представил альтернативу Lottie - новый медиаформат Lava
Рамон Фрич анонсировал, что новый формат обеспечивает прозрачность и возможность использования на вебе/iOS/Android.
В обновлённом приложении уже используется новый стиль, но на мой взгляд этот формат требует доработки - слишком сильно ощущаются фризы.
🎆 Демки с анимациями можно посмотреть здесь и здесь (пока не в опенсорсе).
😃 iOS Dev
Рамон Фрич анонсировал, что новый формат обеспечивает прозрачность и возможность использования на вебе/iOS/Android.
В обновлённом приложении уже используется новый стиль, но на мой взгляд этот формат требует доработки - слишком сильно ощущаются фризы.
Please open Telegram to view this post
VIEW IN TELEGRAM
Отслеживание и контроль размера приложения с помощью Tuist
Новые фичи, дополнительные ассеты и постоянно увеличивающаяся кодовая база — всё это ведёт к росту размера приложения.
Новая фича tuist позволяет находить дублирование ассетов, неоптимизированные ресурсы, легаси-код и лишние зависимости.
📖 Подробнее можно почитать здесь (или посмотреть ролик тут).
Основная часть анализа выполняется локально с помощью новой либы Rosalind, а если юзать
😃 iOS Dev
Новые фичи, дополнительные ассеты и постоянно увеличивающаяся кодовая база — всё это ведёт к росту размера приложения.
Новая фича tuist позволяет находить дублирование ассетов, неоптимизированные ресурсы, легаси-код и лишние зависимости.
📖 Подробнее можно почитать здесь (или посмотреть ролик тут).
Основная часть анализа выполняется локально с помощью новой либы Rosalind, а если юзать
tuist inspect bundle
с флагом --json
, можно получить JSON-вывод прямиком из rosalind.Please open Telegram to view this post
VIEW IN TELEGRAM