Сообщения vel
сравнить настройки двух профиле firefox
Есть 2 профиля. В одном все работает, во втором безумные тормоза при наличии видео или html5/canvas(?)
Чем можно экспортировать настройки профиля в текстовый вид для последующего сравнения?
Пластиковые крепления кулера - ЗЛО!
Давно я так не охреневал заглянув в комп :)
(Картинки на яндекс-диске. У кого изжога на него - проходите мимо)
Вот так вот, хрусь и пополам! Жертва - Arctic Freezer Xtreme выпуска до 2014 года.
Дело было вечером, время 21 час, т.е. в магазин бежать поздно, да и денег жалко на старенький комп.
Пришлось колхозить крепление из ляминия.
Так оно выглядит перед сборкой.
tomcat7 bigbluebutton javax.xml.parsers.SAXParserFactory
Есть работающий bigbluebutton сервер. API реализовано на tomcat7
В ходе разборок с одной проблемой выяснилось, что один запрос API дает кучу запросов к несуществующим файлам
grep ENOENT | sort | uniq -c
125 stat("/META-INF/services/javax.xml.parsers.SAXParserFactory", 0x7f55024e1000) = -1 ENOENT (No such file or directory)
8 stat("/META-INF/services/javax.xml.parsers.SAXParserFactory", 0x7f55024e1530) = -1 ENOENT (No such file or directory)
125 stat("/usr/share/bbb-web/META-INF/services/javax.xml.parsers.SAXParserFactory", 0x7f55024e1000) = -1 ENOENT (No such file or directory)
8 stat("/usr/share/bbb-web/META-INF/services/javax.xml.parsers.SAXParserFactory", 0x7f55024e1530) = -1 ENOENT (No such file or directory)
125 stat("/usr/share/bbb-web/WEB-INF/classes/META-INF/services/javax.xml.parsers.SAXParserFactory", 0x7f55024e1000) = -1 ENOENT (No such file or directory)
125 stat("/usr/share/bbb-web/WEB-INF/classes/META-INF/services/javax.xml.parsers.SAXParserFactory", 0x7f55024e1030) = -1 ENOENT (No such file or directory)
8 stat("/usr/share/bbb-web/WEB-INF/classes/META-INF/services/javax.xml.parsers.SAXParserFactory", 0x7f55024e1530) = -1 ENOENT (No such file or directory)
8 stat("/usr/share/bbb-web/WEB-INF/classes/META-INF/services/javax.xml.parsers.SAXParserFactory", 0x7f55024e1560) = -1 ENOENT (No such file or directory)
125 stat("/usr/share/bbb-web/WEB-INF/META-INF/services/javax.xml.parsers.SAXParserFactory", 0x7f55024e1000) = -1 ENOENT (No such file or directory)
8 stat("/usr/share/bbb-web/WEB-INF/META-INF/services/javax.xml.parsers.SAXParserFactory", 0x7f55024e1530) = -1 ENOENT (No such file or directory)
Можно ли это как-то исправить?
git и изменение стиля форматирования проекта на С
В основном проекте решили начать переформатирование кода.
merge дает коллизии по несколько сотен строк :(
При том, что «diff -ubwB» говорит о незначительных изменениях.
Может есть способы немного облегчить/автоматизировать этот процесс ?
ffmpeg перекодирование в vp9
Два вопроса:
- есть ли в ffmpeg аппаратного ускорения для перекодирования в vp9 ? (судя по всему из vp8)
- какую железку при этом нужно иметь для этого ?
транслятор cBPF в eBPF есть?
Есть ли живая поделка для получения object-pinned из классического BPF для актуальных ядер ?
Ну или один работоспособный пример для «iptables -m bpf --bbject-pinned ...»
filter2xdp с github не актуален. За 3 года в ядре что-то сильно поменялось и валидатор eBPF ругается на все инструкции.
Чем админить ssh с oath ?
Есть работающая связка openssh + pam_oath + freeotp
А чем файл с f2a кодами редактировать кроме как текстовым редактором?
Хочется уметь добавлять/заменить/убавить коды для юзера.
А юзеру, при вводе своего пароля, показывать код и qrcode (для freeotp например).
Вход по ключам при этом тоже существует.
libfuse, треды и timerfd
до запуска fuse_main() создается тесколько тредов.
В каждом треде создаётся таймер через timerfd_create(CLOCK_REALTIME, 0)
далее делаем timerfd_settime(tfd, TFD_TIMER_ABSTIME,...)
таймер через 2 секунды и интервал 2 секунды.
все работает!
как только запускается fuse_main() в виде демона, то все чтение из tfd прекращается.
Что это за @#$%^&*! ?
Информация из объектного файла
Есть объектный файл с отладочной информацией.
1. Хочется получить список функций имеющихся в нём.
nm или objdump решают эту задачу.
2. Для каждой функции получить список вызываемых функций.
Чем это можно сделать?
капча для программеров
Тихо легализуем MITM?
Новость не совсем свежая, но все-таки https://www.securitylab.ru/news/504821.php
Под видом обеспечения доступа к гос. ресурсам будут втюхивать корневой сертификат на все девайсы?
Есть кто использует imapproxy?
Есть вебморда (roundcube) и почтовик на другой машине.
На каждый клик в вебмейле оно подключается на почтовик, что IMHO не здорово.
Есть imapproxy, который умеет кешировать коннекты по логину. На тестовой системе все просто сказочно!
А в продакшене его кто-нибудь использует?
Фильтрация трафика приложения или группы приложений.
Владельцам ядер ниже 4.4 можно не читать.
Собственно есть cgroup и iptables -m cgroup. Почему бы не создать отдельный cgroup и фильтровать локальный трафик для этой группы?
1. Не забываем включить классную фичу
sysctl -w net.ipv4.ip_early_demux=1
# на ядрах 4.10+
sysctl -w net.ipv4.tcp_early_demux=1
sysctl -w net.ipv4.udp_early_demux=1
2. Создаем группу
mkdir /sys/fs/cgroup/net_cls/testgroup2
echo 1234 >/sys/fs/cgroup/net_cls/testgroup2/net_cls.classid
3. создаем тестовые правила
iptables -A INPUT -m cgroup --cgroup 1234 -p icmp
iptables -A INPUT -m cgroup --cgroup 1234 -p udp
iptables -A INPUT -m cgroup --cgroup 1234 -p tcp
iptables -A OUTPUT -m cgroup --cgroup 1234 -p icmp
iptables -A OUTPUT -m cgroup --cgroup 1234 -p udp
iptables -A OUTPUT -m cgroup --cgroup 1234 -p tcp
4. Переносим себя в эту группу
echo $$ >/sys/fs/cgroup/net_cls/testgroup2/tasks
5. Тестируем UDP
dig google.com
iptables -nvxL INPUT; iptables -nvxL OUTPUT
Chain INPUT (policy ACCEPT 2 packets, 255 bytes)
pkts bytes target prot opt in out source destination
0 0 tcp -- * * 0.0.0.0/0 0.0.0.0/0 cgroup 1234
0 0 udp -- * * 0.0.0.0/0 0.0.0.0/0 cgroup 1234
0 0 icmp -- * * 0.0.0.0/0 0.0.0.0/0 cgroup 1234
Chain OUTPUT (policy ACCEPT 2 packets, 91 bytes)
pkts bytes target prot opt in out source destination
0 0 icmp -- * * 0.0.0.0/0 0.0.0.0/0 cgroup 1234
2 91 udp -- * * 0.0.0.0/0 0.0.0.0/0 cgroup 1234
0 0 tcp -- * * 0.0.0.0/0 0.0.0.0/0 cgroup 1234
6. Тестируем TCP
iptables -Z
wget -4 -O /dev/zero https://google.com
iptables -nvxL INPUT; iptables -nvxL OUTPUT
Chain INPUT (policy ACCEPT 4 packets, 538 bytes)
pkts bytes target prot opt in out source destination
4 538 tcp -- * * 0.0.0.0/0 0.0.0.0/0 cgroup 1234
0 0 udp -- * * 0.0.0.0/0 0.0.0.0/0 cgroup 1234
0 0 icmp -- * * 0.0.0.0/0 0.0.0.0/0 cgroup 1234
Chain OUTPUT (policy ACCEPT 6 packets, 451 bytes)
Chain OUTPUT (policy ACCEPT 6 packets, 451 bytes)
pkts bytes target prot opt in out source destination
0 0 icmp -- * * 0.0.0.0/0 0.0.0.0/0 cgroup 1234
0 0 udp -- * * 0.0.0.0/0 0.0.0.0/0 cgroup 1234
6 451 tcp -- * * 0.0.0.0/0 0.0.0.0/0 cgroup 1234
7. Тестировать остальные протоколы бесполезно, т.к. они не поддерживаются в early_demux
Что имеем в результате? TCP можно контролировать для группы, а с UDP пролный 3.14ц!
Поковыряв ядро становится полностью понятно почему.
Проблема в том, что в UDP можно сделать bind() только на порт, что делает поиск сокета на которые пришли данные в два раза сложнее. __udp4_lib_demux_lookup() делает поиск только по номеру порта и адресу, игнорируя сокеты привязанные только к номеру порта.
Заменив __udp4_lib_demux_lookup() на полноценный поиск udp сокета через __udp4_lib_lookup()
для ядра 4.14.165
diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c
index 731ea78..6143ca5 100644
--- a/net/ipv4/udp.c
+++ b/net/ipv4/udp.c
@@ -2295,8 +2295,8 @@ int udp_v4_early_demux(struct sk_buff *skb)
uh->source, iph->saddr,
dif, sdif);
} else if (skb->pkt_type == PACKET_HOST) {
- sk = __udp4_lib_demux_lookup(net, uh->dest, iph->daddr,
- uh->source, iph->saddr, dif, sdif);
+ sk = __udp4_lib_lookup(net, iph->saddr, uh->source, iph->daddr, uh->dest,
+ dif, 0, &udp_table, NULL);
}
if (!sk || !refcount_inc_not_zero(&sk->sk_refcnt))
Да, это дополнительные накладные расходы, но мы дважды это подтвердили через net.ipv4.ip_early_demux=1 и net.ipv4.udp_early_demux=1
Но теперь мы получаем в п.5
Chain INPUT (policy ACCEPT 2 packets, 255 bytes)
pkts bytes target prot opt in out source destination
0 0 tcp -- * * 0.0.0.0/0 0.0.0.0/0 cgroup 1234
1 226 udp -- * * 0.0.0.0/0 0.0.0.0/0 cgroup 1234
0 0 icmp -- * * 0.0.0.0/0 0.0.0.0/0 cgroup 1234
Chain OUTPUT (policy ACCEPT 2 packets, 91 bytes)
pkts bytes target prot opt in out source destination
0 0 icmp -- * * 0.0.0.0/0 0.0.0.0/0 cgroup 1234
2 91 udp -- * * 0.0.0.0/0 0.0.0.0/0 cgroup 1234
0 0 tcp -- * * 0.0.0.0/0 0.0.0.0/0 cgroup 1234
Но это патч ядра, который не все могут осилить.
Есть возможность получить аналогичный результат при помощи модуля ядра. ( https://github.com/vel21ripn/ipt_sk_helper )
Чтоб оно заработало нужно сделать sysctl -w net.ipv4.ip_early_demux=2
Работа проверялать на 4.4.209 и 4.14.165. Собирается даже на 5.4.х
Если кто может попробовать собрать его и протестировать - напишите что получилось.
PS Если починить эту фичу в официальном ядре, то станет доступной фильтраци входящего трафика по UID/GID.
Странные Li-Ion аккумы на 1.5В
В продаже появились Li-Ion аккумы с контроллером изображающие батарейки в формате AA/AAA (1.5V)
А никто не встречал Li-Ion аккум в размерах 2xAA изображающий напряжение 2.4-3.0V
Хочется заменить в навигаторе 2 батарейки на Li-Ion аккум.
Загрузка ядра через kexec
Как определить, что ядро загружено через kexec если использовалось --reuse-cmdline ?
SFP+ 10GBASE греется
Никому не доводилось использовать microtik S+RJ10? ( модуль SFP+ 10Gbit/s TP до 20 метров.)
Если верить ddm (и собственным ощущениям) оно греется ~70℃
А не дофига ли?
ядро 5.4 не торт!
С nvme не загружается :(
Aufs до сих пор нет.
Черт меня дернул попробовать обновиться до появления .3
PS 5.2/5.3 замечательно работает.
Этому ssd пора на покой ?
Model Family: Samsung based SSDs
Device Model: SAMSUNG SSD PM810 2.5" 7mm 256GB
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
5 Reallocated_Sector_Ct 0x0033 091 091 --- Pre-fail Always - 539
9 Power_On_Hours 0x0032 098 098 --- Old_age Always - 7479
12 Power_Cycle_Count 0x0032 095 095 --- Old_age Always - 4050
175 Program_Fail_Count_Chip 0x0032 091 091 --- Old_age Always - 335
176 Erase_Fail_Count_Chip 0x0032 100 100 --- Old_age Always - 0
177 Wear_Leveling_Count 0x0013 099 099 --- Pre-fail Always - 22
178 Used_Rsvd_Blk_Cnt_Chip 0x0013 060 060 --- Pre-fail Always - 1594
179 Used_Rsvd_Blk_Cnt_Tot 0x0013 064 064 --- Pre-fail Always - 2906
180 Unused_Rsvd_Blk_Cnt_Tot 0x0013 064 064 --- Pre-fail Always - 5158
181 Program_Fail_Cnt_Total 0x0032 093 093 --- Old_age Always - 539
182 Erase_Fail_Count_Total 0x0032 100 100 --- Old_age Always - 0
183 Runtime_Bad_Block 0x0013 093 093 --- Pre-fail Always - 539
187 Uncorrectable_Error_Cnt 0x0032 001 001 --- Old_age Always - 152541
195 ECC_Error_Rate 0x001a 001 001 --- Old_age Always - 152541
198 Offline_Uncorrectable 0x0030 100 100 --- Old_age Offline - 0
199 CRC_Error_Count 0x003e 253 253 --- Old_age Always - 3
232 Available_Reservd_Space 0x0013 060 060 --- Pre-fail Always - 2438
241 Total_LBAs_Written 0x0032 009 009 --- Old_age Always - 3936079957
242 Total_LBAs_Read 0x0032 003 003 --- Old_age Always - 4196060295
SMART Error Log Version: 1
ATA Error Count: 9591 (device log contains only the most recent five errors)
Диск из dell xps 14z (образца 2012 года если верить серийнику S0NUNEAC101977)
ddresque дал 1770 областей с ошибками (4316160 байтов).
Но ведь это уже пушистый зверек ?
Отследить включение/выключение монитора.
Есть xorg и xfce-4.12
Есть ли возможность получить событие в виде запуска скрипта при включение/выключения питания монитора?
Или получить событие в виде запуска скрипта при входе/выходе монитора в энергосберегающий режим ?
Хочется при выключенном/спящем мониторе через cpufreq-set ставить минимальные частоты, а при включении поднимать до стандартных значений.
| ← назад | следующие → |