Add a page for FU

This commit is contained in:
Yorhel 2025-04-23 18:51:16 +02:00
parent 9708daae74
commit f8bcdbe1e6
24 changed files with 219 additions and 8 deletions

29
.gitignore vendored
View file

@ -2,6 +2,24 @@
*.gz
*.pdf
dat/download.md
dat/fu/changes.log
dat/fu/changes.md
dat/fu/man.md
dat/fu/man.pod
dat/fu/man/log.md
dat/fu/man/log.pod
dat/fu/man/mfd.md
dat/fu/man/mfd.pod
dat/fu/man/pg.md
dat/fu/man/pg.pod
dat/fu/man/sql.md
dat/fu/man/sql.pod
dat/fu/man/util.md
dat/fu/man/util.pod
dat/fu/man/validate.md
dat/fu/man/validate.pod
dat/fu/man/xmlwriter.md
dat/fu/man/xmlwriter.pod
dat/globster/api.md
dat/globster/api.pod
dat/globster/ctl.md
@ -145,6 +163,17 @@ pub/dump/grenamr.html
pub/dump/insbench.html
pub/dump/nccolour.html
pub/feed.atom
pub/fu.html
pub/fu/changes.html
pub/fu/feed.atom
pub/fu/man.html
pub/fu/man/log.html
pub/fu/man/mfd.html
pub/fu/man/pg.html
pub/fu/man/sql.html
pub/fu/man/util.html
pub/fu/man/validate.html
pub/fu/man/xmlwriter.html
pub/globster.html
pub/globster/api.html
pub/globster/ctl.html

View file

@ -35,6 +35,16 @@ PAGES=\
"dump/grenamr.md"\
"dump/insbench.md"\
"dump/nccolour.md"\
"fu.md"\
"fu/changes.log https://g.blicky.net/fu.git/plain/ChangeLog FU Release History"\
"fu/man.pod https://g.blicky.net/fu.git/plain/FU.pm FU"\
"fu/man/log.pod https://g.blicky.net/fu.git/plain/FU/Log.pm FU::Log"\
"fu/man/mfd.pod https://g.blicky.net/fu.git/plain/FU/MultipartFormData.pm FU::MultipartFormData"\
"fu/man/pg.pod https://g.blicky.net/fu.git/plain/FU/Pg.pm FU::Pg"\
"fu/man/sql.pod https://g.blicky.net/fu.git/plain/FU/SQL.pm FU::SQL"\
"fu/man/util.pod https://g.blicky.net/fu.git/plain/FU/Util.pm FU::Util"\
"fu/man/validate.pod https://g.blicky.net/fu.git/plain/FU/Validate.pm FU::Validate"\
"fu/man/xmlwriter.pod https://g.blicky.net/fu.git/plain/FU/XMLWriter.pm FU::XMLWriter"\
"guestbook.md"\
"guestbook/thanks.md"\
"globster.md"\
@ -96,8 +106,8 @@ PAGES=\
"nginx-confgen/man/1_1.pod https://g.blicky.net/nginx-confgen.git/plain/nginx-confgen.pod?h=1.1 nginx-confgen 1.1 Manual"\
"nginx-confgen/man/1_0.pod https://g.blicky.net/nginx-confgen.git/plain/nginx-confgen.pod?h=1.0 nginx-confgen 1.0 Manual"\
"sqlbin.md"\
"tuwf.md"\
"sqlbin/manual.md https://g.blicky.net/sqlbin.git/plain/manual.md"\
"tuwf.md"\
"tuwf/changes.log https://g.blicky.net/tuwf.git/plain/ChangeLog TUWF Release History"\
"tuwf/man.pod https://g.blicky.net/tuwf.git/plain/lib/TUWF.pod TUWF Documentation"\
"tuwf/man/db.pod https://g.blicky.net/tuwf.git/plain/lib/TUWF/DB.pod TUWF::DB Documentation"\
@ -125,6 +135,7 @@ FEEDS=\
pub/ncdu/feed.atom\
pub/nginx-confgen/feed.atom\
pub/tuwf/feed.atom\
pub/fu/feed.atom\
pub/yxml/feed.atom\
pub/torreas/feed.atom
@ -205,6 +216,7 @@ ${HTML_OUT}: pub/%.html: dat/%.md template.html Makefile
--metadata path3=$$(echo "$*" | sed 's/\//-/g') \
--variable menu-$$(case "$*" in\
globster*) echo "globster";;\
fu*) echo "fu";;\
ncdc*) echo "ncdc";;\
ncdu*) echo "ncdu";;\
nginx-confgen*) echo "nginx-confgen";;\

