Не обманывайте себя: вы не «исправите это потом»
Шансы на то, что «костыль» будет исправлен, неуклонно снижаются с течением времени и вот почему:
👉 Преимущества от усовершенствования кода не перевешивают риска что-нибудь испортить
👉 Чем дольше с чем-нибудь живешь, тем сильнее привыкаешь к такому положению вещей
👉 На одной чаше весов исправление, связанное с большими рисками и малыми преимуществами. На другой – что-нибудь из нового, что мы хотели бы реализовать или доработать
👉 Новый код завязан на «плохом» фрагменте и, вероятно, выйдет из строя, если в этом фрагменте что-то изменим
Чаще всего выбор звучит так: «исправить сейчас» или «смириться с тем, что не исправим никогда».
Исходя из этого осознания мы можем точнее расставлять приоритеты и лучше выстроить процессы.
#softskills
Шансы на то, что «костыль» будет исправлен, неуклонно снижаются с течением времени и вот почему:
👉 Преимущества от усовершенствования кода не перевешивают риска что-нибудь испортить
👉 Чем дольше с чем-нибудь живешь, тем сильнее привыкаешь к такому положению вещей
👉 На одной чаше весов исправление, связанное с большими рисками и малыми преимуществами. На другой – что-нибудь из нового, что мы хотели бы реализовать или доработать
👉 Новый код завязан на «плохом» фрагменте и, вероятно, выйдет из строя, если в этом фрагменте что-то изменим
Чаще всего выбор звучит так: «исправить сейчас» или «смириться с тем, что не исправим никогда».
Исходя из этого осознания мы можем точнее расставлять приоритеты и лучше выстроить процессы.
#softskills
👍11👎2
Вышла Lottie 4.0 для iOS с поддержкой Core Animation
Lottie — это кроссплатформенная библиотека Airbnb с открытым исходным кодом для рендеринга векторной анимированной графики.
В Lottie 4.0 значительно улучшена производительность всех анимаций благодаря совершенно новому движку рендеринга на базе Core Animation.
В предыдущих версиях один раз за кадр код выполнялся в основном потоке для продвижения анимации и повторного рендеринга ее содержимого, а значит потреблялось от 5 до 20%+ CPU во время воспроизведения, оставляя меньше циклов процессора доступным для остальной части приложения.
#animation
Lottie — это кроссплатформенная библиотека Airbnb с открытым исходным кодом для рендеринга векторной анимированной графики.
В Lottie 4.0 значительно улучшена производительность всех анимаций благодаря совершенно новому движку рендеринга на базе Core Animation.
В предыдущих версиях один раз за кадр код выполнялся в основном потоке для продвижения анимации и повторного рендеринга ее содержимого, а значит потреблялось от 5 до 20%+ CPU во время воспроизведения, оставляя меньше циклов процессора доступным для остальной части приложения.
#animation
🔥11👍1👎1
Apple to Allow Outside App Stores in Overhaul Spurred by EU Laws
Apple может разрешить сторонние магазины приложений для iPhone и iPad для соблюдения требований Евросоюза.
Важно отметить, что эти изменения коснутся только Европы, однако могут быть распространены на другие страны при принятии аналогичных законов.
#слухи
Apple может разрешить сторонние магазины приложений для iPhone и iPad для соблюдения требований Евросоюза.
Важно отметить, что эти изменения коснутся только Европы, однако могут быть распространены на другие страны при принятии аналогичных законов.
#слухи
🔥11👎5
Coordinator pattern with Tab Bar Controller
Как настроить навигацию в iOS приложении, где есть различные флоу и UITabBarController?
👉 Создаем AppCoordinator - это главный координатор приложения. Он должен быть строго один❗️
👉 AppCoordinator будет открывать и хранить в childCoordinators основные флоу. Например, Login и TabBar
👉 Каждый последующий флоу может иметь собственный координатор, открывать новые флоу и сохранять их в свои childCoordinators
👉 Каждый координатор в методе start() открывает новый флоу на родительском, а в методе finish() - закрывает и говорит родительскому координатору взять на себя управление после закрытия
👉 TabBarCoordinator открывает несколько флоу одновременно для каждого таба и умеет переключать эти табы
#ui
Как настроить навигацию в iOS приложении, где есть различные флоу и UITabBarController?
👉 Создаем AppCoordinator - это главный координатор приложения. Он должен быть строго один❗️
👉 AppCoordinator будет открывать и хранить в childCoordinators основные флоу. Например, Login и TabBar
👉 Каждый последующий флоу может иметь собственный координатор, открывать новые флоу и сохранять их в свои childCoordinators
👉 Каждый координатор в методе start() открывает новый флоу на родительском, а в методе finish() - закрывает и говорит родительскому координатору взять на себя управление после закрытия
👉 TabBarCoordinator открывает несколько флоу одновременно для каждого таба и умеет переключать эти табы
#ui
❤12
This media is not supported in your browser
VIEW IN TELEGRAM
clipped() не оказывает влияния на проверку касаний
Модификатор clipped() в SwiftUI обрезает вью до своих(модификатора) границ, скрывая все, что выходит за пределы этих границ. Но обратите внимание, что обрезание не влияет на проверку касаний (hit testing); обрезанный вью по-прежнему принимает тапы / клики за пределами видимой области.
#ui
Модификатор clipped() в SwiftUI обрезает вью до своих(модификатора) границ, скрывая все, что выходит за пределы этих границ. Но обратите внимание, что обрезание не влияет на проверку касаний (hit testing); обрезанный вью по-прежнему принимает тапы / клики за пределами видимой области.
#ui
👍8👎2
AppCode 2022.3 Release and End of Sales and Support
Вышел релиз AppCode 2022.3, совместимый с macOS 13 и Xcode 14.2. Также было объявлено о завершении проекта. На 14 декабря прекращена продажа и обновление подписок AppCode.
#tools
Вышел релиз AppCode 2022.3, совместимый с macOS 13 и Xcode 14.2. Также было объявлено о завершении проекта. На 14 декабря прекращена продажа и обновление подписок AppCode.
#tools
😢15😁5👍1👎1
Удаляем фон у фото используя CoreML
В статье описан опыт внедрения модели U2Net в приложение для создания коллажа. Исторически, обрезание фона происходило на устройстве силами библиотеки GPUImage, но результат оставлял желать лучшего. U2Net справляется с задачей на отлично, при этом light версия модели весит 4.6 мб, full - 175.9 мб и грузится в фоне.
#ml #swift
В статье описан опыт внедрения модели U2Net в приложение для создания коллажа. Исторически, обрезание фона происходило на устройстве силами библиотеки GPUImage, но результат оставлял желать лучшего. U2Net справляется с задачей на отлично, при этом light версия модели весит 4.6 мб, full - 175.9 мб и грузится в фоне.
#ml #swift
👍8👎1
Как устроено приложение Калькулятор на iPhone
Приложение маленькое, но сделано на сценах.
Ширину лейбла внутри контейнера с полем для ввода пересчитывают при каждом вводе новой цифры или операции. На вью добавили 3 жеста - свайп, лонг-пресс и тап.
В портретном режиме скрытых
Приложение поддерживает
#ios
Приложение маленькое, но сделано на сценах.
Ширину лейбла внутри контейнера с полем для ввода пересчитывают при каждом вводе новой цифры или операции. На вью добавили 3 жеста - свайп, лонг-пресс и тап.
В портретном режиме скрытых
UIView
нет. Значит, при повороте устройства, новые кнопки добавляются и расставляются на лету. Кнопки из портретного режима сохраняются между поворотами.Приложение поддерживает
Voice Over
и Voice Control
для всех интерактивных элементов.#ios
👍13👎1
Stack Overflow: 74% of developers are open to new jobs
Зарплата - основной мотиватор сменить работу для ~54% опрошенных. Другими причинами респонденты называли возможности для роста (~38%), желание поработать с новыми технологиями (~35%) и баланс работы и отдыха (23%).
Причины, которые делают компанию более привлекательной: developer experience (42%), продукт (35%) и обучение у разработчиков за пределами команды (34%).
#оффтоп
Зарплата - основной мотиватор сменить работу для ~54% опрошенных. Другими причинами респонденты называли возможности для роста (~38%), желание поработать с новыми технологиями (~35%) и баланс работы и отдыха (23%).
Причины, которые делают компанию более привлекательной: developer experience (42%), продукт (35%) и обучение у разработчиков за пределами команды (34%).
#оффтоп
👍8👎1
Understand Swift Autoclosures (4 мин)
Autoclosure оборачивает аргумент функции в closure. При вызове autoclosure, возвращается результат выражения, обернутого в него.
Довольно часто мы вызываем функции, которые используют autoclosure (например, метод assert в тестах), но редко пишем их сами. В некоторых случаях autoclosure может синтаксически улучшить код.
#swift
Autoclosure оборачивает аргумент функции в closure. При вызове autoclosure, возвращается результат выражения, обернутого в него.
Довольно часто мы вызываем функции, которые используют autoclosure (например, метод assert в тестах), но редко пишем их сами. В некоторых случаях autoclosure может синтаксически улучшить код.
#swift
👍9😁1
The Hidden Cost of Software Automation (9 мин)
Автоматизация стоит дороже, чем кажется, и вот почему:
1. Нестандартные решений. Под данным пунктом можно понимать цену изучения инструментов для автоматизации
2. Поддержка. Может потребоваться отдельная команда DevOps
3. Потерянный контекст. Если человек, который поддерживал автоматизированное решение уволится, не поучится ли так, что автоматизацию придется делать заново?
Таким образом, автоматизация - это отдельная часть разработки, создание которой - только вершина айсберга. Она нуждается в изменениях и улучшениях. Если этим не заниматься, однажды она превратится в никому непонятный черный ящик.
#процессы
Автоматизация стоит дороже, чем кажется, и вот почему:
1. Нестандартные решений. Под данным пунктом можно понимать цену изучения инструментов для автоматизации
2. Поддержка. Может потребоваться отдельная команда DevOps
3. Потерянный контекст. Если человек, который поддерживал автоматизированное решение уволится, не поучится ли так, что автоматизацию придется делать заново?
Таким образом, автоматизация - это отдельная часть разработки, создание которой - только вершина айсберга. Она нуждается в изменениях и улучшениях. Если этим не заниматься, однажды она превратится в никому непонятный черный ящик.
#процессы
👍4👎1
👍8👎1
What is the difference between #available and @available
#swift
#available
для потребителей API. Помогает проверить доступность фичей на платформе и справиться с ломающими изменениями API.@available
для создателей API. Помогает обозначить доступность класса или метода для потребителей API.#swift
👍6👎1
Как подключить российский SSL-сертификат к iOS-приложению
Одна из санкций, которая досталась России, — запрет на выдачу и продление SSL-сертификатов. Это приводит к тому, что у некоторых компаний сертификат может протухнуть и сайты перестанут открываться.
На iOS действуем так:
👉 Выставляем
👉 Добавляем в проект сертификат с сайта Минцифры
👉 Добавляем в код дополнительную проверку сертификата
#ios
Одна из санкций, которая досталась России, — запрет на выдачу и продление SSL-сертификатов. Это приводит к тому, что у некоторых компаний сертификат может протухнуть и сайты перестанут открываться.
На iOS действуем так:
👉 Выставляем
NSAllowsArbitraryLoadsInWebContent
в Info.plist
в true
👉 Добавляем в проект сертификат с сайта Минцифры
👉 Добавляем в код дополнительную проверку сертификата
#ios
👎11👍7
Какие проблемы решает Release Train в мобильной разработке
Release Train — это процесс координации релизов между командами. Все релизы происходят по фиксированному графику, независимо от того, готовы фичи или нет. Поезд не ждёт вас. Если вы опоздали, то ждите следующего.
С внедрением Release Train появляется предсказуемость релизов и раскатки фич, метрики показывают положительную динамику.
#процессы
Release Train — это процесс координации релизов между командами. Все релизы происходят по фиксированному графику, независимо от того, готовы фичи или нет. Поезд не ждёт вас. Если вы опоздали, то ждите следующего.
С внедрением Release Train появляется предсказуемость релизов и раскатки фич, метрики показывают положительную динамику.
#процессы
🔥10👍3👎1😁1
Apple снова работает над собственным поисковиком
Согласно недавней новости The Information, Apple работает над онлайн-поисковиком, который будет конкурировать с Google на фоне более широких улучшений поиска Spotlight.
Считается, что поисковая группа Apple состоит не менее чем из 200 сотрудников и поддерживает Spotlight, Siri Suggestions и ответы, предоставляемые Siri. По словам одного человека, связанного с командой, команде еще как минимум четыре года до запуска полной замены поиска Google.
#apple
Согласно недавней новости The Information, Apple работает над онлайн-поисковиком, который будет конкурировать с Google на фоне более широких улучшений поиска Spotlight.
Считается, что поисковая группа Apple состоит не менее чем из 200 сотрудников и поддерживает Spotlight, Siri Suggestions и ответы, предоставляемые Siri. По словам одного человека, связанного с командой, команде еще как минимум четыре года до запуска полной замены поиска Google.
#apple
👍7👎2🔥1
Статические и динамические фреймворки на iOS — обсуждение с ChatGPT
ChatGPT уже достаточно обучен, чтобы знать, что частый ответ - «это зависит». Вот его мнение, а подробнее в статье.
Статические и динамические фреймворки — это два типа предварительно скомпилированных библиотек. Статические фреймворки увеличивают размер приложения, но обеспечивают более быстрое время запуска, в то время как динамические фреймворки не увеличивают размер приложения, но могут иметь более медленное время запуска. В конечном итоге решение об использовании статического или динамического фреймворка будет зависеть от конкретных потребностей вашего приложения и ваших целей разработки.
#ios
ChatGPT уже достаточно обучен, чтобы знать, что частый ответ - «это зависит». Вот его мнение, а подробнее в статье.
Статические и динамические фреймворки — это два типа предварительно скомпилированных библиотек. Статические фреймворки увеличивают размер приложения, но обеспечивают более быстрое время запуска, в то время как динамические фреймворки не увеличивают размер приложения, но могут иметь более медленное время запуска. В конечном итоге решение об использовании статического или динамического фреймворка будет зависеть от конкретных потребностей вашего приложения и ваших целей разработки.
#ios
👎3🤩2