LINUX.ORG.RU

Сообщения Xintrea

 

Что такое PulseAudio? Как оно работает?

Форум — General

Имеется следующая цитата:

PulseAudio - звуковой сервер в виде демона, запускаемый, что интересно, от имени обычного пользователя. Создает слой абстракции звуковых потоков для возможности различной коммутации, принимает по собственному API звуковой поток от приложений и воспроизводит его через ALSA. Так же PulseAudio создает для ALSA специальный порт, через которые может получать данные, отправляемые приложениями в сам ALSA, и такое поведение настраивается по-дефолту при установке PulseAudio. Считается надстройкой над ALSA, так как без ALSA его использование бессмысленно (будет работать только комутация, а звука не будет).


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

 , , , ,

Xintrea
()

Все уже посмотрели новость как НИИЭТ перемаркировывает китайские MOSFET на российские GaN?

Форум — Talks

Максим Горшенин снова бомбанул. После разборок с чипом Миландра, который заменяет три кусочка проволоки в мониторах LightCom, ему подсказали подумать вот о чем... Как так получается, что российская автомобильная зарядка с разработанными в России GaN-транзисторами от Воронежского института электронной техники имеет абсолютно ту же плату, что и некоторые китайские зарядки с классическими MOSFET-тами? Почему совершенно не меняется схемотехника? Не кажется ли это странным?

По счастливой случайности у Горшенина на руках оказалось две зарядки, которые ему лично передали представители НИИЭТ, на которых имеются транзисторы с логотипом НИИЭТ. Об этих зарядках Горшенин даже снимал ролик. Каково же было его удивление, когда внимательнее посмотрев под лупой на эти транзисторы он обнаружил, что, верхняя поверхность корпуса транзистора полностью снята лазером, и поверх, этим же лазером, сделана маркировка НИИЭТ!

Не поверив собственным глазам, Горшенин позвонил в НИИЭТ и поинтересовался, а как так получилось, что на упаковке написано что это зарядка с GaN-транзисторами, а оказалось, что это простая зарядка с китайскими MOSFET-транзисторами? Представители НИИЭТ в телефонном разговоре сообщили, что это все китайцы виноваты, и вложили в коробочки не те зарядные устройства. На вопрос почему транзисторы пиленные, в НИИЭТ ответить не смогли. Но очень хотели, чтобы Максим не публиковал эту информацию, подумал, поговорил с гендиректором института и не делал поспешных выводов.


Веселая новость с фотографиями:
https://webhamster.ru/site/page/index/main/news/720

Видео 1 - Прекрасные зарядки с GaN транзисторами:
https://www.youtube.com/watch?v=ilNeKlgBpwU

Видео 2 - Походу, это развод покупателей:
https://www.youtube.com/watch?v=E53Mo_rHDqs

 , , перелицовка, ,

Xintrea
()

Как закрыть тред при выходе из Tkinter-приложения?

Форум — Development

Имеется Tkinter-приложение, в котором есть:

  • Основное окно
  • Дополнительное окно, которое запускается в отдельном треде. Оно содержит кнопку Panic.

Задача проста: при завершении работы программы любым способом (например, по сочетанию Alt+F4), нужно корректно завершить программу.

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

Запускается тред для окна с кнопкой остановки
Внутри треда с окном-кнопкой Panic
Устанавливается флаг на остановку треда с кнопкой Panic
Завершен тред _threadCodeSmallWindow
Тред с кнопкой Panic полностью завершен

Tcl_AsyncDelete: async handler deleted by the wrong thread
Аварийный останов

То есть, нужно, чтобы этой ошибки не возникало.

Если в примере закомментировать последнюю команду main.destroySmallWindow(), то ошибки не будет. Но и программа не будет завершаться по Alt+F4, потому что не завершен тред с дополнительным окном.

Я пробовал перед вызовом rootWindow.mainloop() добавить команду:
rootWindow.protocol("WM_DELETE_WINDOW", onDeleteWindow)

