LINUX.ORG.RU

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

iLoud MTM?

Форум — Talks

Привет, @ergo.

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

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

Расскажи про iLoud подробнее. Можешь ли ты их абстрактно рекомендовать? Если нет, то почему именно они и чем ты руководствовался при выборе?

Или это просто «хорошие затычки», а для качественного звука у тебя что-то другое? Или наоборот, это какая-то очень специализированная железка, которая не имеет смысла в общем случае?


Заодно скажи пару слов про «пресонус» с наушниками, если не затруднит. Но это уже второстепенный вопрос.

 , , ,

intelfx
()

Реализован способ задействовать «виртуализацию» видеокарт NVIDIA на младших моделях

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

Группа энтузиастов реализовала хак, отдающий PCI ID «профессиональных» карт-ускорителей проприетарным драйверам от компании NVIDIA для Linux. Хак отрабатывает как на этапе опроса присутствующего в системе оборудования, так и на этапе проверки верификации ID карты через цифровую подпись драйвером.

«Обманутые» таким образом драйвера публикуют интерфейс, необходимый для эмуляции нескольких виртуальных карт на одном физическом устройстве. В частности, это позволяет использовать аппаратные возможности карт в операционных системах, запущенных под управлением qemu-kvm.

Ниже представлена таблица соответствия реальных карт их профессиональным моделям, реализованная в хаке.

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

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

 ,

LamerOk
()

Защищаем чистый кэш файлов при нехватке памяти для предотвращения пробуксовки и livelock

Форум — Talks

Во-первых, вышла новая линейка для этой самой защиты: https://github.com/hakavlad/le9-patch/tree/main/le9db_patches.

В описании патчей все написано.

Спрашивайте ответы, если еще остались вопросы.

 , , ,

hakavlad
()

Сделал публичный порт-форвардер через SSH, оцените

Форум — General

ssh ssh-j.com

Сервис для проброса SSH-подключения из-за NAT. Никаких доп. программ ни на сервере, ни на клиенте. Никаких регистраций и временных доменов/портов. Одна команда для проброса SSH, одна для подключения.

Хоть ssh-j и позволяет пробрасывать любые сервисы, предлагается публиковать только порты SSH, чтобы не нарушался принцип end-to-end шифрования.

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

Буду рад услышать отзывы.

 , ,

ValdikSS
()

Xilinx открыла исходный код Vitis HLS

Новости — Open Source
Xilinx открыла исходный код Vitis HLS
Группа Open Source

Компания Xilinx, выпускающая интегральные микросхемы программируемой логики, открыла исходный код Vitis HLS — набора инструментов, который позволяет синтезировать высокоуровневое описание логической структуры FPGA из кода на Си/Си++ (в том числе с использованием OpenCL).

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

Исходный код опубликован на условиях лицензии Apache 2.0 и доступен в репозитории на GitHub.

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

 ,

ymn
()

Proxmox на десктопе

Галерея — Скриншоты

На скриншоте самый обычный проксмокс в кластере с двумя узлами, который развернут у меня дома. KDE установлен на этот же proxmox, в нем запущен firefox, а в firefox открыта веб-морда proxmox. Такая вот рекурсия.

Предыстория

Не так давно собрал себе бюджетный сервер на Xeon e5 2660v2 под хранилище виртуалок и контейнеров. К сожалению, так как потребности в вычислительных мощностях серьезно выросли за последний год, обходится парочкой Odroid-X2, как в старые добрые времена уже не могу, да и старенький HTPC на хасвелле с пассивным охлаждением с нагрузкой не всегда справляется, особенно летом.

Изначально думал собирать на TR4 1950x, но проконсультировавшись с жабой решил собрать бюджетную конфигурацию на LGA2011 и дополнить ее AMD RX580 в виде видео.

На сервере раскатал proxmox, куда мигрировал все свои виртуалки, и который мне пришелся очень по нраву. Для стима развернул виндовую виртуалку, куда пробросил физическую видеокарту.

Встал вопрос обслуживания, так как в отличие от пассивного охлаждения этого монстра надо чистить регулярно, а глушить виртуалки не всегда удобно. Именно поэтому я раскатал на десктопе еще один proxmox и объединил с основным в кластер. Графический интерфейс накатил без всяких контейнеров и виртуалок на proxmox. Все равно под капотом это привычный и любимый мною debian.

Такая конфигурация позволяет мне временно мигрировать виртуалки на десктоп без остановки системы, чтобы почистить сервер от пыли.

Конфигурация десктопа:

  • i7-4560U
  • 16 GB RAM
  • 128GB + 256GB + 256GB SSD

Конфигурация сервера:

  • Материнка X79 PlexHD ~100$
  • Xeon e5 2660v2 ~100$
  • 64GB DDR3 ECC RAM 1866 ~200$
  • 2U корпус от Etegra (подарили, 1U БП с резервированием, бэкплейн и прочее пришлось выкинуть, а сам корпус доработать напильником и 3д-принтером.)
  • 2U тихий блок питания 500W (~6.5к рублей)
  • 16Gb Optane M.2 (~2.8k рублей)

Жесткие диски переместил из NAS’а и старых компов, докупать пришлось только оптанчик.

