Дважды полураспад

Дважды полураспад это четверть-распад или три-четверти-распад?

#deep #why

2025.10.14 15:57

Локальный распределенный DNS без DNS: Multicast DNS (mDNS)

Введение


У вас есть два линукс изделия (другие тоже будут работать, но вам надо гуглить зачем) между которыми вы ходите уметь общение.

Самый простой вариант это по ip, но только один раз. Завтра изделие получит другой ip и это никак не победить.

Самый простой вариант это добавить в /etc/hosts файл алиас:

192.168.0.48 destination

А во всех скриптах использовать алиас, например:

$ scp kitty.gif user@destination:

Но ip всё равно меняется. Но менять уже в одном месте. Но менять всё же надо.

Самый просто вариант это починить это установить локальный DNS сервер на сервере и сделать его главным в сети и проксировать все запросы через него нет такого.

А ведь было бы здорово не менять это вручную да?

Multicast DNS (mDNS)


В 2025 году 25 лет назад придумали Multicast DNS (mDNS) который через бродкаст запросы делает динамический распределённый локальный DNS о котором не надо беспокоиться и который просто работает. Но только в одной сети. И только один хост на изделие.

Как Multicast DNS (как mDNS)


В линуксе оно когда конвертирует слова-имена в цифры оно делает через сервис Name Service Switch. У этого сервиса есть /etc/nsswitch.conf где ему указано где как искать:

> cat /etc/nsswitch.conf
# Name Service Switch configuration file.
# See nsswitch.conf(5) for details.

passwd: files systemd
group: files [SUCCESS=merge] systemd
shadow: files systemd
gshadow: files systemd

publickey: files

hosts: mymachines resolve [!UNAVAIL=return] files myhostname dns
networks: files

Для хостов оно говорит сначала искать в (mymachines) в локальных контейнерах.

Потом оно ищет в (systemd-resolved) dns который заменил собой nss-dns. Если DNS возвращает недоступно, то конец, не искать.

Потом смотрит в /etc/hosts, на локальный хостнейм и потом уже в легаси DNS.

Занимательный факт: мы можем добавить ещё сервис в этот лист. Что если мы добавим Multicast DNS (mDNS)?

Установка Multicast DNS (установка mDNS)

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

https://wiki.archlinux.org/title/Avahi

Устанавливаем пакет libnss-mdns в котором будет avahi (мы добавим в NSS hosts как сервис):

# pacman -Sy nss-mdns
# emerge -av sys-auth/nss-mdns
# sudo apt-get install libnss-mdns avahi-daemon avahi-utils

Дальше добавим /etc/nsswitch.conf строку mdns_minimal [NOTFOUND=return]:

# hosts: mymachines resolve [!UNAVAIL=return] files myhostname dns
hosts: mymachines mdns_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] files myhostname dns
# hosts: mymachines mdns_minimal resolve [!UNAVAIL=return] files myhostname dns

[NOTFOUND=return] говорит не искать дальше домены *.local, это сломает (вероятно) локальные записи в /etc/hosts поэтому можно удалить чтобы работало как раньше, но лучше.

Ещё можно перехватывать на только *.local домены, но нам это не нужно. Для этого мы будем использовать /etc/hosts

Устанавливаем наш локальный домен в файле /etc/avahi/avahi-daemon.conf и перезапускаем и проверяем:

$ cat /etc/avahi/avahi-daemon.conf | grep host-name

host-name=source

$ systemctl enable avahi-daemon.service # add to autorun
$ systemctl restart avahi-daemon.service # run

$ avahi-browse --all --verbose --resolve --terminate

$ avahi-resolve-host-name source.local

source.local	192.168.100.101
  
$ ping source.local

PING source.local 56 data bytes
64 bytes from source.local : icmp_seq=1 ttl=64 time=0.031 ms
64 bytes from source.local : icmp_seq=2 ttl=64 time=0.067 ms
64 bytes from source.local : icmp_seq=3 ttl=64 time=0.056 ms
^C

