Pages: 1 2 3
RSS
# Re: Скриншот области экрана X11 в clipboard
linux.14
hugeping(ping,1) — vvs
2021-01-26 15:02:33


vvs> xclip, конечно, полезная вещь, но у него есть недостаток: невозможно скопировать несколько типов данных одновременно, например html и txt для обработки разными приложениями.

А какими средствами ты пользуешься?

# Скриншот области экрана X11 в clipboard
linux.14
hugeping(ping,1) — All
2021-01-26 13:27:43


В gnome3 часто пользовался gnome-screenshot и делал скриншоты области экрана в телеграм через клипбоард.

Оказалось, что то же самое легко сделать и без gnome-screenshot:

import png:- | xclip -selection clipboard -t image/png

# Re: scene_use в stead3
std.prog
hugeping(ping,1) — Dima
2021-01-25 09:28:11


Dima> Вопрос: как реализовать данный метод в стед3 через классы. Например: в сцене есть свободный конец веревки и я хочу привязать его к другому объекту сцены или инвентаря, при этом не добавляя конец веревки в инвентарь.

В stead3 данный метод (use предмета сцены на предмет сцены) был признан ошибочным и упразднён.

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

Если очень хочется, можно пытаться сделать что-то своё (например, меняя форму курсора как сделано в модуле use: https://github.com/instead-hub/stead3-modules/tree/master/use ), но штатного механизма - нет.

# Re: Трансляция моего блога в ЖЖ и в Telegram
std.hugeping
hugeping(ping,1) — boscholeg
2021-01-25 07:36:17


boscholeg> Тогда надо еще добавить трансляцию сообщений в ютуб. Там есть сообщество и можно постить сообщения. Этим сейчас активно пользуются.

Да цели особенной нет. Просто решил почитать ЖЖ в его текущем виде, сделал аккаунт. Потом понял, что могу запостить туда сообщения с ноды. И понеслась. :)

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

# Трансляция моего блога в ЖЖ и в Telegram
std.hugeping
hugeping(ping,1) — All
2021-01-24 14:15:52


Привет всем, кто на связи!

Теперь, содержимое моего блога транслируется в ЖЖ: https://hugeping.livejournal.com и в телеграм канал: https://t.me/pingblog

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

Stay tuned! :)

# Re: Анонимность и искренность
std.hugeping
hugeping(ping,1) — boscholeg
2021-01-22 11:47:55


boscholeg> Я конечно уже не боюсь сказать, что думаю.

А я вот наоборот, чем дальше, тем сдержанней. :) Хотя потребность иногда ощущается.

# Re: Анонимность и искренность
std.hugeping
hugeping(ping,1) — Andrew Lobanov
2021-01-21 16:33:41


AL> Но это моё личное мнение и я не хочу затевать спор на эту тему. По старому интернету я всё равно тоже немного скучаю.

Я когда писал заметку, всё думал про Фидо написать, но так и не написал.

Согласен, в Фидо не было анонимности. Но мне кажется, что и формат общения там был несколько иным. Мне сейчас уже трудно вспомнить, но кажется, я там больше как раз флеймил и "навязывал", чем размышлял. :) Но был нетмейл, по которому общение шло уже более мирно-интимно.

Наверное, всё-таки, формат блога, это другое.

# Re: Анонимность и искренность
std.hugeping
hugeping(ping,1) — vvs
2021-01-20 13:54:09


vvs> если хотите резко изменить свою жизнь - посностью поменяйте круг общения.

Совет звучит как что-то простое, но ведь в реальной жизни это практически невозможно?

# Редактор ACME
plan.9
hugeping(ping,1) — All
2021-01-20 12:17:21


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

А идея у acme оказалась простой и при этом мощной. Я в течении 2-х месяцев разрабатывал в нём игру с текстовым вводом, и это было удобно. Привык настолько, что забыл даже часть клавиатурных комбинаций emacs. :)

Итак, в чём идея acme? Идея acme состоит в том, чтобы дать прослойку между ОС и человеком в виде TUI. И это всё.

1) Acme - это просто столбцы, в которых могут создаваться "окна", отображающие текст. Просто текст, поток текста. Без цвета, стилей, номеров строк... Лишь текст.

2) Над окнами есть области, в которых тоже может быть текст, которые играют роль меню.

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

4) Вы можете "выполнять" команды системы прямо из текста и/или меню. Например, вызывать спеллчекер, форматирование кода, увеличение отступа -- всё это должно быть Unix командами, которые будут выполняться для всего текста или выделенной его части. Текст приходит через stdin и выходит через stdout. Текст может быть внедрён в редактируемый текст или отображаться в отдельном окне (например, ошибки компилятора). Скрипт может понимать, что он запущен из среды acme и управлять редактором через файловую систему!

5) Можно открывать и просматривать файлы/каталоги, переходить на нужные строки, делать поиск в тексте. Всё это делается "выполнением" текста. Есть базовая возможность делать обработку текста на языке, который похож на sed. (Встроенная команда Edit).

При такой простой идее получается, что acme это не просто редактор, а интерфейс к ОС! Настоящий Unix подход, у которого есть неоспоримое преимущество -- простота и низкий порог вхождения! Никаких сочетаний клавиш, всё интуитивно понятно и естественно. Как только привыкаешь к этому, чувствуешь как твоя голова отдыхает!

Не смотря на простоту, acme оказывается мощным. В том числе благодаря возможности работать с ним, как с файловой системой. Так как мы можем ловить события редактора и управлять им, то, к примеру, для acme есть почтовый клиент Mail, который выглядит так же, как и всё остальное -- просто текст с активными элементами. Можно запустить win -- "терминал" и выполнять в нём команды. acme умеет дампить и восстанавливать своё состояние. Сразу оговорюсь, до мощи Emacs acme далеко. Хотя бы потому, что в acme окнах возможно отображать только текст. Но учитывая его простоту, мощности на строку кода у acme больше!

Когда я использовал acme для написания игры, то выглядело это примерно так:

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

2) Правый столбец содержал окна: вывод спеллчекера, файл с автокомандами.

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

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

# Анонимность и искренность
std.hugeping
hugeping(ping,1) — All
2021-01-20 10:39:36


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

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

Потом посмотрел на IDEC, подумал, что давно не писал никаких заметок и тут... вдруг почувствовал один интересный момент.

Я давно публикуюсь в интернете под своим реальным именем. Я всегда считал, что если человек стесняется/прячется, то и цена его словам -- грош. Но в том же ЖЖ я публиковался под ником. Меня никто не знал. Работодатель, друзья, родственники. И я поймал себя на мысли что сам этот факт может работать как триггер!

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

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

Например, если я собираюсь написать пост о Христе, внутренний цензор говорит мне, что-то вроде: Ну сейчас опять атеисты/агностики придут и будут спорить, а мне придётся быть корректным. Не стоит. А может быть, я напишу что-то неканонично? Тоже не годится! Я же православный! Думаю написать о каких-то переломных мировоззренческих моментах. Например о том, что внутренне "Я" нифига не стареет. И в 42 ты такой-же 10-летний мальчишка. Это могут найти знакомые/родственники/работодатели. Что подумают? Ну и понеслось. Даже сейчас мне захотелось отредактировать последний абзац, но не в этот раз. :)

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

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

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



# Re: Установка INSTEAD-EM и INSTEAD-JS на vps
std.tech
hugeping(ping,1) — lnp3
2020-12-18 18:18:15


lnp3> Сначала решил делать стандартно, а теперь хочется переделать на парсер. Мне кажется, так интереснее, но времени переделка может отнять много. Думаю.

Я бы не стал переделывать, если часть кода уже написана.

На самом деле, парсер ещё сузит аудиторию.

P.S. Графика -- это круто!

# Re: Установка INSTEAD-EM и INSTEAD-JS на vps
std.tech
hugeping(ping,1) — lnp3
2020-12-17 16:22:14


В дистрибутиве INSTEAD-EM есть файл README. Прямо внутри zip архива.
Если что-то непонятно в этом README, можно спросить здесь, но уже конкретней.

По instead-js не смогу проконсультировать. Проще всего спросить на телеграм каналах @insteadtalk или @insteadchat у автора (@technix),

# Бывают крылья у художников
std.hugeping
hugeping(ping,1) — hugeping
2020-12-12 16:49:57


Только что услышал на канале "Культура".
Передача "Линия жизни. Евгений Стеблов" от 12.10.2020

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

Геннадий Шпаликов

# Re: Эффективность против простоты
std.hugeping
hugeping(ping,1) — vvs
2020-12-07 16:47:35


vvs> Инженерное решение - это всегда компромисс между желанием и имеющимися ресурсами. Наука и искусство этим напрямую не связаны, хотя, например, физика косвенно зависит от инженерных решений.

Можно ли сказать, что какие-то числа объективно большие, а какие-то -- не очень большие?

На первый взгляд, нельзя. Ведь всегда можно выбрать число больше. И вообще, 10 это много или мало? Относительно 1 -- много! Но мне кажется, что есть всё-таки какая-то мера сложности, которая должна оцениваться относительно меры сложности человека и мира, в котором он живёт.

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

Были 8битные процессоры. Объективно -- не хватало. Потом 16, лучше, но не всегда хватало. 32 бита! Вообще отлично! На самом деле 32 бит для большинства задач хватало, а то что больше - ну писали библиотеки. Но вот адресное пространство 32 бит, как-то не очень... 64 бита. Нужно ли 128бит? 256? 512? (Я не про векторные инструкции и не про специализированные аккселераторы крипты, к примеру, а именно про регистры общего назначения).

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

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

Та же скорость света - как предел распространения сигнала.

Так что мне кажется, что тут можно говорить об антропном принципе в оценке сложности. :)

Насчёт Singularity возникли мысли, но уже не буду писать, а то много текста. :)

# Re: Эффективность против простоты
std.hugeping
hugeping(ping,1) — vvs
2020-12-07 15:54:52


vvs> Другой пример. Одна ОС реализует аппаратную защиту памяти, а другая полагается для этого на компилятор, как Singularity.

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

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

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

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

# Re: Эффективность против простоты
std.hugeping
hugeping(ping,1) — vvs
2020-12-07 15:44:15


Да нет, видно там всё по коду.

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

P.S. Я не спорю. Просто делюсь своими наблюдениями. Ты можешь считать их ошибочными, я не против.

# Re: Эффективность против простоты
std.hugeping
hugeping(ping,1) — vvs
2020-12-07 14:26:00


vvs> Комплексность сложно оценить, в отличие от размера. Я вот понятия не имею, что сложнее устроено: солнечная система или электрон?

Ну мы же говорили о том, что человек создал. Скажем, сравнительно оценить сложность: ядра Linux, OpenBSD, FreeBSD, HaikuOS и Plan9 вполне себе сравнивается. :)

vvs> Я там вижу две составляющие: логика и эстетика. Опять же, первую оценить относительно просто, в отличие от второй.

