LINUX.ORG.RU

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

Сжатие pdf

Форум — General

Добрый день, форумчане. Прошу подсказать, как сжать много pdf файлов. Желательно gui.

 ,

copentry
()

Интересные игры без убийств

Форум — Games

Какие вы можете порекомендовать интересные (на ваш взгляд) игры, в которых не было бы убийств (вообще, ни одного и ни при каких условиях)?

 

sergey_feo
()

Один бинарник на четыре системы

Статьи — Разработка

Это текстовая версия статьи, оригинал с картинками вот тут

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

 , , , ,

alex0x08
()

Как перенести систему на другой диск?

Форум — Admin

Нужно перенести систему на другой физический диск. Я собрался просто установить на него ту же Ubuntu 22.04, затем перегрузится в лайв режиме и скопировать все файлы со старого диска в новый. Затем поправить UUID в /ect/fstab.

Ничего не упускаю?

 , ,

Suntechnic
()

2023 в мультимедии: чего ждать

Форум — Multimedia

У меня тут вышел очередной годовой обзор мультимедийщины на английском: чё было в 2022, чё ждать в 2023.

Целиком: https://librearts.org/2023/01/year-in-preview/.

TL;DR:

GIMP: большие шансы на релиз 3.0 в течение года, возможно даже полугода, больше не вливают крупные изменения, векторные слои (есть ветка git) перенесли на 3.0.2 (ничего так минорный апдейт будет). На низком старте есть еще link layers (загрузка файла в слой с обновлением).

Krita: много работы под капотом, порт на Qt 5.15, дальше хотят QML (вряд ли раньше 2024).

darktable: 4.2 вышел меньше месяца назад, пока непонятно, чего ждать, в PR есть патчи для тривиальных вещей, которые ХЗ почему до сих пор не решены (упрощенная активация кадрирования, например).

vkdt (darktable с нуля на Vulkan, Imgui и нодах): вышел первый публичный релиз, со скоростью всё хорошо, с UX всё плохо, дальше посмотрим.

RawTherapee: уже набралось патчей/веток на следующий релиз, лишь бы не продолбались опять.

Inkscape: в течение года будет релиз 1.3 со до фига полезных изменений.

Scribus (верстка, допечатная подготовка): планируют выпустить 1.6 (наконец-то), уже 14 лет, сколько можно.

Blender: 3.5 пока на стадии альфы, но явно видна работа над управлением ассетами, уже есть улучшения в Grease Pencil (какой релиз без этого), OSL можно запускать на OptiX, добавили реализацию viewport на Metal для пользователей macOS.

BlenderBIM (архитектурный плагин для Blender, построенный вокруг IFC): хотят сконцентрировать усилия на допиливании того, что уже сделано, чтоб не стыдно было профикам давать.

FreeCAD: набралось немало полезных изменений, но задрались вливать патч, исправляющий именование топологии, а без него 1.0 не выпустят.

Natron (спецэффекты и композитинг): планируют 2.6.0 с внутренними изменениями, дальше ветка 2.7 с новьём.

Glaxnimate (редактор анимации): проект очень молодой, но уже заметный, потому что быстро развивается и через MLT интегрируется с Shotcut/Kdenlive. Уже есть пачка новых фич, которых пока нет в релизах, планируется дальнейшая работа над масками.

Kdenlive: в прошлом году собрали 21 тыщу евро фонда на разработку, в этом будут на них пилить вложенные секвенции (WIP), улучшения работы с эффектами и производительности.

Olive (видеоредактор): овердохера новшеств и улучшений в прошлом году, но все еще без релиза. Если применить патч, улучшающий работу с масками, и пофиксить зависания, к релизу будет вполне готово.

Ardour: наконец-то будет простое редактирование velocity (WIP, ветка гита), ожидается поддержка контроллеров Novation Launchpad и дальнейшая работа над tempo maps (подсказка).

Zrythm (модная молодежная DAW на GTK3/libadwaita): релиз 1.0 все еще не гарантирован, но с марта прошлого года статус уже бета.

Audacity: много работы по разделению старого кода на библиотеки и отрывание привязки к тулкиту, есть патчи распараллеливания эффектов по ядрам, появилась публичная ветка с портом на Qt, но смотреть там пока вообще не на что.

