Reprise

[idec.talks] Thu Sep 21 14:26:14 UTC 2023 @Andrew Lobanov -> All

Я нечаянно перепутал строку авторизации на мобилке и написал несколько сообщений от имени моей жены. Прошу понять и простить. +++ Йа мобилко.

Re: Документация

[idec.talks] Thu Sep 21 13:54:13 UTC 2023 @Reprise -> Ordos

Ordos> Простите великодушно, что бесцеремонно влез в вашу математику. Так и быть - буду погрешностью в расчётах. Мне не принципиально. Мы тут все погрешность в общей картине. Ordos> P. S. Не понимаю моду пилить станции на го. Роли это, конечно, не играет, но, как по мне, вся суть местной сети - простота и минимализм, как он есть. Ну так го как раз простой и минималистичный. +++ Йа мобилко.

Re: Документация

[idec.talks] Thu Sep 21 06:53:20 UTC 2023 @Ordos -> Reprise

Reprise> Ну так не мудрено перепутать. Если живой ведёт себя как неживой, его не считают :) Простите великодушно, что бесцеремонно влез в вашу математику. Так и быть - буду погрешностью в расчётах. Мне не принципиально. P. S. Не понимаю моду пилить станции на го. Роли это, конечно, не играет, но, как по мне, вся суть местной сети - простота и минимализм, как он есть.

Re: Документация

[idec.talks] Thu Sep 21 05:30:17 UTC 2023 @Reprise -> Ordos

Ordos> Ну живых-то, допустим, больше трёх. Активных - да. Ну так не мудрено перепутать. Если живой ведёт себя как неживой, его не считают :) +++ Йа мобилко.

Re: Документация

[idec.talks] Wed Sep 20 14:43:45 UTC 2023 @Ordos -> neonxp

neonxp> И я пилить сел :) на трех живых пользователей сети будет три гошных реализации 🤣 Ну живых-то, допустим, больше трёх. Активных - да.

Re: Новости с полей

[idec.talks] Tue Sep 12 18:28:10 UTC 2023 @Andrew Lobanov -> hugeping

AL>> Думаю, ещё скомунизжу у Петра из ii-go его текстовую базу до кучи. Правда там с поиском надо покумекать как сделать, чтобы оно не кушало ресурсы как не в себя. hugeping> Если поиск по идентификаторам, subj и так далее, то он реализован за счёт загрузки в память индекса целиком. Я посчитал, что это не такое уж узкое место. Например, сейчас весь индекс моей базы 700Кб. Поиск по индексу не так интересен :) hugeping> А если речь про поиск содержимого, то я его по-моему вообще не делал. Ну вот я подумал, что раз у меня СУБД, то можно его и сделать будет. Но вот для менее технологичных решений уже сложнее. Пока в раздумиях. hugeping> Но вообще, ii-go на удивление шустро работает, я даже не ожидал. Да. Весьма. Я немного изучал код - мне понравилось. +++ Лично я вижу в этом перст судьбы – шли по лесу и встретили программиста.

Re: Новости с полей

[idec.talks] Tue Sep 12 17:16:45 UTC 2023 @hugeping -> Andrew Lobanov

AL> Думаю, ещё скомунизжу у Петра из ii-go его текстовую базу до кучи. Правда там с поиском надо покумекать как сделать, чтобы оно не кушало ресурсы как не в себя. Если поиск по идентификаторам, subj и так далее, то он реализован за счёт загрузки в память индекса целиком. Я посчитал, что это не такое уж узкое место. Например, сейчас весь индекс моей базы 700Кб. А если речь про поиск содержимого, то я его по-моему вообще не делал. Но вообще, ii-go на удивление шустро работает, я даже не ожидал.

Новости с полей

[idec.talks] Tue Sep 12 17:03:13 UTC 2023 @Andrew Lobanov -> All

Фетчер без файловых конференций готов. Умеет работать с sqlite и mysql. Пожалуй, в стандартную поставку добавлю ещё поддержку postgresql. Благо это легко будет сделать. Да и вообще добавить форматы баз не проблема; главное - реализовать интерфейс, который жёстко прописан. А дальше просто в конфиге прописать нужный формат и настройки подключения к БД. Думаю, ещё скомунизжу у Петра из ii-go его текстовую базу до кучи. Правда там с поиском надо покумекать как сделать, чтобы оно не кушало ресурсы как не в себя. +++ Лично я вижу в этом перст судьбы – шли по лесу и встретили программиста.