Оценить - несложно. Формально доказать - сложно. Но у кого стоит такая цель? У меня - нет такой. :)

# Re: Эффективность против простоты
std.hugeping
hugeping(ping,1) — Andrew Lobanov
2020-12-07 09:11:59


AL> Да. Эти компиляторы очень сложные с инженерной точки зрения. И как и везде это имеет две стороны: они позволяют достаточно простые вещи, но они достаточно сложны.

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

Я не специалист в ФП, но мне кажется идеи, которые реализует тот же Haskell сами по себе просты. Но, не буду лезть в область, в которой я нуб.

В качестве элегантных (и при этом мощных) вещей можно привести: Форт, Лисп.

# Re: Эффективность против простоты
std.hugeping
hugeping(ping,1) — vvs
2020-12-06 19:11:01


Я тоже немного запутаю.

Когда говорили про Plan9, true-grue прислал мне один свой комментарий, который, на мой взгляд, в тему разговора. Особенно там, где про чувства к инструменту.

http://fforum.winglion.ru/viewtopic.php?p=40887&sid=b952e062260f48b8f6b6b45f8e76b3d0#p40887


Далее цитата.

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

# Re: KolibriOS
idec.talks
hugeping(ping,1) — leency
2020-12-06 11:02:03


leency> ...но как оказалось Haiku в живую не стартует ни только на нем, ни вообще ни на одном компе у меня дома, а их куча.

Интересное совпадение. У меня работала и на eeepc и на thinkpad и на настольном PC...

# Парадокс друга Вигнера
std.hugeping
hugeping(ping,1) — vvs
2020-12-05 21:31:00


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

https://naked-science.ru/article/physics/kvantovaya-fizika-dokazala-chto-obektivnoj-realnosti-ne-sushhestvuet

Забавно, что в 2009-м, когда я писал игру "Возвращение квантового кота" я думал использовать этот парадокс для спасения кота. Но решил, что слишком сложно и не правдоподобно. :)

# Эха plan.9
idec.talks
hugeping(ping,1) — All
2020-12-05 20:08:48


Создал новую эху, посвящённую Plan 9.

Не знаю, будет ли жить, но пока так. Раздаётся пока с http://hugeping.tk.

# Интересные ресурсы
plan.9
hugeping(ping,1) — All
2020-12-05 20:06:33


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

Документация по Plan 9 -- http://doc.cat-v.org/plan_9/

9front -- форк Plan 9 для современного железа -- http://9front.org/

9fans discord -- https://discord.gg/eu8VBUs

Русскоязычная телеграм группа -- https://t.me/ru_plan9

Plan 9 как десктоп -- https://pspodcasting.net/dan/blog/2019/plan9_desktop.html

Интересные заметки по 9front, например есть "рецепт" установки без fsworm партиции. -- http://docs.a-b.xyz/sitemap.html

Музыкальный плеер Zuke -- https://sr.ht/~ft/zuke/

Видео-плеер treason: https://sr.ht/~ft/treason/

Мои патчи/хаки на 9front. Переключение раскладки с клавиатуры, драйверы для eeepc -- https://github.com/gl00my/plan9hacks

# Эха по Plan 9
plan.9
hugeping(ping,1) — All
2020-12-05 19:52:27


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

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

Если что, грохнуть всегда можно потом.

# Re: Эффективность против простоты
std.hugeping
hugeping(ping,1) — vvs
2020-12-05 18:09:36


vvs> Это просто? Вроде да. Но это только синтаксический сахар.

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

# Re: Эффективность против простоты
std.hugeping
hugeping(ping,1) — hugeping
2020-12-05 17:53:51


Я тут подумал, что есть ещё одна аналогия.

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

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

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

# Re: KolibriOS
idec.talks
hugeping(ping,1) — leency
2020-12-05 17:38:15


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

# Re: Эффективность против простоты
std.hugeping
hugeping(ping,1) — vvs
2020-12-05 17:36:11


vvs> Тут чувствуется одно противоречие. Программист - он еще и пользователь, зачастую очень ленивый.

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

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

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

vvs> Лично мне больше нравится, когда решение моей задачи я доверяю компилятору.

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

# Re: Эффективность против простоты
std.hugeping
hugeping(ping,1) — vvs
2020-12-05 17:05:02


Сложное, это не просто сумма простых частей. А простое, это не значит низкоуровневое.

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

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

Например, я не готов набирать тексты в редакторе ed, хотя он ещё проще. :) Но я спокойно могу пожертвовать подсветкой синтаксиса. Или современным вебом.

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

А ещё, кроме простоты есть эффективность решений. Красивое решение, это максимум простоты при максимуме эффективности.

Формула: красота = эффективность/сложность.

Например, ACME редактор прост, но для своей простоты он удивительно эффективен. emacs - может больше. Но сложность emacs несоизмеримо больше.

Ещё пример. latex vs troff. Разница - огромна. Функции -- близки.

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

# Re: Пишу ноду ii/idec на go
idec.talks
hugeping(ping,1) — btimofeev
2020-12-05 07:54:26


AL>> Да. RSS нынче не в почёте.

btimofeev> Видимо RSS заменили всплывающие уведомления от сайтов в браузере. Кто-нибудь использовал такое?

Принципиально не использую. Раньше когда-то случайно где-то нажал и сильно задалбывало.

# Re: Идеализм, материализм, мировоззренческие вопросы [обсуждение]
std.hugeping
hugeping(ping,1) — Andrew Lobanov
2020-12-04 10:52:24


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

Я прочитал про него в книге "Ткань космоса пространство время и текстура реальности". В википедии эксперимент описан как опыт Аспе.

В книге эксперимент описан образно и "на пальцах", в википедии -- надо вникать больше.

# Re: Идеализм, материализм, мировоззренческие вопросы [обсуждение]
std.hugeping
hugeping(ping,1) — Andrew Lobanov
2020-12-04 09:10:30


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

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

AL> Я не знаю что считается личным чудом. Моё чудо в том, что я выжил в 16 лет. Вероятность такого была очень мала. Но всё таки она была. Считается ли это чудом?

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

AL> Мне интересно ищет ли кто-либо намёки, кто не подвержен экзистенциальному кризису :)

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

AL> Вопрос в том есть ли выбор как явление. То есть наличие свободы воли не доказано. Хотя, если были какие-либо исследования и есть что почитать, хотя бы препринты, то было бы классно :)

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

Но я по прежнему считаю, что в твоём случае первичней выбор. Тебя устраивает отсутствие свободы воли.

AL> Как вера в отсутствие творца взаимосвязана с верой в непознаваемость вселенной? Я что-то запутался.

Я писал об этом тут ii://CVvGRZBv7ZzMIm0TFWeY подробнее вряд-ли смогу развернуть.

# Re: Идеализм, материализм, мировоззренческие вопросы [обсуждение]
std.hugeping
hugeping(ping,1) — vvs
2020-12-03 17:29:09


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

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

# Re: Идеализм, материализм, мировоззренческие вопросы [обсуждение]
std.hugeping
hugeping(ping,1) — vvs
2020-12-03 16:48:15


vvs> Ну, не знаю насколько это удачный пример. Причинно-следственная связь - это все-таки достаточно неочевидная вещь, согласно ТО. Она зависит от системы отсчета и скорости света.

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

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

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

# Re: Идеализм, материализм, мировоззренческие вопросы [обсуждение]
std.hugeping
hugeping(ping,1) — vvs
2020-12-03 13:48:07


vvs> Нет - это о логике и математике. Аксиомы и правила вывода - основа формальной системы. А верим мы в них, поскольку принимаем как данность, выбор которой основан на эмпирическом опыте.

Ну да. Другими словами, таков механизм нашего мышления. Причина, следствие. Время. Потому-то и выносит мозг та же квантовая механика.

# Re: Идеализм, материализм, мировоззренческие вопросы [обсуждение]
std.hugeping
hugeping(ping,1) — vvs
2020-12-03 13:33:42


vvs> Тогда если можно, то лучше перенести все ответы сюда, а то они теперь разбросаны по трем разным темам.

Это не так просто сделать. Так что оставлю как есть.

vvs> А корявые рассуждения кого хочешь оттолкнут.

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

vvs> Чему он научит такой неграмотной логикой? Ну и учил бы словом, в чем он должен разбираться хотя бы.

Мне неприятно слышать такие слова о хорошем писателе (и кмк на пустом месте). Который, к тому же, не так давно умер. Давай закончим? Выглядит как переход на личность.

vvs> Вера - это неотъемлемая сущность человеческого сознания. Любое доказательство на ней же основано, только по строгим правилам, а не субъективно.

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

vvs> непознаваемое в виде того же Творца или совершенно иного мира. Просто изнутри системы мы не можем даже зафиксировать их.

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

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

Я по прежнему считаю, что первичней, всё-таки, выбор. Знания и логика - не мешают. Они всегда помогают, но помогают в том пути, что ты внутренне выбрал. Даже не выбирая его внешне, думаю, он состоялся.

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

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

# Re: Интересная беседа с Владиславом Крапивиным
std.hugeping
hugeping(ping,1) — Andrew Lobanov
2020-12-03 12:32:45


Если что, продолжать лучше здесь: ii://8ggsyyMFCBULz2Ay22W4

# Идеализм, материализм, мировоззренческие вопросы [обсуждение]
std.hugeping
hugeping(ping,1) — All
2020-12-03 12:31:39


Вытащил сюда часть диалога:

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

На самом деле, большой простор для рассуждений да.

1) Есть вот фигуры геометрические. Я могу представить любую фигуру. И в каком-то смысле (рассуждая как идеалист), любая фигура существует, даже если не воплощена. Она представима, она может быть построена, нарисована, смоделирована. И мой мозг устроен так, что сродственен этой сущности настолько, что способен осознавать её. Можно, конечно, перефразировать. Сказать, что существует геометрия вообще. Что человек её неизбежно нашёл. Не создал! Нашёл. А что есть геометрия?

2) Вопрос квалиа. Что есть цвет? Длина волны? А почему субъективный опыт отбрасывается? Ведь механизм его существования явно вплетён в архитектуру мироздания? См "трудная проблема сознания".

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

4) Существует ли формула? Тоже интересный вопрос. Особенно те, в которых хорошо отражаются наблюдаемые "законы". А что такое законы? :) Снова - взаимодействие.

5) Как воспринимать вероятность единичного события? Есть разные трактовки, интересные.

6) Недавно только узнал про эксперимент Аспекта. Оказывается, Копенгагенская интерпретация, можно сказать, подтверждена экспериментально. Это для меня удивительно, и снова пограничные вопросы о "реальности".

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

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

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

P.S.
Я в детстве тоже говорил бабушке, что в космосе не нашли Бога. А потом, вот как всё получилось.

P.P.S.
Вообще, я за диалог, но только если он не выходит за рамки вежливости.

P.S. Edited: 2020-12-03 12:56:10