MuseScore (нотный редактор): парни готовятся выпустить первое обновление 4.0 с исправлением ошибок и обсуждают планы на ближайшее время, ждём.

 

AP
()

Ноговоднего кино тред

Форум — Talks

А что лоровец смотрит и пересматривает на НГ, если есть у него такая традиция?

Мой список:

Делитесь!

 ,

alex1101
()

Кино 90-х

Форум — Talks

И снова, пятница и снова жж. ЛОР накидай кинофильмов, снятых в России в 90-ые?

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

К чему такая просьба, а к тому, что попытался найти такие, пробежавшись по всяким «кинопоискам» и не обнаружил. Даже мэтры тогда снимали откровенную халтуру и чернуху, такое у меня сложилось мнение.

От себя отмечу:

Update.

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

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

Восприятие того времени немного улучшилось.

 , , ,

vvn_black
()

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

Форум — 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
()

Просто оставлю это здесь: Игра в supertux2 с множественными `tail /dev/zero` в фоне без зависаний

Форум — Desktop

Собственно: https://youtu.be/fPnbnNX9CPE

Система на HDD, Debian 9 Mate, MemTotal=10GB, swap on zram (disksize=14GB). memavaild, prelockd и nohang-desktop работают в фоне и помогают сохранять отзывчивость несмотря ни на что.

https://github.com/hakavlad/nohang

https://github.com/hakavlad/prelockd

https://github.com/hakavlad/memavaild

Кратко: prelockd - новейшее оружие в борьбе за отзывчивость при нехватке памяти.

Спрашивайте ответы.

 

hakavlad
()

Статья: Устройство подсистемы TTY

Форум — Talks

Опубликовал статью, посвященную устройству подсистемы TTY.

Подсистема TTY — одна из ключевых особенностей Unix и Unix-подобных операционных систем.

В этой статье я постараюсь кратко, но достаточно ёмко и доступно для читателей разного уровня подготовки разобрать устройство подсистемы TTY и её взаимодействие с другими частями программной среды.

Описание архитектуры TTY, изложенное здесь, не является на 100% корректным. Некоторые части были намеренно упрощены или опущены, чтобы итоговая картина получилась более простой и цельной. Эти детали не являются критичными для понимания принципов работы TTY. При необходимости все необходимые детали могут быть восстановлены чтением страниц руководств в составе операционной системы.

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

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

 ,

wandrien
()

Симулятор схем на логических элементах

Форум — General

Убирался давече и надыбал за диваном 10 штук к555ла6 в коробочке, упали и забылось =) вот думаю что зафигачить на них полезного, рядом лежит HDD дохлый, может попробовать на логике сделать драйвер. Но чёт мне лень рисовать, хочется поиграть с логикой. Есть ли под linux простой без прибамбасов симулятор? Хотя там надо по сути цепи задержки делать и нужна поддержка конденсаторов и резисторов. Хотя можно и без задержки сам посчитаю.

P.S. А есть ли виртуальный осцилограф который можно к такому симулятору подрубить и посмотреть на синхроимпульсы которые я буду генерировать логикой?

P.P.S. Сорян если тупость, я никогда этим раньше не интересовался, касаемо такого софта.


 , , , ,

LINUX-ORG-RU
()

Поругайте поделку.

Форум — Talks

Собственно вот http://test.rentgenogram.ru

Есть сайт https://rentgenogram.ru/ на нем ежедневно сидит 500-1000 человек. Сидят, не регаются и активно там читают и качают. Хочется расспросить их что им нравится, что не нравится и дать им средство для общения.

Из фич при переходе с страницы на страницу если залогинен - переживает это

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

 

dem
()

ASCII игры по Linux

Форум — Games

Народ, кто нибудь знает ASCII игры под Linux(если точнее то под Ubuntu)? Про эти ваши Dwarf Fortress, NetHack я в курсе. Нужно больше... >:)

 ,

martin_blumen
()

IPsec

Форум — Development

Посоветуйте годные статьи/книги чтобы достаточно быстро вкатиться в IPSec с нуля.

Так же желательно получить какие-либо наводки на годные C/C++ библиотеки чтобы не пилить свой велосипед.

RFC не предлагать :)

 , ,

P9IWWwzdnJ
()

Атмосферные фильмы

Форум — Talks

