• Как использовать оперативную память для хранения словаря Python?

    Dr_Elvis
    @Dr_Elvis Куратор тега Python
    В гугле забанен
    Ответ написан
    Комментировать
  • Как получить последний элемент столбца?

    AlexNest
    @AlexNest Куратор тега Python
    Работаю с Python/Django
    В sql нет понятия первый/последний. Есть понятие сортировки по определенному параметру, ограничение количества получаемых строк и соответствующие методы получения строк в модуле.
    Все это является основами работы с БД и вам стоит самому в этом разобраться c помощью учебника по sql/документации по модулю sqlite (именно документация, не видосы на ютубе. Максимум статьи/w3school) - там очень много примеров.
    Ответ написан
    Комментировать
  • Как поменять направление вращения электродвигателя?

    ProgrammerForever
    @ProgrammerForever
    Учитель, автоэлектрик, программист, музыкант
    Вдовесок к всему сказанному - порекомендую easyelectronics.ru
    Ответ написан
    Комментировать
  • Как управлять яндекс-лампочкой в обход апи яндекса?

    @justslipknot Автор вопроса
    Как выяснилось, яндекс лампочки - это ребрендированная Tuya лампочка. У Tuya есть локальный протокол и модуль для Home Assistant. Но я решил вопрос немного иначе:
    1. Устанавливаем приложение Smart Life или Tuya Home (оба совместимы с яндекс лампами)
    2. Сбрасываем настройки лампочек и добавляем их в приложении Smart Life / Tuya Home
    3. Регистрируем приложение на платформе Tuya. Инструкция есть в этом репозитории.
      Пояснение
      Этот шаг нам нужно проделать, чтобы получить Local Key, который требуется для шифрования и расшифровки запросов (Local Key, как я понял, обновляется после сброса настроек). Инструкция, как быстро добавить устройства в приложение платформы Tuya так же представлено в репозитории

    4. Выбираем библиотеку для работы с Tuya local api. Я выбрал вот эту библиотеку для C#. На GitHub странице этой библиотеки есть инструкция по работе с Tuya local api.
    5. Реализуем нужный нам функционал


    Небольшой топорный пример из моего тестового проекта:
    Поиск устройств Tuya в сети

    // Эти данные можно получить на странице вашего приложения на платформе Tuya.
    var accessId = "<access id>";
    var apiSecret = "<api secret>";
    
    // Сканируем сеть на наличие доступных устройств Tuya. 
    // Хранение найденных устройств реализуется как душе угодно
    
    var scanner = new TuyaScanner();
    scanner.OnNewDeviceInfoReceived += (sender, info) =>
    {
       // логика сохранения найденных устройств 
    };


    Получение Local Key


    Самый важный этап.
    Пример взят из репозитория библиотеки
    var api = new TuyaApi(region: TuyaApi.Region.CentralEurope, accessId: ACCESS_ID, apiSecret: API_SECRET);
    var devices = await api.GetAllDevicesInfoAsync(anyDeviceId: DEVICE_ID);
    foreach(var device in devices)
    {
        Console.WriteLine($"Device: {device.Name}, device ID: {device.Id}, local key: {device.LocalKey}");
    }


    Отправка команд устройству

    var device = new TuyaDevice("<IP адрес>", "<local key>", "<device id>");
    
    // Пример команды включения лампочки
    // Метод FillJson автоматически подставляет нужные параметры, поэтому сразу пишем запрос.
    // Про методы DPS можно почитать в официальной документации Tuya
    var onCommand = device.FillJson("{\"dps\":{\"20\":true}}");
    
    var request = device.EncodeRequest(TuyaCommand.CONTROL, onCommand );
    
    // Посылаем сигнал. Если устройство не ответит, то падает исключение 
    var encodedResponse = await device.SendAsync(request);
    var response = device.DecodeResponse(encodedResponse);



    Далее остаётся разобраться с кодами команд и можете контролировать лампы как вам угодно.
    Ответ написан
    3 комментария
  • Как сделать сервер на Линукс для телеграм бота?

    krax1337
    @krax1337
    личинка Девопса
    Один из вариантов это Docker

    Попробуй докеризировать своих ботов, и далее уже запускать их в отдельные Docker контейнеры. Так ты сможешь их изолировать, а еще они сами будут подниматься при ловле исключений и запуске компьютера (--restart always). Еще с помощью Docker легко будет пробросить API ключи в переменное окружение.
    Ответ написан
    Комментировать
  • Как скачать файл по ftp?

    @AVKor
    Примерно так:
    import ftplib
    
    HOST = 'server'
    USER = 'ftpuser'
    PASSWD = 'ftppass'
    FILE = 'file.ext'
    FTP_DIR = 'dir'
    
    with ftplib.FTP(HOST) as ftp:
        try:
            ftp.login(user=USER, passwd = PASSWD)
            ftp.cwd(FTP_DIR)
            with open(FILE, 'wb') as fp:
                ftp.retrbinary('RETR ' + FILE, fp.write)
        except ftplib.all_errors as err:
            print('FTP error:', err)
    Ответ написан
    4 комментария
  • Есть ли какие-то онлайн компиляторы кода Python?

    @alexbprofit
    Junior SE
    Replit
    Ответ написан
    Комментировать
  • Есть ли какие-то онлайн компиляторы кода Python?

    AlexNest
    @AlexNest Куратор тега Python
    Работаю с Python/Django
    Есть. Называются VDS (серваки, простыми словами). Арендуете, подключаетесь по ssh и кодите на здоровье.
    Вариантов - тьма. Гуглятся легко
    Ответ написан
    Комментировать
  • Достать данные гироскопа и акселерометра из экшен камеры или видео?

    @LiteWeb
    Добрый день!
    Если актуально - есть open-source программа для стабилизации видео - GyroFlow, весь исходный код опубликован на GitHub
    Вот статья-описание программы https://djilab.ru/gyroflow-rc2/
    Для некоторых камер данные пишутся в файл видео. В коде программы есть получение этих данных.
    Ответ написан
    Комментировать
  • Нужна помощь с сохранением данных в json файл в discord bot на базе discord.py. Как это сделать?

    AlexNest
    @AlexNest Куратор тега Python
    Работаю с Python/Django
    Очевидно, что пойти на фриланс. Вы толком не описали задачу (или сами толком не понимаете, чего хотите), не попытались погуглить, не попытались сделать сами. Здесь вам вряд-ли помогут. Разве что советом:
    1.Откладываете попытки делать ботов.
    2.Читаете документацию/уроки по python
    3.Когда изучите основы, анализируете, что именно вам нужно и раскладываете необходимую задачу на минимально-возможные подзадачи.
    4.Реализуете каждую из них.
    5.Если не получается что-то конкретное - задаете вопрос.
    Ответ написан
    Комментировать
  • Что такое монада?

    pazukdev
    @pazukdev
    Java Dev
    Монада - это абстракция над цепочкой связанных вычислений. Контейнер, который принимает текущее состояние и функцию, которая принимает это состояние в качестве аргумента и возвращает новое состояние. Этот контейнер инкапсулирует среду (контекст) выполнения вычислений с учетом возможных исключений; на выходе только ожидаемые значения. Вобщем, just a monoid in the category of endofunctors (c).
    Ответ написан
    Комментировать
  • Как можно убрать лишние строки в TXT?

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

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    Попробуйте создать своп. К примеру как тут описано:
    https://linuxize.com/post/how-to-add-swap-space-on...
    https://www.digitalocean.com/community/tutorials/h...u
    Ответ написан
    Комментировать
  • Почему пятно света от лазерной указки выглядит зернистым?

    fox_12
    @fox_12
    Расставляю биты, управляю заряженными частицами
    https://en.wikipedia.org/wiki/Speckle_(interference)
    Если вкратце - то из-за интерференции когерентного света лазера.
    Ответ написан
    3 комментария
  • Как ускорить работу скрипта в python?

    @deliro
    Зачем здесь вообще питон?

    comm -12 <(sort --parallel=4 1.txt) <(sort --parallel=4 2.txt) > some_output_file.txt


    Где 4 - количество ядер / 2 (две сортировки идут одновременно), parallel не может быть больше 8 и является опциональным.

    sort умеет не вылезать за пределы ОЗУ (но если нужно жёстко ограничить, то -S 100M например). Если нужно, засовываешь это в питоне через subprocess

    Подробнее здесь https://en.m.wikipedia.org/wiki/External_sorting
    Ответ написан
    2 комментария
  • Где получить координатные границы городов?

    @Sadless74
    Чтобы получит полигоны городов из OpenStreetMap можно воспользоваться overpass-turbo.eu (api сайта заблокирован, используйте VPN)
    Запрос для Московской области:
    [out:xml];
    
    area
      (area.region)
      ["boundary"="administrative"]
      ["name"="Московская область"]
    ->.a;
    
    (
      node
      	(area.a)
      	["place"~"city|town"];
      way
      	(area.a)
      	["place"~"city|town"];>;
      relation
      	(area.a)
      	["place"~"city|town"];>;
    )->.b;
    .b out meta qt;

    Результат можно экспортировать в geojson. Эти данные о полигонах загружать в свою базу и там искать.

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

    Если требуется искать ближайший центр населённого пункта, то есть ответ на похожий вопрос. Это задача поиска ближайшего соседа. Есть готовые архивы с координатами населенных пунктов.
    Ответ написан
    Комментировать
  • За счет чего появляется 180в?

    ProgrammerForever
    @ProgrammerForever
    Учитель, автоэлектрик, программист, музыкант
    Дроссель накапливает энергию, потом засчет самоиндукции напряжение на нем повышается, и это накапливается на конденсаторе. Подробнее и "на пальцах" - в этой статейке
    Ответ написан
    Комментировать
  • Как сделать broadcast request из linux shell?

    karabanov
    @karabanov Куратор тега Linux
    Системный администратор
    fping -c 1 -ag 192.168.254.0/24 - вместо 192.168.254.0/24 подставь свою подсеть.

    Потом ip ne или ip --json ne | jq если дальше надо скриптом разбирать данные.
    Ответ написан
    Комментировать
  • Как мониторить интернет-соединение на дропы?

    karabanov
    @karabanov
    Системный администратор
    Чтобы провести эксперимент, который покажет хоть сколько нибудь реальные данные, тебе понадобится сервер в сети провайдера, генератор трафика (iperf3 в принципе подойдёт) и tcpdump или wireshark.

    iperf3 и сам по себе показывает сколько было ретрансмитов, но можешь дополнительно снять дамп трафика и посмотреть.
    Ещё есть вариант взять большой файл и скачивая его смотреть в wireshark есть ли ретрансмиты. Таким образом можно получить более-менее подходящий материал для дальнейшей работы.

    А прочие методы вроде попинговать и посмотреть на "потреи" или сделать трейсы с помощью mtr ни какой полезной информации не дадут.
    Например:
    $ mtr -r -n 10 ya.ru
    Start: 2021-12-06T00:20:05+0300
    HOST: zbook                       Loss%   Snt   Last   Avg  Best  Wrst StDev
    Start: 2021-12-06T00:20:20+0300
    HOST: zbook                       Loss%   Snt   Last   Avg  Best  Wrst StDev
      1.|-- 192.168.254.254            100.0%    10    2.0   4.1   1.3  25.3   7.5
      2.|-- 212.1.254.166              0.0%    10    1.9   1.8   1.3   2.0   0.3
      3.|-- 212.1.238.184              0.0%    10    1.3   1.9   1.3   2.5   0.5
      4.|-- 212.1.239.202              0.0%    10    6.4   6.6   6.0   8.1   0.6
      5.|-- 89.20.133.47               0.0%    10    7.0   9.6   7.0  31.1   7.5
      6.|-- ???                       100.0    10    0.0   0.0   0.0   0.0   0.0
      7.|-- 87.250.250.242             0.0%    10   17.3  18.1  17.3  20.1   0.7

    На первом хопе 100% "пореть", получается интернет вообще не работает? Но как тогда трафик проходит ещё через 7 роутеров? А на 6-том хопе, что за "потери"?
    Ответ прост: в целях самозащиты от перегрузки своего слабого CPU роутер отбрасывает лишние ICMP либо вовсе их блокирует, отсюда и "потреи", а пользовательский трафик обрабатывается не слабым CPU роутера, а специализированными микросхемами ASIC и чтобы его "продавить" надо ещё постараться.

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

    Для справки Traceroute: про умение читать вывод
    Ответ написан
    Комментировать