iOS Dev
7.59K subscribers
969 photos
78 videos
1 file
1.12K links
🍏Канал об iOS-разработке, необычных подходах и решениях.
👨‍💻Автор: Виктор Грушевский (@Viktorianec)
Темы:
⭐️ Подготовка к собеседованиям.
⭐️ Архитектуры и алгоритмы.
⭐️ Код. Много кода.

⚒️База знаний: https://boosty.to/ios_dev

#ios #mobile #swift
加入频道
Скорее всего, многие из вас слышали или даже использовали Texture в своей работе.

Не могу не поделиться кратким описанием, что это и зачем же он используется:

Texture - это фреймворк для iOS, построенный поверх UIKit, который обеспечивает плавность и отзывчивость даже самых сложных пользовательских интерфейсов. Изначально он был создан для создания Paper и сочетается с анимацией pop, основанной на физике, но он также эффективен при использовании UIKit Dynamics и обычных приложений. Совсем недавно он был использован для переработки приложения Pinterest.

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

https://texturegroup.org/

#iOSDev #iOS #Texture
Если вы хотите почитать что-то, что не связано с программированием напрямую, то я бы рекомендовал обратить внимание на книгу от Даниэля Канемана:

"Думай медленно... Решай быстро"

Наши действия и поступки определены нашими мыслями. Но всегда ли мы контролируем наше мышление? Нобелевский лауреат Даниэль Канеман объясняет, почему мы подчас совершаем нерациональные поступки и как мы принимаем неверные решения. У нас имеется две системы мышления. «Медленное» мышление включается, когда мы решаем задачу или выбираем товар в магазине. Обычно нам кажется, что мы уверенно контролируем эти процессы, но не будем забывать, что позади нашего сознания в фоновом режиме постоянно работает «быстрое» мышление – автоматическое, мгновенное и неосознаваемое…
Супер-краткое сравнение баз данных, которые так или иначе приходилось использовать в работе и пет-проектах.

1. SQLite
Технически определяемая как реляционная система управления базами данных (РСУБД), SQLite является самым популярным в мире механизмом баз данных.

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

Почему именно SQLite?

- Простота внедрения
- Не требуется установка и нулевая конфигурация
- Высокая переносимость и совместимость с iOS и любой платформой - от Windows до macOS, от Linux до Android.
SQLite может связывать несколько языков программирования, включая C++, C#, JavaScript, Objective-C, PHP, Ruby, Java и Python.

2. Realm
Формально являясь MongoDB, Realm представляет собой систему управления объектными базами данных с открытым исходным кодом. С помощью этой объектно-ориентированной базы данных разработчики могут кодировать отношения между объектами. Если SQLite использует базы данных SQL, то Realm использует C++. Новичок на сцене приложений для iOS, Realm составляет сильную конкуренцию специально разработанным для Android и iOS Xamarin и React Native.

Почему именно Realm?

- Он быстрее, по сравнению с SQLite и Core Data.
- Благодаря ценной масштабируемости, Realm может обрабатывать большое количество пользователей и данных.
- Для разработчиков имеется четкая документация, облегчающая процесс разработки.
- У него есть сеть поддержки актрисы Twitter, Github и StackOverflow.

3. Core Data
Спонсируемый Apple, Core Data позволяет сохранять данные приложения для автономного использования, кэшировать временные данные приложения, определять типы и категории данных. Если быть точным, Data Core - это фреймворк персистентности, тип промежуточного программного обеспечения, которое хранит данные в базе данных - он имеет возможность использовать SQLite в качестве базы данных.

Почему именно Core Data
- Использует специфические для Apple языки, такие как Swift и Objective-C.
- Он быстрее SQLite при хранении данных
- Фреймворк имеет встроенные функции, которые сокращают написанный код на 70%
- Данные могут быть организованы в бинарные, XML или SQLite хранилища.
Возможно, вы считаете, что столкнулись с выгоранием. Вопрос этот сложный и морально, и физически. Постарался перевести несколько советов, как этого можно избежать:

Посмотрите на количество задач.

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

Постарайтесь сохранять свежесть разума.

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

Регулярно делайте перерывы в течение дня.

Сидение по 8-10 часов перед компьютером без перерыва не поможет вам быть продуктивным. Научно доказано, что продуктивность резко снижается после 4 часов сосредоточенной работы. Поэтому разминайтесь каждый час, прогуляйтесь или съешьте что-нибудь. Поговорите с коллегами, спросите, не нужно ли им просмотреть код или помочь с юнит-тестами. Регулярный перерыв может творить чудеса в кодинге, особенно когда вы погружены в отладку проекта. При работе над любым проектом вы можете следовать технике Pomodoro.
Не просто кодируйте. Раз в несколько месяцев делайте перерыв в работе над кодом и отправляйтесь в отпуск. Это одна из самых освежающих вещей, которые вы можете сделать. Проведите время со своей семьей и друзьями. Уделяйте время чтению книг, посещению встреч или конференций, слушайте отраслевые подкасты или пишите собственные технические блоги (как раз этим я сейчас и занимаюсь).

