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

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

Автор: @lvbond Senior iOS Yandex, ex-Avito, VK
Download Telegram
⚡️ Как порешать проблему выше?

Вы все ждали, а этот случай настал.
Вот и настало время когда вам пригодится писать кастомный copy-on-write.

Оптимальным решением является создание нового хранилища, только если оно шарится.
Please open Telegram to view this post
VIEW IN TELEGRAM
2
Лучшие привычки для разработчика

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

Я сэкономил время и собрал для вас все, что нужно. Необязательно соглашаться со всеми. Можно просто изучить и взять подходящее для себя:

Обязательные знания для программиста — подкаст с СЕО Хакслета. Есть очень интересные идеи про алгоритмы, математику, но конечно попа сгорит от каких-то идей.

7 привычек высокоэффективного программиста — базовые, но важные вещи для разраба от любимого ex-Google, ex-Facebook Techlead.

Software Developer Mindset — бумажная версия видосов выше.

"Идеальный программист" Роберт Мартин — наш любимый идеалист и его супер завышенные требования, которые иногда вредны для многих компаний. Но можно почитать и украсть то, что будет где-то полезно
👍3❤‍🔥1
Forwarded from AvitoTech
Инженерные практики: Live Site Review

Мы настроили алёрты для синтетического мониторинга, алёрты от мониторингов сервисов. Юзаем общий дашборд по пользовательским событиям в Grafana. Создали специальный «проблемный» канал в Mattermost. И всё равно что-то может пойти не так.

Чтобы не просто решить проблему, но и исключить рецидив, мы используем практику live site review или LSR. Прототип взяли у Google и редактировали процесс под себя.

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

#playbook_avitotech
👍4
Неплохой набор всяких расширений к Swift. Можно не тащить в проект, а просто почитать для насмотренности

https://github.com/vincent-pradeilles/swift-tips
👍12❤‍🔥3
Domain Driven Design

Если кто-то скажет вам, что понимать бизнес разраб не должен — смело посылайте этого советника читать о DDD. Ведь нет ничего лучше.

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

DDD на практике
DDD и SwiftUI
DDD и подлодка
DDD и самостоятельное обучение
👍6🍓4💋1
Прикольная фича у деливири. Иногда забываешь, что заходишь с включенным впном. А тут тебя носом тыкают
3
Так я получаю образование бизнес информатика и мне это нравится, то у меня уже куча материала как итшник может повлиять на бизнес. Вам интересно?
Anonymous Poll
67%
Да, было бы интересно разнообразить тех.скиллы
13%
Нет, давай только инфу о хардах
11%
Вообще все равно
16%
Да, но только поверхностно и немного
Проблемы айфона при херовом состоянии батареи

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

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

Тест модов
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
Советы по оптимизации энергии в iOS

Минимизировать чтение/запись данных

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

Минимализация работы с таймером

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

Приоритезация тасок
Тут все просто. Не стоит класть на главный поток что-то неважное, а лучше использовать ресурсы устройства по важности с помощью QoS.

Меньше работать в фоном потоке
Приложения, выполняющие ненужную фоновую деятельность, тратят энергию впустую. Например, не уведомляет систему о конце работы. Загружает ненужную инфу. Обновляет местоположение или подключается к устройствам
👍6
Идеальный кодревью

За почти 10 лет опыта процесс кодревью в 90% компаний был неправильным. Часто на нем писали неважные комментарии. Смысл которых больше стилистический: "поменяй нэйминг", "убери пробел".

Кто-то находил в этом процессе пользу. Рассказывал, что с помощью него можно обучать людей. Я не считаю, что если кодревью даже на 40-50% — это механическая работа человека по комментариям линтера, правок кодстайла с названием романа на полке "Табуляции и пробелы", то в нем мало пользы. А чаще такие споры заканчиваются токсчичностью и психологическими травмами.

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

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

1️⃣ Кодревью — это процесс проверки и оценки правильности измененного кода в соответствии заявленным целям других инженеров.

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

3️⃣ Проверка на удобочитаемость. Гарантия понятности изменений для других инженеров

4️⃣ Воспитание командной ответственности

5️⃣ Чекпоинт для понимания, что большое кол-во забракованных реквестов говорит о неправильных процессах

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

Также есть множество рекомендаций как сделать его полезней:

1️⃣ Нужно быть вежливым и профессиональным. Ох, наверное тут самое трудное для меня. Как быть вежливым, когда кто-то учит тебя как писать правильно наш идеальный код? Пукан горит, а чел просто не шарит. Но есть множество советов как сделать свою обратную связь продуктивной. Один из них уважать решения автора и предлагать альтернативы. Говорят, нужно оставаться в строго профессиональных рамках.

2️⃣ Писать небольшие изменения. Тут все понятно. Не стоит тащить огромный реквест и ждать, что его проверят быстро и без замечаний.

3️⃣ Хорошие описания к изменениям. Описание изменений должно быть понятно для всех и начинаться с краткой формы, а заканчиваться (само)документацией изменений.

4️⃣ Привлекать к обзору минимальное число рецензентов. Чаще большое число ревьюеров приводит к спору между ними и ненужным комментариям. А если же привели, то желательно, чтобы они сосредоточились на разных аспектах.

Итого: кодревью может быть полезным, если у всех есть четкое понимание важности этого процесса. А гит становится доброжелательной и понимающей площадкой для коммуникации разрабов. Реально ли это на практике? Другой вопрос

- Обсуждения кодревью на подлодке тимлидов
- Инструмент кодревью от гугл
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥1🌚1