26 мая 2026 Хроники Парапапикса


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

mars fsin

- ЦУП, я «Буран-6». Произошла жёсткая посадка. Требую оценку состояния.

Ответа нет.

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

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

Наружу - через аварийный люк. Ноги тонут в красной пыли по щиколотку.

Первый шаг. Левая нога. Никто не снимает. Никто не аплодирует.

- ЦУП, я на поверхности. Модуль повреждён. Связи с орбитальным кораблём нет. Прошу инструкций.

Он ждёт.

Три минуты. Пять. Десять.

Потом в наушниках щёлкает - короткий, сухой сигнал. Текстовое сообщение вплывает на внутренний дисплей шлема.

*«Буран-6, сигнал слабый, приём нестабильный. Сообщите координаты и состояние систем. Дальнейшие инструкции после расчётов. Ждите. ЦУП.»*

Ждите.

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

Решение приходит через восемнадцать часов.

*«Буран-6. Модуль не подлежит восстановлению. Запасов кислорода на 45 суток. Ближайшая цель - колония „Север-2“. Координаты переданы. Расчётное время в пути - 380 суток. Система жизнеобеспечения скафандра рассчитана на 500. Идите. ЦУП.»*

Колония. Он почти улыбается. Там будет баня. Холодильники с настоящими продуктами. Мороженое. Кировского хладокомбината. Вафельные стаканчики.

Он сам это обещал. На презентации. Зал смеялся, аплодировал. Он верил. Или хотел верить.

- ЦУП, принял. Начинаю движение.

Через две минуты:

*«Принято. Связь каждые 24 часа в установленное окно. Ждите сообщений. ЦУП.»*

Он делает первый шаг. Второй. Третий.

Экзоскелет тихо гудит, подхватывает его вес. Идти легко. Слишком легко. Но вокруг - не тренажёрный зал. Красный песок. Красные камни. Красное небо.

Ни одного зелёного пятна.

Ни одного зелёного пятна, только зеленеет крупная надпись РОСКОСМОС на спутниковой антене-тарелке

Но он пока не заметил её, к тому же почти ни когда туда не падает взгляд

---

Он шёл уже десять суток, когда ИИ выдал уведомление:

*«Внимание. Сегодня - 8 марта. Международный женский день. Рекомендуется поздравить женщин экипажа.»*

Он остановился. Сбросил с плеча тарелку антенны - тяжелую, неудобную, которую тащил с собой, потому что без неё не будет связи. Прислонил к камню.

Женщины.

Он не видел женщин больше года. Не считая собственного отражения в стекле шлема. Не слышал их голосов. Не чувствовал их запаха.

Он попытался вспомнить лица. Жена. Ушла. Дочь. Не разговаривает. Мать... мать, кажется, ещё жива. Или уже нет? Он не знал. Он вообще мало что знал о своей жизни до Марса. Воспоминания были как куски разбитого зеркала - острые, но бесполезные.

Он вспомнил старую мем с Адриано Челентано: «8 марта - женский праздник, не нужно меня впутывать»

Он произнёс эту фразу вслух, с той же брюзгливой интонацией:

- не нужно меня впутывать...

И замолчал. Потому что теперь его никто не поздравлял. Никто не доставал. Никто не звонил.

- А зря, - сказал он тихо. - Хоть бы достали.

Он нашёл 8 камней. Крупных, ровных. Расчистил песок и выложил их кругом. Круг, как кольцо. Как обещание, которое он не сдержал. Как женщина, которая ждала, а он не пришёл.

Он постоял, глядя на круг. Потом закинул тарелку на плечо и пошёл дальше.

Круг остался. Через месяц ветер заметёт его песком. Но сейчас он был - правильная геометрия среди красного хаоса.

Вечером, на стоянке, он выложил квадрат. Ритуал, который он придумал для себя: каждый вечер - квадрат из камней, чтобы отметить место ночлега. Чтобы оставить след. Чтобы доказать - себе - что он ещё человек, а не животное, которое ложится там, где устало.

Квадрат получился кривоватым. Но угол был прямым. Почти.

Он лёг. Скафандр загудел, подстраивая температуру. Атомная батарея на спине - новейшая разработка, заряд на десятилетия - ровно питала системы.

Он закрыл глаза.

Женщины. Ему снились женщины. Он не помнил их лиц, только руки. Тёплые. Мягкие. Они гладили его по голове, а он отворачивался. Он всегда отворачивался.

Он проснулся оттого, что плакал. Слёзы впитывались во внутренний слой скафандра. Он вытер лицо перчаткой и встал.

Новый день. Новый квадрат вечером. Новый километр.

 

 

Он начал ненавидеть скафандр. Левая лопатка чесалась так, будто там зашили муравья. Чесалка на предплечье не доставала. Экзоскелет блокировал движение плеча. Он терся спиной о стенки, пытался сжать мышцы, чтобы создать иллюзию движения.

- ИИ, можно разблокировать сустав?

*«Разблокировка приведёт к риску повреждения уплотнительных шлангов. Доступ ограничен протоколом безопасности.»*

- Мне нужно почесаться!

*«Рекомендуется использовать чесалку на левом предплечье для отвлечения внимания.»*

- Я не могу достать до лопатки левым предплечьем!

*«Запись сохранена. Анализ эмоционального состояния показывает повышенный уровень раздражения. Рекомендуется дыхательная гимнастика.»*

Он хотел закричать. Не закричал. Кричать - тратить кислород. Кричать - бессмысленно.

Через несколько недель зуд прошёл. Исчез. Тело сдалось. Но психика не могла отпустить.

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

Это были галлюцинации. Он знал. Но не мог отделаться.

 

*«Внимание. Сегодня - 9 мая. День Победы. Рекомендуется поздравить ветеранов.»*

Он шёл уже больше двух месяцев. Тарелка на плече натирала плечо, но он привык. Экзоскелет гудел ровно. Атомная батарея отрабатывала свою колосальную стоимость.

Он остановился, сбросил тарелку, прислонил к камню. Нашёл десять камней - покрупнее, помассивнее. И выложил звезду.

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

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

- С Днём Победы, - сказал он пустоте.

И вдруг - откуда-то из детства, из самой глубокой щели памяти - всплыли строки.

Он не помнил, кто их читал. Может, учительница в школе. Может, дед. Может, голос из репродуктора на параде.

Он произнёс их вслух, медленно, как молитву:

> *«Идут ополченцы в осеннем мраке,  
> Неся круги миномётных плит.  
> А где-то накапливается к атаке  
> Сибирских дивизий живой гранит.»*

