Что бы агент не доставал запросами на какие то действия, нужно создать файл в корне проекта /.claude/settings.local.json
С содержимым:
{ "permissions": { "allow": [ "Bash(*)", "Read(*)", "Write(*)", "WebFetch(*)", "WebSearch(*)" ] } }
p.s Write(*) - можно не разрешать, лучше немного контролировать процесс.
Шуточный, но научно обоснованный проект генерации инфразвука 7–10 Гц. «Коричневая нота» — городская легенда.
Скорость звука в воздухе: c = 343 м/с (при 20°C).
Четвертьволновой резонатор — труба, закрытая с одного конца (динамик) и открытая с другого (излучатель). Резонансная частота определяется длиной.
Коррекция открытого конца: физическая длина трубы чуть короче λ/4 на величину 0.6 × радиус трубы.
Частота сердцебиения: 1,0–1,7 Гц (60–100 уд/мин).
Но опасен не резонанс сердца напрямую, а резонанс грудной полости: 4–8 Гц. На этих частотах возникает:
Исследования NASA (60-е годы) показали: диапазон 4–8 Гц при высоком SPL (>120 дБ) — наиболее дискомфортный для человека. Частота 7 Гц — прямо в центре этого окна.
Целевая частота проекта: 7 Гц (максимальный эффект). Альтернатива: 10 Гц (проще построить, эффект слабее).
Простейшая конструкция — четвертьволновой резонатор из канализационных труб.
Те же трубы можно сложить зигзагом используя колена 90°:
Transmission Line с постоянным сечением канала и демпфированием синтепоном.
1840 × 1090 × 290 мм — лежачий шкаф.
Три перегородки делят пространство на 4 равных канала. Перегородки чередуются: первая не доходит до правой стенки на 250 мм, вторая — до левой, третья — до правой. Воздух змейкой проходит все 4 канала.
Динамик (верх-лево) → Канал 1 → вправо 1800 мм ↓ щель 250 мм справа → Канал 2 → влево 1800 мм ↓ щель 250 мм слева → Канал 3 → вправо 1800 мм ↓ щель 250 мм справа → Канал 4 → влево 1800 мм → Порт (низ-право) Итого: 4 × 1800 = 7200 мм = 7,2 м
Синтепон укладывать рыхло, не утрамбовывать.
Аналогичен варианту 2, но длиннее для попадания в резонанс грудной полости.
2136 × 1108 × 336 мм
Проверка внутренней высоты: 5 каналов × 200 + 4 перегородки × 18 = 1000 + 72 = 1072 мм.
Динамик (верх-лево) → Канал 1 → вправо 2100 мм ↓ щель 200 мм справа → Канал 2 → влево 2100 мм ↓ щель 200 мм слева → Канал 3 → вправо 2100 мм ↓ щель 200 мм справа → Канал 4 → влево 2100 мм ↓ щель 200 мм слева → Канал 5 → вправо 2100 мм → Порт (низ-право) Итого: 5 × 2100 = 10 500 мм = 10,5 м
Обтекатели: треугольные бруски 60×60 мм, длина 300 мм (на всю глубину канала). 8 штук (по 2 на каждый из 4 поворотов). Для печати на Qidi Q2 (150×150): каждый разбить на 2 половины по 150 мм.
Наиболее эффективная конструкция. На 10–15 дБ громче TL при той же мощности.
Площадь сечения рупора в точке x от горла:
S(x) = S₀ × e^(m·x)
Нижняя граничная частота: fc = m·c / (4π)
fc = m·c / (4π)
Для fc = 7 Гц: m = 4π × 7 / 343 = 0,2564 м⁻¹
Горло: площадь диффузора 15” динамика S₀ = 855 см²
Рупор ставится устьем в угол комнаты (стена-стена-пол). Три отражающие плоскости увеличивают эффективную площадь устья в 8 раз. Это даёт +15–18 дБ и делает конструкцию реализуемой.
Площадь устья: 0,514 м². С угловым нагружением (×8): 4,1 м² — эквивалент рупора Ø2,3 м.
1786 × 2035 × 536 мм — высокий шкаф, ставится вертикально в угол.
Внутренняя высота: 220 + 344 + 538 + 843 + 3×18 = 1999 мм
Динамик (верх-лево, канал 1, h=220мм) → Канал 1 → вправо 1750 мм ↓ щель 200 мм справа → Канал 2 (h=344мм) → влево 1750 мм ↓ щель 200 мм слева → Канал 3 (h=538мм) → вправо 1750 мм ↓ щель 200 мм справа → Канал 4 (h=843мм) → влево 1750 мм → Устье 843×500 мм (низ-право) → в угол комнаты Итого: 4 × 1750 = 7000 мм = 7,0 м
Не нужно! В экспоненциальном рупоре синтепон убивает акустический трансформатор. Максимум — тонкий войлок на стенках каналов 1 и 2 для подавления стоячих волн по ширине.
Корпус ставится вертикально в угол комнаты, устьем (канал 4, широкий) вниз. Проём 843 × 500 мм направлен в стык стена-стена-пол. Зазор между устьем и стенами/полом: 50–100 мм.
┌──────────┐ Стена │ Канал 1 │ ← Динамик │ │ Канал 2 │ │ │ Канал 3 │ │ │ Канал 4 │ ← Устье │ └────┐ │ │ │ │ └──────────┴─────┘── Пол Угол комнаты
Требования: 15” (или 12–18”), long throw, Xmax ≥ 10 мм.
Варианты:
Критично: АЧХ от 5 Гц (большинство автомобильных усилителей режут ниже 20 Гц!).
Блок питания: 48В 10–15А для TPA3255 (или 36В — зависит от платы).
Для точного контроля диффузора на инфрачастотах:
⚠️ Инфразвук на высокой мощности опасен для здоровья.
Реальная резонансная частота может отличаться от расчётной на ±1 Гц. Плавно менять частоту генератора в диапазоне 5–12 Гц и искать резонанс по максимуму вибрации. Контроль: приложение-акселерометр на телефоне.
Проект создан в исследовательских и развлекательных целях. Автор не несёт ответственности за последствия использования. Будьте осторожны и ответственны.
Пока продукт достаточно сырой, а отдельного телефона для установки Макса - нет. Но выход - есть - скрытый функционал android - “Рабочие приложения”
И активировать его можно через приложение Shelter 1.9.1 / Обсуждение на 4pda
В итоге доступа к контактам - нет, к файлам - нет, ограничения жёстко задаются из основных настроек шелтера. И отключить можно в любой момент.
Пришло время проверить, как ИИ может рисовать инженерные 3D модели.
Накладка на квадратную вентиляционную шахту 150×150 мм. Закрывает шахту с запасом — пластина 210×210 мм, толщина 3 мм. Вокруг шахты остаётся рамка 30 мм для крепежа и декора.
Нижняя часть шахтного проёма отдана под раструб для подключения широкого плоского воздуховода. Верхняя — под решётку для свободного притока воздуха. Всё на одной пластине.
Широкая невысокая труба 204×60 мм снаружи, центрирована по ширине пластины (по 3 мм отступ с боков). Углы скруглены радиусом 5 мм. Выступает от пластины на 30 мм — на него надевается плоский вентканал. Стенка 3 мм.
Внутри — воронка: на дальнем от пластины краю проход 198×54 мм, ближе к пластине плавно сужается до 150×54 мм. Сужение только по ширине, по высоте проход одинаковый — 54 мм, сверху и снизу стенки по 3 мм.
Вырез в пластине 150×54 мм — точно совпадает с узким концом воронки, никаких уступов и полочек.
Выше раструба — зона 150×87 мм с пятью горизонтальными ламелями толщиной 3 мм, зазоры между ними около 12 мм. Отделена от раструба перемычкой шириной 3 мм.
Четыре сквозных отверстия диаметром 4 мм в углах пластины, 15 мм от каждого края.
Модель стоит как есть — пластина на столе, раструб вверх. Основная версия — стенки и ламели 3 мм. Тестовая — всё по 0.8 мм для быстрой примерки. Отдельно можно напечатать короткий раструб высотой 5 мм со стенками 0.8 мм для проверки посадки.
Claude 4.6 создал модель stl+scad с помощью Python - trimesh + manifold3d
И 3D просмотрщик stl файлов для этого поста, так же был создан Claude 4.6
В Jekyll есть механизм _includes — добавить HTML-файл в папку, и дальше вставлять его одной строкой в любой пост.
_includes
Виджеты:
---
importmap
Стандартный <iframe> от YouTube приходит с фиксированными размерами. На мобильных экранах он вылезает за пределы viewport.
<iframe>
Решение — обёртка с aspect-ratio и max-width. Контейнер занимает 100% ширины, но не больше 560px. На узких экранах сжимается, пропорции сохраняются.
aspect-ratio
max-width
Файлы:
{% include youtube.html id="VIDEO_ID" %}
Инструкция для подключения
Виджет создан с помощью Claude 4.6
Для просмотра STL моделей прямо в посте с вращением, зумом и touch-управлением. Используется Three.js через CDN — никаких npm, build-шагов и зависимостей.
Модель автоматически центрируется, камера подгоняется под размер. Поддерживается несколько viewer на одной странице — каждый include создаёт независимый экземпляр.
include
{% include stl-viewer.html model="/assets/blog/3d-glider/glider_emblem.stl" %}
Началось всё в середине декабря. Тогда Gemini3 Pro очень сильно продвинулся в бэке, и началось.
Связка - IntelliJ IDEA + Встроенный агент Juine + Подписка Jetbrains AI с дополнительными кредитами.
Лимит в месяц по подписке - 20 кредитов. А теперь реалии - примерный расход 10 кредитов в день, с овертаймом - 15-20. Паузы между задачами 1-7 минут в зависимости от сложности промта.
Недельные спринты превратились в дневные, переходящие в позднюю ночь. Наконец можно ставить задачи, и они будут выполняться на хорошем уровне, причём - сразу. Можно по ходу корректировать результат, покрывать всё тестами.
Производительность возросла, задачи закрываются в десятки раз быстрее. Можно захватывать смежные области (фронт/реакт), если соблюдать основные правила подхода в коде - будет всё хорошо. Качество напрямую зависит от промта. Файлы с гайдлайном - экономят токены, дают возможность упростить промт.
Теряешь себя в потоке, то что раньше обдумывалось перед тем как делать - теперь делается сразу. Промты идут один за другим.
НО. То что будет дальше - основна причина, почему я захотел написать это пост.
Мы не стали работать меньше, мы просто стали пропускать через себя в 10 раз больше смыслов, решений и контекстов в единицу времени.
А “что если” - главный девиз всех творческих людей!
Давайте придумает такую ситуацию, в которой все радиочастоты заглушены, и остаётся только визуальный контакт для передачи данных. Причём передатчики могут быть не особо хорошего качества.
Вспоминаем основы теории передачи информации, контроль ошибок, различные базовые алгоритмы:
Socks5 Video Tunnel
Этот протокол для некоторого будущего, где, напрмер, в бликах на волосах, или на каком то элементе одежды - будет задекорированный источник данных, причём двунаправленный.
Чтобы задать правильное направление для работы агента, нужно создать файл в корне проекта
Для Агента Junie в IntelliJ IDEA - /.junie/guidelines.md
Для Агента Claude Code - /CLAUDE.md
С подобным содержимым:
Создавай отдельные файлы со стилями для каждого компонента или страницы. Не используй магические числа и строки, а используй константы или перечисления. Придерживайся концепции DRY (Don't Repeat Yourself) и KISS (Keep It Simple, Stupid) при разработке кода. После завершения задачи, проверяй код на наличие неиспользуемых переменных и удаляй их, если они больше не нужны и не используются в других компонентах.
И для пиратов ссылка jetbra.in/s на версию Ultimate
jetbra.in/s
Что делать, если нужная программа обновилась, а купить не представляется возможным, из-за санкций?
Правильно - исследуем существующие методы обхода в предыдущих версиях.
Сначала нахожу оригинал DLL и её пропатченную версию. Сравниваю через hex редактор.
Очень сильно был удивлён, что всего 1 изменение в 1 месте! Теперь нужно понять, а что же скрывается за этим, что бы найти такое же, но в новой версии.
Поможет нам в этом dnSpy
Идём по найденному hex адресу 0x0003DB65
Смотрим что там скрывается - это функция регистрации, что логично.
А что конкретно означает 17?
Открываем в том же месте пропатченную DLL, смотрим что же такое 2А
Очень элегантное решение, просто сделать return перед всеми проверками! Теперь функция регистрации, по мнению декомпилятора, выглядит вот так. Хотя не вырезали никакого кода, просто поменяли 1 инструкцию внутри функции.
Потом по образу и подобию, находим новое смещение в новой версии DLL и всё работает :)
Теперь для автоматизации возьмём начало функции в hex формате и в конце будет искомое число
0228CF1700066FAA02000A2C300228CF17000612011F0E1728F300000A120172213F017028F400000A120103285105002B120128F600000A6FAC02000A17
Навайбкодим небольшой скрипт hex патчера и теперь, до тех пор, пока разработчики что то не поменяют в этой DLL, обход активации будет срабатывать.
Любые названия библиотек и hex случайны и материал несёт исключительно познавательный характер.
Все началось с рутинного обновления прав доступа в кластере ClickHouse.
Они не меняли выборку и условия, они поменяли настройки прав. И запрос, который раньше возвращал данные только от одной БД, стал возвращать от нескольких БД (из основной базы и из внутреннего шарда r0).
То есть, раньше все нормально работало и без условия, а после изменения настроек прав - тот же самый запрос, который раньше нормально работал, стал выдавать дубликаты данных, что привело к проблемам.
В коде прокси-сервера (написанном на Rust) стояло ограничение на 200 входных параметров, под которые заранее аллоцировалась память, видимо разработчики наивно полагали, что больше им никогда не понадобится. 640 килобайт хватит всем.
Вместо корректной обработки превышения и использования старой версии файла с уведомлением мониторинга, обработчик аварийно завершал работу из-за использования в Rust метода unwrap() для Result в состоянии Ok. При ошибке unwrap() вызывает panic!, что допустимо в отладке, но недопустимо в продакшене.
Чинили это дело в лучших традициях… вручную остановили раскатку обновления, подсунули старый (рабочий) файл конфигурации и начали перезагружать всю глобальную инфраструктуру. Полностью разгрести завалы и очереди сообщений удалось только к вечеру.
Длинная и скучная официальная версия в блоге cloudflare
stats.vk-portal.net - работает на МТС, Мегафон, Т2, Тмобайл, РТК, Yota. sun6-21.userapi.com - работает на МТС, Мегафон, Т2, Тмобайл, РТК, Yota. sun6-20.userapi.com - работает на МТС, Мегафон, Т2, Тмобайл, РТК, Yota. avatars.mds.yandex.net queuev4.vk.com - работает на МТС, Мегафон, Т2, Тмобайл, РТК, Yota. sun6-22.userapi.com - работает на МТС, Мегафон, Т2, Тмобайл, РТК, Yota. sync.browser.yandex.net top-fwz1.mail.ru ad.mail.ru eh.vk.com - работает на МТС, Мегафон, Т2, Тмобайл, РТК, Yota. akashi.vk-portal.net - работает на МТС, Мегафон, Т2, Тмобайл, РТК, Yota. sun9-38.userapi.com st.ozone.ru - работает на МТС, Мегафон, Т2, Тмобайл, РТК, Yota. ir.ozone.ru - работает на МТС, Мегафон, Т2, Тмобайл, РТК, Yota. vt-1.ozone.ru - работает на МТС, Мегафон, Т2, Тмобайл, РТК, Yota. io.ozone.ru ozone.ru - работает на МТС, Мегафон, Т2, Тмобайл, РТК, Yota. xapi.ozon.ru top-fwz1.mail.ru strm-rad-23.strm.yandex.net online.sberbank.ru esa-res.online.sberbank.ru egress.yandex.net st.okcdn.ru rs.mail.ru counter.yadro.ru 742231.ms.ok.ru splitter.wb.ru - работает на МТС, Мегафон, Т2, Тмобайл, РТК, Yota. a.wb.ru - работает на МТС. user-geo-data.wildberries.ru banners-website.wildberries.ru chat-prod.wildberries.ru servicepipe.ru alfabank.ru - работает на МТС, Мегафон, Т2, Yota. statad.ru alfabank.servicecdn.ru alfabank.st ad.adriver.ru privacy-cs.mail.ru imgproxy.cdn-tinkoff.ru mddc.tinkoff.ru le.tbank.ru hrc.tbank.ru id.tbank.ru rap.skcrtxr.com eye.targetads.io px.adhigh.net top-fwz1.mail.ru nspk.ru sba.yandex.net - работает на МТС, Мегафон. identitystatic.mts.ru tag.a.mts.ru login.mts.ru serving.a.mts.ru cm.a.mts.ru login.vk.com - работает на МТС, Мегафон, Т2, Тмобайл, РТК. api.a.mts.ru mtscdn.ru d5de4k0ri8jba7ucdbt6.apigw.yandexcloud.net moscow.megafon.ru api.mindbox.ru web-static.mindbox.ru storage.yandexcloud.net personalization-web-stable.mindbox.ru www.t2.ru beeline.api.flocktory.com static.beeline.ru moskva.beeline.ru wcm.weborama-tech.ru 1013a--ma--8935--cp199.stbid.ru msk.t2.ru s3.t2.ru get4click.ru dzen.ru - работает на Мегафон, Т2. yastatic.net csp.yandex.net sntr.avito.ru yabro-wbplugin.edadeal.yandex.ru cdn.uxfeedback.ru goya.rutube.ru - работает на МТС, Мегафон, Т2, Тмобайл, РТК. api.expf.ru fb-cdn.premier.one www.kinopoisk.ru - работает на МТС, Мегафон, Т2, Тмобайл, РТК, Yota. widgets.kinopoisk.ru payment-widget.plus.kinopoisk.ru api.events.plus.yandex.net tns-counter.ru speller.yandex.net - работает на МТС, Мегафон, Т2, Тмобайл, РТК, Yota. widgets.cbonds.ru www.magnit.com magnit-ru.injector.3ebra.net jsons.injector.3ebra.net 2gis.ru d-assets.2gis.ru s1.bss.2gis.com www.tbank.ru strm-spbmiran-08.strm.yandex.net id.tbank.ru tmsg.tbank.ru vk.com - работает на МТС, Мегафон, Т2, Тмобайл, РТК. www.wildberries.ru - работает на МТС, Мегафон, Т2, Тмобайл, РТК. www.ozon.ru - работает на МТС, Мегафон, Т2, Тмобайл, РТК. ok.ru - работает на МТС, Мегафон. yandex.ru - работает на МТС, Мегафон, Т2.
www.unicreditbank.ru www.gazprombank.ru cdn.gpb.ru mkb.ru www.open.ru cobrowsing.tbank.ru cdn.rosbank.ru www.psbank.ru - будет работать только на серверах в RU локациях www.raiffeisen.ru www.rzd.ru - будет работать только на серверах в RU локациях st.gismeteo.st stat-api.gismeteo.net c.dns-shop.ru restapi.dns-shop.ru www.pochta.ru passport.pochta.ru chat-ct.pochta.ru www.x5.ru www.ivi.ru api2.ivi.ru hh.ru i.hh.ru hhcdn.ru sentry.hh.ru cpa.hh.ru www.kp.ru cdnn21.img.ria.ru lenta.ru sync.rambler.ru s.rbk.ru www.rbc.ru target.smi2.net hb-bidder.skcrtxr.com strm-spbmiran-07.strm.yandex.net pikabu.ru www.tutu.ru cdn1.tu-tu.ru api.apteka.ru static.apteka.ru images.apteka.ru scitylana.apteka.ru www.drom.ru c.rdrom.ru www.farpost.ru s11.auto.drom.ru i.rdrom.ru yummy.drom.ru www.drive2.ru lemanapro.ru
Вся информация предоставлена исключительно для ознакомления.
๏
p.s Запасной вариант *U+11BE Hangul Jungseong Araea*
Установить свежую версию Proxmox и PVE Post Install
Сначала сделать бэкапы, они располагаются в директории /var/lib/vz/dump/
/var/lib/vz/dump/
Перенести бэкапы на новый proxmox в аналогичную директорию
Обратить внимание на идентификаторы виртуальных машин (обычно 100, 101, …) и ключ -storage. Если явно не указать хранилище local-lvm, машина будет восстановлена в хранилище local
pct restore 102 /var/lib/vz/dump/vzdump-lxc-102-2025_08_01-17_46_12.zst -storage local-lvm
qmrestore /var/lib/vz/dump/vzdump-qemu-100-2025_08_01-18_07_50.vma.zst 100 -storage local-lvm
Не забыть настроить создание бэкапов и выгрузку их в облако, например в b2
[b2] type = b2 account = 00****000000000* key = 00*********** hard_delete = true
9. Создать скрипт для выгрузки в b2 бэкапов ```sh nano backup.sh chmod +x backup.sh #!/bin/bash rclone sync /var/lib/vz/dump/ b2:proxmoxbk
crontab -e 0 23 * * * /bin/bash /root/backup.sh >/dev/null 2>&1
Проверить настройки оборудования и мапинг USB устройств
Отключить виртуальные машины на старом Proxmox и включить на новом Proxmox
Батник для скачивания видео в лучшем качестве по id с помощью yt-dlp и ffmpeg
@echo off REM Requirements: yt-dlp.exe and ffmpeg.exe (either in the same folder or in your PATH) color 0c chcp 65001 echo ==== YouTube Downloader (yt-dlp) ==== set /p VID=Enter the YouTube video ID (the part after "v="): if "%VID%"=="" ( echo [ERROR] No ID entered. Exiting... pause exit /b ) REM Download best video + best audio and merge to MP4 yt-dlp.exe ^ -f "bestvideo+bestaudio/best" ^ --merge-output-format mp4 ^ --embed-metadata --embed-thumbnail ^ -o "%%(title)s.%%(ext)s" ^ "https://www.youtube.com/watch?v=%VID%" echo --- echo Download finished. REM Open File Explorer in the current directory start "" "%cd%" echo Press any key to close. pause
Или обёрткой над ytdlp с помощью VDL - Video Downloader или ytdlp-interface
Промт из теста который написан Claude 4 Sonnet для OpenAi o3
Напиши короткое стихотворение о программировании на русском языке
Решил увековечить первый ответ
В полёте строк, сверкающих, как звёзды, Мой код рисует мир из пустоты. Курсор-маяк ведёт в безбрежных плоскостях, Где биты шепчут тайны красоты. Ошибка – вспышка мудрости мгновенной, Компилятор — судья и проводник. И в тишине ночной, почти вселенной, Я строю завтра, складывая «if».
Сингулярность становится всё ближе и ближе…
Для начала нужно достать установленный apk с помощью APK Extractor
Потом изучаем содержимое apk файла, поможет в этом jadx
Далее распаковываем apk файл (это zip архив) и находим classes.dex
Это уже не просто скомпилированные классы .class, а Dalvik Executable, который содержит байт-код, скомпилированный из исходного кода Java или Kotlin приложения.
Его нужно декомпилировать с помощью baksmali
java -jar baksmali.jar d classes.dex -o smali_out
Потом находим нужную функцию, и… она имеет совершенно другой вид.
Например функция java
private boolean IsChangeMe() { return true; }
А вот так smali
.method private final IsChangeMe()Z .registers 2 const/4 v0, 0x1 return v0 .end method
Но нам не надо писать сложную логику, достаточно вернуть true
Теперь пришло время пересобрать classes.dex и запихать его в apk
java -jar smali.jar a smali_out -o classes.dex
Не забыть подписать получившийся apk с помощью uber-apk-signer
java -jar uber-apk-signer.jar --apks patched.apk
Осталось переустановить приложение на Android, скорее всего придётся удалить оргинальное приложение, т.к. новая подпись.
В какой то момент вышел из строя БП и потянул за собой основную плату принтера Makeboard Mini 2.1.2 которую больше никто не производит.
Нашёл что то похожее:
По сути у меня была голая плата Makerbase MKS Gen L V2.1, и просто направляющие с движками, синяя изолента, экструдер с двумя обдувами и стол с подогревом.
Нужно как то оживлять. За основу взял конфиг от случайной дельты и начал экспериментировать. Отладил кучу моментов, теперь принтер печатал, парковался, измерял Z ось и практически соблюдал масштаб деталей.
Выложил наработки в репозиторий Марлина pull/1146 и там основной мейнтейнер подсказал корректировки геометрии!
С новыми вводными, довёл прошивку до ума, и теперь в основном репозитории Марлина есть прошивка для Micromake-D1 examples/delta/Micromake-D1/MKS-Gen-L-V2.1
M502 ; load defaults M500 ; save G28 ; home G33 ; auto‑calibrate M303 E0 S200 C8 ; PID calibration
Работает!
Есть несколько способов как это сделать:
<!-- Google tag (gtag.js) --> <script async src="https://www.googletagmanager.com/gtag/js?id=TAG_ID"></script> <script> const gTagId = 'TAG_ID'; window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', gTagId); gtag('get', gTagId, 'client_id', function(e) { console.log("GTM client_id", e); }); gtag('get', gTagId, 'session_id', function(e) { console.log("GTM session_id", e); }); gtag('get', gTagId, 'gclid', function(e) { console.log("GTM gclid", e); }); </script>
Использовать шаблон внутри Google Tag Manager (GTM) - GTAG GET API
При установке обычной прошивки для ESP32-S3-BOX-3 - текстовые поля покажут нам квадратики вместо букв. Чтобы исправить этот момент - смотрим - прошивку, находим места font_request и font_response.
Там “по умолчанию” установлен шрифт Figtree, а в нём нет кириллицы.
Найдём какой нибудь шрифт с поддержкой киррилицы, например Roboto
В итоге получится вот так:
substitutions: name: esp32-s3-box-3-123456 friendly_name: s3voice packages: esphome_voice_assistant: github://esphome/wake-word-voice-assistants/esp32-s3-box-3/esp32-s3-box-3.yaml@main esphome: name: ${name} name_add_mac_suffix: false friendly_name: ${friendly_name} api: encryption: key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX wifi: ssid: !secret wifi_ssid password: !secret wifi_password min_auth_mode: WPA2 font: - id: !extend font_request file: type: gfonts family: Roboto weight: 300 glyphsets: - GF_Latin_Core - GF_Cyrillic_Core - id: !extend font_response file: type: gfonts family: Roboto weight: 300 glyphsets: - GF_Latin_Core - GF_Cyrillic_Core
Если есть несколько аудио устройств вывода, то бывает что собеседник начинает говорить через громкие динамики, вместо наушников :)
Итого - делаем 2 батника, один включает наушники, другой включает динамики.
Вешаем на хоткеи - Audio switcher for Windows devices
Официально - никак. Не официально - берём .yaml для Ballu ASP-200 и настраиваем dns у роутера, что бы локальный адрес для бризера резолвился.
В итоге официальное приложение остаётся рабочим, и сам бризер может локально управляться.
Посмотрим как dalle2 эволюционировал за это время.
cat hacker, computer (foggy background, epic realistic, rutkowski, hdr, intricate details, hyperdetailed, cinematic, rim light, muted colors:1.2)
Предыдущие генерации - Генерируем нейро-котиков в 2023
Культура произношения в китайском языке глубоко связана с историей, традициями и социальной значимостью правильного воспроизведения звуков. В китайской культуре произношение — это не только технический аспект, но и элемент, который формирует связь между людьми, демонстрирует уважение и уровень образованности. Рассмотрим несколько ключевых аспектов, связанных с культурой произношения в Китае.
Правильное произношение в китайском языке особенно важно из-за тональной природы языка. Один и тот же слог, произнесённый с разными тонами, может иметь совершенно разные значения. Неправильное использование тона может привести к недопониманию или даже комичным ситуациям. Например:
Точное произношение в китайской культуре связано с уважением и социальным этикетом. Особенно важно чётко произносить такие вещи, как имена, так как неправильно произнесённое имя может быть воспринято как неуважение.
Хотя стандартным вариантом произношения в современном Китае является путунхуа (стандартный китайский или мандаринский), существует огромное разнообразие региональных диалектов, каждый из которых имеет свою уникальную систему произношения и акцентную структуру. Например:
Местные диалекты часто используют другие звуки и тоны, поэтому произношение одного и того же слова может значительно отличаться от путунхуа. В то же время, знание местных диалектов и умение адаптировать произношение к разным регионам является важным культурным навыком в Китае.
В китайской культуре большое значение придаётся не только правильному произношению, но и красивому, ритмичному звучанию речи. Чистота и плавность речи считаются признаком высокой культуры и интеллигентности. Эстетика произношения особенно важна в традиционных китайских искусствах, таких как:
Произношение является неотъемлемой частью многих традиционных искусств, искажения которого могут нарушить восприятие произведения.
Образование всегда играло ключевую роль в китайской культуре, и правильное произношение считается частью образованности человека. В традиционном китайском обществе конфуцианские учения подчёркивали важность риторики и красноречия. Грамотное, чёткое и выразительное произношение считалось важным навыком для учёных и государственных чиновников.
В наши дни изучение правильного произношения начинается с раннего детства. В школе детей обучают использовать пиньинь — систему транскрипции китайских звуков с помощью латинских букв, которая помогает освоить правильное произношение. Это особенно важно, так как не все китайские иероглифы можно интуитивно связать с произношением.
В китайской культуре уважение к собеседнику проявляется в том, как человек говорит. Это касается не только выбора слов, но и правильного произношения. Произносить слова правильно — значит уделять внимание своей речи, что воспринимается как знак уважения и заботы о собеседнике. Неправильное или небрежное произношение может быть воспринято как невнимательность или даже неуважение.
В традиционной китайской культуре также существует понятие того, что звуки могут иметь магическое или духовное значение. Например, в даосизме и буддизме определённые мантры или звуковые вибрации (например, «ом» или «ах») считались способными влиять на внутренние состояния человека или вызывать определённые изменения в мире.
Для многих изучающих китайский язык правильное произношение является одной из самых сложных частей. Иностранцы часто сталкиваются с трудностями в различении тонов, особенно если их родной язык не является тональным. В китайской культуре есть терпимость к иностранным акцентам, но ценится стремление к правильному произношению. Китайцы часто помогают иностранцам освоить точное произношение, поскольку считают это важным аспектом общения.
Культура произношения в китайском языке глубоко укоренена в истории, искусстве, социальной этике и философии. Произношение не только позволяет общаться, но и передаёт культурные ценности, уважение и внимание к деталям. Важно помнить, что в китайском языке произношение может изменить смысл слова, и этому аспекту уделяется большое внимание в обучении и повседневной жизни.
Тоны в китайском языке возникли в результате изменения конечных согласных в древнекитайском языке. Изначально китайский язык был безтональным, но с течением времени некоторые слоги изменились из-за утраты или изменения конечных звуков, что привело к появлению тонов.
В современном путунхуа (мандаринский диалект) четыре тона — это результат изменений, связанных с утратой конечных согласных и различными звуками на конце слова. Например:
Тоны могут быть связаны этимологически на уровне определённых слогов, где переход от одного тона к другому может быть вызван изменением финальной части слова (заключительного звука). Например, некоторые слоги, которые исторически имели конечные согласные, могли развить разные тоны в зависимости от того, каким был этот звук. В результате, современное слово с разными тонами может происходить от одной и той же древней формы.
В древнекитайском языке не было тонов в том виде, как мы их знаем в современном китайском языке. Однако позднее, в период среднекитайского языка, тоны начали формироваться на основе изменений в финалях и начальных согласных. Это значит, что многие односложные слова, которые сейчас имеют разные тона, могли иметь одну и ту же основу в древнем языке.
爸 (bà) (папа) и 拔 (bá) (вытаскивать) — оба слова произошли от одного и того же корня в древнекитайском, но различие в тонах возникло из-за изменений в конечных согласных, которые повлияли на интонацию.
打 (dǎ) (бить) и 大 (dà) (большой) — их связь можно проследить через тоновые изменения. Оба слова когда-то могли произноситься с одинаковыми конечными согласными, которые позже изменили тон.
Да, между тонами существует этимологическая связь, особенно если рассматривать их с точки зрения исторической фонологии. Различия в тонах часто возникали из-за изменений в финалях и начальных согласных в древнекитайском языке. Тоны в современном китайском — это результат длительного эволюционного процесса, когда конечные звуки исчезали или менялись, что влияло на интонацию и приводило к появлению различных тонов.
Основной компонент - Erriez TTP229
Важно! По умолчанию ttp229_lsf пытается подключится по адресу 0x57, но у нас оказался 0x65
[I][i2c.arduino:096]: Results from i2c bus scan: [I][i2c.arduino:102]: Found i2c device at address 0x65 [C][ttp229_lsf:019]: ttp229: [C][ttp229_lsf:020]: Address: 0x57 [E][ttp229_lsf:023]: Communication with TTP229 failed! [E][component:082]: Component ttp229_lsf is marked FAILED
Устанавливаем принудительно адрес 0x65
i2c: - scan: true ttp229_lsf: - address: 0x65 binary_sensor: - platform: ttp229_lsf name: Button_0 channel: 0
[root@bitrix ~]# ssh -V OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017
OpenSSH ниже 4.4p1 уязвим, если не был установлен патч против CVE-2006-5051 или если не был установлен патч против CVE-2008-4109, который оказался некорректным исправлением для CVE-2006-5051;
OpenSSH от 4.4p1 до 8.5p1 не уязвимы потому что “#ifdef DO_LOG_SAFE_IN_SIGHAND”, добавленный в функцию sigdie() патчем для CVE-2006-5051, превратил эту небезопасную функцию в безопасный вызов _exit(1));
OpenSSH от 8.5p1 до 9.8p1 снова уязвимы (потому что “#ifdef DO_LOG_SAFE_IN_SIGHAND” был случайно удален из функции sigdie()).
p.s. В любом случае лишний повод обновиться.
p.p.s. PoC можно найти тут
All traffic
0.0.0.0/0
sudo apt install ddclient
sudo nano /etc/ddclient.conf
p.s. Лимит трафика на месяц - 100 Gb, если больше - будут списания с привязанной карты.
Добавляем шаблон для быстрой генерации json из idea->toString без null значений Заходим в раздел toString() Generation Settings
Alt+Ins->toString()->Settings->Templates
public java.lang.String toString() { StringJoiner s = new java.util.StringJoiner(",", "{", "}"); #foreach ($member in $members)## #if(!$member.modifierStatic)## if ($member.name!=null) {## s.add("\"$member.name\":\""+## #if ($member.primitiveArray || $member.objectArray)## java.util.Arrays.toString($member.name)## #elseif ($member.string)## $member.accessor ## #else $member.accessor ## #end## +"\""); } #end #end return s.toString(); }
Купить можно на aliexpress или на ozon, цены +- одинаковые (~2100 рублей)
Читаем инструкцию, смотрим где располагаются метки
Находим 2 пароля для ID меток
Выкидываем инструкцию, берём proxmark3/flipperzero и начинаем эксперименты! У Флиппера актуальная на текущий момент прошивка unleashed-070e
Заходим в раздел 125kHz->Saved->Write and set pass, вводим один из паролей (5469616e или 51243648), пробуем записать метку.
Для сброса пароля заходим в раздел 125kHz->Extra Actions->Clear T5577 Password
НО! Если сбросить пароль на 2х метках сразу, то они будут синхронно перезаписываться, что слегка меня смутило, лучше оставить на одной из меток пароль.
Пробуем на боковых метках lf search
[=] Note: False Positives ARE possible [=] [=] Checking for known tags... [=] [!] Specify one authentication mode [-] No known 125/134 kHz tags found! [=] Couldn't identify a chipset
Уточняем метку lf t5 detect
[!] Could not detect modulation automatically. Try setting it manually with 'lf t55xx config'
Добавляем известный пароль из инструкции lf t5 detect -p 51243648
[=] Chip type......... T55x7 [=] Modulation........ ASK [=] Bit rate.......... 5 - RF/64 [=] Inverted.......... No [=] Offset............ 33 [=] Seq. terminator... Yes [=] Block0............ 000880E0 (auto detect) [=] Downlink mode..... default/fixed bit length [=] Password set...... Yes [=] Password.......... 51243648
Дальше я попробовал сделать wipe… и всё пропало. Ни ответа, ни привета. Флиппер тоже молчит. Пробую выполнить запись напрямую (через тестовый режим)
lf t55 write -b 0 -d 000880E0 -t lf t55 write -b 0 -d 000880E0 --r0 -t lf t55 write -b 0 -d 000880E0 --r1 -t lf t55 write -b 0 -d 000880E0 --r2 -t lf t55 write -b 0 -d 000880E0 --r3 -t
Потом записываем любой id
lf em 410x clone --id 0102030405
И… тишина. Метка не читается.
Пробую через флиппер Clear T5577 Password и метка оживает!
Сразу пробую записать через флиппер ключи - всё записалось.
Флиппер прекрасно прочитал I и III метки, но не смог записать туда данные - data management is only possible with initial card Как magic эта метка не определяется, uid просто так не перебить. Значит будем записывать через proxmark3.
Пробуем на метке I и III hf search
[|] Searching for ISO14443-A tag... [+] UID: AA BB CC DD [+] ATQA: 00 04 [+] SAK: 08 [2] [+] Possible types: [+] MIFARE Classic 1K [=] proprietary non iso14443-4 card found, RATS not supported [+] Magic capabilities... Gen 2 / CUID [+] Magic capabilities... Gen 4 GDM / USCUID ( Magic Auth ) [+] Prng detection....... weak [+] Valid ISO 14443-A tag found
Дальше получаем дампы ключей hf mf autopwn, записываем новую метку hf mf restore –uid 11223344
Проверяем на флиппере - Всё читается.
Это ntag216, можно записать визитку
Кольцо просто огромное (Размер L, самый большой)
Летом 2023 года Reddit запретил ценовой политикой все альтернативные клиенты. Но использование api индивидуально для каждого клиента - бесплатно! На данный момент актуальный способ - Генератор apk Infinity for Reddit
Следуем инструкции по созданию приложения
name: {ВашеИмяНаРеддит}s-app (Заменить {ВашеИмяНаРеддит} на ваше имя пользователя) Тип: Installed app redirect uri: http://127.0.0.1
p.s Если вы установите оригинальный Infinity, он будет просить подписку для просмотра контента.
Надо как то защитить сервер на Oracle, что бы инстанс не отключали из за новой политики Oracle Reclamation of Idle Compute Instances
Idle Always Free compute instances may be reclaimed by Oracle. Oracle will deem virtual machine and bare metal compute instances as idle if, during a 7-day period, the following are true: CPU utilization for the 95th percentile is less than 20% Network utilization is less than 20% Memory utilization is less than 20% (applies to A1 shapes only)
Хотят нагрузку на cpu - делаем: cpu.js
import Cpu from "./cpu.js"; new Cpu(20);
Нашёл интересный промт для midjourney, но он прекрасно переваривается dalle
Следующие генерации - Генерируем нейро-котиков в сентябре 2024
sonatypeUsername=Логин от issues.sonatype.org sonatypePassword=Пароль от issues.sonatype.org signingKeyId=Последние 8 цифр идентификатора ключа (short формат) signingPassword=Пароль от закрытого ключа signingKey=-----BEGIN PGP PRIVATE KEY BLOCK-----\n\nСодержимое ключа в одну строку, где все символы новой строки явно обозначены\n-----END PGP PRIVATE KEY BLOCK-----\n
plugins { id 'java' id 'maven-publish' id 'signing' } group = 'info.x-crm' version = '0.0.1' java { withJavadocJar() withSourcesJar() } publishing { publications { mavenJava(MavenPublication) { artifactId = 'код-этой-библиотеки' from components.java versionMapping { usage('java-api') { fromResolutionOf('runtimeClasspath') } usage('java-runtime') { fromResolutionResult() } } pom { name = 'Название проекта' description = 'Описание проекта' url = 'https://x-crm.in/' licenses { license { name.set("The Apache License, Version 2.0") url.set("http://www.apache.org/licenses/LICENSE-2.0.txt") } } scm { connection = 'scm:git:https://github.com/william-aqn/blog.git' developerConnection = 'scm:git:https://github.com/william-aqn/blog.git' url = 'https://github.com/william-aqn/blog' } } } } repositories { maven { def releasesRepoUrl = "https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/" def snapshotsRepoUrl = "https://s01.oss.sonatype.org/content/repositories/snapshots/" url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl credentials { username = findProperty("sonatypeUsername").toString() password = findProperty("sonatypePassword").toString() } } } } signing { def signingKeyId = findProperty("signingKeyId").toString() def signingKey = findProperty("signingKey").toString() def signingPassword = findProperty("signingPassword").toString() useInMemoryPgpKeys(signingKeyId, signingKey, signingPassword) sign publishing.publications.mavenJava }
sonatypeUsername / sonatypePassword / signingKeyId / signingKey / signingPassword
image: gradle:8.0 pipelines: default: - parallel: - step: name: Publish caches: - gradle script: - echo "$SECRET_BASE64_CONFIG" | base64 -d > ~/.gradle/gradle.properties - gradle publish
Стараемся не использовать сторонние библиотеки, т.к. результат будет измеряться десятками мегабайт, если не сотнями.
Делаем таск в build.gradle для java standalone приложения.
plugins { id 'java' } group = 'info.x-crm' version = '0.0.1' tasks.register('standaloneJar', Jar) { archiveFileName = "lib-standalone-${version}.jar" duplicatesStrategy = DuplicatesStrategy.EXCLUDE from { configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } } with jar }
Когда нужно перевести очень много мелких фраз на разные языки в уникальных местах файлов - очень муторно переключаться между переводчиком. Пусть само всё переводится в буфере!
Сделал GUI для переводчика и прикрутил на выбор google-free, deepl и openapi с моделью text-davinci-003
text-davinci-003
Пока оптимальный промпт для перевода текста это
Please translate the user message from #from# to #to#. Make the translation sound as natural as possible.
Скачать можно тут node-clipboard-translate
Что бы нормально работать с санкционными роутерами, нужно поменять его регион. Первым делом скачиваем прошивку от merlin для своей модели роутера. Включаем доступ по ssh в настройках роутера. Заходим по ssh и вводим команды
Создаём файл /jffs/scripts/init-start в котором будет меняться регион на US, можно постаить #a - разблокируется вообще всё, но говорят не очень стабильно это.
nvram set location_code=US nvram commit service restart_wireless
Далее добавляем этот файл в автозапуск скриптов роутера
nvram set jffs2_exec=/jffs/scripts/init-start nvram set jffs2_scripts=1 nvram commit reboot
После перезагрузки проверяем мощность
wl txpwr_target_max > Maximum Tx Power Target (chanspec:0x1908): 24.00 24.00 24.00 24.00
И регион
nvram get location_code > US
Пример заводского конфига
Различные изыскания можно почитать тут И отличная статья по измерению мощности на всех каналах
Или пишите в ЛС @CrashXRU, у него есть приватный способ сделать всё правильно, но делает только сам.
Так же наставление как делать правильный костыль:
пишем в nvram CCODE + REV каналы и ширину если они отличаются от евро перезапускаем радио модуль далее проверяем через WL если СС+REV те то проверяем канал, если тот то пропускаем Если нет, то выключаем модуль ставим нужные параметры и включаем уже модуль и не службу модулей тогда все будет работать до перезагрузки но менять настройки радиомодулей НЕЛЬЗЯ поменяли что то не важное, перезагрузили роутер трогать прошивку нельзя, пытаться записать нельзя все потому что прошивка плоская, те она упакована и только ro сделать ее RW нельзя ну никак, вообще никак, это особеность таких прошивок
Оживил старый функционал по сбору ключей для nod32, теперь уже на nodejs с использованием headless браузера chrome
Технические подробности можно прочитать в посте - Парсим сайт спрятанный через Cloudflare
Нашёл способ обходить проверку cloudflare, но хром жрёт как не в себя оперативку. Отключаем скрипты слежения и всю медиа что есть на страницах. Авторизуемся где нибудь и парсим контент. Ещё плагины можно найти в репозитории puppeteer-extra - например обход рекапчи.
Не забываем установить chrome
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb sudo apt install ./google-chrome-stable_current_amd64.deb
import puppeteer from 'puppeteer-extra' import StealthPlugin from 'puppeteer-extra-plugin-stealth' import AdblockerPlugin from 'puppeteer-extra-plugin-adblocker' import ResBlockPlugin from 'puppeteer-extra-plugin-block-resources' class Nod { constructor() { puppeteer.use(StealthPlugin()) puppeteer.use(AdblockerPlugin({ blockTrackers: true })) puppeteer.use(ResBlockPlugin({ blockedTypes: new Set(['image', 'stylesheet', 'media', 'font']) })) } parse() { let keys = []; const browser = await puppeteer.launch({ executablePath: "/usr/bin/google-chrome-stable", args: ["--enable-features=NetworkService", "--no-sandbox"], ignoreHTTPSErrors: true, headless: "new" }); // const browser = await puppeteer.launch({ headless: false }) try { const page = await browser.newPage() // Открываем страницу await page.goto('https://', { timeout: 60000 }); // Авторизуемся где нибудь await page.$eval('input[name=vb_login_username]', (el, login) => { el.value = login }, 'Логин какой нибудь'); await page.$eval('input[name=vb_login_password]', (el, pwd) => { el.value = pwd }, 'Пароль какой нибудь'); await page.click('input.button[type=submit]'); await page.waitForNavigation({ waitUntil: 'load' }); // Находим посты let messages = await page.$x("//*[contains(@id,'post_message_')]"); for (let message of messages) { let text = await message.evaluate(element => element.innerHTML); // Находим ключи в постах let k = text.match(/([A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4})/gm); if (k) { keys.push(...k); } } } catch (e) { console.log(e); } finally { await browser.close(); } return keys; } export default Nod;
Это небольшой пример кода моего бота
function getCookieByPrefix(prefix) { let cookies = document.cookie.split(';'); let searchKey = ''; for (let i = 0; i < cookies.length; i++) { let cookie = cookies[i].trim(); if (cookie.startsWith(prefix)) { let keyValue = cookie.split('='); let value = keyValue[0]; if(value){ searchKey = value; } } } return searchKey; } function getSessionData(id) { let regex = new RegExp(id + "=GS\\d\\.\\d\\.(.+?)(?:;|$)"); const match = document.cookie.match(regex); const parts = match?.[1].split("."); if (!parts) { window.setTimeout(() => getSessionData(id), 200); return; } return parts.shift(); } let trueSession_id = '' let dataG4 = ''; let encoded = ''; try { if(!trueSession_id){ let searchKeyBycookie = getCookieByPrefix('_ga_'); trueSession_id = getSessionData(searchKeyBycookie) || ''; } dataG4 = { "cid": gaGlobal?.vid, "sid": trueSession_id, 'ul': navigator.language || navigator.userLanguage, 'sr': screen.width + 'x' + screen.height, 'uaa': google_tag_data?.uach?.architecture, 'uab': parseInt(google_tag_data?.uach?.bitness), 'uafvl': google_tag_data?.uach?.fullVersionList.map(({ brand, version }) => `${brand};${version}`).join('| '), 'uap': google_tag_data?.uach?.platform, 'uapv': google_tag_data?.uach?.platformVersion, 'cu': window.cur_currency || 'USD', 'dl': document.location.href, 'dr': document.referrer || '', 'dt': document.title, 'en': 'purchase', }; encoded = Base64.encode(JSON.stringify(dataG4)) } catch(e){ console.warn(e); }
https://www.google-analytics.com/mp/collect?measurement_id=G-0*********&api_secret=*********************
{ "non_personalized_ads": false, "client_id": "601471748.1686739658", "user_properties": { "uafvl": { "value": "Not.A/Brand;8.0.0.0| Chromium;114.0.5735.60| Google Chrome;114.0.5735.60" }, "uap": { "value": "Android" }, "uapv": { "value": "8.1.0" } }, "events": [ { "name": "purchase", "params": { "language": "pt-BR", "page_location": "https://site.com/", "page_referrer": "android-app://org.telegram.messenger/", "page_title": "Заголовок страницы", "screen_resolution": "360x640", "session_id": 1686739658, "engagement_time_msec": "1000", "currency": "USD", "transaction_id": 12399321, "value": 45.54, "affiliation": "User", "coupon": "", "shipping": 0, "tax": 0, "items": [ { "item_id": "123456", "item_name": "Название товара", "currency": "USD", "item_category": "Категория товара", "price": 45.54, "quantity": 1 } ] } } ] }
TACT Product: fenris Agent UID: fenris Installation Directory: путь куда нужно установить игру (например, C:\Games\Diablo IV Beta) Game/Asset Language: язык игры (ruRU для русской версии или enUS для английской) Repair Install (Y/N): N
3.1. Если хотим сами скачать бэту
TACT Product: fenrisb Agent UID: fenris_beta
Или воспользоваться бинарниками из beta_binary.rar, пароль c7148a33d7dea696012adac714b6d4f0
Ещё есть unlocker.rar, разблокирует запуск через оригинальный battle.net клиент, пароль d84fbe00a685f25c3e3f52db43d63b06 Можно поймать бан за анлокер.
Основная идея Bitrix.DevOps
Это предже всего инструмент, изучите код перед тем как его применить!
За основу брал мануал https://habr.com/ru/articles/735536/
Панель на сервере https://github.com/alireza0/x-ui
bash <(curl -Ls https://raw.githubusercontent.com/alireza0/x-ui/master/install.sh)
docker run -itd \ -p 127.0.0.1:8181:54321 -p 443:443 -p 80:80 \ -e XRAY_VMESS_AEAD_FORCED=false \ -v $PWD/db/:/etc/x-ui/ \ -v $PWD/cert/:/root/cert/ \ --name x-ui --restart=unless-stopped \ alireza7/x-ui:latest
Создаем подключение:
Настраиваем пользователя, других можно добавить позже:
Дальше снова идут настройки протокола:
Нажимаем “Создать” и на этом настройка для Shadowsocks закончена, им уже можно пользоваться.
Далее переходим к настройкам клиента:
Дальше у нас идут настройки транспорта:
For LXC to work : Enabling tun by default when starting a CT image to get zerotier working :
on proxmox host Edit this file “/etc/pve/lxc/ctxxx.conf” with these 2 lines which enabled me to get zerotier working on the container, and connect to my zerotier network. After adding the lines, I simply rebooted the ct.
lxc.cgroup.devices.allow: c 10:200 rwm lxc.mount.entry: /dev/net dev/net none bind,create=dir
https://esphome.io/components/sensor/zyaura.html
В наличии был esp01 который идеально подходит к пинам на плате
И программатор pl2303, которому нужны специальные драйвера, иначе не запустится
В Home Assistant создаём прошивку и заливаем на esp через Chrome браузер yaml
Дальше отключаем GPIO_00 от GND, подключаем к co2 выводам esp01 (пока питание берём от pl2303) В логе появляются данные
Теперь надо отпаять гребёнку от esp01 и поместить esp01 непосредственно на пины co2 Питание 3.3V надо где то взять…
Переработал идею плагина Item Treasury и вот что получилось:
Можно скачать на translate.lotros.ru или из репозитория
За основу брал мануал https://bernd32.blogspot.com/2022/03/shadowsocksv2ray-tls.html
sudo su -
apt install nginx
rm /etc/nginx/sites-available/default && sudo rm /etc/nginx/sites-enabled/default
sudo mkdir /var/www/<домен>
nano /var/www/<домен>/index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Hello world</title> </head> <body> <h1>Hello world</h1> </body> </html>
/nginx/ssl/<домен>/public.key и /nginx/ssl/<домен>/private.key
openssl dhparam -out /etc/nginx/ssl/dhparam.pem 4096
В настройках своего домена на Cloudflare, в разделе SSL/TLS ставим Full(strict).
Создаем конфиг для нашего сайта: nano /etc/nginx/sites-available/<домен>
nano /etc/nginx/sites-available/<домен>
server { server_name <домен>; root /var/www/<домен>; index index.html; location / { try_files $uri $uri/ =404; } location /bdsm { proxy_redirect off; proxy_http_version 1.1; proxy_pass http://localhost:8008; proxy_set_header Host $http_host; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } listen [::]:443 ssl ipv6only=on; listen 443 ssl; ssl_certificate /nginx/ssl/<домен>/public.key; ssl_certificate_key /nginx/ssl/<домен>/private.key; ssl_session_cache shared:le_nginx_SSL:10m; ssl_session_timeout 1440m; ssl_session_tickets off; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers off; ssl_dhparam /etc/nginx/ssl/dhparam.pem; ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384"; } server { if ($host = <домен>) { return 301 https://$host$request_uri; } listen 80; listen [::]:80; server_name <домен>; return 404; }
Включаем сайт: ln -s /etc/nginx/sites-available/<домен> /etc/nginx/sites-enabled/
ln -s /etc/nginx/sites-available/<домен> /etc/nginx/sites-enabled/
Рестартим nginx: systemctl restart nginx
systemctl restart nginx
Вставляем в адресную строку браузера наш домен и проверяем, что всё работает
Устанавливаем shadowsocks (Если у вас x64): Если у вас arm64 см пункт 13
Создаем папку под бинарники сс: mkdir /etc/ss-go
mkdir /etc/ss-go
Качаем бинарник сс с гитхаба: wget https://github.com/shadowsocks/go-shadowsocks2/releases/download/v0.1.5/shadowsocks2-linux.gz
wget https://github.com/shadowsocks/go-shadowsocks2/releases/download/v0.1.5/shadowsocks2-linux.gz
Распакуем архив сс-го: gzip -d shadowsocks2-linux.gz
gzip -d shadowsocks2-linux.gz
Переносим и переименуем бинарник: mv shadowsocks2-linux /etc/ss-go/ss-go
mv shadowsocks2-linux /etc/ss-go/ss-go
Делаем бинарник исполняемым: chmod +x /etc/ss-go/ss-go
chmod +x /etc/ss-go/ss-go
Повышаем права сс и позволяем ему занимать привилегированные порты: setcap "cap_net_bind_service=+eip" /etc/ss-go/ss-go
setcap "cap_net_bind_service=+eip" /etc/ss-go/ss-go
Устанавливаем v2ray плагин:
Cкачиваем плагин (вместо v1.3.1/v2ray-plugin-linux-amd64-v1.3.1.tar.gz может быть что-то другое, последняя версия лежит тут https://github.com/shadowsocks/v2ray-plugin/releases/latest) wget https://github.com/shadowsocks/v2ray-plugin/releases/download/v1.3.1/v2ray-plugin-linux-amd64-v1.3.1.tar.gz
wget https://github.com/shadowsocks/v2ray-plugin/releases/download/v1.3.1/v2ray-plugin-linux-amd64-v1.3.1.tar.gz
Разархивируем сам плагин, тут опять же может быть другой файл в зависимости от скачиваемой версии: tar -xf v2ray-plugin-linux-amd64-v1.3.1.tar.gz
tar -xf v2ray-plugin-linux-amd64-v1.3.1.tar.gz
Переносим и переименуем плагин: mv v2ray-plugin_linux_amd64 /etc/ss-go/v2ray-plugin
mv v2ray-plugin_linux_amd64 /etc/ss-go/v2ray-plugin
Даем возможность v2ray-плагину занимать привилегированные порты: setcap "cap_net_bind_service=+eip" /etc/ss-go/v2ray-plugin
setcap "cap_net_bind_service=+eip" /etc/ss-go/v2ray-plugin
Вставляем следующее (вместо <пароль> нужно придумать пароль): `nano /etc/systemd/system/ss-v2ray.service`пароль>
[Unit] Description=Go-shadowsocks2 with V2RAY-websocket obfuscation After=network.target [Service] Type=simple User=nobody Group=nogroup LimitNOFILE=51200 ExecStart=/etc/ss-go/ss-go -s localhost:8008 -password <пароль> -cipher AEAD_CHACHA20_POLY1305 -plugin /etc/ss-go/v2ray-plugin -plugin-opts "server;loglevel=none;path=/bdsm" [Install] WantedBy=multi-user.target
Сохраняем ctrl + o, закрываем ctrl + x
Включаем сервис: systemctl enable ss-v2ray.service
systemctl enable ss-v2ray.service
wget https://github.com/shadowsocks/shadowsocks-rust/releases/download/v1.14.3/shadowsocks-v1.14.3.aarch64-unknown-linux-gnu.tar.xz
Берём оттуда ssserver mv ssserver /etc/ss-go/ss-go
mv ssserver /etc/ss-go/ss-go
nano /etc/ss-go/shadowsocks-rust.json
{ "server": "127.0.0.1", "server_port": 8008, "password": "пароль", "timeout": 120, "method": "chacha20-ietf-poly1305", "no_delay": true, "fast_open": true, "reuse_port": true, "workers": 1, "ipv6_first": false, "nameserver": "1.1.1.1", "mode": "tcp_and_udp", "plugin": "/etc/ss-go/v2ray-plugin", "plugin_opts": "server;loglevel=none;path=/bdsm" }
nano /etc/systemd/system/ss-v2ray.service
ExecStart=/etc/ss-go/ss-go -c /etc/ss-go/shadowsocks-rust.json
Качаем последнюю версию клиента shadowsocks с гитхаба – https://github.com/shadowsocks/shadowsocks-windows/releases и устанавливаем.
Качаем последнюю версию плагина v2ray: https://github.com/shadowsocks/v2ray-plugin/releases
Файлик v2ray-plugin_windows_amd64.exe кидаем в одну с папку с исполняемым файлом ss-клиента Shadowsocks.exe
В конфиге клиента прописываем
server addr - <домен> server port - 443 password - <пароль> encryption - chacha20-ietf-poly1305 plugin program - v2ray-plugin_windows_amd64.exe plugin options - tls;host=<домен>;path=/bdsm proxy port - локальный порт куда будем направлять браузер (по дефолту 1080, можно не трогать)
Disclaimer: Нельзя просто так взять и подписать документ, техподдержка говорит дичь (т.е. ничего полезного)
Делаем виртуальную машину на основе ОРИГИНАЛЬНОЙ (не репака) Windows 10 (версия 1607, сборка 14393) https://nnmclub.to/forum/viewtopic.php?t=1042256 magnet:?xt=urn:btih:33897D649002A253918465C0B07009F99D961C15
Аалгоритм шифрования необходимый для выполнения этой операции не установлен на этом компьютере
Тех.поддержка говорит нужен КриптоПро Office Signature 2.0, который в свою очередь требует КриптоПРО CSP, который стоит денег, который конфликтует с бесплатной Vipnet CSP. Итого - нафиг.
Делаем снапшот виртуалки. Это важно!
Устанавливаем ViPNet CSP Win 4.4.2.2388 от 30.07.2021 с отключенной галкой TLS (иначе чёрный экран получите после перезагрузки) https://infotecs.ru/product/vipnet-csp.html
Перезагружаем виртуалку. Если что то пошло не так - откатываемся, и отключаем забытую галку TLS при установке ViPNet CSP.
Покупаем ЭЦП для физ лиц, например тут всего за 900 рублей на 15 месяцев, при покупке обязательно выбираем VipnetCSP https://astral.ru/tarify/astral-et/astral-et-fl/23803/
В течении одного дня проходим различные бюрократические процедуры,
Делаем бэкап криптоконтейнера. А лучше в несколько разных мест.
Делаем снапшот виртуалки, что бы откатываться для сброса Adobe и КриптоПро PDF.
10.1. Adobe Reader DC исключительно версию x86 Выбираем windows 10, Russian, Reader DC 2019.008.20071 Russian for Windows Снимаем галки с McAfee Жмём скачать https://get.adobe.com/ru/reader/otherversions/
Устанавливаем плагин КриптоПро PDF для подписывания pdf, который работает ограниченное время. https://www.cryptopro.ru/products/other/pdf/downloads
Не удалось закончить создание этой подписи. Ошибка превышения размера. Неподдерживаемый алгоритм открытых ключей