Сообщения в pipe.2032

Re: Windows 10

Ответ на сообщение
Я и не интересовался деталями именно WSL, писал о своем личном опыте с другими решениями.

А "уровень совместимости", наподобие WINE или WSL1, имеет слишком много проблем на практике. Там никогда не получается добиться полной совместимости с произвольной версией ПО. Надо реализовать все нюансы каждой версии, включая распространенные баги! И при этом требуется реализовать огромное число постоянно меняющихся интерфейсов и поддерживать их в актуальном состоянии (читай OpenGL 1.x, 2.x, 3.x, 4.x, Vulkan, DirectX 7, 8, 9, 10, 11, 12 и пр.). А драйвера вовсе не поддерживаются (то есть всякие DRM и защита от копирования). В итоге - ни рыба, ни мясо. А использование аппаратной виртуализации явно и проще и надежнее.

Я иногда пользуюсь WINE с посредственным успехом, но в основном для игр. Иногда не работает программа установки, иногда - само приложение, а иногда вообще ничего. Бывают всякие глюки, которые зависят от фазы луны. А здесь я, честно говоря, даже не представляю, какие именно графические приложения линукса может понадобиться запускать из винды - ну не игры же?

Когда-то гипервизор Xen использовал только паравиртуализацию, что отдалённо напоминает такой уровень совместимости. В итоге даже они от него постепенно отказываются в пользу аппаратного подхода.
vvs to hugeping (2021-03-28 12:24:08) [ссылка]

Re: Windows 10

Ответ на сообщение
vvs> Насколько мне помнится, графика в терминале виртуальной машины всегда реализуется по сетевым протоколам типа X11
А я думал. что wsl это не виртуализация. Я думал, там как wine. Системные вызовы linux транслируются в win. Или что-то вроде user-mode linux. Но это требует специальной сборки всего, вряд-ли оно так устроено?

P.S. Почитал опять интернеты. Оказывается, есть wsl и wsl2. wsl2 - виртуализация/гипервизор, а в wsl -- примерно то, что я выше написал.
hugeping to vvs (2021-03-28 09:08:50) [ссылка]

Работаем с тем, что есть

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

## First of all

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

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

Короче, всем спасибо, все свободны. У этой мыльной оперы начинается новый сезон.

## Но у тебя же есть работа

И правда, ведь у меня осталась моя работа в ИСЗФ, куда я очень хотел попасть и где очень хотел работать. Большую часть свободного времени сейчас именно там и провожу, засиживаясь допоздна. Потихоньку привыкаю к рабочему месту и к коллективу, решаю возникающие проблемы. По факту, занимаюсь тем же, чем и занимался раньше: пишу статью и диплом, улучшаю некоторые вещи в обработке данных.

