LINUX.ORG.RU

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

Как писать на Си?

Форум — Development

Возник такой вопрос в ходе эксперимента. Захотелось просто ради интереса написать перемножение матриц на Си и сравнить с чужой реализацией. Написал, начал сравнивать увидел, что мой вариант сильно медленнее, подглядел в чужом коде транспонирование матрицы перед умножением, добавил, начал сравнивать снова. И заметил интересный момент мой вариант и вариант attractivechaos с одинаковыми оптимизациями выполняются за примерно одно и то же время(ещё бы, после того как я подглядел транспонирование разница в коде стала минимальной). За исключением варианта -Ofast или комбинации -O3 и -ffast-math. Тут вариант attractivechaos ускоряется в 2 раза по сравнению с -O2 и -ffast-math, а мой нет.

Собственно вопрос: почему? И ещё более интересный: где почитать о том как писать код для наиболее эффективной оптимизации компилятором?

P.S. тестил и GCC, и Clang. Результат и там, и там одинаковый.

 

andalevor ()

Origin

Форум — Games

Победил тут мимо проходя...
Дарю инструкцию для интересующихся:

$ mkdir -p ${HOME}/Origin

В директории Origin создаём файл hchmod.c с содержимым:

#include <dlfcn.h>
#include <sys/stat.h>
#include <unistd.h>

int (*mkdir_real)(const char *pathname, mode_t mode) = NULL;
int (*chmod_real)(const char *pathname, mode_t mode) = NULL;
int (*fchmod_real)(int fd, mode_t mode) = NULL;

int mkdir(const char *pathname, mode_t mode){
  if ( mkdir_real == NULL ){
        mkdir_real = dlsym(RTLD_NEXT,"mkdir");
  }
return (mkdir_real(pathname, mode | S_IWUSR ));
}

int chmod(const char *pathname, mode_t mode){
  if ( chmod_real == NULL ){
        chmod_real = dlsym(RTLD_NEXT,"chmod");
  }
return (chmod_real(pathname, mode | S_IWUSR ));
}

int fchmod(int fd, mode_t mode){
  if ( fchmod_real == NULL ){
        fchmod_real = dlsym(RTLD_NEXT,"fchmod");
  }
return (fchmod_real(fd, mode | S_IWUSR ));
}
Собираем:
$ cd ${HOME}/Origin
$ gcc -shared -fPIC -D_GNU_SOURCE -ldl -o hchmod.so hchmod.c

Качаем и устанавливаем Origin

$ wget https://download.dm.origin.com/origin/live/OriginSetup.exe
...
$ export LD_PRELOAD=${HOME}/Origin/hchmod.so 
$ wine OriginSetup.exe

 , , , ,

superuser ()

Алгоритм увеличения длины пароля

Форум — Development

Короткие пароли легко запомнить, но они же легче и вычисляются.

Пробовал найти что-то, наподобие алгоритма или утилиты для расширения пароля. Что-то ничего не нагуглилось. Есть подобное? Чтобы имея короткий пароль, проводить шифрование как с длинным?

PS: Цель - не увеличить надёжность ключа, а предотвратить перебор.

Решение:

#!/bin/sh
#longpass.sh
#Depends: dash, coreutils

sname="LongPass"
sversion="0.20190319"
echo "$sname $sversion" >&2

tnocomp=""
tcomp="cut"
[ ! "$(command -v $tcomp)" ] && tnocomp="$tnocomp $tcomp"
tcomp="head"
[ ! "$(command -v $tcomp)" ] && tnocomp="$tnocomp $tcomp"
tcomp="sha512sum"
[ ! "$(command -v $tcomp)" ] && tnocomp="$tnocomp $tcomp"
if [ "x$tnocomp" != "x" ]
then
    echo "Not found:${tnocomp}!" >&2
    echo "" >&2
    exit 1
fi
length=128
sec="0000"
fhlp="false"
while getopts ":l:s:h" opt
do
    case $opt in
        l) length="$OPTARG"
            ;;
        s) sec="$OPTARG"
            ;;
        h) fhlp="true"
            ;;
        *) echo "Unknown option -$OPTARG"
            exit 1
            ;;
    esac
done
shift "$(($OPTIND - 1))"
pass="$1"
if [ "x$pass" = "x" -o "x$fhlp" = "xtrue" ]
then
    echo "Usage:"
    echo "$0 [options] password"
    echo "Options:"
    echo "    -l N    length longpass (default = 128)"
    echo "    -s str  security code (default = 0000)"
    echo "    -h      help"
    exit 0
fi

lpass="$pass$(echo ${pass}${sec} | sha512sum | cut -f1 -d' ')"

echo $lpass | head -c $length
echo ""

 ,

Deleted ()

