Обновления в блоге

Последние пару неделю работаю над блогом. До этого я писал, что он работает на Nuxt.js + Wordpress. И до начала октября все было именно так. Nuxt.js на фронте, бэкенд (если можно так выразится) на Wordpress. И утверждал и продолжаю утверждать, что панель управления Wordpress одна из самых удобных.

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

Еще один момент — система плагинов и технически сложная кастомизация. Чтобы что-то сделать в админке, например, добавить кастомные поля к посту, нужно ставить плагин. Все это здорово, но кажется, что ты не владеешь продуктом. Если завтра плагин обновится и с ним будет проблема, это может поломать сайт. Так совпало, но спустя неделю после переезда у Wordpress и wpengine был спор о правах и отчислениях. Дошло до того, что команда Wordpress выпустила свой плагин Secure Custom Fields.

Доработка темы для Wordpress в 2024-м уже не кажется простой задачей. Темы стали сложнее, в них куча логики и разбираться, если честно, нет ни времени, ни желания.

Так что с недавнего времени я переехал на Ruby on Rails. Это интересный опыт. С одной стороны, хотелось посмотреть версию 7.2 в работе. С другой, хотелось быстренько сделать проект так, как хочется внутри, без лишнего усложнения. Без проблем и экспериментов не обошлось.

Попробовал Active Storage, понял что мне не нравится это решение и откатил всё обратно. В итоге, решил, что картинки я буду заливать на CloudFire при создании поста, а удалять их буду вручную. Решение не совсем идеальное, но оно работает и на текущий момент меня устраивает.

Вообще старался сделать всё как можно проще. После админки Wordpress это сильно заметно 😀

Из функционала: подписка на RSS, оптимизация и конвертация картинок в webp на стороне рельс, а не на CloudFire, собственный сборщик статистики. Не люблю Google Analytics, а большинство других аналитик платные. Мне же интересно общее количество посещений, страны и устройства. Нет так уж много, согласитесь. Ранее я использовал SimpleAnalytics. Отличный сервис, но на этот раз решил реализовать свою версию. Ну и конечно же самый настоящий серверный рендеринг приготовленный на самом настоящем сервере. Без костылей и хаков 😀.

В планах есть еще идеи по улучшению и доработки. Например, email рассылка, конвертация :) => 😀, хранение черновика заметки в localStorage, кросс-постинг в телеграм канал и прочие нужные и ненужные штуки. В общем, всё то, что неизбежно ведет систему к усложнению.

Личный рекорд: 5км за 21:12

20241014_085315_b51d07.webp

Сегодня я пробежал пятерку за 21:12. Я когда-то смотрел на такую цифру и думал "ну чуть-чуть подготовиться и можно пробежать". Сейчас конечно совсем иначе на эту цифру смотрю. Подумать только, я пробежал километр за 4 минуты и 14 секунд. И так пять раз. Хотя как мы знаем (из прошлых постов) бежать пришлось не пять раз, а шесть раз. Потому что заявленная пятерка на самом деле шесть километров.

Но последний, шестой километр, это отдельный разговор. Если считать его, то общее время 26:13, а дистанция по часам 6,12 км. И вот он прям ощущался всем телом: ноги стали немного ватными, а в голове возникла мысль "А зачем?". И вот эта мысль очень коварная. На последних шестиста метрах меня обогнала девушка. Я заранее знал, что обгонит, она очень хорошо шла, потом перестроилась за меня, чтобы ветровой поток уменьшить и технично обошла в конце. И вот когда она обогнала, появилась мысль "а зачем?". И это вроде какие-то секунды пока ты пытаешься побороть желание притормозить, но это очень долгие секунды. Мало того, что ноги бежать должны, так еще и надо придумать как заставить себя ускориться. В итоге на последней сотне метров я подумал, что если не вжарить, то меня еще кто-то обгонит. И вжарил. Никто конечно не обогнал 😀

Сам очень доволен результатом, потому что всё было по плану!