Re: Каждый программист должен написать свой редактор

[std.hugeping] Tue Sep 12 16:59:38 UTC 2023 @vvs -> vvs

Кстати, напомнило. Когда Hewlett-Packard запустили линейку первых программируемых калькуляторов со встроенной CAS, то для них был специально придуман язык RPL (Reverse Polish Lisp). Собственно почти все дальнейшие их калькуляторы, совместимые с этими и являлись реализацией RPL с кучей ПО.

Re: Документация

[idec.talks] Tue Sep 12 16:54:03 UTC 2023 @Andrew Lobanov -> neonxp

neonxp> И я пилить сел :) на трех живых пользователей сети будет три гошных реализации 🤣 Как в старые добрые времена, когда каждый пилил свою ноду и свой клиент %) Прямо новый рассвет idec. Только без пользователей. Тут нужен ЭмСи как Рома Яковлев :) +++ Caesium/0.4 RC1

Re: Документация

[idec.talks] Tue Sep 12 14:04:10 UTC 2023 @hugeping -> neonxp

neonxp> И я пилить сел :) на трех живых пользователей сети будет три гошных реализации 🤣 Я считаю, это прекрасно. :))

Re: Документация

[idec.talks] Tue Sep 12 13:48:08 UTC 2023 @neonxp -> hugeping

И я пилить сел :) на трех живых пользователей сети будет три гошных реализации 🤣

Re: Каждый программист должен написать свой редактор

[std.hugeping] Tue Sep 12 13:12:38 UTC 2023 @vvs -> hugeping

vvs>> Тогда жду, что следующим проектом станет свой язык программирования :) Нет, ну серьёзно, у Пайка были свои ОС (Plan 9 и Inferno), свой редактор Acme и свои языки - Limbo и Go. Правда он это делал не один, да и, к тому же, не бесплатно. hugeping> Я не потянул бы такое. Хотя мне уже тут советовали посмотреть Оберон. :) Смотря что иметь в виду. Изобрести оригинальный универсальный язык - это искусство. Придумать же практичный прикладной язык для личного пользования - не сложнее, чем написать свой текстовый редактор. Ну пользуются же люди URQ :) Вот и подтверждение практичности такого подхода: https://ru.wikipedia.org/wiki/%D0%AF%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2%D0%BE-%D0%BE%D1%80%D0%B8%D0%B5%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5 Разработать же транслятор - вообще дело техники и желания почитать соответствующую литературу. Короче, главное - не дрейфить :)

Re: Документация

[idec.talks] Tue Sep 12 07:50:08 UTC 2023 @Andrew Lobanov -> hugeping

AL>> Зачем это нужно? AL>> Я планирую сделать полноценные пакеты ПО для работы с IDEC-сетями. Серверную часть и клиентскую часть. В них, помимо документации по ПО хочу добавить и документацию по IDEC в целом. И, может, непосредственно по секте плохих парней. hugeping> Это просто отлично! Если нужно, для дальнейшей переработки бери фрагменты ii-go. Ну свой фетчер я почти подчистую скопировал с твоего. Надо будет не забыть указать этот факт :) +++ Лично я вижу в этом перст судьбы – шли по лесу и встретили программиста.

Re: Документация

[idec.talks] Tue Sep 12 07:22:26 UTC 2023 @hugeping -> Andrew Lobanov

AL> Зачем это нужно? AL> Я планирую сделать полноценные пакеты ПО для работы с IDEC-сетями. Серверную часть и клиентскую часть. В них, помимо документации по ПО хочу добавить и документацию по IDEC в целом. И, может, непосредственно по секте плохих парней. Это просто отлично! Если нужно, для дальнейшей переработки бери фрагменты ii-go.

Re: Документация

[idec.talks] Tue Sep 12 05:24:10 UTC 2023 @Andrew Lobanov -> All

Зачем это нужно? Я планирую сделать полноценные пакеты ПО для работы с IDEC-сетями. Серверную часть и клиентскую часть. В них, помимо документации по ПО хочу добавить и документацию по IDEC в целом. И, может, непосредственно по секте плохих парней. +++ Лично я вижу в этом перст судьбы – шли по лесу и встретили программиста.

Документация

[idec.talks] Tue Sep 12 05:18:54 UTC 2023 @Andrew Lobanov -> All

