LINUX.ORG.RU

Сообщения firkax

 

firefox build x86_64-pc-linux-gnux32

 ,

Что это за бред? Фф при компиляции создаёт директорию obj-x86_64-pc-linux-gnux32/ и компилирует всё в неё (вроде). Откуда вообще такое название могло взяться? Файл a.out, который я там внутри нашёл - вроде бы нормальный 32-битный i686 или как там его назвать. Но gnux32 это же другое должно быть.

firkax
()

firefox-esr с mozilla.org и из debian - разный fps

 , ,

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

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

Собственно фпс сравнивал в игре https://orteil.dashnet.org/cookieclicker/ - в мозилловском пакете там всё плавно и хорошо, в дебановском дёрганая картинка уже на стадии загрузки (когда крутятся шарики посередине экрана, эту стадию можно искуcственно удлинить если залагать себе инет - зафайрволить что-нить нужное ему в DROP).

А вы что-нить такое замечали? С чем это связано?

Оба фф запускал в новом чистом профиле (одном и том же).

Из заметной разницы (кроме фпс) - в мозилловском пакете нет звука т.к. он только пульсу ищет которой нет.

------------------

Профайлер deb: https://ibb.co/jHqYXxB

Профайлер moz: https://ibb.co/5c4mt5X

Видно что рендер запускается где-то раз в 300мс и грузит проц больше чем рендер в mozilla-пакете. А само 300мс берется из того что сама вкладка этим 300мс перед эти тоже грузит проц, а в moz-пакете гораздо меньше.