Хотя по количеству вышел (имхо) небольшой перебор:

1x1 Tb SSD для системы 2x6 Tb зеркальный рейд для данных 2х1 Tb полосатый рейд с bcache на оптане - площадка для сборки разного софта. Только при сборке на нем проектов типа OpenWRT/linux, удается выгрузить все ядра на 100%. Без кеша на оптане все упирается в I/O и больше 30-40% загрузить не выходит.

Также в новости про Stadia интересовались задержками при стриминге через steam. Собственно, дублирую замеры сюда:

На тесте было тупо главное меню subnautica:

  1. Софтварный энкод в 6 тредов + софтовый же декод на хасвелле: 59fps@1920x1080 задержка видео 33 мс.

  2. Софтварный энкод в 6 тредов + декодирование через QSV - 22 мс, те же 59 fps.

  3. Аппаратный AMF энкод + декодирование через QSV - 29(!) мс.

Соединение - гигабитный линк по меди через роутер.

По количеству потоков программного кодирования: 1 поток - неиграбельно 2 потока - 50 мс и 19 fps 3 потока - 30 fps, 35 ms лаг 4 потока - 30 fps, 30 ms лаг 6 потоков - 60 fps и 21 ms лаг

Вывод: программное кодирование в большое (6+) количество потоков даст лучше и по задержкам и по качеству, чем аппаратное.

В общем как-то так. Ядра выжираются почти полностью 67% от 10 ядер судя по веб-морде проксмокса. Дополнительная погрешность от VNC и самой субнаутики.

TODO:

  • Замеры энергопотребления
  • Прикрутить vagrant к контейнерам proxmox
  • Осилить chef
  • Мигрировать все веб-приложения из виртуалок в контейнеры, попутно переписав все развертывание на chef, вместо ручной настройки. Это должно сделать автообновления всего этого добра намного проще в теории. (Сейчас там все в основном на debian stable с автоапдейтами и большей частью живет на автопилоте не требуя вмешательства, кроме ритуального обновления iredmail)

 , ,

ncrmnt
()

Осваиваем ZFS: как правильно готовить?

Форум — Admin

Из чистого любопытства, просто для ознакомления, поднял две виртуалки CentOS 8.2 (15 Гб под систему lvm), 4 виртуальных диска такого же размера в ZFS RAID 10.

zfs-0.8.5-1

zfs-kmod-0.8.5-1

В систему говноскриптом поставил LAMP, подмонтировал ZFS-пулл для его файлов.

Стащил скрипт со stackexchange

#!/bin/sh

#Setup/variables:

#Each snapshot name must be unique, timestamp is a good choice.
#You can also use Solaris date, but I don't know the correct syntax.
snapshot_string=DO_NOT_DELETE_remote_replication_
timestamp=$(/usr/bin/date '+%Y%m%d%H%M%S')
source_pool=data
destination_pool=data
new_snap="$source_pool"@"$snapshot_string""$timestamp"
destination_host=hostname

# Initial send:

# Create first recursive snapshot of the whole pool.
zfs snapshot -r "$new_snap"
# Initial replication via SSH.
zfs send -R "$new_snap" | ssh "$destination_host" zfs recv -Fdu "$destination_pool"

# Incremental sends:

# Get old snapshot name.
old_snap=$(zfs list -H -o name -t snapshot -r "$source_pool" | grep "$source_pool"@"$snapshot_string" | tail --lines=1)
# Create new recursive snapshot of the whole pool.
zfs snapshot -r "$new_snap"
# Incremental replication via SSH.
zfs send -R -I "$old_snap" "$new_snap" | ssh "$destination_host" zfs recv -Fdu "$destination_pool"
# Delete older snaps on the local source (grep -v inverts the selection)
delete_from=$(zfs list -H -o name -t snapshot -r "$source_pool" | grep "$snapshot_string" | grep -v "$timestamp")
for snap in $delete_from; do
    zfs destroy "$snap"
done

На ВМ-источнике создаю в подмонтированном каталоге текстовый файл. Запускаю скрипт.

Выхлоп:

cannot receive new filesystem stream: destination has snapshots (eg. data@DO_NOT_DELETE_remote_replication_20201207101336)
must destroy them to overwrite it
cannot create snapshot 'data@DO_NOT_DELETE_remote_replication_20201207103101': dataset already exists
no snapshots were created
WARNING: could not send data@DO_NOT_DELETE_remote_replication_20201207103101:
incremental source (data@DO_NOT_DELETE_remote_replication_20201207103101) is not earlier than it
cannot receive: failed to read from stream

Хотя на целевой ВМ никаких снепшотов, конечно, нет.

ЧЯДНТ?

 , , ,

Twissel
()

SPICE или VNC при старте Xorg

Форум — General

Коротко опишу чего я хочу: из LightDM, выбирая пользователя/wm, запускать spice/vnc клиент на указанный IP. Если такое можно на другом дисплейном менеджере, то не беда.

 , , , ,

Artamudo
()

Bird не принимает маршруты после запуска

Форум — Admin

У меня почему-то bird сегодня все маршруты от пира отфильтровал. Вот фольтр:

gw=bgp_next_hop; if net = ::/0 then reject; else accept;

Самое интересное, что после перезапуска, всё стало работать. Причём сколько я дёргал, так баг воспроизвести не получилось. Bird запускается в netns. Сам netns инициализируется через init скрипт. Вот скрипт инициализации netns:

#!/bin/bash
# Configuration
EXT_INTERFACES="eth1"
NS_NAME="vrouter"
start () {
	if [ -f /opt/bird/var/run/bird.pid ]
	then
		kill `cat /opt/bird/var/run/bird.pid `
	fi
		
	if [ -f /run/netns/${NS_NAME} ]
	then
		for a in $EXT_INTERFACES
		do
			ip -netns $NS_NAME link set dev $a netns 1
		done	
		ip netns del ${NS_NAME}
	else
		true
	fi
	ip netns add ${NS_NAME}
	for a in $EXT_INTERFACES
	do
		ip link set dev $a netns ${NS_NAME}
	done
	ip link add dev vr0p0 type veth peer name vr0p1 
        ip link add dev vr1p0 type veth peer name vr1p1 
	ip link set dev vr0p0 mtu 65535
	ip link set dev vr0p0 up
        ip link set dev vr1p0 mtu 9000
        ip link set dev vr1p0 up
	ip link set dev vr0p1 netns $NS_NAME
	ip -netns $NS_NAME link set dev lo up
	ip -netns $NS_NAME link set dev vr0p1 up
	ip -netns $NS_NAME link set dev vr0p1 mtu 65535
        ip link set dev vr1p1 netns $NS_NAME
        ip -netns $NS_NAME link set dev vr1p1 up
        ip -netns $NS_NAME link set dev vr1p1 mtu 9000
	ip -netns $NS_NAME link add dev phy-net type bridge
	ip -netns $NS_NAME link set dev phy-net up
	ip -netns $NS_NAME link set dev vr1p1 master phy-net
	for a in $EXT_INTERFACES
	do
		ip -netns $NS_NAME link set dev $a up
		ip -netns $NS_NAME link set dev $a master phy-net
	done
	ip -netns $NS_NAME addr add 198.18.120.10/24 brd 198.18.120.255 dev phy-net
	#ip -netns $NS_NAME route add default via 198.18.120.1
	ip -netns $NS_NAME addr add 2a01:d0:c353:82::10/112 dev phy-net
	ip -netns $NS_NAME route add default via 2a01:d0:c353:82::1
	echo 1|ip netns exec $NS_NAME tee /proc/sys/net/ipv4/ip_forward
        echo 1|ip netns exec $NS_NAME tee /proc/sys/net/ipv6/conf/all/forwarding
	
	ip -netns $NS_NAME link add link vr0p1 name vlan101 type vlan id 101
	ip -netns $NS_NAME link set dev vlan101 up
	ip -netns $NS_NAME link set dev vlan101 mtu 9000
	ip -netns $NS_NAME addr add 192.168.254.6/30 brd 192.168.254.7 dev vlan101
	ip -netns $NS_NAME addr add 2001:db8:8:3c::5/126 dev vlan101
	ip -netns $NS_NAME link add link eth1 name vlan72 type vlan id 72
	ip -netns $NS_NAME link set dev vlan72 up
	#ip -netns $NS_NAME link set dev vlan72 mtu 9250
	ip -netns $NS_NAME addr add 198.18.125.25/30 brd 198.18.125.27 dev vlan72
	ip -netns $NS_NAME addr add 2001:db8:8:3c::2/126 dev vlan72
	ip netns exec $NS_NAME iptables -t nat -A PREROUTING -p tcp --dport 179 -j ACCEPT
	ip netns exec $NS_NAME ip6tables -t nat -A PREROUTING -p tcp --dport 179 -j ACCEPT
	ip netns exec $NS_NAME iptables -t nat -A POSTROUTING -p tcp --dport 179 -j ACCEPT
	ip netns exec $NS_NAME ip6tables -t nat -A POSTROUTING -p tcp --dport 179 -j ACCEPT
	ip netns exec $NS_NAME iptables -t nat -A PREROUTING  -d 198.18.120.10/32 -j DNAT --to 192.168.254.1
        ip netns exec $NS_NAME iptables -t nat -A POSTROUTING  -s 192.168.254.0/24 -d 192.168.254.0/24 -j ACCEPT
	ip netns exec $NS_NAME iptables -t nat -A POSTROUTING  -s 192.168.254.1/32 -j SNAT --to 198.18.120.10
	ip netns exec $NS_NAME iptables -t nat -A POSTROUTING -s 192.168.254.5/32 -j SNAT --to 198.18.120.10
	ip netns exec $NS_NAME iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
	ip netns exec $NS_NAME ip6tables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
	ip netns exec $NS_NAME ip6tables -t nat -A PREROUTING  -d 2a01:d0:c353:82::10/128 -j DNAT --to 2001:db8::1
	ip netns exec $NS_NAME ip6tables -t nat -A POSTROUTING  -s 2001:db8::1 -j SNAT --to 2a01:d0:c353:82::10
	ip -netns $NS_NAME rule add from 192.168.254.0/24 to 192.168.254.0/24 table main pref 1
	#ip -netns $NS_NAME rule add to 198.18.120.0/24 table main pref 1
        #ip -6 -netns $NS_NAME rule add to 2a01:d0:c353:82::/64 table main pref 1
        #ip -netns $NS_NAME rule add from 198.18.120.0/24 table main pref 1
        #ip -6 -netns $NS_NAME rule add from 2a01:d0:c353:82::/64 table main pref 1
        ip -6 -netns $NS_NAME rule add from 2001:db8::/112 to 2001:db8:8:3c::/112 table main pref 1
        ip -6 -netns $NS_NAME rule add from 2001:db8::/112 to 2001:db8::/112 table main pref 1
	ip -netns $NS_NAME rule add from 192.168.254.0/30 to 198.18.0.0/15 table main pref 1
	ip -6 -netns $NS_NAME rule add from 2001:db8::/126  to 2a01:d0:c353::/48 table main pref 1
        ip -netns $NS_NAME rule add from 192.168.254.4/30 to 198.18.0.0/15 table main pref 2
        ip -6 -netns $NS_NAME rule add from 2001:db8::4/126  to 2a01:d0:c353::/48 table main pref 2
        ip -netns $NS_NAME rule add from 192.168.254.0/30 table 10 pref 3
        ip -6 -netns $NS_NAME rule add from 2001:db8::/126 table 10 pref 3
	ip -netns $NS_NAME rule add from 192.168.254.4/30  table 10 pref 10
	ip -6 -netns $NS_NAME rule add from 2001:db8::4/126  table 10 pref 10
	#ip -6 -netns $NS_NAME rule add to 2a01:d0:c353:82::/64 iif vlan101 table 12 pref 3
	#ip -netns  $NS_NAME rule add to 198.18.120.0/24 iif vlan101 table 11 pref 3
	ip -netns $NS_NAME route add default via 198.18.125.26 table 11
	ip -6 -netns $NS_NAME route add default via 2001:db8:8:3c::1 table 12
	ip -netns $NS_NAME addr add 192.168.254.2/30 dev vr0p1
	ip -netns $NS_NAME addr add 2001:db8::2/126 dev vr0p1
}
stop () {
		if [ -f /opt/bird/var/run/bird.pid ]
		then
			kill `cat /opt/bird/var/run/bird.pid `
		fi
		for a in $EXT_INTERFACES
		do
			ip -netns $NS_NAME link set dev $a netns 1
		done	
		ip netns del ${NS_NAME}
	
}
exec_bird () {
	if [ -f /run/netns/${NS_NAME} ]
	then
		PATH=$PATH:/opt/bird/sbin
		ip netns exec $NS_NAME bird -c /opt/bird/etc/bird.conf -s /opt/bird/var/run/bird.ctl -u vrouter -g vrouter -P /opt/bird/var/run/bird.pid
	fi
}
stop_bird () {
	if [ -f /opt/bird/var/run/bird.pid ]
	then
		kill `cat /opt/bird/var/run/bird.pid `
	fi		 
}
case $1 in
	start)
		start
		exec_bird
		;;
	stop)
		#stop_bird
		stop
		;;
	bird_exec)
		exec_bird
		;;
	bird_kill)
		stop_bird
		;;