55
dat/fu.md Normal file
View file

@ -0,0 +1,55 @@
% FU: Framework Ultimatum
FU is the Perl backend web framework developed for
[VNDB.org](https://vndb.org/) and [Manned.org](https://manned.org/). It is the
successor of [TUWF](/tuwf).
## Main features
- Simple, conventional and synchronous architecture.
- Powerful debugging facilities.
- Includes a minimal HTTP server for local development and a more efficient
FastCGI server for production environments.
- High-performance output compression through
[libdeflate](https://github.com/ebiggers/libdeflate),
[zlib-ng](https://github.com/zlib-ng/zlib-ng) and/or
[brotli](https://brotli.org/), whichever is available.
- Includes a process supervisor with file change detection and zero-downtime
reloads.
- Includes a [concise yet powerful schema-based input validation
module](/fu/man/validate).
- Includes a small but high-performance JSON encoder and decoder.
- Includes high-performance [HTML and XML generation
functions](/fu/man/xmlwriter).
- Includes a custom [PostgreSQL client module](/fu/man/pg) with a high-level
API and flexible type configuration.
- Includes a simple and safe [SQL query builder](/fu/man/sql).
- Built on stable foundations, will keep working for decades.
- It's FLOSS.
## Main downsides
- Simple, conventional and synchronous architecture.
- Requires a recent version of Perl (5.36+).
- Requires a C compiler and Perl development environment to build & install.
- Will not work on Windows. <small>Is that even a downside?</small>
- Does not work on 32-bit systems.
- Doesn't have a fancy marketing page
- Introductory documentation is lacking
- "Suffers" from a healthy dose of [NIH](https://en.wikipedia.org/wiki/Not_invented_here).
Check the [description](/fu/man#description) in the documentation for more
information and details.
## Download <a href="/fu/feed.atom"><img src="/img/feed_icon.png" alt="Atom feed"></a>
Latest version
: 0.4 (2025-03-19 - [FU-0.4.tar.gz](/download/FU-0.4.tar.gz) \-
[CPAN mirror](https://metacpan.org/release/FU))
Development version
: Available on git at
[https://code.blicky.net/yorhel/fu](https://code.blicky.net/yorhel/fu).
License
: MIT.

View file

@ -17,6 +17,16 @@ respective issue tracker or send a mail to
# Entries
`2025-03-14` - ~
: I don't know what to write here exactly, but I think saying thanks is due
for you having created VNDB. I really like how VNDB is and there is
something really soothing about browsing it for hours. Thanks very much for
that. Also I just found out the backend is free software, so that's cool
as well.
`2025-03-07` - ~
: I have used ncdu, ncdc, yxml and browsed vndb all before realising they were made by the same person! Thank you!
`2025-02-16` - ~
: ncdu is a great app. Keep up the great efforts! Respect from Canada! - Adeel Khan at Awake and Shangrila-VHP

View file

@ -29,12 +29,10 @@ information and details.
TUWF is also available on a git repository at
[https://code.blicky.net/yorhel/tuwf](https://code.blicky.net/yorhel/tuwf).
## Websites using TUWF
(Not a whole lot)
## Websites that use(d) TUWF
- [VNDB.org](https://vndb.org/) (the site that spawned TUWF - [open source](https://g.blicky.net/vndb.git/))
- [Manned.org](https://manned.org/) ([open source](https://g.blicky.net/manned.git/))
- [Blicky.net Pastebin](https://p.blicky.net/) ([open source](https://g.blicky.net/bpaste.git/tree/index.cgi))
- The website embedded in the [D&R Axum](http://www.d-r.nl/axum.html) mixing console.
- [333networks](http://333networks.com/)
- The website embedded in the [D&R Axum](https://www.dnrbroadcast.com/axum) mixing console.
- [333networks](https://333networks.com/)

View file

@ -26,6 +26,14 @@ sub pod2url($page, $sect='') {
'TUWF::Response' => '/tuwf/man/response',
'TUWF::XML' => '/tuwf/man/xml',
'TUWF::Validate' => '/tuwf/man/validate',
'FU' => '/fu/man',
'FU::Log' => '/fu/man/log',
'FU::MultipartFormData' => '/fu/man/mfd',
'FU::Pg' => '/fu/man/pg',
'FU::SQL' => '/fu/man/sql',
'FU::Util' => '/fu/man/util',
'FU::Validate' => '/fu/man/validate',
'FU::XMLWriter' => '/fu/man/xmlwriter',
'' => '',
}->{$page||''} // "https://metacpan.org/pod/$page";
$lnk .= '#'.(lc $sect =~ s/\s+/-/gsr) if $sect;

View file

@ -1,7 +1,7 @@
#!/usr/bin/perl
($project) = (shift =~ /^([^ \/]+)/);
$project = uc $project if $project eq 'tuwf';
$project = uc $project if $project =~ /^(tuwf|fu)$/;
$title = shift;
print "---\ntitle: $title\npage-type: changelog\n...\n";

View file

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEdEYNMrgIEOupr6LpYjlMaYwnOfoFAmgJFfcACgkQYjlMaYwn
Ofr9Kw//c9jLCciB5HUnOb6KJsNARRxg2Abjc6TyOJewrCcD60lRYTqpOqln48ir
7ubhOwBQ0El2zh5jyh20FMvY2y0iSeUO2JIPgElOgocmtyTpNRDrdNMcNutxqveO
LxmXepLxnwcTi/Dqi4H/0vqLXL94mOyLlhhJ1r1cn2hsK/Cr5+UemU5gYKFT6NF2
DJJiWp0vIttChMJEl/27SJ2QPUdri+s1dsT9nFf8YrZnafCNyO0NZcmVQ8nsoRdj
lOxmcc5Fzy4LpiZy25mafLchD6MS7+IfaexxX9lfw10FE4sG8Ih2/dMIDvPnQYFy
wM0GoBo1/XC4HDgfRSlOYwcwUFSkL5bd/3jTsRaUT10lt7yRLXqZ+BjlzgVhWWDM
LFz3+w1LnSoOA9fxzBROsFaHSBW3yDURIW3tuBUmoafIrAguf5bnAJSwQbxxRH9C
0yAWeLEZTH1EUOEe7J2Dw3ABdkbB19Ky8NuJjx0qWoRIqBPXKEyDRr1uf47t+mSp
m0klWdtpmksW5toCMHQBcQOBfUtIMLRpXo6H62Lg2EpM2nMRVvBkO5NzyeedALUE
hXSNX5WdDzchoBk8wNNOoyOPlG100k3kLVosu1Z/HJOBmx2dBceu7na04kM0tySF
PlfcnyRfay8xzJBEVmHFhMxP2iIhphNt9p55mt7RKXX4wd05s7s=
=mthf
-----END PGP SIGNATURE-----

View file

@ -0,0 +1 @@
f30b5ef614290ae2847051682575e48e FU-0.1.tar.gz

View file

@ -0,0 +1 @@
603c0bf9e2c008cfdf6274a0cc43f36c7dd210f6 FU-0.1.tar.gz

View file

@ -0,0 +1 @@
c146eb45d2489319aade2f52105c04dec11c98cfc4e0902e1ff1a8731530e296 FU-0.1.tar.gz

View file

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEdEYNMrgIEOupr6LpYjlMaYwnOfoFAmgJFfoACgkQYjlMaYwn
OfqbJxAA9RTDZnN9nbH0faQxgAAEjnj9s2G4XNfL91l6YD9VCgiTrzNR7np5upLR
ratv5J9+PP/yMeS0xGBS9aoXWWCBmXDUrlqy3ooX9o+OEnqtEi+sWdo7nJKbuju4
BTSE/4vejsUHJ1XHTtnqevRHhDRbcIlU5gX1D+lkC4pzvi/AHKRsLM+7AV1CrfX1
d/VoEsqcvz6vyzJvvUivS7hxX/aUkYHy3WiZ29AwLJETSx58//nTARD8JybCuQEv
E6BSHAxIxYNY+XHFXHONjw7yX+DOFnrxl/MFSQB/gumIPT53nG9J6PNlAdS8F+jH
FPntf5cQW5z++6n9dLUnvi8/eoeyNPUv3bqhrrSI/TJRrsUNLSSjH3frNHfT7cqM
WlaUCK3OtBOliJcR0lvUImKfdXL/yeUzhS2fdQsSG56RPdVfEgHWllvSYs6VEKtB
V59IF8DrKd7wmzUSU4zZlanvEaiS/vVcu4UitQj9RHNQ5ziMwGpX0SPFause0sWh
tJ9d299i0WVpJrngxIIRabZWSGHvgMc8oecNfvFLUQwiwwV5iSgAKp07QxlL7nVc
bNCaVvN2qkb8M+DSYoBoohicrc5rbkbGx83rjMg9JHEVpo9gMWmhFr8pCrv2U+zH
QaZdvaG9LJZppKMcEgSdAgSBBCo6QaJbC60SI/g1Zj8RwmTlDfw=
=I1dP
-----END PGP SIGNATURE-----

View file

@ -0,0 +1 @@
bd45dc39b161ead180e71ce7a16a7898 FU-0.2.tar.gz

View file

@ -0,0 +1 @@
83d0e235f2791a47681c35b94048368d7ec414e5 FU-0.2.tar.gz

View file

@ -0,0 +1 @@
268d20f800d66392198eaab596f9da7cfd52297e5b50b3dc6e76023141af2d43 FU-0.2.tar.gz

View file

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEdEYNMrgIEOupr6LpYjlMaYwnOfoFAmgJFfoACgkQYjlMaYwn
OfpHsBAA5K2LDuM+kUZsAePZzemH3S3S/SvVV3Bxn6EZUR+Hq7ytjOX5WbqslW7B
d7bNlT/RLFgd4cP/ltZqzvrZTwW/tX4+lb/u5lStVeQOz8udxpijusCjcTA8hFzt
I6aBNBgG2YHnj7h04sVVHm+ylVwqZa5I2BvYPhyTXTNKcushhEjxRco9573RMFj4
fdUMHFFSPmFfRPfmXhtN4Z1BLC88Y/qCFozSD3I7EprRwBc+1xKOiRIQ1n4kzF5R
zIYQtq7N6aI3MEJ2CdJtppSu3MvchqQbZKZ0OeqqmggH1YRAqtuYTyN8NIHdhriM
4uXIqVeDD6dYGvWANSfngk1urE1qN3Mw2lP/TC8tByvkuQ+mky/rjXeXEaO5VDRl
XmJhcBowMuUfkxXdgIQ0rX+4n/DYRZwZ5vZL6Yum1FbtTOf0EIXKA/jqtW8zPbsf
4Tb6SpSuVY+1CQRX18Y6RXMufUuuBd8udkAXoOEJDco+hAdBEN22eH5H6ZU6myBh
Plhl9D5oAtMiz0HGl6F3JaaO0Zxkzu+q3Ft9w7/GVN3nsM537xFiTnT57KgFoaHx
iUO/QSEr7nuSSG63+xIHje581o3Mim5lrOSmrb1pJXT6Se1800q15ztxlQwYhADW
x+4UcJG+KMaMsrWI/ElJ4UYR6XbAJUYEmmndwQlsSwyKETbrkAc=
=zA8a
-----END PGP SIGNATURE-----

View file

@ -0,0 +1 @@
3914221f1c7e914f989b8184b2f1e9a1 FU-0.3.tar.gz

View file

@ -0,0 +1 @@
67c8bcdeb1e130dcded70755cfa3afcc8b6a4e62 FU-0.3.tar.gz

View file

@ -0,0 +1 @@
d8a034aaeb939d401603350e8e0741f3f4d636b47e7629494e956fdeb45af40a FU-0.3.tar.gz

View file

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEdEYNMrgIEOupr6LpYjlMaYwnOfoFAmgJFfoACgkQYjlMaYwn
OfrZsw//T3sM9pjCYMSG9+KOFI9Y9f1oPjoElsXCzxWo+cfROj2MEAXAjzo5rYR2
pp0Beo5SMWu1E0/Qtfosx5H+okxELckdMq7f/UuRk5Ap/+pE1hbAi217bHLDuIdB
T/YIxExRbXEZbcmKWrSnxfXEM9B6t1iVsUrFRVZDK0YGbYGPOJqd2AXmUb7D3sTg
d64ROToYga3U6l7K2oUGRGCCMN148OKa5rkdT8pW5vwUthuxwEs9lFmbZ5SwV8RU
8FJANLFcZw1qqhx+v5AxxH4QL08ssGsLuPGI/smGcM6SpS1aWO8ACxYuxJBeI3J5
tbnB8ZoY5fELJviIzYGt6d1TkLDTokTXTdcPW5vJw9x/ISc7r5uQsVi8Lv9uaBVO
t7ellfR4H9l8lzW/mfI4CILY1RZ+OtnTfwA7wkSBQtAasJlVhamYgjB+9gsV89JO
cRFE1oUB26PjGhztiZ+vs2Vl/08cNiWbw4YfMz/uVwwy2vMJPu95rdCChnd1hEz5
zvTbwZ1KZJPNRN0U8NDh/lFmFjj88dcalcCpOp95KvWdX3h7R0w1WiWTuqtrhP9U
FJFAQLN1VMHFqjZyXIztejj8O7ZUUyCsOI/5Jal7qctqxw4IzzLF41DxIYZVk/XJ
KDbp4SxbecF4upYFjp22vn3rluGlLNUotnEOdZXi14A0iiw0hqs=
=c2VR
-----END PGP SIGNATURE-----

View file

@ -0,0 +1 @@
fdf8834c8065f89895b3832de7ce61b1 FU-0.4.tar.gz

View file

@ -0,0 +1 @@
8a22bb5f21b6cf8098923be258b1c9d0d1ac6823 FU-0.4.tar.gz

View file

@ -0,0 +1 @@
04040aed292a9ad57c27e8d93afaff44238ecccee38bc529e18ff81377819f1b FU-0.4.tar.gz

View file

@ -21,7 +21,7 @@
<li><a href="/" class="item1-index">Home</a></li>
<li><a href="/ncdu" class="fwd">Ncdu </a></li>
<li><a href="/ncdc" class="fwd">Ncdc </a></li>
<li><a href="/tuwf" class="fwd">Tuwf </a></li>
<li><a href="/fu" class="fwd">FU </a></li>
<li><a href="/yxml" class="fwd">Yxml </a></li>
<li><a href="/nginx-confgen" class="fwd">Nginx-cfg </a></li>
<li><a href="/sqlbin" class="fwd">SQLBin </a></li>
@ -30,6 +30,29 @@
<li><a href="/doc" class="item1-doc">Writing</a></li>
<li><a href="/dump" class="item1-dump">Code dump</a></li>
<li><a href="/globster" class="fwd">Globster </a></li>
<li><a href="/tuwf" class="fwd">TUWF </a></li>
</ul>
$endif$
$if(menu-fu)$
<h1>~ FU ~</h1>
<ul>
<li><a href="/fu" class="item2-fu">Info</a></li>
<li><em>Manual</em>
<ul>
<li><a href="/fu/man" class="item3-fu-man">FU</a></li>
<li><a href="/fu/man/log" class="item3-fu-man-log">::Log</a></li>
<li><a href="/fu/man/mfd" class="item3-fu-man-mfd">::Multipart..</a></li>
<li><a href="/fu/man/pg" class="item3-fu-man-pg">::Pg</a></li>
<li><a href="/fu/man/sql" class="item3-fu-man-sql">::SQL</a></li>
<li><a href="/fu/man/util" class="item3-fu-man-util">::Util</a></li>
<li><a href="/fu/man/validate" class="item3-fu-man-validate">::Validate</a></li>
<li><a href="/fu/man/xmlwriter" class="item3-fu-man-xmlwriter">::XMLWriter</a></li>
</ul>
</li>
<li><a href="/fu/changes" class="item2-fu-changes">Changelog</a></li>
<li><a href="https://code.blicky.net/yorhel/fu/issues" class="external">Issues </a></li>
<li><a href="https://metacpan.org/dist/FU" class="external">CPAN </a></li>
<li><a href="/" class="small back">Projects home </a></li>
</ul>
$endif$
$if(menu-globster)$