Как стать автором
Обновить
-1
0
Роман Керимов @RomanKerimov

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

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

Ошибка – это не UIAlertController

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


Дизайнеры, с которыми я работаю, часто рассматривают сообщения об ошибках в iOS как что-то очевидное. А если конкретно – как UIAlertController.

Читать дальше →
Всего голосов 17: ↑17 и ↓0+17
Комментарии8

Не держите людей за идиотов или почему человек с инженерным образованием может сжечь вышку сотовой связи (видео)

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


Знаете что общего между ситуацией с уничтожением антенн сотовой связи и последней лентой Тарантино «Однажды в Голливуде»? Они оба делят людей на два противоположных лагеря.
Читать дальше →
Всего голосов 300: ↑272 и ↓28+244
Комментарии340

Юлия → Iuliia. Всё о транслитерации

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

Транслитерация


Транслитерация — это запись кириллических слов латиницей (Анна → Anna, Самара → Samara). Её используют в загранпаспортах, водительских удостоверениях, трансграничной доставке, библиотечных каталогах и множестве других международных процессов.


Так вышло, что я недавно окунулся в эту тему, а в Википедии она раскрыта слабо. Поэтому расскажу, что к чему (спойлер — если вы думаете, что с транслитерацией всё плохо, то на самом деле всё ещё хуже).


И конечно, поскольку это Хабр — предложу open-source библиотеки для решения проблемы.

Читать дальше →
Всего голосов 193: ↑192 и ↓1+191
Комментарии543

20 библиотек для эффектного iOS-приложения

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


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

Все анимации являются ссылками на свои полноразмерные версии.
Большой траффик - много гиф-анимации
Всего голосов 23: ↑22 и ↓1+21
Комментарии13

На пути к идеальной клавиатуре

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

Я программист и, как вы догадываетесь, некоторое время провожу за набором кода. Это занятие обычно заключается в переносе мысли из пространства между дужками очков в пространство за монитором. Пока нейроинтерфейсы редки, легаси требования делают печать достаточно сложной, в ней участвуют мозг, глаза, руки, клавиатура, компьютер и монитор. Хотелось бы смотреть только на монитор, а не переводить взгляд на клавиатуру. При этом попадать по нужной клавише, быстрее печатать и меньше опечатываться, меньше двигать запястьем и пальцами.


Ответ — эргономическая клавиатура. Под катом процесс рождения двух. Уберите детей подальше от экранов, есть сцены технопорно.


image

Читать дальше →
Всего голосов 116: ↑115 и ↓1+114
Комментарии355

ОС Фантом: оконная подсистема — делаем контролы

Время на прочтение7 мин
Количество просмотров13K
Сегодня речь пойдёт о том, как устроен графический UI Фантома.

(Что такое ОС Фантом можно узнать, прочитав вот эти статьи.)

Точнее — как этот графический UI появился на свет. Ибо долгое время у Фантома был только графический вывод — донести системе что-либо с помощью мышки было почти невозможно.

Теперь же подошла пора сделать хоть несложные — но приложения, а значит — нужен UI. Да и вообще — система, будем откровенны, выглядела страшновато. А это нынче не в моде.

Что было в наличии на начало проекта UI? В принципе — немало.

Была, собственно, графика — видеодрайвер, оконная подсистема в режиме только отображения, bitmap шрифты, подсистема оконных событий (events), управление фокусом окон и сопутствующие примитивы.

Теперь по шагам и чуть подробнее.
Читать дальше →
Всего голосов 44: ↑42 и ↓2+40
Комментарии37

Понимаем Property Wrappers в SwiftUI

Время на прочтение4 мин
Количество просмотров27K
Перевод статьи подготовлен специально для студентов курса «iOS Разработчик. Продвинутый курс v 2.0.»




На прошлой неделе мы начали новую серию постов о фреймворке SwiftUI. Сегодня я хочу продолжить эту тему, рассказав о Property Wrappers в SwiftUI. SwiftUI предоставляет нам обертки свойств @State, @Binding, @ObservedObject, @EnvironmentObject и @Environment. Итак, давайте попытаемся понять разницу между ними и когда, почему и какую из них мы должны использовать.
Читать дальше →
Всего голосов 16: ↑15 и ↓1+14
Комментарии4

Лучшие практики и инструменты при разработке iOS приложений

Время на прочтение7 мин
Количество просмотров8.5K
Разрабатывая мобильные приложения, мне не раз приходилось создавать проекты с нуля. При этом я и моя команда всегда тратили много времени на основную настройку проекта, такие как интеграция сторонних инструментов, настройка структуры проекта, написание базовых классов, интеграция внешних библиотек и т.д.

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

