LINUX.ORG.RU

Избранные сообщения yars068

DOS Navigator портирован на Linux

 , , , turbo vision,

Группа Open Source

Разработчик @unxed, неоднократно предпринимавший попытки запустить двухпанельный файловый менеджер DOS Navigator под Linux, добился, наконец, успеха. Для решения проблемы лицензионной чистоты встроенная модифицированная библиотека Turbo Vision для Паскаля, никогда не публиковавшаяся под открытой лицензией, была заменена на рерайт современного форка доступной легально C++-версии, с переходом на UTF-8 и современную классовую архитектуру взамен характерной для TV, но практически не применяющейся сегодня, объектной.

Заявлена работоспособность базовых функций, таких как навигация по панелям и копирование файлов.

( читать дальше... )

>>> DOS Navigator 1.20 (github.com)

unxed
()

Как правильно запаковать проект?

 , ,

Некоторое время назад приходил сюда просить для своего проекта дампы dmidecode с реального железа. Спустя почти год проект прошёл путь от 0.1 до 0.5.1 и превратился из простого аналога dmidecode во что-то большее:

  • Имеет в базе движок на C, который предоставляет прямой доступ к типизированным данным по полям, причём кодеки в движке описываются декларативно
  • Декодирует гораздо больше структур, чем описано в спецификации, и даже гораздо больше, чем dmidecode. Многое пришлось реверс-инжинирить руками, зато теперь декодируются даже таблицы Intel vPro, FVI, AMT, MEI, SVT и так далее - даже если они перенесены на другие ID
  • Умеет определять таблицы не только по коду, но и по сигнатурам, есть платформно-зависимые модули (Acer, Dell, HP, Lenovo, AMI и так далее), auto-probing и т.п.
  • Умеет в string properties у таблиц, vendor-specific релокацию ID типов таблиц и даже бинарные оверлеи (additional information из SMBIOS specification)
  • Умеет проверять дампы своим линтером с кучей правил
  • Умеет экспортировать дампы в XML, JSON и YAML и даже анонимизировать их при сохранении
  • Имеет большой задел под компилятор прошивок SMBIOS (из YAML, JSON или XML), который может пригодиться OEM
  • Работает на Linux, FreeBSD, NetBSD, macOS и Windows

Ну и сайт и документацию как на библиотеку, так и на CLI наконец сделал. В ближайших релизах после некоторой стабилизации хочу прикрутить нативное API для C++, модуль ядра, который бы вытаскивал всё это добро на SysFS для удобства использования из скриптов, потом - API для Python, Go и Rust.

Собственно, вопрос: сейчас это всё собирается CMake с исходников на GitHub. Как лучше сделать пакеты для Linux, чтобы это можно было устанавливать без плясок с бубном, куда их лучше класть (в стандартные репы фиг прорвёшься) и вообще чего ещё хотелось бы от user experience такой штуки? Как лучше проводить тестирование, т.к. очевидно, что у реальных пользователей будут вылезать баги, где их брать в мире open-source?

Простите, если вопрос тупой, за 27 лет опыта ни разу не приходилось заниматься размещением бинарей в публичных репозиториях, это вообще мой первый крупный open-source проект и я нахожусь по этому поводу в лёгком ступоре.

Собственно, вот: https://opendmi.org/

Заранее спасибо!

Перемещено hobbit из general

sdnvx
()

Debian Trixie без systemd

 , , , ,

Лет 10 назад Дебиан «перешёл на systemd», по каковому поводу в сообществе возникло много споров, которые не смолкают и поныне. Появившийся в те годы дистрибутив Devuan, который во всём похож на Дебиан, кроме того, что отвязан от systemd, продолжает обновляться следом за Дебианом.

Лет 5 назад Дебиан «перешёл на Wayland» — такая же история, с тем отличием, что поддержка X11 была сохранена и форка не возникло.

