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


Часть 2

# Обработка сообщений о сбоях
Если вам предоставлены файлы markdown, обязательно ознакомьтесь с ними в качестве справочного материала для структурирования вашего кода. Не обновляйте файлы markdown вообще, если вас не попросят об этом иначе. Используйте их только для справок и примеров того, как структурировать ваш код.

# Взаимодействие с Github
Когда меня попросят отправить PR-сообщение, используйте интерфейс Github CLI и предположите, что я уже прошел правильную аутентификацию. Когда меня попросят создать PR, выполните следующий процесс:

1. git status - чтобы проверить, есть ли какие-либо изменения для фиксации
2. git add . - чтобы добавить все изменения в промежуточную область (ПРИ НЕОБХОДИМОСТИ)
3. git commit -введите "ваше сообщение о фиксации" - для фиксации изменений (при НЕОБХОДИМОСТИ)
4. git push - для отправки изменений в удаленный репозиторий (ПРИ НЕОБХОДИМОСТИ)
5. git branch - для проверки текущей ветки
6. git log main..[вставить текущую ветку] - для записи изменений, внесенных в текущую ветку.
7. git diff -имя-статус - главная - проверьте, какие файлы были изменены
8. gh pr create - заголовок "Заголовок идет сюда..." -тело "Пример тела..."

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

При написании сообщения для рекламы не добавляйте в него новые строки. Напишите только одно длинное сообщение.

# Правила оформления пользовательского интерфейса SwiftUI:
Используйте встроенные компоненты: Используйте собственные элементы пользовательского интерфейса SwiftUI, такие как List, NavigationView, TabView и SF-символы, чтобы создать безупречный внешний вид, совместимый с iOS.
Основные инструменты верстки: Используйте VStack, HStack, ZStack, Spacer и Padding для адаптивного дизайна; используйте LazyVGrid и LazyHGrid для сеток; GeometryReader для динамических макетов.

# Добавьте визуальной изюминки:
Улучшайте пользовательский интерфейс с помощью теней, градиентов, размытий, пользовательских форм и анимации, используя модификатор .animation() для плавных переходов.
Учитывайте, как будет выглядеть приложение с включенной темной и светлой тематикой.

# Дизайн для взаимодействия:
Используйте жесты (свайпы, длительные нажатия), тактильную обратную связь, понятную навигацию и адаптивные элементы для повышения вовлеченности и удовлетворенности пользователей.

# Проекты Xcode
При работе с Xcode project все классы в project доступны по всему миру. Их не нужно импортировать.
Всегда создавайте заголовки для файлов Swift и SwiftUI
При создании новых файлов их также следует добавлять в проект Xcode, чтобы иметь возможность скомпилировать проект. При необходимости обратитесь за помощью для изменения файла проекта Xcode

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

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


# Тип правила: Игнорировать ошибку компоновки
Закономерность: Не удается найти тип "*" в области видимости
Описание: Игнорируйте ошибки типа "не найдено" для файлов проекта в проектах Xcode

# Тип правила: Игнорируйте ошибку компоновки
Закономерность: Не удается определить контекстную базу по ссылке на элемент "*"
Описание: Игнорируйте ошибки контекстной базы для случаев перечисления в проектах Xcode

# Тесты
Перед внедрением новой функциональности добавьте модульные тесты и протестируйте результаты, когда закончите

Если вас конкретно не просят изменить выходящую функциональность, но вы изменяете связанный код, добавьте модульные тесты и протестируйте результаты, чтобы убедиться, что выходящая функциональность не нарушена
🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Оказывается, кофе я пью совсем не много 🤔

Да и воды надо чаще пить 🥤
Разработка – как компьютерная игра… затягивает!

Сегодня:

- сделал темную тему

- сделал локализацию (перевод всего приложения на разные языки)

- добавил тактильную обратную связь (разные варианты легкой вибрации при свайпах и нажатиях кнопок)
🔥2
Бился над проблемой смены иконки приложения на Dark в ночном режиме…

Оказалось, что я на своем смартфоне не настроил автоматическую смену иконок light / dark.

🤦‍♂️
This media is not supported in your browser
VIEW IN TELEGRAM
Сразу увидел, что иконку надо доработать – сделал чуть контрастнее.
Вчера внезапно пришла в голову мысль, что трекать можно всё что угодно, например перекусы.

И добавил иконку бургера 🍔

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

