Redesigned and rewrote the website
Moved most pages out of the index.cgi and into a POD file while I was at it.
This commit is contained in:
parent
ac38865338
commit
b7746b3122
16 changed files with 1460 additions and 1423 deletions
35
dat/doc
Normal file
35
dat/doc
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
=pod
|
||||||
|
|
||||||
|
When programming stuff, I often come across a situation where I am not
|
||||||
|
happy with the documentation or articles available online, and feel the urge to
|
||||||
|
do something about this situation. Most of the time I resist this urge because
|
||||||
|
I otherwise won't get any programming done, but sometimes this urge is just too
|
||||||
|
hard to resist.
|
||||||
|
|
||||||
|
I don't really have a blog - at least not one that I take seriously - so I'll
|
||||||
|
just use this site to publish my articles. Since I've just started writing
|
||||||
|
these, this page is still quite empty. I'll add more as soon as my urge to
|
||||||
|
write an article surprasses my urge to get some programming done again.
|
||||||
|
|
||||||
|
=over
|
||||||
|
|
||||||
|
=item C<2011-11-26 > - L<Multi-threaded Access to an SQLite3 Database|http://dev.yorhel.nl/doc/sqlaccess>
|
||||||
|
|
||||||
|
So you have a single database and some threads. How do you combine these in a
|
||||||
|
program?
|
||||||
|
|
||||||
|
=item C<2010-06-02 > - L<Design and implementation of a compressed linked list library|http://dev.yorhel.nl/download/doc/compll.pdf> (PDF)
|
||||||
|
|
||||||
|
This isn't really an article. It's the report for the
|
||||||
|
final project of my professional (HBO) bachelor of Electrical
|
||||||
|
Engineering. I was very liberal with some terminology in this report. For
|
||||||
|
example, "linked lists" aren't what you think they are, and I didn't even
|
||||||
|
use the term "locality of reference" where I really should have. It was
|
||||||
|
also written for an audience with little knowledge on the subject, so I
|
||||||
|
elaborated on a lot of things that should be obvious for most people in
|
||||||
|
the field. Then there is a lot of uninteresting overhead about the
|
||||||
|
project itself, which just happened to be mandatory for this report.
|
||||||
|
Nonetheless, if you can ignore these faults it's not such a bad read, if
|
||||||
|
I may say so myself. :-)
|
||||||
|
|
||||||
|
=back
|
||||||
63
dat/dump
Normal file
63
dat/dump
Normal file
|
|
@ -0,0 +1,63 @@
|
||||||
|
=pod
|
||||||
|
|
||||||
|
Most of the things I write are simple perl/shell scripts or programs that only
|
||||||
|
serve the purpose of learning something new. This page is a listing of those I
|
||||||
|
thought might be of interest to others as well.
|
||||||
|
|
||||||
|
=head2 bbcode.c
|
||||||
|
|
||||||
|
January 2006. Simple BBCode to HTML converter written in plain C, for learning
|
||||||
|
puroses. L<source|http://dev.yorhel.nl/download/code/bbcode.c>
|
||||||
|
|
||||||
|
=head2 echoserv.c
|
||||||
|
|
||||||
|
February 2006. A simple non-blocking single-threaded TCP echo server,
|
||||||
|
displaying how the select() system call can be used to handle multiple
|
||||||
|
connections. L<source|http://dev.yorhel.nl/download/code/echoserv.c>
|
||||||
|
|
||||||
|
=head2 yapong.c
|
||||||
|
|
||||||
|
Feburary 2006. Yet Another Pong, and yet another program written just for
|
||||||
|
testing/ learning purposes. Tested to work with the ncurses or pdcurses
|
||||||
|
libraries. L<source|/download/code/yapong.c> (L<older
|
||||||
|
version|http://dev.yorhel.nl/download/code/yapong-0.01.c>).
|
||||||
|
|
||||||
|
=head2 Microdc2 log file parser
|
||||||
|
|
||||||
|
June 2007. Simple perl script that parses log files created by
|
||||||
|
L<microdc2|http://corsair626.no-ip.org/microdc/> and outputs a simple and
|
||||||
|
ugly html file with all uploaded files. It correctly merges chunked
|
||||||
|
uploads, calculates average upload speed per file and total bandwidth used
|
||||||
|
for uploads. L<source|http://dev.yorhel.nl/download/code/mdc2-parse.pl>
|
||||||
|
|
||||||
|
B<Note:> for those of you who still use microdc2, please have a look at
|
||||||
|
L<ncdc|http://dev.yorhel.nl/ncdc>, a modern alternative.
|
||||||
|
|
||||||
|
=head2 vinfo.c
|
||||||
|
|
||||||
|
November 2009. The L<public VNDB API|http://vndb.org/d11> was designed to be
|
||||||
|
easy to use even from low level languages. I wrote this simple program to see
|
||||||
|
how much work it would be to use the API in C, and as example code for anyone
|
||||||
|
wishing to use the API for something more useful. Read the comments for more
|
||||||
|
info. L<source|http://dev.yorhel.nl/download/code/vinfo.c>
|
||||||
|
|
||||||
|
=head2 json.mll
|
||||||
|
|
||||||
|
December 2010. I was writing a client for the L<public VNDB
|
||||||
|
API|http://vndb.org/d11> in OCaml and needed a JSON parser/generator. Since I
|
||||||
|
wasn't happy with the currently available solutions - they try to do too many
|
||||||
|
things and have too many dependencies - I decided to write a minimal JSON
|
||||||
|
library myself. L<source|http://g.blicky.net/serika.git/tree/json.mll>
|
||||||
|
|
||||||
|
=head2 ncdc-transfer-stats
|
||||||
|
|
||||||
|
September 2011. L<ncdc|http://dev.yorhel.nl/ncdc> gained transfer logging
|
||||||
|
features, and I wrote a quick Perl script to fetch some simple statistics from
|
||||||
|
it. L<source|http://p.blicky.net/agolr>
|
||||||
|
|
||||||
|
=head2 ncdc-share-report
|
||||||
|
|
||||||
|
December 2011. Playing around with the Go programming language, I wrote another
|
||||||
|
transfer log parser and statistics generator for ncdc.
|
||||||
|
L<source|http://p.blicky.net/6yx2d> (L<older
|
||||||
|
version|http://p.blicky.net/ab4lm>).
|
||||||
102
dat/dump-awshrink
Normal file
102
dat/dump-awshrink
Normal file
|
|
@ -0,0 +1,102 @@
|
||||||
|
=pod
|
||||||
|
|
||||||
|
People who run AWStats on large log files have most likely noticed: the data
|
||||||
|
files can grow quite large, resulting in both a waste of disk space and longer
|
||||||
|
page generation times for the AWStats pages. I wrote a small script that
|
||||||
|
analyzes these data files and can remove any information you think is
|
||||||
|
unnecessary.
|
||||||
|
|
||||||
|
B<Download:> L<awshrink|http://dev.yorhel.nl/download/code/awshrink> (copy to
|
||||||
|
/usr/bin to install).
|
||||||
|
|
||||||
|
|
||||||
|
=head2 Important
|
||||||
|
|
||||||
|
Do B<NOT> use this script on data files that are not completed yet (i.e. data
|
||||||
|
files of the month you're living in). This will result in inaccurate sorting of
|
||||||
|
visits, pages, referers and whatever other list you're shrinking. Also, keep
|
||||||
|
in mind that this is just a fast written perl hack, it is by no means fast and
|
||||||
|
may hog some memory while shrinking data files.
|
||||||
|
|
||||||
|
|
||||||
|
=head2 Usage
|
||||||
|
|
||||||
|
awshrink [-c -s] [-SECTION LINES] [..] datafile
|
||||||
|
-s Show statistics
|
||||||
|
-c Overwrite datafile instead of writing to a backupfile (datafile~)
|
||||||
|
-SECTION LINES
|
||||||
|
Shrink the selected SECTION to LINES lines. (See example below)|;
|
||||||
|
|
||||||
|
|
||||||
|
=head2 Typical command-line usage
|
||||||
|
|
||||||
|
While awshrink is most useful for monthly cron jobs, here's an example of basic
|
||||||
|
command line usage to demonstrate what the script can do:
|
||||||
|
|
||||||
|
$ wc -c awstats122007.a.txt
|
||||||
|
29916817 awstats122007.a.txt
|
||||||
|
|
||||||
|
$ awshrink -s awstats122007.a.txt
|
||||||
|
Section Size (Bytes) Lines
|
||||||
|
SCREENSIZE* 74 0
|
||||||
|
WORMS 131 0
|
||||||
|
EMAILRECEIVER 135 0
|
||||||
|
EMAILSENDER 143 0
|
||||||
|
CLUSTER* 144 0
|
||||||
|
LOGIN 155 0
|
||||||
|
ORIGIN* 178 6
|
||||||
|
ERRORS* 229 10
|
||||||
|
SESSION* 236 7
|
||||||
|
FILETYPES* 340 12
|
||||||
|
MISC* 341 10
|
||||||
|
GENERAL* 362 8
|
||||||
|
OS* 414 29
|
||||||
|
SEREFERRALS 587 34
|
||||||
|
TIME* 1270 24
|
||||||
|
DAY* 1293 31
|
||||||
|
ROBOT 1644 40
|
||||||
|
BROWSER 1992 127
|
||||||
|
DOMAIN 2377 131
|
||||||
|
UNKNOWNREFERERBROWSER 5439 105
|
||||||
|
UNKNOWNREFERER 20585 317
|
||||||
|
SIDER_404 74717 2199
|
||||||
|
PAGEREFS 130982 2500
|
||||||
|
KEYWORDS 288189 27036
|
||||||
|
SIDER 1058723 25470
|
||||||
|
SEARCHWORDS 5038611 157807
|
||||||
|
VISITOR 23285662 416084
|
||||||
|
* = not shrinkable
|
||||||
|
|
||||||
|
$ awshrink -s -c -VISITOR 100 -SEARCHWORDS 100 -SIDER 100 awstats122007.a.txt
|
||||||
|
Section Size (Bytes) Lines
|
||||||
|
SCREENSIZE* 74 0
|
||||||
|
WORMS 131 0
|
||||||
|
EMAILRECEIVER 135 0
|
||||||
|
EMAILSENDER 143 0
|
||||||
|
CLUSTER* 144 0
|
||||||
|
LOGIN 155 0
|
||||||
|
ORIGIN* 178 6
|
||||||
|
ERRORS* 229 10
|
||||||
|
SESSION* 236 7
|
||||||
|
FILETYPES* 340 12
|
||||||
|
MISC* 341 10
|
||||||
|
GENERAL* 362 8
|
||||||
|
OS* 414 29
|
||||||
|
SEREFERRALS 587 34
|
||||||
|
TIME* 1270 24
|
||||||
|
DAY* 1293 31
|
||||||
|
ROBOT 1644 40
|
||||||
|
BROWSER 1992 127
|
||||||
|
SEARCHWORDS 2289 100
|
||||||
|
DOMAIN 2377 131
|
||||||
|
SIDER 3984 100
|
||||||
|
UNKNOWNREFERERBROWSER 5439 105
|
||||||
|
VISITOR 5980 100
|
||||||
|
UNKNOWNREFERER 20585 317
|
||||||
|
SIDER_404 74717 2199
|
||||||
|
PAGEREFS 130982 2500
|
||||||
|
KEYWORDS 288189 27036
|
||||||
|
* = not shrinkable
|
||||||
|
|
||||||
|
$ wc -c awstats122007.a.txt
|
||||||
|
546074 awstats122007.a.txt
|
||||||
28
dat/dump-demo
Normal file
28
dat/dump-demo
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
=pod
|
||||||
|
|
||||||
|
Yes, I realise that the title is plural, suggesting there's more than one demo.
|
||||||
|
That is not quite true, unfortunately. The reason I chose to use plural form is
|
||||||
|
simply in the hopes that I do, in fact, write more demos, and that this page
|
||||||
|
will actually get more content in the future. I still happen to be a huge fan
|
||||||
|
of the L<demoscene|http://demoscene.info/>, and still wish to contribute to
|
||||||
|
it... if only I could find the time and self-discipline to do so. In the
|
||||||
|
meanwhile, here's one demo I did write some time ago:
|
||||||
|
|
||||||
|
=head1 Blue Cubes
|
||||||
|
|
||||||
|
[img right bluecubes.png Blue Cubes.]
|
||||||
|
August 2006. My first demo - or more exact: intro. Blue Cubes is a 64kB intro
|
||||||
|
written in OpenGL/SDL with Linux as target OS. I wrote this intro within 10
|
||||||
|
days without any prior experience in any of the fields of computer generated
|
||||||
|
graphics or music. So needlessly to say, it sucks. I am ashamed even of the
|
||||||
|
thought of releasing it at a respectable demoparty like
|
||||||
|
L<Evoke|http://www.evoke.eu/2006/>. Still, it didn't feel I was unwelcome, I
|
||||||
|
did actually receive three prices: 3rd price in the 64k competition (there were
|
||||||
|
only 3 actual entries, but oh well), best non-windows 64k intro (it was the
|
||||||
|
only one in the competition), and the Digitale Kultur newcomer award, which
|
||||||
|
actually is something to be proud of, I guess.
|
||||||
|
|
||||||
|
L<download|http://dev.yorhel.nl/download/yorhel~bluecubes.zip> -
|
||||||
|
L<mirror|http://scene.org/file.php?file=/parties/2006/evoke06/in64/yorhel_bluecubes.zip&fileinfo>
|
||||||
|
(includes linux binaries, windows port, and sources) -
|
||||||
|
L<pouet comments|http://pouet.net/prod.php?which=25866>.
|
||||||
53
dat/dump-grenamr
Normal file
53
dat/dump-grenamr
Normal file
|
|
@ -0,0 +1,53 @@
|
||||||
|
=pod
|
||||||
|
|
||||||
|
GRenamR is a GTK+ mass file renamer written in Perl, the functionality is
|
||||||
|
insipred by the
|
||||||
|
L<rename|http://search.cpan.org/~rmbarker/File-Rename-0.05/rename.PL> command
|
||||||
|
that comes with a Perl module.
|
||||||
|
|
||||||
|
GRenamR allows multiple file renaming using perl expressions. You can see the
|
||||||
|
effects of your expression while typing it, and can preview your action before
|
||||||
|
applying them. The accepted expressions are mostly the same as the rename
|
||||||
|
command (see above paragrah): your expression will be evaluated with $_ set to
|
||||||
|
the filename, and any modifications to this variable will result in the
|
||||||
|
renaming of the file. There's one other variable that the rename command does
|
||||||
|
not have: $i, which reflects the file number (starting from 0) in the current
|
||||||
|
list. This allows expressions such as as C<$_=sprintf'%03d.txt',$i>.
|
||||||
|
|
||||||
|
B<Download: > L<grenamr|http://dev.yorhel.nl/download/code/grenamr-0.1.pl>
|
||||||
|
(copy to /usr/bin/ to install)
|
||||||
|
|
||||||
|
Requires the Gtk2 Perl module. Most distributions have a perl-gtk2 package.
|
||||||
|
|
||||||
|
|
||||||
|
=head2 Example expressions
|
||||||
|
|
||||||
|
y/A-Z/a-z/ # Convert filenames to lowercase
|
||||||
|
$_=lc # Same
|
||||||
|
s/\.txt$/.utf8/ # Change all '.txt' extensions to '.utf8'
|
||||||
|
s/([0-9]+)/sprintf'%04d',$1/eg # Zero-pad all numbers in filenames
|
||||||
|
|
||||||
|
# Replace each image filename with a zero-padded number starting from 1
|
||||||
|
s/^.+\.jpg$/sprintf'%03d.jpg',$i+1/e
|
||||||
|
|
||||||
|
|
||||||
|
=head2 Caveats / bugs / TODO
|
||||||
|
|
||||||
|
=over
|
||||||
|
|
||||||
|
=item * Calling functions as 'sleep' or 'exit' in the expression will trash the program
|
||||||
|
|
||||||
|
=item * It's currently not possible to manually order the file list, so $i is
|
||||||
|
not useful in every situation
|
||||||
|
|
||||||
|
=item * It's currently not possible to manually rename files or exclude items
|
||||||
|
from being effected by the expression
|
||||||
|
|
||||||
|
=item * The expression isn't executed in the opened directory, so things like
|
||||||
|
L<-X|http://perldoc.perl.org/functions/-X.html> won't work
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
|
=head2 Screenshot
|
||||||
|
|
||||||
|
[img scr grenamr.png GRenamR]
|
||||||
99
dat/dump-nccolour
Normal file
99
dat/dump-nccolour
Normal file
|
|
@ -0,0 +1,99 @@
|
||||||
|
=pod
|
||||||
|
|
||||||
|
I decided to do some experimentation with how the colours defined in ncurses
|
||||||
|
are actually displayed in terminals, what the effects are of combining these
|
||||||
|
colours with other attributes, and how colour schemes of a terminal can affect
|
||||||
|
the displayed colours. To this end I wrote a small c file and ran it in
|
||||||
|
different terminals and different configurations. Note that only the 8 basic
|
||||||
|
NCurses colours are tested, the more flexible init_color() function is not
|
||||||
|
used.
|
||||||
|
|
||||||
|
B<Source code: > L<nccolour.c|http://dev.yorhel.nl/download/code/nccolour.c>
|
||||||
|
(L<syntax highlighed version|http://p.blicky.net/xu35c>)
|
||||||
|
|
||||||
|
Some screenshots can be found below, but more screenshots are always welcome!
|
||||||
|
Please send your (.png) screenshots to projects@yorhel.nl.
|
||||||
|
|
||||||
|
|
||||||
|
=head2 Notes / observations
|
||||||
|
|
||||||
|
=over
|
||||||
|
|
||||||
|
=item * The most obvious conclusion: the displayed colours do not have the
|
||||||
|
exact same colour value in every terminal. Some terminals also allow users to
|
||||||
|
modify these colours.
|
||||||
|
|
||||||
|
=item * You can not assume that the default foreground or background colour can
|
||||||
|
be represented by one of the 8 basic colours defined by NCurses.
|
||||||
|
|
||||||
|
=item * Specifying -1 as colour, to indicate the default foreground or
|
||||||
|
background colour, seems to work fine in any terminal tested so far.
|
||||||
|
|
||||||
|
=item * All tested terminals render the foreground colour in a lighter shade
|
||||||
|
when the A_BOLD attribute is set. This does not apply to the background colour.
|
||||||
|
The result of this is that the text becomes visible when using A_BOLD when the
|
||||||
|
foreground and background colour are set to the same value.
|
||||||
|
|
||||||
|
=item * Unfortunately, not all terminals are configured in such a way that all
|
||||||
|
possible colours are readable. So as a developer you'll still have to support
|
||||||
|
configurable colour schemes in your ncurses application. :-(
|
||||||
|
|
||||||
|
=item * On most terminals, setting the foreground and background colour to the
|
||||||
|
same value without applying the A_BOLD attribute will make the text invisible.
|
||||||
|
Don't rely on this, however, as this is not the case on OS X.
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
|
|
||||||
|
=head2 Full screenshot
|
||||||
|
|
||||||
|
To avoid wasting unecessary space, the comparison screenshots below only
|
||||||
|
display the colour table. Here's a screenshot of the full output of the
|
||||||
|
program, which also explains what each column means.
|
||||||
|
|
||||||
|
[img scr nccol-full.png ]
|
||||||
|
|
||||||
|
|
||||||
|
=head2 Screenshots
|
||||||
|
|
||||||
|
=over
|
||||||
|
|
||||||
|
=item Arch Linux, Roxterm, Default color scheme
|
||||||
|
|
||||||
|
[img scr nccol-rox-b.png ]
|
||||||
|
|
||||||
|
=item Arch Linux, Roxterm, GTK color scheme
|
||||||
|
|
||||||
|
[img scr nccol-rox-w.png ]
|
||||||
|
|
||||||
|
=item Arch Linux, Roxterm, Tango color scheme
|
||||||
|
|
||||||
|
[img scr nccol-rox-t.png ]
|
||||||
|
|
||||||
|
=item Arch Linux, Roxterm, Modified Tango color scheme
|
||||||
|
|
||||||
|
[img scr nccol-rox-c.png ]
|
||||||
|
|
||||||
|
=item Arch Linux, xterm (default settings)
|
||||||
|
|
||||||
|
[img scr nccol-xterm.png ]
|
||||||
|
|
||||||
|
=item Ubuntu 11.10, Gnome-terminal
|
||||||
|
|
||||||
|
[img scr nccol-ubuntu.png ]
|
||||||
|
|
||||||
|
=item Debian Squeeze, VT (default settings)
|
||||||
|
|
||||||
|
[img scr nccol-debian.png ]
|
||||||
|
|
||||||
|
=item FreeBSD, VT (default settings)
|
||||||
|
|
||||||
|
[img scr nccol-fbsd.png ]
|
||||||
|
|
||||||
|
=item Mac OS X, Terminal
|
||||||
|
|
||||||
|
[img scr nccol-osx-terminal.png ]
|
||||||
|
|
||||||
|
=item Mac OS X, iTerm2
|
||||||
|
|
||||||
|
[img scr nccol-osx-iterm2.png ]
|
||||||
77
dat/home
Normal file
77
dat/home
Normal file
|
|
@ -0,0 +1,77 @@
|
||||||
|
=pod
|
||||||
|
|
||||||
|
This site is an attempt to publish and organise my various opensource programs
|
||||||
|
and libraries on one central location, possibly documented as well as possible
|
||||||
|
so it might actually be useful to anyone. Some of these projects might end up
|
||||||
|
to be total crap, and some might not be useful to anyone at all. I'll simply
|
||||||
|
try to dump most of the things I create here, and leave it up to you whatever
|
||||||
|
you decide to do with it.
|
||||||
|
|
||||||
|
|
||||||
|
=head2 Changes
|
||||||
|
|
||||||
|
=over
|
||||||
|
|
||||||
|
=item C<2012-01-17 > Complete site redesign.
|
||||||
|
|
||||||
|
=item C<2011-12-30 > ncdc 1.7 released!
|
||||||
|
|
||||||
|
=item C<2011-12-07 > ncdc 1.6 released!
|
||||||
|
|
||||||
|
=item C<2011-11-26 > Added article section and the article on SQLite.
|
||||||
|
|
||||||
|
=item C<2011-11-03 > ncdc 1.5 and ncdu 1.8 released!
|
||||||
|
|
||||||
|
=item C<2011-10-26 > ncdc 1.4 released!
|
||||||
|
|
||||||
|
=item C<2011-10-19 > PGP-signed all releases of ncdu, ncdc and TUWF.
|
||||||
|
|
||||||
|
=item C<2011-10-14 > ncdc 1.3 released!
|
||||||
|
|
||||||
|
=item C<2011-09-25 > ncdc 1.1 released - follwed by a 1.2 quickfix.
|
||||||
|
|
||||||
|
=item C<2011-09-16 > ncdc 1.0 released!
|
||||||
|
|
||||||
|
=item C<2011-09-15 > Added some screenshots for ncdu.
|
||||||
|
|
||||||
|
=item C<2011-09-03 > ncdc 0.9 released!
|
||||||
|
|
||||||
|
=item C<2011-08-26 > ncdc 0.8 released!
|
||||||
|
|
||||||
|
=item C<2011-08-17 > ncdc 0.7 released!
|
||||||
|
|
||||||
|
=item C<2011-08-08 > ncdc 0.6 released & user guide updated
|
||||||
|
|
||||||
|
=item C<2011-08-02 > ncdc 0.5 released!
|
||||||
|
|
||||||
|
=item C<2011-07-23 > ncdc 0.4 released!
|
||||||
|
|
||||||
|
=item C<2011-07-15 > ncdc 0.3 released!
|
||||||
|
|
||||||
|
=item C<2011-06-27 > ncdc 0.2 released!
|
||||||
|
|
||||||
|
=item C<2011-06-20 > ncdc 0.1 released! And wrote a user guide for it.
|
||||||
|
|
||||||
|
=item C<2011-06-11 > Added NCurses colour experiment at code dump => nc-colour
|
||||||
|
|
||||||
|
=item C<2011-06-03 > Added my latest project: ncdc
|
||||||
|
|
||||||
|
=item C<2011-02-07 > TUWF 0.1 released and now also available on CPAN
|
||||||
|
|
||||||
|
=item C<2011-01-27 > Documented and uploaded one of my older projects: TUWF
|
||||||
|
|
||||||
|
=item C<2011-01-09 > Added my json.mll OCaml library to code dump
|
||||||
|
|
||||||
|
=item C<2010-08-13 > ncdu 1.7 released!
|
||||||
|
|
||||||
|
=item C<2009-12-22 > Added vinfo.c script to code dump
|
||||||
|
|
||||||
|
=item C<2009-10-23 > ncdu 1.6 released!
|
||||||
|
|
||||||
|
=item C<2009-09-21 > Tiny CSS fix to make this site look good in certain configurations.
|
||||||
|
|
||||||
|
=item C<2009-05-02 > ncdu 1.5 released!
|
||||||
|
|
||||||
|
=item C<2009-04-30 > Site redesign and reorganisation.
|
||||||
|
|
||||||
|
=back
|
||||||
120
dat/ncdc
Normal file
120
dat/ncdc
Normal file
|
|
@ -0,0 +1,120 @@
|
||||||
|
=pod
|
||||||
|
|
||||||
|
Ncdc is a modern and lightweight direct connect client with a friendly
|
||||||
|
ncurses interface.
|
||||||
|
|
||||||
|
|
||||||
|
=head2 Get ncdc!
|
||||||
|
|
||||||
|
=over
|
||||||
|
|
||||||
|
=item Latest version
|
||||||
|
|
||||||
|
1.7 ([dllink ncdc-1.7.tar.gz download]
|
||||||
|
- L<changes|http://dev.yorhel.nl/ncdc/changes>
|
||||||
|
- L<mirror|https://sourceforge.net/projects/ncdc/files/ncdc/>)
|
||||||
|
|
||||||
|
=item Development version
|
||||||
|
|
||||||
|
The latest development version is available from git and can be cloned using
|
||||||
|
C<git clone git://g.blicky.net/ncdc.git>. The repository is available for
|
||||||
|
L<online browsing|http://g.blicky.net/ncdc.git/>.
|
||||||
|
|
||||||
|
You are also invited to join the development hub at C<adc://dc.blicky.net:2780/>.
|
||||||
|
|
||||||
|
=item Packages and ports
|
||||||
|
|
||||||
|
Are available for the following systems:
|
||||||
|
L<Arch Linux|http://aur.archlinux.org/packages.php?ID=50949> -
|
||||||
|
L<FreeBSD|http://www.freshports.org/net-p2p/ncdc/> -
|
||||||
|
L<Frugalware|http://frugalware.org/packages/136807> -
|
||||||
|
L<Gentoo|http://packages.gentoo.org/package/net-p2p/ncdc> -
|
||||||
|
L<Mac OS X|http://www.macports.org/ports.php?by=name&substr=ncdc> -
|
||||||
|
L<OpenSUSE|http://packman.links2linux.org/package/ncdc>
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
|
|
||||||
|
=head2 Features
|
||||||
|
|
||||||
|
Common features all modern DC clients (should) have:
|
||||||
|
|
||||||
|
=over
|
||||||
|
|
||||||
|
=item * Connecting to multiple hubs at the same time,
|
||||||
|
|
||||||
|
=item * Support for both ADC and NMDC protocols,
|
||||||
|
|
||||||
|
=item * Chatting and private messaging,
|
||||||
|
|
||||||
|
=item * Browsing the user list of a connected hub,
|
||||||
|
|
||||||
|
=item * Share management and file uploading,
|
||||||
|
|
||||||
|
=item * Connections and download queue management,
|
||||||
|
|
||||||
|
=item * File list browsing,
|
||||||
|
|
||||||
|
=item * Multi-source and TTH-checked file downloading,
|
||||||
|
|
||||||
|
=item * Searching for files,
|
||||||
|
|
||||||
|
=item * Secure hub (adcs:// and nmdcs://) and client connections on both protocols.
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
|
And special features not commonly found in other clients:
|
||||||
|
|
||||||
|
=over
|
||||||
|
|
||||||
|
=item * Subdirectory refreshing,
|
||||||
|
|
||||||
|
=item * Nick notification and highlighting in chat windows,
|
||||||
|
|
||||||
|
=item * Detecting changes to the TLS certificate of a hub,
|
||||||
|
|
||||||
|
=item * Efficient file uploads using sendfile(),
|
||||||
|
|
||||||
|
=item * Large file lists are opened in a background thread,
|
||||||
|
|
||||||
|
=item * Doesn't trash your OS file cache (with the flush_file_cache option enabled),
|
||||||
|
|
||||||
|
=item * (Relatively...) low memory usage.
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
|
|
||||||
|
=head2 What doesn't ncdc do?
|
||||||
|
|
||||||
|
Since the above list is getting larger and larger every time, it may be more
|
||||||
|
interesting to list a few features that are (relatively) common in other DC
|
||||||
|
clients, but which ncdc doesn't do. Yet.
|
||||||
|
|
||||||
|
=over
|
||||||
|
|
||||||
|
=item * Segmented downloading,
|
||||||
|
|
||||||
|
=item * Bandwidth throttling,
|
||||||
|
|
||||||
|
=item * OP features (e.g. client detection, file list scanning and other useful stuff for OPs),
|
||||||
|
|
||||||
|
=item * SOCKS support.
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
|
Of course, there are many more features that could be implemented or improved.
|
||||||
|
These will all be addressed in later versions (hopefully :).
|
||||||
|
|
||||||
|
|
||||||
|
=head2 Requirements
|
||||||
|
|
||||||
|
The following libraries are required: ncurses, bzip2, sqlite3, glib2 and
|
||||||
|
libxml2. For TLS support, you will need at least glib2 version 2.28.0 and
|
||||||
|
glib-networking installed.
|
||||||
|
|
||||||
|
Ncdc has been developed on Arch Linux, but I have received reports from people
|
||||||
|
who successfully used it on CentOS, Debian, FreeBSD, Gentoo, Mac OS X,
|
||||||
|
OpenSUSE, Solaris and Ubuntu. It should be fairly trivial to port to other
|
||||||
|
POSIX-like systems.
|
||||||
|
|
||||||
|
Ncdc is entirely written in C and available under a liberal MIT license.
|
||||||
710
dat/ncdc-man
710
dat/ncdc-man
File diff suppressed because it is too large
Load diff
21
dat/ncdc-scr
Normal file
21
dat/ncdc-scr
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
=pod
|
||||||
|
|
||||||
|
Note: While these screenshots are from version 1.5, the latest version has only
|
||||||
|
little visible changes. Let me also apologise for the crappy formatting, I
|
||||||
|
should take some smaller shots next time...
|
||||||
|
|
||||||
|
=head2 Main chat
|
||||||
|
|
||||||
|
[img scr ncdchub.png Ncdc in the mainchat.]
|
||||||
|
|
||||||
|
=head2 File browser
|
||||||
|
|
||||||
|
[img scr ncdcbrowse.png Simple file list browser.]
|
||||||
|
|
||||||
|
=head2 User list
|
||||||
|
|
||||||
|
[img scr ncdcusers.png Ncdc displaying the userlist of a hub.]
|
||||||
|
|
||||||
|
=head2 Built-in help
|
||||||
|
|
||||||
|
[img scr ncdchelp.png Ncdc built-in help.]
|
||||||
98
dat/ncdu
Normal file
98
dat/ncdu
Normal file
|
|
@ -0,0 +1,98 @@
|
||||||
|
=pod
|
||||||
|
|
||||||
|
Not quite happy with the available disk usage analyzers and looking for a fun
|
||||||
|
project to get used to C programming, I started working on ncdu: A disk usage
|
||||||
|
analyzer with an ncurses interface, aimed to be run on a remote server where
|
||||||
|
you don't have an entire gaphical setup, but have to do with a simple SSH
|
||||||
|
connection. ncdu aims to be fast, simple and easy to use, and should be able
|
||||||
|
to run in any minimal POSIX-like environment with ncurses installed.
|
||||||
|
|
||||||
|
|
||||||
|
=head2 Download
|
||||||
|
|
||||||
|
=over
|
||||||
|
|
||||||
|
=item Latest version
|
||||||
|
|
||||||
|
1.8 ([dllink ncdu-1.8.tar.gz download]
|
||||||
|
- L<changes|http://dev.yorhel.nl/ncdu/changes>
|
||||||
|
- L<mirror|https://sourceforge.net/projects/ncdu/files/ncdu/>)
|
||||||
|
|
||||||
|
=item Development version
|
||||||
|
|
||||||
|
The most recent code is available on a git repository and can be cloned with
|
||||||
|
C<git clone git://g.blicky.net/ncdu.git/>. The repository is also available for
|
||||||
|
L<online browsing|http://g.blicky.net/ncdu.git/>.
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
|
Ncdu is entirely written in C and available under a liberal MIT license.
|
||||||
|
|
||||||
|
Subscribe to L<freecode|http://freecode.com/projects/ncdu> to receive
|
||||||
|
notifications for new releases.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
=head2 Packages and ports
|
||||||
|
|
||||||
|
Ncdu has been packaged for quite a few systems already, here's a list of the ones I am aware of:
|
||||||
|
|
||||||
|
L<AgiliaLinux|http://packages.agilialinux.ru/search.php?tag=sys-fs> -
|
||||||
|
L<AIX|http://www.perzl.org/aix/index.php?n=Main.Ncdu> -
|
||||||
|
L<ALT Linux|http://sisyphus.ru/en/srpm/Sisyphus/ncdu> -
|
||||||
|
L<Arch Linux|http://www.archlinux.org/packages/?q=ncdu> -
|
||||||
|
L<CRUX|http://crux.nu/portdb/?q=ncdu&a=search> -
|
||||||
|
L<Cygwin|http://cygwin.com/packages/ncdu/> -
|
||||||
|
L<Debian|http://packages.debian.org/ncdu> -
|
||||||
|
L<Fedora|https://admin.fedoraproject.org/pkgdb/acls/name/ncdu> -
|
||||||
|
L<FreeBSD|http://www.freshports.org/sysutils/ncdu/> -
|
||||||
|
L<Frugalware|http://frugalware.org/packages/?op=pkg&srch=ncdu&arch=all&ver=all> -
|
||||||
|
L<Gentoo|http://packages.gentoo.org/package/sys-fs/ncdu> -
|
||||||
|
L<IPCop|http://www.ipadd.de/binary-v2.html> -
|
||||||
|
L<OpenBSD|http://www.openbsd.org/cgi-bin/cvsweb/ports/sysutils/ncdu/> -
|
||||||
|
L<OpenSUSE|http://packman.links2linux.de/package/ncdu/> -
|
||||||
|
Mac OS X (L<Fink|http://pdb.finkproject.org/pdb/package.php/ncdu> - L<Homebrew|http://mxcl.github.com/homebrew/> - L<MacPorts|http://www.macports.org/ports.php?by=name&substr=ncdu>) -
|
||||||
|
L<Pardus|http://packages.pardus.org.tr/info/2011/devel/source/ncdu.html> -
|
||||||
|
L<Puppy Linux|http://www.murga-linux.com/puppy/viewtopic.php?t=35024> -
|
||||||
|
Solaris (L<CSW|http://www.opencsw.org/packages/ncdu> - L<sunfreeware|http://www.sunfreeware.com/>) -
|
||||||
|
Slackware (L<Slackbuilds|http://slackbuilds.org/repository/13.37/system/ncdu/> - L<Slackers.it|http://www.slackers.it/repository/ncdu/>) -
|
||||||
|
L<Ubuntu|http://packages.ubuntu.com/search?searchon=sourcenames&keywords=ncdu> -
|
||||||
|
L<Zenwalk|http://zur.zenwalk.org/view/package/name/ncdu>
|
||||||
|
|
||||||
|
Ncdu is also available on the
|
||||||
|
L<Open Build Service|https://build.opensuse.org/package/show?package=ncdu&project=utilities>,
|
||||||
|
which provides packages for a variaty of Linux distributions.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
=head2 Similar projects
|
||||||
|
|
||||||
|
=over
|
||||||
|
|
||||||
|
=item L<gt5|http://gt5.sourceforge.net/> - Quite similar to ncdu, but a different approach.
|
||||||
|
|
||||||
|
=item L<tdu|http://webonastick.com/tdu/> - Another small ncurses-based disk usage visualization utility.
|
||||||
|
|
||||||
|
=item L<TreeSize|http://treesize.sourceforge.net/> - GTK, using a treeview.
|
||||||
|
|
||||||
|
=item L<Baobab|http://www.marzocca.net/linux/baobab.html> - GTK, using pie-charts, a treeview and a treemap. Comes with GNOME.
|
||||||
|
|
||||||
|
=item L<GdMap|http://gdmap.sourceforge.net/> - GTK, with a treemap display.
|
||||||
|
|
||||||
|
=item L<Filelight|http://www.methylblue.com/filelight/> - KDE, using pie-charts.
|
||||||
|
|
||||||
|
=item L<KDirStat|http://kdirstat.sourceforge.net/> - KDE, with a treemap display.
|
||||||
|
|
||||||
|
=item L<QDiskUsage|http://qt-apps.org/content/show.php/QDiskUsage?content=107012> - Qt, using pie-charts.
|
||||||
|
|
||||||
|
=item L<xdiskusage|http://xdiskusage.sourceforge.net/> - FLTK, with a treemap display.
|
||||||
|
|
||||||
|
=item L<fsv|http://fsv.sourceforge.net/> - 3D visualization.
|
||||||
|
|
||||||
|
=item L<Philesight|http://zevv.nl/play/code/philesight/> - Web-based clone of Filelight.
|
||||||
|
|
||||||
|
=item L<JDiskReport|http://www.jgoodies.com/freeware/jdiskreport/> - Java, using pie-charts and a treeview.
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
|
|
||||||
114
dat/ncdu-man
114
dat/ncdu-man
|
|
@ -1,4 +1,4 @@
|
||||||
ncdu(1) ncdu manual ncdu(1)
|
ncdu(1) ncdu manual ncdu(1)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -11,32 +11,33 @@ SYNOPSIS
|
||||||
|
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
ncdu (NCurses Disk Usage) is a curses-based version of the well-known 'du', and
|
ncdu (NCurses Disk Usage) is a curses-based version of the well-known 'du',
|
||||||
provides a fast way to see what directories are using your disk space.
|
and provides a fast way to see what directories are using your disk space.
|
||||||
|
|
||||||
|
|
||||||
OPTIONS
|
OPTIONS
|
||||||
-h Print a small help message
|
-h Print a small help message
|
||||||
|
|
||||||
-q Quiet mode. While calculating disk space, ncdu will update the screen 10
|
-q Quiet mode. While calculating disk space, ncdu will update the
|
||||||
times a second by default, this will be decreased to once every 2 seconds
|
screen 10 times a second by default, this will be decreased to once
|
||||||
in quiet mode. Use this feature to save bandwidth over remote connec‐
|
every 2 seconds in quiet mode. Use this feature to save bandwidth
|
||||||
tions.
|
over remote connections.
|
||||||
|
|
||||||
-r Read-only mode. This will disable the built-in file deletion feature.
|
-r Read-only mode. This will disable the built-in file deletion fea‐
|
||||||
|
ture.
|
||||||
|
|
||||||
-v Print version.
|
-v Print version.
|
||||||
|
|
||||||
-x Only count files and directories on the same filesystem as the specified
|
-x Only count files and directories on the same filesystem as the spec‐
|
||||||
dir.
|
ified dir.
|
||||||
|
|
||||||
--exclude PATTERN
|
--exclude PATTERN
|
||||||
Exclude files that match PATTERN. This argument can be added multiple
|
Exclude files that match PATTERN. This argument can be added multi‐
|
||||||
times to add more patterns.
|
ple times to add more patterns.
|
||||||
|
|
||||||
-X FILE, --exclude-from FILE
|
-X FILE, --exclude-from FILE
|
||||||
Exclude files that match any pattern in FILE. Patterns should be sepa‐
|
Exclude files that match any pattern in FILE. Patterns should be
|
||||||
rated by a newline.
|
separated by a newline.
|
||||||
|
|
||||||
|
|
||||||
KEYS
|
KEYS
|
||||||
|
|
@ -57,21 +58,21 @@ KEYS
|
||||||
|
|
||||||
a Toggle between showing disk usage and showing apparent size.
|
a Toggle between showing disk usage and showing apparent size.
|
||||||
|
|
||||||
d Delete the selected file or directory. An error message will be shown
|
d Delete the selected file or directory. An error message will be
|
||||||
when the contents of the directory do not match or do not exist anymore
|
shown when the contents of the directory do not match or do not
|
||||||
on the filesystem.
|
exist anymore on the filesystem.
|
||||||
|
|
||||||
t Toggle dirs before files when sorting.
|
t Toggle dirs before files when sorting.
|
||||||
|
|
||||||
g Toggle between showing percentage, graph, both, or none. Percentage is
|
g Toggle between showing percentage, graph, both, or none. Percentage
|
||||||
relative to the size of the current directory, graph is relative to the
|
is relative to the size of the current directory, graph is relative
|
||||||
largest item in the current directory.
|
to the largest item in the current directory.
|
||||||
|
|
||||||
e Show/hide 'hidden' or 'excluded' files and directories. Please note that
|
e Show/hide 'hidden' or 'excluded' files and directories. Please note
|
||||||
even though you can't see the hidden files and directories, they are
|
that even though you can't see the hidden files and directories,
|
||||||
still there and they are still included in the directory sizes. If you
|
they are still there and they are still included in the directory
|
||||||
suspect that the totals shown at the bottom of the screen are not cor‐
|
sizes. If you suspect that the totals shown at the bottom of the
|
||||||
rect, make sure you haven't enabled this option.
|
screen are not correct, make sure you haven't enabled this option.
|
||||||
|
|
||||||
i Show information about the current selected item.
|
i Show information about the current selected item.
|
||||||
|
|
||||||
|
|
@ -81,44 +82,45 @@ KEYS
|
||||||
|
|
||||||
|
|
||||||
HARD LINKS
|
HARD LINKS
|
||||||
Every disk usage analysis utility has its own way of (not) counting hard links.
|
Every disk usage analysis utility has its own way of (not) counting hard
|
||||||
There does not seem to be any universally agreed method of handling hard links,
|
links. There does not seem to be any universally agreed method of handling
|
||||||
and it is even inconsistent among different versions of ncdu. This section
|
hard links, and it is even inconsistent among different versions of ncdu.
|
||||||
explains what each version of ncdu does.
|
This section explains what each version of ncdu does.
|
||||||
|
|
||||||
ncdu 1.5 and below does not support any hard link detection at all: each link is
|
ncdu 1.5 and below does not support any hard link detection at all: each
|
||||||
considered a separate inode and its size is counted for every link. This means
|
link is considered a separate inode and its size is counted for every link.
|
||||||
that the displayed directory sizes are incorrect when analyzing directories
|
This means that the displayed directory sizes are incorrect when analyzing
|
||||||
which contain hard links.
|
directories which contain hard links.
|
||||||
|
|
||||||
ncdu 1.6 has basic hard link detection: When a link to a previously encountered
|
ncdu 1.6 has basic hard link detection: When a link to a previously encoun‐
|
||||||
inode is detected, the link is considered to have a file size of zero bytes.
|
tered inode is detected, the link is considered to have a file size of zero
|
||||||
Its size is not counted again, and the link is indicated in the browser inter‐
|
bytes. Its size is not counted again, and the link is indicated in the
|
||||||
face with a 'H' mark. The displayed directory sizes are only correct when all
|
browser interface with a 'H' mark. The displayed directory sizes are only
|
||||||
links to an inode reside within that directory. When this is not the case, the
|
correct when all links to an inode reside within that directory. When this
|
||||||
sizes may or may not be correct, depending on which links were considered as
|
is not the case, the sizes may or may not be correct, depending on which
|
||||||
"duplicate" and which as "original". The indicated size of the topmost directory
|
links were considered as "duplicate" and which as "original". The indicated
|
||||||
(that is, the one specified on the command line upon starting ncdu) is always
|
size of the topmost directory (that is, the one specified on the command
|
||||||
correct.
|
line upon starting ncdu) is always correct.
|
||||||
|
|
||||||
ncdu 1.7 has improved hard link detection. Each file that has more than two
|
ncdu 1.7 has improved hard link detection. Each file that has more than two
|
||||||
links has the "H" mark visible in the browser interface. Each hard link is
|
links has the "H" mark visible in the browser interface. Each hard link is
|
||||||
counted exactly once for every directory it appears in. The indicated size of
|
counted exactly once for every directory it appears in. The indicated size
|
||||||
each directory is therefore, correctly, the sum of the sizes of all unique
|
of each directory is therefore, correctly, the sum of the sizes of all
|
||||||
inodes that can be found in that directory. Note, however, that this may not
|
unique inodes that can be found in that directory. Note, however, that this
|
||||||
always be same as the space that will be reclaimed after deleting the directory,
|
may not always be same as the space that will be reclaimed after deleting
|
||||||
as some inodes may still be accessible from hard links outside it.
|
the directory, as some inodes may still be accessible from hard links out‐
|
||||||
|
side it.
|
||||||
|
|
||||||
|
|
||||||
BUGS
|
BUGS
|
||||||
Directory hard links are not supported. They will not be detected as being hard
|
Directory hard links are not supported. They will not be detected as being
|
||||||
links, and will thus be scanned and counted multiple times.
|
hard links, and will thus be scanned and counted multiple times.
|
||||||
|
|
||||||
Some minor glitches may appear when displaying filenames that contain multibyte
|
Some minor glitches may appear when displaying filenames that contain
|
||||||
or multicolumn characters.
|
multibyte or multicolumn characters.
|
||||||
|
|
||||||
Please report any other bugs you may find at the bug tracker, which can be found
|
Please report any other bugs you may find at the bug tracker, which can be
|
||||||
on the web site at http://dev.yorhel.nl/ncdu
|
found on the web site at http://dev.yorhel.nl/ncdu
|
||||||
|
|
||||||
|
|
||||||
AUTHOR
|
AUTHOR
|
||||||
|
|
@ -130,4 +132,4 @@ SEE ALSO
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ncdu-1.8 Nov 3, 2011 ncdu(1)
|
ncdu-1.8 Nov 3, 2011 ncdu(1)
|
||||||
|
|
|
||||||
29
dat/ncdu-scr
Normal file
29
dat/ncdu-scr
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
=pod
|
||||||
|
|
||||||
|
Note: While these screenshots are from version 1.7, the latest version has only
|
||||||
|
little visible changes. Let me also apologise for the crappy formatting, I
|
||||||
|
should take some smaller shots next time...
|
||||||
|
|
||||||
|
=head2 Scanning...
|
||||||
|
|
||||||
|
[img scr ncduscan.png Ncdu scanning a large directory.]
|
||||||
|
|
||||||
|
=head2 Done scanning
|
||||||
|
|
||||||
|
[img scr ncdudone.png Ncdu done scanning a large directory.]
|
||||||
|
|
||||||
|
=head2 Directory information
|
||||||
|
|
||||||
|
[img scr ncduinfo.png Ncdu displaying directory information.]
|
||||||
|
|
||||||
|
=head2 Delete confirmation
|
||||||
|
|
||||||
|
[img scr ncduconfirm.png Ncdu asking for confirmation to delete a file.]
|
||||||
|
|
||||||
|
=head2 Help screen
|
||||||
|
|
||||||
|
[img scr ncduhelp1.png Ncdu help screen.]
|
||||||
|
|
||||||
|
=head2 About screen
|
||||||
|
|
||||||
|
[img scr ncduhelp2.png Ncdu about screen.]
|
||||||
|
|
@ -1,5 +1,9 @@
|
||||||
Multi-threaded Access to an SQLite3 Database
|
Multi-threaded Access to an SQLite3 Database
|
||||||
|
|
||||||
|
=pod
|
||||||
|
|
||||||
|
(Published on B<2011-11-26>. Also available in L<POD|http://dev.yorhel.nl/dat/sqlaccess>.)
|
||||||
|
|
||||||
=head1 Introduction
|
=head1 Introduction
|
||||||
|
|
||||||
As I was porting L<ncdc|http://dev.yorhel.nl/ncdc> over to use SQLite3 as
|
As I was porting L<ncdc|http://dev.yorhel.nl/ncdc> over to use SQLite3 as
|
||||||
|
|
|
||||||
64
dat/tuwf
Normal file
64
dat/tuwf
Normal file
|
|
@ -0,0 +1,64 @@
|
||||||
|
=pod
|
||||||
|
|
||||||
|
TUWF is a very small and lightweight web development framework for Perl. It has
|
||||||
|
evolved from being a few abstraction layers in two large websites to a separate
|
||||||
|
set of modules. While initially designed to be used for large and complex
|
||||||
|
websites, it is also perfectly suited for small single-file websites.
|
||||||
|
|
||||||
|
=head2 Main features
|
||||||
|
|
||||||
|
=over
|
||||||
|
|
||||||
|
=item * Very small, and no extra modules required,
|
||||||
|
|
||||||
|
=item * Easy URI-to-function mapping using regular expressions,
|
||||||
|
|
||||||
|
=item * Handy form validation functions,
|
||||||
|
|
||||||
|
=item * Easy XML/XHTML output generation functions,
|
||||||
|
|
||||||
|
=item * Response buffering and output compression,
|
||||||
|
|
||||||
|
=item * Easy access to GET/POST data and cookies,
|
||||||
|
|
||||||
|
=item * Support for CGI and FastCGI - optimized for FastCGI,
|
||||||
|
|
||||||
|
=item * Uses UTF-8 for all text,
|
||||||
|
|
||||||
|
=item * Convenient SQL execution functions and correct transaction handling,
|
||||||
|
|
||||||
|
=item * Promotes code re-use,
|
||||||
|
|
||||||
|
=item * Open source (duh!) and available under a liberal MIT license.
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
|
Read the L<description|TUWF/DESCRIPTION> in the documentation for more
|
||||||
|
information and details.
|
||||||
|
|
||||||
|
|
||||||
|
=head2 Download
|
||||||
|
|
||||||
|
B<Latest packaged version:> 0.1 ([dllink TUWF-0.1.tar.gz download]
|
||||||
|
- L<CPAN mirror|http://search.cpan.org/dist/TUWF/>)
|
||||||
|
|
||||||
|
TUWF is also available on a git repository at L<http://g.blicky.net/tuwf.git/>.
|
||||||
|
|
||||||
|
|
||||||
|
=head2 Websites using TUWF
|
||||||
|
|
||||||
|
(Not a whole lot)
|
||||||
|
|
||||||
|
=over
|
||||||
|
|
||||||
|
=item * L<VNDB.org|http://vndb.org/> (the site that spawned TUWF - L<open source|http://g.blicky.net/vndb.git/>)
|
||||||
|
|
||||||
|
=item * L<This website|http://dev.yorhel.nl/> (also L<open source|http://g.blicky.net/yorhel-dev.git/tree/index.cgi>)
|
||||||
|
|
||||||
|
=item * L<Blicky.net Pastebin|http://p.blicky.net/> (L<open source|http://g.blicky.net/bpaste.git/tree/index.cgi>)
|
||||||
|
|
||||||
|
=item * The website embedded in the L<D&R Axum|http://www.d-r.nl/AXUM/AXUM.htm> mixing console.
|
||||||
|
|
||||||
|
=item * L<Yorhel.nl|http://yorhel.nl/>
|
||||||
|
|
||||||
|
=back
|
||||||
Loading…
Add table
Add a link
Reference in a new issue