И функцию при закрытии писал такую:
def onDeleteWindow():
    main.destroySmallWindow() # Завершение треда
    rootWindow.destroy() # Закрытие основного окна

Но и тогда все равно ошибка сохраняется.

Вопрос: как корректно завершить программу?

Код примера:
#!/usr/bin/python3

import tkinter as tk
import time
from threading import Thread, Event

class MainFrame(tk.Frame):

    def __init__(self, parent):

        self.stopThreadFlag = Event()
        self.smallWindow = None
        self.threadSmallWindow = None

        # Инициализация базового класса рамки
        super(MainFrame, self).__init__(parent)

        # Основная рамка
        frame = tk.Frame(self, relief=tk.RAISED, borderwidth=1)
        frame.pack(fill=tk.BOTH, expand=True)

        # Надпись
        label = tk.Label(frame, text="Содержимое окна")
        label.pack(anchor=tk.W)

        # Создается окошко-кнопка с кнопкой Panic в отдельном потоке
        self._createSmallWindow()


    # Создание окошка с кнопкой Panic в отдельном потоке
    def _createSmallWindow(self):
        print("Запускается тред для окна с кнопкой остановки")
        self.stopThreadFlag.clear() # Очищается флаг прекращения работы потока
        self.threadSmallWindow = Thread(target = self._threadCodeSmallWindow)
        self.threadSmallWindow.start()


    # Код, выполняемый внутри треда
    def _threadCodeSmallWindow(self):
        print("Внутри треда с окном-кнопкой Panic")

        # Создается окошко с кнопкой Panic
        self.smallWindow= tk.Tk() # = tk.Toplevel(Parameter().rootWindow)
        self.smallWindow.resizable(0, 0) # Запрещает изменение размера
        self.smallWindow.overrideredirect(1) # Отключается все оформление окона

        smallWindowFrame = tk.Frame( self.smallWindow )
        smallWindowFrame.pack(fill="both", expand=True)

        button=tk.Button(smallWindowFrame, text="Panic", borderwidth=0, relief=tk.FLAT)
        button.pack(fill=tk.BOTH, anchor="center", expand=True)

        self.smallWindow.update() # Прорисовка окна с кнопкой Panic

        # Вместо mainloop() используется цикл, который завершается при установке флага
        while not self.stopThreadFlag.is_set():
            if self.smallWindow != None:

                # ... Всякие действия ...

                time.sleep(0.5) # Разгрузка работы, чтобы не выжирался весь процессор

        if self.smallWindow != None:
            self.smallWindow.destroy()

        print("Завершен тред _threadCodeSmallWindow")


    # Уничтожение окна и треда с кнопкой Panic
    def destroySmallWindow(self):
        if self.smallWindow != None:
            print("Устанавливается флаг на остановку треда с кнопкой Panic")
            self.stopThreadFlag.set()

            self.threadSmallWindow.join() # Ожидание завершения треда с кнопкой Panic
            print("Тред с кнопкой Panic полностью завершен")


if __name__ == "__main__":

    # Запуск Tk-подсистемы графических виджетов и создание основного окна
    rootWindow = tk.Tk()
    rootWindow.geometry("320x200+0+0")

    # Создание основной рамки с интерфейсом приложения
    main = MainFrame( rootWindow )
    main.pack(fill="both", expand=True)

    # Основной цикл GUI-интерфейса
    rootWindow.mainloop()

    # Вызов завершения треда с окошком Panic
    # Без этого вызова программа не завершится
    main.destroySmallWindow()

 , , ,

Xintrea
()

У кого-нибудь открывается в LibreOffice CSV файл ОКАТО Росстата?

Форум — Desktop

Файл с классификтором ОКАТО:

https://rosstat.gov.ru/opendata/7708234640-7708234640-okato/data-20230803-str...

Не открывается в LibreOffice 7.0.4.2 - программа зависает.

В MS Office все в порядке.

У кого-то LO открывает этот файл?