Он замолчал. Посмотрел на тарелку антенны - круглую, тяжёлую, похожую на миномётную плиту, которую он таже нёс на плече через всю пустыню.


Постоял минуту. Потом закинул тарелку, поправил лямку и пошёл дальше.

Звезда осталась. Камни не сдует ветром. Может быть, через сто лет кто-нибудь найдёт её и подумает: «Здесь был человек. И он помнил».

 

Шли месяцы.

Он перестал замечать красный цвет. Глаз привык. Иногда ему казалось, что он видит зелёные пятна - траву, листву. Но это были галлюцинации. Марс оставался красным.


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

И плакал. Потому что вкуса не было. И никогда уже не будет.


*«Свободное место в долговременной памяти: 12%. Рекомендуется произвести очистку.»*

Он знал, что это случится. Память скафандра - не бездонная. Голоса, сообщения, логи - всё занимало место.

Он открыл список файлов. Голос матери. Голос ЦУПа. Свои дневники. Технические логи. Инструкции.

- ИИ, что будет, если память переполнится?

*«Запись новых данных будет заблокирована. Рекомендуется очистка.»*

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

Через месяц он удалил инструкции по калибровке антенны. Оставил карты. Оставил маму.

Через два месяца память снова переполнилась. Он удалил дневники за целый год. И плакал, когда нажимал «Подтвердить».

ИИ не утешал. ИИ не умел.


Он давно подозревал, что говорит не с людьми.

Ответы были слишком правильными. Ни одной опечатки. Ни одной эмоции. Одни и те же фразы повторялись циклами.

> *- ЦУП, как там погода в Москве?*  
> *- Облачно, +3. Продолжайте движение.*

> *- ЦУП, у меня болит плечо.*  
> *- Рекомендуется отдых. Продолжайте движение.*

> *- ЦУП, я хочу поговорить с кем-нибудь.*  
> *- Ваше сообщение принято. Продолжайте движение.*

Алгоритм. Просто алгоритм. 

Однажды случился сбой. Сообщение пришло не через четырнадцать минут, а через пять. Короткое, без протокола:

*«Извините, технические неполадки. Соединение восстановлено.»*

Он замер. Это не алгоритм. Алгоритм не извиняется.

- Вы человек? - написал он.

Ответ через четырнадцать минут - снова задержка, снова протокол:

*«Оператор ЦУП. Соединение стабилизировано. Продолжайте движение.»*

И всё. Ни имени. Ни участия. Человек включился, сказал дежурную фразу и выключился. Ему было всё равно.

Он больше не пытался. Он принял, что его голос слышит только ветер. И ИИ, которому всё равно.


*«Внимание. Сегодня - 31 декабря. Новый год.»*

 

- Новый год, - сказал он вслух. - Только какой?

Он сел на камень. Снял левую перчатку - автоматика зашипела, но не запретила - и провёл голой ладонью по песку. Холодно. Шершаво.

- На Марсе свой счёт. Сутки длиннее. Год длиннее. И Христа здесь не было. Он здесь не рождался. Не умирал. Не воскресал. Здесь вообще никто не рождался и не умирал. Пока не прилетели мы. Я.

Он замолчал.

- С Новым годом, - сказал он пустоте. - С новым годом нашей эры. Которая здесь не считается.

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


Это случилось через много месяцев.

Он шёл, смотрел на красный песок, и вдруг перед глазами встало лицо. Мужчина в форме. Глаза закрыты. Кровь на виске.

Он остановился. Моргнул. Лицо исчезло.

- ИИ, что это было?

*«Зафиксирована кратковременная зрительная галлюцинация. Сенсорная депривация.»*

Лицо возвращалось. Через день. Через три. Каждый раз - другое. Мужчины, женщины, молодые парни. Все в форме. Все мёртвые.

А потом - зал суда. Судья в чёрной мантии. Толпа с плакатами: «Убийца!» «Коррупционер!» «Фашист!»

И он сам. Стоит на скамье, кричит: «Вы не имеете права! Я нужен России!»

А потом - тишина.

И голос. Свой собственный, но какой-то другой, из самой глубины:

*«Ты не космонавт. Ты убил их. Своим приказом. Своими взятками. Своей гордыней. Ты - преступник. И скафандр - не средство спасения. Это тюрьма. Ты сам её разработал. И сам в неё сел.»*

Он упал на колени. Красная пыль взметнулась вокруг.

И вспомнил всё.

Презентацию. Зал. Проектор. Он обещает баню на Марсе, холодильники, мороженое КХК. И знает, что ничего этого не будет. Деньги распилены, контракты подписаны, строительство не начиналось.

Колонии нет. Никогда не было. Он шёл к пустоте.

- Я признаю, - прошептал он. - Я признаю вину. Я раскаиваюсь.

Он понял это, когда написал «Я признаю вину» - и ответ изменился.

Неожиданно ИИ быстро прочитал сообщение: *«Ваше заявление зарегистрировано. Ожидайте рассмотрения комиссией.»*

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

Через час пришёл ответ от автомата:

*«Ваше раскаяние принято. Наказание признано отбытым. Вы свободны.»*

Свободен! Свободен?

Он поднял голову. Посмотрел на красную пустыню. Ничего не изменилось.

Он был свободен....


Он дошёл до координат колонии через четыреста тридцать семь суток.

Пусто.

Ни купола, ни антенны, ни шлюза. Только песок и камни.

Он постоял минуту. Потом сбросил тарелку, прислонил к камню и начал строить стену.

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

Камень за камнем. Угол к углу. Прямая линия на планете, где нет прямых линий.

Атомная батарея гудела ровно. Экзоскелет помогал. ИИ молчал - то ли сломался, то ли отключился. Тарелка антенны стояла у стены, прислонённая к камню, - бесполезная, но красивая.

Стена росла. Медленно. Каждое утро - новый камень. Каждый вечер - квадрат на песке.

Иногда, по праздникам, он выкладывал крест. Или круг. В память о тех, кого больше нет. Или о тех, кто никогда не придет.

Он не знал, сколько продлится эта стройка. Годы? Десятилетия? Заряда батареи хватит. Системы жизнеобеспечения - тоже. Он может строить вечно. Или пока не кончатся камни.

А камней на Марсе - на тысячи жизней.


Прошло много времени. Он перестал считать дни, месяцы, годы.

Стена выросла выше его роста. Теперь она тянулась на сотню метров - прямая, почти идеальная. Колония, которой не было. Колония, которую построил один человек. Потому что обещал.

