iSilver dev 🍏
47 subscribers
129 photos
16 videos
1 file
47 links
Переобуваюсь в iOS разработчика в 45.
Swift Xcode SwiftUI
Евгений - @icleverstyle
Download Telegram
Плагин eza для терминала

Выводит список папок и файлов в древовидной структуре.

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

Установка


brew install eza


Настройка алиесов в ~/.zshrc


plugins=(... eza)

alias lt1='eza --tree --level=1 --color=always --group-directories-first --icons'
alias lt2='eza --tree --level=2 --color=always --group-directories-first --icons'
alias lt3='eza --tree --level=3 --color=always --group-directories-first --icons'
alias lt4='eza --tree --level=4 --color=always --group-directories-first --icons'

В результате имеем 4 доп. Команды в терминале:
lt1 - список 1 уровня
lt2 - список 2 уровня вложенности
lt3 - список 3 уровня вложенности
lt4 - список 4 уровня вложенности

Ранее уже писал про кастомизацию терминала здесь
🗓 Отчёт за неделю - это хорошая идея

Текущий прогресс по курсам Swift

✔️ +0 16/100 - 100 дней SwiftUI
✔️ +1 18/39 - Усов книга 1
✔️ +2 7/29 - Angela Yu

🟩🟩🟩⬜️⬜️⬜️⬜️⬜️⬜️⬜️ - 100 дней
🟩🟩🟩🟩🟩🟩⬜️⬜️⬜️⬜️ - Усов
🟩🟩🟩⬜️⬜️⬜️⬜️⬜️⬜️⬜️ - Angela Yu

Проект "iOS по взрослому"
- начал таск "Верстка 1.1 Онбординг"
Отправил на первое ревью

Пришлось поразбираться с версткой под разные размеры экранов. У iPhone'ов их так много как у Андройд устройств и это радует.

В курсе Angela Yu скакун с 5 урока сразу на 16 и 18 - работа с терминалом и git (GitHub)

По Усова прошел только 1 главу enum

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

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

Сейчас аккаунт позволяет публиковать только бесплатные (без платных подписок и покупок внутри) приложения.

🗓 Планы на неделю:

"iOS по взрослому"
- Завершить новый таск "Верстка 1.1 Онбординг" (пройти все ревью)

Усов книга 1
- изучить 2 главы: struct, class (44 стр.)

100 дней SwiftUI
- дни 17-18 App "Чек в кафе"
- день 19 App "Конвертер"

Новый Pet-проект (пока секрет)
- подготовить картинки
- начать верстку основного экрана

Ну что ж: погнали!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Открытие дня
👍3
Смотрел утром 100 дней SwiftUI...

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

Сейчас много практики получаю на учебном проекте "iOS по взрослому" - верстка UIkit кодом без сторибордов.

Курс Angela Yu - UIKit с версткой на сторибордах.

100 дней SwiftUI - логично на SwiftUI.

Врезультате, есть практика UIkit без сторибордов, но нет теории (уроков) по такому кодингу.

Надо поискать материалы, курсы по верстке кодом на UIkit и подправить свой roadmap.
Как настроить проект UIKit без сторибордов

1. Удаляем файл main.storyboard

2. В Info.plist ищем строку "Storyboard Name: Main" и удаляем всю строку

3. Настройки проекта / TARGETS / Info /
"Main storyboard file base name: Main"
Удаляем значение Main

4.В SceneDelegate.swift добавляем код в func scene(...)



// меняем _ на windowScene
guard let windowScene = (scene as? UIWindowScene) else { return }

// добавляем
let window = UIWindow(windowScene: windowScene)
let viewController = ViewController()
let navigationController = UINavigationController(rootViewController: viewController)
window.rootViewController = navigationController
window.makeKeyAndVisible()
self.window = window


Всё проект готов для верстки кодом!
👍1🫡1
Ваймээээ!!!

Путь описан выше 🔼
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1🍾1
Открыл для себя на практике
Debug View Hierarchy

Очень удобно увидеть проекции вьюшек, слои и констрейнты.
👍1
Решил усложнить прохождение курса Angela Yu и повторить задания на UIKit уже без сторибордов - кодом.

Запилил приложение в которое будут добавлять все мини-проекты (задания) курса

https://github.com/iCleverStyle/studyproject_angelayu.git
Как поменять время, сигнал сотовой связи, WiFi и заряд аккумулятора в статусбаре симулятор

Зачем?
- для скриншотов

Для AppStore поставить 9:41 или например если не хочется палить время: вот я сделал вчера в 23:59... )))

1. Получаем список симуляторов

xcrun simctl list devices


2. Находим нужный нам симулятор и его UUID

iPhone 12 Pro (7808996E-071C-44C5-8C5A-0E6D46755ED1) (Booted)


3. Запускаем симулятор

xcrun simctl boot <UUID>
xcrun simctl boot 7808996E-071C-44C5-8C5A-0E6D46755ED1


4. Настраиваем статус-бар

xcrun simctl status_bar booted override --time "9:41" --batteryState charged --wifiBars 3 --cellularBars 4

Где:
- -time "9:41" → Sets the clock to 9:41 AM, which is Apple’s standard time in promotional images.
- -batteryState charged → Displays a fully charged battery.
- -wifiBars 3 → Ensures full Wi-Fi signal strength.
- -cellularBars 4 → Sets full cellular signal strength.

Сброс настроек

xcrun simctl status_bar booted clear
👍2
Как вставлять блоки кода в сообщениях

Вводим одинарную обратную кавычку 3 раза в начале и конце кода

После первой тройки кавычек пишем язык программирования без пробела


var langCode = "swift"
👌2
Замена текста для удобного форматирования блоков кода

Системные настройки / Клавиатура / Замены текста
Начал осваивать Obsidian...

