LINUX.ORG.RU

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

box86(64) или есть ли жизнь на ARM-e?

Статьи — Desktop
box86(64) или есть ли жизнь на ARM-e?

Запуск программ, собранных для архитектуры x86, на Linux-системах с ARM-процессорами

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

 , , ,

Unixson
()

Firefox, плавная прокрутка. Рецепт кому нужно

Форум — Desktop

В связи с выходом Firefox 92 с поддержкой WebGL, решил его попробовать. Первое на что обратил внимание - рваная прокрутка мышкой. Пришлось искать лекарство, нашёл здесь. Прокрутка действительно стала приятной. Непонятно только, как это сделать одним махом, используя prefsCleaner:

/// user.js tweaked preferences for Firefox by AveYo
/// place in your profile root directory (see about:profiles) & run prefsCleaner from github /arkenfox/user.js
 
////  NATURAL SMOOTH SCROLLING                                                                     preset             info               [default]
user_pref("mousewheel.acceleration.factor", 5);                                            // NSS     5        ACCEL MAX SPEED 1-20           [10]
user_pref("mousewheel.acceleration.start", 4);                                             // NSS     4        accel after x ticks            [-1]
user_pref("mousewheel.default.delta_multiplier_x", 100);                                   // NSS   100           reset previous             [100]
user_pref("mousewheel.default.delta_multiplier_y", 100);                                   // NSS   100           reset previous             [100]
user_pref("mousewheel.default.delta_multiplier_z", 100);                                   // NSS   100           reset previous             [100]
user_pref("mousewheel.system_scroll_override_on_root_content.enabled", false);             // NSS  false       ignoring sys accel           [true]
user_pref("mousewheel.transaction.timeout", 1500);                                         // NSS  1500           reset previous            [1500]
user_pref("mousewheel.min_line_scroll_amount", 0);                                         // NSS     0       lines vary with accel            [5]
user_pref("toolkit.scrollbox.horizontalScrollDistance", 3);                                // NSS     3       keyboard matches mwheel          [5]
user_pref("toolkit.scrollbox.verticalScrollDistance", 3);                                  // NSS     3       keyboard matches mwheel          [3]
user_pref("layers.async-pan-zoom.enabled", true);                                          // NSS  true          smoothness boost           [true]
user_pref("apz.force_disable_desktop_zooming_scrollbars", true);                           // NSS  true          keyboard fix I            [false]
user_pref("apz.paint_skipping.enabled", false);                                            // NSS  false         keyboard fix II v85        [true]
user_pref("dom.event.wheel-deltaMode-lines.always-disabled", true);                        // NSS  true       report wheel in pixels       [false]
user_pref("layout.css.scroll-behavior.spring-constant", "300.0");                          // NSS  "300"      css mimics gecko scroll        [250]
user_pref("general.smoothScroll.mouseWheel.migrationPercent", 100);                        // NSS   100      lame pref wreks settings        [100]
user_pref("general.smoothScroll.msdPhysics.enabled", false);                               // NSS  false        no stutering fling         [false]
user_pref("general.smoothScroll.currentVelocityWeighting", "0.0");                         // NSS  "0.0"          reduce stutter            [0.25]
user_pref("general.smoothScroll.durationToIntervalRatio", 400);                            // NSS   400           reduce stutter             [200]
user_pref("general.smoothScroll.stopDecelerationWeighting", "0.0");                        // NSS  "0.0"          reduce stutter             [0.4]
user_pref("general.smoothScroll.lines.durationMaxMS", 300);                                // NSS   300          arrows smoothing            [150]
user_pref("general.smoothScroll.lines.durationMinMS", 300);                                // NSS   300          arrows smoothing            [150]
user_pref("general.smoothScroll.mouseWheel.durationMaxMS", 300);                           // NSS   300          mwheel smoothing            [200]
user_pref("general.smoothScroll.mouseWheel.durationMinMS", 300);                           // NSS   300          mwheel smoothing             [50]
user_pref("general.smoothScroll.other.durationMaxMS", 150);                                // NSS   150          home-end smoothing          [150]
user_pref("general.smoothScroll.other.durationMinMS", 150);                                // NSS   150          home-end smoothing          [150]
user_pref("general.smoothScroll.pages.durationMaxMS", 200);                                // NSS   200         pgup-pgdn smoothing          [150]
user_pref("general.smoothScroll.pages.durationMinMS", 200);                                // NSS   200         pgup-pgdn smoothing          [150]
user_pref("general.smoothScroll.pixels.durationMaxMS", 300);                               // NSS   300           pixel smoothing            [150]
user_pref("general.smoothScroll.pixels.durationMinMS", 300);                               // NSS   300           pixel smoothing            [150]
user_pref("general.smoothScroll.scrollbars.durationMaxMS", 500);                           // NSS   500         scrollbar smoothing          [150]
user_pref("general.smoothScroll.scrollbars.durationMinMS", 500);                           // NSS   500         scrollbar smoothing          [150]
источник

