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:
Yorhel 2012-01-17 20:23:53 +01:00
parent ac38865338
commit b7746b3122
16 changed files with 1460 additions and 1423 deletions

35
dat/doc Normal file
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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.

View file

@ -11,116 +11,120 @@ SYNOPSIS
DESCRIPTION DESCRIPTION
Ncdc is a modern and lightweight direct connect client with a friendly ncurses Ncdc is a modern and lightweight direct connect client with a friendly
interface. ncurses interface.
GETTING STARTED GETTING STARTED
This is a basic introduction for those who are new to ncdc. See the chapters This is a basic introduction for those who are new to ncdc. See the chap
below for a more detailed description of the available functionality. ters below for a more detailed description of the available functionality.
What you see when starting up ncdc is an input line where you can input commands What you see when starting up ncdc is an input line where you can input
and a log window where the results are displayed, much like a regular terminal. commands and a log window where the results are displayed, much like a reg
Commands within ncdc start with a slash (e.g. `/help') and have tab completion ular terminal. Commands within ncdc start with a slash (e.g. `/help') and
to help you. have tab completion to help you.
The first thing you will want to do after starting ncdc for the first time is to The first thing you will want to do after starting ncdc for the first time
setup some basic information and settings: is to setup some basic information and settings:
/set nick MyNick /set nick MyNick
/set description ncdc is awesome! /set description ncdc is awesome!
/set connection 10 /set connection 10
/share "My Awesome Files" /path/to/files /share "My Awesome Files" /path/to/files
And if you have a direct connection to the internet or if your router allows And if you have a direct connection to the internet or if your router
port forwarding, you may also want to enable active mode: allows port forwarding, you may also want to enable active mode:
/set active_ip 13.33.33.7 /set active_ip 13.33.33.7
/set active_port 34194 /set active_port 34194
/set active true /set active true
See the help text for each of the commands and settings for more information. See the help text for each of the commands and settings for more informa
Of course, all of the above settings are saved to the database and will be used tion. Of course, all of the above settings are saved to the database and
again on the next run. will be used again on the next run.
To connect to a hub, use /open: To connect to a hub, use /open:
/open ncdc adc://dc.blicky.net:2780/ /open ncdc adc://dc.blicky.net:2780/
Here `ncdc' is the personal name you give to the hub, and the second argument Here `ncdc' is the personal name you give to the hub, and the second argu
the URL. This URL will be saved in the database, so the next time you want to ment the URL. This URL will be saved in the database, so the next time you
connect to this hub, you can simply do: want to connect to this hub, you can simply do:
/open ncdc /open ncdc
See the help text for '/open' and '/connect' for more information. If you want See the help text for '/open' and '/connect' for more information. If you
to automatically connect to a hub when ncdc starts up, use the `autoconnect' want to automatically connect to a hub when ncdc starts up, use the `auto
setting. connect' setting.
Ncdc uses a tabbed interface: every hub opens in a new tab, and there are sev Ncdc uses a tabbed interface: every hub opens in a new tab, and there are
eral other kinds of tabs available as well. The type of tab is indicated in the several other kinds of tabs available as well. The type of tab is indicated
tab list on the bottom of the screen with a character prefix. Hubs, for example, in the tab list on the bottom of the screen with a character prefix. Hubs,
are prefixed with a `#'. If a tab needs your attention, a colored exclamation for example, are prefixed with a `#'. If a tab needs your attention, a col
mark is displayed before the tab name, different colors are used for different ored exclamation mark is displayed before the tab name, different colors
types of activity. are used for different types of activity.
Everything else should be fairly self-explanatory: To search for files, use the Everything else should be fairly self-explanatory: To search for files, use
`/search' command. To browse through the user list of a hub, use `/userlist' or the `/search' command. To browse through the user list of a hub, use
hit Alt+u. To browse someone's file list, use `/browse' or hit the 'b' key in `/userlist' or hit Alt+u. To browse someone's file list, use `/browse' or
the user list. And to monitor your upload and download connections, use `/con hit the 'b' key in the user list. And to monitor your upload and download
nections' or hit Alt+n. connections, use `/connections' or hit Alt+n.
OPTIONS OPTIONS
-c, --session-dir=<dir> -c, --session-dir=<dir>
Use a different session directory. Defaults to the contents of the envi Use a different session directory. Defaults to the contents of the
ronment variable `$NCDC_DIR' or if this is unset to `$HOME/.ncdc'. environment variable `$NCDC_DIR' or if this is unset to
`$HOME/.ncdc'.
-h, --help -h, --help
Display summary of options. Display summary of options.
-n, --no-autoconnect -n, --no-autoconnect
Don't automatically connect to hubs with the `autoconnect' option set. Don't automatically connect to hubs with the `autoconnect' option
set.
-v, --version -v, --version
Display ncdc version. Display ncdc version.
INTERACTIVE COMMANDS INTERACTIVE COMMANDS
The following is the list of commands that can be used within ncdc. The /help The following is the list of commands that can be used within ncdc. The
command can also be used get a list of available commands and to access this /help command can also be used get a list of available commands and to
documentation. access this documentation.
/accept /accept
Use this command to accept the TLS certificate of a hub. This command is Use this command to accept the TLS certificate of a hub. This com
used only in the case the keyprint of the TLS certificate of a hub does mand is used only in the case the keyprint of the TLS certificate of
not match the keyprint stored in the database. a hub does not match the keyprint stored in the database.
/browse [[-f] <user>] /browse [[-f] <user>]
Without arguments, this opens a new tab where you can browse your own Without arguments, this opens a new tab where you can browse your
file list. Note that changes to your list are not immediately visible in own file list. Note that changes to your list are not immediately
the browser. You need to re-open the tab to get the latest version of visible in the browser. You need to re-open the tab to get the lat
your list. est version of your list.
With arguments, the file list of the specified user will be downloaded With arguments, the file list of the specified user will be down
(if it has not been downloaded already) and the browse tab will open once loaded (if it has not been downloaded already) and the browse tab
it's complete. The `-f' flag can be used to force the file list to be will open once it's complete. The `-f' flag can be used to force the
(re-)downloaded. file list to be (re-)downloaded.
/clear /clear
Clears the log displayed on the screen. Does not affect the log files in Clears the log displayed on the screen. Does not affect the log
any way. Ctrl+l is a shortcut for this command. files in any way. Ctrl+l is a shortcut for this command.
/close /close
Close the current tab. When closing a hub tab, you will be disconnected Close the current tab. When closing a hub tab, you will be discon
from the hub and all related userlist and PM tabs will also be closed. nected from the hub and all related userlist and PM tabs will also
Alt+c is a shortcut for this command. be closed. Alt+c is a shortcut for this command.
/connect [<address>] /connect [<address>]
Initiate a connection with a hub. If no address is specified, will con Initiate a connection with a hub. If no address is specified, will
nect to the hub you last used on the current tab. The address should be connect to the hub you last used on the current tab. The address
in the form of `protocol://host:port/' or `host:port'. The `:port' part should be in the form of `protocol://host:port/' or `host:port'. The
is in both cases optional and defaults to :411. The following protocols `:port' part is in both cases optional and defaults to :411. The
are recognized: dchub, nmdc, nmdcs, adc, adcs. When connecting to an following protocols are recognized: dchub, nmdc, nmdcs, adc, adcs.
nmdcs or adcs hub and the SHA256 keyprint is known, you can attach this When connecting to an nmdcs or adcs hub and the SHA256 keyprint is
to the url as `?kp=SHA256/<base32-encoded-keyprint>' known, you can attach this to the url as
`?kp=SHA256/<base32-encoded-keyprint>'
Note that this command can only be used on hub tabs. If you want to open Note that this command can only be used on hub tabs. If you want to
a new connection to a hub, you need to use /open first. For example: open a new connection to a hub, you need to use /open first. For
example:
/open testhub /open testhub
/connect dchub://dc.some-test-hub.com/ /connect dchub://dc.some-test-hub.com/
See the /open command for more information. See the /open command for more information.
@ -132,37 +136,39 @@ INTERACTIVE COMMANDS
Disconnect from a hub. Disconnect from a hub.
/gc /gc
Cleans up unused data and reorganizes existing data to allow more effi Cleans up unused data and reorganizes existing data to allow more
cient storage and usage. Currently, this commands removes unused hash efficient storage and usage. Currently, this commands removes unused
data, does a VACUUM on db.sqlite3, removes unused files in inc/ and old hash data, does a VACUUM on db.sqlite3, removes unused files in inc/
files in fl/. and old files in fl/.
This command may take some time to complete, and will fully block ncdc This command may take some time to complete, and will fully block
while it is running. It is recommended to run this command every once in ncdc while it is running. It is recommended to run this command
a while. Every month is a good interval. Note that when ncdc says that it every once in a while. Every month is a good interval. Note that
has completed this command, it's lying to you. Ncdc will still run a few when ncdc says that it has completed this command, it's lying to
large queries on the background, which may take up to a minute to com you. Ncdc will still run a few large queries on the background,
plete. which may take up to a minute to complete.
/grant [-list|<user>] /grant [-list|<user>]
Grant someone a slot. This allows the user to download from you even if Grant someone a slot. This allows the user to download from you even
you have no free slots. The slot will be granted for as long as ncdc if you have no free slots. The slot will be granted for as long as
stays open or the /ungrant command is used. If you restart ncdc, the user ncdc stays open or the /ungrant command is used. If you restart
will have to wait for a regular slot. Unless, of course, you /grant a ncdc, the user will have to wait for a regular slot. Unless, of
slot again. course, you /grant a slot again.
To get a list of users whom you have granted a slot, use `/grant' without To get a list of users whom you have granted a slot, use `/grant'
arguments or with `-list'. Be warned that using `/grant' without argu without arguments or with `-list'. Be warned that using `/grant'
ments on a PM tab will grant the slot to the user you are talking with. without arguments on a PM tab will grant the slot to the user you
Make sure to use `-all' in that case. are talking with. Make sure to use `-list' in that case.
Note that a granted slot is specific to a single hub. If the same user is Note that a granted slot is specific to a single hub. If the same
also on other hubs, he/she will not be granted a slot on those hubs. user is also on other hubs, he/she will not be granted a slot on
those hubs.
/help [<command>|set <key>|keys [<section>]] /help [<command>|set <key>|keys [<section>]]
To get a list of available commands, use /help without arguments. To get a list of available commands, use /help without arguments.
To get information on a particular command, use /help <command>. To get information on a particular command, use /help <command>.
To get information on a configuration setting, use /help set <setting>. To get information on a configuration setting, use /help set <set
ting>.
To get help on key bindings, use /help keys. To get help on key bindings, use /help keys.
@ -171,45 +177,47 @@ INTERACTIVE COMMANDS
`/set' command, but can only be used on hub tabs. `/set' command, but can only be used on hub tabs.
/hunset [<key>] /hunset [<key>]
This command can be used to reset a per-hub configuration variable back This command can be used to reset a per-hub configuration variable
to its global value. back to its global value.
/kick <user> /kick <user>
Kick a user from the hub. This command only works on NMDC hubs, and you Kick a user from the hub. This command only works on NMDC hubs, and
need to be an OP to be able to use it. you need to be an OP to be able to use it.
/me <message> /me <message>
This allows you to talk in third person. Most clients will display your This allows you to talk in third person. Most clients will display
message as something like: your message as something like:
** Nick is doing something ** Nick is doing something
Note that this command only works correctly on ADC hubs. The NMDC proto Note that this command only works correctly on ADC hubs. The NMDC
col does not have this feature, and your message will be sent as-is, protocol does not have this feature, and your message will be sent
including the /me. as-is, including the /me.
/msg <user> [<message>] /msg <user> [<message>]
Send a private message to a user on the currently opened hub. If no mes Send a private message to a user on the currently opened hub. If no
sage is given, the tab will be opened but no message will be sent. message is given, the tab will be opened but no message will be
sent.
/nick [<nick>] /nick [<nick>]
Alias for `/hset nick' on hub tabs, and `/set nick' otherwise. Alias for `/hset nick' on hub tabs, and `/set nick' otherwise.
/open [-n] <name> [<address>] /open [-n] <name> [<address>]
Opens a new tab to use for a hub. The name is a (short) personal name you Opens a new tab to use for a hub. The name is a (short) personal
use to identify the hub, and will be used for storing hub-specific con name you use to identify the hub, and will be used for storing hub-
figuration. specific configuration.
If you have specified an address or have previously connected to a hub If you have specified an address or have previously connected to a
from a tab with the same name, /open will automatically connect to the hub from a tab with the same name, /open will automatically connect
hub. Use the `-n' flag to disable this behaviour. to the hub. Use the `-n' flag to disable this behaviour.
See /connect for more information on connecting to a hub. See /connect for more information on connecting to a hub.
/password <password> /password <password>
This command can be used to send a password to the hub without saving it This command can be used to send a password to the hub without sav
to the database. If you wish to login automatically without having to ing it to the database. If you wish to login automatically without
type /password every time, use '/hset password <password>'. Be warned, having to type /password every time, use '/hset password <pass
however, that your password will be saved unencrypted in that case. word>'. Be warned, however, that your password will be saved unen
crypted in that case.
/pm <user> [<message>] /pm <user> [<message>]
Alias for /msg Alias for /msg
@ -224,36 +232,38 @@ INTERACTIVE COMMANDS
Reconnect to the hub. When your nick or the hub encoding have been Reconnect to the hub. When your nick or the hub encoding have been
changed, the new settings will be used after the reconnect. changed, the new settings will be used after the reconnect.
This command can also be used on the main tab, in which case all con This command can also be used on the main tab, in which case all
nected hubs will be reconnected. connected hubs will be reconnected.
/refresh [<path>] /refresh [<path>]
Initiates share refresh. If no argument is given, the complete list will Initiates share refresh. If no argument is given, the complete list
be refreshed. Otherwise only the specified directory will be refreshed. will be refreshed. Otherwise only the specified directory will be
The path argument can be either an absolute filesystem path or a virtual refreshed. The path argument can be either an absolute filesystem
path within your share. path or a virtual path within your share.
/say <message> /say <message>
Sends a chat message to the current hub or user. You normally don't have Sends a chat message to the current hub or user. You normally don't
to use the /say command explicitly, any command not staring with '/' will have to use the /say command explicitly, any command not staring
automatically imply `/say <command>'. For example, typing `hello.' in the with '/' will automatically imply `/say <command>'. For example,
command line is equivalent to `/say hello.'. Using the /say command typing `hello.' in the command line is equivalent to `/say hello.'.
explicitly may be useful to send message starting with '/' to the chat, Using the /say command explicitly may be useful to send message
for example `/say /help is what you are looking for'. starting with '/' to the chat, for example `/say /help is what you
are looking for'.
/search [options] <query> /search [options] <query>
Performs a file search, opening a new tab with the results. Performs a file search, opening a new tab with the results.
Available options: Available options:
-hub Search the current hub only. (default) -hub Search the current hub only. (default)
-all Search all connected hubs, except those with `chat_only' set. -all Search all connected hubs, except those with `chat_only'
set.
-le <s> Size of the file must be less than <s>. -le <s> Size of the file must be less than <s>.
-ge <s> Size of the file must be larger than <s>. -ge <s> Size of the file must be larger than <s>.
-t <t> File must be of type <t>. (see below) -t <t> File must be of type <t>. (see below)
-tth <h> TTH root of this file must match <h>. -tth <h> TTH root of this file must match <h>.
File sizes (<s> above) accept the following suffixes: G (GiB), M (MiB) File sizes (<s> above) accept the following suffixes: G (GiB), M
and K (KiB). (MiB) and K (KiB).
The following file types can be used with the -t option: The following file types can be used with the -t option:
1 any Any file or directory. (default) 1 any Any file or directory. (default)
@ -264,54 +274,55 @@ INTERACTIVE COMMANDS
6 img Image files. 6 img Image files.
7 video Video files. 7 video Video files.
8 dir Directories. 8 dir Directories.
Note that file type matching is done using file extensions, and is not Note that file type matching is done using file extensions, and is
very reliable. not very reliable.
/set [<key> [<value>]] /set [<key> [<value>]]
Get or set global configuration variables. Use without arguments to get a Get or set global configuration variables. Use without arguments to
list of all global settings and their current value. Glob-style pattern get a list of all global settings and their current value. Glob-
matching on the settings is also possible. Use, for example, `/set style pattern matching on the settings is also possible. Use, for
color*' to list all color-related settings. example, `/set color*' to list all color-related settings.
See the `/hset' command to manage configuration on a per-hub basis. See the `/hset' command to manage configuration on a per-hub basis.
Changes to the settings are automatically saved to the database, and will Changes to the settings are automatically saved to the database, and
not be lost after restarting ncdc. will not be lost after restarting ncdc.
To get information on a particular setting, use `/help set <key>'. To get information on a particular setting, use `/help set <key>'.
/share [<name> <path>] /share [<name> <path>]
Use /share without arguments to get a list of shared directories. Use /share without arguments to get a list of shared directories.
When called with a name and a path, the path will be added to your share. When called with a name and a path, the path will be added to your
Note that shell escaping may be used in the name. For example, to add a share. Note that shell escaping may be used in the name. For exam
directory with the name `Fun Stuff', you could do the following: ple, to add a directory with the name `Fun Stuff', you could do the
following:
/share "Fun Stuff" /path/to/fun/stuff /share "Fun Stuff" /path/to/fun/stuff
Or: Or:
/share Fun\ Stuff /path/to/fun/stuff /share Fun\ Stuff /path/to/fun/stuff
The full path to the directory will not be visible to others, only the The full path to the directory will not be visible to others, only
name you give it will be public. An initial `/refresh' is done automati the name you give it will be public. An initial `/refresh' is done
cally on the added directory. automatically on the added directory.
/ungrant [<username>|<id>] /ungrant [<username>|<id>]
Revoke a granted slot. Revoke a granted slot.
/unset [<key>] /unset [<key>]
This command can be used to reset a global configuration variable back to This command can be used to reset a global configuration variable
its default value. back to its default value.
/unshare [<name>] /unshare [<name>]
To remove a single directory from your share, use `/unshare <name>', to To remove a single directory from your share, use `/unshare <name>',
remove all directories from your share, use `/unshare /'. to remove all directories from your share, use `/unshare /'.
Note that the hash data associated with the removed files will remain in Note that the hash data associated with the removed files will
the database. This allows you to re-add the files to your share without remain in the database. This allows you to re-add the files to your
needing to re-hash them. The downside is that the database file may grow share without needing to re-hash them. The downside is that the
fairly large with unneeded information. See the `/gc' command to clean database file may grow fairly large with unneeded information. See
that up. the `/gc' command to clean that up.
/userlist /userlist
Opens the user list of the currently selected hub. Can also be accessed Opens the user list of the currently selected hub. Can also be
using Alt+u. accessed using Alt+u.
/version /version
Display version information. Display version information.
@ -322,63 +333,66 @@ INTERACTIVE COMMANDS
SETTINGS SETTINGS
The following is a list of configuration settings. These settings can be changed The following is a list of configuration settings. These settings can be
and queried using the `/set' command for global settings and `/hset' for hub- changed and queried using the `/set' command for global settings and
local settings. All configuration data is stored in the db.sqlite3 file in the `/hset' for hub-local settings. All configuration data is stored in the
session directory. db.sqlite3 file in the session directory.
active <boolean> active <boolean>
Enables or disables active mode. Make sure to set `active_ip' and Enables or disables active mode. Make sure to set `active_ip' and
`active_port' before enabling active mode. `active_port' before enabling active mode.
active_bind <string> active_bind <string>
IP address to bind to in active mode. When unset, ncdc will bind to all IP address to bind to in active mode. When unset, ncdc will bind to
interfaces. all interfaces.
active_ip <string> active_ip <string>
Your public IP address for use in active mode. It is important that other Your public IP address for use in active mode. It is important that
clients can reach you using this IP address. If you connect to a hub on other clients can reach you using this IP address. If you connect to
the internet, this should be your internet (WAN) IP. Likewise, if you a hub on the internet, this should be your internet (WAN) IP. Like
connect to a hub on your LAN, this should be your LAN IP. wise, if you connect to a hub on your LAN, this should be your LAN
IP.
Unlike the other connection-related settings, this can be changed on a Unlike the other connection-related settings, this can be changed on
per-hub basis, allowing you to have a different public IP address per a per-hub basis, allowing you to have a different public IP address
hub. per hub.
active_port <integer> active_port <integer>
The listen port for incoming connections in active mode. Set to `0' to The listen port for incoming connections in active mode. Set to `0'
automatically assign a random port. If TLS support is available, another to automatically assign a random port. If TLS support is available,
TCP port will be opened on the configured port + 1. Ncdc will tell you another TCP port will be opened on the configured port + 1. Ncdc
exactly on which ports it is listening for incoming packets. If you are will tell you exactly on which ports it is listening for incoming
behind a router or firewall, make sure that you have configured it to packets. If you are behind a router or firewall, make sure that you
forward and allow these ports. have configured it to forward and allow these ports.
autoconnect <boolean> autoconnect <boolean>
Set to true to automatically connect to the current hub when ncdc starts Set to true to automatically connect to the current hub when ncdc
up. starts up.
autorefresh <interval> autorefresh <interval>
The time between automatic file refreshes. Recognized suffices are 's' The time between automatic file refreshes. Recognized suffices are
for seconds, 'm' for minutes, 'h' for hours and 'd' for days. Set to 0 to 's' for seconds, 'm' for minutes, 'h' for hours and 'd' for days.
disable automatically refreshing the file list. This setting also deter Set to 0 to disable automatically refreshing the file list. This
mines whether ncdc will perform a refresh on startup. See the `/refresh' setting also determines whether ncdc will perform a refresh on
command to manually refresh your file list. startup. See the `/refresh' command to manually refresh your file
list.
backlog <integer> backlog <integer>
When opening a hub or PM tab, ncdc can load a certain amount of lines When opening a hub or PM tab, ncdc can load a certain amount of
from the log file into the log window. Setting this to a positive value lines from the log file into the log window. Setting this to a posi
enables this feature and configures the number of lines to load. Note tive value enables this feature and configures the number of lines
that, while this setting can be set on a per-hub basis, PM windows will to load. Note that, while this setting can be set on a per-hub
use the global value (global.backlog). basis, PM windows will use the global value (global.backlog).
chat_only <boolean> chat_only <boolean>
Set to true to indicate that this hub is only used for chatting. That is, Set to true to indicate that this hub is only used for chatting.
you won't or can't download from it. This setting affects the /search That is, you won't or can't download from it. This setting affects
command when it is given the -all option. the /search command when it is given the -all option.
color_* <color> color_* <color>
The settings starting with the `color_' prefix allow you to change the The settings starting with the `color_' prefix allow you to change
interface colors. The following is a list of available color settings: the interface colors. The following is a list of available color
settings:
list_default - default item in a list list_default - default item in a list
list_header - header of a list list_header - header of a list
list_select - selected item in a list list_select - selected item in a list
@ -395,59 +409,61 @@ SETTINGS
tabprio_high - high priority tab notification color tabprio_high - high priority tab notification color
title - the title bar title - the title bar
The actual color value can be set with a comma-separated list of color The actual color value can be set with a comma-separated list of
names and/or attributes. The first color in the list is the foreground color names and/or attributes. The first color in the list is the
color, the second color is used for the background. When the fore- or foreground color, the second color is used for the background. When
background color is not specified, the default colors of your terminal the fore- or background color is not specified, the default colors
will be used. of your terminal will be used.
The following color names can be used: black, blue, cyan, default, green, The following color names can be used: black, blue, cyan, default,
magenta, red, white and yellow. green, magenta, red, white and yellow.
The following attributes can be used: bold, blink, reverse and underline. The following attributes can be used: bold, blink, reverse and
The actual color values displayed by your terminal may vary. Adding the underline.
`bold' attribute usually makes the foreground color appear brighter as The actual color values displayed by your terminal may vary. Adding
well. the `bold' attribute usually makes the foreground color appear
brighter as well.
connection <string> connection <string>
Set your upload speed. This is just an indication for other users in the Set your upload speed. This is just an indication for other users in
hub so that they know what speed they can expect when downloading from the hub so that they know what speed they can expect when download
you. The actual format you can use here may vary, but it is recommended ing from you. The actual format you can use here may vary, but it is
to set it to either a plain number for Mbit/s (e.g. `50' for 50 mbit) or recommended to set it to either a plain number for Mbit/s (e.g. `50'
a number with a `KiB/s' indicator (e.g. `2300 KiB/s'). On ADC hubs you for 50 mbit) or a number with a `KiB/s' indicator (e.g. `2300
must use one of the previously mentioned formats, otherwise no upload KiB/s'). On ADC hubs you must use one of the previously mentioned
speed will be broadcasted. This setting is broadcasted as-is on NMDC formats, otherwise no upload speed will be broadcasted. This setting
hubs, to allow for using old-style connection values (e.g. `DSL' or is broadcasted as-is on NMDC hubs, to allow for using old-style con
`Cable') on hubs that require this. nection values (e.g. `DSL' or `Cable') on hubs that require this.
description <string> description <string>
A short public description that will be displayed in the user list of a A short public description that will be displayed in the user list
hub. of a hub.
download_dir <path> download_dir <path>
The directory where finished downloads are moved to. Finished downloads The directory where finished downloads are moved to. Finished down
are by default stored in <session directory>/dl/. It is possible to set loads are by default stored in <session directory>/dl/. It is possi
this to a location that is on a different filesystem than the incoming ble to set this to a location that is on a different filesystem than
directory, but doing so is not recommended: ncdc will block when moving the incoming directory, but doing so is not recommended: ncdc will
the completed files to their final destination. block when moving the completed files to their final destination.
download_exclude <regex> download_exclude <regex>
When recursively adding a directory to the download queue - by pressing When recursively adding a directory to the download queue - by
`b' on a directory in the file list browser - any item in the selected pressing `b' on a directory in the file list browser - any item in
directory with a name that matches this regular expression will not be the selected directory with a name that matches this regular expres
added to the download queue. sion will not be added to the download queue.
This regex is not checked when adding individual files from either the This regex is not checked when adding individual files from either
file list browser or the search results. the file list browser or the search results.
download_slots <integer> download_slots <integer>
Maximum number of simultaneous downloads. Maximum number of simultaneous downloads.
email <string> email <string>
Your email address. This will be displayed in the user list of the hub, Your email address. This will be displayed in the user list of the
so only set this if you want it to be public. hub, so only set this if you want it to be public.
encoding <string> encoding <string>
The character set/encoding to use for hub and PM messages. This setting The character set/encoding to use for hub and PM messages. This set
is only used on NMDC hubs, ADC always uses UTF-8. Some common values are: ting is only used on NMDC hubs, ADC always uses UTF-8. Some common
values are:
CP1250 (Central Europe) CP1250 (Central Europe)
CP1251 (Cyrillic) CP1251 (Cyrillic)
CP1252 (Western Europe) CP1252 (Western Europe)
@ -456,39 +472,40 @@ SETTINGS
UTF-8 (International) UTF-8 (International)
filelist_maxage <interval> filelist_maxage <interval>
The maximum age of a downloaded file list. If a file list was downloaded The maximum age of a downloaded file list. If a file list was down
longer ago than the configured interval, it will be removed from the loaded longer ago than the configured interval, it will be removed
cache (the fl/ directory) and subsequent requests to open the file list from the cache (the fl/ directory) and subsequent requests to open
will result in the list being downloaded from the user again. Recognized the file list will result in the list being downloaded from the user
suffices are 's' for seconds, 'm' for minutes, 'h' for hours and 'd' for again. Recognized suffices are 's' for seconds, 'm' for minutes, 'h'
days. Set to 0 to disable the cache altogether. for hours and 'd' for days. Set to 0 to disable the cache alto
gether.
flush_file_cache <none|upload|download|hash>[,...] flush_file_cache <none|upload|download|hash>[,...]
Tell the OS to flush the file (disk) cache for file contents read while Tell the OS to flush the file (disk) cache for file contents read
hashing and/or uploading or written to while downloading. On one hand, while hashing and/or uploading or written to while downloading. On
this will avoid trashing your disk cache with large files and thus one hand, this will avoid trashing your disk cache with large files
improve the overall responsiveness of your system. On the other hand, and thus improve the overall responsiveness of your system. On the
ncdc may purge any shared files from the cache, even if they are still other hand, ncdc may purge any shared files from the cache, even if
used by other applications. In general, it is a good idea to enable this they are still used by other applications. In general, it is a good
if you also use your system for other things besides ncdc, you share idea to enable this if you also use your system for other things
large files (>100MB) and people are not constantly downloading the same besides ncdc, you share large files (>100MB) and people are not con
file from you. stantly downloading the same file from you.
hubname <string> hubname <string>
The name of the currently opened hub tab. This is a user-assigned name, The name of the currently opened hub tab. This is a user-assigned
and is only used within ncdc itself. This is the same name as given to name, and is only used within ncdc itself. This is the same name as
the `/open' command. given to the `/open' command.
incoming_dir <path> incoming_dir <path>
The directory where incomplete downloads are stored. This setting can The directory where incomplete downloads are stored. This setting
only be changed when the download queue is empty. Also see the down can only be changed when the download queue is empty. Also see the
load_dir setting. download_dir setting.
log_debug <boolean> log_debug <boolean>
Log debug messages to stderr.log in the session directory. It is highly Log debug messages to stderr.log in the session directory. It is
recommended to enable this setting if you wish to debug or hack ncdc. Be highly recommended to enable this setting if you wish to debug or
warned, however, that this may generate a lot of data if you're connected hack ncdc. Be warned, however, that this may generate a lot of data
to a large hub. if you're connected to a large hub.
log_downloads <boolean> log_downloads <boolean>
Log downloaded files to transfers.log. Log downloaded files to transfers.log.
@ -497,84 +514,87 @@ SETTINGS
Log file uploads to transfers.log. Log file uploads to transfers.log.
minislots <integer> minislots <integer>
Set the number of available minislots. A `minislot' is a special slot Set the number of available minislots. A `minislot' is a special
that is used when all regular upload slots are in use and someone is slot that is used when all regular upload slots are in use and some
requesting your filelist or a small file. In this case, the other client one is requesting your filelist or a small file. In this case, the
automatically applies for a minislot, and can still download from you as other client automatically applies for a minislot, and can still
long as not all minislots are in use. What constitutes a `small' file can download from you as long as not all minislots are in use. What con
be changed with the `minislot_size' setting. Also see the `slots' config stitutes a `small' file can be changed with the `minislot_size' set
uration setting and the `/grant' command. ting. Also see the `slots' configuration setting and the `/grant'
command.
minislot_size <integer> minislot_size <integer>
The maximum size of a file that may be downloaded using a `minislot', in The maximum size of a file that may be downloaded using a `minis
KiB. See the `minislots' setting for more information. lot', in KiB. See the `minislots' setting for more information.
nick <string> nick <string>
Your nick. Nick changes are only visible on newly connected hubs, use the Your nick. Nick changes are only visible on newly connected hubs,
`/reconnect' command to use your new nick immediately. Note that it is use the `/reconnect' command to use your new nick immediately. Note
highly discouraged to change your nick on NMDC hubs. This is because that it is highly discouraged to change your nick on NMDC hubs. This
clients downloading from you have no way of knowing that you changed your is because clients downloading from you have no way of knowing that
nick, and therefore can't immediately continue to download from you. you changed your nick, and therefore can't immediately continue to
download from you.
password <string> password <string>
Sets your password for the current hub and enables auto-login on connect. Sets your password for the current hub and enables auto-login on
If you just want to login to a hub without saving your password, use the connect. If you just want to login to a hub without saving your
`/password' command instead. Passwords are saved unencrypted in the con password, use the `/password' command instead. Passwords are saved
fig file. unencrypted in the config file.
sendfile <boolean> sendfile <boolean>
Whether or not to use the sendfile() system call to upload files, if sup Whether or not to use the sendfile() system call to upload files, if
ported. Using sendfile() allows less resource usage while uploading, but supported. Using sendfile() allows less resource usage while upload
may not work well on all systems. ing, but may not work well on all systems.
share_exclude <regex> share_exclude <regex>
Any file or directory with a name that matches this regular expression Any file or directory with a name that matches this regular expres
will not be shared. A file list refresh is required for this setting to sion will not be shared. A file list refresh is required for this
be effective. setting to be effective.
share_hidden <boolean> share_hidden <boolean>
Whether to share hidden files and directories. A `hidden' file or direc Whether to share hidden files and directories. A `hidden' file or
tory is one of which the file name starts with a dot. (e.g. `.bashrc'). A directory is one of which the file name starts with a dot. (e.g.
file list refresh is required for this setting to be effective. `.bashrc'). A file list refresh is required for this setting to be
effective.
show_joinquit <boolean> show_joinquit <boolean>
Whether to display join/quit messages in the hub chat. Whether to display join/quit messages in the hub chat.
slots <integer> slots <integer>
The number of upload slots. This determines for the most part how many The number of upload slots. This determines for the most part how
people can download from you simultaneously. It is possible that this many people can download from you simultaneously. It is possible
limit is exceeded in certain circumstances, see the `minislots' setting that this limit is exceeded in certain circumstances, see the `min
and the `/grant' command. islots' setting and the `/grant' command.
tls_policy <disabled|allow|prefer> tls_policy <disabled|allow|prefer>
Set the policy for secure client-to-client connections. Setting this to Set the policy for secure client-to-client connections. Setting this
`disabled' disables TLS support for client connections, but still allows to `disabled' disables TLS support for client connections, but still
you to connect to TLS-enabled hubs. `allow' will allow the use of TLS if allows you to connect to TLS-enabled hubs. `allow' will allow the
the other client requests this, but ncdc itself will not request TLS when use of TLS if the other client requests this, but ncdc itself will
connecting to others. Setting this to `prefer' tells ncdc to also request not request TLS when connecting to others. Setting this to `prefer'
TLS when connecting to others. tells ncdc to also request TLS when connecting to others.
The use of TLS for client connections usually results in less optimal The use of TLS for client connections usually results in less opti
performance when uploading and downloading, but is quite effective at mal performance when uploading and downloading, but is quite effec
avoiding protocol-specific traffic shaping that some ISPs may do. Also tive at avoiding protocol-specific traffic shaping that some ISPs
note that, even if you set this to `prefer', TLS will only be used if the may do. Also note that, even if you set this to `prefer', TLS will
connecting party also supports it. only be used if the connecting party also supports it.
ui_time_format <string> ui_time_format <string>
The format of the time displayed in the lower-left of the screen. Set `-' The format of the time displayed in the lower-left of the screen.
to not display a time at all. The string is passed to the Glib Set `-' to not display a time at all. The string is passed to the
g_date_time_format() function, which accepts roughly the same formats as Glib g_date_time_format() function, which accepts roughly the same
strftime(). Check out the strftime(3) man page or the Glib documentation formats as strftime(). Check out the strftime(3) man page or the
for more information. Note that this setting does not influence the Glib documentation for more information. Note that this setting does
date/time format used in other places, such as the chat window or log not influence the date/time format used in other places, such as the
files. chat window or log files.
KEY BINDINGS KEY BINDINGS
On any tab without the text input line, you can press `?' to get the key bind On any tab without the text input line, you can press `?' to get the key
ings for that tab. The list of key bindings is available through the `/help bindings for that tab. The list of key bindings is available through the
keys' command, and is reproduced below. `/help keys' command, and is reproduced below.
Global key bindings Global key bindings
Alt+j Open previous tab. Alt+j Open previous tab.
@ -646,14 +666,15 @@ KEY BINDINGS
+/- Increase/decrease priority. +/- Increase/decrease priority.
i/Return Toggle user list. i/Return Toggle user list.
r Remove selected user for this file. r Remove selected user for this file.
R Remove selected user from all files in the download queue. R Remove selected user from all files in the download
queue.
x Clear error state for the selected user for this file. x Clear error state for the selected user for this file.
X Clear error state for the selected user for all files. X Clear error state for the selected user for all files.
Note: when an item in the queue has `ERR' indicated in the priority col Note: when an item in the queue has `ERR' indicated in the priority
umn, you have two choices: You can remove the item from the queue using column, you have two choices: You can remove the item from the queue
`d', or attempt to continue the download by increasing its priority using using `d', or attempt to continue the download by increasing its
`+'. priority using `+'.
Search results tab Search results tab
Up/Down Select one item up/down. Up/Down Select one item up/down.
@ -661,7 +682,8 @@ KEY BINDINGS
PgUp/PgDown Select one page of items up/down. PgUp/PgDown Select one page of items up/down.
End/Home Select last/first item in the list. End/Home Select last/first item in the list.
f Find user in user list. f Find user in user list.
b/B Browse the selected users' list, B to force a redownload. b/B Browse the selected users' list, B to force a redown
load.
d Add selected file to the download queue. d Add selected file to the download queue.
h Toggle hub column visibility. h Toggle hub column visibility.
u Order by username. u Order by username.
@ -689,13 +711,14 @@ KEY BINDINGS
i/Return Toggle information box. i/Return Toggle information box.
m Send a PM to the selected user. m Send a PM to the selected user.
g Grant a slot to the selected user. g Grant a slot to the selected user.
b/B Browse the selected users' list, B to force a redownload. b/B Browse the selected users' list, B to force a redown
load.
ENVIRONMENT ENVIRONMENT
$NCDC_DIR is used to determine the session dir, it is only honoured if -c is not $NCDC_DIR is used to determine the session dir, it is only honoured if -c
set on the command line. is not set on the command line.
FILES FILES
@ -703,17 +726,18 @@ FILES
$NCDC_DIR or $HOME/.ncdc. $NCDC_DIR or $HOME/.ncdc.
$NCDC_DIR/cert/ $NCDC_DIR/cert/
Directory where the client certificates are stored. Must contain a pri Directory where the client certificates are stored. Must contain a
vate key file (client.key) and public certificate (client.crt). These private key file (client.key) and public certificate (client.crt).
should be generated automatically when ncdc starts up the first time, but These should be generated automatically when ncdc starts up the
can be generated manually using ncdc-gen-cert(1). first time, but can be generated manually using ncdc-gen-cert(1).
$NCDC_DIR/db.sqlite3 $NCDC_DIR/db.sqlite3
The database. This stores all configuration variables, hash data of The database. This stores all configuration variables, hash data of
shared files, download queue information and other state information. shared files, download queue information and other state informa
Manually editing this file with the `sqlite3' commandline tool is possi tion. Manually editing this file with the `sqlite3' commandline tool
ble but discouraged. Any changes made to the database while ncdc is run is possible but discouraged. Any changes made to the database while
ning will not be read, and may even get overwritten by ncdc. ncdc is running will not be read, and may even get overwritten by
ncdc.
$NCDC_DIR/dl/ $NCDC_DIR/dl/
Directory where completed downloads are moved to by default. Can be Directory where completed downloads are moved to by default. Can be
@ -723,10 +747,10 @@ FILES
Filelist containing a listing of all shared files. Filelist containing a listing of all shared files.
$NCDC_DIR/fl/ $NCDC_DIR/fl/
Directory where downloaded file lists from other users are stored. The Directory where downloaded file lists from other users are stored.
names of the files are hex-encoded user IDs that are used internally by The names of the files are hex-encoded user IDs that are used inter
ncdc. Old file lists are deleted automatically after a configurable nally by ncdc. Old file lists are deleted automatically after a con
interval. See the `filelist_maxage' configuration option. figurable interval. See the `filelist_maxage' configuration option.
$NCDC_DIR/history $NCDC_DIR/history
Command history. Command history.
@ -737,32 +761,32 @@ FILES
base32-encoded TTH root of the completed file. base32-encoded TTH root of the completed file.
$NCDC_DIR/logs/ $NCDC_DIR/logs/
Directory where all the log files are stored. File names starting with Directory where all the log files are stored. File names starting
`#' are hub logs and `~' are user (PM) logs. Special log files are trans with `#' are hub logs and `~' are user (PM) logs. Special log files
fers.log and main.log. are transfers.log and main.log.
ncdc does not have built-in functionality to rotate or compress log files ncdc does not have built-in functionality to rotate or compress log
automatically. When rotating log files manually (e.g. via a cron job), files automatically. When rotating log files manually (e.g. via a
make sure to send the SIGUSR1 signal afterwards to force ncdc to flush cron job), make sure to send the SIGUSR1 signal afterwards to force
the old logs and create or open the new log files. ncdc to flush the old logs and create or open the new log files.
$NCDC_DIR/stderr.log $NCDC_DIR/stderr.log
Error/debug log. This file is cleared every time ncdc starts up. Error/debug log. This file is cleared every time ncdc starts up.
$NCDC_DIR/version $NCDC_DIR/version
Version of the data directory. This file locked while an ncdc instance is Version of the data directory. This file locked while an ncdc
running, making sure that no two ncdc instances work with the same ses instance is running, making sure that no two ncdc instances work
sion directory at the same time. with the same session directory at the same time.
LICENSE LICENSE
Copyright (C) 2011 Yoran Heling <projects@yorhel.nl> Copyright (C) 2011-2012 Yoran Heling <projects@yorhel.nl>
ncdc is distributed under the MIT license, please read the COPYING file for more ncdc is distributed under the MIT license, please read the COPYING file for
information. more information.
BUGS BUGS
Please report bugs or feature requests to projects@yorhel.nl or connect to the Please report bugs or feature requests to projects@yorhel.nl or connect to
development hub at adc://dc.blicky.net:2780/. the development hub at adc://dc.blicky.net:2780/.
AUTHOR AUTHOR

21
dat/ncdc-scr Normal file
View 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
View 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

View file

@ -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

29
dat/ncdu-scr Normal file
View 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.]

View file

@ -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
View 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

1256
index.cgi

File diff suppressed because it is too large Load diff