Друзья, хочу попросить вас посоветовать мне какое-нибудь атмосферное кино, а то ощущение складывается, что все достойное уже пересмотрел. Что-нибудь в стиле Секретных материалов, Секретного эксперимента, даже не знаю, что еще в пример привести. Можно фильмы про IT, мистику, но только такие, которые действительно «затягивают». Спасибо заранее!

 ,

ravdinve
()

Интересные каналы о науке

Форум — Talks

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

 ,

by_zero
()

и снова (но давайте более теоретически!?) про тормоза с USB-флешкой вопрос

Форум — Desktop

добрый день!

друзья!

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

вопрос: почему во время копирования больших файлов на медленный USB-накопитель (даже из не основного диска) — вся система начинает переодически подзависать включая курсор мыши?

интересует сугубо *технические* (теоретические) детали этого механизма, а не рецепты исправления этого. да(!) я хочу чтобы оно и дальше тормозило (не хочу это исправлять!), но при этом лучше понимать природу этих явлений.

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

сможете помочь? заранее спасибо!

 , freezing, ,

user_id_68054
()

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
()

Как ограничить аппетит clangbackend

Форум — Development

Есть очень жирный проект на С++ который открыт в Qt Creator в котором включен «Clang Code Model». Проблема состоит в том, что временами процесс clangbackend уходит в себя и начинает неистово жрать время CPU. В результате чего вся система стает раком.

Понятно, что clangbackend так себя ведет не от хорошего кода (в проекте). Однако у меня вопрос: как (на уровне системы?) ограничить время CPU уделяемое процессу clangbackend (и, возможно, qtcreator)?

Багрепорт: https://bugreports.qt.io/browse/QTCREATORBUG-11640

 , ,

KennyMinigun
()

Ищу туториалы и воркшопы по настройке окружения для разработки

Форум — Talks

В каждой ОС есть удобные для разработчика способы настроить окружение: например, для C++ это

  • conan.io, brew (linuxbrew) и checkinstall на онтопике
  • brew (homebrew) на полутопике
  • vcpkg (для Visuals C++) или pacman (в составе MinGW) на оффтопике.

Во всяких нодах и питонах есть свои npm и pip.

Есть известные требования современных хипстеров:

  • Если Javascript, то надо поставить свежий Node.js, настроить linter, настроить автофоматирование, настроить Google Closure Compiler
  • Если Typescript, то примерно как JS, только вместо Google Closure Compiler будет компилятор Javascript
  • Если C++, то надо поставить свежий GCC или Clang + разобраться с линковкой STL (желательно линковать статически), накатить серию библиотек (типа boost, glm, SDL2 и т.д.), настроить себе clang-format и clang-tidy
  • И ко всему бы ещё поднять continious integration где-нибудь в Jenkins или Travis

Да вот беда, когда начинаешь разбираться что к чему настроить, вылезает куча древних руководств, которые в огромных талмудах, часто разбитых на десятки страниц, льют воду о вещах, не нужных хипстеру. И на выходе какое-нибудь старое окружение, например без C++17 и без линтеров. Или сайты с такой ужасной вёрсткой, что даже очки в толстой оправе не спасут и хочется просто закрыть их навсегда.

А встречались ли нормальные, хипстерские туториалы или воркшопы? Из разряда: здесь у нас будет окружение для $LANGUAGE_NAME, так оно будет выглядеть, такие входные требования к системе/окружению, вот серия статей, где модуль за модулем мы будем настраивать всё это. Не хочешь ставить отдельный модуль - пропускаешь статью и читаешь дальше.

Пока видел только такой воркшоп: Continuous integration для C++ разработчика. Там сразу понятно что на входе, на выходе и как это будет выглядеть.

Ну или хороший воркшоп по libFuzzer: Modern fuzzing of C/C++ Projects

Не то чтобы я новичок и нуждаюсь в пошаговых указаниях, но полгода назад самому пришлось разбираться, как нормально собрать себе свежий Clang и CMake для экспериментов с C++17 (в итоге написал небольшой shell-скрипт для сборки и для запуска checkinstall).

А сейчас на оффтопе так же разбираюсь с MinGW, который как оказалось существует в трёх вариациях (MinGW, MinGW-w64 и TDM GCC), из которых первая ещё и самая зашкварная (в ней даже заголовок <mutex> не работает, вот стыдоба-то).

 

quiet_readonly
()