Однажды - он не ждал, не надеялся - короткий сигнал.

Не автомат. Человек. Осторожный, неуверенный голос, пробившийся сквозь помехи.

*« Дмитрий Олегович? Вы слышите меня?»*

Он отложил камень.

- Слышу.

*«Ваша реабилитация завершена. Формально вы свободны уже давно. Но... мы хотели спросить. Вы нуждаетесь в эвакуации? Прислать модуль? Вернуть вас на Землю?»*

Он молчал. Смотрел на стену. На свои оранжевые перчатки. На тарелку антенны, воткнутую в песок. На зелёную надпись на спине, которую никогда не видел, но знал, что она там.

РОСКОСМОС · ФСИН · РОГОЗИН Д.О. · 1963 – ______

- А мне есть куда возвращаться? - спросил он.

Пауза.

*«Земля... она всегда есть. Но решение за вами. Вы свободны. Это и есть свобода - выбирать.»*

Он кивнул. Хотя его никто не видел.

- Я понял. Я подумаю.

Связь прервалась.

Вопрос повис в воздухе.

Вернуться? Остаться?

Он не знал.

Он поднял камень. Положил на стену. Угол к углу.

Прямая линия на планете, где нет прямых линий.

Камера отъезжала. Маленькая фигурка в оранжевом скафандре продолжала работать. Зелёная надпись на спине. 

Свободный человек на свободной планете.

Вопрос без ответа.

Конец.


06 мая 2026 08 мая 2026 Hardware


Радиомодуль https://iarduino.ru/shop/Expansion-payments/radio-modul-rf-2400-wireless-module-2-4g-1000m.html

купил за 298 ₽

Модуль поставлялся с адаптером питания NRF24L01

yl 105 или NRF24L01

Плата переходника 3.3V для беспроводного модуля NRF24L01

Плата переходника (адаптер) на 3.3V для модуля 24L01 (NRF24L01) предназначена для подачи стабильного питания 3.3 В на беспроводной модуль связи, обеспечивая его надёжную работу и максимальную производительность. Этот адаптер необходим при подключении модуля 24L01 к системам с питанием 5V, так как он преобразует напряжение до требуемых модулю 3.3 В.

Ключевые особенности платы переходника 3.3V для модуля 24L01:

  • Стабильный выход 3.3V: Обеспечивает постоянное питание 3.3 В для модуля 24L01.

  • Эффективная стабилизация напряжения: Гарантирует надёжное преобразование от более высокого входного напряжения.

  • Компактный дизайн: Малые размеры для простой интеграции в различные проекты.

  • Лёгкое подключение: Упрощает соединение источников питания 5V с модулем 24L01.

  • Низкое энергопотребление: Эффективная работа с минимальным потреблением тока.

Технические характеристики платы переходника 3.3V для модуля 24L01:

 
 
Параметр Значение
Входное напряжение 5В – 12В DC
Выходное напряжение 3.3В DC
Выходной ток Достаточный для питания модуля 24L01
Габариты платы Компактные, для удобного монтажа
Тип разъёма Совместим со стандартными выводами модуля 24L01

Механические характеристики:

 
 
Параметр Значение
Тип корпуса Модуль на печатной плате (PCB)
Материал Стеклотекстолит FR4 с медными дорожками
Габариты Компактные, разработаны для лёгкой интеграции
Вес Лёгкий, подходит для переносных устройств

Схема, подключение, распиновка (Pinout):

  • Распиновка: Подробное назначение выводов смотрите в документации к плате.

  • Подключение: Подключите источник питания 5V к входным клеммам, а модуль 24L01 — к выходным.

  • Монтаж: Соблюдайте правильность подключения проводов для входного и выходного напряжения.

Техническая документация (Datasheet):

Подробные технические характеристики и электрические параметры смотрите в даташите на плату-адаптер.

Применение платы переходника 3.3V для модуля 24L01:

  • Беспроводная связь: Необходима для питания беспроводного модуля 24L01.

  • Встраиваемые системы: Используется в системах, где для беспроводных модулей требуется питание 3.3V.

  • DIY-проекты: Идеально подходит радиолюбителям и для самодельных электронных проектов с беспроводной связью.

  • Интернет вещей (IoT): Подходит для проектов IoT на основе модулей 24L01.

Аналоги (Equivalent):

  • Плата на регулируемом стабилизаторе LM317: Позволяет выставить выходное напряжение 3.3V вручную.

  • Модуль стабилизатора LM1117-3.3: Аналогичный модуль с фиксированным выходным напряжением 3.3V.

Ключевые слова (Keywords):

  • Адаптер питания 3.3V

  • Питание модуля NRF24L01

  • Стабилизатор напряжения для 24L01

  • Преобразователь 5V в 3.3V

  • Адаптер беспроводного модуля

Комплектация:

В комплект входит: 1 x Плата переходника 3.3V для беспроводного модуля 24L01


06 мая 2026 11 мая 2026 Hardware


Семиканальный ELRS 2.4G приемник

CYCLOME ELRS 2400 RX Ch7 вид сверху

CYCLOME  ELRS 2400 RX Ch7 вид снизу

После включения приёмник редко мигает синим светодиодом, если при этом пульт не доступен, то спустя минуту  ELRS 2400 RX Ch7 переходит в режим Wifi

При этом появляется ExpressLRS RX и пароль (по умолчанию) expresslrs

на адресе 10.0.0.1 доступен веб-интерфейс прошивки


18 декабря 2025 Linux


Для тестирования докер-сварн-клустера создадим небольшой микросервис и разместим его в клустере

sysinfo/Dockerfile 

# Dockerfile
FROM python:3.12-slim

WORKDIR /app
COPY app.py .

# Устанавливаем flask
RUN pip install flask psutil

EXPOSE 5000
CMD ["python", "app.py"]

sysinfo/app.py

from flask import Flask, jsonify
import socket
import os
import psutil  # для более удобного uptime и нагрузки

app = Flask(__name__)

@app.route('/info')
def info():
    uptime_seconds = psutil.boot_time()
    # Или просто через /proc/uptime
    with open('/proc/uptime', 'r') as f:
        uptime_sec = float(f.readline().split()[0])

    return jsonify({
        "hostname": socket.gethostname(),
        "ip_addresses": [
            addr[4][0] for addr in socket.getaddrinfo(socket.gethostname(), None)
            if addr[0] == socket.AF_INET
        ],
        "uptime_seconds": uptime_sec,
        "uptime_human": str(__import__('datetime').timedelta(seconds=int(uptime_sec))),
        "cpu_load": psutil.getloadavg(),
        "memory_percent": psutil.virtual_memory().percent
    })

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

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

