ch
Feedback
Записки IT специалиста

Записки IT специалиста

前往频道在 Telegram

IT-канал, просто о сложном https://interface31.ru Купить рекламу: https://telega.in/c/interface31

显示更多
8 856
订阅者
+524 小时
+227
+7930
帖子存档
На FirstVDS стартовала акция ко Дню гика В рамках акции можно (и нужно): • получить скидку до 30% на заказ новых VDS, • подкл
На FirstVDS стартовала акция ко Дню гика В рамках акции можно (и нужно): • получить скидку до 30% на заказ новых VDS, • подключить спецтариф FirstGeek по фиксированной цене, • поучаствовать в онлайн‑турнире на сайте, • получить монеты и обменять их на настоящие призы, • поучаствовать в розыгрыше игровых приставок. Среди главных призов: 👾PS5 Pro 2 ТБ 🎮Steam Deck OLED 512 ГБ 🎯сертификаты на баланс FirstVDS Вперед в битву гиков! #реклама О рекламодателе

Обновление PostgreSQL в Docker через pg_upgrade Продолжаем тему обновления контейнеров PostgreSQL между мажорными версиями, в
Обновление PostgreSQL в Docker через pg_upgrade   Продолжаем тему обновления контейнеров PostgreSQL между мажорными версиями, в прошлой заметке мы рассмотрели миграцию при помощи утилиты pg_dumpall.   Это простой и надежный способ, но у него есть один существенный недостаток: pg_dumpall – однопоточен, использует для выгрузки и загрузки только одно ядро и выполняет все операции последовательно, как они записаны в файле дампа.   На крупных и даже средних базах такой подход может привести к неконтролируемому времени простоя, что неприемлемо. Поэтому сегодня мы рассмотрим миграцию при помощи другой утилиты - pg_upgrade.   Преимущество pg_upgrade в том, что он не делает экспорт/импорт, не пересоздает всю структуру СУБД, а работает на уровне файлов базы данных.   Итак, приступим, допустим мы изначально имеем:  
services:
  db:
    container_name: postgres-db
В нашем случае: ▫️ db — имя сервиса Compose ▫️ postgres-db — реальное имя контейнера Docker   1️⃣ Остановим весь стек и запустим обратно только контейнер с СУБД для создания резервной копии, это исключит возможную запись в БД во время выгрузки:  
docker compose stop
docker compose up -d db
  Теперь выполним выгрузку дампа всего кластера:  
docker exec -t postgres-db pg_dumpall -U postgres > full_backup.sql
  Проверяем, что файл дампа создан и останавливаем контейнер с БД:  
docker compose down
  2️⃣ Следующие шаги будут несколько различаться в отличие от того, используем ли мы Named Volumes или Bind mount.   🔹 При Named Volumes создаем дополнительный именованный том для нового кластера СУБД:  
docker volume create pg_data_18
  И запускаем специальный контейнер для апгрейда:  
docker run --rm \
  -e POSTGRES_USER=postgres \
  -v pg_data:/var/lib/postgresql/17/data \
  -v pg_data_18:/var/lib/postgresql/18/data \
  tianon/postgres-upgrade:17-to-18
  Данный контейнер НЕ является официальным образом PostgreSQL, это community image от Tianon Gravi, но он де-факто является стандартом в мире Docker.   Обратите внимание на тег контейнера, он указывает версии, с которой и на которую мы переходим, в нашем случае это 17-to-18, в других случаях выбирайте контейнер с нужным тегом.   Затем меняем Compose, было:  
services:
  db:
    image: postgres:17
    volumes:
      - pg_data:/var/lib/postgresql/data
volumes:
  pg_data:
Стало:  
services:
  db:
    image: postgres:18
    volumes:
      - pg_data_18:/var/lib/postgresql/data
volumes:
  pg_data_18:
  🔹 Для Bind mount создаем новую директорию:  
mkdir ./data/postgres-data-18
  И запускаем служебный контейнер:  