Давно чесались руки немного переработать и реструктурировать существующую документацию. Ну и по личным предпочтениям, переделать её в формате org-mode. Это такой формат для emacs и программы orgzly, который позволяет удобно и достаточно гибко структурировать информацию. В первом приближении документация выглядит так: https://git.spline-online.ru/spline/idec-doc/src/branch/master/main.org О найденных ошибках и опечатках пишите здесь. Также в ближайших планах полное переписывание ПО для таверны и новый клиент, но считайте что я вам этого не говорил :) +++ Лично я вижу в этом перст судьбы – шли по лесу и встретили программиста.

Re: S L A V A U K R A I N E

[std.hugeping] Mon Sep 11 18:39:42 UTC 2023 @Reprise -> fdfdfd_5789

Слава Украине, слава Украине... Перестаньте насиловать труп. Помела так померла.

Re: Победа будет Za нами!

[std.hugeping] Mon Sep 11 17:47:56 UTC 2023 @hugeping -> kct-ac12

kct-ac12> Слава России! Да, бро! Только вперёд!

Re: Каждый программист должен написать свой редактор

[std.hugeping] Mon Sep 11 17:47:36 UTC 2023 @hugeping -> vvs

vvs> Тогда жду, что следующим проектом станет свой язык программирования :) Нет, ну серьёзно, у Пайка были свои ОС (Plan 9 и Inferno), свой редактор Acme и свои языки - Limbo и Go. Правда он это делал не один, да и, к тому же, не бесплатно. Я не потянул бы такое. Хотя мне уже тут советовали посмотреть Оберон. :) Но пока я решил чисто утилитарную проблему - испытал сегодня на работе - пока всё отлично!

Re: Атака бота

[idec.talks] Mon Sep 11 16:46:08 UTC 2023 @Reprise -> hugeping

hugeping> Как вы, возможно, заметили, укронацист(ы) долбят станцию :) hugeping> Я специально не закрываю регистрацию чтобы отладить свой антивандальный скрипт, так что пока потерпите. Можно пока снять фетч на время с моей станции. Да ладно. Слабенько. Вот, помню, когда у Ромы через XSS увели строки авторизации, было весело. Или когда устраивали реальный флуд матными сообщениями,а его станция это прожевала и дальше передала. Тоже было забавно :) hugeping> P.S. Интересная игра. :) Только победитель уже известен. Как иронично :)

Re: ii-net.tk

[idec.talks] Mon Sep 11 16:31:48 UTC 2023 @Reprise -> neonxp

neonxp> Отправил :) Удобный он всё таки. Жаль, что некому поддерживать. Скоро выложу в таверне.

Re: Атака бота

[idec.talks] Mon Sep 11 15:38:36 UTC 2023 @hugeping -> Andrew Lobanov

Как вы, возможно, заметили, укронацист(ы) долбят станцию :) Я специально не закрываю регистрацию чтобы отладить свой антивандальный скрипт, так что пока потерпите. Можно пока снять фетч на время с моей станции. P.S. Интересная игра. :)

Re: Каждый программист должен написать свой редактор

[std.hugeping] Mon Sep 11 12:19:44 UTC 2023 @vvs -> Andrew Lobanov

VSCode может служить интерфейсом к самым разным веб приложениям. Например, он является клиентом GutHub Codespaces и Copilot. Я знаю и другие проекты, где он используется для интерактивных документов, где вместе присутствуют код, данные и документация, как в Jupyter. Если кто видел Wolfram Mathematica, то там такой же подход, только на основе интерактивного блокнота: https://ru.wikipedia.org/wiki/%D0%98%D0%BD%D1%82%D0%B5%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%B2%D0%BD%D1%8B%D0%B9_%D0%B1%D0%BB%D0%BE%D0%BA%D0%BD%D0%BE%D1%82 Использование чисто текстовой среды, как в Emacs, затрудняет создание таких интерфейсов, особенно при использовании сети и интернет протоколов. Хотя и в Emacs можно пытаться такое реализовать, но он тут явно уступает по своим возможностям. Большинство людей не станет использовать Lynx вместо Firefox, да и не везде он будет работать правильно (в банке). P.S. Edited: 2023-09-11 13:20:01

Re: Каждый программист должен написать свой редактор

[std.hugeping] Mon Sep 11 11:47:45 UTC 2023 @Andrew Lobanov -> vvs

