LINUX.ORG.RU

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

Курс лекций по языку Scala (видео)

 ,

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

Посмотреть можно тут: https://www.youtube.com/playlist?list=PLr3MOSSJVvAFnT_qUrcFr1EpZqjEBKiUl

maxcom
()

А есть дистры, в которых из коробки разблокировка LUKS через TPM2?

 , , , ,

Чтобы как BitLocker, только LUKS.

По отдельности есть всякие systemd-cryptenroll, clevis итд., но есть ли дистрибутив, в которым всё это либо устанавливается автоматически, либо хотя бы обновляется без ручного вмешательства, с подписанными ядрами и прочим?

token_polyak
()

Redshift. Добавить бы удобств

 , ,

Redshift запускается при загрузке системы юнитом от юзера. Всё хорошо, но иной раз ночью приспичит погимповать. Захотел автоматизировать отключение и последующее включение Redshift. Ничего умнее

systemctl --user stop redshift; optirun gimp-2.10 && systemctl --user start redshift

не придумал.

Оно-то и так уже лучше, чем никак, но.

1. Если не закрыть, а свернуть Gimp, оно на место не желтеет.

2. Так хорошо, если так делать только с одной программой. Если так же сделать, например, с Darktable, то будет бардак. Запустил Gimp - разжелтело. Запустил Darktable (а Gimp не закрывал) - оно еще как надо. Теперь закрыл Darktable - оно пожелтело, хоть Gimp еще работает.

Вот же, блин, для Android есть Tasker, с помощью которого подобные вещи делаются просто.

Как бы для взрослого Линукса сделать что-то такое, что проверяло бы, есть ли среди работающих (еще лучше - среди тех, чье окно активно) процессов что-то из списка. Если появилось - чтобы systemctl --user stop redshift, если опять нет - systemctl --user start redshift.

Dementy
()

Качественное красноглазие

 ,

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

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

Перед применением следует завершить все остальные редшифты (не просто выключить).

`redshift -o -t 1000:1000 -l 0.0:0.0`

Чтобы вернуть все взад

`redshift -r`

bernd
()

Я поседел и дорос до менеджера паролей

 ,

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

Линукс расслабляет в этом плане – я привык что раз настроил и забыл.

Короче – сейчас обживаю ESR версию и восстанавливаю пароли. Грусть-печаль.

Что у нас правильного в масштабе менеджеров паролей? Пока установил KeePassXC, но я раньше таким софтом не пользовался, так что интересно что у нас есть хорошего в плане удобства и надёжности.

Usruser
()

Трудности перехода. Hex редактор

 , ,

Посоветуйте более-менее мощный hex-редактор для замены 010 Editor’a (Знаю, есть нативный, но цена как-то высоковата).

Нужно чтобы он

а) был графическим, qt|kde|gtk3

б) поиск/замена текста работала во всех открытых вкладках одновременно

в) имел встроенный скриптовый язык для обработки бинарных данных

На поддержку шаблонов данных и совместимость со скриптами 010 я уже даже не рассчитываю…

Все что я нашел - либо слишком примитивные, или консольные.

Может быть, существует какое-то расширение для vscodium которое так умеет?

hargard
()

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

 , копрофагия

По итогам Есть ли что-то типа 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
()

Требуются добровольцы

 , ,

Всем бобра!

Как все знают, есть мегапопулярный формат электронных книг HTMLHelp или попросту CHM. Я предпочитаю просматривать такие книги в kchmviewer, который устраивает всем, кроме одного – при открытии большого файла (такого, как wxWidgets-3.1.5) прога надолго задумывается и фризится. С этим мириться было нельзя и я решил запилить асинхронную работу с книгой. И таки я сделал это. Но что-то мне подсказывает, что наверняка есть косяки.

Так о чём это я?

  • Если у вас есть немного свободного времени, а заняться нечем.
  • Есть книги в формате chm.
  • Нет аллергии на Qt.
  • Вы умеете конпелять и собирать проги из сорцов.

То у меня просьба собрать это поделие, пооткрывать им книги и поделиться впечатлениями. Репозиторий https://github.com/u-235/uchmviewer

