Записки древнего вебмастера 📟
325 subscribers
166 photos
2 videos
5 files
642 links
https://ancient-web.ru
Сборник заметок от веб разработчика.
*) Не имею профильного образования.
*) В сфере разработки с 2015 года.
*) Начинал еще тогда, когда разработчики все были фулстеками.
*) Symfony и Vue - топ!
Download Telegram
https://github.com/anthropic-experimental/sandbox-runtime
Простая утилита для сэндбоксинга.
# Network restrictions
$ srt "curl anthropic.com"
Running: curl anthropic.com
<html>...</html> # Request succeeds

$ srt "curl example.com"
Running: curl example.com
Connection blocked by network allowlist # Request blocked

# Filesystem restrictions
$ srt "cat README.md"
Running: cat README.md
# Anthropic Sandb... # Current directory access allowed

$ srt "cat ~/.ssh/id_rsa"
Running: cat ~/.ssh/id_rsa
cat: /Users/ollie/.ssh/id_rsa: Operation not permitted # Specific file blocked

Вообще, написана для безопасного запуска агентов.
Но может применяться для любых процессов.
Изначально написана для изолирования AI агентов.
Не использует сложные контейнеры, огораживает все нативным Bubblewrap в linux.
3
https://habr.com/ru/articles/994622/
Как же этого не хватало.
- Цветные кнопки для ботов. Мелочь, а как сильно упрощает взаимодействие с пользователем!
- Темы в тет-а-тет диалогах с ботом.
4
Записки древнего вебмастера 📟
https://www.verdaccio.org/ Локальный приватный репозиторий npm пакетов. Кейсы: - Собственные пакеты, которые можно шарить с командой, не покидая локального окружения. - Кеширующий сервер. С доступом к основному npm сейчас бывают проблемы. - Использование…
В свете недоступности зеркал npm, решил все-таки поднять verdaccio для кеширования пакетов.
Естественно, не хотелось бы, чтобы кто попало мог использовать это зеркало.
Ставим по инструкции: https://www.verdaccio.org/docs/docker
Конфиг берем отсюда: https://github.com/verdaccio/verdaccio/blob/master/packages/config/src/conf/docker.yaml
Порт наружу не прокидываем, прячем за nginx.
В nginx делаем allow {Ваш ip}; disallow all;
Таким образом получаем зеркало, которое доступно только с одного айпи.
3
Записки древнего вебмастера 📟
https://github.com/mageddo/dns-proxy-server А вот более комплексный вариант для доступа к контейнерам по их имени. Кастомная конфигурация для своих каких-то доменов Доступ к контейнерам по их именам Фолбек в виде обычных dns серверов, если не удалось…
Спустя долгое время использования, выявил такие минусы:
- Периодически происходил "залипание" сервиса. Он ловит внутри себя какие-то Java ошибки и не падает, а просто перестает резолвить
- Если помимо резолвинга докеров нужно еще что-нибудь, могут возникнуть непредвиденные "приколы"

Пришло новое решение:
Есть такой специальный домен *.localhost.
По соглашению, он всегда резолвится на 127.0.0.1 или его v6 альтернативу.

Допустим, у нас есть docker compose с тремя сервисами, которые хотелось бы из браузера по имени получать, а не перебирая порты на локалке.
Добавляем в этот стэк еще caddy server, который биндится на 80 (и 443) порты хостовой машины.
А дальше уже caddy резолвит *.app.localhost на нужные сервисы.
Приятный бонус: браузеры воспринимают этот специальный домен как доверенный, поэтому можно использовать самоподписанные сертификаты.
При такой схеме даже mkcert с его рутовым сертом не нужен.
1
https://phpqa.io/index.html
Хороший список библиотек, которые помогут сделать php код лучше.
4
https://github.com/vertti/preflight
Небольшая полезная утилита для докер контейнеров.
Проверяет:
- Наличие команды
preflight cmd node                            # exists and runs
preflight cmd node --min 18.0 # version constraint
preflight cmd ffmpeg --version-cmd -version # custom version flag


