RSS
# МЕТАПАРСЕР 2.3
std.club
hugeping(ping,1) — All
2021-10-23 09:06:59


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

# МЕТАПАРСЕР 2.3

* исправление TakeAll (для частей объекта);
* экспериментальный режим mp.strict_mode;
* mp.inp_delim;
* исправление в mp:match;
* исправление в mp:post_action во время abort_cmd (snapshots);
* исправления в стандартной библиотеке.

# RE:INSTEAD 0.6

* перевод Urzi на английский (спасибо, canwolf!);
* новая игра "Краски октября:;
* Android: совместимость с настройкой rotate lock;
* исправление ошибок.

// Версия для F-Droid в пути!

# Сайт парсерного сопротивления https://parser.hugeping.ru

* обновлён МП;
* добавлены новые игры: Краски октября и перевод Urzi.

# instead-cli 1.6

* обновлён до новой версии МП.

# metaparser-js 2.3

* обновлён до новой версии МП.

#news

# Re: Аскетика в отладке
std.hugeping
vvs(ping,12) — hugeping
2021-10-19 13:56:56


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

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

# Re: Аскетика в отладке
std.hugeping
Andrew Lobanov(tavern,1) — vvs
2021-10-19 12:00:18


vvs> А вообще интересный вопрос: существует ли экспериментальная математика? Да, существует. И здесь находится что-то общее с физикой. Этим и Стивен Вольфрам увлёкся. Думает, что так откроет законы, управляющие вселенной. Занимается ли он отладкой вселенского компьютера, находясь внутри него? Интересная аналогия, да?

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

+++ Caesium/0.4 RC1

# Re: Аскетика в отладке
std.hugeping
Andrew Lobanov(tavern,1) — hugeping
2021-10-19 12:00:17


hugeping> В общем, я так и не понял, люблю я отладку или нет. Иногда мне кажется, что я люблю её больше, чем само программирование и что именно она влияет на моё мышление. Иногда, мне хочется чтобы это состояние стресса никогда не наступало. Но только оно обязательно наступит... Надеюсь, к этому времени я успею собраться. :)

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

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

+++ Caesium/0.4 RC1

# Re: Аскетика в отладке
std.hugeping
vvs(ping,12) — hugeping
2021-10-18 17:29:23


Ну надо же, как тесен мир. Я тоже пользовался SoftIce, а до него Periscope, ещё когда использовал DOS. И тоже был обескуражен, что в Линуксе нет ничего похожего. Правда сейчас и софтайса давно уже нет.

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

А вообще интересный вопрос: существует ли экспериментальная математика? Да, существует. И здесь находится что-то общее с физикой. Этим и Стивен Вольфрам увлёкся. Думает, что так откроет законы, управляющие вселенной. Занимается ли он отладкой вселенского компьютера, находясь внутри него? Интересная аналогия, да?

# Re: КРАСКИ ОКТЯБРЯ
std.hugeping.micro
hugeping(ping,1) — vvs
2021-10-18 17:15:39


vvs> А почему ты решил, что тебя сейчас читают меньше, чем "Компьютерру"? По крайней мере сюда ещё кто-то пишет, в отличие от неё :)

О, с такой стороны я ещё не заходил. :) Надо потом будет ещё pdf делать из лучших статей :)

# Re: КРАСКИ ОКТЯБРЯ
std.hugeping.micro
vvs(ping,12) — hugeping
2021-10-18 17:13:15


А почему ты решил, что тебя сейчас читают меньше, чем "Компьютерру"? По крайней мере сюда ещё кто-то пишет, в отличие от неё :)

# Re: КРАСКИ ОКТЯБРЯ
std.hugeping.micro
hugeping(ping,1) — vvs
2021-10-18 16:31:50


А я всё хотел написать статью в "КОМПЬЮТЕРРУ". Всё хотел, хотел.. пока она не закрылась. :)
Теперь вот "тренируюсь" на играх и статьях здесь. Правда, непонятно кому и зачем это нужно. Хотя, как терапия, нужно мне самому. :)

# Аскетика в отладке
std.hugeping
hugeping(ping,1) — All
2021-10-18 16:29:58


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

Когда-то, разрабатывая драйверы ещё в Windows, я пользовался SoftIce. Это был такой легендарный отладчик уровня ядра. Когда я перешёл на Linux, отладчиков такого уровня я не нашёл. Это был удар. Я не мог понять как вообще можно отлаживать код без отладчика? Но шло время и постепенно я стал замечать, что основное затруднение вызывают баги такого рода, когда отладчик никак не поможет... Обычно это проблемы синхронизации, гонок, или фундаментальные проблемы (когда архитектурные решения основывались на ложных предпосылках). И вот для такого рода ошибок, как оказалось, отладчик бесполезен. Нужно только проводить эксперименты и думать, пытаться сложить все наблюдения в одну картину.

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

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

- Такого не может быть!
- Это проблема в тесте!
- Может быть, виноваты битые провода?

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

Работает прямо противоположный подход. Я бы назвал его аскетическим. Есть факт, и этот факт прост -- в твоей программе баг. Она несовершенна. Ты не понимаешь сути происходящего, но реальность подчиняется логике. Ты просто не видишь всей картины. Нужно смириться, собирать факты (улики) и думать, думать, думать. Не можешь связать все улики воедино? Не стоит отчаиваться! Все баги, которые ты встречал до сих пор в своей в жизни, ты решил. Каждый раз объяснение находилось, и каждый раз оно было и очевидным, и неожиданным одновременно. Так будет и в этот раз, хотя сейчас в это сложно поверить. Просто думай.

Объяснение нашлось. Как именно это происходит, я не знаю. В какой-то момент просыпается интуиция и говорит в чём дело. Поэтому отладка для меня это всегда источник страха. Потому что я не понимаю до конца, как именно решаю проблему. Есть здесь что-то иррациональное. Я просто собираю факты, обсуждаю их с кем-нибудь, думаю и потом что-то происходит. Но я, как буд-то, не контролирую этот процесс. А вдруг, в этот раз не сработает?

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

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

# Re: КРАСКИ ОКТЯБРЯ
std.hugeping.micro
vvs(ping,12) — hugeping
2021-10-17 21:19:56


Круто, да? Оказывается, я ещё в детстве мечтал о собственной типографии, но уже давно об этом позабыл. Тогда это казалось невозможным. А вчера вдруг почему-то вспомнил и сообразил, что теперь c помощью компьютера та детская мечта уже исполнилась :)

# КРАСКИ ОКТЯБРЯ
std.hugeping.micro
hugeping(ping,1) — All
2021-10-17 18:28:15


В 2015 году я, тогда ещё на МЕТАПАРСЕР2, написал игру "КРАСКИ СЕНТЯБРЯ". А так как для проекта Re:instead есть пока только 10 игр, я решил её портировать на новый метапарсер. Думал сейчас быстренько перенесу и будет 11 игр... Ага. Сейчас.

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

Он -- ужасен. Нет, он правда УЖАСЕН! Из этого я сделал интересный вывод. Я меняюсь. Практически каждое предложение заставляло меня морщиться и ужасаться. Загадки, конечно, тоже спорные. Поэтому их я частично переделал. Ну и графика была такого низкого качества, что пришлось нарисовать новые картинки... В итоге, получилась вроде бы не новая игра, но и уже не совсем старая. И я решил ей дать другое название. Оригинал из 2015-го назывался "КРАСКИ СЕНТЯБРЯ". Не долго думая, заменил название на "КРАСКИ ОКТЯБРЯ".

Но, возвращаясь к тексту. Похоже, мне лучше не смотреть свои старые проекты. Иначе придётся переписывать всё. Я раньше думал, что такое у меня только с кодом...

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

Так что, после тестирования, буду выпускать новый Re:instead с этой игрой.

# Re: Редактор acme: пишем почтовый клиент
std.hugeping
vvs(ping,12) — hugeping
2021-10-14 13:25:21


Если кого-нибудь интересует практическая информация по языкам программирования, то проще начинать с википедии. Конкретно по Оберону там упоминается пару порталов на русском:

https://oberon.org/ru
https://oberoncore.ru/library/start

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

Lisp и Smalltalk - это отдельная песня. По ним я даже прочитал учебную литературу. Начинал с GNU Smalltalk, потом сразу перешёл на Squeak. Его пытался использовать на практике, в качестве рабочей системы. Пробовал разобраться с его виртуальной машиной, но меня отпугнула жутко запутанная система её построения. Еще у Squeak очень специфичная система управления версиями, в которой ведётся разработка. Поддержка Git там появилась только недавно и тоже довольно непривычная. Насколько я понял, Squeak больше ориентирован именно на конечного пользователя, чем Pharo. В своё время я постепенно переходил с Windows 98 на RedHat Linux несколько лет, когда использовал их параллельно и это был непростой опыт. На Smalltalk же перейти так и не удалось - не хватило мотивации и дальше отдельных экспериментов дело не пошло. Сейчас же я сижу на NixOS и там пока нет поддержки Squeek 5.x.

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

P.S. Кстати, Lean использует Emacs или VSCode в качестве интерфейса пользователя. В отличие от многих других языков, здесь это не просто удобство, а совершенно необходимая часть взаимодействия с языком.
P.S. Edited: 2021-10-14 14:43:45

# Re: Редактор acme: пишем почтовый клиент
std.hugeping
Andrew Lobanov(tavern,1) — hugeping
2021-10-14 05:45:53


Большое спасибо за отличную статью. Даже если я не начну использовать acme для почты, полезного и интересного почерпнул из неё не мало.

Вообще люблю твои статьи. Их и читать приятно и интересно, и зачастую полезно.

+++ Caesium/0.4 RC1

# Re: Редактор acme: пишем почтовый клиент
std.hugeping
Andrew Lobanov(tavern,1) — vvs
2021-10-14 05:29:39


vvs> Так ведь почему кому-то нравится Emacs? Причины могут быть разные, но я назову одну: Emacs - это интерфейс к elisp. Есть стремление всё делать средствами одного языка. А ACME - это ведь не язык, а чистый интерфейс и предполагает использование дополнительных средств. С точки зрения языка высокого уровня выгоднее вообще не использовать лишние концепции, такие как ОС.

Как емаксер со стажем, люблю емакс по куче причин. Во-первых, лисп. Я обожаю лисп и ничего не могу с этим поделать. Во-вторых: это классный текстовый интерфейс а-ля Genera только текстовый. А ещё его можно хачить хоть до посинения. Это отдельный кайф.

vvs> Есть такая тенденция языковой среды, когда начинается с языка и постепенно переходит к решению его средствами любых задач, включая построение интерфейсов. В Web - это, наверное, JavaScript из которого выросла целая платформа Node.js. То же самое наблюдается в Python, OCaml, Haskell и т.д.

Дайте программисту Тьюринг-полный язык и он рано или поздно напишет на нём всё.

vvs> Когда-то в Xerox из этого придумали целую парадигму ОО программирования в стиле Smalltalk (сильно отличающаяся от Simula 67/C++), где вся среда исполнения и интерфейс - это Smalltalk и пользователь меняет эту среду прямо из языка в реальном времени, избегая цикла компиляция-линкование-запуск. До него что-то похожее делали на Lisp, откуда и родился в итоге Emacs.

Smalltalk это была действительно крутая концепция. Правда я до сих пор не представляю как можно пользоваться огромной объектной штукой, когда всё мутабельно. Но я особо и не вникал. Так, по верхам pharo тыкал. Кстати, у меня он на старте чистого образа ругается, начиная с 8 версии. Досадно.

vvs> Концепции же Unix, в целом, довольно низкоуровневые. Кстати, идея ACME пришла из языка Oberon Н.Вирта.

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

+++ Caesium/0.4 RC1

# Re: 0 или 1
std.hugeping
Andrew Lobanov(tavern,1) — vvs
2021-10-14 05:29:38


hugeping>> Так что, действительно, есть "разделение". Это удивительно. И таких разделений масса.
vvs> Кстати, о проблеме существования. Математик говорит, что есть топологическое пространство. Обыватель говорит, что он его не видит, следовательно его не существует и это пустая болтовня. Лично я здесь и вижу то самое разделение на вульгарных материалистов и идеалистов. Понятно, что у вульгарного материалиста точка зрения часто не совпадает с идеалистами.
vvs> P.S. Почему говорю о "вульгарном" материализме? Потому что далеко не все материалисты основываются исключительно на личном эмпирическом опыте.

Я как материалист искал какую-либо базу или выкладки по теме, но так и не нашёл. Даже спрашивал, но везде встречалось только "это так, потому что это так" и ничего существенного. А это для меня сродни единорогам :)

