LINUX.ORG.RU

Сообщения ados

 

Python скрипты с единой конфигурацией

Форум — Development

Есть один python-проект для общения с сервисом в сети. Интерфейс выполнен в виде набора скриптов, причём одни скрипты используют разный набор модулей в проекте, т.е. одному скрипту нужен модуль для работы с БД и с сетью, другому просто покопаться в БД. Для настройки всего этого использую один файл настроек. При этом пытаюсь сделать чтобы все эти модули настраивались одной и той же процедурой:

    .
    ├── config.py
    ├── config.ini
    ├── script.py
    ├── db_module
    │   ├── __init__.py
    │   ├── config.py
    │   └── db_api.py
    └── rpc_module
        ├── __init__.py
        ├── config.py
        └── fetch.py
#!/usr/bin/env python3

from pprint import pprint

from rpc_module.fetch import fetch_some
import config


config.configure(config_file = "init.ini")

pprint(fetch_some())

Может конечно config в корне загрузить config каждого модуля, каждый из которых настроит переменные в коде каждого модуля, но таким образом загрузится почти весь код всех модулей, что далеко не каждому скрипту нужно. Пока решил, что init.py каждого модуля добавляет процедуру настройки в список из корневого config.py, а единая процедура просто запускает все процедуры в этом списке:

## __init__.py
from ..config import __configurators
from .config import configure

__configurators.append(configure)
## config.py
from collections import deque
from configparser import ConfigParser

__configurators = deque()


def read (f = "config.ini"):
    c = ConfigParser()
    c.read(f)
    return c

def configure (config_file = None):
    if config_file is None:
        config = read()
    else:
        config = read(config_file)
    for configurator in __configurators:
        configurator(config)

Получаю:

ImportError: attempted relative import beyond top-level package

Гугл подсказывает как обойти это хаком с sys.path, но может есть другие решения?

 

ados
()

Нужен совет как сделать ML

Форум — Development

Стало у меня больше свободного времени. В такие моменты я как обычно возвращаюсь к идее парсера одного языка разметки. Язык почти как xml, практически можно сказать что спецсимволы ‘<’, ‘>’, ‘/’ заменены на другие. Тексты на языке очень похожи на тексты исходников для вёрски в LaTeX.

Задуманный парсер ограниченее LaTeX - вся разметка языка на конструкциях вида \markA, \markB{argument}, \markC[optional argument]{arg}. Всё остальное употребляется как обычный текст.

Вот нужен совет как определить чтение этих конструкций, хотя бы в виде regexp’а вроде «\[a-zA-Z]+». Как и TeX парсер должен быть ориентирован на человеческие тексты, а значит знаки препинания из тела конструкции вылетают. Также парсер должен работать с исходниками для TeX/LaTeX, который расчитан на математические выражения - плюсы, минусы + спецсимволы для TeX ‘_’, ‘^’, ‘$’ и прочее под ограничением. Забавно, но эксперименты с pdflatex наталкивают на ещё большую ограниченость парсинга по сравнению с TeX - его \def вполне может включать в тело конструкций практически все выше перечисленное. Ладно мне такой парсер гораздо труднее реализовать, главное - нужно ли это? Получается парсер не рассчитан на подобные TeX-хаки.

Как посоветуйте определять конструкции? Хочется ведь прилично именовать разметку без всяких \MyNewSuperPuperGiperMegaTag.

PS. По сути проблема - как делать многословные идентификаторы в языке типа «go-forward» или «go_forward» когда практически все символы с клавиатуры под ограничением, кроме алфавита и символа «@» (привет от команды \makeatletter)? К проблеме можно подойти философски - имеется диалектическое противоречие 2-х процессов: с одной стороны у нас обработка текстов материальными машинами с ПО подобным TeX и ограничениями как у TeX, с другой - процесс работы с текстами используя материальную клавиатуру со всеми известным ограничением на набор символов (почему бы не дать языку возможность быть массово используемым?). И, вроде бы, \def TeX-а позволяет обходить принятый в сообществе LaTeX стиль разметки - как показывают эксперименты с pdflatex, подобные хаки работают весьма нестабильно. Да и вопрос - зачем они нужны при использовании самого LaTeX. Из этого всего выводится очевидное - использовать смену регистра вроде \goForward.

 ,

