вторник, 29 июля 2025 г.

Первое тестирование

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

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

Пошел искать.

четверг, 24 июля 2025 г.

Иногда чтобы бежать быстрее, нужно сделать перерыв

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

Сегодня выполнил 150% от запланированного. Добавил проверки бизнес правил для всех "ручек". Поверил, чтобы никакие чувствительные данные не попали на frontend. Добавил валидация входящих данных для всех ручек. Работаем дальше .... 

вторник, 22 июля 2025 г.

Реализация "ручек"

Сегодня я занимался реализацией "ручек" api:
  • start - старт голосования
  • abort - прекращения голосования
  • reset - начало голосования снова
  • vote - участник проголосовал
Осталось отправить уведомления всем участникам, но лучше это сделать в процессе тестирования. Вот этим и займусь завтра.

понедельник, 21 июля 2025 г.

Продумал все "ручки"

Сегодня продумал все "ручки" API. Сделал миграции на новые таблицы. Сделал пару "ручек" API.

Сейчас все общение между frontend и backend происходит по websocket. Хочу переделать, запросы чтобы шли через  REST API, а уведомления получать через websocket. 

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

Посмотрим

воскресенье, 20 июля 2025 г.

Отчет за воскресенье

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

websocket

Сегодня много времени потратил на настройку связки express + websocket. Это еще раз подтверждает тезис, что если хочешь бежать быстро - выбирай инструменты которые отлично знаешь. У меня получилось собрать echo websocket сервер примерно за час. Выглядит он примерно так. 
Нажимаешь на эту зеленую кнопку и происходит магия, в консоли я вижу сообщение от сервера

Еще сегодня возился с дизайном. Это для меня больная тема. Выбрал пока flowbite vue. Это позволит мне не тратить время на то, как должна выглядеть кнопка. 

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

Посмотрим....

пятница, 18 июля 2025 г.

Трекер времени и первая верстка


Решил вести учет времени, сколько я трачу времени на проект. Поставил Clockify, благо он есть для macos.

Сверстал блок с карточками. Получилось вроде неплохо.

Вообще у меня очень плохо с дизайном. Хорошо что есть место откуда его можно украсть)

четверг, 17 июля 2025 г.

Astrojs

Утром почитал документацию по AstroJS и выяснил, что он может формировать страницы под запрос, для этого нужно настраивать adapter. В моем случае это будет Node. Но разбираться с этим я не хочу. Возможно, вернусь к AstroJS, когда потребуется вести блог.

Сегодня удалось сделать немного:

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

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

среда, 16 июля 2025 г.

День третий, первые сложности

Несмотря на список ограничений, мне приходится изучать документацию на некоторые технологии. Например, я провозился сегодня с системой управления миграциями. До этого я использовал db-migrate, но ее приходилось патчить, потому что она не умела находить миграции в файлах *.cjs. Ничего удивительного, пакет очень старый и уже не поддерживается. На этот раз я выбрал node-pg-migrate. Но оказалось, что нужна свежая версия Node.js на сервере. Пришлось обновить Node.js в локальном окружении, обновить все пакеты и обновить Node.js на сервере.

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

Еще я столкнулся с ограничениями Astro.js. Ему важно, чтобы все URL были определены в момент сборки. Для меня это ограничение критично. Остается вариант полного перехода на Vue. Пока нет блога, это не критично. Так и сделаю.

Что удалось сделать сегодня:
  • настроил PostgreSQL на сервере
  • настроил систему миграций для локальной 
  • применение новых миграций стало частью pipeline обновления кода на сервере
  • сделал главную страницу и оставил на ней единственную кнопку "Быстрая игра"
  • отказываюсь от Astro.js и переделываю все на Vue

вторник, 15 июля 2025 г.

Настройка dev окружения завершена

После девяти итераций настройка окружения для разработки завершена. Сейчас домен planitpoker.ru отображает такую картину.



Для кого-то это может показаться мусором, но я сделал интеграцию Astro, встроил Vue-компонент на страницу, проверил связь с Express, и, главное, это всё выливается на сервер после моего коммита в ветку master.

Дальше начнётся реальная работа над проектом.

Удачи мне в достижении поставленной цели!

Что же за проект, я делаю?

Команда разработчиков собирается, чтобы запланировать задачи на следующий спринт. Менеджеры "подсветили" задачи, которые они хотели бы увидеть в конце спринта, переместив их наверх бэклога. Перед командой встает вопрос: сколько задач они смогут выполнить за спринт? Для этого нужно:
1. Оценить каждую задачу по затратам времени на решение.
2. Знать емкость команды, то есть, сколько команда может сделать за спринт в условных единицах.

Вот тут начинающие менеджеры впадают в экстаз, потому что в работе команды появляются какие-то метрики. Но на практике это не так. Мы, разработчики, работаем в условиях неопределенности. Если ты не писал этот кусок кода, в 90% случаев ты не знаешь, сколько потребуется времени на его правки.

Итак, перед командой ставится задача оценить время выполнения задач из бэклога в условных единицах. Для этого нужно собрать команду. Далее тимлид презентует каждую задачу и запускает голосование. Каждый член команды оценивает время выполнения задачи в условных единицах. Это может быть даже чашка кофе, но это редкость; обычно оценивают в часах.

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

Если расхождений в оценках нет, задаче ставят оценку, равную средней оценке всех членов команды.

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

Мой проект — это сервис для оценки задач для agile-команд. Он помогает с момента начала голосования и до момента выставления финальной оценки задачам. Надеюсь, я понятно объяснил?

Сегодня занимался настройкой рабочего окружения. Я остановился на следующих технологиях: Astro, Vue, Express, JavaScript, Tailwind CSS, PostgreSQL, Nginx и Ansible. Docker будет использоваться для локальной разработки, а на боевом сервере будет использоваться systemd.


понедельник, 14 июля 2025 г.

Как появилась идея проекта?

В прошлом году я работал бэкенд-разработчиком в одной крупной компании, где команда старалась следовать всем SCRUM-ритуалам. Одним из таких ритуалов была оценка сложности задач всеми членами команды. Для этого мы использовали один онлайн-сервис, имя которого очень похоже на название моего проекта. Сервис имел два критических недостатка:
  1. Его нельзя было оплатить картой Мир.
  2. Он был сделан не мной.
Я уже не работаю в "крупной компании" больше пяти месяцев, но мысль реализовать этот проект не оставляла меня всё это время. Чтобы проект "случился", я решил установить ограничения. Они помогут мне достичь цели — сделать инструмент планирования спринтов для agile-команд.

Вот список моих ограничений:
  • Использовать технологии, которые я хорошо знаю.
  • Отбросить все второстепенные функции (регистрация, авторизация, личный кабинет, восстановление пароля).
  • Реализовать единственный поток работы с сервисом.
  • Писать обучающие статьи минимум один раз в неделю.
  • Максимально упрощать реализацию в угоду скорости разработки.
  • Частые релизы.
  • Ежедневно писать о прогрессе в этом дневнике.
И главное ограничение: проект должен быть готов к 1 сентября 2025 года. Дальше у меня запланирован отпуск.

Сегодня для проекта я сделал:
  • Настроил дневник на платформе blogger.com.
  • Написал первое сообщение в дневнике.
  • Создал репозиторий на github.com.
  • Начал настраивать рабочее окружение.
Это первое сообщение в дневнике проекта planitpoker.ru.

Ура!!! Я доталкал

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