LINUX.ORG.RU

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

Когда линь перестанет виснуть при исчерпании памяти? (2022)

Форум — Desktop

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

Прописал vm.vfs_cache_pressure = 20 в /etc/sysctl.conf — ничего не поменялось. Systemd до недавних пор в этом плане тоже была поломатое, вроде в бунте 21.10 пофиксили, но у меня деб 11: https://github.com/systemd/systemd/issues/10581

 , ,

byko3y
()

Как вы пробрасываете USB?

Форум — General

Версия qemu 2.3.50, ядро 4.0.1, пробрасываю (в восмерочку) USB{2,3} вот так:

-device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 \
-device usb-host,hostbus=1,hostport=1 \
-device usb-host,hostbus=1,hostport=2 \
это у меня 2 USB3 порта, пробовал и на USB2 — результат тот же: флешки пытаются установиться, появляются в диспетчере устройств, но с ошибкой, в итоге не работают. USB-аудиокарта устанавливается и работает, но плохо (звук с треском).

Я так понимаю, что USB не полностью работает.

А как вы пробрасываете железные USB-порты или устройства, которые в результате удовлетворительно работают?

 , , ,

slon
()

Racket быстрее для многопоточной работы, чем Go

Форум — Development

Микрозамер скорости сервера эха: https://racket.discourse.group/t/racket-matching-or-exceeding-golang-for-echo-server-performance/660

Результаты:

Racket: ~114,584 сообщений/сек
Go (default): ~85,650 сообщений/сек
Go (GOMAXPROCS=1): ~108,495 сообщений/сек

Код для Racket (ссылка) использует потоки Racket (thread), код для Go (ссылка) использует горутины.

 , ,

monk
()

как спроектировать....

Форум — Development

… м?

ну т.е. есть например вот такая штука: https://www.educative.io/courses/grokking-the-system-design-interview

ну прикольно, но не космос.

и это про сервисы, а иногда надо что-то такое, «десктопное». например как сделать CAD? или что-то вроде Miro, только чтобы можно было построить граф связей?

или например как правильно делать плагины в мире Java?

может где-то есть полезные линки? книжки?

 ,

Rastafarra
()

Хочу email-in-a-box

Форум — Admin

Почему в 2022 году поднять свой мейл сервер так трудно? Неужели нет какого-то специализированного дистрибутива, чтобы поставил его в виртуалку, прокинул порты, создал нужные DNS-записи и всё – email работает? Может, я плохо ищу? Хочу, чтобы можно было привязать разные домены, создать ящики и чтобы был веб-интерфейс (например, roundcube) и всё просто работало. Может плохо ищу?

 , , , ,

CYB3R
()

Memcached: посоветуйте что-нибудь почитать про нюансы работы распределенной системы

Форум — Development

Есть довольно стандартная конструкция: несколько серверов с приложением на PHP, использующим в качестве кеша несколько memcached-серверов.

Мне не хватает понимания, как вся эта конструкция себя ведет при нештатных ситуациях - в частности, как распределяются ключи по серверам, что происходит при падении одного или нескольких memcached-серверов, почему могут возникать ситуации с разными данными на разных php-клиентах и т.д.

Посоветуйте что-нибудь почитать на эту тему.

 , ,

aix27249
()

Посоветуйте карту видеозахвата совместимую с Linux

Форум — Linux-hardware

Всем доброго времени.

Есть ли у кого-нибудь опыт работы с картами видеозахвата на Linux? Засматриваюсь на AVerMedia Technologies Live Gamer HD 2 с подключением по PCIe-x1, но что-то с отзывами на линь совсем-совсем глухо. Ещё я ограничен рамками PCIe-x1, так как остальные PCIe-x16 заняты видеокартами. Как последний вариант, возможно USB 3.Х, но PCIe конечно же предпочтительнее.

 , ,

NeTC
()

Как можно гарантировать, что-то вроде целостности транзакций в ФС

Форум — Development

Прочитал тут про свежую найденную уязвимость в стандартной библиотеке Rust, но что-то мне кажется, подобные вещи могут быть на любом языке и даже не совсем понятно как их избегать в общем случае, то есть, случае подмены файлов за короткое время

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