ados
()

Профсоюз работников IT исследует рынок зарплат

Форум — Talks

Обещают поделиться результатами исследования.

Сайт профсоюза: https://ruitunion.org/

UPD: В общем товарищи решили что собрали достаточно данных и форму закрыли.

 ,

ados
()

Проигрывание презентации с аудиофайлом

Форум — Multimedia

Вот есть задача создать обучающий материал - в едином файле проигрывается презентация с речью лектора в аудиодорожке. На ум приходит преобразование листов презентации в растровые изображения и скармливание их ffmpeg с речью в аудиофайле. Видео получается довольно простое - презентации я делаю обычно в latex с beamer’ом, никакой анимации да и зачем она с моими задачами. Минус незначительный - после pdflatex получаем векторный pdf, а после ffmpeg у нас растровые изображения. Зато причаститься к знанию можно с любого устройства и интегрировать в материал какое-нибудь видео по теме.

Может накинет кто решения получше?

 

ados
()

Рунет 2.0

Форум — Talks

В России до конца года будет запущен пилотный проект защищенного интернета, который будет доступен только гражданам страны по персональному идентификатору. В этой cети будут доступны только безопасные, проверенные сервисы, владельцы которых исполняют все требования действующего законодательства. Эксперты отмечают, что вся необходимая для защиты граждан от опасного контента инфраструктура в РФ уже построена.

Пользователю нужно будет зарегистрироваться по паспорту, получить личный идентификатор – и далее из любой точки мира можно будет войти в «защищенную часть интернета». Благодаря этому спецслужбы смогут легко «найти того, кто владеет этим аккаунтом». При этом депутат отметил, что незащищенный интернет тоже сохранится, но там ответственность за свои персональные данные и иные аспекты безопасности будут нести сами пользователи.

«Главной целью является обеспечение безопасности граждан. Обеспечение сохранности их персональных данных, защита от спам-рассылок, от мошенничества, от сайтов, которые называются фишинговыми, т. е. воруют денежные средства путем подмены получателя или дублирования страниц популярных сайтов»

https://www.vedomosti.ru/technologies/industries_and_markets/articles/2023/06/14/980324-runet-2-0

 гойда,

ados
()

Женщину конкретно засунули. Автомат? Не, не слышали.

Форум — Talks

Здравствуйте, мои дорогие любители продукции от Apple, роботизации, прочих современных технологий и эффективных инвестиций.

Apple и Foxcoon смогли пролоббировать в Индии новый закон, разрешающий женщинам брать 12-часовые и ночные смены. Об этом пишет Gadget Tendency.

Закон будет действовать в штате Карнатака, где Foxconn собирается построить завод по производству iPhone. Согласно документу, максимальная продолжительность рабочей недели в штате будет ограничена 48 часами. При этом допустимое количество сверхурочных часов, которые можно взять в течение трёх месяцев, вырастет с 75-ти до 145-ти.

Как и прежде корпорация Apple на деле демонстрирует уровень рыночного флагмана, который служит примером всему человечеству.

https://snob.ru/news/apple-dobilas-razresheniya-na-12-chasovye-smeny-dlya-zhenshin-v-indii/

https://timesofindia.indiatimes.com/business/india-business/12-hour-shifts-night-time-work-for-women-apple-foxconn-pushed-for-labour-reforms-to-advance-indian-production-plans/articleshow/98544594.cms

 , ,

ados
()

Программировать снизу вверх или сверху вниз?

Форум — Development

