LINUX.ORG.RU

Сообщения PPP328

 

После долгого простоя зависает Х11

На 18.04 Xubuntu такого не было, на 20.04 стал замечать - памятью не течет, в dmesg всё нормльно, в логах иксов последнее:

[ 67580.195] (II) event22 - Telink Wireless Receiver Mouse: is tagged by udev as: Mouse
[ 67580.195] (II) event22 - Telink Wireless Receiver Mouse: device is a pointer
[ 67640.803] (II) event2  - Power Button: device removed
[ 67640.817] (II) event7  - Video Bus: device removed
[ 67640.841] (II) event0  - Sleep Button: device removed
[ 67640.898] (II) event5  - Elan TrackPoint: device removed
[ 67640.934] (II) event3  - AT Translated Set 2 keyboard: device removed
[ 67640.954] (II) event6  - ThinkPad Extra Buttons: device removed
[ 67640.977] (II) event24 - Integrated Camera: Integrated C: device removed
[ 67641.018] (II) event23 - Telink Wireless Receiver Consumer Control: device removed
[ 67641.033] (II) event25 - Telink Wireless Receiver System Control: device removed
[ 67641.061] (II) event26 - Telink Wireless Receiver: device removed
[ 67641.077] (II) event27 - Integrated Camera: Integrated I: device removed
[ 67641.121] (II) event22 - Telink Wireless Receiver Mouse: device removed
[ 67641.165] (II) AIGLX: Suspending AIGLX clients for VT switch

Пришибил через tty фоновые хромак и телегу - не помогло. xfce4-panel -r - не помогло. Видимо что-то с самими иксами, мышка переходит в «задумчивую» анимацию и клики не проходят.

Помог рестарт иксов через

sudo service lightdm restart

Как диагностировать? Какие логи смотреть? Пока не ребутал машину.

Могу предположить, что криво включилась блокировка экрана или заставка из-за простоя. Отрубил обоих, буду наблюдать. Всё равно интересно, куда можно копнуть.

UPD: Логи journald: https://pastebin.com/td0Ab21i

 ,

PPP328
()

Вроде обещали прикрыть лавочку с перехватом запросов в Chrome, как там сейчас?

Вроде ж с полгода-год назад говорили что перестанут работать uMatrix и все кто работает подобным образом, потому что Google закручивает гайки.

Как там сейчас? У меня сейчас версия прошлого года, боюсь обновлять потому что (?) отвалятся umatrix и ublock.

 , ,

PPP328
()

Какие есть IDE/редакторы кода с поддержкой ASM?

Хочу пописать под 6502, у него кастомный набор инструкций, поэтому, скорее всего нужно будет отредачить файл подсветки.

Хочу:

  • Поддержка CTRL+Click на название метки
  • Подсветка синтаксиса и комментов
  • (опционально) Описание оператора при наведении (полезно если забыл как работает)

Готов написать правила подсветки\описания ручками сам, подскажите кто и в каком формате это сожрет.

Кнопка\клавиатурное сочетание для Build/Run - большой бонус.

Я пробовал прикручивать подсветку ASM для QtCreator - получается шлак. Он банально не умеет вообще ничего кроме как подсвечивать, а с этим и mousepad справляется.

Почему хочу IDE - не хочу колхозить систему сборки на скриптах, постоянно редактировать руками make с его инопланетным синтаксисом - фэ. automake/cmake еще инопланетнее. У IDE обычно есть фича как «файл проекта», где хранится вся инфа о списке файлов и как их компилить

 6502, , ,

PPP328
()

Есть ли готовые утилиты для анализа сишного кода на неиспользуемые сущности?

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

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

Компилятор умеет находить неиспользуемые static-и, но по глобальным сущностям такое должен палить линкер, а у него таких опций вроде нет.

Есть что-то готовое чтобы не городить огород?

 , , ,

PPP328
()

Очередное решето

https://github.com/torvalds/linux/tree/8bcab0346d4fcf21b97046eb44db8cf37ddd6da0
Ъ:

hey guys its me linus torvalds, author of the smash hit linux. yes its me you can look at the url of the repo and the thingy at the top of the files it proves its 100% me.

i deleted linux because i hate it now i think it sucks. you should go use this awesome os its called windows xp i just discovered it its great

Немного подробностей: https://news.ycombinator.com/item?id=24976138

До того как мегабаксы купили хаб такой бурни не было.

 , ,

PPP328
()

VLC меняет размер интерфейса при повторе воспроизведения

VLC 3.0.8, xUbuntu 18.04

