Илья Зыкин. Pro Жизнь
137 subscribers
1.1K photos
45 videos
4 files
95 links
Download Telegram
Запуск Vite при запуске Ruby сервера

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

Традиционно запуск руби сервера делает rails s или rails server или bin/rails server (редко напрямую через puma или unicorn).

При запуске сервера, очевидно, запускается само приложение. Значит, где-то в начальной стадии запуска приложения можно принять решение о запуске vite.

Есть много точек, чтобы встроить туда наши простые функции. Например, это может быть файл config/boot.rb

Нам понадобится очень мало простых функций.

- Запущен ли Vite?
- Запустить Vite!
- Остановить Vite!

А еще простые условия.

Это окружение разработки?
Это команда запуска web сервера? (А то вдруг мы запускаем rake задачу. Зачем нам тогда vite? 🙂)

Запущен ли Vite мы узнаем по PID, который мы сохраняем в файле, при запуске Vite. Смотри предыдущий пост.

Ну в общем-то тут все. Важные детали рассказал.

Если есть вопросы — задавайте.
👍4
Домой. В Стамбул!

Нормально съездил. Решил пару дел. Получил памятную грамоту-благодарность от партнеров. Посетил интересное мероприятие.

Еще и поработать успел над несколькими интересными задачами.

Возвращаюсь в нормальный рабочий режим.
👍3🔥2
AI наносит ответный удар

Пауза моя затянулась. Прошло 2 недели с момента, как я последний раз работал над pet проектом с использованием AI.

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

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

Поэтому почти вся структура кода стерлась из сознания.

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

Слышали про шутки, когда git blame показывает, что автор кода ты сам? В любом расследовании главное не выйти на самого себя!

При интенсивной работе с AI образы и структуры вообще пролетают мимо сознания. И стираются еще быстрее, чем раньше.

К счастью мы всё тотально покрываем тестами!

AI разработка и тотальное тестирование — MUST HAVE!

Даже в Твиттере уже начали признавать. MVP за 15 минут с помощью AI — это очередной маркетинговый буллщит.

Никому нельзя верить! Мне — можно! 😂
👍6
Есть и хорошие новости

В соседнем чате по руби наткнулся на хороший комментарий.

А я тут как раз пару дней рассказывал про интеграцию с Vite.

Вот что я думаю.

1) DHH классный парень, но супер критично относитесь ко всему, что касается рельсового фронта.

Почему?

А) DHH толкает свою повесточку. У него есть ресурс и он никак не может избавиться от идеи Ruby full stack фреймворка. Он может сколько угодно жить в своих концепциях, но мир давно изменился.

Б) любое рельсовое фронт решение обречено на провал. Мир рельсового фронтенда это 0.01% от всей фронтовой экосистемы. Силы не равны.

В) Я много лет эксплуатировал специализацию рельсового фронта. Я делал это крайне успешно. Вряд ли вы найдете кого-то, кто преуспел в этом лучше меня. Их по пальцам одной руки. Но больше даже я не могу идти по этой дороге. Это тупиковая ветвь. Я больше не верю, что у этого есть перспективы. И очень не советую нишеваться в этом направлении.
👍5
Г) став отличным Turbo/Hotwire фронтом вы очень скоро поймете, что вы классный специалист востребованный примерно на 3 стартап проектах, в которых уже есть свои рельсовые фронты.

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

Последним инструментом был Webpacker. Бизнес наелся. Устал от этих ненужных Ruby прослоек и уже с накопленным опытом и техническим долгом старается больше не ввязываться в это сомнительное руби удовольствие.

Сейчас на появление ImportMaps, propshaft многие смотрят с легкой сомнительной улыбкой. Типа, да? А дальше что? Через 2 года опять мигрировать?

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

Автор поста выше во многом прав, кроме того, что гем RubyVite / Rails Vite это тоже ненужная прослойка. Просто сделать без нее нужно потратить 2 дня на ресерч и реализацию. У автора пока нет на это времени и смелости. А жаль.

Надо будет статью оформить. Но чуть позже. Пока нет моральных сил.
👍6
Как назвать эту новую профессию?

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