# Re: Интересная беседа с Владиславом Крапивиным
std.hugeping
hugeping(ping,1) — vvs
2020-12-03 11:39:42


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

> С другой стороны, к чему тогда придавать своему мнению вид логического рассуждения "от противного"?

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

Это не физика, конечно, и не математика. Но и люди как бы не только математика.

vvs> Ну побойтесь же Бога, хотя бы. Если он все создал, то и логику тоже. Нельзя же так халтурно относиться к его творениям.

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

О чём-то похожем я писал здесь: ii://CVvGRZBv7ZzMIm0TFWeY

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

# Интересная беседа с Владиславом Крапивиным
std.hugeping
hugeping(ping,1) — hugeping
2020-12-03 09:32:02


Прочитал с огромным интересом.

https://www.pravmir.ru/doroga-negasnushhey-nadezhdyi-pisatel-vladislav-krapivin-i-svyashhennik-dimitriy-struev/


> – А в чем тут метод от противного?

> – Ну вот, допустим, я атеист. Я считаю, что Творца нет, не было, нет, и все это выдумано, тогда ОТКУДА все взялось, и как объясняется существование всего? Потому что, чтобы что-то существовало, оно, помимо всего прочего, должно еще кем-то восприниматься. Если мир никто не воспринимает, никто его не видит, не чувствует, не ощущает, он – что есть, что нет. Его нет практически. Чтобы он возник, его должен кто-то придумать, кто-то должен его воспринимать, а кто, кроме Творца, изначально сможет это сделать?

# Каминг-аут: встречайте нового хейтера systemd
linux.14
hugeping(ping,1) — All
2020-12-02 07:20:02


Привет!

До последнего относился к деятельности Поттеринга с пониманием. Прогресс дело такое. Linux давно уже сложная система, systemd неизбежен -- думал я.

Пока не коснулось моей работы. Несколько лет у нас периодически падала сборка, в момент работы fakeroot. Отлаживали faked, пытались разнести во времени сборки -- результата не было. Наконец, когда за одну ночь сборка упала 5 раз я не выдержал и попытался в очередной раз найти причину.

Помог гугл. Оказалось, что systemd стирает объекты IPC при log-out пользователя из системы. А на систему сборки периодически ломились наши боты, проверяя статус сборки итд.

В общем, RemoveIPC=no в /etc/systemd/logind.conf помог. По крайней мере, три дня уже всё чисто.

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

Как вообще могло придти в голову стирать что-то там при logout? Удивительно, что /tmp не затирается...

В общем, признаюсь себе честно -- Linux больше не система моей мечты. Я разочарован и удручён. Похоже, Plan9 и BSD системы -- это мой удел на старости лет. Linux -- система для выполнения утилитарных вещей и это моя работа. Но сказать, что мне нравится выбранный курс развития -- категорически не могу. Linux стал слишком "взрослым". Sad but true...

# Re: Старый рок (группа Ренессанс)
music.14
hugeping(ping,1) — hugeping
2020-11-28 10:11:41


hugeping> https://www.youtube.com/watch?v=CIEqdXpG5Pg (Innocense)
hugeping> https://www.youtube.com/watch?v=CIEqdXpG5Pg (Sounds Of The Sea)

Упс, промахнулся:
https://www.youtube.com/watch?v=2ZhYx_RMf_A (Innocense)
https://www.youtube.com/watch?v=-yki_mJnzBM (Sounds Of The Sea)

# Re: Старый рок (группа Ренессанс)
music.14
hugeping(ping,1) — Andrew Lobanov
2020-11-28 10:06:20


Я тут тоже постепенно открываю себе артрок.

Я тут уже писал о том, что очень понравился Procol Harum, но на днях нашёл ещё
Renaissance. Вещи есть разные, самая, наверное, известная это: https://www.youtube.com/watch?v=CIEqdXpG5Pg (Northen Lights)

https://www.youtube.com/watch?v=CIEqdXpG5Pg (Innocense)

https://www.youtube.com/watch?v=CIEqdXpG5Pg (Sounds Of The Sea)

Альбомы у них довольно разные, нужно прислушиваться. :)

# О творчестве (цитаты)
std.favorites
hugeping(ping,1) — hugeping
2020-11-26 16:38:40

# Re: О творчестве (цитаты)
std.hugeping
hugeping(ping,1) — hugeping
2020-11-26 16:30:31


Только что по ТВ посмотрел: "Книги моей судьбы" 4-часть.

https://tvkultura.ru/video/show/brand_id/59926/episode_id/1246261/video_id/1413171/

Начиная с 10:30

> ... Если я в молодости, когда начинал заниматься этим ремеслом, я думал -- я буду писать так, как никто не пишет... И вот это стало тоже уходить. Я понял, что перо это рука души, как говорит Дон Кихот. Что только свободное излияние без умысла, вот такой вот специфической обработки слова и эксперимента обработки слова, может донести до людей простые истины. И самого тебя образовать...

# Re: Модуль xrefs: ещё один интерфейс для INSTEAD игр
std.club
hugeping(ping,1) — vvs
2020-11-24 18:00:56


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

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

# Re: Модуль xrefs: ещё один интерфейс для INSTEAD игр
std.club
hugeping(ping,1) — vvs
2020-11-24 06:52:14


vvs>Разве что сделать так, чтобы они были видны только пока удерживаешь шифт.
Думаю, будет раздражать определённую часть ещё больше. А так- замена визуализации просто. На самом деле, надо смотреть по играм. Испытывать.

# Re: Модуль xrefs: ещё один интерфейс для INSTEAD игр
std.club
hugeping(ping,1) — vvs
2020-11-24 06:45:05


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

Нужно искать компромисс. На самом деле, делать игры с ссылками, которые выделены в тексте цветом, мне не хочется. Остаются:
- парсер;
- невидимые ссылки (как в Вахте);
- xrefs;
- не писать уже. ;)

Я надеюсь, пока ещё, что xrefs приемлемый компромисс. Часть игроков, наверное, будет недовольна. Но какая часть, это вопрос....

# Официальный и неофициальный чаты INSTEAD
std.club
hugeping(ping,1) — All
2020-11-22 20:11:06


Неофициальный Telegram чат INSTEAD https://t.me/insteadtalk стал большим и флеймообразующим. Новичкам там часто становится страшно и неуютно. Поэтому я создал модерируемый официальный чат.

https://t.me/insteadchat

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

# Модуль extlibs: частичка метапарсера для классики
std.club
hugeping(ping,1) — All
2020-11-22 08:54:37


Привет!

Давно уже хотел портировать часть функций метапарсера в классику. Сегодня я это сделал: https://github.com/instead-hub/stead3-modules/tree/master/extlib

Что есть? Словарь. Таким образом, можно делать стандартные реакции в зависимости от типа объекта. На данный момент поддерживаются:

- генерация описаний предметов, если у них не задан dsc (или dsc вернул false);
- supporter;
- container;
- transparent;
- concealed;
- openable;
- switchable;
- item (вещь можно брать и класть);
- дополнительные обработчики у obj: onact, onuse, oninv - которые вызываются перед стандартными.

Демонстрация:

loadmod 'extlib-ru'

obj {
	-"винтовка";
	nam = "винтовка";
	onuse = function(s, w)
		if w ^ 'ваза' then
			p [[Бах!]];
			remove(w)
			return
		end
		return false
	end;
}:attr 'item'

obj {
	-"телевизор";
	nam = "телевизор";
}:attr 'switchable';

obj {
	-"стол";
	nam = "стол";
}:attr 'supporter': with { 'винтовка', 'ваза', 'коробка', 'телевизор' }

obj {
	-"коробка";
	nam = "коробка";
}:attr 'openable,container';

obj {
	-"ваза";
	nam = "ваза";
}:attr 'container,item':with 'цветок'

obj {
	-"цветок";
	nam = "цветок";
}:attr 'item';

room {
	nam = 'main';
	title = "extlib demo";
	obj = { 'стол' };
}

Для сообщений стандартной библиотеки применяется такой-же язык шаблонов как и у метапарсера:

--"видеть"
ex.msg.EXAM = "{#Me} не {#word/видеть,#me,нст} {#vo/{#first/пр}} ничего необычного.";

В общем, как и всегда, надеюсь, что это кому-то понадобится на практике.

P.S. Конечно, модуль будет дорабатываться. Stay tuned!

extlib.png

# Модуль xrefs: ещё один интерфейс для INSTEAD игр
std.club
hugeping(ping,1) — All
2020-11-21 15:28:26


Играясь с INSTEAD на Plan9, я поймал себя на мысли, что играбельность простых игр в tiny-instead даже выше, чем в обычном настольном INSTEAD. И даже CYOA игры выглядят не так ужасно. Почему?

Не знаю как у других, а у меня сформирован рефлекс нажатия ссылок. Когда я вижу гипертекст, я:

- Сначала обращаю внимание на ссылки;
- Читаю текст фрагментарно и часто непоследовательно;
- Стараюсь нажать на эти ссылки раньше времени.

Поэтому то меня и тянет парсер, где текст -- это просто текст.

Так вот, в tiny-instead текст тоже выглядит текстом, а управление игрой осуществляется через ввод цифр: http://hugeping.tk/lib/uploads/9front-instead-cat.png

И тут я подумал, а может быть можно сделать что-то похожее и в обычном INSTEAD?

Оказалось, можно! Встречайте модуль xrefs.

http://hugeping.tk/lib/uploads/xrefs.png

Модуль уже в репозитории: https://github.com/instead-hub/stead3-modules

Как пользоваться?

1) В начало вашей игры добавьте loadmod 'xrefs'
2) Вы можете пользоваться мышкой, или клавиатурой, нажимая на клавиши для выбора ссылки. Для режима "использовать" нажимайте shift, затем две клавиши по очереди, которые соответствуют предметам.

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

# Re: АРХИВ: за кадром
std.hugeping
hugeping(ping,1) — boscholeg
2020-11-20 11:11:20


Договорились! Когда/если напишу - попрошу протестировать. :)

# Сложность операционных систем
std.hugeping
hugeping(ping,1) — hugeping
2020-11-19 18:41:20


В продолжение. У автора нашлась ещё интересная статья. Или даже, труд.

# Comparison of Operating System Complexity

https://pspodcasting.net/dan/blog/2020/complexity.pdf

Из прекрасного:
> The web has all the hallmarks of being put together by a bunch of teenagers withoutexperience, collaboration or a clue, and come to think of it, that is exactly how it was made. If any one really believes otherwise, I cordially invite them to read the source code of Firefox or Chromium. It willtake 20 years to do so, but hopefully wisdom will dawn long before they are finished.

Всё я не читал, только фрагменты. Но уже видно, что от души. :)

# Plan 9: экстремальный KISS #3
std.hugeping
hugeping(ping,1) — All
2020-11-11 13:25:57


Продолжаю использовать Plan9 (9front) на своём нетбуке.