tinygo 0.6.0

Новости — Разработка
Группа Разработка

TinyGo – это компилятор языка Go, предназначенный для использования в таких областях, как микроконтроллеры, WASM, а также разработки утилит командной строки.

TinyGo использует утилиты и библиотеки, написанные в проекте Go, при этом предоставляя альтернативный метод компиляции программ на основе наработок проекта LLVM.

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

>>> TinyGo.org

 , ,

anonymous ()

Проброс видеокарты в виртуалку с виндой (хвастаюсь)

Форум — Desktop

В общем я собрал с нуля новый комп и крайне успешно пробросил видеокарту в вирт. машину с виндой чтобы играть в игрушки. В итоге все получилось даже немного лучше чем я ожидал.

По ходу дела столкнулся с множеством трудностей, но готов поделиться своими свежеприобретенными знаниями с ЛОРом. Так что задавайте ваши ответы, если кому интересно, конечно.

Система:

- ASRock X470 Taichi Ultimate

- AMD Ryzen 2700X

- P. GPU: Radeon RX580

- S. GPU: Radeon 2400 HD

- RAM 32GB

- Arch Linux

Детали виртуализации: - QEMU/KVM.

- P. GPU отходит вирт. машине с Windows 10.

- Нашел два порта USB 3.0 на отдельном контроллере и в отдельной IOMMU группе, отдал виртуалке.

- Пробросить SATA контроллер не получилось, неудачно совпали группы, использую raw партицию + SSD для кэша.

- Звук по HDMI.

- Hugepages (1Gb), 8 штук для вирт. машины.

- 8 ядер отходит виртуалке, topoext включен в qemu.

- Для процессора, видеокарты и звука настроил прерывания MSI.

- На хосте использую vfio-pci.

- TianoCore UEFI BIOS.

В общем на все про все ушло 2 недели безнапряжных занятий после работы. Результат превзошел все ожидания, хотя некоторые ситуации казались что уже безвыходные, например, при перезагрузке вирт. машины намертво зависал хост.

 , ,

alex07 ()

Предоставление отчётности в nalog.ru без ЭДО посредника?

Форум — General

https://gs.service.nalog.ru/nbo/main.do - я как понимаю эта штука использует ГОСТ-ий TLS? Какой РФ дистрибутив поставить в виртуалку, где из коробки в браузер прошит ГОСТ?

Но там ещё вылезут всякие криптопро csp и т.д. Я вот думаю, если покопаться, то можно обмануть JS и завернуть вызовы на свой браузерный плагин? А дальше заюзать рутокен sdk?

Как, вообще, дела сейчас обстоят? А то у меня нервы ни к черту с этим российским крипто ПО, сломали мне сегодня семёрку в виртулбоксе.

 ,

foror ()

glib или велосипед?

Форум — Development

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

 ,

andalevor ()

Рисование на экране через драйвер минуя X11, Wayland.

Форум — Development

Интересует возможность рисования примитивов прям в память карты используя DRM, Mesa, и т.д.

Может кто-то и где то читал такие эксперимент или есть в какой-то проекте подобный хардкор?

Мысль просто через консоль запустить drm_client inage.png, и на экране картинка.

заранее спасибо всем кто откликнулся.

 , ,

mruser ()

Отзывчивость десктопа на Linux относительно других систем

Форум — Desktop

Привет!

Я у мамы программист и поэтому чужие люди попросили меня купить ноутбук, хоть я в этом ничего не понимаю. Обнаружилось интересное:

На «микрокомпьютере» c Pentium N5000 1.1 ГГц и sata-диском под Win10 холодный запуск Chrome происходит за ~1 секунду.

На моём десктопе с i3-7100 и raid0 из двух nvme под обычной Ubuntu 18.04 Chromium без дополнений запускается ~3 секунды. У хранилища на этом десктопе полоса больше 1500 МБ/c на случайном доступе и отклик 0,05 мс.

Почему такая разница? Это нормально? Есть ли лучшие практики, как на моём десктопе с Linux в 2019 году получить такую же отзывчивость?

 ,

emmawatsondtypants ()

Вот такой вот помощник

Галерея — Рабочие места

Вот так вот мы и работаем

>>> Просмотр (3120x4160, 3551 Kb)

 ,

Alexonline ()

Пиксель-арт из фотографии

Форум — Multimedia

Имеется фотография. Например, такая: https://pxhere.com/en/photo/348762 Требуется уменьшить её до 320х200 пикселей, так, чтобы она не превратилась в груду пикселей или мешанину цветных пятен. То есть с потерей большей части мелких деталей и с большими однотонными областями. Чтобы итоговая картинка была похожа на https://pic4a.ru/811/Ngi.png или https://pic4a.ru/811/9kr.png А не как в https://pikabu.ru/story/pikselnaya_grafika_v_fotografii_5356446

