Как стать автором
Поиск
Написать публикацию
Обновить

Я сделал демонстрацию Ethereum Proof of Stake при помощи искусственного интеллекта

Уровень сложностиПростой
Время на прочтение15 мин
Количество просмотров406
Автор оригинала: Tim

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

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

Часть I. Почему я решил это сделать

Всем привет! Меня зовут Тим и я недавно завершил проект под названием ether-pos, цель которого — объяснить, как на самом деле работает система Proof of Stake (PoS, Доказательство доли владения) Ethereum. Если вы еще не видели ее, посмотрите здесь: ether-pos.

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

Небольшое введение

Два месяца назад я решил глубже погрузиться в технические вопросы криптовалют. Ранее я немного занимался криптовалютой и изучил основы Solidity и FunC TON, но я часто чувствовал пробелы в своем понимании, особенно при чтении технических дискуссий или расследований о взломах в твиттере. Я хотел преодолеть этот пробел и понять технологию блокчейн за пределами базового уровня.

Итак, я составил план обучения: создал доску Kanban в Notion, поставил ежедневные цели и обсудил свой подход с ChatGPT.

Одной из моих первых задач было прочитать Ethereum’s Mauve Paper — документ, в котором изложена дорожная карта перехода Ethereum от Proof of Work к Proof of Stake.

Читаем Mauve Paper

Mauve Paper — это короткий, но емкий документ — шесть страниц, которые описывают дизайн Ethereum 2.0 и его переход к PoS. Он начинается с простого прямолинейного введения, которое я нашел доступным для понимания.

Введение в Mauve Paper
Введение в Mauve Paper

Но как только я дошел до первого технического раздела «Минимальное доказательство доли владения», я уперся в стену. Я читал эту часть несколько раз в течение примерно 40 минут и все равно понял только половину.

Mauve Paper 1 страницу спустя…
Mauve Paper 1 страницу спустя…

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

Я выбрал последнее.

Я скопировал текст в ChatGPT и попросил его разбить каждый раздел. Это было не так просто — GPT не понял некоторые концепции и мне пришлось задать более 20 дополнительных вопросов. Но в конце концов, примерно через шесть часов, я закончил работу.

Удивительный раздел? Не было никаких ошеломляющих формул или сложных алгоритмов — только элегантное сочетание простых принципов, которые сформировали сложную архитектуру Ethereum 2.0.

Пробел в знаниях и почему он меня раздражает

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

Если вы введете в поисковике YouTube запрос «Что такое Proof of Stake?», вы найдете бесчисленное множество видеороликов продолжительностью 5–15 минут, которые дают достойный обзор.

Некоторые из них хорошо сделаны и интересны, но они никогда не дают полного ответа на вопрос «как работает PoS "под капотом"».

С другой стороны, чтение «Mauve Paper» или любого серьезного технического документа похоже на чтение чьей-то диссертации — требуется много контекста чтобы хотя бы понять терминологию.

Этот разрыв меня расстроил. Я хотел и то, и другое:

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

  • Ценный пользовательский опыт  —  вроде анимированных видео на YouTube. Я готов посмотреть 10 или 20 из них и потратить много времени, но я не хочу читать статью из научного журнала в которой я не могу понять и половины слов.

Сочетание этих качеств, на мой взгляд, встречается довольно редко и часто находится в платным доступе. Хуже того, поскольку вы на самом деле не знаете, что вы получите после оплаты, вы можете потратить деньги и обнаружить что там нет ничего кроме того, что вы уже узнали из бесплатных видео на YouTube. Я это проверил.

Мой способ решения: ether-pos

Я хотел найти лучший способ понять сложные концепции не продираясь сквозь научные статьи или не тратя часы на их анализ с помощью ИИ. И я решил создать свой проект ether-pos.

План состоял в том, чтобы взять «Mauve Paper» — которая сложна, но, в конечном итоге, основана на простых концепциях — и представить ее следующим образом:

  • Можно понять меньше чем за час.

  • Можно участвовать самому и иметь наглядные примеры использования.

  • Должна быть достаточно глубокой чтобы чувствовать себя уверенно в этом вопросе.

Я прочитал весь свой чат с GPT, выделил ключевые моменты в которых я достиг понимания и перевел их в интерактивное веб-приложение. Я использовал React (который я едва знал) и не писал никакого кода сам, просто собрал его с помощью инструментов, которые были у меня под рукой.

Конечный результат — пошаговое руководство по сети Ethereum от становления валидатором до ставки на завершение (betting on finality). Он отражает разделы Mauve Paper, но преобразует их в удобоваримые интерактивные шаги.

