Loess.ru

having fun

Числа с плавающей точкой в компьютере не столь точны, как кажутся

So 0.1 and 0.2 (1/10 and 1/5) while clean decimals in a base 10 system, are repeating decimals in the base 2 system the computer is operating in. When you do math on these repeating decimals, you end up with leftovers which carry over when you convert the computer’s base 2 (binary) number into a more human readable base 10 number.

https://0.30000000000000004.com/

Хабр. Заложники COBOL и математика. Часть 1
Хабр. Заложники COBOL и математика. Часть 2

i  | floating pt    | fixed pt
-- | -------------- | ---------------------------
0  | 4              | 4
1  | 4.25           | 4.25
2  | 4.47058823529  | 4.4705882352941176470588235
3  | 4.64473684211  | 4.6447368421052631578947362
4  | 4.77053824363  | 4.7705382436260623229461618
5  | 4.85570071257  | 4.8557007125890736342039857
6  | 4.91084749866  | 4.9108474990827932004342938
7  | 4.94553739553  | 4.9455374041239167246519529
8  | 4.96696240804  | 4.9669625817627005962571288
9  | 4.98004220429  | 4.9800457013556311118526582
10 | 4.9879092328   | 4.9879794484783912679439415
11 | 4.99136264131  | 4.9927702880620482067468253
12 | 4.96745509555  | 4.9956558915062356478184985
13 | 4.42969049831  | 4.9973912683733697540253088
14 | -7.81723657846 | 4.9984339437852482376781601
15 | 168.939167671  | 4.9990600687785413938424188
16 | 102.039963152  | 4.9994358732880376990501184
17 | 100.099947516  | 4.9996602467866575821700634
18 | 100.004992041  | 4.9997713526716167817979714
19 | 100.000249579  | 4.9993671517118171375788238

Стоит помнить это каждый раз, когда делаешь вычисления с плавающей точкой.

Сверхпроводимость

N-дцать лет назад читал про Эффекты Джозефсона и Куперовские пары электронов, но не мог даже представить, насколько применимы эти эффекты в промышленности и приборостроении в современном мире!
Почитайте: https://elementy.ru/bookclub/chapters/430825/430831#chapter4_Josephson_effects (книга очень научпопна и полностью доступна для прочтения на сайте elementy.ru)

Оказывается, что сверхпроводящий «бублик» в точности сохраняет захваченное, или, как еще говорят, «замороженное», поле. Его изменениям препятствует закон электромагнитной индукции. Если попытаться изменить магнитный поток через кольцо, то в самом кольце наведется ток, препятствующий изменению. Поскольку кольцо сверхпроводящее, ток не затухает — магнитный поток остается неизменным.

см. алсо https://loess.ru/dynasty/
см. алсо 73 книги фонда «Династия» (torrent)

Атрофия эмпатии?

Отличная статья про организацию труда и реализацию в соответствии с характером. Затронуты весьма тонкие и интересные особенности ведения бизнеса в целом и в РФ в частности:
https://hbr-russia.ru/liderstvo/lidery/821870 (PDF)

Все менеджеры, с которыми вы в компании общались, — в прошлом депрессивные. У них интеллекта выше крыши, но поначалу это такие ­бизнесмены, что плакать хочется. Они не представляют, что на ком-то могут заработать. Их мамы приезжают на наши дни открытых дверей в вузы и смотрят на меня как на дежурного клоуна: той, которая и 18 тыс. руб. не могла заработать, мы сразу даем зарплату не меньше 60 тыс. руб., квартиру, машину. А если нет водительских прав, то и шофера. И через пять лет с высочайшей вероятностью этот человек будет получать 500—800 тыс. руб. И это то, что он заслужил, и компания гордится тем, что такие люди у нас работают.

— Но у вас же бизнес-структура, а не неврастеническое отделение.

Ребятам, которых мы отбираем, 20—25 лет, их эмоционально-чувственное восприятие находится на высочайшем уровне. Они тонкокожие, ранимые, их легко обидеть взглядом, жестом. Они сразу считывают эмоциональное состояние другого человека. Их депрессивные реакции — следствие той жизни, в которой мы живем. В которой люди с совестью не могут быть успешны, так как не готовы идти по головам.

В России 60—70% населения — эмпатичные люди, и можно сказать, что они неправильные. А можно и по-другому: неправильные — это активная прослойка, навязавшая модель, в которой эмпатичные чувствуют себя предельно неуютно. Мы умеем работать и с теми, и с другими. Но только акционеров можем воспитать из «сопливых», а не из выпускников «вышки».

