Илья Зыкин. Pro Жизнь
137 subscribers
1.1K photos
45 videos
4 files
95 links
Download Telegram
Суббота и Миграции

День был насыщенным. Ходили с ребенком на тренировку, провели много времени в игровом центре. Стреляли с двух рук по инопланетным захватчикам, играли в разные игры, собрали почти 1000 бонусов и получили в награду игрушку, смотрели Бременских Музыкантов, поели в ресторане и день пролетел.

Семья отдыхает, а у папы pet проект. Мигратор сам себя не допишет.

Осталось расставить функции по местам и должно все заработать.

Забавно, но для бекенда сейчас я почти не прошу AI писать тесты.

Все функции которые я пишу последние дни — сервисные. Они не имеют отношения к самому проекту и я могу полагаться просто на их фактическое исполнение.

Кроме того, AI очень много мокает и по факту ценность таких тестов близка к нулю.

Чтобы нормально протестировать — надо делать эмуляцию реального процесса без моков. Но пока не до этого.

Еще AI писал очень много хлама. Проверок и Try/Catch/Finally — которые ценности не имели — я чистил, чистил, чистил.

Немного полировки и мигратор должен быть готов.
🔥2👍1
Мигратор. Зачем и нафига?

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

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

У читателей, вероятно, может возникнуть вполне резонный вопрос — Зачем он все это делает?

1️⃣ Я делаю pet проект. В какой-то момент мне надо будет делать промо проекта — заметки помогут сформировать контент для статей.

2️⃣ Я изучаю возможности AI. Мне нужно видеть мой прогресс и развитие мыслей.

3️⃣ Я делаю мини фреймворк на JavaScript, который я смогу в нужный момент переписать на любом языке.

4️⃣ Все мои pet проекты чуть позже всегда приносят мне заработок. Полученный опыт в итоге хорошо продается на консультациях.

5️⃣ Мне просто по кайфу что-то создавать. Я делаю то, что люблю.

Мигратор готов.
👍3
Мигратор. Зачем и нафига? (2)

Но кроме личных личных и развлекательных мотивов есть еще и мотивы исключительно утилитарные.

1) Я выбрал SQlite как базу для проекта.

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

3) У меня должна быть и база данных на уровне всего проекта — например хранить список зарегистрированных пользователей.

Итого

Много маленьких баз данных с разными типами таблиц в зависимости от назначения.

Мигратор должен

1) Запускаться с указанием разных каталогов из которых будут браться миграции.

2) Уметь контролировать выполенные миграции, уметь откатывать их, уметь строить схему.

3) Уметь запускаться и как скрипт из консоли и как функция при работе самого проекта. — я предполагаю запускать проверку на структуру БД при запуске каждой сессии.

Из доступных вариантов на JavaScript я нашел только sequelize/umzug, но он настолько простой, что было и надежнее и веселее написать свой.
👍1
Мигратор. Рефлексия. (1)

Я успешно "написал" мигратор. Он замечательно справляется со своей функцией как консольная утилита (набор утилит).

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

Я не знаю как правильно называются такие системы. Я раньше не экспериментировал с этим подходом.

Я отдал на откуп AI реализацию. Я мало следил за тем что он делает. Главное было — получить результат.

Я постоянно говорю, что тестирование это то, что отличает начинающих специалистов от опытных.

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

Сразу как только я начал использовать AI сгенерированные функции в тестах — начала проявляться все слабость AI.

Неконсистентность подходов, интерфейсов похожих функций, отсутствие общего виденья системы.
👍1
Мигратор. Рефлексия. (2)

Стоило только на короткий период отпустить внимание и AI начал делать дичь на объеме 5 файлов и 10 функций.

В твиттере говорят, что через высокоуровневое планирование проекта люди уже написали свой клон Witcher 3.

Глава Anthropic говорит, что завтра программисты будут не нужны.

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

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

Пока нельзя.

В скольких инструкциях и предложениях можно выразить мои ожидания от проекта — не понятно. Я никогда не формулировал это четко. Все на уровне интуиции и эмоций.

Будет страшно осознать, что все навыки и знания формулируются в 20-30 установках, которые AI сможет воспроизводить.

Однако, это не отменяет того, что перманентный контроль за AI нужен как плотина, удерживающая массу random-кода.
👍1
❤️ Вот теперь тебя люблю я.
🎉 Вот теперь тебя хвалю я.
🔥3
20 лет Ruby on Rails за 3 недели

Если взять в совокупности, ну, недели 3 я развлекался над бекендом.

Это все, конечно, размазано на несколько месяцев в перерывах между созвонами, консультациями, рутинным кодом и личными делами.

За это время я реализовал

✅ Коннектор к БД с транзакциями
✅ Миграции + database cleaner
✅ Довольно мощный роутер
✅ Подготовил окружение для тестов
✅ Strong Params в рельсовом стиле на Zod
✅ Архитектуру на основе Business Actions.
✅ Довольно хорошая типизация на TypeScript

У меня нет ORM. На JavaScript они все откровенное 💩 Славься Ruby on Rails! 👑

В этот раз я отказался от ORM. Вышел за границы личных ментальных искажений и принял факт, что лучше SQL ничего не придумано. (Спасибо проекту из Пенсильванского Университета, для которого я писал много SQL и познал дзен)

Я чертовски доволен результатом.

Я в одно лицо переработал под себя и кучу идей Rails. Взял все лучшее из обоих экосистем. Заставил работать и планирую развивать успех.

"Боже как я хорош. Как мощны мои лапищи" 🤣
🔥5👍1
Строчка, взорвавшая мозг 🤯

Вчера я вычистил первый Business Action до состояния, когда я стал им доволен.

Все на своих местах. Все так, как я хочу видеть.

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

Если пришли не валидные параметры запроса — возврат ошибки.

Если валидные — получаем переменные.

Проверяем пользователя на существование в Базе данных.

Возвращает результат.

Но самый блеск в этом коде — это валидатор, который жестко требует строго соответствия параметров, которые приходят от пользователя.

Привет Rails Strong Parameters!

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

Благодаря тому, что у меня полный JavaScript/TypeScript стек — я могу практически все писать в едином стиле и на фронте и на бэке и держать жесткий контракт в разных частях системы и делать DRY решения по всему проекту.

Друзья рельсовики смотрят на меня с осуждением. 🙈
🔥2