hugeping>> У кого-то может возникнуть вопрос. А почему я не использую vscode? Потому что моя профессия приносит мне удовольствие и я разборчив в своих предпочтениях. Что касается vscode: hugeping>> - это приложение на основе браузера; hugeping>> - vscode пришёл из недр корпорации. vvs> VSCode надо рассматривать именно как интерфейс, а не редактор. Тогда наличие браузера становится преимуществом. Я могу понять acme как интерфейс. И даже emacs как интерфейс, хотя тут уже всё менее чётко. Но интерфейсом к чему является VSCode. На работе использую его каждый день и от твоего сообщения появилось стойкое ощущение, что я что-то фундаментального о нём не знаю :) +++ Лично я вижу в этом перст судьбы – шли по лесу и встретили программиста.

Re: ii-net.tk

[idec.talks] Mon Sep 11 11:47:45 UTC 2023 @Andrew Lobanov -> neonxp

neonxp> Отправил :) Огромное спасибо! +++ Лично я вижу в этом перст судьбы – шли по лесу и встретили программиста.

Re: Каждый программист должен написать свой редактор

[std.hugeping] Mon Sep 11 11:32:49 UTC 2023 @vvs -> hugeping

hugeping> У кого-то может возникнуть вопрос. А почему я не использую vscode? Потому что моя профессия приносит мне удовольствие и я разборчив в своих предпочтениях. Что касается vscode: hugeping> - это приложение на основе браузера; hugeping> - vscode пришёл из недр корпорации. VSCode надо рассматривать именно как интерфейс, а не редактор. Тогда наличие браузера становится преимуществом. hugeping> Как я обхожусь без "фишек" современных редакторов? Наверное, мне они не так уж и нужны. Даже наоборот, вылезающие подсказки во время набора раздражают. А после acme я осознал, что и "раскраска" текста -- какая-то ненужная нелепость. Играет роль и то, что в моей области деятельности не нужно запоминать бесчисленное число методов и классов. Я могу писать код просто "из головы". Когда у твоего проекта будет миллион строк кода, то инкрементальный поиск во время набора покажется совсем не лишним. Мои претензии к VSCode - текстовый редактор, который даже не работает в текстовом режиме, а текстовый процессор программисту не нужен, к тому же здесь он всем уступает. hugeping> Я не чувствовал, что инструмент "принадлежит" мне в полной мере. Тогда жду, что следующим проектом станет свой язык программирования :) Нет, ну серьёзно, у Пайка были свои ОС (Plan 9 и Inferno), свой редактор Acme и свои языки - Limbo и Go. Правда он это делал не один, да и, к тому же, не бесплатно. Только не воспринимай эти слова, как насмешку. Хотя тут и есть доля иронии, но ко всем твоим проектам я отношусь с уважением. Далеко не каждый на это способен и, на мой взгляд, это важный инструмент для саморазвития.

Re: ii-net.tk

[idec.talks] Mon Sep 11 11:05:56 UTC 2023 @neonxp -> Andrew Lobanov

Отправил :)

Re: Слава США! 🇺🇸

[std.hugeping] Mon Sep 11 10:44:42 UTC 2023 @neonxp -> Andrew Lobanov

Дык она у них и так есть. Работа хохлоботами.

Re: Слава США! 🇺🇸

[std.hugeping] Mon Sep 11 10:33:13 UTC 2023 @Andrew Lobanov -> dffafdsf213233

dffafdsf213233> Слава США! 🇺🇸 Очередной набед неумных ботов. Есть же время у людей... Работу бы чтоли нашли. +++ Лично я вижу в этом перст судьбы – шли по лесу и встретили программиста.

Re: ii-net.tk

[idec.talks] Mon Sep 11 10:32:17 UTC 2023 @Andrew Lobanov -> neonxp

neonxp> Получилось собрать :) Потом придумаю куда выложить. Ну или могу скинуть в телеге, например, или по email. Жажду получить на spline1986@yandex.ru. Потом могу выложить на фреки в таверну. +++ Лично я вижу в этом перст судьбы – шли по лесу и встретили программиста.

Re: Мова

[std.hugeping] Mon Sep 11 10:32:17 UTC 2023 @Andrew Lobanov -> neonxp