# Re: Редактор acme: пишем почтовый клиент
std.hugeping
vvs(ping,12) — hugeping
2021-10-13 18:30:21


hugeping> Кстати, об одёжке. Уверен, у 99% людей пропадает интерес к acme как только они узнают, что в нём нет подстветки синтаксиса. Или, что в этом редакторе нельзя перемещаться по строкам вверх-вниз с помощью клавиатуры... Я зря это сейчас сказал, да? :)

Так ведь почему кому-то нравится Emacs? Причины могут быть разные, но я назову одну: Emacs - это интерфейс к elisp. Есть стремление всё делать средствами одного языка. А ACME - это ведь не язык, а чистый интерфейс и предполагает использование дополнительных средств. С точки зрения языка высокого уровня выгоднее вообще не использовать лишние концепции, такие как ОС.

Есть такая тенденция языковой среды, когда начинается с языка и постепенно переходит к решению его средствами любых задач, включая построение интерфейсов. В Web - это, наверное, JavaScript из которого выросла целая платформа Node.js. То же самое наблюдается в Python, OCaml, Haskell и т.д.

Когда-то в Xerox из этого придумали целую парадигму ОО программирования в стиле Smalltalk (сильно отличающаяся от Simula 67/C++), где вся среда исполнения и интерфейс - это Smalltalk и пользователь меняет эту среду прямо из языка в реальном времени, избегая цикла компиляция-линкование-запуск. До него что-то похожее делали на Lisp, откуда и родился в итоге Emacs.

Концепции же Unix, в целом, довольно низкоуровневые. Кстати, идея ACME пришла из языка Oberon Н.Вирта.

# ACME в Linux: пишем почтовый клиент
plan.9
hugeping(ping,1) — hugeping
2021-10-13 17:48:36


Написал статью о том, как писал фронтенд к почте для acme:
ii://S4sJA2iZYo83k8ZnpjEX

# Редактор acme: пишем почтовый клиент
std.hugeping
hugeping(ping,1) — All
2021-10-13 17:46:59


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

Идея acme очень простая, но при этом мощная. Это не редактор, это прослойка между Unix средой и человеком. Когда вы работаете с acme, "редактором" становится вся ОС. В начале это очень непривычно, но потом -- затягивает.

До последнего момента в качестве основного редактора я пользовался emacs и пользовался им как средой. То-есть, кроме собственно редактирования файлов я читал в нём почту (mu4e), общался в телеграм (telega.el), читал pdf ну и так далее...

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

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

# Синхронизация почты mbsync

Для синхронизации почты между Maildir на диске и imap на сервере нашлась отличная штука: isync (или mbsync). Замечательна она тем, что синхронизация работает в обе стороны. То-есть, удаляя письмо в Maildir вы тем самым удаляете его в imap mailbox. Ну и так далее. Таким образом, вы получаете единый срез почты на многих машинах и всё это прекрасным образом синхронизируется через imap.

Конфигурация выглядит примерно так:

IMAPAccount gmail
Host imap.gmail.com
User user@gmail.com
Pass password
SSLType IMAPS
CertificateFile /etc/ssl/certs/ca-certificates.crt

IMAPStore gmail-remote
UseUTF8Mailboxes yes
Account gmail

MaildirStore gmail-local
SubFolders Verbatim
Path ~/Mail/gmail/
Inbox ~/Mail/gmail/Inbox

Channel gmail
Far :gmail-remote:
Near :gmail-local:
Patterns * ![Gmail]* "[Gmail]/Sent Mail" "[Gmail]/9front"
Create Both
Expunge Both
SyncState *

Правда, mbsync из апстрима создаёт каталоги на диске в кодировке UTF-7. Но в aur есть пакет с поддержкой UTF-8. Обратите внимание на UseUTF8Mailboxes в конфиге. Для других Linux можно собрать версию отсюда: https://sourceforge.net/u/shashurup/isync/ci/utf8-mailboxes/tree/

После того, как всё настроили, можно поставить задачу на таймер в systemd или cron и всё.

# Индексация

Не так давно я открыл для себя mu. Mu позволяет индексировать почту в Maildir и дальше делать выборку, показ писем, распаковку аттачей и так далее. И всё это очень быстро. Вместе с mu идёт почтовый клиент для emacs -- mu4e.

Для создания базы просто делаем что-то вроде:

$ mu init --my-address='ваш емейл'

И потом периодически делаем индексацию:

$ mu index

# Идея почтового клиента на acme

Mu -- это почти полноценный клиент, по крайней мере, для чтения почты. Практически всё можно сделать из командной строки. Например, вывести последние сообщения:

$ mu find --sortfield d --reverse "" | head -n10

Чтобы просмотреть сообщение, вы должны указать путь к конкретному файлу в Maildir. Например:

mu view `mu find "" --sortfield d --reverse -f l | head -n1`

Конечно, пользоваться в таком виде почтой малореально, но возможностей для скриптования -- масса. И когда я это понял, то решил написать свой фронтенд к mu для acme.

# Приложение на acme

Acme с помощью файловой системы предоставляет доступ к некоторым функциям по работе с своими окнами, которых оказывается достаточно для написания "приложений". Если вы работаете в Plan9, то файловая система доступна всегда. Если же вы запускаете acme в рамках plan9port, то для доступа к ней можно:

1. Использовать утилиту 9p
2. Подмонтировать ФС через fuse: 9pfuse

Допустим, у нас есть скрипт hello, который доступен по PATH. Если запустить acme и вписать hello в заголовок главного окна (там где Newcol Kill Putall Dump..), а потом нажать на hello 2-й кнопкой мыши, то скрипт запустится.

Когда скрипт запускается в рамках acme, то переменная окружения winid содержит номер текущего окна или 0, если нет никаких открытых окон, кроме главного.

Для работы с файловой системы acme пока будем пользоваться 9p.

#!/bin/sh
9p ls acme
9p read acme acme/$winid/tag

Запустите этот вариант скрипта и увидите в отдельном окне корень ФС acme и список пунктов меню вашего текущего активного окна (если такое есть).

То же самое можно сделать с fuse:

#!/bin/sh
mnt=`mktemp -d /tmp/acmeXXXX`
9pfuse `namespace`/acme $mnt

ls $mnt
cat $mnt/$winid/tag

fusermount -u "$mnt" && rmdir "$mnt"

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

В man 4 acme (из plan9port) описана файловая система acme. Я не буду здесь пересказывать эту информацию, но отмечу только некоторые моменты с которыми столкнулся.

1. По идее, мы можем считать позицию селектора (курсор + выделение) с помощью записи в ctl строки addr=dot и и последующего чтения из addr. Однако, при открытии addr он каждый раз ресетится. Таким образом, с помощью 9p вы не сможете получить текущую позицию курсора, так как это две операции: запись addr=dot и чтение addr. А нужно, открыть (и не закрывать addr), потом записать addr=dot, потом прочитать addr. Это можно проделать при использовании 9pfuse. Например:

pos=`{ echo 'addr=dot' >> $mnt/$winid/ctl; cat; }<$mnt/$winid/addr`

2. Если добавлять в окно текст (в data), содержащий в себе переводы строк, то просто так читать из event построчно не получится. Потому что первая строка будет содержать событие, а следующая -- уже просто кусок текста и так далее. Да, число символов текстового блока тоже при этом приходит, но писать обработку такого протокола на shell неудобно. Поэтому я добавлял текст только построчно.

# Версия на shell

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

#!/bin/sh
mail_view()
{
	mu view "$MAILDIR/$2" --nocolor | 9p write acme/$1/data
	echo -n 'clean' | 9p write acme/$1/ctl
	toline $1 0
}

mail_ls()
{
	mu find --nocolor -s d --reverse -f "l|d|f|s" "" | \
		/usr/bin/sed -e 's|'$MAILDIR'/\([^ ]\+\)|\1|g' | \
		head -n 100 | 9p write acme/$1/data
	echo -n 'clean' | 9p write acme/$1/ctl
	toline $1 0
}

toline()
{
	echo -n "$2" | 9p write acme/$1/addr
	echo -n 'dot=addr' | 9p write acme/$1/ctl
	echo -n 'show' | 9p write acme/$1/ctl
}

if [ -z "$winid" ]; then
	exit 1
fi

# создаём новое окно
winid=`9p read acme/new/ctl | awk '{ print $1 }'`
# показываем 100 сообщений
mail_ls $winid
# добавляем "кнопку" Get
echo -n "Get" | 9p write acme/$winid/tag

# цикл обработки событий
9p read acme/$winid/event | while read a b c d e; do
	if echo "$a" | grep -q -e '^Mx' 2>/dev/null; then # mx
		if [ "$e" = "Get" ]; then
			mail_ls $winid
			continue
		fi
	elif echo "$a" | grep -q -e '^ML' 2>/dev/null; then
		if [ -f "$MAILDIR/$e" ]; then
			msgid=`9p read acme/new/ctl | awk '{ print $1 }'`
			mail_view $msgid $e
			continue
		fi
	fi
	echo "$a $b" | 9p write acme/$winid/event 2>/dev/null
done

Кстати, этот текст был вставлен в статью так:

- ввел в tagline <cat email;
- выделил этот текст;
- нажал 2ю кнопку мыши.

Обратите внимание на цикл обработки событий. Мы просто ждём их, читая из event и реагируем нужным образом. Или снова перечитываем сообщения, или открываем текст нужного сообщения в новом окне.

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

# Версия на Lua

То, что в итоге получилось, можно посмотреть тут: https://github.com/gl00my/plan9hacks/blob/master/linux/mu-query

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

1. Для отправки почты используется msmtp.

defaults
auth on
tls on
logfile ~/.msmtp.log

account gmail
host smtp.gmail.com
port 587
tls_certcheck off
from user@gmail.com
user user@gmail.com
password password

account default : gmail

2. mu-query умеет показывать запросы mu. Например, вводим в tagline: mu-query from:ivanov, выделяем, нажимаем 2-ю кнопку мыши и видим нужный результат. Если не указывать запрос, показываются последние 100 сообщений. Можно листать по 100 сообщений командой Page.

3. При просмотре сообщения все аттачи распаковываются во временную директорию. Например, если я вижу, что это html письмо, я могу дописать firefox file:/// перед путём к файлу прямо в теле сообщения и нажать.

4. На данный момент поддерживается только Reply, составление нового сообщения, удаление и пометка сообщений как Seen. Forward и добавлений аттачей нет. Это несложно добавить, но пока я не стал этого делать. Может быть, будет третья итерация уже на go. :)

5. Чтобы удалить пачку сообщений или пометить их как прочитанные нужно выделить все нужные сообщения и нажать на соответствующую "кнопку".

На данный момент я пользуюсь mu-query на постоянной основе и очень доволен. Мне действительно это удобно. И главное, я понял что относительно просто могу писать под себя интерфейсы. Например, я уже задумываюсь о команде git-log.

# Опыт acme

Если говорить о практической пользе, то кроме "персонализации" инструментария я получаю с acme тот же эффект, что получаю от Plan9. У меня разгружается сознание. Когда я работаю в emacs, мой мозг перегружен информацией о множестве клавиатурных комбинаций и конкретных рецептах. Если брать другие редакторы, то в целом, ситуация повторяется. Acme в этом плане не похож ни на один из них. Его "базис" очень простой, единообразный и при этом всё ещё мощный. Настоящий Unix инструмент!

Когда я первый раз увидел acme, я не мог даже себе представить, что в _этом_ можно работать. Что же, ещё один повод напомнить себе, что встречать по одёжке не стоит.

Кстати, об одёжке. Уверен, у 99% людей пропадает интерес к acme как только они узнают, что в нём нет подстветки синтаксиса. Или, что в этом редакторе нельзя перемещаться по строкам вверх-вниз с помощью клавиатуры... Я зря это сейчас сказал, да? :)

# Re: 0 или 1
std.hugeping
vvs(ping,12) — hugeping
2021-10-13 14:41:57


hugeping> Так что, действительно, есть "разделение". Это удивительно. И таких разделений масса.

Кстати, о проблеме существования. Математик говорит, что есть топологическое пространство. Обыватель говорит, что он его не видит, следовательно его не существует и это пустая болтовня. Лично я здесь и вижу то самое разделение на вульгарных материалистов и идеалистов. Понятно, что у вульгарного материалиста точка зрения часто не совпадает с идеалистами.

P.S. Почему говорю о "вульгарном" материализме? Потому что далеко не все материалисты основываются исключительно на личном эмпирическом опыте.

# Re: Про собаку, мячик и сливную решётку
std.hugeping.micro
vvs(ping,12) — hugeping
2021-10-13 14:17:50