Помните, как 2-3 недели назад я был шокирован тем, что мне реально удалось построить схему использования AI для написания более-менее серьезного проекта.

Есть ли прирост по скорости? Да есть!
Есть ли дешевое получение шаблонных решений? Да есть!

Избавляет ли это он мыслительного процесса? Нет.

Делает ли AI за тебя работу? Смотря какую. Шаблонную да. Творчески-интеллектуальную — нет.

Сейчас я определяю работу с AI, как работу по дизайну решения и кода. Что это такое? Дизайнер? Архитектор? Оператор? Solution engineer? Методист-developer?

Пока не могу определить.

Мои коллеги изучают построение систем с помощью набора агентов.

Я пока в эту историю не лезу. Я хочу разобраться с AI на уровне создания кодовых проектов. Как использовать для этой задачи агентские сети я пока не вижу. Но я наблюдаю. Буду делиться с вами по ходу дела.
🔥3👍2
Использование AI в практике

1. Cursor/Claude (Composer) мне нравится больше, чем VSCode/CopilotEditor.

2. AI хорошо работает на проектах с готовой кодовой базой, где стилистика и подходы уже сформированы.

3. На этапе стартапа и начала проекта AI помогает как шаблонизатор, но не вывозит дизайн системы и кода.

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

5. Задачи вида: "Сделай мне MVP магазина" — не реализуемы с помощью AI.

Ютуб блогеров, которые рассказывают о создании с помощью AI проектов за 30 минут — можно смело пропускать. Это хайпо-обман для тех, кто ничего сам не делает руками и головой.

6. Появившихся клиентов с запросом "мне надо разработчиков со знанием AI — так быстрее" лучше не брать в работу. Очень скоро они разочаруются, а виноватым будете вы.

7. Разработка продукта с AI стала действительно проще, но чуда не случилось. Нужно время и мозги.
👍4
Хотелось бы хотя бы исполнительности

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

Очень простое правило ему даю — видишь 2 файла с тестами — группируй тесты в отдельный каталог. Просто чтобы не мешали читать структуру проекта.

Да, он пишет тесты. Да, они вполне сносные. Их много. Их хватает чтобы избежать регрессии.

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

Ну и как тут на него полагаться? Как закрыть глаза, расслабиться и позволить машине делать работу без проверки результатов?

Никак. Не получается.

Повторю правила, которые я выше сформулировал

- Атомарность каждого действия
- Тотальное тестирование
- Постоянный и тщательный контроль

Иначе не работает.

Хорошо. У меня иначе не получается. Может у вас получается? Поделитесь?
👍3
MiniApp Sturtup (ч. 1)

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

- Telegram Mini App
- React / Vite / NodeJS / Docker / DevContainer / React Router / Тесты / AI разработка.

Зачем?
- Надо отрабатывать практику использования AI
- Надо выяснять границы применимости AI и его слабые и сильные стороны
- Хочу допилить свои JS проекты (Роутер для Express.JS / Мигратор / Фреймворк для JS приложений.

День первый

- Зафиксировал желаемую структуру проекта
- Инициализировал Фронтенд
- Оформил Docker и DevContainer

Проблемы:
1️⃣ Cursor не захотел запускать DevContainer 🤷 Не хочу погружаться. Прыгаю между редакторами.
2️⃣ Yarn настроил на использование node_modules. Так проще дать редактору информацию о типах. Не было времени погружаться.

День второй

- Поставил свой Holy Grail Layout. AI перевел его в React код
Проблемы: 1️⃣ AI не хочет следовать всем правилам, которые я ему подсовываю в контекст. Постоянно что-то забывает. Постоянно контролирую. Постоянно требую доделать.
👍3
MiniApp Sturtup (ч. 2)

День третий

Навигационный блок. Тесты, тесты, тесты.

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

Требуйте от ваших программистов 100% покрытия тестами.

Они все равно и раньше их не писали. AI точно не напишет хуже. А разрабатывать через AI без тестов просто невозможно.

Выводы после 3-х дней

1️⃣ Надо почитать подробнее про правила для AI — не вижу того, что AI строго им следует. Он просто половину пропускает.

2️⃣ Запуск проекта, где нет готовой кодовой базы — это боль. AI не знает что ты хочешь. Часть ответов рандомные, часть ответов ужасного качества, часть ответов по старым версиям библиотек.

На данный момент все что я читал в блогах и твиттерах о практике использования AI кажется на 95% чушью.

Чем дальше в лес, тем тупее кажется AI.

Да, очень помогает. Но по сути — это просто новый гугл с мощной шаблонизацией.

Я отменяю отмену программистов.
👍6
Password Manager

Чтобы пристреляться к реализации проектов с помощью AI я решил сделать простой self-hosted менеджер паролей.

Тут несколько интересов.

1) Сделать проект исключительно на NodeJS стеке.