Зелёное в Render это в основном RenderThread::UpdateAndRender (во вкладке Marker Table эти пики называются «Composite #1»)

Синее в работе вкладки это «CanvasRenderingContext2D.drawImage»

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

upd: кажется не связано, ввёл в консоли CanvasRenderingContext2D.prototype.clip = function() { }; и ничего не поменялось в плане скорости

Ввёл CanvasRenderingContext2D.prototype.drawImage = function() {};, после этого затраты на эту функцию в проце вкладки исчезли (как и соответствующие картинки на странице), а вот процесс render всё так же продолжает лагать и тратит по 100мс на одну итерацию (даже увеличилось - до этого тратила около 95мс). В мозилловском пакете же 10-20мс.

------------------

Компактный пример для воспроизведения проблемы: firefox-esr с mozilla.org и из debian - разный fps (комментарий)

Как оказалось, js ни при чём, в примере его вообще нет. Но проблема как-то побочно задевает js тоже (а конкретно функцию CanvasRenderingContext2D.prototype.drawImage - она начинает в этих условиях работать в разы медленнее). В приведённом же примере js нет и лаги видны только в RenderThread::UpdateAndRender (это внутренняя функция в исходниках фф как я понял).

--------------------

Сравнение about:buildconfig firefox-esr с mozilla.org и из debian - разный fps (комментарий)

--------------------

Обновление: firefox-esr с mozilla.org и из debian - разный fps (комментарий)

firkax
()

Dimez, почему флуд?

 

Я дал вполне норм совет как решить проблему, а ты его (хорошо хоть автор темы уже успел прочесть) удалил как флуд. Заодно зачем-то удалил ответ самого автора темы о том, как он успешно решил свою проблему.

firkax
()

fproxy v83 — локальный прокси-сервер для фильтрации http(s)-трафика

 , , , ,

Группа Интернет

Опубликована 83-я версия кэширующего и антиспамного прокси-сервера для персонального использования c гибкими настройками.

Основные функции (всё настраивается):

  1. фильтрация нежелательного контента (белые/чёрные списки на урлы, запрет кук);
  2. принудительное и бессрочное кеширование полученных данных (в основном удобно для картинок и скриптов);
  3. исправление содержимого веб-страниц на лету (правкой исходника на Си, есть пример для замены содержания страниц-клонов stackoverflow ссылкой на оригинал);
  4. чёрные/белые списки сертификатов и certificate pinning по списку;
  5. подмена айпи-адреса/домена/пути/протокола http-запроса по конфигу (такой расширенный вариант /etc/hosts);
  6. http/https-сниффер.

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

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

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

Пример списка блокировки:

deny    nosub   all     share.yandex.ru browser-updater.yandex.net
deny    nosub   all     a.ria.ru # ?
deny    nosub   spec    vk.com
                query   /share.php
deny    nosub   spec    yastatic.net
                query   /pcode/adfox/loader.js
                query   /share2/share.js
deny    nosub   spec    www.youtube.com
                query   /subscribe_widget
deny    nosub   spec    pano.img.ria.ru
                query   /adriver/flashplagin/movie.swf
deny    nosub   spec    a.ria.ru
                query   /ping
deny    nosub   spec    n-ssl.ria.ru
                query   /polling
deny    nosub   spec    apis.google.com
                query   /js/plusone.js
deny    nosub   spec    yandex.ru
                pref    /clck/safeclick/
                pref    /clck/click/
                pref    /clck/jclck/
deny    all     spec
                query   /tnc    # index.ru proxied counter
                exact   /tnc.js # index.ru proxied counter
                query   /pixel.gif # some spammers use this

Пример списка роутинга:

https://my.local.site
        set proxy none
        set target http://127.0.0.1:1234/localsite
        set http_host new.host:1234
.intel.com
        resolve off
        set proxy socks5://127.0.0.1:3333

В случае обновления с версии более старой чем 78 следует сконвертировать кеш: зайти в рабочую директорию прокси-сервера от юзера (uid/gid) прокси-сервера и выполнить fproxy-cacheconv-78 (по умолчанию эта программа не компилируется).

Изменения с прошлой опублированной версии (80 (linux.org.ru)):

  1. fproxy-dashboard теперь имеет опцию для показа размеров контента в байтах а не кбайтах;
  2. поддержка багнутых серверов, игнорирующих заголовок «Connection: close»;
  3. поддержка багнутых серверов, отдающих некорректный заголовок «Content-Encoding: identity»;
  4. отправка TLS-опции ALPN;
  5. улучшение работы TLS-терминатора внешней стороны (клиента): он теперь поддерживает не только TLS, но и обычные соединения, поддерживает работу в виде независимого демона с приёмом запросов от основного прокси по сети, а также может пробрасывать свои исходящие соединения через другое прокси, таким образом позволяя гибко разделять задачи между узлами в условиях плохого интернет-соединения и/или необходимости организовать «выход» трафика где-то на удалённом сервере разной степени доверенности; так же новая версия более удобна для использования вручную из командной строки в качестве консольного TLS-клиента с поддержкой проксирования;
  6. упрощена сборка, теперь есть Makefile вместо шелл-скриптов
  7. организованы предсобранные .deb-пакеты в репозитории (для версий Debian 8-12)
  8. изменения файла конфигурации, обратно-несовместимые
  9. новый конфиг для управления роутингом запросов, объединивший ранее бывшие отдельными конфиги resolv и включения проброса исходящих соединений на удалённый сервер, а так же получивший ряд новых опций: теперь можно для каждого url-а (протокол, домен, порт, путь) выбирать через какой клиент, какое прокси он будет отправлен, через чей днс-сервер будет проводиться определение его айпи-адреса (включая опциональное делегирование этой задачи внешнему прокси-серверу http или socks5), либо прописать адрес вручную, а так же заменить протокол, порт или префикс пути url-а
  10. добавлена поддержка SAN-сертификатов для ip-адресов и в клиенте и в сервере (браузеры с некоторых пор перестали принимать ip-адреса в CommonName)

В планах на будущее:

  1. поддержка CGI/FastCGI/.so хуков для mitm-обработки полученного от сайтов контента
  2. менеджер профилей и конфигураций прокси
  3. интерактивное управление проверкой сертификатов удалёных сайтов и списками блокировок

>>> Подробности (m1089.ru)

firkax
()

сбор общей схемы использования хранилищ на freebsd

 , ,

Время от времени хотелось чтоб был некий дамп схемы использования физических накопителей разными файловыми системами, чтобы не лазить отдельно по camcontrol devlist, gmirror/gmultipath/gpart, спискам монтирования и иногда sysctl. И чтобы этот дамп был пригоден для обычного diff между «было» и «теперь». Написал в итоге такую прогу, может кому пригодится или кто даст совет как поудобнее сделать её вывод чтобы было нагляднее кто за что отвечает. (только не так как geom -t который дублирует на каждого члена mirror/multipath всю вышележащую топологию)

исходник

Компилировать с -lgeom -lfcl

update 2023-12-05

как скомпилировать с нуля с черновой поддержкой zfs:

cd /tmp/
fetch https://dev.m1089.ru/fcl/files/fcl-20231205.tar.gz
tar xf fcl-20231205.tar.gz
cd fcl-20231205/DEV/src
./build.sh fcl
fetch https://dev.m1089.ru/freebsd-misc/files/storage-summary/storage-summary.c
cc storage-summary.c -DWITH_LIBZFS -DLIBZFS_HACK -I../include -L../lib -lgeom -lfcl -lzfs -lnvpair -o storage-summary

firkax
()

пролезло utf8 после обновления freebsd 12.3 -> 12.4

 ,

Обновил freebsd 12.3 -> 12.4, стал ставить порты, а у диалогов с опциями поехала псевдографика, по виду похоже что оно начало её в юникоде рисовать а консоль с однобайтной кодировкой. Как исправить?

LANG= и LANG=C не помогают.

Запуск со старым ядром от 12.3 не помогает.

----------

Всё, разобрался, они из-за GPL-фобии заменили утилиту для этих диалогов, только она не в 12.3 или 12.4 а в дереве портов прописана.

https://alfonsosiciliano.gitlab.io/posts/2021-11-20-portconfig.html

Дописал в make.conf

DIALOG4PORTS=/usr/local/bin/dialog4ports

и всё починилось.

-------------

Мда https://cgit.freebsd.org/ports/commit/Mk/Scripts/dialog4ports.sh?id=9fee35128...

из-за виндузятников с putty испортили нормальное определение наличия юникода. Дело не в утилите, с ней всё норм, просто старая utf-8 вообще не поддерживала, а этой фейковое описание локали подсовывают из скрипта.

firkax
()

Узнать, содержится ли один диапазон в другом на Си

 , ,

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

Условие очень простое: выражение is_contained(h0, hlen, q0, qlen) должно возвращать 1, если диапазон под вопросом (question - q), начинающийся включительно с q0 и занимающий всего qlen индексов, полностью содержится в диапазоне (have - то что имеется), начинающимся включительно с h0 и имеющим длину в hlen индексов, и должно возвращать 0 во всех других случаях. Оба диапазона относятся к индексам некоего массива или смещениям байт в файле, при том что файл целиком влез в аллоцированный блок памяти процесса в виде того же массива.

Вопрос: написать синтаксически корректную (допустим C89) реализацию функции is_contained(), такую чтобы всегда отдавала правильный результат, при этом не содержала лишнего кода и не требовала линковки с чем-то ещё, включая libc, для работы (но содержимым C89-стандартных (только их) .h файлов пользоваться можно, если оно не приводит к импорту символов извне).

Условие именно такое как я написал, никакие уточнения не предполагаются. Если считаете что условие где-то двусмысленное - дополняйте его как хотите (не противореча исходным утверждениям).

firkax
()

Проблемы надёжной доставки данных до постоянного хранилища и fsync()

 , ,

Когда речь идёт об организации надёжного хранения данных на диске, возникает проблема: надо как-то узнавать о том, что данные на диск не смогли записаться, и принимать по этому поводу какие-то меры.
Есть, конечно, и другая проблема: даже если данные на самом деле записались, они всё равно могут позже потеряться из-за аппаратного сбоя. Но это другая тема и тут мы не будем её рассматривать.

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

firkax
()

неконсистентный xfs

 , , , ,

Хочу поделиться. В течение некоторого количества часов с диска с XFS файловой системой снималась копия методом dd if=/dev/sdX of=/dev/sdY на работающем сервере с нагрузкой (т.е. в этом время там перезаписывались какие-то файлы итд). Затем sdY был использован как загрузочный диск для другой системы. Итоги: первый запуск выбросил в recovery shell из-за того что в fstab было прописано лишнее которого на второй системе нет, закомментировал и заодно исправил конфиг сети которая очевидно тоже другая, ребут - завис на надписи i/o error при чтении systemd-readahead. Ещё один ребут - зависло где-то ещё раньше без внятной диагностики. Ещё один ребут и прописал init=/bin/sh в grub-е. Оказалось что mount отказывается монтировать раздел из-за каких-то ошибок, запустил xfs_repair -L, который выдал кучу надписей но в итоге завершился успехом. Заодно на всякий случай удалил файл .readahead из корня. Итог - система грузится и работает, и даже данные вроде на месте.

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

Но я всё равно буду предпочитать ext4 на своих установках.

На всякий случай уточню: всё сделано исключительно для тестов и в прод пущено не будет.

firkax
()

ftp.ru.debian.org не резолвится

 ,

У всех?

firkax
()

Не добавлять дубли сообщений

 

С плохого инета иногда не доходят ответы на post отправки сообщения. В итоге, после повторного нажатия кнопки, их получаются два, и из-за того же плохого инета может не получиться увидеть этот итог и вовремя удалить дубль. Почему бы не пропускать добавление коммента, если он 100% совпадает с последним добавленным этим юзером в эту тему? Даже ошибку никакую не писать, просто раз коммент уже есть - пропускать этот инсерт а всё остальное как обычно.

firkax
()

header-файлы с функциями, принимающими va_list

 , ,

Почему авторы всяких libc могут объявлять функции типа vprintf в stdio.h не инклюдя побочно stdarg.h (вдруг юзеру не нужно), а все остальные не могут? Ну, я конечно посмотрел как там сделано и там вместо va_list внутренний __синоним к нему, но это же не то что некроссплатформенно, а даже при переходе на другое libc может сломаться (у libc-шных хедеров такой проблемы понятное дело нет). И даже нормального способа выяснить инклюдил ли юзер stdarg тоже нет (можно было бы эти функции вырещать препроцессором если знать что stdarg не заинклюден - всё равно без него их вызвать не получится ведь va_list).

Что вы об этом думаете?

UPDATE Поскольку замечено систематическое непонимание сути темы, попробую ещё раз написать другими словами. Есть такая функция

int vprintf(char const *fmt, va_list arg);
Функция определена в stdio.h, тип va_list - в stdarg.h. Но stdio.h умеет показать этот прототип не инклюдя заодно stdarg.h. То есть, после инклюда stdio.h у нас уже есть vprintf, но нету va_list. Ладно, пофиг на vprintf, пусть даже его тоже не будет если нет stdarg, более важный аспект: можно инключить stdio+stdarg и пользоваться vprintf с va_list, а можно инклюдить только stdio (без stdarg) и он тоже скомпилируется, и не будет ругаться на «undefined identifier va_list» пытаясь показать прототип для vprintf. Как этого добились в libc я в курсе, но способ чисто приватный для libc и пользоваться им снаружи, не боясь сломать где-то совместимость, нельзя.

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

firkax
()

Что за «оффсайт http2»?

 

http2.github.io - что это за бред? Серьёзно, они своей домашней страницей решили сделать аккаунт на гитхабе? Или это кто-то левый мимикрирует?

firkax
()

remmina-rdp жрёт трафик 1.4.11 vs 1.1.2

 , ,

Последнее время стала раздражать тормознутость rdp-сеансов через remmina (на том конце xrdp, если что). Сначала думал что виноваты новые версии xrdp, но догадался запустить старую версию реммины которую не удалил. Так вот, там где 1.1.2 (+freerdp 1.1.0-beta1) работает нормально и укладывается в 5кбайт/с входящего трафика, 1.4.11 (+freerdp 2.3.0) хочет 100кбайт/с и больше и тормозит. Если поставить на паузу коннект (на уровне tcp) и вернуться через несколько часов - то приходится долго смотреть как на удалённом десктопе часы пересчитывают все минуты от начала до конца паузы. Причём - если все удалённые окна были спрятаны, то часы идут ещё относительно быстро, а если там был открыт браузер (даже без меняющихся картинок) - то это очень надолго. С 1.1.2 такого никогда не было - казалось что оно после долгих задержек просто перерисовывает экран целиком в новое состояние, не проходя все промежуточные. А может быть просто очень быстро проходит и незаметно. В настройках коннекта ничего интересного не нашёл.

В чём может быть дело?

А да ещё вспомнил уточнения. В debian jessie было 1.1.1 и работало нормально. Потом в buster было 1.3.3 и работало вообще неудовлетворительно - не помню в чём было дело, но пользоваться было вообще невозможно, откатил на 1.1.1 через полчаса попыток наладить её работу, а спустя какое-то время пересобрал 1.1.2 из исходников чтобы не зависеть от библиотек из debian 8. Затем вышел bullseye с этим 1.4.11, который поначалу понравился но затем выяснилась эта подстава.

firkax
()

Лицензия, код под которой не смогут украсть через ИИ

 , , ,

По мотивам комментария LINUX-ORG-RU: Мир поменялся (комментарий)

К слову, раз уж пошла пьянка и в забугром приняли законы позволяющие прогнать GPL код через сетку и получить Publick Domain результат, то есть вероятность что остальные в мире будут к подобному подтягиваться. Есть мысль включать в лицензии личных публичных проектов запрет на использование исходного кода в качестве данных для обучения и процесс работы программы тоже. Только нужно грамотно сформулировать и добавить это условие в любые лицензии своих проектов к MIT можно просто дописать, в случае GPL и подобных которые нельзя менять включить второй лицензией и пользователь обязан принять обе или тип того.

Собственно что вы думаете о реализации и целесообразности такого?

По-моему очевидно, что запретить стоит не только использование кода для обучения ИИ, но и способствовать таким последствиям: в частности, такая формулировка будет запрещать копировать код в гитхаб-репы, поскольку выложить код на гитхаб означает скормить его копилоту.

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

Насколько, по вашему мнению, целесообразно добавление подобных пунктов в лицензии:

1) свободные пермиссивные, не имея побочных эффектов;