esac

Сам init-скрипт:

#!/bin/bash
### BEGIN INIT INFO
# Provides:          vrouter
# Required-Start:    mountkernfs $local_fs urandom
# Required-Stop:     $local_fs
# Default-Start:     S
# Default-Stop:      0 6
# Short-Description: Virtual router namespace
# Description:       Init virtual router
### END INIT INFO
/scripts/vrouter.sh $1

 , , ,

ne-vlezay
()

Удалённые уроки

Форум — General

А ну-ка спв, помоги решить задачу. Встала потребность учить детей удалённо. При этом им нужно разжевывать всякие формулы и проч. Хорошо писать на бумажке, чтоб он/а видел/а и сопровождать комментариями. Но бумажку по скайпу не передашь. У меня планшет позволяет писать на экранчике. Какой програмулькой лучше сделать так, чтоб студент тоже видел, что ты пишешь, на своём планшете/десктопе/чего у него там есть, и слышать комментарии? У кого есть опыт в организации процесса обучения школьников удалённо? Какие технологии лучше использовать?

Уточнение: нужно решение для школьников, которые хотят поступить в нормальный ВУЗ, и нуждаются в репетиторстве.

 , ,

yvv
()

Запретить выравнивание текста по ширтне в браузере

Форум — General

Некоторые нехорошие люди используют text-align: justify на сайтах, из-за чего моим глазам становится плохо и появляется приступ ярости к сделавшему это. Какой наименее трудозатратный способ сохранить нервную систему и отключить это безобразие?

 , ,

j_kotovsky
()

Монтирование разделов без пароля в openSUSE

Форум — General

Добавляем в:

su -
nano /etc/polkit-default-privs.local

org.freedesktop.udisks.filesystem-mount-system-internal auth_admin:auth_admin:yes
org.freedesktop.udisks2.filesystem-mount-system auth_admin:auth_admin:yes

