RSS
Pages: 1 2 3 4 5 6 7 8 9
[>] Re: Бегство от тишины
std.hugeping
hugeping(ping,1) — silverwing
2021-11-09 15:33:43


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

Точно. Об этом я и писал. Правда, немного многословно.

silverwing> А самое страшное, что если хочется чтобы тебя заметили, приходится самому кричать еще громче...

В точку.

[>] Си должен умереть?
std.hugeping
hugeping(ping,1) — All
2021-11-09 17:14:26


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

https://www.yodaiken.com/2018/12/31/undefined-behavior-and-the-purpose-of-c/

http://cmustdie.com/

Скажу сразу, читается интересно. С некоторыми вещами сталкивался на практике. Правда, в статьях я не увидел "выхлопа", какого-нибудь позитивного вывода. Проблемы озвучены, но что предлагается в качестве решения?

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

Как программист на Си, я понимаю, что по современным меркам этот язык нарушает все мыслимые правила приличия. Но при этом я действительно НЕ ВИЖУ адекватной замены в той сфере где он применяется. Это как с самолётами. Неустойчивый самолёт -- маневренный и опасный. Устойчивый -- безопасный и неманевренный. Что выбрать? Что-то среднее? Чем мы готовы пожертвовать?

Представим себе, что нам нужно написать ядро ОС. Какой язык выбрать? C, C++... Rust?

Мои знания о Rust ограничены чтением книги, поэтому я недостаточно подкован для того, чтобы адекватно оценить его кандидатуру как замену Си. Субъективно, мне кажется, что Rust не сможет стать таким же массовым языком. В нём нет простоты Си. Его синтаксис многословен, а в некоторых задачах он выкручивает программисту руки. Я надеюсь, что идеи заложенные в Rust найдут реализацию в каком-то другом ЯП. Но это моё личное, субъективное мнение. Конечно, если индустрия перейдёт на Rust, я буду его использовать в любом случае. А пока, можно посмотреть на пример реализации драйвера на Си и Rust: https://lwn.net/Articles/863459/ который меня совсем не впечатляет.

Си был моим любимым языком с самого начала профессиональной деятельности. Но с годами я стал замечать, что программирование на Си всё чаще воспринимается как рутина. Я перестал чувствовать удовольствие от программирования и изучения чужого кода. Работал скорее как "ремесленник". К счастью, были и другие ЯП, которые мне было интересно изучить, так что выгорания я избежал.

Но не так давно я открыл для себя Си заново. Помогло мне в этом осознание:

> Код на Си прекрасен, когда он прост!

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

Посмотрите. Это реализация cat в Plan9: https://github.com/0intro/plan9/blob/master/sys/src/cmd/cat.c

А это, для сравнения, cat из coreutils: https://github.com/coreutils/coreutils/blob/master/src/cat.c

Я отдаю себе отчёт в том, что современное ПО так не пишется. Поддержка локалей и gettext. Учёт особенностей системных вызовов на разных ОС. Поддержка множества параметров. И вот, объём и сложность кода растут как снежный ком. А если вспомнить про полную поддержку Unicode (со всеми этими проклятыми эмодзи и сменой направления вывода), то становится совсем уж плохо. Мы так привыкли к универсальности "правильного" подхода, что когда ты видишь "наивный" код Plan9, то испытываешь шок. Что, так можно было?

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

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

Системное ПО тоже стало сложнее. Как системный программист, я начинал с ядра Linux 2.2. Читать и понимать код современного ядра стало намного сложнее.

В качестве примера, посмотрите реализацию системного вызова open в ядре 2.2.
https://elixir.bootlin.com/linux/2.2.26/source/fs/open.c#L757
asmlinkage int sys_open(const char * filename, int flags, int mode)
{
	char * tmp;
	int fd, error;

	tmp = getname(filename);
	fd = PTR_ERR(tmp);
	if (!IS_ERR(tmp)) {
		lock_kernel();
		fd = get_unused_fd();
		if (fd >= 0) {
			struct file * f = filp_open(tmp, flags, mode);
			error = PTR_ERR(f);
			if (IS_ERR(f))
				goto out_error;
			fd_install(fd, f);
		}
out:
		unlock_kernel();
		putname(tmp);
	}
	return fd;

out_error:
	put_unused_fd(fd);
	fd = error;
	goto out;
}
Довольно наглядно и просто, не правда ли?

А теперь начните своё путешествие по ядру 5.10.

https://elixir.bootlin.com/linux/v5.10.78/source/fs/open.c#L1200

Вам придётся пройтись по цепочке: do_sys_open -> do_sys_openat2

https://elixir.bootlin.com/linux/v5.10.78/source/fs/open.c#L1193
https://elixir.bootlin.com/linux/v5.10.78/source/fs/open.c#L1164

SYSCALL_DEFINE3(open, const char __user *, filename, int, flags, umode_t, mode)
{
	if (force_o_largefile())
		flags |= O_LARGEFILE;
	return do_sys_open(AT_FDCWD, filename, flags, mode);
}

long do_sys_open(int dfd, const char __user *filename, int flags, umode_t mode)
{
	struct open_how how = build_open_how(flags, mode);
	return do_sys_openat2(dfd, filename, &how);
}

static long do_sys_openat2(int dfd, const char __user *filename,
			   struct open_how *how)
{
	struct open_flags op;
	int fd = build_open_flags(how, &op);
	struct filename *tmp;

	if (fd)
		return fd;

	tmp = getname(filename);
	if (IS_ERR(tmp))
		return PTR_ERR(tmp);

	fd = get_unused_fd_flags(how->flags);
	if (fd >= 0) {
		struct file *f = do_filp_open(dfd, tmp, &op);
		if (IS_ERR(f)) {
			put_unused_fd(fd);
			fd = PTR_ERR(f);
		} else {
			fsnotify_open(f);
			fd_install(fd, f);
		}
	}
	putname(tmp);
	return fd;
}

Необходимость изменений очевидна. Появилась подсистема fsnotify. Добавили новые системные вызовы -- пришлось нарезать функции и сводить open к openat...

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

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

Что касается судьбы Си... Я тоже хотел бы увидеть современного приемника, но в Rust я не смог его узнать. Возможно, это моя ошибка. Поживём -- увидим.

Интересно, сколько лет ещё продержится старичок Си? А то ведь и 70-летие не за горами. :)

P.S. Ещё одна "эмоциональная" статья на тему C и C++: Почему я всё ещё люблю C, но при этом терпеть не могу C++?

https://habr.com/ru/company/ruvds/blog/562530/

[>] Re: Бегство от тишины
std.hugeping
hugeping(ping,1) — nvkv
2021-11-12 18:46:23


nvkv> Ну, то есть, для меня вообще А. В. Столяров не говорит ни о чем.

А я тоже не знаю кто это. :) Собственно, смотрел я не применительно к личности. Просто разговор с технарём.

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

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

[>] Re: Си должен умереть?
std.hugeping
hugeping(ping,1) — vvs
2021-11-13 07:08:34


Ох, я кажется по ошибке нажал редактировать вместо ответа, прошу прощения @vvs!

[>] Re: Си должен умереть?
std.hugeping
hugeping(ping,1) — nvkv
2021-11-13 11:07:23


nvkv> В общем, на мой взгляд Zig это лучшее, что случалось с этим классом языков (C/C++/Rust) за много-много лет.

Всё, надо смотреть. Убедил. :) А harelang не смотрел?

[>] Парсерное сопротивление: новые версии (МП 2.4)
std.club
hugeping(ping,1) — hugeping
2021-11-27 14:24:38