Ставлю размер плеера маленьким, кидаю его в угол экрана посматривая музыкальный ролик и слушая музыку. Когда воспроизведение начинается заново то он меняет размер интерфейса под размер видео, из-за чего нужно его заново совать в угол и менять размер.

Галка «подгонять размер интерфейса под размер видео» выключена.

Как вылечить? То же самое если смотреть сериал - на каждой серии он делает интерфейс по размеру видео.

 ,

PPP328
()

Как установить wine32 в виде изолированного окружения?

Ubuntu 18.04, ни руками ни через playonlinux wine32 вставать не хочет:

Следующие пакеты имеют неудовлетворённые зависимости:
 wine32:i386 : Зависит: libwine:i386 (= 3.0-1ubuntu1) но он не будет установлен
 libwine:i386 : Зависит: libgphoto2-6:i386 (>= 2.5.10) но он не будет установлен
                Зависит: libgphoto2-port12:i386 (>= 2.5.10) но он не будет установлен
                Рекомендует: libsane1:i386 (>= 1.0.24) но он не будет установлен

 libgphoto2-port12:i386 : Зависит: libusb-1.0-0:i386 (>= 2:1.0.8) но он не будет установлен
 kio : Зависит: libkf5notifications5 (>= 4.96.0) но он не будет установлен
       Зависит: libkf5wallet-bin но он не будет установлен
 libkf5wallet5 : Зависит: libkwalletbackend5-5 (= 5.44.0-0ubuntu1) но он не будет установлен

…ну и так далее на половину системы ругается. При этом стим свой proton 32х битный поставил без проблем.

Просто хочу в Diablo II погонять.

 ,

PPP328
()

Как открыть PDF в Libre Office картинками?

Хочу напечатать книгу. Раньше, когда я сам ее верстал в libre - то печатал через галку «брошюра» и печатал по 8 страниц на двусторонней печати - выходило классно, вкусно и полезно.

Теперь у меня есть PDF, но в Atril (который использует системный диалог печати) нет галки «брошюра», она есть только в LibreOffice (который системный диалог печати не использует).

Вопрос:

Как мне импортировать PDF в LibreOffice Writer постранично картинками? Почему именно картинками - если открыть как текст через LibreOffice Draw - то всё форматирование плывёт, куски текста пропадают, а диаграммы уходят вправо.

Вариант №2 (более сложный) - найти утилиту которая мне каким-то волшебным образом подготовит PDF к печати двусторонними тетрадками по 8 страниц.

 , ,

PPP328
()

Как отключить связывание процессов xfce4-terminal?

При запуске первого процесса xfce4-terminal он порождает независимый процесс с родителем установленным как тот, кто его породил (другой терминал, иксы, QtCreator и пр.) Всё круто, всё хорошо.

Если при этом запустить вторую копию, то, несмотря на настоящего родителя процесс будет привязан к первому терминалу. Т.е. Если я первый процесс запустил через хоткей и получил родителем X, то у второго процесса, который я запущу, например через QtCreator родителем будет Х. В данном случае проблемы нет, однако если первый процесс запустить в QtCreator, а второй - через хоткей, то у обоих процессов родителем будет QtCreator, что приводит к проблеме - среда разработки грохает процесс, который породила, закрывая тем самым второй терминал, который к ней не имеет никакого отношения. Жутко неудобно, когда открываешь кучу процессов для отладки или инфы, закрываешь дебаг сессию в QtCreator и у тебя дропаются ВСЕ терминалы в системе.

Как не давать им слипаться?

 

PPP328
()

Баг newlocale?

#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <locale.h>

int main(void) {

    locale_t loc = newlocale(LC_ALL_MASK, "en_US.utf8", NULL);
    if (loc == 0) {
        printf("NEW: %d %s\n", errno, strerror(errno));
        return 1;
    }
     if (uselocale(loc) == 0) {
        printf("USE: %d %s\n", errno, strerror(errno));
        return 1;
    }

    for (int i = 0; i < 50; i++)
        printf("%d %s\n", i, strerror(i));
        
    freelocale(loc);
    return 0;
}
$ ./error.elf 
0 Выполнено
1 Операция не позволена
2 Нет такого файла или каталога
3 Нет такого процесса
4 Прерван системный вызов
5 Ошибка ввода/вывода
...

ЧЯДНТ?