# Кросскомпиляция на go

Я писал, что собрать современный go на eeepc я не смог - не хватило памяти. Сегодня, внезапно осознав, что всё может быть гораздо проще, чем мне кажется, я набрал на ноутбуке с ArchLinux:
$ GOOS=plan9 GOARCH=amd64 go build 
И собрал проект на go, который прекрасно запустился на 9front! Отлично, получается Plan9 не выкинут из современного go и это радует! Можно просто кросс-компилировать нужный софт.

# Доступ по drawterm

Обычно, я заливаю данные на eeepc через exportfs или по sshfs. Но иногда хочется зайти на машинку удалённо. Для этого в ArchLinux я поставил 9front-drawterm, а на 9front запускаю такой скрипт:

#!/bin/rc
auth/factotum -n
echo 'key proto=p9sk1 dom=$sysname user=glenda !password=password' >/mnt/factotum/ctl
aux/listen1 -t tcp!*!17019 /rc/bin/service/tcp17019 &

С ArchLinux:
9front-drawterm -h  -u glenda 

И получаем внешне что-то похожее на vnc. Чтобы запустить rio, наберите rio -i riostart. Перед этим можно ещё запустить webfs. Вообще, посмотрите на $home/lib/profile. Там есть ветвление между terminal/cpu. Когда вы заходите по drawterm, выполняется ветка cpu. Когда работаете на машинке в обычном режиме -- это terminal.

# Звук HDA Intel

Звук у меня завёлся, но только в наушниках. Долгое время меня это не беспокоило, но потом стало интересно. Я думал, что игра с пинами должна помочь. Но к сожалению, никакой документации я не нашёл. В исходном коде я увидел, что можно делать что-то вроде echo 'pin 26' > /dev/audioctl. Мой /dev/audiostat был таким:

bufsize   1024 buffered      0
codec 0 pin 26 inpin 18
aout 2 1d
aout 3 1d
beep 4 f00000
beep 5 f00000
aout 6 211
beep 7 f00000
ain 8 10011b ← amix 35
ain 9 10011b ← asel 34
beep 10 f00000
amix 11 20010b ← pin 24, pin 25, pin 26, pin 27, pin 29
amix 12 20010b ← aout 2, amix 11
amix 13 20010b ← aout 3, amix 11
beep 14 f00000
amix 15 20010a ← aout 2, amix 11
beep 16 f00000
beep 17 f00000
pin 18 in fix int special micin ?
beep 19 f00000
pin 20 out fix int special speaker ? eapd ← amix 12, amix 13
beep 21 f00000
beep 22 f00000
pin 23 out nothing ext rear speaker black ← amix 15
pin 24 inout nothing ext rear speaker black ← amix 13
pin 25 in nothing ext rear speaker black
pin 26 inout jack ext rear hpout green ← amix 12, amix 13
pin 27 inout nothing ext rear speaker black ← amix 12, amix 13
beep 28 f00000
pin 29 in nothing ext N/A lineout purple
pin 30 out nothing ext rear speaker black ← aout 6
beep 31 f00000
beep 32 f00040
pin 33 out nothing ext rear speaker black ← amix 12, amix 13
asel 34 30010b ← pin 24, pin 25, pin 26, pin 27, pin 29, amix 11, pin 18
amix 35 20010b ← pin 24, pin 25, pin 26, pin 27, pin 29, amix 11
outpath aout 2 → amix 12 → pin 26
outamp aout 2
inpath pin 18 → asel 34 → ain 9
inamp ain 9

Я прошёлся по всем пинам, делая echo 'pin номер' > /dev/audioctl -- звука нет. Ну и я решил, что не судьба. Потом, случайно, натолкнулся на: https://pspodcasting.net/dan/blog/2019/plan9_desktop.html

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

echo 'pin 20,15,2' > /dev/audioctl

Вы можете сами сопоставить этот "путь" с содержимым audioctl.

А вернуть вывод звука на наушники проще: echo pin 26 > /dev/audioctl

В общем, наслаждаемся звуком: http://hugeping.tk/lib/uploads/9front-zuke.png

# telegram/discord

Я поднял на своей малинке bitlbee сервер. Собрал telegram-tdlib. В итоге, получилось из irc чатиться по работе в telegram. А также зависать в discord. Конечно, есть нюансы, но главное - работает! Детали описывать не буду, скучная рутина.

Зато интересный нюанс, отсутствие "нормального" браузера заставляет находить решения, которые часто оказываются более эффективными. Например, из irc клиента я хотел закачивать скриншоты и публиковать их в telegram чате. Сначала я использовал sshfs на малинку, а потом написал такой скрипт:

#!/bin/rc
if(~ $#* 0)
        file=/fd/0
if not
        file=$1

hpost -m / -u http://curldu.mp 'File@'^$file

Заливаем файл на http://curldu.mp и просто копируем ссылку в чат. Это даже проще, чем telega в emacs. :)

"Из коробки" в 9front также имеется скрипт webpaste, которая заливает текст на pastebin-подобный сервис. Всё для людей!

За это время, я много пользовался mothra и привык к аскетичному интернету. И вы знаете, я не чувствую себя обделённым. :)

Кстати, в mothra нет закладок. Закладки для меня - обычный текст bookmarks.txt, в которой строка за строкой перечислены url. Я открываю файл в acme, нажимаю 2й кнопкой мыши на url и она открывается (с помощью plumber). KISS как он есть.

Ещё один забавный курьёз: бороздя интернет в mothra натолкнулся на сайт с научными новостями. Сайт мне чем-то понравился, я добавил его в bookmarks.txt. А потом, как-то находясь в Linux, открыл его в FireFox: https://nplus1.ru :) Знаете, лучше я пойду обратно в Plan9.

# Чтение epub

page не читает epub, но на самом деле, читает. :) Вы просто монтируете epub с помощью zipfs. Потом открываете xml с текстом с помощью page. Выглядит вполне прилично - логическое форматирование присутствует. А что ешё нужно?

# INSTEAD для Plan9

SDL1 на Plan9 не готов. Поэтому я просто собрал tiny варианты инстеда и метапарсера. На удивление -- вполне юзабельно и в духе минимализма Plan9.

http://hugeping.tk/lib/uploads/9front-instead-cat.png

Так что если что, добро пожаловать: https://github.com/gl00my/plan9hacks/tree/master/9instead

# Лирическое заключение

Почти каждый день после работы я с большим удовольствием запускаю свой eeepc с Plan9 и смотрю IT-новости, чатюсь с друзьями, читаю и отвечаю на почту, слушаю музыку, программирую, запускаю игры INSTEAD (в тексте) и собираюсь написать свою. Зачем?

Честно говоря, не знаю. Но я чувствую огромный терапевтический эффект. В чём тут дело? Система не напрягает, она успокаивает. Здесь всё сделано без оглядки на костыли прошлого, без оглядки на "фичи" и разбалованных пользователей. Без оглядки на требования маркетологов. Система проста и элегантна. И с точки зрения архитектуры, и с точки зрения использования. Такой вот ретро-пост-панк-юникс. Так что я точно знаю, что "работая" в этой ОС я _отдыхаю_. Замечательно, что современный браузер никогда не будет здесь! "Пошёл вон, Вавилон!"(c).

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

Несклько дней назад мне пришлось разбираться с одной из подсистем ядра Linux. 3 или 4 дня я изучал хитрые приёмы синхронизации, в которых гонки были архитектурно предусмотрены, а равномерность нагрузки достигалась путём хитроумнейших хаков. В этом тоже есть своя "хакерская" красота. Но не могу себя обманывать, этот код у меня вызывает стресс. Код на грани возможного. Может быть, так и надо. (Я писал уже на похожую тему ii://kXDk7c9zuOEmsuY0nFZW/ ) Но облегчение, которое я испытал вечером, запустив acme... Оно было настолько реальным... :)

# Re: Механические клавиатуры
pipe.2032
hugeping(ping,1) — Difrex
2020-11-10 10:13:58


Difrex> Поздно, уже едет посылка из китая с коричневыми свичами :)

А, я думал brown тоже щёлкают. Сейчас прочитал, что нет. Ну, короче, лично я теперь хочу только синие. Но дома - красные. Тоже неплохо, но "не то". :)

# Re: Механические клавиатуры
pipe.2032
hugeping(ping,1) — Difrex
2020-11-09 16:02:35


Difrex> За это время понял, что хочеться тактильных свичей. Заказал себе Anne Pro 2 на Kailh Box Brown. Эти свичи еще и водонепроницаемые.

Я вот тоже задумался. Дома - красные. На работе - синие. Понял, что синие рулят больше! (У меня бюджетный вариант на Kailth).

Покупать ещё одну клавиатуру не планирую, но если выбираете между красными и синими/коричневыми -- подумайте ещё. =)

# Right-to-left text support in INSTEAD!
std.english
hugeping(ping,1) — All
2020-11-01 09:53:56


Hi!

Thanks to Mehdi Sadeghi the RTL support is merged in master branch!

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

https://user-images.githubusercontent.com/3101557/89707728-2300ac80-d971-11ea-9334-4de9f237d1f8.png

To use RTL feature you need enable WITH_HARFBUZZ CMAKE flag. SDL2_ttf should be compiled with HarfBuzz too (default off)

There is game tag added -- Direction: rtl|auto.

# Re: Plan 9: экстремальный KISS #1
std.hugeping
hugeping(ping,1) — Difrex
2020-10-28 16:24:44


Difrex> Кстати, а нет ли порта bash под plan9?

Я этого не знаю, но заменять rc, в котором преодолены проблемы bash (и очень изящно) снова на bash - не имеет смысла по-моему. :)

http://doc.cat-v.org/plan_9/4th_edition/papers/rc посмотри здесь раздел Quotation, и сравни с тем же bash. Да в bash ад, просто, на фоне простоты rc!

# Re: Ставлю цели на лето и копаюсь в себе (+org-mode)
pipe.2032
hugeping(ping,1) — vvs
2020-10-27 12:57:13


vvs> Поэтому меня крайне удручает тот факт, что я не вижу способа объективно оценить философские критерии, такие как материализм и идеализм.

А я воспринимаю это как ещё один "признак" того, что Богом нам дана свобода. Если, под давлением фактов (например, Земля была бы центром Вселенной) или логики ты вынужден поверить в то, что Бог сотворил мир и нас в нём, какой в этом смысл? Бог к сердцу обращается.

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

# Re: Ставлю цели на лето и копаюсь в себе (+org-mode)
pipe.2032
hugeping(ping,1) — vvs
2020-10-27 08:27:10


vvs> Боюсь, что и сравнение науки с религией тоже слишком искусственно.

Ну, беседа уже зашла в дебри. Я вообще спорю только против нападок со стороны "научного мировоззрения" на религию. Причём против "грубых" и "вульгарных" форм материализма. Даже писал на эту тему: ii://CVvGRZBv7ZzMIm0TFWeY

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