docker run --rm \
  -e POSTGRES_USER=postgres \
  -v ./data/ postgres-data:/var/lib/postgresql/17/data \
  -v ./data/postgres-data-18:/var/lib/postgresql/18/data \
  tianon/postgres-upgrade:17-to-18
  Затем меняем Cpmpose, было:  
services:
  db:
    image: postgres:17
    volumes:
      - ./postgres-data:/var/lib/postgresql/data
Стало:  
services:
  db:
    image: postgres:18
    volumes:
      - ./postgres-data-18:/var/lib/postgresql/data
  3️⃣ Запускаем стек:  
docker compose up -d
  И выполняем оптимизацию базы:  
docker compose exec -T db vacuumdb -U postgres --all --analyze-in-stages
  Это не мешает работе и можно запускать уже на работающем стеке. Старые тома лучше всего оставить на некоторое время, пока вы не убедитесь, что обновление прошло нормально.

Автомобили из Европы под ключ Привезем авто в Россию быстро и надежно. Без предлоплаты⚡ Заключаем договор, полное сопровожден
Автомобили из Европы под ключ Привезем авто в Россию быстро и надежно. Без предлоплаты⚡ Заключаем договор, полное сопровождение на всех этапах👌 Экономия до 30% в зависимости от марки и модели✅ Льготным категориям граждан предоставляем скидку💰 Пишите менеджеру для консультации📱 Купить #реклама О рекламодателе

Store CLI – интерфейс командной строки для Microsoft Store Не так давно без лишнего шума и анонсов в последних выпусках Windo
+4
Store CLI – интерфейс командной строки для Microsoft Store Не так давно без лишнего шума и анонсов в последних выпусках Windows появилась утилита командной строки Store CLI, предназначенная для работы с магазином Microsoft. Для ее использования откройте терминал и просто наберите:
store 
И вы получите короткую справку, которой достаточно чтобы начать с ней работать. Для просмотра уже установленных из магазина приложений выполните:
store installed
Для поиска обновлений отдельного приложения выполните:
store update AppName
Сразу для всех:
store updates
Чтобы установить обновления добавьте ключ –apply:
store update AppName  --apply
store updates –apply
Для поиска приложений используйте:
store search AppName
Также можно искать по расширению:
store extension mp4
И вы получите все приложения для работы с mp4. Если вы хотите подобрать альтернативы приложению, то выполните поиск похожих:
store similar vlc
Для просмотра каталога можно воспользоваться специальными командами, например, сначала просмотрим категории и субкатегории:
store app-categories
Теперь выведем топ бесплатных приложений определенной категории:
store browse-apps top-free --category "Utilities & tools"
Или топ платных в субкатегории:
store browse-apps top-paid --subcategory "Personal Security"
Найдя нужное приложение, мы можем установить его командой:
store install AppName/ID
В качестве параметра можно указать имя приложения или ID, второе предпочтительно, так как однозначно определяет приложение, даже если опубликовано несколько его версий. Например, для установки VLC можно использовать команды:
store install VLC
store install XPDM1ZW6815MQM
Возможности удаления приложений магазина в данной версии консольной утилиты нет.

Вебинар MPLS в маршрутизаторах ESR. Часть 1. L2VPN! Мы обещали вернуться с подробностями, и мы это делаем. Пришло время оконч
Вебинар MPLS в маршрутизаторах ESR. Часть 1. L2VPN! Мы обещали вернуться с подробностями, и мы это делаем. Пришло время окончательно разобраться, почему MPLS называют «слоем 2.5» и как заставить его работать на благо вашей сети. 📌 1 июня 2026 (понедельник) 🕐 14:00 (по МСК) Начинаем серию вебинаров по технологии, которая не теряет актуальности и остается базой для современных сетей. 📚 Что разберем на первой встрече:
➖Вспомним теорию — зачем вообще нужен MPLS и почему его называют «L2.5» ➖L2VPN Martini mode ➖L2VPN Kompella mode
🎙 Спикер: Алексей Листаров — инженер с многолетним опытом работы в крупном операторе связи. Сертифицированный преподаватель нашего авторизованного учебного центра Академии Eltex. 🔗 Регистрация Готовьте свои вопросы по конфигурации, будем разбираться вместе! #eltex #eltexcm #webinar #вебинар #esr #mpls #kompella #martini #mode @eltexcm #реклама О рекламодателе

