iOS Makes Me Hate
3.93K subscribers
1.16K photos
167 videos
15 files
1.33K links
Авторский канал про iOS разработку. Путь продуктовых самураев в MAANG.

Самое больше iOS сообщество практиков: https://boosty.to/lionbond/

Автор: @lvbond Senior iOS Yandex, ex-Avito, VK
Download Telegram
Продолжаем страшилки для джунов

Чел сделал тестовое с помощью chatGPT

Какие же навыки обесценятся, а какие наберут актуальность?

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

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

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

Бот стал супер хайповой штукой. Скоро будут чат боты в телеграме, подключенные к апи чатГПТ, которые будут делать по скриптам простенькие апки
Please open Telegram to view this post
VIEW IN TELEGRAM
🗿5👌1
Обратный обход бинарного дерева

Последний из основных способов обхода дерева. Решил через очередь.

Наудивлении у отуса отличная статья про деревья без лишней херни. Максимальная лаконичная выдержка.

Задача на литкоде

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

Не знаю стоит ли делать отдельные посты про полезные ссылки и объяснять деревья без задач. Ибо это пост ради поста, а без практики это все из головы ветром сдует.

Ставь 💅 если делать отдельные посты про техники. Или 🗿 если публиковать только ссылки с задачами. А там сами уже разберутся

#365_дней_богу_алгоритмов #5
💅18🗿5
Лучшая архитектура iOS
Anonymous Poll
19%
MVC
38%
MVVM
14%
MVP
5%
TCA
17%
VIPER
32%
PIDOR
8%
REDUX
😁11
Корень числа с бинарным поиском

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

Наглядный пример поиска корня. Изи решается через тот же бинарный поиск

Задача в литкоде

#365_дней_богу_алгоритмов #6
Atomicity (атомарность)

Этот термин часто юзается вместе с многопоточкой.

Вики говорит:
Это операция, которая либо выполняется целиком, либо не выполняется вовсе; операция, которая не может быть частично выполнена и частично не выполнена.

Грубо говоря, атомарная операция не дает другим потокам прочитать участок памяти, пока он изменяется

Пример из исходников аламофайр
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Еще один гайд по алгоритмам.

В отличие от других этот говорит о необходимости базовых алгоритмов и техник:

- Два поинтера с массивами, связанным списком
- Бэктрекинг
- Обходы деревьев
- Кучи и Стэки
- Динамическое программирование

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

Я считаю, что для решения литкода и других алгоритмических задач не стоит задумываться об излишних синтаксических улучшениях.

😔 Стоит опустить многие вещи и сфокусироваться на главном — решении задачи. А остальные вещи по оптимизации и косметической декорации уже после.

Всегда важнее решенная проблема, а ее форма уже на втором или третьем плане.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
Онанизм на код ревью

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

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

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

Хороший код — это не косметика, читабельность, соответствие линтер правилам.

Хороший код — быстрый, стабильный и поддерживаемый. В последнюю очередь это про правила линтера

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

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

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

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

Никому не будет плохо от лишнего пробела, неочевидного нэйминга, переноса аргумента, неприватных методов.

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

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

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

Задача программиста решать задачу. А потом учиться решать ее красиво
👍10😐6💯2💅2
Если вы вчера заметили, то не было ежедневных алгоритмов

Хейтеры скажут слился. Но я просто решил, что ежедневные отчеты задают не тот тон каналу.

Поэтому следующие посты я буду публиковать по воскресеньям и сразу с задачами за неделю. Для экономии времени своего и вашего.

Прошлые задачи:

#7. Найти сводной индекс. Решение далеко не оптимальное. На оптимизацию не было времени. Решил тупо в лоб

#8. Обход n-арного дерева в обратном порядке
Здесь посидел. Решил тоже неоптимизировать и тупо двойным проходом

#365_дней_богу_алгоритмов

#7 | #8
👌1
💬 Структуры данных: Queue

🟢 lvl: jun

Ну че. Начнем и базовые структуры данных в информатике реализовывать на свифте.

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

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

Для управление элементами в очереди у нас есть 2 метода:
1. Enqueue — добавляет в очередь
2. Dequeue — удаляет из очереди.

Какие алгоритмы полезно знать?

- Очевидно, мы юзаем очередь для управления тасками в NSOperationQueue, GCD
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Новости по Симулятору iOS-ника

Расскажу детали.

Я отправлял на открытую бету в 10к человек. Проверяли 1,5 недели с тремя запросами на ускренную проверку

Удивительно, но это считается дистрибуцией поэтому проходило почти полноценную проверку.

До чего докопались?

- Из названия попросили убрать слово "iOS". Теперь это просто "Dev Simulator". Идеи на названия лучше принимаются

- Непонятна целевая аудитория

- Пару моментов по UI/UX

- Описать цели приложения

В общем, к 25 человек уже должны придти приглашения. По фидбэку и обращением на добавления в тестера писать сюда
👍5🐳2💅2🎉1🕊1
This media is not supported in your browser
VIEW IN TELEGRAM
💎 Первая версия уже ушла 40 тестерам.

Что в ней есть?

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

- Материалы. Пока они лишь описывают примерную форму. Дальше будут более интересны с возможностью лучше закрепить знания

- Базовая геймфикация. Пока не все материалы доступны. Лишь качаясь и набирая опыт будут открываться дополнительные разделы

💎 Что планируется в скором будущем?

- Собеседования
- Улучшенные материалы
- Избранное
- Поделиться результатом
- Тренажеры

О каждой фиче теперь будут отдельные посты.

#симулятор_иосника
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥164👍3👏1
Структуры данных: Стэк

Продолжаем работу с базой. Тут все очень просто и даже изи.

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

В стеке элементы добавляются и удаляются в порядке "последний пришел, первый ушел
This media is not supported in your browser
VIEW IN TELEGRAM
Такую ачивку получит каждый бета-тестер.

В симулятор иосника уже 80 отправленных заявок

70 установили. 40 в чате. Кучу идей предложили. Еще больше в бэклоге.

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

Но приоритеты другие. В чате спросили: «чем движет создание апки?». Движет идея.

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

Вот что движет
👍12❤‍🔥2🗿2🆒2🤔1🐳1
DIP vs DI vs IoC

Часто вспоминая DI мы начинаем путаться в аббревиатурах. Попробуем разобраться. Даже в одном из прошлых постов в комментариях перепутали IoC и DI.

Inversion of Control (IoC) — это некий абстрактный принцип, характеристика, набор рекомендаций для написания слабо связанного кода. Суть его в том, что каждый компонент системы должен быть как можно более изолированным от других, не полагаясь в своей работе на детали конкретной реализации других компонентов.

Иначе говоря, уменьшая сцепление между ними.

Dependency Inversion Principle — это принцип, который дает рекомендации о том, какими должны быть зависимости. Например, закрытые протоколами.

Dependency Injection (внедрение зависимостей) — это один из способов реализации принципа Inversion of Control (помимо еще есть Service Locator и Фабричный метод)
👍8💯1
Образованный человек

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

Наткнулся на интересный отрывок из книги "Энциклопедия менеджмента" П. Друкера. И многие слова показались дико пронзительными. Возможно, когда-нибудь, когда станет больше постов про софт скиллы я порефлексирую. А сейчас просто поделюсь:

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

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

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

Советую почитать главу целиком
👍4
Паттерн: Строитель (Builder)

lvl: mid-

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

Строитель — это класс (необязательно), который создает сложный объект пошагово и закрывает его за протоколом.

Используется паттерн тогда:

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

процесс конструирования должен обеспечивать различные реализации конструируемого объекта. Например, деревянные стены или бетонные
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12👍5