Уязвимость вызвана некорректной реализацией проверки символических ссылок перед рекурсивным удалением каталогов. Вместо запрета следования по символическим ссылкам, функция remove_dir_all() вначале проверяет, является ли файл символической ссылкой. Если определена ссылка, то она удаляется как файл, а если каталог - то вызывается операция рекурсивного удаления содержимого. Проблема в том, что между проверкой и началом операции удаления имеется небольшая задержка.

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

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

 

praseodim
()

Вся сетевая инфраструктура для бизнеса за 5 минут

Форум — Talks

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

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

Всё сводится к тому, что клиент берёт сервер за 100500 рублей, арендует к нему место в стойке в дата-центре, где каждый юнит на вес золото, где каждый сетевой порт (ethernet, SFP) стоит денег, где каждый блок питания 500W / 800W / 1400W стоит денег. Ещё есть всякие third-party услуги по защите от всяких DDoS-атак, и прочая, прочая, прочая. Не брезгует клиент и платить за какой-то стрёмный софт, когда при желании можно написать собственную реализацию на коленке.

Я как доморощенный админ локалхоста искренне поражён ценовой политикой вот этого всего, подходом к решению задач системных администраторов сидящих на зарплате. Задачи простые, а пути их решения, и деньги, которые за это просят ну просто космос!

И сейчас я буду демпинговать всю это фигню. Значится так.

Вместо дорогостоящей аренды стойки в дата-центре Москвы, с выделенным интернет-каналом и опциональной защитой от DDoS, я рекомендую арендовать VDS-сервер за 200-300 рублей, не дороже.

1 ядро, 1гб памяти, канал 100мбит, диск 10гб под систему — этого хватит с головой для нашего столичного филлиала.

Задача перед арендованной VDS стоит крайне простая:

  • Предоставлять интернет-канал наружу;
  • Служить одноразовым «презервативом» для защиты от внешних угроз;
  • Внешний IP-адрес.

Всё общение с внешним миром, как наружу, так и во внутрь нашей сети, происходит через VDS. В случае обнаружения сетевой атаки по каналу VDS задача перед админом стоит простая: обрубить конец. И взять другую VDS, за те же 200 рублей, с новым IP-адресом.

Зачем, скажите мне, тратиться на дорогостоящие услуги по защите от DDoS, если можно менять эти одноразовые VDS «как перчатки»?

Думаю суть ясна. Идём дальше.

Вся наша корпоративная сеть сидит за провайдерским NAT'ом. Нам не нужно, чтобы наша сеть была видна из интернетов. Вот прям вообще. Просто ходим в интернет через провайдера как обычно. От услуги внешнего IP-адреса отказываемся напрочь. Только NAT!

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

С интернет-каналом вопрос решён. Дальше.

Вместо дорогостоящего сервера, HP DL360 Gen9, стоимость минимальной конфигурации которой начинается от 100,000 рублей, достаточно взять обычный стационарный компьютер в любом компьютерном магазине для запуска виртуалок. Сервер DEXP в конфигурации Intel Core i3 и 48гб памяти с гарантией 3 месяца нам хватит с лихвой.

Компьютер, хост, на котором производится запуск виртуалок, должен быть тупо запускалкой виртуалок и не более того. Сам по себе никаких сервисов не крутит. Так же, не нужно громоздить никаких тоннелей, бриджей и прочего. Просто запускается виртуалка с параметрами по-умолчанию чтобы она тоже могла зайти в интернет как рядовой компьютер. Этого хватит. Мы за NAT'ом, помните?

В идеале, на компьютере для работы нужно всего два диска в зеркальном mdadm RAID 1 для хранения информации, — образов дисков виртуальных машин. Можно обойтись одним диском, но тогда образы дисков нужно будет бэкапить вручную.

Опционально, на третий диск можно установить хост-систему, по желанию, это будет proxmox, esxi, или же что-то своё. Но так же можно и сэкономить на диске, если воспользоваться моим инструментом booty и собрать систему запускающую виртуалки самому, и загружаться в неё прямиком в оперативную память с флешки.

Грубо говоря, одного HDD под виртуалки хватит.

