Как стать автором
Обновить
21
0
Георгий Малюков @GDXRepo

iOS-программист

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

OpenStreetMap с помощью MkMapKit

Время на прочтение 3 мин
Количество просмотров 11K
Привет!
В этой статье я постараюсь описать как мы (разработчики Maptrix) победили Apple карты и заменили их картами от OpenStreetMap.

Читайте далее
Всего голосов 7: ↑6 и ↓1 +5
Комментарии 3

WebView: забыть нельзя интегрировать

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

При разработке мобильного приложения iOS или Android рано или поздно может встать вопрос: «Реализовать фичу на WebView или же нативно?». В некоторых случаях ответ лежит на поверхности, но, к сожалению, так бывает не всегда. А если очень велик соблазн предоставить пользователям новый функционал поскорее — это может склонить к неправильному решению, с которым впоследствии предстоит что-то сделать.

Сегодня мы хотим поделиться с вами тем, какую стратегию мы выбрали в Циан для себя и как к ней пришли. Посмотрим, где же мы поставили запятую :)

Поехали!
Всего голосов 14: ↑14 и ↓0 +14
Комментарии 12

Structured concurrency в Swift

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

Примечание переводчиков: В Swift 5.5 появилась новая концепция языка async/await. Мы решили опубликовать перевод статьи, чтобы разобраться с structured concurrency.

За время подготовки перевода оригинал успели переписать, и в статье ниже мы совместили обе версии: сначала идет развернутая версия, а в конце — краткие чек-листы с избранной информацией.

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

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

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

OAuth в мобильных приложениях

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

Привет! Меня зовут Максим, я занимаюсь мобильной разработкой в KTS.

Ни один сервис не обходится без логина. Часто в мобильных приложениях требуется интегрировать вход через сторонние соцсети — например, зайти через Google или VK. А при обучении мобильной разработке используются открытые API, где для авторизации используется OAuth.

Поэтому разработчикам мобильных приложений приходится работать с OAuth. В сети по этой теме есть разрозненные материалы. 

Этой статьей я попробую закрыть нюансы OAuth в мобильных приложениях: на какие моменты стоит обратить внимание, какие способы реализации выбрать. А также поделюсь опытом настройки OAuth в Android-приложении с использованием библиотеки AppAuth.

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

Тащите меня семеро, или D'n'D в iOS

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

Привет, Хабр! Меня зовут Никитин Алексей, я iOS разработчик в компании 65apps. Хорошо было бы порассуждать о Dragon and Dangerous, но нет. Речь пойдет о перемещении объектов. Перетаскивание как внутри одного приложения, так и между разными — с точки зрения пользователя вещь обыденная. Но под капотом механизма D'n'D в современных приложениях могут скрываться разные варианты решения. О них и поговорим.

Читать далее
Всего голосов 6: ↑6 и ↓0 +6
Комментарии 3

Как устроен счетчик ссылок в Swift

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

Мы в iOS команде Vivid Money стремимся глубже понимать инструменты, которыми пользуемся каждый день. Один из таких – это язык программирования Swift. Он состоит из нескольких частей: компилятора, стандартной библиотеки и рантайма. Компилятор преобразует код понятный для человека в код понятный компьютеру. Стандартная библиотека предоставляет разработчикам готовые структуры данных, оптимизированные для применения в боевых проектах. А вот рантайм – это, поистине, сердце языка. В нем происходит выделение памяти, динамическое приведение типов и подсчет ссылок. И нам стало интересно, как реализован подсчет ссылок в рантайме. И  вот мы вдохновились публикациями легендарного Майка Эша (Mike Ash), собрали компилятор и начали исследовать. Посмотрели на работу алгоритма подсчета ссылок и в этой статье расскажем вам о нём.

Читать далее
Всего голосов 21: ↑21 и ↓0 +21
Комментарии 14

Управление памятью в Swift

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

Об управление памятью в iOS ходят много слухов, поэтому я собрал все самые интересные в интернете и попробовал их структурировать в один большой

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

Про многопоточность 2. GCD

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

Привет! Вот и новая часть серии статей про многопоточность дождалась своей очереди (ну вы поняли, да, типа очередь статей последовательная (͡° ͜ʖ ͡°) ). В этот раз мы поднимемся на ступеньку выше, рассмотрим фреймфорк Dispatch, разберем большую часть GCD примитивов, распространенные проблемы и поищем решения.

Читать далее
Всего голосов 7: ↑7 и ↓0 +7
Комментарии 4

Архитектурные паттерны в iOS: страх и ненависть в диаграммах. MV(X)

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

Каждый iOS разработчик в своей жизни уходил с собеседования в расстроенных чувствах и мыслью “это что еще за новая аббревиатура?” Архитектурами пугают и джунов, и миддлов, и синьоров (и наверное даже синьорит). Важно не просто знать что стоит за названием, но ещё и в каком случае какую использовать. Литературы по этому вопросу преступно мало, редкие обсуждения в интернете ограничиваются собственным опытом и какими-то поделками на гитхабе.

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

Первая часть посвящена MV(X) паттернам: самым известным и распространенным практикам в индустрии.

Читать далее
Всего голосов 39: ↑39 и ↓0 +39
Комментарии 12

Собеседование в Яндекс: театр абсурда :/

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

Привет, Хабр!

В прошлой статье меня знатно разбомбили в комментариях, где-то за дело, где-то я считаю, что нет. Так или иначе, я выжил, и у меня есть чем с вами поделиться >:)

Напомню, что в той статье я рассказывал, каким я вижу идеальное собеседование и что я нашёл компанию, которая так и делает - и я туда прошёл, хотя это был адский отбор. Я, довольный как слон, везде отметил, что я не ищу работу, отовсюду удалился и стал работать работу.