neonxp> Я предполагаю, в случае апокалиптического сценария интернетовских масштабов, именно такие трудецентрализованные сети будут иметь расцвет :) Примитивные технологии победят капиталистов! ^__^ +++ Лично я вижу в этом перст судьбы – шли по лесу и встретили программиста.

Победа будет Za нами!

[std.hugeping] Mon Sep 11 10:30:21 UTC 2023 @kct-ac12 -> hugeping

Слава России!

Re: Мова

[std.hugeping] Mon Sep 11 09:15:15 UTC 2023 @neonxp -> Andrew Lobanov

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

Re: ii-net.tk

[idec.talks] Mon Sep 11 09:13:31 UTC 2023 @neonxp -> Andrew Lobanov

Получилось собрать :) Потом придумаю куда выложить. Ну или могу скинуть в телеге, например, или по email.

Re: Мова

[std.hugeping] Mon Sep 11 08:35:33 UTC 2023 @Andrew Lobanov -> neonxp

neonxp>>> Спам и боты - признак что сеть живая :) AL>> Это конвульсии %) neonxp> Надеюсь, нет Где-то глубоко в душе я тоже надеюсь, но все в мессенджерах и сюда их палками не загнать. +++ Caesium/0.4 RC1

Re: Мова

[std.hugeping] Mon Sep 11 08:07:18 UTC 2023 @neonxp -> Andrew Lobanov

neonxp>> Спам и боты - признак что сеть живая :) AL> Это конвульсии %) Надеюсь, нет

Re: ii-net.tk

[idec.talks] Mon Sep 11 07:57:21 UTC 2023 @Andrew Lobanov -> hugeping

AL>> Где найти apk-файл с мобильным клиентом даже и не знаю сейчас. Увы, он основательно забил на idec. hugeping> А исходники где-то лежат? Лежат то они лежат, но собрать их для меня было бы проблемой. +++ Caesium/0.4 RC1

Re: ii-net.tk

[idec.talks] Mon Sep 11 07:34:15 UTC 2023 @neonxp -> hugeping

AL>> Где найти apk-файл с мобильным клиентом даже и не знаю сейчас. Увы, он основательно забил на idec. hugeping> А исходники где-то лежат? На гитхабе они лежат, проблема только собрать их. Я попробую, как доберусь до компа с андроид студией. Пока сижу через веб :)

Re: ii-net.tk

[idec.talks] Mon Sep 11 07:21:51 UTC 2023 @hugeping -> Andrew Lobanov

AL> Где найти apk-файл с мобильным клиентом даже и не знаю сейчас. Увы, он основательно забил на idec. А исходники где-то лежат?

Re: Мова

[std.hugeping] Mon Sep 11 07:16:39 UTC 2023 @Andrew Lobanov -> neonxp

neonxp> Спам и боты - признак что сеть живая :) Это конвульсии %) +++ Caesium/0.4 RC1

Re: ii-net.tk

[idec.talks] Mon Sep 11 07:16:39 UTC 2023 @Andrew Lobanov -> neonxp

neonxp> Всем привет! Таки шалом! neonxp> Надеюсь, примерно пропал в правильную эху с вопросом. Нормально попал. При нашем трафике можно писать практически куда угодно %) neonxp> Вопрос к старожилам, а куда пропал сайт из сабжа и будет ли он восстановлен где-то? Человек, отвечавший за сайт, забил на него и на мобильный клиент. neonxp> В вебархиве он есть, но нет самого главного - файлов. В частности, не могу достать idec mobile, а собрать из сорцов не могу в силу того, что под рукой пока только смартфон, но не пк. Где найти apk-файл с мобильным клиентом даже и не знаю сейчас. Увы, он основательно забил на idec. +++ Caesium/0.4 RC1

ii-net.tk

[idec.talks] Sun Sep 10 17:53:03 UTC 2023 @neonxp -> All

Всем привет! Надеюсь, примерно пропал в правильную эху с вопросом. Вопрос к старожилам, а куда пропал сайт из сабжа и будет ли он восстановлен где-то? В вебархиве он есть, но нет самого главного - файлов. В частности, не могу достать idec mobile, а собрать из сорцов не могу в силу того, что под рукой пока только смартфон, но не пк.

Re: Мова

[std.hugeping] Sun Sep 10 17:16:45 UTC 2023 @neonxp -> hugeping

Спам и боты - признак что сеть живая :)

Re: Каждый программист должен написать свой редактор