В заключение первой части

Я потратил на этот проект более 50 часов — гораздо больше чем я ожидал. Теперь я понимаю почему подобные ресурсы обычно не находятся в свободном доступе в сети: требуется много времени, чтобы превратить такой контент во что-то доступное.

Я надеюсь оптимизировать этот проект в будущем, но даже в таком виде оно того стоило.

Независимо от того, интересовались ли вы Ethereum PoS раньше или нет, я надеюсь, что ether-pos поможет вам узнать что-то новое. Изначально я создал этот проект только для себя, но после его завершения и развертывания я понял, что хочу чтобы он был доступен и другим людям, которые также хотят глубже понять как работает криптовалюта вообще и PoS в частности.

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

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

Спасибо, что дочитали.

Часть II. Как я это сделал

Оригинал тут: https://timsh.org/how-i-created-an-ethereum-proof-of-stake-demo-entirely-with-ai/

макет раздела в ether-pos: боков
макет раздела в ether-pos: боков

Введение

Итак, я решил создать этот проект, но как это сделать?

Коротко о себе:

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

С начала 2023 года я пишу код с помощью ChatGPT — и очень доволен. Он хорошо подходит для небольших проектов (в идеале — отдельных файлов) и простых задач — например, для написания SQL-запроса или скрипта на Python.

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

А затем, в июле 2024 года, я открыл для себя Cursor — версию VS Code на базе искусственного интеллекта, которая сохраняет вашу кодовую базу в контексте и автоматически применяет изменения к любому файлу.

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

Причины использовать две LLM одновременно

Как я уже писал в первой части, я начал работать над этим проектом после очень долгой беседы с ChatGPT в попытке понять все технологии, алгоритмы и идеи, лежащие в основе каждого раздела «Mauve Paper».

Закончив работу, я составил список всех важных иллюстраций, примеров и шагов, которые помогли мне понять каждую конкретную часть Proof of Stake в Ethereum.

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

Именно тогда я сформулировал свою «проблему» в сравнении с моими предыдущими проектами, требующую нового подхода к работе с использованием ИИ.

Проблема:

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

  2. В то же время у меня еще не было этих инструкций и я не знал как их писать. Все, что было у меня в голове:
    - то, что я смог понять из Mauve Paper
    - упомянутый список примеров и ключевых моментов
    - высокоуровневое видение того как может выглядеть UX

Решение, которое я придумал и которое использовал до развертывания готового проекта, представляло собой схему с двумя LLM помогающими друг другу.

ChatGPT в роли «менеджера проекта»

Я использовал ChatGPT 4o в качестве «менеджера проекта» который помогал мне разрабатывать пользовательский интерфейс и писать технические требования для каждой части проекта. Я выбрал ChatGPT просто потому, что мне нравится интерфейс его чата  — когда вы общаетесь с менеджером проекта вам не нужно писать или внедрять код.

Примечание: я предпочитаю хранить все обсуждения одного проекта в одном чате. Таким образом вы никогда не потеряете то о чем спрашивали, и ChatGPT сможет запомнить все что обсуждалось.

Ключевые аспекты «менеджера проекта» для LLM + практические советы

  • Он должен понимать (или делать вид что понимает) тему над которой вы работаете — в нашем случае Mauve Paper. Ваше собственное понимание — очень важное предварительное условие. Это было первое что я отправил ему после введения — весь текст статьи. Позже, работая над проектом, я пересылал его в тот же чат более десяти раз, когда чувствовал что он теряет контекст в куче новых сообщений. Последнее чего вы хотите — это чтобы LLM начал придумывать следующий раздел или формулу из источника посреди проекта. Если вы не поймаете его в нужный момент у вас получится проект, основанный на ерунде.

первое сообщение в главном чате GPT
первое сообщение в главном чате GPT
  • Он должен понимать все, что понимаете вы и быть сосредоточенным на «деловой» стороне вещей — ваших целях, вашем определении выполненного и т. д. В этом контексте полезно время от времени просить его подвести итог всего проекта со всеми разделами и шагами (у меня их получилось около 20) и поправлять его если он начинает забывать общую картину.

  • Он должен вместе с вами выбрать весь стек технологий, который будет использоваться в проекте и определить начальную структуру проекта. Обратите внимание, что выбранный стек должен хорошо понимать как GPT, так и Cursor — по этой причине мы решили остановиться на React с MUI UI Kit. Но, что касается структуры проекта, я начал его с однофайлового «MVP», а позже как бы позволил Cursor выбирать любую понравившуюся ему опцию — часть разделов была написана в отдельных файлах, в то время как другие состояли из отдельных файлов для каждого шага (компонента). Это была одна из вещей на которой я недостаточно сосредоточился в начальне работы, а потом сильно об этом пожалел (это стоило мне более 10 часов педантичного рефакторинга).