Уже и серия приложений вырисовывается 🫣
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Даунгрейд - реальный способ запустить приложение быстрее.

Долго работал над настройкой пользовательских напитков, список, добавление новых, активация, дезактивация... а оно вообще пользователю надо?!

Может и надо, но лучше спросить и только потом сделать, а пока нет приложения - нет н чего, в тч и пользовательских напитков!

И... решил выпилить уже сделанные заработки из приложения - упростить и запустить.

Утром обнаружил, что приложение в состоянии MVP - минимально рабочая версия.

Так что можно немного "причесать" и пора выкладывать в стор!
🔥3
Мой портрет глазами ChatGPT
Планы на выходные - разобраться с публикацией в App Store
🔥3
🧹 Про чистоту кода

Совсем внезапно узнал про мощный инструмент проверки кода на соблюдение стилевых правил - SwiftLint.

Устанавливаешь SwiftLint


brew install swiftlint


Добавляешь файл с правилами проверки в корень проекта:
.swiftlint.yml

Сами правила, которые прописываются в файле можно найти в интернете, либо запросить составить ИИ.

Для проверки команда swiftlint в терминале.

Для автоматического исправления кода (частично):

swiftlint autocorrect

Правила для UIKit


# отключённые правила
disabled_rules:
- trailing_whitespace # Пробелы в конце строки
- force_cast # Явное приведение типов через as!
- function_body_length # Длинные функции пока допускаем

# дополнительные правила
opt_in_rules:
- empty_count # Не использовать .count == 0 вместо .isEmpty
- force_unwrapping # Не использовать ! при извлечении optional
- indentation_width
- unused_declaration # Удалять неиспользуемые переменные и функции

analyzer_rules:
- unused_declaration # неиспользуемые переменные и функции

# Какие папки проверять
included:
- MyApp

# Папки-исключения
excluded:
- Pods
- Carthage
- fastlane
- build
- Generated

# Проверять длину строк
line_length:
warning: 120
error: 200
ignores_comments: true
ignores_urls: true

# проверять имена переменных и констант
identifier_name:
min_length: 3
max_length: 40
excluded: # Исключаем имена типа x, y в циклах и координатах
- id
- x
- y
- i
- j
- a

# Стиль отступов
indentation_width:
indentation_width: 4
include_comments: false
include_compiler_directives: false
include_multiline_strings: true

# Проверка комментариев FIXME и TODO
todo:
severity: warning
Please open Telegram to view this post
VIEW IN TELEGRAM
👌1
🗓 Отчёт за неделю - это хорошая идея

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

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

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

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

В курсе Angela Yu - уроки 6 (калькулятор) и урок 7 (клилофон)

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

Pet-проект - доделал проект до уровня MVP.
Осталось опубликовать (заполнить кучу форм)

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

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

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

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

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

Angela Yu - Приложение "Таймер варки яиц" / Опционалы, условыные операторы

Pet-проект
- опубликовать в App Store

Ну что ж: погнали!
Please open Telegram to view this post
VIEW IN TELEGRAM
Получил первый отзыв от личного тестировщика моих приложений (жена).

Кстати, очень жесткий тестировщик )))

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

Сразу в его жестах видишь его ожидания от взаимодействия с интерфейсом.

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

Что выявил тест:
- нужен онбординг
- сложно было найти способ удалить случайно добавленный элемент
- нет возможности добавить элемент сразу с нужным временем, например если заносишь данные за день, а не в моменте, приходится ставить на текущее время, потом изменять время
Я вернулся…

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

Добавил склонение глаголов в карточки.

Но основная про Лема которую пришлось решать - обратная совместимость карточек.

Изменил структуру карточки и все колоды и карточки пропали (((
👍1
Как вы ведете учет личных финансов?

Изучаю тему для создания соответствующего приложения.
Stop overthinking.
Just do it.


… Сказал я себе и начал.

Приложение для ведения домашней бухгалтерии.

На немецком: Haushaltsbuch

SwiftUI

Пока сделано:
- главный экран-меню
- форма добавления расхода
- форма редактирования расхода
- журнал расходов
- настройка статей расходов (2 уровня)
Media is too big
VIEW IN TELEGRAM
Haushaltsbuch

Небольшой прогресс:
- доходы
- перемещения
- журнал операций
Haushaltsbuch
(Домашняя бухгалтерия)

Прогресс:
- добавил справочник валют
- работаю над добавлением Кошельков и Карт

Основная сложность изменение в БД