• Как отправить AT-команду из скрипта на Python на модем и получить ответ?

    @IvanGeso Автор вопроса
    С сокетами понятно. Я пробовал очень похожее решение, но тут краеугольный камень - это "Конвертер TCP - последовательный порт". Как и где его включить я не представляю, к сожалению. И что это вообще такое. Я так понимаю, что это некий виртуальный tty на машине-клиенте, который работает по TCP? Проще говоря, я знаю, на каком tty "внутри" роутера сидит модем, я знаю ip и учетные данные роутера, разные порты я на нем открыть могу, пробросить тоже и т.д. Но как это сделать до tty - не знаю. Буду крайне признателен, если подскажете мне про это поподробнее. А с telnet надо попробовать. Спасибо за наводку!
  • Какой Macbook на чипе Apple Silicon взять?

    @IvanGeso Автор вопроса
    Pavel Shvedov, Понял, спасибо. Тут в том и проблема, что прошка и эир на чипе M1 с точки зрения железа (не рассматривая базовые модели) отличаются только наличием активного охлаждения у про (что возможно позволит раскочегарить чип немного). Т.е. грань между про и эйр стерта почти полностью. Отсутствие тачбара у эйра я теперь похоже рассматриваю как плюс. Так что выбор становится более очевидным.
  • Какой Macbook на чипе Apple Silicon взять?

    @IvanGeso Автор вопроса
    Pavel Shvedov, Т.е. считаете, что в данном случае Air будет предпочтительным вариантом? Pro с M1 без бара нет, насколько я понимаю.
  • Как правильно настроить iptables?

    @IvanGeso Автор вопроса
    fara_ib, еще раз огромное спасибо. Через web-gui все получилось! Причем сразу с дефолтными настройками. Веб-приложение теперь доступно и через точку доступа и через белый ip-адрес сим-карты. Я так и не понял, что я делал не так, пытаясь настроить все сам, но тем не менее задача решена. Спасибо за содействие!
  • Как правильно настроить iptables?

    @IvanGeso Автор вопроса
    fara_ib, Вывод iptables -L -v:
    Chain INPUT (policy ACCEPT 17 packets, 4034 bytes)
     pkts bytes target     prot opt in     out     source               destination         
        4  1180 ACCEPT     all  --  lo     any     anywhere             anywhere            
    
    Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
     pkts bytes target     prot opt in     out     source               destination         
        0     0 ACCEPT     all  --  eth0   wlan0   anywhere             anywhere             state RELATED,ESTABLISHED
        0     0 ACCEPT     all  --  wlan0  eth0    anywhere             anywhere            
    
    Chain OUTPUT (policy ACCEPT 21 packets, 3282 bytes)
     pkts bytes target     prot opt in     out     source               destination         
        4  1180 ACCEPT     all  --  any    lo      anywhere             anywhere


    Вывод iptables-save:
    # Generated by xtables-save v1.8.2 on Sun Mar 29 10:20:23 2020
    *filter
    :INPUT ACCEPT [17:4034]
    :FORWARD ACCEPT [0:0]
    :OUTPUT ACCEPT [21:3282]
    -A INPUT -i lo -j ACCEPT
    -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
    -A FORWARD -i wlan0 -o eth0 -j ACCEPT
    -A OUTPUT -o lo -j ACCEPT
    COMMIT
    # Completed on Sun Mar 29 10:20:23 2020
    # Generated by xtables-save v1.8.2 on Sun Mar 29 10:20:23 2020
    *nat
    :PREROUTING ACCEPT [56:26225]
    :INPUT ACCEPT [0:0]
    :POSTROUTING ACCEPT [3:346]
    :OUTPUT ACCEPT [10:987]
    -A POSTROUTING -o eth0 -j MASQUERADE
    COMMIT
    # Completed on Sun Mar 29 10:20:23 2020
    # Generated by xtables-save v1.8.2 on Sun Mar 29 10:20:23 2020
    *mangle
    :PREROUTING ACCEPT [77:31439]
    :INPUT ACCEPT [21:5214]
    :FORWARD ACCEPT [0:0]
    :OUTPUT ACCEPT [25:4462]
    :POSTROUTING ACCEPT [37:7222]
    COMMIT
    # Completed on Sun Mar 29 10:20:23 2020

    За web-gui спасибо, попробую. Да и за все спасибо
  • Как правильно настроить iptables?

    @IvanGeso Автор вопроса
    К сожалению, не помогло. Возможно дело не в iptables? Заметил еще одну странность. При попытке пинга с Raspberry подключенного к точке доступа компьютера пинг тоже не идет (Destination Host Unreachable). При этом пинговать пытается с ip, назначенного для интереса eth0: 192.168.8.2
  • Как правильно настроить режим моста на Raspberry Pi?

    @IvanGeso Автор вопроса
    Да, я тоже делала эту настройку net.ipv4.ip_forward=1. Забыл о ней написать. У вас DHCP-сервер получается на odroid-c2? Если кратко, то это устройство для проверки качества сотовой связи и мониторинга ее параметров в течении какого-то времени (сотовая связь широко используется в проектах цифровизации электроэнергетики, которыми я занимаюсь). Идея в том, что в место, куда планируется ставить оборудование, которое будет общаться с системой управления посредством GPRS-канала, устанавливается это устройство, на месте проводятся определенные замеры (для этого нужен wi-fi и веб-приложение, которое эти замеры осуществляет). Если все ок, то устройство снимают и едут дальше, если нет, то оставляют на какое-то время и проводят мониторинг качества связи. Он осуществляется с сервера, поэтому нужен доступ к приложению по ip-шнику симки. Оператор билайн. Симка чисто для тестов выдана. В реальных кейсах это серые ip-шники из специально выделенного под проект APN (но сути это не меняет, просто на сервере будет стоять модем с симкой из той же подсети).
  • Как настроить маршрутизацию на Raspberry Pi?

    @IvanGeso Автор вопроса
    Спасибо за наводку. Благодаря вашим советам систему удалось настроить.
  • Как получить выбранное значение QComboBox в Python?

    @IvanGeso
    Paul Plotnikov, судя по всему ты забыл добавить скобки () при вызове метода. Вот он и выводит тебе объект метода, а не результат его выполнения.
  • Как правильнее всего сделать вложенную форму в Django 2?

    @IvanGeso Автор вопроса
    776166, а с модальным окном такой фокус не прокатит? Если нет, то есть ли способ создать полноценное окно как в админке без использования JS? И есть ли способ обновить страницу с основной формой без использования JS? Просто с JS пока знаком поверхностно, хотел за него уже взяться после того как напишу скелет бэкэнда. Если вас не затруднит, могли бы какой-нибудь минималистичный пример реализации показать?
  • Как правильнее всего сделать вложенную форму в Django 2?

    @IvanGeso Автор вопроса
    А в админке Django это как реализовано тогда?
  • Как правильно обработать IntegrityError в форме Django?

    @IvanGeso Автор вопроса
    Yura Khlyan, спасибо! это помогло! Жаль только комментарий нельзя пометить решением)
  • Как правильно скрыть слайдер с помощью jQuery?

    @IvanGeso Автор вопроса
    Да, это работает. Я собственно так изначально и делал. Только тут проблема в том, что настроив медиа-запрос на определенный max-width, он может нормально работать на моем мониторе, а на мониторе с другим разрешением/соотношением сторон уже не будет. Можно, конечно, методом проб и ошибок подобрать такое разрешение, при котором все будет работать нормально на всех доступных мне мониторах, однако не факт, что на каком-нибудь другом мониторе косяк не всплывет. Хотелось бы найти универсальное решения. Но я не исключаю, что я чего-то не знаю о CSS. Собственно с HTML и CSS я тоже особо дел не имел, есть только базовые знания.
  • Как правильно скрыть слайдер с помощью jQuery?

    @IvanGeso Автор вопроса
    Спасибо за наводку. Суть проблемы понял, однако не понятно, как ее решить. Можно ли как-нибудь с помощью JS вернуть свойства CSS в изначальное состояние?
    Вот ссылка на исходники: https://yadi.sk/d/IKJjw2nnEKe8Wg
    Заранее благодарен за помощь!
  • Куда пойти учиться на разработчика в Москве?

    @IvanGeso Автор вопроса
    sim3x, вопрос скорее не в кодинге как таковом, а в фундаментальных основах computer science, алгоритмах, архитектуре ПО и т.д. Плюс есть надежда, что это поможет понять, в каком именно узком направлении мне будет интересно дальше двигаться.
  • Куда пойти учиться на разработчика в Москве?

    @IvanGeso Автор вопроса
    Спасибо за совет. А по паттернам и алгоритмам какую-нибудь конкретную книжку посоветуете?

    По поводу опыта выполнения своих работ, есть-то он есть, но я совсем не уверен, что код в этих работах близок к тому, что из себя представляет код профессионалов. Работать-то он работает, но я боюсь, что он больше похож на то, что обычно называют говнокодом)

    На работе значительную часть времени занимает сбор исходных данных для проектов, их обработка и составление математических моделей электрических сетей в специальном софте, который использует геоподложку. Вкратце, сеть моделируется и накладывается на google maps и ты видишь как и где проложены ЛЭП, где расположены подстанции, потребители, задаешь свойства каждого объекта и т.д. Потом на основе этой модели делаются разного рода расчеты. В софтину можно импортировать kml-файл, но если у точек не задать определенных свойств, то они все импортируются как просто точки, а что это именно - опора ЛЭП, подстанция или ТП уже приходится вручную задавать. Чтобы получить валидную модель сети нужно обработать кучу исходных данных, которые каждая организация составляет по-своему. Где-то это kml-файлы (без нужных свойств, естественно), где-то JSON, где-то Excel-таблица с координатами, где-то вордовский документ и т.д. Вручную заносить в модель координаты каждой опоры ЛЭП, каждой ТП или подстанции замучаешься. Поэтому я и писал скрипты, которые автоматизируют этот процесс, создают kml-файл (если это надо) и задают точкам определенные свойства чтобы наша софтина понимала, что есть что. Также писал парсеры для сайтов электросетевых компаний, когда нужно было определенную информацию с них собирать.
  • Как создать учетные записи MySQL из программы Python?

    @IvanGeso Автор вопроса
    В целом идея была следующая: при запуске программы, она запросит у пользователя ввести новый пароль для root, он его вводит, под капотом от введенной строки берется хеш, который и станет новым паролем root. При последующих запусках программы пользователь будет вводить пароль, от которого опять же будет браться хеш и присваиваться в качестве значения ключа 'password' в конфиг-словаре, который используется для подключения к БД. Возможно эта идея бредовая, мои знания пока еще на очень начальном уровне, но решение этой проблемы для меня выглядело именно так. И я смотрел в сторону того, что из программы каким-то образом будет в терминале выполняться команда типа 'mysqladmin -u root password "newpass"'. Но у меня ничего такого не вышло. В случае использования конфиг файла с паролями, что мешает злоумышленнику просто взять его и получить все пароли так же, как если бы они были заданы прямо в коде самой программы?