При сборке нужно переключиться на ветку async-ebook. В qmake нужно добавить флаг USE_ASYNCEBOOK=1, при сборке в cmake – флаг -DUSE_ASYNCEBOOK=ON.

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

u-235
()

Armbian на Яндекс станцию

 ,

Заблокированную яндекс станцию можно купить за не очень дорого, отсюда и такие бредовые мысли. В станции стоит allwiner r18, в мини a113x. Хочу сконфигурировать u-boot и запустить какой-то минимальной линукс. Насколько это реально и адекватно? Проблем с припаяться и прошить что-то нет. Вроде как оба процессора не редкоземельные и уже есть готовые SBC на них, но есть вопросы не понаделал ли грабель яндекс на своих платах

daaar
()

асилить емакс?

 ,

Постепенно, использование нескольких редакторов под каждую задачу начинает тяготить, таки прихожу к тому что придётся асиливать емакс, т.к. там судя по всему всё необходимое мне есть. Но с чего начать и как это сделать? Стоковые настройки у него ещё кошмарней чем у старых блендеров, и таким образом совершенно неюзабельны. Например, я так и не смог найти как просто выделить участок текста. Но смущает прежде всего обилие неочевидных хоткеев, которые ещё и пересекаются с системными. Мне эти хоткеи неудобны и тяжелы для запоминания, гораздо более удобным оказывается управление с помощью команд с автодополнением, ala blenderовское [space]-меню. Но, насколько я понял, всё это настраиваемо, посему вопрос, есть ли в природе адекватные пресеты и мануалы как всё это запилить с нуля в более-менее юзабельное состояние?

thunar
()

Как в Astra Linux назначить комбинацию клавиш для ввода символа «₽»?

 ,

В своё время задал этот вопрос на форуме Astra Linux, но там посоветовали какой-то способ для осьминогов:

Вот попробуйте так: Ctrl+Shift+U 20 b d Enter

Может есть менее замороченный способ?

Mischutka
()

Три проблемы Вайланда, как фиксить?

 ,

Гном 41

  1. Переключение раскладки происходит только со второго раза, я нажимаю shift-alt нет реакции, еще раз нажимаю происходит переключение. (при переключении на X11 все с первого раза переключается)

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

  3. Буфер обмена всегда ломается буквально через пару десятков копирования(минут 5-10 активного написания текста), между программами на нативном вайландом и программами вод xWayland, что в итоге буфер обмена в xWayland перестает работать а в Wayland продолжает. (не лечиться до перезапуска сессии)

svv20624
()

shex - мой просмотрщик двоичных файлов. С++, Vulkan, glfw3

 , , , ,

Сегодня, наконец, допилил функциональность и решил выложить исходники.

Функциональность минимальная. Можно двигать клавишами вверх, вниз, page up, page down, [shift] + F3-F9, колесом мыши, а так же мышкой двигать линейку прокрутки слева.

Просто потихоньку изучаю Вулкан. Гуй встроен в шейдер.

Всем хорошего дня!

https://github.com/alexkh/shex

svyatozar
()

Говорили что Перл старый, ни на что не способный язык. Проверим?

 , , , ,

Говорили что Перл старый, ни на что не способный язык. Проверим?

Задачка:

Необходимо для каждой пары слов получить новое слово, так, чтобы окончание первого совпадало с началом второго, например, шлакоблок + окунь = шлакоблокунь. Это слово надо вывести в стандартный поток вывода.Если слова возможно соединить несколькими способами, надо выбрать тот, что обеспечивает максимальную общую часть, например папа + папаха = папаха (а не папапаха). Необходимо написать последнее условие.

Я просто взял практически первое попавшаяся задание.

На Перле программа заняла 5 строк не считая ввода-вывода. С вводом-выводом - 7 строк.

А как у вас? На ваших Супер-пупер языках?

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

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

kompospec
()

Alibaba выпустила 128-ядерный процессор на архитектуре ARM

 , , , ,

Alibaba выпустила 128-ядерный процессор на архитектуре ARM
Группа Hardware and Drivers