$ locale --all
C
C.UTF-8
en_AG
en_AG.utf8
en_AU.utf8
en_BW.utf8
en_CA.utf8
en_DK.utf8
en_GB.utf8
en_HK.utf8
en_IE.utf8
en_IL
en_IL.utf8
en_IN
en_IN.utf8
en_NG
en_NG.utf8
en_NZ.utf8
en_PH.utf8
en_SG.utf8
en_US.utf8
en_ZA.utf8
en_ZM
en_ZM.utf8
en_ZW.utf8
POSIX
ru_RU.utf8
ru_UA.utf8

 , errno,

PPP328
()

Steam обновил мне flatout 2 и теперь я без игры

Поучительная история:

Играл во flatout 2 через стим на онтопике. Два дня назад ещё всё было хорошо. Сегодня при запуске мне выдает «недопустимая платформа». В магазине поддержку Linux тоже убрали. Чем им помешала игра, которой уже 15 лет - я не знаю.

Мораль, пасаны, пользуйте gog или пиратку. Иначе завтра ваш дистр превратится в тыкву.

 

PPP328
()

А как бы вы оттранкейтили начало файла, в который пишет процесс?

Есть достаточно нетривиальная задача, если найдется решение хотя бы для linux - было бы уже неплохо.

Есть процесс, запущенный через fork() + close(1, 2) + open(file1, file2) + execve. Соответственно он пишет свой stdout/err в файл.

Что нужно - периодически чекать размер файла в другой программе (тривиально) и если он больше чем N (пусть будет 10 МБ) - отрезать ему M байт (пусть будет 5 МБ) с начала (не тривиально). Оставив таким образом только последние 5 МБ её выхлопа.

Не тривиально, потому что этот же файл всё еще пишется запущенной исходной программой.

Да, можно в теории поступить по-другому - открыть файл, скопировать его в другой, сохранить как .log.1, затранкейтив полностью исходный. Но есть проблема в том, что таких «пишущих» процессов будет что-то около 50 и засирать каталог очень не хочется (тем более, что практика показала, что искать что-то одновременно в log.1 … log.9 не очень удобно (особенно когда это что-то попадает куском в первый файл, а куском во второй)).

logrotate не доступен, потому что это условно-portable сервис + его надо запускать под виндами, желательно не переписав его на 90%.


UPD:
В общем на чем сейчас остановились: перехватывать на себя выхлоп через пайпы - не вариант, нужно плодить миллион (80 шт) нитей чтобы обслуживать все запущенные сервисы (40 шт).
Сейчас рассматриваем вариант с одной нитью и работать как logrotate - делать log.1, log.2 для всех разом. Непенятно только как заставить каретку в программе переехать на начало, ведь если работающий сервис не сделал close - то его позиция каретки зафикшена и если после моего truncate файла будет write со стороны программы - то там будет не 0, а файл, размером N МБ + добавка последней записи.
Кто расскажет, какую магию делает logrotate и logrotatewin? https://pastebin.com/ewDukJJx

 , ,

PPP328
()

Интересные книги, оказывается, выходят

Object Oriented Programming with C++, Second Edition by Richard Johnsonbaugh

1.4 C++ AS A SUPERSET OF C PROGRAMMING LANGUAGE C++ has inherited all the strong points of C. It has tried to remove certain weaknesses. Object orientation has added a totally new dimension to the language. You can make use of code and reuse it to the hilt. C++ is a superset of C. All your C programs will work without any modification in this environment. However, we recommend that you get accustomed to new styles and techniques of C++ from day one.

2012

А потом к нам на должность С-программиста стучатся люди, которые никогда не кодили на си, но зато чо-то там делали на Qt/boost

 ,

PPP328
()

Требуется: Программист С, Ростов-на-Дону

Требуемый опыт работы: 1–3 года
Полная занятость, полный день

З\п:

  • От 80 000, верх не запаян.

От тебя потребуется:

  • Опыт разработки на С/С++ на Linux от года (C в приоритете);
  • Опыт разработки сетевых приложений, знание сетевого стека;
  • Базовые знания устройства *nix систем;
  • Умение работать со скриптовыми языками;
  • Знание системы контроля версий.

Плюсом будет:

  • Опыт работы с удаленными устройствами через TCP+binary/HTTP/SOAP/MODBUS;
  • Опыт работы с Perl;
  • Умение соответствовать стандартам безопасности MISRA C/NASA JPL;
  • Умение работать с системами отладки и анализа (GDB, Callgrind, Memcheck, Valgrind, CPPcheck, scan-build);
  • Умение работать с SQL базами;
  • Опыт разработки Windows приложений.