Проблема в том что у нас может быть 1 хост на одно изделие. Если вы хотите поднимать несколько разных локальных доменов например:

git.local
server.local

То это можно легко сделать через /etc/avahi/hosts, но там тоже надо хардкодить ip.

Самый простой способ это починить это при поднятии сети запускать несколько раз avahi-publish & на каждый домен каждый раз вычисляя динамически локальный ip а никак живите с одним доменом всё лучше чем ничего.

Включаем sftp/ssh


$ cp /usr/share/doc/avahi/sftp-ssh.service /etc/avahi/services/
$ cp /usr/share/doc/avahi/ssh.service /etc/avahi/services/

$ systemctl restart avahi-daemon.service

Второе изделелие


Быстренько повторяем всё что сверху на втором изделии, потом ищем их друг у друга проверяем что всё работает. Настраиваем ssh подключение по ip между двумя изделиями. Потом в ssh просто меняем ip на локальный домен:

$ ssh my_user@destination.local -i ~/.ssh/my_key

Когда всё работает мы добавляем ~/.ssh/config эти волшебные слова:

Host destination
    HostName destination.local
    IdentityFile ~/.ssh/my_key
    User my_user

Магическим образом был создан короткий алиас для ssh в котором всё настроено:

$ ssh destination

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

$ cd /tmp/
$ date > temp_file
$ echo "source" >> temp_file
$ scp temp_file destination:
$ ssh destination 'echo destination >> ~/temp_file'
$ ssh destination 'cat ~/temp_file'

Уру-ру-ру, мы можем посылать файлы и удалённо выполнять команды. А главное теперь есть домены не привязанные к ip!

Выведение


Главный для меня минус в том что нельзя просто сделать несколько доменов на много сервисов на одном изделии, но с этим можно жить!

Зато таким же образом можно сделать и NFS, и rsync, и git!!!

А ещё mDNS используется в IoT и прочих home assistant сетей!

#linux #multicastdns #mdns #dns #howto #man

2025.09.28 01:53

Будущее и CCTV

Больше всего в фильмах про успешное будущее мне непонятно отсутствие камер.

Вот человечество каким-то образом смогло не умереть и добралось до небес других планет. На Земле всё замечательно и сплошной киберпанк, но внезапно в каком-нибудь переулке внезапно нет камер. Или в техническом тоннеле космического корабля нет камер и ИИ не знает где что происходит.

Как это вообще возможно? Уже сейчас плохой модуль камеры стоит меньше доллара. Ну да, его нужно ещё как-то обрабатывать и хранить, но если посмотреть что сейчас могут делать SoC (system on the chip) и что они могли делать 20 лет назад, то мне совершенно очевидно что через 100 лет камеры будут автоматически интегрированы в краску, не то что в системы видеонаблюдения.

В успешном будущем всё происходящее будет постоянно записываться из ста тысяч точек, сохраняться и анализироваться. Уже сейчас нельзя пройти по городу не попавшись на 20 камер в каждую секунду. Уже наконец-то придумали очки с дисплеями в которых есть камера и которые наконец-то работают. Батарейка слабенькая и работать только начали, но что будет через 100 лет даже странно представить.

Просто писателям лень писать захватывающие сценарии когда всё записывается только потому что их писательские мозги ничего не могут придумать и им приходится делать человечество в будущем примитивным просто чтобы они могли написать хоть что-то.

2025.09.22 12:30

🌊🌲🌳🏙️

В какой-то мне показалось что худшим поступком моей жизни было взять этот прекрасный d40

И достать из него ИК фильтр ведь это совершенно сломало цвета

А теперь мне ещё больше нравится и совсем не хочется иметь снова нормальный сенсор

Потому что очень нравится сравнивать (очень нравится что иголковые и плосколистовые деревья по-разному отсвечивают в ИК диапазоне)