18 октября по заказу компании Alibaba Group был выпущен серверный 128-ядерный центральный процессор на архитектуре ARM.

Это не первый процессор, разработанный Alibaba Group. Ранее уже были представлены чип для ускорения работы искусственных нейронных сетей Hanguang 800, процессор для встраиваемых решений на архитектуре RISC-V Xuantie 907 и серверный процессор Xuantie 910.

Новый процессор использует набор инструкций ARMv9, выпущен с использованием техпроцесса 5 нм, имеет 60 млрд транзисторов, тактовую частоту 3,2 ГГц. Поддерживаются DDR5 и PCIe 5.0. Процессор ориентирован на производство серверных платформ.

Торговое название — Yitian 710. Пока к продаже на открытом рынке не предусмотрен.

>>> Подробности (cntechpost.com)

Moisha_Liberman
()

Оболочка для MuPDF?

 

Всем привет! Начал пользоваться для просмотра pdf прогой MuPDF. Работает крайне быстро и достаточно удобно, если запомнить горячие клавиши. К тому же потребляет оч мало памяти. Подумал, что наверное можно сделать какую-нибудь оболочку, внутри которой будет само окно MuPDF, а все горячие клавиши вынесены в виде кнопок. Я не программист, но время от времени что-нибудь изучаю против плесени мозга. Для себя максимум, что делаю это bash скрипты, для упрощения работы. Изучал немного scheme, racket и python. Вопрос - на чем лучше это реализовать максимально просто? (только не java) Никакой острой нужды в такой работе нет, just for fun. (Система Linux Mint Mate 20). Под виндой это реализовано в виде Sumatra (как пишут в вики), на линухе ничего не нашел.

rustamych
()

Настройка ZSWAP/ZRAM

 , ,

Такой сабж, есть ноутбук с debian (i3/4gb ram/128 ssd), есть ли смисл играться с ZSWAP (ZRAM ?), и если да, то какой должен быть конфиг для этого, как минимум какой vn.swappiness и zswap.max_pool_percent ?

fpbeat
()

Переоценен ли K8S/Docker с некоммерческой точки зрения?

 , , , ,

Привет всем,

Работаю с Docker/K8S еще с 2018 года. Примерно с того времени, все проекты как правило вертятся в рамках Kubernetes. Неважно как:

  • в виде managed-сервисов в облоках (GKE, AWS EKS)
  • в виде unmanaged на приватных bare-metal (через kubeadm)

Да, удобно. И прошу не закидывать данный сабж общими словами на тему:

  • Докер, это новый стандарт и удобный инструмент для сборки образов
  • что К8С удобен для быстрого поднятия сред и оркестрации приложений
  • что можно лимиты ставить, и решать проблемы зависимостей системных либ

Все это понятно, известно и излишнию маркетинговую рекламу делать не надо в данном сабже. Да, спасибо всем этим новыми технологиям, они в принципе дают з/п и формируют спрос/предложение на рынке.

Речь немного у другом. Я прочел недавно пост: https://lwn.net/Articles/676831/

И некоторые слова зацепили, как:

According to Walsh’s presentation, the root cause of the conflict is that the Docker daemon is designed to take over a lot of the functions that systemd also performs for Linux. These include initialization, service activation, security, and logging. «In a lot of ways Docker wants to be systemd,» he claimed. "It dreams of being systemd."

Сейчас, я выражу непопулярную точкую зрения :) и возможно, даже «мамонтовскую» :) но лезут такие мысли в голову:

  1. Докер действительно вызывает малость ощущения systemd-wanna be в опреденном аспекте, касаемо управления приложений (не берем аспект формирования образов)
  2. Формировать лимиты по RAM, CPU и др., вполне можно через тот же systemd
  3. Для проблемы эмуляции файловой ОС, совсем необяз. залезать в Docker, есть systemd nspawn и возможность дергать Linux namespaces напрямую
  4. честно говоря совсем банальная мысль :) а чем вам сама ОС не является крутым оркестратором для приложений?

