Как стать автором
Обновить
-3
0.8

Пользователь

Отправить сообщение

Заводим Яндекс Карты в Compose Multiplatform

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров5.5K

Привет! Это мой первый пост на Хабре, буду рад услышать профессиональное и не очень мнение по поводу этой статьи.

Реализуем Яндекс Карты в KMP проекте с использованием Compose Multiplatform. Нестандартное решение с интерфейсом на Swift и передачей кода через DI.

Читать далее

Упрощаем локализацию iOS-приложения со String Catalogs

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров4.5K

Выход продукта на новые рынки сбыта — это деньги. Чем лучше ты знаешь своего клиента, тем вероятнее, что ты их сможешь заработать. Это же правило справедливо и в обратную сторону: клиент более охотно будет пользоваться твоим продуктом, если он может разговаривать с ним на одном языке.

Сегодня я расскажу о том, как можно в значительной мере облегчить и усовершенствовать процесс перевода iOS-приложения на другие языки. Языки, разумеется, человеческие: от Swift мы отказываться не будем.

Читать далее

Как выйти из тупика и начать расти: 5 ментальных ловушек, которые мешают это сделать

Уровень сложностиПростой
Время на прочтение12 мин
Количество просмотров38K

Бывает ли у вас ощущение, что несмотря на все усилия, вы не получаете тех результатов, на которые рассчитываете? Что последние несколько лет в жизни ничего не меняется или становится только хуже. Кажется, что вы зашли в тупик – развития нет, роста нет, перспективы не радуют. Если это про вас, то причина, скорее всего, в одной из ловушек мышления, которые мешают развитию.

Читать далее

Когда мы теряем мотивацию

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров8K

Иногда, когда мы пишем код или работаем над любым другим проектами, в основном PET-проектами, мы теряем мотивацию. Но как избежать этого и работать как обычно?

Читать далее

Прививка от созависимости. Зачем нужен DI и как он работает в iOS-приложениях hh.ru

Уровень сложностиСредний
Время на прочтение16 мин
Количество просмотров4.4K

Всем привет! На связи Яша Штеффен — iOS разработчик из hh.ru.

Думаю, любой, кто долгое время писал код для платформы, был свидетелем эволюции работы с зависимостями. На ранних этапах и в простых проектах все создавалось и настраивалось внутри использующих зависимости объектов. Затем частично начал применяться принцип инъекции, обычно через публичное свойство. На более крупных проектах можно было столкнуться с использованием DI‑библиотек, которые зачастую тащили за собой очень крупный блок плохо читаемого кода. При этом для решения проблемы чрезмерной связанности кода существуют элегантные и простые в использовании решения, которые не подразумевают использование сторонних библиотек.

В статье мы рассмотрим основы DI, поговорим о том, какую проблему решает этот принцип, окинем общим взглядом возможные варианты реализации: паттерны и популярные библиотеки. Подробно рассмотрим схему, по которой работает DI в многомодульном iOS проекте hh.ru. В конце статьи будет разобран пример простого приложения с аналогичным подходом к инъекции.

Читать далее

Упражнения для глаз

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров11K

Сразу скажу, что если есть какие то медицинские проблемы с глазами, то спросите у врача, можно ли их вам выполнять.

Эти упражнения позволяют сохранять качественное зрение в любом возрасте.

Выполнение всего комплекса занимает 30-40 минут, каждый день делать надоест. Поэтому попробуйте делать курсами  Несколько недель через день, через два весь комплекс, а затем от случая к случаю. Но регулярно рекомендую выполнять соляризацию и пальминг.

Упражнения описывал сам, но кто хочет, может обратится к первоисточнику, ссылка на книгу внизу. Часть упражнений не описал, либо сам не делал, либо решил, что всё равно не будете делать:)

Выполнять упражнения  обязательно с удовольствием, никакое напряжение не допустимо.

Читать далее

Что можно и что нельзя делать с Async/Await

Время на прочтение3 мин
Количество просмотров17K

Синтаксис async/await, введенный в Swift 5.5, значительно упростил асинхронное программирование, сделав его более доступным и интуитивно понятным. Однако, как и любой мощный инструмент, он может быть использован неправильно. Здесь я хочу рассмотреть пять распространенных ошибок, которые разработчики часто допускают при использовании async/await и предложить стратегии их избегания.