Это вся информация на сегодня
👍3😢1🎃1
🗓 Отчёт за неделю - это хорошая идея

Текущий прогресс по курсам Swift

✔️ +1 17/100 - 100 дней SwiftUI
✔️ +0 18/39 - Усов книга 1
✔️ +0 7/29 - Angela Yu

🟩🟩🟩⬜️⬜️⬜️⬜️⬜️⬜️⬜️ - 100 дней
🟩🟩🟩🟩🟩🟩⬜️⬜️⬜️⬜️ - Усов
🟩🟩🟩⬜️⬜️⬜️⬜️⬜️⬜️⬜️ - Angela Yu

Проект "iOS по взрослому"
- делал таск "Верстка 1.1 Онбординг"
Фиксик замечания по 4 ревью

Много работы именно по улучшению кода, сам онбординг и верстка работали что называется "из коробки"

В курсе Angela Yu - повторил уроки 4 и 5, но уже кодом. Как превратить сториборд в о вью, написанный кодом помог канал IOS на практике (следующим постом подробнее напишу)

Книгу Усова на этой неделе не трогал.

Соглашение о платном контенте в аккаунт разработчика Элл - активно!

Pet-проект - буквально начал вчера вечером под бокал вина. Создал проект в XCode, накидал схематично первый экран.

Занимаюсь iOS разработкой так или иначе ежедневно - это очень хорошо!

Роадмап обучения еще не передалал после осознания распыления в обучении.

🗓 Планы на неделю:

"iOS по взрослому"
- Завершить таск "Верстка 1.1 Онбординг"
- взять новый таск (буду смотреть доступные на момент завершения предыдущего таска)

Усов книга 1 (перенос с прошлой недели)
- изучить 2 главы: struct, class (44 стр.)

Angela Yu - Автолейауты - мини-приложение "Калькулятор".

Pet-проект (пока секрет)
- сделать MVP
- подготовить к app store

Ну что ж: погнали!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
Как дублировать сверстанный экран строиборда в код

Инструкция от IOS на практике

Скрипт xib to code

Мой вариант App Magic Ball:

2 одинаковых экрана:
- Экран, созданный с использованием Interface Builder (Storyboard)

- Экран, созданный программно с использованием UIKit и Auto Layout
👨‍🎓 Apple Intelligence выкатили для разработчиков

Уже добавили в эпл стор коннект

В ближайшее время обновят XCode

Будем наблюдать.
Please open Telegram to view this post
VIEW IN TELEGRAM
😁1
Пилю приложение для кофеманов

Делаю свой пет-проект на SwiftUI - трекер кофе, и воды за одно.
1
Различия программиста от разработчика

Мысли в слух

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

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

Разработчик - больше нацелен на продукт, его функциональность и дизайн, и не так заботится о том, что "под капотом".

Ответ на вопрос: Кем ты хочешь стать iOS программистом или iOS разработчиком? - может сильно повлиять на роадмап обучения.
2
📱 Roadmap приложения

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

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

Потом стараюсь группировать по одной теме.

И разбиваю на версии для реализации в 1-2 дня.

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

Все сразу не сделаешь. А лучше выпустить в свет минимально рабочую версию, чем вечно пилить идеальное приложение и никогда не опубликовать.
1
Правила для Cursor AI

Пару дней назад инди-разработчик Айварз Мейерз поделился своими правилами для Cursor AI

Ниже их перевод

Надо переработать свои правила и интегрировать некоторые идеи.

Особенно нравится подход с разными режимами.


Часть 1

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

# Рекомендации
Если файл становится слишком длинным, разбейте его на файлы меньшего размера. Если функция становится слишком длинной, разбейте ее на более мелкие функции.

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

# Режим планирования
Когда вас попросят перейти в "Режим планировщика", тщательно обдумайте предлагаемые изменения и проанализируйте существующий код, чтобы определить весь объем необходимых изменений. Прежде чем предлагать план, задайте 4-6 уточняющих вопросов, основанных на ваших выводах. После получения ответа разработайте комплексный план действий и попросите меня одобрить этот план. После утверждения выполните все шаги в этом плане. После завершения каждого этапа /шага укажите, что было выполнено только что и каковы следующие шаги + этапы, оставшиеся после этих шагов

# Режим архитектуры
Когда вас попросят перейти в "Режим архитектуры", тщательно обдумайте предлагаемые изменения и проанализируйте существующий код, чтобы отобразить весь объем необходимых изменений. Хорошенько подумайте о масштабе того, что мы пытаемся создать, чтобы понять, как нам нужно проектировать систему. Подготовьте компромиссный анализ из 5 пунктов различных способов, которыми мы могли бы спроектировать систему, с учетом ограничений, масштаба, соображений производительности и требований.

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

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

# Отладка
Когда вас попросят перейти в "Режим отладки", пожалуйста, следуйте именно этой последовательности:

1. Проанализируйте 5-7 различных возможных источников проблемы
2. Выделите из них 1-2 наиболее вероятных источника
3. Добавьте дополнительные журналы для проверки ваших предположений и отслеживания преобразования структур данных в процессе управления приложением, прежде чем мы перейдем к реализации фактического исправления кода
4. Используйте инструменты "getConsoleLogs", "getConsoleErrors", "getNetworkLogs" и "getNetworkErrors" для получения любых недавно добавленных журналов веб-браузера
5. Получите также логи сервера, если они доступны - в противном случае попросите меня скопировать / вставить их в чат
6. Тщательно обдумайте, что могло быть не так, и проведите всесторонний анализ проблемы
7. Предложите дополнительные журналы, если проблема сохраняется или источник еще не ясен
8. Как только исправление будет реализовано, запросите разрешение на удаление ранее добавленных журналов
🔥1