PS: Сори за длинный код, lorcode [ cut ] почему-то не работает...

 ,

Windows
()

Вебные аналого-цифровые индикаторы.

Форум — Web-development

По итогам Есть ли что-то типа Grafana только на порядки легче и проще?

Написал ещё тогда и забыл. Ну пусть новогодний подарочек будет.

Продолжаем делать правильный вебдваноль. Как обычно, всё очень маленькое (2.5kb) и шустрое, на plain JS без каких-либо «фреймворков» и прочего многотонного жирного говна. Легко влезает в эмбедщину всякую и т.п.

Итак…

gauge.js

'use strict'

function Gauges( class_name )
{
    var _ = this;
    _.urls = [];
    var gauge = document.getElementsByClassName( class_name );
    for( var j = gauge.length; j--; )
    {
        var e = gauge.item(j);
        var g = JSON.parse( e.getAttribute( "data-conf" ) );
        if( !g ) return;

        g.id = e.id;
        g.title = e.title;
        e.removeAttribute( 'title' );

        var c = g.size / 2;
        var r = 0.8 * c;
        var l = 2 * Math.PI * r;

        for( var i = _.urls.length; i--; ) { if( _.urls[i].url == g.url ) break; }
        if( i < 0 ) _.urls.push( { url: g.url, gauges: [ g ] } );
        else        _.urls[i].gauges.push( g );

        e.innerHTML =
            '<svg width="' + g.size + '" height="' + g.size + '">'
          + '<circle class="gauge-bg" id="' + g.id + '-bg" cx="' + c + '" cy="' + c + '" r="' + r + '" stroke-dasharray="' + ( 2 * l / 3 ) + " " + ( l / 3 ) + '" stroke-dashoffset="' + ( -5 * l / 12 ) + '"/>'
          + '<circle class="gauge-pnt" id="' + g.id + '-pnt" cx="' + c + '" cy="' + c + '" r="' + r + '" stroke="' + g.color + '" stroke-width="' + ( 0.1 * g.size ) + '" stroke-dasharray="0 1"/>'
          + '<text class="gauge-val" id="' + g.id + '-val" fill="' + g.color + '" x="' + c + '" y="' + ( 1.1 * c ) + '" font-size="' + ( 0.45 * r ) + '" text-anchor="middle"></text>'
          + '<text class="gauge-title" x="' + c + '" y="' + ( c + r ) + '">' + g.title + '</text>'
          + '</svg>';
    }

    _.urls.forEach( function( u )
    {
        _.update( u );
        setInterval( function(){ _.update( u ) }, u.gauges[0].int );
    } );
}

Gauges.prototype.set = function( id, min, max, val )
{
    var e = document.getElementById( id + '-pnt' );
    if( !e ) return;

    var r = e.getAttribute( 'r' );
    var l = 2 * Math.PI * r;
    var v = val < min ? min : val > max ? max : val;
    var dash = ( 2 / 3 ) * l * ( v - min ) / ( max - min );

    e.setAttribute( 'stroke-dasharray', [ dash, l - dash ]);
    e.setAttribute( 'stroke-dashoffset', (-5 / 12) * l );

    document.getElementById( id + "-val" ).textContent = val;
}

Gauges.prototype.update = function( u )
{
    var _ = this;
    var req = new XMLHttpRequest();
    req.onreadystatechange = function()
    {
        if( this.readyState != 4 ) return;
        var obj = JSON.parse( this.responseText );
        if( !obj ) return;
        u.gauges.forEach( function( g )
        {
            var v = g.path.split('.').reduce( function( o, k ) { return o && o[k] }, obj );
            _.set( g.id, g.min, g.max, v.toFixed( g.prec ) );
        } );
    };
    req.open( "GET", u.url );
    req.send();
}