hugeping> Да в том-то и дело, что не знаю. :) Может быть, просто жалок? :) Шучу. Не знаю. Много каких-то ассоциативных образов, которые подсознательно действуют.

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

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

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

# Re: Про собаку, мячик и сливную решётку
std.hugeping.micro
hugeping(ping,1) — boscholeg
2021-10-13 11:03:36


boscholeg> Намекаешь на то, что тебя тащат куда-то против твоей воли? Или на беспочвенность своих страхов и сомнений?

Да в том-то и дело, что не знаю. :) Может быть, просто жалок? :) Шучу. Не знаю. Много каких-то ассоциативных образов, которые подсознательно действуют.

# Re: Про собаку, мячик и сливную решётку
std.hugeping.micro
boscholeg(ping,5) — hugeping
2021-10-13 09:41:14


hugeping> Может быть, я тоже как эта собака?
Намекаешь на то, что тебя тащат куда-то против твоей воли? Или на беспочвенность своих страхов и сомнений?

# Про собаку, мячик и сливную решётку
std.hugeping.micro
hugeping(ping,1) — All
2021-10-13 09:30:56


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

-- Ну не бойся, давай. Не бойся.

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

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

Я не знаю почему, но этот эпизод прямо врезался в память, и я всё время к нему возвращаюсь.

Почему сливная решётка стала для пса непреодолимой проблемой? Травма, ассоциация, что-то ещё? Помогал ли мячик в зубах бульдога преодолеть страх? Что он чувствовал, когда хозяин волок его через "страшное" препятствие?

Может быть, я тоже как эта собака?

# Re: 0 или 1
std.hugeping
hugeping(ping,1) — Andrew Lobanov
2021-10-13 08:08:49


AL> Саму проблему я примерно понял, но не понял откуда вообще берётся этот вопрос.

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

> Некоторые говорят, что сознание — это «иллюзия», но я даже плохо понимаю, что это могло бы означать. Мне кажется, что наша уверенность в существовании сознательного опыта превышает нашу уверенность в существовании чего-либо еще в мире. Временами я изо всех сил пытался убедить себя в том, что в действительности тут ничего нет, что сознательный опыт пуст, есть всего лишь иллюзия. В таком представлении есть нечто соблазнительное, и философы разных эпох пытались обыгрывать его, но в итоге подобная картина совершенно неудовлетворительна.

...

> В этой связи можно было бы говорить о Великом Разделении, имеющемся в области исследований сознания. Если вы считаете, что решение «легких» проблем объясняет все, что нуждается в объяснении, то у вас получается один тип теории; если вы считаете, что кроме них есть и дополнительная «трудная» проблема, то у вас будет другой ее тип. В какой-то момент общезначимые аргументы становятся затруднительны, и обсуждения зачастую сводятся к ударам по столу.

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

> Не исключено, что нам надо попросту смириться с этим базовым разделением.

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

Так что, действительно, есть "разделение". Это удивительно. И таких разделений масса.

# Re: 0 или 1
std.hugeping
Andrew Lobanov(tavern,1) — hugeping
2021-10-13 06:31:59


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

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

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

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

# Re: 0 или 1
std.hugeping
vvs(ping,12) — hugeping
2021-10-12 14:38:16


hugeping> Вот-вот... ;) Скорее всего на разных. Особенно, когда речь заходит об абстрактных понятиях. И дело тут мне кажется не только в языке, но и в том, как ощущаются понятия (или не ощущаются вообще).

Если ещё не читал, рекомендую книгу Д.Хофштадтера "Гёдель, Эшер, Бах: эта бесконечная гирлянда".

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

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

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

P.S. Ещё говорят, что Билл Гейтс как-то сказал, что тот, кто полностью прочёл "Искусство программирования для ЭВМ" Д.Кнута может смело присылать ему своё резюме :)

# Re: 0 или 1
std.hugeping
hugeping(ping,1) — vvs
2021-10-12 11:15:18


vvs> Иногда даже возникает сомнение: а действительно ли многие люди говорят на одном со мной языке?

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

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

# Re: 0 или 1
std.hugeping
vvs(ping,12) — hugeping
2021-10-11 14:03:21


>> - Смотри, я тут игру написал Color Lines.
>> - Неплохо. Только цвета шариков мне не нравятся.
>> - А мне, кажется, красиво.
>> - Нет, слишком яркие.

hugeping> (сценарий 0) Я подобрал плохие цвета. -> Они мне нравятся, значит, у меня нет вкуса. -> Зря я написал игру.

hugeping> (сценарий 1) Цвета мне нравятся, а оппоненту -- нет. -> У оппонента нет вкуса, не надо учитывать его мнение. -> Зря я его спросил.

Навеяло. Вариант номер три:

— Правда ли, что шахматист Петросян выиграл в лотерею тысячу рублей?
— Правда, только не шахматист Петросян, а футболист «Арарата» Акопян, и не тысячу, а десять тысяч, и не рублей, а долларов, и не в лотерею, а в карты, и не выиграл, а проиграл.

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

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

P.S. Смешной момент, возникший при чтении этого учебника - что эта логика понятна только тем, кто читает учебники и бесполезна всем остальным :)

# Re: Социальные эксперименты и работа
pipe.2032
Andrew Lobanov(tavern,1) — vvs
2021-10-11 05:50:31


vit01>> На момент создания этого поста эксперимент с молчанием продолжается неделю с лишним, и никто из русскоязычных друзей/знакомых мне не написал. Один англоязычный товарищ написал через 6 дней ожидания. Скорее всего, публикация этого поста несколько смажет конечный результат, но, тем не менее, я подсчитал приблизительное количество времени, на которое можно исчезнуть из интернета, чтобы этого никто не заметил.
vvs> Тут пахнет чем-то нехорошим из теории игр. Если каждый начнёт проводить такой эксперимент, то всякое общение скорее всего прекратится.

А можно уточнить какая часть этого раздела математики нехорошая? Я с ней мало знаком и вообще концепция нехорошей математики не приходила мне в голову.

# Re: Социальные эксперименты и работа
pipe.2032
vit01(mira, 1) — btimofeev
2021-10-10 14:40:15


vit01>> Но в армию меня точно не возьмут, в этом уверен на 100%.

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

Блин, тебе реально не повезло.

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

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

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

+++ Отправлено через IDEC Mobile
+++ GNU/Linux, Android, physics, MLP:FIM

# Re: Социальные эксперименты и работа
pipe.2032
btimofeev(tavern,13) — vit01
2021-10-10 05:48:50


vit01> Но в армию меня точно не возьмут, в этом уверен на 100%.

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

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

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

# Re: Социальные эксперименты и работа
pipe.2032
vvs(ping,12) — vit01
2021-10-09 17:13:03


vit01> Вполне вероятно, ты редко пишешь первый, потому что у тебя достаточно друзей в реальном мире, а не в сети, с которыми приятно общаться. Возможно, есть жена/девушка и.т.д.

vit01> Тогда у тебя просто нет потребности кому-то навязываться, лишний раз переводить внимание на сетевое общение.

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

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

# Re: Социальные эксперименты и работа
pipe.2032
vit01(mira, 1) — vvs
2021-10-09 15:55:17


vvs> vit01> На момент создания этого поста эксперимент с молчанием продолжается неделю с лишним, и никто из русскоязычных друзей/знакомых мне не написал. Один англоязычный товарищ написал через 6 дней ожидания. Скорее всего, публикация этого поста несколько смажет конечный результат, но, тем не менее, я подсчитал приблизительное количество времени, на которое можно исчезнуть из интернета, чтобы этого никто не заметил.

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

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

В целом мне сейчас трудно мыслить адекватно

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

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

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

+++ Отправлено через IDEC Mobile
+++ GNU/Linux, Android, physics, MLP:FIM

# Re: Социальные эксперименты и работа
pipe.2032
vvs(ping,12) — vit01
2021-10-09 13:41:13


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

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

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

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

# Социальные эксперименты и работа
pipe.2032
vit01(mira, 1) — All
2021-10-09 07:20:35


Перестал всем писать, отчитываюсь по учёбе и работе.


## Эксперимент над собой и окружающими

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

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

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

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

Минусов подобной авантюры можно перечислить сразу несколько:

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

Тем не менее, мне кажется, что польза от желания узнать правду сравнима с вышеперечисленными недостатками подхода. Грустновато получается, но хочу сказать спасибо тем, кто меня "терпел" ранее.

## Теперь об учёбе и работе

В магистратуре мы изучаем следующие предметы:

* Методы математической физики
* Физика плазмы
* Плазменная астрофизика
* Общая астрофизика
* История и методология физики

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

Расписание сейчас перестроили так, что мы учимся с понедельника по пятницу. Это было сделано, чтобы мы учились не по 4 пары в день, а меньше, и чтобы было проще совмещать учёбу с работой. Получается, с утра прихожу и учусь, а после учёбы остаюсь и работаю.

## На меня опять наехал военкомат

Даже несмотря на то, что поступил на учёбу и получил отсрочку от армии, категория годности у меня стоит "временно не годен". А это значит, что военкомату плевать на мою отсрочку, и они меня могут постоянно посылать по врачам на разные обследования. Что они и делают. Поэтому есть несколько вариантов развития событий:

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

Медицинские обследования для военкомата и прохождение медкомиссии очень долгие и утомительные. Это отъедает время и от учёбы, и от работы, привносит в жизнь огромное количество стресса и вселяет неопределённость. Будем надеяться, что в скором времени эта хрень закончится. Но в армию меня точно не возьмут, в этом уверен на 100%.

## Вторая решётка Сибирского Радиогелиографа

Перейдём к хорошим новостям. Отдел радиоастрофизики достраивает радиотелескоп в обсерватории Бадары, и не так давно получилось запустить в тестовом режиме решётку 6-12 ГГц на более чем 200 антенн. Хороших картинок пока не будет, но рано или поздно всё отправлю.

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

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

## Успехи в работе про гирорезонансные источники на 34 ГГц

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

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

Яркостная температура здесь порядка 150 000 К, размеры источника малы по сравнению с диаграммой направленности радиотелескопа. Среди найденных результатов есть ещё интересные события, пока думаю над наиболее эффективной их визуализацией.

## МГД-моделирование

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

Объявляем переменные и записываем уравнение:

import sympy as s
import numpy as np

k, a, Ci, C0, Vph, w, x, y, t = s.symbols("k a C_{\infty} C_0 V_{ph} omega x y t")
rho, rho_inf, rho_m = s.symbols("\\rho \\rho_{\infty} \\rho_{m}")

eq1 = s.Eq(k * a / C0**2 * (Vph**2 - C0**2) - 2 / k / a,  3 / Ci * s.sqrt(Ci**2 - Vph**2))
eq1_omega = eq1.subs(Vph, w/k)
eq1_omega

$$- \frac{2}{a k} + \frac{a k \left(- C_{0}^{2} + \frac{\omega^{2}}{k^{2}}\right)}{C_{0}^{2}} = \frac{3 \sqrt{C_{\infty}^{2} - \frac{\omega^{2}}{k^{2}}}}{C_{\infty}}$$

Возводим обе части уравнения в квадрат и записываем в формате полинома:

eq2_omega = s.Eq((eq1_omega.lhs**2).expand(), (eq1_omega.rhs**2).expand())
equation_poly = eq2_omega.as_poly(w)
equation_poly

$$\operatorname{Poly}{\left( \frac{a^{2}}{C_{0}^{4} k^{2}} \omega^{4} + \frac{9 C_{0}^{2} - 2 C_{\infty}^{2} a^{2} k^{2} - 4 C_{\infty}^{2}}{C_{0}^{2} C_{\infty}^{2} k^{2}} \omega^{2} + \frac{a^{4} k^{4} - 5 a^{2} k^{2} + 4}{a^{2} k^{2}} \right)}$$

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

solutions = s.solve(equation_poly, w)
solutions_simplified = []
for sol in solutions:
    solutions_simplified.append(sol.subs(Ci, (rho_m + 1) * C0))
    
# некоторые шаги были на этом моменте пропущены

solutions_k = []
for sol in solutions_simplified:
    solutions_k.append(sol.subs(C0, C0_computed).subs(rho_m, rho_m_computed).subs(a, 1))
    display(solutions_k[-1])
    
solutions_np = [s.lambdify(k, sol, modules="numpy") for sol in solutions_k]

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

Функция `sympy.lambdify` достаточно важная для вычислений, потому что она позволяет сконвертировать символьное представление sympy в питоновский код с использованием numpy, который будет быстро выполняться.

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

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

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

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

Из полезных функций в sympy:

