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

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

#ios #mobile #swift
加入频道
Магические слова 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, желание писать код, который не нужен прямо сейчас, но может понадобиться в будущем, приводит к следующим нежелательным последствиям:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Неплохое наглядное отображение шорткатов для Xcode.
👍5🔥32👏2
Джефф Дин - Чак Норрис в мире программирования
Джефф Дин считается кем-то вроде Чака Норриса. Отличие только в том, что он вовсе не герой боевиков, а инженер-программист компании Google. Однажды первого апреля один из коллег Дина по имени Кентон Варда открыл страничку, куда каждый мог добавлять факты о Джеффе Дине. Идею с энтузиазмом подхватили другие разработчики — и вскоре наполнили страничку множеством таких «фактов».


«Джефф Дин родился 31 декабря 1969 года в 23:48. Ему потребовалось 12 минут, чтобы запустить свой первый счётчик времени»

«Скорость программирования Джеффа Дина выросла в 40 раз в конце 2000 года, когда он проапгрейдил клавиатуру на USB 2.0»

«Джефф Дин компилирует и запускает свой код перед коммитом, но только чтобы проверить на баги компилятор и CPU»

«Когда Джефф Дин разрабатывает программу, то сначала создаёт бинарник, а потом пишет исходный код как документацию».

«Джефф Дин однажды не прошёл тест Тьюринга, потому что правильно установил 203-е число Фибоначчи менее чем за секунду»

«Скорость света в вакууме была около 55 км/ч. Затем Джефф Дин потратил уикенд на оптимизацию физики»

«Недовольный константным временем, Джефф Дин создал первый в мире алгоритм O(1/n)»

«Когда Джефф Дин запускает профайлер, все циклы в страхе расцикливаются»

«На клавиатуре Джеффа Дина две клавиши: 1 и 0»

«Когда Грэм Белл изобрёл телефон, то увидел пропущенный вызов от Джеффа Дина»

«Джефф Дин надевает штаны по очереди на каждую ногу, но если бы у него было больше двух ног, то мы бы увидели, что ему требуется O(log n)»

Внимание! Следующая шутка требует специальный доступ!

«На собеседовании в Google Джеффа спросили, что следовало бы из равенства P=NP. Он ответил: «P = 0 или N = 1». Затем, пока собеседующий ещё не перестал смеяться, Джефф присмотрелся к публичному сертификату Google и выписал приватный ключ на доску»

@iOS Dev
😁12👍3
Вопрос-опрос
iOS Dev
Вопрос-опрос
😁6👍5🤯3🤔1