Сохраненяем Ctrl+O, выход Ctrl+X
Делаем:
/sbin/set_polkit_default_privs


Совет, который дали 7 лет назад, до сих пор работает.

Обсуждение, как это сделано в убунту (примерно также).

 

renuter
()

Ubuntu Sway

Галерея — Скриншоты

На свежеустановленной Ubuntu 20.04 решил попробовать Sway. Поставил больше из любопытства, сильно увлекаться настройками не хотелось. Но совсем без настраивания, конечно, не обошлось.

Многие настройки описаны в файле config, даже с пояснениями, где узнать об этих настройках подробнее. Например, настройки вывода:

### Output configuration
#
# Default wallpaper (more resolutions are available in /usr/share/backgrounds/sway/)
output * bg #111111 solid_color

output LVDS-1 resolution 1920x1080 position 0,0

# You can get the names of your outputs by running: swaymsg -t get_outputs
Экранное разрешение сразу определилось верно, а вот фон «рабочего стола» я убрал, заменив на цвет как у верхней панели.

Настроил переключение раскладок по CapsLock и тачпад. Все это тоже достаточно подробно описано в файле config:

### Input configuration

input "2:14:ETPS/2_Elantech_Touchpad" {
    dwt enabled
    tap enabled
    natural_scroll enabled
    middle_emulation enabled
}

input "1:1:AT_Translated_Set_2_keyboard" {
    xkb_layout "us, ru"
    xkb_options "grp:caps_toggle,grp_led:caps"
}

# You can get the names of your inputs by running: swaymsg -t get_inputs
# Read `man 5 sway-input` for more information about this section.
Верхняя панель — waybar. Напоминает i3blocks для i3wm — каждый элемент является блоком со своим именем и своими параметрами. Для каждого блока можно назначать действия при нажатии кнопок мыши, а также при прокрутке (например, так можно регулировать громкость). Трей работал, там отображался nm-applet и update-notifier, но первый мне не нужен, а второй периодически падал, поэтому трей убрал. У многих блоков есть альтернативный режим отображения — по клику на часах отображается дата, а у блока с Wi-fi показывается состояние проводного подключения. Блок с индикатором батареи умеет мигать цветом при разрядке батареи до определенного значения. Для этих настроек у waybar есть отдельный конфиг, а для настройки цветов и шрифтов отдельный файл CSS. Индикаторы правой части панели, слева направо: раскладка, часы, блокировка хранителя экрана, громкость, сеть, батарея, яркость экрана.

Индикатор раскладки взял с Хабра и немного изменил, чтобы имена раскладок отображались не целиком. Сам скрипт kb_layout.sh (чтобы работал, нужно установить jq):

query='select(.change == "xkb_layout") | .input.xkb_active_layout_name | sub("English \\(US\\)"; "En") | sub("Russian"; "Ru")'
swaymsg -m -t SUBSCRIBE "['input']" | jq --unbuffered -r "$query"
Индикатор на панели, нужно вписать это в конфиг waybar, а в список модулей в нужном месте вписать «custom/kblayout»:
"custom/kblayout": {
    	"exec": "~/.config/sway/kb_layout.sh"
    	}
    },
Единственный нюанс — сразу после запуска Sway индикатор не отображается, появляется только после первого переключения раскладки. Что делать с этим, я не знаю, может, кто дополнит. Добавление в автозагрузку через exec не работает.

Цвета взял стандартные для Ubuntu, потому что серо-синие и черно-синие комбинации как-то приелись. Приложения используются из GNOME. Изначально в Sway темы GTK и значки настроены не были, настраивать их через файлы конфигурации было лень, поэтому запустил gnome-tweak и все настроил через него. Шрифт интерфейса — Ubuntu. Вообще, моим глазам настройки шрифтов нравятся только в Ubuntu. Не знаю, почему, но даже Kubuntu и Xubuntu для глаз неприятны, именно в плане рендеринга шрифтов. Если бы не это — наверное, попробовал бы Debian с i3wm. Для значков на верхней панели использовал Font Awesome.

Для уведомлений использую Dunst, но его почти не настраивал. Mako, который «Dunst для Wayland», у меня запускаться отказался, есть баг, но почему-то закрыт. Приложения запускаю через wofi. Sway запускаю через GDM3. Подсветка клавиатуры на ноутбуке заработала сразу, для яркости экрана установил brightnessctl и добавил себя в группу video, для громкости pactl:

bindsym XF86AudioRaiseVolume exec pactl set-sink-volume @DEFAULT_SINK@ +5% 
bindsym XF86AudioLowerVolume exec pactl set-sink-volume @DEFAULT_SINK@ -5%
bindsym XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ toggle
bindsym XF86AudioMicMute exec pactl set-source-mute @DEFAULT_SOURCE@ toggle
bindsym XF86MonBrightnessDown exec brightnessctl set 5%-
bindsym XF86MonBrightnessUp exec brightnessctl set +5%

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

 , , ,

Silent
()

Расскажите про iptables

Форум — General

Подменяю ip отправителя при обращении к порту 666 протокол UDP

# /sbin/iptables -t nat -A POSTROUTING -j SNAT --to-source 8.8.8.8 -p udp --dport 666