Никогда не видел смысла в использовании Wayland или systemd. X11 и sysvinit работали десятилетиями, претензии к ним сомнительны. Кажется, единственным заметным для пользователя преимуществом systemd является распараллеливание запуска служб, благодаря чему ускоряется загрузка, но это преимущество сходит на нет, когда загрузка происходит не чаще раза в неделю. В реализации X11 якобы накоплены какие-то костыли, но почему это должно заботить пользователя — решительно непонятно (с другой стороны, пользователя заботит отсутствие аналога ssh -X в Wayland, а также, по слухам, проблемы с трансляцией экрана и отваливание случайных функций случайных приложений.

( читать дальше... )

ringill
()

Цифровой рубль

 utf

С 1 сентября вводится в обращение цифровой рубль © (rbc.ru),
изображение коего в кружочке, (ненавистном некоторыми модераторами ЛОРа :) ) есть © (cbr.ru),
а кода UTF нету… И как таперича его обозначать ≠ ₽ графически?

quickquest
()

Отступы или скобочки? - Да!

 , , , ,

Конвертер синтаксиса, который заканчивает главный холивар

«Может, в следующий раз вы посмотрите дважды - и не станете судить о книге по обложке» - Зекора

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

( читать дальше... )

wirewalk
()

Безопасность связки ключей и хранение паролей в Linux-ах...

 gnome-keyring-daemon, ,

Впервые задумался об этом, но ведь пароли у многого прикладного ПО лежат в seahorse и его аналогах которые под капотом используют gnome-keyring-daemon и его аналоги в других DE. После того как юзер включает браузер/pgadmin или какой-то другой софт, который хранит там пароли, то всё хранилище ключей становится доступным любому процессу, работающему от пользователя через dbus. Таким образом, простейший скрипт, запущенный от юзера спокойно прочитает и расшифрует любые ключи. Например, для хромого можно штатными средствами вытащить мастер ключ (чтоб не городить огорода с dbus и убедиться что это правда, можно воспользоваться готовым софтом из репы, например secret-tool lookup application chrome). Вернётся мастер ключ, которым хром уже шифрует свои ключи… Зная алгоритм и секретный ключ которым хромой расшифровывает свои ключи, можно их легко вытащить. Т.е. любой вредоносный код, имея только права пользователя спокойно уведёт все ключи у всего прикладного софта в тот момент, когда пользователь разблокирует связку ключей для любой программы. Всё это напомнило мне театр безопасности и дыру невероятных масштабов. Есть ли какие-то способы бороться с этим ужасом? Кроме как не хранить вообще никаких паролей в софте на Linux.

peregrine
()

Форк Midnight Commander c поддержкой панельных плагинов

 , , , ,

https://www.opennet.ru/opennews/art.shtml?num=66018.

Выпущен консольный файловый менеджер Midnight Commander 6.0.3 (mc6), представляющий собой форк GNU Midnight Commander 4.8.33, расширенный поддержкой панельных плагинов и поставляемый со встроенным PTY-терминалом mcterm. Интегрированный в mc6 фреймворк панельных плагинов позволяет отображать в панелях не только файловые системы, но и контейнеры, Git-репозитории, базы данных и объекты удалённых хранилищ. Код проекта написан на языке Си и распространяется под лицензией GPLv3+. Готовые пакеты подготовлены для Debian и Ubuntu, Fedora и RHEL, а также Arch Linux в форматах DEB, RPM и pkg.tar.zst. Для Gentoo дополнительно предоставлен ebuild для установки через локальный overlay.

В состав выпуска вошли плагины для работы с архивами, FTP/SFTP/FTPS, Samba, Git, Docker, Kubernetes, MongoDB и S3-совместимыми хранилищами. Плагины поддерживают стандартные файловые операции, а переработанная поддержка архивов на базе libarchive заметно (в десятки или сотни раз) ускоряет обработку больших архивов.

Во встроенный текстовый редактор mcedit добавлены возможность сворачивания блоков кода, браузер истории Undo/Redo, средства управление макросами и поддержка сохранения файлов через sudo. В разы улучшена производительность при работе с очень длинными строками.

Просмотрщик mcview получил древовидное представление JSON, YAML и XML, интерактивную фильтрацию содержимого, базовую поддержку отображения разметки Markdown и режим воспроизведения файлов с ANSI-последовательностями.

В состав включён встроенный PTY-терминал mcterm с собственным эмулятором терминала, предназначенный для замены традиционного subshell-механизма.