gauge.css

@font-face {
    font-family: "7SEG";
    src: url("DSEG7Classic-BoldItalic.ttf") format("opentype");
}

.gauge-pnt {
  fill: transparent;
}

.gauge-bg {
  stroke: #808080;
  stroke-width: 1px;
  fill: transparent;
}

.gauge-val {
    font-family: "7SEG", serif;
}

.gauge-title {
    text-anchor: middle;
    fill: #C0C0C0;
}

Шрифт DSEG7Classic-BoldItalic.ttf ради прикола, можно из дебиановского пакета fonts-dseg взять. Или в формате woff2, он размером поменьше будет.

Как использовать:

<HTML>
<HEAD>
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" content="no-cache">
<META HTTP-EQUIV="Content-Type" content="text/html; charset=utf-8">
<LINK rel="stylesheet" type="text/css" href="gauge.css">
<SCRIPT src="gauge.js" type="text/javascript"></SCRIPT>
<SCRIPT>
var ups_gauges;
window.addEventListener( 'load', function() { ups_gauges = new Gauges( 'ups' ); }, false );
</SCRIPT>
<STYLE>
a.ups { outline: none; }
body { background-color: #000000; color: #c0c0c0; }
</STYLE>
<TITLE>Gauge</TITLE>
</HEAD>
<BODY>
<a href="ups/voltage.html" class="ups" title="UPS Vin, V"  id="Vin" data-conf='{"url":"data/ups.json","path":"Vin","int":20000,"min":0,"max":300,"prec":0,"color":"#40C040","size":150}'></a>
<a href="ups/load.html"    class="ups" title="UPS Load, %" id="Load" data-conf='{"url":"data/ups.json","path":"Load","int":20000,"min":0,"max":100,"prec":0,"color":"#C040C0","size":150}'></a>
<a href="ups/temp.html"    class="ups" title="UPS T, °C"   id="Temp" data-conf='{"url":"data/ups.json","path":"Temp","int":20000,"min":0,"max":100,"prec":1,"color":"#C0C0C0","size":150}'></a>
</BODY>

data/ups.json

{ "Vin": 193.2, "Load": 40, "Temp": 38.0 }

В аттрибут data-conf элемента который превращаем в индикатор пишем JSON где

url - URL источника данных для индикатора в формате JSON
path - "путь" в JSON до нужной величины, например "sensors.0.temp"
int - интервал обновления в миллисекундах
min - минимальное значение аналоговой шкалы индикатора
max - максимальное значение аналоговой шкалы индикатора
prec - число цифр после запятой для цифрового индикатора 
color - цвет индикатора
size - размер индикатора

У элементов превращаемых в индикаторы должен быть установлен аттрибут id.

В аттрибуте title указывается подпись под индикатором.

Элементам индикаторов одной группы присваеваем один класс и его имя передаём в конструктор new Gauges('class_name') когда нужно создать и запустить индикаторы.

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

Выглядит так: http://stanson.ch/gauges.png

Лицнзия WTFPL

 , вебдваноль, копрофагия

Stanson
()

Рунет гибнет как никогда раньше

Форум — Talks

Обращение г-на Ашманова:

Товарищи. Дамы и господа. Дорогие соотечественники. Как вы все знаете, сегодня Рунет гибнет особенно сильно. Гибнет он всегда и постоянно, но есть одно непреложное правило: прямо сейчас он гибнет совершенно неумолимо и навсегда.

https://ria.ru/20191023/1560067612.html

 

Jopich1
()

Jolla, с днём рождения!

Новости — Проприетарное ПО
Jolla, с днём рождения!
Группа Проприетарное ПО

14 октября 2021г. исполнилось ровно 10 лет, как создатели Jolla Ltd получили документы из Finnish Patent and Registration Office, и началась история Jolla.

На данный момент существует продукт Jolla под названием Sailfish OS вот уже 4-й версии и купленный российским бизнесом проект Аврора.

Проект основан на ядре Linux и интерфейсной библиотеке Qt. Сейчас возникла довольно интересная возможность объединить экосистемы Linux-десктопа и мобильного устройства на основе Sailfish OS за счёт AppSupport for Linux Platforms.

Jolla полна планов и сюрпризов. Удачи!

>>> Подробности

 , ,

Moisha_Liberman
()

Перепись клавиатурных извращенцев

Форум — Talks

Добра.

Так как сейчас занимаюсь таким непотребством, интересно услышать соседей по палате. Будьте добры, напишите

  • об используемой раскладке клавиатуры (QWERTY, Dvorak, Colemak, Workman etc);
  • тип клавиатуры и примерное количество используемых пальцев/лапок/копыток;
  • о переназначенных клавишах и модификаторах, если таковые имеются;
  • свои ощущения, заметки, пожелания.

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

Начну.

  • Workman и ЙЦУКЕН.
  • Обычная островная ноутбучная клавиатура с низким ходом за неимением лучших альтернатив. Неправильная десятипальцевая печать, руки не двигаю.
  • LCtrl -> LSuper, LSuper -> LMeta, LMeta -> LCtrl, Caps -> Backspace. Штатно настраивается в GNOME Tweaks.
  • Начала с Colemak, проникнулась всей прелестью. Нашла для себя недостатки, перешла на Workman, у которой сет частоиспользуемых клавиш на том же месте, но чуть иначе. Возможно, меня когда-нибудь проклянёт большой палец, который сейчас жмакает модификаторы вместо мизинца, но пока полёт нормальный. Навигация с помощью сочетаний клавиш из Emacs не сильно ломает мозг, местами даже интуитивно понятно.

 , , , ,

commagray
()

Pi-KVM - проект открытого IP-KVM на Raspberry Pi

Новости — Hardware and Drivers
Pi-KVM - проект открытого IP-KVM на Raspberry Pi
Группа Hardware and Drivers

Состоялся первый публичный релиз проекта Pi-KVM: набора софта и инструкций, которые позволяют превратить Raspberry Pi в полностью функциональный IP-KVM. Это устройство подключается к HDMI/VGA и USB-порту сервера, чтобы управлять им удаленно, независимо от операционной системы. Можно включить, выключить или перезагрузить сервер, настроить BIOS и даже полностью переустановить ОС с загруженного образа: Pi-KVM умеет эмулировать виртуальный CD-ROM и флеш-накопитель.

Количество необходимых деталей, помимо самого Raspberry Pi, минимально, что позволяет собрать его буквально за полчаса, а общая стоимость окажется в районе $100 даже в самой дорогой конфигурации (в то время как многие проприетарные IP-KVM при меньшей функциональности будут стоить от $500 и выше).

Основные возможности:

  • Доступ к серверу через веб-интерфейс обычного браузера или VNC-клиент (никаких Java-апплетов или флеш-плагинов);
  • Низкая задержка видео (порядке 100 миллисекунд) и высокий FPS;
  • Полная эмуляция клавиатуры и мыши (включая светодиоды и прокрутку колесиком/тачпадом);
  • Эмуляция CD-ROM и флешки (можно загрузить несколько образов и подключать их по мере необходимости);
  • Управление питанием сервера с помощью ATX-пинов на материнской плате или через Wake-on-LAN; поддерживается IPMI BMC для интеграции в существующую сетевую инфраструктуру;
  • Расширяемые механизмы авторизации: начиная от обычной по паролю и заканчивая возможностью использования единого сервера авторизации и PAM.
  • Широкая поддержка железа: Raspberry Pi 2, 3, 4 или ZeroW; различные устройства видеозахвата;
  • Простой и дружественный тулчейн, который позволяет собрать и установить ОС на карту памяти Raspbery Pi всего парой команд.
  • И многое другое.

Также готовится к релизу специальная плата расширения для Raspberry Pi 4, которая реализует все описанные функции, плюс множество других возможностей (подробности на GitHub). Открытие предзаказов ожидается в четвертом квартале 2020 года. Стоимость ожидается в районе $100 или меньше. Подписаться на новость о предзаказе можно тут.

>>> Подробности на GitHub

 , , , ,

liksys
()

lorify-ng новое универсальное расширение для LOR -а

Форум — Linux-org-ru

Это реинкарнация проекта lorify - скрипт+расширение, реализующее функционал схожий с тем, что добавляет куклоскрипт для имиджборд.

Расширение умеет:

  • Получать сообщения от сервера через WebSocket и обновлять контент на странице (новые комментарии, уведомления, правки)
  • Индикацию на фавиконе вкладки о количестве новых комментариев (очищается даблкликом в любом месте страницы);
    Цвета информируют о состоянии соединения с сервером (зеленый - ок, желтый - отсоединился, красный - сбой)
  • Системные оповещения о уведомлениях пользователя (для юзерскрипта требуется «разрешить сайту www.linux.org.ru показывать уведомления»)
  • Динамическая навигация по страничкам темы (по умолчанию подгружается только текущая открытая и последняя, в настройках можно задать количество подгружаемых заранее)
  • Само собой показ превью постов и ссылки указывающие на комментарии с ответами
  • Кнопки разметки и хоткеи (гайд по использованию)
  • Просмотр, масштабирование и поворачивание картинок, как для встроенных превью в топике так и доступных в тексте комментариев по прямым ссылкам (если url картинки имеет непрямой вид к нему можно добавить хэштег с названием и расширением картинки imghost.orc/24dfuh5d1#скриншот.png)
  • Цитирование с форматированием, как всего комментария так и выделенного в нем текста


Доступны следующие варианты установки

  • Юзерскрипт(тестировался с Violentmonkey)
  • Аддон для Firefox
  • Chrome (платный, нужно $5)
    • можно так же установить вручную включив на странице chrome://extensions режим разработчика и выбрав папку с исходниками расширения в качестве распакованного

WebExtension имеет некоторое преимущество перед юзерскриптом. В частности при переходе по ссылкам на другие темы форума, ищет уже открытую во вкладках, а так же умеет проверять уведомления в фоне.

>>> Страница проекта на GitHub

 , ,

uin
()

Вышла версия 0.1 программы fictionup — конвертера из Markdown в FB2

Новости — Open Source
Группа Open Source

fictionup — конвертер из формата Markdown в формат FB2, который работает из командной строки. Он поддерживает ограниченный набор тэгов, описывающих метаинформацию, необходимую для создания корректных FB2-документов.

Программа основана на библиотеке Hoedown и поддерживает расширенный вариант разметки Markdown, включающий такие возможности, как таблицы и сноски.

Лицензия — GPL 3+.

Примеры исходного (Markdown) и конвертированного (FB2) документов.

>>> Сайт программы

 , , hoedown,

cdslow
()

Не нужно... Не нужно... А что нужно?

Форум — Talks

Стало интересно, а есть ли хоть одна вещь в этом мире чтобы весь ЛОР в унисон сказал: «да, это нужно».

Все операционные системы, понятно дело, не нужны. Линукс, мак, венда, фряха, hurd, дистрибутивы, андроид, iOS — все это не нужно, по раздельности и скопом.

Всякие системы инициализации, гномы-кеды-авесомы, браузеры, проигрыватели, текстовые редакторы — все это тоже не нужно.

Языки программирования разные можно даже не упоминать, это просто музей ненужности.

Даже последний оплот всея линуксоидов — «ядреная консоль» CONFIG_VT, уже и та тоже не нужна, как, впрочем, и системд-консоль, которая ее заменяет.

Нвидия не нужна, радеон не нужен, интел не нужен, как и весь x86, что впрочем не отменяет того, что arm еще больше не нужен.

Да и вообще компы не нужны. И девушки не нужны. И дети не нужны. И вообще люди не нужны. Роботы, впрочем, еще более не нужны. Даже небо не нужно, даже аллах (да, кстати, религии тоже не нужны).

Так и что же остается?

 ,

morse
()

Легкий способ получить mesa-git, llvm-svn в любом дистрибутиве.

Форум — Linux-hardware

Немного потыкал палочкой docker и запилил образ где все собрано и работает, так же там steam, wine-staging+nine. Cо стороны хоста нужно только ядро в котором работает ядерный модуль(не блоб), и иксы с рабочим DDX драйвером, ну и версии ядра и драйвера иксов конечно не должны быть совсем древние и иметь поддержку вашего железа. Падения скорости нет, вся разница будет только в ядре и в иксах, и какие опции им заданы.

Были протестированы openSUSE, Ubuntu, CentOS, везде все работало отлично.

Так что даже на CentOS можно иметь последнюю месу без особых проблем, или на любой другой системе не боясь поломать или загадить ее.

Чуть подробнее, с тестами и инструкциями можно почитать тут

 , ,

Novell-ch
()

Lenin.Blog 0.1

Новости — Интернет
Группа Интернет

Увидела свет первая версия простого легковесного блога, поддерживающая обмен сообщениями сервер-сервер и сервер-пользователь.

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

>>> Подробности

 , ,

buratino
()