# Re: Ставлю цели на лето и копаюсь в себе (+org-mode)
pipe.2032
hugeping(ping,1) — vvs
2020-10-26 16:17:10


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

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

# Re: Ставлю цели на лето и копаюсь в себе (+org-mode)
pipe.2032
hugeping(ping,1) — vvs
2020-10-25 19:57:55


> Ну, тут, как раз, все просто. Ученые - это еще не наука. Все мы люди и полны противоречий. Приведу другую аналогию: коррумпированный юрист. Разве он - это закон?

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

# Re: Ставлю цели на лето и копаюсь в себе (+org-mode)
pipe.2032
hugeping(ping,1) — vvs
2020-10-25 18:40:16


> Задача-то у всех одна - познание мира, а вот философия разная. Наука опирается на материализм, а религия - на идеализм.

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

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

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

# Re: тест меня видо
ping.local
hugeping(ping,1) — oldpc
2020-10-24 18:11:20


> Посмотрю генератор, вдруг там стили интересные :)

Когда я делал "дизайн" ii-go, я заметил что хорошо идут таблицы. Как в старых-добрых 2000-х. То-есть, если у нас табличный дизайн - то и используем их, а не всякие новомодные div с float и бутстрапы. :)

# Re: Plan 9: экстремальный KISS #1
std.hugeping
hugeping(ping,1) — btimofeev
2020-10-24 09:07:04


> Шелл конечно аскетичный, надоедает каждый раз вводить команду заново, особенно когда ФС изучаешь.

Частично помогает " и "". Это показ последней команды (а потом мышка, да) или повтор последней команды.

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

# Re: Ставлю цели на лето и копаюсь в себе (+org-mode)
pipe.2032
hugeping(ping,1) — vvs
2020-10-23 20:21:51


> Идеализм на то и идеализм, что с реальностью имеет мало общего.

Если в философском смысле, то как раз мир идей более реален (идея первичней). Если ты идеалист, конечно.

> Физики делят материю, но конца не находят, а если найдут, то сразу возникнет вопрос: а что же дальше?.

Идея? :)

> Хорошо быть романтиком в молодости, а с возрастом становишься циником.

Становиться циником или нет, всё-таки, зависит в том числе и от нас.

# Re: Plan 9: экстремальный KISS #2
std.hugeping
hugeping(ping,1) — oldpc
2020-10-21 10:54:56


У меня настолько много расплодилось блогов, что я просто пишу теперь в std.hugeping и дублирую на zeronet. Если кому-то нравится, можно перепостить. Но я часто редактирую свои статьи, так что проще просто ссылку кидать на оригинал.

# Plan 9: экстремальный KISS #2
std.hugeping
hugeping(ping,1) — All
2020-10-21 10:07:36


Постепенно осваиваюсь в 9front. Стало понятно, что кое-где есть неточности в предыдущей статье. Но не ошибается только тот, кто ничего не делает! Так что продолжу свой цикл статей про жизнь в форке Plan 9 -- 9front.

http://hugeping.tk/lib/uploads/acme-mail.png

# Простота кода

Мне не повезло. На eeepc 1000px не работал ни wifi ни ethernet. Поэтому мне пришлось портировать драйверы alc и athn с OpenBSD. В случае athn, для скорости, я перенёс только код для своей карты AR2427. Все наработки по Plan9 я выкладываю сюда: https://github.com/gl00my/plan9hacks

Я понимаю, что этот путь доступен не для всех, но хочу отдельно заострить внимание на простоте кода Plan9. Там, где в Linux/OpenBSD написано 10 строк, в Plan9 будет одна.

OpenBSD:
	/*
	 * Create DMA stuffs for TX ring
	 */
	error = bus_dmamap_create(sc->sc_dmat, ALC_TX_RING_SZ, 1,
	    ALC_TX_RING_SZ, 0, BUS_DMA_NOWAIT, &sc->alc_cdata.alc_tx_ring_map);
	if (error)
		return (ENOBUFS);

	/* Allocate DMA'able memory for TX ring */
	error = bus_dmamem_alloc(sc->sc_dmat, ALC_TX_RING_SZ,
	    ETHER_ALIGN, 0, &sc->alc_rdata.alc_tx_ring_seg, 1,
	    &nsegs, BUS_DMA_NOWAIT | BUS_DMA_ZERO);
	if (error) {
		printf("%s: could not allocate DMA'able memory for Tx ring.\n",
		    sc->sc_dev.dv_xname);
		return error;
	}

	error = bus_dmamem_map(sc->sc_dmat, &sc->alc_rdata.alc_tx_ring_seg,
	    nsegs, ALC_TX_RING_SZ, (caddr_t *)&sc->alc_rdata.alc_tx_ring,
	    BUS_DMA_NOWAIT);
	if (error)
		return (ENOBUFS);

Linux:
	alx->descmem.virt = dma_zalloc_coherent(&alx->hw.pdev->dev,
						alx->descmem.size,
						&alx->descmem.dma,
						GFP_KERNEL);

9front:
        ctlr->tx_ring = mallocalign(sizeof(TxDesc) * DSCN, 8, 0, 0);

А вот ещё один очень наглядный пример из ACPI.

Linux:
	args[0] =
	    acpi_ut_create_integer_object((u64)region_obj->region.space_id);
	if (!args[0]) {
		status = AE_NO_MEMORY;
		goto cleanup1;
	}

	args[1] = acpi_ut_create_integer_object((u64)function);
	if (!args[1]) {
		status = AE_NO_MEMORY;
		goto cleanup2;
	}

	args[2] = NULL;		/* Terminate list */

	/* Execute the method, no return value */

	ACPI_DEBUG_EXEC(acpi_ut_display_init_pathname
			(ACPI_TYPE_METHOD, info->prefix_node, NULL));

	status = acpi_ns_evaluate(info);
	acpi_ut_remove_reference(args[1]);

9front:
	p = amlwalk(dot, "^_REG");
	if (p != nil) {
		amleval(p, "ii", 0x3, 1, nil);
	}
Это не шутка, это эквивалентный код. Код из 9front это мой код, который внесён в 9front, который я писал изучая аналогичный код Linux.

Конечно, с одной стороны можно сказать, что это следствие примитивности, но не только. Весь код системы следует этой идее -- не усложнять!

Немного отвлекаясь, хочу рассказать, что похожие эмоции я испытал, когда смотрел код утилиты cat одной из ранних версий Unix. Исходный код делал именно то, что и должна делать утилита cat. Не больше и не меньше. Сегодня же, можно посмотреть на https://www.gnu.org/software/hello/ чтобы убедиться, насколько технологии переусложнены. Кто-то скажет, что это неизбежно. У нас появились локали, gettext, разные варианты системных вызовов и так далее... Всё это, конечно, так. Но... Как программисту, мне хочется спросить -- адекватна ли цена? В общем, архитектурная простота Plan9 сквозит во всём. Plan9 -- не продукт.

Итак, если вы программист (на C) -- проблем с доработками кода не будет. Кодовая база небольшая, доступна в /sys/src из коробки и очень быстро собирается/обновляется по mercurial даже на eeepc. C компилятор (вернее, даже серия компиляторов для разных архитектур) в Plan9 очень быстрый! Я так понимаю, написан он Кен Томпсоном. Система mk (аналог make) -- тоже очень быстрая и лаконичная. Ну, давайте что-нибудь соберём?

# Выход в сеть

Если у вас qemu установка, то сеть скорее всего просто работает. Попробуйте:

cat /net/ndb
ip/ping ya.ru

Я поднимаю wifi руками, скриптом. Мне так удобнее. Делается это очень просто:

bind -a '#l1' /net # l1 это моя wifi карта, cat /dev/kmesg
aux/wpa -s ACCESS_POINT -p /net/ether1 # ether1 моя wifi карта
ip/ipconfig ether /net/ether1 # dhcp

Как посмотреть доступные точки доступа?

cat /dev/ether1/ifstats

На самом деле bind '#l1' я делаю в lib/profile, до старта rio. Помните? У каждого процесса своё дерево файловой системы. А так, все процессы в rio будут наследовать его и /dev/ether1 станет доступным везде.

Дальше, разберётесь. :)

# git/mercurial

В 9front уже входит mercural. Давайте воспользуемся им, чтобы забрать проект 9front ports, там есть много чего полезного. Открываем окно rio. (Или запускаем win в acme).

cd /sys/
hg clone http://code.9front.org/hg/ports
cd 9ports/dev-vcs/git9
mk install

Теперь у нас есть git! На самом деле, есть второй способ сделать это, подмонтировав к себе один из сетевых ресурсов по 9p, например 9front.

9fs 9front
cd /n/extra
lc

Здесь вы найдёте git9.tgz, который можно распаковать и собрать. Для тренировки (и пользы!) предлагаю собрать irc7.tgz из extra. Скопировать себе в $home, распаковать, собрать (mk install) и зайти на канал #instead сервера irc.freenode.net.

Реализация git своя. Конечно, в виде файловой системы. :) Давайте заберём какой-нибудь проект по git. Я предлагаю попробовать собрать браузер netsutf.

cd
mkdir Devel
cd Devel
git/clone https://github.com/netsurf-plan9/nsport
git/clone -- это не опечатка! lc /bin/git/ да...

Ох, чуть не забыл. Все пароли (от ssh, http, wpa, от _всего_) хранит специальная служба factotum! Вы можете добавлять в неё свои пароли/ключи при запуске, чтобы не вводить пароли руками. Я делаю это через скрипт из lib/profile, который читает файлик и добавляет пароли в factotum. Это небезопасно, т.к. мой файлик -- открытый. Для безопасного способа смотрим man secstore.

Пример добавления пароля github:
echo 'key proto=pass realm=GitHub server=github.com service=http user=gl00my !password=password' > /mnt/factotum/ctl

Для сборки netsurf нужно следовать инструкциям: https://github.com/netsurf-plan9/nsport

Но, не буду разжёвывать и лишать вас радости исследования. :)

В портах вы найдёте golang свежей версии. Полезная в быту вещь.

// На данный момент, кстати, он собирается только если закомментировать строку CLEANCOMMAND в mkfile.

На eeepc мне удалось собрать только go14 (мало памяти), но в qemu установке собрал современную версию. Так что можно собирать софт для eeepc в qemu.

# Браузеры

"Современных" браузеров в 9front нет. Для многих "пользователей" это невыносимая потеря. А для меня это делает 9front настоящей отдушиной. В этой системе нет окна в зашлакованный современный веб! По-моему, это даже здорово.

Если серъёзно, у меня уже был опыт использования урезанных браузеров, так что был подготовлен. Для государственных сайтов и банков придётся использовать другие ОС или запускать в виртуалке (man vmx) OpenBSD. На eeepc я этого не делал. Ну, конечно, можно ещё по vnc ходить куда-то...

Итак, браузеры которые я пробовал.

## abaco