см. алсо https://loess.ru/атрофия эмпатии-1
см. алсо https://loess.ru/конец эмпатии

Теория волны-пилота



Гидродинамические опыты с волной-пилотом на разделе двух сред никак не смогли подтвердить или смоделировать то, что происходит на квантовом уровне. Расширенные исследования двухщелевых экспериментов, в т.ч. на компьютерных симуляциях, в т.ч. с дополнительным разделителем (additional splitter plate), не подтвердили интерференционной картины, а сделанные ранее заявления оказались ошибкой.

“the experiment that got me hooked on this problem,” the fluid dynamicist Paul Milewski said — was in error. Repeat runs of the experiment, called the “double-slit experiment,” have contradicted Couder’s initial results and revealed the double-slit experiment to be the breaking point of both the bouncing-droplet analogy and de Broglie’s pilot-wave vision of quantum mechanics.

Experts note that the simplest version of de Broglie’s theory was bound to fail

Всё ещё остаётся надежда на то, что усовершенствованная Дэвидом Бомом теория более близка к реальности, нежели копенгагенская интерпретация, однако:

Proofs in the 1970s showed that de Broglie-Bohm theory makes exactly the same predictions as standard quantum mechanics. However, with one element of classical reality restored — concrete particles — new mysteries arise, like how or why a mathematical wave function that’s spread everywhere in space is bolted in certain places to physical particles. “Quantum mechanics is not less weird from that perspective,” Tomas Bohr said. Most physicists agree, but it’s really just a matter of taste, since the experimental predictions are identical.

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

“To get the real quantum mechanical result, it’s really important that the possible paths of the particle enter in a democratic way,” Tomas Bohr said. But with pilot waves, “since one of these sides in the experiment carries a particle and one doesn’t, you’ll never get that right. You’re breaking this very important symmetry in quantum mechanics.”

А если вспомнить о бритве Оккама и то, насколько продвинулась теория струн (М-теория), исходя из симметрии и суперсимметрии, становится понятным, что пока лишние сущности теории волны-пилота могут затруднять расчёты.

Усовершенствованная теория волны-пилота описывает то же самое, но с иной точки зрения, а гидродинамические эксперименты — не более чем приближенная к «разумной реальности» визуализация.

Есть также и расширение теории волны-пилота, основывающаяся на вакууме как супержидкости — т.н. Quantum Space Theory, но поскольку прямой (очень прямой) подход к этим теориям также должен противоречить теореме Белла, и идея нелокальности скрытых параметров — это «a little too much to handle», они не пользуются популярностью у мейнстримных физиков.

Bell’s theorem is a purely mathematical result. It says that if a theory of hidden variables is local then there is a limit to the degree of correlation between separate parts of a system. This result is independent of whether there are or are not hidden variable theories, locality, or a physical world at all.

Now it so happens that quantum mechanics makes predictions of correlations that exceed the correlations allowed by a local hidden variable theory. And these predictions have been experimentally confirmed. Thus quantum mechanics (and indeed our physical world) cannot have local hidden variables. This leaves open the possibility that there are no hidden variables or that there are hidden variables that are non-local. Pilot wave theory is a nonlocal hidden variable theory and is perfectly consistent with both quantum mechanics and Bell’s theorem.

https://www.quantamagazine.org/famous-experiment-dooms-pilot-wave-alternative-to-quantum-weirdness-20181011/ (pdf) — отличная статья, куча ссылок
https://vortex.institute/the-theory/quantum-mechanics-from-pilot-wave-theory/ (pdf)
https://www.quora.com/How-is-Thad-Roberts-Quantum-Space-Theory-viewed-in-the-theoretical-physics-community-Compared-to-quantum-loop-gravity-and-string-theory-is-this-another-way-of-conceptualizing-an-existing-theory-or-entirely-new
http://einsteinsintuition.com/what-is-qst/overview/ (pdf)
https://www.quora.com/Is-the-pilot-wave-theory-consistent-with-Bells-theorem

All you need for telestudio is OBS

How to output from OBS to multicast/unicast:
Settings -> Output -> Output Mode -> Advanced
Recording -> Type -> Custom Output (FFmpeg)
FFmpeg Output Type -> Output to URL
File path or URL -> udp://224.0.0.1:1234?pkt_size=1316&buffer_size=65535 (working example, tweak it)

Alternatively you can directly send to just one PC in your system by using his IP, for example: udp://192.168.0.5:9999?pkt_size=1000
You can use any port that is free and accessible on the PC’s you want to use.