2) свободные с копилефтом, теряя лицензионную совместимость с много чем

? И как подобные пункты могут выглядеть, чтобы было грамотно и без бекдоров?

А может, всё не так страшно и пусть воруют код? Или же, может быть, подобные вещи должны регулироваться законами, а не лицензиями?

firkax
()

Как сделать мышь в режиме джойстика?

 , ,

Имеется ввиду чтобы вместо координатных событий приходили «сдвинулось на столько-то пикселей вверх/вниз/вправо/влево» на неограниченное расстояние. В некоторых 3д-играх например такое используют для поворота камеры.

Предполагаю что это можно сделать костылём: прога постоянно переставляет мышиный курсор в центр окна (+ ещё надо как-то сделать чтобы укзаатель не мог убежать из окна, но думаю такое тоже есть), и тогда можно в самом деле двигать мышкой в одну сторону сколько угодно. Но может быть есть нативный способ проще?

firkax
()

fwmx 1.3 — лёгкий оконный менеджер для x11

 ,

fwmx 1.3 — лёгкий оконный менеджер для x11
Группа Open Source

Вышла версия 1.3 набора программ fwmx, включающих в себя собственно оконный менеджер (fwm), меню запуска приложений и регулятор громкости. В качестве индикатора раскладки используется xxkb.

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

