condition
Ttyutils 1.4.2 / 2.0.12
UNIX/Linux terminal utilities more>>
Ttyutils 1.4.2 / 2.0.12 is created as a suite of UNIX/Linux terminal utilities which includes ttyexec, ttylook, ttyadmin, and a few extension programs. ttyexec execute command on a pseudo terminal, capture all stdandard output from command, pass them to built-in virtual terminal emulator and real terminal.
Users feel no differ between ttyexec executed command and direct executed command. By virtual terminal emulator, administrator can watch specific condition to triger event. for example, user want to execute a program by other program status, but want not or can not modify that program, in such case, ttyexec is useful.
ttyadmin is a administrator tool, which use ncurses(3X) window interface, view and control exists ttyexec instances. ttylook similarity BSD watch(1) program, but has not too many limits, it can easy connect to exists ttyexec instance, snoop on that terminal output, or input data to that terminal if enter writable mode. Extension programs includes ttyfeed, ttysnap and so on, each of them support `--help command line option. Ttyutils has not-bad manual in .info, .html, .pdf, and .ps format, thanks for GNU texinfo(5).
Enhancements:
- New plugin framework(beta)
- Improve on Lua socket module
- Add Lua iconv, zlib, crypto modules
- Improve on Python language binding
- Add TCL language binding(beta)
- Few bug fix and misc optimization

Java Clazz Utils 1.2.2
Java Clazz Utils offers you a full-featured and crossplatform Java bytecode viewer and decompiler which can support latest Java versions (from 1.4 till 1.6). more>>
Java Clazz Utils 1.2.2 offers you a full-featured and crossplatform Java bytecode viewer and decompiler which can support latest Java versions (from 1.4 till 1.6). It can be used both as command line tool and user application with Swing interface. It contains InfoJ, Decompiler and jclazz-GUI.
Major Features:
- InfoJ can be used to generate information about Java class. The output includes all possible data that can be extracted from class file: fields, methods, attributes, access flags, signatures, debug information, opcodes etc.
- Decompiler can be used to reproduce Java source code from compiled Java class file. It uses debug information to produce Java code which is nearly the same as original source file. Nevertheless, there are several restrictions and Java code constructions that prevent decompiler from producing the same code as original and even correct Java code. You can find out more about these cases below on this page.
- jclazz-GUI is user-friendly interface for quick start and easy to use.
Enhancements:
- Save of decompiled file writes to predefined file name - Fixed
- Condition structures "condition ? operation1 : operation2" were decompiled incorrectly - Fixed
- URL to bug reporting page is corrected
Java embedded SQL(unix) 1.08
Subset of SQL for specifying non-procedural queries for Java objects more>> Subset of SQL for specifying non-procedural queries for Java objects, index access based on T-Tree, parallel excecution of requests
JSQL is subset of SQL languages, which can be used to select objects instances according to selection condition. JSQL can be used for implementing personal minidatabase, as tool for dynamic compilation and execution of user requests. JSQL uses notation more popular for object-oriented programming then for relational database. Table rows are considered as object instances and the table - as class of these objects. Unlike SQL, JSQL is oriented on work with objects instead of SQL tuples. So the result of each query execution is a set of objects of one class. The main differences of JSQL from standard SQL are:
There are no joins of several tables and nested subqueries. Query always returns set of objects from one table.
Standard C types are used for atomic table columns.
There are no NULL values, except null references. I am completely agree with C.J. Date critics of three-value logic and his proposal to use default values instead.
Arrays can be used as record components. Special exists quantor is provided for locating element in arrays.
User methods can be defined for table records (objects) as well as for record components.
References between objects are supported including automatic support of inverse references.
As far as query language is deeply integrated with Java language, case sensitive mode is used for language identifiers as well as for keywords.
No implicit conversion of integer and floating types is done to string representation. If such conversion is need, it should be done explicitly.<<less
bzr-hudson 1.0 Beta 1
Bazaar plugin for Hudson more>>
Requirements:
- Bazaar Revision Control System: bzr >= 1.9
- xmloutput >= 0.8.2
Data::BenchmarkResults 0.01
Data::BenchmarkResults is a Perl extension for averaging and comparing multiple benchmark runs. more>>
SYNOPSIS
use Data::BenchmarkResults;
$conditionA_results = new Data::BenchmarkResults;
$conditionB_results = new Data::BenchmarkResults;
#Load test result runs for the first condition
$conditionA_results->add_result_set("test1","run1",@data1);
$conditionA_results->add_result_set("test2","run1",@data2);
$conditionA_results->add_result_set("test1","run2",@data3);
$conditionA_results->add_result_set("test2","run2",@data4);
#Load test result runs for the second condition
$conditionB_results->add_result_set("test1","run1",@data5);
$conditionB_results->add_result_set("test2","run2",@data6);
$conditionB_results->add_result_set("test1","run1",@data7);
$conditionB_results->add_result_set("test2","run2",@data8);
#Average (mean average) the results of all the the runs of test1
# w/o tossing the highest and lowest values (replace the 0 with 1to
# toss the highest and lowest values
my $computed = $conditionA_results->process_result_set("test1","mean",0);
my $computed2 = $conditionB_results->process_result_set("test1","mean",0);
#OR process all of the tests at once (tossing the highest and lowest value) :
$conditionA_results->process_all_result_sets("mean",1);
$conditionB_results->process_all_result_sets("mean",1);
#Print out all of the processed test results
print "Condition A results.... nn"
$conditionA_results->print_calculated_sets;
print "Condition B results.... nn"
$conditionB_results->print_calculated_sets;
#Compare results of test1 of condition B against those with condition A
# as a percentage change from A to B
my $compared = $conditionB_results->compare_result_set($conditionA_results,"test1");
#OR compare all the processed test results from one condition to those of another
my $total_comparison = $conditionB_results->compare_all_result_sets($conditionA_results);
Snare 1.2
Snare is an audit subsystem for Linux. more>>
SNARE is divided into three key components:
The Kernel changes
In order to collect event log data, Snare needs to add auditing support into the operating system. You can choose to either install a binary version of the kernel, with Snare already integrated, or you can apply a patch to your kernel source.
Although we try hard to make Snare as easy to install as possible, there are hundreds of different distributions and kernel versions, and it would be an immense task to build Snare for each variant. We are hoping that recent efforts towards creating a native auditing subsystem for linux will soon mean that the kernel component of the Snare for Linux agent, will no longer be required.
The Snare Audit Daemon
The Snare audit daemon acts as an interface between the Linux kernel, and the security administrator. It allow you to turn on events, filter the output, and potentially push audit log information back to a central location for collection, analysis and archival.
The Snare Micro-Web Server, and Audit GUI
The Snare audit GUI provides a graphical user interface to the Snare audit daemon. It allows you to add, remove or modify audit objectives, and change reporting options.
The Micro-Web Server, is embedded in the audit daemon, and provides a very simple configuration capability that can be managed from your web browser.
Enhancements:
- Added support for compound matching elements (e.g. name=/etc/* name!=/etc/blah/*)
- Improved authentication support for remote control interface
- Updated SELinux policy (RHEL5 support)
- Improved automatic audit configuration using objective returncode detection to pre filter unnecessary records
- Fixed element matching error
- Fixed error in criticality reporting (e.g. criticality was always zero)
- Fixed race condition that could potentially clear all audit rules on restart
- Improved effeciency allowing a higher throughput
- Improved installer for easier deployment
- Disabled local logging by default
Getopt::ExPar 0.01
Getopt::ExPar contains extended parameters command line parser. more>>
SYNOPSIS
use Getopt::ExPar;
my(@PDT, @MM, %OPT);
ExPar @PDT, @MM, $OPT;
EXPORT
use Getopt::ExPar exports the sub ExPar into your name space.
ExPar is a perl5 module used to parse command line parameters. This package uses the @PDT, Parameter Description Table, and the @MM, Message Module, to return %OPT which is a hash reference containing the command line option data. The function of Getopt::ExPar is based on Getopt::EvaP, created by Stephen O. Lidie.
Introduction
The ExPar function parses a perl command line. Using the option definitions in the @PDT, argument types are checked and the arguments themselves may be checked against a specified range or pattern. By using both @PDT and @MM, several types of help may be retured to the user. ExPar handles command lines with this format:
command [-parameters] [file_list]
where any parameters and file_list are optional.
Parameter Description Table (PDT) Syntax
Here is the PDT syntax. Optional constructs are enclosed in [], and the | character separates possible values in a list.
PDT [program_name, alias]
[parameter_name[, alias]: type [pattern | range] [ = [default_variable,] default_value]]
PDTEND [flag_list]
flag_list is one or more of the following flags: optional_file_list | required_file_list | no_file_list: specifies condition of list of files at end of command line. (only one of these may be specified) abbreviations: allows for abbreviations of commands or aliases as long as enough of the command is given to make it distinguishable from all others. If not, a message is printed so the user may be more specific. switchglomming: allows for multiple single-letter switch options to be specified as single option (must be first option). pdt_warnings: for debugging a @PDT, it prints out messages that are not necessarily errors, like inconsistent number of default values in a list, etc.
The default_variable is an environment variable - see the section Usage Notes for complete details.
So, the simplest possible PDT would be:
PDT
PDTEND
This PDT would simply define a -help switch for the command, but is rather useless.
A typical PDT would look more like this:
PDT frog
number, n: integer = 1
chars, c: string = "default_string"
PDTEND no_file_list
This PDT, for command frog, defines two parameters, number (or n), of type integer with a default value of 1, and chars (or c), of type string with a default value of "default_string". The PDTEND no_file_list indicator indicates that no trailing file_list can appear on the command line. Of course, the -help switch is defined automatically.
Each of these options may be further refined by using a range and a pattern, respectively:
PDT frog
number, n: integer (((#100, the # is implied. Other simple conditions are < and == (a single = is accepted as ==, not an assignment). Ex: This condition: (#>10, #<<less
Sub::PatMat 0.01
Sub::PatMat can call a version of subroutine depending on its arguments. more>>
SYNOPSIS
use Sub::PatMat;
# basics:
sub fact : when($_[0] $b) { 1 }
print join ", ", sort mysort (3,1,2);
# intuiting parameter names:
sub dispatch : when($ev eq "help") { my ($ev) = @_; print "helpn" }
sub dispatch : when($ev eq "blah") { my ($ev) = @_; print "blahn" }
dispatch("help");
dispatch("blah");
# no fallback, this will die:
dispatch("hest"); # dies with "Bad match"
# silly
sub do_something : when(full_moon()) { do_one_thing() }
sub do_something { do_something_else() }
The Sub::PatMat module provides the programmer with the ability to define a subroutine multiple times and to specify what version of the subroutine should be called, depending on the parameters passed to it (or any other condition).
This is somewhat similar to argument pattern matching facility provided by many programming languages.
To use argument pattern matching on a sub, the programmer has to specify the when attribute. The parameter to the attribute must be a single Perl expression.
When the sub is called, those expressions are evaluated consequitively until one of them evaluates to a true value. When this happens, the corresponding version of a sub is called.
If none of the expressions evaluates to a true value, a Bad Match exception is thrown.
It is possible to specify a fall-back version of the function by doing one of the following:
specifying when without an expression
specifying when with an empty expression
not specifying the when attribute at all
Please note that it does not make sense to specify any non-fall-back version of the sub after the fall-back version, since such will never be called.
There is an additional limitation for the last form of the fall-back version (the one without the when attribute at all), namely, it must be the last version of the sub defined.
It is possible to specify named sub parameters in the when-expression. This facility is highly experimental and is currently limited to scalar parameters only. The named sub parameters are extracted from expressions of the form
my (parameter list) = @_;
anywhere in the body of the sub.
Version restrictions:
- The ability to intuit parameter names is very limited and without doubts buggy.
- The when attribute condition is limited to a single Perl expression.
Enhancements:
- Perl
Text::MetaText 0.22
Text::MetaText is a Perl extension implementing meta-language for processing template text files. more>>
SYNOPSIS
use Text::MetaText;
my $mt = Text::MetaText->new();
# process file content or text string
print $mt->process_file($filename, %vardefs);
print $mt->process_text($textstring, %vardefs);
# pre-declare a BLOCK for subsequent INCLUDE
$mt->declare($textstring, $blockname);
$mt->declare(@content, $blockname);
SUMMARY OF METATEXT DIRECTIVES
%% DEFINE
variable1 = value # define variable(s)
variable2 = "quoted value"
%%
%% SUBST variable %% # insert variable value
%% variable %% # short form of above
%% BLOCK blockname %% # define a block blockname
block text...
%% ENDBLOCK %%
%% INCLUDE blockname %% # include blockname block text
%% INCLUDE filename %% # include external file filename
%% INCLUDE file_or_block # a more complete example...
variable = value # additional variable definition(s)
if = condition # conditional inclusion
unless = condition # conditional exclusion
format = format_string # printf-like format string with %s
filter = fltname(params) # post-process filter
%%
%% TIME # current system time, as per time(2)
format = format_string # display format, as per strftime(3C)
%%
CryptNET Keyserver 0.2.3
CryptNET Keyserver is an effort to develop an openPGP (RFC2440) compliant public keys server. more>>
It is written in C, and runs on Linux. It uses PostgreSQL for key storage, and supports the hkp protocol (it can interface with GnuPG and NAI PGP). The keyserver is mostly functional, and there is a link to a running copy on the homepage.
Main features:
- openPGP (RFC2440) compatible (version 3 and version 4 packets)
- Validate keys packets and subpackets
- Tied to free RDBMS (postgreSQL)
- Interface with programs through standard keyserver interface
- Capable of updating previously stored keys
- Key caching
- Fully multi-threaded
- Fully (cryptographically) validate signatures
- Handle signature expiration
- Handle key expiration and revocation
- Allow users to submit and retrieve keys through web browser
- Allow users to submit and retrieve multiple keys as key ring through web browser
- Synchronize with other keyservers through HTTP protocol (PKS)
Enhancements:
- Feature Request Completed: [ 1000332 ] sigalm to prevent cpu throttle (vab)
- Feature Request Completed: [ 1192629 ] (Optional) Large File Support (vab)
- Fixed Bug: [ 999662 ] Legacy gcc compatibility (pacoje)
- Fixed Bug: [ 999656 ] tcpwrappers problems in-addr.arpa (pacoje)
- Fixed Bug: [ 999925 ] cks import problems (vab)
- Fixed Bug: [ 969089 ] cks_import skips last pubkey in keyring (vab)
- Fixed Bug: [ 999676 ] cks import problems (vab)
- Fixed Bug: [ 966767 ] cks_import race condition on import error (vab)
- Fixed Bug: [ 969739 ] Valgrind: parse_attribute_sub_packets (vab)
- Fixed Bug: [ 969734 ] Valgrind: Memory Violation (vab)
- A context was created to handle state information (vab)
- sql updates (tab vs. spaces bug in formatting of cks.sql.in) (vab)
- General code clean-up (Function Signature Changes) (vab)
- cks_install.pl removed (Integrated into Autoconf/Automake) (vab)
- Fixes to correct most -Wall warnings (vab)
- Fix for memory leak in parse.c (vab)
- Code to force cksd to exit if it is running with root privileges (vab)
- cksd.init rewritten (vab)
- Support of storage of pid in /var/run for init system usage (vab)
- CGI processing code clean-up (vab)
- Creation of etc dir in project root w/ separate Makefile (vab)
- Clean-up of HTML pages (vab)
- Removal of db2 hooks - no longer have access to the software (vab)
- Removal of some out dated documentation (vab)
- Fix for potential read_line race condition (vab)
- Default user for keyserver changed to "cks" (vab)
- Default user for webserver changed to "apache" for Gentoo (vab)
- New hook HTML page for Web Of Trust Information (vab)
- HTML Layout bug fix in keys.c print_uid: echo_signatures (vab)
- SIGPIPE in now ignored. SIGTERM and SIGHUP are now caught (vab)
Firenze 2.1
Firenze project helps you to easily subscribe to your favorite Podcast feeds and reveive them. more>>
There is no gui in the works, and because of the intended simplicity of this program, one is not planned in the future either.
Also, Firenze is not intended to replace any other Podcaster receiver (like juice, jpodder or itunes). Firenze has the single goal of downloading enclosures from subscripted feeds fast and efficiently.
Main features:
- Simplicity and ease of use
- Command-line scriptable
- Multi Platform program (Java based)
- Scheduled downloads
- User-defined destination file and folder name (support for all rss tags included itunes tags)
- User-defined download condition
- Multiple simultaneous downloads
- Single enclosure download
- Proxy Server support
- Multiple simultaneous downloads
- Conditional download
- Split mp3 file after download
- Launch command after download
- Highly configurable for advanced users with BeanShell support
V language 0.004
V language is a tiny concatenative language implemented for experimentation. more>>
The source is under Public Domain (un-copyrighted.)
The full featured language is on top of JVM, A native version (in alpha state) is also there in the codebase.
To run it, extract the distribution in any directory and do #gmake run.
gmake
gmake run
V
|
The language is a close relative of postscript, forth and joy. and is stack based. ie:
|2 3 *
=6
|2 3 * 5 +
=11
See status for a tutorial and more info.
The Functions available in V are available in this page: functions
(The releases are out of date and multiple fixes have gone in. Please check out and build rather than use them.)
Example functions in V. getting the roots (with out using the stack shuffling word view)
[quad-formula
[a b c] let
[minisub 0 b -].
[radical b b * 4 a * c * - sqrt].
[divisor 2 a *].
[root1 minisub radical + divisor /].
[root2 minisub radical - divisor /].
root1 root2
].
|2 4 -30 quad-formula ??
=(-5.0 3.0)
using view
[quad-root
[a b c : [0 b - b b * 4 a * c * - sqrt + 2 a * /]] view i
].
|2 4 -30 quad-root ??
=(3)
contrast this with the definition in scheme here
(define quadratic-formula
(lambda (a b c)
(let ([minusb (- 0 b)]
[radical (sqrt (- (* b b) (* 4 ( * a c))))]
[divisor (* 2 a)] )
let ([root1 (/ (+ minusb radical) divisor)]
[root2 (/ (- minusb radical) divisor)])
(cons root1 root2)))))
Definition of Qsort.
[qsort
#definitions
[joinparts [pivot [*list1] [*list2] : [*list1 pivot *list2]] view].
[split_on_first_element uncons [>] split&].
#args starts for binrec. notice that 2 arguments (termination condition
#and its result) are on first line.
[small?] []
[split_on_first_element]
#binrec recurses on the result of split_on_first_element before applying joinparts.
[joinparts]
binrec].
Some explanations.
The first and second lines (terminated by .) are internal function definitions
(Notice how qsort is also terminated by .) . is the definition syntax in V.
The first function joinparts
============================
The function joinpart contains just an application of the operator view.
view is list translator. It takes a list of the form [template : result]
then it tries to apply the template to the current stack. If it can be applied on the
stack, then the arguments named in the template are bound to values in stack. The result is then processed, and all the bound elements in result are replaced by their values.
[pivot [*list1] [*list2] : [*list1 pivot *list2]] view expects 3 arguments on the stack,
the first a single element pivot, then two lists list1 and list2.
It returns a list that is composed of elements of list1 followed by pivot
followed by elements of list2 (as defined in result - RHS of :).
ie:
44 [1 2 3] [5 6 7] [pivot [*list1] [*list2] : [*list1 pivot *list2]] view ??
=> [1 2 3 44 5 6 7]
(The function ?? is used to print out the elements in the stack now.)
The second function split_on_first_element
==========================================
The definition is [uncons [>] split&]
The uncons splits a list into the first element and the rest of the list.
ie:
[1 2 3 4 5] uncons ??
=1 [2 3 4 5]
split& takes two arguments, the first is the function F to split a list with,
and the second the list itself. All elements in the list that passes the function F
is put into the first list, and all that do not are put into the second list.
ie:
[1 2 3 4 5 6 7] [4 >] split& ??
=[5 6 7] [1 2 3 4]
The function F can also take an argument from the stack. so this also works.
4 [1 2 3 4 5 6 7] [>] split& ??
=[5 6 7] [1 2 3 4]
Thus the split_on_first_element takes the first element of a list, and split that
list based on that element as a filter.
binrec
=======
binrec expects 4 arguments,
Arg1 is the terminating condition,
Arg2 is the result if the terminating condition is met.
Arg3 is an executable statement that returns two entities.
The entire binrec statement is performed on each of the
two entities until the terminating condition is met.
Arg4 is what to do with the result of the previous statement.
Algorithm.
Here, the small? checks if the list is empty or contains just one element.
if it is, then the result is arg2 - []
ie:
[] small? ??
=true
[1] small? ??
=true
[1 2 3 4] small? ??
=false
split_on_first_element takes is executed on all lists that are larger than size 1
and as explained above, splits them into two based on the first element.
on the resultent lists, the entire qsort is performed again due to binrec.
The last joinparts takes these elements (pivot list1 list2) which are present now
on the stack, and combines them to produce a single sorted list.
A slightly friendlier function (with out the binrec.)
[qsort
[joinparts [pivot [*list1] [*list2] : [*list1 pivot *list2]] view].
[split_on_first_element uncons [>] split&].
[small?]
[]
[split_on_first_element [list1 list2 : [list1 qsort list2 qsort joinparts]] view i]
ifte].
The binrec and friends are more powerful than the explicit recursion done above, but for people new to concatenative languages, this kind of recursion may look more intuitive.
Enhancements:
- The language has become relatively stable.
- Lots of bugfixes were made in scope handling.
- Tree operations were added.
- Generic combinators were moved out into a separate library.
Botan 1.6.3 / 1.7.0
Botan is a C++ crypto library. more>>
It runs on most Unix/POSIX systems and Win32, and on many hardware platforms, including x86, x86-64, IA-64, PowerPC, SPARC, Alpha, MIPS, and ARM. See here for more information about portability.
The library proper is written in ISO C++, but there are optional modules which can be compiled into the library, providing features like zlib compression, high-resolution timers, and automatic entropy gathering.
Botan also has support for the crypto accellerators made by AEP Systems, and can easily be extended to support other hardware accellerators in the future.
It was originally written and is currently maintained by Jack Lloyd, though several others have contributed bug fixes, modules, and other help. Read doc/thanks.txt, included in the distribution, for a list of their names.
Whats New in 1.7.0 Development Release:
- DSA parameter generation has been changed to match the new system in FIPS 186-3.
- OIDs for the Rabin-Williams and Nyberg-Rueppel public key signature schemes have been added, so those keys can now be imported and exported using the same system used for RSA and DSA keys.
- In addition, those keys can be used in X.509 certificates.
- Portions of the API documentation have been reorganized and rewritten to help cover the most common tasks first.
Whats New in 1.6.3 Stable Release:
- A problem with building in debug mode on Visual Studio has been resolved.
- A race condition in the algorithm lookup cache that could cause memory corruption in multi-threaded application code has been fixed.
- All users of Botan in multi-threaded systems should upgrade to this release.
Qfsm 0.44
Qfsm project is a graphical editor for finite state machines written in C++ using Qt the graphical Toolkit from Trolltech. more>>
Finite state machines are a model to describe complex objects or systems in terms of the states they may be in. In practice they can used to design integrated circuits or to create regular expressions, scanners or other program code.
Main features:
- Drawing, editing and printing of diagrams
- Binary, ASCII and "free text" condition codes
- Multiple windows
- Integrity check
- Interactive simulation
- AHDL/VHDL/Verilog HDL/KISS export
- State table export in Latex, HTML and plain text format
- Ragel file export (used for C/C++, Java or Ruby code generation)
Enhancements:
- English user documentation was written.
- The possibility of default transition was introduced.
- Ragel file export was added.
- The input condition "any" was introduced.
- The possibility to invert transition conditions was introduced.
- More arrow types were added.
- The "Free Text" type was added.
- The "print header" option was added.
Diogene87 1.0.0 RC3
Diogene87 is a powerful scheduler system for GNU/Linux. more>>
Diogene87 is a powerful scheduler system for GNU/Linux. Diogene87 is a french project and is written in C.
Diogene87 provides a daemon dio87d which can be control with the dio87c communication utility. If you want to use a graphical user interface, please use Narcisse81.
Main features:
- centralized management : jobs can be run on local or remote servers (on TCP/IP network).
- jobs dependences : a job can wait for another to be terminated. A job can be started when an other is normally finished or aborted.
- start condition : a job can wait for a file-presence, for a manual validation or for a specified time.
- planning : a job can be planned at regular interval : every day, every month, every year...
- log of job activity : output of jobs (on console) are logged.
- job monitoring : a web interface is provide to control job execution.
- statistic for job duration : minimum, maximum and average duration.
- resource control : job queue with threshold for maximum number of running jobs allow to control access to limited ressources. Job queues can be manually opened or closed if the associated resource is not available.
Enhancements:
- This release provides an important bugfix: sometimes on Solaris systems, a core dump was generated when a job terminates.