Ошибка 1: Необработка Ошибок

Асинхронные функции Swift могут вызывать ошибки, так же как и их синхронные аналоги. Однако многие разработчики, особенно те, кто только начинает работать с синтаксисом async/await, могут упускать обработку ошибок, что приводит к сбоям или непредсказуемому поведению.

Решение

Синтаксис do-catch в Swift - ключ к обработке ошибок из асинхронных функций. Обернув вызов асинхронной функции в блок do-catch, вы можете перехватить и обработать любые выброшенные ошибки, предотвратив сбои и обеспечивая предсказуемое поведение вашего приложения.

Читать далее

Диспетчеризация в main thread с помощью MainActor

Время на прочтение6 мин
Количество просмотров11K

MainActor — это новый атрибут из Swift 5.5, который представляет из себя глобальный актор, выполняющий свои задачи в главном потоке (main thread). При создании приложений очень важно следить за тем, чтобы задачи обновления UI выполнялись в главном потоке, что при использовании нескольких фоновых потоков (background threads) иногда может быть затруднительно. Использование атрибута @MainActor поможет вам гарантировать, что ваш UI всегда будет обновляться в главном потоке.

Если вы не очень хорошо разбираетесь в акторах (Actor) в Swift, я рекомендую прочитать мою статью Акторы в Swift: как их использовать и как предотвращать состояние гонки по данным. Глобальные акторы (Global actors) ведут себя аналогично обычным акторам, и в этой статье я не буду вдаваться в подробности того, как работают обычные акторы.

Читать далее

Масштабирование телеграм-ботов на примере aiogram

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров14K

Масштабирование — это не просто увеличение мощности, это искусство эффективного управления ресурсами, чтобы удовлетворить растущие запросы пользователей без потери качества обслуживания. В телеграм-ботах, где количество пользователей может увеличиваться экспоненциально, способность вашего бота адаптироваться к растущей нагрузке становится ключом к его успеху.

Aiogram, асинхронная библиотека для создания ботов на питоне, выделяется своей гибкостью и производительностью. Она позволяет создавать более отзывчивые и масштабируемые боты, используя современные асинхронные возможности Python.

Читать далее

Листаем цифровые страницы: UIPageViewController

Время на прочтение5 мин
Количество просмотров2.9K

UIPageViewController — это компонент пользовательского интерфейса iOS, который предлагает удобный способ навигации между последовательными страницами контента. Он использует постраничную модель представления, позволяющую пользователям пролистывать страницы влево или вправо с помощью жестов.
Особенно полезен в приложениях, где контент должен быть представлен в формате, напоминающем физические страницы. Например, в приложениях для чтения книг, образовательных курсах, галереях изображений или даже в некоторых типах интерактивных руководств. UIPageViewController обеспечивает дополнительный уровень привлекательности и удобства использования приложения.

Сегодня я хочу поделиться кратким и простым руководством о том, как просто и программно реализовать UIPageViewController. Итак, что же мы получим в итоге?

Читать далее

Добавляем DALL-E 3 в свой ChatGPT бот в Telegram

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров20K

DALL-E 3, новая версия модели для генерации изображений от OpenAI, стала доступна публично через ChatGPT в октябре 2023 года и сразу стала очень популярной благодаря существенно лучшему качеству генерируемых изображений, по сравнению с предыдущими версиями модели.

В этом туториале добавляем генерацию изображений с помощью DALL-E 3 в наш Telegram чат-бот!

Читать далее

Как я добился чистой архитектуры на фронтенде

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров18K

Все мы понимаем для enterprise решений требуется тщательного анализа в плане проектирование и этому уделяется не мало времени, от структуры папок, описании регламента по стилям или коду, подключение микрофронтов и если эта не учитывать мы получаем в своем роде монолита, где все хаотично разбросано и в целом эта не плохо работает до определенного поры времени.

Читать далее

Архитектура SwiftUI + VIPER: модульный подход к разработке iOS‑приложений

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров4.3K

SwiftUI + VIPER - это доработанный архитектурный паттерн разработки приложений, предоставляющий чистую, модульную и легко тестируемую структуру. В этой статье мы рассмотрим, как работает архитектура SwiftUI + VIPER и как создавать приложения, модули и сервисы на ее основе.

И ни капельки UIKit и другой темной магии..

Читать далее

Мобильная разработка за неделю #511 (16 — 22 октября)

