Pull to refresh
-8
1.5
Send message

Пишем свой Swift макрос без лида, ИТ-курсов и кредитов

Level of difficultyMedium
Reading time10 min
Views2K

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

Сегодня я хотел бы рассказать вам о макросах в Swift 5.9, как их можно применять для избавление от бойлерплейта в коде, как их создавать, какие сложности есть с ними и куда всё это движется. Так как я работаю в команде дизайн-системы, мы рассмотрим макросы на примере добавления метода copy для всех моделей UI-компонентов.

Читать далее
Total votes 12: ↑12 and ↓0+16
Comments2

Принципы SOLID на примере iOS-разработки

Level of difficultyMedium
Reading time13 min
Views3.8K

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

Расскажем и покажем на примерах (куда без этого). Кейсы в статье относятся к iOS-разработке, но они будут полезны для всех разработчиков, независимо от стека.

Читать дальше
Total votes 7: ↑7 and ↓0+7
Comments6

Введение в тестирование на Swift Testing

Level of difficultyMedium
Reading time17 min
Views2.1K

XCTest является основным инструментом для тестирования в Swift и широко используется разработчиками. Однако, новая библиотека Testing предлагает дополнительные возможности и синтаксический сахар, который делает процесс тестирования еще более удобным и мощным. В данной статье мы рассмотрим основные аспекты тестирования на Swift, включая использование библиотеки Testing.

Читать далее
Total votes 4: ↑4 and ↓0+6
Comments4

Telegram Боты на Aiogram 3.x: Отправка и обработка медиа сообщений

Reading time14 min
Views4.2K

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

Сегодня мы вновь погрузимся в мир Telegram ботов на Aiogram 3.x и рассмотрим отправку и обработку медиа сообщений.

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

Читать далее
Total votes 7: ↑5 and ↓2+3
Comments2

Telegram Боты на Aiogram 3.x: Первые Шаги

Level of difficultyEasy
Reading time14 min
Views10K

Привет, друзья!

За свою практику программирования я успел написать множество малых, средних и крупных проектов, преимущественно в формате Telegram-ботов. Моя история началась с популярной на то время версии aiogram 2.24 (тех, кто в теме, поймут), а сейчас я полностью перешел на версию 3.x, о чем нисколько не жалею.

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

Сегодня мы научимся:

Читать далее
Total votes 11: ↑8 and ↓3+5
Comments13

iOS-разработчики в 2024 году: какие нужны скилы и как проходит процесс найма

Level of difficultyEasy
Reading time7 min
Views2.3K

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

Читать далее
Total votes 6: ↑6 and ↓0+6
Comments6

Нейропиксели для небогатых

Level of difficultyEasy
Reading time22 min
Views11K

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

Не волнуйтесь, решение есть. Сегодня речь пойдёт про следующую ядрёную смесь: пиксельная графика и нейросети применительно к разработке инди-игр. Примитивные технологии древности, новейшие достижения прогресса и бедные свободные творцы. High tech, low life — киберпанк ещё никогда не был так близок!

Сразу оговорюсь: это не практическое руководство, а скорее, наблюдения заинтересованного лица, пока ещё занимающего выжидательную позицию на заборе. Готового рецепта у меня нет — только общее направление для последующих изысканий. Поэтому не ждите высокого технического уровня материала.
Читать дальше →
Total votes 57: ↑54 and ↓3+68
Comments11

Планирование и организация рабочего и личного времени

Reading time4 min
Views17K

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

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

Читать далее
Total votes 18: ↑12 and ↓6+8
Comments15

Как понять, что пора выпускать новое приложение вместо старого? Разбираем со стороны бизнеса

Level of difficultyMedium
Reading time5 min
Views1.7K

Раньше я был вовлечён в создание приложений со стороны банка, а теперь занимаюсь ими со стороны компании-разработчика. Делюсь: вот что думает бизнес, когда решается на новое приложение.

Читать далее
Total votes 9: ↑9 and ↓0+11
Comments14

Написание тестов для асинхронного кода с помощью XCTest

Reading time6 min
Views639


Если вы когда-нибудь думали о проведении юнит-тестирования в Xcode, вы наверняка обращали внимание на XCTest. Это довольно простой фреймворк на Objective-C и Swift. Однако тестирование асинхронного кода всегда было немного сложным из-за таких конструкций, как делегаты и коллбэки (функции обратного вызова).

В этой статье мы начнём с рассмотрения классического способа тестирования асинхронного кода, чтобы убедиться, что мы все на одной волне относительно плюсов и минусов классического асинхронного теста. После этого мы рассмотрим, как async / await кардинально меняет способ написания юнит-тестов для асинхронного кода, и как он может повлиять на то, что тесты оказываются успешными и неудачными.
Читать далее
Total votes 11: ↑10 and ↓1+11
Comments1