[std.hugeping] Sun Sep 10 16:41:14 UTC 2023 @vvs -> vvs

vvs> Ты, когда говоришь о простоте, всегда, на самом деле, подразумеваешь только самое необходимое Кстати, я тоже замечал, что если у меня под рукой есть привычный инструмент, то я всё пытаюсь делать им. Ну, действительно, зачем плодить лишние сущности и изучать всё новые способы делать одно и то же, если у меня уже и так всё для этого было? А в расходы запишем необходимость в постоянном усложнении "простого" инструмента. Вот так и появились на свет Vim и Emacs (и luvit с emilua, Smalltalk и кто его знает что ещё :)

Re: Каждый программист должен написать свой редактор

[std.hugeping] Sun Sep 10 15:40:20 UTC 2023 @vvs -> hugeping

hugeping> Если сделать специализированный код, то - можно, конечно. Я просто старался остаться в рамках API rein. Ну и вообще, хотел сохранить простоту. Ты, когда говоришь о простоте, всегда, на самом деле, подразумеваешь только самое необходимое :) Берём вызовы ядра Линукса и План 9: разница лишь в том, что считать самым необходимым. Один человек ещё как-то сказал, что его самой большой ошибкой было то, что для реализации интерфейса пользователя он написал текстовый редактор на Яве - такой проект может занять всю жизнь :) Интересно, Столлман, когда писал Emacs, подозревал, что в нём появится ещё и Сокобан и калькулятор в придачу? Понятие необходимости со временем тоже эволюционирует, однако :)

Re: Каждый программист должен написать свой редактор

[std.hugeping] Sun Sep 10 14:34:36 UTC 2023 @hugeping -> vvs

vvs> https://luvit.io ? Дисклеймер: найдено в интернете, я не специалист по Lua и т.п. Если сделать специализированный код, то - можно, конечно. Я просто старался остаться в рамках API rein. Ну и вообще, хотел сохранить простоту. vvs> И всё же большие и сложные проекты я бы на нём делать поостерёгся. red меньше 2000 строк в общей сложности. Lua конечно хорош как встраиваемый язык.

Re: Каждый программист должен написать свой редактор

[std.hugeping] Sun Sep 10 11:47:01 UTC 2023 @vvs -> hugeping

hugeping> Всё это реализовано за счёт io.popen временных файлов и coroutine (переключение после чтения пачки строк). Поэтому - ненадёжно. Если вы запустите программу которая висит и ничего не выдаёт, red зависнет. Поэтому реализацию нельзя считать полноценной замену acme. Тем не менее, я пользуюсь этим механизмом для проверки орфографии. https://luvit.io ? Дисклеймер: найдено в интернете, я не специалист по Lua и т.п. P.S. Я долгое время относился к Lua пренебрежительно за его "игрушечность". Однако в какой-то момент мне зачем-то понадобилось ознакомиться с ним глубже и на меня произвели впечатление элегантность и минимализм языка, напомнило Лисп. И всё же большие и сложные проекты я бы на нём делать поостерёгся. P.S. Для меня редактор - это ещё и интерфейс со средой исполнения, например CAS или ITP. Но для многих достаточно и меньшего. Emacs - это крайний пример, к тому же его может оказаться и недостаточно если интерфейс нетекстовый по природе.

Re: Каждый программист должен написать свой редактор

[std.hugeping] Sun Sep 10 11:46:14 UTC 2023 @vvs -> hugeping

Удалено. Случайно зацепил не ту клавишу.

Каждый программист должен написать свой редактор

[std.hugeping] Sun Sep 10 10:32:09 UTC 2023 @hugeping -> All