И вообще примесь ИК очень радует. Да и к тому же всегда можно просто прикрутить ИК фильтр сверху, но не хочется.

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

#photocard #photodump #fullspectrum #ir

2025.09.15 00:20

Finland’s PhD Sword and Hat Tradition

Если в Финляндии закончить PhD, то дают настоящий меч.

М – Мотивация.

2025.09.05 01:04

Абьюз имени

А что если изменить имя официально на “микропластик” и подавать в суд на все ресурсы которые будут обвинять меня в загрязнении океана?!?!?!?!

2025.05.29 19:09

Искусственная гравитация

Дорогой читатель, а вот если бы завтра искусственная гравитация стала бы нормой. Ну типа мы могли бы в любой комнате сделать отсутствие гравитации или сделать её 3x, то как вы думаете, стали бы люди этим злоупотреблять?

Мне бы, например, хотелось попробовать спать в 2x гравитации — это же никакое тяжёлое одеяло не нужно и такая лёгкость будет на улице! Спят же люди в барокамерах.

2025.05.17 16:50

HFY & AI

У меня для вас есть немного очень важного исследования, усаживайтесь в своих космо-креслах поудобнее и представьте что вам этот пост читает электронный голос немного похож на настоящий.

Оказывается, есть такой жанр фантастики как HFY что означает Humans Fuck Yeah: сначала всё было не очень, но пришли люди и всё починили, потому что люди невероятно непредсказуемые, смышлёные, добрые и замечательные существа и вообще нет ничего лучше людей которые всегда готовы прийти на помощь глупым бесполезным альенам с 50к лет космических путешествий.

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

Вы же знаете что на ютубах сейчас тысячи миллионов видео где показывают текст какого-нибудь поста с реддита/четыречана и его читает электронный голос и это очень увлекательно и невозможно это не смотреть (нет).

С HFY немного интереснее, потому что суть в целом та же, но только сами истории придумывает AI, читает их AI и картинки тоже придумывает AI. 300% сгенерированный контент загружаемый на сетки ютуб-каналов, с абсолютно одинаковыми ограниченными вариантами сюжетов. Некоторые каналы стараются чуть-чуть побольше, некоторые чуть-чуть поменьше. Где-то роботы получше, где-то картинки более лучше соответствуют тексту. На каком-то канале был даже звук неотбалансирован в одном ухе слышно сильно лучше чем в другом. Как? А я не знаю и это потрясающе!

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

Tags:
Humanity, Fuck Yeah! HFY Stories, Short story for sleep, fantasy sleep story HFY,HFY Story,HFY Short Story,HFY War,Science Fiction, Sci-Fi Story, Sci-Fi Short Story, Sci-fi HFY, Humans are Space Orcs, Reddit HFY Stories, Reddit Stories, Reddit Humans are Space Orcs, Reddit Sci-Fi Stories, HFY Stories, Short story for sleep, fantasy sleep story

Keywords: hfy, military scifi, space opera, alien invasion, quantum warfare, humanity fuck yeah, space battle, military strategy, war story, humans vs aliens, space warfare, galactic conquest Sci-Fi Universe, SciFi, Science Fiction, SCI-FI STORY, ALIENS, hfy stories, HFY, hfy, the best of hfy, alien story, sci fi, space horror stories, science fiction, Sci-Fi Mystery, Human Peace, Galactic Federation, Interstellar Diplomacy, Peaceful Humans, Terran Union, Epic Sci-Fi, Space Exploration, Alien Civilizations, Avoiding War, High Fantasy Sci-Fi, Stellar Narratives, Galactic Politics, Peace Strategies, Sci-Fi Chronicles, Subscribe Now hfy,humanity fuck yeah,sci fi,science fiction,military sci fi,space opera,alien invasion,space battle,quantum warfare,military strategy,war story,space combat,humans are space orcs,earth vs aliens,humanity wins,advanced technology,galactic warfare,space military,epic space battles,humans are awesome,humans are warriors,deception warfare,military deception,space marines,alien empire,advanced warfare,tactical warfare,space warfare

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