2) Обкатать свой роутер-фреймворк для бекенда.

3) Обкатать процесс работы с AI и собрать коллекцию рецептов-правил для AI.

4) Обкатать работу с Telegram Mini App.

5) Собрать полный комплект инструментов для реализации проектов средней руки.

Есть еще идеи и задачи, но пока даже думать об этом не хочется. Времени очень мало. Когда справлюсь даже с минимальным планом — не понятно.

Буду замерять время, фиксировать прогресс. Посмотрим что получится.
👍3🔥1
MiniApp Sturtup (ч. 3)

День третий

В проект главное заложить основные инструменты и архитектуру.

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

Самое важное не упустить установку всех возможных инструментов тестирования и проверок.

В нашем случае это ESLint, TypeScript, Prettier, Jest (Unit tests), StoryBook.

Тестирование различного вида это то, что позволит заложить в проект тот фундамент, на котором проект будет развиваться.

Упущение этого момента в начале ведет к катастрофическому накоплению тех. долга.

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

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

Еще несколько дней потребуется уделить фронту. Нужно сделать все UI заготовки, чтобы потом не отвлекаться при переключении на бэк.

Интеграции будет и так много, отработаю сперва одну часть.

Online шоу в самом разгаре.
👍2
AI rules, Storybook

День четвертый.

Был час позаниматься моим мини проектом.

1️⃣ Как только был установлен Storybook для UI — мгновенно всплыло несколько моментов по реализации компонентов. Сделал фиксы. Переработал подходы.

И это на самом первом, даже нулевом этапе.

Затягивать с установкой и использованием линтеров, чекеров, форматтеров, тестов и прочих сторибуков нельзя. Это важная часть технологического процесса.

Чуть запоздал — и все. Будешь плавать в мало поддерживаемом коде. Будет больно и тоскливо. А нам этого не надо.

2️⃣ Подразобрался с правилами для AI.

Тема совсем новая. В среднем все актуальные публикации месячной давности.

По новому формату правил — буквально неделя. О работоспособной практике мало кто рассказывает. Так что я вовремя заскакиваю в этот поезд.

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

Будет весело, если вы там, по ту сторону экрана уже построили свой IT отдел на основе GPT ботов, а я тут вкатываюсь в тему 🤣 А как у вас?
👍3
Mini App

День 5-ый


Времени катастрофические не хватает, но некоторые результаты есть. Были запущены

✔️ Vite
✔️ React / TypeScript
✔️React Router
✔️ SCSS / BEM
✔️ Docker/Compose/DevContainer
✔️ Jest / React Testing Lib
✔️ ESlint
✔️ Prettier
✔️ Storybook
✔️ Holy Grail Layout (React)
✔️ Простая базовая верстка
✔️ I18n
✔️ Базовые AI rules

Главные блокеры:

🔻i18next в тестах
🔻ENV переменные в тестах

Чтобы тесты нормально работали нужно вальсировать с разнородными опциями TypeScript в согласии с Vite / RTL для разных окружений. Отваливается то одно, то другое.

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

AI тут не помогает. В зоопарке и непредсказуемости поведения и взаимодействия разнородных решений помогает или удача, или trade offs и workarounds.

Будет время — поразбираюсь.
👍2