dataman
()

Ограничиваем сертификат Минцифры

 , ,

Сейчас многие российские сайты, в первую очередь сайты банков, перешли (не по своей воле, но тем не менее) на использование УЦ, которые контролируются Правительством Российской Федерации. Корневые сертификаты этих УЦ (в просторечье - «сертификаты Минцифры»), как правило, по умолчанию не включаются в списки доверенных стандартными иностранными ОС и браузерами. Что будет, если мы их туда включим?

( читать дальше... )

Lrrr
()

Краткий обзор ряда консольных hex редакторов

 

Ну и на десерт: ещё есть hexdumper под названием hex, ориганал которого был написан в 1983-ем году. И он тоже дампит не только ASCII: http://saahriktu.org/hex/hex.png .

saahriktu
()

Небольшая панелька для LOR

 , , ,

Так как мне надоело вручную жонглировать десятками вкладок ЛОРа и запоминать, где я что читал, вручную перематывать вверх-вниз - пришлось сделать такую панельку.

https://ns.fiber-gate.ru/uploads/images/img_1778830448139_d366e4cd.png

Вот она, справа. Подстраивается автоматически под выбранную тему:

https://ns.fiber-gate.ru/uploads/images/img_1778830555340_a770df86.png

https://ns.fiber-gate.ru/uploads/images/img_1778830658445_22500337.png

Правда, подстройку под темы тестировал не очень тщательно.

Все возможности подробно описаны в настройках, во вкладке «Справка»:

https://ns.fiber-gate.ru/uploads/images/img_1778926219370_df3bc737.png

Что умеет панель

Навигация:

▲ и ▼ - перемотка в начало и в конец страницы

💬 - переход к своему последнему комментарию

📢 - переход к последнему комментарию, где вас упомянули

Быстрый доступ к разделам:

📋 Форум и ☰ Трекер: левый клик открывает раздел, правый клик показывает текущие темы с подсветкой изменений и количеством новых комментариев

🔔 Уведомления: левый клик - страница уведомлений, правый клик - модальное окно со списком, на кнопке отображается счётчик непрочитанных

Новые кнопки:

🚫 Чёрный список - добавьте ники авторов, чьи новости больше не хотите видеть. Мини-новости тоже проверяются через загрузку полной страницы

💾 Сохранённые - правый клик сохраняет текущую тему (запоминается позиция скролла и количество комментариев), левый клик открывает список сохранённого с проверкой новых сообщений. Повторный правый клик по кнопке в сохранённой теме обновляет информацию о ней. Автоматически ничего не сбрасывается - всё под вашим контролем. При первом заходе на сохранённую страницу позиция скролла восстанавливается автоматически

Прочее:

Бесконечная лента новостей с авто-подгрузкой при прокрутке

Все данные хранятся в localStorage вашего браузера

Настройки панели (открываются при ПКМ на кнопку профиля): масштаб, видимость рамки, выборочное отключение кнопок

Код буду дорабатывать, обновления здесь: https://github.com/Vladgobelen/NSLorPanel/

Это скрипт для расширения Violentmonkey (или аналогичных - Greasemonkey, Tampermonkey (но не тестировал)).

Основная панель: NSLorPanel.user.js

Дополнение для обработки черного списка авторов: NSLorNewsFilter.user.js

Так же есть настройки: можно выбрать что игнорировать от ника - новости, его сообщения или овтеты на его сообщения.

Модификация для редактора теста. Вставляется отдельным скриптом. Требует для настроек основную панель, но может работать и без нее: NSLorPanel-MarkdownToolbar.user.js

Модификация для подсветки модераторов. Вставляется отдельным скриптом, ищет основную панель, если находит - подхватывает настроки, если основной панели нет - работает без нее безусловно: NSLorModHighlighter.user.js

Поиск по теме в комментариях, плюс изменение кнопок «Мои сообщения» и «Упоминания» - при ПКМ можно искать по другим юзерам (может работать без основной панели): NSLorNavPlus.user.js

ОТДЕЛЬНО сортировка таблиц вне панели, если не нужна панель. Если используеся панель, этот скрипт не нужен: lor-table-sorting.user.js