Container Format -> Depends on the protocol, for udp it would be mpegts
Video Bitrate -> 2500 or higher (depends on your encoder)
Audio Bitrate -> 128 or higher (depends on your encoder)

Activate the checkbox «Show all codecs»
Be aware, some combinations and codecs will not work for streaming! You will have to test to find your best combination.
Video Encoder -> libx264 / h264_nvenc (if you have an nvidia gpu) or other codecs can be used
Audio Encoder -> AAC, AC3 or even OPUS can be selected.

Start a Recording, not a Stream.
You can now watch the stream in VLC (for example) on another PC in your local network. Open a network stream in VLC and enter the following address: udp://@224.0.0.1:1234(if you used this address as the «File Path» earlier, in the case of streaming to one pc you can enter udp://@:9999 on the receiving PC)

via https://obsproject.com/forum/resources/obs-studio-send-an-udp-stream-to-a-second-pc-using-obs.455/
ffmpeg UDP in/out syntax https://www.ffmpeg.org/ffmpeg-protocols.html#udp
more relay and ffmpeg examples https://obsproject.com/wiki/Streaming-With-SRT-Protocol
OBS scene scheduling/time-based switching https://obsproject.com/forum/threads/scene-change-and-stream-scheduler-based-on-date-time.95375/

If you need to send multicast to specific windows interface:
route add 224.10.20.30/32 inter.fa.ce.ip

How to add Claymore rigs hashrate into Zabbix

Quick, dirty, no changes in rigs configs needed — http gathering:

1. Check your rig web-interface availability from zabbix-agent host https://rig.ip.address:3333/
2. Make script to return hashrate from web page
wget -nv -q -O - http://$1:3333 |grep -oP '(?<=result).*?(?=;)'|awk '{print $NF}'|sed -e 's/^"//'
3. Add this script into /etc/zabbix/zabbix_agentd.conf as
UserParameter=getrighashrate[*],/usr/lib/zabbix/externalscripts/script.sh
and restart zabbix-agent service
4. Check either by
zabbix_agentd -t getrighashrate[rig.ip.address]
or
zabbix_get -s 127.0.0.1 -k getrighashrate[rig.ip.address]
5. Add items into Zabbix into zabbix-agent host and multiply values by 1000. Add graphs into your fav dashboard

Quick, dirty, snmp and logs-involved:

1. Install and run snmpd at every rig
2. At every rig add script to return current logged hashrate:
tail -n 200 /var/log/miner/claymore/lastrun_noappend.log |grep "ETH - Total Speed"|tail -n1|awk '{print $7}'
3. Add this script into /etc/snmp/snmpd.conf as
extend hashrate /path/to/snmp.script
and check for security at extension table
view systemonly included .1.3.6.1.4.1.8072.1.3.2
and restart snmpd service
4. Check this with
snmpget -c public -v2c localhost .1.3.6.1.4.1.8072.1.3.2.4.1.2.8.104.97.115.104.114.97.116.101.1
5. Make Zabbix template with snmpv2 item with your fav {$SNMP_COMMUNITY} and apply this to every rig in Zabbix

Additional чтиво:
https://bitcointalk.org/index.php?topic=3959954.0 https://www.ekzorchik.ru/2017/05/monitoring-the-temperature-of-the-raspberry-board/ https://www.ekzorchik.ru/2016/06/monitoring-the-weather-by-zabbix/

Базовые инструменты для трассировки приложений в Linux

$ strace -e trace=open,access -o strace.log uname

$ strace -e trace=read,write -p <PID>

классы вызовов: file, process, network, signal, ipc, <etc, etc>:

-e trace=network (Trace all the network related system calls.)
-e trace=signal (Trace all signal related system calls.)
-e trace=ipc (Trace all IPC related system calls.)
-e trace=desc (Trace all file descriptor related system calls.)
-e trace=memory (Trace all memory mapping related system calls.)
(https://stackoverflow.com/questions/7482076/how-does-strace-connect-to-an-already-running-process)

Опции strace:
-i — выводить указатель на инструкцию во время выполнения системного вызова;
-k — выводить стек вызовов для отслеживаемого процесса после каждого системного вызова;
-o — выводить всю информацию о системных вызовах не в стандартный поток ошибок, а в файл;
-q — не выводить сообщения о подключении о отключении от процесса;
-qq — не выводить сообщения о завершении работы процесса;
-r — выводить временную метку для каждого системного вызова;
-s — указать максимальный размер выводимой строки, по умолчанию 32;
-t — выводить время суток для каждого вызова;
-tt — добавить микросекунды;
-ttt — добавить микросекунды и количество секунд после начала эпохи Unix;
-T — выводить длительность выполнения системного вызова;
-x — выводить все не ASCI-строки в шестнадцатеричном виде;
-xx — выводить все строки в шестнадцатеричном виде;
-y — выводить пути для файловых дескрипторов;
-yy — выводить информацию о протоколе для файловых дескрипторов;
-c — подсчитывать количество ошибок, вызовов и время выполнения для каждого системного вызова;
-O — добавить определённое количество микросекунд к счетчику времени для каждого вызова;
-S — сортировать информацию выводимую при опции -c. Доступны поля time, calls, name и nothing. По умолчанию используется time;
-w — суммировать время между началом и завершением системного вызова;
-e — позволяет отфильтровать только нужные системные вызовы или события;
-P — отслеживать только системные вызовы, которые касаются указанного пути;
-v — позволяет выводить дополнительную информацию, такую как версии окружения, статистику и так далее;
-b — если указанный системный вызов обнаружен, трассировка прекращается;
-f — отслеживать также дочерние процессы, если они будут созданы;
-ff — если задана опция -o, то для каждого дочернего процесса будет создан отдельный файл с именем имя_файла.pid.
-I — позволяет блокировать реакцию на нажатия Ctrl+C и Ctrl+Z;
-E — добавляет переменную окружения для запускаемой программы;
-p — указывает pid процесса, к которому следует подключиться;
-u — запустить программу, от имени указанного пользователя.

ldd — показывает список совместно используемых библиотек ELFфайла

$ cat ~/script.sh
while inotifywait -e modify \
/var/log/apache2/error.log;
do
tail -1 /var/log/apache2/error.log | \
notify-send "Apache needs love!"
done

incrontab:
Формат заданий:
<путь> <событие> <команда> (с разделением через пробел)

Самые интересные события:
IN_ACCESS — файл был прочитан
IN_ATTRIB — изменились метаданные файла/каталога
IN_MODIFY — файл был изменен
IN_CREATE — файл или каталог был создан в отслеживаемой директории
IN_DELETE — файл или каталог был удален в отслеживаемой директории
IN_DELETE_SELF — отслеживаемый файл или каталог был удален
IN_MOVE — файл был перемещен из отслеживаемого каталога или в него
IN_ALL_EVENTS — все события
В описании команды можно использовать внутренние переменные. Самые полезные:

$@ — полное имя отслеживаемого файла/каталога
$# — относительное имя файла, вызвавшего событие (только при мониторинге каталога)
$% — название события

https://xakep.ru/2011/01/13/54477/ (pdf)

более современные инструменты:
https://github.com/iovisor/bcc/blob/master/docs/tutorial.md
BCC is a toolkit for creating efficient kernel tracing and manipulation programs, and includes several useful tools and examples. It makes use of extended BPF (Berkeley Packet Filters), formally known as eBPF, a new feature that was first added to Linux 3.15. Much of what BCC uses requires Linux 4.1 and above.

Wireguard VPN added to 5.6 kernel

https://www.opennet.ru/opennews/art.shtml?num=52636

Представлен знаковый выпуск VPN WireGuard 1.0.0, который отметил собой поставку компонентов WireGuard в основном составе ядра Linux 5.6 и стабилизацию разработки. Включённый в состав ядра Linux код прошёл дополнительный аудит безопасности, выполненный независимой фирмой, специализирующейся на подобных проверках. Аудит не выявил каких-либо проблем.

Напомним, что VPN WireGuard реализован на основе современных методов шифрования, обеспечивает очень высокую производительность, прост в использовании, лишён усложнений и хорошо зарекомендовал себя в ряде крупных внедрений, обрабатывающих большие объёмы трафика. Проект развивается с 2015 года, прошёл аудит и формальную верификацию применяемых методов шифрования. Поддержка WireGuard уже интегрирована в NetworkManager и systemd, а патчи для ядра входят в базовый состав дистрибутивов Debian Unstable, Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, Subgraph и ALT.

Размещённые на сайте проекта результаты тестирования охватывают старую обособленную реализацию WireGuard и отмечены как недостаточно качественные. Со времени проведения тестов код WireGuard и IPsec был дополнительно оптимизирован и теперь работает быстрее. Более полное тестирование, охватывающее интегрированную в ядро реализацию, пока не проведено. Тем не менее, отмечается, что WireGuard в некоторых ситуациях по-прежнему обгоняет IPsec в силу многопоточности, в то время как OpenVPN остаётся очень медленным.