LINUX.ORG.RU

Сообщения ados

 

Наступило светлое будущее!

Вот и дожил я: нет связи с госуслугами, с вконтакте, с двачем и банками, с гитхабом и с сорсфоржем, с хабром, со слэшдотом и с реддитом, с опеннетом, яндекс не работает… про гугл и duckduckgo всякие вообще молчу.

Почему-то работает только LOR только хардкор и википедия. Вот смотрю на это всё великолепие и думаю: а зачем ещё интернет нужен?

ЗЫ ещё работает https://lispcookbook.github.io/cl-cookbook/ почему-то

 ,

ados
()

Посоветуйте смартфон

Чтобы:

  • Можно было достать на рынке в РФ
  • Хорошая поддержка Lineage OS и подобными системами
  • Адекватная цена. Не дороже 3-х средненьких аппаратов.
  • Компактность. Наверно следует оставить надежду, вписывая этот пункт. До сих пор мутит от перехода от старого аппарата с 136x66 на более современные «лопатофоны». Но мало ли, может, нанотехнологии всё же победят?
  • Хорошо если можно было расширять память картой памяти. Но походу с этим придётся распрощаться.

Сейчас реально достать подобное?

 ,

ados
()

SBCL и оффтопик 7

Вот захотелось мне тут, чтобы мой CL-код работал не только на GNU, но ещё и на windows. Очень желательна как можно близкая совместимость, поэтому начал с любимого SBCL. И с этой самой SBCL хуже всего пошло: попробовал разные версии, а результат один: тупо завершение с кодом 5 у 64-битных бинарников, код 57 у 32-битных (винда 64-битная). Больше никаких данных. Не важно: командуешь ему swank поднять или просто запуститься. И, честно, это немного удивило - ведь уже прошли времена когда строка windows пустовала в таблице:

http://sbcl.org/platform-table.html

Удивила и Clozure CL 1.13, хоть и не припомнить когда CCL была замечена в неприязни к оффтопику. Оказалась более разговорчивой:

  (progn (load "c:/Users/bc64/AppData/Roaming/.emacs.d/site-lisp/slime-2.31/swank-loader.lisp" :verbose t) (funcall (read-from-string "swank-loader:init") :from-emacs t) (funcall (read-from-string "swank:start-server") "c:/Users/bc64/AppData/Local/Temp/slime.1068"))

Exception on foreign stack

Exception occurred while executing foreign code
? for help
[3964] Clozure CL kernel debugger: [3964] Clozure CL kernel debugger: [3964] Clozure CL kernel debugger: %rax = 0x000000000038fda0      %r8  = 0x0000000000000080
%rcx = 0xffffffffffffffff      %r9  = 0x000000000038fda0
%rdx = 0x000000000038fcf0      %r10 = 0x000000000038fc60
%rbx = 0x00000000006a88b0      %r11 = 0x00000001300b0000
%rsp = 0x000000000038fc68      %r12 = 0x000000210000bb5d
%rbp = 0x000000000038fcc0      %r13 = 0x000000010009f11f
%rsi = 0x000000000001300b      %r14 = 0x0000000000000058
%rdi = 0x000000014002845e      %r15 = 0x0000000000000000
%rip = 0x00000001300b0000   %rflags = 0x00010202
[3964] Clozure CL kernel debugger: [3964] Clozure CL kernel debugger: 
  register number :
  register number :
  register number :
  register number :
  register number :
  register number :
  register number :
  register number :
  register number :
  register number :
  register number :
  register number :
  value for GPR 6 :
  value for GPR 6 :

Уже чуть успокоило когда без задоринок запустился игрушечный clisp 2.49 и выполнил игрушечный-же код. А потом, чуть разобравшись в настройках slime, удалось запустить и 32-битную ccl со swank-ом. У 64-битной ccl результат остаётся, как описано выше.

Как традиционно заведено на винде все запускаемые бинарники, просто скачаны из интернета.

Остаётся вопрос к опытным лисперам: есть ли жизнь с SBCL на винде?

 common-lisp, , ,

ados
()

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

Есть один 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

Стало у меня больше свободного времени. В такие моменты я как обычно возвращаюсь к идее парсера одного языка разметки. Язык почти как 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 исследует рынок зарплат

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

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

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

 ,

ados
()

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

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

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

 

ados
()

Рунет 2.0

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

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

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

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

 гойда,

ados
()

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

Здравствуйте, мои дорогие любители продукции от 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
()

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

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

 

ados
()

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

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

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

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

 

ados
()

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

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

 

ados
()

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

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

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

 ,

ados
()

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

Нагенерировал я с помощью 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 - это порождение социализма или капитализма?

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

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

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

 ,

ados
()

Data flow programming

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

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

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

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

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

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

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

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

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

 

ados
()

Кривой pcapy-ng

Из доков к 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

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

 ,

ados
()

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

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

 

ados
()

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

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

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

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

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

 ,

ados
()

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