Исправление блэк темы для смартфонов: lor-black-mobile-fix.user.js


Звуки при уведомлениях: https://github.com/Vladgobelen/NSLorPanel/blob/main/NSLorSound.user.js

Если лениво искать звуки, есть готовые: https://github.com/Vladgobelen/NSLorPanel/raw/refs/heads/main/lorSounds.zip


Свайп галерении мышкой: https://github.com/Vladgobelen/NSLorPanel/blob/main/NSLorGallerySwipe.user.js

С этим скриптом перетягивание картинки влево вправо листает галерею. Даблклик по картинке откроет ее.


Пишите чего если кому нужно еще добавить исправить - добавлю и исправлю, мне не жалко.

Перемещено maxcom из talks

LightDiver
()

Настраиваем Asterisk на собственном VPS для голосовых/видео вызовов и текстовых сообщений

 , ,

Ниже — руководство + полный установочный скрипт для Debian 12, собирающий Asterisk 22.5.1 из исходников, включающий TLS + SRTP, 3 абонента (1001–1003), блокировку анонимов, короткие сообщения (SIP MESSAGE) для Linphone, и видеозвонки по H.264.

Скрипт автоматически учитывает NAT: если задать локальную сеть — пропишет external_* и local_net; если не задавать — считает, что сервер не за NAT.

( читать дальше... )

unclestephen
()

Документация к языкам программирования

 , , , ,

Всевозможные учебники и книги - это хорошо, но обычно их предлагают купить и часто не совсем дёшево, даже если они описывают базовый уровень. Бесплатным решением, очевидно, является официальная документация. Когда я открыл документацию к python, я был приятно удивлён, что она написана практически как учебник. Для Java вроде бы тоже всё относительно неплохо в этом плане, хотя хотелось бы отдельный оффлайновый pdf.

Мне захотелось скачать себе документацию в подобном виде для C и C++. Зашёл на их официальные сайты, там описание стандарта предлагают получить на сайте ISO за немалые суммы денег. Да и само описание стандарта далеко не для обучения. Хорошо, подумал я, попробую тогда посмотреть документацию к одной из реализаций языка - GCC-CPP, и вижу, что описанное там тоже вовсе не подходит для обучения. Даже описания типов и примеров объявления нет (может плохо искал, но в заголовках не заметил).

Нет, это не тред «подскажите книгу по Сям», таких для начинающих я и сам могу гору насоветовать.

Вопрос следующий: существует ли нормальная доступная бесплатная документация по которой можно изучать C, C++? Официальная документация по другим языкам была бы тоже интересна.


Update

C, C++
Online-ресурсы и учебные пособия для начинающих:

Как дополнение: Рабочая версия стандарта C++14 от 19 ноября 2014 г. (с официального сайта стандарта)


Fortran


Python
В дополнение к официальной документации (и переводу руководства Python 3.1):


Object Pascal. Lazarus

Перемещено Klymedy из talks

grem
()

Предварительный этап в Makefile

 ,

Приветствую.

Есть следующая структура каталогов:

.
├── interrupts
│   ├── handlers
│   │   ├── file.a65
│   │   └── Makefile // Вложенный
│   └── Makefile // Вложенный
├── defines.mk
├── common.mk
└── Makefile // Корневой

В первую очередь, файл defines.mk:

PROJECT_NAME = xxx

PROG_AS ?= ca65
PROG_LD ?= ld65
PROG_DOX ?= doxygen
PROG_RM ?= rm -f
PROG_MV ?= mv -f
PROG_MKDIR ?= mkdir -p
PROG_FIND ?= find
PROG_MAKE ?= make

DIR_BUILD ?= build

Файл common.mk

TARGET_SUBMAKE = $(shell \
	$(PROG_FIND) \
	. \
	-mindepth 2 \
	-type f \
	-name Makefile \
	-printf '%h\n' \
)

TARGET_SRC = $(shell \
	$(PROG_FIND) \
	. \
	-maxdepth 1 \
	-type f \
	-name '*.a65' \
	-printf '%f\n' \
)