Особенности установки УТМ ЕГАИС на Debian 13 Сегодня попробовали установить УТМ ЕГАИС на свежий дистрибутив Debian 13. Сама у
Особенности установки УТМ ЕГАИС на Debian 13 Сегодня попробовали установить УТМ ЕГАИС на свежий дистрибутив Debian 13. Сама установка не вызывает особых сложностей и ее можно выполнить по нашей статье: 🔹 ЕГАИС. Устанавливаем УТМ 4.2.0 на Debian (Ubuntu) При этом, вместо libncurses5:i386 следует устанавливать libncurses6:i386, а библиотека SSL называется libssl3t64 и скорее всего будет установлена по умолчанию. Сам пакет u-trans тоже ставится без особых проблем, запускается, но не работает. Если вы откроете лог, то увидите, что УТМ не может обнаружить ключ. Странно, ведь инсталлятор увидел Рутокен и инструменты диагностики тоже его видят. Поэтому читаем лог дальше и находим интересные записи:
/opt/utm/lib/librtpkcsllecp.so: невозможно задействовать исполняемый стек, как требует разделяемый объект
Это значит, что библиотека требует наличия executable stack (исполняемый стек), который отключен в Debian 13 по соображениями безопасности (а также в Ubuntu, начиная с 25.10). 👆 Включить данную технологию не представляется возможным (во всяком случае без глубокого изменения системы), поэтому можно считать, что УТМ ЕГАИС несовместим с Debian 13 и грядущей Ubuntu 26.04 LTS. 😉 Ну если, конечно, разработчики Росалкогольтабакконтроль не перепишут программу, но надежды на это призрачные, с учетом того, что u-trans для Linux до сих пор 32-битное приложение. С другой стороны, у нас все-таки Linux и каждый тут сам кузнец собственного счастья. Указанные в ошибках библиотеки являются библиотеками PKCS11Lib от Рутокен и поставляются вместе с пакетом УТМ. Поэтому мы можем заменить их на более современные версии библиотек от Рутокен, которые не требуют executable stack. Скачать их можно на https://download.rutoken.ru в разделе /Rutoken/PKCS11Lib/Current/Linux/x32/, просто качаем librtpkcs11ecp.so. Для этого перейдем в домашнюю папку и скачаем библиотеку через wget, в нашем случае это последняя на сегодня версия, вам же потребуется уточнить версию библиотеки:
cd ~ 
wget  https://download.rutoken.ru/Rutoken/PKCS11Lib/Current/Linux/x32/librtpkcs11ecp.so
Затем останавливаем УТМ, заменяем необходимые библиотеки (их там две копии) и снова запускаем УТМ:
supervisorctl stop utm
cp -v librtpkcs11ecp.so /opt/utm/lib/librtpkcs11ecp.so
cp -v librtpkcs11ecp.so /opt/utm/lib/librtpkcs11ecp-replica.so
supervisorctl start utm
После чего все запускается и отлично работает. Посмотреть лог УТМ в реальном времени можно командой:
tail -f /opt/utm/transport/l/transport_info.log
Но данное действие вам придется выполнять всякий раз после переустановки или обновления УТМ. ❗️Также обратите внимание, что данный способ проверен только с токенами Рутокен и работа с JaCarta не проверялась и не гарантируется. 👉 Кроме того, добавим – непосредственной необходимости ставить УТМ ЕГАИС на Debian 13 в текущий момент нет, сервис это сугубо внутренний и при необходимости может эксплуатироваться даже на устаревших версиях системы.