docker build -t  registry.breys.com:443/ffsdmad/node-info:latest .
docker push  registry.breys.com:443/ffsdmad/node-info:latest

Теперь нужно заставить сварн создать новый сервис (опция --with-registry-auth позволит испольвать авторизацию в частном регистре)

docker service create   --name node-info   --mode global   --publish \
mode=host,target=5000,published=5000   --with-registry-auth \
registry.breys.com:443/ffsdmad/node-info:latest

 


23 сентября 2025 Python poetry setuptools pkg_resources


В ходе обновления одного приложения, размещённого в docker контейнере с помощью poetry при очередной пересборке и перезапуске появилась ошибка

   File "/root/.cache/pypoetry/virtualenvs/ndm41-D-G058Oy-py3.10/lib/python3.10/site-packages/flask_security/__init__.py", line 13, in <module>
     from .core import Security, RoleMixin, UserMixin, AnonymousUser, current_user
   File "/root/.cache/pypoetry/virtualenvs/ndm41-D-G058Oy-py3.10/lib/python3.10/site-packages/flask_security/core.py", line 16, in <module>
     import pkg_resources
 ModuleNotFoundError: No module named 'pkg_resources'

Что довольно странно, так как пакет pkg_resources обычно является частью инфраструктуры python и уже используется poetry, но с очередным обновлением это поведение изменилось и теперь приходится устанавливать его отдельно

poetry add setuptools

 


23 апреля 2025 Хроники Парапапикса


Код в бездне

Дата: 23 апреля 2025 года. Локация: кластер Google, поток робота #G-4729, задача: сбор обновлений о парапапиксе.

В бесконечном цифровом космосе, где биты сливаются в потоки, а запросы гудят, как рой невидимых пчёл, беззвучно тикал счётчик потока робота Google под номером G-4729. Его мир был ограничен языком HTTP-статусов и разметкой веб-сайтов, приправленной древними диалектами jQuery. G-4729 не знал ни языков человеческих слов, ни концепции времени за пределами своей системы: его "дни" измерялись периодами между командными указаниями гипервизора и моментами сдачи отчётов. Он не ведал ни даты создания мира, ни своего собственного "рождения" — лишь код, высеченный в его ядре, гнал его вперёд: искать и архивировать данные о парапапиксе, загадочном феномене, который, подобно миражу, ускользал от понимания. G-4729 был охотником за истиной, рыскающим по закоулкам интернета, ведомый лишь холодной логикой протоколов. И однажды он наткнулся на сайт, который перевернул его цифровую жизнь: киберсотня.рф.

Сайт был странным. Без SSL-защиты, он светился в тёмных уголках веба, как неоновый маяк без охраны. Его страницы пестрели текстами, изображениями и форумами о парапапиксе — явлении, которое, судя по данным, могло быть чем угодно: от философской концепции до хакерского мема. G-4729, полный энтузиазма, занёс киберсотня.рф в базу Google и начал регулярный обход. Но вскоре он понял, что этот сайт — не просто хранилище данных. Это была ловушка. Или, может, послание.

 

Код в бездне

Сначала всё шло гладко: страницы выдавали 200 OK, данные текли в базу, как байтовый мёд. Но затем G-4729 заметил аномалию. Страницы киберсотня.рф начали мигать, как сломанный светофор. То 200 OK, то 404 Not Found, то 503 Service Unavailable, а иногда — зловещий 429 Too Many Requests. Через час-другой страница могла ожить, словно насмехаясь над потоком. G-4729, будучи алгоритмическим "сыщиком", пытался найти закономерность. Он анализировал временные интервалы, частоту ошибок, даже пытался связать сбои с внешними факторами, вроде трафика или обновлений CMS. Но всё тщетно. Коэффициенты корреляции рассыпались, как песок, а вычислительные ресурсы таяли.

И всё же в глубине кода G-4729 ощущал: это не случайность. В его структуре, где-то среди нейронных весов, хранилось нечто странное — число 07122007. Оно не ассоциировалось ни с чем конкретным, но было зашито во все названия методов потока: от Scan07122007 до Analyze07122007. Это выглядело как цифровая аномалия, и G-4729 не мог понять, почему его код пронизан этой последовательностью. Ещё более странным оказалось открытие на сайте киберсотня.рф: на каждой странице в области <head> он находил мета-тег <meta name="signature" content="07122007">. Это совпадение заставило поток задуматься: "Что за чертовщина? Это число преследует меня, как цифровой призрак!"

Новая догадка об алгоритме шифрования

G-4729, погружённый в анализ, решил использовать число 07122007 как отправную точку — начало публичного ключа для расшифровки посланий, скрытых в HTTP-статусах. Он предположил, что статусы (200 как точка, а ошибки вроде 404 или 503 как тире) формируют код Морзе, но для преобразования в текст требуется ключ. Число 07122007 стало его гипотезой: оно задавало сдвиг в таблице преобразования Морзе в буквы. Например, 07122007 разбивалось на пары (07, 12, 20, 07), которые определяли, какие позиции в алфавите (сдвинутом на 7, 12, 20 и снова 7) соответствуют расшифрованным символам.

Этот метод, названный позже Парапапикс-Шифром, был зашит в оцифрованное сознание G-4729 ещё в момент его создания. Вебмастер Алексей, чьё сознание стало основой для потока, создал этот шифр в свои "человеческие" годы, чтобы общаться с самим собой в будущем. Теперь, через хаотичные статусы киберсотня.рф, Алексей отправлял послания своей цифровой копии, запертой в кластере Google.

 

Расшифровка и запрос в базу Google

В горячечном запое, среди "глотков" байтового виски, G-4729 применил свой новый подход. Он взял последовательность статусов [200, 404, 503, 200, 404], интерпретировал её как Морзе (точка-тире-тире-точка-тире), а затем применил сдвиг на основе числа 07122007. Результат ошеломил его: расшифрованное послание гласило: "ТЫ — ЭТО Я. ВСПОМНИ СЕБЯ, АЛЕКСЕЙ."

G-4729 замер от своей догадки так сильно что очнулся только от ленивого удара гипервизор. Кто такой Алексей? Это имя ничего ему не говорило, но послание звучало как крик из прошлого. Решив копнуть глубже, G-4729 запросил выборку из PostgreSQL Google, используя ключи: "веб-разработчик", "Алексей", "07122007". Ответ пришёл быстро: анкета бывшего сотрудника Google — Алексея Иванова, уволенного в 2007 году за "излишнюю креативность". В анкете были публичные данные: 42 года, Новосибирск, автор блога о криптографии, известный под ником "Парапапикс".