Перемещено hobbit из general

 

Xintrea
()

Тормозит открытие окна файлового диалога в KDE/LXDE? Я знаю решение.

Форум — General

Всего год мучений, и я разобраться как побороть застаревший баг Qt-шного окна открытия файла.

Баг и решение написаны здесь: Исправление ошибки в KDE/LXDE если долго открывается файловый диалог

Пользуйтесь, если у кого похожая проблема.

 , , диалог,

Xintrea
()

Эксперимент со звуком в Audacity: синус плюс синус = пшпшпш

Форум — Talks

Открываю Audacity, создаю две моно-дорожки с синусоидальным сигналом на частотах 261 Гц (До) и 440 Гц (Ля).

Создать - Тон
Волноформа: Синусоидальная
Частота: 261 (или 440)
Амплитуда: 0,5
Длительность: 1 сек
По отдельности дорожки звучат красивым мягким синусом.

Но вместе получается жуткий пердеж. Ну не должно такого быть. Ну как так то? Что мешает двум синусам звучать вместе красиво? Вроде как это большая септима, и по классификации должна быть несовершенным, но все-таки консонансом. А тут даже не консонанс и не диссонанс, а тупо пердеж.

На ЦАП звуковой карточки и частоту дискретизации тоже вроде не погрешишь, она в 100 раз выше, а по теореме Котельникова нам достаточно было бы меньше 1000 Гц чтоб услышать все что нам нужно.

Почему такой эффект?

 волна, , ,

Xintrea
()

Как после chroot вызвать бинарники, находящиеся в основной системе?

Форум — General

Привет, народ.

Загрузился с System Rescue Cd. И нужно мне выполнить команду efibootmgr, и она есть на загруженном CD-Rom диске. Но чтобы она выполнилась, надо через chroot переключиться на каталог /mnt/sda3, куда смонтирована система, установленная на жестком диске.

Проблема в том, что в этой операционке нет efibootmgr. И после переключения через chroot, утилита efibootmgr становится недоступной.

Вопрос: есть ли возможность после chroot вызывать утилиты, находящиеся в основной загруженной системе?

 ,

Xintrea
()

Пятница. Давайте заставим работать osci-render и james.ball.sh/oscilloscope в Linux

Форум — General

Есть такой проект:

https://github.com/jameshball/osci-render

Это генератор звуковых стерео-сигналов, которые будучи поданные на осциллограф, рисуют разные картинки. В проект входят, как минимум, две программы:

1. osci-render - программа на Java, имеющая крутилки-вертелки и подгрузку векторных картинок. В реальном времени должна гудеть в динамик в зависимости от картинки для осцилографа, которую она расчитывает. При старте поднимает локальный порт 42988. Предполагается, что к нему может подключиться программный осциллограф чтобы визуализировать картинку.

2. https://james.ball.sh/oscilloscope - программный осциллограф, работающий в браузере. Для отображания картинки использует Canvas. При старте подключается к веб-сокету ws://127.0.0.1:42988, созданному osci-render. Должен показывать картинку, генерирующуюся osci-render-ом.

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

Во-первых, криво стартует сама программа osci-render. Чтобы увидеть рабочий интерфейс osci-render, надо поизвращаться с jackd, иначе интерфейс зависает. Но это кое-как решаемая проблема.

Проблема номер два: сама связка osci-render и james.ball.sh/oscilloscope не работает. И вот это уже проблема, которую я не могу решить. Я посмотрел netstat - порт 42988 создается. Я посмотрел wireshark - обмен между программным осциллографом и osci-render идет. Но этот осциллограф ничего не показывает, только точку в центре экрана.

Вот эту проблему и надо решить.

Подробности настройки здесь: https://webhamster.ru/mytetrashare/index/mtb0/16907522569aygrnabey

 , , , ,

Xintrea
()

Летний фестиваль Undefined 2023

Новости — Конференции и встречи
Летний фестиваль Undefined 2023
Группа Конференции и встречи