TARGET_OBJ = $(patsubst \
	%.a65, \
	$(DIR_BUILD)/$(PROJECT_NAME)/%.o, \
	$(TARGET_SRC) \
)

.PHONY: all $(PROJECT_NAME) $(TARGET_SUBMAKE)

$(DIR_BUILD)/$(PROJECT_NAME)/%.o : %.a65
	$(PROG_MKDIR) \
	    $(DIR_BUILD)/$(PROJECT_NAME)
	$(PROG_AS) \
	    -o $@ \
	    $<

$(TARGET_SUBMAKE):
	$(PROG_MAKE) \
	    -C $@ \
	    MAKEFILE_DEF=$(MAKEFILE_DEF) \
	    MAKEFILE_COMMON=$(MAKEFILE_COMMON) \
	    DIR_BUILD=$(DIR_BUILD)

$(PROJECT_NAME): $(TARGET_SUBMAKE) $(TARGET_OBJ)

all: $(PROJECT_NAME)

Корневой Makefile

MAKEFILE_DEF    := $(CURDIR)/defines.mk
MAKEFILE_COMMON := $(CURDIR)/common.mk

include $(MAKEFILE_DEF)
include $(MAKEFILE_COMMON)

.PHONY: doc clean

all: doc

doc:
	$(PROG_DOX) Doxygen