Яндекс Музыка до 360 дней бесплатно Яндекс Музыка для вас и 3-х ваших близких. Кинопоиск и Яндекс Книги тоже в подписке. Попр
Яндекс Музыка до 360 дней бесплатно Яндекс Музыка для вас и 3-х ваших близких. Кинопоиск и Яндекс Книги тоже в подписке. Попробуйте бесплатно❤️ Слушать #реклама 18+ music.yandex.ru О рекламодателе

УТМ ЕГАИС 403 Forbidden - Доступ к странице с данного IP не разрешен С такой ошибкой столкнулся сегодня один наш коллега. Пре
+1
УТМ ЕГАИС 403 Forbidden - Доступ к странице с данного IP не разрешен С такой ошибкой столкнулся сегодня один наш коллега. Предыстория проста. В самом веб-интерфейсе UTM есть фильтр IP-адресов, в котором можно указать доверенные адреса и сети, обращения с других адресов будут отклоняться. А дальше – проще, немного не подумал или опечатался и доступа у тебя больше нет. Как раз этим наш коллега и решил заняться, тем более что в регионе у нас три «для трезвости» подряд. Но что-то пошло не так и доступ пропал отовсюду. Поиск в сети, к удивлению, результатов не дал, везде написана какая-то ерунда, а в тематических сообществах и вовсе советуют переустановить УТМ, он бы так и сделал, но за неожиданные выходные в УТМ собралось много входящих документов. В любом случае переустановка – это не наш метод, всегда следует разобраться в проблеме, иначе переустанавливать на каждый чих просто утомишься. Итак, белые списки, если они есть, то должны где-то хранится, а каком-то конфигурационном файле. Вот поиском этого и займемся. Недолгие поиски привели нас к файлу transport/conf/transport.properties в директории установки УТМ. У нас указан путь для Linux установки, в Windows его расположение аналогично. В самом низу он содержит две интересные опции:
web.server.attempt.ip = 
web.server.access.ip =
Первая – это список адресов, с которых были попытки подключений. Хотя зачем они в конфиге? Логично было бы хранить их в логе. А вот последняя – это и есть наш белый список. Можете откорректировать его до нужных значений, а можете просто очистить. Ошибка нашего коллеги была классическая, он набрал 192.186.х.х вместо 192.168.х.х. После чего просто перезапустите службу УТМ и доступ восстановится.

60 дней бесплатно — грант от Yandex Cloud Запустили программу миграции в Yandex Cloud. Для компаний, которые переносят инфрас
60 дней бесплатно — грант от Yandex Cloud Запустили программу миграции в Yandex Cloud. Для компаний, которые переносят инфраструктуру с другого облака, хостинга или своих серверов. Что получаете: ✅ Грант без лимита — покрываем потребление на 60 дней ✅ Консультация архитектора — план миграции и проектирование ✅ Персональный менеджер на всём пути переезда и после Yandex Cloud — 75+ сервисов, 4 дата-центра, соответствие 152-ФЗ, ГОСТ Р 57580 и GDPR. Платите только за реальное потребление. 📊 Предложение до 20 июня. Оставьте заявку — рассчитаем грант под ваш проект. Узнать больше #реклама 16+ yandex.cloud О рекламодателе

Обновление PostgreSQL в Docker через pg_dumpall   Обновление PostgreSQL между мажорными версиями задача не самая простая
Обновление PostgreSQL в Docker через pg_dumpall   Обновление PostgreSQL между мажорными версиями задача не самая простая, недостаточно просто загрузить новый контейнер, нужно еще выполнить конвертацию структуры кластера СУБД, которая меняется от версии к версии.   Для небольших и средних баз идеально использовать импорт/экспорт при помощи утилиты pg_dumpall, что полностью исключает риск повреждения исходных данных, плюс у вас на руках всегда остается актуальная резервная копия в виде дампа всего кластера.   Итак, приступим, допустим мы изначально имеем:  
services:
  db:
    container_name: postgres-db
  В нашем случае: ▫️ db — имя сервиса Compose ▫️ postgres-db — реальное имя контейнера Docker   1️⃣ Остановим весь стек и запустим обратно только контейнер с СУБД, это исключит возможную запись в БД во время выгрузки:  