Перенаправляю все обращения к порту 666 на локальный интерфейс.

# /sbin/iptables -t nat -A PREROUTING -p udp --dport 666 -j REDIRECT --destination 127.0.0.1

Пытаюсь логировать все это

# /sbin/iptables -A INPUT -p udp --dport 666 -j LOG --log-prefix "iptabless: "
# /sbin/iptables -A OUTPUT -p udp --dport 666 -j LOG --log-prefix "iptabless: "
# /sbin/iptables -A FORWARD -p udp --dport 666 -j LOG --log-prefix "iptabless: "

# cat /var/log/messages | grep iptables

Ничего не работает и в логах пусто. Где я неправ?

 

yoholo
()

Телефонный антиспам

Форум — Talks

Собственно, это уже где-то обсуждалось в толксах. Как я говорил, я запилил «антиспам» на основе астериска (chan_dongle & FXSO), который троллит звонящих рекламщиков и телемаркетойдов, тихо и мирно сидя на «резервном» номере и обещал мануал. Я его запилил

В тред призывается theNamelessOne.

 , ,

ncrmnt
()

Когда починят «ускоренное» копирование файлов в Linux?

Форум — Talks

Итак, дано: Ubuntu 16.04.4, Fedora 27.

И там и там есть один баг, которому уже много лет, я даже честно не знаю сколько.

Суть бага: прогресс показывает сначала очень высокую скорость копирования, доходит до отметки примерно в 60% и врубает тормоза. У меня бывало так, что на Ubuntu 2-3 гигабайта копировались на флешку за пару секунд, а потом удовольствие растягивалось еще на 20 минут, при этом объем передаваемых данных равен 8 гб, понятное дело, что это баг, но ему уже сколько лет! Когда починят то? Забавно, но cp при этом показывает равномерную скорость копирования и в серверной Ubuntu я спокойно копирую данные в 500 гигабайт между ЖД без проблем.

Но у меня Linux на десктопе и черт побери, он в 2018 еще не готов для массового пользования, когда такие детские баги вылезают.

 ,

fman2
()

У меня появился программатор СН341А, но я не могу найти статей, как им работать с онтопика.

Форум — Linux-hardware

Всё только под виндовуз. вывод lsusb:

lsusb
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 003: ID 1a86:5512 QinHeng Electronics CH341 in EPP/MEM/I2C mode, EPP/I2C adapter
Bus 006 Device 002: ID 1a2c:0042 China Resource Semico Co., Ltd 
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Что делать дальше пока не знаю, надеюсь на помощь сообщества.

Цель-залить дамп биоса на флешку. Флешку подпаял, через переходник подключил(она 1,8в, там 3,3 только)

Заранее благодарю отвечающих(и троллей за будущий юмор)

 ,

burato
()

Немного любопытной статистики

Форум — Talks

Статистика снята с одной из точек доступа в общественном транспорте г. Москва за 6 месяцев.

upd: добавил тип устройста


Тип устройства	      Посещения
Смартфон	         286948
Фаблет	                  22176
Неизвестно	           7018
Планшет	                   5499
Desktop-приложение	   3183
Портативный медиа-плеер	    161
Консоль	                      6


ОС            Посещения | Версия ОС	     Посещения
Android	         256701 | Android 6.0	         54541
    iOS	          62880 | Android 9	         37308
Windows Mobile     2051 | Android 7.0	         36876
Windows            1556 | Android 8.0	         34997
Mac                1272 | Android 8.1	         29566
GNU/Linux           303 | Android 7.1	         22942
Chrome OS           124 | Android 5.1	         18691
Неизвестно           45 |    iOS 12.1	         11762
Symbian	             41 | Android 4.4	          9218
BlackBerry           15 |  iOS 12.4	          7278
Mobile Gaming Console 6 |
Other Mobile          4 |
Firefox OS            1 |
----------------------------------------------------------

Тип браузера	   Посещения | Тип браузера	   Посещения
Chrome Mobile	      182983 | Vivo Browser	         64
Mobile Safari	       62543 | Meizu Browser	         50
Chrome Webview	       28028 | Baidu Spark	         42
Yandex Browser	       24169 | Nokia Browser	         42
Samsung Browser	        5192 | QQ Browser	         36
MIUI Browser	        4898 | Oppo Browser	         35
Chrome	                4668 | Yandex Browser Lite	 33
Android Browser	        4067 | Opera Mini	         27
UC Browser	        1696 | Opera Touch	         24
Opera Mobile	        1689 | CM Browser	         19
IE Mobile	        1607 | Mint Browser	         19
Неизвестно	         770 | BlackBerry Browser	 15
Microsoft Edge	         706 | DuckDuckGo Privacy Browser 15
Firefox Mobile	         473 | Sailfish Browser	         14
Safari	                 243 | Chromium	                  9
Opera	                 210 | Aloha Browser	          6
Firefox	                 183 | Avast Secure Browser	  6
Chrome Mobile iOS	 159 | Mobile Silk	          6
Huawei Browser	         113 | Firefox Focus	          5
Internet Explorer	 102 | Maxthon	                  5
                             | Iron	                  4
                             | Web Explorer	          4
                             | EUI Browser	          3
                             | Hawk Turbo Browser	  3
                             | Sputnik Browser	          3
                             | Dolphin	                  2
                             | Mercury	                  2
                             | Coc Coc	                  1
                             | Firefox Mobile iOS	  1
                             | Kindle Browser	          1
                             | QupZilla	                  1
                             | Qwant Mobile	          1
                             | UC Browser Turbo	          1
                             | Vivaldi	                  1

