32 bit windows max ram
Sponsored Links
Sponsored Links
Secleted [ 0 ] software to compare
Results 1 - 15 of about 1704
Booting Ubuntu To RAM
Booting Ubuntu To RAM is an article aims to document the process of creating a customized Ubuntu that loads an image in RAM. more>>
Booting Ubuntu To RAM is an article aims to document the process of creating a customized Ubuntu that loads an image from the hard disk to RAM, then boots an entire Ubuntu session out of RAM. It is intended for intermediate to advanced Ubuntu users who are familiar with the shell, and may have limited experience customizing the livecd (LiveCDCustomization) and shell scripting. We will customize a LiveCD and copy it to the hard drive, and make a few modifications to bootup scripts so that it copies to RAM via our good friend tmpfs.
WARNING: The author asserts that this procedure works for him, but cannot guarantee that this procedure works for anyone else. Although this procedure is meant to be 100% safe, it is feasible that there may be mistakes, or a chance of misunderstanding the instructions in a manner that causes loss of data. Please make a backup and do not attempt on mission critical systems. Read through this article thoroughly, and do not attempt if you do not comprehend or feel comfortable about any of the instructions!
CAUTION: I hope this is intuitively obvious, but Ill humor you and state it bluntly: Changes you make under the live session are NOT saved and WILL BE LOST when you reboot or shut down. Dont save anything important to the "home directory" and expect it to still be around! If you want to save data permanently, mount a permanent medium (such as your hard drive), plug in a thumbdrive, or use some network functionality built into Ubuntu to save your data to a non-volatile destination.
There are many cases where one would like to boot Ubuntu to RAM:
- Performance: The desktop performance is dramatically improved. A 400MB squashed filesystem in RAM, that holds 1200MB of data, is read back on a 1.6GHz Core Duo in about 3 seconds, including decompression time.
- Power, Noise, Durability: Although modern hard disks dont use much power compared to other system components, this may still be important for some. In laptops, hard disks are often the noisiest components, so this setup can reduce system noise. With the hard disk spun down, a laptop can potentially withstand greater shocks without damage.
- Abrupt poweroff: Since the hard disk is only momentarily used in read-only mode during boot, then never touched again, there are few or no negative consequences of an abrupt poweroff. If a system is used where power is inconsistent, or the system is regularly used in a context where fast shutoffs are required, this is very handy.
- Privacy: Anything you do in this session are lost when you reboot or power off. This is great for kiosks or other systems where permanent modification are not desired. (Note that by default the livecd user has full sudo access, so potentially a malicious user can still make permanent changes by mounting the hard drive and following this HOWTO)
<<lessWARNING: The author asserts that this procedure works for him, but cannot guarantee that this procedure works for anyone else. Although this procedure is meant to be 100% safe, it is feasible that there may be mistakes, or a chance of misunderstanding the instructions in a manner that causes loss of data. Please make a backup and do not attempt on mission critical systems. Read through this article thoroughly, and do not attempt if you do not comprehend or feel comfortable about any of the instructions!
CAUTION: I hope this is intuitively obvious, but Ill humor you and state it bluntly: Changes you make under the live session are NOT saved and WILL BE LOST when you reboot or shut down. Dont save anything important to the "home directory" and expect it to still be around! If you want to save data permanently, mount a permanent medium (such as your hard drive), plug in a thumbdrive, or use some network functionality built into Ubuntu to save your data to a non-volatile destination.
There are many cases where one would like to boot Ubuntu to RAM:
- Performance: The desktop performance is dramatically improved. A 400MB squashed filesystem in RAM, that holds 1200MB of data, is read back on a 1.6GHz Core Duo in about 3 seconds, including decompression time.
- Power, Noise, Durability: Although modern hard disks dont use much power compared to other system components, this may still be important for some. In laptops, hard disks are often the noisiest components, so this setup can reduce system noise. With the hard disk spun down, a laptop can potentially withstand greater shocks without damage.
- Abrupt poweroff: Since the hard disk is only momentarily used in read-only mode during boot, then never touched again, there are few or no negative consequences of an abrupt poweroff. If a system is used where power is inconsistent, or the system is regularly used in a context where fast shutoffs are required, this is very handy.
- Privacy: Anything you do in this session are lost when you reboot or power off. This is great for kiosks or other systems where permanent modification are not desired. (Note that by default the livecd user has full sudo access, so potentially a malicious user can still make permanent changes by mounting the hard drive and following this HOWTO)
Download (MB)
Added: 2007-05-09 License: GPL (GNU General Public License) Price:
555 downloads
MCP2510 Bit Timing Calculator 1.0
MCP2510 Bit Timing Calculator project is a bit timing calculator for the MCP2510. more>>
MCP2510 Bit Timing Calculator project is a bit timing calculator for the MCP2510.
It is a bit timing calculator which is very easy to use.
All you have to do is to choose the baudrate and the oscilator-frequency.
Sure you can edit and change all setting. You will see a graphical bit timing diagram which show you your current options.
At the end you will get a detailed report of your choosen options. See an example here: mcp2510btn
HowTo
On the first step you have to choose your wished baudrate and the oscilator-frequency.
Second you will get a great table with all avaible baudrate for you oscilator-frequency. The are already choosen some baudrates if your baudrate equals with some on the table. Otherwise you have to select them manually, but you will get deviations to you choosen baudrate. You will the the deviation in percent at the right table.
When you are ready you can go forward to step three.
Here you have first to select your wanted Nominal Bit Time Screenshot 2 [Step 3]and then you can edit/change to values for the single segments of a bit timing.
<<lessIt is a bit timing calculator which is very easy to use.
All you have to do is to choose the baudrate and the oscilator-frequency.
Sure you can edit and change all setting. You will see a graphical bit timing diagram which show you your current options.
At the end you will get a detailed report of your choosen options. See an example here: mcp2510btn
HowTo
On the first step you have to choose your wished baudrate and the oscilator-frequency.
Second you will get a great table with all avaible baudrate for you oscilator-frequency. The are already choosen some baudrates if your baudrate equals with some on the table. Otherwise you have to select them manually, but you will get deviations to you choosen baudrate. You will the the deviation in percent at the right table.
When you are ready you can go forward to step three.
Here you have first to select your wanted Nominal Bit Time Screenshot 2 [Step 3]and then you can edit/change to values for the single segments of a bit timing.
Download (0.017MB)
Added: 2006-11-03 License: GPL (GNU General Public License) Price:
640 downloads