Кто-нибудь может посоветовать годные руководства?

Результаты применения 8Bit Photo Lab после повышения HSV Saturation:
https://raw.githubusercontent.com/tkzv/looters/master/cutscenes/dump-1.png
https://raw.githubusercontent.com/tkzv/looters/master/cutscenes/dump-2.png
https://raw.githubusercontent.com/tkzv/looters/master/cutscenes/dump-3.png
https://raw.githubusercontent.com/tkzv/looters/master/cutscenes/empty-hangar.png

 

question4 ()

Система стала долго грузиться

Форум — General

Manjaro, Nvidia, KDE

2 или 3 апдейта назад стала очень долго грузиться система: грузятся сервисы systemd, потом всё останавливается на 10-15 секунд, после чего запускаются иксы. В логах ничего не видно, кроме этой задержки:

May 03 14:29:15 main-desktop systemd[1]: Stopped Network Time Synchronization.
May 03 14:29:16 main-desktop NetworkManager[482]: <info>  [1525336156.2919] manager: NetworkManager state is now 
CONNECTED_GLOBAL
May 03 14:29:16 main-desktop nm-dispatcher[521]: req:3 'connectivity-change': new request (1 scripts)
May 03 14:29:16 main-desktop nm-dispatcher[521]: req:3 'connectivity-change': start running ordered scripts...
May 03 14:29:39 main-desktop kernel: random: crng init done
May 03 14:29:39 main-desktop kernel: random: 7 urandom warning(s) missed due to ratelimiting
May 03 14:29:39 main-desktop sddm[523]: Initializing...
May 03 14:29:39 main-desktop sddm[523]: Logind interface found
May 03 14:29:39 main-desktop sddm[523]: Starting...
May 03 14:29:39 main-desktop sddm[523]: Adding new display on vt 1 ...
May 03 14:29:39 main-desktop sddm[523]: Loading theme configuration from ""
May 03 14:29:39 main-desktop sddm[523]: Display server starting...
May 03 14:29:39 main-desktop sddm[523]: Running: /usr/bin/X -nolisten tcp -auth /var/run/sddm/{6b58ee33-ed2d-4676
-a759-cd2365c9d97a} -background none -noreset -displayfd 17 -seat seat0 vt1
May 03 14:29:39 main-desktop kernel: resource sanity check: requesting [mem 0x000e0000-0x000fffff], which spans m
ore than pnp 00:06 [mem 0x000e0000-0x000effff]

Куда, блин, копать? Всегда система за 5 секунд грузилась, теперь говнище какое-то.

 , ,

alexferman ()

Gtk4 -> GtkVideo: видеоплеер в 2 строчки

Форум — Development

В Gtk4 добавлен виджет GtkVideo. Теперь свой плеер с контролами можно реализовать также просто как и «Hello World!»:

var window = new Gtk.Window ();
var video = new Gtk.Video.for_filename ("/path/to/video");
window.add (video);
video.autoplay = true;
window.show_all ();

В качестве бэкэнда gstreamer и ffmpeg. Круто однако!

 , ,

nvl ()

mpv + vaapi Может кому пригодится.

Форум — Desktop

Время от времени возникают вопросы об ускорении vaapi в mpv. Особенно не на intel карточках. Так вот, лёд тронулся. Почитать можно в этом треде https://github.com/mpv-player/mpv/issues/5711
Вкратце - в Мезу добавили всё что надо, ну и MPV с libva свежие нужны.
Проверял на обычном h264
Наконец-то оно заработало так же эффективно как 100 лет работает vdpau. Ну почти... там есть вопросы например по деинтерлейсу...
Полезно, если AMD дропнут поддержку vdpau.

