• Как используя ssh удалить из php файлов определённые строки вирусного кода?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Не надо так делать. Если ваш сервер заражен, а вы даже системы контроля версий не используете, то у меня для вас плохие новости. Гарантированно вычистить вирус у вас не получится. Останавливайте сервер, делайте бэкап всей файловой системы, несите это профессионалам. Они удалят вредоносный код и объяснят как пользоваться git.
    Если всё как вы говорите, то вредоносный код уже мог захватить кучу других мест в системе, которые вы не заметите.
    Ответ написан
    Комментировать
  • Почему не добавляется id пользователя из телеграм бота в sqlitestudio?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Похоже ваш лог не соответствует коду. Посмотрите где вызывается add_user. Там обрабатывается исключение IntegrityError, но оно жеперехватывается и не рерайсится в самой функции add_user. Это значит, что строка
    logging.info(f"Пользователь {message.from_user.id} уже существует.")

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

    Вообще, если что-то идёт не так, нужно сразу и обязательно падать и детально выдавать инфу об ошибке.
    Ответ написан
  • Как можно ускорить Скачивание с помощью telethon?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Можно попробовать выставить чанк максимального размера, купить премиум аккаунт или почитать вот в документации есть любопытное место:
    https://docs.telethon.dev/en/stable/modules/client...
    Ответ написан
    Комментировать
  • Как синхронизировать 2 Gitlaba по расписанию?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    А в чем, собственно, вопрос?
    Сделать баш-скрипт, который будет ходить по всем репозиториям и делать fetch для каждого.
    Скрипт можно запускать по крону.
    Автору вопроса нужно. чтобы ему написали этот скрипт? Или он не знает как пользоваться cron? Где автор вопроса искал ответ до того, как задал вопрос тут? Может быть он не так формулировал свой вопрос гуглу? Так с этого надо было начать, тут бы подсказали что он делает не так.
    Ответ написан
    8 комментариев
  • Можно ли сравнить большие массивы по частям?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    А зачем вам это делать частями? Что вы хотите этим добиться?
    Ваша задача имеет сложность О(N) и не представляет никакой сложности, просто двигайтесь двумя курсорами синхронно по массивам и всё.
    Ответ написан
    4 комментария
  • Как обойти ошибку сервера Telegram при использовании метода answer_photo?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Чтобы отредактировать сообщение с фото нужно использовать edit_media, а не edit_text
    Ответ написан
    8 комментариев
  • Не фильтрует новости в телеграм боте на python?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Ответ прост. Нужно, и это, кстати проще всего, сделать свой новостной сайт с новостями и постить в боте ссылки на сообщения в нём. Ну или извлекать не только ссылки, картинки и заголовки новостей, а целиком контент новости в парсере, и публиковать их без ссылок.
    Ответ написан
    Комментировать
  • UPS автоматическое переключение на аккумуляторе через реле?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Зачем 24 вольта?
    Почему не использовать диоды?
    Их нужно два. Один в цепь БП на плюс анодом к БП, а другой на плюс аккума, анодом к аккуму, катоды диодов соединены с плюсом входа вашего конвертера.
    Конвертер у вас опускает напряжение и падение напряжения на диодах ему не помешают. Там будет полтора-два вольта на них падать. Если диоды шоттки взять, то итого меньше. И никаких реле. У реле есть дребезг при переключении, от этого может случиться сбой по питанию. Такую паузу можно компенсировать большим электролитическим конденсатором по выходу преобразователя. Чем больше ёмкость, тем лучше.
    Ответ написан
    7 комментариев
  • Как задать цвет выпадающего списка в Tkinter Python?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    В ttk.Combobox параметры background и foreground не работают напрямую. Необходимо использовать стили для настройки цветов. Вот как это можно сделать:

    import tkinter as tk
    from tkinter import ttk
    
    root = tk.Tk()
    
    style = ttk.Style()
    style.theme_use('default')
    
    style.configure("TCombobox",
                    fieldbackground="red",  # Цвет фона выпадающего списка
                    background="red",  # Цвет фона поля
                    foreground="#375010",  # Цвет шрифта
                    selectbackground="red",  # Цвет фона при выборе
                    selectforeground="#375010"  # Цвет шрифта при выборе
                    )
    
    frame_1 = ttk.Frame(root)
    frame_1.pack(padx=10, pady=10)
    
    combo = ttk.Combobox(frame_1,
                         values=["Option 1", "Option 2", "Option 3"],
                         height=1,
                         width=24,
                         font=("Windows", 12),
                         style="TCombobox"
                         )
    combo.pack()
    
    root.mainloop()

    Этот код настраивает цвет фона и шрифта для выпадающего списка. Обратите внимание на использование style.configure для настройки внешнего вида.
    Ответ написан
    5 комментариев
  • Как начать путь backend-разработчика?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Забавно вы как-то подменяете местами причины и следствия.
    Вам надо научиться бэкенду, чтобы написать проектов и забить ими гитхаб профиль, чтобы вас взяли на работу?
    Надо понимать. что освоить придётся дохрена информации, повысить свою эрудицию и непрерывно учиться. Единого исчерпывающего источника всей необходимой информации не бывает, а бэкенд (даже питонячий) - это большая и широкая область, в которую в глубину можно копать тоже в любом направлении.

    Есть ряд простых и действенных советов.
    1) Блокнот терминов.
    Вы слушаете много всяких лекций по теме, читаете статьи, изучаете код других проектов и при этом встречаете много незнакомых слов, терминов, названий библиотек и технологий. Нужно выписывать эти слова в блокнотик. Не важно будет ли он бумажный или цифровой. Важно регулярно выделять время на сортировку его содержимого и изучение (хотя бы поверхностное) всего, что там написано. Это сформирует эрудицию.
    2) Читать чужой код. Искать инетресные вам проекты библиотек и вообще софта на гитхабе и разбираться как там внутри и что. Это пополнит ваш блокнот из п.1 и повысит насмотренность кода. Если что-то не понятно почему оно так как есть, то стоит лбо поразбираться в этом, либо отложить до лучших времен.
    3) Писать свой код. Если вам не интересно, то вы не достигнете никакого успеха. А если интересно, то вы будете этим заниматься, если не позволите себе прокрастенировать.
    Выберите интересны вам проекты и направления и пишите помаленьку код. Начните с простого, с MVP, потом развивайте. Если уже на этом шаге трудности, то впору задуматься надо ли оно вам. Если надо, то трудности можно преодолевать. Я не буду сейчас тут сочинять и придумывать за вас ваши трудности. Приходите с конкретными вопросами. Этот пункт про написание кода, которым за одно и заполнится ваш гитхаб. Выберите задачу, которая вам интересна, и делайте. Если на знаете с чего начать - сформулируйте в маркдауне бизнес-требования, выделите MVP, сформулируйте ТЗ, разбейте на крупные задачи, декомпозируйте их до выполнимых подзадачек. Если не писать код, то вы не научитесь это делать и у вас не будет кода. Если писать его, то всё будет.
    4) Идите в джуны и на стажировки. От вас там особо никто не будет требовать каких-то особых знаний, но может попасться хороший ментор, и, если вывезите, то будет хороший старт. Да, мало кто рискует и выделяет ресурсы чтобы учить джунов, но ищущие обрящут. см. п.6
    5) Читайте классику (книги по алгоритмам, технологиям, фреймворкам и т.д. Спорный пункт. но если читать такие книги как художественную литературу, то вы можете начать мыслить в контексте изучаемых технологий и нужными терминами.
    6) Ходите на собесы, решайте задачи публикуемые с собесов. Это позволит найти местечко для стажировки. перестать бояться собеседований и неудач, понять что нужно рынку и индустрии, пополнить блокнотик словами, которые следует изучить.
    7) Не путайте цели и средства. Пишут код. чтобы научиться, а не чтобы забить гихаб и благодаря этому устроиться. Работодателю пофиг на гитхаб, ему важно, чтобы вы делали его задачи из трекера и собеседвоание призвано вы]вить вашу способность к этому. Если какой-то конкретный работодатель предложил вам пойти сперва заполнить свой гитхаб, то это значит что он так вежливо вам намекнул, что ваша квалификация и опыт его не устраивают. Гитхаб - это предлог. Однако и индикатор, кстати, тоже.
    Ответ написан
    1 комментарий
  • Как улучшить выводимый граф?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Готовых инструментов не предложу, но для "поиграться" можно попробовать сделать релаксационную модель с отжигом.
    Набрасываете узлы рандомно, потом эмпирически подбираете функции сил отталкивания между узлами и узлами и рёбрами. Узлы сами будут стремиться занять распределенные положения в стороне от рёбер и других узлов. дальше можно искать новые положения для отдельных узлов, чтобы понизить число пересечений ребер.
    Ещё можно использовать роевые или генетические алгоритмы для поиска расстановки узлов с минимальным самопересечением в графе. Не удивлюсь, если кто-то такими вещами уже озадачивался и можно поискать готовые решения.
    Ответ написан
    Комментировать
  • Как составить список уникальных комплексных решений для уравнения? Как понять что число 0.999999 то же что 1.0000001?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Сравнение нужно делать с некоторой точностью. Получите разность между сравниваемыми значениями и сравнивайте модули с пороговым.
    In [8]: a=0.00001-0.99999j; b=-0.00001-1.000001j
    
    In [9]: abs(a-b)
    Out[9]: 2.2825424420965077e-05

    Вот этот модуль можете сравнить с 1e-4, если меньше, то считаем что числа равны.
    Ответ написан
    3 комментария
  • Как реализовать идеальный метод indexOf?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Вы неверно понимаете суть О-нотации. Почитайте книги Дональда Кнута про это.
    O(3) - это то же самое, что O(1). Нет разницы. O(N), O(N+1000), O(10*N) - это тоже одно и то же.
    В таких случаях речь всегда идёт не про конкретный кейс, а про обобщенный. Вы не знаете в каком порядке элементы вашего массива, где находится искомый, сколько всего элементов будет в конкретных кейсах, поэтому определяется ряд случаев: средний (по вероятности, если входные данные рандомные), худший (чтобы понимать границы и сколько может "висеть" алгоритм теоретически). Лучшие варианты обычно никого не интересуют, потому что и вероятность их мала, и смысла никакого нет в столь малых величинах.

    У вас типичный случай компромисса в реализации структуры данных. Вы всегда балансируете между памятью и скоростью. Больших семь шапок из овцы не выкроить никак.
    То есть, вы можете сделать такую структуру данных, которая "под капотом" будет держать древовидный индекс с данными или отсортированную по ключу карту значений для бинарного поиска. Хотя эти варианты - суть одно и то же.
    Если не рассматривается вариант размена производительности на память, то в этой задаче у вас будет только O(N) без вариантов.
    Если усложнить структуру данных, то можно добиться и O(logN) при поиске, и даже O(1). Почитайте как устроен словарь в питоне.

    Да, помимо сложности поиска у вас будет сложность вставки в структуру новых элементов. И тут опять трейд-офф. Ну а что вы хотели?
    Ответ написан
    3 комментария
  • Как настроить авторизацию в telegram боте?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Идея? Есть отличная оригинальная идея - немножко подучиться программировать на выбранном вами языке. Не искать карьеру разработчика ботов беззнания программирования, а именно подучить язык и основы алгоритмизации.
    А задача ваша решается просто. Начать надо с декомпозиции.
    При запуске бота вам нужно открыть этот текстовый файл и загрузить его контент в структуру, и, если не получилось, то создать пустую структуру.
    Если пользователь, нажавший у бота кнопку старт не найден в этой структуре, то бот должен запустить сценарий регистрации. Что вы под этим понимаете? Вопросы какие-то задать пользователю и сохранить ответы?
    При окончании регистрации нужно сохранить структуру в файл.

    С каким именно пунктом вам что-то не ясно?
    Если со всеми, то нужно учиться программировать,а ботов писать вам рано. Попробуйте взять учебник и читать по порядку. первый раз быстро и не останавливаясь, а второй раз вдумчиво и выполняя все задания.

    После этого у вас вот эти вот вопросы отпадут все.
    Ответ написан
    Комментировать
  • Что за формат файла XML?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    XML - это универсальный формат, он определяет только синтаксис, на его базе строят более высокоуровневые форматы. Например на нём основаны docx, xlsx и многие многие другие. Любой прогреммст вместо своего велосипеда может описать схему, которой должны удовлетворять структура тегов и форматы данных XML-файла, и реализовать сохранение (сериализацию) и загрузку (десериализацию) в\из этого формата.
    Что у вас там за программа вы не написали, кно ничего вы там вручную сами не преобразуете. Нет какого-то универсального и единственного способа. Вы просто фантазируете и при этом скорее всего ошибаетесь в предпосылках. Может быть, конечно, у какой-то там программы программист в какой-то момент и перешел в какой-то версии на новый формат файла, но вы сами ничего с этим поделать не сможете. Если прога сама не загрузит и не сконвертирует, то...

    Ну вот вам пример. Вы едете на дизельной машине, закончилась солярка, а на заправке только бензин. Вы по нслышке понимаете, что и то и то жидкости, а жидкости иногда смешивают, некоторые жидкости (например электролит в аккумуляторе) состоят из воды и серной кислоты и иногда там что-то туда доливают. Вот и спрашиваете, что долить к бензину и как его с чем смешать, чтобы солярка получилась.
    Никак.
    Это называется слышал звон, но не знает где он.
    Это так не работает. Выясняйте больше подробностей про свою эту программу.
    Ответ написан
    Комментировать
  • Как встроить геопривязку в телеграмм бот?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Что-то вы не очень понимаете, похоже, как это всё работает. Яндекс-карты тут ни при чем. Пользователь включает трансляцию своей геолокации для бота, а бот принимает обновленные координаты периодически от пользователя и делает с ними что хочет.
    Как вы хотите выводить карту? Прямо в чате с ботом? Так она выводится самим интерфейсом клиента в вашем чате при старте трансляции, но это не яндекс-карта.
    Да, бот может при попадании пользователя в заданную точку как-то среагировать.
    В чем у вас, собственно в опрос? АПИ для написания бота читали? Там всё необходимое есть
    Ответ написан
    Комментировать
  • Почему возникает проблема с асинхронной функцией?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    c.on_click = lambda event: await self.btn_clicked(event)

    Здесь создаётся лямбда-функция (не асинхронная), из которой вызывается асинхронная функция.
    В этом и проблема.
    Если у вас апи позволяет сюда (c.on_click) подавать асинхронную функцию, то сделайте её замыканием:
    async for r in self.element.content.controls:
        async for c in r.controls:
            async def on_click(event):
                return await self.btn_clicked(event)
            c.on_click = on_click

    Но это всё не нужно, можно просто подавать в вашем конрктеном случае напрямую нужную функцию:
    async for r in self.element.content.controls:
        async for c in r.controls:
            c.on_click = self.btn_clicked

    А если on_click требует только синхронную функцию, то так не прокатит.
    Ответ написан
    Комментировать
  • Есть ли возможность чтобы в группе автоматически отмечался человек в сообщениях в Телеграмме?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    нет
    Ответ написан
    Комментировать
  • Как автоматически скачивать файл с сайта регулярно?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Чтобы это сделать вам нужно освоить selenium.
    С помощью него можно делать скрипты автоматизации имитирующие действия пользователя в браузере.
    Ответ написан
    Комментировать