выбор стека с GPT (уровень нуба)
выбор стека с GPT (уровень нуба)
  • Должно быть известно о других сторонах, работающих над проектом, и результатах, которые они предоставляют — в этом конкретном примере вам нужно рассказать ему о Cursor, его роли (кодера) и роли GPT. Кроме того, полезно напомнить GPT, что вы не хотите, чтобы он писал код для Cursor — вместо этого ему нужно сосредоточиться на технических требованиях и позволить Cursor выполнять свою работу.

первоначальное описание роли для GPT
первоначальное описание роли для GPT

После того как Cursor выполнит задачу (это относится к каждой задаче) вы должны отправлять GPT результат (в моем случае изменения в пользовательском интерфейсе) с вопросами типа: «Как вам нравится работа Cursor? Предложите какие-нибудь улучшения в новой инструкции». Это способ сообщить ChatGPT о ходе выполнения вашего проекта с точки зрения менеджера проекта — он не знает и не заботится о коде, он видит только то, что видите вы и конечные пользователи.

пример демонстрации GPT текущего состояния раздела
пример демонстрации GPT текущего состояния раздела

Очень важная вещь, которую я усвоил через несколько часов после начала разработки: ChatGPT любит возвращать вам вашу неопределенность. Например, вы можете попросить его: «Попроси Cursor использовать какой-нибудь модуль js для создания столбчатой ​​диаграммы с данными». Обычно GPT помещает эту вашу неопределенность (какой модуль использовать) в инструкцию, как в примере ниже. Поэтому вам всегда нужно напоминать ему, что его работа — исследовать библиотеки, которые можно использовать, и, что самое важное, выбрать один вариант для включения в инструкцию для Cursor.

Моя первоначальная «инструкция» для GPT
Моя первоначальная «инструкция» для GPT
Первая версия ответной задачи для Cursor от GPT — обратите внимание как моя неуверенность в том, какой тип визуализации использовать, передается курсору
Первая версия ответной задачи для Cursor от GPT — обратите внимание как моя неуверенность в том, какой тип визуализации использовать, передается курсору
Я веду себя властно по отношению к GPT
Я веду себя властно по отношению к GPT

В заключение этого раздела

Относитесь к GPT как к настоящему менеджеру проекта. Он должен:

  • Знать что происходит.

  • Понимать что мы делаем для конченого пользователя.

  • Ставить для Cursor подробные и четкие задачи.

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

CaaC (Cursor as a Coder)

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

В августе 2024 года в Cursor появился замечательный режим под названием «Composer», который позволяет автоматически применять изменения к нескольким файлам. Я не пользовался чатом в правой боковой панели — он бесполезен по сравнению с Composer.

Работа с Composer имеет свои нюансы — ниже я попытаюсь изложить рабочий процесс и проблемы, с которыми мне пришлось столкнуться.

Ключевые аспекты работы Cursor в роли «кодера» + практические советы:

  • Поскольку я разделил роли между двумя вышеупомянутыми моделями, Cursor стало нехватать то ли понимания Mauve Paper, то ли высокоуровневого плана проекта (хотя в конечном итоге он понял все, что необходимо). Так что будьте готовы к бессмыслице, которую выдает Cursor  — иногда он может ошибаться даже если инструкции были ясными и правильными, но в большинстве случаев бессмыслица в коде проистекает из плохих инструкций. Если вы обнаружите подобное  — не вините себя, возвращайтесь в ChatGPT и заставьте его чувствовать себя виноватым :)

  • ДЕЛАЙТЕ КОММИТ ВСЕГО И ВСЕГДА. Даже самые незначительные изменения. Я сделал более 100 коммитов в процессе работы, это почти 15 на раздел, и это было мудрое решение. Поскольку вы работаете в Composer, вы не можете отслеживать все изменения, которые вносит Cursor. Иногда они могут включать удаление компонента или даже всей логики безо всякой причины.

    Совет: используйте cmd (или ctrl) + K в терминале Cursor чтобы превратить ваш запрос на естественном языке в команду bash. Я нашел это очень полезным, особенно при работе с Git — после более чем 4 лет его использования я все еще не помню ничего, кроме базовых команд.

