Задать вопрос
  • Какие есть программы с большим кол-вом зависимостей?

    @marichkaz
    Вопрос действительно странный, но тем не менее интересный. На ум сразу приходят:
    • Старые игры или софт — особенно те, которые разрабатывались без учёта современных подходов к управлению зависимостями. Например, игры на старых движках (Unreal Engine 3/4) часто требуют дополнительных DLL вроде DirectX, Visual C++ Redistributable
    • Софт для работы с медиа — программы типа Adobe After Effects (ранние версии), Blender или даже Sony Vegas 100 % могли требовать специфических библиотек
    • Старый open-source софт — иногда авторы "забивают" на интеграцию установщиков, особенно в случае портативных приложений, а для работы может понадобиться куча специфических DLL, например libgcc, libstdc++ или libjpeg


    Если ты хочешь написать установщик для таких недостающих библиотек, это крутая идея! Можешь начать с наиболее распространённых зависимостей:
    • Microsoft Visual C++ Redistributable (разных годов)
    • DirectX Runtime
    • OpenAL
    • .NET Framework


    Ещё хорошая идея — добавить сканер для проверки отсутствующих DLL и предложить их установить. Например, можно парсить ошибки типа "Missing DLL" и автоматически искать решение.
    Ответ написан
    Комментировать
  • Как разделить интерфейсы wifi (Captive Portal)?

    Поправьте конфиг nds
    Ответ написан
    Комментировать
  • Как использовать C++ с FASM?

    @none7
    Даже не мечтай сделать бутлоадер на C++, это невозможно. Если не хочешь возиться с Ассемблером, то просто возьми GRUB, он легко умеет запускать бинарники ELF генерируемые gcc. Так же C++ является очень зависимым от окружения языком. Кто-то должен обеспечить ему реализацию operator new, operator delete, а так же различные функции связанные с обработкой исключений. Такой код зачастую не может быть использован в ядре за исключением кода, который можно вытеснить в область приложений.
    Что до того как повторить GRUB, смотри исходники GRUB.
    Ответ написан
    Комментировать
  • Какие есть роутеры с поддержкой OpenWRT?

    CityCat4
    @CityCat4 Куратор тега Сетевое оборудование
    //COPY01 EXEC PGM=IEBGENER
    Роутерыч, елы-палы. Правда, если не хочется разбираться в качестве сомнительного татарского стартапа - идем на сайт openwrt, смотрим, что поддерживается, покупаем, шьем...

    Свое - надежнее будет.
    Ответ написан
  • Какой API использовать для Python для работы с игрой, например, Minecraft?

    suguby
    @suguby
    программист, python, django, mysql, git, hg, linux
    Посмотри на https://github.com/barneygale/quarry
    Ответ написан
    Комментировать
  • Какие есть роутеры с поддержкой OpenWRT?

    Routerich же
    beeline giga по 1500
    Ответ написан
    Комментировать
  • Какие есть роутеры с поддержкой OpenWRT?

    xez
    @xez
    TL Junior Roo
    На авито куча предложений уже прошитых билайнов.
    Ну и вот тут гляньте: https://habr.com/ru/articles/842210/
    Ответ написан
    4 комментария
  • Как найти процент залго в тексте?

    Lord_of_Rings
    @Lord_of_Rings Куратор тега Python
    Дунадан - северный странник. Злой, но очень добрый
    import unicodedata
    
    def is_zalgo(char):
        # Проверяем, является ли символ диакритическим знаком
        return unicodedata.category(char).startswith('L')
    
    def zalgo_percentage(text):
        total_chars = len(text)
        zalgo_chars = sum(1 for char in text if is_zalgo(char))
        if total_chars == 0:
            return 0
        return (zalgo_chars / total_chars) * 100
    
    text = "тут текст"


    Version 2.0
    import re
    
    def zalgo_percentage(text):
        zalgo_pattern = re.compile(r'[\u0300-\u036F\u0483-\u0489\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06ED\u0901-\u0903\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0981\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u0A01\u0A02\u0A3C\u0A40-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81\u0A82\u0ABC\u0AC1-\u0AC5\u0AC7\u0AC8\u0ACD\u0AE2\u0AE3\u0B01\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B62\u0B63\u0B82\u0BBE\u0BC0\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCC\u0BD7\u0C00\u0C04\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C82\u0C83\u0CBC\u0CBF\u0CC6\u0CCC\u0CCD\u0CE2\u0CE3\u0D02\u0D03\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D82\u0D83\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102D-\u1030\u1032\u1036\u1037\u1039\u1058\u1059\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u180B-\u180D\u18A9\u1920-\u192B\u1930-\u193B\u1A17\u1A18\u1A55\u1A57\u1A60-\u1A7C\u1A7F\u1AB0-\u1AC0\u1B00-\u1B04\u1B34\u1B36-\u1B44\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BE6-\u1BF3\u1C24-\u1C37\u1CD0-\u1CED\u1D00-\u1DBF\u1E00-\u1EFF\u200B-\u200F\u202A-\u202E\u2060-\u206F\u20D0-\u20EF\u302A-\u302F\u3099\u309A\uA806\uA80B\uA825\uA826\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F\uFEFF\uFFF9-\uFFFB]')
      
        count_zalgo = len(zalgo_pattern.findall(text))
        count_chars = len(text)
    
        if count_chars > 0:
            return (count_zalgo / count_chars) * 100
            
        return 0
    
    # Пример использования
    text = "В̶̻͗а̴̺ͧш̭͒͞ ̡̩͋т̷̙ͨе̸͔ͥк̸͕̍с̤̊͠т̯̋̕ ͖ͣ͟з̳̐̀д͚ͧ͞е̛̱̌с͖̌̕ь̛̘͊"
    percentage = zalgo_percentage(text)
    print(f"Процент залго в тексте: {percentage:.2f}%")
    Ответ написан
  • Pynput как обрабатывать сочетания клавиш?

    Lord_of_Rings
    @Lord_of_Rings Куратор тега Python
    Дунадан - северный странник. Злой, но очень добрый
    В вашем коде вы обрабатываете нажатия и отпускания клавиш по отдельности, но какие клавиши нажаты одновременно не проверяете.
    Как-то так должно быть
    from pynput.mouse import Listener as MouseListener
    from pynput import keyboard
    import logging
    import time
    import pydirectinput
    
    mode = input("1 - Record TAS\n2 - Replay TAS\nChoice: ")
    
    if mode == "1":
        filename = f"{input('Name for record: ')}.tas"
        file = open(filename, 'w')
        file.close()
        file = open(filename, 'r+')
        print("Record will start in 3 seconds...")
        time.sleep(3)
    
        presstime = 0
        releasetime = 0
        movetime = time.time()
        keytime = {}
        pressed_keys = set()
    
        def on_move(x, y):
            global movetime
            file.write(f"sleep {time.time() - movetime}\n")
            file.write(f"move {x} {y}\n")
            movetime = time.time()
            file.flush()
    
        def on_click(x, y, button, pressed):
            global presstime
            global releasetime
            if pressed:
                file.write(f'press {x} {y} {button}\n')
                presstime = time.time()
                file.flush()
            else:
                releasetime = time.time()
                file.write(f"sleep {releasetime - presstime}\n")
                file.write("release\n")
                file.flush()
    
        def on_scroll(x, y, dx, dy):
            file.write(f'scroll ({x}, {y})({dx}, {dy})\n')
            file.flush()
    
        def on_press(key):
            global pressed_keys
            pressed_keys.add(key)
            file.write(f"pkey {key}\n")
            file.flush()
    
        def on_release(key):
            global pressed_keys
            pressed_keys.remove(key)
            file.write(f"prelease {key}\n")
            file.flush()
    
        with keyboard.Listener(on_press=on_press, on_release=on_release) as klistener:
            with MouseListener(on_move=on_move, on_click=on_click, on_scroll=on_scroll) as listener:
                klistener.join()
                listener.join()
    
    elif mode == "2":
        filename = input("Enter TAS name: ")+".tas"
        file = open(filename, 'r')
        script = file.readlines()
        print("Replay will start in 3 seconds...")
        time.sleep(3)
        for task in script:
            if "sleep" in task:
                task = task.replace("sleep ", "").replace("\n", "")
                time.sleep(float(task))
            elif "move" in task:
                task = task.replace("move ", "").replace("\n", "")
                task = task.split(" ")
                x = int(task[0])
                y = int(task[1])
                pydirectinput.moveTo(x, y, duration=0.0, _pause=False)
            elif "press" in task and "left" in task:
                task = task.replace("press ", "").replace("\n", "")
                task = task.split(" ")
                x = int(task[0])
                y = int(task[1])
                pydirectinput.moveTo(x, y, duration=0.0, _pause=False)
                pydirectinput.mouseDown(_pause=False)
            elif "press" in task and "right" in task:
                task = task.replace("press ", "").replace("\n", "")
                task = task.split(" ")
                x = int(task[0])
                y = int(task[1])
                pydirectinput.moveTo(x, y, duration=0.0, _pause=False)
                pydirectinput.mouseDown(button='right', _pause=False)
            elif "release" in task and "prelease" not in task:
                pydirectinput.mouseUp(_pause=False)
                pydirectinput.mouseUp(button='right', _pause=False)
            elif "pkey" in task:
                task = task.replace("pkey ", "").replace("\n", "").replace("Key.", "").replace("_l", "").replace("_r", "").replace("'", "")
                pydirectinput.keyDown(task, _pause=False)
            elif "prelease" in task:
                task = task.replace("prelease ", "").replace("\n", "").replace("Key.", "").replace("_l", "").replace("_r", "").replace("'", "")
                pydirectinput.keyUp(task, _pause=False)
        print("Replay ended...")
    Ответ написан
    Комментировать
  • Как подключить 2 клиента друг ко другу?

    Lord_of_Rings
    @Lord_of_Rings Куратор тега Python
    Дунадан - северный странник. Злой, но очень добрый
    2 комментария
  • Как запустить js скрипт перед загрузкой сайта?

    @CuriousLynx
    Судя по всему, вам сначала нужно блокировать загрузку скрипта /exam/js/main.module_9dae9.js с помощью API webRequest
    https://developer.chrome.com/docs/extensions/refer...
    а затем уже добавлять на страницу скрипт 127.0.0.1:8000/main.module_9dae9.js
    Ответ написан
    Комментировать
  • Как реализовать в Телеграме общий чат для менеджеров?

    Lord_of_Rings
    @Lord_of_Rings
    Дунадан - северный странник. Злой, но очень добрый
    Вам сюда
    Ответ написан
    Комментировать
  • Как сделать графику на fasm?

    TrueBers
    @TrueBers
    Гуглю за еду
    Учить ассемблер и писать свою ОС это примерно как учиться сварке и строить космический корабль.
    Ассемблер это только 1% от всего, что нужно изучить.
    Тебе нужно решить кучу архитектурных проблем сначала, а потом уже думать о графике.

    Посмотри вот сюда. Там описаны фазы создания операционной системы. Согласно этому туториалу, графика это уже третья фаза. Так что тебе ещё первые две предстоит осилить, прежде чем приступать к графике.
    Ответ написан
    7 комментариев
  • Как узнать message id?

    EPIDEMIASH
    @EPIDEMIASH
    Человек швейцарский нож
    Комментарии на посты канала фактически создаются в отдельной группе, связанной с этим каналом. Там и получайте.

    async def main():
        # получите канал
        channel = await client.get_entity(channel_username)
        
        # получите привязанную группу
        linked_chat = await client.get_entity(channel.linked_chat_id)
        
        # перебирите сообщения
        async for message in client.iter_messages(linked_chat):
            print(f"Message ID: {message.id}, Text: {message.text}")
    Ответ написан
    Комментировать
  • Как разблокировать телефон без пароля?

    CityCat4
    @CityCat4
    //COPY01 EXEC PGM=IEBGENER
    Здесь точно не помогут, иди на 4pda, там если не помогут (что вполне может быть) то хотя бы направят в нужную сторону.
    Ответ написан
    Комментировать
  • Как убрать inline клавиатуру aiogram?

    @SashaN69
    Школота
    Можно просто удалять сообщение
    import asyncio
    from contextlib import suppress
    
    from aiogram import types
    from aiogram.utils.exceptions import (MessageToEditNotFound, MessageCantBeEdited, MessageCantBeDeleted,
                                          MessageToDeleteNotFound)
    
    async def delete_message(message: types.Message, sleep_time: int = 0):
        await asyncio.sleep(sleep_time)
        with suppress(MessageCantBeDeleted, MessageToDeleteNotFound):
            await message.delete()


    msg = await message.reply("Я удалюсь через 30 секунд")
        asyncio.create_task(delete_message(msg, 30)
    Ответ написан
    Комментировать
  • Aiogram Bot: как отправить несколько медиа одним фотоколлажом?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    media = types.MediaGroup()
    media.attach_photo(types.InputFile('media/Starbucks_Logo.jpg'), 'Превосходная фотография')
    media.attach_photo(types.InputFile('media/Starbucks_Logo_2.jpg'), 'Превосходная фотография 2')
    await bot.send_media_group(call.message.chat.id, media=media)


    Есть в примерах по библиотеке
    https://github.com/aiogram/aiogram/blob/dev-2.x/ex...
    Ответ написан
    Комментировать
  • Как убрать подробности в проводнике?

    Zettabyte
    @Zettabyte
    Проф. восстановление данных ▪ Вопрос? См. профиль
    Я что то нечаянно нажал

    Могу ошибаться, но мне такое представляется маловероятным - обычно действия в контекстное меню добавляет каждая программа сама по себе, независимо.

    кроме базовых "копировать, вырезать, вставить, переименовать, винрар"

    Правильный и корректный подход - заходить в каждую из программ и в её настройках либо убирать интеграцию в контекстное меню, либо там же выбирать какие пункты показывать.
    У того же WinRAR в опциях такое точно есть.

    Можно также в свойствах проводника отключить ассоциацию с типом файлов, но это более дубово.

    Если хорошо ориентируетесь в реестре, то большинство из этих пунктов сидит в HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers

    Также можете воспользоваться вот этими программами:
    1. Сначала этой: https://www.nirsoft.net/utils/shell_menu_view.html
    2. Если она что-то не уберёт, то вот этой: https://www.nirsoft.net/utils/shexview.html
    Ответ написан
    4 комментария
  • Как сделать globbing строки в php?

    @rPman
    Ответ - регулярные выражения, синтаксис чуть сложнее чем * и ? но возможности выше
    preg_replace для однобайтовых кодировок или mb_ereg_replace для любых.

    регулярное выражение для твоей задачи будет выглядеть примерно так /word.*/ если после слова может присутствовать любое количество любых символов, включая нулевое (иначе использовать .+). Тут точка - это любой символ, а следующий за ним * или + - любое их количество

    upd. совсем забыл, preg_replace с модификатором /u понимает utf8 строки
    Ответ написан
    4 комментария
  • Как исправить ошибку?

    NetworkSounds netsound= new NetworkSounds();
    //Дальше обращайтесь к экземпляру класса
    netsound.tellSound(/*передаёте аргументы*/);
    Ответ написан
    1 комментарий