Встречайте большое обновление ПАРСЕРНОГО СОПРОТИВЛЕНИЯ!

Вышли новые версии проектов: МЕТАПАРСЕР, Re:instead и metaparser-js.

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

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

Парсерный движок для создания игр с текстовым вводом. Для использования требуется INSTEAD или Re:instead.

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

Изменения:

* комната gameover теперь имеет атрибут 'gameover';
* функция getDaemons() -- получить список фоновых процессов;
* комната gameover останавливает все фоновые процессы;
* атрибут 'concealed' удаляется, когда предмет перемещается в инвентарь;
* новый метод obj.is_once() для проверки факта срабатывания obj.once();
* обновление документации;
* исправлены/улучшены некоторые сообщения.

# Re:instead 0.7

Минималистичный парсерный движок для Unix, Windows, Plan-9 и Android. В комплект включён набор игр.

* значительное улучшение кернинга при работе с freetype и libschrift;
* параметры -noautoload/-noautosave;
* новый метапарсер 2.4;
* исправления в игре "Краски октября";
* поддержка клавиши del;
* исправление при изменении размера шрифта;
* исправление смены иконки приложения в Windows;
* возможность делать синонимы команд (conf.cmd_aliases);
* Windows: перенаправлять stdout/stderr в errors.txt только если stdout не доступен;
* команды !script и !debug;
* !stop команда в autoscript.

# metaparser-js 2.4

Реализация парсера на js.

* обновление метапарсера до 2.4;
* команды !ls, !rm, !restart;
* возможность загружать и выгружать сохранения;
* возможность выгружать транскрипт (пока только в пределах одной игровой сессии);
* локализация на английский (язык выбирается по основному языку браузера).

[>] Re:instead в Google Play
std.club
hugeping(ping,1) — hugeping
2021-12-13 09:47:22


Борис Тимофеев выложил Re:instead в Google Play. Так что библиотечка парсерного сопротивления стала ещё доступнее. Не забывайте оценивать приложение, если оно вам нравится. ;)

https://play.google.com/store/apps/details?id=ru.hugeping.reinstead

#news

[>] Александр Столяров о творчестве
std.hugeping.micro
hugeping(ping,1) — All
2022-01-06 19:24:13


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

https://www.youtube.com/watch?v=RQ0HKYOR3c8&t=1221s

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

[>] Re: Александр Столяров о творчестве
std.hugeping.micro
hugeping(ping,1) — vvs
2022-01-15 16:34:11


vvs> Вспоминается ещё анекдот:
vvs> ... Очнувшись, он с ликованием подумал об удачном исходе столь трудного и опасного опыта и, дрожа от нетерпения и пережитого, поспешно развернул бумажку с драгоценной записью. На ней он прочел; “Банан велик, а кожура еще больше...”

Забавно! Не раз испытывал похожее во сне. Когда "гениальная мысль" оказывается бредом. :) Тем удивительней контраст по сравнению с ощущением озарения во сне. Мысль о том, что когда-нибудь мы все вдруг проснёмся, кажется не такой уж и неверотяной... ;)

[>] Re: Александр Столяров о творчестве
std.hugeping.micro
hugeping(ping,1) — mukranenburg
2022-03-27 10:32:00


mukranenburg> Писал музыку к Старцу Паисию, знаком со Столяровым. Красота и идеи, они в простоте.

Ого!

> На обсуждении фильма один молодой критик сказал: как так о святом и в виде комедии и под звуки гармошки?

Вообще, фильм можно назвать "псевдодокументальным". Так что, как не крути, это в первую очередь художественное произведение. А критики, они такие. :)

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

Почему вспомнился? Наверное, из-за самоиронии. В обоих фильмах это есть. Как противоядие против фальши.

[>] Точка Z
std.hugeping
hugeping(ping,1) — All
2022-04-10 20:18:47


> Лк19:40 Но Он сказал им в ответ: сказываю вам, что если они умолкнут, то камни возопиют.

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

> Мф19:26 А Иисус, воззрев, сказал им: человекам это невозможно, Богу же все возможно.

Переживая за то, что происходит сейчас с народами России и Украины, я в очередной раз понимаю, что в такие "моменты истины" не так важно то, что ты думаешь, как то -- что ты делаешь. Жизнь каждый день ставит перед нами вопросы, на которые нельзя ответить "по шпаргалке". Не удастся остаться в "безопасности". Залечь на дно. Сделать вид, что ничего не произошло... Ведь даже бездействие будет считаться ответом.

> Если есть шаг, должен быть след.

Свой след я тоже оставлю, так устроен этот мир.

Когда горячее олово капает на руку, не до философии. Работает нерв и рефлекс. А что такое "нерв" в данном случае? Это мифология. Мифология не как вымысел или сказка, а как сама жизнь. Мировоззрение, мироощущение, человеческая архитектура. Прошивка. Firmware. (См. "Диалектика мифа", А.Ф. Лосева)

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

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

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

Есть такой фильм "Слёзы капали" Г. Данелия. Он снят по мотивам рассказа Кира Булычёва, который в свою очередь есть аллюзия на "Снежную королеву" Г.Х. Андерсена.

В глаз главного героя (Леонов) попадает осколок дьявольского зеркала и при этом тот начинает видеть в окружающих его людях только плохое. Интересно, что при этом он часто фактически прав! Например, он говорит своей жене: "Зачем ты красишь губы? Ты же старая!". Что это, вопрос такта? Ведь с точки зрения рационального, его жена действительно старая. Но почему мы считаем, что рациональное -- это и есть подлинная реальность?

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

> Мф6:22 Светильник для тела есть око. Итак, если око твое будет чисто, то все тело твое будет светло

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

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

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

Желать смерти солдатам своей армии -- быть подлецом.

Бить ножом в спину своей Родины, когда ей тяжело -- быть подлецом.

Называть бойцов ДНР и ЛНР террористами -- быть подлецом.

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

Как и любой нормальный человек, я против войны, против гибели людей. Только вот мир во зле лежит. Ложь, кровь и гной прошлых преступлений невозможно "замолчать". Нарыв вскрылся и пришло время "руками жар загребать". Просто отойти и сказать: "Это не моё"? Нет, ребятки, мы все в одной лодке.

Я искренне желаю победы нашим солдатам. Я желаю падения преступного украинского режима. Я желаю свободы и мирного неба ДНР и ЛНР. Я восхищаюсь теми людьми, которые ездят на Донбасс, открыто поддерживая наших ребят, и которым не стыдно быть русскими. Очень хочется верить, что мы это всё не растеряем... А там уж -- как Бог даст.

Сегодня идёт война мифологий. Конечно, Украина лишь видимая сторона конфликта. Она -- как прокси. И сидящие за прокси понимают, что ставки -- очень высоки. Это пугает. Так ли надёжно ЯО в качестве оружия сдерживания, или цена вопроса "перебъёт" даже инстинкт самосохранения? Боюсь даже думать об этом. Мир трещит по швам. Где окажется каждый из нас?

Точка Z наступила не 24 февраля, а гораздо раньше. Просто многие из нас этого не заметили. А того, кто заметил -- мы не слушали. Пора просыпаться.

Для поднятия морального духа:

- книга "Письма с Донбасса" // Захар Прилепин
- https://t.me/patricklancasternewstoday Патрик Ланкастер
- https://vk.com/video-3156562_456244781 Призраки: солдаты забытой войны
- https://yewtu.be/watch?v=augFYP09ALQ Облака плывут над головой
- https://yewtu.be/watch?v=aEkqA5L2hl0 Мы не уйдём // Джанго

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