Время на прочтение5 мин
Количество просмотров2.6K
В новой подборке сторонние платежи в iOS-приложениях в России, использование Swift и SwiftUI в iOS 17, русификация китайского Android и поиск лишних Component Dependencies, камеры и Flutter, шесть платформ, 15 лет программной инженерии и многое другое!

Подписывайтесь на на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.

Читать дальше →

Книги по Swift и iOS-разработке для начинающих специалистов и профессионалов

Время на прочтение4 мин
Количество просмотров11K

iOS-разработка не теряет актуальности, и количество программистов, которые создают приложения для iOS, не снижается. В России можно приобрести несколько хороших книг, которые помогут начинающим получить больше теории и практики, а профессионалам — дополнить свои навыки. Подборка книг — под катом.

Читать далее

Что мобильным разработчикам расскажут на Mobius 2023 Autumn: от Compose и SwiftUI до компьютерного зрения

Время на прочтение19 мин
Количество просмотров1.7K

Близится очередная конференция Mobius, и пришло время представить Хабру её программу.

Суть прежняя: тут есть доклады и по iOS-разработке, и по Android, и по кроссплатформенным технологиям вроде Flutter. И про свежие тренды (вплоть до шлема Apple Vision Pro), и про более фундаментальные вопросы вроде архитектурных.

А что конкретно будет? Собрали под катом описания всех докладов, разделив их на тематические блоки.

Программа Mobius 2023 Autumn

Универсальные датасорсы в iOS-разработке

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров4.1K

В мире iOS-разработки, коллекции – это основной инструмент для представления данных в упорядоченной форме, таких как списки, таблицы, галереи фотографий или медиа-файлов. Они широко используются в различных сервисах, от социальных сетей до медицинских приложений. Однако, для создания эффективных и высокопроизводительных систем, необходимо иметь гибкое и масштабируемое решение для управления данными в коллекциях. Именно здесь на сцену выходят универсальные датасорсы.

Универсальные датасорсы предоставляют разработчикам API для доступа к данным в коллекциях без привязки к конкретному источнику и типу данных. Они обеспечивают абстракцию, которая дает разработчикам возможность работать с данными в коллекциях независимо от их происхождения или формата хранения. Это позволяет легко изменять источник данных, добавлять новые функции и поддерживать разные типы данных в приложении.

В данной статье рассмотрим различные подходы к регистрации и конфигурации ячеек в коллекции, пример реализации универсального датасорса, преимущества, особенности и недостатки данного подхода в разработке.

Читать далее

Руководство по Использованию Многопоточности в Swift

Время на прочтение3 мин
Количество просмотров2.4K

Многопоточность в Swift играет критически важную роль в создании отзывчивых и эффективных приложений. В этой статье мы рассмотрим, когда и как использовать новые возможности многопоточности в Swift, включая async/await, Task и структурированную многопоточность.

Читать далее

Шейдеры в iOS для начинающих

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров8K

В мобильной разработке мы постоянно имеем дело с векторной графикой: ячейки — прямоугольные, аватарки — круглые, текст — это векторные формы. В пиксели это всё превращается без нашего ведома и как-то само.

Но есть ещё и мир растровых эффектов — когда какая-то трансформация происходит с каждым пикселем по отдельности. С таким почти не приходится работать или используются уже готовые решения. Например, тени — типичный растровый эффект. Или блюр, который стал популярен, начиная с iOS 7, — именно тогда он стал одним из стандартных эффектов.

В iOS 17 пришло значимое обновление — теперь добавить шейдер можно к любой View, а значит, вся интеграция стала проще и растровых эффектов появится больше.

Давайте разбираться, что за чудо-код надо написать, как это подключить и как в целом погрузиться в тему. Начнём с простых градиентов, а закончим сложным примером «как в Air Drop на iOS 17».

Читать далее

Портится зрение? Гигиена света от синдрома сухого глаза

Время на прочтение5 мин
Количество просмотров12K

В этой статье вы найдете ответ на вопрос: почему или из-за чего портится зрение. Статьи, написанные другими авторами, будут про то, как с этим бороться, а не почему это происходит. Естественно, мы не говорим о банальном приобретении миопии от долгой работы на близком расстоянии или генетической расположенности.

Читать далее

Информация

В рейтинге
1 767-й
Зарегистрирован
Активность