Как стать автором
Обновить
11
0

iOS Developer

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

Диспетчеризация методов в Swift

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

В разных языках программирования применяется механизм диспетчеризации методов (Method Dispatch), и все разработчики имеют с ним дело. Однако, не все это осознают и не все понимают, как этот механизм работает. Поэтому данная статья будет полезна всем разработчикам на Swift, которые хотят погрузиться глубже в диспетчеризацию методов и понять принципы ее работы, что в свою очередь позволит писать более эффективный код и избежать появления некоторых неочевидных проблем. Также статья будет полезна тем, кто в поисках работы – данный вопрос часто обсуждается на собеседованиях iOS разработчиков.

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

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

Минимизируем человеческий фактор в Swift

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

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

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

Советы по отладке при работе над проектами Swift

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

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

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

Core Data в современном интерьере SwiftUI. Некоторые уточнения и заблуждения. часть 1

Время на прочтение 22 мин
Количество просмотров 6.3K
Фреймворк Core Data, разработанный Apple для постоянного хранения данных на своих платформах, эффективно работающий даже с очень большими объемами данных, используется очень давно, с версии iOS 3 и macOs 10.4, так что прошло где-то порядка 10 лет с того момента, когда Apple впервые представила фреймворк Core Data. Когда это произошло, языка программирования Swift вообще не было в проекте, так что Core Data была спроектирована с ориентацией на Objective-C и, конечно, это отразилось на её API.



Но на WWDC 2019 был впервые представлен SwiftUI, который предложил нам новую парадигму конструирования UI, он был предложен для iOS 13 и полностью опирался на Swift, его корни — это Swift, хотя он использует UIKit “под капотом” и полностью зависит от UIKit на iOS, по крайней мере на данный момент, и от AppKit на macOS. Конечно, он это скрывает, как только может, он сконструирован и реализован с прицелом на Swift. Более того, Swift сам был существенно доработан с целью поддержки SwiftUI и стал ещё более мощным и интересным.

Но дело даже не в возрастном различии фреймворков, a в том, что Core Data принципиально связана с объектно-ориентированным программированием ( классы, наследование, делегирование и все такое), a суперсовременный SwiftUI основан на декларативном функциональном программировании (структуры, протокольно-ориентированное программирование) и имеет реактивную природу, которая воплощается в использовании архитектуры MVVM.
Читать дальше →
Всего голосов 3: ↑3 и ↓0 +3
Комментарии 2

Устройство компилятора Swift. Часть 2

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

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

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

50 оттенков Go: ловушки, подводные камни и распространённые ошибки новичков

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


Go — простой и забавный язык. Но в нём, как и в любых других языках, есть свои подводные камни. И во многих из них сам Go не виноват. Одни — это естественное следствие прихода программистов из других языков, другие возникают из-за ложных представлений и нехватки подробностей. Если вы найдёте время и почитаете официальные спецификации, вики, почтовые рассылки, публикации в блогах и исходный код, то многие из подводных камней станут для вас очевидны. Но далеко не каждый так начинает, и это нормально. Если вы новичок в Go, статья поможет сэкономить немало часов, которые вы бы потратили на отладку кода. Мы будем рассматривать версии Go 1.5 и ниже.
Читать дальше →
Всего голосов 80: ↑76 и ↓4 +72
Комментарии 270
Привет, Хабр! Меня зовут Лавров Сергей (@lavs). Я разрабатываю мобильные приложения под Android и iOS, преподаю IT в двух университетах и уже 15 лет изучаю новые технологии, а также языки программирования, которых знаю более десятка. В этот раз я выступлю в непривычной для себя роли обзорщика: меня попросили посмотреть, чем может быть интересен для разработчика планшет Huawei MatePad 11. Что ж, challenge accepted: я проверю, можно ли на нём программировать; разберусь, что из себя представляет новая HarmonyOS и попробую написать для неё приложение.
Читать далее
Всего голосов 34: ↑24 и ↓10 +14
Комментарии 84

Как завести XCRemoteCache, или Кэши из топора

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

Всем привет! 

Меня зовут Федоров Василий, я руковожу группой Mobile.Speed в компании Aliexpress Россия. Мы стараемся облегчить жизнь разработчиков, пишем утилиты, настраиваем CI, складируем метрики в Grafana — в общем отвечаем почти за все, что влияет на time-to-market и Developer Experience команд. В этой статье я расскажу о том, как мы ускоряем сборку проекта с помощью XCRemoteCache — но обо всем по порядку под катом. 

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

The Layout Engine в Swift

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