P.S. #2 Уподобляться некоторым разработчикам Open Source проектов я не буду. Так что INSTEAD по-прежнему открытый и интернациональный проект, в котором, кстати, есть и украинская локализация. Он принадлежит сообществу -- совершенно разным людям, которые несут собственную ответственность за свои поступки. Наука, искусство и Open Source должны принадлежать всем! В этом я никогда не сомневался.

[>] Сегодня немного поDDOSили
std.hugeping.micro
hugeping(ping,1) — All
2022-04-11 13:26:23


Сегодня малинку немного поDDOSили. Интересно, что событие это меня как-то "взбодрило" и вообще настроило на позитивный лад. Наверное, тут как с велосипедом. Не до рефлексии. :) Да и вообще -- весело!

Написал быстро скрипт для блокировки нужных IP, перенастроил сервер, ssh. Пока тихо. Конечно, от DDOS нет защиты, особенно, если это RPI на столе. :) Но и ценность моего ресурса невысока, так что в крайнем случае, ну, полежит немного...

[>] Re: Точка Z
std.hugeping
hugeping(ping,1) — vvs
2022-04-11 16:57:32


vvs> А я гляжу, народ-то потихоньку мигрирует с иностранных хостингов. И это не по идеологическим мотивам. Если GitHub накроется медным тазом, есть план Б?

Да где разместить код, найдём, конечно. Пока мне просто не хочется ничего ломать: какие-то дистрибутивы уже заточены на github. А так, релизы дублируются здесь, например: https://sourceforge.net/projects/instead/files/instead/

[>] День космонавтики
std.hugeping
hugeping(ping,1) — All
2022-04-12 13:53:45


Вчера я опубликовал свою статью ii://RZlA1xAFOxQMrrPRYC13 "Точка Z"
Потом была DDOS атака (впрочем, я до последнего считал это совпадением).
Потом -- комментарий в gemini. Сейчас пришло вот это:

Ваши посты удалены

===

Было обнаружено, что некоторые из ваших постов нарушают одно или несколько правил сообщества, и они были удалены модераторами mastodon.social.

**Причина:** Содержимое нарушает следующие правила сообщества

- No incitement of violence or promotion of violent ideologies

Цитируемые посты:


> Новая статья на станции ping. Точка Z
> https://club.hugeping.ru/RZlA1xAFOxQMrrPRYC13
>

Просмотр: https://mastodon.social/web/statuses/108109401254905355

---

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

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

С днём космонавтики, друзья!

P.S. Конечно, мне теперь очень неприятно находиться на mastodon.social. Единственное, что меня сейчас сдерживает, что информацию нужно доносить любыми доступными способами. Но если я всё-таки решу уйти, заходите на https://hugeping.ru

[>] Re: День космонавтики
std.hugeping
hugeping(ping,1) — vvs
2022-04-12 15:46:38


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

vvs> А можно пояснить для меня дурака^H^H^H^H^H^H неспециалиста? Этот пост каким-то образом попадает на mastodon или цитируется там?

Когда я публикую пост, то этот факт публикуется в мастадоне (а до этого, ещё и в твиттере) + он постится в телеграм канал (который нигде не заявлялся).

[>] Отцы и дети
std.hugeping
hugeping(ping,1) — All
2022-04-16 11:42:16


# Вместо введения

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

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

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

# Отцы и дети

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

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

> Когда-то ты был битником...

Но потом проходит время, и ты с удивлением (и даже ужасом!) начинаешь осознавать, что становишься похожим на своего отца. А твои дети -- на тебя самого, n-лет назад. Причём и своего отца ты начинаешь понимать всё больше.

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

Год 1996-й. Я счастливый возвращаюсь домой. Дома меня встречает отец. Он сидит в кресле в плохо освещённой комнате.

-- Ну что, проголосовал?
-- Проголосовал!

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

Но сейчас в этой комнате присутствует ещё один человек. Как и мой отец, он грустно улыбается глядя на 18-летнего юношу.

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

- https://yewtu.be/watch?v=Vd7EjvDHwQw

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

Я долго не взрослел. И мне это нравилось. Молодым быть лучше, чем старым. Поэтому Болотная площадь застала меня врасплох. Помню, как бушевали мои эмоции! Свобода попрана! Это очевидно всем! К счастью, мне хватило ума не идти дальше сочувствующих всхлипов. К тому же, я любил программировать больше, чем читать новости.

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

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

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

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

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

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

Но дети не слышат отцов. Что же остаётся? Воспитывать и держать удар, пока наши дети не повзрослели. Пока у нас ещё есть это время.

P.S. Кстати, а помните "отменённую" песню на Eurovision "Я научу тебя..." Мне она тогда очень понравилась. Послушайте, если не слышали. Культура отмены учит быть "таким как все", но не надо стесняться быть собой. ;)

https://yewtu.be/watch?v=tmAgLGk2jIY

[>] Христос Воскресе!
std.hugeping
hugeping(ping,1) — All
2022-04-24 09:03:53


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

Это -- не нормально. Мир -- ненормален. "Естественный ход вещей" -- результат грехопадения. Наш мир -- сломанный мир.

Но Христос "взорвал" ад изнутри, так что теперь у нас есть путь. Мы призваны идти по нему к Небесному Иерусалиму. Кто как может. Не время опускать руки и отчаиваться. Даст Бог, прорвёмся!

> Итак, все — все войдите в радость Господа своего! И первые, и последние, примите награду; богатые и бедные, друг с другом ликуйте; воздержные и беспечные, равно почтите этот день; постившиеся и непостившиеся, возвеселитесь ныне! Трапеза обильна, насладитесь все! Телец упитанный, никто не уходи голодным! Все насладитесь пиром веры, все воспримите богатство благости!

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

https://pravoslavie.ru/61346.html

Христос Воскресе!

[>] Re: Сказки про INSTEAD: как всё начиналось
std.club
hugeping(ping,1) — vvs
2022-05-01 09:56:02


vvs> Не знаю, заметил ли это здесь кто-нибудь ещё...
vvs> Inform 10.1.0-beta: https://github.com/ganelson/inform

Да, тоже заметил. Правда, теперь я уже вряд-ли буду заниматься ещё одним проектом. Тут и на МП то времени нет... Русификация Информ7 интересная задача. Но лично для меня, не очень актуальная. Мне (как программисту) кажется, что логику проще описывать с помощью обычного ЯП.

[>] Фильмы о войне
std.hugeping.micro
hugeping(ping,1) — All
2022-05-12 21:40:12


Пересмотрел в очередной раз "В бой идут одни старики". Очень люблю этот фильм. Кажется, что каждый кадр в нём -- живой. По TV в это время шёл "Девятаев". Ну, думаю, дай посмотрю на современное кино... В общем, не выдержал и 20 минут. Задумался. Конечно, нельзя обобщать. Это с одной стороны. А с другой ну, действительно, есть какая-то нехорошая тенденция. Если воздушные бои - то компьютерная игра. (Кстати, наверное самые классные воздушные бои в кино я видел в "Голубом Максе" 1966 года.) Если герои -- то всегда с какой-то постмодернистской стыдливостью... Это в лучшем случае.

А потом, пока искал что-то из современного, натолкнулся на:

https://litvyakfilm.ru/

"28 панфиловцев" помните? В общем, ребята продолжают своё дело и снимают следующий свой фильм. Очень рад за них! Оказывается, мечты иногда сбываются. Только для этого надо много работать. :)