По итогу что мы имеем.

  • Одноразовая VDS за 200 рублей с внешним IP-адресом, дропается в случае обнаружения атаки;
  • Компьютер DEXP для запуска виртуальных машин под служебные нужды; опционально таких серверов можно купить сколько потребуется по мере роста предприятия и бизнес-процессов.
  • Интернет в офис из соседней квартиры.

А теперь вишенка на торте.

Для того, чтобы наш бизнес заработал, осталось только подключить все виртуалки к сети, к той самой VDS, использовать для этого мы будем VPN WireGuard!

Мы включаем компьютер, запускаем виртуалки, устанавливаем ОС, настраиваем, то, сё, пятое-десятое, чики-брики, дело в шляпе.

На VDS приступаем к настройке WireGuard:

# umask 0077
# wg genkey > privatekey
# wg pubkey < privatekey > publickey
# umask 0022

На каждой виртуальной машине с доступом в интернет проделываем тоже самое.

# umask 0077
# wg genkey > privatekey
# wg pubkey < privatekey > publickey
# umask 0022

Затем на VDS настраиваем WireGuard:

# ip link add dev wg0 type wireguard
# ip addr add 192.168.254.1/24 dev wg0
# wg set wg0 listen-port 51820 private-key "./privatekey"
# wg set wg0 peer "копируем сюда publickey из виртуалки" allowed-ips 192.168.254.0/24
# последнюю команду повторять, добавить каждый publickey каждой из виртуалки

На каждой виртуалке с доступом в интернет мы настраиваем WireGuard:

# ip link add dev wg0 type wireguard
# ip addr add 192.168.254.2/24 dev wg0 # двоечку меняем по количеству виртуалок например
# wg set wg0 listen-port 51820 private-key "./privatekey"
# wg set wg0 peer "копируем сюда publickey из vds" endpoint "IP-адрес-VDS:51820" allowed-ips 192.168.254.0/24

Поздравляю! Ваш столичный филиал готов к работе!

# ping 192.168.254.1
PING 192.168.254.1 (192.168.254.1) 56(84) bytes of data.
64 bytes from 192.168.254.1: icmp_seq=1 ttl=64 time=10.4 ms
^C
--- 192.168.254.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 10.361/10.361/10.361/0.000 ms
# wg
interface: wg0
  public key: 5yeOjvLxfD9jicztCMQvarfBHHaI0t31BlJZBjmx8kg=
  private key: (hidden)
  listening port: 51820

peer: lmjidCVduFcrORW+fkEDK6LsXGBANRe5WZWyg7nO3gU=
  endpoint: 82.146.61.33:51820
  allowed ips: 192.168.254.0/24
  latest handshake: 2 seconds ago
  transfer: 1.55 KiB received, 2.02 KiB sent

Что делать дальше — вы знаете.

У нас есть VDS, которая выступает мастер-нодой с VPN, к ней подключаются все виртуальные машины по VPN, на которой происходят бизнес-процессы.

Это обычная внутренняя локальная сеть, на которой отдельными виртуалками вы всё так же настраиваете веб, почту, а правилами iptables управляете доступом.

На одну виртуалку установили веб-сервер, тут-же правилом iptables добавили forwarding всех запросов с VDS на эту виртуалку.

Ещё виртуалка — настроили почту, сделали forwarding почты с VDS на порт виртуалки.

Всё просто! И главное, всё это дело легко переносимо. Перенесли файл с образом виртуалки на другой компьютер, да даже личный ноутбук, запустили — она тут-же подсосалась к VPN на VDS и продолжает делать свою работу!

А вам не жалко будет потерять копеечную VDS и взять другую, развернуть всё уже готовое из ISO-образа (см. booty).

...

Зачем?! Зачем люди продолжают покупать дорогостоящее серверное оборудование, арендовать стойки в дата-центрах, платить бешеные данные за создание сетевой инфрастуктуры для своего бизнеса, если всё решается ТАК ПРОСТО!?

Готов стать админом на вашем предприятии и сделать всё с нуля под ключ, контакты в профиле. =)

 ,

Spoofing
()

Работа с памятью в go

Форум — Development

premetheus по процессу отдаёт метрики:

go_memstats_heap_idle_bytes

go_memstats_heap_released_bytes