Гарантируем:

  • Интересные задачи, простую и прозрачную систему организации работы;
  • Стабильно высокую заработную плату, постоянные индексации;
  • Оплачиваемое обучение, участие в профильных конференциях;
  • Годовую премию, ДМС;
  • Гибкий график работы;
  • Дружный коллектив единомышленников;
  • Перспективы профессионального и карьерного роста;
  • Оформление по ТК РФ с первого дня;
  • Своя кухня, чай/кофе, печеньки, мюсли для приятного и уютного перерыва;
  • Корпоративные праздники и спортивные тренировки;
  • Современный офис в самом центре с панорамным видом на город;
  • Рабочее место, оборудованное всем необходимым для продуктивной работы.

Связь:


От себя добавлю:

  • Лояльное отношение начальства (надо куда-то свалить - ок, потом отработаешь, либо договоримся если работа завершена в срок)
  • Возможна работа удаленно с редкими визитами в офис (сейчас из всего отдела в офисе работает только один потому что там стоят тестовые стенды с оборудованием, как только закупят вторую партию отправится работать из дома)
  • Конференции и поездки за счет работодателя (сейчас с поездками хуже, рассосется ковидла - будет лучше, до ковидлы каждый месяц кто-то куда-то уезжал, онлайн сейчас в приоритете)
  • Курсы повышения квалификации за счет работодателя
  • В отделе есть человек 81го года, проблем нет, возраст не помеха.
  • Интересные задачи разной направленности - управление кинооборудованием, спутниковая передача данных, работа с кассовым оборудованием, работа с авиационными системами.

 , ,

PPP328
()

Портирование асма на оффтопик

Неожиданно столкнулся с тем, что ассемблер под mingw чутка отличается от gcc’шного (хотя при этом у нас уже много чисто асмовых модулей, например sha2, на которых граблей не было, нужно было только экспортные имена поменять).

У нас есть код:

.section .rodata
      .global <symbolname>
      .type   <symbolname>, @object
      .align  4
<symbolname>:
      .incbin "./files/<symbolname>.ext"
      .byte 0
<symbolname>_end:
      .global <symbolname>_size
      .type   <symbolname>_size, @object
      .align  4
<symbolname>_size:
      .int    <symbolname>_end -<symbolname>

После чего мы генерим такой файл:

#ifndef <SYMBOLNAME>
#define <SYMBOLNAME>

extern const char <symbolname>[];
extern const u32 <symbolname>_size;

#endif /* <SYMBOLNAME> */

Как выяснилось, gcc это кушает хорошо, в вот mingw жрать не хочет:

<symbolname>_gen.s: Сообщения ассемблера:
<symbolname>_gen.s:3: Предупреждение: Псевдооперация .type используется вне .def/.endef: игнорируется.
<symbolname>_gen.s:3: Ошибка: мусор в конце строки, первый нераспознанный символ «m»
<symbolname>_gen.s:10: Предупреждение: Псевдооперация .type используется вне .def/.endef: игнорируется.
<symbolname>_gen.s:10: Ошибка: мусор в конце строки, первый нераспознанный символ «m»

Помогите, пожалуйста портировать эту засаду под mingw/win32.

Суть в автоматическом встраивании внешних файлов в бинарь. Например у нас есть JSON-файл со схемой валидации. Вместо того чтобы таскать его с собой, открывать на чтение и проч. просто используем условный myjson[].

 ,

PPP328
()

Расскажите, пожалуйста, за шрифты

Я не специалист по шрифтам, но мне нужно узнать ответ на следующий вопрос:

Положим есть пиксельный шрифт (не векторный, не в курсе как они правильно называются - я ж не специалист). У этого шрифта положим есть буква «А». Так вот вопрос в следующем:

Предположим, что мы средствами например браузера или терминала используем эту букву этого шрифта. Возможно ли если я выставил букве красный цвет средствами только шрифта сделать так чтобы например перекладина в «А» была другого цвета или хотя бы оттенка (темнее\светлее)?

Или рендер абсолютно всех шрифтов всегда происходит на черно-белой канве впоследствии окрашиваясь с используя канву как альфа-маску?

 

PPP328
()

А ipsec умеет отдавать инфу в машиночитаемом виде?

$ sudo ipsec statusall
Status of IKE charon daemon (strongSwan 5.3.4, Linux 4.4.14, x86_64):
  uptime: 4 days, since Feb 08 21:28:27 2021
  malloc: sbrk 2297856, mmap 0, used 280192, free 2017664
  worker threads: 11 of 16 idle, 5/0/0/0 working, job queue: 0/0/0/0, scheduled: 4
  loaded plugins: charon aes des rc2 sha1 sha2 md5 random nonce x509 revocation constraints pubkey pkcs1 pkcs7 pkcs8 pkcs12 pgp dnskey sshkey pem fips-prf gmp xcbc cmac hmac attr kernel-netlink resolve socket-default stroke updown xauth-generic
