Доклад про разную магию, которую можно творить с помощью CoreText.
https://youtube.com/watch?v=GZqeYvu-KFc
https://youtube.com/watch?v=GZqeYvu-KFc
YouTube
Marcin Krzyzanowski: Let's Make That Label With CoreText
Presented at Swift Heroes 2021
LET'S MAKE THAT LABEL WITH CORETEXT
Marcin Krzyzanowski, Software Engineer, Rover Labs inc.
In this presentation I'll be looking at:
- Overview CoreText design and use.
- A hands-on recipe on how to properly use CoreText…
LET'S MAKE THAT LABEL WITH CORETEXT
Marcin Krzyzanowski, Software Engineer, Rover Labs inc.
In this presentation I'll be looking at:
- Overview CoreText design and use.
- A hands-on recipe on how to properly use CoreText…
О, кстати, вспомнил волшебный доклад Ирины Дягилевой, который поможет вам еще глубже погрузиться в типографику в iOS. Старый, но все еще актуальный. Главная фишка доклада – что все слайды реализованы как iPad приложение, и Ира прямо в лайве показывает, как модификация различных свойств влияет на текст.
https://youtube.com/watch?v=796-dC41Doc
https://youtube.com/watch?v=796-dC41Doc
YouTube
Типографика в iOS / Ирина Дягилева (RAMBLER&Co)
Приглашаем на конференцию HighLoad++ 2024, которая пройдет 2 и 3 декабря в Москве!
Программа, подробности и билеты по ссылке: https://clck.ru/3DD4yb
--------
РИТ++ 2016, AppsConf
Тезисы:
http://appsconf.ru/2016/abstracts/2216.html
В iOS очень широкие возможности…
Программа, подробности и билеты по ссылке: https://clck.ru/3DD4yb
--------
РИТ++ 2016, AppsConf
Тезисы:
http://appsconf.ru/2016/abstracts/2216.html
В iOS очень широкие возможности…
Разбор Big O нотации на сниппетах Swift кода. Попробуйте поиграть с ними руками прямо в Xcode, чтобы прочувствовать разницу в производительности.
https://habr.com/ru/post/645723/
https://habr.com/ru/post/645723/
Хабр
Big O нотация в Swift
Что такое Big O нотация? Обозначение Big O нотация (или просто Big O) — это способ оценки относительной производительности структуры данных или алгоритма, обычно по двум осям: времени и пространству....
Обычно когда мне нужно пошарить какой-то скриншот кода, я использую сервис carbon.now.sh. Но вот на днях наткнулся на нативное macOS приложение, которое, кажется, справляется с задачей не хуже.
https://codeshotapp.com/
https://codeshotapp.com/
carbon.now.sh
Carbon is the easiest way to create and share beautiful images of your source code.
📆Айосеры, просыпайтесь! Apple выпустили новые нереально крутые ремешки в стиле афрофутуризма – пора обновляться. Это, конечно, был главный инфоповод на этой неделе, но не единственный. Встречайте ваш обожаемый воскресный дайджест постов в канале. Не забывайте ставить ❤️, 👍 и 🤩 – я внимательно слежу за их количеством!
🔥Для начала разомнемся на трех топовых материалах этой недели:
Лонгрид про GPS
Прогрев приложения в iOS 15
Big O нотация в Swift
✍️Судя по вашим реакциям и обсуждению в чате, очень круто зашли посты про работу с текстом в iOS. Я сделал себе пометку и поищу еще классных материалов на эту тему (вы тоже можете шарить, если есть что-то на примете).
Типографика в iOS
Магия с CoreText
💻Традиционная народная мудрость – различные советы и практики, которые могут сделать вашу ежедневную работу сильно эффективнее.
Лучшие практики юнит тестирования
Кастомный Xcode behaviour, который скрывает все, кроме редактора
Приложение для снятия пиксель перфект скриншотов
💬Если вы устали регулярно читать наш чатик iOS Good Talks, но хотите быть в курсе последних обсуждений, рекомендую обратить внимание на два треда: про координаторы в VIPER (да-да, вы не ослышались!!!) и про проблемы собеседований айосеров разных грейдов. Учтите, там листать нужно довольно много, так что на свой страх и риск!
И напоследок несколько материалов из дружественных каналов @leadgr, @droidgr и @qa_channel:
Как сделать команду самоуправляемой и избавиться от тимлидов
Лучшие практики разбора инцидентов и написания пост-мортемов
Доклад с критикой новых архитектурных гайдлайнов от Google
Если вам понравился дайджест – поставьте ему сердечко, харт, heart, лойс, лайк или что вам захочется. Буду писать дайджесты, пока получаю положительные реакции, учтите! А все предложения по формату – в комменты.
#digest
🔥Для начала разомнемся на трех топовых материалах этой недели:
Лонгрид про GPS
Прогрев приложения в iOS 15
Big O нотация в Swift
✍️Судя по вашим реакциям и обсуждению в чате, очень круто зашли посты про работу с текстом в iOS. Я сделал себе пометку и поищу еще классных материалов на эту тему (вы тоже можете шарить, если есть что-то на примете).
Типографика в iOS
Магия с CoreText
💻Традиционная народная мудрость – различные советы и практики, которые могут сделать вашу ежедневную работу сильно эффективнее.
Лучшие практики юнит тестирования
Кастомный Xcode behaviour, который скрывает все, кроме редактора
Приложение для снятия пиксель перфект скриншотов
💬Если вы устали регулярно читать наш чатик iOS Good Talks, но хотите быть в курсе последних обсуждений, рекомендую обратить внимание на два треда: про координаторы в VIPER (да-да, вы не ослышались!!!) и про проблемы собеседований айосеров разных грейдов. Учтите, там листать нужно довольно много, так что на свой страх и риск!
И напоследок несколько материалов из дружественных каналов @leadgr, @droidgr и @qa_channel:
Как сделать команду самоуправляемой и избавиться от тимлидов
Лучшие практики разбора инцидентов и написания пост-мортемов
Доклад с критикой новых архитектурных гайдлайнов от Google
Если вам понравился дайджест – поставьте ему сердечко, харт, heart, лойс, лайк или что вам захочется. Буду писать дайджесты, пока получаю положительные реакции, учтите! А все предложения по формату – в комменты.
#digest
У каждого уважающего себя разработчика должен быть личный сайт. А если разработчик хочет, чтобы его уважал не только он сам, но еще и другие, сайт надо делать на максимально не предназначенной для этого технологии. Например, на Swift. Короче, тут это, фреймворк новый подвезли, почему бы и не попробовать на выходных.
https://github.com/alchemy-swift/alchemy
https://github.com/alchemy-swift/alchemy
GitHub
GitHub - alchemy-swift/alchemy: Modern, batteries included web framework for Swift.
Modern, batteries included web framework for Swift. - alchemy-swift/alchemy
Чем выше по уровню растет инженер, тем больше ему приходится писать текста вместо кода: комментариев на ревью, имейлов, сообщений в чате, выжимок со встреч, пропозалов, постмортемов, PRD и других документов. От того, насколько просто и понятно вы умеете выражать свои мысли в тексте, зависит многое.
Если вы решите капитально прокачать свои навыки написания текста, в первую очередь посмотрите на книги Максима Ильяхова: «Пиши, сокращай» и «Ясно, понятно». Но пока до книг не добрались, начать можно и с малого – например, с отличной статьи по ссылке. Там очень ярко описывается, почему этот навык надо качать, и предлагается много практических советов по тому, как именно это делать.
https://blog.pragmaticengineer.com/becoming-a-better-writer-in-tech/
Если вы решите капитально прокачать свои навыки написания текста, в первую очередь посмотрите на книги Максима Ильяхова: «Пиши, сокращай» и «Ясно, понятно». Но пока до книг не добрались, начать можно и с малого – например, с отличной статьи по ссылке. Там очень ярко описывается, почему этот навык надо качать, и предлагается много практических советов по тому, как именно это делать.
https://blog.pragmaticengineer.com/becoming-a-better-writer-in-tech/
The Pragmatic Engineer
Becoming a Better Writer as a Software Engineer
Writing is an increasingly important skill for engineering leaders. Indeed, poor writing can hamper career progression, above a certain level. Tactics for more clear, more frequent and more confident writing.
I’ve observed that my writing is not up to par…
I’ve observed that my writing is not up to par…
Объявляю сегодняшний день – днем Xcode. Давайте начнем утро с очень ностальгической статьи, рассказывающей об эволюции Xcode с самой первой версии до сегодняшнего дня. Несколько фактов для затравки, о которых я не знал:
1. Первое название Xcode – Project Builder.
2. Project Builder был не первой IDE под macOS, и какое-то время ему пришлось отвоевывать рынок.
3. Project Builder был чуть ли не первой бесплатной IDE в то время.
4. Interface Builder начинался как отдельное приложение, которое потом слили с Xcode.
Короче, читаем и ностальгируем по временам, когда комплишн работал!
http://martiancraft.com/blog/2022/01/xcode-through-the-years/
1. Первое название Xcode – Project Builder.
2. Project Builder был не первой IDE под macOS, и какое-то время ему пришлось отвоевывать рынок.
3. Project Builder был чуть ли не первой бесплатной IDE в то время.
4. Interface Builder начинался как отдельное приложение, которое потом слили с Xcode.
Короче, читаем и ностальгируем по временам, когда комплишн работал!
http://martiancraft.com/blog/2022/01/xcode-through-the-years/
Martiancraft
Xcode Through the Years
Journey back in time to learn the history of Xcode, why it became popular and important, and where we see it going in the future.
Вышла первая бета Xcode 13.3 с кучей правок в подсистемах комплишна, подсветки, jump to definition и indentation. Немного твитов по теме разжечь интерес:
- Новая директива #unavailable, которая кому-то поможет избавиться от портянок кода
- В комплишне работают саджесты инстансов enum
- SwiftPM билд тулы, про которые я завтра подробнее расскажу
- Можно писать вот так: `let _ : _ = 1`
Обновляемся, тестируем, репортим баги. И в целом расскажите обязательно в обсуждениях про общее впечатление от стабильности версии!
https://developer.apple.com/documentation/xcode-release-notes/xcode-13_3-release-notes
- Новая директива #unavailable, которая кому-то поможет избавиться от портянок кода
- В комплишне работают саджесты инстансов enum
- SwiftPM билд тулы, про которые я завтра подробнее расскажу
- Можно писать вот так: `let _ : _ = 1`
Обновляемся, тестируем, репортим баги. И в целом расскажите обязательно в обсуждениях про общее впечатление от стабильности версии!
https://developer.apple.com/documentation/xcode-release-notes/xcode-13_3-release-notes
Twitter
Suhit Patil
New #unavailable keyword in Xcode 13.3 beta developer.apple.com/documentation/…
А если вы не хотите вручную менеджерить несколько версий Xcode, то вот вам пара удобных решений:
- Xcodes.app для любителей десктопных приложений
- xcodes для тех, кому достаточно CLI
- Xcodes.app для любителей десктопных приложений
- xcodes для тех, кому достаточно CLI
GitHub
GitHub - XcodesOrg/XcodesApp: The easiest way to install and switch between multiple versions of Xcode - with a mouse click.
The easiest way to install and switch between multiple versions of Xcode - with a mouse click. - GitHub - XcodesOrg/XcodesApp: The easiest way to install and switch between multiple versions of Xc...
В Swift 5.6 нас ожидает очень важная доработка в SwiftPM – поддержка плагинов, которые запускаются во время сборки пакета. Вот тут можно почитать детальный пропозал. А если хочется посмотреть, как это будет работать на реальном примере, не дожидаясь выхода новой версии, почитайте эту статью, где плагин используется для автоматической генерации интерфейса со списком цветов, объявленных в ассетах.
https://www.polpiella.dev/an-early-look-at-swift-extensible-build-tools
https://www.polpiella.dev/an-early-look-at-swift-extensible-build-tools
GitHub
swift-evolution/proposals/0303-swiftpm-extensible-build-tools.md at main · swiftlang/swift-evolution
This maintains proposals for changes and user-visible enhancements to the Swift Programming Language. - swiftlang/swift-evolution
И еще одна важная новость. Apple разрешили выкладывать приложение в App Store в приватном режиме. Оно будет доступно по прямой ссылке, но не будет индексироваться в магазине. Это супер удобная штука для:
- Организации софт лонча или бета программы
- Распространения приложений, предназначенных для ограниченного круга пользователей (например, посетителей конфы)
https://developer.apple.com/support/unlisted-app-distribution/
- Организации софт лонча или бета программы
- Распространения приложений, предназначенных для ограниченного круга пользователей (например, посетителей конфы)
https://developer.apple.com/support/unlisted-app-distribution/
Apple
Unlisted App Distribution - Support - Apple Developer
Release your apps that aren’t suited for public distribution as unlisted on the App Store, discoverable only with a direct link. Unlisted apps don’t appear in any App Store categories, recommendations, charts, search results, or other listings. In addition…
Хотите получить актуальный cookbook по оптимизации своих приложений для iOS? Новый сезон Podlodka iOS Crew стартует уже 14 февраля!
За 5 дней мы успеем подробно разобрать Xcode Instruments на практических кейсах, поможем избавиться от лагов UI, уменьшить размер приложения и время его запуска. А еще научимся писать оптимальные unit-тесты, разберемся в lowlevel оптимизациях с помощью LLVM и Swift compiler. И все это в формате воркшопов с множеством кейсов-примеров, которые вы сразу сможете применять в собственных проектах.
Успейте купить билет по сниженной цене — специальное предложение действует только до 2 февраля.
За 5 дней мы успеем подробно разобрать Xcode Instruments на практических кейсах, поможем избавиться от лагов UI, уменьшить размер приложения и время его запуска. А еще научимся писать оптимальные unit-тесты, разберемся в lowlevel оптимизациях с помощью LLVM и Swift compiler. И все это в формате воркшопов с множеством кейсов-примеров, которые вы сразу сможете применять в собственных проектах.
Успейте купить билет по сниженной цене — специальное предложение действует только до 2 февраля.
podlodka.io
Онлайн-конференция Podlodka iOS Crew, сезон #15
Недельное мероприятие от команды Podlodka: ежедневные интерактивные сессии в Zoom по актуальным проблемам iOS-разработки, нон-стоп общение с экспертами и звёздами индустрии, закрытое профессиональное сообщество в Telegram.
Новая часть цикла про Microapps Architecture. В этот раз про шаринг ресурсов и локализации между модулями.
https://swiftwithmajid.com/2022/01/26/microapps-architecture-in-swift-resources-and-localization/
https://swiftwithmajid.com/2022/01/26/microapps-architecture-in-swift-resources-and-localization/
Swift with Majid
Microapps architecture in Swift. Resources and localization.
This week we will continue the topic of microapps architecture in Swift by touching on another essential edge of this approach. In this post, we will talk about sharing resources between modules and separating the localization of feature modules.
Ребята из EmergeTools продолжают дико угорать по разным оптимизациям перфоманса. Чтобы ускорить среднее время старта приложений, они скармливают линкеру инструкции по тому, в каком порядке надо группировать символы. Таким образом в первую очередь считываются только символы, необходимые для запуска. Больше деталей, измерений приложений из App Store и теории – в статье.
https://www.emergetools.com/blog/posts/FasterAppStartupOrderFiles
https://www.emergetools.com/blog/posts/FasterAppStartupOrderFiles
Emergetools
Emerge Tools Blog | How Order Files Reduce App Startup Time
An in depth look at how long it takes to read an app binary from disk, and why order files make apps launch faster.
💪 Узнайте максимум о iOS разработке.
❗️Приглашаем всех на бесплатные вебинар по iOS разработке для тех, кто с 0 и у кого уже есть опыт разработки.
👉 Только осваиваете азы или хотите создать свое первое приложение с 0?
Урок для новичков:
Классы - https://otus.pw/F8dQ/
❓ Уже есть опыт разработки? Проверьте свои знания пройдя тест.
Зарегистрируйтесь на вебинар и пройдите тест для участия:
Пишем выразительный код на Swift 5.x - https://otus.pw/rKnf/
❗️Приглашаем всех на бесплатные вебинар по iOS разработке для тех, кто с 0 и у кого уже есть опыт разработки.
👉 Только осваиваете азы или хотите создать свое первое приложение с 0?
Урок для новичков:
Классы - https://otus.pw/F8dQ/
❓ Уже есть опыт разработки? Проверьте свои знания пройдя тест.
Зарегистрируйтесь на вебинар и пройдите тест для участия:
Пишем выразительный код на Swift 5.x - https://otus.pw/rKnf/
Otus
iOS Developer. Professional | OTUS
Курс Разработчик iOS в OTUS с возможностью трудоустройства
Dodo рассказывают про свой довольно тернистый путь по локализации приложения, использованные инструменты и совершенные ошибки. Если ваш проект тоже поддерживает несколько языков, рекомендую почитать – какие-нибудь идеи сможете забрать и себе.
https://habr.com/ru/company/dododev/blog/592751/
https://habr.com/ru/company/dododev/blog/592751/
Хабр
15 стран, 9 языков: трудности перевода одного iOS-приложения
Представьте, что у вас есть приложение для iOS. Оно полностью на русском, без единой локализованной строки. Часть строк вы выводите на экран в коде, часть зашита в Storyboard и xib-файлах. Приложение...
Твиттер тред от Жени Ртищева про оптимизации размера приложения, времени старта и скорости сборки. Каждое из направлений разбирается в формате "зачем оптимизировать", "что влияет", "как оптимизировать". Учитывая, что в перфомансе вовсю действует правило Парето, по которому 20% усилий дают 80% результата, эти лайфхаки вам пригодятся.
https://twitter.com/katleta3000/status/1488060002468352005
https://twitter.com/katleta3000/status/1488060002468352005
Очень интересный тред на Reddit про то, действительно ли функциональные программы или языки по определению более медленные, или все дело в неэффективности современных языков. Все сводится к тому, что производительность – понятие растяжимое, функциональность – тоже. Но в самих комментариях много ценных идей и ссылок.
https://www.reddit.com/r/ProgrammingLanguages/comments/rsce6j/why_are_imperative_programs_considered_faster
https://www.reddit.com/r/ProgrammingLanguages/comments/rsce6j/why_are_imperative_programs_considered_faster
Reddit
From the ProgrammingLanguages community on Reddit
Explore this post and more from the ProgrammingLanguages community
В Kotlin есть классная фича – scope functions. Это функции, выполняющие блок кода в контексте определенного объекта с захватыванием его. Вот простой пример:
https://alejandromp.com/blog/fluent-syntax-extensions-in-swift
val adam = Person("Adam").apply {
age = 20
city = "London"
}
В статье рассказывается, почему в Swift такую же штуку реализовать не так просто, и как эти ограничения можно обойти.https://alejandromp.com/blog/fluent-syntax-extensions-in-swift
Alexito's World
Fluent syntax extensions in Swift | Alexito's World
In the early days of Swift, one thing I really enjoyed was the focus on properties (bye-bye ivars!) and the unification of stored and computed property syntax. It became very...