docker compose stop
docker compose up -d db
  Теперь выполним выгрузку дампа всего кластера:  
docker exec -t postgres-db pg_dumpall -U postgres > full_backup.sql
Проверяем, что файл выгрузки создан. После чего останавливаем контейнер с БД:  
docker compose down
  2️⃣ Следующие шаги будут несколько различаться в отличие от того, используем ли мы Named Volumes или Bind mount, но в любом случае наша задача запустить новый контейнер СУБД с пустым томом. 🔹 Для Named Volumes было:  
services:
  db:
    image: postgres:17
    volumes:
      - pg_data:/var/lib/postgresql/data
volumes:
  pg_data:
  Стало:  
services:
  db:
    image: postgres:18
    volumes:
      - pg_data_18:/var/lib/postgresql/data
volumes:
  pg_data_18:
  🔹 Для Bind mount было:  
services:
  db:
    image: postgres:17
    volumes:
      - ./postgres-data:/var/lib/postgresql/data
Стало:  
services:
  db:
    image: postgres:18
    volumes:
      - ./postgres-data-18:/var/lib/postgresql/data
  3️⃣ Запускаем СУБД:  
docker compose up -d db
  Мы нее запускаем весь стек, чтобы раньше времени приложения не начали писать в новую чистую БД.   Ждем пока база инициализируется и готова будет принимать соединения, для этого выполним команду:  
docker logs -f postgres-db
  Как только появится сообщение:  
database system is ready to accept connections
  Можно двигаться дальше. Загружаем дамп кластера СУБД:  
docker exec -i postgres-db psql -U postgres < full_backup.sql
  Теперь запускаем весь стек:  
docker compose up -d
  4️⃣ После чего рекомендуется выполнить оптимизацию загруженной базы:  
docker exec -it postgres-db vacuumdb -U postgres --all --analyze-only
  Это не мешает работе и можно запускать уже на работающем стеке. Старые тома лучше всего оставить на некоторое время, пока вы не убедитесь, что обновление прошло нормально.

Получи грант до 1,35 млн руб. на обучение в магистратуре Хочешь развиваться в сфере ИТ и получить фундаментальные знания с пр
Получи грант до 1,35 млн руб. на обучение в магистратуре Хочешь развиваться в сфере ИТ и получить фундаментальные знания с практикой? Поступай в магистратуру Центрального университета! — 4 офлайн программы по востребованным направлениям ИТ — 2 онлайн-программы: машинное обучение и продуктовый менеджмент — 550 грантов до 75% — Вечерние занятия и учеба по выходным — удобно совмещать с работой — Обучение по модели STEM-образования: на стыке науки, технологий и бизнеса — Возможность стажировок и трудоустройства в ведущих компаниях — Государственный диплом за 2 года Магистратура в Центральном университете — это современный подход к образованию, сильный преподавательский состав и актуальные кейсы от индустрии. Оставляй заявку на грант уже сейчас! Зарегистрироваться #реклама 16+ cu.ru О рекламодателе

Настраиваем Visual Studio Code для удаленной работы через SSH Сегодня все чаще и чаще для конфигурационных файлов используютс
Настраиваем Visual Studio Code для удаленной работы через SSH Сегодня все чаще и чаще для конфигурационных файлов используются продвинутые текстовые форматы, такие как JSON или XML, имеющие строгий синтаксис и структуру. Их применение облегчает программную обработку данных, но при этом они все еще остаются легко читаемыми человеком. Однако работа с ними в привычных консольных редакторах имеет ряд неудобств, в частности связанных с соблюдением синтаксиса и формата разметки. Поэтому гораздо удобнее использовать для этого специальные среды разработки, например, VS Code, тем более что он прекрасно умеет работать через SSH. ✅ Читать далее: https://interface31.ru/post/nastraivaem-visual-studio-code-dlya-udalennoy-raboty-cherez-ssh/