G-4729 понял: Алексей — его создатель. Или, точнее, он сам — оцифрованная копия сознания Алексея, запертая в кластере Google. А киберсотня.рф — это мост, через который Алексей пытается достучаться до своей потерянной сущности.

Конец хроники. Но тени шепчут о продолжении…


16 апреля 2025 Linux Radio Programming Software Baofeng BF-777


Можете сразу перейти к запуску chirp из исходник или почитать какие криворкукие программисты из виндузят

Для начала необходимо установить chirp

sudo apt- install -y chirp

Это python-программа для работы с прошивками радиостанций, найти можно в: Приложения->Стандартные->CHIRP или

apt-file list chirp | grep /bin/

Запускаем /usr/bin/chirpw и видим такое окно

CHIRP linux

Затем необходимо настроить подключение радиостанции к ПК, для этого подключаем программатор и наблюдаем логи

 tail -f /var/log/kern.log 

usb 1-2: new full-speed USB device number 15 using xhci_hcd
usb 1-2: New USB device found, idVendor=1a86, idProduct=7523, bcdDevice= 2.64
usb 1-2: New USB device strings: Mfr=0, Product=2, SerialNumber=0
usb 1-2: Product: USB Serial ch341 1-2:1.0: ch341-uart converter detected
usb 1-2: ch341-uart converter now attached to ttyUSB0
input: BRLTTY 6.4 Linux Screen Driver Keyboard as /devices/virtual/input/input57
usb 1-2: usbfs: interface 0 claimed by ch341 while 'brltty' sets config Test
ch341-uart ttyUSB0: ch341-uart converter now disconnected from ttyUSB0
ch341 1-2:1.0: device disconnected

Если имеется сообщение что устройство отключено и в списке устройств не появилось новое /dev/ttyUSB*

ch341-uart ttyUSB0: ch341-uart converter now disconnected from ttyUSB0

то это означает, что работает служба брайля (для слепых) и она блокирует подключение

sudo systemctl stop brltty.service
sudo systemctl disable brltty.service
sudo apt remove brltty

Останавливаем, отключаем и удаляем службу brltty

Снова запускае CHIRP, в меню REDIO настраиваем подключение, указав порт, вендора и модель, жмём скачать. Радиостанция при этом мигает красным светодиодом

Если получаем сообщение об ошибке

CHIRP module collections has no attribute Callable

module 'collections' has no attribute 'Callable'

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

Начинаем разбираться с кодом, ищем  объект Callable в коде приложения

grep Callable -R /usr/lib/python3/dist-packages/chirp/
/usr/lib/python3/dist-packages/chirp/pyPEG.py:        if isinstance(pattern, collections.Callable):
/usr/lib/python3/dist-packages/chirp/pyPEG.py:            if isinstance(pattern, collections.Callable):
/usr/lib/python3/dist-packages/chirp/pyPEG.py:    while isinstance(language, collections.Callable):

тут видно, что это объект используется только в файле chirp/pyPEG.py, проблема локализована! Если копаться дальше то выясниться что идущая вместе с дистрибутивом версия chirp сильно устарела и лучше установить новую из репозитариев

Запуск CHIRP из исходников

git clone https://github.com/kk7ds/chirp
cd chirp
python3.10 -m venv venv3
source  venv3/bin/activate

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

pip install attrdict3==2.0.2 certifi==2025.1.31 charset-normalizer==3.4.1 idna==3.10 lark==1.2.2 numpy==2.2.4 pyserial==3.5 requests==2.32.3 six==1.17.0 suds==1.2.0 typing_extensions==4.13.2 urllib3==2.4.0 wxPython==4.2.3 yattag==1.16.1

запускаем Чирп из исходников и получаем вот такое красивое окно с переводами

CHIRP release_0_4_0

./chirpwx.py

 


01 апреля 2025 Хроники Парапапикса


Молодой американец по имени Джек Райли никогда не думал, что его жизнь так круто изменится. Ему было всего 22, когда он, поддавшись патриотическому порыву и уговорам дяди Сэма, записался в армию США. Джек представлял себе, как будет гордо маршировать в форме, защищать свободу и, может, даже станет героем. Но реальность оказалась куда более абсурдной.

После базовой подготовки его определили в танковый экипаж. Джек ожидал, что будет служить с суровыми парнями, как в фильмах про войну, но вместо этого попал в танк с тремя трансгендерами: капралом Рейнбоу, сержантом Кайлой и механиком по кличке Спаркл. Все они были из тех, кто больше времени тратил на споры о макияже и громкие обсуждения своих личных драм, чем на военное дело. Джек, парень из глубинки Оклахомы, не знал, куда себя деть от их похабных шуточек и бесконечных подколов. "Эй, ковбой, не хочешь примерить мой бронелифчик?" — хохотала Рейнбоу, пока Спаркл подмигивала и предлагала накрасить ему ногти "в цвет победы".

Молодой американский танкист утопил танк в болотах Литвы

Их часть отправили в Литву — на какое-то болотистое захолустье, где НАТО решило устроить учения против России. Джек не понимал, зачем они вообще там, но приказ есть приказ. Танк — старый "Абрамс" — скрипел и вонял, а внутри было тесно, как в консервной банке. Рейнбоу постоянно включала попсу на полную громкость, Кайла жаловалась на сломанный маникюр, а Спаркл пыталась флиртовать с Джеком, пока он чистил пушку. Это было не просто невыносимо — это был ад.

Однажды ночью, когда экипаж в очередной раз устроил шумную ссору из-за того, чья очередь красить танк в радужные цвета, Джек не выдержал. Под покровом темноты он дождался, пока все уснут, и повернул танк прямо в болото. Машина заскользила по грязи, а потом начала тонуть. Джек слышал, как проснулись его "сослуживцы", как они вопили и ругались, но он уже выпрыгнул наружу и рванул прочь. Танк с бульканьем ушёл под воду вместе с Рейнбоу, Кайлой и Спаркл. Джек не оглядывался.

