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

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

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

Как выучить иностранный язык: алгоритм

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

Если вы хоть немного пересекались с Machine Learning, то понимаете, что человеческий мозг — это, по сути, большая нейросеть. А раз так, то и работу с ним можно строить по известным в ML алгоритмам. Так я нашел универсальный способ выучить любой иностранный язык до нормального уровня в разумные сроки. И на себе проверил его эффективность.

Читать далее
Всего голосов 56: ↑50 и ↓6+62
Комментарии123

Тестирование StoreKit в Xcode 12 и iOS 14

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

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


Меня зовут Сэм, я разработчик в сервисе Qonversion. В этой статье описаны новые возможности для тестирования подписок, представленные Apple во время сессии Introducing StoreKit Testing in Xcode на WWDC 2020.


Рынок подписок в мобильных приложениях быстро растет, но набор инструментов тестирования до iOS 14 был скудным. Вдобавок всё усложнялось нестабильностью песочницы Apple.
Нововведения в Xcode 12 и iOS 14 сильно меняют ситуацию.


image

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

Разбор архитектуры VIPER на примере небольшого iOS приложения на Swift 4

Время на прочтение18 мин
Количество просмотров90K
«У каждого свой VIPER». Автор неизвестен
В данной статье я хотел бы рассмотреть архитектуру VIPER на небольшом конкретном примере, который в того же время показывал всю мощь этой архитектуры и был написан на последнем Swift 4. Для тех, кто хочет сразу глянуть код, не читая всю статью, ссылка на реп в самом низу.


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

RxSwift: работа с GUI

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


Моя первая статья по RxSwift покрывала практически все базовые операторы, без знаний которых соваться в разработку не имело особого смысла. Но это всего лишь алфавит функционального программирования. Для того чтобы писать полноценные программы необходимо понять основные принципы при работе с GUI.

В основном для проработки материала используются стандартные примеры из RxExample, но для прояснения отдельных моментов была создана песочница UIExplanation и дополнительный пример в RxExample
Весь код можно найти здесь github.com/sparklone/RxSwift

При работе с UI элементами в Rx есть основные потребности:
1) понять какие подводные камни нас ожидают в принципе и зачем нужен Driver
2) научиться делать привязку UI к Observable, чтобы элементы Observable меняли состояние свойства/свойств UI элемента. Это решается с помощью UIBindingObserver
3) научиться переводить паттерн target-action на рельсы Rx. Это делается с помощью ControlEvent
4) сделать двустороннюю привязку к свойствам UI элемента. Это делается с помощью ControlProperty
5) т.к. зачастую у UI элементов delegate/dataSource предполагаются в единственном числе, — ввели класс DelegateProxy, который позволяет одновременно использовать как обычный делегат, так и Rx последовательности.

Рассмотрим каждую потребность отдельно
Читать дальше →
Всего голосов 16: ↑15 и ↓1+14
Комментарии29

RxSwift часть 1

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

ReactiveX logo


Доброго времени суток, хабровчане. В этом цикле статей, я бы хотел рассказать о реактивном программировании, а именно о фреймворке
RxSwift. На Хабре и в сети были статьи по RxSwift, но, на мой взгляд, они слишком трудны для начинающих. Поэтому, если вы начинаете постигать реактивное программирование в iOS, то прошу под кат.

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

Общее представление об архитектуре Clean Swift

Время на прочтение6 мин
Количество просмотров36K
Привет, читатель!

В этой статье я расскажу об архитектуре iOS приложений — Clean Swift. Мы рассмотрим основные теоретические моменты и разберем пример на практике.


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

Clean swift архитектура как альтернатива VIPER

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

Введение


На данный момент существует множество статей про VIPER — clean архитектуру, различные вариации которой в свое время стали популярны для iOS проектов. Если вы не знакомы с Viper, можете прочитать тут, тут или тут.

Я бы хотел поговорить об альтернативе VIPER — Clean Swift. Сlean Swift на первый взгляд похож на VIPER, однако отличия становятся видны после изучения принципа взаимодействия модулей. В VIPER основу взаимодействия составляет Presenter, он передает запросы пользователя Interactor’у для обработки и форматирует полученные от него назад данные для отображения на View Controller:

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

Поднимаем читаемость кода в iOS разработке

