Задать вопрос
  • Нахождение значения в фрейме(или столбце) и при его нахождении добавить дополнительные строки. Как реализовать код в Pandas (Python)?

    @eminsk
    программирую на python
    import pandas as pd
    df = pd.DataFrame({'Name': ['car1', 'car2', 'car3', 'car4'], 'Type': [20, 21, 19, 18], 'Repair': ["n", "n", "y", "n"]})
    def add_bit_rows(df):
        y_rows = df[df['Repair'] == 'y']
        bit_rows = [
            {
                'Name': row['Name'],
                'Type': row['Type'],
                'Repair': f"y_bit{i}"
            }
            for _, row in y_rows.iterrows()
            for i in range(16)
        ]
        df_bits = pd.DataFrame(bit_rows)
        return pd.concat([df, df_bits], ignore_index=True)
    print(add_bit_rows(df))
    Ответ написан
    Комментировать
  • Какой выбрать БП?

    @eminsk
    программирую на python
    Cougar STE 500W будет наиболее подходящим вариантом для твоей сборки. Он обеспечивает необходимую мощность и имеют положительные отзывы о надежности.

    Причины моего выбора для тебя:
    Надежность: Cougar зарекомендовал себя как производитель качественных блоков питания.
    Стабильность: Обеспечивает стабильное питание для твоей конфигурации.
    Отзывы: по поиску в интернете пользователи отмечают хорошую производительность и долговечность.
    Этот блок питания будет отличным выбором для твоей конфигурации твоего компьютера с Xeon E5-2650 v2 и RX 570 8GB.
    Ответ написан
  • Почему Python выдает ошибку в строке с newPosition?

    @eminsk
    программирую на python
    Походу пока еще не до конца освоил как правильно писать однострочные коды.
    И всегда обязательно делай проверку на ошибку в коде и отладку кода

    alphabet = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя'
    
    caesar_cipher = lambda text, key: ''.join(
            alphabet[(alphabet.find(letter) + key) % len(alphabet)] if letter in alphabet else letter
            for letter in text
        )
    encrypt = input('Введите слово, которое хотите зашифровать: ')
    try:
        encrypted = caesar_cipher(encrypt, int(input('Введите ключ (от 1 до 32): ')))
        print(f'Зашифрованное слово: {encrypted}')
    except ValueError:
        print('Ошибка: ключ должен быть числом.')
    Ответ написан
    Комментировать
  • Как сделать так чтобы когда персонаж касался линии останавливался?

    @eminsk
    программирую на python
    Тебе нужно в функции __init__ описать переменную self.line_y = 370
    и переделать функцию с проверкой на касание с линией
    def tick(self):
        x1, y1, x2, y2 = self.coords(self.box)
        if y2 < self.line_y:  # 
            self.move(self.box, self.dx, self.dy)
        else:
            self.dx = 0
            self.dy = 0
        self.after(self.dt, self.tick)
    Ответ написан
    Комментировать
  • Возможно ли скрыть свой IP адрес в локальной сети?

    @eminsk
    программирую на python
    1. SoftEther — это многофункциональный VPN-сервер, который поддерживает различные протоколы. Он также может быть настроен для работы в локальной сети и позволяет скрывать IP-адреса.
    2. Squid — это прокси-сервер, который может быть установлен на одном из компьютеров в сети. Он позволяет перенаправлять трафик через себя и скрывать реальные IP-адреса других устройств.

    3. Данный код на python и скрывает/изменяет локальный ip адрес на твоем компьютере только или где запущен данный скрипт. по нажатии на клавишу q выход и возвращает обратно в режим DHCP
    в строчке кода замени на свое название то что в кавычках - interface = "Ethernet"
    для его использования установить на своем домашнем компьютере Python и установить библиотеку keyboard, чтобы потом для рабочего места сделать с помощью pyinstaller чтобы не ставить там python.

    import ipaddress
    import random
    import time
    import subprocess
    import platform
    import keyboard  # pip install keyboard
    import re
    
    
    class IPAddressManager:
        """Класс для управления и скрытия IP-адресов в локальной сети."""
    
        def __init__(self, interface: str):
            self.interface = interface
            self.original_ip = self._get_current_ip()
            self.hidden_ip = None
    
        def _get_current_ip(self) -> str:
            """Получить текущий IP-адрес интерфейса."""
            try:
                if platform.system() == "Windows":
                    output = subprocess.check_output(
                        "ipconfig", shell=True, stderr=subprocess.DEVNULL, universal_newlines=True)
                    pattern = re.compile(
                        rf"{self.interface}.*?IPv4.*?:\s*(\d+\.\d+\.\d+\.\d+)", re.DOTALL)
                    match = pattern.search(output)
                    if match:
                        return match.group(1)
                    raise ValueError(
                        f"IP-адрес для интерфейса {self.interface} не найден")
                else:  # Linux и macOS
                    output = subprocess.check_output(
                        f"ifconfig {self.interface}", shell=True, universal_newlines=True)
                    match = re.search(r"inet (\d+\.\d+\.\d+\.\d+)", output)
                    if match:
                        return match.group(1)
                    raise ValueError(
                        f"IP-адрес для интерфейса {self.interface} не найден")
            except subprocess.CalledProcessError as e:
                raise RuntimeError(f"Ошибка при выполнении команды: {e}")
    
        def hide_ip(self) -> None:
            """Скрыть IP-адрес, изменив его на случайный в той же подсети."""
            current_ip = ipaddress.ip_address(self.original_ip)
            network = ipaddress.ip_network(f"{current_ip}/24", strict=False)
    
            while True:
                new_ip = ipaddress.ip_address(random.randint(
                    int(network.network_address) + 1, int(network.broadcast_address) - 1))
                if new_ip != current_ip:
                    self.hidden_ip = str(new_ip)
                    break
    
            self._change_ip(self.hidden_ip)
    
        def restore_ip(self) -> None:
            """Восстановить оригинальный IP-адрес."""
            if self.hidden_ip:
                self._change_ip(self.original_ip)
                self.hidden_ip = None
    
        def _change_ip(self, new_ip: str) -> None:
            """Изменить IP-адрес интерфейса."""
            try:
                if platform.system() == "Windows":
                    subprocess.run(f'netsh interface ip set address name="{self.interface}" static {new_ip} 255.255.255.0',
                                   shell=True, check=True, stderr=subprocess.DEVNULL)
                else:  # Linux и macOS
                    subprocess.run(f"sudo ifconfig {self.interface} {new_ip} netmask 255.255.255.0",
                                   shell=True, check=True, stderr=subprocess.DEVNULL)
            except subprocess.CalledProcessError as e:
                raise RuntimeError(
                    f"Не удалось изменить IP-адрес на {new_ip}. Ошибка: {e}")
    
        def restore_dhcp(self) -> None:
            """Восстановить автоматическое получение IP-адреса (DHCP)."""
            try:
                if platform.system() == "Windows":
                    subprocess.run(
                        f'netsh interface ip set address name="{
                            self.interface}" source=dhcp',
                        shell=True, check=True, stderr=subprocess.DEVNULL
                    )
                    print(f"Интерфейс {
                          self.interface} успешно переведен в режим DHCP")
                else:  # Linux и macOS
                    subprocess.run(
                        f"sudo dhclient -r {self.interface} && sudo dhclient {self.interface}",
                        shell=True, check=True, stderr=subprocess.DEVNULL
                    )
                    print(f"Интерфейс {
                          self.interface} успешно переведен в режим DHCP")
            except subprocess.CalledProcessError as e:
                print(f"Ошибка при восстановлении DHCP: {e}")
    
        def run(self) -> None:
            """Запустить процесс скрытия IP-адреса."""
            print(f"Начальный IP-адрес: {self.original_ip}")
            self.hide_ip()
            print(f"IP-адрес скрыт. Новый адрес: {self.hidden_ip}")
            print("Нажмите 'q' для выхода и восстановления автоматического получения IP.")
    
            while True:
                if keyboard.is_pressed('q'):
                    break
                time.sleep(0.1)
    
            self.restore_dhcp()
            print("Программа завершена. DHCP восстановлен.")
    
    
    if __name__ == "__main__":
        try:
            interface = "Ethernet"  # Тут замени на имя твоего сетевого интерфейса - так как я делал это все на своем компе
            manager = IPAddressManager(interface)
            manager.run()
        except Exception as e:
            print(f"Произошла ошибка: {e}")
    Ответ написан
    6 комментариев
  • Как мне изменить шрифт на CustomTkinter?

    @eminsk
    программирую на python
    import customtkinter as ctk
    
    ctk.set_appearance_mode("dark")
    
    
    class App(ctk.CTk):
        def __init__(self):
            super().__init__()
    
            self.title("Delta Search")
            self.geometry("1050x630")
    
            self.button_frame_1 = ctk.CTkFrame(self,
                                               fg_color='#333333',
                                               border_width=2,
                                               corner_radius=10,
                                               border_color='#f53333',
                                               width=915,
                                               height=50,
                                               )
            self.button_frame_1.grid(row=0, column=0, padx=50, pady=10)
    
            # тут и меняется тебе сам объект  для шрифта
            custom_font = ctk.CTkFont(family="Arial", size=20, weight="bold")
    
            self.button = ctk.CTkButton(self.button_frame_1,
                                        fg_color='#454545',
                                        text='Universal search',
                                        width=150,
                                        height=40,
                                        border_color='#f53333',
                                        corner_radius=10,
                                        border_width=1,
                                        font=custom_font  # Применить тут шрифт
                                        )
            self.button.grid(row=0, column=0, padx=(20, 2), pady=10)
    
    
    app = App()
    app.mainloop()
    Ответ написан
    Комментировать
  • Что делать, если не скачивается видео из youtube (yt_dlp)?

    @eminsk
    программирую на python
    зачем тебе даже python просто скачай с официального сайта
    https://github.com/yt-dlp/yt-dlp/releases/download...

    и просто запусти yt-dlp -f bestvideo+bestaudio/best и твоя ссылка youtube
    не забывай еще скачать ffmpeg.exe
    и обновлять yt-dlp -U для выхода новых версий и все
    Тебе даже python не подобится так как скомпилировали для тебя
    Ответ написан
    2 комментария
  • Каков должен быть sys.path у чистого Python 3.1x под Windows?

    @eminsk
    программирую на python
    В Windows 7 ты не как не запустишь python 3.12 и не выше 3.8
    Windows 8.x тут версии python 3.9-3.11 но не как python 3.12
    Windows XP тут версии python 3.x-3.4 и выше нельзя

    Реализация на windows 7 в твоем случае

    Python 3.8.19 (default, Mar 20 2024, 11:17:09) [MSC v.1900 64 bit (AMD64)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    >>> print('\n'.join(__import__('sys').path))
    
    D:\Python38\python38.zip
    D:\Python38\DLLs
    D:\Python38\lib
    D:\Python38
    D:\Python38\lib\site-packages
    Ответ написан
    Комментировать
  • Как получить цену акций в python?

    @eminsk
    программирую на python
    import yfinance as yf
    import pandas as pd
    
    
    def get_stock_data(ticker: str, start: str, end: str) -> pd.DataFrame:
        """
        Получает данные свечного графика для указанной ценной бумаги.
    
        :param ticker: Символ акции.
        :param start: Дата начала (формат 'YYYY-MM-DD').
        :param end: Дата конца (формат 'YYYY-MM-DD').
        :return: DataFrame с данными акций.
        """
        return yf.download(ticker, start=start, end=end, interval='1d')
    
    
    if __name__ == "__main__":
        ticker = "SBER.ME"  # Символ для Сбербанка на Московской бирже
        start_date = "2021-01-01"
        end_date = "2022-01-01"
    
        print(get_stock_data(ticker, start_date, end_date))

    66f57c781f825463414243.png
    Ответ написан
    Комментировать
  • Не получается записать в файл?

    @eminsk
    программирую на python
    Тебе функцию save_data лучше переделать в такой вид:
    def save_data(data):
        try:
            with open("reminders.json", "w", encoding="utf-8") as f:
                json.dump(data, f, ensure_ascii=False, indent=4)
        except IOError as e:
            print(f"Error writing to file: {e}")
    Ответ написан
    Комментировать
  • Как закрыты зависшие терминалы Python в Windows 11 Pro?

    @eminsk
    программирую на python
    import os
    import signal
    os.kill(os.getpid(), signal.SIGTERM)
    Ответ написан
    Комментировать
  • Сборка пк для работы в Autocad?

    @eminsk
    программирую на python
    1. для AutoCAD важнее частота одного ядра процессора. (не менее 3500 и чем выше тем лучше)
    2. Минимум 16 ГБ оперативной памяти. 8 ГБ может оказаться недостаточно, особенно при работе с большими проектами
    3. NVIDIA Quadro и выше. Игровые карты могут не обеспечить необходимую производительность и поддержку функций, специфичных для CAD (видеокарта)
    4. Обязательно используйте SSD для системы и программ. Это значительно ускорит загрузку и работу приложений по сравнению с HDD
    5. Эффективная система охлаждения, желательно жидкостная, так как рабочие станции могут сильно нагреваться при длительных вычислениях и рендеринге

    Выбирай не меньше что я тебе указал и тем выше параметры тем будет лучше тебе и все зависит от твоего бюджета еще. Я тебе указал самый минимум еще только для небольших проектов. Если будешь заниматься рендерингом то тебе понадобится еще и выше чем эта конфигурация, так как она требует больших вычислений
    как пример видеокарта - NVIDIA Quadro P2000, NVIDIA Quadro RTX 4000, NVIDIA RTX A2000
    Ответ написан
  • Ssd m2 512 или 256 gb?

    @eminsk
    программирую на python
    Размер жесткого диска не повлияет на размер скорости.

    Мой совет бери лучше чтобы была как можно больше скорости чем объем SSD.
    Чем выше скорость SSD тем лучше а не размер жесткого диска, если тебе нужна высокая производительность.
    и поставить и оптимизировать свою OS на максимальное быстродействием с минимальными функциями которые будут грузить систему
    Ответ написан
    Комментировать
  • Как получить изображение из формы в php?

    @eminsk
    программирую на python
    <?php
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
        $upload_dir = '/var/www/uploads/'; // Директория для сохранения загруженных файлов
    
        // Обработка основного изображения
        if (isset($_FILES['img']) && $_FILES['img']['error'] == UPLOAD_ERR_OK) {
            $tmp_name = $_FILES['img']['tmp_name'];
            $name = basename($_FILES['img']['name']);
            $img_path = $upload_dir . $name;
            
            if (move_uploaded_file($tmp_name, $img_path)) {
                echo "Файл успешно загружен: $img_path";
            } else {
                echo "Ошибка при загрузке файла.";
            }
        }
    
        // Обработка изображения для карточки
        if (isset($_FILES['card_img']) && $_FILES['card_img']['error'] == UPLOAD_ERR_OK) {
            $tmp_name = $_FILES['card_img']['tmp_name'];
            $name = basename($_FILES['card_img']['name']);
            $card_img_path = $upload_dir . $name;
            
            if (move_uploaded_file($tmp_name, $card_img_path)) {
                echo "Файл для карточки успешно загружен: $card_img_path";
            } else {
                echo "Ошибка при загрузке файла для карточки.";
            }
        }
    }
    ?>

    Убедитесь, что форма имеет атрибут enctype="multipart/form-data":
    <form method="POST" enctype="multipart/form-data">
        <!-- Ваши поля формы -->
    </form>
    Ответ написан
    Комментировать
  • Число вместо сроки при запросе regex?

    @eminsk
    программирую на python
    SELECT 
        b.Cargo, 
        count(b.Cargo), 
        REGEXP_SUBSTR(b.Cargo, '[А-Яа-яЁё]+') AS Category
    FROM base b
    GROUP BY b.Cargo
    Ответ написан
    Комментировать
  • Как создать несколько мостов на один сетевой интерфейс?

    @eminsk
    программирую на python
    Проблема в том, что вы пытаетесь добавить один и тот же физический интерфейс (enp42s0) к нескольким мостам одновременно, что невозможно. Сетевой интерфейс может быть членом только одного моста:
    Создайте один мост (например, br0) и добавьте в него физический интерфейс enp42s0.
    Создайте виртуальные интерфейсы (VLAN или macvlan) поверх моста br0 с нужными MAC-адресами.
    Используйте эти виртуальные интерфейсы для создания PPPoE соединений.
    auto enp42s0
    iface enp42s0 inet manual
    
    auto br0
    iface br0 inet manual
        bridge_ports enp42s0
        bridge_stp off
        bridge_fd 0
        bridge_maxwait 0
    
    auto macvlan0
    iface macvlan0 inet manual
        pre-up ip link add link br0 macvlan0 type macvlan
        post-down ip link del macvlan0
        hwaddress e2:3f:26:5c:8d:45
    
    auto macvlan1
    iface macvlan1 inet manual
        pre-up ip link add link br0 macvlan1 type macvlan
        post-down ip link del macvlan1
        hwaddress e2:3f:26:5c:8d:44
    
    auto macvlan2
    iface macvlan2 inet manual
        pre-up ip link add link br0 macvlan2 type macvlan
        post-down ip link del macvlan2
        hwaddress e2:3f:26:5c:8d:43
    Ответ написан
    Комментировать
  • Как разместить GoodbyeDPI или его аналоги на VDS, чтобы подключение через Wireguard проходило через GoodbyeDPI?

    @eminsk
    программирую на python
    Установка Wireguard:
    sudo apt update
    sudo apt install wireguard


    Настройка Wireguard как сервера (создайте конфигурационный файл
    /etc/wireguard/wg0.conf

    Установка GoodbyeDPI:

    sudo apt install git build-essential libpcap-dev
    git clone https://github.com/ValdikSS/GoodbyeDPI.git
    cd GoodbyeDPI
    make


    Создайте скрипт для запуска GoodbyeDPI:
    #!/bin/bash
    /path/to/goodbyedpi/goodbyedpi -1 --port 53,80,443 --dns-addr 1.1.1.1 --dnsv6-addr 2606:4700:4700::1111

    Замени на свой путь запуска вместо /path/to/goodbyedpi/

    Настройка iptables для перенаправления трафика:
    sudo iptables -t mangle -N DIVERT
    sudo iptables -t mangle -A DIVERT -j MARK --set-mark 1
    sudo iptables -t mangle -A DIVERT -j ACCEPT
    sudo iptables -t mangle -A PREROUTING -p tcp -m socket -j DIVERT
    sudo iptables -t mangle -A PREROUTING -p tcp --dport 80 -j TPROXY --tproxy-mark 0x1/0x1 --on-port 8080
    sudo iptables -t mangle -A PREROUTING -p tcp --dport 443 -j TPROXY --tproxy-mark 0x1/0x1 --on-port 8080
    Ответ написан
  • Как удалить иконку программно?

    @eminsk
    программирую на python
    Полностью удалить иконку приложения программно без root-прав практически невозможно из-за ограничений безопасности Android.
    Скрытие иконки из лаунчера
    PackageManager p = getPackageManager();
    ComponentName componentName = new ComponentName(this, MainActivity.class);
    p.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);


    Использование пустой иконки:
    PackageManager pm = getPackageManager();
    ActivityInfo ai = pm.getActivityInfo(getComponentName(), PackageManager.GET_META_DATA);
    ai.icon = R.drawable.transparent_icon; // Прозрачная иконка
    ai.logo = R.drawable.transparent_icon;


    Использование системного API для скрытия (работает не на всех устройствах):
    Intent intent = new Intent("android.intent.action.MAIN");
    intent.setComponent(new ComponentName("com.android.settings", "com.android.settings.Settings$AppDrawerSettingsActivity"));
    startActivity(intent);
    Ответ написан
  • Как узнать, сколько дней осталось до Нового Года?

    @eminsk
    программирую на python
    <?php
    $now = date_create();
    $nextNewYear = date_create(date('Y') + 1 . '-01-01');
    $diff = date_diff($now, $nextNewYear);
    echo $diff->days;
    ?>


    Этот код будет корректно работать в любом году, так как он динамически определяет текущий год и рассчитывает дату следующего Нового Года.
    Ответ написан
    Комментировать
  • Как сделать регулярное выражение для отсеивания знаков/символов/английских букв (Python)?

    @eminsk
    программирую на python
    Я тебе сделал с помощью универсальной анонимной функцией, чтобы было пользоваться многократно в своем коде:
    filter_chars = lambda pattern, text: __import__('re').findall(pattern, text)
    pattern = r"[^а-яА-ЯёЁa-zA-Z]" # паттерн для поиска отсеянных символов - или какие символы ты хочешь отсеить
    text = "Добро пожаловать в Python! 1234567890 @#$%^&*()_+=-" # текст для поиска
    print("Отсеянные символы:", filter_chars(pattern, text))

    pattern в этой переменной тебе нужно прописать что нужно отсеивать. В своем коде я добавил русский и
    английский текст.
    только английские большие и маленькие буквы
    pattern = r"[^a-zA-Z]"
    Можно добавить еще символы
    для спецсимволов будет строка содержать уже:
    pattern = r"[@#$%^&*()_+=-]"
    Чтобы собрать все символы в 1 строку:
    print("Собрано все символы в строку:", ''.join(filter_chars(pattern, text)))


    Результат выполнения программы для первого pattern, который вместе с функцией и собрать все символы
    662286302b52b387781806.png
    Ответ написан
    Комментировать