LINUX.ORG.RU

Сообщения LINUX-ORG-RU

 

Ютуб у меня перестал лагать :)

Форум — Desktop

Обновление:

-Способ более не работает или будет работать не у всех.

Короче в firefox 115 ESR килобиты и вечная подгрузка раз в секунду (ну не всегда, но один фиг периодические ожидания), в firefox 127 такая же херня.

  • about:config network.http.http3 влючен

Просто ради эксперимента открыл chromium

  • Version 126.0.6478.126 (Official Build) built on Debian trixie/sid, running on Debian trixie/sid (64-bit)

Принудительно включил этот tcp over udp

И стало как раньше, скачки 20+ мегабит подгрузки на несколько секунд и мои 1080p видосики не лагают больше.

Оно походу идёт в обход кеширующих серверов ибо у http3 с этим мягко говоря проблемы. Но я даже смотреть не буду откуда именно сейчас трафик мне по нормальному летит. А то накаркаю ещё и каркуши его сломають. Кому интересно сами ковыряйтесь :)

А сначала я хотел CDNы у себя заблокировать дабы оно пыталось трафик откуда то ещё брать, а оно вот так расчехлилось.

 , видосики, ,

LINUX-ORG-RU
()

Сборка модуля ядра

Форум — Development

Решил тут на досуге opemu поковырять маленько.

uname -a
Linux gnu 6.8.9-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.8.9-1 (2024-05-15) x86_64 GNU/Linux
lsb_release -a
No LSB modules are available.
Distributor ID:	Debian
Description:	Debian GNU/Linux trixie/sid
Release:	n/a
Codename:	trixie
dron@gnu:~/Рабочий-стол/sonc$

Сейчас у меня загружено ядро 6.8.9, в Debian для него нет linux-headers в репе. Поэтому скачал

Распаковал, далее (всё успешно)

cp /boot/config-6.8.9-amd64 ./.config
make oldconfig && make prepare

Далее в Makefile модуля подменил путь

Сам Makefile для наглядности

# --force-vermagic
###################################################
MODULE_NAME := op_emu
###################################################
$(MODULE_NAME)-objs := opemu/sse3.o           \
                       opemu/ssse3.o          \
                       opemu/sse41.o          \
                       opemu/sse42.o          \
                       opemu/opemu.o          \
                       opemu/fpins.o          \
                       opemu/trap_hook.o      \
                       opemu/opemu_math.o     \
                       libudis86/syn.o        \
                       libudis86/itab.o       \
                       libudis86/decode.o     \
                       libudis86/udis86.o     \
                       libudis86/syn-att.o    \
                       libudis86/syn-intel.o  \
###################################################
obj-m += $(MODULE_NAME).o
###################################################
KBUILD_CFLAGS += -DDEBUG -g -O2 -march=native \
                                -mtune=native \
                                -mmmx         \
                                -msse         \
                                -msse2        \
###################################################
#KERNEL_PATH ?= /lib/modules/$(shell uname -r)/build
KERNEL_PATH = /home/dron/Рабочий-стол/linux-6.8.9
###################################################
export KBUILD_CFLAGS
###################################################
all:
	make -C $(KERNEL_PATH) M=$(PWD)  modules
#	-rm ./*.order
#	-rm ./*.symvers
#	-rm ./*.mod
#	-rm ./*.o
#	-rm ./*.c
###################################################
clean:
	make -C $(KERNEL_PATH) M=$(PWD) clean
###################################################

Всё ломается на этапе

  CC [M]  /mnt/STORAGE/НАБРОСКИ/opemu-linux-непонятно-что-с-лицензией/libudis86/udis86.o
  CC [M]  /mnt/STORAGE/НАБРОСКИ/opemu-linux-непонятно-что-с-лицензией/libudis86/syn-att.o
  CC [M]  /mnt/STORAGE/НАБРОСКИ/opemu-linux-непонятно-что-с-лицензией/libudis86/syn-intel.o
  LD [M]  /mnt/STORAGE/НАБРОСКИ/opemu-linux-непонятно-что-с-лицензией/op_emu.o
  MODPOST /mnt/STORAGE/НАБРОСКИ/opemu-linux-непонятно-что-с-лицензией/Module.symvers
WARNING: Module.symvers is missing.
         Modules may not have dependencies or modversions.
         You may get many unresolved symbol errors.
         You can set KBUILD_MODPOST_WARN=1 to turn errors into warning
         if you want to proceed at your own risk.
WARNING: modpost: "memcpy" [/mnt/STORAGE/НАБРОСКИ/opemu-linux-непонятно-что-с-лицензией/op_emu.ko] undefined!
WARNING: modpost: "vsnprintf" [/mnt/STORAGE/НАБРОСКИ/opemu-linux-непонятно-что-с-лицензией/op_emu.ko] undefined!
WARNING: modpost: "__fentry__" [/mnt/STORAGE/НАБРОСКИ/opemu-linux-непонятно-что-с-лицензией/op_emu.ko] undefined!
WARNING: modpost: "__x86_indirect_thunk_rax" [/mnt/STORAGE/НАБРОСКИ/opemu-linux-непонятно-что-с-лицензией/op_emu.ko] undefined!
WARNING: modpost: "_printk" [/mnt/STORAGE/НАБРОСКИ/opemu-linux-непонятно-что-с-лицензией/op_emu.ko] undefined!
WARNING: modpost: "__stack_chk_fail" [/mnt/STORAGE/НАБРОСКИ/opemu-linux-непонятно-что-с-лицензией/op_emu.ko] undefined!
WARNING: modpost: "kernel_fpu_begin_mask" [/mnt/STORAGE/НАБРОСКИ/opemu-linux-непонятно-что-с-лицензией/op_emu.ko] undefined!
WARNING: modpost: "kernel_fpu_end" [/mnt/STORAGE/НАБРОСКИ/opemu-linux-непонятно-что-с-лицензией/op_emu.ko] undefined!
WARNING: modpost: "__x86_indirect_thunk_rdx" [/mnt/STORAGE/НАБРОСКИ/opemu-linux-непонятно-что-с-лицензией/op_emu.ko] undefined!
WARNING: modpost: "ftrace_set_filter_ip" [/mnt/STORAGE/НАБРОСКИ/opemu-linux-непонятно-что-с-лицензией/op_emu.ko] undefined!
WARNING: modpost: suppressed 11 unresolved symbol warnings because there were too many)
make[3]: *** Нет правила для сборки цели «/mnt/STORAGE/НАБРОСКИ/opemu-linux-непонятно-что-с-лицензией/op_emu.ko», требуемой для «__modfinal».  Останов.
make[2]: *** [/home/dron/Рабочий-стол/linux-6.8.9/Makefile:1854: modules] Ошибка 2
make[1]: *** [Makefile:240: __sub-make] Ошибка 2
make[1]: выход из каталога «/home/dron/Рабочий-стол/linux-6.8.9»
make: *** [Makefile:34: all] Ошибка 2