Источник не могу привести, так как Big Data, бла-бла персональные данные и все такое.
Первые места занимают Android | iOS, GNU/Linux - сами видим.

 

e000xf000h
()

Влезло в 256 мегабайтов

Форум — Talks

Наконец-то довёл до логического завершения настройку VPS-а. 256 мегабайтов памяти, 25 ГБ диска. На всё это установился Debian 10 обычным инсталлятором (привет, центось, которая без гигабайта памяти даже инсталлятор не запускает). Поставил туда apache2, unbound, strongswan (ipsec), postfix, dovecot, spamassassin, opendkim. Всё прекрасно работает. Спамассассин вообще поразил моё воображение. За несколько месяцев 1 спам-письмо пролезло, ложных срабатываний вообще 0. Я думал, будет намного хуже.

vbezhenar@nether:~$ free
              total        used        free      shared  buff/cache   available
Mem:         236980      146160        7480        2288       83340       80556
Swap:        822268       95744      726524

В общем имейте в виду, 256 МБ хватает с головой.

Если кому интересны нюансы настройки, спрашивайте, конфигами поделюсь. Хотя ничего особенного, всё по манам и туториалам настраивал. Сложней всего оказалось подружить postfix и dovecot, чтобы авторизация была в одном месте.

PS письма в gmail уходят нормально, в спам не падают. Это ещё один момент, который меня сильно поразил. Правда на чужих аккаунтах не тестировал, только на своём.

 ,

Legioner
()

Научите SIMD

Форум — Development

Их куча, я запутался.

  • Что наиболее портабельное? windows/linux/android (gcc/mingw/crystalX-gcc)
  • Что наиболее негеморойное?
  • Расширения gcc vs специфика отдельных SIMD https://gcc.gnu.org/onlinedocs/gcc/Vector-Extensions.html
  • Подводные камни, кирпичи и прочее.
  • Примеры статьи ссылки для нубов где уделяется время деталям

Вот такое хочется ускорить


mat4 mat4_mul_mat4(mat4 m1, mat4 m2) {

  mat4 mat;

  mat.xx = (m1.xx * m2.xx) + (m1.xy * m2.yx) + (m1.xz * m2.zx) + (m1.xw * m2.wx);
  mat.xy = (m1.xx * m2.xy) + (m1.xy * m2.yy) + (m1.xz * m2.zy) + (m1.xw * m2.wy);
  mat.xz = (m1.xx * m2.xz) + (m1.xy * m2.yz) + (m1.xz * m2.zz) + (m1.xw * m2.wz);
  mat.xw = (m1.xx * m2.xw) + (m1.xy * m2.yw) + (m1.xz * m2.zw) + (m1.xw * m2.ww);

  mat.yx = (m1.yx * m2.xx) + (m1.yy * m2.yx) + (m1.yz * m2.zx) + (m1.yw * m2.wx);
  mat.yy = (m1.yx * m2.xy) + (m1.yy * m2.yy) + (m1.yz * m2.zy) + (m1.yw * m2.wy);
  mat.yz = (m1.yx * m2.xz) + (m1.yy * m2.yz) + (m1.yz * m2.zz) + (m1.yw * m2.wz);
  mat.yw = (m1.yx * m2.xw) + (m1.yy * m2.yw) + (m1.yz * m2.zw) + (m1.yw * m2.ww);
  
  mat.zx = (m1.zx * m2.xx) + (m1.zy * m2.yx) + (m1.zz * m2.zx) + (m1.zw * m2.wx);
  mat.zy = (m1.zx * m2.xy) + (m1.zy * m2.yy) + (m1.zz * m2.zy) + (m1.zw * m2.wy);
  mat.zz = (m1.zx * m2.xz) + (m1.zy * m2.yz) + (m1.zz * m2.zz) + (m1.zw * m2.wz);
  mat.zw = (m1.zx * m2.xw) + (m1.zy * m2.yw) + (m1.zz * m2.zw) + (m1.zw * m2.ww);

  mat.wx = (m1.wx * m2.xx) + (m1.wy * m2.yx) + (m1.wz * m2.zx) + (m1.ww * m2.wx);
  mat.wy = (m1.wx * m2.xy) + (m1.wy * m2.yy) + (m1.wz * m2.zy) + (m1.ww * m2.wy);
  mat.wz = (m1.wx * m2.xz) + (m1.wy * m2.yz) + (m1.wz * m2.zz) + (m1.ww * m2.wz);
  mat.ww = (m1.wx * m2.xw) + (m1.wy * m2.yw) + (m1.wz * m2.zw) + (m1.ww * m2.ww);

  return mat;

}

И такого много. Будут ли профиты ощутимые? Или нужны более весомые задачи,а на этом профиты будет сожраны накладными расходами?