>>> Подробности (m1089.ru)

firkax
()

Узнать bits-per-pixel для x11 image в общем случае

 ,

Хочу без привязки к конкретному случаю поддерживать все виды представлений пикселей, которые X-сервер теоретически может подсунуть. В частности, нужно выполнить весьма простую задачу: прислать с клиента на сервер картинку. На клиенте в иксах картинки принято представлять с помощью XImage.

По идее надо сделать XCreateImage:

XImage *img;
img = XCreateImage(display, NULL, depth, ZPixmap, 0, (char*)data, width, height, bitmap_pad, bytes_per_line);

И тут же сразу проблема: величина bytes_per_line, да и размер памяти, который надо выделить под data, зависят от количества бит на пиксель. Ну и чтобы в data что-то записывать, их тоже надо знать. Понятное дело, что для 32-битного depth оно будет тоже 32, но в общем случае, как видно из исходников, XCreateImage для узнавания этого значения использует функцию _XGetBitsPerPixel() и затем записывает её ответ в img->bits_per_pixel (вообще можно было бы оттуда это значение и прочитать, но его надо знать уже заранее).

Несмотря на то, что она есть в /usr/include/X11/Xlib.h, смущает тут подчёркивание в начале названия этой функции, отсутствие мана к ней и то, что поиск по её названию в инете выдаёт только всякую ерунду и отсылки к исходникам Xlib. Насколько она официально публичная?

