Задать вопрос
  • Почему даже после отключения SIP не получается удалить файлы на macOS?

    BjLomax
    @BjLomax
    TV.app входит в базовую поставку OS. А оно целиком read-only, на уровне отдельного раздела APFS.
    Ответ написан
    2 комментария
  • Как я могу создать такую логику?

    @catch-a-chalk
    Привет, стоит ввести еще одну функцию positionMarkerдля такой задачи:

    const items = [
        { name: "100 000", reward: "100000_sr", chance: 5 },
        { name: "VIP (14 дней)", reward: "14_vipsr", chance: 3 },
        { name: "1000 Алмазов", reward: "1000_az", chance: 2 },
        { name: "75 000 ", reward: "75000_sr", chance: 10 },
        { name: "VIP SILVER (7 дней)", reward: "7_sl", chance: 8 },
        { name: "500 Алмазов", reward: "500_az", chance: 7 },
        { name: "1000 Пыли", reward: "1000_ds", chance: 6 },
        { name: "25 000 ", reward: "25000_sr", chance: 15 },
        { name: "200 Алмазов", reward: "200_az", chance: 15 },
        { name: "300 Пыли", reward: "300_ds", chance: 15 },
        { name: "Ускорение (3 lvl)", reward: "3_boost", chance: 10 },
        { name: "Улучшение (3 lvl)", reward: "3_imp", chance: 10 },
        { name: "VIP SILVER (2 дня)", reward: "2_sl", chance: 10 },
        { name: "10 000 ", reward: "10000_sr", chance: 20 },
        { name: "5 000 ", reward: "5000_sr", chance: 20 },
        { name: "100 Алмазов", reward: "100_az", chance: 20 },
        { name: "Ускорение (2 lvl)", reward: "2_boost", chance: 20 }
    ];
    
    const caseContainer = document.getElementById("caseContainer");
    const scrollingItems = document.getElementById("scrollingItems");
    const resultText = document.getElementById("resultText");
    const openCaseButton = document.getElementById("openCaseButton");
    const marker = document.getElementById("marker");
    let populatedItems = []; // Массив для хранения созданных предметов
    let winningIndex = 0; // Индекс выигрышного предмета
    
    function populateItems() {
        for (let i = 0; i < 151; i++) { // Создаем 151 предмет
            const item = items[i % items.length]; // Используем элементы из массива
            const div = document.createElement("div");
            div.className = "item";
            div.innerText = item.name;
            scrollingItems.appendChild(div);
            populatedItems.push(item); // Сохраняем предмет в массив
        }
    }
    
    function animateScroll(duration) {
        const itemWidth = scrollingItems.children[0].offsetWidth; // Ширина одного предмета
        const totalItems = scrollingItems.children.length;
    
        // Позиция, на которую нужно прокрутить, чтобы выигрышный элемент оказался под стрелкой
        const targetPosition = (winningIndex * itemWidth) - (caseContainer.offsetWidth / 2) + (itemWidth / 2); // Центрируем выигрышный элемент
        const scrollWidth = totalItems * itemWidth; // Общая ширина прокрутки
        const startTime = performance.now();
    
        function scrollAnimation(currentTime) {
            const elapsedTime = currentTime - startTime;
            const progress = Math.min(elapsedTime / duration, 1);
            const easeInOutQuad = (t) => t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t;
    
            const easeProgress = easeInOutQuad(progress);
            const currentPosition = -scrollWidth * easeProgress + targetPosition; // Прокручиваем к целевой позиции
            scrollingItems.style.marginLeft = `${currentPosition}px`;
    
            if (progress < 1) {
                requestAnimationFrame(scrollAnimation);
            } else {
                // После завершения анимации, показываем выигрышный элемент
                showWinningItem(); // Показываем выигрышный элемент
                positionMarker(); // Позиционируем маркер над выигрышным элементом
            }
        }
    
        requestAnimationFrame(scrollAnimation);
    }
    
    function showWinningItem() {
        const winningItem = populatedItems[winningIndex]; // Получаем выигрышный предмет
        resultText.innerText = `Вы выиграли: ${winningItem.name}`;
    
        // Изменяем текст выигрышного предмета в scrollingItems
        const winningElement = scrollingItems.children[winningIndex];
        winningElement.classList.add("winning-item"); // Добавляем класс для стилей
        winningElement.innerText = winningItem.name; // Обновляем текст
    }
    
    function positionMarker() {
        // Ширина одного предмета
        const itemWidth = scrollingItems.children[0].offsetWidth; 
        // Центрируем маркер над выигрышным элементом
        const markerPosition = (winningIndex * itemWidth) - (caseContainer.offsetWidth / 2) + (itemWidth / 2); 
        // Устанавливаем позицию маркера
        marker.style.left = `${markerPosition}px`; 
    }
    
    openCaseButton.addEventListener("click", () => {
        // Очищаем текст результата
        resultText.innerText = ""; 
        // Очищаем массив предметов
        populatedItems = []; 
        // Очищаем элементы прокрутки
        scrollingItems.innerHTML = ""; 
        // Заполняем предметами при загрузке страницы
        populateItems(); 
    
        // Выбираем случайный индекс выигрышного предмета
        // Случайный индекс в пределах массива items
        winningIndex = Math.floor(Math.random() * populatedItems.length);
        // Запускаем анимацию прокрутки (уменьшено время)
        animateScroll(2000); 
    });


    И ее же добавляем в анимацию скролла.
    Ответ написан
    Комментировать
  • Есть такой сервис для Blender?

    @WaterSmith
    Android-разработчик. Java, Kotlin
    Для этого не нужны особенные стоки. Почитайте, посмотрите туториалы, про анимацию в Блендере, что-нибудь простенькое можно срендерить уже после нескольких часов обучения.
    А если отвлечься от Блендера, то для этой задачи (создания видеозаставок), в Microsoft Clipchamp есть шаблоны, в том числе и бесплатные.
    Ответ написан
    Комментировать
  • Как убрать лишний вывод в консоль?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    Регулировать вывод команд можно через коммандлеты Out-* , используя их через пайп
    Например в вашем случае
    $computer_sys.Put() | out-null

    P.S. спасибо за исправление, ранее в ответе был пример с присвоением, для которого этот out-null не нужен, по причинам указанным в комментарии. Надо, блин, проверять что копипащу )
    Ответ написан
    1 комментарий
  • Как подключить 4G модем к Wi-Fi роутеру так, чтобы интернет не падал каждые несколько часов?

    pindschik
    @pindschik
    ФЫВА ОЛДЖ
    USB-"свистки" часто нестабильны, при чем одна и та же комбинация может работать в одном месте и не работать в другом. Очень часто им кратковременно не хватает питания на порту роутера, после чего впадают в состояние "он лежит и еле дышит, ручкой-ножкой не колышит".
    Существенно лучше и гораздо стабильнее работает, если использовать внешний модем, подключающийся по витой паре во входной порт роутера, и питающийся через PoE (и заодно можно выносить его туда, где лучше приём). Рекламировать конкретные модели не буду, обратитесь в "секту свидетелей микротика" (там будет относительно сложная настройка, а срок работы в суровых условиях... ну как повезет, хотя на авито полно рабочих модулей модемов для них). В этом варианте можно достать 4G даже до базовой станции, расположенной в 10 км за лесом.

    Еще вариант - поменять роутер на модель с прямой поддержкой SIM-карт, с ними как правило, тоже минимум проблем.
    Ответ написан
    Комментировать
  • OpenWRT- обращаться к устройствам подсети?

    ValdikSS
    @ValdikSS
    Вам либо нужно настроить роутер-шлюз на маршрутизацию нужных вам VPN-подсетей через шлюз-VPN (тогда сам роутер-шлюз будет правильно маршрутизировать трафик внутрь VPN), либо в настройках DHCP-сервера локальной сети указать опцию 121 Classless Static Route, с указанием подсети VPN и адресом роутера VPN, чтобы клиенты знали о наличии VPN-шлюза в сети и сами маршрутизировали трафик на него.

    Первое настраивается статическими правилами маршрутизации в самом роутере, второе настраивается опциями DHCP-сервера локальной сети. Настройка DHCP предпочтительней в плане скорости и нагрузки на роутер-шлюз.
    Ответ написан
    Комментировать
  • Настройка сети из трёх Mikrotik и коммутатора Dahua.Что нужно?

    b1ora
    @b1ora Куратор тега MikroTik
    Контакты в профиле
    1. Узнать настройки провайдера
    2. Сбросить RB2011 и настроить через Quick Setup (для работы будет достаточно)
    3. Сбросить точки в caps mode (system > reset)
    4. Настроить CAPsMAN на RB2011

    К сведению - RB2011 очень древняя железка и в лучшем случае вытянет максимум 300Мбит. По этому надо менять на RB4011, либо брать hAP AC2/AX2/AX3
    Ответ написан
    2 комментария
  • Как сменить дистрибутив Linux через SSH без доступа к веб-панели?

    ValdikSS
    @ValdikSS
    Вот один из примеров для контейнеров OpenVZ/LXC: https://github.com/mowwom/OvzReinstall/tree/main
    А вот для KVM: https://github.com/bohanyang/debi

    Существует два подхода: либо из-под ОС изолируется окружение, останавливаются все демоны, блокируется запись в существующие файловые системы, запускается временная ОС из tmpfs, и все действия по переустановке производятся через неё, либо из-под ОС подготавливается запуск инсталлятора другой ОС после перезагрузки, и после перезагрузки происходит автоматическая переустановка.
    Ответ написан
    Комментировать
  • Есть ли в роутере Keenetic возможность фильтрации траффика по ip адресам?

    @Lx6g1ZG1
    Чтобы какой-нибудь youtube работал через впн, а остальное нет.

    это называется роутинг на основе политик (policy based routing или pbr) возможен на linux и как следствие на многих устройствах с прошивками на основе linux. Скорее всего на Keenetic это доступно. Настраиваентся впн и указывается что обращения к youtube.com (или может быть ещё чего) идут через интерфейс впн.
    Ответ написан
    Комментировать
  • Крон внутри докера?

    karabanov
    @karabanov Куратор тега Docker
    Системный администратор
    Лучше не надо

    UPD
    Появилось некое решение supercronic - ещё не тестировал, но судя по описанию выглядит перспективно.
    Ответ написан
    Комментировать
  • Как освободить память GPU после работы YOLO?

    @rPman
    посмотри это обсуждение, там в коментах здравые варианты
    Ответ написан
    Комментировать
  • Как решить проблему с Immich после подключения обратного прокси?

    SignFinder
    @SignFinder
    Wintel\Unix Engineer\DevOps
    Сертификат SSL должен быть получен в nginx, и в nginx должен быть listen 443 SSL, а в блоке listen 80 - редирект http на https.
    По какому протоколу будет работать reverse proxy, зависит есть ли на порту 2083 какой то сертификат или там обычный http.

    И не стоит забывать что некоторый сервисам нужен reverse proxy с поддержкой вебсокетов.
    Ответ написан
    1 комментарий
  • Какой выбрать Linux совместимый ноутбук на базе процессоров ARM?

    @mureevms
    Есть ли среди комьюнити кто-нибудь, кто имеет успешный опыт установки Linux на ноутбуки Apple Silicon, в частности на упомянутый выше Pro? Отзовитесь, пожалуйста.

    Есть, но только на M1. Так же я автор статьи Есть ли жизнь на arm'е?. Последний раз в Linux грузился пару месяцев назад, кажется стало лучше, но по части софта почти ничего не изменилось.
    В топике не увидел для чего именно вам нужен Линукс. Поэтому рекомендовал бы брать мак и переезжать на него. Подавляющее большинство софта для Линукса работает под Макосью. Но перед принятием такого решения перейдите по первым двум ссылкам из статьи и почитайте с чем придется столкнуться (где про про боль и гнев).
    Либо же искать другой ARM ноут, тут уже не подскажу. Но до этого был Dell XPS 13, хороший аппарат, мне нравился. У Dell выходила модель с АРМом, посмотрите туда, может хорошей окажется.
    И главное. Имейте ввиду, что на ARM привычный вам софт может просто не заработать.
    Ответ написан
    Комментировать
  • Как настроить маршрутизацию в Proxmox?

    @latush
    post-up route add -net 10.64.24.0 netmask 255.255.255.0 gw 10.99.1.254
    a Gateway 10.99.1.254 для vmbr0 убрать нахрен
    Ответ написан
    3 комментария
  • Интерактивный скрипт с read при запуске системы (debian). Как?

    @rPman
    Ввод пользователя должен кто то принять и передать в приложение, если X-сервер еще не запущен (хотя никто не мешает его запустить), то используй терминал, в linux сейчас используют agetty (этих *getty с десяток в репах можно подобрать).

    Делать это в rc.local считается уже некошерным способом, поэтому делаешь скрипт systemd
    anthropic claude sonnet 3.5
    # /etc/systemd/system/my-script.service
    [Unit]
    Description=My Interactive Script
    Before=getty.target
    
    [Service]
    Type=simple
    ExecStart=/path/to/your/script.sh
    StandardInput=tty
    TTYPath=/dev/tty1
    TTYReset=yes
    TTYVHangup=yes
    
    [Install]
    WantedBy=multi-user.target

    google...
    Ответ написан
    2 комментария
  • Как в bash содержимое файла передать как аргумент другой команде, сохранив переносы строк?

    Driver86
    @Driver86 Автор вопроса
    Немодератор toster.ru
    Оказывается, переменную при передаче надо взять в кавычки.
    Ответ на вопрос, зачем это надо, вот: https://www.altlinux.org/SMART-%D0%BE%D0%BF%D0%BE%...
    Там переменная в кавычках передаётся (text="$MSG"). Если бы я внимательнее смотрел, то и вопроса бы не возникло изначально
    Ответ написан
    7 комментариев
  • Как настроить кластер коммутаторов на mikrotik?

    b1ora
    @b1ora Куратор тега MikroTik
    Контакты в профиле
    1. Обновляем на RouterOS 7
    2. Собираем MLAG
    Ответ написан
    Комментировать
  • Как ограничить доступ к папке Samba по ip?

    hint000
    @hint000
    у админа три руки
    Вариант простой как каменный топор: вынести папку на отдельную Самбу (в том числе на виртуалке).

    Или вариант для приключенцев: попытаться запустить вторую Самбу на том же хосте на другом порту (поменять имя сервиса? и поменять папку с конфигами?). При этом вряд ли винда способна понять, что Самба может быть на нестандартном порту, значит на самбовом хосте нужно в iptables добавить переадресацию со стандартного порта на нестандартный только для одного клиента.
    Ответ написан
    Комментировать
  • Как освободить место на диске облачного сервера Ubuntu 24.04 LTS 64-bit?

    SignFinder
    @SignFinder
    Wintel\Unix Engineer\DevOps
    Магическая команда (из под рута), чистящая все логи всех контейнеров docker
    truncate -s 0 /var/lib/docker/containers/*/*-json.log

    А после этого изучать, как ограничить объем логов docker в /etc/docker/daemon.json, который по умолчанию не лимитирован.
    Ответ написан
    Комментировать