29.10.07
Posted in Linux, Tutorials at 9:39 am by Guy
In this tutorial I will explain how to create a local Subversion (SVN) repository, intended for a single user. I assume that you already know the benefits of keeping track of old revision of projects or important documents such as a resume or a thesis you have been writing. Subversion offers you a very convenient yet strong method to do so, and the easiest way to do so with Subversion (SVN) is to create a local, home, repository intended for a single user - you.
Read the rest of this entry »
Permalink
20.10.07
Posted in Linux, Projects, spass at 9:22 pm by Guy
spass is a secure password generation tool. spass was designed under the assumption that a password generator is as good as its random number generator, so spass uses the Random class, a /dev/random based cryptography strong random number generator class. As always, I tried to make a user-friendly as possible command-line interface (as much as a command-line interface can be friendly).
Read the rest of this entry »
Permalink
12.10.07
Posted in Python at 12:52 pm by Guy
Python 2.5 introduced new syntax structure: the conditional expressions. For programmers in languages such as C these structures seem very basic and fundamental but Python lacked them for many years. As I said Python 2.5 introduced such syntax structure, one may use it in the following form:
x = a if condition else b
As you probably guessed a is assigned to x if condition evaluates to true and b is assigned otherwise. This is pretty much equivalent to the C conditional expressions. But as I said, this structure was only introduced in 2.5. Previous versions of Python are still widely deployed and in use, so how do you achieve the same thing in older version of Python?
Read the rest of this entry »
Permalink
05.10.07
Posted in Linux, Tutorials at 12:32 pm by Guy
In this post I will walk you through generating RSA and DSA keys using ssh-keygen. Public key authentication for SSH sessions are far superior to any password authentication and provide much higher security. ssh-keygen is the basic way for generating keys for such kind of authentication. I will also explain how to maintain those keys by changing their associated comments and more importantly by changing the passphrases using this handy utility.
Read the rest of this entry »
Permalink
02.10.07
Posted in Projects, radio.py at 9:00 am by Guy
radio.py is a little script that makes it very easy to listen to radio under Linux (and maybe other OSs too) with mplayer. All you need to do is to call radio.py with the name of the station you want to listen to. For example:
radio.py Radio Paradise
or
radio.py BBC3
To read more about radio.py go to the first post discussing radio.py.
What’s New
Here are some of the things that have changed in radio.py-0.4 compared to the previous release (0.3). Read the rest of this entry »
Permalink
26.09.07
Posted in C/C++ at 7:44 pm by Guy
In this post I’m going to discuss again the string benchmark I did before to find out what is the fastest way to iterate over an std::string. If you haven’t read the previous post on this subject go a head and read it as it covers the basic idea behind this benchmark. As I did the last time I did the benchmark, I check 5 ways of iteration:
Read the rest of this entry »
Permalink
22.09.07
Posted in C/C++, Tutorials at 11:55 am by Guy
After raising the issue of the low resolution problem of the timer provided by clock() in Resolution Problems in clock(), I’ve ended the post by mentioning to two more functions that should provide high-resolution timers suitable for profiling code. In this post I will discuss one of them, clock_gettime().
Read the rest of this entry »
Permalink
15.09.07
Posted in C/C++, Projects at 10:51 pm by Guy
After dealing with the seeding of srand(), I’ve realized that rand() just doesn’t give strong enough random numbers for some of my needs (e.g. strong password generator), so I decided to find a better solution. The solution came in the form of Random, a cryptography strong pseudo-random number generator class.
Read the rest of this entry »
Permalink
10.09.07
Posted in C/C++ at 10:50 pm by Guy
While playing recently with clock() in order to time the performance of different kinds of code and algorithms, I found an annoying bug. clock() just can’t register work that has taken less than 0.01 seconds. This is pretty unexpected as clock() should return the processor time used by the program. The man page for clock() states:
The clock() function returns an approximation of processor time used by the program.
Read the rest of this entry »
Permalink
07.09.07
Posted in C/C++, Tutorials at 10:11 pm by Guy
In this post I will show you how to process HTML forms easily using CGIs in C++. I assume you have already basic knowledge of writing CGIs in C++, if you don’t go a head and read Introduction to C++ CGI.
Processing forms is the basic function of any CGI script and the main purpose of CGIs. As you probably know there are two common ways to send form data back to the web server: “post” and “get”. When form data is sent with the “get” method it is appended to the URL string of the form submission URL. The “post” method is much like the “get” except the data is transmitted via http headers and not via the URL itself. When a form uses “get” it allows the user to easily bookmark the query created by the form as the data is transmitted in URL itself, on the other hand the “post” method allows to send much more data and spares to user from seeing the data in the URL.
Getting the “post” and “get” data is relatively easy. To get the data sent by “get” you can just call getenv("QUERY_STRING") and you will receive a pointer to null-terminated string containing the “get” data. Reading the “post” data is a bit more complicated. The data needs to be read from the standard input, but the program won’t receive an EOF when it reaches the end of the data but instead it should stop reading after reading a specified amount of bytes, which is defined in the environment variable “CONTENT_LENGTH“. So you should read getenv("CONTENT_LENGTH") bytes from the standard input to receive the “post” data.
Read the rest of this entry »
Permalink
« Previous entries · Next entries »