Канонический plan9 браузер. Если честно, чисто эстетически, очень понравился! Но, увы, в 9front он падуч. И, кажется, не поддерживает png. Короче, не рекомендую.

## mothra

Сначала не понравился. Но потом, оказалось, что он удобен. И есть у него кое-какие биндинги на клавиши, что удобно. Например: a ввод - однооконный режим. m ввод - режим скачивания (режим mothra). Выглядел он страшненько в основном из-за русских символов. Но мы уже умеем патчить код:

cd /sys/src/cmd/mothra
acme rdhtml.c
# меняем шрифты, я рекомендую везде dejavusans(it,bd)/unicode.12 и .14
mk install

Мой вариант изменений лежит на https://github.com/gl00my/plan9hacks

Короче, можно пользоваться.

http://hugeping.tk/lib/uploads/opennet-mothra.png

## netsurf

Работает, только для показа картинок нужно раскомментировать jpeg/png библиотеки в mkfile/mkfile.native и добавить флаги -DWITH_PNG -DWITH_JPEG.

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

# gemini: ещё одна сеть эскапистов
pipe.2032
hugeping(ping,1) — All
2020-10-19 13:59:28


Натолкнулся тут на очередное "подполье".

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

Встречайте: GEMINI ( https://gemini.circumlunar.space/ )

Гуглится тяжело. По факту -- что-то среднее между gopher и базовым http. Технологически возможен CGI. Нужен свой клиент (которых есть масса). Есть поисковики (gemini://gus.guru).

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

https://portal.mozz.us/gemini/gemini.circumlunar.space
Но, конечно, из нативного клиента это выглядит аутентичней.

Вот такой вот, заповедник.

P.S. Сам пишу этот пост из Plan9 ;)

# Re: Старое железо. Заметка №2: OpenBSD 6.8
oldpc.51t.ru
hugeping(ping,1) — oldpc
2020-10-19 08:10:20


> Круто. Обзоры были? Или будут?

Пока написал вот это: ii://TF9RuFRon9u7ps9Owka3

Правда, по мере изучения уже вижу там ляпы. Хочу написать ещё несколько статей.

> А golang поддерживает этот процессор?

Старая версия собралась, по крайней мере. Та, что ещё на си. (1.04)

> Странно. gtk2-версии вообще работали прилично.

Вот и я не понял, что это было. В любом случае, рад Plan'у. Очень интересная система. :) В 9front, кстати, и питон есть (какой-то старый. правда).

# Re: Старое железо. Заметка №2: OpenBSD 6.8
oldpc.51t.ru
hugeping(ping,1) — oldpc
2020-10-18 12:39:37


По поводу разных систем на старом железе.

Есть у меня eeepc 1000px. Не сказать, что совсем старый. Atom N450, 1Гб памяти. Лет 10 ему.

После долгого перерыва, попал ко мне в руки. Пробовал там NetBSD, Haiku, OpenBSD, alpine Linux.

Haiku работала прилично. Остальные (брал текущие, последние версии) -- вроде терпимо, но только до иксов.

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

В итоге, я поставил на него 9front (форк Plan9). Правда, чтобы всё заработало, мне пришлось портировать wifi/ethernet драйверы из OpenBSD и ещё попатчить кое-что по мелочи. Зато теперь, нетбуком действительно интересно пользоваться! И памяти хватает! (Хотя, на сборку последних версий golang её не хватило).

# Re: Краткая информация по этому узлу
ping.local
hugeping(ping,1) — oldpc
2020-10-18 12:25:17


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

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

# Re: ii-txt-0.8.tar.gz
oldpc.51t.ru
hugeping(ping,1) — oldpc
2020-10-18 11:53:46


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

# Re: Редактирование сообщений
idec.talks
hugeping(ping,1) — hugeping
2020-10-18 11:05:37


Ещё вариант: как то вести отдельно список отредактированных сообщений, и тогда те, кто поддерживают такую фичу, просто скачают эти сообщения повторно и добавят в свои списки... Ну, списки сделать как u/e, ещё одну схему...

# Редактирование сообщений
idec.talks
hugeping(ping,1) — All
2020-10-18 11:02:17


Привет, All!

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

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

Может быть, есть смысл сделать что-то вроде такого:

- Редактирование, это создание нового сообщения, с новым msg id;
- В тегах этого сообщения прописан msgid сообщения, которое оно заменяет.

Тогда клиенты, которые не поддерживают этой фичи просто получат новую копию.

Но что делать с отображением этих двух (или больше) сообщений? Скрывать при визуализации "заплаточные", но раздавать их по fetch? Как-то странно...

Что думаете? Есть ли смысл думать в эту сторону, или это только усложнит простую технологию?

Мне кажется, это всё слишком сложно для идеи ii, но может у кого-то будут ещё варианты? Редактирование сообщений, всё-таки, полезная вещь в быту...

# Re: ii-txt-0.8.tar.gz
oldpc.51t.ru
hugeping(ping,1) — oldpc
2020-10-18 10:46:16


> а у сообщения id после редактирования изменится? оно ко мне новое придёт?
> я то из текстового клиента сижу :)
id не меняется и сообщение не придёт. Это, на самом деле, вопрос вообще к ii/idec - поддержка изменения сообщений. Наверное, если делать, это многое усложнит. (Надо чтобы новый id как-то ссылался на старый, может тегами?)

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

# Re: ii-txt-0.8.tar.gz
oldpc.51t.ru
hugeping(ping,1) — oldpc
2020-10-18 10:38:55


> ага, я видел такое в описании, но подумал, что текстом каноничнее

А, ну ок. Я на всякий случай сказал.

# Re: Обновления ii-go (движка узла ping)
ping.local
hugeping(ping,1) — hugeping
2020-10-18 10:28:39


Добавил подсветку

# Заголовок

## Заголовок 2

### Заголовок 3

И другой способ:

= Заголовок

== Заголовок 2

=== Заголовок 3

Тело сообщения не меняется, изменение только в css.

# Re: ii-txt-0.8.tar.gz
oldpc.51t.ru
hugeping(ping,1) — oldpc
2020-10-18 10:11:46


> файл-то я у себя выложу, а вот наскальный аттач останется навсегда :)

У меня это на отображение только влияет. Сообщение такое-же, в тело прямо внедрено base64.. Но перед ним стоит строка (тег @base64: имя файла) и нода, при показе через http(s) сделает ссылку на скачку файла прямо из тела письма, чтобы не заниматься самому декодированием. А так - то же самое сообщение, просто одну строку в тексте добавить и всё.

# Re: ii-txt-0.8.tar.gz
oldpc.51t.ru
hugeping(ping,1) — oldpc
2020-10-18 09:49:59


Тут станция понимает аттачи в base64.

Вот тут написано:
http://club.syscall.ru/rOf069UX8K24yAzvWa9N#rOf069UX8K24yAzvWa9N

Можешь отредактировать своё сообщение, и тогда по http можно будет просто скачивать этот архив.

P.S.
Ну или разреши мне, я сам сделаю.

# Re: тест меня видо
ping.local
hugeping(ping,1) — oldpc
2020-10-16 16:42:38


> в новом дилло он вообще по-современному смотрится, такой дизайн я и хочу себе на сайт

Бери ii-go :) Стилями и выкидыванием кода можно довести до идеала.

# Re: test echo creation
oldpc.51t.ru
hugeping(ping,1) — oldpc
2020-10-16 16:41:41


Короче, пока подписал как "Старое железо"

# Re: test echo creation
oldpc.51t.ru
hugeping(ping,1) — oldpc
2020-10-16 16:33:46


> а что будет, если создать новую эху?
> +++ Caesium/0.4 RC1

Вообще, это было отключено. :) Но, похоже, не до конца.
Оставлять эху? Если да - как назвать?

# Re: тест меня видо
ping.local
hugeping(ping,1) — oldpc
2020-10-16 16:22:05


> Пишу из Dillo из Debian Etch. Сайт вполне неплохо смотрится и в Dillo :)

Да он и из eww норм смотрится. И даже из Plan9. :)

# Читшит с функциями INSTEAD
std.prog
hugeping(ping,1) — All
2020-10-11 21:10:23


Lucky_Ook некоторое время назад запилил читшиты с функциями INSTEAD. Чтобы не потерять, оставлю здесь: https://github.com/luckyuk/Instead-cheatsheet
P.S. Edited: 2020-10-11 21:10:56

# Re: openvpn
linux.14
hugeping(ping,1) — johnbrown
2020-10-11 12:35:13


Я всё-равно ничего не понял. Может быть кто-нибудь и ответит. А мне нужно понимать что происходит. Например. Openvpn это два конца. Нужна схема сети, где эти концы находятся в этой схеме. Где сервер и клиент в этой схеме. Интранет/интернет. Наты. Итд. А так, я вообще ничего не понял.

# Re: openvpn
linux.14
hugeping(ping,1) — johnbrown
2020-10-11 10:35:08


Непонятна схема. Какие машины, где стоят, где концы туннеля итд...

P.S. Сам не настраивал openvpn, но по схеме всё-равно вопросы.

# Plan 9: экстремальный KISS #1
std.hugeping
hugeping(ping,1) — All
2020-10-10 16:02:21


# Введение

Про операционную систему Plan 9 я слышал не раз. Но всё это время, мой интерес не переходил в активную фазу, ограничиваясь пассивным любопытством и чтением статей. Так продолжалось до настоящего момента, пока я всё-таки не попался в сети проекта http://9front.org

Я не буду здесь писать энциклопедическую информацию о Plan 9. Но если совсем кратко, то создатели Unix в лице Bell Labs (среди сотрудников которой числятся Кен Томпсон, Деннис Ритчи, Роб Пайк) однажды взяли и решили сделать _правильную_ ОС, без оглядки на проклятый Legacy Unix, в том числе и POSIX. Доведя идею "всё есть файл" до абсолюта и стерев грань между локальными и удалёнными файловыми системами. В качестве примера: tcp/ip это тоже файловая система. Поэтому, если мы подключим к себе удалённую ФС /net, получится что-то вроде NAT. Вот так просто и естественно. В общем, получилась бескомпромиссная, распределённая и при этом крайне простая и красивая ОС. Которая (с некоторыми оговорками) оказалась ненужной. Потому что существующие решения просто работают, и миру этого достаточно...

Но ребята из проекта http://9front.org форкнули Plan 9 и начали делать патчи, которые в том числе помогают Plan 9 работать на современном оборудовании. Итак, 9front можно сказать, это Plan 9, который лучше всего годится для того, чтобы поставить его на железо.

http://hugeping.tk/lib/uploads/mothra.png

На данный момент у меня есть работающий 9front на eeepc 1000px в котором можно даже что-то делать. До этого, я около полугода запускал 9front в qemu и читал различную информацию. И, честно говоря, мало что понимал. Я гробил файловые системы, не мог отредактировать файл и вообще... Не понимал ничего. В общем, я решил начать цикл статей о Plan 9, в которых я буду рассказывать о своём субъективном опыте. Конечно, я не знаток этой ОС, поэтому если кто-то может -- поправляйте меня в комментариях.

