Main > Free Download Search >

Free reliably thesaurus software for linux

reliably thesaurus

Sponsored Links
Sponsored Links
Secleted [ 0 ] software to compare
Results 1 - 15 of about 59
Biblio::Thesaurus 0.27

Biblio::Thesaurus 0.27


Biblio::Thesaurus is a Perl extension for managing ISO thesaurus. more>>
Biblio::Thesaurus is a Perl extension for managing ISO thesaurus.

SYNOPSIS

use Biblio::Thesaurus;

$obj = thesaurusNew();
$obj = thesaurusLoad(iso-file);
$obj = thesaurusRetrieve(storable-file);
$obj = thesaurusMultiLoad(iso-file1,iso-file2,...);

$obj->save(iso-file);
$obj->storeOn(storable-file);

$obj->addTerm(term);
$obj->addRelation(term,relation,term1,...,termn);
$obj->deleteTerm(term);

$obj->isDefined(term);

$obj->describe( { rel=NT, desc="Narrow Term", lang=>"UK" } );

$obj->addInverse(Relation1,Relation2);

$obj->order(rela1, rel2, ....);
@order = $obj->order();

$obj->languages(l1, l2, ....);
@langs = $obj->languages();

$obj->baselang(l);
$lang = $obj->baselang();

$obj->topName(term);
$term = $obj->topName();

$html = $obj->navigate(+{configuration},%parameters);

$html = $obj->getHTMLTop();

$output = $obj->downtr(%handler);
$output = $obj->downtr(%handler,termo, ... );

$obj->appendThesaurus("iso-file");
$obj->appendThesaurus($tobj);

$obj->tc(termo, relation1, relation2);
$obj->depth_first(term, 2, "NT", "UF")

$latex = $obj->toTex( ...)
$xml = $obj->toXml( ...)

ABSTRACT

This module provides transparent methods to maintain Thesaurus files. The module uses a subset from ISO 2788 which defines some standard features to be found on thesaurus files. The module also supports multilingual thesaurus and some extensions to the ISOs standard.

A Thesaurus is a classification structure. We can see it as a graph where nodes are terms and the vertices are relations between terms.

This module provides transparent methods to maintain Thesaurus files. The module uses a subset from ISO 2788 which defines some standard features to be found on thesaurus files. This ISO includes a set of relations that can be seen as standard but, this program can use user defined ones. So, it can be used on ISO or not ISO thesaurus files.

<<less
Download (0.026MB)
Added: 2006-10-10 License: Perl Artistic License Price:
1109 downloads
Thesaurus 0.23

Thesaurus 0.23


Thesaurus is a Perl module that maintains lists of associated items. more>>
Thesaurus is a Perl module that maintains lists of associated items.

SYNOPSIS

use Thesaurus;

my $th = Thesaurus->new( -files => [ file1, file2 ],
-ignore_case => 1 );

@words = $th->find(vegan);

%words = $th->find( Faye );

foreach $word ( @{ $words{Faye} } )
{
#something ...
}

$th->add_file( file1, file2 );

$th->add( [ tofu, mock duck ] );

$th->delete( meat, vivisection );

Thesaurus is a module that allows you to create lists of related things. It was created in order to facilitate searches of a database of Chinese names in Anglicized form. Because there are various schemes to create phonetic representations of Chinese words, the following can all represent the same Chinese character:

Woo
Wu
Ng

Thesaurus can be used for anything that fits into a scalar by using the new method with no parameters and then calling the add method to add data.
Thesaurus also acts as the parent class to several child classes which implement various forms of persistence for the data structure. This module can be used on its own to instantiate an object that lives for the life of its scope.

<<less
Download (0.016MB)
Added: 2007-05-22 License: Perl Artistic License Price:
886 downloads
Thesaurus::DBI 0.01

Thesaurus::DBI 0.01