По идее должно быть достаточно (при пустом config'е)
mpv --hwdec=vaapi <файло>

Однако мне пришлось так.
mpv --gpu-context=x11egl --hwdec=vaapi <файло>
Судя по логу оно и так пытается загрузить vaapi-egl, но без этой опции фейлится.

Mesa из Padoka, mpv 28 из PPA указанного на их оф. сайте. Остальное (ядро, libva, ffmpeg) - дефолт из Ubuntu 18.04 Правда, с дефолтным ядром возможно есть какая-то нештабильность, хотя может это частная проблема. Короче всё ещё YMMV но прогресс на лицо.

$ vainfo
libva info: VA-API version 1.1.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/radeonsi_drv_video.so
libva info: Found init function __vaDriverInit_1_1
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.1 (libva 2.1.0)
vainfo: Driver version: Mesa Gallium driver 18.2.0-devel - padoka PPA for AMD CAPE VERDE (DRM 2.50.0, 4.15.0-22-generic, LLVM 7.0.0)
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            :	VAEntrypointVLD
      VAProfileMPEG2Main              :	VAEntrypointVLD
      VAProfileVC1Simple              :	VAEntrypointVLD
      VAProfileVC1Main                :	VAEntrypointVLD
      VAProfileVC1Advanced            :	VAEntrypointVLD
      VAProfileH264ConstrainedBaseline:	VAEntrypointVLD
      VAProfileH264ConstrainedBaseline:	VAEntrypointEncSlice
      VAProfileH264Main               :	VAEntrypointVLD
      VAProfileH264Main               :	VAEntrypointEncSlice
      VAProfileH264High               :	VAEntrypointVLD
      VAProfileH264High               :	VAEntrypointEncSlice
      VAProfileNone                   :	VAEntrypointVideoProc

 , , ,

mos ()

Обновление Mesa 18.0.0-18.1.0 (Решено)

Форум — Desktop

Вообще приключилась довольно странная вещь после обновления с 17.7.1 на 18+ Появилсь артефакты или что то вроде.

Часть элементов (Значки на xfce-panel, viber, значки plank,xfce-terminal) становяться ярко малиновыми и жутко ребят.

В терминале что-то прочесть трудно но при этом в играх всё ок, даже cs:go работает на ура.

При том что с 17.7.1 в cs:go только текст остальное всё плывёт, a starbound вообще не стартует.

Зачастую я запускаю Иксы с 17.7.1 и обновляю до 18.1.0 чтобы все работало нормально.

Использую драйвера amdgpu (Хотя переход на ATI проблему не решает ) arch linux карта r9 280 (Не X) 3gb (LLVM 6-7-7svn ничего не меняеться)

 , ,

gruz123 ()

Wine: не запускается плагин в Reaper, ругается на AMD-дрова

Форум — Desktop

При попытке запустить плагин из Reaper он отказывается загружаться, поясняя это словами:

"Error loading plugin! Failed to load advapi32p.dll. LoadLibrary failed with error 126: Модуль не найден."
В интернетах говорят, что такие ошибки свидетельствуют о проблемной установке АМД-драйверов. Что с этим делать под Wine? Кто сталкивался?

 , , , ,

meliafaro ()

Nix 2.0

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

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

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

>>> Полный список изменений

 , , ,

veprbl ()

Создание строки в C (СИ)

Форум — Development

Не могу найти внятного объяснения этого таинства.

Хочу создать пустую строку. Далее в коде в неё что-то записать (размер этого что-то неизвестен)

char *temp = NULL; //создаем указатель на будущую строку
int numofchars = 254; // 254 байта хватит всем


temp = (char*) malloc(numofchars+1); // выделяем память под нашу строку

strcpy(temp, "Privet, LOR");

...


free(temp);

Вопрос: правильно ли я всё делаю?

 ,

sniper21 ()

С какими опциями вы компилируете программы для продакшена в gcc или clang

Форум — Development

Собственно САБЖ.

 

sniper21 ()

Как сделать скрин всех виртуальных рабочих столов ?

Форум — Desktop

Что бы в итоге было как тут например [GNOME 3][Arch] Привыкаю к третьегному Сабж.

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

Зависимости:

apt install xdg-utils graphicsmagick wmctrl scrot bash
Скрипт:
#!/bin/bash
SCREENALL_WM_IMAGE_DIR="/tmp/`uuidgen`/";
SCREENALL_WM_NUMBERS=`wmctrl -d | wc -l`;
SCREENALL_WM_CURENT_NAME=`wmctrl -d | grep "*"`;
SCREENALL_WM_CURENT_NUMBER=${SCREENALL_WM_CURENT_NAME:0:1};

mkdir $SCREENALL_WM_IMAGE_DIR;


for ((i=0; i < $SCREENALL_WM_NUMBERS; i++ ))
do
    wmctrl -s $i;
    scrot -q 100 -d 1  $SCREENALL_WM_IMAGE_DIR$i.png
done

wmctrl -s $SCREENALL_WM_CURENT_NUMBER;
convert -append $SCREENALL_WM_IMAGE_DIR*.png "/home/$USER/vertical`date`.png"
convert +append $SCREENALL_WM_IMAGE_DIR*.png "/home/$USER/horizontal`date`.png"

rm -rd $SCREENALL_WM_IMAGE_DIR;
xdg-open ~/;
echo "Done";

Всем спасибо, всем чаю сладкого с печеньками. Zubok те вафля шеколадна одна штука.

UDP: convert не смог склеить 9 рабочих столов по горизонтали 1920x1080 (( Только 8 https://imgur.com/ij5DA51 https://imgur.com/tw0ILNs

 , , , ,

Deleted ()