#АппЗа14 дней
14 дней. О программистов. 1 директор. Что из этого получится?
Читайте в нашем новом цикле постов.
Директор Центра разработки «Создаватель» Виталий Дудка поставил себе вызов — написать собственное приложение, не прибегая к помощи разработчиков.
Личный опыт, лайфхаки и инсайты — всё честно и без фильтров!
14 дней прошло....
Что же будет дальше?
Содержание
ToDo.md
#АппЗа14дней
## �� Анализ и структурирование
Я разделил задачи на три уровня приоритета:
### 🔥 Высокий приоритет (Критичные улучшения)
1. Улучшение детализации отчета - 5 задач по улучшению пользовательского интерфейса
2. Утренняя сводка в уведомлениях - 3 задачи по автоматизации уведомлений
### 🔧 Средний приоритет (Оптимизация)
3. Оптимизация запросов пользователей - batch-запросы с кэшированием
4. Селектор фильтрации - добавление новых настроек фильтрации
### �� Низкий приоритет (Дополнительные функции)
5. Настройки приложения - интерфейс настроек
6. Финальный рефакторинг - код-ревью и оптимизация
## 🎯 Ключевые особенности плана:
- Приоритизация: Критичные задачи пользовательского опыта в первую очередь
- Технические детали: Включены ссылки на API документацию
- Последовательность: Рекомендуемый план на 4 недели
- Критерии готовности: Четкие чек-листы для каждой задачи
День 15 из 14 - Идем по ToDo
#АппЗа14дней
Итак, сегодня (точнее уже вчера тк пост вчера я не написал):
— Добавил ToDo.md со списком улучшений для первой версии.
— Описал особенности реализации с помощью ИИ.
—Последовательно выполнил несколько улучшений по списку.
Статистика:
—Выполнено 12 из 16 пунктов ToDo.
—Протестировано 62 архива, из них 3 - undo c откатом изменений.
—В index.html 4187 строк спагетти-кода и console.log для отладки.
По функционалу мне осталось разобраться с попапом настроек (пока стили во фрейме не подгружаются) и сохранять выбранные настройки в ЮзерОпшинс. Также утром не сработал БэкграундВоркер. который должен был прислать мне 1 раз в день утреннюю сводку при входе на портал.
После буду оптимизировать скорость и причесывать код.
Из нового —вчера сознательно не написал ни строчки кода (кроме значений констант-настроек). Весь кодинг делает Cursor, он же пишет документацию проекта. Пруф 🌟
Рефакторинг в Cursor
#АппЗа14дней
Поделюсь вчерашним опытом рефакторинга. Возможно кому-то будет полезно, так как я потратил на это несколько часов и получилось только с третьего раза.
🩶 Как не сработало:
Мой небольшой проект содержал около 2тыс строк кода и два первых подхода к рефакторингу "в лоб" завершились сообщением о том, что контакст превышен и процесс остановлен. А так как к этому моменту ИИ уже успевал поменять значимую часть кода - приходилось дважды откатывать изменения потеряв около часа и кучу токенов на каждый подход.
💝 Как сработало:
1 шаг - Попросить ИИ написать план рефакторинга по шагам. Сначала я подсказывал ему пункты, но потом понял, что лучше дать свободу и подправить итоговый план.
2 шаг - Открывать новую сессию и по 1-2-3 шага последовательно выполнять работы по плану с промежуточным тестированием, чтобы убедиться, что код все еще рабочий.
Такой подход сработал и в итоге код был сокращен где-то на 500 строк, выглядел более логичным и читабельным, стал работать быстрее 🔥
LLM errors №3 — Вставляет 极 в код
#АппЗа14дней
С Cursor это неактуально стало, но на случай, если кому-то надо будет сгенерить код напрямую в DeepSeek столкнулся с такой особеннностью.
Довольно часто код не работал потому что в 2-3 местах скрипта в названиях переменных или функций встречался иероглиф, который я перевел как "окончание".
В итоге я даже не запускал код пока не пройдусь поиском по этому иероглифу.
Заметил, что чем старее чат (больше контекст), тем больше вероятность кривых окончаний в строках кода.
День 16 из 14 - основной функционал готов
#АппЗа14дней
Сегоня добил все по списку задач.
Также навел порядок в отладочных сообщениях и почистил интерфейс.
Завтра потестирую утреннее уведомление и можно будет отдавать на тест.
Из мелкого знаю баг с зависанием прогресса загрузки (в консоли % идут, а на экране нет), то с этим быстро не удалось справиться, так что пока отложил.
Еще размышляю не добавить ли сохранение кэша в ЮзерОпшинс, чтобы при ежедневном запуске аппа догружался только недостающий день; Но по опыту прошлых подходов знаю, что это может быть не просто, поэтому подумаю надо ли мне это.
Ну и еще возможно сделаю подход к рефакторингу, так как код уже запутанный и автодокументации много накопилось.
Удалил Настройки
#АппЗа14дней
Сначала добавил настройки, но потом удалил.
Настройки сохранялись в константы и затем в ЮзерОпшинс, плюс должны были влиять на селектор.
Почему удалил?
—Долго возился с интерфейсом попапа и не добился достаточно красивого результата.
—Сложная логика синхронризации селектора/константы/ЮзерОпшинс.
Подумал-подумал, эти настройки усложняли интерфейс (еще один уровень вложенности) и не сильно добавляли функционал.
Решил пока убрать совсем, возможно в будущих кейсах будет больше аргументов за Настройки и сделаю еще подход.
Делать и потом удалять - больно, но правильно. Особенно когда не получается хорошо с первого раза 😄
Чем проще, тем надежнее.
Хорошего всем дня 👍
Документация на автомате
#АппЗа14дней
Cursor —это для меня главное открытие челленджа.
Он полностью изменил процесс создания аппа. Если до этого ИИ был "системой поиска кода", то теперь это скорее похоже на программиста, который сидит рядом и моя задача —объяснить ему какой результат я хочу получить.
Два главных отличия от неспециализированных ИИ для себя выделил:
1 —Cursor не "подсказывает код", а читает код проекта и переписывает его. Плюс продуманный интерфейс без чтения какой-либо документации позволил сходу перестроить процесс.
2 —Cursor сам документирует всё, что происходит. Сначала я писал об этом в запросах, но потом забыл написать и заметил, что он сам все записывает.
Просто для примера:
—несколько дней назад было два файла install.html и index.html
—к ним добавилось 35 тестов, 33 доки по фишкам с примерами кода и логикой, ToDo и CHANGELOG.
Очень удобно.
Буду делать рефакторинг - зарефакторю и документацию, тк иногда кажется, что ее даже слишком много генерится 😅
Удалил Настройки
#АппЗа14дней
Сначала добавил настройки, но потом удалил.
Настройки сохранялись в константы и затем в ЮзерОпшинс, плюс должны были влиять на селектор.
Почему удалил?
—Долго возился с интерфейсом попапа и не добился достаточно красивого результата.
—Сложная логика синхронризации селектора/константы/ЮзерОпшинс.
Подумал-подумал, эти настройки усложняли интерфейс (еще один уровень вложенности) и не сильно добавляли функционал.
Решил пока убрать совсем, возможно в будущих кейсах будет больше аргументов за Настройки и сделаю еще подход.
Делать и потом удалять - больно, но правильно. Особенно когда не получается хорошо с первого раза 😄
Чем проще, тем надежнее.
Хорошего всем дня 👍
Интересно, что дальше?
Читайте продолжение в телеграм-канале