• Записи 1610
  • Теги 119
  • Комментарии 3450

Лог жизни

Болото жизни и метания из стороны в сторону

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

Был момент, когда попытался вернуться к MLFW и сделать из него компонентный framework в духе того же SvelteKit или Nuxt, но всё упёрлось в то, что не смог придумать, как нормально сделать описание HTML, CSS и JavaScript для компонента в одном файле шаблона, да ещё так, чтобы можно было использовать разные шаблонизаторы.

Потом начал было добавлять поддержку PWA в IntB. Как оказалось, не зря я это столько откладывал: полезли неожиданные проблемы, в частности, не работает обработчик события fetch (просто не вызывается, даже breakpoints не срабатывают). Впрочем, кажется, выяснил, в чём может быть дело: в том, что файл с service worker лежит не в корне, а в стилевом каталоге (т.к. для разных форумных стилей нужны разные service worker).

Затем начал было переносить SiteKnockerBot на другой сервер с FreeBSD. Прогнал десяток раз в тестовом режиме — вроде всё хорошо, ложных срабатываний бота не наблюдается. Начал было делать для него скрипт автозапуска, и тут оказалось, что в RC-скриптах FreeBSD нет встроенного механизма перезапуска сервиса в случае его падения. (И вообще, сидя под FreeBSD, испытываю очень противоречивые чувства: с одной стороны, цельная система, сделанная с умом, с другой — чувствую себя так, как будто отброшен лет на 15 назад. Например, раздражает, что опции нужно писать сразу после команды, до имён файлов. Т.е. написание команд вроде ls ./ -la или chown xxxxpro /home/xxxxpro -R даёт совершенно не тот результат, к которому я привык в Linux: команды начинают пытаться искать файлы с именами -la и -R.) Точнее, для перезапуска сервисов есть отдельная утилита daemon, которая умеет это делать. Но вот что странно: с проверяющей частью, написанной на Go, она отрабатывает нормально, а с интерфейсной PHP-частью — нет: выдаёт permission denied непонятно на что, причём даже если запускать с правами rootа.

Весь четверг и половину пятницы я безрезультатно пытался заставить её работать. Потом сдался, увидев где-то на StackOverflow упоминание сторонней утилиты immortal. Под ней всё получилось наоборот: PHP-часть запустил без каких-либо проблем, а вот в проверяющую часть на Go никак не могу передать параметр командной строки, содержащий пробелы (строка для подключения к БД) как единое целое. Перепробовал все мысленные способы экранирования кавычек и пробелов, но безрезультатно. Возможно, в immortal такого извращения просто не предусмотрели. Сейчас вот никак не могу определиться, как лучше поступить: то ли написать shell-скрипт, засунуть в него все параметры (из ком. строки всё работает), и из immortal вызывать его, либо же сделать нормально — вынести настройки БД и токен бота в .env-файл и читать из него, но это требует больше времени. А мне все перестановки между серверами надо бы успеть закончить к 21-ому числу, так как в этот день истекает проплаченный период для IP-адреса на сервере на Cloud.Ru, от которого я хочу потом отказаться.

Ещё, глядя на то, что произошло с ЖЖ, возникло желание написать его аналог с современным интерфейсом (взяв за основу Pinafore или Semaphore) и частичной поддержкой Fediverse, причём сделать это на SvelteKit с полноценной API и микросервисах на Go. Но ужасает мысль о том, сколько это займёт времени, если даже куда более простые действия, типа тех, что я описал выше, занимают столько времени… К тому же если делать его как self-hosted систему, то тут, наоборот, желательна максимальная простота и монолитный, а не микросервисный подход. И вообще, лучше писать на PHP, чтобы работало на любом shared-хостинге. Если же вдруг замахнуться на централизованную площадку, то тут возникает ещё больше вопросов: нужна мощная инфраструктура, а под это — коммерциализация, а для этого — решение кучи не технических вопросов, заниматься которыми я хочу чуть менее чем совсем. Плюс, если площадка сколь-нибудь заметной, потребуется взаимодействие с регулирующими органами.

1 комментарий:

4X_Pro
1

Мда, разобрался с daemon. Оказывается, всё было гораздо проще: нужно было рабочий каталог не с его помощью пытаться задать, а в самом rc-скрипте через service_chdir. Казалось бы, мелочь, но такие мелочи приводят к потере целых дней!

Написать комментарий
Прикрепить файлы: (не более 4 файлов, не более 102400 Кб каждый, 102400 Кб всего)


Задать вопрос