• Какие решения существуют для поиска кадров в небольшую команду?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Подъëм зарплаты всегда работает.
    Ответ написан
    Комментировать
  • Как вычислить виновника из-за которого отваливается интернет с какой-то периодичностью в маленькой сети?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Такого рода проблемы все и всегда решаются однотипно.
    1. Необходимо сформулировать критерии наличия проблемы.
    Как именно пропадает интернет, насколько часто, как надолго. Это нужно для диагностики. поиска причины и определения ушла ли проблема после принятия каких либо мер.
    2. Делить проблему на части и проверять части по отдельности.
    Самый эффективный способ делить - это пополам. Отсекаем часть сети и проверяем наличие проблемы в обеих частях (если есть возможность) или в одной из частей.
    3. Когда найден минимальный проблемный участок, который уже нельзя или бессмысленно делить - заменяем его.
    4. Помним, что чаще всего сложные проблемы - это композиция нескольких более простых. которые по отдельности могут не проявляться. В вашем случае может быть проблема, связанная с нагрузкой на роутер, например, которую создает один из услов из-за плохого контакта обжима и большого объёма биттых пакетов. Устранив одну из причин, вы, может быть, сделаете проявления проблемы реже, но не устраните её полностью. К примеру, если замените ротуер, битые пакеты будут всё равно будут нагружать вашу сеть и портить ее производительность, но это будет не так очевидно. Переобжав коннектор вы избавитесь от части нагрузки, но еслив ваш ротуер работал на переделе, то лишний вафай-клиент или тяжелый видос в сети сможет его снова нагрузить до критического снижения производительности.

    Итак, пробежимся по перечисленным пунктам сначала.
    1. Критерии. Поиск критериев - это часть решения. Обычно в этом случае нуно сорать необходимую статистику. Есть куча софта, который это умеет делать, но пинг есть всегда под рукой.
    Для этой тулзы есть две полезных опции: ключ для бесконечного пинга и размер пакета.
    В разных ОС эти ключи немного разные, поэтому ищите их отдельно, у меня нет винды под рукой, поэтому не стану на этом заострять.
    Скаж лишь, что пинговать лучше большими пакетами, жалетально превышающими размер TTL, прописанный в роутере. Тогда такой пинг будет реже проскакивать в периоды хорошей связи, то есть выловит больше пролблем.
    Пинговать нужно в отдельных окнах сразу несколько хостов:
    - ya.ru - этот хост всегда отвечает на пинги и выявит проблемы с DNS
    - 8.8.8.8 - это гугловый DNS-сервер, тоже всегда отвечает на пинги, покажет, что связь с инетом есть даже если DNS, прописанныйна компе не правильно работает.
    - 192.168.0.1 - или какой там IP у вашего роутера. Нужно. чтбы отделить проблемы с инетом от проблем с внутренней связностью до роутера
    - 192.168.0.x - ip одного из компов в сети. Я обычно пингую несколько компов, доступных через баксимальное число потенциально проблемных узлов - ethernet-розеток, свичей, вайфай-соединений... Этот пинг поможет понять где проблема, во внутрисетевой связности или в последней миле.

    Учтите, что проблемы часто бывают комбинированные и каждое сочетание симптомов будет свидетельствовать о раных проблемах.
    Да, тревожным принаком может служить не только пропадание пакетов, но и скачки в длительности их возврата, особенно если такие длительности достигают 500мс и выше. Но и скачки от 3мс до 250мс тоже будут свидетельствовать о каких-то проблемах.

    Запускать пинг на всех компах лучше одновременно и на некоторое время. Например минут на 20. Потом по статистике будет видно сколько где пакетов пропало.

    2. Если критерии наличия проблемы позволяют, то можно попробовать отрубать части сети и смотреть наличие проблемы. Это я в том смысле, что если проблема происходит в среднем раз в пару-тройку часов, то отрубать на многие часы части сети при диагностикем ожет быть неприемлемым.
    Редкеи пробемы дольше отлавливать. Но напоминаю, что критерии можно детализировать, ведь если пакеты у вас пропадат относительно редко, то скачки времени их возврата могут случаться чаще и подсвечивать проблему. Также можно сделать рамер пакета близким к максимальному, это должно тоже в некоторых случаях участить проявление проблемы.
    Иногда не мешает нагрузить сеть комированием по локалке большого файла. В линуксе можнно с помощью утилиты tc послать большой поток рандомных байт на любой сокет..
    3. Плавающие проблемы случаются из-за плохого обжима, перебитого жверью кабеля, перегрызенного UTP в плинтусе, из-за умиращих конденсаторов в блоке питания роутера (БП может не выдавать необходимого при нагрузках тока, но вольтметром такая неисправность не будет различима без нагрузки). Вообще старые (да и не только) роутеры могут страдать поплывшими электролитическими конденсаторами не только в блоках питания.
    Хорошо, когда можно подменить роутер.
    4. ну с четвертым пунктом ничего не пососветуешь, только разделать и тестировать все по отедльности и в разных сочетания и да поможет нам ктулху.

    А для тех, кто дочитал этот опус до конйа - интересная задачка. Что пингуют эти команды, как и почему?
    ping 1.1
    ping 2130706433

    Тех, кто знает, попрошу не спойлерить=)
    Пусть для кого-то будет сюрпризом этот дивный мир=)

    UPD. Простите за адское количество опечаток в тексте. Писал в спешке и с непривычной клавиатуры. Исправлю всё попозже. Не ожидал, что многим ответ придётся по душе. Вроде ж накапитанил как мог.
    Ответ написан
    5 комментариев
  • Можно ли сделать проверку и выводить элемент если он существует?

    Vindicar
    @Vindicar
    RTFM!
    Читай, как пользоваться словарями. В частности, метод get().
    Ответ написан
    Комментировать
  • Как сделать такое же окно в telebot?

    @NotAloneBoy
    Если ты про список команд,
    В боте @BotFather команда /setcommands, дальше следуй инструкциям
    Ответ написан
    Комментировать
  • Как исправить ошибку TeleBot.add_callback_query_handler() got an unexpected keyword argument 'func'?

    Lord_of_Rings
    @Lord_of_Rings
    Python developer
    В документации читаем

    add_callback_query_handler(handler_dict)

    Adds a callback request handler Note that you should use register_callback_query_handler to add callback_query_handler to the bot.

    PARAMETERS
    handler_dict –

    RETURNS


    Поэтому ваш код будет выглядеть так
    import telebot
    from telebot import types
    
    bot = telebot.TeleBot('-----')
    
    @bot.message_handler(commands=['start'])
    def button(message):
        markup = types.InlineKeyboardMarkup(row_width=2)
        item = types.InlineKeyboardButton('start', callback_data='start')
        item2 = types.InlineKeyboardButton('sixes', callback_data='sixes')
        item3 = types.InlineKeyboardButton('info', callback_data='info')
        item4 = types.InlineKeyboardButton('creator', callback_data='creator')
        markup.add(item, item2, item3, item4)
    
        bot.send_message(message.chat.id, '------', reply_markup=markup)
    
    
    @bot.callback_query_handler(func=lambda call:True)
    def callback(call):
        if call.message:
            if call.data == 'start':
                bot.send_message(call.message.caht.id, '-------')
    
    
    bot.polling(none_stop=True)
    Ответ написан
    Комментировать
  • Написание кода коротко плохо?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Оба варианта хорошие. Но обычно если ты работаешь отладчиком и тебе
    интересно где логика ведет себя не так - то второй вариант удобнее.

    Однострочники хороши только когда ты досконально понимаешь
    что внутри них происходит.
    Ответ написан
    8 комментариев
  • Хочу развивать свой проект в коммерческом ключе, где можно черпать знания?

    AgentSmith
    @AgentSmith
    Это мой правильный ответ на твой вопрос
    Начать и делать.
    Учиться на собственных ошибках.
    Либо пойти в ВУЗ и набраться знаний, а потом - читай выше
    Ответ написан
    Комментировать
  • Как сделать проверку базы данных, на наличие новых записей?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Обычно такие системы строят не на основе БД а на основе системы сообщений (messageMQ). Это - более современный и рациональный подход. Не бот долбит БД а MQ уведомляет бота о каком-то событии.
    Ответ написан
    7 комментариев
  • В чем Базовая суть async функций?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Чтобы понять async нужно в принципе понимать мультизадачность.

    Есть два вида мультизадачки. Первая базируется на preemptive multitasking. Это классика на потоках (Threads). Подходит для приложений где есть нагрузка на CPU и мало I/O. Пример таких приложений - рендеринг 3Д графики. Майнинг.

    И есть второй вид когда есть много I/O а нагрузка на процессор - малая и ее можно считать неизменяющейся. Как обработчик событий. Ее делают на async/await. Или еще на мультиплексированном I/O. Она подходит для веб-серверов. Яркий пример - nginx. Или системы обрабоки MQ. Сокет-серверы. Файловые серверы и прочее.

    Поэтому изучать async в отрыве от всех методов организации мультизадачности - безсмысленно. Вы ничего не поймете пока не узнаете все use-cases использования железа и ОС. Чтоб понять async - поймите классику.

    UPD: Fixed
    Ответ написан
    2 комментария
  • Многоуровневое меню в Bot Telegram, как сделать кнопку назад на каждом уровне?

    @helldess
    Делаешь кнопку, в ней callback_data='что-то' отлавливаешь этот callback хендлером и просто отправляешь тоже самое, что было на прошлом уровне.
    Ответ написан
    Комментировать
  • Асинохрон телебот возможен?

    Lord_of_Rings
    @Lord_of_Rings
    Python developer
    Асинохрон телебот возможен?

    Возможен, но в вашем случае надо использовать базу данных
    Ответ написан
    1 комментарий
  • Как сохранить в db ниже написанный текст в pyTelegrambotAPI?

    shabelski89
    @shabelski89
    engineer
    Всё правильно, что записали в переменную, то и сохранилось:
    users_text = [message.text]
    Вам нужно использовать register_next_step_handler чтобы задать вопрос и потом получить ответ и обработать его.

    пример register_next_step_handler
    Ответ написан
    2 комментария
  • Что тут не так?

    Lord_of_Rings
    @Lord_of_Rings
    Python developer
    У вас неверный синтаксис. Рекомендую изучить основы python, прежде чем продолжать заниматься ботописательством
    Ответ написан
    Комментировать
  • Почему не работает инлайн кнопка?

    @Wispik
    Потому что
    dp.register_callback_query_handler(accept, lambda call: True)

    обрабатывает все запросы и все что ниже него не будет работать
    Ответ написан
    Комментировать
  • Возможно ли передать параметры в функцию Yandex Cloud Functions при вызове через таймер?

    @nik_the_spirit
    Нет, в таймер нельзя передать дополнительные параметры. Но таймер передает в функцию или контейнер свой id при вызове. Можно использовать его чтобы в коде различать, каким триггером была вызвана функция.
    Ответ написан
    Комментировать
  • Как вставить переменную в нужную строку БД?

    @mr_diablol Автор вопроса
    Вдруг у кого будет такой же вопрос:

    cursor.execute('UPDATE users SET numbers=? WHERE emails=?', (user_number, email))
    Ответ написан
    1 комментарий
  • Где провести опросы общественного мнения и спросить личное мнение по IT-тематике?

    yarkov
    @yarkov
    Помог ответ? Отметь решением.
    Напиши на Хабр годную статью и прилепи опрос в конце
    Ответ написан
    6 комментариев
  • Как подростку заработать в 14-15 лет?

    xez
    @xez
    TL Junior Roo
    Задача подростка учиться, что бы зарабатывать не 500р в день, а 500р в час хотя бы.
    Ответ написан
    Комментировать
  • Какие языки программирования нужно знать чтобы создать бота вк как бот бандит?

    snaiper04ek
    @snaiper04ek
    Не стреляйте в эникея, он админит как умеет
    пайтон
    видео с ботами, но крайне не рекомендую начинать с него.
    https://www.youtube.com/watch?v=HodO2eBEz_8

    Нужно сначала пройти базовое обучение, хоть на каком-то уровне:
    https://pythontutor.ru/lessons/inout_and_arithmeti...
    перейти на сайт, решить 80% задач в каждой теме (с одним-двумя можно затуп поймать, я всё понимаю. Но если не можешь решить даже таких простых задач - про программирование лучше забудь, иди картошку копай)
    Ответ написан
    1 комментарий
  • Почему выводит RecursionError: maximum recursion depth exceeded in comparison?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    [Previous line repeated 995 more times]
    То есть, у вас глубина стека ограничена 1000 вызовов. Если проанализировать функцию, то видно, что при n = 1 и m > 1 глубина стека вызовов будет m.
    Таким образом у вас два варианта - переписать функцию или ограничить циклы до ~990.
    Кроме того, функция симметрична относительно порядка аргументов. Значит внутренний цикл можно начитать не с 1, а с a+1.
    Ну или решить задачу аналитически.
    Данная функция реализует алгоритм нахождения наибольшего общего делителя методом Евклида. F(n, m) = X означает, что n = iX, m = jX, где i и j - натуральные числа и
    i != j.
    n + m = (i + j)X.
    Минимальная пара i и j будет 1 и 2. Минимальное значение X, большее 15 будет 16.
    Получаем n = 16, m = 32, F(16, 32) = 16, n + m = 48.
    Ответ написан
    Комментировать