Каждый инструмент или подход, добавленный в шаблон, заслуживают отдельной статьи, но я хотел бы попытаться суммировать каждый пункт и дать краткое объяснение того, почему я включил их в данную статью.
Читать дальше →
Всего голосов 9: ↑8 и ↓1+7
Комментарии14

Идеальная ОС: переосмысление операционных систем для десктопа

Время на прочтение17 мин
Количество просмотров39K
TL;DR: К концу этого эссе я надеюсь убедить вас в следующих фактах. Во-первых, что современные десктопные операционные системы никуда не годятся. Они раздутые, тормознутые и напичканы легаси-хламом, а кое-как работают только благодаря закону Мура. Во-вторых, что инновации в десктопных ОС прекратились около 15 лет назад, а основные игроки вряд ли собираются много вкладывать в них снова. И наконец, я надеюсь убедить вас, что мы можем и должны начать с нуля, усвоив уроки прошлого.

«Современные» десктопные ОС раздуты


Возьмём Raspberry Pi. За 35 долларов я могу купить отличный компьютер с четырьмя процессорными ядрами, каждое на частоте более гигагерца. У него также есть 3D-ускоритель, гагабайт оперативки, встроенные WiFi с Bluetooth и Ethernet. За 35 баксов! И всё-таки для многих задач, которые я хочу на нём запустить, Raspberry Pi ничем не лучше компьютера на 66 мегагерц, который был у меня в колледже.


Читать дальше →
Всего голосов 57: ↑42 и ↓15+27
Комментарии123

Баги при работе с системной клавиатурой

Время на прочтение12 мин
Количество просмотров7.1K
Взаимодействуя с приложением, мы в определенный момент активируем системную клавиатуру для набора сообщения или заполнения необходимых полей. Сталкивались ли вы с ситуациями, когда клавиатура отображается, а вот поля для ввода сообщения нет или наоборот — клавиатура есть, куда вводить текст, не видно? Баги могут быть связаны как с проблемами внутри конкретного приложения, так и с общими недостатками системной клавиатуры.

Константин Мордань, iOS-разработчик из Mail.ru в своей работе повидал всякое: проанализировав способы управления клавиатурой в iOS, он решил поделиться основными найденными багами и подходами, которые применял для их обнаружения и исправления.



Осторожно: под кат мы поместили много гифок, чтобы наглядно демонстрировать баги. А еще больше примеров вы найдете в видео доклада Константина на AppsConf.
Читать дальше →
Всего голосов 20: ↑19 и ↓1+18
Комментарии3

Изменения модальной презентации экранов в iOS 13

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

Всем привет!


Меня зовут Илья, я из Tinkoff.ru. Я перевел для вас статью от Geoff Hackworth про то, как изменился стиль модальной презентации в iOS 13, на что это повлияло и как работает обратная совместимость с предыдущими версиями iOS и Xcode.


image

Читать дальше →
Всего голосов 30: ↑29 и ↓1+28
Комментарии2

Внедряем Sign in with Apple в свое iOS приложение

Время на прочтение2 мин
Количество просмотров11K
На WWDC 2019 Apple в очередной раз нарушила покой iOS разработчиков — представила новую систему авторизации пользователей Sign in with Apple. Теперь все iOS приложения, которые используют сторонние системы авторизации (Facebook, Twitter, etc.), должны в обязательном порядке реализовать Sign in with Apple, иначе выгонят из AppStore. Мы решили не испытывать судьбу и побежали внедрять эту фичу. Как именно мы это сделали — узнаете под катом.
Читать дальше →
Всего голосов 12: ↑9 и ↓3+6
Комментарии15

Как я добавил 6 символов в Unicode

Время на прочтение4 мин
Количество просмотров18K
Символы-звёздочки (☆★) давно уже входят в Unicode, и потому могут в качестве символов появляться на веб-страницах, в текстах и почте. Но полузвёздочек не было, поэтому для них требовались особые картинки или шрифты. Недавно я участвовал в написании предложения по добавлению полузвёздочек в Unicode, и вот только что наше предложение приняли. В следующем релизе Unicode полузвёздочки можно будет использовать наравне с любыми символами. В статье я расскажу, как я добился добавления полузвёздочек и двух других символов в Unicode.


4 разных использования полузвёздочки для представления оценки 3.5

Unicode – компьютерный стандарт, определяющий, какие символы будут использоваться почти любым компьютером. Он позволяет различным компьютерам показывать текст почти на любом языке и почти с любыми необходимыми символами (до Unicode работа с текстами не на английском была ужасно запутанной). Но Unicode не включает всё. В прошлом июне в комментарии на Hacker News пожаловались, что в Unicode нет символа полузвёздочки, необходимого для рейтингов и обзоров фильмов.
Читать дальше →
Всего голосов 39: ↑37 и ↓2+35
Комментарии26

Не всплывай! Прерываемые транзишены в iOS

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

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