Listening IP addresses:
  xxx.xxx.xxx.xxx
  xxx.xxx.xxx.xxx
Connections:
        xxx:  %any...xxx.xxx.xxx.xxx  IKEv2
        xxx:   local:  [pro2269] uses pre-shared key authentication
        xxx:   remote: [xxx.xxx.xxx.xxx] uses pre-shared key authentication
        xxx:   child:  dynamic === 0.0.0.0/0 TUNNEL
Security Associations (1 up, 0 connecting):
        xxx[108]: ESTABLISHED 36 minutes ago, xxx.xxx.xxx.xxx[hostname]...xxx.xxx.xxx.xxx[xxx.xxx.xxx.xxx]
        xxx[108]: IKEv2 SPIs: 2c027681f7a9917f_i* 5502946723f0484b_r, pre-shared key reauthentication in 16 minutes
        xxx[108]: IKE proposal: AES_CBC_128/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_2048
        xxx{431}:  INSTALLED, TUNNEL, reqid 108, ESP in UDP SPIs: c2ca3a8c_i c587179c_o
        xxx{431}:  AES_CBC_128/HMAC_SHA1_96, 9525 bytes_i (88 pkts, 0s ago), 7977 bytes_o (62 pkts, 6s ago), rekeying in 7 minutes
        xxx{431}:   xxx.xxx.xxx.0/32 === xxx.xxx.xxx.0/27

Как мне получить имя xxx и сколько секунд назад (bytes_i Ns ago) пришел последний пакет без того, чтобы парсить это всё вприсядку регэкспами в надежде что не сменится алгоритм? Есть у ipsec какой-нибудь адекватный машиночитаемый выхлоп?

Ставить новые пакеты нельзя.

 ,

PPP328
()

MeddleMonkey отключено во всех браузерах

Судя по всему гугл начал считать что оно содержит вредоносное ПО, поэтому расширение автоматически отключено во всех браузерах у всех пользователей.

Для тех кто в танке что это:

MeddleMonkey (fork Violentmonkey with some features) is the most popular user script manager, with over 4 million users, which supports for Chromium-based browsers like Opera and Chrome.

 

PPP328
()

Значение переменной при динамической линковке и инициализаторе.

Дано:
Динамическая линковка с libxml2. Гружу символ xmlMalloc:

__typeof__(xmlMalloc) xmlMalloc;

static void _init_xmlMalloc(void) __attribute__((constructor));
static void _init_xmlMalloc(void) {
    void * obj = lok_library_func(library, "xmlMalloc");
    xmlMalloc = * (__typeof__(xmlMalloc) *)obj;
}

В lok_library_func обычный dlsym с проверкой на нашел\не нашел. При не нашел - падаем.

Грузит, находит по адресу. Но xmlMalloc == NULL. Т.е. переменная не присвоена. Окей, обращаемся к коду libxml:

#if defined(DEBUG_MEMORY_LOCATION) || defined(DEBUG_MEMORY)
<...>
xmlMallocFunc xmlMalloc = (xmlMallocFunc) xmlMemMalloc;
<...>
#else
<...>
/**
 * xmlMalloc:
 * @size:  the size requested in bytes
 *
 * The variable holding the libxml malloc() implementation
 *
 * Returns a pointer to the newly allocated block or NULL in case of error
 */
xmlMallocFunc xmlMalloc = malloc;

Точно известно, что DEBUG_MEMORY_LOCATION и DEBUG_MEMORY не установлены. Значит переменная должна быть инициализирована при загрузке библиотеки (что и происходит при dlopen).

Вопрос - почему переменная NULL?

Из-за того, что она NULL происходит падение при первом же выделении памяти внутри самой либы (например на LIBXML_TEST_VERSION).

 ,

PPP328
()

Как поставить wine без засирания системы?

xUbuntu 18.04. Раньше, когда устанавливал wine он добавлял свои «хвосты» просто везде - в меню приложений, в контекстное меню, заменяя «открыть как» своим списком.

Хочу просто поставить бинари чтобы они никуда ничего не писали меняя в меню. Запускать буду через xxx/wine app.exe отдельным скриптом.

Как? Скачать и разархивировать ubuntu deb-пакет в какой-нибудь /opt? Или есть нормальный метод?

 ,

PPP328
()

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