ПО, ЭВМ и АСУ из Таможенного Союза

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » ПО, ЭВМ и АСУ из Таможенного Союза » Транспилятор в Си от Юрия » Веб-проект "Справочники". С использованием cgi-скриптов.


Веб-проект "Справочники". С использованием cgi-скриптов.

Сообщений 1 страница 24 из 24

1

Веб-проект "Справочники". Репозиторий с проектом на tvoygit.ru

Ноги этого проекта растут отсюда
Пришлось повозиться с скриптами для установки сайта на локальном сервере. Постарался процесс описать в readme.md

Это пока лишь стартовый шаблон с которого можно начать.

0

2

Пресса пишет:
https://unixforum.org/viewtopic.php?p=1357820#p1357820

(и это, безусловно положительно, сторонних гиперссылок не так и много. Опенсорсное сообщество ВИДИТ работу)

Отредактировано Лис (2023-03-03 00:02:55)

0

3

Лис написал(а):

(и это, безусловно положительно, сторонних гиперссылок не так и много. Опенсорсное сообщество ВИДИТ работу)

В этом один из плюсов tvoygit - там мало проектов и что-то новое заметили. На github вообще бы потерялся. Осталось только довести проект до видимого результата.

Отредактировано Евгений (2023-03-03 00:15:29)

0

4

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

Самым крупным объектом является справочник, в котором собрана и систематизирована информация по одной теме.
Можно было бы сказазать, что самым крупным объектом является набор справочников, но в настоящий момент их большого количества не придвидится, поэтому за основу возьмем один справочник.
Каждому справочнику присущи некоторые свойства или параметры. Часть параметров внешние, которые определяют местоположение нашего справочника во всем множестве. Например это справочник по асемблерам, а это по кулинарии.
Вторая часть параметров внутренние, отвечающие за структуру: это разделы, подразделы, подподразделы и тд... Физически, справочник это папка с вложенными папками и файлами.
Самым маленьким и неделимым объектом является статья, которая представлена одним текстовым файлом. Должна ли файловая структура отражать иерархическую структуру справочника, то есть нужно ли для
каждого раздела и подраздела предусматривать свою отдельную папку? Склоняюсь к тому, что не нужно. Информацию о структуре можно хранить, например, в xml-файле.
Каждой статье тоже ставится в соответствие некоторый набор параметров. Часть из которых соответствуют параметрам родителя, то есть всего справочника и определяют место статьи в иерархической структуре.
Другие параметры служат, для улучшения поиска и фильтрации. Например, можно отсортировать статьи одного автора.

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

0

5

У меня новая задумка: кроме справочников ещё иметь пронумерованные тексты (ЛОСТ-№ ...).
  (проблема, как обычно, - с лапками)

Отредактировано Лис (2023-03-03 01:00:29)

0

6

Я прочитал файл README.md.

Проект не демонстрирует товар лицом.

Совершенно очевидно, что установка возможна под разные операционные системы,
и даже на платформах docker, qemu и lxc.

Проект как раз и предназначен для того, чтобы делать удобную документацию.
Но сам её не имеет. Без сапог.

0

7

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

0

8

Евгений написал(а):

нужно вовремя решить, когда перепрыгивать на fastCGI

Когда пользователей станет over 9000.
Это сможет произойти только когда будет работоспособный транслятор с уникальными возможностями.

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

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

Если сделать FastCGI сейчас, ну и что? Другие люди его и на Си делают (и на PHP и что там ещё бывает), в чём интересность для других людей?

FastCGI нужен для скорости, а много ли даст скорость сейчас, или какие-то другие дела дадут больше?

Отредактировано Лис (2023-03-03 09:11:03)

0

9

Евгений написал(а):

Если Лис будет не только бурчать, а на пару минут отрастит лапки

Лапки в другую сторону работают. И я не бурчу, я даю полезный фидбек проекту, который (проект) мне очень нравится.
А если бы он не нравился или не был интересен, я бы на него не реагировал.

Отредактировано Лис (2023-03-03 10:40:28)

0

10

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

To have apache use the new virtual domain we'll need it to reload its settings:
sudo /usr/sbin/apache2ctl graceful

и, кажется, у меня нет инструкций про использование a2enmod.

Код:
# equery files www-servers/apache | grep a2
# 

То есть я вижу man в интернете, но не под мою операционку.