[>] Trace: Birds
std.hugeping.micro
hugeping(ping,1) — All
2022-05-20 13:36:36


У меня одна из любимых групп: Procol Harum. И вот, вчера нашёл ещё музыку, которая действует на меня просто каким-то волшебным образом! Понимаю, что о вкусах не спорят, но если вдруг, то вот:

https://www.youtube.com/watch?v=4EvoqLw_QB4&list=PLUnxGWZ-jLPYtcGYwon2PQa1N9q_GpOa0&index=38

Удалось при помощи true-grue найти все 3 альбома. Слушаю непрерывно второй день, никогда не думал, что может так действовать. В чём тут секрет?

[>] Оконный менеджер bspwm
std.hugeping
hugeping(ping,1) — All
2022-05-29 12:27:46


# Эксперименты с оконными менеджерами

Я люблю экспериментировать с рабочей средой в Linux. Редакторы, оконные менеджеры, способы создания документации и т.д. Думаю, меня гнали по этому пути любопытство и жажда эксперимента (в том числе и над собой). Помню как в своём первом Linux (KSI Linux) мне решительно не понравились gnome 2 и kde 2. Тогда же я обнаружил прекрасный WindowMaker и процесс был запущен.

Я перепробовал массу оконных менеджеров. В разные периоды меня кидало от минималистических wm до полновесных рабочих столов. Но фундаментально стиль работы не менялся. "Вынос мозга" случился после ion3. Очень достойный тайловый менеджер (написанный харизматичным автором) дал новые ощущения и я подсел! Стоит ли говорить, что на ion3 я не остановился? Тайловые менеджеры тогда набирали популярность и я пробовал всё, что выглядело интересным: dwm, wmii, musca, xmonad, ratpoison, i3wm... Обычные wm я тоже пробовал, но после выхода gnome 3 интерес к экспериментам угас, так как gnome3 в качестве обычного десктопа мне очень понравился.

# Золотой набор

После выхода gnome3 я постепенно успокоился и у меня сформировался свой "золотой" набор.

- Для работы: i3wm (+dmenu).
- Для дома (компьютер, который использую не только я): gnome3.

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

Интересно что wmii был создан с оглядкой на acme! Только вот про Plan 9 и acme я узнал гораздо позже.

Кстати, раз уж зашёл разговор про Plan 9... В rio ("оконном менеджере" Plan 9) при абсолютной аскетичности сохраняется высокая практичность окружения. Я пытался сделать подобие rio на основе fvwm2 (с частичным успехом), но оставил эту попытку. Слишком уж разный "путь" у Linux и Plan 9. Например, в rio ты заранее создаёшь окна в которых запускаются программы, но программа не создаёт окон сама! Интересно, что небезызвестный Drew DeVault делал эмуляцию такого поведения в своём "клоне" wio: https://drewdevault.com/2019/05/01/Announcing-wio.html Но всё это выглядит как подделка, если честно. Так что я оставил Plan 9 "плановое", а Linux - "линуксовое".

# Новое знакомство: bspwm

Многие годы я использовал i3wm и gnome3 и до сих пор считаю это лучшим "набором", который могу рекомендовать всем. Но время от времени я продолжал экспериментировать. Например, познакомился с cwm. В "наборе" своё место занял tmux. И вот, на днях, решил посмотреть на bspwm. Мне этот оконный менеджер настолько понравился, что я решил написать эту заметку. Говорю сразу -- достойный wm! Для любопытных программистов. :)

# К сути

Обычно упоминают что bspwm работает с окнами как с бинарным деревом. Это первая строчка в man bspwm и, честно говоря, с чисто практической точки зрения для меня это мало что значит. Мне же хочется сделать упор на "практике". А с практической точки зрения "суть такова"(c):

- bspwm конфигурируется и управляется только одним способом: утилитой bspc;
- чтобы управлять bspwm с клавиатуры используется внешний "демон" горячих клавиш (обычно sxhkd) из которого вызывается bspc;
- bspwm не поддерживает никаких панелей и прочих "свистелок". Но с помощью bspc вы можете слушать нужные вам события и делать что хотите;
- bspwm выглядит сбалансированным и отполированным как и i3wm. Многие вещи сделаны "интуитивно-верно".

То-есть, мы видим вполне себе тот самый Unix-way да ещё и в качественном исполнении. Вообще, когда я начинал играться с bspwm меня пугала перспектива писать портянки на shell, как это часто бывает. Но... Обо всём по порядку...

# Конфиг bspwm

Конфигурация bspwm это просто shell скрипт в котором в основном присутствуют вызовы bspc. Я приведу фрагменты своего конфига для иллюстрации. Интересно, что файл получается простым, потому что в нём не заданы горячие клавиши. Только конфигурация самого wm!

#! /bin/sh

pgrep -x sxhkd > /dev/null || sxhkd & # запуск демона горячих клавищ
pgrep -x panel > /dev/null || panel & # запуск панельки (об этом - ниже)

setxkbmap -layout "us,ru" -variant "winkeys" -option "grp:caps_toggle,compose:ralt,grp_led:scroll" # раскладка

xsetroot -cursor_name left_ptr # курсор вместо символа X

bspc monitor -d 1 2 3 4 5 6 7 8 9 0 # рабочие столы

bspc config removal_adjustment false # при удалении окна не ребалансить
bspc config swallow_first_click true # первый клик не идёт в приложение

bspc rule -a librewolf desktop='^4' # пример правила
bspc rule -a Xdialog state=floating # ещё пример правила

bspc config pointer_modifier mod4 # ресайзим и таскаем окна мышкой
bspc config pointer_action1 move
bspc config pointer_action2 resize_side
bspc config pointer_action2 resize_corner
bspc config focused_border_color '#ff0000' # рамка активного окна поярче

На самом деле это практически весь конфиг, кроме каких-то локальных нюансов.

# Конфиг sxhkd

Теперь, sxhkd. На самом деле вам не нужно будет писать этот файл с нуля, можно взять типовой из share/doc/bspwm/examples и начать использовать его. В качестве примера, приведу фрагменты своей конфигурации:

XF86AudioLowerVolume
        amixer -q sset Master 10%-

XF86AudioRaiseVolume
        amixer -q sset Master 10%+

# terminal emulator
super + Return
        st

# focus the node in the given direction
super + {_,shift + }{h,j,k,l}
        bspc node -{f,s} {west,south,north,east}

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

# Панелька

В примерах bspwm есть панелька на основе shell скрипта и lemonbar. Я не люблю портянки на shell (хотя и умею их писать и понимать) поэтому я изучил как она работает и написал свою...

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

Что за информация? Например: информация о номерах десктопов, активном десктопе, режиме окна и так далее. Эту информацию нам может предоставить bspc. В режиме bspc subscribe report мы получаем события этого оконного менеджера. Но кроме десктопов нам нужны ещё: часы, батарея, раскладка. Ну и так далее, по вкусу.

Панелька из примеров делает fifo и направляет в эту fifo вывод различных утилит, которые запущены в режиме монитора (выводят строчку в stdout при изменении информации). Например, xtitle -s. Далее, скрипт на sh читает из fifo общий поток, парсит его и даёт на вход lemonbar. Я подумал, что это полотно легко переписать на go (go-рутиты идеально здесь подходят). Я приведу фрагмент того, что у меня получилось:

func read(fname string) string {
// читает файл и возвращает строку
// ...
}