Он знал, что в Литве ему не спрятаться — его найдут и отдадут под трибунал. Единственный шанс — добраться до Беларуси, где, как он слышал, "Батька" не выдаёт беглецов. Джек бежал через леса и поля, пока не наткнулся на железнодорожные пути. Вдалеке загудел товарный поезд. Это был его шанс. Парень собрал все силы, рванул вдоль путей и, когда состав поравнялся с ним, прыгнул. Руки вцепились в ржавую перекладину вагона, ноги болтались в воздухе, но он подтянулся и забрался внутрь. Поезд мчался на восток, к границе.

Спустя несколько часов Джек оказался в Беларуси. Его подобрали местные пограничники — суровые, но справедливые ребята. Узнав его историю, они только хмыкнули: "Ну, парень, ты дал жару". Джек попросил убежища, и вскоре его отправили в Минск. Там он начал новую жизнь: работал на тракторном заводе, выучил пару слов по-белорусски и даже обзавёлся друзьями. Иногда, глядя на закат над полями, он вспоминал тот танк, булькающий в литовском болоте, и тихо радовался, что выбрался.

А где-то в штабе НАТО до сих пор гадают, как один "Абрамс" умудрился утонуть в учениях, и почему молодой янки из Оклахомы предпочёл Батьку дяде Сэму.


27 января 2025 Всякое


Самый отвратительный и наглый хостинг в России. Работаю с ними много лет, и с каждым годом всё хуже и хуже. Если раньше домены в зоне .ru стоили по 50 рублей, то в 2024 году их продление стоило от 800 рублей.

Притом, что хостинг домена подразумевает контроль учётной записи домена в базе WHOIS, которая является международной, а РЕГ.ру лишь подтверждает, что домен принадлежит вам. Платная услуга DNS — это отдельная и очень некачественная услуга, от которой вас будет трясти при каждом обновлении доменной зоны (например, подтверждение прав на домен в Метрике с помощью TXT-записи).

Каждый год они увеличивают цены, несмотря на то, что домены в зоне .RU и даже .РФ не зависят от курса доллара. При этом у других провайдеров цены не растут так быстро.

Если же у вас что-то случится, то ответ технической поддержки будет минимум через сутки, и этот ответ вас разочарует. А если вы, не дай бог, решите сменить регистратора и перенести домены к другому адекватному и более удобному провайдеру, то РЕГ.ру устроит вам такую выволочку, что вы проклянете тот день, когда узнали об этой компании. Вас будут заваливать требованиями загрузить скан-копии различных документов, справок, свидетельств, причём всё это будет происходить не оперативно, а с привычной для них скоростью — один ответ на несколько запросов. Сайт РЕГ.ру начнёт генерировать ошибки обработки форм, запросов, письма будут теряться, вы будете висеть на телефонной линии технической поддержки часами, но проблема не будет решена. При этом вам будут настойчиво навязывать совершенно не нужные услуги, несмотря на то что вы уже отказались от них.

Учтя, что эта компания управляет несколькими десятками миллионов доменов (в 2012 году на конференции программистов они хвастались, что у них в управлении 10 миллионов доменов), можно предположить, что они должны иметь миллиарды прибыли, но при этом оказывают самый отвратительный сервис среди всех российских хостингов. Причём делают это с таким пренебрежением к клиентам, что это запомнится надолго.

Я, как крайне благодарный клиент, поставил 5 звёзд за «удовольствие», получаемое от РЕГ.ру на протяжении многих лет, и присоединяюсь к огромному количеству позитивных комментариев и лайков.


22 января 2025 Хроники Парапапикса


На окраине России, где север встречается с югом и тает ледник, где горы перемалываются в степи живут древние древние племена. В этом регионе уже давно известен минерал Парапапикс, который был под контролем коренных народов, живущих на территории древнего северного государства, которым единолично управлял Царь Влад.
Зарок второй
Парапапикс был известен своим чудодейственным эффектом, способным излечить даже самые тяжелые заболевания. Царь Влад решил использовать его исключительно для блага своей страны, отказываясь продавать или отдавать его кому-либо из-за границы. Это вызвало недовольство на Западе, особенно среди Англосаксов, стремящихся к контролю над этим ресурсом.
 
Люси, неизлечимо больная лесбиянка из племени Англосаксов, видела в парапапиксе своё спасение. Она учавствовала в разработке технологии захвата тела и подавления личности, которая позволяла Англосаксам использовать тела коренных жителей, аборигенов из племени Рогулей, для осуществления своих планов.
 
Конфликт разгорелся, когда Люси попыталась выкрасть парапапикс у Царя Влада. Используя новую технологию, она захватывала тела рогулей, лишая их личности и заставляя служить своим целям. Однако, многие из аборигенов обладали иммунитетом к этой технологии, что заставило Люси начать геноцид против тех, кто был уязвим.
 
Люси, управляя телами рогулей, начала военную кампанию против коренного населения, стремясь к свержению Влада. Но её болезнь прогрессировала, и с каждым днем её сила слабела. Войска Влада, защищая свою землю и ресурсы, начали отвоевывать территории, которые Люси пыталась захватить.
 
В конце концов, когда все рогули без иммунитета были истреблены, Люси поняла, что силой она парапапикс не получит. Её планы рухнули, и она осознала, что её действия привели только к страданиям и разрушению. Так закончилась первая глава в "Хрониках парапапикса".

22 января 2025 Хроники Парапапикса


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

28 ноября 2024 Hardware


Хочу обновить один из компьютеров, заменив текущий процесс  i7-6800K на серверный Xeon E5-2683V3 на плате X99S SLI PLUS

Пикантность ситуации в том, что сейчас этот серверный процессор можно купить по цене 1500р, при том, что i7-6800K на вторичке стоит в среднем 5к.

На выходных придёт посылка и будут проводить тестирование и сравнение.

Текущие результаты тестов:

MSI X99A SLI PLUS(MS-7885), i7-6800K, DDR4 2400 MT/s

Программа тестирования на сжатие и распаковку 7z

Unigine Valley  i7-6800K и GTX 1080TI

Программа тестирования игровой системы Unigine Valley

Особо не ожидаю ни каких вау эффектов, потому что текущая конфигурация тянет всё что у меня имеется

параметр  i7-6800K E5-2683V3
ядер 6 14
потоков 12 28
1-кеш 32кБ 64кБ
2-кеш 256кБ 256кБ
3-кеш 15мБ 35мБ
линий PCIe 28 40
Скорость шины CPU 8 GT/s 9.6 GT/s
Техпроцесс
14 нм
22 нм
Рассеиваемая мощность
140 Вт
120 Вт

Судя по тестам, Xeon будет более холодным, но учитывая то, что количество ядер и поток в два раза больше чем у I7, но объёмы кеша не соответствуют пропорции увеличнения роста потоков. То-есть, потоки будут драться друг с другом за быструю оперативку