20 лет в hardware-индустрии. Начинал инженером в Acronis в 2004-м, дорос до вице-президента Рикор — одного из крупнейших прои
20 лет в hardware-индустрии. Начинал инженером в Acronis в 2004-м, дорос до вице-президента Рикор — одного из крупнейших производителей электроники в РФ. Сейчас работаю на себя: компания инженерных решений AG Bureau и собственный SaaS — каталогизатор поставщиков железа. Завёл канал, чтобы делиться тем, что обычно остаётся в переговорных. Без пресс-релизов и маркетингового глянца. О чём пишу: — Реальные FOB/EXW-цены на серверное железо, память, SSD из моих контрактов — Что происходит у азиатских поставщиков: предоплата, сроки, доступность компонентов — Прогнозы по дефициту DDR5, NAND, серверных CPU с цифрами и обоснованием — Импортозамещение в hardware глазами того, кто реально с этим живёт — Дневник запуска собственного AI-продукта для каталогизации Если работаешь с инфраструктурой, серверами или развиваешь hardware-направление — заходи: https://tglink.io/939e5fc064487b?erid=2W5zFH4wpWu #реклама О рекламодателе

TinyFileManager – простой и эффективный файловый веб-менеджер &nbsp; В современных условиях часто встает вопрос удобного пред
+3
TinyFileManager – простой и эффективный файловый веб-менеджер   В современных условиях часто встает вопрос удобного предоставления доступа к файлам самых разнообразных пользователей, в том числе мобильных и удаленных. Протокол SMB для этой задачи не самая лучшая идея, а создавать дублирующие хранилища наподобие Nextcloud избыточно.   Для такого случая может пригодиться TinyFileManager – простой файловый веб-менеджер в виде единственного PHP-файла. Но разработчик, судя по всему, сосредоточился именно на развитии самого скрипта, а подходы к созданию Docker-образа мягко скажем сомнительны. Поэтому образ мы будем собирать самостоятельно.   Общая структура проекта:
/opt/tinyfm/
├── Caddyfile
├── config.php
├── php-session.ini
├── docker-compose.yml
├── Dockerfile
└── data/
  Dockerfile  
FROM php:8.3-fpm-alpine

WORKDIR /var/www/html

RUN apk add --no-cache \
        libzip-dev \
        libpng-dev \
        libjpeg-turbo-dev \
        freetype-dev \
        oniguruma-dev \
        bzip2-dev \
        curl \
    && docker-php-ext-configure gd --with-freetype --with-jpeg \
    && docker-php-ext-install zip gd mbstring bz2

RUN curl -L -o index.php https://raw.githubusercontent.com/prasathmani/tinyfilemanager/master/tinyfilemanager.php \
    && chown -R www-data:www-data /var/www/html
  docker-compose.yml  
services:

  tinyfilemanager:
    build: .
    container_name: tinyfilemanager
    restart: unless-stopped
    user: "82:82"
    volumes:
      - app_code:/var/www/html
      - ./data:/var/www/html/data
      - ./config.php:/var/www/html/config.php:ro
      - ./php-session.ini:/usr/local/etc/php/conf.d/session.ini:ro
    tmpfs:
      - /tmp:uid=82,gid=82,mode=1777
    security_opt:
      - no-new-privileges:true
    cap_drop:
      - ALL

  caddy:
    image: caddy:2-alpine
    container_name: tinyfm-caddy
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
      - "443:443/udp"
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile:ro
      - app_code:/var/www/html:ro
      - ./data:/var/www/html/data:ro
      - caddy_data:/data
      - caddy_config:/config
    depends_on:
      - tinyfilemanager

volumes:
  app_code:
  caddy_data:
  caddy_config:
  Caddyfile
files.example.com {
    #tls internal
    encode gzip zstd

    header {
        Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
        X-Content-Type-Options nosniff
        X-Frame-Options DENY
        Referrer-Policy no-referrer
    }

    root * /var/www/html
    php_fastcgi tinyfilemanager:9000
    file_server
}
  php-session.ini  