// запускает процесс и отправляет его вывод в канал
func cmd_reader(out chan<- string, prog string, args ...string) {
	cmd := exec.Command(prog, args...)
	pipe, _ := cmd.StdoutPipe()
	reader := bufio.NewReader(pipe)
	cmd.Start()
	for {
		output, _, err := reader.ReadLine()
		if err != nil || err == io.EOF {
			break
		}
		out <- string(output)
	}
}
// парсим информацию о десктопе
func bsp_parse(item string) string {
	c := item[0:1]
	var U, F, B string;
	U = "#144b6c"
	nam := item[1:]
	switch c {
	case "f": // free desktop
		F = "#737171"
		B = "#333232"
		// далее F= B= в каждом case (FoOuU) пропущено для краткости
	case "F": // active free desktop
	case "o": // occupied desktop
	case "O": // focused occupied
	case "u": // urgent
	case "U": // focused urgent
	case "L","T","G":
		F = "#ffffff"
		B = "#333232"
		return fmt.Sprintf("%%{F%s}%%{B%s} %s %%{B-}%%{F-}", F, B, nam)
	default:
		return ""
	}
	return fmt.Sprintf("%%{F%s}%%{B%s}%%{U%s}%%{+u}%%{A:bspc desktop -f %s:} %s %%{A}%%{B-}%%{F-}%%{-u}",
		F, B, U, nam, nam)
}

func main() {
	bspc_in := make(chan string)
	xtitle_in := make(chan string)
	mail_in := make(chan string)
	xkb_in := make(chan string)
	go cmd_reader(bspc_in, "bspc", "subscribe", "report") // десктопы
	go cmd_reader(xtitle_in, "xtitle", "-s") // заголовок окна
	go cmd_reader(mail_in, "checkmail", "-s") // новая почта
	go cmd_reader(xkb_in, "xkbmon") // раскладка
	var bspc, bat, clock, mail, xtitle, xkb string;
	for {
		select {
		case bspc = <-bspc_in:
		case xtitle = <-xtitle_in:
		case mail = <-mail_in:
		case xkb = <-xkb_in:
		case <-time.After(time.Second * 30):
		}
		if bspc == "" {
			continue
		}
		bat = read("/sys/class/power_supply/BAT1/status")
		bat += ":" + read("/sys/class/power_supply/BAT1/capacity")
		curt := time.Now()
		clock = curt.Format("02-01-2006 Mon 15:04")
		bsp := strings.Split(bspc, ":")
		desk := ""
		for _, item := range bsp {
			desk += bsp_parse(item)
		}
		fmt.Printf("%%{l}%s%%{c}%s%%{r}%s %s%% %%{F#000000}%%{B#ffffff}%s%%{B-}%%{F-}[%s]\n", desk, xtitle, mail, bat, clock, xkb)
	}
}

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

# Особенности использования

В целом, bspwm из коробки вполне себе годен, но мне не хватало некоторых вещей. На этих нюансах остановлюсь подробнее.

Если в запущенном wm просто начать запускать терминал по super + Return, то заполняться пространство будет примерно так (что-то вроде спирали Фибоначчи):

+----------+----------+
|          |          |
|          |          |
|          |          |
+----+-----|          |
|    |     |          |
|    +--+--+          |
|    |  +--+          |
+----+--+--+----------+

При этом, если закрыть какое-то из окон, то оставшиеся окна автоматически "сбалансируются". Это напоминает поведение динамических wm (которое мне не нравится). К счастью, в bspwm есть настройка: bspc config removal_adjustment false.

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

super + shift + Return # запуск "вертикально"
        bspc node -p south; \
        st

Таким образом, я могу быстро создавать терминалы в одном столбце:

+----------+----------+
|          |          |
+----------+          |
|          |          |
+----------+     2    |
|    1     |          |
+----------+          |
|          |          |
+----------+----------+

Далее, выбрав определенный терминал хоткеями или мышкой можно максимизировать его на всё пространство (режим монокля, по умолчанию super + m) или поменять его (1) с самым большим окном (2) примерно так, как это сделано в dwm. (Для этого используется хоткей super + g).

# swap the current node and the biggest window
super + g
        bspc node -s biggest.local
# в дефолтном примере было: bspc node -s biggest.window
# в таком режиме большое окно выбиралось со всех десктопов
# что было неудобно
# заменил на .local

Мне ещё не хватало возможности растянуть терминал вертикально:

+----------+----------+
+----------+          |
+----------+     2    |
|          |          |
|    1     |          |
|          |          |
|          |          |
+----------+          |
+----------+----------+

Я смог добиться такого поведения, правда, небольшим хаком:

super + v
	bspc node north#north#north#north#north#north -z top 0 -2000; \
	bspc node north#north#north#north#north -z top 0 -2000; \
	bspc node north#north#north#north -z top 0 -2000; \
	bspc node north#north#north -z top 0 -2000; \
	bspc node north#north -z top 0 -2000; \
	bspc node north -z top 0 -2000; \
	bspc node -z top 0 -2000; \
	bspc node -z bottom 0 2000

Дело в том, что окно не может быть расширено, если над ним есть несколько максимально суженных окон. Возможно, это баг bspwm. Возможно, есть более элегантное решение, но текущее тоже работает!

Всё эти хитрости помогли мне заменить табы и стек окон в i3wm.

Ещё одна штука, которая мне нравилась ещё по Plan9 -- возможность именовать окна по ситуации. В случае bspwm, правда, именуем не окна, а рабочие столы. Я написал скрипт, который вызывает Xdialog (Xdialog --stdout --under-mouse --inputbox "Window name" 0 0) и просит имя для текущего десктопа. Потом делает: bspc desktop focused --rename имя. Повесил на хоткей и всё -- можно именовать!

Ещё один пример гибкости простых решений. Скрипт который делает все окна на 9м десктопе "плавающими". За основу был взят пример с Arch wiki, но немного доработан (отслеживается не только создание, но и перемещение node):

#!/bin/bash

# change the desktop number here
FLOATING_DESKTOP_ID=$(bspc query -D -d '^9')

bspc subscribe node_add node_transfer | while read -a msg ; do
    if [ "${msg[0]}" = "node_transfer" ]; then
        desk_id=${msg[5]}
        wid=${msg[3]}
    else
        desk_id=${msg[2]}
        wid=${msg[4]}
    fi
    [ "$FLOATING_DESKTOP_ID" = "$desk_id" ] && bspc node "$wid" -t floating
done

# Хакерская штучка

bswpm создаёт впечатление добротной и отполированной хакерской "штучки". Например, по умолчанию super + tab работает именно так как нужно! Переключаясь между последними двумя рабочими столами. Работа с окнами просто реактивная. Изменение размера окон мышкой работает тоже отлично. Также мышкой можно перемещать тайловые окна, меняя их местами. Много мелочей, которые незаметны, когда они работают "правильно". По стабильности на данный момент тоже нареканий нет. Кстати, параллельно с bspwm я также посмотрел herbstluftwm (никак не могу выучить название этого wm!). Но ощущения "отполированности" с этим wm у меня не возникло, хотя тоже -- неплохой тайловый менеджер и подход к управлению/конфигурированию очень похож.

# Вместо заключения

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

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

[>] Re: Оконный менеджер bspwm
std.hugeping
hugeping(ping,1) — vvs
2022-05-29 17:14:12


Да я тоже люблю: tmux, emacs, acme и vim тоже пользовался. И всё это может сосуществовать с любым wm.

vvs> P.S. А ты объектно ориентированное программирование в bash видел?