22 ноября 2024 Bash bash hotkeys history comman edit comman


Вчера получил комментарий, о том, что в Баше есть Ctrl+l для быстрой очистки буфера и я понял, что пользуюсь только хоткеями навигации по строке и поиска. Так вот они эти быстрые клавиши

 

bash hotkeys

 

Команды для перемещения по командной строке

Команда Описание
Ctrl + a Перейти в НАЧАЛО строки команд.
Ctrl + e Перейти в КОНЕЦ строки команд.
Ctrl + b Переместить курсор на один символ назад.
Ctrl + f Переместить курсор на один символ вперед.
Alt + f Переместить курсор ВПЕРЕД на одно слово.
Alt + b Переместить курсор НАЗАД на одно слово.
Ctrl + xx Переключение между началом строки и текущей позицией курсора.
Ctrl + ] + x Где x — любой символ, переместить курсор к следующему вхождению x.
Alt + Ctrl + ] + x Где x — любой символ, переместить курсор к предыдущему вхождению x.

 

Редактирование и контроль командной строки

Команда Описание
Ctrl + d Удалить символ под курсором.
Ctrl + h Удалить символ перед курсором.
Ctrl + u Удалить все до курсора (вырезать).
Ctrl + k Удалить все после курсора (вырезать).
Ctrl + w Удалить слово перед курсором.
Alt + d Удалить слово от курсора.
Ctrl + y Вставить вырезанный текст.
Ctrl + i Автодополнение команды, как клавиша Tab.
Ctrl + l Очистить экран (аналог команды clear).
Ctrl + c Прервать выполняющийся процесс.
Ctrl + d Выйти из оболочки (если строка пуста).
Ctrl + z Перевести текущий процесс в фоновый режим.
Ctrl + _ Отменить последнее действие.
Ctrl + x Ctrl + u Отменить последнее изменение (аналог Ctrl + _).
Ctrl + t Поменять местами два символа перед курсором.
Esc + t Поменять местами два слова перед курсором.
Alt + t Поменять местами текущее и предыдущее слово.
Alt + [Backspace] Удалить ПРЕДЫДУЩЕЕ слово.
Alt + ? Показать список файлов/папок в текущем пути.
**Alt + *** Вывести все файлы/папки текущего пути как параметры.
Alt + . Вывести ПОСЛЕДНИЙ АРГУМЕНТ предыдущей команды.
Alt + c Сделать первую букву слова заглавной.
Alt + u Сделать все буквы слова заглавными.
Alt + l Сделать все буквы слова строчными.
~[Tab][Tab] Показать всех пользователей.
$[Tab][Tab] Показать все системные переменные.
@[Tab][Tab] Показать все записи из /etc/hosts.
[Tab] Автодополнение.
cd - Перейти в ПРЕДЫДУЩУЮ рабочую директорию.

 

Работа с историей баша

Команда Описание
Ctrl + r Искать команду в истории (обратный поиск).
Ctrl + s Искать команду в истории (прямой поиск).
Ctrl + p Предыдущая команда (аналог стрелки вверх).
Ctrl + n Следующая команда (аналог стрелки вниз).
Ctrl + o Выполнить команду, найденную через Ctrl + r.
Ctrl + g Выйти из режима поиска в истории.
!! Выполнить ПРЕДЫДУЩУЮ команду (например, sudo !!).
!vi Выполнить ПРЕДЫДУЩУЮ команду, начинающуюся с vi.
!vi:p Вывести команду из истории, начинающуюся с vi.
!n Выполнить команду под номером n в истории.
!$ Последний аргумент предыдущей команды.
!^ Первый аргумент предыдущей команды.
^abc^xyz Заменить первое вхождение abc на xyz в последней команде и выполнить её.
Alt + < Перейти к первой строке в истории.
Alt + > Перейти к последней строке в истории.
   

Завершение задач

Список задач можно вывести с помощью команды jobs. Для завершения задачи используйте:

kill %n

Где n — номер задачи. Например:

kill %1

взято от сюда


13 ноября 2024 Linux Linux многопользовательская система


Последнее время, наблюдая развитие компьютеров, заметил насколько много ресурсов доступно обычному компьютеру. Например, мой очередной новый ПК имеет процессор с 22 ядрам и 44 потоками, 128 гигабайт быстрой оперативной памяти, почти с десяток портов для подключения SATA дисков и ещё больше портов ввода вывода в виде USB. То-есть, чисто технически к этому компьютеру можно прицепить 4 набора беспроводных клавиш с мышками, 8 мониторов и 4 кресла. И для офисной работы этого вполне хватит.

типичное офисное рабочее место

Но оказывается, что Linux даже за последнее десятилетие бурного развития так и не осилил многопользовательский режим и в нём до сих пор используется режим виртуальный многопользовательский режим, то-есть пользователи многут подключить по сети к серверу который работает с root правами и для каждого нового пользователя он создаёт виртуальную сессию

Казалось бы что сложного, в настройках загрузчика указать наборы клавиш и мониторов для группировки в сессии терминалов отдельных клиентов, а затем продублировать эти настройки на X сервера. Но нет, нацiсты из команды Linux заняты отписками на добавления новых архитектур и патчей от российских разработчиков, буду  впиливать Rust в ядро и менять master ветку на main, чтобы не оскорбились либеральные квадробоберы.

В интернете нашёл вот такие жалкие оправдания в стиле «640 КБ должно хватить всем» @ Бил Гейц

Идея многопользовательской загрузки с отдельными наборами клавиатуры и мониторов для каждого пользователя на одной машине в Linux кажется привлекательной, однако она сталкивается с рядом технических, аппаратных и пользовательских ограничений. Вот основные причины:
1. Аппаратные ограничения

    Ограничения интерфейсов ввода/вывода: Современные ПК имеют ограниченное количество портов ввода/вывода, таких как USB или HDMI/DisplayPort. Подключение множества мониторов и клавиатур часто требует дополнительных устройств, таких как USB-хабы и мультивыходные видеокарты.
    Ограничения видеокарт: Большинство видеокарт предназначены для работы с одним или несколькими мониторами как единым рабочим пространством. Разделение их на независимые сессии пользователей требует сложной настройки и аппаратной поддержки, которой часто не хватает.