PS: Спасибо за фото Анастасии Салтыковой

Как подключить кастомный домен на Cloudflare к Railsway

Перенес управление доменом на Cloudflare. И пришлось немного почитать документацию, как же настроить и соединить сайт на railway.app и домен на Cloudflare.

В первом приближении всё казалось просто. Railway.app генерирует проекту CNAME. Казалось бы бери, подставляй конфиг и всё. На практике оказалось чуть интереснее и документацию пришлось почитать немного внимательнее.

Сохраню для истории ссылку настройка корневого домена Cloudflare

Новисадская почти шестерка

Уже на следующей неделе новисадская пятерка. Которая совсем и не пятерка, а аж шестерка. Мы это уже тысячу раз обсуждали: готовишься бежать пять, бежишь и где-то на четвертом километре закрадывается сомнения. Кажется, где-то ошибка. Выбегаешь все пять… И до финиша еще километр почти. А ты уже, так сказать, в пижаме. И бежать-то может и хочется, но не можется.

Но в этом году, я опытнее. Хаха. Сразу готовлюсь к шести. Иногда готовлюсь, а иногда прокрастинирую. Вот даже сейчас, наблюдая как темнеет на улице, я гадаю какие же все таки у меня шансы выйти и пробежать 12 км, с какими то пугающими ускорениями. Шансы примерно 50/50. Если какой-нибудь пирожок не запрыгнет в меня в ближайший час, то шансы на бег сильно увеличатся. Но знаете, пирожки в это время суток очень прыгучие. Буду наблюдать за ситуацией.

Про технологии

Этот блог работает на WordPress. Точнее его часть — админка. А фронтенд на nuxtjs. Когда-то я много работал с WordPress. Был даже модератором русскоязычного сообщества, делал темы и сайт на заказ. И вот что хочу сказать: панель управления WordPress была и остается одной из лучших. Знаете слоган у Эппл “это просто работает”. Так вот то же самое можно сказать про админку вордпресса. Кликаешь пару кнопок и всё, можно писать.

Но за такое удобство приходится платить. Размер базы растет как на дрожжах. Версионность и черновики штука хорошая, но некоторые вещи сохраняются избыточное количество раз. В каталоге с изображениями через некоторое время начинается хаос, через полгода-год туда вообще лучше не смотреть — непонятно используются ли загруженные картинки или уже нет. Плагины и темы тоже стоят отдельной дискуссии. За столько лет развития WordPress написано огромное количество плагинов. Часть из них уже давно стали платными и перешли на систему месячных подписок. В результате обновления от разработчиков приходят чуть ли не каждую неделю и следить за всем стало очень сложно. WordPress стал очень сложным продуктом.

Но сложными стали многие системы. Помню как лет десять назад раскладывал в директориях css и js и прогонял gulp-task, чтобы мои псевдокомпонентики склеивались в банды. Потом появился вебпак, react/vue и компоненты стали настоящими, не псевдо. Потом структура приложений и сервисов усложнялась и вот уже появляются различные архитектурные слои. Нельзя просто взять и, простите, наговнякать. Надо все разложить по полочкам, настроить вебпак, отрастить бороду. Усложнился и javascript. Вот менеджеры состояний, вот веб-сокеты, local first подход. В какой-то момент проектирование архитектуры пет-проектов стало такой, что пока все подготовишь, уже запал кончился. А список пакетов из npm, которые еще надо установить — нет. Не то, чтобы это прям плохо, это естественное развитие и взросление системы. Просто стало сложно следить и управлять всем этим.

Но я тут начал книжку про Ruby on Rails читать. И для закрепления знаний, конечно писать код. И знаете что? В мире есть место где можно говнякать. Что 10 лет назад, что сейчас. Хочешь свалить все стили в assets/stylesheets? Пожалуйста. Хочешь вмонстрить кусок скрипта прямо во вьюху? Не возбраняется. Тем более, что это местами очень даже удобно. И вот я раньше сильно плевался от подобного подхода. Но сейчас… Не то чтобы я стал сторонником, но если кусок скрипта нужен только на этой странице, то может быть проще вздохнуть и добавить его туда.