Не, не видел. На баше я очень много писал, но я его не люблю. За нечитаемость, за неочевидные нюансы экранирования и подстановок. Особенно после того, как увидел rc из Plan9. Так что сложные вещи я стараюсь на нём не писать.

> сам же написанный на bash и вычисление с помощью eval.

Вот это кошмар с точки зрения безопасности :) Любая малейшая ошибка и твой скрипт начинает выполнять код, поданный извне. Конечно, для быта он годится.

[>] Re: Оконный менеджер bspwm
std.hugeping
hugeping(ping,1) — btimofeev
2022-05-30 10:40:57


btimofeev> А что мешает дома для разных пользователей использовать разные wm?

Банальная лень. Так просто включил - побраузил - выключил. (Комп всегда в режиме suspend to ram). И таких "заходов" в течении дня -- масса. :)

А так, можно конечно. Но мне gnome3 в целом нравится, так что я не сильно страдаю. :)

[>] Re: Оконный менеджер bspwm
std.hugeping
hugeping(ping,1) — old.pc
2022-05-31 08:44:11


old.pc> Честно говоря, i3wm не производит впечатления "готового из коробки".

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

И трей, кстати, в i3wm из коробки есть. Это значит, что штатная панелька i3bar его поддерживает, и не надо запускать что-то вроде stalonetray (если трей вообще нужен).

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

[>] Использование github workflow
std.club
hugeping(ping,1) — hugeping
2022-08-28 18:19:03


Некоторое время назад у проекта INSTEAD на github отвалился travis-CI. В чём там дело я не помню сейчас, но несколько месяцев CI не работала. Вообще, мне не очень нравится идея завязываться на инфраструктуру которую предоставляют компании. Поэтому сначала я думал просто радикально отказаться от всё этой "блажи". Но как-то постепенно я начал переводить все проекты на рельсы github workflow...

Я понял, что сами по себе сценарии могут быть полезны в плане изучения. Например, теперь можно увидеть как собирается версия emscripten: https://github.com/instead-hub/instead/blob/master/.github/workflows/emscripten.yml

Можно изучить сценарий и повторить уже на реальной машине.

На данный момент автоматизирована сборка проектов: instead, instead-cli, metaparser, metaparser-js.

P.S. С instead есть нюанс, собранная версия под Windows -- нерабочая (битая таблица импорта). Похоже, причина в mingw в Ubuntu. Имейте в виду. Интересно, что в wine, при всём этом, она работает. :)

[>] Переименовал github аккаунт
std.hugeping.micro
hugeping(ping,1) — All
2022-11-13 19:02:41


Теперь мои личные репозитории находятся здесь: https://github.com/hugeping

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

А история hugeping (хотя он тоже из "детства") -- довольно забавная и не связана с позерством.

Просто, когда-то я играл с бразильцами-школьниками в одну замечательную 2d ctf сетевую игру. У меня был длинный пинг, и я проигрывал. Но игра мне так нравилась, что я играл не смотря на проблемы с откликом. Помню, меня кикали с сервера за что-то, а его ронял. А потом написал бота, который активировался автоматически если отпустить клавиши... Бот делал предсказание траекторий поэтому я стал играть довольно эффективно, даже не смотря на пинг :)

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

Всегда с теплотой вспоминаю это время, почему-то. В общем, hugeping лучше gl00my. :)

[>] Re: Краткая информация по этому узлу
ping.local
hugeping(ping,1) — vvs
2022-11-15 05:34:38


vvs> Какие-то глюки. Забираю ленту по RSS и вперемешку с сентябрём идут сообщения за март и даже за август прошлого года.

А можно указать конкретный url rss ленты?

[>] Re: Краткая информация по этому узлу
ping.local
hugeping(ping,1) — hugeping
2022-11-15 06:00:19


Посмотрел содержимое: https://club.hugeping.ru/echo/all/rss

Вроде всё по датам рассортировано верно. Нужны детали!
url ленты, название клиента...

P.S. Сам читаю через RSS читалку на андроиде, вроде не замечал такой проблемы.

[>] Re: Краткая информация по этому узлу
ping.local
hugeping(ping,1) — vvs
2022-11-16 10:39:25


vvs> Сейчас проверил - те же глюки.

Я так и проверил. Вроде всё чисто. Ну вот команда, например:

curl -s https://club.hugeping.ru/echo/all/rss | grep -oP '(?<=<pubDate>).*?(?=</pubDate>)'
Выдаёт даты публикаций. Всего публикаций 100. Порядок дат, от самых свежих: 2022-11-15 14:04:43 до самых старых: 2022-01-21 09:32:52

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

[>] Re: Краткая информация по этому узлу
ping.local
hugeping(ping,1) — vvs
2022-11-16 16:40:49


vvs> Так вот же: номера 31 и 33 - 11 марта и 25 августа.

Вот теперь заметил, два сообщения. Сейчас посмотрим что это...

[>] Re: Краткая информация по этому узлу
ping.local
hugeping(ping,1) — hugeping
2022-11-16 17:01:01


vvs>> Так вот же: номера 31 и 33 - 11 марта и 25 августа.

hugeping> Вот теперь заметил, два сообщения. Сейчас посмотрим что это...

Похоже, что я показываю записи в том порядке, в котором они приходят на станцию. А вот тег pubDate содержит в себе дату из исходного сообщения. Тут два варианта:

1) сбитое время на станции, с которой пришло сообщение
2) сообщение "долго" до нас шло

Оба варианты возможны, но лента показывается в том порядке, в каком сообщения дошли до станции.
P.S. Edited: 2022-11-16 17:01:13

[>] Секретный проект: rein
std.hugeping
hugeping(ping,1) — All
2022-11-22 17:51:00


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

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

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

Re:instead -- интересный, но всё-таки камерный. Наверняка я ещё вернусь к нему (если будет такая возможность), но в целом -- он готов.

То, что пишу сейчас, я назвал rein. Это игрушка, которая вобрала в себя элементы всего того что я делал раньше, но с учётом накопленного опыта. Там есть что-то от instead и re:instead. Идеи pico8 и uxn. В нём я сделал то, что так и не смог (побоялся!) сделать в INSTEAD. И то, что совершенно не нужно re:instead...

Звуковую систему пишет true-grue -- и это очень интересный опыт. Во первых, вдвоём писать веселее! А во-вторых, я уверен что учусь у него новому. В том числе и писать код чище. Или хотя бы стремиться к этому. :) Звуковую подсистему я никогда не смог бы написать сам, хотя всегда мечтал, чтобы она была и в instead и в reinstead. Речь, конечно, идёт о синтезе. Так что без true-grue проект был бы невозможен. И я немного паранойю по этому поводу, так как привык рассчитывать только на себя.

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

P.S. В этот раз я решил проявить упорство и для обсуждений #rein и не только создал irc канал. Всё! Больше никаких телеграм-чатов! Так что если что, заходите в на irc.oftc.net канал #rein.

[>] Солярисы
std.hugeping
hugeping(ping,1) — All
2022-11-28 12:35:43


Мне очень нравится фильм "Солярис" Тарковского. Книгу С. Лема я читал давно, и кажется, что она не произвела на меня особого впечатления. Тот самый случай, когда фильм -- самостоятельное произведение.

Лет 20 назад смотрел американский вариант Соляриса. И помню, что в целом он мне тоже понравился. И как-то решил пересмотреть и его. Сравнить с воспоминаниями. Может быть понять, как сильно изменился я за это время.

