Java (Indonesian: Jawa; Javanese: ꦗꦮ) is an island of Indonesia. With a population of 143 million, Java is the world's most populous island, and one of the most densely populated places in the world. [read more at]

  • apache_maven

    Depending on your project requirements/number of customers, you may have to support different target environment. This article will help you to make your Maven build a bit more portable in that sense. Maven can help you avoiding having stage dependent data across all your Maven projects/ modules very easily thanks to resources filtering.

    Let’s imagine you want to build your software against many different runtime stack:

    • One is against your developer environment: eclipse, Tomcat, Mysql
    • One is running in a server with Tomcat, Mysql.
    • One is running in JBOSS 

    And that your software is somehow configurable, can be through properties files, xml files, environment variables. Some of your configurations files are containing data that are depending on runtime (paths, password, login, connection settings to database, profiling/tuning settings)

    Some guidelines about resources filtering

    Rules 1  you can’t filter pom.xml use profile keys

    if you have stage specific values pair key (login/password/paths) in pom.xml, you have to

    • use key/value pair properties in pom.xml (between <properties></properties>) or
    • use key/value pair properties that you override in pom.xml/settings.xml profiles or
    • use environment variables (not very efficient by the way and messy if you have too many)

    Rules 2 you can filter resources

    If you have stage specific values pair key (login/password/paths) in resources located at

    • src/main/ressources
    • src/test/resources
    • src/main/webapps
    • Anywhere else depending on your module archetype (an archetype is an helper to create a standardized Maven module)

    Then Maven filtering is the solution for your issues.

    Rules 3 profiles at rescue for new runtime

    Profiles can be defined in settings.xml or pom.xml. Maven has a very good documentation online HERE. Never forget that many profiles can be active at a time, either because you want it (start build with –P profilename1, profilename2) or based on external conditions (can be OS, path, existence/absence of files, etc..)

    Rules 4 Learn the hard way

    ATTENTION: resources  in module with packaging pom are not filtered nor copied to target directories. Don’t use src/main/resources in modules with packaging pom as it wont be copied and filtered to /target

    Tell Maven what to filter

    In order to use filters you must specify a resource directory and set filtering to true. The remaining elements are not required. Activate filtering for all files found in /src/main/resources. All files which contains the denotation ${} will be replaced by the building property value defined in <properties></properties>

    Warning: Do not filter files with binary content like images, PDF, ZIP, GIF, JPG:  This will most likely result in corrupt output. If you have both text files and binary files as resources, you need to declare two mutually exclusive resource sets.


    • Resources filtering definition has to be place between <build> and </build> , If you have a Maven project and a parent pom, it may belong to that particular pom.xml in order to avoid redundant definitions in all child pom.
    • if you want to filter all *.xxx files at any level in directory hierarchy you need both *.xxx (current level) and **/*.xxx (any level deeper)
    • The first resource set defines the files to be filtered and the other resource set defines the files to copy unaltered as illustrated below:




    With the above configuration, we tell Maven that any files .xml, .properties files has to be processed and filtered.

    Give filter definitions to Maven

    Maven let you define N filters per modules as default: you can have different filters for every pom.xml. This may create some management issues. You can still decide to use one file (per runtime stack, or per profile) but you’ll have to use an absolute path to it.

    You can add a filters in your parent pom.xml by adding, I name these filter static, as they exist or not. You can also define dynamic filer in profile: the profile is active, the filter is added.


    <filter> should be a file, usually a properties file that contains key/values pair that will be replaced at runtime.

    Note here that in order to be able to build against different target runtime, I do use a profile key/value pair properties

    Using Maven profiles to target multiple runtime environment

    Definition and motivation of using profiles

    Maven 2.0 goes to great lengths to ensure that builds are portable. Among other things, this means allowing build configuration inside the POM, avoiding all file system references (in inheritance, dependencies, and other places), and leaning much more heavily on the local repository to store the metadata needed to make this possible.

    However, sometimes portability is not entirely possible. Under certain conditions, plugin may need to be configured with local file system paths. Under other circumstances, a slightly different dependency set will be required, and the project's artifact name may need to be adjusted slightly. And at still other times, you may even need to include a whole plugin in the build lifecycle depending on the detected build environment.

    To address these circumstances, Maven 2.0 introduces the concept of a build profile. Profiles are specified using a subset of the elements available in the POM itself (plus one extra section), and are triggered in any of a variety of ways. They modify the POM at build time, and are meant to be used in complementary sets to give equivalent-but-different parameters for a set of target environments (providing, for example, the path of the app server root in the development, testing, and production environments). As such, profiles can easily lead to differing build results from different members of your team. However, used properly, profiles can be used while still preserving project portability. This will also minimize the use of -f option of maven which allows user to create another POM with different parameters or configuration to build which makes it more maintainable since it is running with one POM only. [from]

    In eclipse, you may want also to run your application against a simplified stack, for example by using Tomcat/Mysql. I propose you a strategy that should be able to target many runtime.

    First I replace all specific values through my application with keys ${aaaa.bbb.ccc} you determine the value of aaaa and bbb an ccc if you want to categorize them, but nothing stop you to just use ${aaa}


    • ${database.mysql.url}
    • ${log4j.default.level} but it can be also only
    • ${log4jdefaultlevel}

    I create

    • a file in my Maven project at /etc/filter/, I populate this file with keys/values that I use across all my configurations files in my application.
    • another file at /etc/filter/, I populate this file with keys/values that are independent of the runtime: can be logging information, timeout, etc..
    • another file at /etc/filter/, it contains all specific keys/values pair for that stage.

    You will have to put keys and their values to have the following valid configurations

    • + –> replace all keys and make your application work in Jboss
    • + –> replace all keys and make your application work in eclipse

    I now define in settings.xml  the following profiles

    • id “Common” that will be always active, it make sense to have a common filter for all runtime or stack as long as you only put common key/values pair. The key ${filter1} has the value /etc/filter/
    • id “Eclipse” that will be active only If I detect an  eclipse environment,  the key ${filter2} has the value /etc/filter/
    • id “Jboss” that will be not active as default, it will contains a properties key ${filter2} has the value /etc/filter/

    Lets look at the profile “common” in your globals settings.xml (you can also add it to your pom.xml)


    It define the filter1 and is always active

    The “eclipse” profile, only active when eclipse.exe is detected activate another filter



    Note that the above filters are using ${basedir} reserved property, this is replaced by maven by the current artificatid (or module), so with the example above, you will have to create an etc/filter in all your modules (if you have a multi module setup). If you want to avoid this, you will have to use an absolute path instead of ${basedir}

    The Jboss profile use the same principle as the “eclipse” profile, detect a file or a hostname (jbossbuildagent)

    Make this run in Teamcity/Hudson/Bamboo

    If you activate your profile based on activation settings, you will have nothing to do. If some of your profiles are not activated as default, don’t forget to add a –P profilename1, profilename2, .. in your maven goals list.



  • apache_maven

    On larger projects, additional dependencies often tend to creep into a POM as the number of dependencies grow. As dependencies change, you are often left with dependencies that are not being used, and just as often, you may forget to declare explicit dependencies for libraries you require. Because Maven 2.x includes transitive dependencies in the compile scope, your project may compile properly but fail to run in production. Consider a case where a project uses classes from a widely used project such as Jakarta Commons BeanUtils. Instead of declaring an explicit dependency on BeanUtils, your project simply relies on a project like Hibernate that references BeanUtils as a transitive dependency. Your project may compile successfully and run just fine, but if you upgrade to a new version of Hibernate that doesn’t depend on BeanUtils, you’ll start to get compile and runtime errors, and it won’t be immediately obvious why your project stopped compiling.

    Read mote at Sonatype Blog

  • Define an object that encapsulates how a set of objects interact. Mediator promotes loose coupling by keeping objects from referring to each other explicitly, and it lets you vary their interaction independently.

    Source code

     * Each colleague knows its Mediator object. Communicates with its mediator
     * whenever it would have otherwise communicated with another colleague.
     * @role __Colleague
    public abstract class Colleague {
            /** my mediator */
            private Mediator mediator;        /** Create colleague which knows about supplied mediator */
            protected Colleague(Mediator mediator) {
                    this.mediator = mediator;        }
            /** @return mediator this colleague knows about */
            public Mediator getMediator() {
                    return mediator;        }
    /** Concrete Colleague */
    public class ConcreteColleagueA extends Colleague {
            public ConcreteColleagueA(Mediator mediator) {
                    super(mediator);        }
            public void sampleOperation() {
                    // some state changes occur,
                    // notify mediator about them
                    getMediator().changed(this);        }
    /** Concrete Colleague */
    public class ConcreteColleagueB extends Colleague {
            public ConcreteColleagueB(Mediator mediator) {
                    super(mediator);        }
            public void sampleOperation() {
                    // some state changes occur,
                    // notify mediator about them
                    getMediator().changed(this);        }
     * Implements cooperative behavior by coordinating Colleague objects. Knows and
     * maintains its colleagues.
    public class ConcreteMediator implements Mediator {
            /** reference to concrete colleague */
            private ConcreteColleagueA aConcreteColleagueA;        /** reference to concrete colleague */
            private ConcreteColleagueB aConcreteColleagueB;        public void changed(Colleague colleague) {
                    // handle changes of particular colleague
            public void setConcreteColleagueA(ConcreteColleagueA colleague) {
                    aConcreteColleagueA = colleague;        }
            public void setConcreteColleagueB(ConcreteColleagueB colleague) {
                    aConcreteColleagueB = colleague;        }
     * Defines an interface for communicating with Colleague objects.
     * @role __Mediator
    public interface Mediator {
            /** Colleagues calls this method to notify Mediator that something changed */
            void changed(Colleague colleague);}
  • Without violating encapsulation, capture and externalize an object's internal state so that the object can be restored to this state later.

    Source code

     * Creates a memento containing a snapshot of its current internal state.
     * Uses the memento to restore its internal state.
     * @role __Originator
    public class Originator {
            public Memento createMemento() {
                    return new ConcreteMemento(this);        }
            public void setMemento(Memento memento) {
                    if (memento instanceof ConcreteMemento) {
                            // extract state from memento
     * Represents narrow interface of the memento visible to Caretaker
     * @role __Memento
    public interface Memento {
     * Stores internal state of the Originator object. 
     * This is sort of wide memento interface,
     * visible to Originator.
    public class ConcreteMemento implements Memento {
            public ConcreteMemento(Originator originator) {
                    // initialize memento with originator's state
  • There seems to be a lot of way to merge two #git repositories into one repository without losing file history. Here is another straightforward method.

    This method do not use #submodules or #subtree merges. it uses regular merge operations.

    1. Create a new empty repository New.
    2. Make an initial commit because we need one before we do a merge.
    3. Add a remote to old repository A.
    4. Merge A/master to New/master.
    5. Make a subdirectory folderA.
    6. Move all files into subdirectory folderA.
    7. Commit all of the file moves.
    8. Repeat 3-6 for another repository.
    mkdir result
    cd result
    git init
    touch README.MD
    git add .
    git commit -m "added"
    Step 3 to 6
    git remote add -f A
    git fetch --all
    git merge --allow-unrelated-histories  A/master
    mkdir folderA
    git mv -k * folderA
    git commit -m “moved A files into subdir folderA”
  • "For more than 50 years software has been a troublesome discipline. Software's problems are numerous and include cancelations, litigation, cost overruns, schedule overruns, high maintenance costs, and low levels of user satisfaction. The problems with software occur more often than not. My company's research indicates that more than half of large software projects will encounter some kind of delay, overrun, or failure to perform when deployed. But software does not have to be as troublesome as it has been. Some complex software projects do achieve their delivery schedules and cost targets, and behave properly when used. Throughout my career in software I've been interested in what distinguishes successful software projects from failures and disasters. It happens that the main factors leading to software success are easily identified when side-by-side comparisons of similar projects are performed, where one set was successful and the other set was troublesome. The successful software projects achieve excellence in software quality control, and they are able to do this because of excellence in software quality measurements. Although it might be thought that excellent software quality control is expensive, it turns out to yield a very positive return on investment. When canceled software projects and disasters are studied by means of "autopsies," they all have similar patterns: Early phases of troubled projects are handled carelessly without adequate requirements analysis or design reviews. After rushing through the early phases and seeming to be ahead of schedule, problems begin to mount during coding and testing. When testing begins in earnest, serious problems are detected so that schedules and cost targets cannot be achieved. Indeed, some software projects have so many serious problems—termed bugs or defects—that they are canceled without completion. By contrast, successful projects are more thorough at the start. The requirements are carefully analyzed and the designs are formally inspected. This takes some time and adds upfront costs, but once coding and testing begin, the value of careful quality control allows the projects to move rapidly to a successful conclusion. Stephen Kan and I both learned the importance of software quality control and good software quality metrics at IBM. Even though Stephen and I worked in different IBM labs during different decades, we have some common viewpoints. We have both been convinced by empirical evidence that without excellent software quality control, large system development is hazardous and likely to fail. We also both know that effective software quality control is built on a foundation of careful measurements using accurate metrics."

    A free metrics plugin for eclipse is also available on sourceforge "Provide metrics calculation and dependency analyzer plugin for the Eclipse platform. Measure various metrics with average and standard deviation and detect cycles in package and type dependencies and graph them."
  • Funny Video

  • Funny Video

  • What a windows users do need to install or use in SUSE 9 to complete the same tasks he get use to in Windows?.
    What were the difficulties encountered and what are the potential weakness of SuSE 9 distribution?

    Migration to linux

    Round 2

    GNU Free Documentation License - Copyright (c) 2003 Walter Cédric.

    Permission is granted to copy, distribute and/or modify this document
    under the terms of the GNU Free Documentation License, Version 1.2
    or any later version published by the Free Software Foundation;
    with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
    Texts. A copy of the license is included in the section entitled
    "GNU Free Documentation License".

    What a windows users do need to install or use in SUSE 9 to complete the same tasks he get use to in Windows?. What were the difficulties encountered and what are the potential weakness of SuSE 9 distribution?.

    I am using Windows since 10 years now, what decide me to switch all my personal PC (2) to Linux is
    here. I decide to try a completely free and open source Operating System to do my everyday private job....or better said some tasks....This small review has been done during evenings while watching TV, chatting on MSN, , I have only taking notes on my notebook while playing with SUSE. I hope that the quality will be good enough and that it may convince You to give SUSE or Linux in general a try.

    New 21.01.2003, my anti virusAVG (free edition) was running under Windows 2000 SP5, I encounter an electricity problem, Pc reboot, since this event I can not start my system anymore! safe mode, last good configuration, scandisk, nothing work. The anti virus may have let some file open, since I get a blue screen with an error message saying: can not get exclusive access to the opportunities to kill my multi boot and only use Linux SuSE, I do not regret the switch since..

    New 12.04.2004 My corporate ladtop running under M$ XP sp1, was defragmenting my Maxtor 250Gb external harddisk (FAT32) when the system hang. Rebooting windows has destruct the filesystem and leave me with a 'disk I/O error' and a blank disk! (Real men dont do backup but they often cry.....I was really pissed of at that time, lossing 180Gb of data is really a bad experience), I've tried to recover the data with scandisk, and Norton Disk Doctor 2004 (report error 'no filesystem' ) without any success :-( Last chance was my second PC running Suse Linux, MIRACLE, I've recover most of the data (95%) since Linux has mount and read all data from the damaged disk. Conclusions: defragmenting is dangerous! I consider now windows as a joke and I won't ever install a non journalised and transactionnal filesystem....Reiserfs 4 will be my next filesystem and I will replace my PC2 (w2k) with Linux SuSE 9.1 when it will be available.

    Test system:

    One more time, here is my system, The Linux experience you will have is very depending on hardware (and also drivers).....

    Mainboard Nvidia Nforce 2 ASUS A7VN8X deluxe
    2 integrated ethernet card
    6 USB - 2 Firewire
    On Board soundcard
    Harddisk IBM 120Go UDMA 133 (primary master)
    Harddisk IBM 80Go UDMA 133 (primary slave)
    CDR/RW 16x IDE noname
    Geforce FX 5600 256Mb MyVivo Athlon XP 1700 overclocked at 3200 with my watercooling
    512Mb DDR Dual Channel mode PC3200 (new)
    SUSE Linux 9.0 and the KDE 3.1.4 desktop Netgear DG 834G modem-router-switch-wireless (internal kernel is also running
    a Linux 2.4.17 on mips processor, as you see Linux is everywhere )

    Evening 1

    Note all these screenshot has been done with KSnapshot, finding this application was quite easy even if the menu contains a lot of entries, you can locate it under Utilities - Desktop - KSnapshot. I must admit that due to the huge number of shipped applications, SUSE has done a good sorting job in this menu. Of course you must know what you want to start or which task you want to acomplish


    Regret I browse thee documentation of KSnapshot and did not find any shortcuts/hotkey to trigger the screenshot....Naivement, I 've try the magic windows key combination, ALT-PRTSC or PRTSC, but it does not I decide then to search on google...."ksnapshot shortcut" give me the answer, CTRL-SHIFT-S which is documented in a "KDE-cvs-digest" as a "backdoor". I see here a documentation potential :-)

    Setting the resolution of screen

    YAST require to switch to root mode, I was quite impressed by the list of available monitor driver (I have a Syncmaster Samsung 191N) but sad when I saw, it was not in the list (the 181 is), I decide to browse through the list of available brand searching for a generic driver like in windows advance control panel, Bingo there is a "->LCD" monitor section, restart the desktop engine (X server) by logging out and I am done. It seem that there is till now always a solution, all you have to do is to search a little bit which is also good too because you can only be a better user...


    Since I have installed SUSE in a multi boot system, in Kexplorer (both a browser and a file manager and...see section below) all windows drive are not visible in the /mount directory like on any linux system but grouped in a /windows/ This disturb me 10s but I find it.

    As default you can not write on NTFS drive(Note kernel 2.6 should support full read/write operation on NTFS), so I decide to activate this feature since everywhere on internet, you can read that SUSE 9.0 support it (SUSE bring some new features from kernel 2.6 back to 2.4.21 like 64-bit support, journaling file system, improve security, low latence of scheduling, power management for notebook and improvment in the sound-system architecture. Trying to be a good user, I start the SUSE helpCenter and search for an article which speak of NTFS..


    I have found only recommendation for resizing or formatting the system during the installation of SUSE. One solution among others is to move all data from NTFS drive (full NTFS read support) to a Linux space then format back to FAT32....Operation done with Konqueror, the file manager. I already mention that I prefer to have a clone of Norton Commander.

    Java support

    Konqueror the default internet browser fully support Java, but it was not the case of the third party browser Opera I've installed or better said, Opera did not locate correctly the default JRE (Java Runtime Environment), so I need the feel to install the latest Java VM manually. Checking Konqueror settings shows that java is installed in /usr/lib/java2/bin/java


    Go to and download the self installer (2 links are provided a .bin and a .rpm and both are self extracting, confusing....), I choose the .bin file and that force me to set attribute of file to executable (right click on file then properties) to uncompress the .bin

    In linux world, a file can only be
    execute if it has it X flag set to 1
    User is the currently logged user
    Group is a set of user
    Others are...others!

    You get a file with an extension .rpm, many alternatives, choose one of the 3 below you prefer.

    1. Open a Terminal, log a root (type # su ) then type # rpm -iv filename
    2. You can use Konqueror and right click open with...Kpackage, a small utilities, then enter root password.
    3. You can use Konqueror and click directly on the rmp and YaST wll start up.

    Anyway, I choose one and continue my tour....In opera I set in preferences - Multimedia- Java Path to /usr/lib/SunJava2-1.4.2/jre/lib/i386 and then my java appear on my homepage, done


    Online Update

    are done through....YaST of course,(YaST I am know getting used to that name), software - online update to get the latest recommended patches and security fixes from one of the available SUSE server. 15 servers are installed: 13 are located in Europe and 1 in USA. The latest server is a free choice, you can also define Your own server. I choose 3 differents servers (primary in Germany) and all were working.


    Another way to be always informed about the status of possible update is to look at the SuseWatcher icon in the system tray, identic to the windows update icon. The icon color can change if something is available on the server.


    Internet browsing

    I like Opera so much that I have acquire a licence (previously for Windows and now for Linux), I have also choose Opera under Linux and I do not regret it, even if it is not open source.

    Instant messaging

    Under internet - Chat You can find a lot of tools installed as default like:

    • Gaim,Kopete, gnomeICU which are multi protocol instant messaging, (I decide to choose Kopete, but I will try all others in the future)
    • Or some specifics application related to specific protocol:
      • KVIrc, KSirc, XChat IRC (IRC)
      • KXicq2 (ICQ)
      • others Kinkatta, Kit, Konversation

    With Kopete, I was able to define ICQ, MSN, Jabber in less than 5 minutes without knowing the GUI at all! really impressive (If you can do it in windows, you can do it in Suse is now my new motto!), I am still trying to customize the GUI (like in my windows IM because I find that Kopetetake too much desktop space.


    A set of interesting plugin is provided as default: encryption, emoticons, history of messages, web presence (upload your IM status to a homepage or a server)...A lot of features, but Webcam and Whiteboard capabilities are still missing. For sure there will be a plugin soon or at least a GNU tool for this somewhere in SUSE


    For me, Instant Messaging is ok and I can live with Kopete.

    Mp3 and audio content.

    Using Konqueror, I try to locate my favorites mp3 directory in order to launch some mp3, XMMS start as default, I've heard that this player is quite good, the default skins is based on SUSE colors, mainly green with a chameleon (see pic), This skins is acceptable for a user but not for someone who has already use Winamp's MMd3 or EMP skin (but this is personal). I take google to see if there is something else to download, official homepage is here . but skins section is down (after a disk crash but it will reopen). Winamp skins seems to be incompatible with XMMS and there is no converter available

    listenMp3XMMS.gif Coming soon    
    XMMS the default mp3 player Use winamp 3 under Wine    

    Viewing file using Konqueror

    Konqueror is the default file manager and web browser, It is a central application in all KDE desktop. It has a lot of functionnalities (some people may say too much), and its own control panel.
    Viewing pictures with it is "slow" (dir has 26 pictures, mean size is 80kb) and it took several seconds (I am not comparing to Windows thumbnails feature, but with ACDsee). Entering twice in the directory do not create additional performance loss, since images are cached (default cache size is set to 1Mb) Windows, ACDsee and others tools use the same tricks.

    Hovering over pictures and files create a autozoom...this is a nice features (working with txt file, configuraton, pdf) and is fast, during the build of a directory, the auto zooming display some strange result (especially if you have different file type like pdf, txt, jpg all together in one directory), but it is working and has not crash during the past 10 days (I must be lucky some people will say)

    konquerorContextualMenu.gif konquerorTipsOverImages.gif konquerorHoveringOverFile.gif konquerorSettings.gif
    Contextual menu Hovering over images Hovering over file Konqueror settings, hierachical panel
    duee to huge number of options.
    • I still prefer a Norton Commander (because of the dual panel), so I am hunting on internet and found XNC 5.0 but no precompiled rpm for SUSE. this oblige me to compile the source code...
    • Path to file is difficult to keep in mind (mainly because there is no more drive letter, I only need some practice...), but you can define favorites

    xnc 5.04 running in suse 9.0
    My first compilation of a package

    Source code tarball installation must be done under root user:
    Since it is a tar, You can unpack archive with 'tar zxvf filename' or 'gunzip -c filename | tar xvf -'
    or use Konqueror and arrrrrrrrrrrrr
    Go to xnc-5.x.x directory
    Run '
    ./configure'. For configure options see output of './configure --help'
    Run '
    Run '
    make install' under root. This operation install files to Your computer.
    You need to run 'xncsetup' for each user who wants to run xnc.
    Configure Your environment with xncsetup and press 'Save' button.

    PS: If you have troubles compiling XNC try run
    './configure --disable-shared' and then make again.

    XNC is also downloable for SuSe 9.0 here on my homepage :xnc-5.0.4-1.i586.suse9.0.rpm


    Midnight Commander is a clone of Norton Commander running in a terminal (just type mc)


    "Krusader is an advanced twin-panel (commander-style) file-manager for KDE 3.x (similar to Midnight or Total Commander) but with many extras. It provides all the file-management features you could possibly want.
    Plus: extensive archive handling, mounted filesystem support, FTP, advanced search module, viewer/editor, directory synchronisation, file content comparisons, powerful batch renaming and much much more.
    It supports the following archive formats: tar, zip, bzip2, gzip, rar, ace, arj and rpm and can handle other KIOSlaves such as smb:// or fish://
    It is (almost) completely customizable, very user friendly, fast and looks great on your desktop! :-)"
    I am using it every day, and it is probably the one which has the better GUI

    XNC is also downloable for SuSe 9.0 here :xnc-5.0.4-1.i586.suse9.0.rpm

    Midnight Commander is a clone of Norton Commander running in a terminal (just type mc)




    USB support (Key)

    I mount a USB Key brand Apacer AP-MKSRU10(impossible to find a picture on internet, very cheap version 8â?¬)which use Sony Memory Stick , after a beep, the drive was recognized and in use. An icons was created on the desktop. The beep is immediate but it take sometimes several seconds till the removable drive is recognized. No problems transfer rates seem to be exactly the same as under Windows 2000.


    Usb key support, only mounting name is strange

    Evening 2

    Security, password policy, settings and firewall

    • Can be done in YaST, all setting are always done with th help of assistants, a meaninful documentation is always displayed on the left. No need to push a button or to hover on some part of the GUI like in Windows control panel.
    • NAT (Network Adress Translation) which consist of hiding the real internet adresses of your machine by hiding it behind the firewall adress is supported and with only a checkbox
    • You can block some Linux services (Webserver, Mail Server) or define your own.
    • I am still searching in the YaST GUI for port forwarding capabilities and firewall rules (TCP-UDP and direction). It seems that you must deal with the config file of the firewall directly. (/etc/sysconfig/SuSEfirewall2)
    yastsecurity.gif yastsecurity1.gif yastsecurity2.gif
    Security settings is a part of YaST Password is limited to 8 character in
    DES mode.
    Firewall settings are not complete. 4 Steps
    is clearly not enough

    Even if the first part of the setting is done with an assistant, I think that SuSE need to enhance the configuration of it's firewall. I do not want to dedicate a machine for running my firewall even if it is does not give the same security. My router is a Netgear 614 without firewall, but my other PC use a Netgear 634g which has one...

    YaST the configuration utility, but what can YaST do for You?

    A lot of things, see below the table. Clicking on a subsection always start an assistant that drive the user and give him succinct but understantable explanations.

    • Change Source of Installation
    • Install and Remove Software
    • Online Update
    • Patch CD Update
    • System Update
    • CD-ROM drives
    • Disk Controller
    • Graphics cards and monitor
    • Hardware information
    • IDE DMA Mode
    • Joystick
    • Printer
    • Scanner
    • Select Mouse Model
    • Sound
    • TV Card
    Network Devices
    • DSL
    • Fax
    • ISDN
    • Modem
    • Networl card
    • Phone Answering machine
    Network Devices
    • DHCP server
    • DNS server
    • DNS and Host Name
    • HTTP Server
    • Host Names
    • Kerberos Client
    • LDAP client
    • Mail Transfer Agent
    • NFS Client and Server
    • NIS client
    • NTP Client
    • Network Services
    • Proxy
    • Routing
    • Samba Client and Server
    • TFTP Server
    Security and Users
    • Edit and create groups
    • Edit and Create Users
    • Firewall
    • Security Settings
    • Boot Loader
    • Choose Language
    • Create a boot rescue disk
    • Editor for /etc/ sysconfig files
    • LVM
    • Partioner
    • Powertweak Config.
    • Profile manager
    • Restore System
    • Runlevel Editor
    • Select Keyboard layout
    • Select Time Zone
    • System Backup
    • Load Vendor Driver CD
    • Post a support Query
    • View Statup log
    • View System Log



    Don't laugh! a good screensaver is part of a personal computer even if it no more needed (TFT screens are good enough to not be damaged by a fix picture)

    • Suse has a lot of screensavers, a lot of them seems to be quite old or was in use in low end PC: character base or line base screensaver,
    • Those I prefer are all GL (Glide undestand openGl accelerated) based: Euphoria, Flux, Lament, Solar Wind
    • I like Vector Balls and Particles system since I've seen them on Amiga: Flow, Particle Fountain.
    • Matrix is provided as default!

    What I dislike is that it is not possible to define a list of prefered screensavers.In the End, ANY User will be satisfied with the number and diversity of screensavers.

    Emule, a P2P network under Linux

    Who is using emule under windows? hum? not You? so jump to the next section

    Install Lmule
    Install these 3 rpm in this order
    by typing rpm -ihv --nodeps filename.rpm
    OR clicking on rpm file in Konqueror

    Changee to /usr/bin and type ./lmule
    Install Emule under theWine emulator
    Does not work with all version of emule, not an option as today
    The core engine is not available, expect delivery in Q1 2004
    Use version 1.7.1
    But it seem discontinued...Interface match the windows version.
    Use It is working!!!!
    1. Locate all rpm in download section. You need 2 gtk rpm and 1 amule.rpm
    2. Click on each of them in Konqueror but install first GTK librairies
    3. After install of amule.rpm, you can start it under the menu - internet - More Programs - amule

    You can reuse the uncomplete part and .met files from the emule windows version

    OVERNET another P2P network under Linux

    Go to and download the core (an executable file running in command line mode)
    You need a GUI, this one is available at it is a rpm
    Start the gui by typing /usr/bin/ed2k_gui in konqueror
    The tool ask you to locate the core, here I save it under /home/elta68/.overnet/core/overnet0.51.2
    Choose a user name, a password and click "spawn core" then "go", you are now connected, share some files and here we go, download!!!!!!
    overnet gui settings for suse 9overnet running

    Evening 3

    Burning CD

    Burning CD tools can be found under Multimedia - CD/DVD Burning. 2 software are installed as default: K3b and cdbakeoven. The about K3b display the release number 0.10! this is disturbing me, is it stable when you ship anything with 0.10?

    burnincd.gif burnincd2.gif burnincd3.gif burnincd4.gif  
    1. Starting K3b 2. use the assistant, here I select
    Create a Data CD
    3. Use the file explorer to locate file you want to burn
    • Windows drive (NTFS - FAT32) are located in /windows/
    • You can give a name to your compilation, right click rename on the root..
    • The space left and consume on CD disk is displayed like in any burning software.
    • The GUI is very similar to EasyCD creator
    4 click burn and choose burning options
    • Speed (I have a 16X) but only 14X is available
    • Writing mode: DAO, TAO, RAW
    • Type of session
    • Volume CD-Test
    • and filesystems and misc options.

    I do not see any options missing, except an assistant for some protections schemes....(Securoom, Safedisk)

    burnincd5.gif burnincd6.gif   burnincd7.gif  
    Burning took 4:30 minutes for 594MB and mean speed was 12X If you want to create an audio CD
    • You can not directly use mp3 files but need to convert them back to wav with winamp for example.
    • You can also right click on a file and play it.
    In the menu tools:
    • CD-RW are supported (with Erase support of course)
    • Copy CD or Clone CD
    • Burn image ISO, BIN and CUE: CCD are missing.
    • Copy DVD, format DVD-RW, Burn ISO image...
    Control panel
    • It support plugins, only 3 are installed: mainly Audio Decoder and Audio Encoder and external programs to work properly. Highly extensible design is always good.
    • The control panel follow the same clarity guidelines as the whole KDE, which are good..
    • Following CD projects are possible: Audio CD, Data CD, Mixed mode CD, Video cd, eMovix CD, Data DVD, eMovix DVD. As you see everything is also present.
    • What is unknow is the abilty of K3b to handle protected CD....Of course nobody of us are using CloneCD, AlcoholSoft, NeroBurning to copy protected it is not really an issue or?
    • Of course I need to burn more than 2 CD to be able to give an opinion on K3b, and I am convince that it is easy to find some better reviews on internet. What I can say is that K3b will cover my personal use
    • Creating CD is as simple as with EasyCD Creator or Nero
    • For resuming, whaouuuh so much functionnality for a release 0.10...

    DVD, multimedia, Divx, Xvid

    DVD For some obscur reasons (juridical) It is not possible to play encrypted DVD on linux, if you search on you will find a lot of tutorials and the librairies. Here is an extract of the manual:an
    "For the playback of encrypted DVD movies you need a CSS decoder and the codecs (video format files) for ac3 (Dolby Digital) and mpeg2, which we cannot enclose with SUSE LINUX for legal reasons."

    Library to access encrypted DVDs also a CSS decoder can be found if You use the search engine at OR

    Kaffeineis a GUI for Xine library (the video engine), for the same reasons, divx drivers are not shipped with SuSe (in windows it is the same...)

    Use the site to locate the XVID drivers or use the site of packman and more precisely I choose the XVID 0.9.2

    In order to read and write compressed AVI files (indeo and divx), Linux can reuse the Win32 library of Windows Media Player 9 (wmv9dmod.dll wmvdmod.dll wma9dmod.dll wmadmod.dll wmspdmod.dll), You can find them at in the file "wm9 DMO dlls", just copy them to /usr/lib/win32/ and Kaffeine will find them (Operation done as root user and do not forget to give read and execute rights on file chmod 655 *.dll). If you want a more complete package, packman has all dlls required (9.2mo) at

    I encounter a lot of difficulties, and 70% of my video were not working, I decide to install the latest xine librairies (1.1rc3) and the latest kaffeine (0.4.1) AND NOW EVERYTHING IS WORKING great, I hope that suse will provide it with an update as soon as possible...

    CD audio Put the CD in the drive and it begin to play automatically.


    Windows network connectivity

    It seems that connecting SuSE to another remote windows desktop is not as easy as in the windows world...I have found the iconse "Local Network" but nothing was found. There is an interesting documentation in the help center "Linux in the network" speaking about Samba (a layer on top of TCPIP) which help to connect heterogenous computer (MAC, Windows, Linux, others which have this layer). Microsoft implements this layer after pressure of IBM....:-) A good documentation but what I want is 3 uses cases::

    • 1. How Linux can access to a Windows machine on the network/shares/printer/internet?
    • 2. How Windows can access to Linux machine on the network/shares/printer/internet?

    You must use Samba for all above.

    1. How Linux can access to a Windows machine on the network/shares/printer/internet?

    A lot of FAQ and Howto can be found with google, use the keywords: "linux windows smb howto"

    In Yast go to "Network Services" then
    "Samba Client" anfd enter the name of your windows workgroup
    Then Open a terminal and test if your client (Linux) can see some windows shares Or use Konqueror and type in the adress bar:
    You can then add this share as favorite
      smbclient -L ipadress (giving the computer name do not work with me, my pc is named "Raptor")

    If these steps are working, you can add definitively in /etc/samba/smb.conf the remote windows share, either with the YaST gui or with a text editor.

    2. How Windows can access to Linux machine on the network/shares/printer/internet?

    n Yast go to "Network Services" then
    "Samba Server" and enter the name of your windows workgroup
    On the second page, click advanced and define all share directory Windows shall see
    Only regret, you can not set rights (read only, read write) as if you open directly the file /etc/samba/smb.conf
    sambaServer1.jpg sambaServer2.jpg

    comment = My collection of MP3
    browseable = yes
    guest ok = yes
    printable = no


    • XMMS was not able to open remotely a mp3 using a samba share, copying the same mp3 locally work...strange.

     Links A tutorial in German LinNeighborhood is a tool to display the network neighbourhood like in windows explorer.

    Publishing, deploying web content A very good review.
    Mozilla Composer
    a wysiwyg (What You See Is What You Get) HTML editor

    A friendly task manager

    Since I was a windows user, I've been looking for a graphical program to allow process monitoring and manipulation. For chance, there is a default "task manager" coming from the base installation of KDE, it is located in System - Monitor - Kde System Guard

    ksysguard.png ksysguard1.png
    • It is a more user friendly way to monitor (and kill!) process or watch memory, cpu than in a terminal.(with command top or ps -ef | grep username)
    • Only regret it can not reside in the system tray and wait there when yu really need it.
    • You must filter in the process table, otherwise you will see a lot of process running in the background (KDE has a lot of process alone).
    • Option 1) Ctrl+Alt+Esc gives you a nice mouse cursor to kill whatever you point and click at. try it.
    • Option 2) Ctrl+Esc brings you a nice TasK List(Procees Table) to select and kill whatever process you like to.

    A powerful calculator HP48-HP49

    I still have 3 HP calculator and was developing on ASM-RPL.SYSRPL (from 1993 to 2000), I use EMU48each day under windows, see Here

    Here is a binary with roms that work... just unpack and start ./run48g.shor ./ in a terminal

    My webcam, a Philips PCV680K vesta pro

    Plug and..... wait, after some minutes (I was playing with the mount command, maybe it can shorten the process if you log as root (type su) and try to force mount of all devices mount -a)

    • In google "linux webcam philips" give me this page: It seems that these is now a part of the kernel since 2.4.15
    • It place an icon on the desktop ""webcam" clicking on it start Gnome meeting, you have then 7 steps to complete before using this tool.
    • It only allow you to use it between other gnome meetings instance, kopete, the Instant messaging has no webcam plugin, and do not recognize that a webcam was installed.

     Intall the latest nVidia driver

    Open a terminal  
    Switch to root su
    Download the latest drivers at (should be Linux IA32)
    Verify that you have install the kernel source with YOU (YaST Online Update), to know which kernel source you need,
    type rpm -qa | grep kernel
    go in YaSt and search for a package kernel, look at the number, for me it is 2.4.21-166 then download it at then download rpm and install
    In YaST, do a search with "kernel source", and install the src code.
    You must quit XFREE, so save all work and close all aplications running, then type in the console init 3
    press F2, log as root  
    Execute the .run package you have download, move to the directory where you save it and type sh
    The install ask You to accept the licence, remove the current nvidia modules from memory, and search for the kernel interface, if it is not found it search for the kernel source and compile it
    Restart Sax or restart the PC sax2 -m 0=nvidia

    As you see a lot of step, is it not time to do all these steps behind the scene in an installer? Nividia? can you help us?

     Intall media player Mplayer

    Official Homepage:
    On packman homepage ( ), download :

    • Libtheora (required by Mplayer) which use libogg
    • Lame (required by Mplayer)
    • Mplayer itself
    • Mplayer plugin
    • Kplayer is one GUI which use Mplayer for KDE

    so Install first liboggthen Libtheora, Lameandfinally Mplayerand Mplayer plugin


    • Dependancy (loading a packages require to install one or many another packages), conflict with packages is horrible, it is time to find a better format than rpm, (is apt-rpm from RedHat the future??? ( or to restrict visibility of packages to an application instead of the whole system.
    • Mplayer seems to have a better support of all windows, and show better performance on my system. Highly recomended.





    read and write on NTFS !

    A lot of projects are trying to read Windows NTFS drive with more or less success
    "The goals of this project are: create a new Linux kernel driver for the NTFS file system (v1.2 and later 3.0), user space utilities (e.g. format, ntfs check, etc.) and a library to avoid code duplication and provide access to NTFS to other GPLed programs."
    -> it is existing in kernel 2.4.24 but with only read only capabilities, can cause loss of data!
    -> Can not write or modifying existing file (no file under 1Kb and it can not change size of file....)   
    Author    Jan Kratochvil <web_AT_jankratochvil_DOT_N.E.T>    
    Version    1.5   
    Licence    GPL   
    Source    Yes   
    Environment    Console   
    Status    Stable
    "Captive provides full read/write access to NTFS disk drives in the WINE way by using the original Microsoft Windows ntfs.sys driver. It emulates the required subsystems of the Microsoft Windows kernel by reusing one of the original ntoskrnl.exe, ReactOS parts, or this project's own reimplementations on a case by case basis. Involvement of the original driver files was chosen to achieve the best and unprecedented filesystem compatibility and safety."

    As root user
    1. Download tar gz here
    2. Install, decompress and start ./install
    3. Locate ntfs.sys and ntoskrnl.exe in your windows/system32/ directory and copy it to /var/lib/captive/ I recommend You to use WinXp latest drivers
    4. start captive-install-acquire it search for the dll, if not found it will download them from
    5. for each windows drive (here  the example is for my drive C:\)
       type mkdir /mnt/openC
       type mount -t captive-ntfs -o force  /dev/hda1 /mnt/openC
       I add the switch -o force because SuSE has already mount the drive C (read only) in /windows/c
    open the file /etc/fstab and modify it:
    /dev/hda1 /windows/C   ntfs  ro,users,gid=users,umask=0002,nls=iso8859-1 0 0
    /dev/hda1 /windows/C   ntfs-captive  rw,users,gid=users,umask=0002,nls=iso8859-1 0 0
    and then type mount -a to see changes

    Attention, You may need to have a Windows licence!
    I do not want to configure wine...
    I do not want to install windows anymore...
    Publisher    Paragon Software Group   
    Version    1.0   
    Filesize    69 K   
    Licence    Shareware   
    Cost    69.95$   
    "Paragon NTFS for Linux is designed to mount NTFS partitions under Linux operating systems as normal logical drives with appropriate drive letter. The full version mounts NTFS partitions for read and write operations; the demo version mounts NTFS partitions in read-only mode. the driver supports NTFS 1.2, NTFS 3.0 and NTFS 3.1. Free Read-only version is distributed as a driver module or bootable CD image. Mounted NTFS partitions are accepted as â??nativeâ?? â?? browse, create/delete folder or file, run applications and other usual functions are totally available."

    Another way is to erase all NTFS drive and use reiserfs or extfs3, since Paragon also sell a windows driver to have full access to linux drive. Why should always Linux make the first step?

     Install KDE 3.2

    step by step....

    in YaST, go to "Software", and then "change source of installation"
    Set a new "software media source", use the button "add" and choose ftp

    server name:
    source directory: pub/suse/i386/supplementary/KDE/update_for_9.0/yast-source/

    wait till the system accept your new source of installation, close this windows, you can now go to "install and remove software", set the select box filter to "selection", "KDE Desktop environment" has its own section, install first all KDE base package.

    You will have some conflict, for me KDE pim, and PDA tools, just remove them! you can reinstall them after having installing the base package!

    restart your desktop session...known issues for KDE 3.2 are: sound (but it was working for me, alsa was selected as default) and kbear (FTP tool), for Kbear the solution for me was to remove  the previous version (
    kbear 2.1) and install this one:
    KBear 3.0alpha1b

    KDE 3.2 is as fast as my windows desktop, what a blast! I you want to have a good stability, it is preferable to wait the next official SuSE release...

     Disk Management, rescue disk, partitionning

     Anti virus Linux Bitdefender is a freeware

      Download manager
    use kget it can be start in a terminal /opt/kde3/bin/kget

     Printing, scanning

      Configuring KDE, themes

      Eclipse, development
    Download the file Eclipse GTK from decompress and start the executable.
    Jedit is a jar based installer, open a terminal and type java -jar jedit42pre9.jar and you're done

      Install kernel 2.6 on suse 9.0
    here's a howto in german:
    Compile your kernel

     Administring a Homepage
    ftp tool:
    KBear /opt/kde3/bin/kbear

      Remove un needed software

      Links for download AND The official page of SuSE Search for RPM Search for RPM Packman compile source code and provide RPM ready to download () FTP

    To read choose your filesystem


    Securing your Suse


    • The desktop is user friendly, at least for me, for example: saving some of these screenshot, under the save as windows, right clicking provide a menu to create, sorting or add directory.
    • The responsiveness of GUI is good if you consider that the 3D and all 2D tricks are maybe not supported by the driver. Of course this depend a lot of your graphics cards. Trying to start XP on a integrated graphic VXX chipset with shared memory is the same (was using a IBX notebook 2 years before switching to a Compaq NX7000 with a Radeon 9200...).
    • It a quite good to have the possibilities to reuse some win32 librairies (codecs) because they are stable and working. A bravo to the open source community!
    • I have done many online security update with YaST, and have not restart the machine, which is very good, on the other side, there is even more update than in Microsoft world...
    • Till now I have encounter no real difficulties, I must admit that is a must, and so fast for locating a solution (on forums, tutorials, howto, personal webpage....) as long as you use the right keywords. If you are already a good user of Windows, you will have no problem to switch to SUSE 9.0 TRUST me and make a try!


    • Having many rpm version for each distribution (even if you are on the same cpu plattform) or sometimes compile from the source code is the worst experience for me in linux. Only solution is to pray that someone or better SuSE provide you all rpm on a internet site (but you will always have to wait).
    • Suse do not provide for legal reasons enough packages (better said packages that are a must), but it is not diffcult to locate them on other homepage (libcss for decrypting dvd for example)
    • Installing basics fucntionnality ask by 80% of users are still too difficult

    Why Linux is not at the same level as Windows? my point of view is that people on the others side do their best to avoid porting of drivers and application from 3rd party compagny (and may be using economical threat to achieve this aim).



    Links with reference to this article


    Page created with Mozilla



    When you finish this article, You may want to read the previousround 1 HERE

    Thanks for reading... more to come in the future
    This page is a part of homepage - Comments welcomed clickHERE

  • mod_evasive is an evasive maneuvers module for Apache to provide evasive action in the event of an HTTP DoS or DDoS attack or brute force attack. It is also designed to be a detection and network management tool, and can be easily configured to talk to ipchains, firewalls, routers, and etcetera. mod_evasive presently reports abuses via email and syslog facilities.

    Detection is performed by creating an internal dynamic hash table of IP Addresses and URIs, and denying any single IP address from any of the following:
    • Requesting the same page more than a few times per second
    • Making more than 50 concurrent requests on the same child per second
    • Making any requests while temporarily blacklisted (on a blocking list)

    This method has worked well in both single-server script attacks as well as distributed attacks, but just like other evasive tools, is only as useful to the point of bandwidth and processor consumption (e.g. the amount of bandwidth and processor required to receive/process/respond to invalid requests), which is why it's a good idea to integrate this with your firewalls and routers for maximum protection.

    This module instantiates for each listener individually, and therefore has a built-in cleanup mechanism and scaling capabilities. Because of this per-child design, legitimate requests are never compromised (even from proxies and NAT addresses) but only scripted attacks. Even a user repeatedly clicking on 'reload' should not be affected unless they do it maliciously. mod_evasive is fully tweakable through the Apache configuration file, easy to incorporate into your web server, and easy to use. from

    click read more for my HowTo

     Download the actual version of mod_evasive
    #  wget

    Unpack it
    #  tar xvzf mod_evasive_1.10.1.tar.gz/usr/local/src/mod_evasive

    Move to that directory
    #  cd /usr/local/src/mod_evasive
    And edit the file mod_evasive20.c, we will have to change the line 45 to
    define MAILER  "/bin/mail -t %s"

    We compile the module:
    #  /usr/sbin/apxs2 -cia mod_evasive20.c#  /usr/sbin/apxs2-prefork -cia mod_evasive20.c

    Now we have to create a config file for mod_evasive:
    # touch /etc/apache2/conf.d/mod_evasive.conf
    and edit it
    # vi /etc/apache2/conf.d/mod_evasive.conf
    content of file

    LoadModule evasive20_module     /usr/lib/apache2/
    <IfModule mod_evasive20.c>
      DOSHashTableSize 3097
      DOSPageCount 5
      DOSSiteCount 100
      DOSPageInterval 2
      DOSSiteInterval 2
      DOSBlockingPeriod 600
      DOSEmailNotify This email address is being protected from spambots. You need JavaScript enabled to view it.
    LoadModule evasive20_module     /usr/lib/apache2-prefork/
    <IfModule mod_evasive20.c>
      DOSHashTableSize 3097
      DOSPageCount 5
      DOSSiteCount 100
      DOSPageInterval 2
      DOSSiteInterval 2
      DOSBlockingPeriod 600
      DOSEmailNotify This email address is being protected from spambots. You need JavaScript enabled to view it.

    Restart Apache2 either  with:
    # rcapache2 stop
    # rcapache2 start
    # /etc/init.d/apache2 restart

    Mod_evasive also deliver a sall perl script to try a DOS attack on your own webserver
    # cd /usr/src/mod_evasive
    # perl

    You should read http ok but after some seconds you will only get HTTP error 403 showing that mod_evasive is correctly running!
  • What is mod_evasive?

    mod_evasive is an evasive maneuvers module for Apache to provide evasive action in the event of an HTTP DoS or DDoS attack or brute force attack. It is also designed to be a detection and network management tool, and can be easily configured to talk to ipchains, firewalls, routers, and etcetera. mod_evasive presently reports abuses via email and syslog facilities.

    Detection is performed by creating an internal dynamic hash table of IP Addresses and URIs, and denying any single IP address from any of the following:

    • Requesting the same page more than a few times per second
    • Making more than 50 concurrent requests on the same child per second
    • Making any requests while temporarily blacklisted (on a blocking list)


    apt-get install libapache2-mod-evasive
    mkdir /var/log/apache2/mod_evasive
    chown www-data:www-data /var/log/apache2/mod_evasive


    Create a new file

    vi /etc/apache2/conf.d/01_modevasive.conf

    with this content

    <ifmodule mod_evasive20.c>
     DOSHashTableSize 3097
     DOSPageCount 2
     DOSSiteCount 50
     DOSPageInterval 1
     DOSSiteInterval 1
     DOSBlockingPeriod 10
     DOSLogDir /var/log/apache2/mod_evasive
     DOSEmailNotify root@localhost

    Restart Apache to activate the new module

    /etc/init.d/apache2 restart


    • DOSHashTableSize: Size of the hash table used to store the IPs.
    • DOSPageCount: Number of pages allowed per DOSPageInterval.
    • DOSPageInterval: Time in seconds used by DOSPageCount.
    • DOSSiteCount: Number of objects allowed per DOSSiteInterval.
    • DOSSiteInterval: Time in seconds used by DOSSiteCount.
    • DOSBlockingPeriod: Time in seconds that IPs will be banned. If an IP tries to access the server within this period, the count will be restarted.
    • DOSLogDir: Optional. Directory to store the logs. If not specified, /tmp will be used.
    • DOSEmailNotify: Optional. Mail where notifications will be sent.

    DOSSystemCommand: is Optional.&160; Command to execute if an IP is blocked. For example using iptables:

    DOSSystemCommand "/sbin/iptables -I INPUT -p tcp --dport 80 -s %s -j DROP"
  • Using Java platform management beans
    The latest release of the Java™ platform includes a number of new system monitoring and management features. In this article, three developers from the IBM Java Technology Centre team up to get you started using this API. After a quick overview of package, they guide you through a number of short practical scenarios to probe the performance of a running JVM.
    Among the many new features introduced in version 5.0 of the Java 2 platform is an API that enables Java applications and compliant tools to both monitor and manage a Java virtual machine (JVM) and the native operating system on which it runs.In this article, you will learn about capabilities of this new platform management API, which is housed in package. This article gets you quickly up to speed with a new set of powerful features that will become more important in future Java platform releases.

  • The Resin team has  implemented a PHP 5 engine in JAVA! Quercus is Caucho Technology's fast, open-source, 100% Java implementation of the PHP language.

    "Quercus is Caucho Technology's fast, open-source, 100% Java implementation of the PHP language. Quercus is a feature of Caucho Technology's Resin Application Server and is built into Resin - there is no additional download/install. Developers using Resin can launch PHP projects without having to install the standard PHP interpreter ( as Quercus takes on the role of the PHP engine."

    Joomla! is supported right out the box


    "Quercus and Quercus' PHP libraries are written entirely in Java, thereby taking the advantages of Java applications and infusing them into PHP. PHP applications running on Quercus are simply faster, easier to develop, more capable, more secure, and more scalable than any other PHP solution.
    Performance - simply faster, Development - fast, safe, and easy,  Capability - powerful Java technologies at the developer's fingertips, Security - no more pesky C memory bugs,  Scalability - PHP for the masses, literally"

    In fact the PHP code is translated into servlets and then compiled into java bytecode on the first run. So it should be quite fast and best of th best, I can use my java profiling tools and library :-)

  • Do You ever want to install some "non standard" package under SuSE like Mplayer, VLC which are not officialy supported, or found on the DVD of Suse Linux?

    There is a way to do it using YaST without any effort...All You have to do is to add some new Install sources 

    Add the following source to YaST, go to YaST, in "Software", "Change Source of Installation"

    AddServer name
    directory on server




    or look at the pictures below:

    I recommend You to put packman and ludwig server in the place 1 and 2, also not like in my picture  ;-)

  • Space station 42By Santana03

    Dinosaurs Island 2By Feistyfrog

    Robot TownBy jump_button&160;

    Metal RevolutionBy Blorf

    Ruins of the Roller[JPN]By O-tera

    &160;&8220;karakuri chochin yashiki&8221; [JPN]By TOUKi555

    with a Raptor 30 canopy, things are really easy...note the
    additionnal battery pack mounted in front of the radio tray.
    with default canopyyou must move the CSM box
    the closest as possible to the servo tray

  • Build a plate with aluminium or plastic you can bend with heat.
    You must create a U shape and use the screws (red point on schema) to fix it on
    the frame

  • I am still waiting on the 4 last hard disks, they should arrive next week. While mounting everything together in the case, I was thinking on the range of tests I may do with this NAS before putting it online in production.

    What kind of operating system will I use? 
    RAID 5/6
    RAID 5/6
    Windows XPNeed Windows Server BUT there is a workaroundthrough the Promise EX350 driverI do not want a fully fledged OS for a file server, but want to look at performances
    Linux OpenFilerstandard using "mdam"through the Promise EX350 Linux driverelegant, free and OS footprint can be reduce at it's minimum
    OpenSolarisusing ZFS Raid-Zno driver supportZFS is a great file system, and RAID-Z solve some problem of software RAID5 and Hardware RAID5 at the same time!
    feel free to submit an alternative
    Contact me or use

    click

    And this is how my Network Array Storage looks like:
    NAS server
    Processor(s)AMD Athlon 64 3000+  BOX, Socket 939, Venice
    PlatformAsus A8N-VM CSM, mATX, Nvidia 6150/430 Video, socket 939, SATA RAID
    BIOS xxxxx
    RAMCorsair CM72DD512AR-400 (DDR2-400 ECC, reg.)
    2x 512 MB, CL3-3-3-10 Timings
    System Hard DriveRaid 6:
    2 Maxtor 7L300R0 MaXLine III, 7200rpm, 16MB, 300GB, IDE, 24/7 server.
    4  Western Digital Caviar RE, 7200rpm, 8MB, 320GB, SATA, 24/7

    USB attached:
    1 Maxtor onetouch USB2/Firewire 300GB
    1 Maxtor onetouch2
    Mass Storage Controller(s)Promise SuperTrak EX8350, SATA2, 8 SATA port, Raid6 Controller
    Graphics CardOn-Board Graphics
    NVIDIA GeForce 6150

    What kind of  performances test I will do?
    Performance-testc't h2benchw 3.6
    I/O PerformanceIOMeter

    Future client using the NAS fileserver
    Windows XP professional
    HP nx7000
    100Mb NIC
    Pentium-M 1.6GHz
    1500MB Ram
    60GB Harddisk
    Home desktop,
    Linux SuSe 10.1
    1000 Mb NIC
    AMD Athlon XP 3400+
    1500 Mb RAM
    Asus A78Nx Nforce2 mainboard

    Of course I will stress the box 1 week before putting any vital/useless data on it!
  • Here is the easiest way to run a daily backup of your database using linux crontab. Thanks to our everyday increasing mailbox size (Thanks Gmail) and their nature to be quite safe for saving document, let’s use them to store the full backup of all our Mysql database!


    • Having a shell access to your linux box
    • Creating a user with limited mysql rights: SELECT and LOCK_TABLES is enough, For example a user backup_user with a password ChhdeqyqUzd75687fOnmYar
    • Installing Mpack: Tools for encoding/decoding MIME messages. Mpack and munpack are utilities for encoding and decoding (respectively) binary files in MIME (Multipurpose Internet Mail Extensions) format mail messages. For compatibility with older forms of transferring binary files, the munpack program can also decode messages in split-uuencoded format.

    Edit your crontab

    crontab -e

    and put inside on one line the following

    0 1 * * * /usr/bin/mysqldump -ubackup_user –pChhdeqyqUzd75687fOnmYar yourdb |
    gzip > /database_`date +'%m-%d-%Y'`.sql.gz ;
    mpack -s "Databases backup"
    -c application/gzip /database_`date +'%m-%d-%Y'`.sql.gz This email address is being protected from spambots. You need JavaScript enabled to view it.

    You can replace the word yourdb with your tablename or --all-databases to dump all database. With the above line a backup will be run at 1AM every day and sent in your mailbox.

  • mysql.logo I found this interesting tool (beside while trying to optimizing my server setting for Joomla!


    mysqlreport makes an easy-to-read report of important MySQL status values. Unlike SHOW STATUS which simply dumps over 100 values to screen in one long list, mysqlreport interprets, formats, and then nicely presents the values in report readable by humans. Numerous example reports are available at the mysqlreport web page.
    The benefit of mysqlreport is that it allows you to very quickly see a wide array of performance indicators for your MySQL server which would otherwise need to be calculated by hand from all the various SHOW STATUS values. For example, the Index Read Ratio is an important value but it is not present in SHOW STATUS; it is an inferred value (the ratio of Key_reads to Key_read_requests).

    Grab it at

    How to run it (more options), it require PERL to run.

    # ./mysqlreport --user xxxxx--password xxxxxx| more

    Running mysqlreport against my host, gave the following results:

    • very good table lock 0.02%
    • very good read ratio 99.93%
    • good query cache, but could be reduce to 40Mb to avoid wasting memory resource

    if you need something more professional and can afford it, you can try Mysql Enterprise (free for 30 days, enough to tune any small server bottleneck)



    MySQL 5.0.41-log&160;&160;&160;&160;&160;&160;&160;&160; uptime 4 10:56:4&160;&160;&160;&160;&160;&160; Fri Jan&160; 2 22:45:47 2009

    __ Key _________________________________________________________________
    Buffer used&160;&160;&160;&160; 2.44M of&160;&160; 5.00M&160; %Used:&160; 48.75
    &160; Current&160;&160;&160;&160;&160;&160; 2.97M&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; %Usage:&160; 59.38
    Write hit&160;&160;&160;&160;&160; 47.41%
    Read hit&160;&160;&160;&160;&160;&160; 99.93%

    __ Questions ___________________________________________________________
    Total&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; 4.07M&160;&160;&160; 10.6/s
    &160; QC Hits&160;&160;&160;&160;&160;&160; 1.93M&160;&160;&160;&160; 5.0/s&160; %Total:&160; 47.35
    &160; DMS&160;&160;&160;&160;&160;&160;&160;&160; 973.13k&160;&160;&160;&160; 2.5/s&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; 23.89
    &160; Com_&160;&160;&160;&160;&160;&160;&160; 936.64k&160;&160;&160;&160; 2.4/s&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; 23.00
    &160; COM_QUIT&160;&160;&160; 249.35k&160;&160;&160;&160; 0.6/s&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; 6.12
    &160; -Unknown&160;&160;&160;&160; 14.78k&160;&160;&160;&160; 0.0/s&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; 0.36
    Slow 5 s&160;&160;&160;&160;&160; 123.77k&160;&160;&160;&160; 0.3/s&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; 3.04&160; %DMS:&160; 12.72&160; Log:&160; ON
    DMS&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; 973.13k&160;&160;&160;&160; 2.5/s&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; 23.89
    &160; SELECT&160;&160;&160;&160;&160; 589.04k&160;&160;&160;&160; 1.5/s&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; 14.46&160;&160;&160;&160;&160;&160;&160;&160; 60.53
    &160; UPDATE&160;&160;&160;&160;&160; 135.53k&160;&160;&160;&160; 0.4/s&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; 3.33&160;&160;&160;&160;&160;&160;&160;&160; 13.93
    &160; INSERT&160;&160;&160;&160;&160; 125.80k&160;&160;&160;&160; 0.3/s&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; 3.09&160;&160;&160;&160;&160;&160;&160;&160; 12.93
    &160; DELETE&160;&160;&160;&160;&160; 119.91k&160;&160;&160;&160; 0.3/s&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; 2.94&160;&160;&160;&160;&160;&160;&160;&160; 12.32
    &160; REPLACE&160;&160;&160;&160;&160;&160; 2.85k&160;&160;&160;&160; 0.0/s&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; 0.07&160;&160;&160;&160;&160;&160;&160;&160;&160; 0.29
    Com_&160;&160;&160;&160;&160;&160;&160;&160;&160; 936.64k&160;&160;&160;&160; 2.4/s&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; 23.00
    &160; set_option&160; 411.63k&160;&160;&160;&160; 1.1/s&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; 10.11
    &160; change_db&160;&160; 230.65k&160;&160;&160;&160; 0.6/s&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; 5.66
    &160; show_tables&160; 68.89k&160;&160;&160;&160; 0.2/s&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; 1.69

    __ SELECT and Sort _____________________________________________________
    Scan&160;&160;&160;&160;&160;&160;&160;&160;&160; 205.15k&160;&160;&160;&160; 0.5/s %SELECT:&160; 34.83
    Range&160;&160;&160;&160;&160;&160;&160;&160;&160; 27.27k&160;&160;&160;&160; 0.1/s&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; 4.63
    Full join&160;&160;&160;&160;&160; 13.73k&160;&160;&160;&160; 0.0/s&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; 2.33
    Range check&160;&160;&160;&160;&160;&160;&160;&160; 8&160;&160;&160;&160; 0.0/s&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; 0.00
    Full rng join&160;&160; 4.46k&160;&160;&160;&160; 0.0/s&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; 0.76
    Sort scan&160;&160;&160;&160;&160; 76.29k&160;&160;&160;&160; 0.2/s
    Sort range&160;&160;&160; 110.20k&160;&160;&160;&160; 0.3/s
    Sort mrg pass&160;&160;&160;&160;&160;&160; 0&160;&160;&160;&160;&160;&160; 0/s

    __ Query Cache _________________________________________________________
    Memory usage&160;&160; 25.86M of&160; 70.00M&160; %Used:&160; 36.94
    Block Fragmnt&160; 16.52%

    Hits&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; 1.93M&160;&160;&160;&160; 5.0/s
    Inserts&160;&160;&160;&160;&160;&160; 533.75k&160;&160;&160;&160; 1.4/s
    Insrt:Prune&160;&160; 13.29:1&160;&160;&160;&160; 1.3/s
    Hit:Insert&160;&160;&160;&160; 3.61:1

    __ Table Locks _________________________________________________________
    Waited&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; 269&160;&160;&160;&160; 0.0/s&160; %Total:&160;&160; 0.02
    Immediate&160;&160;&160;&160;&160;&160; 1.71M&160;&160;&160;&160; 4.5/s

    __ Tables ______________________________________________________________
    Open&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; 1482 of 2000&160;&160;&160; %Cache:&160; 74.10
    Opened&160;&160;&160;&160;&160;&160;&160;&160; 44.50k&160;&160;&160;&160; 0.1/s

    __ Connections _________________________________________________________
    Max used&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; 16 of&160;&160; 25&160;&160;&160;&160;&160; %Max:&160; 64.00
    Total&160;&160;&160;&160;&160;&160;&160;&160; 250.45k&160;&160;&160;&160; 0.7/s

    __ Created Temp ________________________________________________________
    Disk table&160;&160;&160;&160; 65.75k&160;&160;&160;&160; 0.2/s
    Table&160;&160;&160;&160;&160;&160;&160;&160; 198.32k&160;&160;&160;&160; 0.5/s&160;&160;&160; Size: 120.0M
    File&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; 5&160;&160;&160;&160; 0.0/s

    __ Threads _____________________________________________________________
    Running&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; 1 of&160;&160;&160; 3
    Cached&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; 13 of&160;&160; 32&160;&160;&160;&160;&160; %Hit:&160; 99.99
    Created&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; 16&160;&160;&160;&160; 0.0/s
    Slow&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; 0&160;&160;&160;&160;&160;&160; 0/s

    __ Aborted _____________________________________________________________
    Clients&160;&160;&160;&160;&160;&160;&160;&160; 2.20k&160;&160;&160;&160; 0.0/s
    Connects&160;&160;&160;&160;&160;&160;&160; 3.41k&160;&160;&160;&160; 0.0/s

    __ Bytes _______________________________________________________________
    Sent&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; 1.48G&160;&160;&160; 3.8k/s
    Received&160;&160;&160;&160;&160; 757.33M&160;&160;&160; 2.0k/s

    __ InnoDB Buffer Pool __________________________________________________
    Usage&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; 7.98M of&160;&160; 8.00M&160; %Used:&160; 99.80
    Read hit&160;&160;&160;&160;&160;&160; 99.80%

    &160; Free&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; 1&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; %Total:&160;&160; 0.20
    &160; Data&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; 510&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; 99.61 %Drty:&160;&160; 0.00
    &160; Misc&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; 1&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; 0.20
    &160; Latched&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; 0&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; 0.00
    Reads&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; 1.03M&160;&160;&160;&160; 2.7/s
    &160; From file&160;&160;&160;&160; 2.10k&160;&160;&160;&160; 0.0/s&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; 0.20
    &160; Ahead Rnd&160;&160;&160;&160;&160;&160;&160; 79&160;&160;&160;&160; 0.0/s
    &160; Ahead Sql&160;&160;&160;&160;&160;&160;&160;&160; 6&160;&160;&160;&160; 0.0/s
    Writes&160;&160;&160;&160;&160;&160;&160;&160; 45.01k&160;&160;&160;&160; 0.1/s
    Flushes&160;&160;&160;&160;&160;&160;&160; 12.42k&160;&160;&160;&160; 0.0/s
    Wait Free&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; 0&160;&160;&160;&160;&160;&160; 0/s

    __ InnoDB Lock _________________________________________________________
    Waits&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; 0&160;&160;&160;&160;&160;&160; 0/s
    Current&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; 0
    Time acquiring
    &160; Total&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; 0 ms
    &160; Average&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; 0 ms
    &160; Max&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; 0 ms

    __ InnoDB Data, Pages, Rows ____________________________________________
    &160; Reads&160;&160;&160;&160;&160;&160;&160;&160; 2.30k&160;&160;&160;&160; 0.0/s
    &160; Writes&160;&160;&160;&160;&160;&160; 23.18k&160;&160;&160;&160; 0.1/s
    &160; fsync&160;&160;&160;&160;&160;&160;&160; 14.15k&160;&160;&160;&160; 0.0/s
    &160; Pending
    &160;&160;&160; Reads&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; 0
    &160;&160;&160; Writes&160;&160;&160;&160;&160;&160;&160;&160;&160; 0
    &160;&160;&160; fsync&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; 0

    &160; Created&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; 5&160;&160;&160;&160; 0.0/s
    &160; Read&160;&160;&160;&160;&160;&160;&160;&160;&160; 2.60k&160;&160;&160;&160; 0.0/s
    &160; Written&160;&160;&160;&160;&160; 12.42k&160;&160;&160;&160; 0.0/s

    &160; Deleted&160;&160;&160;&160;&160;&160;&160;&160; 843&160;&160;&160;&160; 0.0/s
    &160; Inserted&160;&160;&160;&160;&160; 2.07k&160;&160;&160;&160; 0.0/s
    &160; Read&160;&160;&160;&160;&160;&160;&160; 107.49k&160;&160;&160;&160; 0.3/s
    &160; Updated&160;&160;&160;&160;&160;&160; 2.83k&160;&160;&160;&160; 0.0/s

  • Penguin computing power!

    Here we goes, I've receive yesterday all missing hardware to finish the building of my own NAS.

    A NAS (or Network Attached Storage) is a hard disk storage device that is set up with its own network address rather than being attached directly to the computer that is serving applications or files to a network's users. By using a NAS, both applications and files can be served faster because they are not competing for the same processor resources. The NAS is attached to a local area network (typically, an Ethernet network) and assigned an IP address....

    Here is some pictures...Nothing really special, if You already know how to build a computer by Your own...

    The 4 Western Digital Hard disks RAID optimized because they have been made to have a time-limited error recovery which improves compatibility with RAID adapters, and prevents drive fallout caused by the extended hard drive error-recovery processes common to desktop hard drives.

    "Desktop drives are designed to protect and recover data, at times pausing for as much as a few minutes to make sure that data is recovered. Inside a RAID system, where the RAID controller handles error recovery, the drive needn't pause for extended periods to recover data. In fact, heroic error recovery attempts can cause a RAID system to drop a drive out of the array. WD RE is engineered to prevent hard drive error recovery fallout by limiting the drive's error recovery time. With error recovery factory set to seven seconds, the drive has time to attempt a recovery, allow the RAID controller to log the error, and still stay online." from  Western Digital

    These drives along with the Maxtor Maxline III  have 60 months guaranty: highly recommended!

    Ask the shop to provide You disks not from the same batch, to reduce statically disk fallout.
    In order to replace a faulty RAID disk as fast as possible, it is not a bad idea to put a number on them. Normally hard disks in a NAS are into zero force and hot swap bays. But they cost at least 250$ for 4 drives...
    First batch of 3 disks (3 x 320GB Western Digital). Using a Thermaltake Armor tower help a lot in my setting.
    Same remark, it is obvious but cables can also fail, and it is not recommended to pull out the wrong cable if the array is online.
    Second batch of 3 disks, the number 6 will be mounted later.
    Thermaltake provide in the front bay a really good cooling fan with an integrated blue led.
    The Asus A8N-VM mainboard  mini ATX, Nvidia 6150/430 Video, socket 939, SATA RAID 0,1,5

    Ohhh no, cables are starting to pop out the case. Do not expect to see  a Mackintosh ordered internal case in the next few pictures...
    Routing cables, the case has a lot of possibilities to hide them.

    The AMD Athlon 64 3000+, Socket 939, Venice core, is cooled down by a Zallmann  CNPS9500
    Bringing power to all disks.
    Front of the case, the mainboard along with the additional hardware RAID card (Promise SuperTrak EX8350, SATA2) has more than 14 SATA ports...plenty of extensions possibilities with a case of...20 bays.
    The front cooler will be able to suck air freely.
    Power ON!

    The system is making a lot of noise (not only coming from FANs), I reduce the Zallmann noise (horrible at full speed) with the included speed controller.
    The 7 hard disks (one in hot swap) are making the case wobbling.
    Detail on the Zalmann CNPS9500 LED

  • RAID @ home raid5Presentation

    is a powerful, intuitive browser-based network storage software distribution. Openfiler delivers file-based Network Attached Storage and block-based Storage Area Networking in a single framework.

    Openfiler sits atop of CentOS Linux (which is derived from sources freely provided to the public by a prominent North American Enterprise Linux vendor). It is distributed as a stand-alone Linux distribution. The entire software stack interfaces with third-party software that is all open source.

    Status: stable, in development
    # Developers: __

     version 1.1.1 stable (2005)
    2.0beta (2006)
    Based on CentOS Linux
    • NFS,
    • SMB/CIFS,
    • HTTP/WebDAV
    • FTP
    • more
    Network directories support
    • NIS, LDAP (with support for SMB/CIFS encrypted passwords)
    • Active Directory
    • Hesiod
    • Kerberos 5.
    • more
    Software Raid 0,1,5,6
    Hardware Raid yes if supported by CentOS
    Interface Web interface, PHP scripts
    Size 4GB
    Can be installed On hard disk only because of its size
    File system UFS, FAT32, EXT2/EXT3, NTFS (limited read-only)
    HardDrive ATA/SATA, SCSI, USB and Firewire
    Network All supported by CentOS (including wireless card!)

    RAID @ home raid5  Installation

    Is straightforward, You only have to follow the flow on screen. But here is a small HowTo:

    RAID @ home raid5  HowTo: software RAID 5 install

    What I want: software RAID 5, 4 disk of 320GB (real 305GB), using NVIDIA SATA chipset (not a dedicated RAID5 board).

    Note: these pictures are not screenshots but picture taken with a sony camera...
    Download iso image from sourceforge and burn it to a CD Insert CD, and boot the PC
    The first step is to TEST the quality of the medium. Openfiler did not recognize the NVIDIA controller.
    choose "Add device"
    NVIDIA drivers (both Ethernet and drive controller) are at the end of the list.
    I've add both drivers manually. Then "Done" The welcome page. click "Next"
    Choose Keyboard language. I am not a novice, so let's look at the advanced configuration.
    The 4 disks are recognized. First I add some space for the Operating System. If You do not want to have a fifth disk just for the operating system, You'll have to reserve a small amount of the global space for the Openfiler system. Note: this space will be located on the first disk and wont be in the raid no redundancy.
    Anyway it is uncommon to install the RAID engine on the RAID array itself.
    Lets have 2GB for System.
    And  1 GB for SWAP Then I click on th button RAID, since I have no RAID predefined only the first choice is available: "Create a RAID partition"
    I will have to create a RAID partition for each of the 4 drives, I reserved 300GB for disk SDB 300GB for disk SDC, for Disk SDA
    and for disk SDD...till all 4 disks contains a RAID partition. I click on the RAID button for the 5th times: and choose "create a RAID device"
    My disk array will be named /RAID (mount point), Raid level 5 Result, a /RAID (device /dev/md0) with an EXT3 file system.
    Nothing particular, default values are good Language support: English
    Choose TimeZone Enter a good Root password. Mine s too small but it is only a prototype for determining performances and reliability of the setup.
    Confirm all values entered by clicking Next wait till the raid array initialization

    CD get ejected, and reboot. Point your browser to https://box_ip:446/
    And administer remotely the box

    If all my explanations are not clear enough, or You want more details, visit the official installation page

    RAID @ home raid5  HowTo: hardware RAID 5 install

    in progress...

    RAID @ home raid5  Administration

    Check Openfiler Administration guide
    point your browser to https://box_ip:446/

    RAID @ home raid5  Problems encountered

    OpenFiler 1.1
    • The SATA controller was not recognized, this force me to use the 2.0Beta.
    • Unable to read or mount manually 2 different USB keys (FAT32), also unable to read CDROM (closed ISO and CDRW)
    • The network card (NFORCE 4 ) was not recognized by Openfiler 2.0Beta, I fail to copy the NVIDIA driver on the box because of point 2.
    • Is working perfectly, did not ask for any supplemental drivers

    RAID @ home raid5  Web Interface GUI


    RAID @ home raid5  Performances Tests

    in progress

    RAID @ home raid5  Conclusions

    Why choosing it Why avoiding it
    Enterprise NAS features out of the box You do not need enterprise NAS features
    Very nice WEB GUI 4GB is too much and need an additional small disk only for starting the OS
    A lot of functionalities
    Limited choice of file system:
    • no Reiserfs, the swiss knife of all filesystem.
    • no JFS, XFS more adapted for big files
    A big communities of users and developers, good online documentation.
    No AMD64 version, but it's really not an issue.
    Very easy to have a software RAID5 arrays setup working.
    Stable, Linux 2.6.9 kernel base.
    GPL but an Enterprise version (with support) is also available.

  • google_logospeedapache_logo

    mod_pagespeed is the latest addition to our family of products, performing on-the-fly optimization in the Apache™ 2 HTTP Server. It provides webmasters and web developers that manage their Apache 2 configuration with technology that applies Page Speed performance best practices automatically. Webmasters can get the benefits of the optimizations without having to manually going back and fixing the performance issues that Page Speed detects.

    This solution is valid if you do not want to carefully optimize your site, and it come for now at huge initial CPU costs till the cache is filled up. The load on my server has proven to be unacceptable (for me) and I was forced to switch it off. But it may work on your server depending on the page size, number of visitors. Authors are working hard and communicating a lot on the official mailing list to reduce that load and improve the code in the coming weeks

    If you trust me, you can download the library module for Apache 2.2


    Check before installing the MD5 keys of this file

    # md5sum -b
    187995e3623a222ec5b54c331ee7ffaa *

    If it matches, drop it into your Apache library folder /usr/lib64/apache2/

    Build Apache module mod_pagespeed yourself

    On my OpenSuSE system, I was forced to install first

    zypper in gcc-c++

    Then read

    you should get after a successful build

    • ./out/Release/
    • ./out/Release/install/common/pagespeed.conf

    Install the module library

    cp ./out/Release/  /usr/lib64/apache2/


    After installing mod_pagespeed, it can be customized and configured by editing the Apache configuration file


    so you can run

    # cp ./out/Release/install/common/pagespeed.conf /etc/apache2/conf.d/pagespeed.conf

    Create some directories

    # mkdir /var/mod_pagespeed/
    # mkdir /var/mod_pagespeed/cache/
    # mkdir /var/mod_pagespeed/files

    Has to be writtable by apache

    chown -R wwwrun:www /var/mod_pagespeed/

    and finally restart apache

     apache2ctl restart

    There is a lot of available settings that are all well explained in this page

    Here is my /etc/apache2/conf.d/pagespeed.conf stripped of all comments as an example:

    LoadModule pagespeed_module /usr/lib64/apache2/
        ModPagespeed on
        ModPagespeedUrlPrefix                ""
        ModPagespeedFileCachePath "/var/mod_pagespeed/cache/"
        ModPagespeedGeneratedFilePrefix "/var/mod_pagespeed/files/"
        ModPagespeedRewriteLevel CoreFilters
        ModPagespeedEnableFilters collapse_whitespace
        ModPagespeedEnableFilters extend_cache
        ModPagespeedEnableFilters combine_css
        ModPagespeedEnableFilters rewrite_css
        ModPagespeedEnableFilters rewrite_javascript
        ModPagespeedEnableFilters rewrite_images
        ModPagespeedEnableFilters remove_comments

    # This page lets you view statistics about the mod_pagespeed module. Order allow,deny # You may insert other "Allow from" lines to add hosts you want to # allow to look at generated statistics. Another possibility is # to comment out the "Order" and "Allow" options from the config # file, to allow any client that can reach your server to examine # statistics. This might be appropriate in an experimental setup or # if the Apache server is protected by a reverse proxy that will # filter URLs in some fashion. Allow from localhost SetHandler mod_pagespeed_statistics


    You may be forced to remove mod_deflate

    You can disable mod_pagespeed by adding in the url  ?mod_page_speed=0

    Some mod_pagespeed filters


  • Motor Kits for ATV Bombardier DS-650

    Original quad has 43 hp for the motor and 37 at thee rear wheels, these kits allow:

    56 hp / 7200 rpm; 60 Nm / 5300 rpm; 650 ccm
    66 hp / 7200 rpm; 67 Nm / 5500 rpm; 711 ccm
    77 hp / 7500 rpm; 77 Nm / 5000 rpm; 760 ccm

    Prices and some pictures can be found here

  • nginx (pronounced “engine-x”) is an open source Web server and a reverse proxy server for HTTP, SMTP, POP3 and IMAP protocols, with a strong focus on high concurrency, performance and low memory usage. It is licensed under a BSD-like license and it runs on Unix, Linux, BSD variants, Mac OS X, Solaris, AIX and Microsoft Windows [WikiPedia]

    Instructs proxy servers to cache two versions of the resource: one compressed, and one uncompressed. This helps avoid issues with public proxies that do not detect the presence of a Content-Encoding header properly.

    Configuration files are provided using Gist and are CONSTANTLY updated for added security and speed. Gist is a simple way to share snippets and pastes with others. All gists are git repositories, so they are automatically versioned, forkable and usable as a git repository. I recommend you to starred them to stay up to date.


    Just Add in /etc/nginx/nginx.conf in the http { … } section the following

     # Gzip Settings
     gzip  on;
     gzip_http_version 1.1;
     gzip_vary on;
     gzip_comp_level 6;
     gzip_proxied any;
     gzip_types text/plain text/html text/css application/json \
    application/x-javascript text/xml application/xml \
    application/xml+rss text/javascript application/javascript \
    text/x-js; gzip_buffers 16 8k; gzip_disable "MSIE [1-6]\.(?!.*SV1)";


    from LeverageProxyCaching">