# Первые шаги

Итак, начнём.

Я начинал знакомство с ОС с чтения руководства dash с http://9front.org Руководство написано с юмором, с его помощью вы можете попробовать поставить 9front в qemu или на реальное железо (чего я бы пока не делал).

И вот, мы ставим ОС, отвечая на странные вопросы инсталлятора, стартуем... Иии... Что это?

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

На ноуте, в принципе, можно обойтись тачпадом. Короче, нужны три кнопки мыши. С случае тачпада это может быть тап 1, 2 или 3-мя пальцами. Или (в случае физических кнопок): 1я, 2я и 2я кнопка вместе с shift.

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

В общем, в этом окне (новые окна вы можете создавать нажав 2ю кнопку мыши и выбрав в меню New) вы можете что-то запускать. Если вы запускаете графическую программу, то её содержимое заменит собой содержимое окна. Это не то, к чему вы привыкли, но это удобно. Чем-то напоминает тайловые оконные менеджеры, когда вы заранее создаёте фреймы. Но пока просто наберите man rio и почитайте, как работать в этом странном "оконном менеджере".

Окно не скроллируется по умолчанию на новый вывод. Вы можете изменить это поведение нажав 3-ю кнопку мыши и выбрав scroll. То, что окно не скроллируется, минимизирует необходимось использования пейджера. Вы просто скроллите кнопками вверх/вниз. Хотя, пейджер всё-таки есть и называется 'p'.

Про историю команд -- забудьте. Клавиши вверх/вниз всегда скроллят окно. Перемещаться по тексту и по истории ими нельзя.

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

Некоторые хоткеи всё-таки есть, и они -- на вес золота:

- C-a, C-e -- в начало и в конец строки;
- C-u -- стереть всё слева от курсора;
- C-f -- автодополнение путей в файловой системе (tab -- забудьте);
- C-b -- прыжок к приглашению;
- del - аналог C-c в Unix.

Ещё нюанс. Допустим, вы написали:

ls /usrr/glenda

Заметили, что опечатались. Вернулись курсором к r и стёрли его, нажали ввод.

Упс!

ls /usr
/glenda

При выполнении команд, курсор должен находиться в конце ввода! А так, выполнилась команда ls /usr. Используйте C-e.

К этому нужно привыкнуть и это непросто. Все рефлексы заточены на другое. В современных Linux командная строка обвешена дополнениями и клавиатурными сокращениями, но здесь всё не так. Что взамен? Простота! Нет никакого терминала, есть просто поток текста. И всё. Черные буквы на светлом фоне. Всё есть текст.

# Ещё несколько советов

- Используйте lc вместо ls. Вывод lc информативней. Например, после имён каталогов ставится /;

- Копирование в буфер обмена здесь называется snarf;

- Домашний каталог это $home или /usr/glenda в установке по умолчанию;