Не буду стесняться и скажу сразу: фильм мне снова понравился! Да, произведение Тарковского это другая весовая категория. Да, американский Солярис сделан "по мотивам" нашей картины (и снова, идеям книги оставлено второстепенное место). Да, можно сказать что новый фильм -- американское кино, более грубое, "попсовое" и даже вульгарное... Но. Но что-то после просмотра засело в душе. Так же как и 20 лет назад. В чём дело?

И тут я понял, что секрет кроется в том, что американский фильм дополняет картину Тарковского! Не повторяет целиком, но дополняет. Содержит элемент, которого не хватило Тарковскому!

При всей грубой упрощённости и наивности американской версии, там есть то, чего не хватает (совсем чуть-чуть) нашему Солярису!

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

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

> -- Everything we've done is forgiven...

Диалектика. Бог не только справедлив, но и милостив.

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

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

> Откр.21:1-4 И увидел я новое небо и новую землю, ибо прежнее небо и прежняя земля миновали, и моря уже нет.

Без оговорок. "Нам всё прощено". Эта мысль -- как молния.

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

P.S. Кстати, картина Содерберга можно сказать "провалилась" в прокате. Я не удивляюсь. Но всё-таки, почему всегда так?
P.S. Edited: 2022-11-28 12:43:25

[>] Re: Солярисы
std.hugeping
hugeping(ping,1) — vvs
2022-11-29 09:02:26


vvs> КМК Тарковского так хорошо приняли на Западе именно потому, что он отказался от СССР.

Конечно, этот элемент тоже есть. Но в том же Солярисе, Сталкере или Рублёве я не вижу "полит" повестки. Для меня это "вечные" фильмы. И думаю, они такими и являются.

А вот Жертвоприношение я не понял. Показалось уже какое-то "европейское" кино...

[>] Эха по rein
std.rein
hugeping(ping,1) — All
2022-12-24 20:05:29


Чтобы было место, где можно обсуждать вопросы движка, создал эху std.rein.

[>] rein: ищу соратников
std.rein
hugeping(ping,1) — hugeping
2022-12-24 20:09:21


Опубликовано здесь: https://www.linux.org.ru/forum/talks/17069851

Привет! Хочу представить наш новый проект -- rein. Пока он находится в альфа стадии, поэтому пишу в надежде найти соратников. Сейчас, в целом, всё работает, но продолжает меняться, так что пока релиза нет, но уже нужна обкатка.

Что такое rein?

Если кто-то слышал о таком движке как INSTEAD (а может быть, и о "камерном" reinstead), то постепенная эволюция и тяга к минимализму привели к появлению очередной "игрушки" для экспериментов. Кратко - это переносимое "микроядро" на Си + SDL2 для графики + Luajit в качестве языка программирования + интересный синтез звука (синтезатор пишет true-grue). Так же, если вам интересны такие вещи как: PICO-8 и TIC-80/uxn/Decker/instead/reinstead - то rein имеет что-то общее с каждым из этих проектов, но всё-таки у него свой путь и своя философия.

Более развёрнуто: https://github.com/hugeping/rein/blob/master/doc/api-ru.md

Скриншоты: https://github.com/hugeping/rein

На данный момент есть демки, включая порт моей старой игры с pico-8 с ужасным кодом, но тем не менее:

Emscripten вариант в браузере: https://club.hugeping.ru/lib/uploads/rein/rein.html?aadv.lua) -- (возможно потребуется кликнуть по canvas для звука)

Приложения-инструменты пишутся на самом rein. Сейчас есть: редактор, irc клиент для связи с разработчиками, редактор инструментов и трекер.

Если возникнут вопросы, можно придти на irc канал irc.oftc.net #rein или на станцию ping: https://club.hugeping.ru/std.rein/

Или соберите rein (из зависимостей только SDL2 и luajit) и запустите: ./rein irc - клиент автоматически подключит вас к чату.

Страница проекта на github: https://github.com/hugeping/rein

[>] rein: Фаза 1
std.rein
hugeping(ping,1) — All
2023-01-14 10:06:12


Соратников найти не удалось, поэтому наполеоновские планы были скорректированы. Можно сказать, что проект сейчас находится на стадии "Фаза 1", которую я описываю так:

# Приоритет на личное использование

Средства разработки будут допиливаться не до состояния "продукта для всех", а до необходимого минимума. Например, не будет аналога splore pico8 (сетевого репозитория). Запуск "приложений" будет осуществляться из ком. строки (rein edit, например). Для создания игр этого достаточно, так как игра вместе с rein это приложение вида - распаковал и запустил.

Развитие инструментария - дело сообщества (инструменты пишутся на самом rein), но раз сообщество не удаётся собрать, то буду пользоваться чем есть.

# Андроид версии пока не будет

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

# Пиара не будет

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

# Никаких новых фич до выпуска игры

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

# Готовность

Готов для личного использования автором rein и энтузиастами. :) В целом, все основные функции присутствуют и опробованы. Api меняться (значительно) не должно. github страничка доведена до "презентабельного" состояния: https://github.com/hugeping/rein

Эху std.rain я оставлю, пусть будет, если вдруг всё-таки будут обсуждаться какие-то вопросы.

# Мысли

В очередной раз стало понятно, что есть разные задачи. 1) сам движок 2) создание творческой группы людей, в которой этот движок мог бы занять своё место. В том числе и в статусе средства для обучения программированию. Тот самый "кружок программистов", ламповый уют и электронные журналы с подкастами :) И задача 2, возможно, даже гораздо сложнее, особенно если представить себе гипотетическую аудиторию rein :) В общем, сейчас я не вижу реальной "почвы", кроме собственного увлечения, а создать эту почву -- совсем другая история. Но, по крайней мере, часть работы проделана. :)

До связи!

[>] В математике все говорят о Боге // А. Савватеев
std.hugeping
hugeping(ping,1) — All
2023-01-21 11:59:49


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

Так вот, true-grue кинул ссылку на ещё одну его "лекцию": https://youtu.be/Vz2Rl2bijaU которую я и предлагаю вашему вниманию.

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

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

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

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

В общем, такие "передачи" нужны. Нужно говорить. Не молчать. Даже если "не до того" и даже если устал "от безжалостных уличных драм"(c).

[>] Снова openbsd
std.hugeping.micro
hugeping(ping,1) — All
2023-01-21 12:41:02


После долгого перерыва расчехлил старый thinkpad и накатил на него openbsd, которая там и стояла когда-то... Поставил и в очередной раз проникся. Чисто, просто, дубово. Всё как я люблю. Правда, пришлось кое-что отключить в настройках по умолчанию:
1) включить hyperthereading в /etc/sysctl.conf (в openbsd это по умолчанию оключено теперь)
2) отключить в /etc/rc запуск reorder_kernel

В качестве оконного менеджера не стал особо мудрствовать и выбрал cwm.

openbsd вроде как во главу угла ставит "безопасность", но мне кажется любят её не за это, а за тот самый KISS.

P.S. Сейчас снова приходится работать с ядром Linux и, в основном, это вызывает негативные эмоции. Очень много кода, который написан "как попало" и сделать с этим, похоже, ничего нельзя. Это плата за популярность о которой, вроде, все мечтали... Интересно, сколько таких "разачаровавшихся" хакеров в openbsd? :)

[>] Re: В математике все говорят о Боге // А. Савватеев
std.hugeping
hugeping(ping,1) — vvs
2023-01-21 16:43:08


Спасибо за отклик. Да, постараюсь почаще что-то выкладывать. :)

[>] Научно открываемый Бог
std.hugeping.micro
hugeping(ping,1) — All
2023-02-19 16:16:13