Занимайтесь спортом и высыпайтесь.

Старайтесь делать физические упражнения хотя бы 2-3 раза в неделю или занимайтесь плаванием. Включите в свой рацион здоровую пищу, овощи, орехи и фрукты. Получайте достаточно сна и используйте шумоподавление. Ниже приведены некоторые рекомендации по оптимизации вашего сна:
- Ограничьте потребление кофеина после 14:00
- Уменьшите количество синего света (пользователи Mac, включите ночной режим, пользователи Windows - ночной свет)
- Понизьте температуру в спальне.
- Установите затемненные шторы или используйте маску для глаз.
- В больших проектах всегда следуйте итеративному процессу разработки. Разработайте несколько модулей, скомпилируйте и протестируйте их. Разработайте еще несколько модулей. Не пишите целую огромную программу, не компилируя и не отлаживая ее, а затем пытайтесь заставить ее работать. Это быстрый путь к разочарованию.
Рубрика #whattosee?

Что, если вы могли бы оставить работу за пределами офиса? Или не думать о бытовых проблемах на работе?
Разделение - сериал об инженере, который подвергся подобной процедуре, а вот хорошо это, или плохо - стараются рассказать сценаристы сериала для Apple.

Секретное сообщение для тех, кто смог: во-первых, вы молодцы, во-вторых, вы знаете, что сделать! Надеюсь, вам понравился квест!
Магические слова SOLID, DRY, KISS, YAGNI

Освежим знания?

SOLID

S - single responsibility. Принцип единственной ответственности (single responsibility principle). Для каждого класса должно быть определено единственное назначение. Все ресурсы, необходимые для его осуществления, должны быть инкапсулированы в этот класс и подчинены только этой задаче.
O - open–closed. Принцип открытости/закрытости (open-closed principle) «программные сущности должны быть открыты для расширения, но закрыты для модификации».
L - Liskov substitution. Принцип подстановки Лисков (Liskov substitution principle) «объекты в программе должны быть заменяемыми на экземпляры их подтипов без изменения правильности выполнения программы»
I - interface segregation. Принцип разделения интерфейса (interface segregation principle) «много интерфейсов, специально предназначенных для клиентов, лучше, чем один интерфейс общего назначения»
D - dependency inversion. Принцип инверсии зависимостей (dependency inversion principle) «Зависимость на Абстракциях. Нет зависимости на что-то конкретное»

DRY
Don’t repeat yourself
Это принцип разработки программного обеспечения, нацеленный на снижение повторения информации различного рода, особенно в системах со множеством слоёв абстрагирования. Принцип DRY формулируется как: «Каждая часть знания должна иметь единственное, непротиворечивое и авторитетное представление в рамках системы». Он был сформулирован Энди Хантом (англ.) и Дэйвом Томасом в их книге The Pragmatic Programmer (англ.). Они применяли этот принцип к «схемам баз данных, планам тестирования, сборкам программного обеспечения, даже к документации». Когда принцип DRY применяется успешно, изменение единственного элемента системы не требует внесения изменений в другие, логически не связанные элементы. Те элементы, которые логически связаны, изменяются предсказуемо и единообразно. Помимо использования методов и функций в коде, Томас и Хант считают необходимым использование генераторов кода, автоматических систем компиляции.

KISS
Keep it simple stupid
Этот принцип лучше всего иллюстрируется историей, когда Джонсон вручил команде инженеров-авиаконструкторов набор инструментов, поставив им условие: механик среднего уровня должен суметь отремонтировать реактивный самолёт, который они проектировали, в полевых условиях только с этими инструментами. Таким образом, «stupid» относится к отношению между тем, что всё ломается, и сложностью необходимого для этого ремонта.

YAGNI
You aren't gonna need it
Согласно адептам принципа YAGNI, желание писать код, который не нужен прямо сейчас, но может понадобиться в будущем, приводит к следующим нежелательным последствиям:

- Тратится время, которое было бы затрачено на добавление, тестирование и улучшение необходимой функциональности.
- Новые функции должны быть отлажены, документированы и сопровождаться.
- Новая функциональность ограничивает то, что может быть сделано в будущем, — ненужные новые функции могут впоследствии помешать добавить новые нужные.
- Пока новые функции действительно не нужны, трудно полностью предугадать, что они должны делать, и протестировать их. Если новые функции тщательно не протестированы, они могут неправильно работать, когда впоследствии понадобятся.
- Это приводит к тому, что программное обеспечение становится более сложным (подчас чрезмерно сложным).
- Если вся функциональность не документирована, она может так и остаться неизвестной пользователям, но может создать различные риски для безопасности пользовательской системы.
- Добавление новой функциональности может привести к желанию ещё более новой функциональности, приводя к эффекту «снежного кома».
У Рея Вендерлиха появился раздел на GitHub с бесплатными книгами. Пусть они и не содержат супер-свежую информацию, но вполне могут оказаться полезными.
Рубрика #whattosee?

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