* `s.print_fcode(expr), s.print_python(expr)` и подобные ему позволяют быстро получить код на Fortran и Python из полученных выражений
* `s.print_latex(expr)` выдаёт LaTeX разметку, чтобы быстро вставить результат в статью
* `expr.evalf()` вычисляет все константы в виде чисел и проделывают под капотом арифметику, чтобы упростить вид выражения

Всё остальное, конечно же, искать [в документации]( https://docs.sympy.org/latest/index.html )

## Контейнеры Singularity

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

Система работы с контейнерами Singularity [доступна]( https://repology.org/project/singularity-container/versions ) на большинстве дистрибутивов GNU/Linux и не только. Она позволяет работать с read-only SquashFS образами операционок, либо с chroot-окружениями в виде директорий (sandbox в их терминологии). Различные виды образов можно автоматически пересобирать, запаковывать, распаковывать и даже превращать в статические исполняемые файлы-приложения.

Найти подходящий для работы контейнер с любой нужной операционкой и софтом можно на [DockerHub]( https://hub.docker.com/ ). Кроме интеграции с каталогом Docker у Singularity есть возможность собирать образы из файлов-рецептов и из своего собственного каталога.

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

$ singularity build --sandbox ./archtest docker://archlinux:latest

В каталоге `archtest` после её выполнения создастся дерево файлов Archlinux, которое по факту уже готово для работы. Перед тем как заходить внутрь в командную оболочку, желательно настроить переменные окружения, чтобы не было проблем с запуском софта. В каталоге `archtest/.singularity.d` содержатся скрипты, которые выполняются перед входом внутрь песочницы. Рекомендую для начала поправить файл `archtest/.singularity.d/env/10-docker2singularity.sh` и установить там переменные `PATH` и `LANG`:

#!/bin/sh
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/user/.local/bin"

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

Самое удобное решение - создать в файле `.bashrc` алиасы, где `si` - это вход в обычном режиме, а `si_root` - вход в fakeroot-режим, в котором можно запускать пакетный менеджер, править конфиги в /etc и делать остальные улучшательства. Параметр `-B` отвечает за проброс внутрь контейнера других каталогов кроме домашнего.

alias si='singularity shell -B /data,/usr/local/bin ~/archtest'
alias si_root='singularity shell -f --writable ~/archtest'

Про все остальные крутые штуки можно прочитать в [документации]( https://sylabs.io/docs/ ) на их сайте. По моим впечатлениям Singularity имеет гораздо больше полезных фич, чем аскетичный LXC или контейнеры systemd, но при этом он гораздо проще в работе и в настройке, чем громоздкий и переусложнённый Docker.

## В следующих постах

3D-моделирование плазмы, болезненная миграция сервера с MySQL на PostgreSQL и ожидаемый кинообзор (можете угадать, на что)

Этот пост в блоге: https://blog.alicorn.tk/posts/anti-social-work.html

# Re: Дюна
pipe.2032
Andrew Lobanov(tavern,1) — boscholeg
2021-10-06 17:55:04


boscholeg> Удивительное дело. Слышу множество одобрительных отзывов об этом фильме. Неужто удалось снять фильм без ЛГБТ и БЛМ повестки?
boscholeg> Было бы здорово.

Если сильно захотеть, то найдёшь и то и другое. Даже в "Ну, погоди!" :)

Мне в первую очередь понравилось достаточно бережное отношение к оригиналу. Ну и просто потрясающая картинка. Я не про качество, а про красоту происходящего на экране.

boscholeg> Тоже хочу сходить с женой и дочкой.
boscholeg> Стоит с собой брать девочку подростка?

Ну если 12+ и если не сильно впичатлительная, то почему нет? Страшного ничего нет особо (кроме Шаи-Хулуда и Владимира Харконена). Но вот сцены убийства людей есть. Впрочем без подробностей и без особой жестокости. Если я правильно помню, конечно. Мог уже подзабыть.

Вообще, Дюна достаточно сложное произведение для подростка :)

# Re: Деды и творчество
std.hugeping.micro
vvs(ping,12) — boscholeg
2021-10-06 16:04:07


boscholeg> Ну вот я уже двоюродный дед. А толку то?
boscholeg> Ни бороды, ни ума ни фантазии.

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

# Re: Деды и творчество
std.hugeping.micro
boscholeg(ping,5) — vvs
2021-10-06 14:10:08


vvs> Внуки есть? Тогда не дед ;)

Ну вот я уже двоюродный дед. А толку то?
Ни бороды, ни ума ни фантазии.

# Re: Дюна
pipe.2032
boscholeg(ping,5) — Andrew Lobanov
2021-10-06 14:06:52


Удивительное дело. Слышу множество одобрительных отзывов об этом фильме. Неужто удалось снять фильм без ЛГБТ и БЛМ повестки?
Было бы здорово.
Тоже хочу сходить с женой и дочкой.
Стоит с собой брать девочку подростка?

# Re: 0 или 1
std.hugeping
vvs(ping,12) — hugeping
2021-10-04 23:27:32


hugeping> Форум я "дропнул" и если бы не spline, его бы не было сейчас вообще. Я модерировал его тоже не лучшим образом и тоже, скорее в авторитарном режиме (что мне не нравилось). В поддержке репозитория я тоже себя дескредитировал. Так что это spline сейчас разгребает мои долги.

Самобичевание, конечно, делает честь :) Но не стоит преувеличивать свои грехи.

hugeping> Все мы имеем свои особенности. Я привык к резкости и kerber и spline и как то делаю поправку на неё. Меня могут тоже послать, но и я в принципе могу это сделать. Так и живём.

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

> Но, в общем, прими мои извинения за ситуацию.

Если тебя это волнует, то это лишнее. Я не вижу здесь твоей активной вины. А за косвенные последствия может нести ответственность только всезнающий Бог.

P.S. В жизни мне себя сдерживать гораздо сложнее. Поэтому пожелаю всем нам побольше сдержанности :)

# Re: 0 или 1
std.hugeping
hugeping(ping,1) — vvs
2021-10-04 22:41:23


vvs> Честно говоря, для меня эта тема была уже закрыта. Я высказал здесь своё мнение только чтобы до конца объяснить своё отношение и во избежание обвинений в предвзятости меня самого. А вот в предвзятой обстановке на форуме я такой возможности просто не вижу.

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

Все мы имеем свои особенности. Я привык к резкости и kerber и spline и как то делаю поправку на неё. Меня могут тоже послать, но и я в принципе могу это сделать. Так и живём. Но, в общем, прими мои извинения за ситуацию. Можешь писать здесь спокойно. Если дойдёт до конфликтов и тут, я решу проблему на своей площадке.

# Re: 0 или 1
std.hugeping
vvs(ping,12) — hugeping
2021-10-04 20:53:19


hugeping> Агрессивное общение spline/kerber меня печалит особенно, потому что это мои сетевые друзья. И я знаю этих людей с хорошей стороны, но агрессивно-прямая манера поведения -- конечно многих пугает.

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

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

Что таки не отменяет сведения всех претензий к тому, что есть люди полезные, а с бесполезными у нас разговор короткий. "Друзьям - всё, врагам - закон" (приписывается Франсиско Франко). Подозреваю, что не я один был жертвой такого беспредела. И действительно ли все пользователи уходили с форума только из-за отсутствия аудитории? Надо спросить у них самих. И это я вовсе не занимаюсь бесполезным шантажом, а лишь обращаю внимание, что когда кого-то гонят с форума, то справедливо делать это, по крайней мере, на основе объективного равного выбора. Однако, спорить тут с предвзятым мнением и круговой порукой - совершенно бесполезное занятие.

P.S. И я так и не понял, что именно криминального в том, чтобы задать невинный вопрос в специально отведённом для этого разделе? Даже если кому-то этот вопрос и кажется глупым - это вовсе не повод для оскорблений, можно ведь и просто промолчать. И я нахожу нелепыми обвинения в нарушении каких-то "несуществующих" правил (о чтении документации). Плюс какие-то дикие претензии за то, что вопрос задан не с целью написания "полезного" кода, а из чистого любопытства. И вообще, вызывает оторопь неадекватность реакции администрации форума на этот "проступок". Но это дело совести. Лично у меня совесть чиста и вступать в ненужные пререкания я ни с кем не собираюсь.

P.P.S. Заранее приношу извинения за этот поток мыслей. И давайте уже закроем эту тему совсем. Форумов всяких много, а свои нервы дороже. И вообще, призываю всегда общаться без ненужной агрессивности, тогда и проблем меньше будет для всех.

# Re: 0 или 1
std.hugeping
Andrew Lobanov(tavern,1) — vvs
2021-10-04 17:43:40


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

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

Ведь именно такое поведение ты считаешь наиболее приемлемым и правильным. Я тебя правильно понимаю? Или есть нюансы? Или я не понимаю и это другое?

# Re: 0 или 1
std.hugeping
vvs(ping,12) — hugeping
2021-10-04 13:38:34


hugeping> Общение по сети действует как алкоголь - ослабляя сдерживающие факторы.

Стоит напомнить, что в правовом поле алкоголь является не оправданием, а усугубляющим фактором.

hugeping> Так вот, мне кажется, есть люди, которые не напрягаются и совсем "отпускают" себя в сети. Я сейчас не оправдываю хамство, но описываю тот факт, что для большой части развязанное поведение стало "нормой". К сожалению. Все эти троллинги, мемчики -- работают в одну сторону. Народ становится более толстокожим, высказывается максимально резко, надеясь что это пробьёт оборону противника, судя всех людей по себе.

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

hugeping> Агрессивное общение spline/kerber меня печалит особенно, потому что это мои сетевые друзья. И я знаю этих людей с хорошей стороны, но агрессивно-прямая манера поведения -- конечно многих пугает.

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

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

hugeping> P.S. Можно ещё Столлмана вспомнить. :)

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

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

# Re: 0 или 1
std.hugeping
hugeping(ping,1) — vvs
2021-10-04 08:41:28


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

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

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

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

P.S. Можно ещё Столлмана вспомнить. :)

# Re:instead 0.5 с поддержкой tts
std.club
hugeping(ping,1) — All
2021-10-02 10:22:07


Выпустил Re:instead 0.5 с поддержкой голосового вывода и улучшениями в Android сборке.

* поддержка голосового вывода на: Linux, Windows и Android.
* !tts команда;
* функции доступности в Android версии;
* лучшая поддержка виртуальных клавиатур Android;
* исправления ошибок.

Этот релиз не состоялся бы без помощи Nikita Tseykovets. Спасибо!

Как обычно, скачать версии для Windows/Linux и Android можно с github: https://github.com/instead-hub/reinstead

Версия в F-Droid будет через несколько дней.

#news

# Дюна
pipe.2032
Andrew Lobanov(tavern,1) — All
2021-09-24 12:46:23


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

# Re: 0 или 1
std.hugeping
vvs(ping,12) — hugeping
2021-09-23 14:22:11


hugeping> Моя заметка в основном о том, что одно дело -- те вещи, которые мы создаём (и, поэтому, осознаём и подчиняем их логике), а другое дело -- мы сами и другие люди, восприятие мира. Жизнь не редуцируется. В лучшем случае -- она диалектична.

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

> Законы, которые работают в логике -- работают не везде. Попытка обосновать всю нашу жизнь логически, научно или как-то ещё уложить в непротиворечивую "теорию" неизбежно будут содержать сингулярности. В нас есть (как в творении Божьем) бесконечность внутри. Тот же пример рассуждения: я смертен значит меня не существует, при кажущемся парадоксе мне соверешенно (как идеалисту) понятен. Если наше существование не утверждено Богом -- нас просто не существует.

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

hugeping> Это "философская" часть заметки, которая присутствует в ней неявно. А явно -- просто бытовая проблема, когда твоя "логичность" доводит до нервных срывов и конфликтов, потому что доведённая до абсолюта -- она в жизни только мешает.

Да, верно. Если присутствует какая-то незавершённость, то она меня будет постоянно беспокоить. В жизни много чего мешает, но и помогает тоже.

hugeping> Но я ни с чем не спорю, просто пояснил другими словами свою мысль.

А я не вижу ничего плохого в спорах, если они о разных точках зрения - это обогащает наш жизненный опыт.

P.S. Совсем другое дело - проявление неуважения к собеседнику, чего я в людях не выношу. Моё определение подлости: обращение с людьми не по правилам, общим для всех порядочных людей, а по критерию личной пользы и положению в какой-то иерархии, да ещё и хамство и притворство. И это моя мораль, к которой у меня отношение исключительно чёрно-белое и это меня не тяготит.
P.S. Edited: 2021-09-23 14:23:05

# Re: 0 или 1
std.hugeping
hugeping(ping,1) — vvs
2021-09-23 13:41:42


