cs
Sponsored Links
Sponsored Links
Secleted [ 0 ] software to compare
Results 1 - 15 of about 82
cs.edu Slax Live 0.1 Alpha
cs.edu Slax Live is a LiveCD for Computer Science Students. more>>
cs.edu Slax Live is a LiveCD for Computer Science Students.
The cs.edu edition of the Slax aims at providing the richness of GNU/Linux as a development environment to computer science students. The 650 MB of this CD are packed with programming tools and reference documentation. This distribution also tries to remain true to the Slackware tradition of simplicity.
Included Software:
- Compilers and interpreters for numerous programming languages: Ada, C/C++/ObjC/C#, Eiffel, Fortran, Haskell, Icon, Java, Lisp, OCaml, PHP, Perl, Prolog, Python, Ruby, Scheme, SmallTalk, Tcl/Tk, ...
- Development tools including make, autoconf, automake, arch, cvs, flex and bison, antlr, gdb, ddd, valgrind, ...
- The teTeX distribution.
- Browsable documentation for these, plus for several document formats (about 800 MB of documentation).
- GNU/Emacs with several modes: auctex, jdee and tuareg.
- A minimalist server configuration including apache and mysql.
- Enlightenment as the window manager.
- A few useful applications including gimp and mozilla.
Enhancements:
- added software, see complete list in installed_packages.txt
- added `nodma option to handle buggy DMA hardware
- added `kbd= option to set keyboard layout
- set imps/2 as the default mouse protocol
- set vga=773 as the default console text mode
- changed default refresh rates
- changed /etc/inittab to boot at runlevel 4 by default
- changed /etc/rc.d/rc.4 to handle Xorg auto-configuration
- added /etc/X11/xinit/xinitrc.guest as the root and slax xinitrc
- changed /etc/rc.d/rc.slax to handle random password generation
- added /sbin/slaxpasswd and a patched makepasswd
- changed /etc/sudoers, /etc/suauth, /etc/login.access
- changed /etc/rc.d/rc.httpd to generate apache configuration
- added /etc/apache/httpd.conf.bsm and /bin/bashmod for this
- changed /etc/rc.d/rc.mysqld to generate mysql table and random password
- changed /etc/profile and /etc/skel
- modified portions of /usr/bin/xconf
- added /etc/zprofile, /etc/zshrc
- changed DHCP client configuration
- added /etc/rc.d/rc.firewall
- configured some /etc/X11/apps-default/*
- changed mozillas default configuration in /usr/lib/mozilla/default
- added AdBlock and Themer mozillas extensions
- configured swaret
- configured gpg with the Slackware security key and my key
- put a 2.4.28-rc1 linux kernel
- added a hell of a lot of documentation, see /usr/doc and /usr/doc/languages
- added an ugly wallpaper
<<lessThe cs.edu edition of the Slax aims at providing the richness of GNU/Linux as a development environment to computer science students. The 650 MB of this CD are packed with programming tools and reference documentation. This distribution also tries to remain true to the Slackware tradition of simplicity.
Included Software:
- Compilers and interpreters for numerous programming languages: Ada, C/C++/ObjC/C#, Eiffel, Fortran, Haskell, Icon, Java, Lisp, OCaml, PHP, Perl, Prolog, Python, Ruby, Scheme, SmallTalk, Tcl/Tk, ...
- Development tools including make, autoconf, automake, arch, cvs, flex and bison, antlr, gdb, ddd, valgrind, ...
- The teTeX distribution.
- Browsable documentation for these, plus for several document formats (about 800 MB of documentation).
- GNU/Emacs with several modes: auctex, jdee and tuareg.
- A minimalist server configuration including apache and mysql.
- Enlightenment as the window manager.
- A few useful applications including gimp and mozilla.
Enhancements:
- added software, see complete list in installed_packages.txt
- added `nodma option to handle buggy DMA hardware
- added `kbd= option to set keyboard layout
- set imps/2 as the default mouse protocol
- set vga=773 as the default console text mode
- changed default refresh rates
- changed /etc/inittab to boot at runlevel 4 by default
- changed /etc/rc.d/rc.4 to handle Xorg auto-configuration
- added /etc/X11/xinit/xinitrc.guest as the root and slax xinitrc
- changed /etc/rc.d/rc.slax to handle random password generation
- added /sbin/slaxpasswd and a patched makepasswd
- changed /etc/sudoers, /etc/suauth, /etc/login.access
- changed /etc/rc.d/rc.httpd to generate apache configuration
- added /etc/apache/httpd.conf.bsm and /bin/bashmod for this
- changed /etc/rc.d/rc.mysqld to generate mysql table and random password
- changed /etc/profile and /etc/skel
- modified portions of /usr/bin/xconf
- added /etc/zprofile, /etc/zshrc
- changed DHCP client configuration
- added /etc/rc.d/rc.firewall
- configured some /etc/X11/apps-default/*
- changed mozillas default configuration in /usr/lib/mozilla/default
- added AdBlock and Themer mozillas extensions
- configured swaret
- configured gpg with the Slackware security key and my key
- put a 2.4.28-rc1 linux kernel
- added a hell of a lot of documentation, see /usr/doc and /usr/doc/languages
- added an ugly wallpaper
Download (653.2MB)
Added: 2006-06-12 License: GPL (GNU General Public License) Price:
1237 downloads
Baseball::Sabermetrics 0.03
Baseball::Sabermetrics is a baseball statistics module. more>>
Baseball::Sabermetrics is a baseball statistics module.
SYNOPSIS
Baseball::Sabermetrics provides an easy interface for calculating baseball statistics, given a data importer. In this package, Ive written CPBL.pm for (Chinese Professional Baseball League, http://www.cpbl.com.tw).
use Baseball::Sabermetrics;
use Baseball::Sabermetrics::CPBL;
my $league = Baseball::Sabermetrics->new(league => CPBL);
# Actually these are predefined.
# Those data with p_ or _allowed here are for seperating pitchers
# and batters.
$league->define(
rc => ab * obp,
babip => (h_allowed - hr_allowed) / (p_pa - h_allowed - p_so - p_bb - hr_allowed,
# what started with $ will be reserved.
# Players have team and league predefined, and team has league.
formula1 => hr / $_->team->hr;
formula2 => hr / $_->league->hr;
complex => sub {
print "You can write a sub directlyn";
$_->slg - $_->ba;
},
...
);
# Some formulas can be applied to players, teams, and league, depend on what
# columns are used in the formula. For example, ab and obp are defined for
# players, teams, and league, so that rc is available for all of them.
# top 5 obp of teams
$_->print qw/ team name ba obp slg isop / for $league->top(teams, 5, obp);
# top 10 obp of players
$_->print qw/ team name ba obp slg isop / for $league->top(players, 10, obp);
# show a players information
$league->players(Chien-Ming Wang)->print qw/ win lose ip so bb whip go_ao /;
$league->teams(Yankees)->players(Chien-Ming Wang)->print qw/ win lose ip so bb whip go_ao /;
# show team statistics data (accumulated from players)
$league->{Yankees}->print qw/ win lose ip so bb whip go_ao /;
# give a brief report for pitchers/batters of the team
$league->{Yankees}->report_pitchers qw/ name ip p_so p_bb whip go_ab /;
$league->{Yankees}->report_batters qw/ name ba obp slg isop /;
$league->report_teams qw/ name win lose era obp /;
# show all available formula
print join , $league->formula_list;
Data Structure
Baseball::Sabermetrics is aimed for providing a base class of your interested teams (a league, for example). Youll need to provide a data retriever to pull data out. The following example shows how you have to fill data into this structure.
$league = {
teams => {
Yankees => {
players => {
"Chien-Ming Wang" => {
bio => {
bats => right, # coule be left, switch
throws => right,
},
ip => 57.33333333333,
game => 9,
...
fielding => {
p => {
tc => 43,
pop => 4,
...
},
# b1 => { }, b2 => { }, b3 => { },
# first, second and thrid baseman should be
# b1, b2, and b3 respectively for convenient in
# fielding context. Because the initial of the
# name of subroutine cant be a number in perl.
},
};
...
}
},
Athletics => {
...
},
},
};
TERMS
Available terms of players (including teams and league, which are accumulated from players and could be treated as an abstract player) are:
# pitching
p_game win lose tie gs sv bs hld cg sho ip p_pa np h_allowed
hr_allowed sh_allowed sf_allowed p_bb p_ibb hb p_so wp bk ra er
# batting
pa ab rbi r h 1b 2b 3b hr tb dp sh sf ibb bb hbp so sb cs
tc po a e f_dp ppo tp pb c_cs c_sb
# fielding
pos fgame tc po a e f_dp tp pb c_cs c_sb
And there are additional terms for team:
game win lose tie
<<lessSYNOPSIS
Baseball::Sabermetrics provides an easy interface for calculating baseball statistics, given a data importer. In this package, Ive written CPBL.pm for (Chinese Professional Baseball League, http://www.cpbl.com.tw).
use Baseball::Sabermetrics;
use Baseball::Sabermetrics::CPBL;
my $league = Baseball::Sabermetrics->new(league => CPBL);
# Actually these are predefined.
# Those data with p_ or _allowed here are for seperating pitchers
# and batters.
$league->define(
rc => ab * obp,
babip => (h_allowed - hr_allowed) / (p_pa - h_allowed - p_so - p_bb - hr_allowed,
# what started with $ will be reserved.
# Players have team and league predefined, and team has league.
formula1 => hr / $_->team->hr;
formula2 => hr / $_->league->hr;
complex => sub {
print "You can write a sub directlyn";
$_->slg - $_->ba;
},
...
);
# Some formulas can be applied to players, teams, and league, depend on what
# columns are used in the formula. For example, ab and obp are defined for
# players, teams, and league, so that rc is available for all of them.
# top 5 obp of teams
$_->print qw/ team name ba obp slg isop / for $league->top(teams, 5, obp);
# top 10 obp of players
$_->print qw/ team name ba obp slg isop / for $league->top(players, 10, obp);
# show a players information
$league->players(Chien-Ming Wang)->print qw/ win lose ip so bb whip go_ao /;
$league->teams(Yankees)->players(Chien-Ming Wang)->print qw/ win lose ip so bb whip go_ao /;
# show team statistics data (accumulated from players)
$league->{Yankees}->print qw/ win lose ip so bb whip go_ao /;
# give a brief report for pitchers/batters of the team
$league->{Yankees}->report_pitchers qw/ name ip p_so p_bb whip go_ab /;
$league->{Yankees}->report_batters qw/ name ba obp slg isop /;
$league->report_teams qw/ name win lose era obp /;
# show all available formula
print join , $league->formula_list;
Data Structure
Baseball::Sabermetrics is aimed for providing a base class of your interested teams (a league, for example). Youll need to provide a data retriever to pull data out. The following example shows how you have to fill data into this structure.
$league = {
teams => {
Yankees => {
players => {
"Chien-Ming Wang" => {
bio => {
bats => right, # coule be left, switch
throws => right,
},
ip => 57.33333333333,
game => 9,
...
fielding => {
p => {
tc => 43,
pop => 4,
...
},
# b1 => { }, b2 => { }, b3 => { },
# first, second and thrid baseman should be
# b1, b2, and b3 respectively for convenient in
# fielding context. Because the initial of the
# name of subroutine cant be a number in perl.
},
};
...
}
},
Athletics => {
...
},
},
};
TERMS
Available terms of players (including teams and league, which are accumulated from players and could be treated as an abstract player) are:
# pitching
p_game win lose tie gs sv bs hld cg sho ip p_pa np h_allowed
hr_allowed sh_allowed sf_allowed p_bb p_ibb hb p_so wp bk ra er
# batting
pa ab rbi r h 1b 2b 3b hr tb dp sh sf ibb bb hbp so sb cs
tc po a e f_dp ppo tp pb c_cs c_sb
# fielding
pos fgame tc po a e f_dp tp pb c_cs c_sb
And there are additional terms for team:
game win lose tie
Download (0.030MB)
Added: 2007-01-04 License: Perl Artistic License Price:
1025 downloads
HCS Open Source Project Beta
HCS Open Source Project consists of a do-it-yourself home automation hardware and software system. more>>
HCS Open Source Project consists of a do-it-yourself home automation hardware and software system.
The HCS Open Source Project is a stand-alone home automation control system which consists of hardware (main controllers and remote networked controllers) and software to monitor and control various devices around your house.
The current plans support using wired and wireless X10 modules, as well as analog, digital, and voice input and output. Once the HCS is programmed, the use of a PC is not required.
CS stands for Home Control System. Originally designed by Steve Ciarcia for the article "Home Run Control System" for Byte magazine.
What is the HCS II? The HCS II is an expandable, network-based (RS485), intelligent-node, industrial-oriented supervisory control system intended for demanding home control applications.
The HCS incorporates direct and remote digital inputs and outputs, direct and remote analog inputs and outputs, real-time or Boolean decision event triggering, X-10 transmission and reception, infrared remote control transmission and reception, remote LCD displays, and a master console.
The HCS II system architecture consists of a central supervisory controller (SC) connected to up to 32 other functional modules (called links) via a RS485 serial network. The SC and the COMM-Links can operate independently and dont need each other to function.
This allows easy testing or incorporation as intelligent subsystems in other control equipment. Initially the subsystems links all shared a comon 8031 controller board (generically called a COMM-Link) with the I/O customized for each application.
<<lessThe HCS Open Source Project is a stand-alone home automation control system which consists of hardware (main controllers and remote networked controllers) and software to monitor and control various devices around your house.
The current plans support using wired and wireless X10 modules, as well as analog, digital, and voice input and output. Once the HCS is programmed, the use of a PC is not required.
CS stands for Home Control System. Originally designed by Steve Ciarcia for the article "Home Run Control System" for Byte magazine.
What is the HCS II? The HCS II is an expandable, network-based (RS485), intelligent-node, industrial-oriented supervisory control system intended for demanding home control applications.
The HCS incorporates direct and remote digital inputs and outputs, direct and remote analog inputs and outputs, real-time or Boolean decision event triggering, X-10 transmission and reception, infrared remote control transmission and reception, remote LCD displays, and a master console.
The HCS II system architecture consists of a central supervisory controller (SC) connected to up to 32 other functional modules (called links) via a RS485 serial network. The SC and the COMM-Links can operate independently and dont need each other to function.
This allows easy testing or incorporation as intelligent subsystems in other control equipment. Initially the subsystems links all shared a comon 8031 controller board (generically called a COMM-Link) with the I/O customized for each application.
Download (0.005MB)
Added: 2007-01-16 License: GPL (GNU General Public License) Price:
1014 downloads
YASP 0.4
YASP project is a lightweight network protocol for micro controllers. more>>
YASP project is a lightweight network protocol for micro controllers.
YASP is a simple and open protocol for building networks with small microcontrollers. It is designed to have a small footprint for easy implementation with minimal hardware resources, but without sacrifice advanced features and future growth.
The protocol scalability is implemented using variable length fields.
The physical layer use the NRZ encoding as in RS-232, but using dominant and recessive bus states to provide a reliable way to detect collisions.
Main features:
- Node adresses: 1 to n bytes
- Medium access: CDMA/CS/NDA (Carrier Sense Multiple Access / Collision Detection / Non-Destructive Arbitration)
- Addressing modes: unicast, broadcast and multicast
- Smallest frame: 6 bytes
- Error detection: CRC16
- Bus signaling: 1-wire "open collector" or 2-wire diferential (CAN transceiver)
- Current PIC implementation: about 480 words of code and 25 bytes of RAM (interrupt driven)
Enhancements:
- Fixed minor framing bugs that affect reception of consecutive frames.
- Added sample code for analog inputs node using 16f876.
<<lessYASP is a simple and open protocol for building networks with small microcontrollers. It is designed to have a small footprint for easy implementation with minimal hardware resources, but without sacrifice advanced features and future growth.
The protocol scalability is implemented using variable length fields.
The physical layer use the NRZ encoding as in RS-232, but using dominant and recessive bus states to provide a reliable way to detect collisions.
Main features:
- Node adresses: 1 to n bytes
- Medium access: CDMA/CS/NDA (Carrier Sense Multiple Access / Collision Detection / Non-Destructive Arbitration)
- Addressing modes: unicast, broadcast and multicast
- Smallest frame: 6 bytes
- Error detection: CRC16
- Bus signaling: 1-wire "open collector" or 2-wire diferential (CAN transceiver)
- Current PIC implementation: about 480 words of code and 25 bytes of RAM (interrupt driven)
Enhancements:
- Fixed minor framing bugs that affect reception of consecutive frames.
- Added sample code for analog inputs node using 16f876.
Download (0.19MB)
Added: 2007-01-16 License: LGPL (GNU Lesser General Public License) Price:
1014 downloads
STUX 1.0
STUX is a bootable CD with a collection of GNU/Linux software. more>>
STUX is a bootable CD with a collection of GNU/Linux software, automatic hardware detection, and support for many graphics cards, sound cards, SCSI and USB devices and other peripherals.
Stux OS target is to build a Live CD similar to KNOPPIX but based on Slackware Linux.
Main features:
- Window Managers: KDE 3.1, Gnome 2.4, fvwm2, fvwm95, WindowMaker, Twm
- Browsers: Mozilla 1.6, Konqueror, Galeon, Nautilus, Lynx, KGet, wget, ...
- Mail clients: Mozilla Mail, KMail, mail, ...
- News readers: Mozilla News, Knode, Pan, ...
- Office, Word Processing, Editors: Open Office 1.1.0, KOffice, AbiWord, Kedit, KWrite, Kate, Xpdf, ...
- Services: Apache 1.3.28, ProFTPd 1.2.8p, Ample, Samba, Secure Shell, MySqld
- Multimedia: VideoLan Client 0.5.2, XawTV, gqRadio, Xine,...
- Graphics: the Gimp, KPaint, XPaint,...
- Developing: gcc 3.2.3, g++, J2sdk 1.4.2, perl 5.8.0, python 2.3.1, php 4.3.3, ...
- IRC Client: Kopete, KSirc, Chatzilla!
- AIM Client: Kopete, Kit
- ICQ Client: Kopete
- Peer 2 Peer/File sharing: BitTorrent, xMule
- Data Base: mysql 4.0.15a
- Web Applications: phpMyAdmin 2.5.5
- KDE Languages: AF, AR, BG, BS, CA, CS, DA, DE, EL, EN, EN_GB, EO, ES, ET, EU, FA, FI, FR, HE, HR, HU, IS, IT, JA, LT, MK, MT, NB, NL, NN, NSO, PL, PT, PT_BR, RO, RU, SE, SK, SL, SR, SS, SV, TA, TH, TR, UK, VEN, VI, XH, ZH_CN, ZH_TW, ZU
Enhancements:
- Upgraded to Slackware current as at 1 Jun 2007 and KNOPPIX live CD 5.1.1 (kernel 2.6.19); fixed problem with installation on SATA hard disks; all STUX utilities deeply reviewed; NVIDIA proprietary driver updated to 1.0-9755 + legacy driver 1.0-9631 for old cards; save live CD persistent configuration on ReiserFS partitions; install compressed image on ReiserFS partitions; Acx wireless firmware upgraded; fully integrates with other pre-installed operating systems; Compiz 0.5.0; fully VMware/QEMU compatible.
<<lessStux OS target is to build a Live CD similar to KNOPPIX but based on Slackware Linux.
Main features:
- Window Managers: KDE 3.1, Gnome 2.4, fvwm2, fvwm95, WindowMaker, Twm
- Browsers: Mozilla 1.6, Konqueror, Galeon, Nautilus, Lynx, KGet, wget, ...
- Mail clients: Mozilla Mail, KMail, mail, ...
- News readers: Mozilla News, Knode, Pan, ...
- Office, Word Processing, Editors: Open Office 1.1.0, KOffice, AbiWord, Kedit, KWrite, Kate, Xpdf, ...
- Services: Apache 1.3.28, ProFTPd 1.2.8p, Ample, Samba, Secure Shell, MySqld
- Multimedia: VideoLan Client 0.5.2, XawTV, gqRadio, Xine,...
- Graphics: the Gimp, KPaint, XPaint,...
- Developing: gcc 3.2.3, g++, J2sdk 1.4.2, perl 5.8.0, python 2.3.1, php 4.3.3, ...
- IRC Client: Kopete, KSirc, Chatzilla!
- AIM Client: Kopete, Kit
- ICQ Client: Kopete
- Peer 2 Peer/File sharing: BitTorrent, xMule
- Data Base: mysql 4.0.15a
- Web Applications: phpMyAdmin 2.5.5
- KDE Languages: AF, AR, BG, BS, CA, CS, DA, DE, EL, EN, EN_GB, EO, ES, ET, EU, FA, FI, FR, HE, HR, HU, IS, IT, JA, LT, MK, MT, NB, NL, NN, NSO, PL, PT, PT_BR, RO, RU, SE, SK, SL, SR, SS, SV, TA, TH, TR, UK, VEN, VI, XH, ZH_CN, ZH_TW, ZU
Enhancements:
- Upgraded to Slackware current as at 1 Jun 2007 and KNOPPIX live CD 5.1.1 (kernel 2.6.19); fixed problem with installation on SATA hard disks; all STUX utilities deeply reviewed; NVIDIA proprietary driver updated to 1.0-9755 + legacy driver 1.0-9631 for old cards; save live CD persistent configuration on ReiserFS partitions; install compressed image on ReiserFS partitions; Acx wireless firmware upgraded; fully integrates with other pre-installed operating systems; Compiz 0.5.0; fully VMware/QEMU compatible.
Download (MB)
Added: 2007-06-06 License: GPL (GNU General Public License) Price:
872 downloads
codstats.tcl 1.1.2
codstats.tcl is a eggdrop tcl script witch communicates with your Call Of Duty server via RCON commands. more>>
codstats.tcl is a eggdrop tcl script witch communicates with your Call Of Duty server via RCON commands and reads responses from the servers log file. codstats.tcl script has several different modules you can enable:
- codspeak module: if you turn this on youll see the users ingame speech on your IRC channel and the playersll see the messages coming from the IRC channel. COD & mIRC color codes will be converted correctly.
- codstats module: player statistics (frag count, toplist, killratio, weapon usage, etc.)
- codevents module: displays server joins/parts on the IRC channel, periodically announces the number of players on the server (if there are players). Period time can be adjusted with CODANNOUNCETIME setting.
So this script is ideal for your COD clans IRC channel using with your private clan server.
Available channel commands for channel/bot operators: (you can change these bindings at the end of this script)
!cstatus (!cs) - prints out server status
!rcon - sends an rcon command (notice: result of command wont be displayed on the channel!) - only for channel/bot operators
!cseen [nick] - prints out the time when the given user was last seen on the cod server
!ctimespent [nick]: prints out the length of time the user has spent playing cod on the server
!cstat [nick] - prints the given nicks stats
!ftopten (!ftop10, !ctopten, !ctop10) - prints the frag top10
!ktopten (!ktop10) - prints the timeskilled top10
!ftop20 (!ctop20) - prints the frag top20
!ktop20 - prints the timeskilled top20
!weapon [nick] - prints nicks favourite weapons used for killing
!target [nick] - prints nicks favourite deadly targets toplist
!hit [nick] - prints the points where nicks got the most deadly hits
!fraglist - displays the servers current fraglist
!savedb - saves database file - only for channel/bot owners
!loaddb - loads database file - only for channel/bot owners
!cuserdel [nick] (!cdeluser) - deletes given nick from the database - only for channel/bot owners
!weed [days] - deletes users not seen since given days - only for channel/bot owners
!csum [to] [from] - adds froms stats to tos stats and deletes from - only for channel/bot owners
Ive made a tcl script for starting/stopping our COD and Teamspeak server using simple commands on our IRC channel. This script called codmngr.tcl You can download it above at the Download section.
Installation:
1. Download UDP support for TCL from here: http://sourceforge.net/projects/tcludp
This is needed because TCL doesnt have UDP protocol support and the script uses UDP for communicating with the COD server.
2. Extract it, run ./configure, make, make install
If configure displays an error message, make sure you have at least tcl8.4-dev (or similar installed.
3. Edit the codstats.tcl file at the SETTINGS section, set your cod host, port and rcon password, select which modules you want to enable, your IRC channel and edit other settings
4. Copy the tcl to your eggdrops scripts directory
5. Edit your eggdrops config and append this line to the end of the file: source scripts/codstats.tcl
6. Rehash your bots config file (.rehash)
Enhancements:
- The backup file now will be saved only at 5 oclock in the morning.
- Weapons named "none" wont be stored anymore.
- A known issues section has been added to codstats.tcl.
- Sometimes empty names were stored, and because of this frags were not saved; this has been fixed.
<<less- codspeak module: if you turn this on youll see the users ingame speech on your IRC channel and the playersll see the messages coming from the IRC channel. COD & mIRC color codes will be converted correctly.
- codstats module: player statistics (frag count, toplist, killratio, weapon usage, etc.)
- codevents module: displays server joins/parts on the IRC channel, periodically announces the number of players on the server (if there are players). Period time can be adjusted with CODANNOUNCETIME setting.
So this script is ideal for your COD clans IRC channel using with your private clan server.
Available channel commands for channel/bot operators: (you can change these bindings at the end of this script)
!cstatus (!cs) - prints out server status
!rcon - sends an rcon command (notice: result of command wont be displayed on the channel!) - only for channel/bot operators
!cseen [nick] - prints out the time when the given user was last seen on the cod server
!ctimespent [nick]: prints out the length of time the user has spent playing cod on the server
!cstat [nick] - prints the given nicks stats
!ftopten (!ftop10, !ctopten, !ctop10) - prints the frag top10
!ktopten (!ktop10) - prints the timeskilled top10
!ftop20 (!ctop20) - prints the frag top20
!ktop20 - prints the timeskilled top20
!weapon [nick] - prints nicks favourite weapons used for killing
!target [nick] - prints nicks favourite deadly targets toplist
!hit [nick] - prints the points where nicks got the most deadly hits
!fraglist - displays the servers current fraglist
!savedb - saves database file - only for channel/bot owners
!loaddb - loads database file - only for channel/bot owners
!cuserdel [nick] (!cdeluser) - deletes given nick from the database - only for channel/bot owners
!weed [days] - deletes users not seen since given days - only for channel/bot owners
!csum [to] [from] - adds froms stats to tos stats and deletes from - only for channel/bot owners
Ive made a tcl script for starting/stopping our COD and Teamspeak server using simple commands on our IRC channel. This script called codmngr.tcl You can download it above at the Download section.
Installation:
1. Download UDP support for TCL from here: http://sourceforge.net/projects/tcludp
This is needed because TCL doesnt have UDP protocol support and the script uses UDP for communicating with the COD server.
2. Extract it, run ./configure, make, make install
If configure displays an error message, make sure you have at least tcl8.4-dev (or similar installed.
3. Edit the codstats.tcl file at the SETTINGS section, set your cod host, port and rcon password, select which modules you want to enable, your IRC channel and edit other settings
4. Copy the tcl to your eggdrops scripts directory
5. Edit your eggdrops config and append this line to the end of the file: source scripts/codstats.tcl
6. Rehash your bots config file (.rehash)
Enhancements:
- The backup file now will be saved only at 5 oclock in the morning.
- Weapons named "none" wont be stored anymore.
- A known issues section has been added to codstats.tcl.
- Sometimes empty names were stored, and because of this frags were not saved; this has been fixed.
Download (0.011MB)
Added: 2006-10-19 License: GPL (GNU General Public License) Price:
1116 downloads
Audio::Ecasound 0.91
Audio::Ecasound is a Perl binding to the ecasound sampler, recorder, fx-processor. more>>
Audio::Ecasound is a Perl binding to the ecasound sampler, recorder, fx-processor.
SYNOPSIS
One function interface:
use Audio::Ecasound qw(:simple);
eci("cs-add play_chainsetup");
eci("c-add 1st_chain");
eci("-i:some_file.wav");
eci("-o:/dev/dsp");
# multiple n separated commands
eci("cop-add -efl:100
# with comments
cop-select 1
copp-select 1
cs-connect");
eci("start");
my $cutoff_inc = 500.0;
while (1) {
sleep(1);
last if eci("engine-status") ne "running";
my $curpos = eci("get-position");
last if $curpos > 15;
my $next_cutoff = $cutoff_inc + eci("copp-get");
# Optional float argument
eci("copp-set", $next_cutoff);
}
eci("stop");
eci("cs-disconnect");
print "Chain operator status: ", eci("cop-status");
Object Interface
use Audio::Ecasound;
my $e = new Audio::Ecasound;
$e->on_error();
$e->eci("cs-add play_chainsetup");
# etc.
Vanilla Ecasound Control Interface (See Ecasounds Programmer Guide):
use Audio::Ecasound qw(:std);
command("copp-get");
$precise_float = last_float() / 2;
command_float_arg("copp-set", $precise_float);
warn last_error() if error();
IAM Interface, pretend interactive mode commands are functions.
use Audio::Ecasound qw(:iam :simple);
# iam commands as functions with s/-/_/g
my $val = copp_get;
copp_set $val+0.1; # floats are stringified so beware
eci("-i /dev/dsp"); # not all commands are exported
Audio::Ecasound provides perl bindings to the ecasound control interface of the ecasound program. You can use perl to automate or interact with ecasound so you dont have to turn you back on the adoring masses packed into Wembly Stadium.
Ecasound is a software package designed for multitrack audio processing. It can be used for audio playback, recording, format conversions, effects processing, mixing, as a LADSPA plugin host and JACK node. Version >= 2.2.X must be installed to use this package. "SEE ALSO" for more info.
<<lessSYNOPSIS
One function interface:
use Audio::Ecasound qw(:simple);
eci("cs-add play_chainsetup");
eci("c-add 1st_chain");
eci("-i:some_file.wav");
eci("-o:/dev/dsp");
# multiple n separated commands
eci("cop-add -efl:100
# with comments
cop-select 1
copp-select 1
cs-connect");
eci("start");
my $cutoff_inc = 500.0;
while (1) {
sleep(1);
last if eci("engine-status") ne "running";
my $curpos = eci("get-position");
last if $curpos > 15;
my $next_cutoff = $cutoff_inc + eci("copp-get");
# Optional float argument
eci("copp-set", $next_cutoff);
}
eci("stop");
eci("cs-disconnect");
print "Chain operator status: ", eci("cop-status");
Object Interface
use Audio::Ecasound;
my $e = new Audio::Ecasound;
$e->on_error();
$e->eci("cs-add play_chainsetup");
# etc.
Vanilla Ecasound Control Interface (See Ecasounds Programmer Guide):
use Audio::Ecasound qw(:std);
command("copp-get");
$precise_float = last_float() / 2;
command_float_arg("copp-set", $precise_float);
warn last_error() if error();
IAM Interface, pretend interactive mode commands are functions.
use Audio::Ecasound qw(:iam :simple);
# iam commands as functions with s/-/_/g
my $val = copp_get;
copp_set $val+0.1; # floats are stringified so beware
eci("-i /dev/dsp"); # not all commands are exported
Audio::Ecasound provides perl bindings to the ecasound control interface of the ecasound program. You can use perl to automate or interact with ecasound so you dont have to turn you back on the adoring masses packed into Wembly Stadium.
Ecasound is a software package designed for multitrack audio processing. It can be used for audio playback, recording, format conversions, effects processing, mixing, as a LADSPA plugin host and JACK node. Version >= 2.2.X must be installed to use this package. "SEE ALSO" for more info.
Download (0.011MB)
Added: 2006-06-27 License: GPL (GNU General Public License) Price:
1215 downloads
CTF Beta2
CTF project is a multi-agent capture-the-flag framework for education. more>>
CTF project is a multi-agent capture-the-flag framework for education.
This project was started by Jason Rohrer during the fall of 2000 and was initially used to teach CS 472, Introduction to AI, at Cornell University.
A homework assignment was given that asked students to design a CTF agent for the framework.
Students in the class responded to the assignment with great enthusiasm, and many of their final agents far exceeded our expectations (one student group went so far as to design a genetic algorithm to evolve a team of agents).
CTF forces students to explore the issues surrounding agents that operate in a limited information environments.
The framework is flexible enough to allow almost any possible implementation of agent control, from the simplest reactive agents, to agents that query powerful knowledge bases, to neural network agents that are trained by back propagation or reinforcement methods.
When using this framework at Cornell, we left the assignment open-ended. However, you can use this framework in your own class to teach a specific agent control concept (by forcing every student to implement a reinforcement learning system, for example).
Main features:
- Runtime loading of agent classes-- plugging new agents into the framework is incredibly easy
- Runtime loading of obstacle maps
- Automatic round-robin tournament system
- Automatic grading-- an email-ready message is generated for each student team at the end of the tournament (a script for sending out the email messages is included); the point system can be completely configured
- Assignment handout-- click here to see an example of the instructions we handed out to students for CS 472 at Cornell
- Licensed under GPL-- if the framework doesnt work for you as is, you can improve it yourself
<<lessThis project was started by Jason Rohrer during the fall of 2000 and was initially used to teach CS 472, Introduction to AI, at Cornell University.
A homework assignment was given that asked students to design a CTF agent for the framework.
Students in the class responded to the assignment with great enthusiasm, and many of their final agents far exceeded our expectations (one student group went so far as to design a genetic algorithm to evolve a team of agents).
CTF forces students to explore the issues surrounding agents that operate in a limited information environments.
The framework is flexible enough to allow almost any possible implementation of agent control, from the simplest reactive agents, to agents that query powerful knowledge bases, to neural network agents that are trained by back propagation or reinforcement methods.
When using this framework at Cornell, we left the assignment open-ended. However, you can use this framework in your own class to teach a specific agent control concept (by forcing every student to implement a reinforcement learning system, for example).
Main features:
- Runtime loading of agent classes-- plugging new agents into the framework is incredibly easy
- Runtime loading of obstacle maps
- Automatic round-robin tournament system
- Automatic grading-- an email-ready message is generated for each student team at the end of the tournament (a script for sending out the email messages is included); the point system can be completely configured
- Assignment handout-- click here to see an example of the instructions we handed out to students for CS 472 at Cornell
- Licensed under GPL-- if the framework doesnt work for you as is, you can improve it yourself
Download (0.11MB)
Added: 2006-10-30 License: GPL (GNU General Public License) Price:
1097 downloads
MIME::EncWords 0.040
MIME::EncWords is a Perl module created to deal with RFC-1522 encoded words (improved). more>>
MIME::EncWords is a Perl module created to deal with RFC-1522 encoded words (improved).
SYNOPSIS
MIME::EncWords is aimed to be another implimentation of MIME::Words so that it will achive more exact conformance with MIME specifications. Additionally, it contains some improvements. Following synopsis and descriptions are inherited from its inspirer, with description of improvements and clarifications added.
Before reading further, you should see MIME::Tools to make sure that you understand where this module fits into the grand scheme of things. Go on, do it now. Ill wait.
Ready? Ok...
use MIME::EncWords qw(:all);
### Decode the string into another string, forgetting the charsets:
$decoded = decode_mimewords(
To: =?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?= ,
);
### Split string into array of decoded [DATA,CHARSET] pairs:
AT decoded = decode_mimewords(
To: =?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?= ,
);
### Encode a single unsafe word:
$encoded = encode_mimeword("xABFranxE7oisxBB");
### Encode a string, trying to find the unsafe words inside it:
$encoded = encode_mimewords("Me and xABFranxE7oisxBB in town");
Fellow Americans, you probably wont know what the hell this module is for. Europeans, Russians, et al, you probably do.
For example, heres a valid MIME header you might get:
From: =?US-ASCII?Q?Keith_Moore?= < moore AT utk.edu >
To: =?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?= < keld AT dkuug.dk >
CC: =?ISO-8859-1?Q?Andr=E9_?= Pirard < PIRARD AT vm1.ulg.ac.be >
Subject: =?ISO-8859-1?B?SWYgeW91IGNhbiByZWFkIHRoaXMgeW8=?=
=?ISO-8859-2?B?dSB1bmRlcnN0YW5kIHRoZSBleGFtcGxlLg==?=
=?US-ASCII?Q?.._cool!?=
The fields basically decode to (sorry, I can only approximate the Latin characters with 7 bit sequences /o and e):
From: Keith Moore < moore AT cs.utk.edu >
To: Keld J/orn Simonsen < keld AT dkuug.dk >
CC: Andre Pirard < PIRARD AT vm1.ulg.ac.be >
Subject: If you can read this you understand the example... cool!
Supplement: Fellow Americans, Europeans, you probably wont know what the hell this module is for. East Asians, et al, you probably do.
For example, heres a valid MIME header you might get:
Subject: =?EUC-KR?B?sNTAuLinKGxhemluZXNzKSwgwvzB9ri7seIoaW1w?=
=?EUC-KR?B?YXRpZW5jZSksILGzuLgoaHVicmlzKQ==?=
The fields basically decode to (sorry, I cannot approximate the non-Latin multibyte characters with any 7 bit sequences):
Subject: ???(laziness), ????(impatience), ??(hubris)
<<lessSYNOPSIS
MIME::EncWords is aimed to be another implimentation of MIME::Words so that it will achive more exact conformance with MIME specifications. Additionally, it contains some improvements. Following synopsis and descriptions are inherited from its inspirer, with description of improvements and clarifications added.
Before reading further, you should see MIME::Tools to make sure that you understand where this module fits into the grand scheme of things. Go on, do it now. Ill wait.
Ready? Ok...
use MIME::EncWords qw(:all);
### Decode the string into another string, forgetting the charsets:
$decoded = decode_mimewords(
To: =?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?= ,
);
### Split string into array of decoded [DATA,CHARSET] pairs:
AT decoded = decode_mimewords(
To: =?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?= ,
);
### Encode a single unsafe word:
$encoded = encode_mimeword("xABFranxE7oisxBB");
### Encode a string, trying to find the unsafe words inside it:
$encoded = encode_mimewords("Me and xABFranxE7oisxBB in town");
Fellow Americans, you probably wont know what the hell this module is for. Europeans, Russians, et al, you probably do.
For example, heres a valid MIME header you might get:
From: =?US-ASCII?Q?Keith_Moore?= < moore AT utk.edu >
To: =?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?= < keld AT dkuug.dk >
CC: =?ISO-8859-1?Q?Andr=E9_?= Pirard < PIRARD AT vm1.ulg.ac.be >
Subject: =?ISO-8859-1?B?SWYgeW91IGNhbiByZWFkIHRoaXMgeW8=?=
=?ISO-8859-2?B?dSB1bmRlcnN0YW5kIHRoZSBleGFtcGxlLg==?=
=?US-ASCII?Q?.._cool!?=
The fields basically decode to (sorry, I can only approximate the Latin characters with 7 bit sequences /o and e):
From: Keith Moore < moore AT cs.utk.edu >
To: Keld J/orn Simonsen < keld AT dkuug.dk >
CC: Andre Pirard < PIRARD AT vm1.ulg.ac.be >
Subject: If you can read this you understand the example... cool!
Supplement: Fellow Americans, Europeans, you probably wont know what the hell this module is for. East Asians, et al, you probably do.
For example, heres a valid MIME header you might get:
Subject: =?EUC-KR?B?sNTAuLinKGxhemluZXNzKSwgwvzB9ri7seIoaW1w?=
=?EUC-KR?B?YXRpZW5jZSksILGzuLgoaHVicmlzKQ==?=
The fields basically decode to (sorry, I cannot approximate the non-Latin multibyte characters with any 7 bit sequences):
Subject: ???(laziness), ????(impatience), ??(hubris)
Download (0.021MB)
Added: 2007-07-09 License: Perl Artistic License Price:
841 downloads
RCUNIT 0.9
RCUNIT is a robust C unit testing framework. more>>
RCUNIT is a robust C unit testing framework. Requiring only an ANSI compliant C compiler, It is a highly portable testing tool.
Main features:
- Uniform interfaces for managing test cases
- Optional setup and tear down functions for each test case (test function) to isolate a particular test.
- Optional setup and tear down functions for each test suite (test module).
- Multiple test registries and test suites for structuring test cases. Also provides a default test suite and default test registry.
- Output redirection mechanism to redirect log and test run report when a file I/O facility is not available in the test platform.
- Log handler mechanism for redirecting logs.
- Allows optional test run callback function (test run hook).
- Alternative mechanism to ANSI Cs assert() function (non-test run assertions). Also allows assertion callback function (assertion hook)
- A runtime memory leak check facility
- An extensible exception handling mechanism
Enhancements:
- This is is the pre-release version of 1.0.
- There were no major changes from version 0.1, and it is fairly stable.
<<lessMain features:
- Uniform interfaces for managing test cases
- Optional setup and tear down functions for each test case (test function) to isolate a particular test.
- Optional setup and tear down functions for each test suite (test module).
- Multiple test registries and test suites for structuring test cases. Also provides a default test suite and default test registry.
- Output redirection mechanism to redirect log and test run report when a file I/O facility is not available in the test platform.
- Log handler mechanism for redirecting logs.
- Allows optional test run callback function (test run hook).
- Alternative mechanism to ANSI Cs assert() function (non-test run assertions). Also allows assertion callback function (assertion hook)
- A runtime memory leak check facility
- An extensible exception handling mechanism
Enhancements:
- This is is the pre-release version of 1.0.
- There were no major changes from version 0.1, and it is fairly stable.
Download (0.40MB)
Added: 2006-10-17 License: GPL (GNU General Public License) Price:
1106 downloads
bicl 0.1.0
bicl is a tool for editing the builtin command line boot arguments in binary files like the PPC64 Linux compressed kernel image. more>>
bicl is a tool for editing the built-in command line boot arguments in binary files like the PPC64 Linux compressed kernel image and the PPC64 Xen compressed hypervisor boot image.
he boot argument processing for powerpc Xen is much less complex than it may appear. Assuming that the Simplify bootargs processing patch is accepted in some form, the following rules apply:
1. Arguments from 32-bit wrapper override all else
2. Builtin arguments in 64-bit image override firmware
3. Firmware is used if neither of the above exist
It is true that dom0 Linux has its own boot argument processing, but there is a simple transitive relation between Xens bootargs and Linuxs bootargs. That is, Xen first applies the above three rules to decide what to feed Linux. Linux then applies its three rules (it orders their precedence slightly differently) to decide what to feed the kernel proper.
The format of the builtin command line buffer is essentially just a seperate ELF section, which makes it easy for post-processing tools to locate it and edit it. If you have a 2.6.17 or later zImage kernel available, the following is illustrative:
$ objdump -h arch/powerpc/boot/zImage | grep cmdline
2 __builtin_cmdline 00000200 00406274 00406274 00016274 2**2
The format of the builtin command line buffer is simple, so many tools may one day understand it, but at present the most commonly-used tool is `bicl, which is shipped under the LGPL as part of the K42 source:
http://www.cs.unm.edu/~k42/tools/bicl
The usage of the tool is simple:
$ bicl
`builtin-cmdline manipulates builtin command line arguments
Usage: builtin-cmdline FILE [ARGS]
-?, --help Show this help statement.
--version Show version statement.
Examples: builtin-cmdline zImage
builtin-cmdline zImage console=ttyS0
The tool is used every day to edit the builtin command lines of Linux and Xen binaries as part of an internal IBM project.
<<lesshe boot argument processing for powerpc Xen is much less complex than it may appear. Assuming that the Simplify bootargs processing patch is accepted in some form, the following rules apply:
1. Arguments from 32-bit wrapper override all else
2. Builtin arguments in 64-bit image override firmware
3. Firmware is used if neither of the above exist
It is true that dom0 Linux has its own boot argument processing, but there is a simple transitive relation between Xens bootargs and Linuxs bootargs. That is, Xen first applies the above three rules to decide what to feed Linux. Linux then applies its three rules (it orders their precedence slightly differently) to decide what to feed the kernel proper.
The format of the builtin command line buffer is essentially just a seperate ELF section, which makes it easy for post-processing tools to locate it and edit it. If you have a 2.6.17 or later zImage kernel available, the following is illustrative:
$ objdump -h arch/powerpc/boot/zImage | grep cmdline
2 __builtin_cmdline 00000200 00406274 00406274 00016274 2**2
The format of the builtin command line buffer is simple, so many tools may one day understand it, but at present the most commonly-used tool is `bicl, which is shipped under the LGPL as part of the K42 source:
http://www.cs.unm.edu/~k42/tools/bicl
The usage of the tool is simple:
$ bicl
`builtin-cmdline manipulates builtin command line arguments
Usage: builtin-cmdline FILE [ARGS]
-?, --help Show this help statement.
--version Show version statement.
Examples: builtin-cmdline zImage
builtin-cmdline zImage console=ttyS0
The tool is used every day to edit the builtin command lines of Linux and Xen binaries as part of an internal IBM project.
Download (0.003MB)
Added: 2006-10-27 License: GPL (GNU General Public License) Price:
1092 downloads
Vista Basic 2
Vista Basic provides a theme similar to Microsoft Vista. more>>
Vista Basic provides a theme similar to Microsoft Vista.
window borders similar to those of Microsoft Vista when using non Aero compatible software (such as JRE 6 or Photoshop CS 2)
<<lesswindow borders similar to those of Microsoft Vista when using non Aero compatible software (such as JRE 6 or Photoshop CS 2)
Download (0.015MB)
Added: 2007-04-17 License: Public Domain Price:
678 downloads
NAT Check 1
Check Your Network Address Translator for Compatibility with Peer-to-Peer Protocols. more>>
Check Your Network Address Translator for Compatibility with Peer-to-Peer Protocols.
If you are accessing the Internet from behind a Network Address Translator (NAT) of some kind, I would appreciate your help in surveying the behavior of different NATs, in terms of how and whether they support a certain technique for enabling peer-to-peer communication between NATted hosts (particularly when both endpoints are behind NATs). Down, you can understand what NAT is.
Suppose there are three communicating hosts: A, B, and C. Host A is a "well-known" Internet server with a permanent IP address, which acts as an "introducer" for the other two nodes. (For example, Host A might be a well-known ultrapeer or a game catalog server of some kind.) Host B, using Host As "introduction" services, would like to establish a direct peer-to-peer connection with host C. Both B and C, however, are behind (probably different) network address/port translators, and neither of them has exclusive use of any public IP address.
To initiate a peer-to-peer connection with host C, host B first sends A a message requesting an "introduction" to host C. A sends B a reply message containing Cs IP address and UDP port number as reported by host C, in addition to Cs IP address and UDP port number as observed by A. (If C is behind a NAT, then these two address/port combinations will be different.) At the same time, host A sends host C a message containing Bs IP address and UDP port numbers - again, both the ones reported by B and the ones observed by A, which will be different if B is behind a NAT.
Now B and C each know that they want to initiate a connection with each other, and they know each others public (NATted) as well as original IP addresses and UDP port numbers. Both B and C now start attempting to send UDP messages directly to each other, at each of the available addresses. If B and C happen to be behind the same NAT, then they will be able to communicate with each other directly using their "originally reported" IP addresses and UDP port numbers.
In the more common case where B and C are behind different NATs, the "originally reported" addresses will be useless because they will both be private IP addresses in different addressing domains. Instead, the IP address/UDP port combinations observed by A can be used in this case to establish direct communication. Although Bs NAT will initially filter out any UDP packets arriving from Cs public (NATted) UDP port directed at Bs public port, the first UDP message B sends to C will cause Bs NAT to open up a new UDP session keyed on Cs public port, allowing future incoming traffic from C to pass through the NAT to B. Similarly, the first few messages from B to C may be filtered out by Cs NAT, but will be able to start passing through the firewall as soon as Cs first message to B causes Cs NAT to open up a new session. In this way, each NAT is tricked into thinking that its respective internal host is the "initiator" of this new session, when in fact the session is fully symmetrical and was initiated (with As help) simultaneously in each direction.
Required NAT Behavior
There is one important requirement that the NATs must satisfy in order for this technique to work: the NATs must be designed so that they assign only one (public IP address, public UDP port) pair to each (internal IP address, internal UDP port) combination, rather than allocating and assigning a new public UDP port for each new UDP session. Recall that a "session" in Internet terminology is defined by the IP addresses and port numbers of both communicating endpoints, so host Bs communication with host A is considered to be one session while host Bs communication with host C is a different session. If Bs NAT, for example, assigns one public UDP port for Bs communication with A, and then assigns B a different public UDP port for the new session B tries to open up with C, then the above technique for peer-to-peer communication will not work because Cs messages to B will be directed to the wrong UDP port.
RFC 3022 explicitly allows and suggests that NATs behave in the former, "desirable" fashion, by maintaining a single (public IP, public port) mapping for a given (internal IP, internal port) combination independent of the number of active sessions involving this mapping. This behavior is not only good for compatibility with UDP applications, but it also helps to conserve the NATs scarce pool of public port numbers. Maintaining a consistent public port mapping does not adversely affect security in any way, either, because incoming traffic can still be filtered on a per-session basis regardless of how addresses are translated. There in fact appears to be no good reason not to implement the desirable behavior in a NAT, except perhaps for the implementation simplicity of naively allocating a new public port for every new session. Unfortunately, RFC 3022 does not require NATs to implement the desirable behavior, which has led me to wonder just how many real NATs actually do, and hence this page.
What NAT Check Does
The program natcheck.c is basically just a program that "pings" a well-known UDP port at two different servers that are publically accessible on the Internet. Both of these servers run the program natserver.c, with the command-line arguments "1" and "2" respectively. In addition, there a third "conspiring" server runs natserver with the command-line argument "3". Whenever each of the first two servers receives a UDP request, it not only sends a reply directly to the sender of that request, but also sends a message to the third server, which in turn "bounces" the reply back to the original client. The effect is that the client will receive not only solicited "ping" replies from the server the request was directed to, but also "unsolicited" replies from the third server.
To determine if the network address translator in use is implementing the desirable behavior of maintaining a single (public IP address, public port) mapping for a given (client IP address, client port), the client program natcheck.c basically just initiates a sequence of simultaneous pings to the first two servers (in case some of the requests or replies are lost in transit) and checks that the clients address and UDP port as reported by both servers is the same. If the NAT naively allocates a new public port for each new session, then the source port as reported by the two servers will be different, and its time to upgrade your NAT.
The replies echoed from the third server are used only to check whether the NAT properly filters out unsolicited incoming traffic on a per-session basis. Since the client never sends any messages to the third server, if the NAT is properly implementing firewall functionality, the client should never see the third servers echoed replies even after opening up active communication sessions with the first two servers.
Enhancements:
- The NAT Check client no longer attempts to guess whether you have Basic NAT or Network Address/Port Translation (NAPT). It turns to be quite difficult to test for this property reliably, because many NAPTs attempt to bind a private UDP port to a public port with the same port number if that port number is available, causing NAT Check to falsely report Basic NAT. The only way to test for this property reliably would be to run NAT Check on at least two client machines simultaneously, and since this property isnt terribly important to P2P apps its just not worth the trouble.
- The NAT Check client now tests for one additional NAT feature, which I call loopback translation. If a NAT supports loopback translation, it means that a host on the private network behind the NAT can communicate with other hosts on the same private network using public (translated) port bindings assigned by the NAT. Most NATs probably do not support this feature yet, but it may become increasingly important in the future where P2P clients may be located behind a common ISP-deployed NAT as well as individual home NATs. More details on loopback translation will appear in the next version of my Internet-Draft, to be released soon.
- The NAT Check client program now has a command-line option, "-v", which turns on verbose messages during the test.
<<lessIf you are accessing the Internet from behind a Network Address Translator (NAT) of some kind, I would appreciate your help in surveying the behavior of different NATs, in terms of how and whether they support a certain technique for enabling peer-to-peer communication between NATted hosts (particularly when both endpoints are behind NATs). Down, you can understand what NAT is.
Suppose there are three communicating hosts: A, B, and C. Host A is a "well-known" Internet server with a permanent IP address, which acts as an "introducer" for the other two nodes. (For example, Host A might be a well-known ultrapeer or a game catalog server of some kind.) Host B, using Host As "introduction" services, would like to establish a direct peer-to-peer connection with host C. Both B and C, however, are behind (probably different) network address/port translators, and neither of them has exclusive use of any public IP address.
To initiate a peer-to-peer connection with host C, host B first sends A a message requesting an "introduction" to host C. A sends B a reply message containing Cs IP address and UDP port number as reported by host C, in addition to Cs IP address and UDP port number as observed by A. (If C is behind a NAT, then these two address/port combinations will be different.) At the same time, host A sends host C a message containing Bs IP address and UDP port numbers - again, both the ones reported by B and the ones observed by A, which will be different if B is behind a NAT.
Now B and C each know that they want to initiate a connection with each other, and they know each others public (NATted) as well as original IP addresses and UDP port numbers. Both B and C now start attempting to send UDP messages directly to each other, at each of the available addresses. If B and C happen to be behind the same NAT, then they will be able to communicate with each other directly using their "originally reported" IP addresses and UDP port numbers.
In the more common case where B and C are behind different NATs, the "originally reported" addresses will be useless because they will both be private IP addresses in different addressing domains. Instead, the IP address/UDP port combinations observed by A can be used in this case to establish direct communication. Although Bs NAT will initially filter out any UDP packets arriving from Cs public (NATted) UDP port directed at Bs public port, the first UDP message B sends to C will cause Bs NAT to open up a new UDP session keyed on Cs public port, allowing future incoming traffic from C to pass through the NAT to B. Similarly, the first few messages from B to C may be filtered out by Cs NAT, but will be able to start passing through the firewall as soon as Cs first message to B causes Cs NAT to open up a new session. In this way, each NAT is tricked into thinking that its respective internal host is the "initiator" of this new session, when in fact the session is fully symmetrical and was initiated (with As help) simultaneously in each direction.
Required NAT Behavior
There is one important requirement that the NATs must satisfy in order for this technique to work: the NATs must be designed so that they assign only one (public IP address, public UDP port) pair to each (internal IP address, internal UDP port) combination, rather than allocating and assigning a new public UDP port for each new UDP session. Recall that a "session" in Internet terminology is defined by the IP addresses and port numbers of both communicating endpoints, so host Bs communication with host A is considered to be one session while host Bs communication with host C is a different session. If Bs NAT, for example, assigns one public UDP port for Bs communication with A, and then assigns B a different public UDP port for the new session B tries to open up with C, then the above technique for peer-to-peer communication will not work because Cs messages to B will be directed to the wrong UDP port.
RFC 3022 explicitly allows and suggests that NATs behave in the former, "desirable" fashion, by maintaining a single (public IP, public port) mapping for a given (internal IP, internal port) combination independent of the number of active sessions involving this mapping. This behavior is not only good for compatibility with UDP applications, but it also helps to conserve the NATs scarce pool of public port numbers. Maintaining a consistent public port mapping does not adversely affect security in any way, either, because incoming traffic can still be filtered on a per-session basis regardless of how addresses are translated. There in fact appears to be no good reason not to implement the desirable behavior in a NAT, except perhaps for the implementation simplicity of naively allocating a new public port for every new session. Unfortunately, RFC 3022 does not require NATs to implement the desirable behavior, which has led me to wonder just how many real NATs actually do, and hence this page.
What NAT Check Does
The program natcheck.c is basically just a program that "pings" a well-known UDP port at two different servers that are publically accessible on the Internet. Both of these servers run the program natserver.c, with the command-line arguments "1" and "2" respectively. In addition, there a third "conspiring" server runs natserver with the command-line argument "3". Whenever each of the first two servers receives a UDP request, it not only sends a reply directly to the sender of that request, but also sends a message to the third server, which in turn "bounces" the reply back to the original client. The effect is that the client will receive not only solicited "ping" replies from the server the request was directed to, but also "unsolicited" replies from the third server.
To determine if the network address translator in use is implementing the desirable behavior of maintaining a single (public IP address, public port) mapping for a given (client IP address, client port), the client program natcheck.c basically just initiates a sequence of simultaneous pings to the first two servers (in case some of the requests or replies are lost in transit) and checks that the clients address and UDP port as reported by both servers is the same. If the NAT naively allocates a new public port for each new session, then the source port as reported by the two servers will be different, and its time to upgrade your NAT.
The replies echoed from the third server are used only to check whether the NAT properly filters out unsolicited incoming traffic on a per-session basis. Since the client never sends any messages to the third server, if the NAT is properly implementing firewall functionality, the client should never see the third servers echoed replies even after opening up active communication sessions with the first two servers.
Enhancements:
- The NAT Check client no longer attempts to guess whether you have Basic NAT or Network Address/Port Translation (NAPT). It turns to be quite difficult to test for this property reliably, because many NAPTs attempt to bind a private UDP port to a public port with the same port number if that port number is available, causing NAT Check to falsely report Basic NAT. The only way to test for this property reliably would be to run NAT Check on at least two client machines simultaneously, and since this property isnt terribly important to P2P apps its just not worth the trouble.
- The NAT Check client now tests for one additional NAT feature, which I call loopback translation. If a NAT supports loopback translation, it means that a host on the private network behind the NAT can communicate with other hosts on the same private network using public (translated) port bindings assigned by the NAT. Most NATs probably do not support this feature yet, but it may become increasingly important in the future where P2P clients may be located behind a common ISP-deployed NAT as well as individual home NATs. More details on loopback translation will appear in the next version of my Internet-Draft, to be released soon.
- The NAT Check client program now has a command-line option, "-v", which turns on verbose messages during the test.
Added: 2006-06-21 License: GPL (GNU General Public License) Price:
737 downloads
Pyspice 0.2
Pyspice is a SPICE pre-processor written in Python, inspired by the Perl SPICE pre-processor spicepp by John Sheahan. more>>
Pyspice is a SPICE pre-processor written in Python, inspired by the Perl SPICE pre-processor spicepp by John Sheahan.
I developed this module as part of my own work and provide it here as a service to the Python and SPICE communities. Additions, suggestions, and usefullness reports are appreciated. It is currently licensed under the GPL.
It was (is currently being) developed with Python 2.4 and uses a few features introduced in 2.4. they relate to (re)sorting the netlist lines.
Main features:
- Each input "card" type has its own object type.
- Netlists are converted into an array of type instances.
- Netlist order is preserved for readability.
- Salient features of pyspice.py:
- Parallel capacitors are combined.
- Parallel MOSFETs are combined.
- Small capacitors are dropped for faster simulation.
Usage:
chmod +x
pyspice.py [options] [-i infile] [-o outfile]
Use pyspice.py -h for all options.
Enhancements:
- At least default (pass through) handling of all element types.
- NOTE: For combining, this uses a global node name scheme. In other words: subcircuits, libraries, etc. are not in a separate node namespace as they should be, beware.
- Changed structure of classes (in LEO), there are base classes that contain common attributes and element classes that define the specific behavior.
- This version _should_ work with any netlist and only touch Ms and Cs, YMMV.
- Work is ongoing on the class structure and most important IMO is getting netlist hierarchy implemented.
<<lessI developed this module as part of my own work and provide it here as a service to the Python and SPICE communities. Additions, suggestions, and usefullness reports are appreciated. It is currently licensed under the GPL.
It was (is currently being) developed with Python 2.4 and uses a few features introduced in 2.4. they relate to (re)sorting the netlist lines.
Main features:
- Each input "card" type has its own object type.
- Netlists are converted into an array of type instances.
- Netlist order is preserved for readability.
- Salient features of pyspice.py:
- Parallel capacitors are combined.
- Parallel MOSFETs are combined.
- Small capacitors are dropped for faster simulation.
Usage:
chmod +x
pyspice.py [options] [-i infile] [-o outfile]
Use pyspice.py -h for all options.
Enhancements:
- At least default (pass through) handling of all element types.
- NOTE: For combining, this uses a global node name scheme. In other words: subcircuits, libraries, etc. are not in a separate node namespace as they should be, beware.
- Changed structure of classes (in LEO), there are base classes that contain common attributes and element classes that define the specific behavior.
- This version _should_ work with any netlist and only touch Ms and Cs, YMMV.
- Work is ongoing on the class structure and most important IMO is getting netlist hierarchy implemented.
Download (0.029MB)
Added: 2006-10-12 License: GPL (GNU General Public License) Price:
1111 downloads
SPServer 0.8
SPServer project is a server framework library written on C++ that implements the Half-Sync/Half-Async pattern. more>>
SPServer project is a server framework library written on C++ that implements the Half-Sync/Half-Async pattern.
SPServer is a server framework library written on C++ that implements the Half-Sync/Half-Async pattern ( http://www.cs.wustl.edu/~schmidt/PDF/HS-HA.pdf ). Its based on libevent in order to utilize the best I/O loop on any platform.
SPServer can simplify TCP server construction. It is a hybrid system between threaded and event-driven, and exploits the advantages of both programming models. It exposes a threaded programming style to programmers, while simultaneously using event-driven style to process network connection.
<<lessSPServer is a server framework library written on C++ that implements the Half-Sync/Half-Async pattern ( http://www.cs.wustl.edu/~schmidt/PDF/HS-HA.pdf ). Its based on libevent in order to utilize the best I/O loop on any platform.
SPServer can simplify TCP server construction. It is a hybrid system between threaded and event-driven, and exploits the advantages of both programming models. It exposes a threaded programming style to programmers, while simultaneously using event-driven style to process network connection.
Download (0.029MB)
Added: 2007-08-11 License: LGPL (GNU Lesser General Public License) Price:
804 downloads
Secleted [ 0 ] software to compare
Copyright Notice:
Software piracy is theft, Using crack, password, serial numbers, registration codes, key generators is illegal and prevent future software development. The above cs search only lists software in full, demo and trial versions for free download. Download links are directly from our mirror sites or publisher sites, torrent files or links from rapidshare.com, yousendit.com or megaupload.com are not allowed