services

Service may refer to: read more at WikiPedia



  • I've set a new subdomain bugs.waltercedric.com in order to improve the quality  of my Joomla!  components.

    Forum?
    Currently the forum at forums.waltercedric.com has 202 users and more than 700 posts,  all members are exchanging ideas,  proposing help,  or simply asking questions.  Let me be clear, the forum will stay untouched, it already contains a lot of valuable entries, and is more adapted in a lot of cases. Moreover Google and MSN bots are heaviliy referencing its content, what I want to achieve with this new tool (Mantis) is another level of quality and release tracability.

    Joomla forge Tracker?
    After 2 years of usage I still find the tracker is horrible and not well suited to my needs.

    In the next few days...
    I am currently automating the user migration of forums (simpleboard) users to bugtracker (mantis), so You can use only one password.
  • mantis_logo to the latest version of mantis.

     

    I will be closing some of the issues there and look at what are the requests.

    https://bugs.waltercedric.com

  •  

    </life>


    I am not any more providing support for Joomla! 1.0.

    Since July 22nd 2009: Joomla 1.0 has reached end-of-life.

    Reasons for the Move

    • Security. Older extensions are often built using older and potentially unsafe coding methods.
    • Support. 1.0 has a large number of older and unsupported extensions.
    • End-of-life. Joomla 1.0 won't be maintained after the July end-of-life date, so it is a logical step to also stop supporting 1.0 extensions.
    • Focus. Allow Joomla developers to concentrate on developing for the current Joomla 1.5 version and also for 1.6.

    Visit the official anouncement here

    The demo site for Joomla! 1.0 extensions has been deleted.

  • maven-logo-2 eclipse

    I did develop this solution at work for our internal purpose at www.innoveo.com. Going away from the paradigm “As a developer I run everything locally” isn’t easy to accept but in some rare cases, it make sense. Below I list what I consider to be the main advantages and drawbacks.

    Stability

    • Not everybody is changing the developer environment as you need admin right to be able to do changes, more stability.
    • The developer environment is standardized: convention over configuration always pays like in Apache Maven.

    Sharing

    • you can work from anywhere as long as you have an internet/VPN connection
    • You can move your working place around, show your workspace to a colleague, reduce your coupling to Windows, use Linux, use a Mac!

    Security

    • The source code stay on the server, if someone steal notebooks you don’t loose your software assets.

    Efficiency

    • Somebody maintains the developer environment and settings for you, some developers can still beta test a new eclipse version before till it is considered stable.
    • Rollout is limited to a minimum loss of time, as you will see below 
    • Setting up a new developer account is basically settings up a new account on the shared server, running 3 lines of shell.
    • The server  is not full of unwanted applications running in background, only java.exe. eclipse.exe, databases can still run on another server (MYSQL, Oracle), runtime environment (Tomcat).

    Speed, speed and speed

    • A server is cheap compare to one big notebook for every developer.
    • Server is most of the time fully 64bits, may have up to 8 cores, RAID 5 typically  output 350Mb/s read (a good notebook: 32 bits, 2 cores and 80Mb/s without SSD)

    Drawbacks

    • A shared developer environment is a Single point of failure –> you need a very good backup, and eventually hardware fallback machine in hot standby!
    • You can not work if developer have no or limited internet access, in train for example.
    • It required a bit of initial engineering, hence this article.

    Access

    Windows

    Use Windows Remote desktop connection, define a DNS entry to access the server.

    remote.desktop

    Linux

    Linux has a free remote desktop implementation of Microsoft protocol, if it not installed, run either on Debian

    # apt-get install rdesktop

    or in OpenSuSE

    # zypper install rdesktop

    or in RED HAT

    # yum install rdesktop

    Create a script .sh file to save the connection parameters:

    rdesktop -A -C -k de-ch -r PRIMARYCLIPBOARD -u username -p password -xl  ipadress

     

    Eclipse

    One install for all users

    1. Unpack the latest eclipse in any location, I recommend on c:\eclipse-3.5, but any location where you have some space will work.
    2. Start eclipse as administrator and install all required 3r party plugin: we use M2Eclipse, Subversive for example.
    3. Stop Eclipse,
    4. Remove ALL write rights to ALL users including admin if needed.
    5. When Eclipse will start under a developer account, it will copy its configuration files into C:\Users\%USERNAME%\.eclipse
    6. Every users will be able to adjust the eclipse.ini but these settings are a good start (adapt memory to your requirements)
    7. Create a shortcut for every developer on their desktop pointing to c:\eclipse\eclipse.exe

    C:\Users\cedric.walter\.eclipse\org.eclipse.platform_3.5.0_1770938306\configuration\eclipse.ini

    -startup
    plugins/org.eclipse.equinox.launcher_1.0.201.R35x_v20090715.jar
    --launcher.library
    plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.0.200.v20090519
    -showsplash
    org.eclipse.platform
    --launcher.XXMaxPermSize
    256m
    -configuration
    ../Users/cedric.walter/.eclipse/org.eclipse.platform_3.5.0/configuration
    -Dfile.encoding="UTF-8"
    -vmargs
    -Xms2048m
    -Xmx2048m
    -XX:PermSize=256m
    -XX:MaxPermSize=256m
    -XX:+UseParallelGC

    Updating Eclipse

    A rollout of new Eclipse version is easy thanks to symbolic link. Download junction.exe, a small tool to create symbolic links

    Windows 2000 and higher supports directory symbolic links, where a directory serves as a symbolic link to another directory on the computer.

    and run as admin

    junction.exe c:\eclipse c:\eclipse-3.5

    Now thanks to symbolic links any update to a major new version of eclipse will be plain easy: just delete the symbolic link c:\eclipse and create a new one to the new version!

    Users with Multiple Eclipse workspaces

    1. Create an empty directory for hosting your new workspace, for example at
          e:\%USERNAME%\workspace\maven
    2. Create a new shortcut with this content
      C:\eclipse\eclipse.exe --launcher.ini
      "C:\Users\\%USERNAME%\.eclipse\org.eclipse.platform_3.5.0_1770938306\configuration\eclipse.ini"
      -data e:\\%USERNAME%\workspace\maven

    Apache Maven

    Maven Local repository, every user has it’s own

    It is not recommend to share the local Maven repository cache among users as Maven has no locking concept in place. The local maven repository is expected to be located at

    c:\users\%USERNAME%\.m2\repository

    If you have enough space there for all your users, you can skip that chapter, Otherwise I will show you how to locate it anywhere on the file system.

    Let’s store it at e:\%USERNAME%\repository, here I have choose another drive with more space as Maven local repository can be quite big (700Mb per user today)

    The design chosen impose me to one more time play with symbolic links, using junction.exe in c:\users\%USERNAME%\.m2\repository pointing to e:%USERNAME%\repository

    When you are logged in as a normal developer account, in a dos windows, run the following

    junction.exe c:\users\%USERNAME%\.m2\repository e:\%USERNAME%\repository

    Maven settings.xml, one for all users

    I like the idea to maintain only one settings.xml. Apache Maven recommend to have one settings.xml per user (located in c:\users\%USERNAME%\.m2\settings.xml). This is true if you have different responsibilities among all your developers. For example some may not be able to deploy in Artifactory/Nexus while other can. Luckily, this is not the case as for today in our company. That is why I will only have one Settings.xml on server, located at c:\server.xml

    I will use a hard link to c:\settings.xml. When you are logged in as a normal developer account, in a dos windows, run the following

    fsutil hardlink create c:\users\%USERNAME%\.m2\settings.xml c:\settings.xml

    This make Apache Maven think that the settings.xml is in the default location c:\users\%USERNAME%\.m2\

    Updating Maven

    I do use the same trick for having a unique version of maven binary on the server while keeping some flexibility thanks to symbolic links.

    1. Unpack Apache Maven anywhere
    2. As an admin, in a dos windows, run the following:
      junction.exe c:\maven-3.0-beta1 c:\maven

    Now you can let all your developer reference in M2Eclipse this virtual directory c:\maven. Switching all developers to a new version is done by deleting and pointing to an older/newer version of Maven.

    It is not finished

    Our shared developer environment setup also virtualizes MYSQL (multiple schema per developer ) and Tomcat (per developer port range) using –D system variables in eclipse.ini

    References

    Scenario 2 - shared install

    In this scenario, a single install area is shared by many users. The "configuration" directory under the install area is home only to the config.ini as shipped with the product (it is not initialized). Every user has their own local standalone configuration location.

    The set up for this scenario requires making the install area read-only for regular users. When users start Eclipse, this causes the configuration area to automatically default to a directory under the user home dir. If this measure is not taken, all users will end up using the same location for their configuration area, which is not supported.

  • 2 weeks ago, a post on Google&39;s official blog announced a project that allows users to step inside the private world of its data centers. For the first time, the company&39;s impressive efficiency records and green ethos have been given a face in the form of the stunning photographs by Connie Zhou and the Street View-able hallways of the Lenoir facility in North Carolina...

    GoogleDataCenters

    http://www.google.com/about/datacenters/gallery/#/

  • port.knocking.ssh.linux

    Port Knocking is a technique to secure services behind a firewall until a specific knock sequence is given. Once that sequence is given, the IP address that initiated the knock may be allowed to access the service for a short period of time. A knocking server listens to all traffic on an Ethernet (or PPP) interface, looking for special "knock" sequences of port-hits. A client makes these port-hits by sending a TCP (or UDP) packet to a port on the server.

    This is a bit paranoid, but it add another layer of security, an attacker will have either to try all ports combinations or know the secret combination (knock) to be able to connect to your SSH daemon for example.

    First, you’ll have to be sure to have a port knocking client, or you will be kick out forever of your own server!

  • seleniumhq

    Selenium has various projects that can be combined with each other to create a robust testing environment.

    • Selenium IDE: a Firefox add-on to record and playback tests in Firefox.
    • Selenium Remote Control: a client/server system to control web browsers locally or on other computers, using almost any programming language and testing framework.
    • Selenium Grid: transparently distribute your tests on multiple machines so that you can run your tests in parallel, cutting down the time required for running in-browser test suites. In-browser tests are inherently slow, but since commodity hardware is insanely cheap nowadays there is no excuse for not running all these tests in parallel on multiple machines and dramatically speeding up your feedback cycle. .
    • Selenium Core: JavaScript-based testing system.

    Also there are Selenium projects specifically for Rails, Ruby & Eclipse!

    Today I will show you how to make run some components of Selenium as Windows Services. I am using a Selenium HUB and 4 Selenium RC running all on the same server (while not recommended for performance reasons, it is the easiest setup)

    In this small how to I provide you at the end of the article a ready to use Selenium Grid 0.7 zip file

    Running selenium HUB as an NT service

    The Selenium Hub is in charge of

    • Allocating a Selenium Remote Control to a specific test (transparently)
    • Limiting the number of concurrent test runs on each Remote Control
    • Shielding the tests from the actual grid infrastructure

    Selenium Grid Setup

    1. Download and unzip Selenium Grid.
    2. If you don't have it already, download and install the JDK 
    3. Download Java Service Wrapper (Windows x86 Community Edition) and unzip it.
    4. Create these folders in the Selenium Grid folder: *logs*, *conf*, *bin*. so it look like
    Before After

    selenium-grid-1.0.7
    ├───doc
    ├───examples
    ├───lib
    ├───sample-scripts
    └───vendor

    selenium-grid-1.0.7
    ├───bin
    ├───conf

    ├───doc
    ├───examples
    ├───lib
    ├───logs
    ├───sample-scripts
    └───vendor

    Copy/rename files from the JSW folder to the Selenium Grid folder:

    • \src\conf\wrapper.conf.in to \conf\wrapper.conf
    • \src\bin\App.bat.in to \bin\SeleniumGrid.bat
    • \src\bin\InstallApp-NT.bat.in to \bin\InstallSeleniumGrid-NT.bat
    • \src\bin\UninstallApp-NT.bat.in \bin\UninstallSeleniumGrid-NT.bat
    • \bin\wrapper.exe to \bin\wrapper.exe
    • \lib\wrapper.dll to \lib\wrapper.dll
    • \lib\wrapper.jar to \lib\wrapper.jar

    Now edit the file \conf\wrapper.conf

    Set the location of Java.exe by editing the line

    wrapper.java.command=java

    And making sure to not quote the path even if it has spaces in it


    Replace the  key wrapper.java.classpath.1=... with these three lines:

    wrapper.java.classpath.1=..
    wrapper.java.classpath.2=../lib/selenium-grid-hub-standalone-1.0.7.jar
    wrapper.java.classpath.3=../lib/wrapper.jar


    Change key wrapper.app.parameter.1=+" to:

    wrapper.app.parameter.1=com.thoughtworks.selenium.grid.hub.HubServer

    And finally set up the names/display names for the service:

    wrapper.console.title=Selenium Grid Hub 
    wrapper.ntservice.name=selenium-grid-hub
    wrapper.ntservice.displayname=Selenium Grid Hub
    wrapper.ntservice.description=Central control server for Selenium Grid

    Test your configuration by running the \bin\SeleniumGrid.bat file.

    If it works, you should see Selenium Grid Hub running in the console - one of the the last lines will likely say something about Jetty and you may see some of the Selenium Grid configuration fly past as it's starting up. You can shut it down by pressing Ctrl+C.


    If it's not working, you'll probably see error messages about how the JVM wasn't found (meaning the path to Java is no good) or some other configuration problem. Or the batch file might run and close immediately.

    Once it's running with the SeleniumGrid.bat file, you can install the service by running the InstallSeleniumGrid-NT.bat file.

    To start the service, you can use the command line (net start selenium-grid-hub) or the GUI (Start->Administrative Tools->Services).

    Running multiple selenium RC as NT services

    Selenium Remote Control (RC) is a test tool that allows you to write automated web application UI tests in any programming language against any HTTP website using any mainstream JavaScript-enabled browser.

    Selenium RC comes in two parts. 

    1. A server which automatically launches and kills browsers, and acts as a HTTP proxy for web requests from them.
    2. Client libraries for your favorite computer language.

    Following the same idea, with only some minor changes due to the way selenium RC are started in wrapper.conf

    First install all browsers or only some that you would like to support:

     allBrowser

    Google Chrome, Mozilla Firefox, Apple Safari to name a few, Dont forget that you MUST put them in windows environment variable PATH, so Selenium RC will be able to start them.

    Then create for each browser you would like to support the following directory structure

    Before After

    selenium-grid-1.0.7
    ├───bin
    ├───conf
    ├───doc
    ├───examples
    ├───lib
    ├───logs
    ├───sample-scripts
    └───vendor

    selenium-grid-1.0.7
    ├───bin
    ├───conf
    ├───doc
    ├───examples
    ├───lib
    ├───logs
    ├───rc.chrome
    ├───rc.firefox
    ├───rc.ie
    ├───rc.safari

    ├───sample-scripts
    └───vendor

    Move files around from previous example, so that it look like

    Result
    rc.chrome
    ├───bin
    │       InstallRemoteControl-NT.bat
    │       RemoteControl.bat
    │       UninstallRemoteControl-NT.bat
    │       wrapper.exe

    ├───conf
    │       wrapper.conf

    └───logs

    Here are the settings of wrapper.conf for Google chrome that you need to change across the file, Change all values according to your setup.

    wrapper.ntservice.account=.\selenium
    wrapper.ntservice.password=selenium

    # Java Classpath (include wrapper.jar) Add class path elements as # needed starting from 1 wrapper.java.classpath.1=.. wrapper.java.classpath.2=../../lib/selenium-grid-remote-control-standalone-1.0.7.jar wrapper.java.classpath.3=../../lib/selenium-grid-hub-standalone-1.0.7.jar wrapper.java.classpath.4=../../vendor/selenium-server-1.0.3-standalone.jar wrapper.java.classpath.5=../../lib/wrapper.jar # Application parameters. Add parameters as needed starting from 1 wrapper.app.parameter.1=com.thoughtworks.selenium.grid.remotecontrol.SelfRegisteringRemoteControlLauncher wrapper.app.parameter.2=-port "5558" wrapper.app.parameter.3=-host "localhost" wrapper.app.parameter.4=-hubURL "http://localhost:4444" wrapper.app.parameter.5=-env "*googlechrome" wrapper.app.parameter.6=-hubPollerIntervalInSeconds "30" wrapper.app.parameter.7=-log "..\logs\chrome.log" wrapper.app.parameter.8=-timeout "15" # Name of the service wrapper.name=selenium-chrome # Display name of the service wrapper.displayname=selenium-chrome # Description of the service wrapper.description=selenium-chrome # Java Library Path (location of Wrapper.DLL or libwrapper.so) wrapper.java.library.path.1=../../lib

    You get the idea, for every browser, you have to repeat the same procedure. The only difficult point not documented anywhere is that you can not run the browser with the windows local account, you need to use the windows user that has installed the browser or at least has enough right to create a new browser profile. Failing to do it, will throw a null pointer exception while trying to get a new Google Chrome browser session.

    So you must have a valid user under these 2 keys, you can choose what you want

    wrapper.ntservice.account=.\selenium
    wrapper.ntservice.password=xxxxxxxx

    Once it's running with the RemoteControl.bat file, you can install the service by running the InstallRemoteControl-NT.bat file.

    To start the service, you can use the command line (net start selenium-chrome) or the GUI (Start->Administrative Tools->Services).

    Anyway head to the download section and use a ready to use package

     

    How to give the selenium user the permission to "Start a session as a service".

    Thanks to Eric Bouchut for submission

    You need to give the selenium user the permission to start the session as a service, If you don’t do this, the service won't start at least on Windows XP/SP 3.
    Here it is.
    "For the service to start as the selenium user, you need to  give the selenium user the permission to "start a session as a service", as so:

    • Open the Control Panel
    • Click  "Administration Tools"
    • Click "Local Security Settings" (my attempt to translate "Stratégie de Sécurité Locale" in English)
      • In "Local Policies / User Rights Assignment"
      • Double click "Open a session as a service"
        • add the selenium user to the list

    Download

    Original version of selenium-grid-1.0.7-bin.zip if you want to compare the changes i’ve made.

    Ready to use Selenium-Grid 1.0.7 with all the above scripts configured, all the above in one file selenium-grid-1.0.7-bin-modified.NT.services.zip (22MB)

    Happy Integration Testing with Selenium!