Код:
[ebuild   R    ] www-servers/apache-2.4.55-r1:2::gentoo  USE="gdbm (split-usr) ssl suexec-caps systemd -debug -doc -ldap (-selinux) -static -suexec -suexec-syslog -threads" APACHE2_MODULES="actions alias auth_basic auth_digest authn_anon authn_core authn_dbm authn_file authz_core authz_dbm authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir env expires ext_filter file_cache filter headers http2 include info log_config logio mime mime_magic negotiation rewrite setenvif socache_shmcb speling status unique_id unixd userdir usertrack vhost_alias -access_compat -asis -auth_form -authn_dbd -authn_socache -authz_dbd -brotli -cache_disk -cache_socache -cern_meta -charset_lite -dbd -dumpio -ident -imagemap -lbmethod_bybusyness -lbmethod_byrequests -lbmethod_bytraffic -lbmethod_heartbeat -log_forensic (-lua) -macro -md -proxy -proxy_ajp -proxy_balancer -proxy_connect -proxy_fcgi -proxy_ftp -proxy_hcheck -proxy_html -proxy_http -proxy_http2 -proxy_scgi -proxy_uwsgi -proxy_wstunnel -ratelimit -remoteip -reqtimeout -session -session_cookie -session_crypto -session_dbd -slotmem_shm -socache_memcache -substitute -version -watchdog -xml2enc" APACHE2_MPMS="-event -prefork -worker" LUA_SINGLE_TARGET="lua5-1 -lua5-3 -lua5-4" 0 KiB

Почему зашел разговор про разные контейнеры? Ну, а как мне ещё ставить эту ОС Linux Mint?

Отредактировано Лис (2023-03-03 18:05:57)

0

11

Я проверил на Linux Mint и Linux Ubuntu, что впрочем одно и то же. Если Лис осилит установку на Gentoo Linux, то можно будет внести изменения в установочный скрипт.

Лис написал(а):

у меня нет инструкций про использование a2enmod.

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

Отредактировано Евгений (2023-03-03 21:50:16)

0

12

Евгений написал(а):

Если Лис осилит установку на Gentoo Linux, то можно будет внести изменения в установочный скрипт.

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

Нельзя "затачивать" скрипт проекта и на конкретный веб-сервер. Дистрибутивы предоставляют Apache и NGinx "на выбор" неспроста, а потому что люди разные. Для того, чтобы это поддерживать, в скрипте webapp-config есть плагины, разные для каждого web-сервера.

Лис в теории способен разобраться и установить под Gentoo. Но на практике практика от теории отличается.
Займёт это явно не две минуты, Лису придётся отвлечься от чтения мануала по GAS, и он недоделает свою задачу по написанию загрузчика байтов.
Всё это время злые языки на других форумах говорят, что "Лис ничего не делает", а вот у них - результаты (написанные, правда, на латинице). Это больно дёргает самолюбие Лиса за хвост.

Отредактировано Лис (2023-03-04 05:33:02)

0

13

Сам пакет мало что даст. Внутри всё равно придется писать установочный скрипт. Хотя может я мало, что понимаю. Линукс для меня ОС новая. Но есть мысль переписать установочный скрипт без использования  a2enmod, a2ensite.

0

14

Евгений написал(а):

Сам пакет мало что даст. Внутри всё равно придется писать установочный скрипт.

Здесь всё правильно. Внутри пакета должен быть скрипт и  должны использоваться те утилиты, которые обычно используются в дистрибутиве пакета.

Евгений написал(а):

Но есть мысль переписать установочный скрипт без использования  a2enmod, a2ensite.

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

В генту не нужен скрипт без использования a2ensite, там своя атмосфера, я сделаю сам себе, когда документация дорастёт до требуемого уровня.

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

Отредактировано Лис (2023-03-04 09:12:14)

0

15

Лис написал(а):

Поэтому предлагаю сделать пакет для Debian, поместить туда ту часть скрипта, которая специфична для Debian и переделать документацию.

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

0

16

Лис, мне нужна подсказка. Вот пример xml-описания справочника. Есть какие-то принципиальные дополнения, идеи, пожелания?

Код:
<?xml version = "1.0" encoding = "UTF-8" ?>
<справочник>
	<название>Процессор Intel64</название>
	<описание>Справочник по командам процессора Intel64</описание>
	<путь>data/intel64</путь>
	<лого>images/intel64.png</лого>
	<категория>Компьютеры и компьтерные технологии</категория>
	<содержание>
    <раздел1 название="Введение">
    	<статья автор="И.Иванов">stat1.txt</статья>
    </раздел1 >
    <раздел2 название="Команды архитектуры x86">
    	<статья автор="П.Петров">stat2.txt</статья>
    	<раздел2-1 название="Команды общего назначения">
        <статья автор="П.Петров">stat2-1.txt</статья>
        <раздел2-1-1 название="Команды передачи данных">
        	<статья автор="П.Петров" имя="MOV">stat2-1-1.txt</статья>
        	<статья автор="П.Петров" имя="CMOV">stat2-1-2.txt</статья>
        	<статья автор="П.Петров" имя="XCHG">stat2-1-3.txt</статья>
        </раздел2-1-1>
        <раздел2-1-2 название="Двоичные арифметические команды">
        	<статья автор="П.Петров" имя="ADD">stat2-1-8.txt</статья>
        	<статья автор="П.Петров" имя="ADC">stat2-1-9.txt</статья>
        	<статья автор="П.Петров" имя="SUB">stat2-1-25.txt</статья>
        </раздел2-1-2>

    	</раздел2-1>
    </раздел2 >
    <раздел3 название="Команды архитектуры x86-64">
    	<статья автор="П.Петров">stat3.txt</статья>
    </раздел3 >
	</содержание>