И вот пет-проект на рельсах, где можно немного отступить от привычных норм выглядит каким-то глотком свободы. Уверен, что развивая проект, со временем он тоже станет сложным и его придется делать архитектурно красивым и структурированным. Но вот сейчас, кажется, я до конца понимаю как вышло так, что Ruby on Rails стал таким популярным, почему каждый год все ждут когда же он помрёт. А DHH раз за разом выпускает новую версию и RoR всё ещё популярен.

Мне кажется потому, что это то самое место, где все ещё можно г… Гибко решать свои задачи. Ну вы поняли 😀

🎂🎉😀

Сегодня мне 40. Когда мне было 20, те самые сороколетние казались мне такими старыми. Вчера же двадцатилетняя девушка говорила мне “вы” “из уважения”. Забавно, но сейчас в 40, я не ощущаю себя на этот возраст. Ну может 30, ну 35. Ну максимум 38. Но 40! Цифра-то какая.

Меж тем, что мы имеем на этот момент:

— Построили дом, посадили дерево, растим и так далее
— Пожил в двух странах не как турист, а прицельно, надолго. В одной понравилось, в другой не очень.
— Бегаю. Так как не бегал ни в 30, ни в 20.
— Работаю работу и, в целом, доволен ей.
— Научился понимать что мне нравится, а что нет. Разобрался в том, что и как работает для меня и почему я что-то делаю, а что-то не делаю.

И вот каждый пункт по отдельности хорош сам по себе. А все вместе они вообще представляют собой классную смесь из которой и состою я. И конечно же я очень рад, что меня окружают очень классные люди: родители, семья, друзья и просто знакомые. Я благодарен всем, потому что отчасти именно благодаря им я есть я. С днём рождения меня и спасибо всем причастным 🙂

Подборка ссылок #03

Интересная идея о дизайне url
Web-based трекер финансов с поддержкой local-first и упором на privacy.
How We Designed a White-Label In-Car Infotainment System — классная статья и проектировании интерфейса для Android Auto.
The State of ES5 on the Web — статья о том, что пора уже перестать транспилировать код в ES5 и вместо этого использовать современные стандарты.

Опубликую сразу несколько ссылок про VIM. Во-первых, это на справочник Vim help files. Во-вторых, это книга Practical Vim: Edit Text at the Speed of Thought. И ссылка на AstroNvim, если вдруг решите сменить VS Code и попробовать что-то новенькое.

Путь к освоению VIM: от плагина до Practical VIM

Решил разобраться в VIM. Вообще я часто пользуюсь им, для быстрого редактирования файлов. Этакая разовая работа. Но полноценно переключиться на работу с VIM у меня не получается. По умолчанию использую VS Code + VIM плагин. Получается неплохой симбиоз: удобные хоткеи VS Code + удобная навигация внутри файла. Но одно дело удалять строчки и прыгать туда-сюда по файлы, а другое дело полноценно работать с большим проектом.

Обычно многие статьи заканчиваются командами h, j, k, l. А дальше читайте официальную документацию, там всё подробно описано. А выйти-то как? А как отступ добавить?

Так вот, отступ в режиме NORMAL задаётся через двойное нажатие >. И тут вот какая проблема: статьи-то на самом деле хорошие, просто команд и сценариев так много, что всего не перечислишь. А еще есть куча разнообразных форков со своими доработками. Например, я пользовался LunarVim. В целом, было неплохо, но некоторые вещи долгое время не исправлялись. И вот однажды я полез искать как же поправить один баг и с удивлением обнаружил, что проект не развивается.

Решил попробовать Astronvim. Проект оказался поинтереснее: быстрее, более структурированнее. И как-то так увлекся настройкой (что-то добавил, что-то переназначил), что в итоге сделал свой форк.

