DEV: Рубиновые тона
3.35K subscribers
152 photos
2 videos
8 files
1.02K links
Анонсы новых видео о программировании (Ruby/Rails, Solidity/Ethereum, Python, JS и не только), практические советы, обзор полезных инструментов и новости из мира IT
Download Telegram
Сегодня... просто музыка. Внезапно для любителей оперы, прямиком из театра. От лучшей части группы Ravens Die Laughing. Худшая часть (то есть я) в это время просто пила пиво - вероятно, это и к лучшему 😂 https://www.youtube.com/watch?v=0vx8UkcMwa8
🆒6
Гитхабу что-то поплохело, на все коммиты пишет 😄
🤯3🍾2
Хотел поделиться небольшим трюком, который позволяет легко сгенерировать файлы sbom и добавить аттестацию для приложений Go, которые компилируются через Goreleaser в GH Actions. Имея эти данные, любой может проверить происхождение файла, контрольные суммы (которые также подписаны отдельно) и удостовериться, что билд реально делался в этом репо. Конечно, это не докажет, что в коде нет каких-то скрытых нехороших штук.

В общем, в сам action добавляются разрешения

permissions:
contents: write
id-token: write
attestations: write
artifact-metadata: write


Потом ставятся такие штуки перед go releaser:

     - name: Install Syft
uses: anchore/sbom-action/download-syft@v0

- name: Install Cosign
uses: sigstore/cosign-installer@v4.1.1


Следующим шагом запускается Goreleaser, а затем ставится аттестация:

      - name: Find checksum file
shell: bash
run: echo "CHECKSUMS_FILE=$(ls dist/*_checksums.txt)" >> "$GITHUB_ENV"

- name: Generate artifact attestation
uses: actions/attest@v4.1.0
with:
subject-checksums: ${{ env.CHECKSUMS_FILE }}


В самом же конфиге go releaser помимо обычных вещей добавляется:

checksum:
name_template: "{{ .ProjectName }}_{{ .Version }}_checksums.txt"
algorithm: sha256

sboms:
- artifacts: archive

release:
draft: false
prerelease: auto
mode: replace

changelog:
disable: true

signs:
- id: checksums
cmd: cosign
signature: "${artifact}.sigstore.json"
artifacts: checksum
args:
- sign-blob
- "--bundle=${signature}"
- "${artifact}"
- "--yes"


После этого всё сделается "само". Затем через Cosign любой может сделать верификацию, либо посмотреть аттестацию прямо на GitHub
7👍5
Примерный список команд из прошлого видео тут https://gist.github.com/bodrovis/4c65951e81e9139585aa2b351eb8203c

Но это самый базовый набор, в идеале ещё врубить BBR, разобраться с DNS, защитить сервер и прочее
9👍5💘2🙏1
Сегодня нашёл интересную штуку (с трудом, так как наши друзья, разрабатывающие xray-core, очень любят писать весь changelog на китайском).

Оказывается буквально несколько дней назад они добавили поддержку Finalmask - это дополнительный слой маскировки трафика поверх обычных транспортов вроде XHTTP/REALITY/TLS.

Там есть несколько вариантов работы. Самый простой это fragment - "мягкая" фрагментация начала соединения. Он режет стартовые пакеты, например TLS ClientHello, на несколько частей с небольшими задержками. За счёт этого DPI сложнее распознать протокол по первому крупному и "красивому" пакету. Плюс fragment в том, что он почти не ломает совместимость и обычно даёт минимум побочек. Это, конечно, не волшебная таблетка, но в целом штука неплохая.

Например, можно при желании использовать это на участке между двумя вашими серверами. Для этого на промежуточном сервере просто пишется вот такое в раздел streamSettings (для outbound)

        "finalmask": {
"tcp": [
{
"type": "fragment",
"settings": {
"packets": "tlshello",
"length": "100-200",
"delay": "10-20",
"maxSplit": "3-6"
}
}
]
}


На сервере-получателе ничего менять не надо. Учтите, что xray нужно обновить по крайней мере до версии 26.3.27.

Есть и более мощная штука, называется sudoku. Она не просто дробит поток, а меняет его внешний вид по согласованному правилу/паролю между клиентом и сервером. Это сложнее, поэтому обе стороны должны поддерживать sudoku и иметь одинаковые настройки. Плюс sudoku в том, что трафик становится менее похож на стандартный Xray/REALITY/XHTTP и хуже ловится простыми сигнатурами.

