Как стать автором
Обновить
3
0
Егор Бадмаев @egbad

iOS-разработчик

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

Продвинутый Debug

Время на прочтение8 мин
Количество просмотров13K
Debug Area — полезная функция в работе iOS разработчика в Xcode. Как только мы начинаем осваивать разработку под iOS, и пытаемся отойти от привычного и любимого print метода, и найти более быстрые и удобные методы понимания состояния системы в определенный период мы начинаем изучать область дебага (Debug Area).

Скорее всего, в Debug панель ваш взгляд упадёт до того, как вы будете понимать, что именно там происходит. При первом падении приложения нижнее меню открывается автоматически, оно изначально может послужить помощью для понимания проблемы (Вспомним старую добрую “Fatal error: Index out of range”), в основном в самом начале вы не будете понимать, что от нас хочет Xcode и приметесь гуглить ошибки, но по ходу роста всё больше и больше информации станет понятной.

С самого начала программист старается оптимизировать свою работу. Для этого мы стремимся понять в какой момент наша программа перешла в некорректное состояние. И тут в зависимости от точки в которой находится эволюция программиста, методы могут разниться. Сначала как правильно Debug осуществляется методом “print()”, потом идёт расстановка Breakpoints и вызов методов “po”, далее ознакомление с Debug Variable Input (области рядом с консолью в Xcode), а далее приходит понимание и способов компиляции кода в процессе остановки на Breakpoint методов — “expression” (По крайней мере, такая была эволюция у меня).

Давайте попробуем разные способы которые нам помогут понять и изменить состояние нашего приложения. Самые простые вроде “print()”, и “po” рассматривать не будем, я думаю, вы и так понимаете их суть и умеете применять.

Создадим простое приложение с одним экраном в котором будем всего один тип ячеек (TableViewcell) c двумя элементами внутри: UIImageView и UILabel. В ячейках будем писать её порядковый номер, а в картинку ставить либо image1, либо image2.

Метод tableViewCellForRowAtIndexPath будет создавать для нас ячейки, проставлять данные и возвращать:

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

Построчный разбор лицензии MIT

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

171 слово, которое должен понимать любой программист


Лицензия MIT – самая популярная лицензия для программ с открытым кодом. Здесь приводится одно из её прочтений, с построчным разбором.

Читаем лицензию


Если вы разрабатываете программы с открытым кодом, и не читали эту лицензию подробно – а она состоит всего из 171 слова – вам нужно этим заняться. Особенно, если вы не занимаетесь лицензиями на ежедневной основе. Отметьте всё, что вам непонятно. А я повторю все эти слова, по порядку и по кусочкам, вместе с контекстом и комментариями. При этом важно представлять себе её целиком.
Читать дальше →
Всего голосов 83: ↑78 и ↓5+73
Комментарии43

Как локализовать SPM модуль?

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

Swift Package Manager существует уже довольно давно, его популярность растёт, как и количество модулей, доступных для использования. Если вы работаете над своим SPM модулем, будет здорово расширить число разработчиков и проектов, которые могут его использовать, путём добавления локализации.

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

Сертификаты Apple. Понимание. Что это и зачем вообще нужны?

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

Сертификаты, ключи, доступы, безопасность - всё очень запутанно. Многие из нас просто знают, как решать большинство ошибок, связанных с этим, либо могут это быстро нагуглить. Сегодня хотелось бы постараться углубиться в данную тему в рамках Apple и понять, почему все так работает. Меня зовут Макс Нечаев, я Senior iOS-developer в крупном фуд-тех стартапе в Катаре - Snoonu. Очень надеюсь, что статья поможет вам немного лучше понять данную область разработки.

Сегодня поговорим о сертификатах и профилях подготовки в Swift.

Читать далее
Всего голосов 11: ↑5 и ↓60
Комментарии10

Что учесть в разработке супераппа. Рассказываем на примере приложения «Мой Beeline»

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

Привет, меня зовут Санжар, я iOS-техлид в Beeline Казахстан. В iOS-разработке 6+ лет, сейчас занимаюсь развитием мобильного приложения «Мой Beeline». 

В статье поделюсь опытом становления супераппа «Мой Beeline». Это один из наших флагманских продуктов, мы уделяем ему много времени и внимания. Я расскажу о гипотезах и экспериментах, о разработке и способах решения проблем.

Напомню, что я сотрудник казахстанской компании, то есть рассказываю про казахстанский суперапп и смогу ответить на вопросы о нём. По части российского приложения «Билайн» я не эксперт.

Погрузиться в мир superapp
Всего голосов 14: ↑10 и ↓4+6
Комментарии3

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

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

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

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

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

Сложности переноса Papers, Please на мобильные

Время на прочтение16 мин
Количество просмотров19K
Mobile-Title

