ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/cvsroot/schmorpforge/genpage
Revision: 1.69
Committed: Mon Jun 21 21:56:05 2010 UTC (14 years ago) by root
Branch: MAIN
Changes since 1.68: +32 -23 lines
Log Message:
make irc configurable

File Contents

# User Rev Content
1 elmex 1.1 #!/usr/bin/perl
2    
3     umask 022;
4    
5     mkdir "software.schmorp.de", 0755;
6     mkdir "software.schmorp.de/pkg", 0755;
7     mkdir "software.schmorp.de/img", 0755;
8     system "rsync -av *.jpg software.schmorp.de/img/";
9    
10 root 1.69 our %IRC = (
11     anyevent => ["irc.perl.org", "#anyevent", "http://mibbit.com/chat/#anyevent\@irc.perl.org"],
12     freenode => ["irc.freenode.org", "#schmorp", "http://webchat.freenode.net/?randomnick=1&channels=schmorp&prompt=1", ", users <tt>schmorp</tt> and <tt>elmex</tt>"],
13     );
14    
15 elmex 1.1 sub hdr($$) {
16     print <<EOF;
17     <?xml version='1.0' encoding='utf-8'?>
18     <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
19     <html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en'>
20     <head>
21     <title>$_[0]</title>
22     <style type='text/css'>
23     body {
24     background: white;
25     color: black;
26     font-family: Arial, Helvetica, sans-serif;
27     font-size: 12pt;
28     }
29    
30     .bg-ede { background: url(/img/ede.jpg) no-repeat; padding: 20px; width: 100%; height: 82px; }
31     .bg-perl { background: url(/img/perl.jpg) no-repeat; padding: 20px; width: 100%; height: 194px; }
32     .bg-bluete { background: url(/img/bluete.jpg) no-repeat; padding: 20px; width: 100%; height: 148px; }
33    
34     a:link { color: #00f; }
35     a:visited { color: #008; }
36     a:hover { color: #800; }
37     a:active { color: #f00; }
38    
39 root 1.48 .back {
40     margin: 0;
41     font-size: 8pt;
42     }
43    
44     h1 {
45     color: #034;
46     }
47     .short-desc {
48     font-weight: bold;
49     padding: 3px 3px 3px 8px;
50     margin: 1em 1px 1px 13px;
51     }
52     h2 {
53     color: #069;
54     font-weight: bold;
55     border: solid red;
56     border-width: 0 0 0 12px;
57     padding: 3px 3px 3px 8px;
58     margin: 1em 1px 1px 1px;
59     }
60     p {
61     padding: 3px 3px 3px 8px;
62     margin: 1em 1px 1px 13px;
63     }
64     h3 { color: #034; }
65     h4 { color: #034; }
66    
67 elmex 1.1 img { display: block; }
68    
69 root 1.48 .resources {
70     margin-left: 13px;
71     margin-right: 13px;
72     padding: 3px 3px 3px 8px;
73     border-spacing: 1px 2px;
74     }
75    
76     .rr {
77     background: #eef;
78     padding: 1px 1em 1px 1ex;
79     }
80    
81     tt.icon {
82     display: block;
83     font-family: "Andale Mono", "Lettergothic", monospace;
84     border: 1px solid #88f;
85     background: #ccf;
86     padding: 1px 1em 1px 1em;
87     margin-right: 0;
88     text-align: center;
89     width: 4en;
90     }
91    
92 elmex 1.1 tt { font-family: "Andale Mono", "Lettergothic", monospace; }
93    
94 root 1.48 .overview {
95     margin-top: 1em;
96     margin-left: 13px;
97     margin-right: 13px;
98     padding: 3px 3px 3px 8px;
99     border-spacing: 1px 2px;
100     }
101    
102     .overview th { border-top: 1px dashed #aaa; vertical-align: top; text-align: left; padding: 0.2ex; }
103     .overview td { border-top: 1px dashed #aaa; vertical-align: top; text-align: left; padding: 0.2ex; }
104 elmex 1.1
105     hr.footer { display: none; }
106     .footer { font-size: 8pt; border-top: 1px solid red; }
107     </style>
108     </head>
109     <body>
110 root 1.9 <p class='back'><a href='/'>Schmorpforge Ta-Sa Software Repository</a></p>
111 elmex 1.1 <h1 class="$_[1]">$_[0]</h1>
112     <div style="text-align: center; float: right; margin-left: 1em; margin-bottom: 1em">
113 root 1.63 <!--
114 root 1.56 <a title="Mach mit!" href="http://www.piratenpartei.de/navigation/politik/unsere-ziele">
115 root 1.55 <img src="http://res.tst.eu/denke_selbst.gif" alt="Werde Pirat!" width="468" height="60" border="0" />
116     </a>
117     <br />
118 root 1.63 -->
119 root 1.41 <a href="http://www.piratenpartei.de/navigation/politik/unsere-ziele">
120 root 1.55 <img src="http://res.tst.eu/piraten1.png" alt="Piratenpartei" width="468" height="60" border="0" />
121 root 1.41 </a>
122     <br />
123 elmex 1.1 <a href="http://www.deliantra.net/">
124     <img src="http://www.deliantra.net/images/deliantra.png" border="0" alt="Deliantra Free MMORPG" style="display: inline"/>
125     <br />
126     The free as in beer, liberal, code &amp; content retro-style graphical MMORPG :)
127     </a>
128     </div>
129     EOF
130     }
131    
132     sub ftr {
133     print <<EOF;
134     <hr class='footer'/>
135     <p class='footer'>
136     Contact for this page: <a href="mailto:schmorpforge\@schmorp.de">Marc Lehmann &lt;schmorpforge\@schmorp.de&gt;</a>.
137     </p>
138     </body>
139     </html>
140     EOF
141     }
142    
143     $_ = <DATA>;
144     for (;defined $_;) {
145     my ($name, @args) = split /\s+/;
146    
147     next unless $name;
148    
149     my $desc = "";
150     $desc .= $_ while (defined ($_ = <DATA>) and !/^\S/);
151     $desc =~ s/^(.*?)\n\s*\n//s
152     or die "malformed desc in $name: $desc";
153    
154     my $short = $1;
155    
156     $index{$name} = "<tr><th id='$name'><a href='pkg/$name.html'>$name</a></th><td>$short</td></tr>";
157    
158     open STDOUT, ">", "software.schmorp.de/pkg/$name.html"
159     or die "software.schmorp.de/pkg/$name.html: $!";
160    
161 root 1.48 my $bg = (grep /cpan/, @args) ? "bg-perl" : "bg-ede";
162     hdr $name, $bg;
163 elmex 1.1
164     print <<EOF;
165 root 1.48 <h2>$name</h1>
166 elmex 1.1 <p class='short-desc'>$short</p>
167    
168     <h2>Blurb</h2>
169     <p class='blurb'>$desc</p>
170 root 1.47 <h2>Resources</h2>
171 root 1.48 <table class='resources'>
172 elmex 1.1 EOF
173 elmex 1.5 if (grep /git/, @args) {
174     print <<EOF;
175 elmex 1.58 <tr><td><tt class="icon">GIT</tt></td><td class='rr'><a href='http://git.ta-sa.org/git/$name/'>Browsable GIT repository '$name'</a></li></tr>
176 root 1.48 <tr><td><tt class="icon">GIT</tt></td><td class='rr'>Read-only GIT checkout: <tt>&#160;git-clone http://git.ta-sa.org/$name.git</tt>
177     </td></tr>
178 elmex 1.58 <!-- <tr><td><tt class="icon">CVS</tt></td><td class='rr'>Contributor CVS access (command requires CVS version &gt;= 1.12.11):<br />
179 elmex 1.33 <tt>cvs -d ":ext;CVS_SERVER=git-cvsserver:USER\@ruth.plan9.de/gitroot/$name.git" co -d $name master</tt>
180 elmex 1.58 </td></tr> -->
181 elmex 1.5 EOF
182     } else {
183     my $modules = $name;
184     $modules = "$1" if grep /modules\((.*)\)/, @args;
185 elmex 1.1
186 elmex 1.5 print <<EOF;
187 root 1.48 <tr><td><tt class="icon">CVS</tt></td><td class='rr'><a href='http://cvs.schmorp.de/$name'>Browsable CVS module '$name'</a></td></tr>
188     <tr><td><tt class="icon">CVS</tt></td><td class='rr'>Anonymous CVS:
189     <tt>&#160;cvs -z3 -d :pserver:anonymous\@cvs.schmorp.de/schmorpforge co $modules</tt>
190 elmex 1.1
191     <small>
192    
193 root 1.30 <!--
194 elmex 1.1 <p>The warning
195     <b>cvs checkout: warning: cannot write to history file /schmorpforge/CVSROOT/history: Permission denied</b>
196     is expected and harmless, just ignore it. It simply means you have no write access to the repository.
197     </p>
198 root 1.30 -->
199 elmex 1.1
200 root 1.48 <!--
201 elmex 1.1 <p>The CVS server moved again on 2008-02-21, you can use the following
202     (untested) snippet to update your CVS checkout. Run it in the top level
203     checked out directory:</ br>
204    
205     <pre>
206     find . -name CVS | xargs -I% find % -name Root |
207     xargs perl -i -pe 's%:pserver:anonymous\\\@cvs.schmorp.de:636/schmorpforge%:pserver:anonymous\\\@cvs.schmorp.de:/schmorpforge%'</pre>
208     </p>
209 root 1.48 -->
210 elmex 1.1
211     </small>
212    
213 root 1.48 </td></tr>
214 elmex 1.1 EOF
215 elmex 1.5 }
216 elmex 1.1
217 root 1.69 my @irc;
218    
219 root 1.48 print "<tr><td><tt class='icon'>FILE</tt></td><td class='rr'><a href='http://dist.schmorp.de/$name/'>File Releases</a></td></tr>\n"
220 elmex 1.1 if grep /dist/, @args;
221 root 1.48 print "<tr><td><tt class='icon'>CPAN</tt></td><td class='rr'><a href='http://www.cpan.org/modules/by-authors/Marc_Lehmann/'>File Releases (CPAN)</a></td></tr>\n"
222 elmex 1.5 if grep /cpan$/, @args;
223 root 1.48 print "<tr><td><tt class='icon'>CPAN</tt></td><td class='rr'><a href='http://www.cpan.org/modules/by-authors/id/E/EL/ELMEX/'>File Releases (CPAN)</a></td></tr>\n"
224 elmex 1.5 if grep /cpan-elmex/, @args;
225 elmex 1.1 for (@args) {
226 root 1.69 if (/list\((.*?)\)/) {
227 root 1.48 print "<tr><td><tt class='icon'>LIST</tt></td><td class='rr'><a href='http://lists.schmorp.de/mailman/listinfo/" . ($1 || $name) . "'>Mailing List '" . ($1 || $name) . "'</a></td></tr>\n";
228 root 1.47 }
229 root 1.69 if (/irc\((.*?)\)/) {
230     push @irc, $1;
231     }
232     }
233     push @irc, "freenode" unless @irc;
234     for (@irc) {
235     my ($server, $channel, $url, $comment) = @{ $IRC{$_} or die };
236     print "<tr><td><tt class='icon'>IRC</tt></td><td class='rr'>Server <a href='$url'><tt><b>$server</b></tt>, channel <tt>$channel</tt></a>$comment <b>(say hi and <i>wait a few minutes or hours</i>)</b></td></tr>\n";
237 elmex 1.1 }
238 root 1.69
239 root 1.48 print "</table>";
240 elmex 1.1
241 elmex 1.4 if (my @files = grep $_, map /(cvs-co|cvs-pod|git-pod|git-co)\((\S+)\)/ && [$1, $2], @args) {
242 root 1.48 print "<h2>Additional Documents</h2><table class='resources'>";
243 elmex 1.1
244     for (@files) {
245     my ($type, $arg) = @$_;
246    
247     if ($type eq "cvs-co") {
248 root 1.48 print "<tr><td><tt class='icon'>FILE</tt></td><td class='rr'><a href='http://cvs.schmorp.de/$name/$arg'>$arg</a></td></tr>";
249 elmex 1.4
250 elmex 1.1 } elsif ($type eq "cvs-pod") {
251     my ($file, $desc) = $arg =~ /(.*),(.*)/ ? ($1, $2) : ($arg, $arg);
252     $desc ||= "<b>Main Manual Page</b>";
253 root 1.48 print "<tr><td><tt class='icon'>POD</tt></td><td class='rr'><a href='http://pod.tst.eu/http://cvs.schmorp.de/$name/$file'>$desc</a></td></tr>";
254 elmex 1.4
255 elmex 1.3 } elsif ($type eq 'git-co') {
256 root 1.48 print "<tr><td><tt class='icon'>FILE</tt></td><td class='rr'><a href='http://git.ta-sa.org/$name/$arg'>$arg</a></td>";
257 elmex 1.5
258 elmex 1.4 } elsif ($type eq "git-pod") {
259     my ($file, $desc) = $arg =~ /(.*),(.*)/ ? ($1, $2) : ($arg, $arg);
260     $desc ||= "<b>Main Manual Page</b>";
261 root 1.48 print "<tr><td><tt class='icon'>POD</tt></td><td class='rr'><a href='http://pod.tst.eu/http://git.ta-sa.org/$name/$file'>$desc</a></td></tr>";
262 elmex 1.4
263 elmex 1.1 }
264     }
265    
266 root 1.48 print "</table>";
267 elmex 1.1 }
268    
269     ftr;
270     }
271    
272     open STDOUT, ">software.schmorp.de/index.html";
273    
274 root 1.48 hdr "Project List", "bg-bluete";
275 elmex 1.1
276     print <<EOF;
277    
278 root 1.48 <h2>About</h2>
279     <p class='blurb'>This page briefly documents the Schmorpforge Ta-Sa Software Repository and
280 elmex 1.1 lists all projects available here.</p>
281    
282 root 1.48 <table class='resources'>
283 root 1.50 <tr><td><tt class='icon'>CVS</tt></td><td class='rr'>All CVS modules can be browsed <a href="http://cvs.schmorp.de/">here</a></td></tr>
284     <tr><td><tt class='icon'>GIT</tt></td><td class='rr'>All GIT repositories can be found <a href="http://git.ta-sa.org/">here</a></td></tr>
285     <tr><td><tt class='icon'>FILE</tt></td><td class='rr'>All file releases can be found <a href="http://dist.schmorp.de/">here</a> or on CPAN (for Perl modules)</td></tr>
286     <tr><td><tt class='icon'>LIST</tt></td><td class='rr'>All mailinglists can be found <a href="http://lists.schmorp.de/mailman/listinfo">here</a></td></tr>
287     <!--<tr><td><tt class='icon'>WIKI</tt></td><td class='rr'>The Wiki can be found <a href="http://wiki.schmorp.de/">here</a></td></tr>-->
288 root 1.69 <tr><td><tt class='icon'>IRC</tt></td><td class='rr'>Server <a href='http://webchat.freenode.net/?randomnick=1&amp;channels=schmorp&amp;prompt=1'><tt><b>irc.freenode.net</b></tt>, channel <tt>#schmorp</tt></a>, users <tt>schmorp</tt> and <tt>elmex</tt> <b>(say hi and <i>wait a few minutes or hours</i>)</b><br/>Other project-specific IRC servers are listed on their respective project page.</td></tr>
289 root 1.50 EOF
290    
291     print <<EOF;
292 root 1.48 </table>
293    
294     <h2>Project List</h2>
295     <table class='overview'>
296 elmex 1.1 EOF
297    
298     print $index{$_} for sort { (lc $a) cmp (lc $b) } keys %index;
299    
300     print "</table>";
301     ftr;
302    
303     __DATA__
304     rxvt-unicode dist list(rxvt-unicode) cvs-pod(doc/rxvt.1.pod,) cvs-pod(doc/rxvt.7.pod,FAQ) cvs-pod(src/urxvt.pm,Perl) cvs-co(Changes)
305     rxvt-unicode is a clone of the well known terminal emulator rxvt.
306    
307     <p>If you have a problem, please have a look at the
308     <a href="http://cvs.schmorp.de/rxvt-unicode/doc/rxvt.7.html">FAQ</a>
309     <em>first</em>.</p>
310    
311     Its main features (many of them unique) over rxvt are:
312    
313     <ul>
314     <li>Stores text in Unicode (either UCS-2 or UCS-4).</li>
315     <li>Uses locale-correct input, output and width: as long as your system supports the locale,
316     rxvt-unicode will display correctly.</li>
317     <li>Daemon mode: one daemon can open multiple windows on multiple displays, which
318     improves memory usage and startup time considerably.</li>
319     <li>Embedded perl, for endless customization and improvement opportunities, such as:
320     <ul>
321     <li>Tabbed terminal support.</li>
322     <li>Regex-driven customisable selection that can properly select shell arguments, urls etc.</li>
323     <li>Selection-transformation and option popup menus.</li>
324     <li>Automatically transforming the selection once made.</li>
325     <li>Incremental scrollback buffer search.</li>
326     <li>Automatic URL-underlining and launching.</li>
327     <li>Remote pastebin, digital clock, block graphics to ascii filter and
328     whatever you like to implement for yourself.</li>
329     </ul>
330     </li>
331     <li>Crash-free. At least I try, but rxvt-unicode certainly crashes much less often than
332     rxvt and its many clones, and reproducible bugs get fixed immediately.</li>
333     <li>Completely flicker-free.</li>
334     <li>Re-wraps long lines instead of splitting or cutting them on resizes.</li>
335     <li>Full combining character support (unlike xterm :).</li>
336     <li>Multiple fonts supported at the same time: No need to choose between
337     nice japanese and ugly latin, or no japanese and nice latin characters :).</li>
338     <li>Supports Xft and core fonts in any combination.</li>
339     <li>Can easily be embedded into other applications.</li>
340     <li>All documentation accessible through manpages.</li>
341     <li>Locale-independent XIM support.</li>
342     <li>Many small improvements, such as improved and corrected terminfo, improved secondary screen modes,
343     italic and bold font support, tinting and shading.</li>
344     <li>Encapsulation of privileged operations in a separate process (improves security).</li>
345     <li>Optimised for local <i>and</i> remote connections.</li>
346     </ul>
347    
348     <br />
349     And its main <em>missing</em> features (which users request but are not (yet?) implemented) are:
350    
351     <ul>
352     <li>Complex script support, such as arabic or tibetian - more info is needed. (use mlterm)</li>
353     <li>Right-to-Left rendering - more info is needed. (use mlterm)</li>
354     <li>IIIMF (Intranet/Internet Input Method Framework) support. (use scim)</li>
355     </ul>
356    
357     <br />
358    
359     There is an IRC channel for discussion on <a
360     href='irc://irc.freenode.net/rxvt-unicode'><tt>irc.freenode.net
361     #rxvt-unicode</tt></a>.
362    
363 root 1.47 libptytty dist list(rxvt-unicode) cvs-pod(doc/libptytty.3.pod) cvs-co(Changes)
364 elmex 1.1 libptytty is an offspring of rxvt-unicode that handles pty/tty/utmp/wtmp/lastlog handling
365     in mostly OS-independent ways, so it's less of a hassle for you :)
366    
367 root 1.36 gtkbfc cvs-pod(README)
368 elmex 1.1 Gtk+ bash file chooser replacement.
369    
370     <b>gtkbfc</b> is a hack that replaces the dreaded, slow and hard-to-use GTK+
371     file chooser by a rxvt-unicode window with a little script that lets you use
372     readline tab-completion to enter filenames.
373    
374     Again, its a dire hack and will not work with all programs. It does work
375     for gimp, firefox, gedit at least, though.
376    
377 root 1.69 Async-Interrupt cpan cvs-pod(Interrupt.pm,) cvs-co(Changes) list(anyevent) irc(anyevent)
378 root 1.42 Allow C/XS libraries to interrupt perl asynchronously.
379    
380     This is a module implementing a rarely-needed, very advanced technique
381     to interrupt a running perl interpreter from another thread, or similar,
382     context, at very low overhead.
383    
384 elmex 1.1 CV cpan cvs-pod(bin/cv,) cvs-co(Changes)
385     Gtk2::CV is a perl module that implements an image viewer.
386    
387     It comes with its own demo app, named <tt>cv</tt>, which is loosely
388     modeled after the classic <tt>xv</tt>, although it displays images much
389     faster than the great original. Stable releases are also found on CPAN.
390    
391     kgsueme cpan list(kgsueme) cvs-co(Changes)
392     This perl module is about reverse engineering the
393     <a href="http://cvs.schmorp.de/kgsueme/doc/protocol.html">protocol</a>
394     (<a href="http://cvs.schmorp.de/kgsueme/doc/protocol.xml">xml source</a>)
395     of the popular <a href="http://kgs.kiseido.com">Kiseido Go Server</a>.
396    
397     It features a sample Gtk+2 client (<a
398     href="http://kgsueme.schmorp.de/screenshot.jpg">screenshot</a>), a gtp
399     and a igs interface. It mostly focuses on documenting the protocol and
400     delivering a stable reference implementation which makes it easy to write
401     your own clients, bots and so on. It also contains Gtk2 modules for
402     KGS-independent rendering of beautiful Go boards. For a introduction to
403     the game of go, look <a href="http://playgo.to/interactive/">here</a>.
404    
405     Net-Knuddels cvs-pod(Net/Knuddels.pm,)
406     This perl module provides an API for group communications using the
407     <a href="http://www.knuddels.de/">www.knuddels.de</a> protocol. It is outdated
408     and only provided as reference.
409    
410     This module implements the knuddels.de chat protocol. Since it was created
411     the protocol changed in unknown ways, so this module no longer works. It is
412     provided as reference, though, in case the protocol didn't change much,
413     so one can learn about the protocol.
414     It could be used to write Knuddels clients, bots and even servers
415     (although the latter doesn't make much sense, the protocol is rather
416     ugly. If you want to implement your own group communication server, use
417     IRC instead).
418    
419 root 1.69 AnyEvent-IRC cpan-elmex git-pod(lib/AnyEvent/IRC.pm,) git-co(Changes) git-co(samples/anyeventirccl) git-co(samples/anyeventirc) list(anyevent) irc(anyevent)
420 elmex 1.1 This module provides an alternative to the Net-IRC and Net-IRC2
421 elmex 1.35 modules. Its design rationale is offering a 100% non-blocking
422 elmex 1.1 callback-based interface, RFC-compliant parsing and a lightweight
423     approach to modularity and reusability.
424    
425 root 1.37 Guard cpan cvs-pod(Guard.pm,) cvs-co(Changes)
426     This small module implements scope and object guards, that is, code blocks
427     that are executed when a scope is being exited (or an object is destroyed).
428    
429     Much effort was invested into these guards behaving "sensibly" in the
430     presence of thrown exceptions, errors and other adverse conditions, as
431     well as into good performance.
432    
433 root 1.67 common-sense cpan cvs-pod(sense.pm,) cvs-co(Changes)
434 root 1.66 This module implements some sane defaults for Perl programs, as defined
435     by two typical (or not so typical - use your common sense) specimens of
436     Perl coders.
437    
438 elmex 1.1 Net-IRC-Server cvs-pod(Net/IRC/Server.pm,)
439     This module provides a simple API for handling the IRC Protocol
440     aiming at implementing lightweight IRC-Servers.
441    
442     PApp-SQL cpan cvs-pod(SQL.pm,)
443     Absolutely easy yet fast and powerful SQL access.
444    
445     This module wraps the DBI prepare/bind/execute calls into a single "sql_exec" call,
446     complete with statement caching, so you get the efficiency of prepare, the safety
447     of using placeholders and the speed of bound result values in a simple call.
448    
449     Example:
450    
451     <pre>
452     my $st = sql_exec \my ($id, $name),
453     "select id, name from db where name like %",
454     "pfx%";
455     while ($st->fetch) {
456     print "$id $name\n";
457     }
458     </pre>
459    
460     libcoro cvs-co(README) cvs-co(coro.h)
461     This C-library implements coroutines (cooperative multitasking) in a
462     portable fashion.
463    
464     As long as your system implements the <tt>ucontext</tt> (Unix) or the
465     older <tt>sigaltstack</tt> interfaces it should work out of the box, with
466     minimal configuration (it consists of only a single <tt>.h</tt> and a
467     single <tt>.c</tt> file). It is known to run on a wide variety of unix
468     systems (SunOS, IRIX, GNU/Linux, HP-UX) and also on Windows, does not use
469     any assembly language and is architecture-independent.
470    
471 root 1.13 deliantra/server cvs-co(README) cvs-co(Changes) cvs-co(COPYING.Affero)
472 elmex 1.1 The <a href="http://www.deliantra.net/">Deliantra</a> game server.
473    
474     Follow the link to <a href="http://www.deliantra.net/">Deliantra</a> for background info.
475    
476 root 1.13 deliantra/maps cvs-co(Changes) cvs-co(COPYING.Affero)
477 elmex 1.1 The <a href="http://www.deliantra.net/">Deliantra</a> game maps.
478    
479     Follow the link to <a href="http://www.deliantra.net/">Deliantra</a> for background info.
480    
481 root 1.13 deliantra/arch cvs-co(Changes) cvs-co(COPYING.Affero)
482 elmex 1.1 The <a href="http://www.deliantra.net/">Deliantra</a> game resources.
483    
484     Follow the link to <a href="http://www.deliantra.net/">Deliantra</a> for background info.
485    
486 root 1.13 deliantra/Deliantra-Client cvs-pod(bin/deliantra,) cvs-co(Changes)
487 elmex 1.1 A modern, fullscreen client for <a href="http://www.deliantra.net/">Deliantra</a>, written using Perl
488     and leveraging only OpenGL for display and thus being easily portable.
489     See its <a href="http://www.deliantra.net/client.html">homepage</a>.
490    
491     To install it, you need <a href="http://www.libsdl.org">SDL</a>, <a href="http://www.libsdl.org/projects/SDL_mixer/">SDL_mixer</a>,
492     <a href="http://www.libsdl.org/projects/SDL_image/">SDL_image</a>, <a href="http://www.pango.org">PanGo</a> (with freetype2 and
493     cairo backends at the moment), and the BDB, AnyEvent, Pod::POM, EV and
494 root 1.13 <a href="http://software.schmorp.de/pkg/deliantra/Deliantra.html">Deliantra</a> perl modules.
495 elmex 1.1
496 root 1.13 deliantra/Deliantra
497 elmex 1.1 Perl module family for the <a href="http://www.deliantra.net/">Deliantra</a> game.
498    
499     They can be used to read/write/cache archetypes, image packs and map files.
500     Follow the link to <a href="http://www.deliantra.net/">Deliantra</a> for background info.
501    
502 elmex 1.35 deliantra/gde cvs-pod(bin/gde,)
503 elmex 1.1 The <a href="http://www.deliantra.net/">Deliantra</a> editor, written in Perl + Gtk2.
504    
505     The editor for the game Deliantra, written in Perl.
506     Follow the link to <a href="http://www.deliantra.net/">Deliantra</a> for background info.
507    
508 root 1.13 deliantra
509 elmex 1.1 <a href="http://www.deliantra.net/">Deliantra</a> server, archetypes, maps,
510     editor, client and support modules distribution.
511    
512     Follow the link to <a href="http://www.deliantra.net/">Deliantra</a> for background info.
513    
514     cfmaps
515     This is a collection of scripts that I use to create the <a
516     href="http://www.deliantra.net/">Deliantra</a> maps at <a
517     href="http://maps.deliantra.net/">maps.deliantra.net</a>.
518    
519     They are not documented and somewhat specialised, but the scripts might
520     be of some use.
521    
522     Faster cpan cvs-pod(Faster.pm,)
523     A perl module that makes perl run, well, faster, using a very primitive just in time compiler.
524    
525     As the name implies, using this module makes your perl program run
526     faster. Actually, much slower initially, as it compiles every function
527     to C and later to a shared object, but then you can expect a performance
528     increase by 10-50%, depending on what your program does.
529    
530 root 1.34 liblzf cvs-co(README) cvs-co(lzf.h) dist
531 elmex 1.1 LibLZF is a very small data compression library.
532    
533     It consists of only two .c and two .h files and is very easy to
534     incorporate into your own programs. The compression algorithm is very,
535     very fast, yet still written in portable C. More info and the latest
536     release can be found at the <a href="http://liblzf.plan9.de">LibLZF
537     Homepage</a>.
538    
539     root-tail cvs-co(README) cvs-co(Changes)
540     Full-featured program to print text directly to the X11 root window.
541    
542     More info, screenshots, documentation and current releases can be found
543     at the <a href="http://root-tail.plan9.de">root-tail homepage</a>.
544    
545     xcb cvs-co(README) cvs-co(Changes)
546     A fork of the unmaintained xcb (x cut buffers) program implementing better i18n.
547    
548     lmainit cvs-co(NEWS)
549     A sysvinit replacement that can even be configured to be sysvinit-compliant.
550    
551 root 1.54 See <a href="http://home.schmorp.de/marc/lmainit.html">its homepage</a> for more info.
552 elmex 1.1
553     Algorithm-FEC cpan cvs-pod(FEC.pm,) cvs-co(README.fec) cvs-co(Changes)
554     Perl module implementing forward error correction using Vandermonde matrices
555    
556 root 1.69 AnyEvent cpan cvs-pod(lib/AnyEvent.pm,) cvs-pod(lib/AnyEvent/Intro.pod,Introduction/Tutorial) cvs-pod(lib/AE.pm,AE) cvs-co(Changes) cvs-pod(lib/AnyEvent/Util.pm,AnyEvent::Util) cvs-pod(lib/AnyEvent/Handle.pm,AnyEvent::Handle) cvs-pod(lib/AnyEvent/Socket.pm,AnyEvent::Socket) cvs-pod(lib/AnyEvent/DNS.pm,AnyEvent::DNS) cvs-pod(lib/AnyEvent/Impl/EV.pm,AnyEvent::Impl::EV) cvs-pod(lib/AnyEvent/Impl/Event.pm,AnyEvent::Impl::Event) cvs-pod(lib/AnyEvent/Impl/Glib.pm,AnyEvent::Impl::Glib) cvs-pod(lib/AnyEvent/Impl/Tk.pm,AnyEvent::Impl::Tk) cvs-pod(lib/AnyEvent/Impl/Perl.pm,AnyEvent::Impl::Perl) cvs-pod(lib/AnyEvent/Impl/Qt.pm,AnyEvent::Impl::Qt) cvs-pod(lib/AnyEvent/Impl/EventLib.pm,AnyEvent::Impl::EventLib) cvs-pod(lib/AnyEvent/Impl/Irssi.pm,AnyEvent::Impl::Irssi) cvs-pod(lib/AnyEvent/Impl/IOAsync.pm,AnyEvent::Impl::IOAsync) cvs-pod(lib/AnyEvent/Impl/POE.pm,AnyEvent::Impl::POE) list(anyevent) irc(anyevent)
557 elmex 1.1 This module offers a simple API for I/O, timer, signal, child process
558     and completion events, independent of a specific event loop.
559    
560 root 1.39 <p>This module allows module authors to use those events internally
561     without forcing users of the module to use a specific event loop, without
562     adding noticable overhead. Currently supported event loops are EV, Event,
563 root 1.52 Glib/Gtk2, Tk, Qt, Event::Lib, Irssi, IO::Async and POE (and thus also
564     WxWidgets and Prima). It also comes with a very fast (see benchmarks in
565     the main manual page) Pure Perl event loop and doesn't rely on XS, which
566     ensures that your program will always run even when no C-based event loop
567     is available.</p>
568 elmex 1.1
569 root 1.26 <p>In addition to the event core (which might be all you need), AnyEvent
570 root 1.25 comes with an optional, fully asynchronous, pure-perl DNS resolver
571     library supporting UDP, TCP and EDNS0, with many utility functions to
572     "just resolve" stuff without having to instantiate even a resolver object
573 root 1.26 (and including an equivalent of C<getaddrinfo>).</p>
574 root 1.25
575 root 1.26 <p>The AnyEvent::Socket offers utility functions to make handling TCP
576 root 1.25 connections (100% non-blocking, including DNS resolution, with both IPv4
577     and IPv6) and addresses as easy as possible, to the point of making IPv6
578 root 1.26 completely transparent.</p>
579 root 1.25
580 root 1.26 <p>Lastly, AnyEvent::Handle offers a powerful framework for asynchronous and
581 root 1.25 buffered protocol handling. You can push multiple read event handlers
582     to parse your protocol and start TLS/SSL negotiation transparently (and
583 root 1.26 fully non-blocking) at any time, in both server and client mode.</p>
584 root 1.25
585 root 1.69 AnyEvent-FastPing cpan cvs-pod(FastPing.pm,) list(anyevent) irc(anyevent)
586 elmex 1.1 This module implements a very fast and relatively flexible
587     ping (ping as in icmp echo request).
588    
589     This module allows you to quickly send ipv4 and ipv6 pings at a defined
590     rate to whole address ranges. It is fully event-driven (doesn't block
591     the perl interpreter) and can easily generate hundreds of thousands of
592     pings per second. Target specification is done by specifying one or
593     more address ranges, to which pings will be distributed according to a
594     least-load principle.
595    
596     A command line utility (<tt>fastping</tt>) is included.
597    
598 root 1.69 AnyEvent-HTTP cpan cvs-pod(HTTP.pm,) cvs-co(Changes) list(anyevent) irc(anyevent)
599 root 1.31 A simple and plain event based http and https client.
600    
601     This module implements a simple, stateless and non-blocking HTTP
602     client. It supports GET, POST and other request methods, cookies and more,
603     all on a very low level. It can follow redirects supports proxies and
604     automatically limits the number of connections to the values specified in
605     the RFC.
606    
607     It should generally be a "good client" that is enough for most HTTP
608     tasks. Simple tasks should be simple, but complex tasks should still be
609     possible as the user retains control over request and response headers.
610    
611     The caller is responsible for authentication management, cookies (if
612     the simplistic implementation in this module doesn't suffice), referer
613     and other high-level protocol details for which this module offers only
614     limited support.
615    
616 root 1.69 AnyEvent-MP cpan cvs-pod(MP.pm,) cvs-pod(MP/Intro.pod,Introduction/Tutorial) cvs-co(Changes) list(anyevent) irc(anyevent)
617 elmex 1.59 This Perl module (-family) implements a simple message passing framework for Perl.
618    
619     Despite its simplicity, you can securely message other processes running
620     on the same or other hosts.
621    
622     For an introduction to this module family, see the Intro manual page.
623    
624 root 1.69 Coro-MP cpan cvs-pod(MP.pm,) cvs-co(Changes) list(anyevent) irc(anyevent)
625 root 1.62 This Perl module extends the AnyEvent::MP API with a thread-like/erlang-style API.
626    
627     This module implements a thread-like API to AnyEvent::MP that is closer
628     to Erlang than the event-based AnyEvent::MP API. It integrates well into
629     AnyEvent::MP.
630    
631     See the AnyEvent::MP module and tutorial for info about the concepts used
632     in AnyEvent::MP.
633    
634 root 1.69 AnyEvent-DBI cpan cvs-pod(DBI.pm,) cvs-co(Changes) list(anyevent) irc(anyevent)
635 root 1.31 A relatively simple wrapper around DBI to make asynchronous
636     SQL requests.
637    
638     This module implements asynchronous DBI access my forking or executing
639     separate "DBI-Server" processes and sending them requests.
640    
641     It means that you can run DBI requests in parallel to other tasks.
642    
643 root 1.69 AnyEvent-HTTPD cpan-elmex git-pod(lib/AnyEvent/HTTPD.pm,) git-co(Changes) list(anyevent) irc(anyevent)
644 root 1.31 A simple and plain event based http web application server Perl module.
645    
646     This is a very basic HTTP server that allows the user/programmer to install
647     hooks for URL paths to generate the output. It uses AnyEvent to be easily
648     embeddable into other applications. The main objective was to make it
649     easier to make simple HTTP frontends in Perl for Perl programs and Perl modules.
650    
651 root 1.69 AnyEvent-Feed cpan-elmex git-pod(lib/AnyEvent/Feed.pm,) git-co(Changes) list(anyevent) irc(anyevent)
652 elmex 1.58 A RSS/Atom Feed aggregator.
653    
654     This module uses AnyEvent::HTTP and XML::Feed to fetch and parse RSS and Atom
655     feeds. It provides aggregation (detecting of new entries) to provide an easy
656     interface for simple feed readers.
657    
658 root 1.69 AnyEvent-Twitter cpan-elmex git-pod(lib/AnyEvent/Twitter.pm,) git-co(Changes) list(anyevent) irc(anyevent)
659 elmex 1.58 Implementation of the Twitter API for AnyEvent.
660    
661     Provides a simple non-blocking API to access information (aka tweets) provided
662     by <a href="http://www.twitter.com">Twitter</a>.
663    
664 root 1.69 AnyEvent-IGS cpan-elmex git-pod(lib/AnyEvent/IGS.pm,) git-co(Changes) list(anyevent) irc(anyevent)
665 root 1.31 A Perl module that interfaces to the International Go Server.
666    
667     This module is an Anyevent-based interface to the International Go Server
668     protocol.
669    
670 root 1.69 AnyEvent-EditText cpan-elmex git-pod(lib/AnyEvent/EditText.pm,) git-co(Changes) list(anyevent) irc(anyevent)
671 root 1.44 A Perl module which allows editing any text via an editor in a separate process.
672 root 1.31
673     A utility Perl module that will start a terminal/editor for you and will
674     wait non-blocking for you to finish editing that file. Very useful to embed
675     content edititing in event based programs that have a AnyEvent compatible
676     event loop.
677    
678 root 1.41 Array-Heap cpan cvs-pod(Heap.pm,) cvs-co(Changes)
679     A Perl module that implements C++ STL-like binary heap operations.
680    
681 elmex 1.1 Audio-Play-MPG123 cpan cvs-pod(MPG123.pm,) cvs-co(Changes)
682     A Perl module implementing an interface to mpg123.
683    
684 elmex 1.64 BK git-pod(lib/BK.pm,) git-pod(lib/BK/News.pod,News) git-co(Changes) git-pod(lib/BK/Client.pm,BK::Client) git-pod(lib/BK/Backend.pm,BK::Backend)
685     Bummskraut is a distributed chat/messaging client framework written in Perl
686     using <a href="/pkg/AnyEvent-MP.html">AnyEvent::MP</a>.
687    
688     For more documentation please consult the main manpage (see below). If you
689     want to check on the latest news proceed to the news or changelog (see also
690     below).
691    
692 elmex 1.1 Compress-LZV1 cpan cvs-pod(LZV1.pm,) cvs-co(Changes)
693     A Perl module implementing the LZV1 compression algorithm. See
694     <tt>Compress::LZF</tt> for a better algorithm and module.
695    
696 root 1.53 Compress-LZF cpan cvs-pod(LZF.pm,) cvs-co(Changes)
697     A Perl module implementing the LZF compression algorithm, and simple
698     to use data structure serialising.
699    
700 elmex 1.1 Convert-CD cvs-pod(lib/Convert/CD.pm,) cvs-pod(bin/cvtiso,cvtiso) cvs-co(doc/) cvs-co(Changes)
701     Unfinished Perl project implementing CD image formats. Extracting ISO images
702     already works.
703    
704     Convert-Scalar cpan cvs-pod(Scalar.pm,) cvs-co(Changes)
705     Perl module to convert between different representations of Perl scalars.
706    
707     Convert-UUlib cpan cvs-pod(UUlib.pm,) cvs-co(Changes)
708     Perl interface to the uulib library (a.k.a. uudeview/uuenview), which
709     allows easy decoding of multipart mime, uuencode and a whole lot of
710     differently encoded messages. You basically throw files at it, and
711     it extracts the files in them. This module is used by the popular <a
712     href="www.amavis.org">amavis virus scanner</a>.
713    
714 root 1.69 Coro cpan cvs-co(Changes) cvs-pod(Coro.pm,) cvs-pod(Coro/AIO.pm,Coro::AIO) cvs-pod(Coro/AnyEvent.pm,Coro::AnyEvent) cvs-pod(Coro/BDB.pm,Coro::BDB) cvs-pod(Coro/Channel.pm,Coro::Channel) cvs-pod(Coro/Debug.pm,Coro::Debug) cvs-pod(Coro/EV.pm,Coro::EV) cvs-pod(Coro/Event.pm,Coro::Event) cvs-pod(Coro/Handle.pm,Coro::Handle) cvs-pod(Coro/LWP.pm,Coro::LWP) cvs-pod(Coro/MakeMaker.pm,Coro::MakeMaker) cvs-pod(Coro/RWLock.pm,Coro::RWLock) cvs-pod(Coro/Select.pm,Coro::Select) cvs-pod(Coro/Semaphore.pm,Coro::Semaphore) cvs-pod(Coro/SemaphoreSet.pm,Coro::SemaphoreSet) cvs-pod(Coro/Signal.pm,Coro::Signal) cvs-pod(Coro/Socket.pm,Coro::Socket) cvs-pod(Coro/Specific.pm,Coro::Specific) cvs-pod(Coro/State.pm,Coro::State) cvs-pod(Coro/Storable.pm,Coro::Storable) cvs-pod(Coro/Timer.pm,Coro::Timer) cvs-pod(Coro/Util.pm,Coro::Util) list(anyevent) irc(anyevent)
715 elmex 1.1 A large Perl module family that implements cooperative multitasking in
716     Perl. It supports filehandle and event abstraction and also implements
717     continuations as well as the necessary directives to implement a slightly
718     limited call/cc in Perl.
719    
720 root 1.38 Coro-Mysql cpan cvs-co(Changes) cvs-pod(Mysql.pm,)
721     Lets other threads run while doing mysql requests via DBD::mysql.
722    
723     This perl module patches libmysqlclient/DBD::mysql at runtime to allow
724     multiple Coro-based threads to make database accesses concurrently,
725     instead of blocking the whole process.
726    
727 elmex 1.1 Crypt-Twofish2 cpan cvs-pod(Twofish2.pm,) cvs-co(Changes)
728     A Perl module implementing the twofish encryption algorithm in Perl. It has
729     mostly been superceded by the Crypt::Twofish module. However, it supports
730     an easy and fast CBC mode natively.
731    
732     Digest-Hashcash cpan cvs-pod(Hashcash.pm,) cvs-co(Changes)
733     Perl module to generate and parse <a href="http://www.hashcash.org">hashcashes</a>.
734     Follow the link to learn more. This module is currently faster than
735     the hashcash reference library.
736    
737 root 1.47 EV cpan cvs-pod(EV.pm,) cvs-pod(../libev/ev.pod,libev-documentation) cvs-pod(EV/MakeMaker.pm) cvs-co(Changes) list(libev)
738 root 1.46 A thin wrapper around <a href="/pkg/libev.html">libev</a>, a
739     high-performance event loop. Intended as a faster and less buggy
740     replacement for the Event perl module. Efficiently supports very high
741     number of timers, scalable operating system APIs such as epoll, kqueue,
742     solaris's ports, inotify, eventfd, signalfd, child/pid watchers and much
743     more.
744 elmex 1.1
745     A <a href="http://lists.schmorp.de/mailman/listinfo/libev">mailing
746     list</a> for discussion and support is now available.
747    
748 root 1.47 EV-ADNS cpan cvs-pod(ADNS.pm,) cvs-co(Changes) list(libev)
749 elmex 1.1 An asynchronous stub resolver that integrates efficiently into
750     the EV event loop. Uses adns/libadns as backend.
751    
752 root 1.47 EV-Loop-Async cpan cvs-pod(Async.pm,) cvs-co(Changes) list(libev)
753 root 1.43 Small module that runs an EV event loop in another thread
754     and uses an Async-Interrupt object to signal new events
755     to perl.
756    
757 root 1.47 Net-SNMP-EV cpan cvs-pod(EV.pm,) cvs-co(Changes) list(libev)
758 elmex 1.1 An adaptor that integrates the Net-SNMP Perl module into the EV event loop.
759     Loading it suffices to make background requests in EV programs.
760    
761 root 1.47 libev cvs-co(README) cvs-pod(ev.pod) dist list(libev)
762 elmex 1.1 A full-featured and high-performance (<a
763     href="http://libev.schmorp.de/bench.html">see benchmark</a>) event loop that
764     is loosely modelled after libevent, but without its limitations and bugs. It is
765     used, among others, in the <a href="http://savannah.gnu.org/projects/gvpe">GNU Virtual Private Ethernet</a> and
766     <a href="http://software.schmorp.de/pkg/rxvt-unicode.html">rxvt-unicode</a> packages, and in
767     the Deliantra MORPG Server and Client.
768    
769 root 1.46 Features include child/pid watchers, periodic timers based on wallclock
770     (absolute) time (in addition to timers using relative timeouts), as well
771     as epoll/kqueue/event ports/inotify/eventfd/signalfd support, fast timer
772     management, time jump detection and correction, and ease-of-use.
773 elmex 1.1 <p />
774 root 1.46
775 elmex 1.1 It can be used as a libevent replacement using its emulation API or
776     directly embedded into your programs without the need for complex
777     configuration support. A full-featured and well-documented
778     <a href="EV.html">perl interface</a> is also available.
779     <p />
780     A <a href="http://lists.schmorp.de/mailman/listinfo/libev">mailing
781     list</a> for discussion and support is now available.
782    
783 root 1.47 libeio dist cvs-pod(eio.pod,) cvs-co(eio.h) cvs-co(demo.c) cvs-co(Changes) list(libev)
784 root 1.17 Event-based fully asynchronous I/O library for C (used by IO::AIO).
785 root 1.20 Currently in BETA!
786 root 1.17
787 root 1.18 <p>Libeio is a full-featured asynchronous I/O library
788 root 1.17 for C, modelled in similar style and spirit as <a
789     href="http://software.schmorp.de/pkg/libev.html">libev</a>. Features
790     include: asynchronous read, write, open, close, stat, unlink, fdatasync,
791     mknod, readdir etc. (basically the full POSIX API). sendfile (native on
792 root 1.20 solaris, linux, hp-ux, freebsd, emulated everywehere else), readahead
793 root 1.17 (emulated where not available).</p>
794    
795     <p>It is fully event-library agnostic and can easily be integrated into any
796     event-library (or used standalone, even in polling mode). It is very
797     portable and relies only on POSIX threads.</p>
798    
799 root 1.21 <p>Its code, documentation, integration and portability quality is
800     currently below that of libev, but should soon be ready for use in
801     production environments.</p>
802    
803 elmex 1.1 libspf cvs-co(README)
804     Libspf is a C library that implements the <a
805     href="http://en.wikipedia.org/wiki/Sender_Policy_Framework"> Sender
806     Policy Framework</a>. It allows software to identify and reject forged
807     envelope-from addresses, a typical nuisance in e-mail spam. SPF is
808     defined in Experimental RFC 4408.
809    
810     This is not the original home of libspf, but its author (apparently)
811     has vanished for a few years now, and this place took over as a central
812     place to collect patches and possibly make releases.
813     <p />
814     James Couzens, if you read this and want to take over, feel free to
815     contact <a href="mailto:libspf@schmorp.de">me</a>, I'd be thrilled :)
816    
817     File-Rdiff cpan cvs-pod(Rdiff.pm,) cvs-co(Changes)
818     A Perl module that generates remote signatures and patches files using
819     librsync: basically your interface to librsync.
820    
821 root 1.47 EV-Glib cpan cvs-pod(Glib.pm,) cvs-co(Changes) list(libev)
822 elmex 1.1 This perl module embeds the default Glib mainloop into the EV event loop. This makes it
823     possible to use callbacks or modules using the Glib module (e.g. Gtk2 programs) within EV programs. Just
824     loading it suffices. See the <a href="/pkg/Glib-EV.html">Glib::EV</a> module for the reverse approach.
825    
826 root 1.47 Glib-EV cpan cvs-pod(EV.pm,) cvs-co(Changes) list(libev)
827 elmex 1.1 This perl module patches the default libglib main loop context to use the EV module. This makes
828     it possible to use callbacks or modules using the EV module within Glib and Gtk2 programs. Just
829     loading it suffices. See the <a href="/pkg/EV-Glib.html">EV::Glib</a> module for the reverse approach.
830    
831 root 1.47 Glib-Event cpan cvs-pod(Event.pm,) cvs-co(Changes) list(libev)
832 elmex 1.1 This perl module patches the default libglib main loop context to use the Event module. This makes
833     it possible to use callbacks or modules using the Event module within Glib and Gtk2 programs. Just
834     loading it suffices.
835    
836     GPS
837     Undocumented, unreleased and unfinished-but-working interface to some GPS
838     devices in Perl.
839    
840     Linux-DVB cpan cvs-pod(DVB.pm,) cvs-co(Changes)
841     A perl module that implements a very direct interface to the Linux DVB
842     API. Also contains utility functions to decode SI data.
843    
844     Devel-FindRef cpan cvs-pod(FindRef.pm,) cvs-co(Changes)
845     A Perl module that tries to track down references to perl values. Can
846     be a great aid in debugging leak problems by showing where a value
847     is still being referenced.
848    
849     BDB cpan cvs-pod(BDB.pm,) cvs-co(Changes)
850     A Perl module implementing an interface to BerkeleyDB versions 4.4 and later.
851     Unlike the BerkeleyDB and DB_File modules, this module has a much more
852     C-like interface exposing all the features of the underlying library
853     and also executes all database changes asynchronously using a thread pool.
854    
855     IO-AIO cpan cvs-pod(AIO.pm,) cvs-co(Changes)
856     A Perl module that implements asynchronous I/O using pthreads. Apart
857     from AIO reading and writing, this module also allows asynchronous
858     <tt>stat</tt>, <tt>open</tt>, <tt>unlink</tt> (and more) calls,
859     which often are a substantial blocking problem. See also its (outdated)
860     brother <tt>Linux-AIO</tt>.
861    
862     JSON-XS cpan cvs-pod(XS.pm,) cvs-co(Changes)
863     JSON::XS implements JSON (http://www.json.org) for Perl. Unlike other
864     modules, its primary goal is to encode to syntactically correct JSON and
865     flag invalid JSON while decoding. It ensures round-trip integrity of
866     datatypes while being intuitive to use. Currently being the fastest of the
867     JSON encoders available for Perl, it supports a variety of format options,
868     such as single-line, ASCII-only or pretty-printed and can be tuned for
869     speed or memory usage. It comes with a wealth of documentation describing
870     usage and implementation details.
871    
872 root 1.31 Games-Go-SimpleBoard cpan cvs-pod(SimpleBoard.pm,) cvs-co(Changes)
873     A Perl module representing a go board.
874    
875     This Perl module represents a Go game. It can check for valid moves,
876     capture stones, stores move history and can represent a variety of
877     additional annotations (circles, labels, grayed-out stones etc.).
878    
879 root 1.68 Games-Sokoban cpan cvs-pod(Sokoban.pm,) cvs-co(Changes)
880     A perl module to load/transform/save sokoban levels in various formats.
881    
882     Supports xsb (text), rle, sokevo and a small "binpack" format for input and
883     output and can normalise levels as well as calculate unique IDs.
884    
885 root 1.31 Gtk2-GoBoard cpan cvs-pod(GoBoard.pm,) cvs-co(Changes)
886     A Perl module implementing a go board widget.
887    
888     This Perl module implements a beautiful go board (see <a
889     href="http://data.plan9.de/kgsuemel.jpg">example</a>), implemented as a
890     Gtk2 widget.
891    
892 elmex 1.1 Linux-AIO cpan cvs-pod(AIO.pm,) cvs-co(Changes)
893     A Perl module that implements asynchronous I/O using <tt>clone</tt>
894     on Linux. Apart from AIO reading and writing, this module also allows
895     asynchronous <tt>stat</tt>, <tt>open</tt> and <tt>close</tt> (and more)
896     calls, which often are a substantial problem. See also its (newer) brother
897     <tt>IO-AIO</tt>.
898    
899     Linux-Inotify2 cpan cvs-pod(Inotify2.pm,) cvs-co(Changes)
900     A better/less buggy/more portable interface to the Linux Inotify
901     subsystem then what Linux::Inotify has to offer. Inotify lets you receive
902     file change, create, move etc. events for directories in files in a more
903     scalable fashion than dnotify, the older mechanism.
904    
905     Linux-NBD cpan cvs-pod(lib/Linux/NBD.pm) cvs-pod(lib/Linux/NBD/Client.pm) cvs-pod(lib/Linux/NBD/Server.pm) cvs-co(Changes)
906     A Perl module that helps implementing netblock block device servers and
907     set up NBD instances. A sample application allowing you to mount most CD
908     images is included.
909    
910     Mozilla-Plugin
911     Undocumented, unreleased and unfinished-but-somewhat-working Perl plug-in
912     for Mozilla (Netscape, Opera, IE...), that allows embedding Tk, Gtk etc.
913     plugins directly in the browser.
914    
915     Net-FCP cpan cvs-pod(FCP.pm,) cvs-co(Changes)
916     Perl module implementing the <a href="http://www.freenetproject.org">Freenet</a>
917     client protocol, including client-side Metadata handling and CHK Key generation.
918     Includes a mass downloader (similar to fuqid) as sample application.
919    
920     Net-Whois-IP
921     Undocumented, unreleased and unfinished-but-somewhat-working Perl module
922     that tries to find the corresponding whois entry for a given IP, by querying
923     various registries.
924    
925     OpenSSL
926     Undocumented, unreleased and unfinished-but-somewhat-working Perl module
927     interfacing to libssl.
928    
929     PDL-Audio cpan cvs-pod(audio.pd,) cvs-co(Changes)
930     Perl module extending PDL with all sorts of audio functions for generating, analyzing,
931     loading and saving sounds. Ever so popular is the "birds" demo script :)
932    
933     Tree-M cpan
934     Perl interface to the broken M-Tree library by these italian guys...
935    
936     Video-Capture-V4l cpan cvs-co(README) cvs-co(Changes)
937     Full-featured interface to Video for Linux, including real-time grabbing
938     and jpeg compression, VPS etc. decoding and many sample scripts that
939     facilitate automatica sender search and detection, EPG decoding and
940     viewing and video grabbing.
941    
942     XML-DB
943     Undocumented, unreleased and unfinished Perl module implementing an "XML
944     database", i.e. a tree-based database, on top of a conventional SQL
945     database.
946    
947     basex
948     Very old, very portable ANSI-C program that implements something
949     that is similar to yencode. yencode is more "standard", so don't use this.
950    
951     dinfo
952     Undocumented and working tools to extract the data from the D-Info CD.
953    
954     syncmail
955     Unfinished, undocumented and not working.
956    
957     thttpd
958     A personally hacked version of thttpd, suitable for lots of file
959     transfers (normal thttpd has problems with this).
960    
961     wvsniff
962     Undocumented but nicely working wavelan sniffer that I wrote for use
963     with my cisco aironet card. If you get it working, praise yourself.
964    
965     dhcpping cvs-pod(dhcping.pod,)
966     A version of dhcpping enhanced by <a href="mailto:marco@nethype.de">Marco Maisenhelder</a>
967     to support passing dhcp options. Intended to test dhcp server implementations.
968    
969 elmex 1.5 Object-Event cpan-elmex git-pod(lib/Object/Event.pm,) git-co(Changes)
970 elmex 1.2 A simple event callback API for Perl.
971    
972     This is just a very simple event callback registration and call API
973 elmex 1.33 which new Perl classes can inherit. It's mainly used by AnyEvent::XMPP.
974 elmex 1.2
975 elmex 1.33 psycpp git
976 elmex 1.2 A project that was aimed to implement a PSYC server in C++.
977    
978     This is a mostly abandoned project at the moment, however, the repository
979     contains interesting C++ code that might be useful to someone, especially
980     the C++ JSON implementation might be of interest. The project is mostly
981     dead at the moment though...
982 elmex 1.12
983 elmex 1.33 GT.M git-co(README)
984 root 1.32 GT.M Database
985    
986     <a href="http://sourceforge.net/projects/fis-gtm/">GT.M</a>
987     is a a vetted, industrial strength, transaction
988     processing application platform consisting of a
989     database engine optimized for high TP throughput and
990     a compiler for the M (aka MUMPS) programming language.
991    
992     fcrackzip cvs-co(fcrackzip.html)
993     <b>fcrackzip</b> is a zip password cracker, similar to fzc, zipcrack and others.
994    
995     <h3>Why, the hell, another zip cracker?</h3>
996    
997     Naturally, programs are born out of an actual need. The situation with
998     fcrackzip was no different... I'm not using zip very much, but recently
999     I needed a password cracker. "Sure", I thought, "there are hundreds of
1000     them out there, I'll just gonna get one!". This wasn't so easy, in fact,
1001     none of the zipcrackers I found were able to find the passwords, either
1002     they didn't accept more than one zipfile, were awfully slow, or didn't do
1003     brute force attacks (which I needed). The worst thing was: no source!.
1004    
1005     <h3>Why is <i>no source</i> such a bad thing?</h3>
1006    
1007     [insert big chapter about the free software spirit here ;)], anyway
1008     people will never learn... You will find reasons why it's much better to
1009     provide source to your programs here, at opensource.org, and here, at the
1010     Free Software Foundation. Now, what are the features of fcrackzip?
1011    
1012     <ul><li>
1013     <p>FREE</p>
1014    
1015     <p>It doesn't cost anything, it will run on many architectures, and
1016     the source is freely available, so you can customise it to your
1017     needs. If you make improvements, don't hesitate to mail them to me,
1018     and I will include them in fcrackzip!</p>
1019    
1020     <p>One goal of fcrackzip was to provide a free but still fast
1021     zipcracker, so that other people can improve and contribute it
1022     further, in an open developement style.</p>
1023    
1024     <p>Other programs, like fzc, come not only without source, but the
1025     executable is even encrypted, so improving it or customizing it is
1026     difficult at best. (Maybe the programmers of other crackers don't
1027     want that people see how crappy their code actually is? Nobody
1028     knows for sure, but I see no other reason for this strange, but
1029     common, behaviour)</p>
1030    
1031     </li><li>
1032     <p>FAST</p>
1033    
1034     <p>On my old machine (a pentium-90), the portable C version is 12%
1035     slower than fzc, the fastest cracker I could find. Small parts of
1036     fcrackzip have been converted to x86 assembly, so it performs a bit
1037     faster (around 4%) than fzc now, on the same hardware (note: this
1038     is highly os/compiler dependent). Since the author of fzc claims
1039     that it is written fully in assembler, further improvements might
1040     well be possible. Incidently, on my new P-II machine, fcrackzip is
1041     almost twice as fast as fzc ;)</p>
1042    
1043     </li><li>
1044     <p>PORTABLE</p>
1045    
1046     <p>fcrackzip was written in ISO-C, and should run on most platforms,
1047     even 64 bit ones (maybe after some tweaking). I'll be glad to hear
1048     about portability problems so I can fix them.</p>
1049    
1050     </li><li>
1051     <p>FEATUREFUL</p>
1052    
1053     <p>fcrackzip will, at some later stage at least, support many more
1054     useful operation modes than other crackers. It already supports
1055     multiple zip files with multiple files. Remember that the code is
1056     only a few hours old!</p>
1057    
1058     <p>However, since version 0.2.0 fcrackzip also includes a mode to
1059     brute force cpmask'ed images, something no other program (that I
1060     know of) can do, so at least there is one feature other crackers
1061     don't have.</p>
1062    
1063     <p>And you can always implement your own modes.</p>
1064    
1065     </li></ul>
1066    
1067     <h3>Caveat, Imperator!</h3>
1068    
1069     <p>Naturally, there are also some drawbacks. At the moment, fcrackzip
1070     is a bit slower than necessary, and lacks some important (or nice)
1071     features, like automatic unzip-testing and others. On the other hand,
1072     fcrackzip-0.0.1 was hacked together in under ten hours, and you can
1073     always modify the source (and send me patches!!!) (I hope I've made it
1074     clear now ;)</p>
1075 root 1.37
1076     lsys cvs-co(README) cvs-co(NEWS)
1077     lsys is a program that interprets lindenmeyer-systems.
1078    
1079     <p>lsys is a full-featured program that understands most of the syntax
1080     of the original l-systems language, which is far more complex and
1081     powerful than most available l-system interpreters.</p>
1082    
1083 root 1.54 <p>See <a href="http://home.schmorp.de/marc/lsys.html">the original homepage</a>
1084 root 1.37 for more explanations and some images.
1085 root 1.61
1086     ermyth cvs-pod(doc/poddoc/documentation.pod) cvs-co(Changes)
1087     This is a fork of Atheme IRC Services.
1088    
1089     Ermyth IRC Services is a set of Services for IRC networks that allows
1090     users to manage their channels in a secure and efficient way and
1091     allows operators to manage various things about their networks.
1092     Ermyth has been ported to C++ and goes its way using modern concepts
1093     and the object oriented paradigm.
1094