st_rc_d
Start Contents Menu
- ST_RC_D
- Да здравствует Марк tshemsedinov
- Явление миру
- Фон
- Что я могу сделать
- Библиотека камней - Теория
- Библиотека камней - Практика
- Что здесь есть
- Install STL [and STL0]
- Неупорядоченные заметки
- Замечания об использовании функций
End Contents Menu
ST_RC_D
Да здравствует Марк tshemsedinov
Ave Marcus tshemsedinov* (лат.)
*) Cuius fides est lux (лат.)
Благодарность
Gratia (лат.)
- vitlav
- larchanka
- a3rus
Явление миру
Manifesto
Библиотеки stlu это инструмент создаваемый пользователем для создания автоматизации пользовательских задач.
Шаги по камням
Gradus in saxa (лат.)
- Следует использовать только доверенный код, который понятен и тестировал сам, а так же операционную систему
- Следует знать как используется недоверенный код
Фон
Sfondo (лат.)
Понимание поступков иногда кроется в том как человек видит реальность и в том что его терзает
Культурологический контекст
Contextus culturalis (лат.)
Эпоха Виндовс характеризуемая тонким юзером, довольствующимся графическим интерфейсом с кнопками, созданным глобальными корпорациями, подходит к концу. Графические итерфейсы истощили под собой все имеющиеся в распоряжнении человечества вычислительные мощности в погоне за призрачным удовлетворения пользователя, при этом нарастающая сложность информационных систем усугубляется падающей квалификацией программистов пытающихся их (системы) поддерживать (спасать). Если умножить это пониманием того, что корпорации строились на диктате гегемона над всеми остальными - и диктату этому пришел конец - то вопрос таков - что будем выращивать на руинах?
Предварительно Линукс, характеризуемый толстым юзером, знающим что делает, и тонкими программистами, представляющимися служителями операционной системы (области высоких абстракций пока еще катастрофически сложных программ (броузеры, и т.п.) мы пока не рассмариваем).
Все дальнейшее будет посвящено помощи юзерам, желающим стать все толще и толще, и будет исходить из того, что большинство пользовательской автоматизации может и должно быть написано самим пользователем и использоваться только в командной строке.
Огонь внутри
Fuoco dentro (лат.)
- написать код просто - не потерять его вообще возможно?
- баланса между системным и прикладным кодом не существует?
Что я могу сделать
Quid possum facere (лат.)
- Демонстрация возможностей stlu
-
данный README.md динамически создается из директории /.d/.mul/rbld_readme.mul/.cnt
- локальная версия README.md /.d/.mul/rbld_readme.mul/.prc/README.md
-
много локальных репозиториев push в много удаленных репозиториев ( как локальных так и в сети ) {push many to many}
-
перед git add проверить что нет больших файлов (>50Mb) {flow hook}
-
сделать .md файл используя файлы из директории - вставить картинки и т.п. {file generate}
-
сделать локальную базу знаний на файлах с поиском по тегам и каталогом .md файл {knowledge base}
-
сделать унифицированые по поведнию и удобные в испльзовании юзером обертки над стандартными утилитами os {user wrapper}
-
обеспечить бэкап с последующим восстановлением файлов и настроек программ {bcp dpl}
-
вставка сниппетов в код {insert snippet}
-
Библиотека камней - Теория
Bibliotheca Lapidum - Theoria (лат.)
Словарь
Lexicon (лат.)
stl - библиотека первого уровня абстракции от опрационной системы
stlu - библиотека из древа с корнем stl
fn_stl - функция библиотеки stl
fn_stlu - функция библиотеки stlu
fn_name - имя функции
fn_file - имя файла в котором определена функция
fn_dir - путь к директории содержащей fn_file и служебные файлы к нему
os - операционная система
os_cl - основной компилируемый язык операционной системы
os_sl - основной скриптовый язык операционной системы
fn_elem - элементарная функция написаная на os_cl вызываемая os_sl с аргументами и по имени
upath - тип указания пути файловой системы
Что это
Quid est (лат.)
- stl
- Состоит только из доверенного кода
- Определяется только для контекста юзера
- Состоит из функций написаных на os_sl и оперирующих утилитами используемыми в os
- Последующее за stl древо библиотек - stlu
Ограничения
Limitations (лат.)
Ограничение сложности stl
- stl состоит из fn_elem
- stlu использует предыдущие вплоть до stl
- функции библиотек имеют ограничение на количество строк
Требования к fn_elem
- Написаны на базовом языке операционной системы
Требования к os_sl
- Понятен и прост для юзера
- Период версионных изменений близок к периоду базового языка операционной системы
Тестируемость
- stl тестируется безусловно полностью при каждом запуске оболочки
- stlu тестируется по возможности
Расширяемость
- по набору функций в библиотеке
- по написанию библиотеки следующего уровня абстракции
Производительность
- Читабельность и простота для юзера будет происходить за счет уменьшения производительности
- Юзер пишет код сам - производительность его ответственность
- Управляемость автоматизации рутинных действий для юзера ценнее производительности
Типы и поведение
Genera et mores (лат.)
- Типы
- Гитхуки в репозитории
- файлы процедур и данных вызываемые функциями обертками над git
- Арбструктуры
- Структуры поддерикторий предназначенные для поиска по тегам и строке основного содержания
- upath
- строка являющаяся '@', относительным либо абсолютным путем
- Гитхуки в репозитории
- Поведение
- информация и ее обработка связаны только через интерфейсы
- создавать регулярные структуры только генерацией с параметрами - копипаст недоверенная операция
Рекомендации RCM
RCM_1 (изменения в оригинал)
в оригинал вносим изменения - копия для истории изменений
RCM_2 (служебные файлы)
при работе утилиты формировать следующие файлы рядом с результатами работы
- лог
- отдельно лог ошибок
- ридми
- readme.stnd.md
- readme.flow.md
- сорс файлы для запуска в командной строке
RCM_3 (cокращения)
dr - dir
fl - file
et - entety - file|dir
nm - name
et_lk - entety ссылка в ее имени содержится способ ее обработки
sdr - subdir
pth - path
rcv_dr - rcv dir
ins_dr - ins dir
prx - prefix
ptx - postfix
prx_et - prefix for entety (e.c. recommendationSTL for dr @|for fl &)
ptx_fn - postfix фиксирует принадлежность служебных файлов сфрмированых работой fn
lext - последнее расширение имени справа
cnx - context
res - результат вставки context
RCM_4 (notmast_butlast)
- наличие последнего аргумента для отладки функции
RCM_5 (mast_def_args)
- используемые аргументы в функции не могут быть пустыми при вызове
- допускается замена на константу e.c. @
Библиотека камней - Практика
Bibliotheca Lapidum - Usu (лат.)
Понижение абстракций
Deminutio abstractionis (лат.)
Базовые принципы
Basic principiis (лат.)
-
stlu : описание поведения и интерфейсов:
- при возникновении ошибки генерируется stack error который должен содержать:
- описание восхождения ошибки от системного вызова до пользовательского файла его вызвавшего в виде списка
- файл в котором сгенерирована ошибка
- номер строки где произошла ошибка
- возвращаемый код ошибки
- краткое описание ошибки
- при возникновении ошибки генерируется stack error который должен содержать:
-
fn_stlu : описание поведения и интерфейсов:
- все файлы с функциями хранятся в однотипных поддиректориях одной директории
- содержит только одну функцию с именем совпадающем с именем файла без расширений
- содержит только логику состоящую в использовании fn_elem, fn_stl и запуска процедур хрнящихся в файлах
- если логика состоит в обработке вариантов использования однотипных процедур или наборов данных - все процедуры или наборы данных для выбора следует хранить в отдельных директориях
- содержит следующие однострочные описательные данные себя самой для текстового поиска начинающиеся с:
- MAIN:
- краткое описание работы функции состоящее в упоминании аргументов и действий с их участием
- TAGS:
- слова начинающиеся с @ через пробел и фиксирующие ключевые определения
- MAIN:
- содержит следующие пояснения себя самой начинающиеся с:
- ARGS:
- перечисление всех возможных вариантов наборов аргументов и их значения в функции при стандартном вызове
- CNTL:
- перечисление всех возможных специальных аргументов определяющих специальное поведение:
- [-h] возвращает текст - описывает общее поведение и внутреннее устройство
- [_go or _e] вызывает в редактор кода тело функции
- [_tst or _t] вызывает функцию в стандартном тестовом контексте и тестовыми параметрами, возвращает:
- return 1 : if test NOT PASS
- return 0 : if test IS PASS
- [_flow_1] (demo run) вызывает функцию в произвольном пользовательском контексте и произвольными параметрами
- перечисление всех возможных специальных аргументов определяющих специальное поведение:
- EXAM:
- пример вызова функции
- ARGS:
- аргументы функции
- если аргумент обязателен и необходимо передать пустое значение - следует указать '@'
Базовые технологии
Basic technologiae (лат.)
- os - altlinux (ALT operating systems Russian software company)
- os_cl - gcc (the GNU Compiler)
- os_sl - bash (the GNU Project's shell—the Bourne Again SHell)
Что здесь есть
Quid est hic (лат.)
Библиотека STL
Поведение библиотеки STL
Правила именования функций
-
если [fn_stl] результатом является только возврат 0 или 1 при действии и производится [flow], то именование следующее:
_is_[flow]-
например определяется ответ
илиy
в качестве утверждения, то именование следующее:n_is_yes
-
-
если [fn_stl] n-обертка (в системе уже есть n-1 оберток) над [fn_elem] и производится [w_flow] изменение поведения, то именование следующее:
_[fn_elem]_wn_[w_flow]-
например первая обертка над source состоящая в проверке существования запускаемого файла, то имя следующее:
_source_w1_isf
-
Подсказки в именовании файлов или директорий
-
если в имени файла или директории содержится
, то удаление файла или файлов из директории будет иметь негативные последствия - допускается изменение файла или добавление файлов в директорию - иными словами ссылки на эти сущности используются в STL.ax.
Подсказки в расширениях файлов - wellknown - wnext
- wnext
-
список.lst -
файл с процедурой.prc -
контекст.cnt -
окружение.env -
пояснение по смыслу - формат .md.hie -
текстовый макет.tml -
общие пояснения - формат .md.man -
тестовый.tst -
хук в обертках над git.ham -
директория содержащая.mul
директорииwnext -
структура "лес".sil -
структура "дерево".arb -
структура "ветка".ram -
файл "лист".fol -
структура "дупло" - "кроличья нора".grot -
структура "коробка".repo -
пример.exa -
файл с сылками.anc
-
Функция библиотеки STL
Поведение функции STL
- путь к git директории проекта STL
- путь к git директории с пользовательскими данными проекта STL
.hie -
текстовый файл - Объяснение смысла и конкретные пояснения для сущности [name_fn]
.deb1 -
- Файл при запуске запускает функцию в deb1 контексте и параметрами для выяснения различных аспектов поведения
Допускается создание .deb2 .deb3 и т.д. (добавить по аналогии: [name_fn].tst.sh.deb2 и доп секцию if для cntl параметров )
[name_fn].tst.d -
- Директория определяет основной тест функции, состав этой директории:
- файл _XXX.tst.sh при запуске формирует текстовый файл res при необходимости им используется:
- tst.d директория для хранения промежуточных файлов генерируемых или используемых [name_fn]
- .lst список имен переменных
- pre текстовый файл - предопределяемый образец
- дале возвращается результат
с соответствующим стекомdiff res pre
.data
- пользовательские данные для name_fn, состав этой директории:
- .prc процедуры
- .lst списки
- .tml шаблоны
Состав библиотеки STL
Все функции STL (local)
Все функции STL (git)
Библиотека STL0
Поведение библиотеки STL0
Функция библиотеки STL0
Поведение функции STL0
LCU
Что это
- LCU - обработка файловой системы основаная на соответствии директории и файла __.lcu
- характеристики
- директоря определяет содержание своих поддиректорий
- возможности обработки fs
- поиск по тегам
- поиск по мейн содержимому
- требования к занесению информации
- ограниченное whellknown количество тегов
- добавление тега в файл отлько из уже существующих (alrtag)
- ограниченное whellknown количество тегов
- характеристики
naming
- секция .lcu loc
- RNDX locr
- MAIN locm
- TAGS loct
- логика названий
- All all
- locAll loc RNDX and MAIN and TAGS
- A and
- locrAm loc RNDX and MAIN
- O or
- locrOt loc RNDX or TAGS
- All all
- логика названий
- file.lcu == flcu
- env_dirs - pull directory as united for treat LSU == env_lcu
- dir with flcu == dlcu
add to flcu
- nrdx
- tags
- main
search among flcu
Unsort
Select (меню выбора) в параметре функции
-
Если параметром функции является меню, то
- 0 означает, что при вызове user сможет в интерактивном меню select выбрать нужный пункт меню - после этого в контекст функции попадет сущность соответствующая этому пункту (путь к выбранному файлу, срока аргументов и т.п.)
- N сразу указывает на пункт меню
-
пример выбора файла из директории_d2mm
UPG stl_fn
- для upg_[name_fn]:
- создаем [name_fn]_
- тестируем на наследование поведения
- делаем bcp [name_fn] с перемещением файлов
- заменяем [name_fn]_ на [name_fn] во сех файлах и директориях [name_fn]_ (like _gig_st_rc_fn _XXX -> [name_fn])
Install STL [and STL0]
~ $ wget https://raw.githubusercontent.com/legioner9/st_rc_d/refs/heads/master/.d/.install.ax/main_install_stl.sh
~ $ . main_install_stl.sh
or
~ $ wget https://gitflic.ru/project/legioner9/st_rc_d/blob/raw?file=.d%2F.install.ax%2Fmain_install_stl.sh
~ $ . main_install_stl.sh
restore STL from .d.zip
$ curl https://raw.githubusercontent.com/legioner9/st_rc_d/refs/heads/master/.d/.install.ax/restore_stl_from_zip.sh | sh
or
$ curl https://gitflic.ru/project/legioner9/st_rc_d/blob/raw?file=.d%2F.install.ax%restore_stl_from_zip.sh | sh
Неупорядоченные заметки
Libero capitulum (лат.)
-
${HOME}/tmp_dir_st_rc временная user директория - очищается при перезапуске оболочки
-
файлы стилей для интерпретатора md2html md_css
-
lib2e вывод информации по функциям библиотеки [name_lib]E_[name_lib]
- st - _stE
- stl0 - stl0E
-
создание пустой функции в библиотеке st _gig_st_rc_fn
-
удаление файлов функции из библиотеки st _rm_st_rc_fn
-
создание пустой функции в библиотеке gig_fn_stl_[name_lib]
-
удаление файлов функции из библиотеке rm_fn_stl_[name_lib]
-
создание библиотеки cr_lib_fn_stl arg
Замечания об использовании функций
-
echo | _st_exit подавлние остановки при экстренном выходе по ^C
-
_is_yes если только вопрос о выходе то это только _st_exit , использовать _is_yes только для ветвлений
-
в следующих версиях использзовать
вместо-
в качестве пустого аргумента@ -
заплнитель пустых директорий не файл 0, а _0
Описание
Языки
Shell
- TeX
- XSLT
- JavaScript
- C
- PHP
- CSS
- Roff
- Forth
- Redcode
- Hack
- Makefile
- Logos
- 1C Enterprise
- HTML
- Rich Text Format
- sed