Увы, похоже на участке между двумя серверами это особо работать не будет, если на сервере-получателе (сервер Б) стоит caddy и работает как reverse proxy. Зато это можно настроить между клиентом и первым сервером вот так, тоже в streamSettings, но для inbound:

  "finalmask": {
"tcp": [
{
"type": "fragment",
"settings": {
"packets": "tlshello",
"length": "100-200",
"delay": "10-20",
"maxSplit": "3-6"
}
},
{
"type": "sudoku",
"settings": {
"password": "длинный пароль",
"paddingMin": 8,
"paddingMax": 64
}
}
]
}


Но на клиенте обязательно тоже нужно настроить finalmask. Так, v2rayn это уже умеет, там просто жмётся в расширенных настройках finalmask и вставляется json вот такой

{
"tcp": [
{
"type": "sudoku",
"settings": {
"password": "тот же пароль",
"paddingMin": 8,
"paddingMax": 64
}
},
{
"type": "fragment",
"settings": {
"packets": "tlshello",
"length": "100-200",
"delay": "10-20",
"maxSplit": "3-6"
}
}
]
}


Далее там можно сформировать share link (она довольно большая тк кодируется json). Другие клиенты это умеют не все. Streisand - нет, happ - для винды вроде да, для мака не похоже, onexray - да, v2rayng - вроде должен, но там судя по всему только в пре-релизной версии. Но думаю в ближайшие месяцы это добавят много где
17👍8🔥4
Разбираем лабораторную схему Xray XHTTP split, где upload и download идут через разные публичные endpoints: up-сервер принимает исходящий поток, down-сервер отдаёт клиенту основной download, а обе половины сходятся в один Xray backend через приватную сеть. https://www.youtube.com/watch?v=c0ZZFIV6kPs
❤‍🔥145
Друзья, я тут совершенно неожиданно заметил, что Telemt как-то *слишком* много пишет в логи даже если поставить log level в normal. Не очень понятно, баг ли это, но только за сегодня он умудрился написать 160 тысяч строк, а всего его лог-файл занял 2 гигабайта 😄

Если используете эту штуку, я настоятельно советую проверить логи и угомонить его (например можно в override сделать RUST_LOG=warn или просто выставить в конфиге silent
👍12👎1💯1
😁30🙈12💅2🔥1
Друзья, помните пост про sing-box и unbound? После него подумал: вот уж где ИИ реально выручает, так это в валидации конфигов и проверке правил. Сидеть и глазами вычитывать километровые JSON'ы или маршруты — удовольствие ниже среднего. А агент это схомячит за секунды и ещё подсветит, где подводные камни. Тесты авто-писать — та же история: делать лениво, а поручить машине — самое то.

У Guide DAO как раз вышла серия курсов под такой инженерный подход.

OpenClaw-инженер — агентурная ОС: контекст, SKILL.md, управление памятью и бюджетом, суровая инженерия.

Claude Code-разработчик — фабрика артефактов: превращаем поток мыслей в рабочее ТЗ с ограничениями и критериями.

Вайбкодер — от идеи и spec-kit до MVP с параллельными агентами и деплоем на Railway/Vercel.

Разработчик AI-агентов — самый хардкорный: OpenAI Responses API, RAO/ReAct, MCP, слои памяти, evals и кэпстоун LLM Wiki.

Плюс скоро появится курс по созданию продукта и его монетизации. Он идет в подарок к остальным курсам.

Я сам присматриваюсь к OpenClaw и агентам: один раз настроил систему — и она работает как часы, вместо того чтобы дёргать модель за ручку каждый день.

По моему промокоду KRUK дополнительная скидка 15% до 20 мая (суммируется со скидкой на сайте)👇
https://www.guidedao.xyz

Кто уже строит агентные системы — делитесь опытом! 🤖
👍8🔥5❤‍🔥2🤝1
У меня тут вышел новый пост со скучным названием "Отношения эквивалентности и разбиения множества в абстрактной алгебре". На самом деле, это довольно важная штука и мы её использовали (хоть и называли так), когда разбирали всякие поля, где строятся эллиптические кривые, и вообще многие принципы в криптографии. Так что можно ознакомиться, просто чтобы составить лучшее представление https://bodrovis.tech/posts/otnosheniya-ekvivalentnosti-razbieniya-mnozhestva-v-abstraktnoy-algebre/
12👍3