Читать дальше →
Всего голосов 24: ↑23 и ↓1+22
Комментарии0

(Не очень) скрытые издержки общей кодовой базы iOS и Android

Время на прочтение5 мин
Количество просмотров6.6K
До недавнего времени у Dropbox была техническая стратегия использовать общий код C++ для мобильных приложений iOS и Android. Идея понятна: написать код один раз на C++ вместо его дублирования отдельно на Java и Objective C. Мы приняли эту стратегию ещё в 2013 году, когда группа инженеров мобильной разработки была относительно небольшой и приходилось быстро развивать продукт. Такое решение позволило выдавать большой объём кода как на Android, так и на iOS силами маленькой команды.

Теперь мы полностью отказались от этой стратегии в пользу родных языков каждой платформы (в первую очередь Swift и Kotlin, которые не существовали, когда мы начинали). Решение связано с (не очень) скрытыми издержками на совместное использование кода.

Все проблемы вытекают из главного: оверхед оказался больше, чем просто написать код два раза.
Читать дальше →
Всего голосов 16: ↑14 и ↓2+12
Комментарии6

iOS 13 под лупой

Время на прочтение2 мин
Количество просмотров11K
Dynamic Type – хорошо, но работает не всегда. Сейчас я расскажу, как увеличиваются маленькие контролы в iOS 13 бесплатно, без регистрации и смс.

Читать дальше →
Всего голосов 30: ↑28 и ↓2+26
Комментарии1

9 Принципов для создания качественных iOS приложений

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

Принципы основаны на известной методологии от heroku, адаптированы под реалии айос разработки (Отсутствие контейнеров, ревью которые занимают несколько дней и тормозят развертывания, работа Xcode только на маке).


Эта статья является коротким введением, полную серию можете найти на iOS-factor, так же доступен русский перевод. Проект iOS-factor с открытым исходным кодом на github, постоянно дорабатывается и приветствует новые идеи. Я так же принял участие в его развитии. Проект основан Феликсом который является создателем fastlane.


TL;DR


  • Зависимости: Должны быть явно и конкретно указаны (версия Xcode, CocoaPods, версия зависимостей в podfile). Это дает возможность воспроизвести билд на любом маке новому разработчике. Так же повторить сборку которая использовалась 6 месяцев назад.
  • Конфигурация: Нет конфигурации в коде, поставляется вместе с приложением и возможность обновить по воздуху
Читать дальше →
Всего голосов 10: ↑10 и ↓0+10
Комментарии2

Split Controller без этих ваших сторибордов

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

Раньше для поддержки iPad делали отдельный xib. Чтобы унифицировать лейаут, в 2014 году Apple представила Auto Layout и Size Classes, а для адаптивной навигации UISplitViewController.



Split-контроллер — это контейнер, который разместит два контроллера рядом. Слева будет навигационный контроллер (речь не про Navigation Controller), справа соответсвующий выбору в навигационном. Короче, как в Настройках.


Разберем как настроить UISplitViewController и его поведение на экранах.

Читать дальше →
Всего голосов 10: ↑10 и ↓0+10
Комментарии5

Разработка приложения на SwiftUI. Часть 1: поток данных и Redux

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


После участия в сессии State of the Union на WWDC 2019 я решил детально изучить SwiftUI. Я потратил много времени на работу с ним и теперь приступил к разработке реального приложения, которое может оказаться полезным широкому кругу пользователей.

Его я назвал MovieSwiftUI — это апп для поиска новых и старых фильмов, а также их сбора в коллекцию при помощи TMDB API. Я всегда любил фильмы и даже создал компанию, работающую в этой сфере, правда давно. Компанию сложно было назвать классной, а вот приложение — да!
Читать дальше →
Всего голосов 25: ↑24 и ↓1+23
Комментарии1

Custom refactoring tool: Swift

Время на прочтение10 мин
Количество просмотров7.3K
Любой инженер стремится сделать процесс своей работы максимально оптимизированным. Нам, как мобильным разработчикам iOS, очень часто приходится работать с однообразными структурами языка. Компания Apple улучшает инструменты разработчиков, прилагая много усилий, чтобы нам было удобно программировать: подсветка языка, автодополнение методов и многие другие возможности IDE позволяют нашим пальцам успевать за идеями в голове.



Что делает инженер, когда необходимый инструмент отсутствует? Верно, сделает всё сам! Ранее мы уже рассказывали о создании своих кастомных инструментов, теперь поговорим о том, как модифицировать Xcode и заставить его работать по твоим правилам.
Читать дальше →
Всего голосов 29: ↑26 и ↓3+23
Комментарии0
1

Информация

В рейтинге
Не участвует
Откуда
Армавир, Краснодарский край, Россия
Дата рождения
Зарегистрирован
Активность