Решил написать небольшую заметку про свой новый проект. Интересно, что как и остальные, он стал эволюцией моих прошлых экспериментов. Занимаясь INSTEAD я полюбил Lua. Играя с Plan9 я сделал парсерный re:instead (в том числе и для того, чтобы можно было писать парсерные игры прямо в Plan9). Развил re:instead в rein, который стал уже скорее "платформой" приложений. Не смотря на то, что rein создавался с мыслью о "духе ретро", я не стал выбрасывать из него функции, которые бы позволяли писать "полноценные" приложения. Например, поддержку шрифтов ttf и возможности менять размеры окна на лету. Я знал, что рано или поздно я попробую сделать это -- написать свой собственный текстовый редактор. :) Я пользовался разными редакторами. Среди них, конечно, особое место занимают vim и emacs. Но когда я познакомился с acme я понял, что по большому счёту совсем не важно в чём ты пишешь код. Простой инструмент может быть гибким, эффективным и вдохновляющим. У кого-то может возникнуть вопрос. А почему я не использую vscode? Потому что моя профессия приносит мне удовольствие и я разборчив в своих предпочтениях. Что касается vscode: - это приложение на основе браузера; - vscode пришёл из недр корпорации. Как я обхожусь без "фишек" современных редакторов? Наверное, мне они не так уж и нужны. Даже наоборот, вылезающие подсказки во время набора раздражают. А после acme я осознал, что и "раскраска" текста -- какая-то ненужная нелепость. Играет роль и то, что в моей области деятельности не нужно запоминать бесчисленное число методов и классов. Я могу писать код просто "из головы". Я начал проводить всё больше времени в acme, написал для него e-mail клиент, но всё-таки нельзя сказать, что он стал моим единственным редактором. Он является естественным в своей родной среде обитания - Plan9, но для работы в Linux/Bsd* необходимо собрать plan9ports. Я не чувствовал, что инструмент "принадлежит" мне в полной мере. Так что мысль о собственном _простом_ редакторе стала приходить мне всё чаще. Наверное ещё во время работы над re:instead (который был написал под вдохновением от редактора Lite) я увидел, что это возможно. Потом, в rein я написал простой "традиционный" редактор edit и пользовался им при разработке под rein. Ощущение инструмента в котором ты знаешь каждый "болтик" было непередаваемым! В edit (редактор rein) в начале было много багов. Файл в edit был представлен в виде массива строк. Это удобно для навигации и отображния, но совсем неудобно для редактирования. Пока я его дописывал и фиксил баги я подумал, а что если файл представлять не массивом строк, а просто -- одной строкой? И тут же снова вспомнил acme, где изменения высоты скроллера явно намекает на то, что в качестве позиции используется смещение, а не номер строки. Стало интересно попробовать. И в этот раз я не смог погасить свой порыв. Так я и начал писать свой мини-acme. Многие фишки acme раскрываются в полной мере в Plan9. Например, файловая система, через которую можно управлять редактором. Да, в Linux тоже можно монтировать её через fuse, но есть нюансы, которые делают этот метод не рабочим. Поэтому я был настроен делать именно "мини"-acme редактор, в котором мог бы делать свою повседневную работу. В качестве механизма расширения - конечно Lua! Сейчас редактор доведён до полу-готового состояния и смержен в master ветку проекта rein. Редактор делается под мои предпочтения, поэтому он не будет демонстрироваться "широкой" публике, но я всё-таки решил написать этот текст на случай, если им заинтересуется кто-нибудь ещё. Итак, особенности редактора red. # RED -- Rein Editor ## Клавиши В отличие от acme в red работают многие привычные комбинации клавиш: - ctrl-c/x/v - копирование, удаление, вставка; - ctrl-z - undo; - ctrl-k - удаление до конца строки; - стрелки курсора - перемещение по тексту во всех направления; - page down/up - перемещение по тексту по странично; - home/end - начало и конец строки; - ctrl-w - умное выделение; - ctrl-s - сохранение буфера (окна). - shift-движение - выделение клавиатурой. Как в acme (или почти как в acme) работают: - escape - выделение последнего блока, удаление; - ctrl-f - автодополнение путей (правда, если варинтов несколько - выдаётся первый); - ctrl-a - начало/конец строки. ## Мышка - аккорды acme - должны работать похоже; - правая кнопка мыши - простой поиск как в acme; - alt+правая кнопка мыши - простой поиск назад; - shift + правая кнопка мыши - эмуляция средней кнопки мыши. В отличие от acme курсор _мыши_ не прыгает на выделенный текст поиска (так как управление курсором из приложение возможно не во всех средах). Чтобы продолжить поиск нужно повторно кликнуть в пустую область где нет текста (например, справа от строки). Или кликнуть на слово для поиска этого слова. - правая кнопка мыши на :число - прыжок на строчку. - средняя кнопка мыши - выполнение действия: меню, вызов программ, открытие каталогов и файлов. В acme открытие файлов и передача в plumber делается по пкм, однако это меня всегда немного раздражало. Потому что иногда клик приводит к поиску, а иногда - к действию. Захотел поискать https://... в коде, а открылся браузер. Поэтому в red все активные действия висят на средней кнопки мыши. А открытие каталогов, файлов - это тоже активные действия. Возможно, я сделал ошибку, но пока решение кажется удобным. - умное выделение Не такое как в acme, но всё-таки удобное. Двойной клик справа от строки - выделить всю строку с переводом строки. Двойной справа от последнего символа строки - строка но без перевода строки. Клики около скобок - выделение до пары. Клики на словах - выделение слов. Кроме мышки можно пользоваться умным выделением нажимая ctrl-w. ## Окна Я отказался от деления столбцов на стек окон. Вместо этого в одном столбце может быть открыто несколько файлов. Причин две: это проще устроено и этим чаще проще пользоваться. Когда вы открываете ещё один файл в столбце, он становится активным, а предыдущий файл становится на позицию 2 в списке файлов в меню. Вы можете выбрать любой из ранее открытых файлов средней кнопкой мыши. При этом активный файл (который отображён в окне) станет на место выбранного файла. Этим свойством удобно пользоваться для закрытия всех файлов кроме одного. Просто сделайте нужный файл последним в списке, а потом нажимайте подряд Close пока не останется только он. Вы можете перетащить открытый файл в другой столбец если потащите пкм за квадратик меню в область другого столбца. Когда вы открываете файл, то ищется уже открытый файл по всем столбцам и если он есть -- показывается. Если вам нужно открыть несколько одинаковых файлов, вам придется поменять имя открытому файлу в меню (напрмер, добавить "+" в начале) и открыть этот же файл ещё раз. Если имя файла начинается с "+", то такой файл не сохраняется на диск. Поэтому информационные окна называются: +Errors, +Output, +Help и т.д. Вы можете любое окно сделать информационным просто добавив + в начало имени активного файла (первый файл в списке файлов в меню). Скроллеры в отличие от acme работают традиционно - левая кнопка мыши "таскает" скроллер. ## Вызов программ Поддержки win (запуск шелла) на данный момент нет. Это связано с тем, что полноценную поддержку процессов нужно делать через fork. Это привяжет red к Unix. К тому же, red - это lite-acme. :) Расширения red можно делать на Lua, но для запуска полноценного shell этого недостаточно. ### Возможности по запуску программ - >cmd - запуск cmd с передачей в качестве параметра временного файла с данными; - ] [файлы] Чтобы немного ускорить запуск можно воспользоваться опциями: $ rein -platform-nosound -platform-nojoystick ... Для удобства я делаю себе скрипт вида: -- red #!/bin/sh /home/peter/Devel/rein/rein -platform-nosound -platform-nojoystick red -fs 19 "$@" И запускаю редактор из любого места. ## Открытие файлов по средней кнопке мыши В файле data/lib/red/uri.lua вы можете прописать вызов внешних программ. Например, запускать просмотрщик pdf если вы нажали на строчку, которая заканчивается на .pdf. ## Настройки для типов файлов В файле data/lib/red/presets.lua вы можете настроить поведение редактора в зависимости от типа файла (расширения). Пока доступны только размер табуляции и режим табуляции (пробелы или \t). Скорее всего появятся и другие настройки. ## Цвета В начале red.lua в таблице conf. # Что дальше? Редактор ещё сыроват, но я начал его использовать и постоянно вношу доработки. Приоритет разработки - личное использование. Ведь вряд-ли вы захотите променять vscode на _это_! Не правда ли? :) Но меня это не беспокоит. Ведь теперь я точно знаю -- каждый программист должен написать собственный редактор! У Линуса есть https://github.com/torvalds/uemacs у Роба Пайка -- acme, у Столмана emacs. А у меня теперь есть red и мне больше не нужно выбирать! P.S. Один мой друг удивился тому, что у меня есть желание программировать после работы и тратить время на такие вот хобби проекты. Не знаю в чём дело, но с годами желание программировать у меня никогда не исчезало. И я считал что это нормальное состояние для программиста. Программирование -- это в первую очередь форма творчества, а творчество всегда лечит. Ведь творчество это свобода. Эксперимент, игра -- но никак не рутина. В хобби проекте ты можешь почувствовать это в полной мере, ведь тут ты не ограничен целесообразностью. А на работе... На работе теперь можно будет редактировать код в red :)

copyleft 2021 difrex at lessmore dot pw; source code