Four Corners: первая игра, целиком написанная на Swift для Playdate
В канале я часто пишу про необычные решения, а ещё немного коллекционирую самые разные игровые приставки (ха-ха, про это можно было даже написать в посте про Японию).
Например, из последней поездки притащил Game Boy Micro Anniversary Edition, пусть и немного потрёпанную временем).
Одна из приставок в коллекции - Playdate (и она как раз на фотке к этому посту).
И для неё с недавних пор можно писать на Swift!
Нашёл интересное интервью со Стивеном Чипманом, который рассказало плюсах о всей боли, которая сопутствовало процессу переписывания приложения с Lua.
Например, недоступен Foundation, а ещё нет Codable, что превратило работу с JSON в нетривиальный таск.
Особое внимание пришлось на процесс отладки. Например, в рантайме если приложение крашится - то мы не можем даже получить стектрейс.
📖 В общем, рекомендую почитать, особенно если вам интересен и embedded swift, в частности.
📺 А тут можно посмотреть и доклад на тему.
😃 iOS Dev
В канале я часто пишу про необычные решения, а ещё немного коллекционирую самые разные игровые приставки (ха-ха, про это можно было даже написать в посте про Японию).
Например, из последней поездки притащил Game Boy Micro Anniversary Edition, пусть и немного потрёпанную временем).
Одна из приставок в коллекции - Playdate (и она как раз на фотке к этому посту).
И для неё с недавних пор можно писать на Swift!
Нашёл интересное интервью со Стивеном Чипманом, который рассказал
Например, недоступен Foundation, а ещё нет Codable, что превратило работу с JSON в нетривиальный таск.
Особое внимание пришлось на процесс отладки. Например, в рантайме если приложение крашится - то мы не можем даже получить стектрейс.
📖 В общем, рекомендую почитать, особенно если вам интересен и embedded swift, в частности.
📺 А тут можно посмотреть и доклад на тему.
Please open Telegram to view this post
VIEW IN TELEGRAM
15❤🔥15👍12 8🔥4 3🍓2
This media is not supported in your browser
VIEW IN TELEGRAM
А вы знали, что системный UIDatePicker (даже в напоминаниях и часах) - на самом деле не бесконечная лента?
Иногда в работе всем приходится решать баги, прилетающие от отдела QA, которые встречаются у пары пользователей или при определённой фазе Луны.
Что делает в таком случае Apple?
Ответ - решают проблемы остальных 99.99% пользователей.
Да и вообще это что, в первый раз?
😃 iOS Dev
Иногда в работе всем приходится решать баги, прилетающие от отдела QA, которые встречаются у пары пользователей или при определённой фазе Луны.
Что делает в таком случае Apple?
Ответ - решают проблемы остальных 99.99% пользователей.
Да и вообще это что, в первый раз?
Please open Telegram to view this post
VIEW IN TELEGRAM
4🔥37🤯18 10👍6🆒3 3⚡1🎉1💯1🏆1
This media is not supported in your browser
VIEW IN TELEGRAM
5😁46🤣23🔥6🫡4 2👍1🤩1🤝1 1
Что там по Swift Concurrency да и вообще по целям?
Или как говорится, у меня была какая-то практика, и я её придерживался.
За последнее время я как и прежде, продолжаю регулярно обновлять приложение, наполнять вопросами (из проверенных источников и рабочих кейсов, а не из аи-слопа, которым наводнено к сожалению множество каналов, и, к сожалению - хабра и медиума).
Кстати, совсем скоро выйдет и новая версия приложения, которое в бете уже месяц.
Сделал карту изучения Swift Concurrency, опубликовал сайт, продолжаю наполнять базу качественным контентом сразу по нескольким направлениям, которые непосредственно связаны с рабочими задачами.
🤖 Ботом воспользовалось уже около тысячи человек, и вот первые выводы.
Кайф, что все работает стабильно, все метрики в норме, ожидал проблем. В комментарии канала написали несколько десятков человек с конструктивными предложениями и это здорово (пишите и вы)!
Подпишитесь💰 на бусти и ⭐️ прямо здесь и получите доступ к эсклюзивному и качественному контенту.
✅ С вас подписка по специальному офферу - с меня все нижеперечисленное (и даже больше).
😃 iOS Dev
Или как говорится, у меня была какая-то практика, и я её придерживался.
За последнее время я как и прежде, продолжаю регулярно обновлять приложение, наполнять вопросами (из проверенных источников и рабочих кейсов, а не из аи-слопа, которым наводнено к сожалению множество каналов, и, к сожалению - хабра и медиума).
Кстати, совсем скоро выйдет и новая версия приложения, которое в бете уже месяц.
Сделал карту изучения Swift Concurrency, опубликовал сайт, продолжаю наполнять базу качественным контентом сразу по нескольким направлениям, которые непосредственно связаны с рабочими задачами.
Кайф, что все работает стабильно, все метрики в норме, ожидал проблем. В комментарии канала написали несколько десятков человек с конструктивными предложениями и это здорово (пишите и вы)!
Подпишитесь
Что можно получить сегодня?➡️ Несколько десятков пройденных алгоритмических задач с боевых конкурсов.➡️ Вопросы на чтение кода➡️ Многопоточность➡️ DispatchQueue: практические вопросы (две части)➡️ Swift Concurrency➡️ Память: ARC, side table, флаги, утечки➡️ UIKit (теория + практика, две части)➡️ Компилятор Swift➡️ Основы: URLSession, UICollectionView и многое другое.
А также:➡️ Множество необычных подходов к анимации (включая шейдеры).➡️ Разбор популярных архитектур (и их недостатков).➡️ Несколько кайфовых и интересных фактов об истории прототипирования в Apple.➡️ Как на самом деле работает Code Signing.➡️ Несколько трюков и фишек при работе c Xcode.
Please open Telegram to view this post
VIEW IN TELEGRAM
11 16🔥12👏6👍3🍓2 1
SwiftUI WebView: настройка, навигация, кастомные схемы
На WWDC 2025 был анонсирован WebView для SwiftUI, но код из видео не работал, более того, он даже не компилился.
📖 В этой статье можно посмотреть на основные аспекты работы, пример навигации и работу с JavaScript-функциями.
🛠 Код проекта доступен и на GitHub.
😃 iOS Dev
На WWDC 2025 был анонсирован WebView для SwiftUI, но код из видео не работал, более того, он даже не компилился.
📖 В этой статье можно посмотреть на основные аспекты работы, пример навигации и работу с JavaScript-функциями.
🛠 Код проекта доступен и на GitHub.
Please open Telegram to view this post
VIEW IN TELEGRAM
5🔥18 14👍8✍4👏2💯1🏆1🤝1
Что нового в Swift 6.2 (помимо обновлений, связанных с параллелизмом)
📺 Неплохой разбор нововведений, которые появятся в iOS 26 и Xcode 26.
И хотя основное внимание все уделяют concurrency, есть и много других фич, о которых можно узнать.
Среди разобранных пропозалов:
➡️ Default Value in String Interpolations
➡️ Raw identifiers
➡️ Collection conformances for enumerated()
➡️ InlineArray, a fixed-size array
➡️ InlineArray Type Sugar
➡️ Integer Generic Parameters
➡️ Span: Safe Access to Contiguous Storage
😃 iOS Dev
📺 Неплохой разбор нововведений, которые появятся в iOS 26 и Xcode 26.
И хотя основное внимание все уделяют concurrency, есть и много других фич, о которых можно узнать.
Среди разобранных пропозалов:
Please open Telegram to view this post
VIEW IN TELEGRAM
5 12👍8🔥7❤🔥3👏2🎉1🏆1
Быть инженером
Прочитал кайфовую историю, как Вадим интегрировал себе PassKit за несколько часов разработки, чтобы вместо 47 секунд тратить 3 на вход в тренажёрку 💪
Разве не в этом смысл быть разработчиком вообще? Упрощать жизнь, делать привычные действия быстрее или вообще автоматизированными.
В своём приложении Starly я также бился с возможностью упрощения и экономии личного времени. У меня сейчас порядка 20 пет-проектов, из которых я поддерживаю около 7. И представьте, что в каждом по 15 локализаций. Сколько времени надо на переводы?
Ну по классике: прикрутил SDK для работы с AppStore Connect, лупанул туда движок DeepL (и есть ещё кое-какой хак, как в телеге). Хотя можно подумать сейчас и над чем-то более весёлым в современных реалиях)
Так вот, вместо 1.5 часов просто на то, чтобы вбить переводы, я трачу около 2 минут - пишу текст обновления на русском или английском, а алгоритм под капотом делает всё остальное за меня.
Или вот надо было зарефакторить большой проект (всё еще надо) - сделал себе подсчёт строк в каждом файле, чтобы понять, с чего вообще начать.
А ещё когда-то пилил скрипт на питоне, чтобы спарсить все оценки с кинопоиска и перенести на letterboxd автоматически (киноманы поймут, о чём речь, когда у вас просмотренных тысяча фильмов). Думал даже выложить его в открытый доступ, но решил, что слишком маленькая аудитория.
А что для вас быть инженером? Используете ли вы свои навыки вне работы?
Может у вас есть пет-проект, о котором вы бы хотели рассказать - поделитесь!
😃 iOS Dev
Прочитал кайфовую историю, как Вадим интегрировал себе PassKit за несколько часов разработки, чтобы вместо 47 секунд тратить 3 на вход в тренажёрку 💪
Разве не в этом смысл быть разработчиком вообще? Упрощать жизнь, делать привычные действия быстрее или вообще автоматизированными.
В своём приложении Starly я также бился с возможностью упрощения и экономии личного времени. У меня сейчас порядка 20 пет-проектов, из которых я поддерживаю около 7. И представьте, что в каждом по 15 локализаций. Сколько времени надо на переводы?
Ну по классике: прикрутил SDK для работы с AppStore Connect, лупанул туда движок DeepL (и есть ещё кое-какой хак, как в телеге). Хотя можно подумать сейчас и над чем-то более весёлым в современных реалиях)
Так вот, вместо 1.5 часов просто на то, чтобы вбить переводы, я трачу около 2 минут - пишу текст обновления на русском или английском, а алгоритм под капотом делает всё остальное за меня.
Или вот надо было зарефакторить большой проект (всё еще надо) - сделал себе подсчёт строк в каждом файле, чтобы понять, с чего вообще начать.
А ещё когда-то пилил скрипт на питоне, чтобы спарсить все оценки с кинопоиска и перенести на letterboxd автоматически (киноманы поймут, о чём речь, когда у вас просмотренных тысяча фильмов). Думал даже выложить его в открытый доступ, но решил, что слишком маленькая аудитория.
А что для вас быть инженером? Используете ли вы свои навыки вне работы?
Может у вас есть пет-проект, о котором вы бы хотели рассказать - поделитесь!
Please open Telegram to view this post
VIEW IN TELEGRAM
4 19❤🔥12🔥9👍6✍2👏1👌1🍓1 1
This media is not supported in your browser
VIEW IN TELEGRAM
🚪 Превращаем макбук в скрипящую дверь с помощью датчика наклона (есть звук)
Оказывается, есть специальное (непубличное API), доступное аж с 2019. Впервые появилось в 16-дюймовом макбук про и если ваш ноут более новый, то оно скорее всего также доступно.
📖 В этой репе можно посмотреть на пример тестового проекта.
А если вам вдруг понадобятся весы, а под рукой только ваш ноутбук, напомню про этот пост.
😃 iOS Dev
Оказывается, есть специальное (непубличное API), доступное аж с 2019. Впервые появилось в 16-дюймовом макбук про и если ваш ноут более новый, то оно скорее всего также доступно.
📖 В этой репе можно посмотреть на пример тестового проекта.
А если вам вдруг понадобятся весы, а под рукой только ваш ноутбук, напомню про этот пост.
Please open Telegram to view this post
VIEW IN TELEGRAM
5🔥66 15👍11 5🤩4🍓2😎2🤝1
Что изменилось в работе со строками в Swift 6.2
Если раньше для опционального значения и использования в коде ниже было предупреждение
И компилятор предлагал юзать
📖 В этом пропозале принят вариант, который позволяет записывать предполагаемое значение по умолчанию в виде строки, независимо от типа.
Это дополнение также повышает и ясность кода вместо того, чтобы допускать nil-утечку в строковый вывод.
Расширенный список принятых пропозалов - в этом посте.
😃 iOS Dev
Если раньше для опционального значения и использования в коде ниже было предупреждение
String interpolation produces a debug description for an optional value; did you mean to make this explicit?
:let age: Int? = nil
print("Your age: \(age)")
И компилятор предлагал юзать
String(describing:)
, чтобы избавиться от ворнинга, то теперь все стало проще.📖 В этом пропозале принят вариант, который позволяет записывать предполагаемое значение по умолчанию в виде строки, независимо от типа.
let age: Int? = nil
print("Your age: \(age, default: "missing")")
// Prints "Your age: missing"
Это дополнение также повышает и ясность кода вместо того, чтобы допускать nil-утечку в строковый вывод.
Расширенный список принятых пропозалов - в этом посте.
Please open Telegram to view this post
VIEW IN TELEGRAM
10🔥32 15👍9💯8 3❤🔥1👌1
iOS-разработчики получают самую высокую зарплату в России согласно исследованию хабра. Так ли это на самом деле?
Я проверил это с помощью масштабного опроса и поделился выводами.
Кроме аналитики, есть и сравнение с реальными европейскими зарплатами в нашей и смежных сферах, а также отслеживание динамики изменений.
✅ Подпишитесь, чтобы посмотреть результаты на бусти и в телеграме (действует специальное предложение).
😃 iOS Dev
Я проверил это с помощью масштабного опроса и поделился выводами.
Кроме аналитики, есть и сравнение с реальными европейскими зарплатами в нашей и смежных сферах, а также отслеживание динамики изменений.
🧠 А ещё вы сможете получить:➡️ Карта изучения Swift Concurrency➡️ Вопросы на чтение кода➡️ Многопоточность➡️ DispatchQueue: практические вопросы➡️ Swift Concurrency➡️ Алгоритмы: терминология и примеры➡️ Память: ARC, side table, флаги, утечки➡️ Разбор подходов к анимациям и лучшие паттерны.
А также доступ к ранним релизам приложения iOS IQ, тонну теории и многое другое.
Please open Telegram to view this post
VIEW IN TELEGRAM
12 18👍9🤯5🔥4💯3❤🔥2👏2✍1🍓1 1
Что покупаем после презентации?
Anonymous Poll
9%
iPhone 17
15%
iPhone Air
24%
iPhone 17 Pro
4%
Apple Watch Ultra 3
2%
Apple Watch SE 3
6%
Apple Watch Series 11
28%
AirPods Pro 3
41%
Ничего
6 8 5🤯4👍2🔥2💯2🍓2
Утечки памяти в Swift: что с ними делать, как предотвратить?
Возможно, одна из самых неприятных, но в то же время часто встречающихся в практике историй - поиск утечек памяти.
Даже у нас на проекте сейчас одна из тасок - поиск вещей, связанных с экранами звонков и лайвкитом, в частности.
Кроме классических вариантов с циклическими ссылками (когда у нас есть дочерний контроллер, который хранит ссылку на своего владельца/родителя), может быть куча других проблем: от казалось бы очевидных вещей с таймерами до замыканий и делегатов.
В закрытой базе я попробовал структурировать наиболее частые ситуации, которые могут встречаться в нашей работе, добавил классификацию по степени того, насколько вообще они могут встречаться, основываясь на своём опыте и опыте коллег, но не только это.
Есть несколько полезных задач на подумать: при работе с сетью, что не так с NotificationCenter и многое другое.
Подписаться можно тут:💰 с приятными условиями на бусти ⭐️ в телеграме.
А пока можно вспомнить и про эти истории:
📖 Утечка памяти: детектив в Xcode
📖 Как автоматически обнаруживать утечки памяти с помощью UI-тестов
📖 Управление памятью в Swift
😃 iOS Dev
Возможно, одна из самых неприятных, но в то же время часто встречающихся в практике историй - поиск утечек памяти.
Даже у нас на проекте сейчас одна из тасок - поиск вещей, связанных с экранами звонков и лайвкитом, в частности.
Кроме классических вариантов с циклическими ссылками (когда у нас есть дочерний контроллер, который хранит ссылку на своего владельца/родителя), может быть куча других проблем: от казалось бы очевидных вещей с таймерами до замыканий и делегатов.
В закрытой базе я попробовал структурировать наиболее частые ситуации, которые могут встречаться в нашей работе, добавил классификацию по степени того, насколько вообще они могут встречаться, основываясь на своём опыте и опыте коллег, но не только это.
Есть несколько полезных задач на подумать: при работе с сетью, что не так с NotificationCenter и многое другое.
Подписаться можно тут:
А пока можно вспомнить и про эти истории:
📖 Утечка памяти: детектив в Xcode
📖 Как автоматически обнаруживать утечки памяти с помощью UI-тестов
📖 Управление памятью в Swift
Please open Telegram to view this post
VIEW IN TELEGRAM
6 15✍5🔥5👍2👏2❤🔥1💯1🏆1🍓1
This media is not supported in your browser
VIEW IN TELEGRAM
Пошаговая визуализация алгоритма LLM, лежащего в основе ChatGPT
В канале пару месяцев назад я уже выкладывал шикарный материал от FT (можно посмотреть, что вообще значат токены, как LLM работает с контекстом, и посмотреть на ключевые концепции).
Сегодня хочу поделиться ещё одним взглядом, на этот раз более конкретным примером.
📖 Можно посмотреть на большое интерактивное руководство о том, как работает GPT под капотом. В частности, рассматривают модель nano-gpt, имеющую всего 85 000 параметров.
На каждом шаге рассматривается, что происходит внутри, когда ставят простую задачу:
😃 iOS Dev
В канале пару месяцев назад я уже выкладывал шикарный материал от FT (можно посмотреть, что вообще значат токены, как LLM работает с контекстом, и посмотреть на ключевые концепции).
Сегодня хочу поделиться ещё одним взглядом, на этот раз более конкретным примером.
📖 Можно посмотреть на большое интерактивное руководство о том, как работает GPT под капотом. В частности, рассматривают модель nano-gpt, имеющую всего 85 000 параметров.
На каждом шаге рассматривается, что происходит внутри, когда ставят простую задачу:
Отсортировать по алфавиту входящую последовательность CBABBC в алфавитном порядке, чтобы на выходе получить ABBBCC
.Please open Telegram to view this post
VIEW IN TELEGRAM
7 17✍7🤯5❤🔥3👍3🔥3💯2 2