LINUX.ORG.RU
ФорумTalks

Идея безумного проекта типа «Тильды». Клёпка дешёвых сайтов.

 


1

1

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

  1. Делаем простой веб-язык, сильно проще ПХП. Язык без тенденций развиться в многостраничные абстрактные мультипарадигменные фабрики гетерогенно-волосатых оперденей, а который ограничивался бы наивной шаблонизацией с ветвлением и походами в примитивную key=value базу, встроенную в него же. Пример:
<body>
<h1>Hello, your name is {{ db.get("sids/$SID/name") }}</h1>
{{ if (db.get("flags/$SID/admin") }}
<h2>YOU ARE ADMIN</h2>
{{}}
</body>

То есть, язык умеет ходить в некую базу и ветвить куски HTML шаблона. Да, ПХП начинался так же, скажете вы, но этот должен на этом и закончиться или быть ещё проще, чем тут написано.

  1. Делаем транслятор данного «исходника» в пачку C++ файлов + Makefile, компиляция которого порождает один бинарь с вкомпилённым в него простым http-серваком, всей бизнес-логикой и всеми шаблонами, встроенной примитивной key=value базой (пишущей бинлог и индексные файлы на диск, которые легко и просрать и бекапить) и готово. Юзер тупо запускает этот бинарь с параметрами
./hellobugagawowdoge --listen 80 --listen 443 --cert certificate.pmx /path/to/writeaheadlogs/

на самой дешёвой индусской виртуалке за полкопейки и у него всё летает.

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

Прорывная идея: общение с базой сделать более смузи-высокоуровнево. Чтобы не просто get/set для нердов, а прямо setLike, getLikesCount, addComment, removeComment, editComment, countVisit.

Важно: в идеале юзер вообще не кодит.



Последнее исправление: kilokolyan (всего исправлений: 7)
Ответ на: комментарий от Zhbert

Ты изобрел спринг-бут с любым шаблонизатором. Но зачем?

Дико дешевле по ресурсам. Не городишь никакой JVM, а запускаешь unix-way бинарь весом 100КБ.

kilokolyan
() автор топика
Ответ на: комментарий от kilokolyan

весом 100КБ

Не получится у тебя туда упаковать веб-сервер. Либо он нужен будет внешний, что ничем уже не будет отличаться вот JVM.

Zhbert ★★★★★
()
Ответ на: комментарий от Zhbert

Не получится у тебя туда упаковать веб-сервер.

Получится. Слушай себе пачку сокетов на epoll, парсь HTTP/1.1 - он примитивен. Сотни чуваков такое писало, у всех в 100КБ влезло кто пробовал. Это наиболее невопрос из всех вопросов. Ну ладно, уговорил, 150 кб.

kilokolyan
() автор топика
Последнее исправление: kilokolyan (всего исправлений: 1)

Кстати, есть еще Jekyll и его аналоги.

Zhbert ★★★★★
()
Ответ на: комментарий от Zhbert

Не благодари. Или ты с какой целью это все сюда принес?

Только чтоб ты позволил, больше низачем.

kilokolyan
() автор топика
Ответ на: комментарий от t184256

Крутая идея для 2002ого, у нас тут 2021, TLS и QUIC. Сколько-сколько, говоришь, КБ?

Идея не в этом. Но можешь сделать http/100500 если тебе приспичило.

kilokolyan
() автор топика
Последнее исправление: kilokolyan (всего исправлений: 1)

Оно сделать можно. Более того, оно уже готово. Берёшь тот же php, даже на уровне конфигурации выкидываешь вообще всё, оставляешь только sqllite и вот тебе, легче лёгкого. Есть ещё более легковесные решения.

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

А homepage как явление умерло. Теперь народ массово использует любую из «социальных сетей» для этих целей. Есть конечно те, кто делает себе что-то сам или даже за не большие деньги что-то заказывают себе. Но этого куда меньше, чем в начале 2000. Словом мелкий бизнес присмерти, повсеместно.

ixrws ★★★
()

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

И кто на этом по твоему должен писать?

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

goingUp ★★★★★
()

Тильда

Знаю один сайт на тильде. Настраивает тильду все равно разработчик)

goingUp ★★★★★
()

Ответ на 2-3 последних поста по заказчиков, моду, жирнее-жирного и т.п.

«Мы сами диктуем что нравится заказчику, а что нет» (с)

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

Экономически всё это я уже сказал как оправдано - оно не жрёт ресурсов и держит овердохрена запросов в секунду на виртуалке за 150 руб, работая сильно быстрее тильд. При этом являясь динамической штукой, способной хранить комменты. А чтобы ддосеры не засрали диск, можно нагородить простые как топор решения, например «хранить только N последних комментов» или «все новые комменты - в кольцевой буфер на 256 строк, а модератор сохраняет лучшие оттуда в основной поток, а если ддосеры напали, то ну сорян, временно новые комменты не постятся, зато сохраняются старые» и т.п.