clean:
	$(PROG_RM) $(DIR_BUILD)/$(PROJECT)/*.o

Вложенные Makefile (все одинаковые)

include $(MAKEFILE_DEF)
include $(MAKEFILE_COMMON)

Итак, в чём вопросы:

1

Оно сейчас работает. Но меня не устраивает, что оно на каждый файл вызывает создание целевого каталога (см.

$(DIR_BUILD)/$(PROJECT_NAME)/%.o : %.a65
	$(PROG_MKDIR) \
	    $(DIR_BUILD)/$(PROJECT_NAME)
	...

). Что я пытался сделать: а) Вынести mkdir в отдельный сегмент и вызывать как $(DIR_BUILD)/$(PROJECT_NAME)/%.o : %.a65 | build-dir
б) Вынести mkdir в отдельный сегмент и вызывать тут: $(PROJECT_NAME): build-dir $(TARGET_SUBMAKE) $(TARGET_OBJ)

Оба варианта приводят к тому, что при вызове корневого make он просто создаёт директорию и даже не пытается заходить в дочерние Makefile.

2

Приветствуется общая критика. Я не эксперт в make, соответственно буду рад услышать, что я делаю не так.

P.S. Сразу уточню насчёт build директории. «Корневой» makefile на самом деле тоже не корневой и его вызывают выше с

DIR_BUILD := $(CURDIR)/build

make -C code/xxx DIR_BUILD=$(DIR_BUILD)
PPP328
()

Основы реверс-инжиниринга Android-приложений

 ,

Основы реверс-инжиниринга Android-приложений

Как известно, Android — это тоже Linux, основной особенностью которого является то, что он позволяет устанавливать приложения только на Java/Kotlin в формате apk, запускаемые через свою реализацию JVM — своего рода песочницу. Раз уж это Linux, то и запускать его можно через стандартные средства — LXC-контейнеры, как это делается в том же Waydroid. Главный плюс такого подхода в отличие от реального устройства — полный доступ к файловой системе, что эквивалентно рут-доступу. На реальном устройстве получить рут-права с помощью Magisk несложно, но это приводит к утрате данных вместе с ключом шифрования от sd-карты, хотя их можно и восстановить, если был бекап. Однако большей проблемой является то, что из-за этого перестают запускаться те же банковские приложения…

( читать дальше... )

rtxtxtrx
()

X11 robustness: DRI3 без аппаратного ускорения

 , , ,

X11 robustness: DRI3 без аппаратного ускорения

Уже больше 5 лет как использую разные GPU от AMD и сталкиваюсь с разнообразными проблемами, приводящими к его зависанию. К сожалению, в современном линуксовом десктопе, особенно на AMD зависание GPU зачастую не получается обработать прозрачно для софта. В лучшем случае могут попортиться данные, связанные с активными задачами, в худшем - gpu вообще становится неработоспособен до снятия питания (этим грешили некоторые APU на gfx9)

Успешный GPU Reset

Если в случае с неработоспособным GPU другого выхода, кроме как отказ от него нет, дискретные GPU обычно могут успешно пройти сброс.

На моём опыте, с rx580 это приводило к превращению всего содержимого VRAM в шум, на котором слегка можно было различить контуры ранее находившихся там текстур.

На rdna2 же обычно содержимое vram остаётся целым, однако не всегда. С некоторой вероятностью обнаруживается периодический мусор после сброса, обычно в этом случае попытка использовать работающие с GPU приложениями приведёт к повторному зависанию. В общем, никаких гарантий нет и по хорошему все GPU клиенты должны пересоздать все контексты с нуля

( читать дальше... )

mittorn
()

EasyEffects не нужно, или PipeWire для продвинутых: часть 4

 , ,

Спатиалайзер для наушников

Вы когда-нибудь задумывались, чем прослушивание музыки через наушники, отличается от прослушивания музыки через колонки? Основное отличие – когда мы в наушниках, то левое ухо слышит только звук левого наушника (левый стерео канал), и совсем не слышит звук правого. И наоборот. Когда мы слушаем колонки, то оба уха слышат обе колонки, но по-разному. Из-за этого простого факта, восприятие стерео-сцены в наушниках и через колонки, радикально отличается.

И возникает существенная проблема – а на что должна быть расчитана запись, на прослушивание в наушниках, или в колонках? Индустрия выбирает колонки, как основной источник звука, и все делается в расчете на них. А в наушниках мы будем слышать неправильное стерео, сильно искаженное.

Но у нас же есть pipewire, поэтому не беда, сейчас мы это исправим! В этой и следующей статье, мы заставим звучать наушники как колонки, а колонки как наушники (ну почти)!

( читать дальше... )

James_Holden
()

EasyEffects не нужно, или PipeWire для продвинутых: часть 1

 , ,

ВСТУПЛЕНИЕ

Звуковая система PipeWire принесла, без преувеличения, революцию в мир десктопно-мультимедийного Linux. Наконец то эта ОС получила продуманную, сделанную по уму понимающими в теме людьми, и сделанную качественно звуковую систему. Многие ее возможности присутствовали и раньше, в других более старых звуковых системах, но в PipeWire они собраны воедино и сформировали целую единую платформу, на которой можно реализовать огромное количество самых разных задач.

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

( читать дальше... )

James_Holden
()

EasyEffects не нужно, или PipeWire для продвинутых: часть 2

 , ,

В первой части мы создали конфиг-файл, который добавляет 15-полосный эквалайзер в граф PipeWire. Теперь разберем вопрос, а как же изменять его параметры на лету, без перезапуска PipeWire. Вопрос очень животрепещущий, редакция завалена письмами с ним. ))

В этой части мы разберем задачу на «низком» уровне CLI-утилит. На этой базе несложно сделать любой GUI-фронтенд, который позволит управлять параметрами уже из GUI.

( читать дальше... )

James_Holden
()

GCLI 2.6.0

 , , , ,

GCLI 2.6.0
Группа Разработка

4 января, после более пяти месяцев разработки, состоялся выпуск 2.6.0 консольной утилиты GCLI, написанной на языке C и распространяемой по лицензии BSD-2. Утилита предназначена для взаимодействия с API нескольких популярных сервисов хостинга Git-проектов и позволяет создавать, просматривать и взаимодействовать с проблемами, запросами на слияние и метками и комментариями к ним; проверять состояние CI и конвейеров, и многое другое.
И, в отличие от GitHub CLI, GCLI поддерживает не только API GitHub, но и API GitLab, Gitea и, экспериментально, Bugzilla.

( читать дальше... )

>>> Список изменений версии 2.6.0 на GitHub (github.com)

dataman
()

EasyEffects не нужно, или PipeWire для продвинутых: часть 3

 , ,

Во второй части мы разобрали вопрос, как управлять параметрами эффектов в реальном времени, без перезапуска PipeWire.

Теперь рассмотрим, как можно добавить сторонний плагин, реализующий эффект, который не встроен в PipeWire, и как управлять его параметрами.

( читать дальше... )

James_Holden
()