- Когда вы пишете что-то вроде grep, не надо заключать строки в "". Тогда в ввод эти кавычки и уйдут. Тут вам не bash, тут rc. У него совсем другие (более простые) правила эскейпинга. Можете использовать одинарные кавычки, если нужно. Например: g 'Kcaps' /sys/include/*. Да, g -- это рекурсивный grep;

- Некоторые утилиты расположены в подкаталогах. Например, ip/ping. Что это значит? Что выполняемый файл лежит в /bin/ip/ping;

- Посмотреть свой ip адрес: cat /net/ndb;

- Используйте walk | grep как аналог find;

- Скачать что-то (man hget);

- Смотреть pdf или картинки (man page);

- Браузеры: mothra, abaco (довольно падучий), можно собрать netsurf. Об этом будет другая статья;

- Для переключения раскладки можно запустить: kbmap /sys/lib/kbmap/us /sys/lib/kbmap/ru и переключать мышкой. Чтобы сделать переключение с клавиатуры, можно немного поменять rio, об этом -- в другой раз;

- Копировать каталоги здесь можно с помощью dircp, cp -R -- нет;

- fshalt -r -- перезагрузка;

- fshalt -- выключение;

- В домашнем каталоге есть bin/rc каталог. Здесь можете писать свои скрипты и они будут доступны для запуска. На самом деле, реализовано это за счёт bind. Сейчас поясню...

# Bind

В домашнем каталоге, lib/profile есть файл - который можно назвать аналогом .profile. Сделайте его cat и посмотрите. Видите?

bind -a $home/bin/rc /bin

bind позволяет делать объединение файловых систем. -a -- добавить файловую систему после. В данном случае, мы добавили bin/rc в пространство /bin. Короче, все наши скрипты из bin/rc видны в /bin. (man bind)

Следующая строка, заметьте, использует $cputype. Дело в том, что кросскомпиляция есть из коробки, и есть разные компиляторы (man 6c). И разные каталоги для бинарников для разных архитектур.

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

Поэтому в profile стартует webfs (это реалиазция http протоколов в виде файловой системы -- ну потому что здесь _всё_ реализовано в виде файловой системы) -- тогда все процессы из rio (который тоже стартует из profile) смогут работать с вебом.

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

Из profile стартует графическая система rio с флагом -i riostart.

# riostart

Делаем cat /bin/riostart.

Это вот и есть стартовый скрипт rio. Можете кастомизировать под себя. Например, запустив kbmap с нужными параметрами (переключалка раскладки клавиатуры). Упс... Мы ещё не умеем редактировать файлы.

# Редактируем временную зону в acme

Давайте начнём учиться редактировать с того, что выставим нормальную временную зону. Дело в том, что в 9front нет Российских временных зон из коробки. Но это не беда. Ведь всё есть файл!

Пишем:

acme /adm/timezone/local

Открылся редактор acme. В нём -- ваша текущая временная зона. На самом деле acme это не только редактор, это среда. Что-то вроде emacs в Plan 9. Детище Роба Пайка, который, наверняка, писал golang именно в нём. Но только это KISS emacs. :) Я не способен сейчас научить вас работать в acme (тем более, что я сам только учусь), но кратко опишу его принципы.

В acme мы имеем что-то вроде тайлового оконного менеджера. Можем создавать столбцы (3-кнопка на Newcol) и делить их на части (3-кнопка на New).

В acme тоже "всё есть текст". Это значит, что вы можете редактировать зону меню так же, как и текст. Пока не делайте этого, просто не пугайтесь если вдруг сотрёте кнопку Newcol. Просто напишите её там, где вам удобно. :)

Например, добавьте в зоне меню команду win. Просто текст win. 3-кнопкой нажмите на win и запустите "терминальное" окно внутри acme. Другие полезные команды смотрите в man acme. Вы можете писать скрипты, которые будут командами. Скрипты могут выводить текст и потреблять текст из редакторы. Таким образом, можно сделать, например, команду indent параграфа. Кроме того, acme поддерживает файловую систему (да-да, как и всё тут!), с помощью которой можно управлять редактором. Так что в acme можно читать почту и делать что-то ещё, что вам понадобится, просто дописывая нужную вам функциональность.

Поиск делается дописыванием текста после меню | Look, выделением этого текста и 3-кнопка. Так же можно просто выделять текст и жать 2-кнопку.

Открыть файл по номеру строки: добавьте к имени файла в меню :число, выберете всё это и нажмите 2-кнопку.

Режим авто-отступа есть. Он включается Indent on (да, да - допишите это в меню и выполните).

Итак, у вас открыт редактор на файле local. Надо стереть содержимое файла. Стрелочки? СТРЕЛОЧКИ СКРОЛЛЯТ ТЕКСТ! shift-стрелочки? Нет! Выделяем текст мышкой и нажимаем backspace!

Да, настал момент суровой правды. Вы не можете перемещаться по строкам с помощью стрелок курсора даже в текстовом редакторе! Так что или бегите (пока можете), или -- продолжим.

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

Да! Подсветки синтаксиса нет. Робу не нравится смотреть на код, как на новогоднюю ёлку.

Итак, вернёмся к временной зоне. Для московского времени я оставил одну строку:

MSK 10800 MSK 10800

Это временная зона GMT+3 (в секундах). Зимнее и летнее время.

Сохраняем файл. Ах, да... 3-я кнопка мыши по Put. Если Put пропал - вы сохранили файл. Выйдете из редактора самостоятельно.

Но это ещё не всё! Если у вас в BIOS время настроено в UTC, то надо сделать следующее:

acme /rc/bin/termrc.local

Впишите строку:

TIMESYNCARGS=(-ra1000000)

И сохраните. Ну или вы могли бы убрать параметр L из TIMESYNCARGS в файле /bin/termrc в самом начале, но это хуже. /bin/termrc запускает termrc.local.

/bin/termrc - это скрипт, который стартует вашу терминальную станцию.

# Немного об архитектуре

То, что вы поставили себе в qemu (или на ноутбук?), в терминах Plan 9 называется терминальной станцией. Дело в том, что Plan 9 это сетевая система, где предусмотрены разные типы станций: терминал, файловый сервер, cpu-сервер итд. Границы между ними стёрты с помощью сетевой файловой системы 9p. Теорию почитайте тут: http://doc.cat-v.org/plan_9/4th_edition/papers/ А в 9front вы получаете как бы всё в одном: терминальная станция, файловый сервер и т.д. Но в теории, это всё можно настроить на отдельных машинах. И именно так Plan-9 использовалась в Bell-Labs.

# Файловая система

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

"Файловая система" тут тоже реализована как служба-процесс. К которому можно подсоединиться и что-то сделать. Например, подключение к консоли:

con -C /srv/cwfs.ctl
help

Можете проверить fscache командой check.

CWFS это на самом деле интересная файловая система. Точнее -- файловый сервер. Он состоит как бы из двух областей. Есть fscache - в котором и идёт постоянная работа. И есть fsworm (Write Once Read Many) - это место куда архивируются данные и никогда не стираются. То-есть, когда-то ночью грязные блоки fscache сбрасываются в fsworm. Потом снова работаем с fscache. Сброс грязных блоков - это команда dump. Вы можете выполнять её руками через консоль: con -C /srv/cwfs.ctl, тем самым вы освобождаете место в кеше!

fsworm позволяет посмотреть любой слепок из тех, когда были сделаны dump. Смонтировать их можно так:

9fs dump

> Не выключайте питание во время дампа!

По началу я никак не мог понять, почему у меня кончается место на диске! Оказывается, забивался сравнительно небольшой fscache. Надо было бы сдампить его в fsworm. Конечно, cwfs на нетбуке это немного странно. :) Что я буду делать, когда забью fsworm? Вероятно, пересоздам его заново, скопировав последнее состояние в fscache?

# Редактирование plan9.ini

После первой установки, скорее всего вам понадобится поменять что-то в параметрах загрузчика. (man plan9.ini) Например, выставить более комфортное разрешение vesa. Включить acpi, поменять тип мыши и др.

Для этого надо подмонтировать специальный fat раздел:

9fs 9fat
acme /n/9fat/plan9.ini

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

На этом же разделе, кстати, находится ядро. Но о компиляции ядра мы поговорим в другой раз.

# Доступ к файловой системе по сети из Linux

acme $home/bin/rc/export
Содержимое файла:
#!/bin/rc
aux/listen1 -t 'tcp!*!564' /bin/exportfs -r /

Запустите скрипт в окне и монтируйте с Linux:

9pfuse <адрес>:564 <точка монтирования>

Исходники системы находятся в /sys/src/ :)

# Заключение

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

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

Примерный план статей такой:

- Собираем netsurf и irc (git, hg, порты, golang);
- Изменяем исходные коды системы (смена раскладки клавиатуры);
- Музыка (и видео???);
- Мои патчи: ethernet alc, ethernet athn, acpi, vgadb;
- Сравнение исходного кода ядер: openbsd, Linux, plan9.

Если что, пишите свои предложения/вопросы.



P.S. Edited: 2020-10-11 10:28:47

# Синдром IT-вахтёрства
std.hugeping
hugeping(ping,1) — All
2020-10-06 09:53:41


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

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

Я создал заявку на решение проблемы и стал ждать. Кстати, в школе, похоже, считали, что мы просто не умеем создать аккаунт школьника или ленивые. Время шло, а ситуация нагнеталась, так как сын не мог делать Д3. Тогда я вооружился отладчиком FF и начал изучать API ЭЖД...

За вечер удалось выяснить следующее:

- Авторизация по токену проходит;
- После авторизации сервер возвращает _список_ профилей. Профиль - это описание учебного заведения и другие атрибуты. При этом профили привязываются к одному пользователю (uid);
- Возвращается список из 2-х профилей: 1-й -- старая школа, 2-й -- новая.
- Клиент пытается зайти в 1-й профиль и получает "отбой" (профиль неактивный?) в виде ошибки, которая проявляется как перенаправление на главную страницу.

Почти сразу, как я это понял, удалось заменить в cookies идентификатор профиля и мы зашли в дневник! Но работало не всё: новая версия дневника показывала пустоту.

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

И тогда, на следующее утро наступил второй этап.

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

Самое сложное -- подменить ответ. Удивительно, но ни FF ни Chrome не предоставляют простых (или вообще никаких?) путей сделать такое. Поэтому воспользовался таким вот проектом: https://mitmproxy.org/

В нём есть режим, замена ответа с помощью регулярки. А дальше, дело техники. Положил в систему корневой сертификат, настроил в FF auto proxy (чтобы работал только на dnevnik.mos.ru) и... Работает как часы. ;)

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

И тут приходит ответ на заявку. Та-дааам!

> "Для восстановления доступа к дневнику нужно сменить пароль..." !!!!???

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

Позвонил снова, в этот раз уже откровенно орал. Объяснил снова ещё раз, попросил переоткрыть и повысить приоритет задачи. Через 3 дня пришёл ответ, что всё -- исправили!

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

Так вот, в момент первой "отписки" я в полной мере почувствовал силу IT-вахтёрства.

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

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

Я уже молчу про то, что самые важные ресурсы: сайты госуслуг и банки -- перегружены js так, что он уже просто вытекает из щелей разметки.

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

# Re: Пишу ноду ii/idec на go
idec.talks
hugeping(ping,1) — Peter
2020-09-26 12:05:55


Там от меня ушли 7 сообщений из черновиков/неотправленных? мобильного клиента... Нужно их блеклистить:

ii://2NszlFTgvhakzz7dIfvc
ii://Q03NcPZRuqeaOT5d6Tze
ii://v48ZAPJMiFbWl68YiFWU
ii://5JdRzlDtEJTfOtKCtTb4
ii://pEtdZQ4aPz7SAhFK3zwR
ii://SglNQOG3vyujcZLXjDtu
ii://flYuqUgR5SVgybdnYnVp

Извините. :)

# Re: Фантастические консоли и где они обитают
develop.16
hugeping(ping,1) — johnbrown
2020-09-26 08:49:01


Если мне захочется "живого" железа, я скорее всего выберу спектрум. В детстве я программировал на БК0010-01, а вокруг были спектрумы. Поэтому, интересно. :) Даже читал книгу по железу спека не так давно. Но реально, не уверен что руки дойдут. Много всего. :) Сейчас вот Plan-9 увлёкся.

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

# Битые текстуры на AMD Radeon Vega
linux.14
hugeping(ping,1) — All
2020-09-24 07:21:16


Купил в начале карантина два ноута: Acer Apire 3. И надо сказать, очень доволен (дёшево и эффективно). Но на ноуте частенько в 3d приложениях наблюдал битые текстуры. Не сказать, что критично, но -- напрягало. Быстрый поиск ничего не давал. Но в итоге, всё-таки нашлось:

# Переменная окружения
AMD_DEBUG=nodmacopyimage

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

P.S. Следующие компы буду брать на AMD.

# Re: Вернуться в детство с PICO-8
std.hugeping
hugeping(ping,1) — boscholeg
2020-09-23 10:06:42


> Сейчас очередь за чем? Будет пико или инстед игрушка?

Хочется написать на метапарсере.

# Re: Вернуться в детство с PICO-8
std.hugeping
hugeping(ping,1) — johnbrown
2020-09-22 16:04:26


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

Тогда вторую мою игру зацени: https://instead.itch.io/rr

> Недавно открыл для себя фэнтези консоли. Пока присматриваюсь к TIC и ESP LGE. Битси уже в деле )

Круто! TIC тоже смотрел. Решил чередовать: INSTEAD->PICO8->INSTEAD... ;)

# Re: Unicode строки в Instead
std.prog
hugeping(ping,1) — Frost
2020-09-22 15:00:55


> print(std.game.codepage)

Конечно, так не сработает, в этот момент game ещё нет. Но в моём коде std.game проверяется внутри функции, запуск которой предполагается в момент, когда игра уже запущена. Например, в start() и позже...

# Re: Unicode строки в Instead
std.prog
hugeping(ping,1) — Frost
2020-09-22 14:36:39


> выяснилось, что std.game приводит к ошибке. Мне пришлось удалить фрагмент

Файл с игрой называется main3.lua или main.lua? Нужно, чтобы было main3.lua -- это новое INSTEAD API, старое API больше не поддерживается.

> Файл с кодом игры ведь обязан быть в кодировке UTF-8 (разве не так?). Зачем тогда эта проверка?

Формально, не обязан. Дело в том, что до сих пор есть поддержка разных кодировок, но по факту -- никто кроме utf-8 ничего не использует. И это хорошо.

# Re: Unicode строки в Instead
std.prog
hugeping(ping,1) — Frost
2020-09-22 13:34:27


> Спасибо. Я благодарен за уделенное внимание моему вопросу. Однако на текущем этапе мне сложно разбираться в коде метапарсера.

Так там были готовые функции. Просто скопировать в свою игру.

local function utf_ff(b, pos)
	if type(b) ~= 'string' or b:len() == 0 then
		return 0
	end
	local utf8 = (std.game.codepage == 'UTF-8' or std.game.codepage == 'utf-8')
	if not utf8 then return 1 end
	local i = pos or 1
	local l = 0
	if b:byte(i) < 0x80 then
		return 1
	end
	i = i + 1
	l = l + 1
	while b:byte(i) and b:byte(i) >= 0x80 and b:byte(i) <= 0xbf do
		i = i + 1
		l = l + 1
		if i > b:len() then
			break
		end
	end
	return l
end

local function utf_chars(b)
	local i = 1
	local s
	local res = {}
	local ff = std.rawget(_G, 'utf8_next') or utf_ff
	while i <= b:len() do
		s = i
		i = i + ff(b, i)
		table.insert(res,  b:sub(s, i - 1))
	end
	return res
end

Вот это реализация utf_chars, которая сделает массив с литерами из строки:

local a = utf_chars("привет")

Мне просто неизвестно, какие функции нужны.

> Вытекающий вопрос: можно ли перевести Instead на работу с LUA версии 5.3, в которой есть встроенная поддержка Юникода?

ИНСТЕД и так работает (может быть собран) с Lua от 5.1 до 5.4. Но если нужно, чтобы игра работала на всех видах установок (не только на собственной версии), нужно пользоваться 5.1. В основном это связано с тем, что бинарные сборки используют LuaJit, который 5.1 (с расширениями).

# Re: Малинка, как домашний веб сервер
pipe.2032
hugeping(ping,1) — boscholeg
2020-09-22 11:18:09


> Петр расскажи насколько равномерно корпус прогревается?
> Пробовал измерять температуру в разных частях корпуса?

Температуру смотрел только такими командами:

$ cat /sys/class/thermal/thermal_zone0/temp
$ vcgencmd measure_temp

На ощупь, верхняя часть нагрета равномерно.

> GUI и прочие десктопы ты на малинке поднял? Или работаешь через терминал?

Ничего, кроме ботов, ssh и ii-go не кручу там. Первый раз запускал графику, но потом сразу снёс. Возможно, буду экспериментировать с 9front, но не сейчас.

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

Да, правда мне по ошибке привезли корпус, в который можно ставить вентиляторы (идут в комплекте). Из-за этого, там не везде есть рёбра. Но, похоже, это не так уж и важно. Сейчас t == 39C :) Летом будет повыше, наверное.

# Re: UTF8 строки в Instead
std.prog
hugeping(ping,1) — Frost
2020-09-21 19:03:05


> Приветствую, друзья. Подскажите пожалуйста как можно работать с кириллицей в Instead. Я имею ввиду функции len; sub и другие, работающие с однобайтовой кодировкой символов.

Привет!

На самом деле, в метапарсере есть такой код. Он написан на Lua. Но, в последней версии INSTEAD есть и C реализация, которая помогает этому Lua коду.

Наверное, проще всего посмотреть как это сделано в МП. Даю наводку: https://github.com/instead-hub/metaparser/blob/master/parser/mp.lua#L87

Функция, которая из строки делает массив литер.

Рядом есть более примитивные функции: utf_len, utf_char, utf_ff и utf_bb.

А вот как определяется, какую из реализаций брать -- на Lua или на C. Чтобы работало и со старым и с новым INSTEAD:

utf = {
    bb = std.rawget(_G, 'utf8_prev') or utf_bb;
    ff = std.rawget(_G, 'utf8_next') or utf_ff;
    len = std.rawget(_G, 'utf8_len') or utf_len;
    char = std.rawget(_G, 'utf8_char') or utf_char;
};

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

utf_len, очевидно, возвращает число литер;
utf_char(строка, номер) - возвращает литеру по позиции;
utf_ff(строка, смещение) - возвращает смещение следующей литеры;
utf_bb(строка, смещение конца) - возвращает смещение предыдущей литеры;

Pages: 1 2 3