vvs> Иными словами, я хочу сказать, что человек - активный преобразователь мира, а не просто сторонний наблюдатель.

Моя заметка в основном о том, что одно дело -- те вещи, которые мы создаём (и, поэтому, осознаём и подчиняем их логике), а другое дело -- мы сами и другие люди, восприятие мира. Жизнь не редуцируется. В лучшем случае -- она диалектична. Законы, которые работают в логике -- работают не везде. Попытка обосновать всю нашу жизнь логически, научно или как-то ещё уложить в непротиворечивую "теорию" неизбежно будут содержать сингулярности. В нас есть (как в творении Божьем) бесконечность внутри. Тот же пример рассуждения: я смертен значит меня не существует, при кажущемся парадоксе мне соверешенно (как идеалисту) понятен. Если наше существование не утверждено Богом -- нас просто не существует.

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

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

# Re: 0 или 1
std.hugeping
vvs(ping,12) — hugeping
2021-09-23 13:21:32


hugeping> Программа -- мир, который создал программист и полностью его контролирует. Выполнение программы в глубине своей -- детерминированная шарманка. Возможно, именно отсутствие противоречий и привлекает программистов в профессию. Но жизнь -- нередуцируема и противоречива по своей сути. Попытка действовать в реальном мире так же, как ты привык работать в виртуальном, неизбежно приводит к конфликту. Попытка решения его в виде ответа 0 или 1 приводит к парадоксальным и опасным состояниям. В лучшем случае -- просто неадекватным.

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

Иными словами, я хочу сказать, что человек - активный преобразователь мира, а не просто сторонний наблюдатель. Так меня воспитали и ничего тут изменить нельзя, да я и не вижу такой необходимости. Кстати, библия утверждает, что мы созданы по образу и подобию Божию. Не в этом ли дело? :)
P.S. Edited: 2021-09-23 13:24:12

# Re: 0 или 1
std.hugeping
vvs(ping,12) — hugeping
2021-09-22 23:08:29


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

Только я не согласен с тем, что это особенность программистов :) Это свойство любого аналитического склада ума. Просто так получается, что среди своего круга общения это наиболее заметно. А общаемся мы чаще всего с кем? Правильно - с коллегами :)

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

# Re: 0 или 1
std.hugeping
vvs(ping,12) — hugeping
2021-09-21 20:23:54


hugeping> В повседневной жизни я встречал программистов-математиков и программистов-инженеров. Я скорее отношусь ко вторым.

hugeping> "Он делает всё точно так, как я скажу! Даже, если я ошибаюсь!" Эта была основная мысль, которую я помню в процессе написания своей первой программы и она дала толчок всему остальному.

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

Зато я обожал всякие шифры и электронные устройства. Когда в 8-м классе мне в руки попала книга К.Джермейн "Программирование в IBM/360", я был очарован и с тех пор никогда не отступал с этой стези... до недавнего времени. После сорока мне всё более казалось, что я живу неправильно и жизнь моя не имеет цели. В конце-концов мне удалось круто изменить свою жизнь и заняться не конъюнктурными программами и устройствами, а чем-то более вечным - языком, на котором написано всё, что имеет отношение к реальному миру. Я считал себя материалистом :) С тех пор многое в моей жизни радикально переменилось. Оглядываясь назад я диву даюсь, как изменились мои взгляды и приоритеты в жизни. Мне кажется, что за последние несколько лет я узнал больше важных и интересных вещей, чем за всю предыдущую жизнь. И я больше не считаю себя материалистом :) Но теперь я и играю гораздо реже. А головоломки - это и не совсем игра.

hugeping> Никогда не умел нормально (да и не любил) играть в шахматы. Решать математические головоломки. Терпеть не мог квесты с вставками игрушек на логику. (Например, были такие в Машинариуме).

Ты не поверишь, но я не умею и не люблю играть в шахматы, хотя и знаю правила. Зато любил играть в преферанс :)

hugeping> Правда, очень любил стереометрию в школе, например. Решал большинство задач интуитивно и быстро.

А ты обратил внимание на игру Euclid, которую я уже упоминал? Там надо решать геометрические головоломки. С моей точки зрения - это та же логика, просто другие символы. Все принципы те же и еще Д.Гильберт превратил геометрию в аксиоматическую теорию.

За последние годы я узнал одну важную истину. Всякому овощу - своё время. Кто-то становится религиозным, а кто-то увлекается математикой. Может для тебя время математики ещё не наступило, а я ещё поверю в Бога каким-то своим, особенным путём :)
P.S. Edited: 2021-09-21 20:24:51

# Re: 0 или 1
std.hugeping
hugeping(ping,1) — vvs
2021-09-21 19:47:10


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

> Программист, который не любит математические головоломки - это любопытная экзотика. Возможно он просто не умеет их готовить? (изучаем ещё и кулинарию ;)

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

"Он делает всё точно так, как я скажу! Даже, если я ошибаюсь!" Эта была основная мысль, которую я помню в процессе написания своей первой программы и она дала толчок всему остальному.

Никогда не умел нормально (да и не любил) играть в шахматы. Решать математические головоломки. Терпеть не мог квесты с вставками игрушек на логику. (Например, были такие в Машинариуме).

Правда, очень любил стереометрию в школе, например. Решал большинство задач интуитивно и быстро.

# Re: 0 или 1
std.hugeping
vvs(ping,12) — hugeping
2021-09-21 17:21:11


Ой какая вкусная тема. Спасибо за нее!

Я надеюсь это будет доооолгое обсуждение, на много дней.

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

По поводу связи чёрно-белого восприятия с человеческими отношениями. Тут логика ни причём - надо обращаться к философии. Философия - это по сути изучение различных точек зрения. Кто относится к этому серьёзно, ссориться из-за разных точек зрения не станет - это глупо. Однако другая часть философии (и религия) занимается моралью. А вот тут есть много подводных камней. Является ли подлость просто иной точкой зрения? Можно ли бесстрастно обсуждать с подлецом взаимные разногласия - этот вопрос уже далеко не только философский, поскольку влияет (весьма действенно) на нашу жизнь и жизнь наших близких. Тут ещё начинаю накладываться политические предпочтения, традиции, воспитание и собственные тараканы. Могут ли людоеды с Андаманских островов мирно обсуждать кулинарные вопросы со своими пленниками? Вопрос интересный, но предпочтительно обсуждать это у себя дома.

# Re: Блокировка INSTEAD в Google Play
std.club
hugeping(ping,1) — hugeping
2021-09-21 15:49:49


Приложение снова доступно :) Ура!

# Re: RE:INSTEAD
std.club
hugeping(ping,1) — hugeping
2021-09-21 15:49:11


tts в re:instead

Со второй попытки, всё-таки, поддержку tts решил оставить. (Пока, только для Android). Спасибо Никите за помощь! Поддержка неидеальна, конечно, но пользоваться можно.

Будет в следующей версии (0.5).

# 0 или 1
std.hugeping
hugeping(ping,1) — All
2021-09-21 15:32:40


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

Не удивительно, что с годами это начинает отражаться и на психике. Один из таких "синдромов" я замечаю у себя и у некоторых знакомых программистов. Я назвал его синдром "0 или 1". Проявляется он в различных формах, но стоит за всем одно и то же.

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

> - Смотри, я тут игру написал Color Lines.
> - Неплохо. Только цвета шариков мне не нравятся.
> - А мне, кажется, красиво.
> - Нет, слишком яркие.

(сценарий 0) Я подобрал плохие цвета. -> Они мне нравятся, значит, у меня нет вкуса. -> Зря я написал игру.

(сценарий 1) Цвета мне нравятся, а оппоненту -- нет. -> У оппонента нет вкуса, не надо учитывать его мнение. -> Зря я его спросил.

Следствие синдрома. "Если что-то может случиться, то это обязательно случится." Перекликается с законами Мерфи, да? Не случайно, ой не случайно... :)

> - Где мой паспорт?
> - Зачем тебе?
> - Я всегда беру паспорт, когда выхожу на улицу... И, кстати, где зонт?

Усиление следствия. "Если что-то случится в будущем, то это уже случилось."

> Мы смертны -> мы уже мертвы -> нас не существует и никогда не существовало.

Ещё одно следствие -- если назревает конфликт, нет смысла тянуть, ведь "он уже случился".

> - Не могу тебя видеть!
> - Если мы враги, то давай расстанемся. Если нет, то зачем эта ссора?

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

> - Отрежь кусочек скотча.
> - Какой длины?
> - Просто кусочек скотча.
> - Для какой задачи нужен скотч? (попытка узнать точную длину отрезка под задачу)
> - Блин, да ты издеваешься!

// Все диалоги являются вымышленными, любое сходство -- случайно.

Годами выработанная привычка сводить всё к "да" или "нет", "всё" или "ничего", 0 или 1 -- рано или поздно находит выход, нередко приводя к раздражению, непониманию, ссорам.

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

Когда я слышу очередную "печальную" новость про программиста, я всегда с сожалением думаю, что не последнюю роль здесь сыграл синдром 0 или 1.

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

Берегите себя!

# Re: Деды и творчество
std.hugeping.micro
hugeping(ping,1) — vvs
2021-09-21 14:39:55


vvs> Внуки есть? Тогда не дед ;)

Дед! Дед Мороз я. :)

# Re: Деды и творчество
std.hugeping.micro
vvs(ping,12) — hugeping
2021-09-21 14:06:59


Внуки есть? Тогда не дед ;)

# Деды и творчество
std.hugeping.micro
hugeping(ping,1) — All
2021-09-21 13:08:20


Очень вдохновляют примеры, когда творчеством занимаются пожилые люди. Пётр Мамонов, Procol Harum (выпустившие альбом в 2017!), Питер Фальк в роли самого себя в Коломбо... Экзюпери написал Маленького принца после 40. В общем, если приглядеться, то в глазах взрослых с виду людей, можно разглядеть искорки детства.

Как-то на youtube случайно натолкнулся на любительский клип на одну из любимых песен Procol Harum. Вот он https://www.youtube.com/watch?v=-MnQTFa7PHI

Видеоряд + музыка совпали на 100%! Музыка резонируют с картинкой так, что на кадрах, когда барон обгоняет летящую смерть, я чувствовал мурашки по телу. Это было настолько удивительно и круто, что я посмотрел фильм, из которого был нарезан видеоряд. Вот этот фильм: https://ru.wikipedia.org/wiki/Приключения_барона_Мюнхгаузена_(фильм)

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

Что тут сказать? "Ты не один"(c)

# Re: RE:INSTEAD
std.club
hugeping(ping,1) — hugeping
2021-09-19 13:29:01


Выпустил RE:INSTEAD 0.4

Новое:

* возможность сборки с одной из трёх библиотек рендеринга шрифтов (stb_truetype/libschrift/freetype);
* статические сборки Linux/Windows теперь собираются с freetype;
* исправление ошибок;
* системные команды теперь начинаются с ! (например, !save);
* команды !saves и !rm для просмотра и удаления сейвов.

Готовы бинарные сборки для Linux/Windows (reinstead-0.4.zip) и .apk для Android.
Обновление в F-Droid должно тоже скоро подоспеть.

https://github.com/instead-hub/reinstead/releases

# Re: Программирование как зависимость
std.hugeping.micro
vvs(ping,12) — hugeping
2021-09-18 16:24:32


А если без шуток, то когда-то я интересовался людьми-счётчиками. Там есть случаи психиатрических заболеваний, например https://ru.wikipedia.org/wiki/%D0%A8%D0%B5%D0%BB%D1%83%D1%88%D0%BA%D0%BE%D0%B2,_%D0%98%D0%B3%D0%BE%D1%80%D1%8C_%D0%90%D0%BB%D0%B5%D0%BA%D1%81%D0%B5%D0%B5%D0%B2%D0%B8%D1%87

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

В любом случае, переутомление явно не способствует здоровью.

# Re: Программирование как зависимость
std.hugeping.micro
vvs(ping,12) — hugeping
2021-09-18 15:18:13


hugeping> Действительно, слышал, были такие случаи... ;)

Ха-ха. Студенческий фольклор. "Один преподаватель на 1 курсе говорил нам наполовину в шутку, что каждый год на потоке в физическом факультете кто-нибудь попадает в психушку". Отсюда: https://hugeping.tk/tDeAZ3ChZQzAOdZKgVqV#tDeAZ3ChZQzAOdZKgVqV

# Re: Программирование как зависимость
std.hugeping.micro
hugeping(ping,1) — vvs
2021-09-18 14:46:19


В "Возвращении квантового кота" есть герой, бомж. Там он говорит что-то такое:

> Когда-то я хотел стать кандидатом наук... Писал диссертацию на тему строения материи.. Но... Мой мозг переутомился... Я пытался успокоиться и вот... Теперь я здесь...

Действительно, слышал, были такие случаи... ;)

# Re: Программирование как зависимость
std.hugeping.micro
vvs(ping,12) — hugeping
2021-09-17 23:17:40


hugeping> А книга наносит вред содержимым или самим фактом чтения? :) Потому что если говорить про программирование, то тут сам процесс -- источник хронических заболеваний и повреждения нервной системы. :)

Здоровой психике никакая книга нанести вреда не может. Или всё-таки нет? Каков будет ваш положительный ответ? :)

Тут ещё остаётся вопрос: насколько окрепшая психика подразумевается? И как определить её крепость? :)

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

# Re: Программирование как зависимость
std.hugeping.micro
hugeping(ping,1) — vvs
2021-09-17 20:09:52


vvs> В итоге ни одна книга в отдельности уже не может нанести мне вреда! Здорово, правда? :'D

А книга наносит вред содержимым или самим фактом чтения? :) Потому что если говорить про программирование, то тут сам процесс -- источник хронических заболеваний и повреждения нервной системы. :)

# Re: Программирование как зависимость
std.hugeping.micro
vvs(ping,12) — hugeping
2021-09-15 14:10:13


hugeping> Но вред от этой зависимости есть. Конечно, хочется её романтизировать и идеализировать. Но она вредит и, при этом, мало что даёт на выходе.

Условность. Зависит от того, как определить пользу и у всех она разная. Но сам факт нанесения вреда здоровью излишествами - это явно плохо.

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

# Программирование как зависимость
std.hugeping.micro
hugeping(ping,1) — All
2021-09-15 13:12:03


Несколько дней нахожусь в программистском запое. Программирую Re:instead. Этот проект никак не связывает мне руки, поэтому чувствую эмоциональный подъём. За счёт недосыпания и насилия над нервной системой, конечно же. Это плохо, каждый раз думаю об этом и... Ничего не меняется. Страсть программирования сидит уже глубоко, и просто так победить это не получится. Да и решимости, наверное, нет. "Дай мне целомудрие и воздержание, только не сейчас" // Августин Блаженный.

Но вред от этой зависимости есть. Конечно, хочется её романтизировать и идеализировать. Но она вредит и, при этом, мало что даёт на выходе. Кто знает о проекте Re:instead? 10 человек? :) Полезен ли он? Единственная надежда на пользу, это добавление TTS поддержки для незрячих. Которую, кажется, можно было бы сделать для Android версии. Может быть попробую сделать это.

За это время отделил логику рендеринга шрифтов так, что менять библиотеки отрисовки текста стало очень просто. Сделал возможность собираться с freetype (он даёт лучшее качество на низких DPI) и с libschrift (просто до кучи). Так что теперь Re:instead может быть собран с 3-мя рендерами.

Бинарные сборки 0.4 будут уже на freetype.

# netsurf и iconv
plan.9
hugeping(ping,1) — All
2021-09-12 22:11:57


Те, кто пользуются 9front наверняка знают, что есть порт netsurf: https://github.com/netsurf-plan9/netsurf

К сожалению, порт собран без iconv поддержки. Поэтому некоторые сайты (например, opennet) открываются с убитой кодировкой.

Я взял iconv реализацию из openwrt и грязным образом прикрутил к netsurf. Положил в свой репозиторий: https://github.com/gl00my/plan9hacks

P.S. Кроме этого, у меня там есть ещё какие-то патчи, которые что-то исправляют в плане русского и шрифтов.

# RE:INSTEAD
std.club
hugeping(ping,1) — All
2021-09-12 16:11:47


Выпущен Re:instead 0.3. В новой версии:

- Настройка conf.width: максимальное число символов в строке;
- Обновлён Метапарсер;
- Исправлены ошибки;
- Улучшена Android версия.

Также, Re:instead уже можно поставить из F-Droid! Правда, пока только прошлую версию (0.2).

https://github.com/instead-hub/reinstead/releases/tag/0.3

#news

P.S. Edited: 2021-09-19 13:24:33

# 07.09.2021 - F-Droid и бан INSTEAD в Google Play
std.hugeping.micro
hugeping(ping,1) — All
2021-09-07 18:30:43


Последние дни занимался тем, что добавлял re:instead в F-Droid. И это, похоже, удалось! Сегодня смержили в мастер ветку. Так что остаётся только ждать, когда обновится репозиторий, искать и ставить приложение reinstead.

Вчера INSTEAD ланчер от Бориса Тимофеева был забанен на Google Play. С одной стороны, я расстроился. С другой -- это закономерно. Свободное ПО всегда будет встречать сопротивление. Наверное, можно попробовать оспорить решение, объяснив что INSTEAD не устанавливает ПО, а качает Lua скрипты игр... И Борис попробует это сделать. Но мне кажется, окончательно сбросить с себя ярмо корпорации -- тоже неплохой вариант. Так или иначе, INSTEAD доступен через в F-Droid...

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

P.S. Edited: 2021-09-07 18:32:14

# Блокировка INSTEAD в Google Play
std.club
hugeping(ping,1) — All
2021-09-05 19:04:07


Сегодня выпустил re:instead. Сделал также merge реквест в f-droid. Настроение выполненной работы держалось до самого вечера, когда пришли тревожные новости...

# INSTEAD от btimofeev заблокирован в Google Play #

Что они там нашли, не знаю... Вероятно, не нравится установка Lua кода из сторонних источников. Что же, закономерный оскал капитализма.

На самом деле, неуместность INSTEAD на коммерческой площадке чувствовалась и раньше. И вот, сейчас мы получили логическую развязку. INSTEAD не место на площадке Apple. Не место на площадке Google.

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

Напомню, что скачать приложение вы можете из репозитория открытых проектов на F-Droid: https://f-droid.org/en/packages/org.emunix.insteadlauncher/

Я обновил ссылку на https://instead.hugeping.ru на приложение для Android.

#news

# RE:INSTEAD 0.2
std.club
hugeping(ping,1) — All
2021-09-05 11:33:05


Сегодня, тихо и незаметно, выпущено обновление re:instead 0.2!

RE:INSTEAD это приложение проекта "ПАРСЕРНОЕ СОПРОТИВЛЕНИЕ"

https://parser.hugeping.ru

которое предлагает вашему вниманию сборник парсерных игр в минималистичном формате. Сборки подготовлены для: Windows, Linux и Android. Для других ОС (включая Plan9, MacOS X, BSD*) предлагается тривиальная самостоятельная сборка из исходных кодов.

Изменений масса:

- изменение размера шрифта клавишами ctrl-+/-/0;
- поддержка автоскриптов через параметр -i <autoscript>;
- значительное ускорение работы;
- исправления в играх;
- поддержка сохранения настроек;
- порт на Android;
- исправление ошибок и прочие улучшения.

Сборку для android пока можно скачать прямо в виде .apk файла. А потом, я надеюсь, приложение примут в F-Droid. Соответствующий merge request уже создан.

Проект на github: https://github.com/instead-hub/reinstead

Руководство для игроков: https://github.com/instead-hub/reinstead/releases/download/0.2/manual.pdf

Бинарные сборки: https://github.com/instead-hub/reinstead/releases

#news

# МЕТАПАРСЕР 2.2.1
std.club
hugeping(ping,1) — All
2021-09-04 17:52:33


Обновлён метапарсер.

- Исправлено формирование с/со в русской библиотеке;
- Исправлены сохранения в metaparser.js.

Обновлениы: metaparser, metaparser-js(до 2.2.2). Заменена сборка instead-cli(1.5).

#news

# 04.09.2021
std.hugeping.micro
hugeping(ping,1) — All
2021-09-04 09:43:30


За последние дни практически закончил re:instead. Версия для ANDROID работает и играется приемлемо. Очень много доработок, в том числе и в плане производительности. re:instead будет распространяться только в виде комплекта игр, гарантированно хорошо работающих в этом интерпретаторе. Никаких ланчеров и скачиваний из сети.

Также пробросил микроблог из gemini на https://hugeping.ru
Сомневаюсь, транслировать ли эти сообщения микроблога в twitter/mastadon/telegram или это будет только засорять... Пока они транслируются только в телеграм.

Накопил много тем для блога, но программировать пока интереснее. :)

# Надвигается беда
std.hugeping
hugeping(ping,1) — All
2021-09-04 08:54:33


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

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

## Рей Бредбери. Надвигается беда

В детстве и в институте я не очень любил Бредбери. Тогда я читал фантастику запоем, но другую -- понятную мне. А Бредбери вызывал скорее недоумение. О чём это всё? И только в зрелом возрасте я обнаружил, что он стал мне ближе и понятней. По восприятию, где-то рядом с Гофманом, которого я тоже начал открывать.

Книга отличная. Читал и не мог остановиться. Близко было всё. И главные герои -- подростки. И религиозные мотивы в фундаменте. И переплетение реального и идеального.

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

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

> Мы разжигаем в своих помыслах страсть, зависть, похоть, окисляем их в наших душах, и все это срывается с наших глаз, с наших губ, с наших рук, как с антенн, работающих, уж не знаю, на длинных или на коротких волнах. Но хозяева балаганных уродов знают, они давно научились принимать эти сигналы и не преминут урвать здесь свое. Карнавал не спешит, он знает, что на любом перекрестке найдет желающих подкормить его пинтой похотливой страсти или квартой лютой ненависти. Вот чем жив Карнавал: ядом грехов, творимых нами по отношению друг к другу, ферментами наших ужасных помыслов!

Аллюзия была настолько сильная, что ошибиться невозможно.

> ... Одного только не говорят они людям, катающимся под их музыку...
> - Чего? - не утерпел Джим.
> - А того, что если ты в одном обличье стал несчастным грешником, то и в любом другом им останешься.

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

> - Эй, что вы там прижимаете? - М-р Дарк прищурился. А, Библия! Очаровательно! Как это по-детски наивно и свежо.
> - Вы читали ее, мистер Дарк?
> - Представьте, читал. Скажу даже больше. Каждую главу этой книги, каждый стих вы можете прочесть на мне, сэр...

Но всё-таки, как мне кажется, назвать повесть христианской будет не вполне правдой. Ближе к концу события развиваются в таком ключе, что в какой-то момент я даже почувствовал недоумение. Так что же такое карнавал? И кто такой Дарк? Почему борьба с ним возможна именно тем способом, который обнаружил Чарьльз Хэллуэй?

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

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

К концу книги эти вопросы, на мой взгляд, не разрешаются и в полной мере не преодолеваются. Это, в свою очередь, оставляет колкое послевкусие вопроса. Так о чём же повесть? О жизни, детстве, взрослении, о человеческих страстях. Но действует ли в этом мире Бог? Доверившись книге, я чувствовал что болтаюсь между двумя состояниями: ощущением присутствия Бога и ужасом богооставленности. В повести, не смотря на всю её "сказочность", присутствует парадоксальность реального мира. В ней нет прямого рецепта, хотя сначала кажется, что есть. И это переплетение фантастики и реализма делает повесть пронзительно острой.

> "У Зла есть только одна сила, та, которой наделяем его мы. От меня ты ничего не получишь. Наоборот, я заберу у тебя все. И тогда тебе останется только погибнуть".

И вот мы уже почти добрались до конца. Счастливого конца?

> - Да, сынок. Теперь уж всю жизнь придется быть начеку. Все только начинается. Они неторопливо обогнули карусель.
> - А как же мы их узнаем? - допытывался Вилли. - На кого они будут похожи?
> - Может быть, они уже здесь, - тихо ответил отец.
> Оба друга быстро огляделись. Но поблизости была только карусель да они сами. Тогда Вилли поднес руки к лицу и внимательно осмотрел их, перевел взгляд на Джима и снова на отца.
> Чарльз Хэллуэй кивнул. Только один раз.

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

P.S. Кстати, такое же разочарование было у меня от просмотра фильма "1984", который на фоне книги показался блеклым и невыразительным.

# Re: 26-08-2021
std.hugeping.micro
hugeping(ping,1) — vvs
2021-09-02 21:38:22


vvs> Это из майкрософта человек :)

Довели, беднягу. :)))

Да, тенденция есть! Это интересный феномен. Люди перегружены.

# Что происходило, когда, казалось бы, ничего не происходило
pipe.2032
vit01(mira, 1) — All
2021-09-02 14:04:25


Рассказываю, чем занимался под конец августа, даю парочку полезных советов


## В целом

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

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

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