Ключевое - низкий порог вхождения. Инструкция на гитхабе должна быть проста: поставьте гцц, поставьте опенссл, клонируете наше поделие, кладёте шаблон, делаете мейк - можно запускать. С примерами. В комплекте пачка красивых иконок и пример приложения «блог», куда можно постить свои посты, входя под своим паролем.

Кстати на тлетворном западе персональных блогов овердохрена почему-то до сих пор. Когда на news.ycombinator.com роешься, каждая третья ссылка на статью - на чей-то оригинальный няшный бложек на собственном домене и ничего, как-то читают оттуда. У нас в стране чё-то все на хабр ломятся…

Поделие должно быть до предела няшное и простое с одной кнопкой, чтобы им можно было орехи колоть и делать простые сайтики. Как сайт telegra.ph по виду.

kilokolyan
() автор топика
Последнее исправление: kilokolyan (всего исправлений: 1)
Ответ на: комментарий от kilokolyan

Все уже придумали. Есть генераторы статических страниц, и подключение комментов от дискурса и подобных. Пушь контент на гитхаб, и деплой через actions. Готовых решений навалом.

А ты описываешь какой-то абстрактный говнобложик с миллионами посещений. Заведомо странное сочетание параметров, не встречающееся в природе. Единственная продвинутая фича - ты решил добавить комменты, но почему-то вместо готовых.

Vit ★★★★★
()

Ненужно, уже есть альтернативы.

Делаем простой веб-язык, сильно проще ПХП

Чтобы взлетело, вообще не должно быть взаимодействия ЯП и конечного пользователя.

fernandos ★★★
()

Юзер тупо запускает этот бинарь с параметрами

./hellobugagawowdoge –listen 80 –listen 443 –cert certificate.pmx /path/to/writeaheadlogs/

Рукалицо.

на самой дешёвой индусской виртуалке

Вторая рукалицо.

а прямо setLike, getLikesCount

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

Ясно-понятно. Делай, тебя ждёт успех (нет).

foror ★★★★★
()
Ответ на: комментарий от Vit

Все уже придумали. Есть генераторы статических страниц, и подключение комментов от дискурса и подобных. Пушь контент на гитхаб, и деплой через actions. Готовых решений навалом.

Сложно. Как студентке журфака вместо айфона предложить GSM-стек на lamesdr свой поднять.

kilokolyan
() автор топика
Ответ на: комментарий от foror

Ясно-понятно. Делай, тебя ждёт успех (нет).

Рукалицо (да). Мне выше уже другой чува до тебя разрешение выдал.

kilokolyan
() автор топика
Последнее исправление: kilokolyan (всего исправлений: 1)
Ответ на: комментарий от fernandos

Чтобы взлетело, вообще не должно быть взаимодействия ЯП и конечного пользователя.

Да, и я это написал в посте.

kilokolyan
() автор топика
Ответ на: комментарий от Vit

А ты описываешь какой-то абстрактный говнобложик с миллионами посещений. Заведомо странное сочетание

Говно он или моча зависит от тебя как автора.

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

kilokolyan
() автор топика
Ответ на: комментарий от kilokolyan

Кто раньше встал, того и тапки.

RAD для веба - это уже придумано до тебя) ColdFusion, 97 год, как у тебя, только еще визивиг) Но кому оно сегодня нужно.

goingUp ★★★★★
()
Последнее исправление: goingUp (всего исправлений: 1)
Ответ на: комментарий от Zhbert

весом 100КБ

Не получится у тебя туда упаковать веб-сервер

$ ls -l /bin/darkhttpd 
-rwxr-xr-x 1 root root 47088 Feb 28  2021 /bin/darkhttpd

$ ldd /bin/darkhttpd 
	linux-vdso.so.1 (0x00007ffef79a1000)
	libc.so.6 => /usr/lib/libc.so.6 (0x00007f72b27d3000)
	/lib64/ld-linux-x86-64.so.2 => /usr/lib64/ld-linux-x86-64.so.2 (0x00007f72b2a09000)
sergej ★★★★★
()
Ответ на: комментарий от t184256

тут 2021, TLS и QUIC. Сколько-сколько, говоришь, КБ?

ну будет 200К, собственно libmicrohttpd занимает 150К, правда для tls она тянет gnutls, но и другие вебсервера тоже не сами tls делают.

sergej ★★★★★
()
Ответ на: комментарий от kilokolyan

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

Vit ★★★★★
()
Ответ на: комментарий от Vit

Друк, ты пытаешься решать проблемы, которых нет.

Значит они будут решены очень быстро, ведь сопротивление среды будет нулевое.

kilokolyan
() автор топика
Ответ на: комментарий от alexmaru

ты изобрёл twig, только легче не стало

Twig is a modern template engine for PHP

Шта…

kilokolyan
() автор топика
Последнее исправление: kilokolyan (всего исправлений: 1)

http://i.piccy.info/i9/a208f752cd38338457a1e8245ed6a7d2/1630439196/82021/1438...