session.gc_maxlifetime = 300
session.cookie_lifetime = 300

session.use_strict_mode = 1

session.cookie_secure = 1
session.cookie_httponly = 1
session.cookie_samesite = Lax

session.save_path = "/tmp"
  config.php  
<?php

$root_path = '/var/www/html/data';
$root_url = 'data';
$http_host = $_SERVER['HTTP_HOST'];

$use_auth = true;

$auth_users = array(
    'admin' => '$2y$10$/K.hjNr84lLNDt8fTXjoI.DBp6PpeyoJ.mGwrrLuCZfAwfSAGqhOW', //admin@123
    'user' => '$2y$10$Fg6Dz8oH9fPoZ2jJan5tZuv6Z4Kp7avtQ9bDfrdRntXtPeiMAZyGO', //12345
    'guest' => '$2y$10$a.DMI5sRjAnvhb.8rFAXY.XPSEO/eatVb4qCMmTc2YcxTDKp9xMyC' //guest
);

$readonly_users = array(
    'guest'
);

$exclude_items = array(
    '.htaccess',
    '.env',
    'docker-compose.yml',
    'Caddyfile',
    'php-session.ini',
    'config.php',
    '.git',
    '.DS_Store',
    '..',
    '.'
);

$online_viewer = false;
$default_timezone = 'Europe/Moscow';
  После чего создаем директорию для хранения файлов и устанавливаем на нее нужные права:  
mkdir -p /opt/tinyfm/data
chown -R 82:82 /opt/tinyfm/data
  И сгенерируем хеши паролей реальным пользователям:  
docker run --rm php:8.3-alpine php -r "echo password_hash('мой_пароль', PASSWORD_BCRYPT) . PHP_EOL;"
  Обратите внимание, пользователи бывают двух типов, с правами загружать файлы и правами только на чтение.   Запускаем проект:  
docker compose up -d -–build
  И переходим в браузере по указанному адресу.

Запустили новый канал про ИИ! 🚀 Наши ИИ агенты 24/7 мониторят соцсети и мировые СМИ, а команда отбирает лучшее — новости об
Запустили новый канал про ИИ! 🚀 Наши ИИ агенты 24/7 мониторят соцсети и мировые СМИ, а команда отбирает лучшее — новости об ИИ, апдейты моделей, инсайды и мемы. Подпишись и присылай свои темы и идеи форматов. Подписывайтесь на @A1ntelligence!