при этом эти значения около 13GB для сервера с 16GB RAM. $ps эту память включает в RSS процесса, так же как $free этих свободных 13GB не видит, нет её ни в кэше, ни в буферах. В meminfo эта память числится в Inactive(anon). Собственно вопрос, когда эта память станет реально доступной для ОС?

 ,

Viper
()

Почему все же с++ такой сложный язык?

Форум — Development

С++ – сложный язык. Хоть это для каждого по разному и тд, но он очевидно сложнее большинства (всех?) высокоуровневых языков программирования. С другой стороны он очень быстрый и дает тотальный контроль.

Теперь вопрос: должен ли язык быть априори настолько сложным для достижения мощи как в с++ или же так просто исторически сложилось (ака историческая несправедливость)?

 ,

T3RM1N4L
()

Посоветуйте современную эмуляцию «классов» для С в эмбеды

Форум — Development

https://github.com/lvgl/lvgl/issues/1919

По ссылке я выписал основную литературу и библиотки. Там все толково, но не знаю насколько актуально.

Если кто в курсе, на чем нынче модно ООП для С изображать, дайте знать. Надо для эмбедов:

  • много оперативки жрать нельзя.
  • много флеша жрать не желательно.

По фичам критично только наследование методов/данных и virtual. Можно забить болт на private, эксепшены, множественое наследование и т.п.

Ответ типа «лучше ooc toolkit до сих пор ничего не придумали» - тоже устроит.

 , ,

Vit
()

Масштабирование приложений на go и scala

Форум — Development

Для нового приложения выбираем стек и появился вопрос, как масштабировать приложения на go и scala. На ноде есть pm2 и можно указывать кол-во инстансов, есть ли что-то похожее на go или scala?

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

 ,

Clause
()

Как рендерить несколько видеопотоков на OpenGL 3.1?

Форум — Development

Есть несколько декодеров, работающих в разных потоках. Они декодируют видео с разной частотой кадров и вообще никак друг с другом не синхронизированы. Могут запускаться и останавливаться.

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

Как у меня сделано сейчас. Декодер хранит последний декодированный кадр. По таймеру поток, отвечающий за обновление экрана, собирает последние кадры от всех декодеров, через glTexSubImage2D обновляет OpenGL текстуры и рендерит их на экран. Чтобы потоки не конфликтовали, чтение и запись последнего декодированного кадра прикрыты мьютексом.

Текущая версия работает, но хочу попросить совета. Есть ли какие-нибудь мысли по оптимизации этого дела и вообще как правильно такое делать? Наверное, это похоже на работу композитора. Есть независимые источники, которые предоставляют готовые данные и их нужно свести воедино и отобразить на экране.

У меня здесь получается только один OpenGL контекст. Слышал что-то про многопоточный рендер. Применим ли он здесь?

OpenGL рендерится в окно Qt приложения через QOpenGLWindow. Версия OpenGL строго не старше 3.1. Нужна кроссплатформенность: топик и оффтопик, т.е. без платформозависимых фич типа dma-buf. Видеокарты в основном интел и нвидия.

 , , ,

ox55ff
()

Статья: Устройство подсистемы TTY

Форум — Talks

Опубликовал статью, посвященную устройству подсистемы TTY.

Подсистема TTY — одна из ключевых особенностей Unix и Unix-подобных операционных систем.

В этой статье я постараюсь кратко, но достаточно ёмко и доступно для читателей разного уровня подготовки разобрать устройство подсистемы TTY и её взаимодействие с другими частями программной среды.

Описание архитектуры TTY, изложенное здесь, не является на 100% корректным. Некоторые части были намеренно упрощены или опущены, чтобы итоговая картина получилась более простой и цельной. Эти детали не являются критичными для понимания принципов работы TTY. При необходимости все необходимые детали могут быть восстановлены чтением страниц руководств в составе операционной системы.

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

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

 ,

wandrien
()

Вопрос про mmap() файлов в память.

Форум — Development

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

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

Правильно ли я понимаю, что ОС будет автоматически подгружать в память странички по мере чтения и только те, к которым обратились? И выгружать те странички, которыми давно не пользовались, если физической оперативной памяти на всех не хватает и она нужна другому процессу.

Или я слишком много хочу от ОС?

 