Делайте коммит на каждом, даже маленьком, шаге
Делайте коммит на каждом, даже маленьком, шаге
Я больше никогда не буду гуглить команды bash!
Я больше никогда не буду гуглить команды bash!
  • Для отладки используйте Cursor, а для архитектуры — ChatGPT. После отправки инструкций из ChatGPT в Cursor вы получите какой-то результат, который, наверняка, с первой попытки вам не понравится. Лично я разделил проблемы на две категории:

    1. Проблемы с кодом. Это когда у вас отображается ошибка или какое-то значение оказывается не таким, каким должно быть и т.п. В этом случае программу надо отладить в Composer при помощи Cursor и обычно это решает проблему. При таком подходе вы экономите кучу времени, поскольку не делаете копипаст 10 раз подряд.

    2. Проблемы архитектуры и дизайна. Имеется в виду как улучшение UI/UX, так и проблемы с логикой и тому подобное. В таких случаях я всегда упаковываю их в большое сообщение и отправляю в GPT, прося написать инструкцию для Cursor по устранению проблем и предложению улучшений. Я делаю это так, поскольку GPT находится в контексте вашего проекта и как бы понимает вашу архитектуру и подход к UX. Cursor — нет.

  • «Разблокирование» Cursor с помощью GPT. Иногда Cursor попадает в бесконечный цикл: вы просите его исправить что-то в 10-й раз подряд, но он все никак не может этого сделать. В таких случаях я копирую весь файл или несколько файлов, над которыми работает Cursor, и отправляю их в отдельный чат GPT (o-1 отлично подходит для этого) с инструкциями о том, что нужно исправить. В этом месте я ещё раз сделаю важное замечание: нужно специально попросить GPT отредактировать только нужную часть и отправить вам полный код, т.к. GPT очень любит пропускать ваши функции в ответе и издеваться над ними.

  • Если застряли и Cursor, и GPT, удалите задачу и начните решать её заново. Это довольно логично, но в какой-то момент вы можете забыть, что Composer может писать код снова и снова не прилагая усилий и боитесь, что вы что-то потеряете. Избегайте этого. Если у вас уже есть инструкция, написанная ChatGPT, скопируйте и вставьте ее как новое сообщение, затем скопируйте и вставьте проблемный код и краткий обзор того, что не сработало и как ваши совместные усилия все еще не помогли. Затем попросите GPT написать исправленную инструкцию, отправьте ее в Cursor и проверьте результат — удивительно, но иногда контекста достаточно и для GPT, и для Cursor, и вам даже может понравиться самая первая версия кода, написанная Cursor.

  • Создавайте локально файлы с копией хранилища данных и заставляйте Cursor обновлять их на каждом шаге. К сожалению, я пришел к этому только после того, как потратил 5 часов на то, чтобы разобраться с использованием локального хранилища в моем проекте. Дело в том, что Cursor имеет доступ только к тем файлам, которыми вы делитесь с Composer, таким как кодовая база или .cursorrules, упомянутым выше. К чему он не может получить доступ, так это к внешним хранилищам данных, например:
    - базы данных (любого типа)
    - локальное хранилище (важно для приложений, использующих React, как в моем случае)

    Поскольку мой проект имеет каскадную структуру в которой предыдущие шаги влияют на последующие, мне нужно было где-то хранить промежуточные результаты (данные). Я использовал для этого локальное хранилище браузера. Проблема с которой я столкнулся заключалась в том, что, хотя Cursor писал код для чтения/записи переменных из локального хранилища, он не всегда запоминал структуру данных и точные имена переменных, разбросанные по кодовой базе. Как результат случалось такое: я просил Cursor «получить значение из «{variable_name}» в локальном хранилище и это приводило к проблемам. Решение, которое я придумал (и которое я настоятельно рекомендую), состояло в том, чтобы создать файл localStorage.json со структурой переменных в локальном хранилище, обновлять его каждый раз, когда Cursor добавляет новую строку кода, связанную с ним, и включать его в инструкции для новых функций.

    Совет: указывайте типы данных в своих JSON, чтобы предотвратить ошибки, связанные с типами данных. Я потратил 1 час, пытаясь найти ошибку, которая произошла только потому, что Cursor думал, что переменная хранится как строка (а это было целое число). Я также обнаружил что передача JSON в ChatGPT была весьма полезной — с этими знаниями GPT мог ссылаться на точные имена переменных и полей в инструкциях, делая их еще более точными и подробными.

