Интересный факт – UISwitch не стоит использовать нигде, кроме ячеек таблицы.
https://twitter.com/featherless/status/1477294898718154752?s=21
https://twitter.com/featherless/status/1477294898718154752?s=21
Twitter
Jeff Verkoeyen
UIKit design fundamental #84 Switches are only meant to be used as accessory views in table view cells. In most other places, consider using a UIButton built as a "toggle button" instead. Why? It's actually a bit nuanced! A 🧵.
Сборник законов и принципов разработки софта, с каждым из которых стоит быть знакомым в том числе при разработке iOS приложений.
Несколько примеров:
- Закон Конвея. Архитектура системы отражается в структуре организации, которая ее разрабатывает.
- Закон Галла. Любая работающая сложная система начиналась с другой работающей системы меньшей сложности. Иначе говоря, сложные системы, задизайненные с нуля, обречены на провал.
- Закон Хайрума. Не важно, что вы обещаете в контрактах своего API – при достаточном количестве пользователей, кто-то будет зависеть от всех его свойств, даже не явных и приватных.
https://github.com/dwmkerr/hacker-laws
Несколько примеров:
- Закон Конвея. Архитектура системы отражается в структуре организации, которая ее разрабатывает.
- Закон Галла. Любая работающая сложная система начиналась с другой работающей системы меньшей сложности. Иначе говоря, сложные системы, задизайненные с нуля, обречены на провал.
- Закон Хайрума. Не важно, что вы обещаете в контрактах своего API – при достаточном количестве пользователей, кто-то будет зависеть от всех его свойств, даже не явных и приватных.
https://github.com/dwmkerr/hacker-laws
GitHub
GitHub - dwmkerr/hacker-laws: 💻📖 Laws, Theories, Principles and Patterns that developers will find useful. #hackerlaws
💻📖 Laws, Theories, Principles and Patterns that developers will find useful. #hackerlaws - dwmkerr/hacker-laws
Признаки того, что вы еще не доросли до сеньора.
https://nicosmusings.substack.com/p/clear-signs-that-you-are-not-a-senior
https://nicosmusings.substack.com/p/clear-signs-that-you-are-not-a-senior
Nico's Musings
Clear Signs that You Are Not A Senior Developer
Not even close!
Что может считаться современным стеком для iOS разработки? Почитайте тред на Reddit, где выбирают лучшие линтер, билдсистему, кодогенератор и другие инструменты. И поделитесь своей собственной подборкой в комментариях!
https://www.reddit.com/r/iOSProgramming/comments/rsnj2h/what_does_a_modern_mobile_development_toolchain
https://www.reddit.com/r/iOSProgramming/comments/rsnj2h/what_does_a_modern_mobile_development_toolchain
Reddit
From the iOSProgramming community on Reddit
Explore this post and more from the iOSProgramming community
Реализация паттерна cascade of events в SwiftUI. Суть такая – в иерархии вьюшек определяются action’ы, которые запускаются для определенного события. При вызове этого события в каком-то subview все запустится по цепочке.
http://www.magnuskahr.dk/posts/2021/12/cascading-environment-actions-in-swiftui/
http://www.magnuskahr.dk/posts/2021/12/cascading-environment-actions-in-swiftui/
magnuskahr
Cascading Environment actions in SwiftUI | magnuskahr
We build an Observer-pattern-like implementation for SwiftUI with actions passed into the environment.
Зачем и как переводить DTO на кодогенерацию по схеме ответов бэкенда.
https://habr.com/ru/company/yandex/blog/598125/
https://habr.com/ru/company/yandex/blog/598125/
Хабр
Кодогенерация DTO: зачем она нужна и как её настроить
Data Transfer Object — модель данных, которые мы передаём из одного слоя приложения в другой. В Яндекс Go мы активно используем DTO. Предположим, нужно отобразить в UI приложения для вызова такси...
Вышла бета-версия довольно симпатичного менеджера сниппетов Swift-кода, из которого можно драг-энд-дропать прямо в Xcode. Посмотрите гифку и, если понравится, вписывайтесь в тестфлайт.
https://twitter.com/gaudioaffectus/status/1478460329122312196
https://twitter.com/gaudioaffectus/status/1478460329122312196
Twitter
Harty
Hey, iOS Devs! Here’s a small demo of an incredibly useful App I created together with @AndreasInk in the last days. You can easily drag and drop Code Snippets into Xcode and Playgrounds. 🧑💻👀
Помните, я несколько раз выкладывал Твиттер треды Jordan Rose про ошибки, допущенные при дизайне Swift? Так вот, он закончил всю серию и собрал их в одном месте.
https://belkadan.com/blog/tags/swift-regrets/
https://belkadan.com/blog/tags/swift-regrets/
Мы много ругаемся на Xcode, но иногда у него получается и приятно удивлять. Например, он может автокомплитить
https://twitter.com/natpanferova/status/1478647485572603906
for-in,
называя переменную в цикле с учетом множественного числа в названии коллекции: items -> item, apples -> apple.
https://twitter.com/natpanferova/status/1478647485572603906
Twitter
Natalia Panferova
I just discovered that Xcode can fully autocomplete for-in loops, including the variable name. If the array variable is in plural, it creates the loop variable in singular. I’ve been always typing it out myself…
История поиска причин странного бага работы с защищенными данными в Keychain, связанного с неочевидным поведением iOS при прогреве (pre-warm) приложения.
https://sourcediving.com/solving-mysterious-logout-issues-on-ios-15-8b818c089466
https://sourcediving.com/solving-mysterious-logout-issues-on-ios-15-8b818c089466
Medium
Solving Mysterious Logout Issues on iOS 15
Learn how we discovered, debugged and fixed a mysterious bug introduced in iOS 15 that caused our users to be logged out mistakenly
Есть много навыков, приобрести которые достаточно быстро, но отдачу от них вы будете чувствовать всю свою будущую карьеру. Один из таких небольших скиллов –
https://gist.github.com/vpnwall-services/ece867608e00fe1ee77ed4780ff5298f
curl <URL> | jq.
jq – это консольная утилита, которая позволяет на лету процессить и форматировать полученный json.https://gist.github.com/vpnwall-services/ece867608e00fe1ee77ed4780ff5298f
Gist
[JQ CookBook] jq CookBook #linux #jq #json #parser #101 #cookbook
[JQ CookBook] jq CookBook #linux #jq #json #parser #101 #cookbook - JQ-101.md
Столп нашего сообщества @Jonfir собрал в одном месте подборку материалов про async/await API. Добавьте в закладки, чтобы было проще разобраться с новыми технологиями.
https://jonfir.github.io/posts/async-await-materials/
https://jonfir.github.io/posts/async-await-materials/
А раз уж мы начали день с асинхронщины, то вот еще новая статья от Санделла про то, как подружить кодовую базу на Combine с кодом на async/await.
https://www.swiftbysundell.com/articles/creating-combine-compatible-versions-of-async-await-apis
https://www.swiftbysundell.com/articles/creating-combine-compatible-versions-of-async-await-apis
Swift by Sundell
Creating Combine-compatible versions of async/await-based APIs | Swift by Sundell
Creating convenience APIs that make it possible to convert async/await-based functions into Combine publishers.
Обещаю, это последняя ссылка про async/await. В докладе обсуждается реализация async/await в Swift, а также сравнивают подходы, принятые в С++ и Rust.
https://www.youtube.com/watch?v=H_K-us4-K7s
https://www.youtube.com/watch?v=H_K-us4-K7s
YouTube
2021 LLVM Dev Mtg “Asynchronous Functions in Swift”
2021 LLVM Developers' Meeting
https://llvm.org/devmtg/2021-11/
—
Asynchronous Functions in Swift - John McCall, Arnold Schwaighofer
Slides: https://llvm.org/devmtg/2021-11/slides/2021-AsyncFunctionsInSwift.pdf
—
async/await is an increasingly common language…
https://llvm.org/devmtg/2021-11/
—
Asynchronous Functions in Swift - John McCall, Arnold Schwaighofer
Slides: https://llvm.org/devmtg/2021-11/slides/2021-AsyncFunctionsInSwift.pdf
—
async/await is an increasingly common language…
Что ждет Swift на сервере в 2022 году и как последние изменения в экосистеме на него повлияют.
https://theswiftdev.com/the-future-of-server-side-swift/
https://theswiftdev.com/the-future-of-server-side-swift/
Theswiftdev
The future of server side Swift - The.Swift.Dev.
What's going to happen with Swift on the Server in 2022? Distributed actors, Vapor 5, some predictions and wishes.
Какой язык вы бы выбрали, если бы вам надо было написать несложный бэкенд для своего приложения? База, немного бизнес-логики и REST API.
Anonymous Poll
33%
Python
21%
Go
7%
Java
33%
Swift
8%
Kotlin
6%
PHP
15%
JavaScript/TypeScript
9%
Другой
Старт новой серии статей про использование CryptoKit. В первой из них разбирается, как работает криптография с открытым ключом.
https://tanaschita.com/20220105-public-key-cryptography-with-cryptokit/
https://tanaschita.com/20220105-public-key-cryptography-with-cryptokit/
Tanaschita
Public-key cryptography with CryptoKit for iOS
Public-key cryptography, also called asymmetric cryptography, provides fundamental security in today's network communications. When it comes to iOS applications, Apple already provides a build-in TLS encryption and digital signing for free when communicating…
Вы из тех, кто считает, что знание алгоритмов нужно только для собеседований на вайтбордах? Может быть, это короткое видео вас переубедит.
https://www.youtube.com/watch?v=ymCXsPwg8G8
https://www.youtube.com/watch?v=ymCXsPwg8G8
YouTube
Computer Science in the Real World: Building a Better Blur
I don't think sorting algorithms are the best introduction to Computer Science. So let's talk through a real world example of speeding up a blurring algorithm. We touch on time complexity ("Big O") and what a quadratic algorithm looks like.
Accidentally…
Accidentally…
Команда мобильной разработки Slack поделилась историей масштабного рефакторинга своих мобильных приложений, получившего название «Дупло». По ссылке – первая часть цикла, в которой команда рассказывает про историю развития их архитектуры, цели рефакторинга и выбранные метрики. Если вы тоже работаете над проектом с огромной легаси кодовой базой, обязательно прочитайте!
https://slack.engineering/stabilize-modularize-modernize-scaling-slacks-mobile-codebases/
https://slack.engineering/stabilize-modularize-modernize-scaling-slacks-mobile-codebases/
Engineering at Slack
Stabilize, Modularize, Modernize: Scaling Slack’s Mobile Codebases - Engineering at Slack
When do you need to overhaul a large code base to address tech debt? What is the best way to address widespread inconsistencies and outdated patterns? How can you make significant architectural improvements to a complex application while still continuing…
Как и почему добавление SFSymbols в проект влияет на время билда.
https://hacknicity.medium.com/xcode-build-times-with-custom-sf-symbols-58ebdd92bc43
https://hacknicity.medium.com/xcode-build-times-with-custom-sf-symbols-58ebdd92bc43
Medium
Xcode Build Times with Custom SF Symbols
Introduction