Pull to refresh
0
0
Abdullah Tawfik @tawfik

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

Send message

Абстрактность в Swift

Level of difficultyEasy
Reading time13 min
Views2.5K

Абстракция, Инкапсуляция, Наследованное, Полиморфизм.

Каждый про них хоть раз говорил на собеседовании или обсуждал в компании друзей, но далеко не всегда можно встретить соблюдение данных принципов в реальной жизни.

В процессе разработки 11 экранов я обнаружил слишком много повторяющегося кода, не говоря о том, что со временем вьюмодели стали расширяться, где-то были реализованы блоки кода с Combine паблишерами, а в каждой вьюмодели реализовывался один и тот же метод observe для StateFlow из KMP. В этот момент и вступает в игру первый принцип ООП - Абстракция, где повторяющийся код объединяется в один общий модуль, откуда наследники могут брать реализацию.

В данной статье мы рассмотрим способы создания абстракции в iOS проекте на языке Swift, а также сравним методы с реализацией на языке Kotlin и узнаем, с какими подводными камнями можно столкнуться.

Узнать!
Total votes 2: ↑2 and ↓0+2
Comments5

Computer Science: книги, от новичка до профи

Reading time4 min
Views21K

What’s up guys?

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

В этой статье мы поговорим о самых полезных книгах по Computer Science для самых разных уровней, которые дадут вам понимание того, как работают компьютеры и всё, что с этим связанно. Предлагаю незамедлительно начинать, и начнём мы с книг для новичков (по моему мнению).

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

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

Level of difficultyEasy
Reading time26 min
Views165K

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

Читать далее
Total votes 159: ↑157 and ↓2+155
Comments49

Метаморфозы сознания. Про ревью и комментарии в технической документации

Reading time9 min
Views3.5K

Привет! Меня зовут Дмитрий Миронюк, я старший технический писатель в компании Bercut. До этого работал системным администратором, специалистом внедрения и поддержки, программировал IP-телефонию, успел поработать тимлидом. Но как в итоге стал техническим писателем расскажу в другой раз. Сегодня поговорим о ревью и комментариях. Приведу реальные примеры из личного опыта, а также поделюсь наблюдениями, как процесс ревью повлиял на мое сознание.

Читать далее
Total votes 27: ↑24 and ↓3+21
Comments7

Swift Utilities — Equatable для сложных Enum

Level of difficultyEasy
Reading time3 min
Views1K

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

Мне часто встречалась ситуация когда надо подписать enum со вложенными типами под протокол Equitable и приходилось реализовывать его функции

Чтобы упростить жизнь и каждый раз не писать сложные static func ==(lhs: T, rhs: T) -> Bool Можно подписать enum под protocol ComplexEquatable

Читать далее
Total votes 6: ↑5 and ↓1+4
Comments2

Swift Utilities — Потокобезопасное свойство

Level of difficultyEasy
Reading time2 min
Views1.1K

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

При разработке очень важна безопасность данных при параллельном доступе к ним. В этой статье я покажу , как создать потокобезопасное свойство с использованием свойства-обёртки @SynchronizedLock.

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

Swift Utilities — Упрощаем работу с UserDefaults

Level of difficultyEasy
Reading time3 min
Views981

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

Работа с UserDefaults может быть удобной и простой, в этом поможет обертка UserDefaultsWrapper. Давайте разберемся, как она работает.

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

Swift Utilities — Работа с Динамическими Цветами

Level of difficultyEasy
Reading time2 min
Views848

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

При разработке приложений, одним из ключевых аспектов является адаптивность интерфейса к различным режимам отображения, особенно к светлой и тёмной теме. Я покажу подход к управлению цветами интерфейса с использованием свойства-обёртки DynamicUIColor

Читать далее
Total votes 5: ↑4 and ↓1+3
Comments5

Рефакторинг Swift

Level of difficultyMedium
Reading time4 min
Views2.4K

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

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

Учиться, учиться и еще раз учиться преподавать. Почему надо изменить подход к обучению?

Level of difficultyMedium
Reading time9 min
Views8.6K

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

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

Почему нужно менять преподавание?

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

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

Как было раньше?

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

Почему нужно менять преподавание?
Total votes 20: ↑17 and ↓3+14
Comments92

Что такое Data Observability и с чем ее едят?

Level of difficultyEasy
Reading time4 min
Views2.7K

В последние годы растет сложность IT-инфраструктуры в компаниях и, соответственно, спрос на сервисы мониторинга ее работоспособности. Их все больше покупают, в них все чаще инвестируют. Но в данной статье мы расскажем о новом смежном тренде - Data Observability. Что это и чем она отличается от Infrastructure Observability? 