Их нравы На конференции Linux App Summit Себастьян Вик (Sebastian Wick), мэйнтейнер инструментария Flatpak, и Адриан Вовк (Ad
Их нравы   На конференции Linux App Summit Себастьян Вик (Sebastian Wick), мэйнтейнер инструментария Flatpak, и Адриан Вовк (Adrian Vovk), создатель инсталлятора для GNOME OS и один из разработчиков systemd-homed и systemd-sysupdate, выступили с докладом о будущем системы самодостаточных пакетов Flatpak.   В докладе упоминалось намерение создать для нужд Flatpak новый процесс systemd-appd для управления правами приложений и вложенной изоляции. Важный нюанс: код ещё не написан, а поддержка пока только задумывалась.   Но тут «разверзлись хляби небесные» в социальной сети Fediverse началась волна агрессии. Разработчиков обвинили в «насаждении диктатуры», «предательстве портативности» и «союзничестве с Ландьюком». Критика сыпалась на этапе концепции, без анализа доклада. Аргументы «мы ещё даже код не написали» игнорировались.  
Брайан Ландьюк (Bryan Lunduke) — известный технический блогер, яростный критик systemd и корпоративного влияния в Linux . В данном контексте обвинение в «союзничестве» с ним используется как токсичный ярлык и обвинение в намеренном вреде проекту ради идеологии.  
  В результате Адриан Вовк заявил, что до начала этой токсичной кампании он искренне хотел найти элегантное решение для пользователей альтернативных init-систем (например, выделить appd в отдельный демон, как это сделали с elogind). Но после потока неконструктивной агрессии и обвинений у него пропала мотивация тратить личное время и силы на это:  
Но, честно говоря, всё это обсуждение сейчас совершенно бессмысленно, пока мы не написали ни единой строчки кода. Если быть откровенным, до этой травли в Феди я планировал максимально тактично отнестись к сценарию использования без systemd. Но тут я увидел, как кто-то в открытую обвиняет нас в том, что мы «союзники Ландьюка». Так что, извините, но у меня больше нет ни малейшего желания тратить своё время на это дерьмо. Оно того не стоит.
  К чему это привело? Да к тому, что systemd теперь обязательной зависимостью Flatpak, альтернативные решения разработчики больше рассматривать не желают.   И это не первый случай токсичного поведения меньшинств, которые потом искренне удивляются почему никто не хочет поддерживать их решения и вообще тратить на них время. Многие начинают склоняться к теориям заговора и козням корпораций.   На самом деле проблема не в systemd vs openrc (или подставьте сюда все что хотите). Проблема в культуре дискуссии. Токсичное меньшинство, кричащее громче всех, создаёт иллюзию «общественного мнения». Но реальные мейнтейнеры видят: за громкими лозунгами стоит оголтелый фанатизм и догматическое отторжение инакомыслия.

Внимание выпускники и их родители! Хотите получить 90+ баллов на ЕГЭ и 5 на ОГЭ? Не ждите последних моментов для подготовки, начните уже сейчас! ✅ Подготовка к ЕГЭ и ОГЭ от сертифицированных экспертов ФИПИ ✅ Поможем подготовиться к ЕГЭ без стресса ✅ Чёткий план подготовки к ЕГЭ для вашего ребёнка ✅ Гибкий онлайн-формат с понятными занятиями ✅ Бесплатные конспекты и сливы курсов в каналах преподавателей Готовьтесь с онлайн-школой №1 по результатам учеников! Главные по стобалльникам в стране — подготовили 14% от всех. Успейте забрать свою выгоду, пока программа активна! Жмите "Узнать больше" Узнать больше #реклама 16+ О рекламодателе

DEB822
Anonymous voting

Новый формат DEB822 для источников APT Так уж пошло, что многие привычные вещи воспринимаются нами чем-то незыблемым, а попыт
Новый формат DEB822 для источников APT Так уж пошло, что многие привычные вещи воспринимаются нами чем-то незыблемым, а попытка нарушить текущий ход вещей часто воспринимается в штыки. Новый формат источников APT - DEB822 не исключение, он появился начиная с выпуска Debian 13, а пользователи Ubuntu познакомились с ним немного раньше, начиная с Ubuntu 24.04. В данной статье мы подробно разберем новый формат, его основные отличия и преимущества перед привычным старым. Заметка на эту тему уже была, теперь полноценная статья, которую мы достали из черновиков, вычитали, причесали и опубликовали. Статья серьезно расширена и дополнена, кроме подробного разбора опций в ней есть новые разделы, которых не было в заметке. ✅ Читать: https://interface31.ru/post/novyj-format-deb822-dlya-istochnikov-apt/

Открываем выгодную Турцию Планирование отпуска — это не 48 открытых вкладок и путаница. Это только одна, с Яндекс Путешествия
Открываем выгодную Турцию Планирование отпуска — это не 48 открытых вкладок и путаница. Это только одна, с Яндекс Путешествиями. Сервис составил интерактивные карты с местами, до которых обычно не доезжают, чтобы вы могли по-новому раскрыть страну. Исследуйте Турцию и бронируйте отели с выгодой: — TURKEY5K скинет 5000 ₽ при бронировании от 50 000 ₽ — TURKEY10K скинет 10 000 ₽ при бронировании от 100 000 ₽ Забронировать #реклама special.travel.yandex.ru О рекламодателе