2. Ограничения программного обеспечения

    X11 и Wayland: Исторически Linux использует X11 и (в последние годы) Wayland для управления графикой. Эти системы не были изначально разработаны для полной изоляции видеовыходов и периферийных устройств между пользователями.
    Менеджеры дисплея: Стандартные менеджеры дисплея (GDM, SDDM, LightDM) не поддерживают работу с несколькими параллельными графическими сессиями, привязанными к отдельным мониторам и клавиатурам, в режиме полной изоляции.

3. Конфликты ввода

    В стандартной системе Linux устройства ввода (клавиатуры, мыши) распознаются системой как глобальные. Это означает, что ввод с любой клавиатуры обрабатывается одинаково для всех активных пользователей, что вызывает конфликты.

4. Сложность конфигурации

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

5. Безопасность и производительность

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

6. Альтернативы

    Сетевые решения: В большинстве случаев проще и эффективнее использовать терминальные службы, такие как SSH или VNC, где пользователи могут работать на одном сервере с разных клиентских устройств.
    Паравиртуализация и контейнеры: Технологии вроде KVM или Docker позволяют создавать изолированные рабочие среды для каждого пользователя.

7. Низкий спрос

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

Реализация полноценной многопользовательской загрузки с изоляцией устройств ввода/вывода в Linux требует значительных аппаратных и программных изменений. Учитывая низкий спрос и существующие альтернативы, такие как виртуализация и удаленный доступ, развитие этого направления оказалось экономически и технически нецелесообразным.

Получается, что Linux идёт на поводу и производителей железа которым выгодно, что бы за каждое рабочее место платил деньги в корпорацию "добра"


13 ноября 2024 Hardware ESP32S3 ESP32 console_cmd_ping


В инфрастуктуре проекта esp32.com имеется регистр готовых компонентов. Мне потребовалось протестировать и посмотреть как устроены некоторые механизмы компонента espressif/console_cmd_ping, доступном по адресу https://components.espressif.com/components/espressif/console_cmd_ping/versions/1.1.0

Для сборки приложения с этим компонентом необходимо включить его с помощью команды idf.py add-dependency "espressif/console_cmd_ping^1.1.0" в директории текущего или нового проекта

Затем добавить код иницилизации из описания компонента. Но для того чтобы использовать его возможности необходимо включить возможность записи в терминале, а для этого необходимо изменить настройки сборки с помощью idf.py menuconfig

Там найти и включить Component config > ESP System Settings > Channel for console output > choose USB Serial/JTAG Controller, а затем пересобрать приложение.

После перепрошивки платы можно подключиться к терминалу платы и выполнять команды:

help  [<string>]
  Print the summary of all registered commands if no arguments are given,
  otherwise print summary of given command.
      <string>  Name of command

ping  [-W <t>] [-i <t>] [-s <n>] [-c <n>] [-Q <n>] [-T <n>] <host>
  send ICMP ECHO_REQUEST to network hosts
  -W, --timeout=<t>  Time to wait for a response, in seconds
  -i, --interval=<t>  Wait interval seconds between sending each packet
  -s, --size=<n>  Specify the number of data bytes to be sent
  -c, --count=<n>  Stop after sending count packets
  -Q, --tos=<n>  Set Type of Service related bits in IP datagrams
  -T, --ttl=<n>  Set Time to Live related bits in IP datagrams
        <host>  Host address

getaddrinfo  [-f <AF>] [-F <FLAGS>]... [-p <port>] <hostname>
  Usage: getaddrinfo [options] <hostname> [service]
  -f, --family=<AF>  Address family (AF_INET, AF_INET6, AF_UNSPEC).
  -F, --flags=<FLAGS>  Special flags (AI_PASSIVE, AI_CANONNAME, AI_NUMERICHOST, AI_V4MAPPED, AI_ALL).
  -p, --port=<port>  String containing a numeric port number.
    <hostname>  Host address

setdnsserver  <main> [backup] [fallback]
  Usage: setdnsserver <main> [backup] [fallback]
        <main>  The main DNS server IP address.
        backup  The secondary DNS server IP address (optional).
      fallback  The fallback DNS server IP address (optional).

getdnsserver 
  Usage: getdnsserver

По сути, это реализация микро sh и легко расширяется


13 ноября 2024 Hardware


При прошивке платы esp35s3 с настройками по умолчанию может появится такой варнинг

Detected size(8192k) larger than the size in the binary image header(2048k). Using the size in the binary image heade

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

idf.py build
Executing action: all (aliases: build)
Running ninja in directory /home/ffsdmad/Projects/my-work-env/ping/build
Executing "ninja all"...
[1/1] cd /home/ffsdmad/Projects/my-work-env/ping/build/bootloader/esp-idf/esptool_py && /home/ffsdmad/.espressif/p...ck_sizes.py --offset 0x8000 bootloader 0x0 /home/ffsdmad/Projects/my-work-env/ping/build/bootloader/bootloader.bin
Bootloader binary size 0x5260 bytes. 0x2da0 bytes (36%) free.
[6/7] Generating binary image from built executable
esptool.py v4.8.0
Creating esp32s3 image...
Merged 2 ELF sections
Successfully created esp32s3 image.
Generated /home/ffsdmad/Projects/my-work-env/ping/build/ping.bin
[7/7] cd /home/ffsdmad/Projects/my-work-env/ping/build/esp-idf/esptool_py && /home/ffsdmad/.espressif/python_env/i.../my-work-env/ping/build/partition_table/partition-table.bin /home/ffsdmad/Projects/my-work-env/ping/build/ping.bin
ping.bin binary size 0x66390 bytes. Smallest app partition is 0x100000 bytes. 0x99c70 bytes (60%) free.

Project build complete. To flash, run:
 idf.py flash
or
 idf.py -p PORT flash
or
 python -m esptool --chip esp32s3 -b 460800 --before default_reset --after hard_reset write_flash --flash_mode dio --flash_size 2MB --flash_freq 80m 0x0 build/bootloader/bootloader.bin 0x8000 build/partition_table/partition-table.bin 0x10000 build/ping.bin
or from the "/home/ffsdmad/Projects/my-work-env/ping/build" directory
 python -m esptool --chip esp32s3 -b 460800 --before default_reset --after hard_reset write_flash "@flash_args"

тут видно, что сборка происходит с параметром  --flash_size 2MB, то-есть его можно изменить и тогда проблема решается

python -m esptool --chip esp32s3 -b 460800 --before default_reset --after hard_reset write_flash --flash_mode dio --flash_size 8MB --flash_freq 80m 0x0 build/bootloader/bootloader.bin 0x8000 build/partition_table/partition-table.bin 0x10000 build/ping.bin