AVPlayer seek(to:… vs seek(…tolerance

Level of difficultyEasy
Reading time4 min
Views654

Привет всем! Это моя внеочередная статья, о том что нагорело. У меня за последний год накопилось много интересного (и не очень :) ) материала. Но эту статью хочу написать вне очереди. Не так давно я столкнулся с интересным поведением метода seek(to: CMTime). Об этом и хочу написать.

Но начнем по порядку.

AVPlayer известен нам с iOS 4. Он содержит AVPlayerItem, AVAsset.

Читать далее
Total votes 1: ↑1 and ↓0+3
Comments2

Почему вы себя обесцениваете: какую выгоду это дает и что делать с ощущением своей несостоятельности?

Level of difficultyEasy
Reading time6 min
Views8.2K

«Я ничего собой не представляю. Все вокруг компетентнее, умнее, опытнее меня. Я не заслуживаю своего места под солнцем», — так думают люди, которые себя обесценивают. Эти переживания не только мучительны, но вдобавок мешают построить карьеру, отношения, самореализоваться и хорошо себя чувствовать. Из-за чего возникает желание себя обесценить и что с ним делать?

Читать далее
Total votes 25: ↑18 and ↓7+13
Comments18

SwiftUI: наконец-то пора? Опыт разработки на SwiftUI в контексте UIKit приложения

Reading time16 min
Views2.9K

Привет, Хабр! Меня зовут Алексей Непомнящих и я мобильный разработчик «Леруа Мерлен». В этой статье я бы хотел поделиться своим опытом внедрения первой большой фичи на SwiftUI в приложение, целиком состоящее из UIKit с минимальной требуемой версией iOS 14.

Читать далее
Total votes 9: ↑9 and ↓0+11
Comments0

SwiftUI уроки (часть 11)

Reading time12 min
Views1.3K

Ссылка на 10-ю часть

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

Читать далее
Total votes 3: ↑3 and ↓0+4
Comments1

Мамихлапинатапай

Reading time11 min
Views1.7K

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

– Дорогой, тебе пора расслабиться… – промурлыкала роботесса медовым голоском.

Рука её метнулась к паху Ариса.

– Не сегодня, Элиза! – отшатнулся Арис. – Отстань!

– Ты проявляешь признаки стресса и нестабильного гормонального фона, – ответила служанка.

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

– Будь хорошей девочкой, – несколько смягчившись, бросил Арис. – Папа занят важными размышлениями!

Стерильные стены вылизанной Элизой квартиры, белый потолок, 3-D монитор на всю стену и дверь в спортзал нагоняли депрессию. Эротично изогнувшая плечи и бёдра стройная говорящая кукла на перинах, застеленных египетским хлопком, бесила. Пахло апельсиновым ароматизатором воздуха.

Арис выскочил на балкон. Безликая панорама вечернего мегаполиса, кристаллы небоскрёбов с золотыми ячейками – клетками, в которых заточены злые угрюмые люди, не умеющие общаться. Каждый из них обществу себе подобных предпочитал лишённых человеческих недостатков подключенных к глобальной нейросети роботов… И непроходящий образ перед взором: неизвестно откуда взявшееся в победившем пластмассовом мире слово «мамихлапинатапай», начертанное у подъезда многоэтажки краской густого цвета индиго, с  белыми, лимонными и нежно-розовыми блёстками, будто планктон флюоресцирует в пенных океанических волнах в час заката, чего, должно быть, не бывает на свете. В тот день, «погуглив» прямо на месте, Арис узнал, что имеет дело со словом из языка племени яганов, населявших Огненную Землю, означающее «смотреть друг на друга в надежде, чтобы другой человек начал делать то, что обоим нужно, но что никто не желает делать». Слово включено в книгу рекордов Гиннесса, как «наиболее ёмкое». Вряд ли автору граффити требовалось много ума, чтобы узнать о его существовании… Ариса взволновало другое: роботам ни к чему нарушать безупречную геометрию алгоритмов, дерзко вклиниваясь в искусственную гармонию бетонных джунглей. Однако, эта история случилась давно…

Читать далее
Total votes 17: ↑11 and ↓6+10
Comments5

REST API на котиках

Level of difficultyEasy
Reading time7 min
Views25K

Привет любителям котиков! Меня зовут Юля, я backend‑разработчик компании CDEK. Я сама не так давно изучала все эти сложные понятия в программировании, поэтому решила помочь и вам разобраться с одним из них.

С какой стороны IT вы бы не пытались войти — в какой‑то момент столкнётесь с понятием REST API. Эта статья создана, чтобы смягчить данное столкновение. Новые темы всегда легче воспринимаются на простых примерах, ну а если это примеры с котиками, то варианта не разобраться просто нет. Хочется обойтись без сложных научных определений, а рассказать самым простым языком. Поэтому, если вы любите сухие и точные формулировки, то вам нужна другая статья :)

Читать далее
Total votes 63: ↑60 and ↓3+61
Comments26

Импортирование картинок и звуков в Swift Package

Level of difficultyEasy
Reading time2 min
Views382

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

Читать далее
Total votes 3: ↑3 and ↓0+4
Comments2

О, вы из Англии? Локализация Ozon Seller на iOS

Reading time10 min
Views4.2K

Всем привет! Меня зовут Андрей, и я делаю iOS-приложение для продавцов Ozon Seller. Наша команда поставляет фичи, красит кнопки, работает над перформансом и  всячески улучшает пользовательский опыт работы продавцов на Ozon.

Нашим приложением активно пользуются юзеры из разных стран, и поэтому день Х, когда мы решим добавить поддержку разных языков, был неизбежен. В этой статье я расскажу про стандартный процесс локализации iOS-приложения, про то, с какими трудностями мы столкнулись и как их решили. Разберём системный алгоритм определения языка и объясню, почему он нам не подошёл. Сделаем перевод приложения «на лету», а также посмотрим, как изменился наш флоу работы со строками.

Читать далее
Total votes 69: ↑69 and ↓0+70
Comments16

Как передавать данные между вью контроллерами в Swift

Level of difficultyMedium
Reading time14 min
Views546

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

Читать далее
Total votes 3: ↑1 and ↓2+1
Comments0
1
23 ...

Information

Rating
1,363-rd
Registered
Activity