Многие iOS разработчики не задумываются как работает механизм отрисовки элементов, установки и обновлении constraints в Auto Layout'e. В этой статье я пробую подробно заглянуть внутрь работы the Layout Engine

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

Почему я против enum

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

Меня зовут Саша Терентьев, я из команды ленты ВКонтакте. В этой статье поделюсь мыслями о проблемах кода, где используются enum и сопоставления типов. Часто встречаю такой код в проектах, ресурсах, примерах. Мы обсуждали это с коллегами на внутреннем событии, и из моего доклада выросла эта статья.

Букв будет много. Но, думаю, материал пригодится широкому кругу разработчиков — и не только iOS. Примеры основаны на псевдо-Swift и написаны по мотивам использования UIKit. Но могут пригодиться для работы с разными платформами и в любой области, где возникают сопоставления с образцом, приведения типов, переборы множеств типов.

Читать далее
Всего голосов 55: ↑38 и ↓17 +21
Комментарии 77

Преодолеваем скрытые опасности KVO в Objective C

Время на прочтение 21 мин
Количество просмотров 26K
The major difference between a thing that might go wrong and a thing that cannot possibly go wrong is that when a thing that cannot possibly go wrong goes wrong it usually turns out to be impossible to get at or repair.
— Douglas Adams


Objective C существует уже с 1983 года и является ровесником C++. Однако, в отличие от последнего он начал приобретать популярность только в 2008 году, после выхода iOS 2.0 — новой версии операционной системы для революционного iPhone, включавшей приложение AppStore, позволяющее пользователям приобретать приложения, создаваемые сторонними разработчиками.
Дальнейший успех Objective C обеспечивался не только популярность устройств на базе iOS и относительной легкостью продаж через AppStore, но и значительными усилиями компании Apple по совершенствованию как стандартных библиотек, так и самого языка.
Согласно рейтингу TIOBE к началу 2013 года Objective C обогнал по популярности C++ и занял третье место, уступая только C и Java.

На сегодняшний день Objective C включает и такие относительно старые функции как KVC и KVO, существовавшие еще за 4 года до выхода первого iPhone, и такие новые возможности как блоки (blocks, появившиеся в Mac OS 10.6 и iOS 4) и автоматический подсчет ссылок (ARC, доступный в Mac OS 10.7 и iOS 5), которые позволяют с легкостью решать задачи, вызывавшие серьезные трудности ранее.

KVO — это технология, позволяющая незамедлительно реагировать в одном объекте (наблюдателе) на изменения состояния другого объекта (наблюдаемого), без внесения знаний о типе наблюдателя в реализации наблюдаемого объекта. В Objective C, наряду с KVO, существует несколько способов решения этой задачи:

Читать дальше →
Всего голосов 15: ↑13 и ↓2 +11
Комментарии 6

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

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

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

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

Как защититься от синдрома запястного канала? 

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


Наряду с компьютерным зрительным синдромом, о котором мы уже рассказывали ранее, среди IT-специалистов распространен и другой весьма серьезный недуг — синдром запястного канала. В чем проявляется данное заболевание и можно ли предотвратить его развитие? Давайте разбираться. 

Причины и симптоматика синдрома запястного канала


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

Человеческий организм имеет огромное количество подобных мест: на одной лишь руке могут развиться 8 разных туннельных синдромов. Поэтому с медицинской точки зрения называть синдром запястного канала, о котором пойдет речь в сегодняшней статье, просто туннельным синдромом, без уточнения локализации патологического процесса, некорректно. Хотя справедливости ради стоит сказать, что именно карпальный туннельный синдром (так называют синдром запястного канала неврологи) является самой распространенной формой компрессионно-ишемической невропатии из всех существующих: его общая доля в популяции составляет около 5%, а ежегодный прирост заболеваемости достигает 3 случаев на каждую тысячу населения.
Читать дальше →
Всего голосов 85: ↑83 и ↓2 +81
Комментарии 63

Как прорешать SICP: Отчёт о создании решебника для самого известного в мире задачника по программированию. Ботаны есть?

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

(Хабр-Статья представляет собой авторский перевод доклада, представленного автором на Scheme Workshop 2020, проводившегося в рамках Международной Конференции по Функциональному Программированию, 28 августа 2020 года)

Эта статья -- своего рода "отчёт" по самому большому проекту, который я сделал в своей жизни по собственной инициативе. Я сделал полное, исчерпывающее решение всех задач из одной из самых извесных книг по программированию в мире "Структура и Интерпретация Компьютерных Программ" (Structure and Interpretation of Computer Programs -- SICP), за авторством Абельсона, Сассмана и Сассман.

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

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