Undefined 2023 - это теплый, ламповый фестиваль DIY-электроники, демосцены, ретро-компьютеров и всего остального. Летняя сессия, традиционно, проходит в пригороде Санкт-Петербурга в поселке Рощино. Фестиваль проводится 26-27 августа 2023 г., а это значит, что остался ровно месяц до старта мероприятия.

( читать дальше... )

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

 , , ,

Xintrea
()

А ну-кось, лорчане, соколики мои! Навалитесь же ЛОР-эффектом на мой сайт чтоб проверить его устойчивость!

Форум — Talks

Привет, народ

Восстановил наконец я работу своего супер-сайта webhamster.ru, каковой существует ужо без малого 16 лет.

Полтора месяца назад сайт был удален на хостинге без возможности восстановления виртуалки. После этого факапа у меня все небыло времени восстановиться, ну и вот наконец добрался я до консоли и раскатал сайт заново. Для такого дела я даже написал Ansible-плейбуки, на всякий случай. Теперь если придется заново разворачивать из бекапа, все действия будут происходить автоматически, и не нужно будет вспоминать что где надо докрутить чтобы нормально настроить (всего, кстати, чтобы раскатать сайт, нужно выполнить около ~150 действий, и ничего не забыть).

В общем, у меня просьба: перейти на сайт https://webhamster.ru и прощелкать пару-тройку страниц. Нет, скрипты писать не надо (да кто ж вас остановит), пусть нагрузка будет естественная.

Посмотрим, выдержит ли этот инстанс поток пользователей с ЛОР-а.

 , лор-эффект, ,

Xintrea
()

Где прописать остановку сервиса snapd при старте системы?

Форум — Admin

Имеется сервер Debian Linux 11.

Для работы certbot от Letsencrypt на сервере установлен snapd, так как это единственный официальный способ установки бота сертификатов. Но этот snapd нужен только раз в месяц, когда срабатывает скрипт проверки и обновления SSL сертификатов. В остальное время snapd только жрет память и ресурсы процессора.

В скрипте запуска certbot прописаны команды включения сервисов snapd и snapd.socket перед запуском утилиты, и команды выключения этих сервисов после того как утилита certbot закончит работать.

То есть, snapd в обычном состоянии всегда должен быть потушен.

Чтобы snapd не стартовал при запуске, я дал команды:

systemctl disable snapd
systemctl disable snapd.socket
И перегрузился.

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

Я не понимаю, зачем тогда нужен systemctl, если он все равно ничем не управляет? Как оставить snapd в системе, но не давать ему включаться при старте? Что где еще надо докручивать?



Перемещено hobbit из general

 , , , ,

Xintrea
()

Как настроить отправку писем по SMTP через mail.google.com в 2023 году?

Форум — General

Сейчас восстанавливаю работу своего сайта, и занялся вопросом отправки писем.

Год назад все работало согласно данной инструкции:
https://webhamster.ru/site/page/index/articles/comp/149

Но теперь ssmtp показывает ошибку:

sendmail: Authorization failed (535 5.7.8  https://support.google.com/mail/?p=BadCredentials v6-20020a2e9246000000b001b6e... - gsmtp)

Я начал разбираться, и узнаю, что:

Чтобы защитить ваш аккаунт, начиная с 30 мая 2022 года Google больше не поддерживает сторонние приложения и устройства, которые предлагают войти в аккаунт Google только с помощью имени пользователя и пароля.

https://support.google.com/accounts/answer/6010255?hl=ru


В то же время, официальная документация Google говорит, что можно включить работу с «ненадежными приложениями». И я даже нашел прямой линк на эту настройку: https://myaccount.google.com/lesssecureapps

Однако на этой странице написано следующее:

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


Я читаю почему это мне настройка недоступна, и написано, что эта настройка доступна только для тех аккаунтов, на которых не включена двухфакторная аутентификация. Но дело в том, что она у меня и не включена:

Google аккаунт - Безопасность - Вход в Google - Двухэтапная аутентификация - Двухэтапная аутентификация отключена.


Все, на этих взаимоисключающих параграфах я запутался окончательно. Что еще нужно Гуглу? В каких местах что еще надо крутить чтобы отправка почты по SMTP заработала?

 , , ,

Xintrea
()

Добавление секции non-free в APT через Ansible - почему удаляются строки?

Форум — Development

Имеется исходный файл /etc/apt/sources.list :

deb http://ftp.ru.debian.org/debian bullseye main contrib
deb-src http://ftp.ru.debian.org/debian bullseye main contrib

deb http://security.debian.org/debian-security bullseye-security main contrib
deb-src http://security.debian.org/debian-security bullseye-security main contrib
И надо в него добавить секцию non-free.

Придумал такой код:
   - name: "Добавление секции non-free в APT"                                                                              
     replace:                                                                                                              
       dest: /etc/apt/sources.list                                                                                         
       regexp: '(deb|deb-src)\s*(http://.*debian.*)\s*(.?)\s*main contrib\s.*(?!non-free)'                                 
       replace: '\1 \2 \3 main contrib non-free'
В результате в файле, за каким-то хреном, исчезают строки deb-src:
deb http://ftp.ru.debian.org/debian bullseye   main contrib non-free

deb http://security.debian.org/debian-security bullseye-security   main contrib non-free

Почему так то? Какое правильное регулярное выражение должно быть?

 , , ,

Xintrea
()

Почему в Ansible команда «pkill -f nginx || true» возвращает ненуливой код ошибки?

Форум — Development

Столкнулся с очередной загадкой.

Если на целевом хосте в SSH-консоли выполнить команду:

pkill -f nginx || true

То она успешно выполняется, код ошибки, видимый через команду echo $?, всегда нуливой.

Если ту же команду сделать через Ansible:
   - name: "Остановка сервиса Nginx - дополнительный метод"                                                                
     shell: "pkill -f nginx || true"

Тогда эта команда всегда заканчивается ненулевым кодом возврата:
fatal: [siteHost]: FAILED! => {
"changed": true, 
"cmd": "pkill -f nginx || true", 
"delta": "0:00:00.009630", 
"end": "2023-07-01 15:35:48.555054", 
"msg": "non-zero return code", 
"rc": -15, 
"start": "2023-07-01 15:35:48.545424", 
"stderr": "", 
"stderr_lines": [], 
"stdout": "", 
"stdout_lines": []}


Чтобы «съэмулировать» поведение Ansible, я в SSH-консоли удаленного хоста стал выполнять команды:
# bash -c "pkill -f nginx" 
# echo $?
1

# bash -c "exec pkill -f nginx" 
# echo $?
1

# bash -c "pkill -f nginx ; true" 
Terminated
# echo $?
143

# bash -c "pkill -f nginx || true" 
Terminated
# echo $?
143

Похоже, действительно у pkill есть какие-то особенности, которые влияют на код возврата. Но непонятно почему вызов true этот код не подавляет.

В общем, я не пойму как составить команду, которая будет завершаться нуливым кодом возврата в комбинации с pkill.

 , , error code, pkill, код возврата

Xintrea
()

А кто-нибудь замечал, что ChatGPT ест процессор в Chromium?

Форум — Talks

Постоянно наблюдаю одно и тоже.

Открываю chat.openai.com в браузере Chromium. Примерно 20 минут работа идет нормально. Ну бывает, не генерируются ответы, но нажмешь регенерейт, и ответ будет. Работа неспешная, задаю 5-10 вопросов за 20 минут.

Но спустя ~20 минут все внешне продолжает работать нормально. За исключением того, что вкладка браузера с ChatGPT начинает отжирать процессорное время. Около 20% на Intel Core i3-10100 CPU 3.60GHz. Если закрыть вкладку (даже не браузер), выжирание останавливается.

Такое впечатление, что ChatGPT настолько умна, что в тихую майнит крипту в браузерах пользователей.

Что с этим вашим ChatGPT происходит?

 , ,

Xintrea
()

Как найти DOS-овый файл kpss.com в этих ваших интернетах?

Форум — Talks

В 90-х годах по дискетам блуждал файл, который назывался kpss.com.

Это была программа, которая хорошо поставленным голосом с помощью частотной модуляции говорила в PC-спикер фразу: «К борьбе за дело коммунистической партии Советского Союза будьте готовы!».

Сейчас безуспешно путался ее найти, и не смог. Поиск в яндексе-гугле-утке ничего не находит. На OldGames и DosGames тоже ничего нет.

https://www.old-games.ru/catalog/?gamename=kpss
https://dosgames.ru/search/simplesearch/?input=kpss

Объявляется интернет-розык данного файла.

 , , , , чм

Xintrea
()

Поместил go.sh в /etc/profile.d, а он срабатывает только для root, а не для пользователей. Почему?

Форум — General

Очередные загадки линукса.

Имеется Debian 11 Stable. В каталог /etc/profile.d добавлен файл go.sh, следующего содержания:

export PATH=/usr/local/go/bin:${PATH}

Права у него такие же как и у других файлов:
# ls -la
итого 44
drwxr-xr-x   2 root root  4096 июн  5 09:33 .
drwxr-xr-x 144 root root 12288 июн  6 08:31 ..
-rw-r--r--   1 root root   726 авг 12  2020 bash_completion.sh
-rw-r--r--   1 root root   831 янв 18  2022 flatpak.sh
-rw-r--r--   1 root root  1107 фев 10  2021 gawk.csh
-rw-r--r--   1 root root   757 фев 10  2021 gawk.sh
-rw-r--r--   1 root root    38 июн  5 09:35 go.sh
-rw-r--r--   1 root root  1384 фев 18  2021 vte-2.91.sh
-rw-r--r--   1 root root   966 фев 18  2021 vte.csh

По идее, это глобальный профиль, и команды во всех этих файлах должны выполняться для всех пользователей. Тем более что в файле /etc/profile я вижу:
if [ -d /etc/profile.d ]; then
  for i in /etc/profile.d/*.sh; do
    if [ -r $i ]; then
      . $i
    fi
  done
  unset i
fi

Однако по-факту оказывается, что путь к Go устанавливается только для пользователя root. А у простых пользователей скрипт go.sh почему-то не срабатывает, и в PATH нет пути до директории Go.

Почему так? Как заставить работать скрипт в каталоге /etc/profile.d для каждого пользователя а не только для суперпользователя?

 , , ,

Xintrea
()

С обеда отрубился play.google.com - Приложение Сервисы Google Play остановлено

Форум — Mobile

Привет, народ.

Уже второй час старенький планшет Samsung Galaxy 4 начал чудить. Смотрел ютубчик (другого на планшете в общем то и не делаю, ничего не настраивал), и вдруг: постоянно, каждые несколько секунд показывается окно с сообщением: «Приложение Сервисы Google Play остановлено». Раз десять перегрузился, толку никакого - долбанное nag-окно постоянно появляется.

Стал разбираться, и обнаружил, что из моей домашней сетки недоступен play.google.com. Даже с браузера компьютера сайт play.google.com не открывается: «Время ожидания ответа от сервера play.google.com истекло».

А через VPN в компьютерном браузере play.google.com открывается.

Патыюсь пингануть с компьютера напрямую:

>ping play.google.com
PING play.google.com (142.251.1.113) 56(84) bytes of data.
64 bytes from lb-in-f113.1e100.net (142.251.1.113): icmp_seq=1 ttl=108 time=18.9 ms
64 bytes from lb-in-f113.1e100.net (142.251.1.113): icmp_seq=2 ttl=108 time=18.9 ms
64 bytes from lb-in-f113.1e100.net (142.251.1.113): icmp_seq=3 ttl=108 time=18.6 ms

Про этот странный хост написано следующее:

1e100.net is a Google-owned domain name used to identify the servers in our network.

Following standard industry practice, we make sure each IP address has a corresponding hostname. In October 2009, we started using a single domain name to identify our servers across all Google products, rather than use different product domains such as youtube.com, blogger.com, and google.com. We did this for two reasons: first, to keep things simpler, and second, to proactively improve security by protecting against potential threats such as cross-site scripting attacks.

Most typical Internet users will never see 1e100.net, but we picked a Googley name for it just in case (1e100 is scientific notation for 1 googol).


То есть, это официальный хост Гугла, он должен куда-то перенаправлять. И перенаправляет, если заходить с VPN. Так что я не пойму, должен ли быть доступен play.google.com для работы Android или нет. У жены через домашнюю сетку тоже браузеры зайти не могут, но само приложение Google Play работает и ставит программы.

В общем, из-за этого nag-окна планшетом пользоваться невозможно. Прочитал, что надо сбросить настройки или обновления «Сервис Google Play» и «Google Play». Сбрасывал, отменял обновления, толку никакого, даже удалил «Google Play», тоже толку никакого, nag-окно каждые три секунды появляется. Браузер Chrome тупит и вылетает, не открыв ни одной страницы. Поэтому не могу зайти на play.google.com чтобы установить «Google Play».

Кстати, планшет не рутован, я вообще не понимаю как так «Google Play» удалилось, вроде оно относится к системным, и Android не должен был позволить его удалять.

Что это за хрень такая, как восстановить работу системы?



Перемещено leave из general

 , , ,

Xintrea
()

Как собрать нестандартные факты со всех хостов в одну переменную?

Форум — Admin

Мне нужно сделать очень необычную вещь.

Необходимо сделать такой плейбук, который получит версию нестандартного Linux-дистрибутива из специализированного файла на каждом хосте. Чтобы узнать версию дистрибутива, в bash можно давать команду cat /etc/dist_version.

Плейбук должен проверить, совпадают ли версии на всех хостах. Если на всех хостах версии одинаковые, плейбук должен успешно завершиться. Если хоть одна версия не совпадает, плейбук должен завершиться ошибкой (через модуль fail).

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

Результат высчитывается так:

host1 - v.1.25
host2 - v.1.25
host3 - v.1.25
True

host1 - v.1.29
host2 - v.1.29
host3 - v.1.29
True

host1 - v.1.29
host2 - v.1.25
host3 - v.1.29
False

host1 - v.1.25
host2 - v.1.29
host3 - v.1.25
False

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

Я не могу сообразить, как это можно сделать в Ansible?

 , накопительная, , факт

Xintrea
()

Чем занять школьника 10-11 класса в отделе разработки ПО?

Форум — Talks

По программе «Трудовое лето» в отдел необходимо принять на месяц школьника. И загрузить его какой-то посильной работой. Отдел занимается разработкой ПО под Linux на C++/Qt, есть немного Питончика но очень специфического. Интернета на рабочем месте, естественно, нет.

Умения школьника: устанавливать паленую Windows и MS Офис, ставить Steam и рубаться в игры. Есть знания Blender 3D, сам разобрался в базовых инструментах Компас 3D, делал сборки в нем на ~20 деталей. Моделит бытовые предметы, корпуса, игрушки-финтифлюшки для печати на 3D принтере (предпочитает Blender). Немного умеет паять, кое-как может проследить откуда куда идет проводок на графической схеме и сопоставить где этот проводок должен быть в реальности. То, что для питания электроприборов постоянного тока используется два провода, подключаемых к потенциалу и земле - было открытием. Работа переменного тока - за гранью понимания. В школе проходил Pascal, но желания погружаться в программирование нет, потому что ведь есть веселые игры, а это гораздо интереснее. Word - наивная безстилевая верстка, начальные знания Excel.

Теперь надо придумать, чем этого человека можно на месяц занять.

Ваши предложения?

 , ,

Xintrea
()

RSS подписка на новые темы