pathfinder
()

Почему InnoDB юзает свой buffer pool, а например LMDB полагается на mmap?

Форум — Development

Предположим, мы не говорим о записи, только о чтении страниц.

В чем причина выбрать решение, при котором ты выделяешь самостоятельно 2G оперативы, поддерживаешь там LRU страниц, что-то ещё и таскаешь туда страницы при необходимости с диска через pread(), копируя данные лишний раз в юзерспейс. А не просто за-mmap-ить весь 100-гиговый файл и ходить туда как в память, а про LRU и всё такое пускай думает ядро?

Автор LMDB гнул пальцы, что его решение изящно из-за выбора второго варианта: типа код движка проще, думать про страницы не надо, меньше копирований и т.п.

Но при этом конечно мы не контролируем что делает ядро. Например, не каждый догадается вызвать madvice(MDV_RANDOM) после mmap, чтобы ядро перестало зря префетчить страницы. Или например с mmap мы начинаем мучать VM-подсистему, оно там что-то активно делает с TLB и никто не уверен что это не вредно.

В общем интересно вот это всё.

За выбором своего buffer pool в InnoDB стояло скорее всего требование уметь менять страницы, при этом не раздражая ядро (не вынуждая его записывать их обратно в файл), причем измененные страницы в innodb сначала должны попасть в double write buffer на диск, а не сразу на своё место. Но казалось бы, пока мы не начали менять страницы, почему не mmap. В общем интересно какие ужасы в этом плане в поведении ядра напугали чуваков в InnoDB, о которых я не знаю.

 

pilobar
()

Это вообще законно? Провал выполнения в нижележащую «мёртвую» функцию

Форум — Development

Случай из реального проекта, код ~10-летней выдержки. Когда-то давно забыл добавить return в функцию, где имеется хитрая условная компиляция. Долгое время всё нормально работало, а сегодня вот пересобрал проект и поимел весёлых проблем. При проигрывании звука сегфолтилось, хотя вроде как в коде всё было нормально. Старые версии (собранные старым GCC) не сегфолтились. При отключенной оптимизации сегфолта тоже не было. Что тут можно ещё сказать? Спасибо Сталлману за gdb, сильно удивился когда увидел вызов якобы вырезанной функции в нём. Ну и главное: читайте и анализируйте Warning’и, господа! Минимальный пример:

$ cat dead_code.cpp 
// dead_code.cpp

#include <cstdio>

int stub_0();
int pxt_PlayWithCallback(int chan, int slot, char loop, void (*FinishedCB)(int, int));

int pxt_Play(int chan, int slot, char loop) {
#ifdef _PLS_NO_DEAD_CODE
	if (stub_0()) {
		fprintf(stderr, "!!!!! GOOD CODE !!!!!\n");
	}
#else
    return pxt_PlayWithCallback(chan, slot, loop, NULL);
#endif
}

int pxt_PlayWithCallback(int chan, int slot, char loop, void (*FinishedCB)(int, int)) {
	fprintf(stderr, "????? DEAD CODE ?????\n");
	return stub_0();
}

int stub_0() { return 42; }

int main(int argc, char *argv[]) {
	return pxt_Play(-1, 20, 0);
}

// OK:
$ g++ dead_code.cpp
$ ./a.out 
????? DEAD CODE ?????

// OK:
$ g++ -D_PLS_NO_DEAD_CODE dead_code.cpp
$ ./a.out 
!!!!! GOOD CODE !!!!!

// WTF?:
$ g++ -O2 -D_PLS_NO_DEAD_CODE dead_code.cpp
$ ./a.out 
!!!!! GOOD CODE !!!!!
????? DEAD CODE ?????
Segmentation fault (core dumped)

// WTF???:
$ g++ -O3 -D_PLS_NO_DEAD_CODE dead_code.cpp
$ ./a.out 
!!!!! GOOD CODE !!!!!
!!!!! GOOD CODE !!!!!
...
!!!!! GOOD CODE !!!!!
!!!!! GOOD CODE !!!!!
Segmentation fault (core dumped)

А ведь довольно интересный простор за этим может скрываться. Ну право ведь, забыли return проставить, компилятор же по-дефолту return 0 впихнёт, верно? А я в этом был уверен.