</справочник>

0

17

Мысль не ясна. Её надо словами рассказать. Ну да, есть XML, внутри XML- текст. Ну и что?

«Каждой статье тоже ставится в соответствие некоторый набор параметров.»

Где это в приведённом примере XML ?

Отредактировано Лис (2023-03-04 20:55:09)

0

18

Лис написал(а):

«Каждой статье тоже ставится в соответствие некоторый набор параметров.»

Где это в приведённом примере XML ?

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

0

19

Евгений написал(а):

Как минимум "автор", и этих параметров может быть больше.

Можно было и наоборот сделать - имя файла поместить в атрибут "имя_файла", а всякие дополнения сделать в виде вложенных элементов.
Это всё не очень существенно.

<файл_на_диске имя="lala-1-2.txt">
   <использовать_когда>
      <архитектура>Интел64</архитектура>
      <режим_процессора>Длинный_Режим</режим_процессора>
   </использовать_когда>
</файл_на_диске>

Евгений написал(а):

А мысль в том, что достаточно ли такого описания?
Не упускаем ли мы чего-то важного, что может потребовать серьезно изменить структуру XML- файла?

Недостаточно, упускаем. Что именно - непонятно.

Существуют методики проектирования, такие как "модель сущность-связь".
Т.е. проектируешь как структуру БД, а потом описываешь отображение на XML.

Но тут как бы сущности-то не определены. Почему/для чего сущности именно такие, а не другие?

Почему вообще нужен XML? Почему один XML? Может быть их надо много?
Почему вообще не натравить на файлы препроцессор cpp с заданными через ключ -D константами ?

0

20

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

0

21

У сайта один редактор (и один корректор). Редактирование другими людьми и вообще система управления контентом как в wikipedia (в смысле авторы, бюрократы, правила, споры) отсутствует. Последняя статья написана в 2016-м году. Статьи не связаны между собой (по крайней мере это незаметно). Статьи не провязаны на тексты стандартов (стандарт POSIX, стандарты языка Си), Статьи висят в воздухе и не провязаны на конкретные реализации (хотя бы на одну из состава линукс, но можно добавить ReactOS). Какими вызовами ядра, например те сишные функции реализуются, в каких .so-файлах находятся, по каким путям в том или в этом дистрибутиве (а пути могут быть разные).  Не увидел рассмотрения утилит/программ. Программ и пакетов много (gdb, например как пользоваться, какие форматы отладочной информации есть и какими стандартами описываются). Про графику и протокол X11, Wayland ничего нет (огромнейшие темы). Про базы данных, много про чего нет (а без этого как на си программировать). Тот же сишный интерфейс к git не описан (а это было бы полезно для написания текстовой IDE, типа Gnome Builder). Кнопка поиска есть, но не работает (Loading...).

А если мы хотим всё сделать российско-кириллическое, оно же задокументировано должно быть?

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

Отредактировано Лис (2023-03-05 03:18:38)

0

22

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

0

23

Я рассмотрел исходный код, и вот что по-моему с ним не так:

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

То есть, cgi-скрипт должен вызывать компилятор командой/функцией system, и передавать туда какие надо параметры.

А после компиляции - выполнять (ещё одной командой system (или execve?)).

2) не обрабатываются переменные окружения, имена которых перечислены в RFC по CGI.
Они, кстати, английские, и можно было бы сделать файл с их переводами.

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

То есть, сначала HTML с внедрённым кодом преобразуем просто в код,
затем компилируем, затем запускаем на выполнение и кешируем (чтобы не компилировать в следующий раз)

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

Или может КуМир-скую виртуальную машину собрать и запустить как CGI сначала?
Тут-то точно будет море пиара.

0

24

Лис написал(а):

3) вообще говоря, код HTML страниц не генерируют прямо кодом на Си, а используют движки-шаблонизаторы

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

Обновил исходники

Файлы парсера и xmllib пустые, на них можно внимания не обращать. Лексер умеет находить в файле шаблона с расширением .tpl токены вида {{команда}}. При этом все найденные и неопознанные символы до этого
токена просто выводятся в консоль самим лексером. При нахождении токена функция следующий_токен() завершает работу и возвращает найденный токен. Дальше по идее парсер должен разобрать, что за команду нашли и
обработать ее. После вновь запускается поиск следующего токена. Повторяем до достижения конца файла. В исходниках парсера еще нет и лексер вызывает в цикле просто из main().

Отредактировано Евгений (2023-03-08 17:52:00)

0


Вы здесь » ПО, ЭВМ и АСУ из Таможенного Союза » Транспилятор в Си от Юрия » Веб-проект "Справочники". С использованием cgi-скриптов.