a round trip to madagascar africa
Sponsored Links
Sponsored Links
Secleted [ 0 ] software to compare
Results 1 - 15 of about 333
Madagascar 0.9.4
Madagascar is an open-source software package for geophysical data processing and reproducible numerical experiments. more>>
Madagascar (formerly known as RSF) is an open-source software package for geophysical data processing and reproducible numerical experiments.
- a convenient and powerful environment
- a convenient technology transfer tool
for researchers working with digital image and data processing. The technology developed using the Madagascar project management system is transferred in the form of recorded processing histories, which become "computational recipes" to be verified, exchanged, and modified by users of the system.
Main features:
- Madagascar is a new package. It started in 2003 and was developed entirely from scratch. Being a new package, it follows modern software engineering practices such as module encapsulation and test-driven development. A rapid development of a project of this scope (more than 300 main programs and more than 3000 tests) would not be possible without standing on the shoulders of giants and learning from the 30 years of previous experience in open packages such as SEPlib and Seismic Unix. We have borrowed and reimplemented functionality and ideas from these packages.
- Madagascar is a test-driven package. Test-driven development is not only an agile software programming practice but also a way of bringing scientific foundation to geophysical research that involves numerical experiments. Bringing reproducibility and peer review, the backbone of any real science, to the field of computational geophysics is the main motivation for RSF development. The package consists of two levels: low-level main programs (typically developed in the C programming language and working as data filters) and high-level processing flows (described with the help of the Python programming language) that combine main programs and completely document data processing histories for testing and reproducibility. Experience shows that high-level programming is easily mastered even by beginning students that have no previous programming experience.
- Madagascar is an open-source package. It is distributed under the standard GPL open-source license, which places no restriction on the usage and modification of the code. Access to modifying the source repository is not controlled by one organization but shared equally among different developers. This enables an open collaboration among different groups spread all over the world, in the true spirit of the open source movement.
- Magadascar uses a simple, flexible, and universal data format that can handle very large datasets but is not tied specifically to seismic data or data of any other particular kind. This "regularly sampled" format is borrowed from the traditional SEPlib and is also related to the DDS format developed by Amoco and BP. A universal data format allows us to share general-purpose data processing tools with scientists from other disciplines such as petroleum engineers working on large-scale reservoir simulations.
<<less- a convenient and powerful environment
- a convenient technology transfer tool
for researchers working with digital image and data processing. The technology developed using the Madagascar project management system is transferred in the form of recorded processing histories, which become "computational recipes" to be verified, exchanged, and modified by users of the system.
Main features:
- Madagascar is a new package. It started in 2003 and was developed entirely from scratch. Being a new package, it follows modern software engineering practices such as module encapsulation and test-driven development. A rapid development of a project of this scope (more than 300 main programs and more than 3000 tests) would not be possible without standing on the shoulders of giants and learning from the 30 years of previous experience in open packages such as SEPlib and Seismic Unix. We have borrowed and reimplemented functionality and ideas from these packages.
- Madagascar is a test-driven package. Test-driven development is not only an agile software programming practice but also a way of bringing scientific foundation to geophysical research that involves numerical experiments. Bringing reproducibility and peer review, the backbone of any real science, to the field of computational geophysics is the main motivation for RSF development. The package consists of two levels: low-level main programs (typically developed in the C programming language and working as data filters) and high-level processing flows (described with the help of the Python programming language) that combine main programs and completely document data processing histories for testing and reproducibility. Experience shows that high-level programming is easily mastered even by beginning students that have no previous programming experience.
- Madagascar is an open-source package. It is distributed under the standard GPL open-source license, which places no restriction on the usage and modification of the code. Access to modifying the source repository is not controlled by one organization but shared equally among different developers. This enables an open collaboration among different groups spread all over the world, in the true spirit of the open source movement.
- Magadascar uses a simple, flexible, and universal data format that can handle very large datasets but is not tied specifically to seismic data or data of any other particular kind. This "regularly sampled" format is borrowed from the traditional SEPlib and is also related to the DDS format developed by Amoco and BP. A universal data format allows us to share general-purpose data processing tools with scientists from other disciplines such as petroleum engineers working on large-scale reservoir simulations.
Download (3.5MB)
Added: 2007-03-15 License: GPL (GNU General Public License) Price:
959 downloads
Trip Tracker 0.8.1
Trip Tracker is a position tracking client-server system. more>>
Trip Tracker is a position tracking client-server system. Trip Tracker is designed to assist people in setting up a real-time tracking environment with either a private or public tracking server.
The Trip Tracker GPS client sends coordinates to the tracking server to update its position. In the event that the GPS client loses its Internet connection, it can send all collected coordinates to the tracking server as soon as its back online.
The tracking server saves all the coordinates and can forward them to listening map clients.
Version restrictions:
- The map client can only display a map of Norway, as the WMS server is hardcoded in the server-side PHP script "mapservice.php". This may change in the future. If you know any good WMS servers we might add it to the server-side script, but you still need to add the proper WMS layers in the source code to make it work.
- The GPS client version 0.8 does not set up the Java Communications library properly so it most likely wont find your GPS receiver. We hope to address this issue in the next release quite soon.
- And more...
<<lessThe Trip Tracker GPS client sends coordinates to the tracking server to update its position. In the event that the GPS client loses its Internet connection, it can send all collected coordinates to the tracking server as soon as its back online.
The tracking server saves all the coordinates and can forward them to listening map clients.
Version restrictions:
- The map client can only display a map of Norway, as the WMS server is hardcoded in the server-side PHP script "mapservice.php". This may change in the future. If you know any good WMS servers we might add it to the server-side script, but you still need to add the proper WMS layers in the source code to make it work.
- The GPS client version 0.8 does not set up the Java Communications library properly so it most likely wont find your GPS receiver. We hope to address this issue in the next release quite soon.
- And more...
Download (0.54MB)
Added: 2006-06-06 License: LGPL (GNU Lesser General Public License) Price:
1240 downloads
Russian Mafia 0.994
Russian Mafia is a multiplayer IRC game implementation of Russian Mafia. more>>
Russian Mafia project is a multiplayer IRC game implementation of Russian Mafia.
Russian Mafia is a multiplayer IRC game implementation of the popular game, Russian Mafia, which is based on the Russian card game "MAFIA".
The peaceful civilians attempt to kill all the Mafia and maniacs, while the Mafia and maniacs attempt to kill all the civilians.
After the crush of the Soviet Union, Moscow was plunged into a mafia terror. Russian Goverment asking asking Italian parliament to send them the most talanted detective Commissar Katani, who keep in fear italian mafia Kosa Nostra. Katani arrives in Moscow and with civilians is trying to calm down the crime in the city.
This if fully atomatic game, on the over hande its very interesting and simple multiplayer game. All the game function processed by the IRC mafia bot, which also stores the statistic informations and game points, bank accounts.
The main goal in this game to win. Peaceful civilians have to find and kill all mafia men and maniac, or mafia men and maniac have to kill all civilians, Commissar Katani and other peaceful roles. This mean, peaceful roles have to guess who is bad and kill them - how they can kill them, look down.
Its a round game, with a stages. At the start of each round the mafia bot randomly distribute the roles. The round two stages - day and night, with are repeating until the one of the sides win or until the draw. During the night the roles make the commands, and during the day all players decide whom to kill because of the evidence or guessing, or to process without killing.
To start you have to type !reg during the round registration. After you just follow the mafia bot commands.
After the round registration you will receive a role.
During the night you will be asked about a order to the bot, concerning the role you have.
During the day you have to talk to other players to guess who is criminal, and making votes for the person to kill (codnamn to die).
After the vote the acused person will die. If no winners from civilians or mafia, the game starting again at night stage.
<<lessRussian Mafia is a multiplayer IRC game implementation of the popular game, Russian Mafia, which is based on the Russian card game "MAFIA".
The peaceful civilians attempt to kill all the Mafia and maniacs, while the Mafia and maniacs attempt to kill all the civilians.
After the crush of the Soviet Union, Moscow was plunged into a mafia terror. Russian Goverment asking asking Italian parliament to send them the most talanted detective Commissar Katani, who keep in fear italian mafia Kosa Nostra. Katani arrives in Moscow and with civilians is trying to calm down the crime in the city.
This if fully atomatic game, on the over hande its very interesting and simple multiplayer game. All the game function processed by the IRC mafia bot, which also stores the statistic informations and game points, bank accounts.
The main goal in this game to win. Peaceful civilians have to find and kill all mafia men and maniac, or mafia men and maniac have to kill all civilians, Commissar Katani and other peaceful roles. This mean, peaceful roles have to guess who is bad and kill them - how they can kill them, look down.
Its a round game, with a stages. At the start of each round the mafia bot randomly distribute the roles. The round two stages - day and night, with are repeating until the one of the sides win or until the draw. During the night the roles make the commands, and during the day all players decide whom to kill because of the evidence or guessing, or to process without killing.
To start you have to type !reg during the round registration. After you just follow the mafia bot commands.
After the round registration you will receive a role.
During the night you will be asked about a order to the bot, concerning the role you have.
During the day you have to talk to other players to guess who is criminal, and making votes for the person to kill (codnamn to die).
After the vote the acused person will die. If no winners from civilians or mafia, the game starting again at night stage.
Download (0.033MB)
Added: 2007-01-04 License: GPL (GNU General Public License) Price:
1035 downloads
Trip on the Funny Boat 1.4
Trip on the Funny Boat is a side scrolling shooter game starring a steamboat on the sea. more>>
Trip on the Funny Boat is a side scrolling shooter game starring a steamboat on the sea.
Trip on the Funny Boat is side scrolling arcade shooter game on a steamboat equipped with a cannon and the ability to jump. The player will need to take advantage of waves to defeat the enemies and dodge hazards.
This game was made for the second PyWeek competition during the week from 25.3.2006 to 2.4.2006.
<<lessTrip on the Funny Boat is side scrolling arcade shooter game on a steamboat equipped with a cannon and the ability to jump. The player will need to take advantage of waves to defeat the enemies and dodge hazards.
This game was made for the second PyWeek competition during the week from 25.3.2006 to 2.4.2006.
Download (3.8MB)
Added: 2007-03-14 License: MIT/X Consortium License Price:
959 downloads
Just For Fun Network Management System 0.8.3
Just For Fun Network Management System is a PHP-based network management system. more>>
Just For Fun Network Management System is a PHP-based network management system that features an integrated syslog, Tacacs, TFTP configuration downloading, SNMP polling, SNMP traps, journalling, auto-discovery, performance graphs (RRD), SLAs, and a lot more.
Just For Fun Network Management System uses MySQL or PostgreSQL as the backend and works under Linux and Windows.
Main features:
- Written in PHP4 (works in PHP5 too)
- Fully tested on Linux, FreeBSD and Win2K
- Should work on any other system which supports PHP
- PHP/cron scripts for polling, analizing and consolidating data
- Database Backend MySQL or PostgreSQL
- Configurable Event Types and Severity Levels
- Modular and Extensible
- Advanced Event Filter
- Interface Autodiscovery
- Licensed under the GNU GPL
- Event Console, Shows Events / Tacacs / Syslog / Alarms in the same time-ordered display
- Map & Sub-Map support
- Graphical Interface Traffic, Round Trip Time, Packet Loss Monitoring, and a LOT more
- Variable Time Span in the graphs
- Total Administration via web
- Sound Alerts in your browser
- Events RDF Feed (for newstickers)
- Works with HTTPS
- Traffic Bytes
- Utilization %
- Packets per Second, Errors per Second, Error Rate
- Round Trip Time and Packet Loss (Cisco & Smokeping)
- Drops
- TCP Connections: Incoming, Outgoing, Established, Delay
- Number of Processes, Number of Users
- Used Memory and Disks with Aggregation
- Processor Utilization and Load Average
- Temperature
- Interfaces (Network cards)
- Host (Processor, Load Average)
- Storage (Disks and Memory)
- Applications Running (HostMIB)
- Cisco Ping (RTT & PL on Cisco)
- BGP4 (BGP sessions status)
- TCP (TCP Connections, Delay)
- Cisco MAC Accounting
- Cisco IP Accounting
- Cisco CSS
- Cisco SA Agent
- Cisco Enviormental (Temperature, Voltage, etc)
- Internet Information Server (IIS) MIB
- Livingstone PortMaster3 Serial Line MIB
- Compaq Insight Manager MIB (Disk, Fan and Temperature)
- Apache /server-status monitoring
- TCP Port Content Regexp Checking (or URL)
- Configurable per Circuit SLAs (with RPN logic)
- Internal Authorization Framework
- Per Event Journals and Acknowledge
- Triggers / Actions Framework for email/others alerts.
- Database Abstraction Framework
- CSV Export
- Distributed Polling
- Object Oriented
- Consistent API
Enhancements:
- Better support for PHP 5 and RRDTool 1.2.x, OS/400 integration, Dell Chassis alarm monitoring, and fixes for all reported issues.
<<lessJust For Fun Network Management System uses MySQL or PostgreSQL as the backend and works under Linux and Windows.
Main features:
- Written in PHP4 (works in PHP5 too)
- Fully tested on Linux, FreeBSD and Win2K
- Should work on any other system which supports PHP
- PHP/cron scripts for polling, analizing and consolidating data
- Database Backend MySQL or PostgreSQL
- Configurable Event Types and Severity Levels
- Modular and Extensible
- Advanced Event Filter
- Interface Autodiscovery
- Licensed under the GNU GPL
- Event Console, Shows Events / Tacacs / Syslog / Alarms in the same time-ordered display
- Map & Sub-Map support
- Graphical Interface Traffic, Round Trip Time, Packet Loss Monitoring, and a LOT more
- Variable Time Span in the graphs
- Total Administration via web
- Sound Alerts in your browser
- Events RDF Feed (for newstickers)
- Works with HTTPS
- Traffic Bytes
- Utilization %
- Packets per Second, Errors per Second, Error Rate
- Round Trip Time and Packet Loss (Cisco & Smokeping)
- Drops
- TCP Connections: Incoming, Outgoing, Established, Delay
- Number of Processes, Number of Users
- Used Memory and Disks with Aggregation
- Processor Utilization and Load Average
- Temperature
- Interfaces (Network cards)
- Host (Processor, Load Average)
- Storage (Disks and Memory)
- Applications Running (HostMIB)
- Cisco Ping (RTT & PL on Cisco)
- BGP4 (BGP sessions status)
- TCP (TCP Connections, Delay)
- Cisco MAC Accounting
- Cisco IP Accounting
- Cisco CSS
- Cisco SA Agent
- Cisco Enviormental (Temperature, Voltage, etc)
- Internet Information Server (IIS) MIB
- Livingstone PortMaster3 Serial Line MIB
- Compaq Insight Manager MIB (Disk, Fan and Temperature)
- Apache /server-status monitoring
- TCP Port Content Regexp Checking (or URL)
- Configurable per Circuit SLAs (with RPN logic)
- Internal Authorization Framework
- Per Event Journals and Acknowledge
- Triggers / Actions Framework for email/others alerts.
- Database Abstraction Framework
- CSV Export
- Distributed Polling
- Object Oriented
- Consistent API
Enhancements:
- Better support for PHP 5 and RRDTool 1.2.x, OS/400 integration, Dell Chassis alarm monitoring, and fixes for all reported issues.
Download (0.54MB)
Added: 2006-09-17 License: GPL (GNU General Public License) Price:
1137 downloads
Locale files for South Africa 0.4
Locale files for South Africa are locale files for all official South African languages. more>>
Locale files for South Africa project are scripts to aid in localization of software. Deals with conversion between different translation formats (such as gettext-based .po formats, OpenOffice.org formats, and Mozilla formats). Also tools to help process localizations etc.
Translate.org.za is a non-profit organisation producing Free and Open Source software that enables and empowers South Africans.
The Translate Project started in 2001 with the vision of providing Free Software translated into the 11 official languages of South Africa. Free Software in your language is true empowerment.
Enhancements:
- The international dialing code has been changed from 09 to 00.
<<lessTranslate.org.za is a non-profit organisation producing Free and Open Source software that enables and empowers South Africans.
The Translate Project started in 2001 with the vision of providing Free Software translated into the 11 official languages of South Africa. Free Software in your language is true empowerment.
Enhancements:
- The international dialing code has been changed from 09 to 00.
Download (0.011MB)
Added: 2007-04-20 License: Freely Distributable Price:
919 downloads
The Wonder Shaper 1.1a
The Wonder Shaper is a very special network shaper script with a lot of features. more>>
The Wonder Shaper is a very special network shaper script with a lot of features. Works on Linux 2.4 & higher.
Goals
I attempted to create the holy grail:
* Maintain low latency for interfactive traffic at all times.
This means that downloading or uploading files should not disturb SSH or even telnet. These are the most important things, even 200ms latency is sluggish to work over.
* Allow surfing at reasonable speeds while up or downloading
Even though http is bulk traffic, other traffic should not drown it out too much.
* Make sure uploads dont harm downloads, and the other way around
This is a much observed phenomenon where upstream traffic simply destroys download speed. It turns out that all this is possible, at the cost of a tiny bit of bandwidth. The reason that uploads, downloads and ssh hurt eachother is the presence of large queues in many domestic access devices like cable or DSL modems.
Why it doesnt work well by default
ISPs know that they are benchmarked solely on how fast people can download. Besides available bandwidth, download speed is influenced heavily by packet loss, which seriously hampers TCP/IP performance. Large queues can help prevent packetloss, and speed up downloads. So ISPs configure large queues.
These large queues however damage interactivity. A keystroke must first travel the upstream queue, which may be seconds (!) long and go to your remote host. It is then displayed, which leads to a packet coming back, which must then traverse the downstream queue, located at your ISP, before it appears on your screen.
This HOWTO teaches you how to mangle and process the queue in many ways, but sadly, not all queues are accessible to us. The queue over at the ISP is completely off-limits, whereas the upstream queue probably lives inside your cable modem or DSL device. You may or may not be able to configure it. Most probably not.
So, what next? As we cant control either of those queues, they must be eliminated, and moved to your Linux router. Luckily this is possible.
Limit upload speed somewhat
By limiting our upload speed to slightly less than the truly available rate, no queues are built up in our modem. The queue is now moved to Linux.
Limit download speed
This is slightly trickier as we cant really influence how fast the internet ships us data. We can however drop packets that are coming in too fast, which causes TCP/IP to slow down to just the rate we want. Because we dont want to drop traffic unnecessarily, we configure a burst size we allow at higher speed.
Now, once we have done this, we have eliminated the downstream queue totally (except for short bursts), and gain the ability to manage the upstream queue with all the power Linux offers.
Let interactive traffic skip the queue
What remains to be done is to make sure interactive traffic jumps to the front of the upstream queue. To make sure that uploads dont hurt downloads, we also move ACK packets to the front of the queue. This is what normally causes the huge slowdown observed when generating bulk traffic both ways. The ACKnowledgements for downstream traffic must compete with upstream traffic, and get delayed in the process.
We also move other small packets to the front of the queue - this helps operating systems which do not set TOS bits, like everything from Microsoft.
Allow the user to specify low priority traffic (new in 1.1!)
Sometimes you may notice low priority OUTGOING traffic slowing down important traffic. In that case, the following options may help you:
NOPRIOHOSTSRC
Set this to hosts or netmasks in your network that should have low priority
NOPRIOHOSTDST
Set this to hosts or netmasks on the internet that should have low priority
NOPRIOPORTSRC
Set this to source ports that should have low priority. If you have an unimportant webserver on your traffic, set this to 80
NOPRIOPORTDST
Set this to destination ports that should have low priority.
See the start of wshaper and wshaper.htb
Results
If we do all this we get the following measurements using an excellent ADSL connection from xs4all in the Netherlands:
Baseline latency:
round-trip min/avg/max = 14.4/17.1/21.7 ms
Without traffic conditioner, while downloading:
round-trip min/avg/max = 560.9/573.6/586.4 ms
Without traffic conditioner, while uploading:
round-trip min/avg/max = 2041.4/2332.1/2427.6 ms
With conditioner, during 220kbit/s upload:
round-trip min/avg/max = 15.7/51.8/79.9 ms
With conditioner, during 850kbit/s download:
round-trip min/avg/max = 20.4/46.9/74.0 ms
When uploading, downloads proceed at ~80% of the available speed. Uploads at around 90%. Latency then jumps to 850 ms, still figuring out why.
What you can expect from this script depends a lot on your actual uplink speed. When uploading at full speed, there will always be a single packet ahead of your keystroke. That is the lower limit to the latency you can achieve - divide your MTU by your upstream speed to calculate. Typical values will be somewhat higher than that. Lower your MTU for better effects!
A small table:
Uplink speed | Expected latency due to upload
--------------------------------------------------
32 | 234ms
64 | 117ms
128 | 58ms
256 | 29ms
So to calculate your effective latency, take a baseline measurement (ping on an unloaded link), and look up the number in the table, and add it. That is about the best you can expect. This number comes from a calculation that assumes that your upstream keystroke will have at most half a full sized packet ahead of it.
This boils down to:
mtu * 0.5 * 10
-------------- + baseline_latency
kbit
The factor 10 is not quite correct but works well in practice.
Your kernel
If you run a recent distribution, everything should be ok. You need 2.4 with QoS options turned on.
If you compile your own kernel, it must have some options enabled. Most notably, in the Networking Options menu, QoS and/or Fair Queueing, turn at least CBQ, PRIO, SFQ, Ingress, Traffic Policing, QoS support, Rate Estimator, QoS classifier, U32 classifier, fwmark classifier.
In practice, I (and most distributions) just turn on everything.
The scripts
The script comes in two versions, one which works on standard kernels and is implemented using CBQ. The other one uses the excellent HTB qdisc which is not in the default kernel. The CBQ version is more tested than the HTB one!
See wshaper and wshaper.htb.
Tuning
These scripts need to know the real rate of your ISP connection. This is hard to determine upfront as different ISPs use different kinds of bits it appears. People report success using the following technique:
Estimate both your upstream and downstream at half the rate your ISP specifies. Now verify if the script is functioning - check interactivity while uploading and while downloading. This should deliver the latency as calculated above. If not, check if the script executed without errors.
Now slowly increase the upstream & downstream numbers in the script until the latency comes back. This way you can find optimum values for your connection. If you are happy, please report to me so I can make a list of numbers that work well. Please let me know which ISP you use and the name of your subscription, and its reputed specifications, so I can list you here and save others the trouble.
Installation
If you dial in, you can copy the script to /etc/ppp/ip-up.d and it will be run at each connect.
If you want to remove the shaper from an interface, run wshaper stop. To see status information, run wshaper status.
KNOWN PROBLEMS
If you get errors, add an -x to the first line, as follows:
#!/bin/bash -x
And retry. This will show you which line gives an error. Before contacting me, make sure that you are running a recent version of iproute!
Recent versions can be found at your Linux distributor, or if you prefer compiling, here:
ftp://ftp.inr.ac.ru/ip-routing/iproute2-current.tar.gz
<<lessGoals
I attempted to create the holy grail:
* Maintain low latency for interfactive traffic at all times.
This means that downloading or uploading files should not disturb SSH or even telnet. These are the most important things, even 200ms latency is sluggish to work over.
* Allow surfing at reasonable speeds while up or downloading
Even though http is bulk traffic, other traffic should not drown it out too much.
* Make sure uploads dont harm downloads, and the other way around
This is a much observed phenomenon where upstream traffic simply destroys download speed. It turns out that all this is possible, at the cost of a tiny bit of bandwidth. The reason that uploads, downloads and ssh hurt eachother is the presence of large queues in many domestic access devices like cable or DSL modems.
Why it doesnt work well by default
ISPs know that they are benchmarked solely on how fast people can download. Besides available bandwidth, download speed is influenced heavily by packet loss, which seriously hampers TCP/IP performance. Large queues can help prevent packetloss, and speed up downloads. So ISPs configure large queues.
These large queues however damage interactivity. A keystroke must first travel the upstream queue, which may be seconds (!) long and go to your remote host. It is then displayed, which leads to a packet coming back, which must then traverse the downstream queue, located at your ISP, before it appears on your screen.
This HOWTO teaches you how to mangle and process the queue in many ways, but sadly, not all queues are accessible to us. The queue over at the ISP is completely off-limits, whereas the upstream queue probably lives inside your cable modem or DSL device. You may or may not be able to configure it. Most probably not.
So, what next? As we cant control either of those queues, they must be eliminated, and moved to your Linux router. Luckily this is possible.
Limit upload speed somewhat
By limiting our upload speed to slightly less than the truly available rate, no queues are built up in our modem. The queue is now moved to Linux.
Limit download speed
This is slightly trickier as we cant really influence how fast the internet ships us data. We can however drop packets that are coming in too fast, which causes TCP/IP to slow down to just the rate we want. Because we dont want to drop traffic unnecessarily, we configure a burst size we allow at higher speed.
Now, once we have done this, we have eliminated the downstream queue totally (except for short bursts), and gain the ability to manage the upstream queue with all the power Linux offers.
Let interactive traffic skip the queue
What remains to be done is to make sure interactive traffic jumps to the front of the upstream queue. To make sure that uploads dont hurt downloads, we also move ACK packets to the front of the queue. This is what normally causes the huge slowdown observed when generating bulk traffic both ways. The ACKnowledgements for downstream traffic must compete with upstream traffic, and get delayed in the process.
We also move other small packets to the front of the queue - this helps operating systems which do not set TOS bits, like everything from Microsoft.
Allow the user to specify low priority traffic (new in 1.1!)
Sometimes you may notice low priority OUTGOING traffic slowing down important traffic. In that case, the following options may help you:
NOPRIOHOSTSRC
Set this to hosts or netmasks in your network that should have low priority
NOPRIOHOSTDST
Set this to hosts or netmasks on the internet that should have low priority
NOPRIOPORTSRC
Set this to source ports that should have low priority. If you have an unimportant webserver on your traffic, set this to 80
NOPRIOPORTDST
Set this to destination ports that should have low priority.
See the start of wshaper and wshaper.htb
Results
If we do all this we get the following measurements using an excellent ADSL connection from xs4all in the Netherlands:
Baseline latency:
round-trip min/avg/max = 14.4/17.1/21.7 ms
Without traffic conditioner, while downloading:
round-trip min/avg/max = 560.9/573.6/586.4 ms
Without traffic conditioner, while uploading:
round-trip min/avg/max = 2041.4/2332.1/2427.6 ms
With conditioner, during 220kbit/s upload:
round-trip min/avg/max = 15.7/51.8/79.9 ms
With conditioner, during 850kbit/s download:
round-trip min/avg/max = 20.4/46.9/74.0 ms
When uploading, downloads proceed at ~80% of the available speed. Uploads at around 90%. Latency then jumps to 850 ms, still figuring out why.
What you can expect from this script depends a lot on your actual uplink speed. When uploading at full speed, there will always be a single packet ahead of your keystroke. That is the lower limit to the latency you can achieve - divide your MTU by your upstream speed to calculate. Typical values will be somewhat higher than that. Lower your MTU for better effects!
A small table:
Uplink speed | Expected latency due to upload
--------------------------------------------------
32 | 234ms
64 | 117ms
128 | 58ms
256 | 29ms
So to calculate your effective latency, take a baseline measurement (ping on an unloaded link), and look up the number in the table, and add it. That is about the best you can expect. This number comes from a calculation that assumes that your upstream keystroke will have at most half a full sized packet ahead of it.
This boils down to:
mtu * 0.5 * 10
-------------- + baseline_latency
kbit
The factor 10 is not quite correct but works well in practice.
Your kernel
If you run a recent distribution, everything should be ok. You need 2.4 with QoS options turned on.
If you compile your own kernel, it must have some options enabled. Most notably, in the Networking Options menu, QoS and/or Fair Queueing, turn at least CBQ, PRIO, SFQ, Ingress, Traffic Policing, QoS support, Rate Estimator, QoS classifier, U32 classifier, fwmark classifier.
In practice, I (and most distributions) just turn on everything.
The scripts
The script comes in two versions, one which works on standard kernels and is implemented using CBQ. The other one uses the excellent HTB qdisc which is not in the default kernel. The CBQ version is more tested than the HTB one!
See wshaper and wshaper.htb.
Tuning
These scripts need to know the real rate of your ISP connection. This is hard to determine upfront as different ISPs use different kinds of bits it appears. People report success using the following technique:
Estimate both your upstream and downstream at half the rate your ISP specifies. Now verify if the script is functioning - check interactivity while uploading and while downloading. This should deliver the latency as calculated above. If not, check if the script executed without errors.
Now slowly increase the upstream & downstream numbers in the script until the latency comes back. This way you can find optimum values for your connection. If you are happy, please report to me so I can make a list of numbers that work well. Please let me know which ISP you use and the name of your subscription, and its reputed specifications, so I can list you here and save others the trouble.
Installation
If you dial in, you can copy the script to /etc/ppp/ip-up.d and it will be run at each connect.
If you want to remove the shaper from an interface, run wshaper stop. To see status information, run wshaper status.
KNOWN PROBLEMS
If you get errors, add an -x to the first line, as follows:
#!/bin/bash -x
And retry. This will show you which line gives an error. Before contacting me, make sure that you are running a recent version of iproute!
Recent versions can be found at your Linux distributor, or if you prefer compiling, here:
ftp://ftp.inr.ac.ru/ip-routing/iproute2-current.tar.gz
Download (MB)
Added: 2007-02-13 License: GPL (GNU General Public License) Price:
994 downloads
Command line Calculator 1.01
Command Line calculator CLC is the calculator that can calculate direct at the linux console. more>>
Command Line calculator "CLC" is the calculator that can calculate direct at the Linux console.
Extract the CLCC file to /usr/bin you might need to login as root or equvalent account, to be able to access it whenever you need it.
Then just write CLCC 67+89 and the answer will be presented to you directly.
CLCC calculates from left to right with no exceptions. CLC also have some extra parameters that is sent to CLC using backslash parameters.
CLCC r2 10/3 this will round the result to 2 decimals you can use 1 to 9 if you want to round the sum of.
the r parameter can also be combined with the other parameters but it must be added first like this
CLCC r3c 10/3 - to get 10 diveded with 3 rounded down to 3 decimals.
CLCC is tested with Ubuntu 6.10 and Puppy OS 2.13 but should work with any Linux version in console mode.
The program is developed using Hotbasic for Linux and is Freeware, hope you find it useful, send and email if you have any questions.
Hotbasic is a basic language that compiles into assembler direct, no interpeter that slows down the code, just pure assembler.
So if you want assembler in Linux but doesnt want to code in nasm, HotBasic is the compiler for you.
<<lessExtract the CLCC file to /usr/bin you might need to login as root or equvalent account, to be able to access it whenever you need it.
Then just write CLCC 67+89 and the answer will be presented to you directly.
CLCC calculates from left to right with no exceptions. CLC also have some extra parameters that is sent to CLC using backslash parameters.
CLCC r2 10/3 this will round the result to 2 decimals you can use 1 to 9 if you want to round the sum of.
the r parameter can also be combined with the other parameters but it must be added first like this
CLCC r3c 10/3 - to get 10 diveded with 3 rounded down to 3 decimals.
CLCC is tested with Ubuntu 6.10 and Puppy OS 2.13 but should work with any Linux version in console mode.
The program is developed using Hotbasic for Linux and is Freeware, hope you find it useful, send and email if you have any questions.
Hotbasic is a basic language that compiles into assembler direct, no interpeter that slows down the code, just pure assembler.
So if you want assembler in Linux but doesnt want to code in nasm, HotBasic is the compiler for you.
Download (0.006MB)
Added: 2007-02-16 License: Freeware Price:
985 downloads
Rockin Rounded Corners 1.0
Rockin Rounded Corners is an easy way to add rounded corners to any element on your web site. more>>
Rockin Rounded Corners is an easy way to add rounded corners to any element on your web site. Upload this script to your site to allow your web site visiters to quickly and easily generate the code needed to add rounded corners, or use it for your own site.
Main features:
- Easy to install. Just unzip and upload, or if youre using it on a local server, just unzip!
- 18 different rounded corner styles to choose from.
- Simple, clean code that is easy to apply site-wide
- Choose from HTML or PHP code for the rounded corners. The PHP code is slimmer, but theres HTML for those without PHP installed.
- An easy way to add a cool new feature to your web site.
<<lessMain features:
- Easy to install. Just unzip and upload, or if youre using it on a local server, just unzip!
- 18 different rounded corner styles to choose from.
- Simple, clean code that is easy to apply site-wide
- Choose from HTML or PHP code for the rounded corners. The PHP code is slimmer, but theres HTML for those without PHP installed.
- An easy way to add a cool new feature to your web site.
Download (0.061MB)
Added: 2006-02-06 License: Freeware Price:
1358 downloads
Berkley Snoop for Linux 0.3 RC4
Berkley Snoop for Linux is a module which adds support for the Snoop protocol. more>>
Berkley Snoop for Linux is a module which adds support for the Snoop protocol, a TCP-aware link layer protocol designed that can improve the performance of TCP over networks of wired and single-hop wireless links.
While TCP adapts well to network congestion, it does not adequately handle the vagaries of wireless media. In this thesis, we address these challenges in detail and design solutions to them. These solutions incorporate link-layer techniques as well as enhancements to TCP at the sender and receiver. The Snoop protocol is a TCP-aware link layer protocol designed to improve the performance of TCP over networks of wired and single-hop wireless links.
The implementation is for kernels of 2.6.x series. This software is intended to use on routers acting between big fat pipe(BFP) link and wireless link.
The problem: The wireless link is error prone by its nature and BFP links such as satellite one has very big round-trip time. When error occurs on wireless segment it causes in speed reduction because the TCP protocol on sending side treats this error as link congestion although the error was just a temporary link quality loss and the connection cannt recover its speed.
The fix: The module will cache TCP segmets passing to host on wireless segment until the ACK(nowledgmet) is received or timeout expired. In case of timeout the segment will be retransmitted again. And by the way the module will drop all DUP(licate) ACK(nowledgmets) caused by packet loss on wireless segment and prevent the reduction of speed of flow from the host beyond the satellite link. The module works now only with connections initiated from wireless hosts.
Enhancements:
- fixed issues with improper use of locks & memory allocation the memory allocates now with GFP_ATOMIC priority
<<lessWhile TCP adapts well to network congestion, it does not adequately handle the vagaries of wireless media. In this thesis, we address these challenges in detail and design solutions to them. These solutions incorporate link-layer techniques as well as enhancements to TCP at the sender and receiver. The Snoop protocol is a TCP-aware link layer protocol designed to improve the performance of TCP over networks of wired and single-hop wireless links.
The implementation is for kernels of 2.6.x series. This software is intended to use on routers acting between big fat pipe(BFP) link and wireless link.
The problem: The wireless link is error prone by its nature and BFP links such as satellite one has very big round-trip time. When error occurs on wireless segment it causes in speed reduction because the TCP protocol on sending side treats this error as link congestion although the error was just a temporary link quality loss and the connection cannt recover its speed.
The fix: The module will cache TCP segmets passing to host on wireless segment until the ACK(nowledgmet) is received or timeout expired. In case of timeout the segment will be retransmitted again. And by the way the module will drop all DUP(licate) ACK(nowledgmets) caused by packet loss on wireless segment and prevent the reduction of speed of flow from the host beyond the satellite link. The module works now only with connections initiated from wireless hosts.
Enhancements:
- fixed issues with improper use of locks & memory allocation the memory allocates now with GFP_ATOMIC priority
Download (0.015MB)
Added: 2006-04-20 License: GPL (GNU General Public License) Price:
1287 downloads
GolfTracker 0.6.4
GolfTracker is an application written in python and GTK used for tracking golf statistics more>>
GolfTracker is an application written in python and GTK used for tracking golf statistics. GolfTracker handles calculating your handicap index as well as lots of general golf statistics.
Useage:
When launching GolfTracker for the first time you will start with a new profile. The first step is to add a course to this profile. After adding a course, you must add the specific information for each teebox at the course. This is tedious at first but soon youll have all your local courses and teeboxes entered.
Once the courses and teeboxes are setup, its time to enter round scores. When entering a round, you select which course and teebox you played and enter the information for each hole. GolfTracker tracks score, putts, fairways hit, and will generate a Greens in Regulation (GIR) statistic.
Once enough rounds are entered you can check your handicap index and calculate a specific handicap value for a course and teebox. You can also check your stats for any combination of rounds.
<<lessUseage:
When launching GolfTracker for the first time you will start with a new profile. The first step is to add a course to this profile. After adding a course, you must add the specific information for each teebox at the course. This is tedious at first but soon youll have all your local courses and teeboxes entered.
Once the courses and teeboxes are setup, its time to enter round scores. When entering a round, you select which course and teebox you played and enter the information for each hole. GolfTracker tracks score, putts, fairways hit, and will generate a Greens in Regulation (GIR) statistic.
Once enough rounds are entered you can check your handicap index and calculate a specific handicap value for a course and teebox. You can also check your stats for any combination of rounds.
Download (0.11MB)
Added: 2006-07-24 License: GPL (GNU General Public License) Price:
1190 downloads
Mac menubar for GNOME/Xfce 1.0.14
Mac menubar for GNOME/Xfce is a Mac-style menubar for gtk2/gnome/xfce. more>>
Mac menubar for GNOME/Xfce is a Mac-style menubar for gtk2/gnome/xfce.
This is not one app, but 3 pieces of mutual-dependent softwares:
1.patch for gtk2 (2.10.x and 2.8.x)
2.gnome panel applet
3.xfce panel plugin (for 4.4+ only)
The sources are hosted on AUR (Arch User Repository), packages are gtk2-aqd, gnome-macmenu-applet, and xfce4-macmenu-plugin. There is also a xfce plugin that emulates round panel corners: xfce4-corner-plugin
The home page points to an ubuntu HOWTO for installing the patches and applets. There are also binaries for ubuntu edgy and arch linux.
<<lessThis is not one app, but 3 pieces of mutual-dependent softwares:
1.patch for gtk2 (2.10.x and 2.8.x)
2.gnome panel applet
3.xfce panel plugin (for 4.4+ only)
The sources are hosted on AUR (Arch User Repository), packages are gtk2-aqd, gnome-macmenu-applet, and xfce4-macmenu-plugin. There is also a xfce plugin that emulates round panel corners: xfce4-corner-plugin
The home page points to an ubuntu HOWTO for installing the patches and applets. There are also binaries for ubuntu edgy and arch linux.
Download (MB)
Added: 2007-01-21 License: LGPL (GNU Lesser General Public License) Price:
1035 downloads
Label Templates 1.0
Label Templates are Free Opendocument Format Label Templates in over 50 sizes. more>>
Label Templates are free Opendocument Format label templates for Openoffice.org, KOffice or any other Office suite ODF ready for making labels.
Collection includes CD, DVD, address, mailing, round, media label templates, Avery sizes and more. US Letter size and 14 size paper formats available.
Setup time is quick with these templates and printing labels from these templates is easy.
<<lessCollection includes CD, DVD, address, mailing, round, media label templates, Avery sizes and more. US Letter size and 14 size paper formats available.
Setup time is quick with these templates and printing labels from these templates is easy.
Download (0.50MB)
Added: 2006-10-23 License: GPL (GNU General Public License) Price:
1116 downloads
Games::Tournament::RoundRobin 0.01
Games::Tournament::RoundRobin is a Perl module for Round-Robin Tournament Schedule Pairings. more>>
Games::Tournament::RoundRobin is a Perl module for Round-Robin Tournament Schedule Pairings.
SYNOPSIS
$schedule = Games::Tournament::RoundRobin->new;
$pairings = $schedule->indexesInRound($roundm);
$round = $schedule->meeting($member1, [$member2, $member3]);
...
Every member of a league of 2n players can be paired with every other member in 2n-1 rounds.
If the league members are (Inf, 1 .. 2n-1), then in round i, i can be paired with Inf, and a can meet b, where a+b = 2i (mod 2n-1).
METHODS
new
Games::Tournament::RoundRobin->new( v => 5, league => [Ha, Be, He])
Games::Tournament::RoundRobin->new( league => {A => $a, B => $b, C => $c})
where v (optional) is the number of league members, and league (optional) is a list (or a hash) reference to the individual unique league members. One of v, or league (which takes precedence) is necessary, and if league is not given, the members are identified by the numbers 0 .. n-1.
If the league is a list (or hash) of n objects, they should be instances of a class that overloads both string quoting with a name method and arithmetical operations with an index method. The index method, called on the n objects in order, should return the n numbers, 0 .. n-1, and in that order if they are presented as an array. If they are presented as a hash, the hash is stored internally as an array and the keys are discarded.
If the league is a list of strings or numbers, indexes are constructed for the values on the basis of their positions in the list, and if a hash of strings or numbers, on the basis of the lexicographic order of their keys. Each string is expected to be unique.
If n is odd, an additional n-1, Bye or object (a Games::League::Member object, by default) member, depending on the type of the first member in the league, is added at the end and n is increased by 1.
indexesInRound
$schedule->indexesInRound($m)
Returns an array reference of the pairings in round $m. This method is useful if you are using numbers to represent your league members. It is not so useful if you are using strings or objects and you dont know their index numbers. Positions in the array represent members. The values represent their partners. Each member is thus represented twice.
roundsInTournament
$t = $schedule-> roundsInTournament;
$round1 = $t[0];
$inRound1FourthWith = $t->[0]->[3];
$inLastRoundLastWith = $$t[-1][-1];
Returns, as a reference to an array of arrays, the pairings in all rounds of the tournament. This method is useful if you are using the algorithm indexes.
partner
$schedule->partner($member, $m)
Returns the partner of $member in round $m.
membersInRound
$schedule->membersInRound($m)
Returns an hash reference of the pairings in round $m. This method is useful if you are using strings or objects. Keys in the hash represent league members. If the league members are objects, their names are used as keys. If 2 names are the same, the names are changed to $name.1, $name.2 etc. The values are their partners. Each player is thus represented twice.
memberSchedule
$schedule->memberSchedule($member)
Returns, as an array reference, the partners who $member is matched with in the order in which they meet, ie round by round.
meeting
$schedule->meeting($member,$partner)
Returns the rounds (TODO and the venue) at which $member meets $partner.
meetings
$schedule->meetings($member1,[$member2,$member3,...])
Returns, as an array reference, the rounds (TODO and the venue) at which $member1 meets $member2, $member3, ...
index
$schedule->index($member)
Returns $members index, the number which is used to pair it with other members. The index is the position, 0..n-1, of the $member in the league argument to the constructor (if an array) or the constructed array (if a hash.)
If $member is not a member of the array, or is itself an index, undef is returned.
member
$schedule->member($index)
$schedule->member($name)
$bye = $schedule->member( $schedule->size-1 )
Returns the member represented by $index, a number which ranges from 0..n-1, or by $name, a string. If there is no such member, undef is returned.
partners
$schedule->partners($index)
$schedule->partners($name)
Returns an array reference of all the partners of the $indexed or $named member, in index order, or the order in the league argument.
realPartners
$schedule->realPartners($index)
Returns an array reference of all the partners of the $indexed member, excluding the Bye member. Dont use this if you have no Bye member, as it just leaves off the last member.
size
$schedule->size
Returns the number of members in the round robin. Sometimes this may not be the same as the number of league members specified, because the array of league members takes precedence if supplied, and a bye is added if the number is odd.
rounds
$schedule->rounds
Returns the number of rounds in the round robin. This equals the number of league members, minus 1.
<<lessSYNOPSIS
$schedule = Games::Tournament::RoundRobin->new;
$pairings = $schedule->indexesInRound($roundm);
$round = $schedule->meeting($member1, [$member2, $member3]);
...
Every member of a league of 2n players can be paired with every other member in 2n-1 rounds.
If the league members are (Inf, 1 .. 2n-1), then in round i, i can be paired with Inf, and a can meet b, where a+b = 2i (mod 2n-1).
METHODS
new
Games::Tournament::RoundRobin->new( v => 5, league => [Ha, Be, He])
Games::Tournament::RoundRobin->new( league => {A => $a, B => $b, C => $c})
where v (optional) is the number of league members, and league (optional) is a list (or a hash) reference to the individual unique league members. One of v, or league (which takes precedence) is necessary, and if league is not given, the members are identified by the numbers 0 .. n-1.
If the league is a list (or hash) of n objects, they should be instances of a class that overloads both string quoting with a name method and arithmetical operations with an index method. The index method, called on the n objects in order, should return the n numbers, 0 .. n-1, and in that order if they are presented as an array. If they are presented as a hash, the hash is stored internally as an array and the keys are discarded.
If the league is a list of strings or numbers, indexes are constructed for the values on the basis of their positions in the list, and if a hash of strings or numbers, on the basis of the lexicographic order of their keys. Each string is expected to be unique.
If n is odd, an additional n-1, Bye or object (a Games::League::Member object, by default) member, depending on the type of the first member in the league, is added at the end and n is increased by 1.
indexesInRound
$schedule->indexesInRound($m)
Returns an array reference of the pairings in round $m. This method is useful if you are using numbers to represent your league members. It is not so useful if you are using strings or objects and you dont know their index numbers. Positions in the array represent members. The values represent their partners. Each member is thus represented twice.
roundsInTournament
$t = $schedule-> roundsInTournament;
$round1 = $t[0];
$inRound1FourthWith = $t->[0]->[3];
$inLastRoundLastWith = $$t[-1][-1];
Returns, as a reference to an array of arrays, the pairings in all rounds of the tournament. This method is useful if you are using the algorithm indexes.
partner
$schedule->partner($member, $m)
Returns the partner of $member in round $m.
membersInRound
$schedule->membersInRound($m)
Returns an hash reference of the pairings in round $m. This method is useful if you are using strings or objects. Keys in the hash represent league members. If the league members are objects, their names are used as keys. If 2 names are the same, the names are changed to $name.1, $name.2 etc. The values are their partners. Each player is thus represented twice.
memberSchedule
$schedule->memberSchedule($member)
Returns, as an array reference, the partners who $member is matched with in the order in which they meet, ie round by round.
meeting
$schedule->meeting($member,$partner)
Returns the rounds (TODO and the venue) at which $member meets $partner.
meetings
$schedule->meetings($member1,[$member2,$member3,...])
Returns, as an array reference, the rounds (TODO and the venue) at which $member1 meets $member2, $member3, ...
index
$schedule->index($member)
Returns $members index, the number which is used to pair it with other members. The index is the position, 0..n-1, of the $member in the league argument to the constructor (if an array) or the constructed array (if a hash.)
If $member is not a member of the array, or is itself an index, undef is returned.
member
$schedule->member($index)
$schedule->member($name)
$bye = $schedule->member( $schedule->size-1 )
Returns the member represented by $index, a number which ranges from 0..n-1, or by $name, a string. If there is no such member, undef is returned.
partners
$schedule->partners($index)
$schedule->partners($name)
Returns an array reference of all the partners of the $indexed or $named member, in index order, or the order in the league argument.
realPartners
$schedule->realPartners($index)
Returns an array reference of all the partners of the $indexed member, excluding the Bye member. Dont use this if you have no Bye member, as it just leaves off the last member.
size
$schedule->size
Returns the number of members in the round robin. Sometimes this may not be the same as the number of league members specified, because the array of league members takes precedence if supplied, and a bye is added if the number is odd.
rounds
$schedule->rounds
Returns the number of rounds in the round robin. This equals the number of league members, minus 1.
Download (0.010MB)
Added: 2007-01-05 License: Perl Artistic License Price:
1024 downloads
Mirro 1.0 Beta
Mirro is an application used to find the closest mirror to your connection. more>>
Mirro is an application used to find the closest mirror to your connection.
Mirro will find the closest mirror to your connection, given a file containing addresses. It pings every site extremely quickly, and sorts the reponses based on the number of hops and the round-trip time.
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
<<lessMirro will find the closest mirror to your connection, given a file containing addresses. It pings every site extremely quickly, and sorts the reponses based on the number of hops and the round-trip time.
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
Download (0.020MB)
Added: 2007-04-24 License: GPL (GNU General Public License) Price:
913 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 a round trip to madagascar africa 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