Как вы думаете, что делают рекрутеры, когда видят "Alexandr, NOT OPEN FOR WORK"? Правильно, пишут "Алексей, рассматриваете вариант работать в X?" Я обычно игнорирую это, но тут мне предложили попытать счастья с Яндекс.Лавкой, и я не смог пройти мимо - интересно было, смогу ли я устроиться куда-нибудь, когда введут великий российский файерволл. К тому же за последние 3 года я проходил только два интервью, и мне показалось, что я не в теме, что нынче требуется индустрии. Блин, я оказался и вправду не в теме. И вы, скорей всего, тоже - об этом и статья.

Читать далее
Всего голосов 664: ↑637 и ↓27 +610
Комментарии 1270

DI в iOS: Complete guide

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

Всем привет, меня зовут Виталий, я iOS-разработчик в юните мессенджера в Тинькофф. Сегодня поговорим о том, что такое DI, зачем он нужен, рассмотрим известные библиотеки для DI и сравним их между собой. Поехали!

Читать далее
Всего голосов 29: ↑29 и ↓0 +29
Комментарии 7

Как же вы задолбали со своими оповещениями

Время на прочтение 4 мин
Количество просмотров 68K
В одиночку против индустрии.

image

На мой телефон ежедневно приходит около 30 оповещений. По 30 раз в день мой телефон вибрирует и звенит, умоляя уделить ему внимание. Вибрирует, когда я готовлю завтрак. Вибрирует, когда я опаздываю на встречу. Он вибрирует даже когда я пытаюсь искупать своего ребёнка.

Я смотрю на свой телефон и вижу что-то вроде этого:

image
Facebook: Джон, вы знаете Бена Гленна?

Да, я знаю Бена. Отличный парень. Но если честно, мне не надо добавлять его в друзья. Мы разговаривали в офисе от силы три или четыре раза, я не считаю необходимым делиться с ним своей личной жизнью. Кроме того, сейчас 9:35 утра, я опаздываю на работу, и последнее, о чём я сейчас думаю, — это новые друзья на Facebook.

Очистить.
Читать дальше →
Всего голосов 97: ↑83 и ↓14 +69
Комментарии 163

Предотвращаем мерж-конфликты с XcodeGen

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

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

Читать далее
Всего голосов 8: ↑7 и ↓1 +6
Комментарии 1

Быстрый, простой, сложный: как мы выпилили Realm

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

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

Мы тоже использовали Realm — 3 года подряд. Сначала он помогал, потом раздражал, пару раз выстрелил и в конце чуть не вогнал команду в депрессию. В итоге мы удалили Realm из проекта. Это сложный инструмент — простота интеграции обманчива, а за все удобства придётся расплачиваться.

Почему и как мы его удалили
Всего голосов 46: ↑46 и ↓0 +46
Комментарии 47

Почему я не могу найти Яндекс.Такси через системный поиск на iPhone?

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

Переименовав недавно Яндекс.Такси в «Яндекс Go», разработчики приложения сделали невозможным его поиск через Spotlight по главному ключевому слову — «такси». Однако дело здесь вовсе не в названии, поскольку в iOS давно уже предусмотрено всё необходимое для решения разработчиками «супераппа» сложившейся проблемы. Было бы только желание...

Читать полностью
Всего голосов 48: ↑44 и ↓4 +40
Комментарии 97

Погружение в автотестирование на iOS. Часть 1. Как работать с accessibilityidentifier объектов

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

Всем привет!

Меня зовут Борис. Я AQA iOS-engineer в Vivid Money.

Это вступительная статья, в цикле статей по iOS-автоматизации, в которых хочется рассказать о пользе ui-тестов на проекте, их эффективном использовании и написании.

Данная статья будет полезна начинающим iOS-автоматизаторам, либо разработчикам, которые решили изучить XCUITest и покрыть свой проект ui-тестами.

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

Как сниффить HTTPS-трафик iOS-устройства

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


Привет, меня зовут Андрей Батутин, я Senior iOS Developer в DataArt, и сегодня мы будем сниффить HTTPS-трафик твоего «Айфона».
Читать дальше →
Всего голосов 24: ↑20 и ↓4 +16
Комментарии 17

Navigation bar и анимация перехода

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

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

Немного общей теории

Если вы хорошо осведомлены, смело пролистывайте непосредственно к анимации.

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

Ты добавил всего две строчки. Почему на это ушло два дня?

Время на прочтение 3 мин
Количество просмотров 63K
На первый взгляд вопрос кажется разумным, но он делает некоторые ужасные предположения:

  • строки кода = усилие
  • строки кода = значение
  • все строки кода равны

Ничто из этого не является истинным.

Почему исправление, которое кажется таким простым, заняло два дня?
Читать дальше →
Всего голосов 157: ↑152 и ↓5 +147
Комментарии 225

Легковесный роутинг на микросервисах

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


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


По своей функциональности они бывают просто огромными. Некоторые приложения состоят из десятков, сотен экранов и переходов между ними. И пока пользователь открывает очередной экран с деталями заказа, наслаждаясь плавной анимацией, в мире MVVM происходит много всего интересного: вью-контроллер — создается, вью-модель — создается, аргументы — пробрасываются, зависимости — резолвятся.


Кто делает всю эту важную, но незаметную работу? Советую запастись чаем и печеньками: это мини-сериал о том, как я ни в чем себе не отказывал, реализуя MVVM в одном из своих домашних проектов. Сегодня заключительная серия — про слой роутинга в iOS-приложении.

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

Информация

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