прошла примерно неделя и я закончил с диваном, а точнее с его перетяжкой
1/6
Как все было. Снял старую эко кожу с уголка, разрезал на лекало, перенес все на новую ткань. Но тут скажу, что нужно обладать немного логикой и пространственным мышлением, чтоб правильно перенести некоторые зеркальные детали. Вырезал, сшил и мебельным степлером произвел натяжку и крепление новой ткани.
Единственное что, посидев некоторое время, поняли, что натянули пуговки в первый раз плохо, так как садишься и например труселями цепляешься за нее когда встаешь, поэтому было принято решение перенатянуть так же пуговки сильнее. Все учимся на своих ошибках)
Что могу добавить: не бойтесь что то делать сами, ведь пока не попробуете, не узнаете можете ли вы это сделать!
Я едва успеваю перемахнуть через борт открытого кузова нашего монстра, вцепиться в ржавую трубу каркаса и упереться ногой в металл, как колонна боевых машин срывается с места. Наш пикап из старого седана, поставленного на раму грузовика, злобно рычит дизелем и дергается, словно разъяренный бык, пытающийся сбросить нас на землю. Тяжело переваливаясь на песчаных волнах, он начинает разгоняться. Машина набирает скорость, раскачиваясь на неровностях, и несет нас вперед.
Мы идем третьими. Над первой машиной вспыхивают залпы огнеметов, озаряя нам путь. Жар огня обдает лицо. В ответ на огонь со всех сторон взрывается многоголосый боевой клич рейдеров, опьяненных этим безумием.
Я крепче хватаюсь за каркас. Мои руки и ноги полусогнуты, мышцы напряжены до предела. Все тело сейчас работает как продолжение жесткой подвески нашего пикапа. Я пригибаюсь к кузову, выбрасываю в сторону свободную руку, закованную в броню из металла и резины, и издаю первобытный рев, разрывая голосовые связки и легкие.
Здесь я - рейдер, летящий сквозь пыль и огонь верхом на ревущей боевой колеснице. Впереди пламя огнеметов, позади грохочет колонна, а рев дизелей сливается с боевыми кличами рейдеров. Адреналин кипит в крови. Привычный мир остался где-то далеко. В эту секунду есть только безумие.
Броня из хлама Сомнений, ехать ли на фестиваль, не возникло - билеты были куплены в первый же день.
Но ехать туда обычным туристом с фотоаппаратом было бы преступлением против самого себя. У меня оставался месяц, чтобы с нуля собрать постапокалиптический образ. И хотя раньше я никогда не занимался крафтом, упускать такой шанс было ну никак нельзя.
В моей голове давно сидел образ «правильного» рейдера - это атакующий боец ближнего боя, чье снаряжение продиктовано суровой утилитарностью. Снаряжение должно помогать выживать в знойной пустыне, не сковывать движения верхом на боевых машинах и быть максимально энергоэффективным в контактном бою.
Бутафорский наряд, годный только для красивых фотосессий, не рассматривался в принципе. Мое техзадание самому себе было таким: это должно быть удобное снаряжение, выполненное из настоящих материалов, которое при этом не порвется от перекатов, бега или прыжков.
Ресурсной базой стало всё, до чего дотянулись руки: маркетплейсы, интернет-барахолки и, конечно, гаражный хлам — свой, соседский, друзей. Вещи, годами ждавшие билета на свалку, внезапно обрели невероятную ценность. Правило одно: чем деталь ржавее, помятее и фактурнее, тем лучше.
Сбор компонентов. Для этого хлама наступил его звездный час
Процесс напоминал игру в конструктор. Я прикладывал к себе куски резины и железа, прикидывая их компоновку, крепление и утилитарную функцию. Быстро пришло понимание: нужна жесткая основа — силовая арматура, экзоскелет. Без него весь обвес будет безжалостно перекручиваться, сползать и болтаться при беге.
К счастью, инструменты для серьезной работы у меня есть, и работа закипела. Резина, кожа и металл сверлились дрелью и приваривались сваркой прямо на мне - так было быстрее примерять и подгонять по месту. Искры от болгарки, вращающееся сверло, упирающееся в руку, запах жженого металла и ожоги на коже — видимо, такова участь всех кутюрье.
В результате такой работы ключевой элемент снаряжения - защита руки от плеча до кисти - начал обретать свои очертания.
Вид с внутренней стороны. Элементы скреплены шарниром от борта пикапа.
Наруч. Арматура может выступать и лафетом для оружия
Наплечник. Основную защиту берет на себя кусок шины от кроссового мотоцикла, зафиксированный кожаными ремнями, болтами и клепками.
С остальными элементами экипировки возникла классическая проблема: они выглядели отвратительно новыми.
Текстильную базу — штаны и футболку — удалось довольно быстро выжечь с помощью агрессивной химии. В дело пошел гипохлорит натрия (обычный мощный отбеливатель), который я замешал с песком и глиной. Штаны держались стойко, а вот футболка приняла на себя всю турбулентность ядерной смеси.
Сварочные перчатки, тактический ремень с кожаными подсумкам, шарф и старые армейские берцы смотрелись слишком разномастно — как сборная солянка из разных эпох и сред. Чтобы придать им единую степень износа, я надел всё это на себя и ползал по колотым камням и щебенке, пытаясь натереть естественные потертости. Нужного результата это не дало. К тому же я понимал: после первой же стирки весь этот с трудом добытый «боевой опыт» просто смоется водой.
Мне нужен был стойкий фиксатор. На помощь пришла страйкбольная аэрозольная краска — ее состав специально разработан так, чтобы ложиться глухой матовой фактурой, имитирующей въевшуюся, засохшую пыль. Несколько проходов баллончиком стерли границы между разными материалами, превратив разрозненный хлам в однородный комплект, потрепанный временем в пустынях. Задача была решена.
Путь длиною в год и тысячу километров
Идеальное утро на трассе. Большой проект автомобиля закончен.
Эта поездка была для меня гораздо большим, чем просто выезд на тематическую тусовку. Дело в том, что сам фестиваль идеально совпал с личным триумфом: всего за два месяца до этого я наконец-то завел машину, которую до этого 13 месяцев планомерно разбирал до голой рамы, резал кузов, варил и собирал все обратно.
Вы только вдумайтесь: я покупаю классический внедорожник 130-й серии для дальних путешествий, больше года живу с ним в гараже, заканчиваю тяжелейшую капиталку шасси, кузова и V-образной шестерки... И тут же, словно по заказу, объявляют первый в стране постапокалиптический фестиваль. Фестиваль, где буквально исповедуют культ ревущих моторов, железа и олдскульной техники. Звезды сошлись так, что не поехать было физически невозможно. Это был идеальный боевой тест-драйв.
Запомните меня, братья! Во славу культа старой школы. Мы не просто чиним классику — мы делаем ее бессмертной!
Трасса проходила по самому краю страны. В какой-то момент наши телефоны поймали сеть соседнего государства, ушли в роуминг и молча подтянули чужой часовой пояс, прыгнув на час вперед.
Я смотрю на время и понимаю, что сильно выбиваюсь из графика! Опоздать на открытие, пропустить старт колонны? Ну уж нет. Я вдавливаю педаль газа, заставляя мотор реветь, и начинаю нещадно сжигать бензин об изящную аэродинамику «кирпича» нашего внедорожника.
Гонка со временем продолжалась до ближайшей АЗС. Залетев на заправку, я узнал от кассира настоящее время. Оказалось, я лечу с запасом. Облегченно выдохнув, дальше я покатился в спокойном, крейсерском режиме, наслаждаясь видами.
Дитя пустошей
По прибытию мой собственный костюм был готов, но выйти в нем в люди в одиночку было немыслимо. Я прекрасно понимал, что моя пятилетняя дочь просто не простит, если папа отправится на праздник, а она останется в обычной одежде. Я готовился к этому: в багажнике заранее были припрятаны белое платье, фактурная фурнитура и элементы детского снаряжения.
Палатка превратилась в полевое ателье — нужно было собрать образ буквально за пару часов. Главная сложность заключалась не в подгонке деталей, а в том, что маленькая модель постоянно сбегала. Вокруг кипела фестивальная жизнь, в соседней палатке нашлись новые друзья-ровесники, и тратить время на примерку каких-то ремешков ей совершенно не хотелось. Пришлось пустить в ход все запасы отцовского терпения и дипломатии. Но мы справились — к моменту официального открытия фестиваля образ маленькой покорительницы пустыни был завершен.
Дитя пустоши
Настал час Икс. Мы с дочерью вышли из палатки, снаряженные, максимально серьезные, и пошли к центру лагеря, держась за руки. Это был сюрреалистичный контраст: моя левая половина тела закована в тяжелую ржавую броню, а правой рукой я бережно сжимаю крохотную ладошку своего ребенка. Мы неспешно шли сквозь лагерь, будто это обычная воскресная прогулка отца с дочерью в городском парке.
Семейная прогулка
Но наша семейная идиллия длилась недолго. Стоило нам подойти к пока еще пустующей главной сцене, как ко мне быстрым шагом направился один из организаторов. Он сходу предложил занять место в автоколонне, которая стартует уже прямо сейчас.
Внутри меня тут же проснулся тот самый дикий рейдер, для которого сейчас торжественно открылся путь на его законное место в кузове. Я бережно посадил дочку на руку, свободную от железа, и зашагал обратно к палатке. Перепоручив ребенка жене, я наказал им ждать моего триумфального появления у главной сцены, а сам сорвался к автоколонне — времени уже совсем не оставалось.
Автоколонна
Я бежал к точке сбора. Я не мог идти спокойно. С каждой секундой бега во мне исчезал гражданский конформист, уступая место личности из совершенно другой вселенной. Само снаряжение сработало как катализатор этого превращения: ржавое железо, резина и дубленая кожа сидели плотно и удобно при беге. Берцы уверенно вгрызались в песок, полная фляжка на поясе держалась прочно, напоминая о себе лишь тяжестью воды. Эта идеальная подгонка экипировки давала четкое ощущение себя настоящим бойцом-пехотинцем на марше.
Машины стояли в ряд, борт к борту — суровые, грубые, но до мелочей продуманные творения механиков. В каждом крафте читалась кропотливая ручная работа. Вокруг группками стояли энтузиасты в самодельных постапокалиптических костюмах и весело переговаривались. Это были такие же фанаты темы, как и я, где каждый собирал свой образ сам, опираясь на собственное видение и вкус.
И вот, среди всей этой техники я увидел идеальную машину для себя. Это был кузов классической Волги из семидесятых, переделанный в пикап. В Австралии такие легковые кузова очень популярны и называются "Ute" (от coupe utility). Но здесь этот самодельный кузов еще и водрузили на шасси мощного внедорожника.
Творение сумрачного механика
Дело в том, что именно такой форм-фактор — легковой пикап на тяжелом шасси, размещение рейдеров в кузове и их боевые позиции — я детально прорабатывал уже давно в рамках моего pet-проекта. Просто посмотрите на уже устаревший скриншот, сколько отличий с реальным прототипом вы видите?
Найди 5 отличий
И вот теперь прямо передо мной стоял настоящий, осязаемый металл. Машина, чью техническую компоновку, взаимодействие с автомобилем и анимации рейдеров на кузове я столько раз продумывал и настраивал.
Слиться в единый юнит с таким автомобилем в реальной жизни, почувствовать лично то, о чем долго представлял, проверить на себе механики и кинематику - упускать такое сейчас ну никак нельзя. Водителя рядом не было, поэтому я стал поджидать. Как только к машине подошел незнакомый мне человек, я вышел навстречу и сказал прямо: "Я хочу ехать на борту этого автомобиля". В тот момент от меня не было приветствия, не было просьбы. В состоянии переполненного адреналина и максимальной концентрации на цели я считал, что самый вероятный способ достичь своей цели - делать это прямо, не растрачивая время и энергию на сопутствующие действия и фразы. И это сработало! Я залетел на борт и началось движение.
Конец гражданской рутине, колонна начинает движение.
Если говорить о внутренних ощущениях при езде в колонне, верхом на кузове - это был чистый, концентрированный восторг. Он складывался из удачного сочетания грубой физики и фантазии: контакт с ржавым, шершавым металлом, устойчивая позиция на борту огромного автомобиля, жар от огнеметов и криков таких же счастливчиков вокруг. Высокую машину раскачивало на песчаных ухабах, а мощный дизель с рыком бросал эту тяжелую конструкцию туда, куда направлял ее водитель. Моя же фантазия и продуманные сценарии с бойцами на боевых машинах лишь возводили эту реальность в абсолютную степень.
Во взрослой жизни такие эмоции - огромная редкость. Нечто подобное мы испытываем только в детстве: ту самую концентрированную, искреннюю радость в моменте. И в тот момент, держась за каркас этой огромной конструкции в драйве, я снова поймал эти эмоции тридцатилетней давности.
Как только наша автоколонна припарковалась перед главной сценой, все вокруг начало раскручиваться в настоящее торнадо. Это был рев моторов и ускоряющейся музыки. Вспышки стробоскопов со сцены рвут темноту на куски, выхватывая из темноты автомобили, мотоциклы и людей в постапокалиптических образах. Огнеметы ослепляли, их жар бил в лицо. Начинался концерт - дикая, бескомпромиссная смесь из огня, рева железа и тяжелого, перегруженного хард-рока, который накрывал нас всех.
После энергичного шоу наступило время отдыха. На сцене зажегся луч проектора - включили четвертого "Безумного Макса", и зрители начали расставлять на песке свои туристические стулья и шезлонги, готовясь к просмотру.
Я мог переодеться в гражданское, но не стал этого делать. Мое облачение было удобным, и повода возвращаться к обычной одежде не было совершенно никакого. Захватив свой складной стул и воду, я устроился по центру поля.
Вокруг, поодаль друг от друга, сидели люди — парами, группами и одиночками. Все мы просто разделяли этот приятный момент. Смотреть любимый фильм под открытым небом в окружении единомышленников - это было невероятно уютно.
Во время сеанса начало холодать, и тут моя экипировка снова выручила. Я размотал свой шемаг, превратив его в подобие теплой шали, и укрыл им шею и руки. Тут, признаться, я здорово удивился, как такой компактный элемент одежды помогает холодной летней ночью.
Золото Пустоши
При свете следующего дня мир заиграл совершенно иными, теплыми красками. Ночная ярость улеглась, и под мягким солнцем наконец-то появилась возможность без спешки рассмотреть всю невероятную эстетику фестиваля. Ржавчина, грубый металл и осевшая на технике пыль при дневном свете выглядели еще фактурнее.
Но главной душой этой атмосферы были, конечно же, люди. Уровень подготовки участников вызывал искреннее восхищение: каждый творческий порыв был кропотливо реализован в самостоятельно собранных костюмах, деталях одежды и гриме. Энтузиазм и фантазия гостей фестиваля буквально поражали воображение.
Здесь были люди самых разных возрастов и профессий, и каждый нашел в этом сеттинге что-то для себя, раскрыв новую грань собственной личности.
Джоконда
Рай для взрослых
Суровыми и мрачными бойцами участники оставались только на постановочных кадрах. В свободное время, когда лагерь просто жил своей жизнью, сквозь всю серьезность образов прорывались абсолютно искренние эмоции отдыха и веселья. Это был настоящий рай для взрослых - место, где можно было гонять на любой технике по пескам, заниматься творчеством, проходить квесты и просто быть счастливым, выкинув на несколько дней из головы свою работу и бытовую рутину.
Без взрослых правил Оказалось, чтобы дневной лагерь не превратился в обычную выставку косплееров, вся территория была наполнена скрытыми квестами от профессиональных актеров. Изначально этот интерактив рассчитывался на взрослую аудиторию, но по-настоящему сильно он раскрылся именно для тех, кто приехал с семьей. Мы с женой и пятилетней дочкой с головой втянулись в процесс, и для нас это стало увлекательным общим приключением.
Воительница. Только она решает, есть ли у вас шанс.
Безумная травница. Продаст вам ценную информацию, но расшифровать этот поток сознания дано не каждому.
Барахольщица. Подкинет сомнительную работенку. Вопрос лишь в том, какой ценой достанутся монеты.
Эпилог. Душа пустоши
Подводя черту, скажу прямо: я чертовски рад, что настолько безумное и смелое для наших широт событие вообще состоялось. Это тот самый росток новой культуры, который нужно всеми силами поддерживать, пока он пробивает бюрократический асфальт.
Я прекрасно понимал, что это первый фестиваль подобного рода, и ехал, помимо прочего, лицезреть эту особую атмосферу становления нового, уникального. В этой первозданной, еще не отполированной до скучного блеска форме лежит на поверхности самое ценное: настоящий труд энтузиастов, полное отсутствие коммерческого глянца и невероятный, мощный вайб «своих». Мне было жизненно важно поймать этот момент зарождения. Пройдет несколько лет, процессы устоятся, появятся строгие регламенты, бюджеты вырастут, и эта дикая, такая разномастная естественность неизбежно уйдет.
Для себя я понял: на такие мероприятия мне просто неинтересно приезжать пассивным зрителем, который впитывает поступающие эмоции и развлечения. Напротив, мой личный фестиваль - это я сам. На собственном опыте я убедился, как меняется восприятие действительности, когда даешь волю фантазии, подкрепленной осязаемым железом и фактурой. Как только перестаешь ждать зрелищ со стороны и сам становишься активной частью этого шоу, всё происходящее вокруг выходит на совершенно другой эмоциональный уровень.
Этот мир затянул меня с головой. На следующий год я намерен вернуться, но уже не пешком. Я планирую ворваться туда верхом на собственном боевом постапокалиптическом монстре на колесах. Прямо сейчас я в активном поиске большого кузова из 60-х или 70-х годов — самой красивой эпохи автомобилестроения и, по канонам жанра, того самого времени, когда старый мир окончательно рухнул, открыв новую страницу истории.
Открываешь Agent, пишешь «почини баг» или «сделай нормально» — и через минуту diff на три файла, которые ты не трогал. Час откатываешь и злишься на модель. У меня на разборах это почти всегда не «тупой ИИ», а промпт без границ и без критерия «готово».
Ниже — формула из пяти блоков и семь шаблонов под типовые задачи. Копируй каркас, подставь свои пути и команды. Чужой готовый текст без ваших @файлов и npm test снова даст «стандартное» решение не туда.
Рабочий промпт читается как тикет: где сломалось, что сделать, чего не трогать, как ответить, как проверить.
1. Контекст — ветка, @файл, stderr целиком, что уже пробовали.
2. Цель — одно действие. Не «улучши проект».
3. Ограничения — не трогать package.json, не менять публичный API, править только src/foo.ts.
4. Формат — diff в одном файле / план из N пунктов / таблица «было — стало».
5. Проверка — npm test -- …, зелёный кейс, или ручной сценарий из 2–3 шагов.
Постоянные запреты лучше держать в .cursor/rules, в чате оставлять цель и проверку. К коду всегда цепляйте минимум один @ — иначе агент ищет похожие имена по всему дереву.
Цель: исправить причину падения без смены поведения для валидного пароля.
Ограничения: не менять @src/auth/types.ts и не добавлять зависимости.
Формат: правки только в @src/auth/login.ts, в конце — 2–3 предложения «что было не так».
Проверка: npm test -- login.test.ts — все кейсы зелёные.
Антипример: «Почини логин, что-то сломалось» — можно получить переписанную авторизацию и сломанную регистрацию.
Проверь себя: файл + имя теста/ошибка; что считать регрессией; команда одной строкой; один чат = одна гипотеза. Не помогло — новый чат: «попытка 2: …» + факты из diff и stdout, без эмоций.
Цель: вынести валидацию в хук useOrderValidation без изменения UI и пропсов формы.
Ограничения: не трогать стили, не переименовывать экспорты, не менять тесты кроме импортов при необходимости.
Формат: сначала короткий план из 3 шагов, после моего «ок» — diff.
Проверка: npm run lint && npm test -- OrderForm — без новых warning.
Антипример: «Отрефактори, сделай красиво» — агент сменит библиотеку форм или разнесёт файл на пять модулей.
Граница — один модуль или явный список файлов. Если тестов нет — честно: «тестов нет, проверяю вручную: сценарий А, Б». Для React отдельно: «поведение для пользователя не меняется» + клики/поля. Для Python: «сигнатуры публичных функций те же».
Контекст: @src/utils/price.ts, функция formatPrice; покрытия нет.
Цель: добавить unit-тесты на граничные значения: 0, отрицательное, большое число, null.
Ограничения: Vitest, файл тестов @src/utils/price.test.ts, не менять реализацию formatPrice.
Формат: только тесты + краткая таблица «кейс — ожидание» в комментарии к describe.
Проверка: npx vitest run price.test.ts — 100% pass.
Антипример: «Напиши тесты на utils» — появится Jest, файлы в tests/, и прод-код «чтобы тесты прошли».
Назовите фреймворк и путь. Явно: «не менять прод-код». Перечислите граничные кейсы, не «покрой всё». Перед генерацией откройте @ на сам модуль — иначе агент выдумает поля.
Контекст: @Legacy/importPipeline.js, меняю только шаг нормализации (функция normalizeRow).
Цель: объяснить поток данных от входа CSV до записи в БД — только цепочка вызовов.
Ограничения: не предлагать рефакторинг и не писать код.
Формат: нумерованный список шагов (≤12 пунктов) + один абзац «где ломается при битой строке».
Проверка: я могу вслух пройти по списку и указать файл каждого шага; если шаг без файла — ответ неполный.
Антипример: «Объясни этот файл» — пересказ строк и совет «перепиши на TypeScript».
Здесь уместен Ask: только анализ. Точка входа обязательна. Для больших репо: «игнорируй vendor/» / «смотри только apps/api/». Если ответ расползается — ужесточите лимит: «не больше 12 пунктов, на каждый — один файл».
Контекст: Next.js app, уже есть @app/settings/page.tsx; нужна смена языка интерфейса.
Цель: план внедрения i18n без реализации — файлы, которые затронем, риски.
Ограничения: не добавлять код в этом чате; не выбирать библиотеку без сравнения 2 вариантов.
Формат: таблица «шаг | файл/папка | риск | как проверить» + открытые вопросы (≤5).
Проверка: по плану можно оценить трудозатраты; у каждого шага есть способ проверки.
Антипример: «Добавь мультиязычность» — пакет уже стоит, десять страниц переписаны, сборка красная.
Запретите реализацию в этом сообщении (Plan или дисциплина «только план»). Реализацию шага 1 — отдельным чатом.
Контекст: git diff в ветке feature/notifications (только @src/notifications/*).
Цель: найти риски перед merge: безопасность, регрессии, нарушение rules.
Ограничения: не править код; не предлагать «переписать всё».
Формат: список findings с severity high/medium/low; на каждый — файл и строка.
Проверка: каждый high привязан к конкретному фрагменту diff; если high нет — явно написать «high не найдено».
Антипример: «Посмотри, норм ли?» — «в целом хорошо, можно мержить» без строк.
Ограничьте область diff. CI гоняете вы сами — агент не заменяет pipeline. Запреты (API-ключи в репо, console.log в prod) удобно держать в rules, чтобы ревью сверялось с ними.
Цель: JSDoc + пример вызова для внутренней wiki (русский язык).
Ограничения: не менять логику; не документировать приватные хелперы; ≤15 строк на блок.
Формат: JSDoc над функцией + markdown-блок «Пример» с телом запроса и ожидаемым статусом.
Проверка: по доке новый разработчик может вызвать webhook в Postman без чтения всего файла.
Антипример: «Задокументируй API» — generic параметры без тел и кодов ошибок.
Укажите конкретный экспорт, язык, лимит объёма и пример с реальными полями из типов, не foo/bar.
### Типичные грабли
Симптом — Что проверить
Правки не там — `@файл` + «только этот модуль»
«Сделал», но не работает — Команда lint/test или ручной сценарий в промпте
Разросся diff — Несколько целей в одном сообщении → новый чат, одна цель
Повторяет старую ошибку — Нет «что уже пробовали» — попытка 1, результат
Смешали Ask и Agent — «Почему падает?» ≠ «исправь и прогони тест» — разные чаты
Нет checkpoint — Перед рискованным промптом — коммит или stash
Промпт-роман — Пять экранов хуже пяти строк формулы; вытесняет rules
Агент снова лезет в package.json — Допишите rule, а не третий раз орёте в чат
Это не серебряная пуля: rules, открытая папка проекта, выбранная модель и чистый git — фундамент. Промпт — надстройка на одну итерацию. Нормальный цикл: промпт — проверка — уточнение. После трёх итераций тупик — упростите цель или разбейте на два чата.
Чеклист на завтра
• Взять последнюю задачу, где агент «навредил», переписать исходный промпт по одному из семи шаблонов
• В каждом промпте на код — минимум один @ и блок «Проверка»
• Постоянные запреты вынести в .cursor/rules, в чате оставить цель + проверку
• Перед рискованным Agent — git commit или stash
• Ask и Agent не мешать в одном чате
• Если восьмая повторяющаяся задача (миграция, релиз) — завести восьмой шаблон по той же формуле
У кого какой обход/шаг сработал на реальном репо? Напишите в комменты — интересен именно ваш стек и команда проверки, не абстрактный «идеальный промпт».
У меня на разборах почти каждую неделю одна и та же история: человек открыл чат в браузере, попросил «сделай сайт», вставил куски в проект — через день всё разъехалось. Потом вердикт: «вайбкодинг не работает».
Работает другое: правка реального репозитория в редакторе с ИИ. Вы держите цель и критерий «готово», модель предлагает патч, вы читаете diff и принимаете или откатываете. Не замена программирования — ускорение рутины при вашей проверке.
Ниже — определение без маркетинга, когда Cursor уместен, типичные провалы и первый безопасный сценарий на один вечер. Серебряной пули нет: без чтения diff это генерация текста, не разработка.
Шаг 1. Чем вайбкодинг не равен «промптам в ChatGPT»
Вайбкодинг (vibe coding) — цикл: формулируете задачу — ИИ предлагает изменения в файлах — читаете diff — принимаете, правите запрос или откатываете. «Вайб» здесь про поток итераций, не про «пиши код настроение».
Три условия, без которых термин превращается в рекламу:
1. Редактор с контекстом — открыта папка проекта (Open Folder), не один файл в блокноте.
2. Режим с действием — в Cursor это Agent (правит файлы), а не только болтовня.
3. Ваша проверка — запуск, тест, взгляд в браузер, git diff. Без этого — генерация текста.
Типичная путаница: скопировали ответ из браузерного чата — в проекте нет связи с файлами — «не запускается». Лечится не новым промптом, а открытием папки и работой внутри репозитория.
Вайбкодинг не снимает:
- Архитектуру и границы — кто с чем связан, где данные. Модель предложит «логичную» структуру; ваши бизнес-ограничения знает только текст, который вы дали.
- Ключи и доступы — ключи API, пароли, персональные данные не должны уезжать в промпты и логи. .env и ротация токенов — ваша зона.
- Ответственность за прод — деплой, бэкап, откат. Кнопку «в прод» жмёт человек.
- Согласование с заказчиком — сроки и объём код не ускоряет.
Честный минимум грамотности: файл, функция, ошибка в консоли, git commit. Без этого вы зависите от каждого ответа модели. Нормальный старт для новичка: «объясни эту ошибку и предложи один фикс».
Ожидание — Реальность
«ИИ сам всё поймёт» — Нужен контекст: файлы, rules, примеры
«Git не нужен» — Git или копия — страховка от плохого diff
«Сразу большой проект» — Сначала модуль или одна фича
«Без проверки» — Хотя бы ручной чеклист за 5 минут
Классика: алгоритм — набор — запуск — фикс.
Вайбкодинг: намерение — патч от модели — оценка патча — уточнение. Ручной набор не исчезает: правите строки, когда diff «почти верный», или когда быстрее самому.
Что меняется по навыкам:
- фокус с синтаксиса на спецификацию поведения («при пустом email — подсказка, форму не слать»);
- больше мелких итераций за час;
- чтение diff становится таким же навыком, как писать цикл;
- промпт = тикет: плохой тикет — не то.
Пример с формой. Классика: находите handler, пишете if (!email), проверяете в браузере. Вайбкодинг: в Ask — «где сейчас валидация», в Agent — «добавь проверку email и сообщение под полем, не меняй стили», смотрите diff, поднимаете dev-сервер.
Риск по умолчанию: модель любит переписать лишнее («заодно улучшил»). В промпте режьте явно: «только файл X», «не трогай CSS», «без новых зависимостей». Помогают Rules / короткий AGENTS.md в корне.
Совпадают несколько условий:
1. Задача локальна — один репозиторий, лендинг, скрипт, плагин. Не «десять сервисов с нуля за вечер».
2. Есть или будет папка на диске (лучше с git).
3. Вы можете проверить результат: страница, npm run dev, traceback.
4. Итерации короткие — фича на 20–60 минут, не «перепиши всё приложение».
5. Есть эталон — «как на странице Y», скрин, кусок кода, дока.
Слабые сценарии для старта: прод без staging/бэкапа; legacy без тестов и без человека, который помнит «почему так»; «сделай как у конкурента» без ТЗ и без доступа к коду; персональные данные без политики обработки.
Чеклист «готов ли я вайбкодить эту задачу»:
• Результат в одном предложении
• Знаю файл или модуль
• Проверка за 5 минут
• Есть откат (git или копия)
• Понимаю, что не должно измениться
Пять галочек — хороший кандидат. Две — сначала сузьте задачу. Agent включайте, когда план ясен; если не знаете, где живёт логика — сначала Ask и поиск по файлам.
Ускоряются и хорошие, и плохие правки.
- Раздувание diff — переименования, формат соседних файлов, «улучшения». Через неделю — конфликт или регрессия.
- Несуществующие API — уверенный вызов функции, которой нет в вашей версии package.json.
- Ключи в коде — токен из примера уехал в репозиторий. В diff ищите api_key, password, token.
- Отказ от git — каждый эксперимент лотерея. Минимум: коммит «до Agent», коммит «после проверки».
- Оракул-промпт — «сделай CRM» одним махом. Режьте: модель данных — одна форма — список — фильтр.
Полезно вести лог на две недели: что просили — что изменилось — что проверили. Паттерн ошибок почти всегда один: слишком большой запрос и нет критерия готовности.
Не начинайте с «нового SaaS». Провал должен быть дешёвым.
Задача: в существующем статическом HTML или React-странице добавить блок «Контакты» (email + ссылка), стили в том же файле/модуле, без новых библиотек.
Почему безопасно: 1–2 файла, видно в браузере, легко откатить.
Шаги:
1. Копия папки или git checkout -b vibe-first.
2. Open Folder в Cursor, глянуть README / package.json.
3. Ask: «Где рендерится главная? Перечисли файлы, код не меняй.»
4. Agent: «В файле … добавь секцию Contact с … Другие секции не трогай.»
5. Dev-сервер, проверка в браузере.
6. git diff, коммит с понятным сообщением.
Альтернатива не-фронту: Python-скрипт — читает CSV, считает сумму по столбцу. Один файл, проверка на тестовом CSV.
Ограничения вслух: не подключать оплату/авторизацию/внешние API; не трогать прод; не «оптимизировать весь проект».
После успеха — форма с валидацией; потом Rules под стиль кода. Лестница вверх, не прыжок в сложность.
Оценка не «сколько промптов», а «от запроса до работающей фичи».
1. Intent — одно предложение для пользователя: «Под email — ошибка, если формат неверный». Не «сделай красиво».
2. Scope — какие файлы трогаем и что не трогаем: «только ContactForm.tsx, стили из существующего module.css».
3. Patch — Agent правит, вы читаете diff. Diff больше трети файла без причины — стоп, уточнение.
На мелкой задаче цикл укладывается в 30–45 минут. Время обычно жрёт неясный intent и принятие лишнего diff.
Признак, что цикл удался: можете объяснить коллеге, что изменилось, без открытия чата; есть коммит или копия до/после; следующий шаг маленький, а не «теперь всё приложение».
Одна строка после сессии: «Сегодня я …, проверил …, следующий шаг …». Это отделяет вайбкодинг от бесконечного чата.
### Типичные грабли
Симптом — Что проверить
«ИИ написал, но не запускается» — Код из браузерного чата без связи с проектом → Open Folder
«Всё сломалось после одного запроса» — Приняли большой diff без чтения → git / Local History
«Не понимаю, что он менял» — Сразу Agent без карты → сначала Ask
«Хочу без кода вообще» — Нет критерия готовности → мини-задача с проверкой за 5 минут
Diff на полрепозитория — Промпт широкий → один файл + «не трогай …»
Падает на API библиотеки — Сверить с докой и версией в package.json
Ключ в репозитории — Diff на token/password; вынести в `.env`
• Описать одну задачу одним предложением + критерий «готово»
• Открыть папку проекта в Cursor (не один файл)
• Сделать ветку или копию «до экспериментов»
• Ask: где живёт нужная логика — без правок
• Agent: один файл, явные «не трогай», без новых зависимостей
• Прочитать diff глазами; при сомнении — откат
• Проверка за 5 минут (браузер / скрипт / traceback)
• Коммит «после проверки» + одна строка лога сессии
У кого какой первый сценарий реально зашёл — HTML-блок, форма или скрипт на CSV? Напишите в комменты, что сломалось на diff.
Итак, в предыдущих частях "Поисков" я собрал ламповый однотакт и оказался им весьма доволен. Однако же, истинного искателя не может остановить вершина, выше которой есть еще одна.
Бороздя просторы интернета я наткнулся на плату для усилителя, схема которого была опубликована в рекламной брошюре фирмы Dynaco, посвященной трансформаторам, которыми можно было повысить качество типового лампового усилителя.
В народе эта схема именуется Dynaco 6v6 push-pull ultralinear amp, хотя на самом деле именно схемой усилителя Dynaco она не является (классические наборы Dynaco "сделай сам" - это ST35 и ST70).
Собственно схема
1/4
Платы: основная и две вспомогательные (не пригодились)
Плату я нашел в одном широко известном интернет-магазине на букву "А", который в Поднебесной. Плата сделана на совесть: двусторонняя, с золочением и маркировкой компонентов на поверхности, а также предусмотрена возможность помимо октальных ламп использовать новальные - 12АХ7 и EL84/6BQ5 и 6П1П, что очень недурно на мой взгляд. Есть, однако, и недостатки: "земляные" контактные площадки компонентов сделаны не на пятачках, а просто в виде отверстий в земляном полигоне. Это минус, поскольку чтобы припаять вывод компонента к полигону, нужно поднимать температуру паяльника до 300 и выше градусов (обычно я паяю на 250° С) и дольше греть место пайки, что не совсем полезно для некоторых компонентов.
Тем не менее, сам факт существования готовой и качественно сделанной платы под это устройство меня несказанно обрадовал и повлиял на решимость приступить к сборке. Поэтому плату я заказал.
Корпус нашел там же, алюминиевый с деревянными щечками. Там же были приобретены 4-позиционный селектор входов и ступенчатый регулятор громкости фирмы Eizz, которые я ранее применял в однотактном усилителе.
Накинул на плату компоненты просто чтобы посмотреть
Когда все детальки собрались вместе, закипела работа. Ну как закипела? Довольно вяло побулькивая, поскольку работа и домашние дела занимали времени больше, чем я хотел бы.
1/3
Начал компоновать узлы и элементы, сверлить и примерять
Обратите внимание на первую лампу: изучив схему я увидел, что усилитель является по сути мощником: сигнал подается непосредственно на вход фазоинвертора, что заставило меня предаоложить, что по входу схема будет туповатой и для раскачки потребуется еще один каскад, который я и собрал на 6н8с, но, как выяснилось позже, зря.
Прогресс
В конечном итоге от первого каскада пришлось отказаться, т.к. усиление на входе оказалось избыточным. В итоге получилось вот такое:
Готово!
Входной каскад я удалил, отверстие заделал вот таким вот образом. Не слишком художественно, но в целом пристойно.
В усилителе реализована возможность переключения выводов вторичной обмотки выходных трансформаторов на 4 и 8 ом, в целях борьбы с фоном накальные цепи имеют искусственные средние точки, а на накал ламп первого каскада подается 52 вольта для т.н. "подъема", который обеспечивает более низкий уровень шумов. В итоге фон накальных цепочек а динамиках почти на слышен, если только не прикладывать ухо вплотную к динамикам АС.
Звучание усилителя я оценивал, подключив к нему акустику на 10гдш1-4 от магнитофона Маяк, которая оказалась удивительно приятной на слух. Поскольку паял я эту конструкцию, находясь в отпуске в деревне, никаких микрофонов у меня под рукой нет, поэтому за измерениями можно пройти, например, сюда:
С учетом того, что компоненты я подобрал заведомо качественные, неприятных сюрпризов я не ожидал и усилитель их не преподнес: звучит он напористо, с характерными для ламповых усилков нч, густыми и тягучими (на самом деле ламповые увеселители довольно посредственно контролируют нч, потому и бас очень характерный). При этом звучание чистое и разборчивое, слышно каждый инструмент. Жанрово всеяден: слушал на нем и Textures, и Dreamstate logic, и Madder Mortem - с любым материалом справляется на "отлично".
Если кому-то важно знать, то рекомендую к повторению - усилитель весьма хорош и конструктивно несложен. На нем в поисках аудиофильского бога я ставлю точку, ибо в процессе поисков лишь подтвердил свою гипотезу о том, что если схемотехника усилителя не похожа на фантазии доктора Нимнула из "Чипа и Дейла", то разница между усилителями различных типов минимальна.
Те самые тепло-ламповые искажения в усилителя возникают только в статьях маркетологов и головах аудиофилов. Усилители равно высокого качества должны и будут звучать практически одинаково в одни и те же акустические системы. Искажения возникнут в них лишь тогда, когда режимы работы усилителей экстремальные, что для комфортного прослушивания музыки противопоказано.
В данном случае мы имеем хороший звук, приличный вес и отличный внешний вид (на мой взгляд), я доволен!
Арка удерживает край столешницы и край "крыши" дома.
С пандусом были долгие размышления. Изначально, я хотела его сделать двухуровневым, но для экономии пространства, решила сделать прямой и "задвинуть" его в дом. Пришлось все разбирать, чтобы вырезать кусок в площадке второго этажа.
Ковролин им новый постелила (который они уже успешно уделали).
Осталось заменить решетку на белую (чёрная режет пространство).
Ну и хочу сшить им красивые подстилки и подушечки.
Материалы: фанера 10 мм, доска 20 мм (арка), доска 5 мм, брусок 10х10 мм, оргстекло (окно), ПВХ (покрытие - пандус), ковролин (покрытие - второй этаж), уголки, шпмнгалет, петли (дверца и окно).