В компоненте для маркдауна, который я использую в проекте, есть пара багов, которые лечатся только переписываниями кусков кода. В эти выходные я сел в Winfsurf и опусом под мышку и начал разбираться. Модель сначала не могла уловить смысл, но я сходил на гитхаб и скопировал исходники оттуда и скормил модели как доказательство того, что нормально работать может (в гитхабе ввод маркдауна работает отлично). Опус немного побарахтался, но на удивление справился и ошибки поправил.
В итоге я форкнул проект, добавил туда все фиксы, модель еще и репу почистила, зависимости обновила и воркфлоу для публикации настроила, так что я теперь гордый обладатель npm пакета
https://github.com/can3p/headless-mde https://www.npmjs.com/package/@can3p/headless-mde
В pcom еще не прикручено, но скоро!
Основной баг - в мобильных браузерах при воде списка или загрузке файлов форма постоянно прокручивалась на самый верх, теперь такого не будет
Я подумал, что мне легче ориентироваться, если будут какие-то отсечки и ченджлоги, так что теперь у pcom есть и релизы лол. Когда-нибудь запишу скринкаст с изменениями за последние полтора года.
В эти выходные я почувствовал прилив вдохновения и поправил разное вокруг rss-лент.
В разработке несколько моментов поменялось
Во-первых, я добавил докер с постгресом в тесты. Теперь можно тестировать всякую логику, завязанную на базу, и это очень удобно. Не надо мокать, не надо использовать симулякры, любой тест может по запросу получить хэндл на базу со всеми миграциями и тестировать, что надо. Тесты изолированы, вообще никаких проблем.
В-вторых, про удаление rss-постов из фида. pcom, как известно, продукт странный, заточенный на минимальный фронтенд. Для динамики используется stimulus.js с небольшим набором контроллеров, который закрывает всю динамическую часть. Плюс такого подхода, конечно, в простоте. В отличие от современных SPA, я почти никогда не думаю про фронтенд при разработке, он просто незаметен. Из минусов, сложную динамику делать сложно, все, что не вписывается в стандартные паттерны, делать сложно. Т.к. в связке с stimulus.js я использую htmx, то приходится женить одно с другим. В stimulus.js у меня определен контроллер action, который позволяет в одну секунду прикрутить еще одну кнопку на сайт, но до сегодняшнего дня он был сильно ограничен - исключительно только обновление страницы в случае успеха. Такой подход работает на удивление бодро, но на тяжелых или длинных страницах уже не так хорошо. В htmx используется другой подход - можно любой элемент превратить в ajax ручку и заменить произвольный кусок страницы html-ем из ответа от сервера. Когда-то такой подход работает, но в каждом конкретном случае прописывать hx- аттрибуты не хотелось, как не хотелось везде возвращать html, но хотелось получить все остальные плюхи от htmx. Например, в возвращаемых хедерах можно послать эвент на страницу, изменить способ модификации разметки и много что еще. После нескольких итераций удалось поженить одно с другим, и теперь можно использовать контроллер, но управление ответом передавать htmx.
Я пока на сто процентов уверен, что был бы гораздо более несчастлив с любым фронтенд фреймворком и его тысячей зависимостей, и pcom никуда бы не уехал.
В третьих, я этот раз я активно использовал Windsurf + Claude Sonnet 4.5. Получилось, как обычно - многие задачи решались на ура, но в паре задач агент начинал закапываться, и незаметно жрал все сэкономленное время. В одном из случаев я в первый раз решил по экспериментировать с другими моделями, и GPT-5.2 Medium Reasoning смог не споткнуться и решить проблему, в которой буксовал Клод. Смешно, но почти сразу после этого оказалось, что можно было не изобретать велосипед и не городить хаков, а просто обновить проблемную зависимость, и проблема ушла.
ЖЖ обновляться не будет, посты переносить не буду.
В этом блоге есть RSS, скоро (или не очень) будет возможность подписаться на апдейты по почте.
Комментировать анонимам не разрешено и не видно, если хочется написать, напишите в телегу - https://t.me/dima_mnogo_pishet
This month has been really productive in terms o new features. I've demoed pcom on Amsterdam Go lang meetup and one thing is striking - it's hard to get people on the platform because when they land there, they have no content to look at. Since we've introduced public posts some time ago, it doesn't really make sense to have no way to explore them.
From now on we have a new page called "Explore" which will have all the public posts from users on the platform. Since every user can choose to hide their profile either from internet or from users they have no connection with, the feed will respect that. Also, no comments in this feed for now until we figure out how to do this properly. What will be added at some point is RSS feed for this page.
I've decided to make an experiment and start writing announcements about new features as public posts to start filling in the feed!
Стоя перед зеброй, я крепко задумался. Вокруг была весна, рабочие перегородили часть дороги и ремонтировали асфальт, в воздухе носилась такая свежесть, что даже грустить не получалось. Все вокруг кричало о новом витке года - яркое солнце, голые еще деревья, на ветках которых грудились набухшие почки. Рядом копились велосипедисты, тоже весенние. Хоть и было холодно, но все были раскрытые, румяные, готовые сорваться и покатить дальше. Сегодня я не катил.
Не катил, потому что специально вышел прогуляться, и эту мысль я нес с собой. Хорош сидеть! Современный человек рождается, живет и умирает сидя, отдельные люди - лежа, и совсем редкие, уникальные - стоя или на ходу. Я не хотел, чтобы смерть нашла меня в кровати, ну ли на диване, поэтому пошел гулять. Чем больше отшагаю, тем больше вероятность, что когда-то, не сейчас, бах, и окочурюсь прямо в пути. Окружающие граждане начнут кучковаться вокруг, разглядывать мои штаны, ну или что обычно разглядывают у свалившегося наземь мужчины, а потом вперед протиснется женщина, скажет всем, что она - доктор, и ринется щупать мой пульс нитевидный и делать мне искусственное дыхание. И знаете, может в этот раз-то я коньки и не отброшу, потому что может женщина-доктор - красивая, а от искусственного дыхания будет щекотать нос. Открою глаза, чихну и зайдусь в кашле, а потом перевернусь, встану на четвереньки и так далее. Толпе смотреть больше не на что, штаны я скоро унесу от них на себе, а доктор еще раз внимательно посмотрит в мои глаза и серьезно скажет, как отрежет, что покажитесь, гражданин, непременно врачу.
Справа застрекотал отбойный молоток, трамбовали землю. Традиция такая, что ли. Каждый год именно в этом месте раскапывают, долго тянут кабель туда-сюда, стоят, смотрят вниз, иногда с картой сверяются, но нет, ничего не получается, потому что на следующий год опять плитку разбирают, копают и опять смотрят. Ну а потом, закапывают и трамбуют как сейчас. Два раза в год город будто сдается под натиском строителей и муниципальных работников, и они уже льются реками по улицам и нападают на клумбы, красят заборы и устраивают всякий другой беспредел, после которого город выглядит как маленький мальчик, которого мама на первое сентября в школу одела и, наслюнявив, приклеила челку, как надо. Мальчик выйдет на улицу и первым делом разлахматится, и город мой дождется, когда работники уйдут, и взлахматится не хуже.
Загорелся зеленый, я пошел дальше.
День выдался хороший, и я запилил кучу всего.
Открыт к дальнейшим предложениям.
Я думаю, что надо бы и дальше про видимость думать. Действительно проблема, если друзьям в лом регистрироваться на сайте, но защищать посты тоже неплохо. Можно сделать авторизацию для отдельных постов. Либо через пароль, либо как еще. В ЖЖ вроде был такой функционал, но не помню, чтобы его кто-то использовал.