История о том, как один подросток сбежал от физического труда в программирование

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

Летом 1982 года буквально за несколько месяцев до моего поступления в колледж мать отвела меня в сторонку и сказала: «Отец хочет, чтобы ты нашел на лето работу и сам оплачивал свои расходы в учебном году». Мне было восемнадцать лет, я нигде еще не успел поработать, и даже сама мысль об этом, честно сказать, меня тогда немного пугала. Я был ботаном-домоседом, ну и, чего греха таить, довольно ленивым – перспектива работы меня совсем не прельщала. Но я понимал, что спорить тут бесполезно, потому что в чем-то был согласен с позицией отца.

Он всю жизнь, начиная с возраста помоложе моих восемнадцати лет, вкалывал автомехаником. С колледжем у него не сложилось, но, к счастью, против моей учебы он ничего не имел и готов был оплатить ее из денег, которые мы получили за бабушкин дом после ее смерти. Так что в этом плане мне повезло – я мог получить высшее образование, практически ничего не вкладывая. Но какое-то финансовое участие с моей стороны все-таки предполагалось. Сам отец на эти темы со мной не разговаривал, действовал через мать, но я понимал, что дело серьезное, и он будет очень разочарован, если я что-нибудь не организую.
Читать дальше →
Всего голосов 27: ↑26 и ↓1 +25
Комментарии 3

Что недоговаривают Тинькофф Инвестиции. Вытаскиваем все данные по портфелю через API в большую таблицу Excel

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

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

Собираем все данные по портфелю и по всем операциям через Tinkoff API.

Строим огромную Excel таблицу со всеми данными.

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

Пытаемся понять, что нам с этим делать.

Read more
Всего голосов 158: ↑155 и ↓3 +152
Комментарии 112

Коммиты — это снимки, а не различия

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

Git имеет репутацию запутывающего инструмента. Пользователи натыкаются на терминологию и формулировки, которые вводят в заблуждение. Это более всего проявляется в "перезаписывающих" историю командах, таких как git cherry-pick или git rebase. По моему опыту, первопричина путаницы — интерпретация коммитов как различий, которые можно перетасовать. Однако коммиты это не различия, а снимки! Я считаю, что Git станет понятным, если поднять занавес и посмотреть, как он хранит данные репозитория. Изучив модель хранения данных мы посмотрим, как новый взгляд помогает понять команды, такие как git cherry-pick и git rebase.

Читать далее
Всего голосов 48: ↑42 и ↓6 +36
Комментарии 55

7 Кругов SPM или как сделать модульное приложение на Swift Package Manager

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

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

Возможно, у многих возникнет вопрос:  “Зачем разбивать с помощью SPM?”. Ведь можно просто создавать подпроекты. Можно, но в использовании SPM для разбиения есть несколько преимуществ:

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

Под капотом у Emoji

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


В течение последних нескольких недель Nikita Prokopov внедрял поддержку эмодзи для Skija. Он решил поделиться несколькими мелкими деталями того, как это «самое большое новшество в человеческом общении со времен изобретения буквы image» работает под капотом.

Примечание переводчика: Хабр не поддерживает эмодзи, поэтому пришлось выкручиваться и заменить эмодзи картинками.

Unicode


Каждый символ на компьютере кодируется числом. Самая популярная кодировка — Unicode, а две самые распространенные подвариации — UTF-8 и UTF-16.

Unicode выделяет 221 (2 млн) символов, назывемых «codepoints». Из этих двух миллионов сейчас определены только ~150k символов. В эти 150 000 символов впихнули все языки, мёртвые и живые и прочие украшательства. Можно использовать различные шрифты, писать задом наперед и кверх ногами: image, а также отобразить «GHz» как один глиф: image.

Направленная вправо двуглавая стрела с оперением и двумя вертикальными штрихами: image или семиглазый монстр: image. И утка:

image

Читать дальше →
Всего голосов 69: ↑67 и ↓2 +65
Комментарии 54

iOS. UI. Приëмы. Часть 1

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

Привет читателям Хабра!

Я iOS-разработчик, и так случилось, что мне приходилось много делать в ui: кастомные view, тени, layout-ы, кнопки и вот это всё. В этой и паре следующих статей хочу поделиться некоторыми приёмами, которые помогали мне добиваться весьма красивых и интересных эффектов в плане рисования компонентов ui. Надеюсь, кому-нибудь это будет полезно. Ну или просто интересно.

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

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Работает в
Зарегистрирован
Активность

Специализация

Mobile Application Developer
Senior
iOS development
SWIFT
Objective-C
UIKit
GCD