Как сгенерировать Module.symvers от текущего ядра?

Заранее, тут нету, в смысле нет каталога build что симлинк на /usr/src/linux-headers-6.8.9 котрого тоже нету ибо нет пакета. И где Module.symvers текущего загруженного ядра тогда брать? Типа собирать из исходников со своим конфигом и от туда? А без этого как? Например я хочу собрать модуль для 10ти ядер, которых даже в дистрибутиве нет, что мне каждое собирать? Пока не нагуглил, вот спрашиваю

/lib/modules/6.8.9-amd64$ ls
kernel             modules.builtin.alias.bin  modules.dep.bin  modules.symbols
modules.alias      modules.builtin.bin        modules.devname  modules.symbols.bin
modules.alias.bin  modules.builtin.modinfo    modules.order
modules.builtin    modules.dep                modules.softdep

Давно в таком виде всё это не тыкал, что я упускаю, где что недопонимаю? Сонный уже, колпачок не варит. Вот блин приключения на ровном месте, хехе.

P.S. Чисто для проверки сборки подсунул Module.symvers из /lib/modules/6.9.7-amd64/build, всё успешно собралось, но модуль такой загрузить нельзя понятное дело. Это так, для справки

Косвенно решено:

 , , symvers, , сборка модуля

LINUX-ORG-RU
()

До завтра

Форум — Talks

У вас осталось меньше 15ти минут. Я бы таймер повесил на главной. Прикольно бы было.

 , , ,

LINUX-ORG-RU
()

M3U плейлисты на вашем ПеКа

Форум — Talks

Сидел свою коллекцию ссылок разбирал, в том числе на видео по разной тематике, оно разбросано по разным плейлистам и хуже того по разным площадкам, вопщем проще было тематические плейлисты из разных мест объединить в один M3U файлик, выкинуть ненужное и смотреть уже на локальном плеере, а не прыгать в браузере туда сюда. Для этой специфической хотелки вот утилитка, может кому надо , это просто обёртка над yt-dlp.

Пример

m3u-tube 'https://youtube.com/playlist?list=PL4FxkpKzI-TpB2seZeP4IZ8_NSad7G9hm&feature=shared' 

Вывод

#EXTM3U
#EXTINF:-1,'Bill Gates - Deposition Part 4 of 12:'
https://www.youtube.com/watch?v=HhdDZk45HDI
#EXTINF:-1,'Bill Gates - Deposition Part 5 of 12:'
https://www.youtube.com/watch?v=n_yI27mVHc4
#EXTINF:-1,'Bill Gates - Deposition Part 6 of 12:'
https://www.youtube.com/watch?v=GDjAYvnKL8c
#EXTINF:-1,'Bill Gates - Deposition Part 7 of 12:'
https://www.youtube.com/watch?v=aqNE7qGHiLQ
#EXTINF:-1,'Bill Gates - Deposition Part 8 of 12:'
https://www.youtube.com/watch?v=v8QbaOvFHyk
#EXTINF:-1,'Bill Gates   Deposition Part 9 of 12:'
https://www.youtube.com/watch?v=odJNphz9GPg
#EXTINF:-1,'Bill Gates   Deposition Part 11 of 12:'
https://www.youtube.com/watch?v=YBPITEcCYb0
#EXTINF:-1,'Bill Gates   Deposition Part 12 of 12:'
https://www.youtube.com/watch?v=is0LVBlYPsM

Справка