3Delight for 32-bit Linux 7.0
3Delight is a renderer to produce photo-realistic images on 32-bit linux. more>> 3Delight is a fast, high quality, RenderMan-compliant renderer designed to produce photo-realistic images in demanding production environments. The renderer was introduced to the public in the year 2000 after being used for more than a year as the sole renderer in a sister production company. It is now widely used and earning a reputation as a benchmark in rendering technology.
Some of its features include ray tracing, global illumination (including photon mapping, final gathering and high dynamic range lighting and rendering), realistic motion blur, depth of field, complete geometry support (including efficient rendering of hair and fur), programmable shaders, quality antialiasing and antialiased shadow maps. Advanced features include Ri filtering, network caching and highly customizable workflow.
Follows a summary of 3Delights features.
-RenderMan Compliant
-RenderMan Shading Language Support
-Rendering Features
-Geometry Support
-Fast and Efficient Rendering
-Extensible Display Drivers
-Multi-platform Support with Specific Code Optimization<<less
Download (11.4MB)
Added: 2009-04-11 License: Freeware Price: Free
195 downloads

3Delight for 64-bit Linux 7.0
3Delight is a renderer to produce photo-realistic images on 64-bit linux. more>> 3Delight is a fast, high quality, RenderMan-compliant renderer designed to produce photo-realistic images in demanding production environments. The renderer was introduced to the public in the year 2000 after being used for more than a year as the sole renderer in a sister production company. It is now widely used and earning a reputation as a benchmark in rendering technology.
Some of its features include ray tracing, global illumination (including photon mapping, final gathering and high dynamic range lighting and rendering), realistic motion blur, depth of field, complete geometry support (including efficient rendering of hair and fur), programmable shaders, quality antialiasing and antialiased shadow maps. Advanced features include Ri filtering, network caching and highly customizable workflow.
Follows a summary of 3Delights features.
-RenderMan Compliant
-RenderMan Shading Language Support
-Rendering Features
-Geometry Support
-Fast and Efficient Rendering
-Extensible Display Drivers
-Multi-platform Support with Specific Code Optimization<<less
Download (10.1MB)
Added: 2009-04-12 License: Freeware Price: Free
194 downloads
AROS-Max 0.4.8
AROS-Max is a AROS-based live-CD. more>>
AROS-Max is a AROS-based live-CD.
AROS Max is a pre-configured live bootable CD image, made to show off the best that AROS has to offer. It requires an AROS capable PC, your mileage may vary.
If you require help getting AROS-Max to run please ask for help on the Max area at the AROS-Exec messageboard, please do not email us directly with support problems!
AROS is a portable and free desktop operating system aiming at being compatible with AmigaOS 3.1, while improving on it in many areas. The source code is available under an open source license, which allows anyone to freely improve upon it.
The goals of the AROS project is it to create an OS which:
1. Is as compatible as possible with AmigaOS 3.1.
2. Can be ported to different kinds of hardware architectures and processors, such as x86, PowerPC, Alpha, Sparc, HPPA and other.
3. Should be binary compatible on Amiga and source compatible on any other hardware.
4. Can run as a standalone version which boots directly from hard disk and as an emulation which opens a window on an existing OS to develop software and run Amiga and native applications at the same time.
5. Improves upon the functionality of AmigaOS.
To reach this goal, we use a number of techniques. First of all, we make heavy use of the Internet. You can participate in our project even if you can write only one single OS function. The most current version of the source is accessible 24 hours per day and patches can be merged into it at any time. A small database with open tasks makes sure work is not duplicated.
Some time back in the year 1993, the situation for the Amiga looked somewhat worse than usual and some Amiga fans got together and discussed what should be done to increase the acceptance of our beloved machine. Immediately the main reason for the missing success of the Amiga became clear: it was propagation, or rather the lack thereof. The Amiga should get a more widespread basis to make it more attractive for everyone to use and to develop for. So plans were made to reach this goal. One of the plans was to fix the bugs of the AmigaOS, another was to make it an modern operating system. The AOS project was born.
But exactly what was a bug? And how should the bugs be fixed? What are the features a so-called modern OS must have? And how should they be implemented into the AmigaOS?
Two years later, people were still arguing about this and not even one line of code had been written (or at least no one had ever seen that code). Discussions were still of the pattern where someone stated that "we must have ..." and someone answered "read the old mails" or "this is impossible to do, because ..." which was shortly followed by "youre wrong because ..." and so on.
In the winter of 1995, Aaron Digulla got fed up with this situation and posted an RFC (request for comments) to the AOS mailing list in which I asked what the minimal common ground might be. Several options were given and the conclusion was that almost everyone would like to see an open OS which is compatible to AmigaOS 3.1 (kickstart 40.68) on which further discussions could be based upon to see what is possible and what is not.
So the work began and AROS was born.
<<lessAROS Max is a pre-configured live bootable CD image, made to show off the best that AROS has to offer. It requires an AROS capable PC, your mileage may vary.
If you require help getting AROS-Max to run please ask for help on the Max area at the AROS-Exec messageboard, please do not email us directly with support problems!
AROS is a portable and free desktop operating system aiming at being compatible with AmigaOS 3.1, while improving on it in many areas. The source code is available under an open source license, which allows anyone to freely improve upon it.
The goals of the AROS project is it to create an OS which:
1. Is as compatible as possible with AmigaOS 3.1.
2. Can be ported to different kinds of hardware architectures and processors, such as x86, PowerPC, Alpha, Sparc, HPPA and other.
3. Should be binary compatible on Amiga and source compatible on any other hardware.
4. Can run as a standalone version which boots directly from hard disk and as an emulation which opens a window on an existing OS to develop software and run Amiga and native applications at the same time.
5. Improves upon the functionality of AmigaOS.
To reach this goal, we use a number of techniques. First of all, we make heavy use of the Internet. You can participate in our project even if you can write only one single OS function. The most current version of the source is accessible 24 hours per day and patches can be merged into it at any time. A small database with open tasks makes sure work is not duplicated.
Some time back in the year 1993, the situation for the Amiga looked somewhat worse than usual and some Amiga fans got together and discussed what should be done to increase the acceptance of our beloved machine. Immediately the main reason for the missing success of the Amiga became clear: it was propagation, or rather the lack thereof. The Amiga should get a more widespread basis to make it more attractive for everyone to use and to develop for. So plans were made to reach this goal. One of the plans was to fix the bugs of the AmigaOS, another was to make it an modern operating system. The AOS project was born.
But exactly what was a bug? And how should the bugs be fixed? What are the features a so-called modern OS must have? And how should they be implemented into the AmigaOS?
Two years later, people were still arguing about this and not even one line of code had been written (or at least no one had ever seen that code). Discussions were still of the pattern where someone stated that "we must have ..." and someone answered "read the old mails" or "this is impossible to do, because ..." which was shortly followed by "youre wrong because ..." and so on.
In the winter of 1995, Aaron Digulla got fed up with this situation and posted an RFC (request for comments) to the AOS mailing list in which I asked what the minimal common ground might be. Several options were given and the conclusion was that almost everyone would like to see an open OS which is compatible to AmigaOS 3.1 (kickstart 40.68) on which further discussions could be based upon to see what is possible and what is not.
So the work began and AROS was born.
Download (MB)
Added: 2005-12-17 License: Freeware Price:
1422 downloads
MEPIS AntiX 6.5
MEPIS AntiX is a new, unofficial derivative of MEPIS Linux aimed at computers with as little as 128 MB or RAM. more>>
MEPIS AntiX is a new, unofficial derivative of MEPIS Linux aimed at computers with as little as 128 MB or RAM. A development release, offering the choice of Fluxbox or IceWM as window managers.
<<less Download (410MB)
Added: 2007-07-10 License: GPL (GNU General Public License) Price:
847 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
tiffscan 0.2
tiffscan is an advanced SANE frontend. more>>
tiffscan is an advanced SANE frontend. It has batch mode capabilities and can generate compressed multi-page TIFF files. The project handles from black and white to 8-bit and 16-bit scans.
<<less Download (0.012MB)
Added: 2007-01-26 License: GPL (GNU General Public License) Price:
1001 downloads
Rescue! Max 1.0.0.2
Rescue Max is a Action Adventure in Space written in java. more>>
Rescue Max is a Action Adventure in Space written in java.
Rescue! Max is a 2D space, real-time, action/strategy game in which you are in control of a ship that you fly around space, fighting enemies and making friends on your way.
Rescue! Maxs main objective is to rescue people from planets and take them to star bases.
Enhancements:
- made select enimies default
- added particle explosions
- redone SpaceObjects inheritance
- added wait curser when new mission is laoding
- Rescue theme: maximum energy to 9999 instead of 10000
- Rescue theme: added better romulan warbird
- Rescue theme: added original main ship
- Rescue max theme: less of those evil nutrals as default
- Fixed: make auto impulse and auto warp clear when the ship is killed (that is set as the destination)
- game ends when u get killed
- game does not start when u start the app
<<lessRescue! Max is a 2D space, real-time, action/strategy game in which you are in control of a ship that you fly around space, fighting enemies and making friends on your way.
Rescue! Maxs main objective is to rescue people from planets and take them to star bases.
Enhancements:
- made select enimies default
- added particle explosions
- redone SpaceObjects inheritance
- added wait curser when new mission is laoding
- Rescue theme: maximum energy to 9999 instead of 10000
- Rescue theme: added better romulan warbird
- Rescue theme: added original main ship
- Rescue max theme: less of those evil nutrals as default
- Fixed: make auto impulse and auto warp clear when the ship is killed (that is set as the destination)
- game ends when u get killed
- game does not start when u start the app
Download (3.6MB)
Added: 2006-06-04 License: GPL (GNU General Public License) Price:
1239 downloads
Berkeley Unified Parallel C 2.4.0
Berkeley Unified Parallel C (UPC) is an extension of the C programming language. more>>
Unified Parallel C, in short UPC, is an extension of the C programming language designed for high performance computing on large-scale parallel machines.
The language provides a uniform programming model for both shared and distributed memory hardware.
The programmer is presented with a single shared, partitioned address space, where variables may be directly read and written by any processor, but each variable is physically associated with a single processor.
UPC uses a Single Program Multiple Data (SPMD) model of computation in which the amount of parallelism is fixed at program startup time, typically with a single thread of execution per processor.
Whats New in This Release:
- Add initial native support for the Cray XT3 via new portals network
- Implement the GASP 1.5 performance instrumentation interface, supporting the
Parallel Performance Wizard (PPW) and other third-party profiling tools.
- Add bupc_ticks_to_ns() - finer granularity timer query
- Add the Berkeley implementations of the UPC collectives and UPC-IO to GCCUPC+UPCR
- Add most of the Berkeley UPC library extensions to GCCUPC+UPCR
- Add upcdecl command-line tool (also online at: http://upc.lbl.gov/upcdecl)
- Add support for alloca() and stdarg.h
- Performance improvements to the BUPC semaphore library for signalling store
- Add bupc_thread_distance() - runtime thread layout query for hierarchical systems
- Add a remote fetch-and-add UPC library extension (initially just for 64-bit ints)
- Allow configure-time tuning of bit distribution in packed pointer-to-shared rep
- Fix the following notable bugs in 2.2.2 (see http://upc-bugs.lbl.gov for details):
- bug525: optimizer crashes on Tru64/CompaqC for libgasnet
- bug1229: More robust preprocessing on Compaq C
- bug1389: ansi-aliasing violations on small local put/get copies
- bug1531: improved lock fairness to remote lock requests
- bug1594: timer inaccuracies on Cray X1E
- bug1645: preprocess-time failure Backslash found where operator expected
- bug1657: PACKAGE_* symbols exposed to UPC code on GCCUPC+UPCR
- bug1683: improve upcrun handling of -shared-heap-max
- bug 1743: More robust behavior when backend C compiler changes
- Improved SRV-based DNS failover for upcc HTTP translation
- Add gzip compression to HTTP netcompile, for faster compiles over slow links
- Improved robustness for SSH netcompile to handle stray output from dotfiles
- Numerous misc minor bug fixes
<<lessThe language provides a uniform programming model for both shared and distributed memory hardware.
The programmer is presented with a single shared, partitioned address space, where variables may be directly read and written by any processor, but each variable is physically associated with a single processor.
UPC uses a Single Program Multiple Data (SPMD) model of computation in which the amount of parallelism is fixed at program startup time, typically with a single thread of execution per processor.
Whats New in This Release:
- Add initial native support for the Cray XT3 via new portals network
- Implement the GASP 1.5 performance instrumentation interface, supporting the
Parallel Performance Wizard (PPW) and other third-party profiling tools.
- Add bupc_ticks_to_ns() - finer granularity timer query
- Add the Berkeley implementations of the UPC collectives and UPC-IO to GCCUPC+UPCR
- Add most of the Berkeley UPC library extensions to GCCUPC+UPCR
- Add upcdecl command-line tool (also online at: http://upc.lbl.gov/upcdecl)
- Add support for alloca() and stdarg.h
- Performance improvements to the BUPC semaphore library for signalling store
- Add bupc_thread_distance() - runtime thread layout query for hierarchical systems
- Add a remote fetch-and-add UPC library extension (initially just for 64-bit ints)
- Allow configure-time tuning of bit distribution in packed pointer-to-shared rep
- Fix the following notable bugs in 2.2.2 (see http://upc-bugs.lbl.gov for details):
- bug525: optimizer crashes on Tru64/CompaqC for libgasnet
- bug1229: More robust preprocessing on Compaq C
- bug1389: ansi-aliasing violations on small local put/get copies
- bug1531: improved lock fairness to remote lock requests
- bug1594: timer inaccuracies on Cray X1E
- bug1645: preprocess-time failure Backslash found where operator expected
- bug1657: PACKAGE_* symbols exposed to UPC code on GCCUPC+UPCR
- bug1683: improve upcrun handling of -shared-heap-max
- bug 1743: More robust behavior when backend C compiler changes
- Improved SRV-based DNS failover for upcc HTTP translation
- Add gzip compression to HTTP netcompile, for faster compiles over slow links
- Improved robustness for SSH netcompile to handle stray output from dotfiles
- Numerous misc minor bug fixes
Download (MB)
Added: 2006-11-18 License: BSD License Price:
1072 downloads
Riverdrums Load Balancer 0.8
Riverdrums Load Balancer project is a no-frills, event-driven load balancer aimed at clarity and efficiency. more>>
Riverdrums Load Balancer project is a no-frills, event-driven load balancer aimed at clarity and efficiency.
Compiling:
1. Install libevent
2. gcc -Wall -O2 -o rlb rlb.c -levent
Solaris:
a) cc -Wall -O2 -o rlb rlb.c -lnsl -lsocket -levent
Usage:
$ rlb -p port [-b addr] [-B addr] -h host:service[:max] [-h host:service[:max] ...] [-m max] [-t timeout] [-c check interval] [-s bufsize] [-n servers] [-f]
<<lessCompiling:
1. Install libevent
2. gcc -Wall -O2 -o rlb rlb.c -levent
Solaris:
a) cc -Wall -O2 -o rlb rlb.c -lnsl -lsocket -levent
Usage:
$ rlb -p port [-b addr] [-B addr] -h host:service[:max] [-h host:service[:max] ...] [-m max] [-t timeout] [-c check interval] [-s bufsize] [-n servers] [-f]
Download (0.011MB)
Added: 2007-07-23 License: GPL (GNU General Public License) Price:
825 downloads
SigBrowser 0.4
SigBrowser is a small tool to display large signals (up to 2 GB filesize / 1-6 channels / 16 bit integer). more>>
SigBrowser is a small tool to display large signals (up to 2 GB filesize / 1-6 channels / 16 bit integer).
SigBrowser allows you to smoothly browse in a large signal. It can load 16 bit signed integer data with up to 6 interlaced channels.
Unfortunately theres no large-file support, so the limit is at 2 GB. You cant do much except looking at the signal with various zooming factors.
But if youre searching for certain artefacts in a signal then its probably quite useful for you.
It can visualize large signals with filesizes of up to 2 GB. Currently only 16 bit signed integer signals with up to 8 interlaced channels can be loaded.
Using a P4 @ 1.8 GHz with 512 MB RAM and a GeForce 4 graphics card you can scroll and zoom quite smoothly through the whole signal. On a Sun Ultra 1500 its a bit slower but you can still work fine with it.
By using something which I call block-reduction (BL). BL uses the fact that todays screens only have a limited amount of pixels. That means to display the whole signal at once, the worst case regarding performance restrictions, you would have to display thousands of samples on one pixel coordinate in x (horizontal) direction.
Assuming we plot lines between each pair of following samples the user will see a colored area which borders in vertical direction are the minimum and maximum value of all samples falling on the same x-coordinate.
Using this fact we let the user create a so called signal profile. Besides storing the sampling rate, file format info, number of channels to visualize and similar things its main purpose is to contain min/max pairs each of which calculated from a block of N samples per channel. N gets specified by the user, usually 10..50, depending on signal size and computer beeing used.
By visualizing these min/max blocks instead of the real signal as long as the user doesnt zoom into the signal to much we dont loose any information on the screen. But we get a nice performance boost as the signal profile has a much smaller size (signal_lengh_in_samples / N * 2) than the original signal has. Unfortunately we cant do this anymore when the user zooms into details. Then SigBrowser switches to direct display of the signal but it loads only about 1 MB of the original signal at once, which would result in a width of usually several screens.
Example:
* C = number of channels in origianl signal
* V = number of channels to visualize
* S = original signal length in samples per channel
* B = block size
I have a signal of 1.1 GB, C = V = 8 channels, 16 bit integer samples which in my case contains S = 73298610 samples per channel. Using a block size of B = 10 samples per min/max block (really smooth interaction on a P4 3.2 GHz) you get a signal-profile of S / B * 4 / (1024*1024) = 84 MB which you have to keep in memory.
<<lessSigBrowser allows you to smoothly browse in a large signal. It can load 16 bit signed integer data with up to 6 interlaced channels.
Unfortunately theres no large-file support, so the limit is at 2 GB. You cant do much except looking at the signal with various zooming factors.
But if youre searching for certain artefacts in a signal then its probably quite useful for you.
It can visualize large signals with filesizes of up to 2 GB. Currently only 16 bit signed integer signals with up to 8 interlaced channels can be loaded.
Using a P4 @ 1.8 GHz with 512 MB RAM and a GeForce 4 graphics card you can scroll and zoom quite smoothly through the whole signal. On a Sun Ultra 1500 its a bit slower but you can still work fine with it.
By using something which I call block-reduction (BL). BL uses the fact that todays screens only have a limited amount of pixels. That means to display the whole signal at once, the worst case regarding performance restrictions, you would have to display thousands of samples on one pixel coordinate in x (horizontal) direction.
Assuming we plot lines between each pair of following samples the user will see a colored area which borders in vertical direction are the minimum and maximum value of all samples falling on the same x-coordinate.
Using this fact we let the user create a so called signal profile. Besides storing the sampling rate, file format info, number of channels to visualize and similar things its main purpose is to contain min/max pairs each of which calculated from a block of N samples per channel. N gets specified by the user, usually 10..50, depending on signal size and computer beeing used.
By visualizing these min/max blocks instead of the real signal as long as the user doesnt zoom into the signal to much we dont loose any information on the screen. But we get a nice performance boost as the signal profile has a much smaller size (signal_lengh_in_samples / N * 2) than the original signal has. Unfortunately we cant do this anymore when the user zooms into details. Then SigBrowser switches to direct display of the signal but it loads only about 1 MB of the original signal at once, which would result in a width of usually several screens.
Example:
* C = number of channels in origianl signal
* V = number of channels to visualize
* S = original signal length in samples per channel
* B = block size
I have a signal of 1.1 GB, C = V = 8 channels, 16 bit integer samples which in my case contains S = 73298610 samples per channel. Using a block size of B = 10 samples per min/max block (really smooth interaction on a P4 3.2 GHz) you get a signal-profile of S / B * 4 / (1024*1024) = 84 MB which you have to keep in memory.
Download (0.12MB)
Added: 2005-07-21 License: GPL (GNU General Public License) Price:
1557 downloads
Simple Sound for Small Devices 089m_20050905
Simple Sound for Small Devices (libsssd) is a simple cross-platform audio library. more>>
Simple Sound for Small Devices (libsssd) is a simple cross-platform audio library. Simple Sound for Small Devices is designed primarily for games on portable devices such as smart phones, PDAs, and hand-helds.
Simple Sound for Small Devices is designed as a very portable, cross-platform API for sound playback on small and embedded devices. Target platforms include smartphones, PDAs, Smart displays, webpads and embedded systems.
Target OSes include Linux (OSS/Free), Win32, WinCE/PPC/Smartphone, Symbian, and AmigaDE (both hosted and native). The library is biased toward real-time audio applications (like games), but is suitable for a wide array of other uses.
Installation:
To install the libsssd library, cd to the src direcotry and type make install
To make the demo applications, cd to the test directory and type make
Enhancements:
- Updated code to work with libsndfile 1.0.5
- Modularized each function for OSs that support tool libraries (AmigaDE)
- Added initAudio() and freeAudio() functions to allocate the control structure as different compilers may not pack the struct the same.
- Added support to init the audio player with different sample rates, bit depths, and channels (stereo, mono). Added support for user setting max number of playing channels and max number of cached samples at init time.
- fixed bug in player thread overflow functions (la,lb)
<<lessSimple Sound for Small Devices is designed as a very portable, cross-platform API for sound playback on small and embedded devices. Target platforms include smartphones, PDAs, Smart displays, webpads and embedded systems.
Target OSes include Linux (OSS/Free), Win32, WinCE/PPC/Smartphone, Symbian, and AmigaDE (both hosted and native). The library is biased toward real-time audio applications (like games), but is suitable for a wide array of other uses.
Installation:
To install the libsssd library, cd to the src direcotry and type make install
To make the demo applications, cd to the test directory and type make
Enhancements:
- Updated code to work with libsndfile 1.0.5
- Modularized each function for OSs that support tool libraries (AmigaDE)
- Added initAudio() and freeAudio() functions to allocate the control structure as different compilers may not pack the struct the same.
- Added support to init the audio player with different sample rates, bit depths, and channels (stereo, mono). Added support for user setting max number of playing channels and max number of cached samples at init time.
- fixed bug in player thread overflow functions (la,lb)
Download (0.92MB)
Added: 2006-02-17 License: MPL (Mozilla Public License) Price:
1349 downloads
Bit::Vector 6.4
Bit::Vector is an efficient bit vector, set of integers and big int math library. more>>
Bit::Vector is an efficient bit vector, set of integers and "big int" math library.
CLASS METHODS
Version
$version = Bit::Vector->Version();
Word_Bits
$bits = Bit::Vector->Word_Bits(); # bits in a machine word
Long_Bits
$bits = Bit::Vector->Long_Bits(); # bits in an unsigned long
new
$vector = Bit::Vector->new($bits); # bit vector constructor
@veclist = Bit::Vector->new($bits,$count);
new_Hex
$vector = Bit::Vector->new_Hex($bits,$string);
new_Bin
$vector = Bit::Vector->new_Bin($bits,$string);
new_Dec
$vector = Bit::Vector->new_Dec($bits,$string);
new_Enum
$vector = Bit::Vector->new_Enum($bits,$string);
Concat_List
$vector = Bit::Vector->Concat_List(@vectors);
OBJECT METHODS
new
$vec2 = $vec1->new($bits); # alternative call of constructor
@veclist = $vec->new($bits,$count);
Shadow
$vec2 = $vec1->Shadow(); # new vector, same size but empty
Clone
$vec2 = $vec1->Clone(); # new vector, exact duplicate
Concat
$vector = $vec1->Concat($vec2);
Concat_List
$vector = $vec1->Concat_List($vec2,$vec3,...);
Size
$bits = $vector->Size();
Resize
$vector->Resize($bits);
$vector->Resize($vector->Size()+5);
$vector->Resize($vector->Size()-5);
Copy
$vec2->Copy($vec1);
Empty
$vector->Empty();
Fill
$vector->Fill();
Flip
$vector->Flip();
Primes
$vector->Primes(); # Sieve of Erathostenes
Reverse
$vec2->Reverse($vec1);
Interval_Empty
$vector->Interval_Empty($min,$max);
Interval_Fill
$vector->Interval_Fill($min,$max);
Interval_Flip
$vector->Interval_Flip($min,$max);
Interval_Reverse
$vector->Interval_Reverse($min,$max);
Interval_Scan_inc
if (($min,$max) = $vector->Interval_Scan_inc($start))
Interval_Scan_dec
if (($min,$max) = $vector->Interval_Scan_dec($start))
Interval_Copy
$vec2->Interval_Copy($vec1,$offset2,$offset1,$length);
Interval_Substitute
$vec2->Interval_Substitute($vec1,$off2,$len2,$off1,$len1);
is_empty
if ($vector->is_empty())
is_full
if ($vector->is_full())
equal
if ($vec1->equal($vec2))
Lexicompare (unsigned)
if ($vec1->Lexicompare($vec2) == 0)
if ($vec1->Lexicompare($vec2) != 0)
if ($vec1->Lexicompare($vec2) < 0)
if ($vec1->Lexicompare($vec2) Lexicompare($vec2) > 0)
if ($vec1->Lexicompare($vec2) >= 0)
Compare (signed)
if ($vec1->Compare($vec2) == 0)
if ($vec1->Compare($vec2) != 0)
if ($vec1->Compare($vec2) < 0)
if ($vec1->Compare($vec2) Compare($vec2) > 0)
if ($vec1->Compare($vec2) >= 0)
to_Hex
$string = $vector->to_Hex();
from_Hex
$vector->from_Hex($string);
to_Bin
$string = $vector->to_Bin();
from_Bin
$vector->from_Bin($string);
to_Dec
$string = $vector->to_Dec();
from_Dec
$vector->from_Dec($string);
to_Enum
$string = $vector->to_Enum(); # e.g. "2,3,5-7,11,13-19"
from_Enum
$vector->from_Enum($string);
Bit_Off
$vector->Bit_Off($index);
Bit_On
$vector->Bit_On($index);
bit_flip
$bit = $vector->bit_flip($index);
bit_test
contains
$bit = $vector->bit_test($index);
$bit = $vector->contains($index);
if ($vector->bit_test($index))
if ($vector->contains($index))
Bit_Copy
$vector->Bit_Copy($index,$bit);
LSB (least significant bit)
$vector->LSB($bit);
MSB (most significant bit)
$vector->MSB($bit);
lsb (least significant bit)
$bit = $vector->lsb();
msb (most significant bit)
$bit = $vector->msb();
rotate_left
$carry = $vector->rotate_left();
rotate_right
$carry = $vector->rotate_right();
shift_left
$carry = $vector->shift_left($carry);
shift_right
$carry = $vector->shift_right($carry);
Move_Left
$vector->Move_Left($bits); # shift left "$bits" positions
Move_Right
$vector->Move_Right($bits); # shift right "$bits" positions
Insert
$vector->Insert($offset,$bits);
Delete
$vector->Delete($offset,$bits);
increment
$carry = $vector->increment();
decrement
$carry = $vector->decrement();
inc
$overflow = $vec2->inc($vec1);
dec
$overflow = $vec2->dec($vec1);
add
$carry = $vec3->add($vec1,$vec2,$carry);
($carry,$overflow) = $vec3->add($vec1,$vec2,$carry);
subtract
$carry = $vec3->subtract($vec1,$vec2,$carry);
($carry,$overflow) = $vec3->subtract($vec1,$vec2,$carry);
Neg
Negate
$vec2->Neg($vec1);
$vec2->Negate($vec1);
Abs
Absolute
$vec2->Abs($vec1);
$vec2->Absolute($vec1);
Sign
if ($vector->Sign() == 0)
if ($vector->Sign() != 0)
if ($vector->Sign() < 0)
if ($vector->Sign() Sign() > 0)
if ($vector->Sign() >= 0)
Multiply
$vec3->Multiply($vec1,$vec2);
Divide
$quot->Divide($vec1,$vec2,$rest);
GCD (Greatest Common Divisor)
$vecgcd->GCD($veca,$vecb);
$vecgcd->GCD($vecx,$vecy,$veca,$vecb);
Power
$vec3->Power($vec1,$vec2);
Block_Store
$vector->Block_Store($buffer);
Block_Read
$buffer = $vector->Block_Read();
Word_Size
$size = $vector->Word_Size(); # number of words in "$vector"
Word_Store
$vector->Word_Store($offset,$word);
Word_Read
$word = $vector->Word_Read($offset);
Word_List_Store
$vector->Word_List_Store(@words);
Word_List_Read
@words = $vector->Word_List_Read();
Word_Insert
$vector->Word_Insert($offset,$count);
Word_Delete
$vector->Word_Delete($offset,$count);
Chunk_Store
$vector->Chunk_Store($chunksize,$offset,$chunk);
Chunk_Read
$chunk = $vector->Chunk_Read($chunksize,$offset);
Chunk_List_Store
$vector->Chunk_List_Store($chunksize,@chunks);
Chunk_List_Read
@chunks = $vector->Chunk_List_Read($chunksize);
Index_List_Remove
$vector->Index_List_Remove(@indices);
Index_List_Store
$vector->Index_List_Store(@indices);
Index_List_Read
@indices = $vector->Index_List_Read();
Or
Union
$vec3->Or($vec1,$vec2);
$set3->Union($set1,$set2);
And
Intersection
$vec3->And($vec1,$vec2);
$set3->Intersection($set1,$set2);
AndNot
Difference
$vec3->AndNot($vec1,$vec2);
$set3->Difference($set1,$set2);
Xor
ExclusiveOr
$vec3->Xor($vec1,$vec2);
$set3->ExclusiveOr($set1,$set2);
Not
Complement
$vec2->Not($vec1);
$set2->Complement($set1);
subset
if ($set1->subset($set2)) # true if $set1 is subset of $set2
Norm
$norm = $set->Norm();
$norm = $set->Norm2();
$norm = $set->Norm3();
Min
$min = $set->Min();
Max
$max = $set->Max();
Multiplication
$matrix3->Multiplication($rows3,$cols3,
$matrix1,$rows1,$cols1,
$matrix2,$rows2,$cols2);
Product
$matrix3->Product($rows3,$cols3,
$matrix1,$rows1,$cols1,
$matrix2,$rows2,$cols2);
Closure
$matrix->Closure($rows,$cols);
Transpose
$matrix2->Transpose($rows2,$cols2,$matrix1,$rows1,$cols1);
<<lessCLASS METHODS
Version
$version = Bit::Vector->Version();
Word_Bits
$bits = Bit::Vector->Word_Bits(); # bits in a machine word
Long_Bits
$bits = Bit::Vector->Long_Bits(); # bits in an unsigned long
new
$vector = Bit::Vector->new($bits); # bit vector constructor
@veclist = Bit::Vector->new($bits,$count);
new_Hex
$vector = Bit::Vector->new_Hex($bits,$string);
new_Bin
$vector = Bit::Vector->new_Bin($bits,$string);
new_Dec
$vector = Bit::Vector->new_Dec($bits,$string);
new_Enum
$vector = Bit::Vector->new_Enum($bits,$string);
Concat_List
$vector = Bit::Vector->Concat_List(@vectors);
OBJECT METHODS
new
$vec2 = $vec1->new($bits); # alternative call of constructor
@veclist = $vec->new($bits,$count);
Shadow
$vec2 = $vec1->Shadow(); # new vector, same size but empty
Clone
$vec2 = $vec1->Clone(); # new vector, exact duplicate
Concat
$vector = $vec1->Concat($vec2);
Concat_List
$vector = $vec1->Concat_List($vec2,$vec3,...);
Size
$bits = $vector->Size();
Resize
$vector->Resize($bits);
$vector->Resize($vector->Size()+5);
$vector->Resize($vector->Size()-5);
Copy
$vec2->Copy($vec1);
Empty
$vector->Empty();
Fill
$vector->Fill();
Flip
$vector->Flip();
Primes
$vector->Primes(); # Sieve of Erathostenes
Reverse
$vec2->Reverse($vec1);
Interval_Empty
$vector->Interval_Empty($min,$max);
Interval_Fill
$vector->Interval_Fill($min,$max);
Interval_Flip
$vector->Interval_Flip($min,$max);
Interval_Reverse
$vector->Interval_Reverse($min,$max);
Interval_Scan_inc
if (($min,$max) = $vector->Interval_Scan_inc($start))
Interval_Scan_dec
if (($min,$max) = $vector->Interval_Scan_dec($start))
Interval_Copy
$vec2->Interval_Copy($vec1,$offset2,$offset1,$length);
Interval_Substitute
$vec2->Interval_Substitute($vec1,$off2,$len2,$off1,$len1);
is_empty
if ($vector->is_empty())
is_full
if ($vector->is_full())
equal
if ($vec1->equal($vec2))
Lexicompare (unsigned)
if ($vec1->Lexicompare($vec2) == 0)
if ($vec1->Lexicompare($vec2) != 0)
if ($vec1->Lexicompare($vec2) < 0)
if ($vec1->Lexicompare($vec2) Lexicompare($vec2) > 0)
if ($vec1->Lexicompare($vec2) >= 0)
Compare (signed)
if ($vec1->Compare($vec2) == 0)
if ($vec1->Compare($vec2) != 0)
if ($vec1->Compare($vec2) < 0)
if ($vec1->Compare($vec2) Compare($vec2) > 0)
if ($vec1->Compare($vec2) >= 0)
to_Hex
$string = $vector->to_Hex();
from_Hex
$vector->from_Hex($string);
to_Bin
$string = $vector->to_Bin();
from_Bin
$vector->from_Bin($string);
to_Dec
$string = $vector->to_Dec();
from_Dec
$vector->from_Dec($string);
to_Enum
$string = $vector->to_Enum(); # e.g. "2,3,5-7,11,13-19"
from_Enum
$vector->from_Enum($string);
Bit_Off
$vector->Bit_Off($index);
Bit_On
$vector->Bit_On($index);
bit_flip
$bit = $vector->bit_flip($index);
bit_test
contains
$bit = $vector->bit_test($index);
$bit = $vector->contains($index);
if ($vector->bit_test($index))
if ($vector->contains($index))
Bit_Copy
$vector->Bit_Copy($index,$bit);
LSB (least significant bit)
$vector->LSB($bit);
MSB (most significant bit)
$vector->MSB($bit);
lsb (least significant bit)
$bit = $vector->lsb();
msb (most significant bit)
$bit = $vector->msb();
rotate_left
$carry = $vector->rotate_left();
rotate_right
$carry = $vector->rotate_right();
shift_left
$carry = $vector->shift_left($carry);
shift_right
$carry = $vector->shift_right($carry);
Move_Left
$vector->Move_Left($bits); # shift left "$bits" positions
Move_Right
$vector->Move_Right($bits); # shift right "$bits" positions
Insert
$vector->Insert($offset,$bits);
Delete
$vector->Delete($offset,$bits);
increment
$carry = $vector->increment();
decrement
$carry = $vector->decrement();
inc
$overflow = $vec2->inc($vec1);
dec
$overflow = $vec2->dec($vec1);
add
$carry = $vec3->add($vec1,$vec2,$carry);
($carry,$overflow) = $vec3->add($vec1,$vec2,$carry);
subtract
$carry = $vec3->subtract($vec1,$vec2,$carry);
($carry,$overflow) = $vec3->subtract($vec1,$vec2,$carry);
Neg
Negate
$vec2->Neg($vec1);
$vec2->Negate($vec1);
Abs
Absolute
$vec2->Abs($vec1);
$vec2->Absolute($vec1);
Sign
if ($vector->Sign() == 0)
if ($vector->Sign() != 0)
if ($vector->Sign() < 0)
if ($vector->Sign() Sign() > 0)
if ($vector->Sign() >= 0)
Multiply
$vec3->Multiply($vec1,$vec2);
Divide
$quot->Divide($vec1,$vec2,$rest);
GCD (Greatest Common Divisor)
$vecgcd->GCD($veca,$vecb);
$vecgcd->GCD($vecx,$vecy,$veca,$vecb);
Power
$vec3->Power($vec1,$vec2);
Block_Store
$vector->Block_Store($buffer);
Block_Read
$buffer = $vector->Block_Read();
Word_Size
$size = $vector->Word_Size(); # number of words in "$vector"
Word_Store
$vector->Word_Store($offset,$word);
Word_Read
$word = $vector->Word_Read($offset);
Word_List_Store
$vector->Word_List_Store(@words);
Word_List_Read
@words = $vector->Word_List_Read();
Word_Insert
$vector->Word_Insert($offset,$count);
Word_Delete
$vector->Word_Delete($offset,$count);
Chunk_Store
$vector->Chunk_Store($chunksize,$offset,$chunk);
Chunk_Read
$chunk = $vector->Chunk_Read($chunksize,$offset);
Chunk_List_Store
$vector->Chunk_List_Store($chunksize,@chunks);
Chunk_List_Read
@chunks = $vector->Chunk_List_Read($chunksize);
Index_List_Remove
$vector->Index_List_Remove(@indices);
Index_List_Store
$vector->Index_List_Store(@indices);
Index_List_Read
@indices = $vector->Index_List_Read();
Or
Union
$vec3->Or($vec1,$vec2);
$set3->Union($set1,$set2);
And
Intersection
$vec3->And($vec1,$vec2);
$set3->Intersection($set1,$set2);
AndNot
Difference
$vec3->AndNot($vec1,$vec2);
$set3->Difference($set1,$set2);
Xor
ExclusiveOr
$vec3->Xor($vec1,$vec2);
$set3->ExclusiveOr($set1,$set2);
Not
Complement
$vec2->Not($vec1);
$set2->Complement($set1);
subset
if ($set1->subset($set2)) # true if $set1 is subset of $set2
Norm
$norm = $set->Norm();
$norm = $set->Norm2();
$norm = $set->Norm3();
Min
$min = $set->Min();
Max
$max = $set->Max();
Multiplication
$matrix3->Multiplication($rows3,$cols3,
$matrix1,$rows1,$cols1,
$matrix2,$rows2,$cols2);
Product
$matrix3->Product($rows3,$cols3,
$matrix1,$rows1,$cols1,
$matrix2,$rows2,$cols2);
Closure
$matrix->Closure($rows,$cols);
Transpose
$matrix2->Transpose($rows2,$cols2,$matrix1,$rows1,$cols1);
Download (0.13MB)
Added: 2007-05-17 License: Perl Artistic License Price:
890 downloads
The 64 bit Virtual CPU Project 0.0.23
The 64 bit Virtual CPU Project is a project to create 64-bit virtual CPU. more>>
This is a project to create 64-bit virtual CPU, create a 64 bit assembler for the CPU and then port C to it, and then create scripts to port GNU/Linux to it.
The aim is to run 64-bit Linux on common 8/16/32 bit CPUs in applications where speed is not an issue.
Enhancements:
- Added C code intended tor a PIC Preliminary documentation More updates to Gambas program
<<lessThe aim is to run 64-bit Linux on common 8/16/32 bit CPUs in applications where speed is not an issue.
Enhancements:
- Added C code intended tor a PIC Preliminary documentation More updates to Gambas program
Download (0.67MB)
Added: 2005-07-06 License: GPL (GNU General Public License) Price:
1600 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 32 bit windows max ram 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