Немножко примеров:


Вот подписавшись на этот канал (и оформив платное членство) вы можете получать по 10+ часов одинакового контента в день:


На этот канале вы получаете поток совершенно уникальных историй про “Альеновский профессор поставил задачу Х, все умерли, а хуман изобрел изобретение и все в шоке”


Тут уже несколько циркулирующих сюжетов, сплошное уникальное разнообразие (нет):


И последний канал самый интересных из всех. Тут живые чтецы (не только тут, но тут комманда) и чтобы вы не подумали что это вам читает робот — первые пару минут каждого ролика вам показывают человека который читает этот сгенерированный текст и только потом показывают сгенерированные картинки. Тут хотя бы можно понять почему членство стоит денег, но всё равно потрясающе. Есть даже циклы историй с новыми сериями раз в какое-то время:


Просто потрясающе. Очень рекомендую ознакомиться с этим явлением — оно только появилось и уже совсем скоро исчезнет, превратится в какой-нибудь life-сервис наподобие онлайн-радио или я не знаю у меня не хватает фантазии надо спросить в AI что там будет им виднее что там в будущем они же будущее!

2025.04.11 01:11

египтоглифы vs японоглифы

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

И не то чтобы у них это плохо получалось, вот например:

𓆏 🐸

У них даже была картиночка для сегвея!

𓌝

Начинаю смотреть на современность немного разочарованно.

2025.03.30 15:51

cli params и Racket lang

Очень нужно сильно захотелось написать простой маленький консольный бинарничичек. Конечно же не на пхп ведь мы же не монстры, правда?

Немедленно открываем документацию к racket чтобы узнать как это делать:

(command-line optional-name-expr optional-argv-expr
              flag-clause ...
              finish-clause)

optional-name-expr =
                   | #:program name-expr

optional-argv-expr =
                   | #:argv argv-expr

       flag-clause = #:multi flag-spec ...
                   | #:once-each flag-spec ...
                   | #:once-any flag-spec ...
                   | #:final flag-spec ...
                   | #:usage-help string ...
                   | #:help-labels string ...
                   | #:ps string ...

         flag-spec = (flags id ... help-spec body ...+)
                   | (flags => handler-expr help-expr)

             flags = flag-string
                   | (flag-string ...+)

         help-spec = string
                   | (string-expr ...+)

     finish-clause =
                   | #:args arg-formals body ...+
                   | #:handlers handlers-exprs

       arg-formals = rest-id
                   | (arg ...)
                   | (arg ...+ . rest-id)

               arg = id
                   | [id default-expr]

    handlers-exprs = finish-expr arg-strings-expr
                   | finish-expr arg-strings-expr help-expr
                   | finish-expr arg-strings-expr help-expr
                     unknown-expr

Пожалукйста, потратьте минутку и насладитесь этим шедевром форматирования.

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

(define parser
  (command-line
   #:usage-help
   "Here you can write a general description of your program"
   "You can have multiple strings to make multiple lines"

   #:once-each
   [("-m" "--my-parameter") MY-PARAMETER-NAME
    "write a short description of what setting MY-PARAMETER-NAME does"
    (my-parameter (string->number MY-PARAMETER-NAME))]
   [("-a" "--another-parameter") ANOTHER-PARAM
    "a little description of ANOTHER-PARAM"
    (another-parameter (string=? "true" ANOTHER-PARAM))]
   [("-s" "--string") A-STRING
    "what is A-STRING?"
    (a-string A-STRING)]

   #:args () (void)))

Очень мне нравится как в они в этом racket’е любят использовать магические строки типа #:once-each которые непонятно что делают и никак не автодополняются официальной IDE.

Очень, очень захватывающе. Пожалуй, на этом с racket я закончу.

2025.01.26 14:54

Основатель WordPress заблокировал участников, предлагавших создать форк

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

🤌

source

2025.01.12 14:39