Лучший
источник https://t.me/tipsysdmin/2257
источник https://t.me/tipsysdmin/2257
Обзор шести самых популярных протоколов API
REST
Webhooks
GraphQL
SOAP
WebSocket
gRPC
источник https://t.me/itmozg/9692
Сбер: теперь можно платить в магазинах улыбкой без карты и телефона!
Моя улыбка:
источник https://t.me/itumor/11544
Всем привет, текста будет много, но поделиться очень хочется.
Встала задача развернуть 1С на сервере, для удалённого доступа, база для архива музея.
Задача от некоммерческой организации денег почти нет нашли только на покупку базы и одной лицензии.
Единственный бесплатный российский дистрибутив это ALT linux server, ведь с 2025 года вступает в силу закон что мы должны использовать наше ПО, а архитектура строиться на года.
Сервер был у меня в загашниках 12 ядер и 32ГБ оперативки вполне хватило, несколько ssd в корзину, поднимаем raid и устанавливаем ALT, качаем 1с устанавливаем платформу распаковываем базу и всё вроде идёт хорошо. Стоит сказать что в комплекте поставки 1с база и платформа под винду, база конечно весь чаще универсальная под любую платформу, но запакована в само распаковывающийся архив *.exe, техподдержка нам не помогла.
Первые проблемы
Ставим nginx поднимаем web server и понимаем что 1С работает только с apache, с nginx при публикации базы появляется надпись web server не найден.
Но не страшно останавливаем службу ставим apache, запускаем его и получаем такое же сообщение.
Начинаем разбираться и видим во первых apache дал имя себе по IPv6 меняем hostname, 1С также продолжает писать что web server не найден, проверяю службу, всё ок. Лезем в логи и видим что 1С ищет папку apache2, а ALT это rpm система и apache тут называется httpd2, курю форумы и минуалы всё описано под debian и подобные deb системы.
Много разных способов и костылей перебрал, но заработало только созданием каталога в папке /etc/apache2 и копирование туда всех файлов из /etc/httpd2 с переименованием httpd2.conf в apach2.conf. После этой операции 1с всё видит и мы можем опубликовать 1с web
Стоит учитывать что созданный для вебморды файл default.vrd имеет права от службы apache и пока не выдадим права (chmod в помощь) будем получать 403 ошибку в браузере.
3 дня работы… но это стоило того!
Процессором в excel уже не удивить, а как вам запуск Gta Vice City на роутере?
Специалисты Kitten Labs как они запустили gta на TP-Link TL-WDR4900 - Wi-Fi роутер построен на базе ЦП NXP/Freescale QorIQ P1014, который представляет собой 32-разрядный процессор PowerPC e500v2 с 36-битным адресным пространством.
Выбор ос пал на Debian Linux, потому что она поддерживает типы процессоров (e500/e500v2)
Для запуска игры они подключили через miniPCIe внешний GPU AMD Radeon RX 570 (потом AMD Radeon HD 7470). При подключение видеокарты и запуска Debian Linux, специалисты столкнулись с незаменимость amdgpu с 32-битной платформой. Хотя более старая HD 7470 заработала.
Но движок рендеринга не заработал из-за особенностей проца. Решение стало перейти на друг ос - новая версия линукса.
Потому что LLVM/clang только что получил поддержку PowerPC SPE, и оказалось, что новую версию Linux можно собрать с помощью clang.
После переустановки игра наконец-то заработала. Хотя странно, почему выбор пал именно на gta, по канону везде запускает doom.
- Может быть проверить контрольную сумму, прежде чем это запускать?
- Да не, и так сойдёт.
Порою возникают ситуации, когда необходимо использовать в скрипте Python IP-адрес используемый активной сетевой картой, которая смотрит в Интернет, узнать MAC-адрес этой карты и имя сетевого соединения. К сожалению, функций из коробки пока что не наблюдается. Есть сторонние модули, которые позволяют узнать MAC-адрес, например getmac, но в качестве параметров в них нужно также передавать или IP-адрес, или имя соединения. Но, что, если их нужно определять программно и вводить вручную не вариант?
Я нашел для себя решение, которое работает, но требует тестирования на большом количестве систем. Хотя, думаю, что на большинстве ОС семейства Windows или Linux оно будет работать.
В данном решении не требуется устанавливать сторонние библиотеки. Необходимо лишь импортировать в скрип те, что нужны для его работы. Выполним их импорт:
Уже очень давно, около 15 лет назад на Stack Overflow был дан ответ по поводу получения «основного», имеющего маршрут по умолчанию, IP-адреса. Как описывает его автор скрипта, он работает под всеми основными ОС: Windows, Linux, OSX. Вот ссылка на данный пост.
Несмотря на то, что скрипту уже довольно много лет, он работает до сих пор. Потому, вместо изобретения велосипеда я использую его, за неимением лучшего. Тем более что он ни разу не давал сбоев. Вот сам скрипт:
Теперь, когда мы определились с тем, каким способом будем получать IP-адрес, приступим к написанию скрипта для получения IPv6-, MAC- адресов, а также имени сетевого интерфейса.
Создадим класс NetInfo,который при инициализации будет получать необходимые данные в зависимости от операционной системы. Здесь мы определяем платформу с помощью модуля system библиотеки platform и в зависимости от этого запускаем тот или иной скрипт.
Двигаемся дальше. Создадим функцию для получения локального IP-адерса и объявим ее статическим методом, так как в ней не используются переменные класса.
Напишем функцию mac_iface_win(self) в которой выполним получение нужных нам параметров. Для этого мы будем использовать возможности командной строки Windows, с частности инструмент командной стоки wmic. В частности будем использовать псевдоним NICCONFIG, который используется для управления сетевыми адаптерами. Отфильтруем только активные сетевые адаптеры. А их может быть в системе несколько, включая виртуальные: IPEnabled=true . После этого получим MAC – и IP – адреса используя GET MACAddress, IPAddress /FORMAT:csv, с указанием вывода полученных значений в формате csv для того, чтобы нам было проще их распарсить.
Вот полный вид данной команды:
wmic NICCONFIG WHERE IPEnabled=true GET MACAddress, IPAddress /FORMAT:csv
После того, как мы получим список активных сетевых адаптеров, поитерируемся по нему в цикле и проверим, есть ли в данном списке адаптер, IP-адрес которого равен полученному ранее локальному адресу. Если есть, забираем MAC-адрес, а также IPv6 адрес, если он не отключен в системе.
После того, как мы получим необходимые данные, выполним команду getmac /FO csv /NH /V с помощью которой получим список сетевых интерфейсов. Также в цикле проитерируемся по нему и будем проверять, есть ли уже полученный MAC-адрес в строке с параметрами интерфейса. Если есть, забираем название сетевого интерфейса.
Если в предыдущей функции мы получили данные для сетевого интерфейса в ОС Windows, то следует также написать аналогичную функцию и для Linux. Поэтому создадим функцию mac_iface_lin(self). В ней кода будет поменьше, так как в командах Linux содержится больше информации в одном месте и ее легче распарсить. Команда, которую мы будем использовать выглядит следующим образом:
ip -h -br a | grep UP
Здесь мы получим название сетевого интерфейса и IPv6-адрес. В Linux данный адрес можно получить, даже если он отключен в настройках адаптера.
После этого выполним похожую команду, но уже отфильтруем из ее вывода MAC-адрес:
ip a | grep ether | gawk '{print $2}'
Осталось только свести написанный код, если вы этого еще не сделали воедино.
Итак, продолжим. Полный код скрипта выглядит следующим образом:
Теперь необходимо протестировать его в операционных системах. В данном случае у меня доступны две системы: Windows 10 и Linux Mint.
Создадим в данном скрипте вызов нашего класса и выведем в терминал полученные параметры:
Для начала, запустим в ОС Windows:
А теперь то же самое в Linux Mint:
Как видим, скрипт справляется со своей работой. Для чего он может пригодиться? Ну, например, для автоматической установки активного сетевого интерфейса по умолчанию в Scapy при прослушивании пакетов с активного сетевого интерфейса. Но о Scapy поговорим немного позже.
Спасибо за внимание. Надеюсь, данная информация будет вам полезна
требуется помощь лиги IT
Делаю небольшую поделку - проект умного дома.
В основе ардуино + одноплатник orangepi zero
на одноплатнике стоит armbian и поднят httl сервер.
на сервере страничка с кодом ajax по таймеру делает запрос через php и соответственно получает ответ. все работает до тех пор, пока есть ответ.
если ответа нет, то на третьем-четвертом запросе сервер наглухо виснет.
запрос делаю так (пробовал все три варианта):
$bufft = fgets($fp,7);
//$bufft = fread($fp,7);
//$bufft = stream_get_line($fp,7); + //stream_set_timeout($fp, 0, 15000);
(где: $filename = "/dev/ttyS1"; //порт $fp = fopen($filename, "w+"); )
Насколько я понимаю, проблема в том, что при отсутствии ответа в буфере /dev/ttyS1 нет вообще ничего, те нет в файле даже символа конца строки (файла). и считывание идет по бесконечному циклу, пока не повесит процесс.
Экспериментально установлено, что при запросе $bufft = fgets($fp,1); , те при попытке считать только первый символ строки ничего не виснет, но возвращается строка из 0 символов. те полностью пустая.
Посоветуйте, как перед считыванием буфера определить, что он пуст (при попытке считывания он стирается) или как считывать пустой буфер/dev/ttyS1 без последующего зависания?