Я разработал Papers, Please в 2013 году специально с расчётом на десктопные компьютеры и управление мышью. В 2022 году десктопных компьютеров уже не существует и все компьютеры — это мобильные телефоны. Настало время обновить этого динозавра.

Эта статья из тысяч слов и мегабайтов изображений раскроет вам некоторые аспекты портирования игры с большого десктопа на маленький телефон. Отдавая дань прошлому, я написал эту статью как большой кусок текста с вкраплениями тегов img, а не превратил её в яркое видео. Ещё через девять лет я портирую этот пост в VR.

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

То же блюдо на другой тарелке.
Читать дальше →
Всего голосов 49: ↑48 и ↓1+63
Комментарии24

Заблуждения Clean Architecture

Время на прочтение15 мин
Количество просмотров429K
Превращаем круги в блоки

­­ 


На первый взгляд, Clean Architecture – довольно простой набор рекомендаций к построению приложений. Но и я, и многие мои коллеги, сильные разработчики, осознали эту архитектуру не сразу. А в последнее время в чатах и интернете я вижу всё больше ошибочных представлений, связанных с ней. Этой статьёй я хочу помочь сообществу лучше понять Clean Architecture и избавиться от распространенных заблуждений.

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

Как нативно визуализировать голос в iOS

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

Реализовать запись и проигрывание аудиофайлов в iOS несложно. Но если к этому добавляется задача визуализировать звук в момент записи с микрофона, это может вызвать сложности даже у опытного программиста, который мало работал с AVFoundation — мультимедийным фреймворком для работы с аудиовизуальными носителями.

В статье расскажу, как в iOS нативно визуализировать голос в процессе записи и проведу краткий экскурс в физику звукозаписи.

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

Пишем свой сетевой слой на Swift: протокол-ориентированный подход

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


Сейчас практически 100% приложений используют работу с сетью, поэтому вопрос организации и использования сетевого слоя встает перед каждым. Есть два основных подхода к решению этой проблемы, это либо использование сторонних библиотек, либо собственная реализация сетевого слоя. В данной статье мы рассмотрим именно второй вариант, причем попробуем реализовать сетевой слой с использованием всех последних возможностей языка, применяя протоколы и перечисления. Это избавит проект от лишних зависимостей в виде дополнительных библиотек. Те, кто хоть раз видел Moya, сразу узнают множество схожих деталей в реализации и использовании, так оно и есть, только в этот раз мы все сделаем своими руками, не трогая Moya и Alamofire.
Читать дальше →
Всего голосов 17: ↑16 и ↓1+15
Комментарии11

Core Data в деталях

Время на прочтение9 мин
Количество просмотров63K
Недавно я начала работать над большим проектом с использованием Core Data. Обычное дело, что люди на проектах меняются, опыт теряется, а нюансы забываются. Углубить всех в изучение конкретного фреймворка невозможно — у всех полно своих рабочих проблем. Поэтому я подготовила небольшую презентацию, из тех пунктов, которые считаю важными или недостаточно освещенными в туториалах. Делюсь со всеми и надеюсь, что это поможет писать эффективный код и не делать ошибок. Предполагается, что вы уже немного в теме.

Начну с банального.

Core Data – это фреймворк, который управляет и хранит данные в приложении. Можно рассматривать Core Data, как оболочку над физическим реляционным хранилищем, представляющую данные в виде объектов, при этом сама Core Data не является базой данных.

Объекты Core Data


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

Математические основы Auto Layout

Время на прочтение17 мин
Количество просмотров31K
Многие разработчики считают, что Auto Layout — это тормозная и проблемная штука, и крайне сложно заниматься его отладкой. И хорошо, если этот вывод сделан на основе собственного опыта, а то бывает и просто «я слышал, не буду даже и пытаться с ним подружиться».

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



Всего голосов 39: ↑38 и ↓1+37
Комментарии9

Питчить и кодить: как выиграть хакатон

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

 В статье расскажем, какие команды выигрывают хакатоны, как такую команду собрать и как ее собирать не надо. Бонус – два экспертных мнения. Статья написана с честных слов старшего трекера «Цифрового прорыва» Марии Головач. Экспертными мнениями поделились ведущий разработчик Accenture Сергей Сикорский и старший менеджер Industry X, Accenture Алексей Фролов.

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

Как съездить на стажировку в крупную IT-компанию

Время на прочтение8 мин
Количество просмотров15K
Если вы давно хотели поехать на зарубежную стажировку, но совершенно не знаете, как к этому подступиться, то эта статья для вас.

Фёдор Киташов (kitashov), студент 4 курса ФРКТ МФТИ, рассказал что нужно сделать, чтобы съездить на стажировку с полным покрытием, поработать над системой распознавания речи в Cisco, увидеть 20 американских штатов, и зачем возвращаться назад.

image
Читать дальше →
Всего голосов 19: ↑18 и ↓1+17
Комментарии12