Натолкнулся на текст, который удивительно "в тему" моей старой заметки. ii://CVvGRZBv7ZzMIm0TFWeY (Абсолютно ли познание?)

Отрывок из письма А. Эйнштейна к Морису Соловину от 30 марта 1952 года (А.Эйнштейн, Собрание научных трудов, Наука, Москва, 1967, т.4, с.567):

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

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

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

http://xray.sai.msu.ru/~lipunov/text/shkl/node7.html (О проблеме сверхразума в астрофизике. // В.М.Липунов)

Упоминание цитаты заметил при просмотре youtube ролика: https://www.youtube.com/watch?v=tvzfEA75CRQ (ЧТО уничтожает ВСЕ цивилизации в космосе?)

[>] Никто не забыт, ничто не забыто
std.hugeping
hugeping(ping,1) — All
2023-05-09 12:09:20


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

Первые воспоминания о Дне Победы тоже связаны с этим украинским городком. Заполненные ветеранами трибуны стадиона, блеск золотых медалей и запах тройного одеколона дедушки. Клевер, дым от пороха... Улыбки ветеранов.

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

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

> И отрёт Бог всякую слезу с очей их, и смерти не будет уже; ни плача, ни вопля, ни болезни уже не будет, ибо прежнее прошло.

Мне больно наблюдать во что превратилась моя вторая родина-Украина и как некогда братские народы убивают друг друга. И тем большую ненависть я испытываю к империалистам США, которые выпустили это зло. К тем, кто стравил нас ради стратегических "высших" целей. И началось это задолго до СВО. Они делали и делают это всегда. Они делали это не только с нами.

Они привели к власти в Украине преступников, которые предали свой народ, создав из него бесовскую рать. Верю, что не из всех. Не хочу верить. И что теперь? Делай что должно и будь что будет! Господь разберётся. Победа будет за нами!

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

С Днём Победы! Никто не забыт, ничто не забыто! Победа будет за нами!

P.S. А ещё, в детстве, мы играли в "войнушку". И никто не хотел быть "фашистом". Интересно, где сейчас мои друзья детства?

[>] Координата Z // Захар Прилепин
std.hugeping.micro
hugeping(ping,1) — All
2023-05-13 09:43:39


После очередного теракта, в котором погиб Александр Шубин и чуть не погиб Захар Прилепин (слава Богу, выжил!), заказал последнюю книжку Прилепина "Координата Z". Книжка хорошая и нужная! Единственный недостаток -- короткая! Читая не спеша, закончил буквально за пару дней.

> Россия будет воевать с Украиной, пока не победит саму себя.
> Россия будет воевать сама с собой, пока не победит Украину.

Спасибо Захару за то, что он делает!

[>] Носители творчества
std.hugeping
hugeping(ping,1) — All
2023-05-13 11:23:13


Я всегда сам себя убеждал что способен разделять творчество и "носителя" этого творчества. Ну, действительно, примеров, когда носитель не является образцом для подражания можно привести массу. От Хана Райзера, разработчика файловой системы ReiserFS (убил жену) до солиста Queen Фреди Меркьюри или Шопена с его ненавистью к русским. А уж среди писателей так вообще... психопаты, неврастеники и деспоты всех мастей -- встречаются сплошь и рядом. Чтобы не выглядеть провокатором, назову лишь Филип К. Дика. И что теперь, не читать? Так я рассуждал... И это работало! (Впрочем, я не мог пользоваться ReiserFS. А ведь кто-то её сопровождает.)

Но после начала СВО я незаметно для себя понял, что не хочу больше слушать БГ и Шевчука. И если БГ я и раньше слушал мало, то очень многие вещи Шевчука мне нравились! Я не установил для себя "табу", нет. И песни, вроде бы, те же... Так в чём же дело?

Я специально посмотрел интервью БГ, данное им после начала СВО каким-то либералам. Смотрел и не мог поверить. Я часто слышал мнение, мол "певец поёт ртом, а мозг и не нужен". Но объявить идиотами БГ или Шевчука -- я не могу! Как написал сам Шевчук в своём письме, он против любых войн. "Не стреляй" написана в 1980. Но он же играл солдатам в Чечне, поддерживал их. А сейчас "стыдно"?

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

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

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

Зверобой "Мой Мариуполь" https://www.youtube.com/watch?v=pJ8XXQHl8bU
Джанго "Мы не уйдём" https://www.youtube.com/watch?v=aEkqA5L2hl0
Калинов Мост "Друг" https://www.youtube.com/watch?v=Sqh6-kDr6Mo

Смешное количество "лайков" на yt -- тема для отдельной заметки.

[>] Re: Носители творчества
std.hugeping
hugeping(ping,1) — vvs
2023-05-15 19:29:00


vvs> Кстати, старый вопрос: является ли подлость просто такой точкой зрения? Я не могу удовлетворительно ответить на него. С одной стороны я не могу простить подлость, но с другой - холодный рассудок мне говорит, что я субъективен и это не научно.

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

[>] Re: Носители творчества
std.hugeping
hugeping(ping,1) — vvs
2023-05-17 13:51:02


vvs> а дело в том, что оно у всех "разное".

Я об этой подмене и говорю!

Разное, значит теряется "ценность"? :) Почему твоя, конкретно твоя совесть не является тем, чему можно доверять, если это "поисследовать", честно вглядевшись в себя? Ты человек, не надо этого стесняться и выкидывать все то, что невозможно разложить рассудочно. Можно же использовать все средства и возможности познания.

[>] Re: Редактор acme: пишем почтовый клиент
std.hugeping
hugeping(ping,1) — hugeping
2023-05-24 09:32:15


Давно хотел переписать свой клиент на Go или на Python. И всё-таки переписал: https://github.com/hugeping/plan9hacks/blob/master/linux/mu-query.py

Код у него почище, чем грязная реализация на Lua и его можно понять. ;)

Интересно, что не смотря на то, что python реализация на ~250 строк меньше, по объёму исходников оба скрипта очень близки. И это не смотря на выразительность Python и тот факт, что в Lua варианте пришлось многие функции писать самому...

Прошло уже довольно много времени, а я всё-так же пользуюсь для работы с почтой acme + mu + mbsync + msmtp. Кстати, в апстрим mbsync уже всё хорошо с UTF-8, так что патчить его больше не надо.

https://club.hugeping.ru/lib/uploads/mu-query.png

[>] Re: Редактор acme: пишем почтовый клиент
std.hugeping
hugeping(ping,1) — vvs
2023-05-27 20:03:16


vvs> У людей бывает очень разное понятие "выразительности", смотря о каком уровне абстракции идёт речь.

Согласен. Я это скорее в ироничной форме сказал. В том смысле, что в одну строку питона можно упихать кучу разных вещей. :)

[>] Re: Секретный проект: rein
std.hugeping
hugeping(ping,1) — hugeping
2023-08-06 12:04:38


Записали с true-grue первый ролик про работу со звуком в rein.

https://www.youtube.com/watch?v=F5-IFaDAxXo

[>] Укры атакуют станцию :)
ping.local
hugeping(ping,1) — All
2023-08-09 23:40:22


Ха! Сегодня была атака на мою маленькую малинку. Похоже, написали скрипт который постит сообщения непрерывно, успели загадить базу на 9Гб.

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

IP адреса атакующих:

104.28.155.206
104.28.192.94
104.28.222.238
104.28.224.94
104.28.254.238
104.28.156.60

Pages: 1 2 3 4 5 6 7 8 9