Классический мониторинг - это наблюдение за работой инфраструктуры и приложений. А Data Observability позволяет осуществлять мониторинг потоков данных (и даже бизнес-процессов) и находить в них сбои. 

Рассмотрим несколько примеров.

Читать далее
Total votes 5: ↑4 and ↓1+3
Comments7

Онлайн или традиционная школа. Что выбрать?

Reading time8 min
Views1.2K

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

Школа для ребенка — один из главных вопросов, который волнует родителей при смене места жительства. Целый комплекс сложностей сопутствует переезду в другую страну: языковые проблемы, несовпадающие программы обучения, разные методики, новые одноклассники и педагоги. Бывает непросто подобрать школу, если у вас высокие требования к образованию, но и без этого хлопот с разнообразными трудностями не меньше. Обратимся к тому, какие вообще есть варианты для семей, переезжающих в другую страну, в образовательном поле.

Читать далее
Total votes 6: ↑5 and ↓1+4
Comments0

IronZen: как мы решили боль тысяч тревожных людей, разработав собственное мобильное приложение

Level of difficultyEasy
Reading time5 min
Views5.7K

Кейс о том, как компания друзей с опытом в IT и digital на досуге начала разрабатывать приложения, и в первом же проекте закрыла острую проблему людей с повышенной тревожностью и ОКР, дав старт собственной кузнице аппок.

Читать далее
Total votes 21: ↑17 and ↓4+13
Comments36

Thread Safety in Swift

Reading time11 min
Views2.9K

Потокобезопасность в Swift

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

Читать далее
Rating0
Comments3

Проектируем быстрые действия в iOS: 58 гайдлайнов

Level of difficultyMedium
Reading time7 min
Views1.7K

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

Несмотря пользу, применяют ее далеко не все, а у тех, кто применяет, часто есть потенциал для улучшения.

В этой статье – 58 гайдлайнов с лучшими практиками и примерами ошибок, которые лучше не совершать при проектировании быстрых действий в iOS, а также идеи применения быстрых действий в e-commerce приложениях.

Читать далее
Rating0
Comments2

Ультимативный гайд по HTTP. HTTP/1.1 vs HTTP/2

Level of difficultyEasy
Reading time6 min
Views22K

Продолжаем цикл статей о протоколе HTTP: расскажем, что нового привнесла версия HTTP/1.1 и какие у нее принципиальные отличия с версией HTTP/2.

Читать далее
Total votes 11: ↑9 and ↓2+7
Comments10

Selenoid: Запускаем Appium UI-тесты на iOS. Часть 2

Level of difficultyMedium
Reading time6 min
Views4.3K

В первой части статьи мы рассказали, как легко и быстро построить инфраструктуру для запуска UI-тестов на Android с помощью Appium и Selenoid. Продолжаем историю и рассказываем, как внедрили в схему запуск UI-тестов на iOS.

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

Почему MVx архитектуры всегда получаются плохо

Reading time7 min
Views18K

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

Я познакомился с понятием “архитектурные паттерны” и MVC в частности еще в 2012, и с тех пор заболел идеей архитектур программного обеспечения. Я восхищался людьми, которые пишут архитектурные фреймворки. Я тратил дни и недели читая их исходники и просматривая видео на YouTube. Но чем больше я в это погружался, тем больше я чувствовал себя в состоянии, которое я называю “начинающий иллюзионист”: пока смотришь на фокусы - это магия, но когда начинаешь их делать, то они становятся банальными.

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

Нашел ли я его? Возможно. По крайней мере мне есть что показать, но об этом в другой раз.

В своих скитаниях я нашел кое-что не менее интересное: причину почему MVx всегда получается плохо. И вот об этом и пойдет речь сегодня.

Читать далее
Total votes 48: ↑44 and ↓4+40
Comments18

Как настроить Gitlab CI/CD в связке с Fastlane для iOS-проектов на Mac mini

Reading time8 min
Views5.9K

Всем привет! Меня зовут Ярослав Фоменко, я iOS-разработчик в компании Даблтап. Мы с моим коллегой по отделу с конца мая работаем над внедрением, улучшением и масштабированием CI/CD на наших проектах. В этой статье мы хотим поделиться гайдом по подготовке проекта в Xcode и настройке раннеров, скриптов и конфигов, а также расскажем, как нам помогает CI/CD.

О том, как и почему мы пришли к решению использовать Mac mini для CI/CD, можно почитать здесь.

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

Information

Rating
Does not participate
Registered
Activity