- Наличие и правильность переменной окружения
preflight env DATABASE_URL                       # exists and non-empty
preflight env MODEL_PATH --match '^/models/' # matches pattern
preflight env APP_ENV --one-of dev,staging,prod # allowed values


- Наличие файлов и директорий
preflight file /models/bert.onnx --not-empty   # file exists and has content
preflight file /var/log/app --dir --writable # directory is writable
preflight file /app/entrypoint.sh --executable # script is executable


- Healthcheck api
preflight http http://localhost:8080/health         # basic health check
preflight http https://api.example.com --status 204 # custom status code
preflight http http://localhost/ready --retry 3 # retry on failure


И многое другое: https://github.com/vertti/preflight/blob/main/docs/usage.md
Для каждого юзкейса описан баш скрипт, который эта команда может заменить.
2
Forwarded from FrontEndDev
UI паттерны для асинхронных процессов и фоновых задач

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

https://blog.logrocket.com/ui-patterns-for-async-workflows-background-jobs-and-data-pipelines/
2
https://requestinspector.com/ - Один из кучи сервисов для перехвата запросов.
Зачем: быстрое тестирование вебхука. Просто чтобы убедиться, что приходит что-то нужное.

Альтернатива, скиданная за пару минут:
const http = require('http');

const server = http.createServer(async (req, res) => {
const chunks = [];

for await (const chunk of req) {
chunks.push(chunk);
}

const body = Buffer.concat(chunks).toString();

console.log('=== Request ===');
console.log('URL:', req.url);
console.log('Method:', req.method);
console.log('Headers:', JSON.stringify(req.headers, null, 2));
console.log('Body:', body || '(empty)');
console.log('===============\n');

res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('OK');
});

const PORT = process.env.PORT || 3000;

server.listen(PORT, () => {
console.log(`Server running on http://localhost:${PORT}`);
});


Дальше, при помощи localhost.run, делаем адрес доступным извне.
Получаем собственный вариант уловителя запросов.
1
https://habr.com/ru/articles/1001030/
Раньше go fix занимался починкой очевидных нюансов.
Теперь же это полноценный инструмент по апгрейду кода.
В статье подробно описано что именно он "фиксит".

p.s. Напомню, что для php есть https://github.com/rectorphp/rector. Похожий инструмент, который позволяет поднять версии php, symfony, etc.
1
https://webmin.com/
Готовая панель управления сервером для тех, кому лень заморачиваться с девопсингом.
Не стоит ожидать большого спектра ПО. Для веб-сервера там, например, Apache. Который, лично я, уже давно не вижу смысла использовать на каких-либо новых конфигурациях.
2
Forwarded from Иван Бочкарев
Всем привет!

Я к вам с хорошей новостью: кому не хватало документации переведенной на русский язык по Nuxt и были проблемы с доступом к сайту документации - то теперь можно использовать сайт с актуальной документацией https://nuxt-ru.vercel.app/

Все актуализировано, деплой работает!

Спасибо группе активистов которые помогли с переводом!
1
https://symfony-init.dev/
Инициализатор symfony проектов для самых ленивых.
Подробнее в статье https://habr.com/ru/articles/1003678/
3
https://github.com/rrd108/vue-mess-detector
Статический анализатор кода для vue проектов.
Может натолкнуть на очень дельные мысли.
p.s. Посмеялся, когда в зависимостях увидел rimraf. Видимо, если твой код достаточно отстойный - он его просто удаляет :D
2
Forwarded from Пых (Валентин Удальцов)
Типабезопасный код — когда разработчик подавляет замечания статанализатора.

#пыхослов
3
Forwarded from Golang
👣 ReMemory: Защита секретов с помощью друзей

ReMemory позволяет шифровать ваши файлы и делить ключи доступа между друзьями с помощью метода Шамира.

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

🚀Основные моменты:
- Шифрование и разделение ключей для безопасности.
- Восстановление работает полностью офлайн.
- Друзья не могут получить доступ к секретам по одиночке.
- Простота использования для не технических пользователей.

📌 GitHub: https://github.com/eljojo/rememory

🚀Max

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
3