I recently completed Hurricane Electric IPv6 certification and reached the “Sage” level. This was a fun and educational process and I would recommend it to anyone interested about the topic, as it’s a really nice way to start getting familiar with IPv6.
Also, I should mention certified IPv6 Sages are entitled to receive a free IPv6 themed t-shirt :)
This is an attempt at building a text mode Web browser interface. It has built in tabs, back and forward buttons, an home button, an address bar with favicon display, bookmark icon, and country flag. It also comes with a few default extensions : a pagerank plugin, a currency converter, a weather plugin, and a music player as well. What else could you ask for? The possibilities are infinite.
By the way, in case you wonder if such a browser makes sense in the social media era, the answer is YES : you can of course share the pages on various social media sites. The icons used come from the ANSi Social Media Icon Set (CC-BY-SA 3.0 licensed).
The rationale behind this design is quite simple : text mode is the undisputed best way to display information on a computer screen. There is no other option.
You can download this mockup as an ansi file, or converted in PNG (with iCE colors turned ON) for easier viewing.
For a lot of reasons, some people still want to be able to run Apache 1.3 on modern Linux distributions, and unfortunately for them, it doesn’t compile out of the box anymore. The encountered errors are, however, easy to fix and you will learn how to do so in this tutorial.
We start by downloading and unpacking sources of the latest 1.3.x version, which happens to be 1.3.42 :
wget http://archive.apache.org/dist/httpd/apache_1.3.42.tar.gz
tar xvfz apache_1.3.42.tar.gz
We then run the configure script :
cd apache_1.3.42
./configure
Most likely, this will fail and this error message will get displayed :
+ Warning: Your 'echo' command is slightly broken.
+ It interprets escape sequences per default. We already
+ tried 'echo -E' but had no real success. If errors occur
+ please set the SEO variable in 'configure' manually to
+ the required 'echo' options, i.e. those which force your
+ 'echo' to not interpret escape sequences per default.
+ NOTE: You may also need to edit the shell invoked by
+ 'configure'. Some shells (e.g. dash) have a
+ faulty echo builtin.
+ using installation path layout: Apache (config.layout)
This happens because in most modern distributions, sh is just an alias to dash, and dash interprets escape sequences which are therefore not echoed as they should.
The workaround is to simply use bash instead of sh to run the script :
bash ./configure
Now, let’s compile everything :
make
After compiling a few files, the process will halt with this error :
gcc -c -I../os/unix -I../include -DLINUX=22 -DHAVE_SET_DUMPABLE -DUSE_HSREGEX -DNO_DL_NEEDED `../apaci` htpasswd.c
htpasswd.c:101:12: error: conflicting types for ‘getline’
/usr/include/stdio.h:671:20: note: previous declaration of ‘getline’ was here
make[2]: *** [htpasswd.o] Error 1
The internal Apache getline function is conflicting with the getline function from the standard I/O library. We can simply fix this by renaming the getline function, which is defined and called in htdigest.c, htpasswd.c, and logresolve.c :
sed -i 's/getline/apache_getline/' src/support/htdigest.c
sed -i 's/getline/apache_getline/' src/support/htpasswd.c
sed -i 's/getline/apache_getline/' src/support/logresolve.c
Let’s run make again, and everything should finally compile without problem :
make
Please note, however, that Apache 1.3 branch reached end of life and is therefore depreceated and not supported anymore. It means you will not be getting any bugfixes or security updates and should anything happen, you will have to patch the source files yourself.
In this tutorial, you will learn how to setup a complete Node.js development environment, including NPM (the Node Package Manager) and Cloud9 IDE to edit, run, and debug Node programs. The following installation instructions have been sucessfully tested on Debian 6.0 “Squeeze” and on Ubuntu 11.10 “Oneiric Ocelot”, but they should also work properly on previous versions as well.
We will install everything in the user’s home directory : this way, there is no need for any root access to the machine (provided the required packages are, of course, already installed), and each user can manage its own version of Node.
We start by installing (as root) required packages to build Node and later fetch NPM and Cloud9 :
We fetch, unpack, configure, compile, and install Node. At the time of writing, the latest stable version is 0.4.12, so we simply set the temporary $NODE_VERSION variable accordingly :
export NODE_VERSION='0.4.12'
wget http://nodejs.org/dist/node-v$NODE_VERSION.tar.gz
tar xvfz node-v$NODE_VERSION.tar.gz
cd node-v$NODE_VERSION
./configure --prefix=~/local
make install
cd ~
We then fetch and install NPM :
curl http://npmjs.org/install.sh | sh
And finally, we install Cloud9 IDE via git :
git clone git://github.com/ajaxorg/cloud9.git
If everything went fine, congratulations, you can now launch Cloud9 IDE and type your first program. First launch can take some time, as the shellscript will need to get some required dependencies prior to run the program.
~/cloud9/bin/cloud9.sh
Note that the Cloud9 launcher accepts parameters allowing to specify IP and port to listen on, workspace directory, and so on and so far. Below is a list of all available options :
Show this help message
--help
Load the configuration from a config file. Overrides command-line options. Default:
-c, --config
Run child processes with a specific group. Default:
-g, --group
Run child processes as a specific user. Default:
-u, --user
Activate debug-mode. Default:
-d, --debug
Define an action to execute after the Cloud9 server is started. Default:
-a, --action
IP address where Cloud9 will serve from. Default: <127.0.0.1>
-l, --ip
Port number where Cloud9 will serve from. Default: <3000>
-p, --port
Path to the workspace that will be loaded in Cloud9 (may be relative or absolute). Default: <.>
-w, --workspace
Create a new file (Select File, New, then JavaScript file) and paste this code (this is the Hello World HTTP server example from the Node.js website) :
12345678
varhttp=require('http');http.createServer(function(req,res){res.writeHead(200,{'Content-Type':'text/plain'});res.end('Hello World\n');}).listen(1337,"127.0.0.1");console.log('Server running at http://127.0.0.1:1337/');
Run it :
And check the result in your Web browser :
Congratulations, you just ran your first Node program : see how easy and straightforward it was?
You now have everything ready in order to start developing Node.js applications! Should you need any information or resources to get you started, you can find useful links in the NodeCloud directory.
SciTE is a lightweight, fast, and crystal clear text and code editor for those
who love minimalism and efficiency. It is, however, a fully featured and highly customizable
editor supporting tabbed files, code folding, and language specific syntax highlighting.
It is one of my editor of choice for small projects : actually, I’m typing this
article using it.
SciTE feels oldschool, a reminiscing gem from a software era when efficiency
prevailed over complexity and bloating : in fact it feels so good that I decided to
use FVWM (which is, for the record, the first Window Manager I ever used back
in early 1996) to take a screenshot.
Some interesting facts and features :
It is built upon Scintilla (a source code editing component), and is extendable through Lua scripts.
Cross-platform (Good to note : the Windows version is just one single .EXE file!).
Interesting selection features : SciTE allows rectangular block selection by holding the CTRL key (ALT key under Windows) while defining the selected area.
Supports syntax highlighting and code folding for a large choice of languages.
Fully customizable through a text based configuration file.