В целом советам,подсказкам и идеям буду благодарен. Ранее не касался расширений никогда. Сейчас читаю всякое но чем дальше тем больше путанницы. Пока что прихожу к выводу что под хотелки подходит SSE2. Но подумал лучше иметь более одного мнения по этому поводу.

UDP:

Короче в треде оказались правы и такие случаи на x86-64 векторизируются сами по себе хорошо. Так как хотелка заключалась в переносимости то нет смысла прибивать гвоздями к возможностям конкретного процессора а достаточно указывать младшую линейку где нужны нужные оптимизации и указывать её в -mtune и поддерживать соотвецтвенно. Иначе можно получить просто нерабочие исполняемые файлы. На конкретном камне или серверной логике где всё железо известно можно уже извращаться как угодно естественно и выжимать всё что только можно.

Поигрался по разному

dron@gnu:~/555$ gcc-9 -S -m32 -mfpmath=sse -Ofast  -funroll-loops mat.c 
cc1: warning: SSE instruction set disabled, using 387 arithmetics
dron@gnu:~/555$ gcc-9 -S -m32 -mfpmath=sse -Ofast  -march=native  mat.c 
dron@gnu:~/555$ gcc-9 -S -m64 -mfpmath=sse -Ofast  -march=native  mat.c 
dron@gnu:~/555$ gcc-9 -S  -mfpmath=sse -Ofast  -march=native  mat.c 
dron@gnu:~/555$ gcc-9 -S  -mfpmath=sse -O3  -march=native  mat.c 
dron@gnu:~/555$ gcc-9 -S  -mfpmath=sse -Ofast  -march=native  mat.c 
dron@gnu:~/555$ gcc-9 -S  -mfpmath=sse -O0  -march=native  mat.c 
dron@gnu:~/555$ gcc-9 -S  -mfpmath=sse -O3  -march=native  mat.c 
dron@gnu:~/555$ gcc-9 -S  -mfpmath=sse -Ofast  -march=native  mat.c 
dron@gnu:~/555$ gcc-9 -S  -mfpmath=sse -O3  -march=native  mat.c 
dron@gnu:~/555$ gcc -S  -mfpmath=sse -O3  -march=native  mat.c 
dron@gnu:~/555$ gcc-9 -S  -mfpmath=sse -O3  -march=native  mat.c 
dron@gnu:~/555$ gcc-9 -S   -O3    mat.c 
dron@gnu:~/555$ gcc-9 -S  -mfpmath=sse -O3  -march=native  mat.c 
dron@gnu:~/555$ gcc-9 -S  -mssse3 -ffast-math -mfpmath=sse  mat.c 
dron@gnu:~/555$ gcc-9 -S  -mfpmath=sse -O3  -march=native  mat.c 
dron@gnu:~/555$ gcc-9 -S  -mfpmath=sse -mssse3 -O3  -march=native  mat.c 
dron@gnu:~/555$ gcc-9 -S  -mfpmath=sse -msse3 -O3  -march=native  mat.c 
dron@gnu:~/555$ gcc-9 -S  -mfpmath=sse -ffast-math -O3  -march=native  mat.c 
dron@gnu:~/555$ gcc-9 -S  -mfpmath=sse  -O3  -march=native  mat.c 
dron@gnu:~/555$ gcc-9 -S  -mfpmath=sse  -O3  -march=x86-64  mat.c 
dron@gnu:~/555$ gcc-9 -S   mat.c 
dron@gnu:~/555$ gcc-9 -S  -mfpmath=sse -ffast-math -O3  -march=native  mat.c 
dron@gnu:~/555$ gcc-9 -S  -march=x86-64 -O3  -march=native  mat.c 
dron@gnu:~/555$ gcc-9 -S  -mtune=k8-sse3 -O3    mat.c 
dron@gnu:~/555$ gcc-9 -S  -mtune=k8 -O3    mat.c 
...

В текущей сборке с просто -O3 у меня оказалось что уже всё векторизированно. (У меня -03 не вызывает проблем ) и следовательно то что я хотел уже есть. Хотя -mtune=k8делает ещё буст если свести к реальной программе то 34 кадра анимации 1000 объектов подняло до 40 кадров. Это очень не плохо.

Большие же оптимизации в эту сторону равны отсечению целой массы камней что недопустимо для меня (в смысле просто не хоца) Явную оптимизацию никто не отменяет конечно, но вот прямо сейчас в этом конкретном случае я вижу что лучше писать код который не будет вызывать проблем компилятору для его оптимизации чем оптимизировать самому. Не потому что это плохо, а потом у что частная оптимизация руками сразу подразумевает либо доп зависимости либо привязку к железу. А мне этого не хочется. Ну вот как то так. С другой стороны конечно если взять и решить поддерживать k8 и выше то есть смысл вручную использовать SSE2 к примеру. Но это уже разве что в целях обучения и увидеть разницу между руки vs компилятор. Но чуть в сторону и компилятор всё равно будет на коне ибо просто смена опции на haswell при нужном камне естественно порвёт всё как тузик грелку.

На сем. Всё. Всем спасибо и добра.

 , , ,

LINUX-ORG-RU
()