localStorage.json
localStorage.json
ChatGPT использует имена переменных локального хранилища в инструкциях
ChatGPT использует имена переменных локального хранилища в инструкциях

И наконец, некоторые вещи, которые я не сделал в этом проекте, и пожалел об этом

  • Если ваш проект включает тексты, которые может потребоваться отредактировать в будущем — подумайте заранее! В моем случае самые важные тексты были в боковой панели, во введении и в заключении. После завершения первого раздела я решил сохранить их в формате JSON, чтобы иметь возможность редактировать его отдельно от файлов проекта .js, содержащих код. Поместить его в файл «sidebarContent.json» показалось мне довольно удобным — я сказал об этом GPT и в каждой новой инструкции Cursor получал указание, что он должен импортировать sidebarContent.json и поместить в него новый текст боковой панели. Но в какой-то момент и GPT, и Cursor забыли об этом, поэтому в нескольких разделах текст был жестко закодирован в файлах .js. Таким образом первое важное знание — всегда напоминать GPT о том, как вы храните данные в проекте, когда запрашиваете новое задание.

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

    Затем возникла еще одна проблема: оказалось что часть моего текста была в формате Markdown (чтобы включать гиперссылки, формулы и т. д.), а некоторые разделы не были корректно настроены для обработки markdown. Из этого возникло еще одно знание — заранее продумывать что необходимо включить в текст, выбрать правильный формат (см. видео), а затем сказать GPT всегда напоминать Cursor об необходимости импорта модулей, используемых для обработки markdown и формул. Мне потребовался почти целый день на переписку текстов, рефакторинг всех разделов для правильной обработки и внесения окончательных правок. Не совершайте эту ошибку!

  • Если в вашем проекте есть несколько страниц с одинаковой структурой — попросите Cursor создать шаблон! Это еще одна вещь, на которую я не обратил внимания в самом начале, и потом из-за этого набивал шишки несколько раз.

    Мой проект структурирован довольно просто — в каждом разделе есть шаги, на каждом шаге присутствует боковая панель куда помещается специфический текст для данного шага, немного общего контента и кнопки «Назад» / «Вперед». Когда я создавал первый раздел, я думал, что могу просто ссылаться на его шаблон в инструкции для любого другого раздела и Cursor просто будет использовать тот же шаблон. Оказалось что это не так. Cursor испортил все, что мог — боковую панель, пропорции элементов, кнопки и индикатор прогресса. Мне нужно было сначала попросить Cursor создать пустой шаблон, а затем скопировать его и указывать Cursor редактировать содержимое с каждым новым разделом и шагом.

  • По возможности избегайте сложных визуализаций при использовании внешних модулей для построения диаграмм. И используйте SVG! Если вам нужно создать динамическую диаграмму — старайтесь сделать ее как можно более простой, если вы хотите нарисовать что-то статическое, но более сложное — используйте вместо этого <svg>. Причина в том, что как Cursor, так и GPT не полностью понимают как изменение параметров диаграммы влияет на конечную визуализацию. Я сделал более 10 неудачных попыток когда пытался показать гистограмму на шаге выбора валидатора — это был кошмар. Но если использовать SVG — и Cursor, и GPT способны понимать как изменения в коде влияют на изображение. Попросить Cursor создавать SVG оказалось простой задачей которая обычно требовала не более одной итерации!

    Смотрите примеры ниже.

5-я попытка создать таблицу выбора валидатора… :(
5-я попытка создать таблицу выбора валидатора… :(
Конечный результат!!!!!!!
Конечный результат!!!!!!!
Простая визуализация в формате SVG созданная с первой попытки
Простая визуализация в формате SVG созданная с первой попытки
И эта тоже! GPT описал SVG, а Cursor нарисовал его на первой-же итерации!
И эта тоже! GPT описал SVG, а Cursor нарисовал его на первой-же итерации!

Заключение

Что бы там ни говорили «эксперты», а серьезный проект с помощью ИИ построить за «2 подсказки и 5 минут» не получится, особенно с первой попытки. Это все равно требует много труда и времени.

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

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


Огромное спасибо моему другу Виталику Павленко и его репозиторию шаблонов React с подробными инструкциями для проектов Cursor. Посмотреть их можно тут: https://github.com/vpavlenko/web-2024-template.

Впервые я узнал о Cursor из Telegram-канала Виталика, а затем консультировался у него (он очень щедрый человек, который охотно помогает другим). Он познакомил меня с Composer, и вот так все и началось.

Теги:
Хабы:
0
Комментарии1

Публикации

Ближайшие события