Как лучше накладывать абстракции?

 

ados
()

Изменения трудового кодекса

Форум — Talks

В думу тут законопроект вносят. https://sozd.duma.gov.ru/bill/155718-8

Сразу непонятно, что проект делает. Зато добавляется куча затуманивающих «либо», «а также» и прочие «в случаях, предусмотренных настоящим Кодексом». В пояснительной записке, понятно, «всё для фронта, всё для победы», но для каких-то абстрактных антитеррористических операций - вполне и без замеса на Украине может работать. Да и всё равно эта записка никакой законной силы иметь не будет.

Но вот одни знакомые мне подсказывают, если со всеми этими изменениями ТК собрать и вкурить, то получается что по левой пятке правительства на любом предприятии (на оборонку чёткого указания нет) рабочий легко может быть обязан работать подряд вторую смену, без обязательного минимального временного периода после предупреждения о смене графика, отменив свой отпуск, без компенсаций за отменённый отпуск, без каких-то доплат за переработку, без всякого согласия самого рабочего и всё вот это совершенно законно.

 

ados
()

Китаец забористый

Форум — Linux-hardware

Как-то давно в интернете писалось, что если матёрому линуксоиду стало скучно на своей хорошо работающей системе, то лучше пойти на базар и взять железку о которой в интернете почти ничего неизвестно - с ней должно стать веселее. Так вот выкопал аппарат, правда, не совсем на базаре, но не суть - Digma EVE 100. Вроде запускается, но экран чёрный и ничего не происходит. Сказали, что там должен запуститься оффтопик, но даже systemrescuecd на моей usb-флешке не помогает. Гугл подсказал с boot menu по клавише F7 - не помогло. Вскрыл корпус, чтобы выдернуть нечто похожее на жёсткий диск с виндой и не нашёл что выдёргивать, оффтоп походу встроен в материнку. Удивило, что вся материнка занимает 1/4 площади всего лаптопа.

 

ados
()

Посоветуйте мощную банку

Форум — Linux-hardware

Собираюсь в лес уходить и чтобы читать труды Маркса, Энгельса и прочих в электронном виде вбрасывать на ЛОРе оставаться на связи решил раздобыть сабж. Ориентируюсь на заряд 20-30 Ач. Есть ли здесь с опытом использования подобных устройств? Каких производителей можете посоветовать?

Вопрос - если у меня для такой банки блок питания с током выхода 2.1 А и у банки на входе с тем же напряжением заявлено 3 А то при заряде банки блок питание сгорит?

 ,

ados
()

Импорт транслированных proto

Форум — Development

Нагенерировал я с помощью python -m grpc_tools.protoc код в директорию lib и получается, что не могу этот код импортировать извне директории lib:

    import common_pb2 as common__pb2
ModuleNotFoundError: No module named 'common_pb2'

Знаю решение поменять import common_pb2 на from . import common_pb2, но в сгенерированном файле указано:

# Generated by the protocol buffer compiler.  DO NOT EDIT!

Есть ли более правильное решение?

 ,

ados
()

Linux - это порождение социализма или капитализма?

Форум — Talks

Навеяно https://www.linux.org.ru/forum/talks/16791212

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

Но всё же уж очень сильно от GPL веет отказом от частной собственности. Может из-за такого социалистического зерна Linux так туго осваивается на рынке (или осваивается рынком).

 ,

ados
()

Data flow programming

Форум — Development

Что-то мне приснилось на днях и подумал я запилить на коленке библиотеку для сабжа.

Основа системы - объект типа модель, который включает в себя ячейки с данными. Между ячейками есть связи, которые описываются наподобии:

(A, B, C) -> (X, Y)