Что мне лично еще не нравится при работе с Докером и К8С:

  1. Есть ощущения излишних слоев абстракций и user mode виртуализаций. С учетом того, что большинство приложений сидит на Java, Python, NodeJS … Спрашивается, а такая ли в этом необходимость? Куда ни шло, если речь про C++ проекты, где возня с headers/линковой либ и др., где действительно есть «головная боль» в ряде моментов… Но, на Жабке или Питоне-то? Сомнительно…

  2. Учет GAPов, если вы админите условный OpenStack с виртуалками и чудо-менеджер туда еще сует Докер, то создаются впечатления, что я занимаюсь больше обслуживанием абстракций, нежели реально проектом и реальной необходимости бизнесу

  3. Много какого-то ненормального хайпа вокруг этой облачно-контейтнерной тематики, и создается впечатление, что больше хайп ради хайпа. И менеджеры… Просто устраивают некий шоубизнес в IT на данной теме (сугубо личное мнение :) )

  4. Народ, как будто бы, разучился работать со stateful-сервисами и понимать проблематику больших баз и пр. Появилось много хомячков, кто трындит про A/B, удобное перекидывание контейнеров между нодами, но очень забавно было наблюдать :) как условные хомячки пытаются юзать Postgres в рамках контейнеров, а под капотом юзать Ceph (да еще в добавок на вирт. машинах), а потом удивляться, что кластер РСУБД не может быстро работать :) Уйму слоев виртуализаций построили, хранилища - дистрибутивные, проблему синхронизаций stateful-сервисов не решают, IOPS падает :) но зато «в облачке и поды по нодам». Понятно, что в облаках накинули 1000 баксов, и проблемы производительности могут улетучатся, ну или вообще увести базы в отдельные managed-сервисы. Но, очень забавляют картины, когда пытаются решать вопросы high load на приватных серверах через призму огромного слоя виртуализаций.

P.S. повторюсь, что сказал в начале. Спасибо Докеру и К8С за работу/деньги. Но, персонально есть ощущения какой-то лабуды. Как по мне, вполне себе можно было бы даже в условном systemd вращать многие приложения без огромной прослойки виртуализаций. Иногда кажется, что лучше быть не хайповым и вне моды.

twinpeaks
()

Обратиться к компьютеру по NetBIOS имени

 

Машина с Ubuntu 18.04 подключена к VPN вот так. В этой сети (10.0.0.0/21) надо обратиться к маздай-машине, IP-адрес которой неизвестен, но известно имя NetBIOS.

Но

# ping SOME-NAME
ping: SOME-NAME: Неизвестное имя или служба
# nmblookup SOME-NAME
name_query failed to find name SOME-NAME

Что уже сделал. В /etc/samba/smb.conf поправил строчку

wins support = yes
apt install winbind libnss-winbind
В /etc/nsswitch.conf
hosts:          files mdns4_minimal [NOTFOUND=return] dns wins
systemctl restart nmbd.service
systemctl restart  smbd.service
systemctl restart winbind.service

После этого вывод ping и nmblookup не изменился.

Что еще известно. Не знаю, в тему или нет.

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

damix9
()

Немного скриншотов из консоли

 ,

На основном скрине вверху слева — finch с плагинами, справа — mps-youtube, как понятно из названия, смотрелка ютуба. Использует API от google-аккаунта, можно читать/писать комментарии к видео. Внизу слева — mc, нестареющая классика, справа — его PAGER, открытый в nano. То есть по F3, в зависимости от расширения файла, выполняется команда справа.

http://0x0.st/-kfN.png

Тут Cmus и прогноз погоды. И console-clock. Календарь cal, скриптом по полуночам обновляется.

На «основном» скрине обои сделаны с помощью патча ядра https://github.com/jirka-grunt/fbcondecor На том, где погода — fbterm.

Все скриншоты сделаны в голой, ядерной консоли, без использования иксов/вейланда — это не тайлинг в wm, это именно tty.

Дистрибутив GNU/Linux — Artix с самосборным ядром (в основе PKGBUILD от Parabola).

Ну и по традиции — скрин главной ЛОРа, открытый в links 2.25 в framebuffer.

http://0x0.st/-kfq.png

Dog
()