Время на прочтение3 мин
Количество просмотров13K
Представьте себе книгу, в которой нет деления на главы, а все идет без логической и смысловой разбивки, книгу, где нет абзацев, нет точек и запятых, книгу, где в первой строке рассказывается про одно, во второй про другое, в третьей опять про первое.

Представили?

Смогли бы вы понять, о чем книга?

Насколько быстро вы смогли бы найти интересующий вас отрывок?

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

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

Для удобства я буду использовать слово класс (class), но подразумевать любой вид типа (class, struct, enum).

Благодаря применению этих советов ваш код станет читабельным, что в дальнейшем обеспечит удобство и скорость работы с ним.
Всего голосов 22: ↑19 и ↓3+16
Комментарии29

Идеальное резюме разработчика

Время на прочтение7 мин
Количество просмотров102K
Привет! Недавно прошел бесплатный вебинар, где наши эксперты в прямом эфире препарировали резюме разработчика и наглядно разбирали, каким должно быть идеальное CV IT-инженера. Только факты: в этой статье изложены все ключевые моменты, которые стоит учитывать при создании резюме, а также масса любопытных советов, призванных помочь вам стать еще более желанными на рынке.


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

Навигация между представлениями с помощью @EnvironmentObject в SwiftUI

Время на прочтение6 мин
Количество просмотров4.8K
Перевод статьи подготовлен в преддверии старта продвинутого курса «Разработчик iOS».




Здравствуйте и добро пожаловать на наш туториал! В этой серии мы говорим о том, как перемещаться между представлениями в SwiftUI (без использования навигационного представления!). Хоть эта идея и может казаться тривиальной, но, разобравшись в ней поглубже, мы сможем многое узнать о концепциях потоков данных, используемых в SwiftUI.

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

Вот чего мы собираемся достичь:

Всего голосов 7: ↑5 и ↓2+5
Комментарии0

Геймификация личной продуктивности

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

Предисловие


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


Но так или иначе вопрос личной эффективности меня интересует уже много лет и я всячески экспериментирую в поисках ответа на вопрос "Почему одни люди могут двигаться к цели ежедневно, а другие уже после недели перестают всячеcки придерживаться плана?".
Собственно, эта скромная статья — мое предположение, которое пока работает на всех моих знакомых. Они поддержали и любезно согласились поучаствовать в эксперименте, который длился ровно 30 дней.


Как все начиналось


Еще далекие 5 лет назад я пробовал самые классические подходы — ручка и блокнот, где я ежедневно в виде ToDo списка писал, что мне нужно сделать на день. Обычно планы на будущий день я записывал с вечера, чтобы за ночь мое подсознание подготовилось к продуктивному дню.


Список выглядел примерно так:


  1. Договориться о встрече с Иваном Петровичем
  2. Созвониться с заказчиком и обсудить ТЗ
  3. Дописать модуль АBC

    И все в таком роде.

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


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


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

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

Немного практики функционального программирования в Swift для начинающих

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


Я хотела бы представить концепцию Функционального Программирования новичкам самым простейшим образом, выделив некоторые его преимущества из множества остальных, которые реально позволят сделать код более читаемым и выразительным. Я подобрала для вас интересные демонстрационные примеры, которые находятся на Playground в Github.

Функциональное Программирование: Определение


Прежде всего, Функциональное Программирование — это не язык или синтаксис, а скорее всего — способ решения проблем путем разбиения сложных процессов на более простые и последующей их композиции. Как следует из названия "Функциональное программирование", единицей композиции для данного подхода является функция; и цель такой функции — избежать изменения состояния или значений за пределами своей области действия (scope).

В Мире Swift для этого есть все условия, ибо функции здесь являются такими же полноправными участниками процесса программирования, как и объекты, а проблема изменяемости (mutation) решается на уровне концепции value ТИПОВ (структур struct и перечислений enum), которые помогают управлять изменяемостью (mutation) и четко сообщают о том, как и когда это может произойти.

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

В этой статье мы сфокусируемся на использовании встроенных в Swift (то есть «из коробки») элементов Функционального программирования и понимании того, как можно их комфортно использовать в вашем приложении.
Читать дальше →
Всего голосов 18: ↑17 и ↓1+16
Комментарии18

LinkedIn для студентов и выпускников: первые шаги

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

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


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


Читать дальше →
Всего голосов 14: ↑3 и ↓11-6
Комментарии5

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность