Задать вопрос
  • Есть ли какие-то сервисы или форумы, куда можно выложить свой код, чтобы его могли оценить и оптимизировать другие люди?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Если код выполняет свою задачу и устраивает бизнес - значит достаточно хороший.

    Если хотите расти как разработчик - читайте стандарты, переписывайте код чтобы он им соответствовал (name convention или для питона вообще PEP 8)

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

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

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

    Vindicar
    @Vindicar
    RTFM!
    async def choice_cat(message):
        CATs = cur.execute(f'SELECT name FROM cathlete WHERE id = "{message.from_user.id}"').fetchall()
        for fds in range(len(CATs)):
            astt = ReplyKeyboardMarkup(resize_keyboard=True).add(KeyboardButton(f"CATs[{fds}]"))


    Код, конечно, жесть. По пунктам:
    1. НИКОГДА не генерируй SQL запрос через форматирование строк. Легко словить ошибку, а если очень не повезёт - SQL-инъекцию. Используй подстановку параметров (ссылка для sqlite, если у тебя другая БД - ищи доки на неё).
    2. Как насчёт проверить, а вернула ли БД хоть что-то? Это не гарантируется. Всегда ожидай подставы.
    3. Зачем итерироваться по индексу списка, если ты индекс не используешь? Почему не итерироваться по самому списку? И да, это абсолютные основы питона, которые НАДО знать задолго до того, как браться за ботов.
    4. Зачем ты создаёшь новую клавиатуру на каждой итерации цикла? Тут уже даже не знания языка, тут простая логика. Создал клавиатуру, добавил кнопку - на следующей итерации выбросил старую клавиатуру, создал новую добавил другую кнопку. Ну бессмыслица же! Создай клавиатуру один раз, до цикла, и добавляй кнопки к ней.
    5. Ну тот факт, что ты не посылаешь сообщение, к которому будет прикреплена клавиатура (а сама по себе она не бывает!), это уже мелочи. Видимо, не дошёл ещё до этого этапа.

    kbd = ReplyKeyboardMarkup(resize_keyboard=True)
    btns = cur.execute(f'SELECT name FROM cathlete WHERE id = ?', (message.from_user.id,)).fetchall()
    # btns - список списков. 
    if not btns:
        # кнопки не предусмотрены, как-то даём пользователю знать об этом
        return  # если это фатально, останавливаемся тут
        # иначе создаём какое-то значение btns по умолчанию и  продолжаем
        # тут уж сам решай
    # делаем клавиатуру
    for btn in btns:
        kbd.add(KeyboardButton(btn[0]))
    # ну и отправляем её вместе с сообщением
    Ответ написан
    7 комментариев
  • Как сменить формат большому количеству файлов?

    @alexalexes
    1. Открыть командную строку.
    2. С помощью команд смены диска, смены каталога выбрать текущий каталог, в котором нужно произвести переименование.
    3. Запустить команду:
    FOR /R %f IN (*.bin) DO REN "%f" *.exe
    которая переименует все файлы в текущем каталоге, в том числе и во вложенных тоже.
    Ответ написан
    Комментировать
  • Как использовать random.randint() в телеграм боте?

    @serhiops
    Python/JavaScript/C++
    Как использовать random.randint() в телергам боте?

    так же, как и не в телеграм боте
    Ответ написан
    Комментировать
  • Какой системой можно вести отчётность?

    borisdenis
    @borisdenis
    Ленив и вреден...
    1С Документооборот допилить можно, возможно есть уже готовая конфигурация под ваши требования, но это надо к их внедренцам обратиться и они подскажут.
    Ответ написан
    Комментировать
  • Как передать переменную из одной функции в другую?

    @dmshar
    Вопрос не имеет никакого отношения к написанию ботов вообще, ни к telegram в частности. Вопрос имеет отношения к Python, его основам, а так-же к необходимости его изучения.
    Для передачи значений между функциями ВСЕГДА И ВЕЗДЕ существует ТРИ способа.
    1. Классический: в общей вызывающей программе создаете переменную, которую передаете как параметр в обе функции. В одной из этих функций эта переменная заполняется значением, в другой - читается и используется.
    2. Нерекомендуемый: через глобальную переменную.
    3. Для очень сложных систем: через внешний файл.
    Все.
    Вот и выбирайте тот из них, который вам подходит больше.
    Ответ написан
    Комментировать
  • Инструменты для проектирования архитектуры приложения?

    @mr_jumper
    Я бы начал с листика, карандаша и стирки. Ну и азов хотя бы умл и что естььархитектура.
    Ответ написан
    Комментировать
  • Данные из 1С через python telegram?

    @Dementor
    программист, архитектор, аналитик
    Поддержу вариант Константина с открытием REST-интерфейса на стороне 1С.

    Если на стороне python не планируются дополнительные возможности и он 100% будет делать транзит данных из/в 1С, то python в этой схеме 100% третий лишний и проще сделать бэкенд полностью на 1С.

    Загуглил про Brom - это набор библиотеки для python и расширения (плагина) для базы 1С. Выглядит как быстрое решение, но я бы не применял. Высокие риски - нет публичных аудитов безопасности и нужно верить разработчику на слово; вендерлок и нужно платить разработчику для исправления ошибок; отсутствуют возможности для кастомизации и расширения функционала. Все равно даже с Бромом нужно делать публикацию базы 1С на веб-сервере. Тогда уже проще в 1С опубликовать стандартный OData-интерфейс и использовать стандартные библиотеки python для работы с http и json.
    Ответ написан
    Комментировать
  • Оптимальный формат хранения изображения в текстовом виде?

    Griboks
    @Griboks
    Оптимальный вариант - это открыть бинарный формат в блокноте. Конечно, некоторые символы будут странно выглядеть, но зато это самый оптимальный вариант.
    Ответ написан
    Комментировать
  • Сколько запросов в секунду может обрабатывать telegram бот на long_polling?

    Когда стоит задуматься о переходе на webhook?

    В принципе изначально следует задуматься о переходе на вебхук. long polling - это больше про разработку, чем про прод.

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

    @Dementor
    программист, архитектор, аналитик
    Я так понимаю, у полей нужно прописать XML_ID, но 1с-ник говорит, что в 1с у этих полей нет таких кодов

    Тогда пропишите те, которые есть! У вас уже есть специалист, которому вы платите, зачем вы пишете тут вопросы? Обычно из-за "а мне в интернетах совсем по другому сказали" хаос на проекте только усугубляется.
    Ответ написан
    Комментировать
  • Стоит ли изучать сразу много разного или лучше сперва углубиться во что-то одно?

    meowto16
    @meowto16
    Делаю штуки
    Если программирование только хобби - можно учить что угодно и как угодно
    Но на работе от вас не потребуют веб-разработку и C#, Unity одновременно)
    Ответ написан
    Комментировать
  • Telegram Bot: требует ID пользователя, где его взять?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Дополню Евгений Колотилин - даже если Вы подставите id из внешнего источника - пользователь не увидит сообщений от бота, пока сам ему не напишет впервые.
    Ответ написан
    Комментировать
  • Использовать методы или самому писать функции?

    @dan_kosenko
    Node.js Developer
    В каких ситуациях есть смысл:
    • Улучшить свои знания. Допустим самому попробовать реализовать какие-то алгоритмы, чтобы лучше понимать как работает поиск, сортировка, обход древовидных структур и так далее;
    • Специфичные требования. Например вам нужна высокая производительность, ваш основной стек на Back-end - это Node.js. Так вышло, что вам не хватает производительности и поэтому вы берёте и переписываете нужный NPM пакет на на c++;
    • Раз коснулись темы NPM, то другой пример. В NPM миллионы пакетов на любой случай жизни и так бывает, что нецелесообразно тянуть зависимость ради пару десятков строчек кода.

    Когда НЕ стоит изобретать велосипед:
    • Проверенные алгоритмы. Например не стоит в продакшене самому писать библиотеки для работы с шифрованием, если конечно у вас не стоит такая задача. Самописная криптография грозит тем, что вы можете допустить ошибку в шифровании и получить уязвимость, а аудит вашего кода скорее всего не будут проводить десятки экспертов.
    • Придумывать новые фреймворки. Тут просто без должного опыта ничего хорошего не получится.
    • Ограниченные ресурсы и время. Программисты чаще всего работают на кого-то и им выделяются конкретные ресурсы и время на проект. Создание/проектирование новых библиотек, фреймворков и компонентов занимает достаточное большое количество времени. И таким образом вы просто не выполните поставленные задачи, если будете придумывать велосипеды.

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    Значит сразу скажу что у меня для вас - плохие новости. DynamoDb как и многие ему подобные облачные key-value решения расчитаны на выборку по сету ключевых полей. Обычно это хеш-ключ и ключ диапазона. В этом случае вы платите немного. Если вдруг вы решили выбирать по не-ключевым полям это уже будет другое тип запроса. Называется scan. Его можно писать на любом языке разработки но суть в том что будет выбрана ВСЯ таблица. Если она большая - то charge за текущий период вас неприятно удивит. Фиксить это почти невозможно. Это неправильный дизайн и неправильное использование AWS Dynamo. Вам следует вообще отказаться от использования Dynamo и думать над тем как НЕ делать сканов в будущем. Можете теоретически создать индекс по хвосту от строки. Но индекс с точки зрения Динамо - это копия таблицы просто по другому расположенная и реплицируемая. Вобщем не советую тоже.
    Ответ написан
    3 комментария
  • Заслуживает ли проект крестики нолики быть в портфолио?

    Anopeng
    @Anopeng
    Веб-программист, учу фронт и бек
    Если просто крестики-нолики, то нет. Слишком просто, да и в интернете полно примеров. Но если ты сделаешь какие-то необычные крестики-нолики, то вполне.

    Например, в обычном поле 3х3, победителя определить очень легко - просто пробежаться по массиву выигрышных позиций и сравнить с текущей. Но уже даже с полем 5х5 это будет сделать уже гораздо сложнее, ведь массив паттернов будет уже больших размеров. Для таких целей нужно будет применять какой-нибудь более сложный алгоритм без такого массива. Это уже хороший вариант

    Или дополнительно сделай искуственный интеллект, который будет играть в качестве второго игрока - тоже хорошее решение.

    И не обязательно увеличивать размер поля или создавать бота - придумай что-то оригинальное! Например, добавь третьего игрока, чтобы это были не просто крестики-нолики, а... Крестики-нолики-галочки :D

    Но на одних классических играх, у тебя мало шансов создать привлекательное портфолио. Создай какое-нибудь сложное приложение на JS (идей в интернете полно), например аналог планировщика задач Jira. Или, еще лучше, придумай что-то своё и реализуй.

    Фронтенд - это сложная профессия. Тебе нужно выполнить очень много работы, чтобы стать профессионалом. Если ты думал, что достаточно написать 5-15 проектов, то тебе точно не сюда. Желаю удачи :D
    Ответ написан
    2 комментария
  • С какой целью при вызове bot_token телеграма может быть использован метод os.environ.get('BOT_TOKEN')?

    AlexNest
    @AlexNest Куратор тега Python
    Работаю с Python/Django
    Этот код получает токен из Переменных окружения. Нужно, в т.ч. чтобы можно было выкладывать код в открытый доступ (или передавать другим программистам) и не давать доступ к подобным, конфиденциальным данным
    Ответ написан
    2 комментария
  • Как юридически правильно оформить биржу фриланса?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Итак открываете ООО, заключаете договор с Киви банком, нанимаете юриста.
    https://freelance.ru/pages/safe-deal.html
    https://freelance.ru/offer.html
    https://freelance.ru/rules.html
    Ответ написан
    Комментировать
  • Может ли Битрикс24 заменить low-code BPM систему?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    есть ли у продуктов вроде ELMA преимущество перед Битрикс24


    Безусловно есть.
    Например Битрикс24 это не low-code BPM система.
    Ответ написан
    Комментировать