[Usage: m3u-tube -u [URL] -o [FILENAME]

This simple util generate M3U playlist from
youtube, rutube playlists or maybe other web sites.
Multiple playlists can be combined into one M3U playlist.
yt-dlp does all the work, m3u-tube just generates the output.

Argsuments:

    -                       Read one or more URL from pipe
    -h --help               This help message
    -u --url     [URL]      One or more playlist URL links
    -i --input   [FILENAME] Filename for read URL links
    -o --output  [FILENAME] Falename for save M3U playlist
    -v --verbose            Show processing log, and enable yt-dlp warnings
    [URL]                   One or more playlist URL links, divide space

    If use multiple URL links, they combine in single M3U playlist.
    Multiple links are separated by a space or new line. Bad links or
    links without playlists ignored with information message.

Examples:

    m3u-tube -i urls.txt -o play.m3u    # create M3U from file with URL links
    m3u-tube 'url' -v > out.m3u         # create M3U from link, show processing
    m3u-tube 'url1' 'url2' 'url3'       # concat three playlists to one M3U
    cat urls.txt | m3u-tube -           # create M3U from pipe data
    cat urls.txt | m3u-tube url1 - url2 # combine pipe and argumens

Notice:

    If playlists not collected... Well, sometimes websites broken,
    You need update yt-dlp to latest or add changes in yt-dlp for support.
    For check what is broken try run it:

    yt-dlp --flat-playlist --print url 'your_url_playlist'

See also:

    yt-dlp(1)


Исходники

git clone https://gitflic.ru/project/blogdron/m3u-tube.git

Всё я спать. В 5 утра огород копать :(
Досвиданья

 , ,

LINUX-ORG-RU
()

Ежегодная конференция «Свободное программное обеспечение в высшей школе»

Форум — Talks

Только заметил, прямая трансляция.
Может кому интересно. Сейчас что-то про науку

 , ,

LINUX-ORG-RU
()

Lua Base64

Форум — Development

Наговнокодил вот, может кому пригодится, работает под

  • LuaJit
  • Lua5.1 с дополнительным внешним модулем bit32
  • Lua5.2
  • Lua5.3
  • Lua5.4

Пример:

local base64 = require("base64")
local base = base64.encode("Hello World!")
local text = base64.decode("SGVsbG8gV29ybGQh")
print(base,text)

Свой алфавит кодирования

local base64 = require("base64")

local basename = 'mybase64'
local alphabet = 'ABCDEFGcdefghijHIJKLMN0123456789*?abkOPQRSTUVWXYZlmnopqrstuvwxyz'
local endcode  = '@'

assert(base64.register(basename,alphabet,endcode))
local base = base64.encode("Hello World!","mybase64")
local text = base64.decode("KGNV5Gw*Nqxm5GI?","mybase64")
print(base,text)

Днищекод:

Вроде правильно работает.
Всякую фигню принимал в base64 из сети, вроде норм.
Досвиданья

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

 ,

LINUX-ORG-RU
()

Свистопердулька для вашего ПеКа

Форум — Talks

Ой всё! Устал, надоело пока, ничего не работает! Наверное заброшу но буду пытаться!, поэтому вываливаю как есть.
Работает кое-как только под Cinnamon и конечно X11

Валва она же Wallwa это дура на Lua которая позволяет запускать окошечки в режиме «обоев», это скрипт использующий другие программы для свое работы, может жрать ссылки, видеофайлы, картинки и прочее что умеет жрать mpv и показывать как живые обои, запускать просто программы и программы в прозрачном терминале. После запуска приложения хранит их состояния, можно поставить всё на паузу, закрыть и открыть разом, вернуть в обычный режим для позиционирования, позиционировать выжделением мышкой, прозрачность там, центрирование и прочее. Каждой программе даётся имя начинающиеся с @ а далее либо имя программы, либо ссылка или файл. Для запуска программы в прозрачном терминале нужно написать + передименем программы.

Видео презентация на память

Негодники (+пердолинг со сборкой вспомогательных утилит там ещё)

Расписывать и описывать что да как лень, один фиг это не до конца готовое, поэтому просто скопирую сюда выхлоп --help.

Usage: wallwa [URL|FILE|APPLICATION|+APPLICATION]

 This utilite execute GUI application or open mediafile
 or execute CLI application in transparent terminal and
 move any this variants to desktop background like wallpaper.
 Working only under X11 Xorg.

 Wallwa command line options give maximum 2 arguments
 first afrument is string ID started at '@' symbol it
 wallwa item name, after item can be URL,FILE or executable app
 wallwa use mpv for play mediacontent every time in fullscreen mode
 as wallpaper, wallwa use urxvt terminal in transparent mode for CLI.

 If first argument not set, automanicly set and use @default item

Arguments:

    -h  --help         Show this help message
    -i  --info         Show items list
    -l  --load         Load selected item
    -la --load-all     Load all items
    -m  --mouse        Select item position and size uses mouse
    -g  --get          Get selected item as normal window
    -ga --get-all      Get all active items as normal window
    -s  --set          Set selected item to background
    -s  --set-all      Set all active items to background
    -t  --top          In background mode move selected item to up
    -t  --top-all      In background mode restack all items in forward range
    -b  --back         In background mode move selected item to down
    -b  --back-all     In background mode restack all items in backward range
    -k  --kill         Kill selected item
    -ka --kill-all     Kill all active items
    -d  --del          Delete selected item and kill
    -da --del-all      Delete all items and kill
    -p  --pause        Pause selected item
    -pa --pause-all    Pause all active items
    -r  --resume       Resume selected item
    -ra --resume-all   Resume all items from "pause"
    -c  --center       Reposition selected item in screen center
    -ca --center-all   Rereposition all items in screen center
    -f  --full         Resize selected item to fullscreen
    -fa --full-all     Resize all items in fullscreen

    [FILE]             Open mediafile in mpv
    [URL]              Open mediastream in mpv
    application        Execute any* GUI applications in background mode
    +application       Execute any  CLI applications in transparent terminal

    [NUMBER]%                Set opacity for selected item
    [NUMBER]%%               Set opacity for all items
    [NUMBER]x[NUMBER]        Set size for selected item
    [NUMBER]:[NUMBER]        Set pose for selected item
    [NUMBER]x[NUMBER]-center Set item size for selected item
                             and centred item in screen
    *[NUMBER]x[NUMBER]       Relative change size for selected item
    *[NUMBER]:[NUMBER]       Relative change pose for selected item

In relative mode +[NUMBER] add value, -[NUMBER] sub value, [0] no change
For example:
     @itemname *+50:0   #move window to left on 50px
     @itemname *-10x+20 #sub in window width size 10px and add 20px height

More examples:
     This example show case when you have live video wallpaper and htop in
     background mode, you have 2 items @default and @wallpaper and manipulate
     this items resize, move, restack, pause, resume, close and open again, you
     can make many @items and manipulate each individually or all of them at once

     wallwa +htop             #execute htop in transparent terminal as @default item
     wallwa -m                #resize and repose htop window
     wallwa -k                #kill @default item
     wallwa -l                #load again @default item
     wallwa @wallpaper w.mp4  #play video wallpaper in fullscreen mode
     wallwa @default -t       #raise htop above the wallpaper
     wallwa @wallpaper 50%    #set transparent value for wallpaper
     wallwa -pa               #pause @default and @wallpaper
     wallwa -ra               #resume @default and @wallpaper
     wallwa -ka               #close
     wallwa -la               #run again
     wallwa -da               #delete all items and start playing again :D

     If you command for wallwa have multiple words use quotes
     For example you can run another (not urxvt) terminal

     wallwa @myhtop "xterm -fg white -bg black -e htop"

     Wallwa save size and cood position for item you can
     execute another application in current pose and size item

     ./wallwa @myhtop "xterm -fg white -bg black -e htop"
     ./wallwa @myhtop "xterm -fg red -bg blue -e htop"
     ./wallwa @myhtop +htop
     ./wallwa @myhtop +btop
     ./wallwa @myhtop "xterm -e top"

     Current wallwa implemented as Lua script and uses
     other awesome applications for its work such as

     * mpv      for playing any media content
     * urxvt    for transparent terminal for CLI applications
     * ps       for get PIDs
     * slop     for use mouse for repose and resize item window
     * xprop    for set and get window parameters
     * wmctrl   for get WID from PID (no used now)
     * xwidpid  for get WID from PID (used now)
     * xlower   for move window to low stack
     * xdotool  for relative change size and pose
     * xwininfo for information about window visible
     * realpath for give absolute path for files and applications

Notice:

     WALLWA EXECUTE PROGRAMS FROM COMMAND LINE, NO RUN DANGER
     COMMANDS, YOU SELF CHECK VALID URL, PLEASE BE CAREFUL WHAT
     COMMANDS YOU PASS TO RUN. This doesn't just apply to any terminal input.

     wallwa can make "Bad Window" erros, becouse Xorg async.
     If you see "Bad Window" error try

        #reload all items
        wallwa -ka ; #kill all
        wallwa -la ; #load all

        #or delete all items
        wallwa -da

    *Some GUI applications work uncorrect in background mode, for example
     chromium,firefox,tilix,gnome-terminal and maybe other applications
     not work correctly in background mode or no change state to background
     This windows have multiple WID`s and now correctly spawn in background
     but uncorrect behavior with options -g, -s, -b, -t manipulations.
     If window have single WID all works fine

     wallwa is prototype util, maybe reimplemented in future.

Под Cinnamon тоже есть косяки, иногда окно продолжает держать фокус
и нужно кликнуть по рабочему столу куда-то. С другими WM/DE бедные беды
на большиснтве идёт перекрытие рабочего стола, в xfce4 всё проваливается под него.
Там делает кто как у некоторых рабочие столы без _NET_WM_WINDOW_TYPE_DESKTOP пашут.
Не всё так красиво под иксами тоже. Пока думаю, может чего и придумаю. Идеи есть, но…

А иногда всё нормально, может генерировать Bad Window
Может быть кому-то пригодится
Досвиданья :(

 , , wallwa, , живые обои

LINUX-ORG-RU
()

Получить WID из PID

Форум — Development

Запускаю через скрипт приложение

  • (appname 2>&1 > /dev/null) & echo $!
  • Читаю результат $! получив PID отпочковавшейся дочки
  • Запускаю wmctrl -lp ищу в строке PID и забираю соответствующий WID
  • Всё, я довольный, могу через WID манипулировать окном и пришибать процесс через PID точно зная что есть активная пара PID/WID и я не пришибу случайно что-то иное.

Всё работает. Но с некоторыми приложениями например glxgears беда. PID я его получаю, а вот WID найти не могу, да я могу wmctrl без параметров запустить, мышкой кликнуть на окошечко и получить WID, но это не то, не получается зная лишь PID получить WID. С большинством приложений проблем нет, а тут уже не знаю где искать. Сейчас ситуация такая что я запускаю приложеньку, жду несколько секунд пытаясь получить WID окна, если не получилось, грохаю процесс, ну и типа фиг с ним, не судьба :(

Не сообщает _NET_WM_PID оно, жопка такая. Выхода нет? Ключ поверни и по-ле-те-ли И однозначно не определить?

Варианты поиска по заголовкам окон и по содержанию командной строки не прокатят, заголовка может не быть вовсе и могут быть много окон с пустыми заголовками. Блин :(

Решение:

 , window id, ,

LINUX-ORG-RU
()

Разбраинфакaлка данных на вашем ПеКа

Форум — Talks

В прошлый раз данные на домашних ПеКа захренакались, настало время их расхренакать обратно с помощью квинтэссенции говнокода, обычно все хвалятся что пишут brainfuck интерпретатор там в 200 байт, а то и меньше, но у инвалидов мозга типа меня своя олимпиада, поэтому размер интерпретатора 1200+ строк и 45+ килобайт весом. И это я ещё сократил, оставив попытки раскручивать циклы поняв что это глупая затея лишь тогда когда сделал действительно корректную раскрутку циклов во время исполнения через собственно генерацию раскрученных трасс циклов. Ну и ладно.

Собственно вот зачем интерпретатор

Для возможности непрерывно исполнять код который генерируется через Браинфакалка данных вашего ПеКа по мере его генерации , а не просто загрузить всё и потом выполнять.

Конечно Lua не для этого и тормоза, но в режиме исполнения под Luajit вполне себе терпимо

Да, это в режиме тупой транcляции в Lua код и его исполнения.

Всё вроде бы я наигрался, эксперимент закончен. Может кому надо, есть утилита и модуль который можно использовать самостоятельно, дебаг, трассировка исполнения, возможность отключать часть или все оптимизации, и запускать из под разных реализаций Lua не через правку исходника, а через ключик. Всякая хрень с учётом типа конца строк EOL ,\r,\r\n,\n и поведения окончания данных EOF ибо некоторые браинфук программы хотят специфичных вещей.

Описание параметров

Usage:  braintractor -i [FILE] -o [FILE]
        braintractor -e ',+.+.+.+.+.+.+'
        cat mandelbrot.bf | braintractor

 Execute input brainfuck code with or without
 different optimisations like transplitter to
 lua code and execute him, repeated operations
 optimisation and cycles jump optimisation.
 Cheking brainfuck syntax is correct.
 Handle debug symbol `#` and allow trace all code
 in execution time with trace lua function.
 This brainfuck language interpretor not very faster but flexibly.

Arguments:
   -h --help      This help information
   -              Execute brainfuck source code from stdin
   -i [FILE]      Execute filename with brainfuck source code
   -e [TEXT]      Execute brainfuck source code from string
   -o [FILE]      Output filename for write execution output
                  if output not set out writed to stdout

   -fi [FILE]     Send data to brainfuck programm from file
   -si [TEXT]     Send data to brainfuck programm from string


   -dj            Disable cycles jump optimisation
   -dr            Disable repeated operations optimisation
   -dt            Disable transplitter to lua optimisation
   -dz            Disable zero cell [+] [-] [<] [>] optimisations
   -da            Disable all optimisations

   -ds            Disable stream execution

   -dl            Disable set newline after terminal ouput
   -dd            Disable '#' symbol in brainfuck source code
   -do            Disable (force) any output (tracer worked)

   -sb [NUMBER]   Source buffer size for stream execution
                  minimum=1, maximum=2^31. (Default:100)
                  If posible braintractor execute this
                  chunks size or load more source code

   -tr [TEXT]     Lua function for trace brainfuck execution

   -dn            Disable check newline in input reader.
                  By default enabled checking '\n' if
                  input data ended but no have '\n' force
                  add this EOL LF symbol as last input symbol
                  this useful for varian set input as string
                  like -s 'someinput' -> 'someinput\n' you
                  can set other variant for EOL not '\n'

   -l [TEXT]      Select lua implementation for execute
                  lua5.1, lua5.2, lua5.3, lua5.4, luajit
                  By default used system '#!/usr/bin/env lua'

   Some brainfuck programs expect different behavior for
   end of line. Setting bottom transparent fix input for
   different behavior end of line. LF , CR, CRLF. You can
   enable only one variant. If set more last disable other
   By default enabled -eof_lf if input no have '\n' in line end
   force added '\n' in last input data. Use -dn for disable it

   -eol_lf        Enable check end of line and force set LF == '\n'
                  if input have '\r' or '\r\n' this option
                  change it to single '\n'. (nix way)

   -eol_cr        Enable check end of line and force set CR == '\r'
                  if input have '\n' or '\r\n' this option
                  change it to single '\r'. (old osx way)

   -eol_crlf      Enable check end of line and force set CRLF == '\r\n'
                  if input have '\n' or '\r' this option change
                  it to two end of line symbols '\r\n'. (windows way)

   Some brainfuck programs expect different behavior for end of file
   some expect write '0' in memory cell, some need save cell value
   and skip write other value in cell and some needed write -1 in cell
   Options bottom can enable one of varians. By default enabled -eol_zero
   You can enable only one varian. If set more last disable other.

    -eof_zero      If no have data to read, write 0 in memory cell m[i]=0

    -eof_eof       If no have data to read, write -1 in memory cell m[i]=-1

    -eof_skip      if no have data save cell value m[i]=m[i] (it like clamp)

    -eof_same      same as -eof_skip, just alias, it's easier to remember :)


   Notice about default execution mode and configuration:

   By default execute source maked in strem mode, brainfuck
   source load in small chunck, chunck optimised and executed
   this makes it possible to execute code as it is received,
   without waiting for it to be fully loaded. Also, this is
   only possible if it is possible to isolate independent parts
   from the flow that are not included in the body of any loop
   You can set minimal buffer for load or disable stream mode

   By default debug symbol '#' executed, you can disable it
   No cell memory limit, you can use over 30000 cells
   No memory position limit, brainfuck code can use
   negative cell indexes. If you need check memory limit
   or check index allowed ranges you can use tracer -tr

   Notice about optimisations:

                  By default all optimisations is enabled.
                  You can disable some one or all. The more
                  you disable, the slower the code will run

   Notice about input data variants:

                  If input data taked from PIPE and brainfuck
                  have read ',' command need use -fi or -si options
                  for send data in brainfuck reader ',' command.

                  If input data from file -i or string -e
                  brainfuck read from stdin. Imposible
                  use PIPE for load source code and for
                  take input for brainfuck code. Or or.

   braintractor -e ',..'                   # ok - you take interactive input
   braintractor -i code.b                  # ok - you take interactive input
   echo ',..' | braintractor -fi /dev/tty  # ok - you take interactive input
   echo ',..' | braintractor -fi input.txt # ok - input from file
   echo ',..' | braintractor -si 'a'       # ok - input from string

   echo ',..' | braintractor              # error, stdin empty after PIPE
                                          # need direct send input data
                                          # need directly use -f or -s

   About trace function:

   If you set trace function, this function be executed
   in brainfuck execution loop for any operations. But
   if you no disable repeater optimisation -dr, tracer miss
   some repeated operations, for example this code
   '+++.+++' in tracer show 3 trace becouse +++ combine
   to single '+' next one '.' and again single '+'
   if you set -dr tracer show full 7 operations per symbol.

   Example tracer:

   c - brainfuck code symbol
   i - brainfuck cell memory index
   v - brainfuck cell memory value
   r - repeated counter after operations or 1
   p - source code position, depend of optimisations, set -da -ds for correct

   -tr 'function(c,i,v,r,p) print(c,i,v,r,p) end'

   For example you can disable output -do and all optimisations
   and just use custom tracer debugger for you brainfuck code

   For example check memory usage no more 10 cells, and check negative index

   -tr 'function(_,i) if i > 10 then error('MEM OVERFLOW!')   end end'
   -tr 'function(_,i) if i <  0 then error('NEGATIVE INDEX!') end end'

   Warning: tracer execute any lua code, ANY LUA CODE! This mean
   you need set correct code, no use copypaste code from internet.
   If tracer function incorrect this application crashed.

Код и документация тут:

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

Локальные установка и удаление в $HOME/.local/

#Установка
make PREFIX=$HOME/.local install install-cli
#Удаление
make PREFIX=$HOME/.local uninstall uninstall-cli

Баги и чиcтка кода, оооой всё потом. Потому что нет времени очередная поделочка в процессе. Так и живём, тяп ляп и готово :)

Досвиданья.

 , , , ,

LINUX-ORG-RU
()

Подсветка синтаксиса для brainfuck

Форум — Linux-org-ru

Было бы неплохо, если возможно. Нужно редко, зато

Чисто для справки ссылки:

Test

>+++++[<++++>-]<--[>++++++++++++<-]>--------.>+++++++[<------->-]<+++.>+++++++[<
+++++++>-]<---.>++++++[<----->-]<+++.>++++++[<+++++>-]<--.>++++++++++++[>+++++++
++++<-]>---.>>+++++[<++++>-]<--[>++++++++++++<-]>-------.>++++++++++++[>++++++++
+++<-]>--.>+++++++[>+++++<-]>---.>>+++++[<++++>-]<--[>++++++++++++<-]>--------.>
+++++[<---->-]<+++.>+++++[<++++>-]<---.>+++++[<---->-]<++.>+++++[<++++>-]<--.>++
++++[<----->-]<++.>+++++[<++++++>-]<-.>++++++++++++[>+++++++++++<-]>---.>>+++++[
<++++>-]<--[>++++++++++++<-]>--------.>+++++[<------>-]<.>+++++[<++++++>-]<.>+++
+++[<----->-]<+++.>++++++[<+++++>-]<--.>++++++++++++[>+++++++++++<-]>--.>>+++++[
<++++>-]<--[>++++++++++++<-]>--------.>+++++[<----->-]<+++.>+++++[<+++++>-]<---.
>+++++[<----->-]<+.

Сокращение для указания подсветки ```bf норм было бы.


Отмена:
Геморная реализация и некому будет поддерживать. Ну и ладна

 

LINUX-ORG-RU
()

Браинфакалка данных вашего ПеКа

Форум — Talks

Договнокодил очередное ненужно. А именно транслятор произвольных данных в код на brainfuck который будучи исполненным выводит закодированные в нём данные. Текст, картинка, чво угодно.

Типа cat /dev/random | brainfucktor -o bigbrainfuck.b

Или устроить «матрицу» brainfucktor -i /dev/random

Так то это просто ради экспериментов, но может кому надо я фиг знаю, кодировщик в виде модуля Lua конечно же и утилита командной строки покрывающая все его возможности, из возможностей просто игра генерирования разного brainfuck кода из одних и тех же данных. Работает на любой версии Lua от 5.1 до 5.4+

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

Описание параметров

Usage:  brainfucktor -i [FILE] -o [FILE]
        brainfucktor -e 'encode this text to brainfuck'
        cat file | brainfucktor - #read from pipe
        brainfuck photo.png -o photo.bf

Encode input data to code in brainfuck language

Arguments:

   -h --help     This help information
   -             Input read from stdin
   -i  [FILE]    Input  filename for read
   -o  [FILE]    Output filename for write
   -e  [TEXT]    Input from command line argument

   -cb [NUMBER]  Cycle body size factor (>=1 default=2 )
   -cs [NUMBER]  Cycle split factor     (>=1 default=16)
   -cd [NUMBER]  Cycle distance factor  (>=1 default=64)
   -vd [NUMBER]  Value distance factor  (>=1 default=8 )
   -ch [NUMBER]  Separate input by chunks size (>=1 default=1024 bytes)
   -ml [NUMBER]  Set max line size for split output ( >=1 default 80 bytes)
   -sl           Create single line output (this disabled -ml option)
   -pc           Print currect configuration for code generation

You can skip -i option and just set filename, but filename expect first

Пример вывода Hello World! с немного разными настройками генерации

brainfucktor -e 'Hello World!'
+++++++++++[>+++++++<-]>-----.>+++++[<++++++>-]<-.+++++++..+++.>+++++++[>+++++<
-]>---.>++++++++++[<++++++>-]<-----.>+++++[<+++++>-]<-.+++.------.--------.>+++
+++[>++++++<-]>---.
brainfucktor -e 'Hello World!' -vd 50
+++++++++++[>+++++++<-]>-----.+++++++++++++++++++++++++++++.+++++++..+++.>+++++
++[>+++++<-]>---.>++++++++++[<++++++>-]<-----.++++++++++++++++++++++++.+++.----
--.--------.>++++++[>++++++<-]>---.
brainfucktor -e 'Hello World!' -cd 4
+++++++++++[>+++++++<-]>-----.>++++++++++++[>+++++++++<-]>-------.+++++++..+++.
>+++++++[>+++++<-]>---.>++++++++++[>+++++++++<-]>---.>+++++++++++++[>+++++++++<
-]>------.+++.------.--------.>++++++[>++++++<-]>---.
brainfucktor -e "Hello World!" -vd 128
+++++++++++[>+++++++<-]>-----.+++++++++++++++++++++++++++++.+++++++..+++.-------
------------------------------------------------------------------------.+++++++
++++++++++++++++++++++++++++++++++++++++++++++++.++++++++++++++++++++++++.+++.--
----.--------.------------------------------------------------------------------
-.
brainfucktor -e "Hello World!" -vd 1 -cs 8
>+++[<++++>-]<-[>+++++++<-]>-----.>+++++[<++++++>-]<-.>+++[<+++>-]<--..>+[<+++>-
]<.>+++++++[>+++++<-]>---.>++++++++++[<++++++>-]<-----.>+++++[<+++++>-]<-.>+[<++
+>-]<.>++[<--->-]<.>+++[<--->-]<+.>++++++[>++++++<-]>---.

Если использовать модуль напрямую, то он гибкий, может жрать таблицу, файл, строку
и выплёвывать возвратом строки от функции или писать в таблицу, файл, функцию. Ввод обрабатывается поблочно, чанками его размер регулируется от 1 до 2^31.

Сгенерированный код при исполнении жрёт ячеек памяти в максимуме N*2 где N количество закодированных байт, в минимуме жрёт всего 2 ячейки памяти, а дальше их переиспользует. Для исполнения больших 50+ мегебайт блоков кода с циклами нужен интерпретатор brainfuck без ограничений на память в 30000 ячеек. :D

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

- использовать на свой страх и риск

Код и документация тут

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

Локальные установка и удаление в $HOME/.local/

#Установка
make PREFIX=$HOME/.local install install-cli
#Удаление
make PREFIX=$HOME/.local uninstall uninstall-cli

Хоп и твой дистрибутив стал почти как Slackware :D

Изначально было всего 15 строчек. Но я нахлобучил дублирующегося кода и лапши на ifах до ~500 строк :D
Двойные комментарии ваще шедевр, надо было ещё и на китайском написать лол. Вроде всё.

Досвиданья.

 , , , пора спать,

LINUX-ORG-RU
()

GVim и встроенный терминал

Форум — General

Блин, Vim а точнее GVim большой я в нём запутался. Короче использую встроенный в вим терминал :term всё хорошо, но захотелось вывод скролить мышкой, а он не скролится. Полез узнать почему вобщем надо перейти в обычный режим, но по Esc он не переходит туда ибо у терминала отдельное пространство чего-то там, ладно есть комбинации мышки ctrl+w N я не псих чтобы это каждый раз прожимать надо повесить на Esc, ладно повесил tnoremap <ESC> <C-W>N, теперь всё почти хорошо, а именно ввёл что надо в терминале нажал Esc вим захватил буфер терминала и перешёл в режим Normal теперь это просто буфер который я могу что хочу делать и мышкой скролить, но вот беда если теперь нажать i или a для ввода то эта дура при нажатии и одновременном входе в режим ввода в этом терминале выполняет последнее что было введено в шелл оболочке и надо после выхода из терминала по Esc входить в него через заглавную I тогда этой фигни нету. Блин, чё этот терминал так черезжопно там встроен. Не мне нравится, прям няяяяяяя, оч удобно, но ну вот захотел я мышкой в нём скролить и выходит в нём в обычный режим по Esc, но случается то что выше описал. Как нормально сделать и без побочных эффектов?

  • 1 Ввести :term открыть терминал
  • 2 Нажать Esc выйти в терминале из режима ввода в режим Normal
  • 3 Скролить мышкой буфер терминала в Normal режиме терминала
  • 4 Нажать i войти в терминале в режим ввода и писать туда команды

  • 1 - работает [ОК]
  • 2 - работает если в конфиге задан бинд tnoremap <ESC> <C-W>N [ОК]
  • 3 - работает если в конфиге задана set mouse=a полная поддержка мышки [ОК]
  • 4 - работает через жопу, при нажатии i исполняется команда в терминале последняя, надо жать I [НЕЕЕЕ ОК]
    • я не хочу жать I, я хочу жать i так же как для всего остального
      • я не хочу переназначать i на I из за этого для всего

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

100 лет уже в конфиг вима не залезал, всё устраивало, но вот полез хотелки делать и застрял :( Я что-то, где-то не вижу или недопонимаю, хотелка с виду простая, но то что у терминала там свой скоуп, свои назначения клавиш только геморой дают. Блин. Как быть то.

dron@gnu:~$ vim  --version
VIM - Vi IMproved 9.1 (2024 Jan 02, сборка от Apr 27 2024 15:01:43)
Исправления: 1-377
dron@gnu:~$ uname -a
Linux gnu 6.7.12-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.7.12-1 (2024-04-24) x86_64 GNU/Linux

 , , , ,

LINUX-ORG-RU
()

Опубликован релиз-кандидат эталонной реализации языка Lua 5.4.7-rc1

Новости — Разработка
Опубликован релиз-кандидат эталонной реализации языка Lua 5.4.7-rc1
Группа Разработка

Язык Lua – это мощный, переносимый, легковесный, встраиваемый и простой язык программирования, разработанный и развиваемый Роберту Иерузалимски в PUC-Rio вот уже более 30 лет.

Это минорный релиз посвящённый исправлению ошибок и улучшению документации. К использованию приглашаются все, кого затронули ошибки прошлой версии и все, кто имеет желание протестировать текущую. Если вы заметили ошибку или желаете связаться с авторами языка, это возможно исключительно через список рассылки. Любые патчи и рекомендации приветствуются, но важно помнить что они с вашей стороны будут всегда нести рекомендательный характер и будут так восприняты.

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

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

 , , ,

LINUX-ORG-RU
()

Видео записывалка для вашего ПеКа

Форум — Talks

Я внезапно открыл для себя утилиту slop, очень удобная и полезная в домашних делах. Ага я слоупок.
Надо было записать кусочек экрана несколько раз и удобно выделять мышкой область на экране для записи видео.

Наваял вот, может кому пригодится.

  • Переменная use_recorder задаёт то чем вы ходите записывать
    • ffmpeg
    • recordmydesktop
  • Если передать скрипту аргументы то они прокинутся к утилите записи
    • например record --no-sound если используется recordmydesktop
      • но прокидывайе аргументы с умом рм рф и прочую копипасту туда писать не надо.

Ключи под себя

  • ffmpeg быстро пишет и сразу кодирует без звука.
  • recordmydesktop со звуком и отложенным долгим кодированием

Сам использую нубский recordmydesktop так как вокруг него не надо с бубном бегать по поводу звука (он меня сломан на ПК и чисто программный идёт по сети)

touch $HOME/.local/bin/record
#copy-paste code
chmod +x $HOME/.local/bin/record
  • Прерывать запись через ctrl+C
  • Зависимости в теле написаны какие надо.

Если кажется многословным перепишете на bash, всё можно переписать на bash :)

#!/usr/bin/env lua
-----------------------------------------
-- Depends for recordmydesktop: ogv out
-- apt install lua slop recordmydesktop
-----------------------------------------
-- Depends for ffmpeg: mp4 out
-- apt install lua slop ffmpeg
-----------------------------------------
-- Use ffmpeg or recordmydesktop recorder
--local use_recorder = 'ffmpeg'
local use_recorder = 'recordmydesktop'
-------------------------------------------------------------------------------
local separator = ' '
local arguments = table.concat({...},separator)
local visualfmt = '-b 5 -c 0.5,1.0,0.5,0.8 -o'
local slop_pipe = io.popen('slop -f "%x %y %w %h" '..visualfmt)
local x,y , w,h = slop_pipe:read('*l'):match('(%d+) (%d+) (%d+) (%d+)')
-------------------------------------------------------------------------------
local out_filename = os.date('%Y-%m-%H-%M-%S');
-------------------------------------------------------------------------------
local command = {};
-------------------------------------------------------------------------------
if use_recorder == 'ffmpeg' then
   command = table.concat(
   {
       'ffmpeg ','-f x11grab';
                 '-video_size',w..'x'..h;
                 '-grab_x',x;
                 '-grab_y',y;
                 '-i :0.0';
                 '-framerate 60';
                 '-vcodec libx264';
                  arguments;
                  out_filename..'.mp4';
   },separator)
   print('Run command:\n'..command)
   os.execute(command)
   return 0
end
-------------------------------------------------------------------------------
if use_recorder == 'recordmydesktop' then
   command = table.concat(
   {
       'recordmydesktop','-x='..x;
                         '-y='..y;
                         '--width='..w;
                         '--height='..h;
                         '--fps=60';
                          arguments;
                         '-o',out_filename..'.ogv';
   },separator)
   print('Run command:\n'..command)
   os.execute(command)
   return 0
end
-------------------------------------------------------------------------------
print("[ERROR]: Bad 'use_recorder' value.")
return 1

Вроде мелочёвка, а очень и очень удобно.
Всё. Досвиданья.

 , slop, , ,

LINUX-ORG-RU
()

Как понять что ты тупой?

Форум — Talks

Очень просто! Нужно встретить задачу которая понятна буквально на интуитивном уровне. Открыть редактор и не суметь её решить сходу.
В голове переклинивает, ты точно знаешь что тебе надо делать и ступоришься на том как делать. Замираешь и смотришь на экран как додик последний. Кабзда, если извилины шевелятся то у моих кататония. Это фиаско братан :D Я не знаю с чем это сравнить, это как налить чаю, взять ложку и думать, тебе туда соль сыпать или сахар и офигевать от того что ыт об этом вообще задумываешься. Это просто пример, такой шизы у меня нету. Но хотелось яркого сравнения.

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

Exercise 6.5: Write a function that takes an array and prints all combinations of the elements in the array.
(Hint: you can use the recursive formula for combination: C(n,m) = C(n -1, m -1) + C(n - 1, m). To generate
all C(n,m) combinations of n elements in groups of size m, you first add the first element to the result and
then generate all C(n - 1, m - 1) combinations of the remaining elements in the remaining slots; then you
remove the first element from the result and then generate all C(n - 1, m) combinations of the remaining
elements in the free slots. When n is smaller than m, there are no combinations. When m is zero, there is
only one combination, which uses no elements.)

Упражнение 6.5: Напишите функцию, которая принимает массив и выводит все комбинации элементов в массиве.
(Подсказка: вы можете использовать рекурсивную формулу для комбинации: C (n,m) = C(n -1, m -1) + C(n - 1, m). Чтобы сгенерировать
все C(n, m) комбинаций из n элементов в группах размером m, вы сначала добавляете первый элемент к результату и
затем генерируете все C(n - 1, m - 1) комбинации оставшихся элементов в оставшихся ячейках; затем вы
удаляете первый элемент из результата и затем генерируете все C(n - 1, m) комбинации оставшихся
элементов в свободных ячейках. Когда n меньше, чем m, комбинаций не существует. Когда m равно нулю, существует
только одна комбинация, в которой не используются элементы.)

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

И йя не смог. Вот прям сразу взять и написать. Истории успеха это конечно здорово, когда всё получается, когда всё складно и ладно, выезжаешь во всё лишь получив вводные. Вот про это все пишут все это смакуют. А вот провалы, спотыкания на ровном месте, затупы вселенских масштабов. Они у вас бывают? А как часто? Есть тру стори, похожего характера, когда вас прям переклинивало/ет? В расчёт не берутся случаи когда вы я фиг знаю дебажите неизвестный вам протокол или делаете что-то для области знаний где для вас вся терминология в новинку, там то понятно сходу по определению невозможно ничего сделать. Но вот в обыденных ситуациях, ну или не совсем оных. Признавайтесь! Чё я один такой глупый? :D

А линукс тут при том что линукс для умных.

 , , , профнепригодность,

LINUX-ORG-RU
()

У кого на улице сугробы?

Форум — Talks

Ну не сугробы, но пару сантиметров уже навалило. Метель стоит как в феврале.

 , , , ,

LINUX-ORG-RU
()

Отрицательная масса у фундаментальных (и не только) «частиц»

Форум — Science & Engineering

Беседа с физиком теоретиком: Анатолием Григорьевичем Шкловским и его теоретические выкладки по поводу отрицательной массы и как она проявляется. Влияя и объясняя как фундаментальные так и макроскопические процессы и явления.

Кратко – Допущение существования элементарных частиц с отрицательной массой. И объяснение через них таких вещей к примеру как наличие воды на земле как косвенное следствие вытеснения протонов из земного ядра и регистрируемые сверх энергетические космические лучи с энергиями в терраэлектронвольт и многое многое другое включая прямое объяснение огромного количества других уже существующих физических эффектов, явлений, наблюдений. То есть при должной теоретической части уже подтверждается текущими экспериментами (вернее теория объясняет то что в них происходит)

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

Ты физик? Жопа горит? :) Опровергни или бабабол :D
Дискас.

 , , , ,

LINUX-ORG-RU
()

Чего Debian штормит?

Форум — Talks

Не ставится gnumeric полез поискать пакет

Service Unavailable

The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.
Apache Server at packages.debian.org Port 443

А до этого микродрама

И там сообщения ниже по ходу драмы.

Раньше такой фигни не было. Есть новости? Мол «Мы там что-то обновляем блабла»? Не могу найти.

Полез уточнять

Да удалили из testing. Но без причины (вернее она есть, но не повод для удаления)

Чёблин опять на stable отказываться или на до unstable обновляться? :)

Смысла в этом посте нет, я просто побубнить. И apt новый == дура!

Я всё понимаю это testing специально на нём и сижу, но чёт со всех сторон по мелочи, то это то сё. Для меня всё это дикость, *ть лет всё как часы, и на тебе кучка мелких пакостей разом. Gnumeric через пару дней (или прямо сейчас) вернут, не страшно. Эт я так к слову что поисковик падать стал.

 

LINUX-ORG-RU
()

DOOM 30 Лет. МЕГАВАД от русского сообщества всем в подарок.

Форум — Games

Сама новость и описание на gamedev.ru



Закидываете в один каталог

  • 30years.wad
  • DOOM2.WAD
  • GZDoom-g4.11.1-x86_64.AppImage

И запускаете

./GZDoom-g4.11.1-x86_64.AppImage -file 30years.wad

DOOM2.WAD подхватится сам

UDP: Тут ниже чёт панику наводят про звонки от киркоровых и шифровальщики. Помнитя, бинарники левые эта всегда апасна. А то мало ли… Ну и есть firejail (не советую с appimage люто тормозит, обычные архивы брать) или вируталки если что, а то мало ли чё! Воть

 , , ,

LINUX-ORG-RU
()

Вырос на годик 🥳

Форум — Talks

 , , , инкремент,

LINUX-ORG-RU
()

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