Совсем-совсем недавно у нас в отделе случилось замечательное событие: с [Сибирского Радиогелиографа]( https://goo.gl/maps/Y17g1W7NUWjg31Qf6 ), точнее, с его основной решётки из 48 антенн СРГ-48 **впервые за 5 лет** сумели синтезировать изображения высокого качества. И основная заслуга в этом моего научного руководителя, который реализовал так называемую процедуру самокалибровки.

На 2 курсе я писал курсовую работу по алгоритму [CLEAN]( https://en.wikipedia.org/wiki/CLEAN_(algorithm )), используемому в радиоастрономии, который позволяет из дифракционной картины с кучей побочных максимумов восстановить оригинальный радиоисточник. По сути своей, CLEAN - это задача обращения двумерной свёртки. У алгоритма CLEAN есть некоторые недостатки, которые не позволяют получать идеально чистые изображения, просто "втупую" взяв и применив его с параметрами по умолчанию: надо знать, как эти параметры подбирать. Смысл самокалибровки заключается в том, что CLEAN запускается на изображении несколько раз, чтобы выяснить наиболее оптимальные параметры. Кстати, в том коде для самокалибровки СРГ есть и немножко моего кода, написанного раньше.

Ниже показано изображение с СРГ-48 на частоте 4.3 ГГц, наблюдение от 21 марта 2021 года. На данный момент это самый настоящий эксклюзив. Обывателю такая картинка покажется не очень интересной на первый взгляд, но учёные могут получить оттуда много ценных данных. Кстати, если выкрутить хорошенько контраст, то можно обнаружить волокна и корональные дыры на Солнце. Максимальное разрешение там вроде как 6 угловых секунд на пиксель.

https://ii-net.tk/ii/ii-point.php?q=/f/f/alicorn.blog/gRhTDsEVA0anoyQyl8T6

Так что в ИСЗФ сейчас все очень-очень радуются, особенно у меня в отделе, потому что это всё очень круто.

## Что делаю по диплому

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

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

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

https://ii-net.tk/ii/ii-point.php?q=/f/f/alicorn.blog/Am3rP5ctWYn7rrECS2a6

## Ещё больше фишек Jupyter, или на чём всё это держится

Чтобы как можно более эффективно анализировать данные и быстро строить нужные визуализации, я пользуюсь [ipywidgets]( https://ipywidgets.readthedocs.io/en/latest/ ). Впервые здесь в блоге они были упомянуты [вот в этом посте]( https://blog.alicorn.tk/posts/procrast.html ). Но, согласитесь, демка там была малость громоздкой, и она могла отпугнуть читателя.

### interact

Существует способ делать визуализации на ipywidgets с гораздо меньшим количеством кода - с помощью декоратора `@interact`. Вы просто пишете функцию, принимающую на вход несколько параметров, обёртываете её декоратором, и рядом с ячейкой автоматом генерируются все GUI-элементы, позволяющие менять параметры в реальном времени. Вот пример графика, который мгновенно перестраивается, реагируя на движение ползунков:
z=np.arange(0, 20, 0.1)

@ipywidgets.interact(v=(0, 10, 1), v1=(0, 10, 1))
def plot_Jv(v, v1):
    fig, ax = plt.subplots(1, 1, figsize=(10, 4))
    func_output = special.jv(v, z)
    func_output1 = special.jv(v1, z)
    
    ax.plot(z, func_output)
    ax.plot(z, func_output1)

    plt.fill_between(z,func_output, color="blue", alpha=0.5)
    plt.fill_between(z,func_output1, color="green", alpha=0.5)
    
    ax.set_title("Наложение функций Бесселя")
    ax.set_ylim(-0.75, 0.75)
    plt.show()
https://ii-net.tk/ii/ii-point.php?q=/f/f/alicorn.blog/QRjpfHI3Yz309tbp9kJA

Кроме чисел в качестве параметров можно задавать списки, текстовые поля и любые другие виджеты, см. [документация]( https://ipywidgets.readthedocs.io/en/latest/ ). Если же в процессе происходят долгие вычисления, то внутри декоратора достаточно указать `continuous_update=False`, и тогда функция построения графика будет вызываться только после фиксации некоторого значения, а не в реальном времени.

### voila и voila-gridstack

Теперь представим, что мы сделали какое-то исследование или демку на базе Jupyter. Это может быть аналитическая модель с формулами и графиками, сложная карта общественного транспорта или путинских дворцов на базе [ipyleaflet]( https://blog.alicorn.tk/posts/exams-politics.html ). И мы хотим превратить наш Jupyter-файл в веб-приложение в браузере, чтобы любой человек мог зайти по ссылке и увидеть что-то вроде панели управления с виджетами, графиками, текстом и так далее.

Для этого существует инструмент [voila]( https://github.com/voila-dashboards/voila ), которому можно натравить файл `.ipynb` и заставить его крутиться на определённом порту сервера в качестве веб-приложения.
voila myfile.ipynb --port=228

[Voila] Using /tmp to store connection files
[Voila] Storing connection files in /tmp/voila_diqc6yb_.
[Voila] Serving static files from /home/user/.local/lib/python3.9/site-packages/voila/static.
[Voila] Voilà is running at:
http://localhost:228/
Voila поддерживает кучу настроек, в частности, тёмную тему оформления и скрытие (или наоборот отображение) кода ячеек. Также есть надстройка [voila-gridstack]( https://github.com/voila-dashboards/voila-gridstack ), позволяющая сделать что-то вроде панели управления, где можно расставлять ячейки с виджетами и кодом в произвольное место на странице, а не просто друг за другом.

https://ii-net.tk/ii/ii-point.php?q=/f/f/alicorn.blog/xiYmDKAEUzKBXuLJ7wEd

### papermill

А что если нам не нужно веб-приложение, а нужно просто запустить блокнот Jupyter в фоне с какими-то вычислениями как скрипт? Или чтобы несколько блокнотов отработали последовательно друг за другом. Проект [papermill]( https://github.com/nteract/papermill ) призван решить эту проблему. Кроме запуска на локальной машине он ещё умеет запускать блокноты в Google Cloud и Amazon AWS.
papermill ./myfile.ipynb ./output.ipynb
Потом можно при желании написать crontab, в котором нужные вычисления или отчёты будут генерироваться по расписанию, например, раз в час. Дальше уже через [nbconvert]( https://github.com/jupyter/nbconvert ) можно автоматом сгенерировать PDF с графиками, HTML-страницу или даже презентацию со слайдами. *Примечание: для генерации PDF требуется установленный pandoc + LaTeX и немножко подправленный шаблон с поддержкой русских шрифтов*
jupyter nbconvert ./output.ipynb --to pdf
jupyter nbconvert ./output.ipynb --to slides
С инструментами, про которые рассказал выше (а ещё и с фактом поддержки других языков, например, C++ и R) экосистема Jupyter становится самодостаточной и может удовлетворить практически любые хотелки исследователей данных и автоматизаторов. Все эти пакеты я недавно добавил в свой репозиторий [zaebis-скриптов]( https://github.com/vit1-irk/lazyinstall-puppet ) в "научную" конфигурацию.

## И напоследок

Недавно начал пилить проект по работе с API проекта ГосЗатраты, можете посмотреть его [на Github]( https://github.com/vit1-irk/clearspending-pieces ). ГосЗатраты пользуются ежедневными выгрузками сайта Госзакупок, засовывают данные себе в базу и позволяют независимым исследователям вроде нас с вами делать к этой базе автоматизированные запросы. Благодаря этому можно удобно отслеживать ~~всех жуликов и воров~~ покупки любого государственного учреждения. Надеюсь, что затея получит развитие и поможет людям.

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

В общем, "не падаем духом" и работаем с тем, что есть. Show must go on...

Этот пост в блоге: https://blog.alicorn.tk/posts/as-is.html
vit01 to All (2021-03-28 08:27:22) [ссылка]

Re: Windows 10

Ответ на сообщение
Насколько мне помнится, графика в терминале виртуальной машины всегда реализуется по сетевым протоколам типа X11, RDP/RemoteFX, Citrix HDX и т.п. Как вариант - потоковое видео или 3D API (OpenGL, Direct3D) по RPC. Либо пробросом физического устройства на ВМ. Вариант этого способа - аппаратная виртуализация GPU. По моему опыту, второй способ всегда выигрывает, но он требует специальное железо и дороже.

Мой прошлый энтузиазм по этому вопросу сильно поостыл за прошедшие годы. Если кому-то нужна хорошая графика (видео, 3D), то лучше не использовать для этого виртуализацию, КМК. А сейчас даже простой десктоп часто использует 3D эффекты направо и налево.

Короче, метапарсер - наше все ;)
vvs to hugeping (2021-03-27 18:07:13) [ссылка]

Re: Windows 10

Ответ на сообщение
btimofeev> Я пока не смотрел можно ли запускать графические приложения.
Судя по нагугленному, там можно ставить X11 сервер в саму винду, и запускать приложения, задавая DISPLAY=... Ну что, прикольно. :)
hugeping to btimofeev (2021-03-27 16:45:06) [ссылка]

Re: Windows 10

Ответ на сообщение
hugeping> Да, тоже давно не использовал винду. Программировал под 2000. XP уже как пользователь не застал. Иногда хочется поизучать чисто как "экзотику", но каждый раз останавливаюсь... Зачем? Перегруженное, проприетарное... Так что немного сочувствую твоей ситуации. С другой стороны, опыт пригодится, так или иначе...
Почти как в анекдоте. Хочется приключений? Установите Windows 10 IoT Core для Raspberry Pi 2 & 3:

https://docs.microsoft.com/en-us/windows/iot-core/downloads

Однако сам я приключений не ищу.
vvs to hugeping (2021-03-27 13:15:26) [ссылка]

Re: Windows 10

Ответ на сообщение
hugeping> Интересно, конечно, что там с wsl? Графические приложения работают или только консоль? Где-то слышал, что там полноценный userland от Ubunta?
Я пока не смотрел можно ли запускать графические приложения.

Выглядит это так: включаешь wsl через шелл, дополнительно устанавливаешь какую-то программу, потом через Microsoft Store выбираешь дистрибутив, там их больше 5 разных, есть убунту, suse, alpine, на гитхабе нашел ещё arch. Я себе поставил убунту как официально поддерживаемую. Далее запускаешь эту убунту как отдельную программу, открывается она как терминал, предлагает сразу создать пользователя и затем можно пользоваться этим терминалом, часть программ уже установлены (tmux например), через apt можешь установить похоже все что есть в репах убунты. Я себе ставил Emacs (скачивается с какими-то GUI пакетами, но запускается консольная версия), gpg, pass, ranger: все это нормально работало.

Пока программа убунты запущена через меню "сеть" проводника можно зайти в ее файловую систему и копировать туда-сюда файлы. Также диски винды уже смонтированы в /mnt
btimofeev to hugeping (2021-03-27 09:20:05) [ссылка]

Re: Windows 10

Ответ на сообщение
Да, тоже давно не использовал винду. Программировал под 2000. XP уже как пользователь не застал. Иногда хочется поизучать чисто как "экзотику", но каждый раз останавливаюсь... Зачем? Перегруженное, проприетарное... Так что немного сочувствую твоей ситуации. С другой стороны, опыт пригодится, так или иначе...

Интересно, конечно, что там с wsl? Графические приложения работают или только консоль? Где-то слышал, что там полноценный userland от Ubunta?
hugeping to btimofeev (2021-03-27 08:03:04) [ссылка]

Re: Windows 10

Ответ на сообщение
btimofeev> Добавили виртуальные рабочие столы, но пользоваться ими неудобно.
Да уж. А я даже обрадовался было, когда узнал, что наконец их добавили.
btimofeev> Как-то перенастроить кнопки на клавиатуре или мышке похоже нельзя. Заменить стандартные горячие клавиши ОС тоже не нашел где. (Если кто-то знает решение подскажите, наверное какие-то внешние программы существуют).
Я не знаю как это можно сделать. Вроде как, штатными средствами никак. Всё гвоздями прибито.
btimofeev> У меня трекбол с двумя кнопками, третья в линуксе эмулируется одновременным нажатием двух. Здесь это не работает, скачал официальную программу для трекбола для настройки кнопок, но она почему то не хочет сохранять конфигурацию кнопок.
С такими штуками своершеннейшая дичь в винде. А почему непонятно. Помнится, я мультитач тапы пытался поменять менстами. Типа правую и среднюю кнопку поменять. В линуксе это делается элементарно, а в винде я забуксовал. А потом ноут на работе стал не нужен.
btimofeev> Подключил внешний юсб диск, а винда его почему-то распознала как внутренний и не даёт его размонтировать (в меню совсем нет пункта извлечь).
ЧуднО. Такого ещё не видел :)
btimofeev> А ещё обновления устанавливаются очень долго и пользоваться компьютером в это время нельзя =(
Обновления в винде это вообще какое-то отдельное издевательство над пользователем. Долго ищутся (интересно где), долго качаются, очень долго устанавливаются. А ещё периодически при обновлении ломается центр обновления и дальше надо руками в потроха системы лазить, чтобы обновления снова ставиться могли. В 7 таких обновлений несколько :) В 10 как минимум одно такое ловил.
Andrew Lobanov to btimofeev (2021-03-26 20:54:01) [ссылка]

Windows 10

Что-то тут опять тихо. Поделюсь своим двухдневным опытом использования сабжа.

Немного предыстории: последняя Windows которую я использовал на личных компьютерах была Xp. Линуксом я начал пользоваться в 2004, а примерно с 2009 я удалил WinXp (которую к этому времени почти перестал использовать) и полностью ушел на Linux. Теперь на новой работе мне, по всей видимости, придется пользоваться Виндовс постоянно, так как нужно будет использовать некий аппаратный токен (драйверов и софта под который похоже нет на Линукс). Так что пришлось поставить сабж на отдельный диск.

Так вот, как все нормальные люди я сначала пошел на сайт Майкрософт, что бы скачать официальный образ (а не сборку от Васяна). Но сайт мне сказал, что у меня неподдерживаемая операционная система, поэтому скачать образ мне нельзя. Это интересно. Ок, идём на торрент и качаем оттуда.

По какой-то причине Майкрософт считает что все в 2021 году записывают DVD диски и поэтому iso образ это единственный доступный вариант. Ок, я помню что зачастую iso образы линукса загружаются с флешки если просто скопировать его туда через dd. Тут так не прокатило, не грузится. Все инструкции в интернете снова говорят о том что на флешку нужно перепаковывать из самой windows.

Но потом я наткнулся на утилиту которая умеет это делать в линуксе. Называется WoeUSB. Что бы записать образ на флешку выполняем команду:

sudo woeusb --tgt-fs NTFS --device win10.iso /dev/sdX

Флешка удачно записалась, загрузилась и Виндовс я успешно установил с нее.

С первого взгляда win10 довольно неплоха оказалась. Очень обрадовало, что можно установить линуксовую консольку (wsl2) со всеми привычными инструментами. Но многие вещи не изменились с начала 2000-х.

Добавили виртуальные рабочие столы, но пользоваться ими неудобно.
Как-то перенастроить кнопки на клавиатуре или мышке похоже нельзя. Заменить стандартные горячие клавиши ОС тоже не нашел где. (Если кто-то знает решение подскажите, наверное какие-то внешние программы существуют).

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

Подключил внешний юсб диск, а винда его почему-то распознала как внутренний и не даёт его размонтировать (в меню совсем нет пункта извлечь).

А ещё обновления устанавливаются очень долго и пользоваться компьютером в это время нельзя =(
btimofeev to All (2021-03-26 19:20:52) [ссылка]

Re: Что меня раздражает

Ответ на сообщение
btimofeev> Вот моя статейка про эту программу https://emunix.org/post/atool/
Отлично, почитаем! Спасибо.
hugeping to btimofeev (2021-03-23 08:11:49) [ссылка]

Re: Что меня раздражает

Ответ на сообщение
Юзай aunpack (из программы atool), он для архивов без корневой директории создаёт её сам (она будет названа по названию архива). Вот моя статейка про эту программу https://emunix.org/post/atool/
btimofeev to hugeping (2021-03-23 07:21:11) [ссылка]

Re: Что меня раздражает

Ответ на сообщение
Дико, люто раздражают архивы виндузятников, которые не содержат в себе директории и распаковываются засоряя каталог всяким виндузятным хламом. :(
hugeping to Peter (2021-03-23 06:22:42) [ссылка]

Re: Dark

Ответ на сообщение
btimofeev> Если ты про немецкий Dark про временные петли, то он классный. Досматриваю второй сезон. Мозги набекрень от всех переплетений
Да. Я про него. Честно говоря, я сломался на четвёртом сезоне :)
Andrew Lobanov to btimofeev (2021-03-20 20:25:56) [ссылка]

Re: Dark

Ответ на сообщение
Если ты про немецкий Dark про временные петли, то он классный. Досматриваю второй сезон. Мозги набекрень от всех переплетений.
btimofeev to Andrew Lobanov (2021-03-20 18:08:23) [ссылка]

Мечты сбываются!

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

[https://ii-net.tk/ii/ii-point.php?q=/f/f/alicorn.blog/rb1zIYoUoxVL45iqyU3h]( https://www.deviantart.com/plainoasis/art/For-Summer-Solstice-2017-688227624 )

# Что изменилось с момента создания блога

Этот блог я завёл, чтобы делиться новостями из жизни с близкими мне людьми. Или с теми, кто хотел бы себя таковым считать. Поэтому часто тут откровенничаю. Приходилось много рассказывать о своём одиночестве, о том, как это чувствуется, насколько это ужасно и неприятно. [Пару постов назад]( https://blog.alicorn.tk/posts/technical-debt.html ) я впервые упомянул, что больше не одинок, и что это ощущается по-другому, но немножко прикрыл это, не называя вещи своими именами.

## Давайте назовём это вслух
> У меня есть любимая девушка, мы уже 5 месяцев вместе, и я этому очень-очень счастлив!
Скажите, это существенное изменение? Для человека, для которого тема одиночества годами является главной и ключевой, это охренеть какое существенное изменение. Если бы мне год назад сказали про что-то эдакое, то я б в принципе не поверил, что такое со мной возможно. Конечно, впервые начав настоящие серьёзные отношения, пришлось столкнуться с разными проблемами и непониманием, без этого никуда, но оно того абсолютно стоит. Мы всё это преодолеваем вместе, и я рад, что всё получилось именно так, как получилось (просто хотелось честно упомянуть, что никогда не бывает всё сразу идеально).

И кто после этого скажет, что мечты не сбываются? Но подождите, есть ещё одна существенная новость...

## Началось с поняшек, закончилось кое-чем большим

Когда я только-только планировал создание этого блога, то заранее продумывал, о чём же буду писать тут в долгосрочной перспективе. Очень хотелось писать сюда о достижении каких-то целей, как маленьких, так и больших, чтобы донести до читателя, что многое возможно, если просто захотеть. В 2014 году я познакомился с MLP:FIM, и какой-то детский (а иногда очень и недетский) мультик о поняшах сильно повлиял на моё ощущение этого мира, сформировал ценностные ориентиры. Если ты на эту тему серьёзно подсел, то оно навсегда, ну или по крайней мере, крайне надолго. Даже если сам сериал закончился, то его идеи и этот культурный пласт остаются жить.

Так вот, сначала я подсел на MLP, а моими героями по жизни стали правительница страны поняш Селестия, управляющая местным Солнцем-светилом, и её ученица-заучка Твайлайт Спаркл, проходящая долгий путь социализации и достигающая в жизни всех высот. Идёт 7 год с того, как всё началось, и где я сейчас? Ха-ха, получаю кучу знаний, занимаюсь наукой и изучаю Солнце :) *Пусть не люблю излишний символизм, но здесь читатель должен его хорошенько прочувствовать*.

## Принимаю ваши поздравления
> С 4 марта 2021 года я официально трудоустроен в Институт Солнечно-Земной Физики СО РАН, в отдел радиоастрофизики, в лабораторию мониторинга солнечной активности
[https://ii-net.tk/ii/ii-point.php?q=/f/f/alicorn.blog/un5UmWxDk4z98ZIZBpwh]( https://www.deviantart.com/plainoasis/art/Intervention-666098224 )

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

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

Как всегда пожелание народу: будьте сильными и смелыми, поняши!

Этот пост в блоге: https://blog.alicorn.tk/posts/congratulations.html
vit01 to All (2021-03-04 13:32:17) [ссылка]

Re: Малинка, как домашний веб сервер

Ответ на сообщение
Сложно искать черную кошку в темной комнате, да. В общем, проще все оказалось -- надо было подключаться к впн-серверу. Всем добра, Петр не грусти ;)
johnbrown to All (2021-02-14 17:29:23) [ссылка]

Re: Малинка, как домашний веб сервер

Ответ на сообщение
Если подключаюсь через network manager по dsl, то в журнале пишет ошибку "error sending pppoe packet: invalid argument", хотя дальше добавляюся руты. Но, PADO не получает...

Если подключаюсь через pon, то вывод в журнале такой:
plugin rp-pppoe.so loaded
pppd 2.4.7 started by root, uid 0
pam_unix(sudo:session): session closed for user root

Почему "closed" непонятно.

Может нужен какой-то другой тип подключения, не pppoe-dsl? А может вообще не нужно создавать дополнительное соединение?
P.S. Edited: 2021-02-13 17:30:10
johnbrown to All (2021-02-13 17:03:13) [ссылка]

Re: Малинка, как домашний веб сервер

Ответ на сообщение
johnbrown> johnbrown> А кто-нибудь подключался с девайса по pppoe?
johnbrown> К локальной сети подключился, но непонятно как выходить во внешний интернет.
johnbrown> С подключением вообще интересно получается. Если запускать мастер pppoeconf, то выходит ошибка, что не найдены концентраторы... Установил network manager, он подцепил все настройки по eth0, но теперь мне непонятно что делать дальше. Пробовал создавать dsl-соединение, но пишет сбой соединения. У меня проводной интернет, роутера нет.
Я лет десять назад использовал интернет через мобильный телефон в линуксе, но к сожалению не помню как настраивать. Помню только что настроил один раз и соединялся через консоль. Посмотри вот в эту сторону https://wiki.archlinux.org/index.php/Ppp_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)
btimofeev to johnbrown (2021-02-13 16:15:58) [ссылка]

Re: Малинка, как домашний веб сервер

Ответ на сообщение
johnbrown> А кто-нибудь подключался с девайса по pppoe?
К локальной сети подключился, но непонятно как выходить во внешний интернет.

С подключением вообще интересно получается. Если запускать мастер pppoeconf, то выходит ошибка, что не найдены концентраторы... Установил network manager, он подцепил все настройки, но теперь мне непонятно что делать дальше. Пробовал создавать dsl-соединение. Указывал только логин-пароль и интерфейс. Думал, все остальное автоматически подтянет, но пишет сбой соединения. Интернет проводной, роутера нет.
johnbrown to All (2021-02-13 12:38:23) [ссылка]

Re: Малинка, как домашний веб сервер

Ответ на сообщение
А кто-нибудь подключался с девайса по pppoe?
johnbrown to hugeping (2021-02-07 18:56:42) [ссылка]

Политика, экзамены и картография

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

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

## Продолжаем автоматизацию

У предыдущего поста про автоматизацию было много отзывов мне лично, поэтому не лишним будет упомянуть, что было улучшено со времени создания той автоматизированной конфигурации:

1. Наконец-то получилось заставить работать интерпретатор языка программирования GDL под ArchLinux. PKGBUILD [доступен]( https://aur.archlinux.org/packages/gnudatalanguage-gdlkernel ) в Arch User Repository, и им можно свободно пользоваться. Эта сборка GDL свежая, из их официального репозитория. К сожалению, так и не получилось заставить GDL-kernel для Jupyter строить графики внутри окна браузера, но ничего страшного, в отдельном окне графики нормально отображаются.

2. В научной конфигурации добавлен модуль GDL-kernel для Jupyter и пакет IDLAstro для солнечников. Поскольку я фанат Jupyter, этого стоило ожидать

3. Добавил инструкции для установки [JHelioViewer]( http://www.jhelioviewer.org/ ) - программы для просмотра трёхмерной карты Солнца, которая использует данные нескольких спутников в разных диапазонах. Она позволяет не только скачивать изображения и строить видеоряды, но и получать данные о солнечных вспышках и активных областях за какой-то период, используя данные Heliophysics Events Knowledgebase. А ещё я завёл эту программу на Archlinux, сделав [пакет для AUR]( https://aur.archlinux.org/packages/jhelioviewer4-bin ). Так что это означает, что Арч готов для физики Солнца

4. В конфиге Archlinux устаревший пакетный менеджер yaourt заменён на yay. Ещё я добавил конфиги тачпада и вентиляторов для макбуков.

5. В README.md своего [репозитория]( https://github.com/vit1-irk/lazyinstall-puppet ) по автоматизации я добавил будущие планы и размышления по поводу апгрейда своих скриптов. Настройка серверов остаётся в силе и постепенно будет допиливаться.

## Экзамены и каникулы

Так, ну чё всё о техническом да о техническом. В каникулы я готовился к трём экзаменам:

* Физика конденсированного состояния
* Физика Солнца
* Физическая кинетика

Все их сдал на 5, чему, конечно, очень рад. Сдача проходила по удалёнке, мы писали ответы на вопросы, фотографировали и показывали+рассказывали через демонстрацию экрана. К сожалению, у меня есть такая особенность, что всё делаю в последний момент, поэтому я готовился тоже в последний момент, очень стрессовал и поломал себе режим. Но всё обошлось.

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

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

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

## Выход на улицу и зачем это делается

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

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

Выход на улицу в России всегда сопряжён с некоторыми рисками. В нашей стране пусть и прописано в законах, что любые граждане имеют право на мирные собрания, шествия и митинги, но власть свои же законы соблюдать не спешит. И даже если ты ничего не нарушал, тебя всё равно могут загрести в ментовку, выписать штраф и.т.п. Поэтому у нас даже просто взять и выйти уже проявление смелости, хотя чисто статистически опасность задержания сильно преувеличена, вероятность не больше 5 процентов.

Так вот, целями выхода на улицу в поддержку какого-то политика (или против действующей власти) являются:

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

## Как сходил на шествия и провёл фото-трансляцию

В эти разы я решил не просто сходить на шествия здесь в Иркутске, но и активно фотографировать. Во-первых, в случае произвола со стороны ментов фотки помогут их идентифицировать (в Беларуси это успешно применялось), во-вторых, это даст понять, где я в данный момент нахожусь и что со мной всё в порядке.

Android-приложение Nextcloud, которым я пользуюсь, поддерживает так называемую **автоматическую загрузку**. Это значит, что после того как ты сделаешь фото, оно сразу же улетает в облако. Каталог с фотками можно сделать публичным и отправить ссылку на него товарищам. То есть получается такой вот почти мгновенный фоторепортаж.

https://ii-net.tk/ii/ii-point.php?q=/f/f/alicorn.blog/H30cumSQtFPOkHAzZU7Y

Ещё в Nextcloud есть приложение **PhoneTrack**, которое представляет собой GPS-трекер. На одной из акций я решил ради теста им воспользоваться, чтобы, если вдруг меня задержат, то товарищи (сидящие в этот момент дома) сразу знали, куда ехать и где меня спасать. PhoneTrack состоит из [андроид-приложения]( https://f-droid.org/ru/packages/net.eneiluj.nextcloud.phonetrack/ ) и карты в Nextcloud, ссылкой на которую можно поделиться. К сожалению, на 20-градусном морозе у меня замерзал и вырубался телефон, да и GPS съедал много батареи, поэтому толку от GPS-трекинга было мало. А ещё на вебморде PhoneTrack интерфейс очень плохо отображается на мобильных устройствах, и карту с метками нормально можно смотреть только с компьютера.

https://ii-net.tk/ii/ii-point.php?q=/f/f/alicorn.blog/A5M7tfSaF3ZeeMaFRz9e

Мгновенное оповещение подписчиков через уведомления я делал через **JupyterLab и ipywidgets**. Там написан скрипт-подпрограмма, которая рассылает сообщения от моего имени в разные сервисы. А через ipywidgets сделано текстовое поле и кнопка отправки. Конечно, интерфейс Jupyter недостаточно идеален на мобильных устройствах, но с каждой версией он улучшается и позволяет гибко писать скрипты и интерфейсы под любые потребности.

![]( https://miro.medium.com/max/700/1*K24B_sxJ6Y-PHeLTURyRTw.gif )

## 23 января

* [Ссылка на фотографии]( https://alicorn.tk/dashie/s/28qtoAsdmfFYXBj )

В Иркутске поведение у ментов на публичных мероприятиях всегда было достаточно спокойное. Они посмотрят, поснимают, а потом через несколько дней назначат штраф в пару десятков тысяч рублей. Да и то рассчитывают на штраф только медийные личности, которых все знают. Так же было и 23 числа. Народу было очень много, тысячи 4 (или даже больше), шествие растянулось с улицы Урицкого до здания администрации на сквере Кирова и там уже закончилось митингом. На табличке у здания администрации повесили синие трусы, сделали пару надписей и повесили плакатик. Самый главный из звучащих лозунгов был "Путин - вор".

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

https://ii-net.tk/ii/ii-point.php?q=/f/f/alicorn.blog/97FmeZHv3X1cVxXZwZQs

## 31 января

* [Ссылка на фотографии]( https://alicorn.tk/dashie/s/wtxmDqaSNHZYjDc ) (возможно, будут дополнения)

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

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

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

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

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

https://ii-net.tk/ii/ii-point.php?q=/f/f/alicorn.blog/1ebQVPjzEClN2oEYzzcR

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

## Прикручиваем карты к Jupyter

А знаете что, товарищи? Раз теперь Навального упекли надолго в тюрьму, а многих сотрудников Фонда Борьбы с Коррупцией пересажали, то нам с вами надо потихоньку учиться самим обрабатывать данные и делать расследования так же, как делают они. Это работа пусть и кропотливая, и требует много ресурсов (для вытаскивания баз данных), но сама по себе выполнимая и по силам любому, кто умеет программировать.

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

Поэтому предлагаю вам познакомиться с библиотекой **ipyleaflet**, которая позволяет построить собственную интерактивную карту, на которой можно располагать разные объекты и визуализировать те или иные явления. ipyleaflet работает на базе Jupyter Notebook или JupyterLab и позволяет строить карты прямо внутри документов-блокнотов Jupyter. Карту можно двигать мышкой, уменьшать и увеличивать, включать и выключать различные слои и помещать туда разные виджеты.

[Документация ipyleaflet]( https://ipyleaflet.readthedocs.io/en/latest/ )

Продемонстрирую небольшой пример, где мы строим карту с центром в одном месте и помещаем туда надпись
import ipywidgets
from ipyleaflet import *

center = [44.4195, 38.2053]

s = Map(center=center, basemap=basemaps.Esri.WorldImagery, zoom=16)
marker = Marker(location=center, draggable=False)
s.add_layer(marker)

message1 = ipywidgets.HTML("h3Дворец Путина/h3")
popup = Popup(location=center, child=message1, close_button=False,\
    auto_close=False, close_on_escape_key=False)

s.add_layer(popup)
marker.popup = popup
display(s)
https://ii-net.tk/ii/ii-point.php?q=/f/f/alicorn.blog/yMPWRAOnw7seBS41ZtCY

Ну что, скучно, девочки? Как бы не так...

## Смотрим ботов на карте

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

*для справки: существует расширение fail2ban, которое при нескольких неуспешных попытках входа навсегда банит ip-адрес, здесь для чистоты эксперимента я им не пользуюсь*

Мы можем взять лог запросов и проанализировать, из каких городов и стран приходит больше всего вредоносного трафика. Вот этой командой можно вытащить IP-адреса, с которых были неуспешные попытки входа на сервер:
grep "Failed" /var/log/auth.log | grep "ssh" | grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}" > ~/ips.txt
Используя базу данных **geoip**, можно узнать примерные географические координаты сети нужного IP-шника и построить их на карте. Воспользуемся библиотекой python-geoip и построим карту уникальных IP-адресов ботов.
from geoip import geolite2

f = open("ips.txt").read().splitlines()
lookups = [geolite2.lookup(i) for i in set(f)]
locations = [i.location for i in lookups if i is not None]

m = Map(center=(0, 0), basemap=basemaps.OpenStreetMap.Mapnik, zoom=2)

heatmap = Heatmap(locations=locations, radius=5, min_opacity=0.2, blur=2)
m.add_layer(heatmap)
display(m);
https://ii-net.tk/ii/ii-point.php?q=/f/f/alicorn.blog/6eiaA6sfAcBQkgdzzdXO

Как можно увидеть, боты, подбирающие пароли, есть на всех континентах. Больше всего такого трафика идёт из Европы, США и Китая. Теперь сменим карту и посмотрим уже статистику не по количеству адресов ботов, а по количеству запросов: какие хакеры самые настойчивые и подбирают пароли до последнего.
lookups_ddos = [geolite2.lookup(i) for i in f]
locations_ddos = [i.location for i in lookups_ddos if i is not None]

m1 = Map(center=(0, 0), basemap = basemaps.Stamen.Terrain, zoom=2)

heatmap1 = Heatmap(locations=locations_ddos, radius=8, min_opacity=0.2, blur=2)

opacity_slider = ipywidgets.FloatSlider(description='Видимость:', min=0.01, max=0.5, value=0.2, step=0.01)
ipywidgets.jslink((opacity_slider, 'value'), (heatmap1, 'min_opacity'))
widget_control1 = WidgetControl(widget=opacity_slider, position='topright')
m1.add_control(widget_control1)
m1.add_layer(heatmap1)

display(m1);
https://ii-net.tk/ii/ii-point.php?q=/f/f/alicorn.blog/7lXGw16lN2vUNpuJmOSu

Итого: самые настойчивые хакеры ломают из Пекина. Также в лидерах по количеству запросов был Лондон. При желании можно взять и вычислить конкретную подсеть, но в завершение данного мини-расследования давайте построим статистику IP-адресов по каждой стране. Для этого понадобится база с географическими координатами стран, которую можно взять [вот здесь]( https://developers.google.com/public-data/docs/canonical/countries_csv ) и загрузить через библиотеку **Pandas**. В программе ниже я подсчитываю количество активных адресов ботов из каждой страны и наношу на карту в порядке возрастания
import pandas as pd

countries = {}

for ip in lookups:
    if ip == None:
        continue
    if not ip.country in countries.keys():
        countries[ip.country] = 1
    else:
        countries[ip.country] += 1

countries_rank = sorted(countries.keys(), key=lambda id: countries.get(id))
countries_loc = pd.read_csv("countries.csv", sep=" \t", engine="python")

m2 = Map(center=(0, 0), basemap = basemaps.Stamen.Toner, zoom=3)

for country in countries_rank:
    query_number = countries.get(country)
    info = countries_loc[countries_loc["country"] == country].values[0]
    text = "{1}: {0}".format(query_number, country)

    popup = Popup(location=(info[1], info[2]), child=ipywidgets.Label(text),\
                  close_button=False, auto_close=False, close_on_escape_key=False)
    m2.add_layer(popup)

display(m2);
https://ii-net.tk/ii/ii-point.php?q=/f/f/alicorn.blog/ahOGgSuRZ9ARXEVLYSIC

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

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

Будьте сильными и смелыми, поняши!

Этот пост в блоге: https://blog.alicorn.tk/posts/exams-politics.html
vit01 to All (2021-02-03 12:35:35) [ссылка]

Re: Театр с куклами или как всё собрать и пойти пить чай

Ответ на сообщение
btimofeev> У тебя там yaourt в арче, его несколько лет назад задепрекейтили из-за отсутствия поддержки и кажется даже из аура уже выкинули, лучше заменить на yay или любой другой из списка https://wiki.archlinux.org/index.php/AUR_helpers
Заменил на yay. Про то что yaourt пользоваться не рекомендуется, давно уже знал (да и в том же Manjaro стоит по умолчанию pacaur), но загнал его в список чисто по привычке.

Просто когда составлял каркас репозиториев для арча, нужно было выбрать aur helper, и я не заметил, что в archlinuxcn кроме старого yaourt были ещё варианты, включая yay
>>> Хочу такой же инструмент, но для Android-смартфонов (установка софта в том числе из F-Droid). Предлагайте, советуйте, буду искать и пробовать
btimofeev> Гугл-сервисы =) Сами бекапят большую часть данных и приложений в облаке и восстанавливают при логине на другом телефоне. Но, насколько я понимаю, ты ими не пользуешься (да и приложения установленные из f-droid они не восстановят).
Да, в этом-то и дело, что гуглосервисами не пользуюсь и держу много софта из f-droid
btimofeev> Возможно тебе подойдет вот эта десктопная утилита, на базе которой можно написать скрипт для автоматической установки софта с fdroid https://github.com/mvdan/fdroidcl
Спасибо за совет, похоже, это именно то что нужно. Возможно, позднее я даже сделаю скрипт для частичного бутстраппинга свежего андроида через adb (и запихну в тот же репозиторий, чтобы добро не терять)

К сожалению, мне на андроиде и проприетарщину держать приходится (через Aurora Store), но с ней что-нибудь отдельно попробую порешать.
btimofeev> Также можно через adb просто копию телефона или отдельных приложений снять, а потом восстановить на другом (причем восстанавливаются даже настройки самих приложений):
Про adb backup слышал, но для бэкапа настроек обычно использую приложение oandbackup (оно есть в f-droid и требует root). Если они добавят снапшоты по расписанию, то можно эти бэкапы даже в облако пробросить потом, чтобы прозрачно восстанавливать.
+++ Отправлено через IDEC Mobile
+++ GNU/Linux, Android, physics, MLP:FIM
vit01 to btimofeev (2021-01-03 13:06:09) [ссылка]

Re: Artist-mode в Emacs

Ответ на сообщение
Difrex> А так, вроде, все просто там https://cloud.lessmore.pw/index.php/s/rkYMDEzwZXm7S7E
Difrex> По средней кнопке менюшка, где выбираешь инструмент для рисования, по левой кнопке рисуешь, правой кнопкой стирать.
Понятно. Я просто по привычке не догадался, что надо мышью орудовать, а с документацией какие-то нелады :)
Andrew Lobanov to Difrex (2021-01-03 07:58:35) [ссылка]

Re: Театр с куклами или как всё собрать и пойти пить чай

Ответ на сообщение
Спасибо за статью. Возьму на вооружение, хоть системы переустанавливаю очень редко.

У тебя там yaourt в арче, его несколько лет назад задепрекейтили из-за отсутствия поддержки и кажется даже из аура уже выкинули, лучше заменить на yay или любой другой из списка https://wiki.archlinux.org/index.php/AUR_helpers
>> Хочу такой же инструмент, но для Android-смартфонов (установка софта в том числе из F-Droid). Предлагайте, советуйте, буду искать и пробовать
Гугл-сервисы =) Сами бекапят большую часть данных и приложений в облаке и восстанавливают при логине на другом телефоне. Но, насколько я понимаю, ты ими не пользуешься (да и приложения установленные из f-droid они не восстановят).

Возможно тебе подойдет вот эта десктопная утилита, на базе которой можно написать скрипт для автоматической установки софта с fdroid https://github.com/mvdan/fdroidcl

Также можно через adb просто копию телефона или отдельных приложений снять, а потом восстановить на другом (причем восстанавливаются даже настройки самих приложений):

adb backup -apk -shared -nosystem -f mybackup.ab
adb restore mybackup.ab
btimofeev to vit01 (2020-12-30 10:10:09) [ссылка]

Театр с куклами или как всё собрать и пойти пить чай

В этот раз пост будет технический, про настройку своих компьютеров и контейнеров на GNU/Linux (может быть, не только) и как я воспользовался системой управления конфигурацией Puppet. Если ты не программист, то не спеши пропускать пост, потому что кое в чём тебе полезно будет его прочитать и задуматься.

## Проблема настройки ОС с нуля

Часто ли вам приходится устанавливать операционки, контейнеры, виртуальные машины, настраивать их и загонять туда кучу программ? Мне вот в последнее время да, причём не только себе, но и другим людям. Когда-то это необходимость по учёбе, а иногда просто требуется чистый компьютер/окружение для экспериментов или для установки научного софта.

И вот так бывает, что просто задалбывает всё делать каждый раз с нуля, одно и то же. Конечно, в GNU/Linux дистрибутивах есть пакетные менеджеры, где можно в одну строчку ввести несколько имён пакетов, и нужный софт по порядку установится.

Например, `sudo apt install libreoffice firefox gnuplot-x11` и.т.д. Пусть это и круто, но хочется большего:

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

## Системы управления конфигурацией и что они решают

В какой-то момент надоедает эта возня с настройкой систем. Если будешь постоянно что-то настраивать, то и времени на работу не останется. Хочется один раз разобраться, потом написать файл конфигурации или скрипт. И когда в следующий раз что-то понадобится, то просто его запустить, пойти пить чай и получить через час готовый для работы компьютер.

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

Такие системы называются *системами управления конфигурацией* (конфигурациями), и товарищи в крупных фирмах ими часто пользуются.

## Ещё немножко комментариев "зачем"

К автоматизации я подхожу с некоторым максимализмом. Роботы должны делать тупую работу, а человек должен заниматься чем-то интересным. И когда мы пользуемся компьютерами, мы пишем программы, чтобы упростить себе жизнь, в чём-то стать свободнее и независимее. Часто за собой замечаю, что с этой технической вознёй стал сам зависим от компьютеров. Это как будто не ты владеешь вещью, а вещь владеет тобой. В какой-то момент я загорелся идеей уменьшить эту зависимость от вещей и от технологий, побороть привязанность к железу и к конкретным настройкам. И это нужно пояснить.

Те из вас, кто интересуется политикой, знает, что, например, на штабы Навального регулярно, раз в несколько месяцев, налетает ОМОН, забирает всю технику и не возвращает её. Я всегда представлял себя на месте работников Фонда Борьбы с Коррупцией и на месте каких-нибудь независимых журналистов.

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

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

## Почему не Ansible и не Docker, чем плохи образы

Начнём с **образов**. Казалось бы, если тебе надо часто ставить операционки, то можно просто собрать свою сборку той же Убунты, запихнуть её в iso-образ и пользоваться, когда понадобится. Но тут сразу выползают минусы:

1. В процессе работы у тебя может что-то из настроек меняться, это абсолютно нормально. И на каждый чих, на каждое мелкое изменение придётся этот образ на несколько гигабайт пересоздавать или перезаписывать. Это долго и затратно
2. Образы сами по себе тяжёлые, эти несколько гигов надо просто где-то хранить и не потерять, а ещё наверняка захочется иметь несколько образов на разные случаи жизни, а это значит ещё пару десятков гигабайт
3. Программы имеют свойство иногда "протухать", то есть придётся ещё и устанавливать обновления в образы, а это значит регулярно заниматься пересборкой
4. Если ты ставишь программы другому человеку, то у него какая-то операционка может быть установлена, и удобнее просто накатить нужные программы на уже готовую ОС, чем ставить новую в дуалбут или в виртуалку

Почему не **Docker**? Для разработчика или для большой фирмы есть куча плюсов в использовании Docker, к тому же, там можно не просто использовать образы, но и писать Dockerfile, в котором можно указать кучу разных настроек. Но от Docker я отказался по следующим причинам:

1. Требует запущенного сервиса на компьютере и отдельного обслуживания, просто чтобы можно было что-то запустить изнутри. Опять накладные расходы
2. Вместо того чтобы запускать контейнер в режиме "всё включено", хочется больше гибкости. Например, создать вручную контейнер другой операционки и загнать туда тот же софт. Или установить программы на уже готовую ОС
3. Опять же, когда ставишь проги другим людям, то у них какая-то ось уже стоит, и им проще установить программы без всяких дополнительных слоёв абстракции и без контейнеров

Почему не **Ansible**? Вроде бы, это вообще идеальный вариант. Все настройки в текстовых файлах, кушать не требует, места много тоже не требует. Но мне не очень нравится подход Ansible к описанию настроек: файлы playbook получаются громоздкие, для каждой операционки нужно писать логику отдельно. Ещё там используется "императивный подход", как в обычных скриптах, плюс Ansible больше ориентирован на обслуживание удалённых серверов, а не просто любого компьютера. Хотя, конечно, этот инструмент крут в своей области и позволяет многого достичь, но лично для меня в данной ситуации он не подошёл.

## Как я воспользовался Puppet, с чем его едят

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

Чтобы создать конфигурацию, нужно написать несколько текстовых файлов и загнать их куда-нибудь в Git-репозиторий (например, на Github). Что самое крутое, в этих файлах настроек ты указываешь не просто последовательность команд, а именно желаемое состояние системы, то есть некоторый результат, который хочется получить в итоге. Puppet, считывая этот рецепт, сам позаботится о том, чтобы запустить нужные команды в нужном порядке.

Вот парочка примеров со [статьи на Хабре]( https://habr.com/ru/company/avito/blog/507346/ ) и на основе документации:
package { 'nginx':         # описываем пакет nginx
    ensure => installed,   # он должен быть установлен
}
~> service { 'nginx':  # описываем сервис nginx
    ensure => running, # он должен быть запущен
    enable => true,    # его нужно запускать автоматически при старте системы
}
Можно устанавливать также Python-пакеты, например
package { 'python-mysql':
  ensure   => installed,
  name     => 'mysql',
  provider => 'pip' # да, ставим через pip
}
Можно пользоваться переменными и добавлять файлы, например
# создание переменных
$variable = 'value'

file { '/tmp/text':
    content => $variable,
    owner => 'root'
}
Можно добавлять пользователей и SSH-ключи

$user = 'littlepony'

user { $user:
    name => $user,
    ensure => present
}

ssh_authorized_key { 'littlepony@hostname':
    ensure => present,
    user   => $user,
    type   => 'ssh-rsa',
    key    => 'содержимое ключа'
}

И даже указывать задания в Cron
cron { 'logrotate':
  command => '/usr/sbin/logrotate',
  user    => 'root',
  hour    => [2, 4]
}
Поддерживается массивы и циклы, указание зависимостей между ресурсами (например, перед тем как положить файл в папку настроек программы, эта программа должна сначала быть установлена). Мне нравится такой подход к описанию настроек

## Достоинства и недостатки Puppet

Из достоинств отметил бы

+ Сам способ декларативно описывать настройки
+ Возможность для разных операционных систем написать один конфиг, с минимальными правками. Например, я сделал конфиг, который сработает на Ubuntu/Debian и Archlinux/Manjaro примерно одинаково.
+ Куча модулей от сообщества для настройки самых разных параметров системы

Из недостатков

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

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

## Применение для науки и для своих десктопов

У меня все конфигурации Puppet лежат в Git-репозиториях. Первая, публичная, доступна любому человеку на Github: https://github.com/vit1-irk/lazyinstall-puppet.

Чтобы ей воспользоваться, нужно взять оттуда скрипт с весьма лаконичным названием (см. репозиторий) и запустить его с желаемым ключом. Что есть в наборе `desktop`:

* Мой любимый софт: браузер, текстовые и графические редакторы, некоторые драйвера и полезные утилиты, почтовики и пара мессенджеров, ну и по мелочи. Просто чтобы комфортно было пользоваться компьютером
* Ставится русская локаль и часовой пояс Азия/Иркутск.
* В автозапуск загоняется Nextcloud и KDEConnect, чтобы сразу же синхронизироваться с облаком и со смартфоном

Есть ещё набор `science`, который я предлагаю использовать всем желающим, а особенно тем людям с физфака (и конкретно с космофиза), которые читают этот блог. Набор `science` рассчитан как на обычные компьютеры, так и на серверы. Что через него ставится:

* LaTeX со всеми нужными пакетами, чтобы писать статьи, курсачи и делать презентации в beamer. Редактором выступает Texmaker
* x2goserver, на тот случай если вы хотите запускать графический софт на мощном удалённом серваке, чтобы делать научные расчёты именно там
* Полностью настроенные Jupyter Lab и Jupyter Notebook, чтобы программировать на Python и заниматься анализом данных
* gnuplot, kmplot и Dot (+ модуль Jupyter) для построения графиков и диаграмм, geogebra для решения геометрических задач, Maxima для аналитических вычислений
* Язык R для анализа данных (пока без модуля Jupyter, но в будущем будет)
* Куча питоновских пакетов для анализа данных и вычислений, астрофизики и физики Солнца
* Питоновский модуль apprise для оповещений в мессенджеры или по Email (например, если у вас долгие вычисления и нужно за ними следить)

Для солнечных физиков там есть ещё особенные плюшки:

* Пакет SAOImageDS9 для анализа и просмотра FITS-файлов
* Настроенный GDL (реализация языка IDL) вместе с пакетом IDLAstro
* В питоновских модулях есть готовый для использования Sunpy

На Archlinux GDL мне полностью завести не удалось, но это только пока что, и я над этим работаю. Поэтому солнечникам рекомендуется пользоваться science-набором на Ubuntu или Debian. Если у кого-то есть замечания или предложения что-то включить ещё в научный набор, то с удовольствием приму.

## Вторая, личная конфигурация

Она находится в приватном репозитории под паролем. Там лежат некоторые специфичные для меня самого настройки. Например, SSH-ключи и настройки SSH-сервера, парочка сервисов systemd, ярлыки на рабочий стол и закладки в файловом менеджере. Приведу некоторый кусок кода с приблизительным содержанием, который можете допилить под себя
class personal::soft_services {
    $user = 'vit01'
    
    user { $user:
        name => $user,
        ensure => present
    }

    # ssh_authorized_key {'всё как в примере выше'}
    
    service { 'Syncthing':
        name => "syncthing@$user",
        ensure => "running",
        enable => "true"
    }

    class { 'ssh::server':
      validate_sshd_file => true,  
      options => {
        'Match User www-data' => {
          'ChrootDirectory' => '%h',
          'ForceCommand' => 'internal-sftp',
          'PasswordAuthentication' => 'no',
          'AllowTcpForwarding' => 'no',
          'X11Forwarding' => 'no',
        },
        'PrintMotd'              => 'no',
        'PasswordAuthentication' => 'no',
        'PermitRootLogin'        => 'no',
        'Port'                   => 22,
      }
    }

    $all_path = '/usr/local/bin/:/usr/bin'
    exec { 'install dot kernel for user': path => $all_path,
        command  => 'install-dot-kernel',
        onlyif => 'which install-dot-kernel',
        user => $user }
        
    $icon = 'xdg-desktop-icon install --novendor /usr/share/applications'
    
    file { "xdg bookmarks":
        path => "/home/$user/.config/gtk-3.0/bookmarks",
        content => "file:///home/$user/Nextcloud\nfile:///tmp",
        owner => $user,
        ensure => present
    }
    
    $icons = ["firefox.desktop", "emacs.desktop"]

    $icons.each |String $fname| {
        exec { $fname: path => $all_path,
            command => "$icon/$fname",
            environment => [ "HOME=/home/$user" ],
            user => "$user"
        }
    }
}
## На будущее

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

Что дальше в планах:

* Если будет свободное время и лишние 800 рублей на эксперименты с VPS, то сделаю воссоздаваемую конфигурацию для своих серверов, чтобы сделать их неубиваемыми.

* Настройки для обычных компов будут дорабатываться, чтобы ещё больше снижать количество телодвижений для приведения всего в рабочий вид

* Хочу такой же инструмент, но для Android-смартфонов (установка софта в том числе из F-Droid). Предлагайте, советуйте, буду искать и пробовать

* Разберусь с GDL на Archlinux и потом включу в настройки GDL-kernel для Jupyter Notebook, чтобы ещё больше облегчить написание IDL-кода солнечным физикам

Кстати, в процессе создания desktop-конфигурации я обнаружил к своему удивлению, что MyPaint и GIMP конфликтуют в репозиториях Debian. Это ужас и недоработочка.

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

[https://ii-net.tk/ii/ii-point.php?q=/f/f/alicorn.blog/zvG3oBpUEamdpvEYPGgy
](https://www.deviantart.com/rapidstrike/art/open-horse-development-583519331)

Этот пост в блоге: https://blog.alicorn.tk/posts/puppet-reproducible.html
vit01 to All (2020-12-29 19:49:20) [ссылка]

Re: Artist-mode в Emacs

Ответ на сообщение
А так, вроде, все просто там https://cloud.lessmore.pw/index.php/s/rkYMDEzwZXm7S7E

По средней кнопке менюшка, где выбираешь инструмент для рисования, по левой кнопке рисуешь, правой кнопкой стирать.
Difrex to Andrew Lobanov (2020-12-29 08:15:55) [ссылка]

Re: Artist-mode в Emacs

Ответ на сообщение
> Хочу присовать простые блок-схемы, но каждая попытка с открытыми мануалами приводит к какому-то месиву в буфере.
Использую artist-mode по работе - все норм. Но я рисую в *scratch*, а потом копипастю в нужный мне буфер.
Difrex to Andrew Lobanov (2020-12-28 13:51:09) [ссылка]

Re: Халява

Ответ на сообщение
На главной страничке gog.com можно бесплатно получить тактический roguelike про боевых мехов Brigador.
P.S. Edited: 2020-12-22 19:53:06
btimofeev to all (2020-12-22 19:52:20) [ссылка]

Artist-mode в Emacs

Попытался разобраться как работать в artist-mode в своём любимом Emacs и что-то не понял сам принцип рисования в нём. Хочу присовать простые блок-схемы, но каждая попытка с открытыми мануалами приводит к какому-то месиву в буфере.

Кто имеет опыт успешного использования этого инструмента? Поделитесь основными принципами работы с ним.
Andrew Lobanov to All (2020-12-07 07:50:36) [ссылка]