Тут вот пишут что она неофициальная, но поскольку без неё всё это сделать нормально невозможно то надо вызывать: https://bugs.launchpad.net/hf-lab/ bug/716239

С другой стороны, странно: не могу придумать, как вообще можно нормально использовать XCreateImage с немонохромным типом без знания этой величины (можно ненормально: вызываем с data=NULL, затем читаем img->bits_per_pixel и вручную ставим img->data). Вряд ли они сделали заведомо нерабочую (в рамках официальных спек) функцию в интерфейсе и за 30 лет это заметили только несколько раз.

Я естественно понимаю, что вряд ли _XGetBitsPerPixel() уберут, но интересует скорее идеально-теоретическая сторона дела с поддержкой всех вариаций X11 с начала времён.

firkax
()

X11: несколько Screen в одном Display

 , ,

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

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

firkax
()

firefox слеит за сетевыми интерфейсами, как отключить?

 

При поднятии/выключении интерфейса ppp0 (через pppd) файрфокс явно что-то замечает, в частности шлёт запросы на свой «detectportal» и, что намного хуже, иногда (не всегда) молча обрывает текущие зависшие (из-за лагов сети) запросы без показывания страницы с ошибкой (оставляет предыдущую). Как это поведение отключить? Фф у меня всё равно через локальный прокси и разбираться с вопросами доставки запросов в инет - исключительно задача прокси, показывание ошибок включая таймауты коннектов - тоже.

firkax
()