и далее описывается код расчёта данных для ячеек в X и Y в зависимости от данных в ячейках A, B, С. При изменении данных отдельных ячеек в модели на основании вышеописаннх связей какие-то ячейки надо пересчитать, а какие-то нет (отображения функциональны). Называть этот процесс будем обновлением модели. Задача - определить данные каких именно ячеек нужно пересчитать и какой оптимальной последовательностью вычислений это сделать. Подобная задача решается такими программами как система сборки make и менеджерами пакетов. Здесь особенность в том, что основа ячейки - переменные в памяти программы.

Возникли следующие идеи:

Во-первых это понятие представления. Представление состоит из отдельных видов. Это чем-то похоже на модель с ячейками, но виды - это не области памяти, а порты в которые данные выводятся и уже не возвращаются (наподобие стандартных потоков, сокетов). Представление привязано к определённому типу моделей, а данные для видов зависят от данных в ячейках модели наподобие как зависят данные в ячейках между собой. Может в отдельном представлении могут быть переменные, но они уже не зависят от данных модели.

У одного объекта типа модели может быть несколько представлений причём как разных типов так и схожих. Поэтому адрес на объект модели должен быть содержаться в составе объекта представления - без отношения наследования из ООП не смотря на привязанность типа представления к типу модели.

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

Может ещё есть алгоритмы совершеннее вышеописанных идей? Какие алгоритмы полезно изучить для реализации такого?

 

ados
()

Кривой pcapy-ng

Форум — Development

Из доков к pcapy:

int dispatch (	maxcant, 	 
 	(* callback));	 
int maxcant ;
void (* callback) (Pkthdr, string) ;

callback specifies a routine to be called with two arguments: a Pkthdr instance describing the data passed and the data itself.

На деле функции никакие аргументы не передаются:

In [238]: import pcapy

In [239]: reader = pcapy.open_offline(my_pcap_file)

In [240]: reader.dispatch(-1, lambda hdr, data: print(hdr.caplen()))
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
TypeError: <lambda>() missing 2 required positional arguments: 'hdr' and 'data'

The above exception was the direct cause of the following exception:

SystemError                               Traceback (most recent call last)
<ipython-input-240-c10b6d091522> in <module>
----> 1 reader.dispatch(-1, lambda hdr, data: print(hdr.caplen()))

SystemError: <built-in method dispatch of Reader object at 0x7fad32317a90> returned a result with an exception set

Очевидно, что ошибка где-то здесь: https://github.com/stamparm/pcapy-ng/blob/master/pcapobj.cc

т.к. в CL у которого plokami:capture поверх того же pcap_dispatch всё работает на ура:

CL-USER> (block b
           (plokami:with-pcap-reader (reader *my-pcap-file*)
             (plokami:set-filter reader "udp")
             (plokami:capture reader -1
                              (lambda (sec usec caplen len buffer)
                                (declare (ignore sec usec buffer))
                                (when (/= caplen len)
                                  (return-from b nil))
                                (format t "Packet length: ~A bytes, on the wire: ~A bytes~%"
                                        caplen len))))
           t)
Packet length: 76 bytes, on the wire: 76 bytes
Packet length: 76 bytes, on the wire: 76 bytes
Packet length: 92 bytes, on the wire: 92 bytes
Packet length: 135 bytes, on the wire: 135 bytes
Packet length: 76 bytes, on the wire: 76 bytes
Packet length: 92 bytes, on the wire: 92 bytes
Packet length: 74 bytes, on the wire: 74 bytes
Packet length: 74 bytes, on the wire: 74 bytes
Packet length: 173 bytes, on the wire: 173 bytes
Packet length: 197 bytes, on the wire: 197 bytes
Packet length: 84 bytes, on the wire: 84 bytes
Packet length: 84 bytes, on the wire: 84 bytes
Packet length: 144 bytes, on the wire: 144 bytes
Packet length: 156 bytes, on the wire: 156 bytes
Packet length: 76 bytes, on the wire: 76 bytes
Packet length: 92 bytes, on the wire: 92 bytes
Packet length: 79 bytes, on the wire: 79 bytes
Packet length: 79 bytes, on the wire: 79 bytes
Packet length: 95 bytes, on the wire: 95 bytes
Packet length: 107 bytes, on the wire: 107 bytes
Packet length: 72 bytes, on the wire: 72 bytes
Packet length: 72 bytes, on the wire: 72 bytes
Packet length: 152 bytes, on the wire: 152 bytes
Packet length: 100 bytes, on the wire: 100 bytes
Packet length: 76 bytes, on the wire: 76 bytes
Packet length: 92 bytes, on the wire: 92 bytes
T

 ,