P.S.

// Имеется предупреждение по-дефолту, отсутствует ret в конце функции, провал и сегфолт.
$ gcc --version
gcc (GCC) 10.2.1 20200723 (Red Hat 10.2.1-1)

// Предупреждение только с -Wall, ret в конце функции имеется, нет провала и сегфолта.
$ gcc --version
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-39)

P.P.S. поиграться с компиляторами:

C++: https://gcc.godbolt.org/z/7ne8PM
C: https://gcc.godbolt.org/z/b6vqbK

Может кто-нибудь из профи подробно объяснить механизм такого поведения? Спасибо.

См. комментарии и ссылки в теме.

 , , , ,

EXL
()

радиолюбитель starter kit

Форум — Talks

Раздел физики «электричество» знаю чуть более, чем никак.

Опыт пайки - оторванные провода в фонариках припаивать.

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

Посоветуйте, пожалуйста, с чего начать, какой литературой и материалами запастись, что надо иметь. Как поле для экспериментов имею C.H.I.P..

 , , ,

Deleted
()

Тут же есть радиолюбители? Правда, что эфир отдан на откуп китайцам?

Форум — Talks

Сабж

В Вене умер один мощный коллекционер старых радио, и его друг распродавал коллекцию. И я себе выбрал австрийский приемник Karat от венского завода Kapsch 1958 года, который с года постройки и не включали ни разу – со всеми документами, с нетронутой катушкой, на которую намотана антенна, и т. д. И, конечно, с «волшебным глазом» и прекрасной светящейся шкалой никакого не FM – только UKW (на шкале – местные города, которые вещали в УКВ: Вена, Зальцбург, Клагенфурт, Линц), KW – короткие волны: Люксембург (знали бы вы, какое значение имело «Радио Люксембург» – предтеча пиратских радиостанций – для рок-революции), Гамбург, Ватикан, Братислава, Брно, Будапешт, Рим, Брюссель, Париж, Белград. Выглядит как влажная мечта невыездного.

У нас до сих пор можно найти приемник «Восток» 1949 года новосибирского завода «Электросигнал», совершенно роскошный «Баку-55» от Бакинского радиозавода, «Минск-55» или, например, «Беларусь-57» – от Минского, где одних KW – коротких волн – было аж три диапазона. И шкала все та же – Вена, София, Будапешт, Ленинград, Лейпциг, Брюссель, Тирана, Хельсинки… СССР был весьма radio-friendly, несмотря на холодную войну и значимость радиовещания в пропагандистской борьбе. А может, и благодаря ей.

Кстати, о пропаганде. Короче, сел я в кресло и решил послушать свой новый-старый приемничек – что там осталось в эфире после того, как нам рассказывают, что теперь все в интернете. Станция, которая вещает на частотах Пражского радио (согласно шкале приемника), такая интересная: много музыки, причем без особых предпочтений – от попсы до старого рока, новости, политические разговоры. А потом как-то плавно и музыка становится китайской, и разговоры про то, какая Китай прекрасная страна – и так по кругу. Потихоньку начинаю понимать, что вообще-то это китайское радио, которое вещает на чешском.

ОК, едем дальше. Будапешт – там две станции, из которых одна – родная венгерская, а вторая – бинго! – китайская на венгерском языке. Пробуем Париж. Та же фигня. У меня уже встают волосы дыбом, потому что все это похоже на инопланетное нашествие – вот эти местные дикторы, которые фигачат на родном языке китайскую пропаганду. Короче, я таких станций по Европе насчитал штук пятнадцать. С тоской пытался найти хоть одну русскоязычную. Нашел. И она тоже оказалась китайской. То есть – буквально весь эфир сдан китайцам. Как интересно…

И чтобы вам совсем стало понятно. Из старых новостей: «Российское радиовещание в AM-диапазонах почти полностью уничтожено. В КВ и ДВ диапазонах не осталось ни одной российской радиостанции. В СВ-диапазоне остались только две московские радиостанции – «Всемирная радиосеть» (738 кГц) и «Радонеж» (612 кГц, с 7 до 11 вечера)».

Все-таки – я ставлю на нашествие инопланетян.

 , ,

tiinn
()