Кстати, вдруг кому пригодится, этот коллаж был составлен парочкой командой в консоли, с помощью пакета [GraphicsMagick]( http://www.graphicsmagick.org/utilities.html ) (как ImageMagick):

mkdir -p changed
for i in *.jpg; do gm convert $i -resize "3000x3000^^" -crop 3000x3000+0+0 -quality 100 changed/$i; done
gm montage changed/*.jpg -geometry 1024 -tile 3x3 -quality 80 flowers-in-my-garden.jpg

## Моделирую плазменные трубки с МГД-волнами

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

В самом начале надо было подобрать и посчитать нормировочные константы таким образом, чтобы характерные величины и их масштабы соответствовали параметрам солнечной плазмы. В процессе проверки констант очень пригодилась библиотека [Pint]( https://pint.readthedocs.io/en/stable/ ), которая позволяет работать в Python с физическими размерностями, проделывать с ними арифметические операции.

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

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

Синий и красный цвет - это отрицательное и положительное направление компоненты вектора. Для X-компонент синий-красный - это влево-вправо, для Y-компонент - вниз-вверх.

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

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

## Стыдно? Нет!

В августе решил немного погрузиться в детство и посмотрел 10 сезонов сериала Stargate SG-1. Первые несколько сезонов на русском, а остальные на английском. Казалось бы, зачем лишний раз тратить время и страдать чем попало? Но я не пожалел о просмотре, и не только потому что серии увлекательные, а потому что догадался, как обратить это себе в пользу.

Обычно во время просмотра кино я включаю субтитры. Как только нахожу глазами незнакомое слово, то ставлю воспроизведение на паузу и лезу в переводчик, а потом переслушиваю фрагмент. После нескольких таких итераций запоминается звучание слова и его перевод. Через какое-то время почувствовал уверенность в том, что воспринимаю речь правильно, и начал смотреть на ускоренном, вплоть до 1.5х и даже 2х. Ещё совсем недавно я мог смотреть на ускоренном воспроизведении только русскую речь, но сейчас, после практики на американском сериале, могу уже воспринимать на ускоренном и английскую речь.

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

[https://ii-net.tk/ii/ii-point.php?q=/f/f/alicorn.blog/faDeWs3qGMUxelo6W0NI]( https://www.deviantart.com/chobittsu-studios/art/Event-Horizon-Redux-253177802 )

Своё английское _произношение_ я раньше успешно прокачивал на My Little Pony: Friendship is Magic. Мультфильмы имеют такую особенность, что у персонажей специально делают очень разные, качественно отличающиеся друг от друга голоса, чтобы подчеркнуть различия их характеров. Ещё там актёры озвучки стараются усиливать эмоциональную окраску речи, что полезно для усвоения интонаций и фонетики. Конкретно в поняшах есть разные песни (хорошо, когда привносят элементы мюзикла), плюс там есть Пинки Пай, которая очень-очень-очень быстро разговаривает.

## Визуализация через PlantUML

Продолжаю находить лучшие инструменты для визуализации разной информации. Не так давно в блоге упоминал mermaid.js, но сейчас решил наконец-то попробовать [PlantUML]( https://plantuml.com/en/ ), которым пользуется мой научрук. Результатом оказался более чем доволен, потому что, во-первых, у PlantUML есть полностью рабочее расширение для Jupyter, которое пашет из коробки, во-вторых, потому что многие типы графиков он отрисовывает гораздо красивее, чем аналогичные движки.

apt install plantuml
pip3 install iplantuml

Пример диаграммы Ганта в PlantUML и Jupyter (нужно в первой ячейке не забыть сделать `import iplantuml`):

%%plantuml

@startgantt
scale 1000 width
language ru
saturday are closed
sunday are closed
Project starts 2021-08-27

today is colored in pink

-- По статье --

[Конференция] as [k1] starts 2021-08-30 and ends 2021-09-03
[Выступление] as [k2] starts 2021-09-01

-- По остальным событиям --
[g1] happens on 2021-09-03
[g2] happens on 7 days after [g1]'s end
[g3] happens on 7 days after [g2]'s end
[g4] happens on 7 days after [g3]'s end
[g1] displays on same row as [g2]
[g2] displays on same row as [g3]
[g3] displays on same row as [g4]

@endgantt

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

## Поступил в магистратуру ИСЗФ

Итого, следующие 2 года я буду не только работать в ИСЗФ, но и учиться. Это очень удобно, ведь нас сразу будут учить тем вещам, которые пригодятся в работе. Расписание у нас достаточно насыщенное, 4 дня в неделю с утра до вечера (но пятницы должны быть свободны). Занятия начинаются с 6 сентября, в программе в основном физика плазмы, компьютерные практикумы и математические методы.

## Поучаствовал в конференции

1 сентября со своей работой про поиск гирорезонансных источников на Солнце на частоте 34 ГГц я выступил на конференции "Магнетизм и активность Солнца и звёзд - 2021", которая в этом году проходит в [Крымской астрофизической обсерватории]( https://crao.ru/ru/ ) с 31 августа до 3 сентября. Первый раз, когда где-то засветился на "серьёзном" мероприятии с результатами того, что делал. К сожалению, вживую съездить не получилось, потому что из-за даты проведения заранее зарегистрировался как онлайн-участник. Ну не хотелось 1 сентября куда-то уезжать! Было бы в августе, поехал бы в Крым вживую, но ничего страшного.

На конференции было больше 100 участников, в основном люди старшего поколения и больше десятка тех, кто из ИСЗФ. Молодёжь тоже была, но в разы меньше.

**Из основных тем, которые там обсуждали:**

- Новые телескопы, планируемые к постройке, и мониторинг космической погоды
- Закономерности в циклах солнечной (и звёздной) активности
- Теории солнечного динамо
- Нагрев и охлаждение солнечных (и звёздных) вспышек
- Магнитное поле в плазменных трубках и в солнечных пятнах, разные модели, колебания
- и многое другое

Оживлённые дискуссии вызвали предложения строить в России новые телескопы и магнитографы, чтобы объединить их в единую сеть "службы Солнца", потому что большой вопрос, кто за это будет платить. Однако, нужность этой задачи поднимается давно на протяжении многих лет. Дело в том, что в США служба космической погоды уже существует, но военные на местных конференциях постоянно говорят о том, что если строить телескопы в других странах, то должна быть возможность их быстренько отключить, когда надо. Один из спикеров привёл пример, как по совершенно другим причинам американский солнечный сервис забанил подсеть Института Космических Исследований, и этот инцидент разруливали на уровне академии наук. Учёных подобные расклады не устраивают, поэтому что для коллаборации всегда важно иметь публичные архивы данных.

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

## Не будем о грустном, потому что Селестия всё равно радуется

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

[https://ii-net.tk/ii/ii-point.php?q=/f/f/alicorn.blog/pzR0T5JtQk0TKAG8wx7P]( https://www.deviantart.com/airtower/art/Rising-Sunshine-510879062 )

Добра всем трудолюбивым поняшам! И до следующего поста

Этот пост в блоге: https://blog.alicorn.tk/posts/end-august.html

# Re: 26-08-2021
std.hugeping.micro
vvs(ping,12) — hugeping
2021-08-31 21:40:52


О, наконец сообразил, что меня больше устраивает вместо слова "простота": "красота, как чувство меры".

# Re: Последний день лета
std.hugeping.micro
nvkv(ping,35) — hugeping
2021-08-31 21:27:27


Поздравляю!

# Re: 26-08-2021
std.hugeping.micro
vvs(ping,12) — hugeping
2021-08-31 21:06:50


hugeping> Может быть, тяга к простоте -- это возрастное? :)

По крайней мере это явно распространённое заболевание. Вот, на днях наткнулся:

Software Complexity

Simplicity is not the opposite of complexity. Simplicity is too often an excuse for being simplistic. The world doesn't need any more stupid software. The opposite of complexity is beautiful, elegant design.

http://lovettsoftware.com/

Это из майкрософта человек :)

# Re: 26-08-2021
std.hugeping.micro
hugeping(ping,1) — vvs
2021-08-31 18:16:09


О, спасибо! Посмотрим...
Может быть, тяга к простоте -- это возрастное? :)

# Последний день лета
std.hugeping.micro
hugeping(ping,1) — All
2021-08-31 18:15:23


Всё-таки выпустил в последний день лета INSTEAD 3.4.0. Этот релиз сильно задержался и несёт в себе долгожданную поддержку HiDPI.

Помню, как в 2009 (или в 2008?) писал первую игру "Одна старая история", которая начиналась в последний день лета... Конечно, я тогда думать не мог, что это хобби растянется на >10 лет. Думаю, так или иначе, оно повлияло на меня. В том числе в профессиональном плане.

https://instead.hugeping.ru/post/2021-08-31-instead-3-4-0/

# INSTEAD 3.4.0 вышел!
std.club
hugeping(ping,1) — All
2021-08-31 16:07:33


На исходе последнего дня лета вышел INSTEAD 3.4.0! Версия с поддержкой hi-dpi экранов и возможностью создавать игры с адаптивными темами. Список изменений:

- исправление в pxl:fill_triangle (сортировка вершин);
- исправлена сборка с новым SDL_image;
- корректная работа с масштабированием в Windows (dpi awarness);
- поддержка высоких dpi (если включена опция HQ);
- новый параметр -dpi;
- новая функция instead.screen_dpi();
- новый параметр theme scr.gfx.scale;
- новый параметр theme scr.dpi;
- новый параметр theme scr.scale_aware (1|2) - поддержка адаптивных тем;
- возможность запуска игры через командную строку по пути к main?.lua файлу;
- более качественное масштабирование картинки сцены;
- обновлён SDL для windows сборки;
- улучшение: используется GetModuleName для нахождения полного пути к .exe (Windows);
- новая функция pxl:tosprite (конвертация pxl в sprite с масштабированием);
- ускорение pxl:fill;
- экспериментальная поддержка сборки с gtk4.0 (пока отключено).

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

#news

# RE:INSTEAD на Android
std.hugeping.micro
hugeping(ping,1) — All
2021-08-29 19:29:51


Всё-таки, что-то получилось! Только что закоммитил в contrib проекта reinstead https://github.com/instead-hub/reinstead исходники для сборки Android версии.

Конечно, это ещё не релиз, но, вроде бы, в целом -- работает. Заодно, перевёл reinstead на работу с SDL render Api (он стал работать заметно быстрее).

К сожалению, из-за REINSTEAD сдвигается релиз его старшего брата (INSTEAD).

# Re: Играю с Android
std.hugeping.micro
vvs(ping,12) — hugeping
2021-08-28 13:06:13


hugeping> 50 лет Си уже существует, сколько ещё технологий он переживёт?

https://ziglang.org

Посмотрим.

Текучесть вызвана, в основном, ленью и консерватизмом. Поэтому и Plan 9 мало кто использует. Что, впрочем, нормально.

# Играю с Android
std.hugeping.micro
hugeping(ping,1) — All
2021-08-28 12:50:37


Ради интереса решил попробовать собрать reinstead на Android. Я думал, что всё будет просто. Но нашлись нюансы...

В результате войны в течении 2-х дней с Java/ndk и отладкой SDL получился прототип. https://twitter.com/peter_ru/status/1431581688728010755

Но я пока не уверен, что буду доводить его до конца.

Пока работал со всем этим, меня не покидало ощущение перегруженности и текучести современных технологий. POSIX всё-таки более фундаментальная вещь. 50 лет Си уже существует, сколько ещё технологий он переживёт?

P.S. Список тем для блога растёт, но между программированием и блогом я всегда выбираю первое. Надеюсь, скоро будет перерыв и я напишу новые заметки. :)

# Re: 26-08-2021
std.hugeping.micro
vvs(ping,12) — hugeping
2021-08-26 16:12:13


hugeping> Отдушина от сложных вещей.

Знаю, что продолжаю пинать мёртвую лошадь, но чем-то мне это очень близко, наверное.

Всё относительно. Сидел, недавно, ковырял примеры к курсу Д.Харрисона "Введение в функциональное программирование". Там простой парсер, простая реализация Пролога на его основе и простая же система доказательства теорем. Всё написано на Caml light, но я перенес их для себя на OCaml для упрощения. Так не сразу разобрался во всех нюансах и казалось, что не так всё там просто. А после того, как разобрался, то не просто, а очень даже элементарно :)

Кстати, для тех, кто в теме, вот неплохой список литературы: https://alexott.net/ru/fp/books/

# 26-08-2021
std.hugeping.micro
hugeping(ping,1) — All
2021-08-26 15:18:11


Продолжил работу над RE:INSTEAD. Всё-таки, очень нравится мне этот проект. Отдушина от сложных вещей. Что сделано:

- изменение размера шрифта на-лету (ctrl+/ctrl-);
- поддержка автоскриптов (опция -i);
- поддержка прокруткой тасканием (для возможного порта на android).

Рад, что проект https://parser.hugeping.ru известен незрячим. Это даёт смысл его существованию!

# Микроблог
std.hugeping.micro
hugeping(ping,1) — All
2021-08-26 15:12:36


Решил создать эху std.hugeping.micro как замену твиттеру/мастадону.
Возможно, потом настрою трансляцию отсюда.

# metaparser-js 2.2.1
std.club
hugeping(ping,1) — All
2021-08-25 16:29:13


Обновлёна js версия метапарсера до версии 2.2.1.

Изменения:
- исправлена работа старой js версии, которая активизируется если браузер не поддерживает wasm;
- исправлена доступность для незрячих (спасибо Даниилу Гусеву за помощь в отладке).

#news

# RE:INSTEAD 0.1
std.club
hugeping(ping,1) — All
2021-08-15 09:48:26


Сегодня вышла в свет первая версия нового проекта RE:INSTEAD!

Что это: https://github.com/instead-hub/reinstead/blob/master/MANIFEST.md
Скриншоты: https://github.com/instead-hub/reinstead/blob/master/README.md

Вы можете скачать готовую сборку, которая должна работать на Linux (64 бита) и Windows. Также, проект собирается в 9front (Plan9).

https://github.com/instead-hub/reinstead/

RE:INSTEAD распространяется с играми проекта "ПАРСЕРНОЕ СОПРОТИВЛЕНИЕ", которые лицензированы под лицензией CC SA 4.0.

http://parser.hugeping.ru/

#plan9
#news

# МЕТАПАРСЕР 2.2
std.club
hugeping(ping,1) — All
2021-08-15 09:41:50


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

* исправлено падение при вызове mp:myself();
* исправлено поведение Meta команд;
* исправлен std.busy();
* бекпорт исправлений из проекта re:instead.

С новым модулем выпущены: metaparser, metaparser-js, instead-cli

https://instead.hugeping.ru/page/metaparser/
https://parser.hugeping.ru

#news

# dumb
plan.9
nvkv(ping,35) — hugeping
2021-08-02 20:47:14


https://github.com/emptymonkey/dumb/

Полезная утилита для обрубания escape-последовательностей. Совершенно незаменимая штука в win-окнах Acme.

Что примечательно, написана целиком на lex.

Удобнее всего использовать через |&, если у вас свежий баш, тогда оба, stderr и stdout, будут завернуты в dumb

% zig build |& dumb
P.S. Edited: 2021-08-02 20:48:55

# Re: Анонс станции
idec.talks
Andrew Lobanov(tavern,1) — w201403
2021-08-02 20:32:49


w201403> Айм хере

Привет! Шевелится сетка!

# Re: Анонс станции
idec.talks
Andrew Lobanov(tavern,1) — hugeping
2021-08-02 20:29:20


hugeping> Привет! Тут тихо. Но, надеюсь, IDEC ещё шевелится. :)

Шевелится, хотя в последнее время его населяют, в основном, роботы.

# Re: Анонс станции
idec.talks
w201403(ping,36) — ake
2021-08-02 20:17:30


Айм хере

# Поездка в Бадары
pipe.2032
vit01(mira, 1) — All
2021-07-20 04:09:33


Рассказываю о своей первой поездке в [Радиоастрофизическую обсерваторию ИСЗФ СО РАН]( https://goo.gl/maps/B8ki4jf5gHvWjzsm6 ) в урочище Бадары (Бурятия).


## Общие слова

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

Цели поездки были примерно такие:

1. Узнать больше о приборе, выяснить некоторые детали о нём (набраться опыта и знаний)
2. Хорошенько поработать в обсерватории, чтобы упростить людям работу и обслуживание антенн. Эту цель я поставил, потому что уже знал, что у антенн есть проблемы с глючностью прошивок и с постоянными сбоями, поэтому примерно знал, что искать и что исправлять
3. Свалить подальше от родителей, пусть даже и на неделю. Да, это тоже пустим в счёт мотивации
4. Сравнить с другими обсерваториями, где я уже побывал, и посмотреть, а где же жить лучше

## Разбавим текст фотографиями

Все остальные фотки с поездки можно посмотреть [в облаке по ссылке]( https://alicorn.tk/dashie/s/FEkyYnp78zjdFBt ). За некоторые из них спасибо одногруппнику Илье, который ехал вместе со мной (у него на камере лучше стабилизация работает).

Поселили нас вот в таком вот старом советском домике, который стоит посреди леса. От домика до самого здания обсерватории топать 1.7 километров.

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

Как выглядит здание обсерватории - см. фоточки из облака :) Это не просто так, а чтобы вам как читателям был стимул посмотреть все фотки. А я больше сосредоточусь на самом приборе

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

Итак, радиотелескоп состоит из трёх антенных решёток, работающих в разных диапазонах. Работает и наблюдает за Солнцем на данный момент только первая решётка: от 3 до 6 ГГц. Те антенны, которые разобраны и лежат, сложенные в кучки - это остатки старого прибора-прототипа (48 антенн, до апгрейда). Мелкие антенны предназначены для второй и третьей антенных решёток, которые ещё не запущены.

Для более высокой частоты наблюдения диаметр антенн меньше, чтобы обеспечить одинаково-широкое поле зрения (если антенны будут большими, то поле зрения по всему небу при повышении частоты наоборот сузится). Это объясняется тем, что при дифракции на щели размер главного лепестка получившейся функции (а значит и лепестка диаграммы направленности) зависит от длины волны и диаметра щели как: \\(dx \sim \frac{\lambda}{D}\\)

Схема расположения антенн первой решётки такая:

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

Облучатель (это такая штука, в которой фокусируется весь сигнал) представляет собой внутри два перпендикулярных друг другу диполя и позволяет извлекать данные в двух поляризациях. Круговые поляризации получаются из линейных путём корреляции и добавления фазового сдвига \\(\pi / 2\\).

Амплитуды сигналов с облучателей собираются мощным 12-битным АЦП, а коэффициенты корреляции с каждой пары антенн (они же в терминологии радиоастрономов называются видности) вычисляются как усреднённая сумма произведений 3-битных (редуцированных) значений амплитуд. Почему из 12 бит сделали 3 бита? Всё достаточно просто: во-первых, вычислительных мощностей микроконтроллеров не хватит для перемножения 12-битных чисел с огромной скоростью, плюс при проведении процедуры усреднения не особо принципиально, какой изначально числовой разрядности будет произведение (на точности это не сильно сказывается). Ранее здесь вообще использовали 1-битный коррелятор, суммирующий только одиночные единички и нули.

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

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

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

Большинство компьютеров здесь, кстати, на Линуксе, и управляются под Fedora (в том числе последней версии). Есть и достаточно мощные компы, например, один из них на Intel Core i9 и с 32 гигами оперативки.

## Чем я тут занимался

### Сисадминские мелочи

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

Потом меня посадили разбираться с интерфейсом местного маршрутизатора Mikrotik, на котором не поднималась вебморда после обновления. С этим тоже справился, заодно вытащил в сеть отвалившийся спектрополяриметр. Так что теперь могу могу себе записать галочкой, что микротик потыкать довелось :). В сети, здесь, кстати, висит вместе с антеннами около 800 устройств. И вполне себе сидят работают.

### Заклинивающие антенны

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

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

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

### Получение телеметрии

Управляющий блок каждой антенны имеет свой IP-адрес и позволяет общаться с собой по протоколу [SNMP]( https://ru.wikipedia.org/wiki/SNMP ). На запросы он отвечает некоторым закодированным выхлопом, который ещё и не до конца задокументирован. Проблема как прошивки, так и управляющего софта заключается в том, что исходников нет (и подрядчик выдавать их пока не хочет, т.к. секрет фирмы). Документация есть, но в достаточно ограниченном виде. К счастью, для меня достали описания большей части полей телеметрии в виде XML-файлов, которые потом скормил в свою программу.

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

Время последовательного опроса всех антенн было от 4 до 5 минут (это очень медленно), из-за чего проблемные антенны успевали съехать, а потом перезапускались и вставали на место, и так раз за разом. На графиках потока это отражалось примерно так:

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

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

### Пусть антенны сами всё шлют мне

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

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

### Полноценный интерфейс для мониторинга

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

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

> По итогам работы моего скрипта в первой решётке СРГ были найдены 4 антенны, которые полностью отключат и отправят обратно подрядчику на ремонт. Также нашли ещё несколько сомнительных антенн, за которыми будут чаще наблюдать.

Поскольку моя программа для мониторинга оказалась лучше, чем программа подрядчика, начальство планирует её дорабатывать (код уже выложен на институтском Гитлабе), например, сделать веб-интерфейс для просмотра всех показателей антенны в реальном времени. Я принял это как челлендж и решил интерфейс тоже успеть реализовать самостоятельно :)

Вот, что получилось:

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

Сначала сделал экспорт самой актуальной телеметрии со скрипта в виде JSON с помощью веб-фреймворка [Flask]( https://github.com/pallets/flask/ ). А потом отдельным скриптом с помощью фреймворка [Plotly Dash]( https://dash.plotly.com/ ) накидал вебморду, запрашивающую данные раз в секунду и позволяющую их удобно просматривать.

[Plotly]( https://plotly.com/ ) - это движок для построения интерактивных графиков на языках Python и R. При знакомстве с ним мне понравилась система связи виджетов друг с другом. Может быть, он не настолько прост в настройке как matplotlib, но для веб-приложений, думаю, это идеальный вариант. Наверное, тут следовало бы привести примеры кода, но лучше оставлю ссылку на [официальную галерею]( https://dash-gallery.plotly.host/Portal/ ) примеров, потому что там всё показано как надо. В документации советую особое внимание обратить на секцию Dash Callbacks.

### Что ещё удалось сделать

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

## Где лучше: в Бадарах или в Мондах?

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

**Плюсы Монд:**

1. Природа всё-таки там красивее и благороднее. Наверное, дело в том, что Монды находятся на высоте около 2000 метров над уровнем моря, и видны вершины гор
2. Архитектура там тоже прикольнее и интереснее, как из советского фантастического кино. Однако, и в Бадарах её плохой не назовёшь, просто менее интересная
3. Много самых разных научных установок. В Бадарах всё-таки один радиотелескоп
4. Нет комаров. Возможно, летом они тоже есть, но я не был в Мондах летом. В Бадарах комаров по вечерам очень много.
5. В жилом домике было аж 2 монитора. Жаль, что тогда забыл переходник, потому что перед сном посидеть за большим экраном самое то
6. Дорога от научных установок до жилых домиков короче, чем в Бадарах

**Плюсы Бадар:**

1. В жилом корпусе есть персональный душ и туалет, а также центральное отопление. В Мондах туалеты похуже и не в доме. Вместо душа вроде как есть баня, но это не то. Отопление в Мондах печное + электрообогреватель
2. Много цветов в корпусе и в столовой. Очень много красивых цветов
3. Интернет в Бадарах гораздо быстрее и стабильнее. По проводу аж до 100 мбит/c, вайфай - до 50. Это решающее удобство для меня :)
4. Есть персональный холодильник и небольшая электроплита. В Мондах есть печка, но всё равно. Жаль, что стиральной машины нет, так бы точно жить можно было
5. Есть конференц-зал и даже спортзал с тренажёрами

## Что в итоге?

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

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

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

Этот пост в блоге: https://blog.alicorn.tk/posts/rao-trip.html

# Re: Книги, которые на меня повлияли
std.hugeping
Andrew Lobanov(tavern,1) — hugeping
2021-07-26 09:09:01


Очень жалею, что список веду всего третий год.

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

И всё вместе так или иначе в итоге повлияло и на выбор профессии и специализации. Именно научная фантастика привела к увлечению техникой и электроникой.

# МЕТАПАРСЕР 2.1
std.club
hugeping(ping,1) — All
2021-07-31 14:55:18


Выпустил новую версию метапарсера.

* transcript больше не включается автоматически по команде autoscript;
* mp.detailed_attr;
* mp.msg.INCOMPLETE_NOUN/SECOND_NOUN/UNKNOWN_VERB переписаны;
* mp:content переписан;
* mp:footer();
* mp:verb_filter() (ru: лучшее детектирование глаголов);
* ru: исправлен глагол #Insert;
* исправления в автодополнении;
* исправления в английской библиотеке.

Рекомендую обновиться, если вы пишете свои игры с использованием МЕТАПАРСЕРА.

Выпущены: metaparser, metaparser-js, instead-cli

https://instead.hugeping.ru/page/metaparser/
https://parser.hugeping.ru

#news
P.S. Edited: 2021-07-31 18:43:00