ados
()

Слежение за дырявым Xorg

Форум — Desktop

Недавно открыл для себя утилиту lsof, с помощью которой можно проследить чтобы какой-нибудь google-chrome не лазил в какие не следует файлы. Есть ли что-то подобное для подглядывающих в буфер обмена или делающих скриншоты в иксах?

 ,

ados
()

Вкатиться в трудовую теорию стоимости

Форум — Talks

Что есть такое почитать кроме капитала Маркса?

 

ados
()

Где достать образцовые ноты?

Форум — Multimedia

Как-то досталась мне акустическая гитара и я понемногу учусь играть. Всякая элементарщина на 2-3 струнах вроде получается, но я мечтаю научиться воспроизводить на слух.

Для этого набросал простенький скрипт, проигрывающий случайные ноты, и которые нужно отгадать. За образец нот скрипт, а точнее вызываемый им mpv, проигрывает аудиозаписи вышеупомянутой гитары.

Но вот теперь мне бы хотелось приобщаться к стандартам и, желательно, чтобы образцовые ноты проигрывались разными инструментами. Проблема в том что вне интернета мне посоветоваться не с кем - в моём окружении практически нет музыкантов. И не факт что гитара как надо настроена - спектры, полученные с программного спектрометра и микрофона android-смартфона, с несколькими пиками на 3-4 октавы определённость вносят плохо. В интернете пока нашёл это https://www.youtube.com/watch?v=Nr2Zh2um5SM - спектры ещё хуже, не говоря о комментариях к видео.

Где лучше всего достать образцовые ноты? И может ли GNU/Linux как-то их синтезировать?

 ,

ados
()

Arch -> NixOs для скриптомакаки

Форум — Development

Думаю переделать ноутбук для разработки. Разные браузеры, python, базы данных и прочие инструменты. Сходу приходит вариант накатить привычный arch, но вот задумываюсь об альтернативах. NixOs привлекает возможностью поставить интерпретатор определённой версии.

Насколько хорошо репозитории пакетов NixOs покрывают потребности? Часто ли нужно руками чинить при обновлениях и работе?

PS: ноут уже не новый и CPU (intel i3) довольно слабоват.

 , ,

ados
()

Мошенники на ведроиде

Форум — Mobile
УМВД России по Зажопинской области ПРЕДУПРЕЖДАЕТ

ОСТОРОЖНО
ЭТО МОШЕННИКИ,
если ПРОСЯТ:
...
+ РЕКВИЗИТЫ КАРТЫ
+ CVC код или код из СМС сообщеения
...
ТЕБЯ ДОЛЖНО НАСТОРОЖИТЬ!
Сомневаешся,
ПОЗВОНИ
РОДСТВЕННИКАМ,
В ПОЛИЦИЮ 112, 02,
В БАНК

Если я правильно понимаю цитату, под категорию «МОШЕННИКИ» подпадает куча приложений на андроид - приложение от РЖД, например. Ладно там просят номер карты банковской - понять можно, но ещё ведь требуют и CVC. Стоит ли оформлять заяву в полицию? Кто-нибудь уже пробовал?

 ,

ados
()

У кого-нибудь получалось собрать d2x-xl под онтопик?

Форум — Games

Сабж вот отсюда https://www.descent2.de/index.html ?

 

ados
()

RSS подписка на новые темы