Сериал с довольно понятным названием "Загрузка" может оказаться глубже, чем кажется.
⚠️У Apple сбой на серверах. Проблема затронула портал Apple Developer, AppStore Connect и iCloud. С Xcode также проблемы. Не получается скачать приложения из App Store.

Это не только в РФ, но и как минимум в Германии тоже.

UPD. Чаще всего пользователи видят DNS Resolve Failure.
Пустая трата времени или выбор нужного инструмента?

Возможно вы слышали о термине 10x - инженер.

Даже Авраам Линкольн как-то сказал: "Если бы у меня было 8 часов, чтобы срубить дерево, я бы потратил 7, затачивая свой топор."

Также можно сказать о разнице между джуном и сениор-разработчиком. Если джун будет пытаться 8 часов рубить тупым топором, то сениор потратит час на выбор нужной бензопилы и 5 минут, чтобы спилить дерево (отличный пример, кстати).

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

Вот здесь она на английском
А вот тут (на хабре) - на русском.
Написал статью про любопытный подход к код-ревью
https://telegra.ph/Piramida-kod-revyu-03-24
К посту выше добавлю - не всегда получается следовать всем принципам, да и код-ревью в командах отличается почти всегда.

Поэтому будет здорово, если за код не будет стыдно, например, спустя год. А в команде - чтобы её новые участники понимали, что происходит здесь вообще и куда они попали.
Apple выпустили серию уроков для обучения основам работы в Xcode, SwiftUI и UIKit для создания, цитирую, «привлекательных приложений» для iOS

#iOSDev #обучение
Из любопытного: вы знали, что для map() или filter() можно использовать keyPath вместо closure()?

#любопытно #iOSDev
Что может вывести из себя

Механические клавиатуры - исчадия ада, когда вы пытаетесь сосредоточиться на сложной задаче, допустим, в опенспейсе. И моё сочувствие, если у вас нет наушников с шумоподавлением. Особый кайф - если в радиусе одного офиса больше одного любителя подолбить по кнопкам.
Рубрика #whattosee

Терминал (2004) - с Томом Хэнксом в главной роли.

Фильм рассказывает историю Виктора Наворски, отправившегося в Нью-Йорк из Восточной Европы. Пока Виктор летел в самолете, на его родине произошел государственный переворот. Оказавшись в международном аэропорту имени Джона Кеннеди с паспортом ниоткуда, он не имеет права въехать в Соединенные Штаты и должен коротать свои дни и ночи на скамейках у выхода 67, пока война в его родной стране не закончится.
https://vc.ru/life/387226-kak-ya-uvelichil-dohod-ot-mobilnogo-prilozheniya-v-130-raz-za-3-goda
Написал про свой опыт разработки мобильного приложения для iOS и MacOS. Надеюсь, это кого-то вдохновит на то, чтобы наконец закончить свой пет-проект. Уверен, что среди нас многие их начинали 😉
Самое главное — начать

В исследованиях, которые проводились преподавателем психологии Кеннеттом Макгроу, участвующим в эксперименте людям были даны сложные пазлы, и на решение их было выделено «неограниченное» количество времени. Перед тем, как пазлы были завершены, им сказали, что эксперимент уже окончен, и они могут отправляться домой, если захотят. Но, несмотря на это, целых 90% участников продолжили собирать пазл, стремясь завершить начатую задачу.

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

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

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

Сайт Рея Вендерлиха

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

Хабр
Хабр уже не торт?

Есть хабы разработки под iOS, Android. Хорошие статьи мелькают не так часто, как раньше. Но всё ещё появляются, и это уже неплохо.
8 из 10

Medium
Крупнейший ресурс, всё обо всём.

Нас интересуют публикации по тегам iOS, Dev, хабы Better Programming и ему подобные.
В месяц доступно несколько бесплатных статей. Либо 5$ в месяц или 50$ в год. Если вы рассматриваете прокачку на долгосрочную перспективу, это неплохой выбор.
10 из 10

Hacking with swift
Часто вы можете найти ответы на свои вопросы именно здесь

Примеры кода, детальный разбор фич.
9.5 из 10

Stackoverflow
А вы думали, его здесь не будет?

∞ из 10
Самый доступный способ ускорить разработку в любых редакторах, не только при написании кода — это изучить комбинации клавиш.

Неплохое наглядное отображение шорткатов для Xcode.