<?php
set_time_limit(0);
$socket = stream_socket_server("tcp://0.0.0.0:80", $errno, $errstr);
if (!$socket) {
  echo "$errstr ($errno)<br />\n";
} else {
  while ($conn = stream_socket_accept($socket,9999999)) {
  $че_приняли_от_браузера=fgetss($conn,1024);
----бла бла бла if/then/else, код шаблона, небо, Аллах
fwrite($conn,"че_шлем_браузеру_в_ответ");
fclose($conn);
}
fclose($socket);
}
?>
php ./test.php

За 5 минут написал свой веб-сервер. Но зачем ?

windows10 ★★★★★
()

Слушайте, а у меня нет случайно виртуалов? Такие же маньячные мысли...

xwicked ★☆☆
()

Проблемы у тебя с твоей конструкцией начнутся, когда к «./hellobugagawowdoge –listen 80 –listen 443 –cert certificate.pmx /path/to/writeaheadlogs/» подключится больше одного клиента. Следующие проблемы начнутся, когда оба клиента втроем начнут писать в один и тот же файл. И это мы еще не дошли до БД.

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

windows10 ★★★★★
()
Ответ на: комментарий от windows10

Проблемы у тебя с твоей конструкцией начнутся, когда к «./hellobugagawowdoge –listen 80 –listen 443 –cert certificate.pmx /path/to/writeaheadlogs/» подключится больше одного клиента. Следующие проблемы начнутся, когда оба клиента втроем начнут писать в один и тот же файл. И это мы еще не дошли до БД.

Подобную ерунду и мне писали на мой CGI-скрипт кроссворда. Это произойдёт только в случае УСПЕХА проекта. До этого момента 100-200 человек спокойно смогут пользоваться, пока в течении нескольких лет аудитория будет ПОСТЕПЕННО увеличиваться.

xwicked ★☆☆
()
Ответ на: комментарий от xwicked

Подобную ерунду и мне писали на мой CGI-скрипт кроссворда. Это произойдёт только в случае УСПЕХА проекта. До этого момента 100-200 человек спокойно смогут пользоваться, пока в течении нескольких лет аудитория будет ПОСТЕПЕННО увеличиваться.

До CGI мы пока еще не дошли.

Ну вот запустился его «./hellobugagawowdoge –listen 80 –listen 443 –cert certificate.pmx /path/to/writeaheadlogs/», словил GET\POST с браузера, окей, обрабатывает. Второй клиент к его «примитивному бинарю» подключиться не сможет, потому что бинарь уже занят. Что дальше ?

windows10 ★★★★★
()

Делаем транслятор данного «исходника» в пачку C++ файлов + Makefile, компиляция которого порождает один бинарь

А когда надо исправить один символ в шаблоне, компилять заново. Поздравляю, ты придумал генератор статических сайтов + nginx.

tfeartx
()
Ответ на: комментарий от tfeartx

Какое то соревнование по тупости в треде, что еще ОП придумал? Но пока что вариант со спринг-бутом самый смешной.

MOPKOBKA ★★★★★
()
Ответ на: комментарий от MOPKOBKA

А что не так? Только все генерят html из шаблонов, а он бинарь. Там даже генератор не нужен, можно все на nginx сделать голом.

tfeartx
()
Последнее исправление: tfeartx (всего исправлений: 1)
Ответ на: комментарий от windows10

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

Зачем писать в один и тот же файл? Есть же база данных, большинству сайтов она тоже в виде MySQL нинужна, достаточно static char buff[1024 * 1024 * 128]; и иногда делать fwrite.

MOPKOBKA ★★★★★
()
Последнее исправление: MOPKOBKA (всего исправлений: 1)
Ответ на: комментарий от MOPKOBKA

компиляция которого порождает один бинарь с вкомпилённым в него простым http-серваком, всей бизнес-логикой и всеми шаблонами

Я к этому лично прицепился, не надо шаблоны вкомпиливать внутрь.

А так да, у меня есть подобные узко-специфичные штуки на ерланге и го (без шаблонов внутри), но они именно что для одной задачи, а не замена «php» или «тильде». Ну и один хрен проксируются наружу через nginx :)

tfeartx
()
Последнее исправление: tfeartx (всего исправлений: 2)
Ответ на: комментарий от MOPKOBKA

Простейший, синхронный HTTP-сервер

Эту логику, включая блокировки, ему придется учесть в своем «примитивном бинаре». Он же хочет это все делать в одном файле, как я понял.

windows10 ★★★★★
()
Ответ на: комментарий от tfeartx

А когда надо исправить один символ в шаблоне, компилять заново. Поздравляю, ты придумал генератор статических сайтов + nginx.

Про генераторы статики тут уже боянили.

kilokolyan
() автор топика
Ответ на: комментарий от MOPKOBKA

Есть еще kPHP, где PHP 3, и компиляция в С++.

Там уже давно большой прогресс в их новой репе на гитхабе, но это оверкилл. Мне надо для блондинок совсем.

kilokolyan
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.