В какой-то момент, устав читать документацию и статьи, я купил себе книжку Practical VIM. Сначала читал демо, потом еще раз читал демо. Понял, что очень понравилось. Простой английский, легкое повествование. Текст читается прекрасно. К слову, у меня есть ещё одна книга про VIM “Изучаем vi и VIM”. Так вот в этой книге я продвинулся всего на четыре главы. В общем, “Practical VIM” понравилась больше.

И вот к примеру пара цитат из книги:

The combination of operators with motions forms a kind of grammar. The first rule is simple: an action is composed from an operator followed by a motion. Learning new motions and operators is like learning the vocabulary of Vim. If we follow the simple grammar rules, we can express more ideas as our vocabulary grows.
Neil, Drew. Practical Vim (pp. 24-25). Pragmatic Bookshelf. Kindle Edition.

и

when an operator command is invoked in duplicate, it acts upon the current line. So dd deletes the current line, while >> indents it.
Neil, Drew. Practical Vim (p. 25). Pragmatic Bookshelf. Kindle Edition.

Ещё книга содержит много отсылок к документации. При желании можно пойти и узнать больше деталей. В общем, книга классная, рекомендую.

Что касается VIM и ежедневного его использования, могу сказать, что в процессе чтения книги снова появился живой интерес к использованию. Некоторые вещи уже не выглядят болью. Еще один важный момент — готовый настроенный конфиг. Возможно, когда-нибудь я попробую всё настроить с нуля. Но вот прямо сейчас хочется использовать то, что работает из коробки. Поэтому решения вроде AstroNvim хорошо подходят.

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

Вывода у статьи не будет. Скорее это просто чекпоинт на тему “вот узучаю VIM”.

Белградская десятка

20241014_081056_87b887.webp

Ну что, сегодня 10км в Белграде. Вчера вот съездил, получил стартовый пакет. В этом году футболка кислотно-зелёного цвета. Прям под цвет кроссовок 🙂

К этому старту я готовился. Вот прям готовился-готовился. И надежды были пробежать по 4:50. Но последнюю неделю то спину ломит, то хвост отваливается. Поэтому пришлось скорректировать цель. Решил, что побегу не на скорость, а где-то в пол силы и 5:30 — 6 минут на километр уже будет хорошо. Впереди еще Новисадский забег в октябре и Бока в декабре.

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

20241014_081132_764bcc.webp

“Ребята, какие спортивные часы выбрать?”

Шёл 2024 год, а люди в интернетах до сих пор спрашивают какие спортивные часы выбрать. Обычно холивар идет про Garmin и Apple Watch. Иногда из толпы кто-то кричит Coros, Samsung, Huawei. Но обычно их заглушают поклонники Garmin и фанаты Apple.

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

Кто-то выбирает часы, читая исследования по точности измерения сердцебиения. Кто-то по количеству спортивных режимов. Есть ещё сравнения точности отслеживания сна, GPS, наверное чего-то ещё. Но всё это не имеет большого значения, хотя на момент покупки кажется очень важным.

Если начать заниматься спортом всерьез, например бегом, вам потребуются совсем другие датчики и инструменты. Например, нагрудный пульсометр. Это обязательная вещь, если вы действительно хотите следить за пульсом. Он точнее и быстрее определяет сердечный ритм и это очень важно. Особенно когда вы бегаете интервалы. Нет пульсометра, окей, измеряйте пульс вручную. Это всё еще лучше, чем доверять оптическому датчику. Потому что он медленный и изменения сердцебиения показывает не сразу, а с задержкой: вы уже в себя начинаете приходить, а на часах пульс под 160.

Умные часы дарят ощущение контроля сна. Вот же, графики на часах показываются. Но знаете, по настоящему контролировать сон можно только отправляясь спать вовремя. Графики в часах не помогут высыпаться. А если вы спите по 7-8 часов, то какая разница, сколько там у вас там минут глубокого сна?

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

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

PS: У меня Garmin, кстати 😀