Делаем вечную лампочку

Время на прочтение3 мин
Количество просмотров299K
На упаковках светодиодных ламп указывают срок службы 30, 40 или 50 тысяч часов, но многие лампочки не живут и года.

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

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

Пишем переиспользуемые компоненты, соблюдая SOLID

Время на прочтение21 мин
Количество просмотров26K
Всем привет! Меня зовут Рома, я — фронтендер в Я.Учебнике. Сегодня расскажу, как избежать дублирования кода и писать качественные переиспользуемые компоненты. Статья написана по мотивам (но только по мотивам!) доклада с Я.Субботника — видео есть в конце поста. Если вам интересно разобраться в этой теме, добро пожаловать под кат.

Статья содержит более детальный разбор принципов и подробные примеры из практики, которые не поместились в доклад. Рекомендую прочитать, если вы хотите глубоко погрузиться в тему и узнать, как мы пишем переиспользуемые компоненты. Если же вы хотите познакомиться с миром переиспользуемых компонентов в общих чертах, то, по моему мнению, вам больше подойдёт запись доклада.
Читать дальше →
Всего голосов 14: ↑13 и ↓1+15
Комментарии3

Симметрическая разность возможностей Swift и Objective-C

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

image


В этой статье я расскажу о различии возможностей, которые предоставляют iOS-разработчикам языки Swift и Objective-C. Безусловно, разработчики, которые интересовались новым языком от Apple, уже видели немало подобных статей, поэтому я решил акцентировать внимание на тех отличиях, которые действительно влияют на процесс разработки и на архитектуру приложения. То есть, те отличия, которые следует знать, чтобы использовать язык максимально эффективно. Я попытался составить наиболее полный список, удовлетворяющий этим критериям.


Кроме того, рассказывая о новых возможностях, которые Swift привнёс в разработку, я постарался не забыть упомянуть то, что он потерял по сравнению с Objective-C.


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


На момент написания статьи текущая версия Swift — 3.0.1.


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

Архитектурные паттерны в iOS: привет от дядюшки Боба, или Clean Architecture

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

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

Все, кто хочет не просто знать что стоит за названием той или иной архитектуры, но ещё и в каком случае какую использовать — наливайте чай и устраивайтесь поудобнее, будет лампово. Разбираем паттерны, реализующие концепцию Чистой Архитектуры — самые масштабируемые и надёжные.

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

Как Лёня с React на Swift переезжал

Время на прочтение7 мин
Количество просмотров9.6K
Всем привет! Меня зовут Лёня, я фронтенд-разработчик в компании KOTELOV и выпускник курса «Мидл фронтенд-разработчик» в Яндекс.Практикуме. Общаясь с коллегами, которые занимаются мобильной разработкой, я понял, что у них всё гораздо сложнее, чем в вебе. Я взял свой телефон в руки, посмотрел на известные приложения типа телеги или Яндекс.Музыки с точки зрения человека, который их пишет, и подумал: «Вау, как круто! Я тоже хочу так уметь!»

Тогда я принял твёрдое решение изучить iOS-разработку и написать собственное приложение. На выбор было два языка: Objective-C и Swift. К динозаврам моё отношение подозрительное, поэтому я принял решение набивать шишки обо что-то помягче и посвежее.

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



Готовимся к переходу — изучаем SwiftUI


Два года назад Apple выпустила SwiftUI — новый фреймворк для своего языка. До этого разработчики писали на UI Kit, но это дело прошлого. Думаю, что на нём до сих пор пишут лишь потому, что сложно в один день переписать весь легаси-код на новый лад. Для себя я уже давно вынес правило: никогда не изучай старое, если есть новое. Но на всякий случай я изучил различия между старым UI Kit Storyboard и SwiftUI, а также мнения людей, которые в теме.
Читать дальше →
Всего голосов 19: ↑15 и ↓4+15
Комментарии12

Обертки свойств в Swift с примерами кода

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

Property Wrappers (Обертки Свойств) в Swift позволяют извлекать общую логику в отдельный объект-обертку. С момента представления во время WWDC 2019 и появления в Xcode 11 со Swift 5 было много примеров, которыми поделились в сообществе. Это изящное дополнение к библиотеке Swift, позволяющее удалить много шаблонного кода, который, вероятно, все мы писали в своих проектах.

Историю об обертках свойств можно найти на форумах Swift для SE-0258. В то время как целесообразность их использования в основном говорит о том, что обертки свойств являются решением для @NSCopying свойств, есть общая закономерность, которая реализовывается ими, и вы, вероятно, скоро все узнаете.

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

Информация

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

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

Mobile Application Developer
Middle
От 360 000 ₽
Git
SWIFT
UIKit
Development of mobile applications
iOS development
Xcode
Coredata
Autolayout
GCD
Client-server applications