Задать вопрос
  • Какую версию Windows выбрать?

    Только Win11 оригинальный образ.
    Linux ноутбуки не поддерживает.
    Ответ написан
  • Какую версию Windows выбрать?

    Lord_of_Rings
    @Lord_of_Rings
    Дунадан - северный странник. Злой, но очень добрый
    Windows 11
    Ответ написан
    Комментировать
  • Есть ли какой-либо бесплатный удаленный сервер с долгосрочной перспективой использования, который можно использовать в коммерческих целях?

    @Everything_is_bad
    бесплатный удаленный сервер с долгосрочной перспективой использования, который можно использовать в коммерческих целях
    100500 раз уже сказано, заплати 5$ за минимальный нормальный vps и не страдай фигней
    Ответ написан
    3 комментария
  • Как запустить языковую модель на JavaScript?

    zkrvndm
    @zkrvndm Автор вопроса
    Архитектор решений
    Сам спросил и сам же нашел ответ) Блин, зря только спрашивал)) Нашел 3 проекта, которые могут запускать языковые ИИ модели целиком на фронте за счет ресурсов браузера:

    https://github.com/rahuldshetty/llm.js
    https://github.com/tangledgroup/llama-cpp-wasm
    https://github.com/huggingface/transformers.js

    Всем спасибо, что заглянули, вопрос закрываю.
    Ответ написан
    Комментировать
  • Почему busybox wget не работает, пока не запустить вручную openssl?

    @junecover Автор вопроса
    Сам спросил, сам и отвечу.
    Лишний раз подтвердилась народная мудрость, чтобы найти ответ, надо правильно сформулировать вопрос. Гугл помог найти решение по запросу "busybox wget is shitty". Я не силён в английском, поэтому не стану углубляться семантику этих слов. Кому надо, тот сам поймёт.

    Теперь ближе к теме.

    У busybox wget есть давняя неисправнось в некой сущности "Support HTTPS using internal TLS code". Попросту говоря эта часть безнадёжно устарела и не работает в 2025 году.
    Решение проблемы:
    Скомпилировать busybox с отключённой опцией
    -> Networking Utilities
        -> wget (41 kb) (WGET [=y])
          FEATURE_WGET_HTTPS [=n]

    и со включённой опцией "Try to connect to HTTPS using openssl"
    -> Networking Utilities
        -> wget (41 kb) (WGET [=y])
          FEATURE_WGET_OPENSSL [=y]


    И ещё добавить алиас:
    alias wget='wget --no-check-certificate'
    Тогда busybox-овский wget станет сам без лишних пинков работать с https.

    Почему так? Ве́домо только разработчикам busybox.
    Ответ написан
    2 комментария
  • Как происходит сброс и заполнение регистров ip и cs когда CPU получает сигнал reset при включении ПК?

    15432
    @15432
    Системный программист ^_^
    1. Включается Intel ME, загружает свою прошивку из SPI флеш-памяти, инициализирует своё оборудование (внешние и внутренние PCIe шины, sideband, DMI), всё это происходит в мини-операционке внутри чипсета PCH
    2. Intel ME считывает модель CPU, находит соответствующий блок микрокода в FIT разделе флешки, проверяет его цифровую подпись и загружает в CPU, вероятно, по шине DMI
    3. RISC-подобный микрокод запускается на CPU, в том числе в нем закодированы инструкции по инициализации режима процессора и начальные значения программного заполнения некоторых регистров. Часть регистров заполняется аппаратно - они выполнены "в кремнии" так, что когда на reset-domain, которому они принадлежат, приходит сигнал сброса, они устанавливаются в значение по умолчанию. Опционально могут быть программные или аппаратные "страпы", меняющие значение по умолчанию на другое, например, загрузка с резервного бутлоадера.
    4. RISC Микрокод начинает парсить x86 команды и исполнять программный код, симулируя CISC архитектуру и обеспечивая конвейеризацию, hyper-threading и кучу всего другого

    Это если очень и очень кратко, все подробности вам вряд ли кто расскажет, многое под NDA, многое сложно понять.
    Ответ написан
    Комментировать
  • Почему busybox wget не работает, пока не запустить вручную openssl?

    @rPman
    По больше бы таких интересных вопросов.

    Задал ваш вопрос openai:o1-preview, ответ выглядит очень логичным:
    Вызвано недостаточной энтропией в генераторе случайных чисел (RNG) вашей минимальной системы.
    В системах Linux безопасные операции, такие как установление SSL/TLS-соединений, требуют случайных чисел, сгенерированных из системного пула энтропии.
    В вашей минимальной системе очень мало активности для генерации энтропии (например, нет дискового ввода-вывода, сетевой активности, пользовательского ввода), поэтому пул энтропии мал.

    Когда `wget` пытается установить HTTPS-соединение, он полагается на эту энтропию. Если ее недостаточно, библиотека SSL не может сгенерировать необходимые случайные значения, что приводит к сбоям соединения, таким как «Сброс соединения одноранговым узлом».
    ...
    Когда вы запускаете `openssl s_client`, он выполняет операции, которые помогают накапливать энтропию.

    **Как это исправить:**

    1. **Убедитесь, что `/dev/random` и `/dev/urandom` существуют:**
    - Убедитесь, что в вашей системе есть эти устройства:
    ```sh
    ls -l /dev/random /dev/urandom
    ```
    - Если их нет, создайте их:
    ```sh
    mknod -m 666 /dev/random c 1 8
    mknod -m 666 /dev/urandom c 1 9
    ```

    2. **Заполните пул энтропии при запуске:**
    - **Используйте демон сбора энтропии:**
    - Включите в свою сборку такой инструмент, как `haveged` или `rng-tools`. Эти демоны генерируют энтропию на основе таймеров или аппаратных ГСЧ.
    - Например, с `haveged`:
    - Скомпилируйте и установите `haveged` в свою систему.
    - Запустите его при запуске:
    ```sh
    haveged -w 1024
    ```
    - **Ручное заполнение энтропии (менее безопасно):**
    - Если добавление демона невозможно, вы можете вручную заполнить энтропию (обратите внимание, что это менее безопасно и не рекомендуется для производства):
    ```sh
    dd if=/dev/urandom of=/dev/random bs=1 count=512
    ```
    - Эта команда записывает случайные данные обратно в `/dev/random`, помогая заполнить пул энтропии.

    3. **Проверьте уровни энтропии:**
    - Отслеживайте доступную энтропию:
    ```sh
    cat /proc/sys/kernel/random/entropy_avail
    ```
    - Значение ниже 100 может привести к блокировке или сбою операций SSL.

    4. **Используйте аппаратный генератор случайных чисел (если доступен):**
    ...

    Посмотри, что показывает cat /proc/sys/kernel/random/entropy_avail
    Ответ написан
    3 комментария
  • Почему разные кабели заряжают телефон по разному?

    anthtml
    @anthtml
    Системный администратор программист радиолюбитель
    Легко
    1) кабель перебит, но не полностью, а несколько волокон - из-за чего ток через него проходит малый и соответственно большая просадка напряжения.
    2) Разное качество кабелей - фирменные телефонные держат 2А, дешевые от всяких китайских airdots-сов хорошо если 0,5А выдержат - там беличий волос а не проводник
    3) Дефолтный стандарт USB - 5V 0.5A - все что больше, это уже fast charge и некоторые контроллеры заряда не принимают больше от неизвестных зарядок проводов. Часто в micro разъеме 5 контакт может висеть на каком резисторе и если этот резистор не правильного сопротивления или его нет, то телефон не переключится в FC
    Ответ написан
    Комментировать
  • Какой выбрать мини ПК для умного дома?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Малинку или апельсинку брать имеет смысл в максимальной конфигурации в рамках вашего бюджета - дабы не было мучительно больно при добавлении новых сервисов/фич из-за нехватки ресурсов. А в случае апельсинки, если нет возможности подключить кабелем, то с поддержкой WiFi - это версия 5b, а без вайфая - просто версия 5. У 5 версии и 5 pro есть NVME порт, а у 5B - нету. Систему ставьте только на SSD - либо на SATA USB коробочку либо на NVME в случае апельсинки. На флешку или emmc систему не ставьте - оно так очень быстро кони двинет.
    В качестве хостовой ОС ставьте дебиан стабильный, а Home Assistant ставьте в режиме Home Assistant Supervised.
    Из недорогих систем умного дома для старта могу посоветовать sonoff. Либо самостоятельно недорогие варианты и с али заказывайте. Для ZigBee вам потребуется шлюз и их есть два варианта. Отдельный и USB донгл. Отдельный брать надо только в одном случае: малинка/апельсинка в железном ящике или в другом неудобном для вай-фая месте, т.к. его надо будет перепрошивать с паяльником и программатором на кастомную прошивку для отвязки от Китая. Первую версию точно, но во второй, возможно, исправили - я точно не помню и надо гуглить. В остальных случаях USB донгл лучший вариант - HA его спокойно подхватывает, плюс USB легко пробрасывается в виртуалки практически везде. В целом соноф за свои деньги норм, шлюзы, реле и датчики - точно. Кнопки тоже в целом норм - можно прилепить куда угодна на стену, но классические выключатели всё же удобнее. Я так и не нашел недорогих вариантов таких выключателей - поэтому пока кнопки использую. Да, иногда попадаются глючные девайсы: но 500-700 рублей не так жалко, как купить пачку девайсов по 2-3к каждый от каких-нибудь сяоми и получить вендор-лок или еще что.
    Next(Own)cloud / SeaFile и другие сервисы ставьте так же в докере. Диски - в USB коробки. Только учитывайте объем энергопотребления дисков и лучше используйте один мощный блок питания для всех девайсов. Ну и ящик сразу берите по-больше, куда всё это дело упаковать - сантиметров 30х30х15 хотя бы.

    В общем же, при текущих ценах на малинки/апельсинки рекомендую взять мини-ПК - это более универсальное решение. Там, где нужен только HA и малое энергопотребление - малинка/апельсинка. Если же таких требований нет и хочется ещё что-то поставить или поиграться - то однозначно мини-ПК на селероне или чём-то таком х86.
    Ответ написан
  • Как выучить Python?

    Lord_of_Rings
    @Lord_of_Rings Куратор тега Python
    Дунадан - северный странник. Злой, но очень добрый
    1. Вам надо определиться со сферой и ЯП. Насчёт тестирования я не в курсе, но с играми в python туго. Я никогда не видел ни одной вакансии, где искали бы питониста для разработки игр.
    2. Забудьте про онлайн-курсы, платформы и т. д. и т. п. Это всё вредно, также как и начинать учить ЯП с разработки тг ботов. Ни в коем случае так не делайте
    3. Я рекомендовал бы начать с книги Пола Берри "Изучаем программирование на Python", с обязательным выполнением задач и упражнений, а затем перейти на Марка Лутца "Изучаем Python". В качестве справочника "под рукой" я использовал книгу Била Любановича.
    4. После того, как вы осилите это, ищите для себя интересные пет-проекты и развивайте их. Будет хорошо, если они будут разной направленности (веб, десктоп ещё что-то). Несмотря на то, что всё это вам вряд ли понадобится, вы набьёте руку и будете ориентироваться в языке. Ну и определитесь, что вам из этого интересно. Процитирую свой комментарий под одним из ответов здесь
      С олимпиадными задачами это всё быстро надоест и начнёшь подумывать, насчёт состояния своего серого вещества и полезности этого занятия.
      Надо придумать для себя какой-то проект - в меру сложный и в меру простой, чтобы охватывал область, в которой планируешь развиваться, интересный для самого себя. Желательно что-нибудь "без конца". Т. е. тот же блог ты напишешь, но до идеала всегда будет далеко и какое-то время это будет для тебя мотивацией двигаться вперёд.


    Как-то так. Замечу, что всё выше описанное - это моё мнение. Оно основано на моём опыте, и возможно этот путь не совсем верный, или не подходит для вас.
    Ответ написан
  • Почему ноутбук после незначительного намокания заходит в БИОС?

    Ноутбук заявлен как влагозащищённый? Намокала только внешняя часть корпуса?

    Если нет, то почему тогда "незначительное"?

    Вообще причиной такого может быть даже не намокание, а что-то другое.

    В любом случае - срочно тащи в СЦ, ибо если был залит, то внутри всё ещё может быть влага и контакты внутри могут тупо сгнить.

    "Срочно" читать как "вотпрямщас".
    Ответ написан
    1 комментарий
  • Почему антивирус ругается на exe Python?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Потому что все механизмы создания исполняемых файлов из скриптов похожи по поведению на вирусы.
    Ответ написан
  • Почему при запуске Пк не видит монитор, мышку и клавиатуру?

    15432
    @15432
    Системный программист ^_^
    Да тут у вас в целом комп не запускается. Предположу, что процессор (вы не указали какой) слишком новый для материнской платы и для запуска нужно обновить BIOS (вы не указали версию BIOS, обычно написана на наклейке на ПЗУ матплаты).

    Но так может быть неисправно что угодно
    Ответ написан
    Комментировать
  • Есть удобрый IL Viewer для Visual Studio?

    В решарпере точно есть.
    А после решарпера не долго и на райдер пересесть.

    Ещё есть расширение NET Reflector.

    Как внешние инструменты можно попробовать ilspy, Dotpeek, Sharplab, Linqpad.

    https://ru.stackoverflow.com/questions/1355898/Как...
    Ответ написан
    Комментировать
  • Можно ли в Linux на файловой системе EXT4 запретить именовать файлы одинаково с разным регистром букв?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Надо включить поддержку регистронезависимости при создании файловой системы
    mkfs -t ext4 -O casefold /dev/диск
    или позднее
    umount /dev/диск
    tune2fs -O casefold /dev/диск
    mount /dev/диск

    Затем установить у нужного каталога атрибут регистронезависимости
    chattr +F /путь/к/каталогу
    Ответ написан
    7 комментариев
  • Направления создание клона Minecraft?

    @dim5x
    ЗИ, ИБ. Помогли? Поблагодарите. Отметьте ответом.
    Освоить базовый синтаксис русского языка.
    Ответ написан
    1 комментарий
  • Перехват web уведомлений которые приходят в Windows?

    @dim5x
    ЗИ, ИБ. Помогли? Поблагодарите. Отметьте ответом.
    prerequisite: python 3.9 и winrt

    spoiler
    import asyncio
    from winrt.windows.ui.notifications.management import UserNotificationListener
    from winrt.windows.ui.notifications import KnownNotificationBindings
    
    async def notification_handler(listener, seen_notifications):
        print("Слушатель уведомлений запущен. Ожидание новых уведомлений...")
    
        # Бесконечно слушаем уведомления
        while True:
            try:
                # Получение всех текущих уведомлений
                notifications = await listener.get_notifications_async(0)
    
                for notification in notifications:
                    notification_id = notification.id  # Получаем уникальный ID уведомления
    
                    # Проверяем, было ли это уведомление уже обработано
                    if notification_id not in seen_notifications:
                        seen_notifications.add(notification_id)  # Добавляем ID в множество обработанных уведомлений
    
                        try:
                            # Получение информации об уведомлении
                            app_name = notification.app_info.display_info.display_name
                            binding = notification.notification.visual.get_binding(KnownNotificationBindings.get_toast_generic())
                            if binding:
                                text_elements = binding.get_text_elements()
                                title = text_elements[0].text if len(text_elements) > 0 else "Без заголовка"
                                body = text_elements[1].text if len(text_elements) > 1 else "Без текста"
                                print(f"Новое уведомление!")
                                print(f"Приложение: {app_name}")
                                print(f"Заголовок: {title}")
                                print(f"Текст: {body}")
                                print("-" * 50)
    
                               # Проверяем что ув. от нужного приложения и делаем всякое нужное с ним.
    
                        except Exception as e:
                            print(f"Ошибка при обработке уведомления: {e}")
    
                # Задержка перед следующим циклом
                await asyncio.sleep(1)
    
            except Exception as e:
                print(f"Ошибка при получении уведомлений: {e}")
                await asyncio.sleep(5)  # Задержка перед повторной попыткой в случае ошибки
    
    async def main():
        # Получение текущего слушателя уведомлений
        listener = UserNotificationListener.get_current()
    
        # Смотрим есть ли разрешение на доступ к уведомлениям. Если нет, лезем в настройки уведомлений.
        access_status = await listener.request_access_async()
        if access_status != 1:
            print("Нет разрешения на доступ к уведомлениям. Проверьте настройки конфиденциальности.")
            return
    
        seen_notifications = set()  # Множество для хранения ID уже обработанных уведомлений
        await notification_handler(listener, seen_notifications)
    
    if __name__ == "__main__":
        asyncio.run(main())

    67590b9765568892633574.png
    Ответ написан
    Комментировать
  • Не запускается сборка на китайской плате. Что делать?

    Накупят сомнительного железа с али, а потом жалуются, что что-то не работает.

    Вполне возможно, что после всех своих телодвижений ты плату спалил - видел недавно даже на реддите пост, как чел подключал питание процессора, но на плате было два разъёма (чёрный и белый) и он просто не угадал, в какой нужно вставлять (по форме разъёмы одинаковые).

    Возможно этой плате для старта всё-таки нужна батарейка.

    Возможно, что видеокарта всё-таки неисправна.

    Возможно, мать была неисправна изначально.

    Возможно, БП всё-таки нисправен.

    Возможно, переходник кривой для видеокарты.
    Ответ написан
    2 комментария
  • Возможно ли использовать push уведомления без Firebase на Android?

    402d
    @402d
    начинал с бейсика на УКНЦ в 1988
    Все альтернативы системным мгновенным сообщениям (пушам через фаербейс) сводятся к периодическому опросу сервера или открытому вебсокет соединению. А значит ваше приложение должно держать постоянно работающую фоновую службу. А вот с этим все становиться от версии андроида все хуже и хуже. 12,13,14 последовательно закручивают гайки.
    Я не знаю как пройти модерацию плея в текущий момент.
    Ваш манифест
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
        <service
            android:name=".MyService"
            android:foregroundServiceType="вот тут нужно указать тип"
            android:exported="false">
        </service>

    https://developer.android.com/develop/background-w...
    можно ли на вашу задачу притянуть dataSync,remoteMessaging ? Не уверен.
    Вариант specialUse требует потом еще заполнять анкету в личном кабинете разработчика.

    В общем в любом случае есть риск reject'а (отклонения модерацией) приложения
    Ответ написан
    Комментировать
  • Как вывести детальную новость?

    я правильно понял, что под каждую категорию у Вас отдельный инфоблок? Если это так, то одним файлом не обойтись.

    Если начальная задача была "Сделать новости с категориями", то для этого обычно:
    1) берут тип инфоблока с флагом "Использовать древовидный классификатор элементов по разделам". Если такого типа нет - заводят новый.
    2) создают один инфоблок
    3) в этом инфоблоки создают разделы ( категории ) и элементы ( сами новости )
    4) в публичной части создают отдельный каталог ( например, /news ) и в /news/index.php добавляют комплексный компонент bitrix:news

    Да и вообще, если у Вас есть и список новостей и просмотр новости детально, то нет смысла делать отдельные файлы с "bitrix:news.list" и "bitrix:news.detail". Нужно использовать bitrix:news
    Ответ написан
    2 комментария