Thesaurus::DBI is a Perl module that can store and query synonyms (Thesaurus) in an SQL database. more>>
Thesaurus::DBI is a Perl module that can store and query synonyms (Thesaurus) in an SQL database.

SYNOPSIS

use Thesaurus::DBI;

# create new database connection
my $th = new Thesaurus::DBI(dbhost=> localhost, dbname=>thesaurus,dbuser=>user,dbpassword=>pass);

# use existing database connection
my $th = new Thesaurus::DBI(dbhandle => $dbi, dbname=>thesaurus,dbuser=>user,dbpassword=>pass);

# initialize database
$th->create_tables();

# query thesaurus
my @synonyms = $th->find(synonym);

# add synonyms
$th->add([word, synonym]);

# delete word
$th->delete(word);

This subclass of Thesaurus implements persistence by using an SQL database.
This module requires the DBI module from CPAN. To use it with certain database servers, the corresponding database drivers are needed, too. (Mysql -> DBD::mysql)

Please note, that database servers like MySQL doesnt take care of case-sensitivity. So the queries to the thesaurus-database wil all bei case-insensitive.

<<less
Download (0.005MB)
Added: 2007-05-22 License: Perl Artistic License Price:
885 downloads
Easymacs 2.0

Easymacs 2.0


Easymacs is an easy-to-learn, one-size-fits-all configuration for new users of GNU Emacs. more>>
Easymacs is an easy-to-learn, one-size-fits-all configuration for new users of GNU Emacs. The project sets up key bindings that conform to a common denominator of the Gnome/KDE/OS X/Microsoft Windows human interface guidelines, and provides function-key bindings for other powerful Emacs features.
It is fully documented, and the new user can productively edit text right away, without going through the Emacs tutorial. Many commonly-used functions can be accessed without having to learn the "chords" or multiple keystrokes that Emacs uses by default.
Humanists:
Easymacs was designed with the non-programmer in mind, someone who would like to use Emacs to edit mainly text files, especially LaTeX and TEI-conforming XML. Since many aspects of the configuration of Emacs require a certain knowledge of programming, this sort of person might find the default behavior of Emacs too foreign and too hard to reconfigure.
Programmers:
On the other hand, Easymacs is also a great environment for programmers who would like to use Emacs, but dont want to spend the time in learning how to configure it.
Main features:
- All of the usual features of an editor: undo, redo, search and replace, intelligent indentation and wrapping.
- Spell-checking as you type. This distinguishes between true misspellings and words which are used more than once in a file, and so are likely to be correct but unknown. You can correct misspellings with a single keystroke (F8).
- There are many convenient ways of entering non-ASCII text, including Unicode and various exotic encodings.
- Rectangular selection of text, which can be also used to insert the same text in many columns (Ctrl-Return).
- Most file-types define syntax-sensitive folding (F7).
- Visible, persistent bookmarks to mark particular lines in a file (Alt-F2).
- You can search for text in multiple files in a given folder or set of subfolders (Ctrl-Shtf-F9). The output displays a menu of the lines in the different files that match a your pattern, and you can jump from one to the next with a single keystroke (F10 or Alt-`).
- Auto-completion of words based on the content of other open files (F5), or on a dictionary (Shft-F8).
- Multiple cut and paste clipboards (just hit Ctrl-number before cutting, copying or pasting, and the commands will use the clipboard numbered 0-9 for that operation).
- History of clipboard contents: you can browse through the past contents of the clipboard and insert any one of the previous contents (Shft-Ctrl-V).
- Keyboard macros that let you record (Alt-Shft-F5) and play back (Alt-F5) a series of keystrokes, to ease repetitive tasks.
- You can look up the word at the cursor in dictionaries and thesauri with a single keystroke (Alt-F8).
- You can easily switch between open files via a menu (F9), or other quick shortcuts (Shft-F9, Ctrl-F9). There is also a menu of recently opened files (Alt-Shft-F1).
- There is a full command shell for manipulating files and running commands. (Alt-F9).
Enhancements:
- A number of small updates and additions were made.
- At a minimum, the forthcoming Emacs 22 is required.
<<less
Download (4.5MB)
Added: 2007-05-10 License: GPL (GNU General Public License) Price:
897 downloads
Cyphesis 0.5.13

Cyphesis 0.5.13


Cyphesis is a fantasy MMORPG server using AI/A-Life techniques which doesnt have a predefined story. more>>
Cyphesis is a WorldForge server suitable running small games. Cyphesis is also designed by be used as an AI subsystem in a network of distributed servers.
It includes a terrain engine based on the Mercator library, a persistence system based on PostgreSQL, and an AI engine using goal trees implemented in Python. It is the server used in most current WorldForge games.
Current releases of cyphesis use the re-written C++ core, based on the design of the original python core.
Enhancements:
- The way rules data is handled is now much simpler to make it easier for game designers to create what they want.
- A lot of hard-coded functionality has been removed from the compiled core program.
- Core functionality is now associated with properties, and so can be applied to any entity.
- Most of Mason has been reimplemented as task scripts, which are cleaner and more flexible.
- There are more helpful messages when inconsistencies are detected in rule data.
- This release works more reliably as an autopackage.
<<less
Download (6.9MB)
Added: 2007-07-16 License: GPL (GNU General Public License) Price:
832 downloads
classesfaq 0.943

classesfaq 0.943


classesfaq is a Perl module with frequently asked questions about the Perl classes pragma. more>>
classesfaq is a Perl module with frequently asked questions about the Perl classes pragma.
Main features:
- Compile-time classes, no base class required
- Dynamic classes, alter or create at run-time
- Attributes, class and object, private, read-only, public
- Mixins, methods by name or regx, attributes also
- Single and multiple inheritance
- Accessors, optimized, overridable with read-only
- Accessor dispatch methods set and get
- Method declaration, delegation, ABSTRACT and EMPTY
- Separate new and clone methods, overridable
- Optional initialize method, aggregation
- Utility methods: dump, load, CLASS, SUPER
- Dynamically preserved declaration and mixin tracking
- Simplified exceptions, one line exception classes with inheritance trees
- Base exception class, light, robust, traceable
- 8 reusable exception classes in X:: namespace
- Compatible standard internals, easy porting, no surprises
What is the classes pragma?
A simple, stable, fast, and flexible way to use Perl 5 classes. If you look at no other Perl OO module look at this one, really. If you have done OO in Perl you will find this comfortably familiar. If not you may save yourself time and pain learning the classes pragma first or as you learn Perl OO--many have already.
Why should I use the classes pragma?
- Relevant: fills real-world need for conventional Perl OO
- Lazy: 100+ conventional lines reduced to 1
- Simple: standard readable terms, UML friendly
- Stable: 1000+ unit test points, used reliably in large applications
- Portable: OS independent, single file, 100% pure perl
- Fast: benchmarks faster or equal to the long way
- Light: only standard deps, requires greater than 5.6.1
- Sustainable: tag model, clean, commented
- Open: Perl artistic license, multi-language friendly
- Supported: mailing list, site, documented, actively maintained
If for no other reason because it is a new approach.
<<less
Download (0.12MB)
Added: 2007-06-06 License: Perl Artistic License Price:
870 downloads
SubEthaSMTP 1.2.1

SubEthaSMTP 1.2.1


SubEthaSMTP is an easy to understand Java library that provides a receptive SMTP server component. more>>
SubEthaSMTP is an easy to understand Java library that provides a receptive SMTP server component.
By plugging this component into your Java application, you can easily receive SMTP mail using a simple abstract Java interface.
Also included is a small sub-project called Wiser, an easy to use incoming mail testing framework.
Main features:
- A mailing list manager (ie, SubEtha Mail)
- A mail server that delivers mail to user inboxes
- A mail archiver like Mail Archive
- An email test harness (Implemented in this project. Its called Wiser.)
SubEthaSMTP was split out of the SubEtha Mail mailing list manager because it is a useful standalone component. When we wrote SubEtha, the last thing we wanted to do was write our own SMTP server. In our search for a modular Java SMTP component, we examined:
Apache JAMES
JBoss Mail Server
Dumbster
Jsmtpd
JES
Java Mail Server
Since youre reading this page you probably already know what we found: Six different SMTP implementations without the slightest thought given to reusability. Even Jstmpd, which purports to be a "A Modular Java SMTP Daemon", isnt. Furthermore, even though JBoss Mail is in active development, the team was unintersted in componentization of the SMTP processing portion of their server.
During the development of SubEthas testing harness, we tried out the Dumbster software and found that not only was the API difficult to use, it did it not work properly, the developer has not done any development on it in about a year and it does not work reliably on Mac OS X. With two simple classes we re-implemented it as an included project called Wiser.
We hate reinventing wheels. This should be the LAST FREAKING JAVA SMTP IMPLEMENTATION.
Enhancements:
- This release fixes a couple of bugs with SMTP RFC handling.
<<less
Download (0.77MB)
Added: 2007-06-29 License: LGPL (GNU Lesser General Public License) Price:
856 downloads
Atocha 1.0

Atocha 1.0


Atocha is a Python package for parsing and rendering data from Web forms. more>>
Atocha is a Python package for parsing and rendering data from web forms.
Atocha is framework-agnostic, generic, and it should be possible to use it with CGI scripts or to incorporate it in your favourite web application framework.
Just before I decided to write this software (2005-09-30), I had the following problems:
- There was no library that could parse input from widgets and perform automatic types conversions reliably, that was both decent and simple, or that was not tied to a specific web application framework. (A few options were starting to sprout and mature around that time, such as FormEncode);
- I was having lots of trouble in the various data paths of my handlers with type conversions, often having unicode encoding problems;
- I felt that the problem of handling and rendering web forms were really tied closely, and that it could be solved in a generic manner.
At the time, I had written my own web application framework, and a small form library I had copied from somewhere had grown into a messy monster. So I decided to attack the problem directly and rewrite my forms handling generically, with the following goals in mind:
- Reuse the form definition for parsing submitted arguments as well as rendering and displaying data (leverage the knowledge stored in the form definition as much as possible);
- Robustness: an emphasis on strict type checking and robustness via tests;
- Fields automatically perform appropriate type conversion when returning the parsed value to the user; Like desktop UI toolkit widgets, fields may return all sorts of data types. Also, fields can use multiple HTML input widgets, the notion of input and its mechanism are separate.
Essentially, I wanted functionality closer to what desktop UI toolkits provide, which is often not present in web form parsing toolkits.
Main features:
- Generic library that is possible to reused in many frameworks and applications. It is not tied to any storage model or domain model, this library provides the data, and you must then store the data yourself. This makes sense, as user-interfaces may change but the underlying data model remain the same;
- Extensible: it is easy to create and add new field types without having to modify the framework. It is also possible to create renderers for your favourite output library (e.g. Stan)
- Fields may render to multiple input widgets and are consolidated in a single value automatically;
- Internationalization (I18n) of all messages is supported (all messages generated by the library are grouped in a s single place and can be easily customized);
- Supports hidden, disabled, and read-only widgets that can be used for implementing multiple-page forms;
- Supports per-field errors, to be rendered next to the erroneous widgets;
- Supports a UI message and status for the re-rendering a form with errors;
- Could easily be extended to support widgets with JavaScript/AJAX code.
<<less
Download (0.25MB)
Added: 2006-04-07 License: GPL (GNU General Public License) Price:
1295 downloads
Eikazo 0.5

Eikazo 0.5


Eikazo is a GTK and Python based frontend for Sane. more>>
Eikazo is a GTK and Python based frontend for Sane.
Main features:
- To maximize throughput, a new scan is started immediately after a former scan has been finished, if an automatic document feeder is used. Postprocessing and saving of the old scan is done, while the new scan is running.
- more than one output per scan is possible: You can simultaneously save the scanned image into a file and send it to a printer.
- plugin mechanisms for special devices features, for post-scan image processing and for other "storage options".
The device plugin mechanism allows to implement functions to support special device features.
Image enhancement plugins allow to automatically post-process the image. Currently, three plugins exist:
adaptive threshold
"dirt removal"
ImageMagick
The combination of adaptive threshold and dirt removal can give better scan results for "problematic" originals, for example, if you want to extract the text from a paper with "shaded background", from an stained original, or if you cant reliably predict the density of the ink of the text. See the sample images samples/1.tif (simple fixed threshold, set in the scanner), samples/2.tif ("automatic threshold" from another scanner), samples/3.tif (grayscale scan) and samples/4.tif (adaptive threshold).
The ImageMagick plugin is probably not very useful in many cases; some of the provided options are procesed very slow -- in other words: it is mostly intended to show how to integrate an external image filter than to be directly useful.
<<less
Download (0.52MB)
Added: 2006-09-29 License: GPL (GNU General Public License) Price:
1120 downloads
SpamTestBuddy 0.92

SpamTestBuddy 0.92


SpamTestBuddy is a simple, light-weight, multiple-input spam scoring tool. more>>
SpamTestBuddy is a simple, light-weight, multiple-input spam scoring tool. SpamTestBuddy project is standalone and can be used with simple procmail rules without root access or daemons. Features built-in support for simple DNS checks including DNSBL (DNS-based blocklist) queries, and can scan headers from filters such as SpamProbe, QSF, DSPAM that you already use.
The configuration is flexible and easy to edit in a human readable file. Different tests can add or remove from the total score.
(I am not trying to re-invent SpamAssassin. That is a very powerful piece of software with all the features you need. It is also somewhat large and is a greater challenge to install. SpamTestBuddy will just help you bring together existing scores from filters you already use, with a few useful extra tests thrown in. For an all-in-one solution, try SpamAssassin).
Tested under Linux, FreeBSD, and NetBSD.
COMMON USES
1) Combining more than one external filter:
If you have a number of filters that output a numeric probability or score, you can combine them together using +TestHeaderFloat and make a decision on the total (floating point) score. Examples of filters which integrate seamlessly are SpamProbe, QSF, DSPAM, CRM114.
2) Querying DNSBL (DNS based blocklists, real time lists) or local IP files:
Typically this is done by mail servers at the time of mail receipt. However, there are advantages to doing these "RBL" lookups later. SpamTestBuddy will let you query multiple real-time lists for fresh data on known spam sources, abusive networks, etc. You can combine the results with your other statistical body-reading filters. You can also use TestFileIP to look up the IP in a local text file, such as a custom whitelist or blacklist.
3) Reducing false positives from other filters:
You can use SpamTestBuddy as a secondary filter to interpret existing scores differently. Alternatively, you can make a more conservative configuration by combining scores. This may be helpful for revisiting classification errors
4) Parsing the IP address of the sender
The IP address of the SMTP server which relayed mail is always visible in the Received headers, but parsing and extracting the correct IP address is hard to do reliably with procmail recipes alone. SpamTestBuddy can pick out the correct address by applying SkipReceived, a list of networks you define to consider local and ignore. The resulting IP address is conveniently displayed in the new X-SpamTestBuddy header, simplifying your procmail recipes.
Enhancements:
- This is the first public release of this software.
- The configuration file was enhanced for ease of use.
- DNSBL (RBL) support was added.
<<less
Download (0.008MB)
Added: 2007-01-16 License: Free To Use But Restricted Price:
1011 downloads
Low Resolution Modeline Calculator 0.9.2

Low Resolution Modeline Calculator 0.9.2


Low Resolution Modeline Calculator is a modeline calculator for legacy CRT displays. more>>
Low Resolution Modeline Calculator is a modeline calculator for legacy CRT displays, including TVs, arcade monitors, and VGA monitors.
Low Resolution Modeline Calculator can also be used to calculate low resolution modelines for modern multisync PC monitors.
As its name implies, it is not designed for calculating large resolutions, resolutions that operate over 65kHz.
Options:
-v, --vsync
Calculate the nearest mode in vertical synchronization.
-b, --bestscan
Calculate the nearest best scan mode.
-i, --interlace
Include support for interlaced calculations. Interlaced modes are not supported by many video cards. You should only enable this option if you know your video card supports them.
-d, --doublescan
Include support for doublescanned calculations. Doublescanned modes are not supported by many video cards. You should only enable this option if you know your video card supports them.
-n, --nostretch
Do not stretch modes that are out of range for your monitor. You should use this option if you know that your application does not support integer stretching.
-y, --ystretch
Assume fractional stretching of the y-resolution. You should use this option if you know that your application supports fractional stretching of the y-resolution and you want to stretch an underscanned mode so that it fills the entire screen.
-l, --lowpclock
Many video cards do not reliably support pixel clocks lower than 8mHz. If you know that your video card and its driver support pixel clocks lower than 8mHz, then you should use this option.
-h, --highpclock
Most X11 video card drivers do not support pixel clocks lower than 12mHz. In some cases your video card may not support pixel clocks lower than 12mHz either (rare). If you know that your video card (or your video card driver) does not support pixel clocks lower than 12mHz, then you should use this option.
-3x4
Stretch the horizontal resolution so that the mode has a 3:4 aspect ratio. You can use this option to correctly display vertical resolutions on a horizontal monitor.
-x, --X11R6
Print modeline in X11 format (default).
-f, --fb
Print modeline in fbset format.
-a, --advmame
Print modeline in AdvanceMAME format.
-s, --SDL
Print modeline in X11 format to stdout and print AdvanceMAME X11 configuration to stderr.
-p, --powerstrip
Print modeline in PowerStrip format.
-pal
Calculate modelines for a PAL Television (15.625kHz).
-ntsc
Calculate modelines for a NTSC Television (15.73426kHz).
-cga
Calculate modelines for a standard resolution arcade monitor (15.7500kHz).
-ega
Calculate modelines for a medium resolution arcade monitor (24.960kHz).
-vga
Calculate modelines for a standard VGA monitor (31.500kHz).
-d9200
Calculate modelines for a Wells-Gardner 9200 arcade monitor (15kHz, 25kHz, 31kHz).
-multi
Calculate modelines for a Multisync PC monitor (default)
Enhancements:
- The --reference option works correctly.
- The DOS version compiles with libxml.
<<less
Download (0.30MB)
Added: 2006-01-01 License: GPL (GNU General Public License) Price:
1395 downloads
NAT Check 1

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.
<<less
Added: 2006-06-21 License: GPL (GNU General Public License) Price:
737 downloads
Jagacy 3270 Emulator 1.5.8b

Jagacy 3270 Emulator 1.5.8b


Jagacy 3270 Emulator is a feature-rich 3270 terminal emulator. more>>
Jagacy 3270 Emulator is a feature-rich 3270 terminal emulator. It supports SSL, TN3270E, and over thirty languages. The project does not contain the screen-scraping library, and is a cost effective solution for a stand-alone Java 3270 terminal emulator.
The emulator can be configured to help create screen-scraping applications. Developers can also develop their own custom terminal emulators (with automated logon and logoff). Jagacy 3270 screen-scraping is faster, easier to use, and more intuitive than HLLAPI. It excels in creating applications reliably and quickly.
Main features:
- 100% pure Java.
- Feature rich 3270 terminal emulator.
- SSL support.
- Extended TN3270 (TN3270E) support.
- 17 different terminal types (including 132 columns).
- Internationalization support. Over 30 different languages supported.
- Configurable using properties, if desired. No changes necessary when host name or screens change.
- Easily create a custom 3270 terminal emulator.
- Small footprint (less than 150K). Runs efficiently within the Eclipse and NetBeans IDEs.
- Can display the 3270 session in a window while an application is running.
- Includes a full-featured 3270 terminal emulator tailored to developing and debugging applications.
Enhancements:
- Add features/limitations/changes here
<<less
Download (1.3MB)
Added: 2007-07-27 License: GPL (GNU General Public License) Price:
880 downloads
PDL::MatrixOps 2.4.3

PDL::MatrixOps 2.4.3


PDL::MatrixOps Perl module contains some useful Matrix operations. more>>
PDL::MatrixOps Perl module contains some useful Matrix operations.

SYNOPSIS

$inv = $a->inv;

$det = $a->det;

($lu,$perm,$par) = $a->lu_decomp;
$x = lu_backsub($lu,$perm,$b); # solve $a x $x = $b

PDL::MatrixOps is PDLs built-in matrix manipulation code. It contains utilities for many common matrix operations: inversion, determinant finding, eigenvalue/vector finding, singular value decomposition, etc. PDL::MatrixOps routines are written in a mixture of Perl and C, so that they are reliably present even when there no FORTRAN compiler or external library available (e.g. PDL::Slatec or PDL::GSL).

Matrix manipulation, particularly with large matrices, is a challenging field and no one algorithm is suitable in all cases. The utilities here use general-purpose algorithms that work acceptably for many cases but might not scale well to very large or pathological (near-singular) matrices.

Except as noted, the matrices are PDLs whose 0th dimension ranges over column and whose 1st dimension ranges over row. The matrices appear correctly when printed.

These routines should work OK with PDL::Matrix objects as well as with normal PDLs.

<<less
Download (2.1MB)
Added: 2007-07-04 License: Perl Artistic License Price:
843 downloads
libpqxx 2.6.5

libpqxx 2.6.5


libpqxx is the official C++ API for writing client programs that talk to the PostgreSQL database management system. more>>
libpqxx is the official C++ API for writing client programs that talk to the PostgreSQL database management system.

This library works on top of the C-level API library, libpq. You will need libpq in order to use libpqxx.

The first thing youre likely to notice in programming with libpqxx is that unlike other libraries, it revolves entirely around transactions. Transactions are a central concept in database management systems, but they are widely underappreciated among application developers. Another well-known open source database system, MySQL, never even got around to implementing them at all in their own engine, relying on a third-party replacement engine (now owned by Oracle) to provide this functionality instead.

It may sometimes be possible to build limited applications reliably without serious use of transactions. More usually, however, transactions are designed without transactions simply because the developers arent aware of the risks they are taking, and any data loss is rare or small enough not to be noticed. That kind of design was not considered acceptable for libpqxx.

With conventional database APIs, you issue commands and queries to a database session or connection, and optionally create the occasional transaction. In libpqxx you start a transaction inside the connection first, do your SQL work using that transaction, then commit the transaction when its complete. There are several types of transactions with various "quality of service" properties; if you dont really want to use transactions at all, one of the available transaction types is called nontransaction. This transaction type provides classic, nontransactional behaviour.

Every command or query issues a result object, which is really a smart pointer so it can be copied around without incurring much cost in terms of performance. No need to write special code to check these for success; error conditions are converted to regular C++ exceptions. Result objects can be kept around for as long as they are needed, completely separate from the connections and transactions that originated them.
<<less
Download (3.8MB)
Added: 2006-03-10 License: BSD License Price:
1325 downloads
Secleted [ 0 ] software to compare
  • Page: 1 of 4
  • 1
  • 2
  • 3
  • 4