<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1288487704143902644</id><updated>2024-09-13T20:06:45.100+02:00</updated><category term="Linux"/><category term="Mac OS X"/><category term="php"/><category term="10.8"/><category term="ICQ"/><category term="Mountain Lion"/><category term="debian"/><category term="selenium"/><category term="MSSQL"/><category term="Messages"/><category term="Nachrichten"/><category term="Zend Framework"/><category term="Zend Server"/><category term="ant"/><category term="cruise control"/><category term="dblib"/><category term="hudson"/><category term="jenkins"/><category term="odbc"/><category term="pdepent"/><category term="phpcpd"/><category term="phpcs"/><category term="phpdcd"/><category term="phploc"/><category term="phpmd"/><category term="phpundercontrol"/><category term="phpunit"/><title type='text'>featurebug</title><subtitle type='html'>some technical ideas, concepts and guidelines or how tos for me, myself and everyone else.&#xa;&#xa;Please feel free to add comments, ask questions or anything else.&#xa;&#xa;http://www.unicosoft.de</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://featurebug.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1288487704143902644/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://featurebug.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>7</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1288487704143902644.post-786107364314048918</id><published>2012-07-28T18:18:00.000+02:00</published><updated>2012-07-30T15:14:52.192+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="10.8"/><category scheme="http://www.blogger.com/atom/ns#" term="ICQ"/><category scheme="http://www.blogger.com/atom/ns#" term="Mac OS X"/><category scheme="http://www.blogger.com/atom/ns#" term="Mountain Lion"/><category scheme="http://www.blogger.com/atom/ns#" term="Nachrichten"/><title type='text'>Mac OS X Mountain Lion (10.8) und Nachrichten App mit ICQ</title><content type='html'>Wer sich mit der Nachrichten App im neuen Mac OS X Mountain Lion (10.8) mit ICQ verbinden möchte, findet dafür leider keinen Assistenten.&lt;br /&gt;
Es funktioniert aber über die AIM Account Einstellungen.&lt;br /&gt;
&lt;br /&gt;
Wer also seine ICQ Nummer verwenden möchte, der muss einen AIM Account erstellen, und als Benutzername seine ICQ Nummer angeben, sowie sein Passwort eintragen.&lt;br /&gt;
&lt;br /&gt;
Unter Nachrichten -&amp;gt; Einstellungen -&amp;gt; Accounts dann den neu erstellten AIM Account auswählen und im letzten Tab Servereinstellungen folgende Einstellungen ändern:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Server: login.icq.com&lt;/li&gt;
&lt;li&gt;Port: 5190&lt;/li&gt;
&lt;li&gt;sicherstellen, dass &quot;SSL verwenden&quot; &lt;b&gt;nicht&lt;/b&gt; ausgewählt ist&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
Anschließend kann die Nachrichten App sich erfolgreich bei ICQ anmelden und die Empfänger haben in der Liste einen grünen Punkt hinter dem Namen, wenn die ICQ Nummer in euer Kontaktliste gepflegt ist.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;UPDATE:&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
Eventuell sieht der Chatpartner nur Buchstabensalat. Dies kann behoben werden, indem eine Einstellung in der plist Datei gesetzt wird.&lt;br /&gt;
Dazu folgendes durchführen:&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Nachrichten beenden&lt;/li&gt;
&lt;li&gt;~/Library/Preferences/com.apple.iChat.AIM.plist in Editor öffnen, am besten geht es mit XCode&lt;/li&gt;
&lt;li&gt;Unter Accounts den ICQ Account finden&lt;/li&gt;
&lt;li&gt;Die Einstellung ForceICQPlainText auf YES setzen&lt;/li&gt;
&lt;li&gt;Datei speichern&lt;/li&gt;
&lt;li&gt;System neu starten (sonst wird der Wert wieder auf NO gesetzt)&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
Jetzt sollte es mit ICQ funktionieren.&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://featurebug.blogspot.com/feeds/786107364314048918/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://featurebug.blogspot.com/2012/07/mac-os-x-mountain-lion-108-und.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1288487704143902644/posts/default/786107364314048918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1288487704143902644/posts/default/786107364314048918'/><link rel='alternate' type='text/html' href='http://featurebug.blogspot.com/2012/07/mac-os-x-mountain-lion-108-und.html' title='Mac OS X Mountain Lion (10.8) und Nachrichten App mit ICQ'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1288487704143902644.post-3542928790206517651</id><published>2012-07-28T18:12:00.001+02:00</published><updated>2012-07-30T15:19:12.520+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="10.8"/><category scheme="http://www.blogger.com/atom/ns#" term="ICQ"/><category scheme="http://www.blogger.com/atom/ns#" term="Mac OS X"/><category scheme="http://www.blogger.com/atom/ns#" term="Messages"/><category scheme="http://www.blogger.com/atom/ns#" term="Mountain Lion"/><title type='text'>Mac OS X Mountain Lion (10.8) and Messages with ICQ</title><content type='html'>If you want to use the current Mac OS X Mountain Lion (10.8) with Messages and ICQ, you might wonder that there is no account wizard for ICQ. But it works with the AIM account wizard. Just enter your ICQ number as username and your password.&lt;br /&gt;
&lt;br /&gt;
After that, in the account settings under Messages -&amp;gt; Preferences -&amp;gt; Accounts select the new created AIM account and select Server settings (last tab).&lt;br /&gt;
&lt;br /&gt;
Enter &amp;nbsp;the following settings:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Server: login.icq.com&lt;/li&gt;
&lt;li&gt;Port: 5190&lt;/li&gt;
&lt;li&gt;be sure SSL checkbox is not selected&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
After using these settings, you can connect to ICQ network and new recipients in select are marked with a green point on the right if you have added the ICQ numbers in your contact list&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;UPDATE:&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
It is possible, that your chat partners just receive mixed characters or HTML content. You can force plain text messages by following these steps:&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Quit Message&lt;/li&gt;
&lt;li&gt;Open ~/Library/Preferences/com.apple.iChat.AIM.plist in editor of your choice, best with Xcode if possible&lt;/li&gt;
&lt;li&gt;Look in Accounts for your ICQ Account settings&lt;/li&gt;
&lt;li&gt;Set ForceICQPlainText to YES&lt;/li&gt;
&lt;li&gt;Save the file&lt;/li&gt;
&lt;li&gt;reboot your system (if you skip this, the setting will be resetted to NO)&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
Now you can chat with your ICQ contacts.&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://featurebug.blogspot.com/feeds/3542928790206517651/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://featurebug.blogspot.com/2012/07/mac-os-x-mountain-lion-108-and-imessage.html#comment-form' title='3 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1288487704143902644/posts/default/3542928790206517651'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1288487704143902644/posts/default/3542928790206517651'/><link rel='alternate' type='text/html' href='http://featurebug.blogspot.com/2012/07/mac-os-x-mountain-lion-108-and-imessage.html' title='Mac OS X Mountain Lion (10.8) and Messages with ICQ'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1288487704143902644.post-1963063358651485147</id><published>2011-07-12T09:59:00.002+02:00</published><updated>2011-07-12T10:03:56.363+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ant"/><category scheme="http://www.blogger.com/atom/ns#" term="cruise control"/><category scheme="http://www.blogger.com/atom/ns#" term="debian"/><category scheme="http://www.blogger.com/atom/ns#" term="hudson"/><category scheme="http://www.blogger.com/atom/ns#" term="jenkins"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="pdepent"/><category scheme="http://www.blogger.com/atom/ns#" term="php"/><category scheme="http://www.blogger.com/atom/ns#" term="phpcpd"/><category scheme="http://www.blogger.com/atom/ns#" term="phpcs"/><category scheme="http://www.blogger.com/atom/ns#" term="phpdcd"/><category scheme="http://www.blogger.com/atom/ns#" term="phploc"/><category scheme="http://www.blogger.com/atom/ns#" term="phpmd"/><category scheme="http://www.blogger.com/atom/ns#" term="phpundercontrol"/><category scheme="http://www.blogger.com/atom/ns#" term="phpunit"/><category scheme="http://www.blogger.com/atom/ns#" term="selenium"/><title type='text'>How To: Setting up your continuous integration server for PHP projects...</title><content type='html'>&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: red;&quot;&gt;STATUS: WORK IN PROGRESS&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
To make short things shorter: this gonna be a long post.&lt;br /&gt;
&lt;br /&gt;
In this post want to describe how to set up a continuous integration server or environment. in the same way i set it up for myself, so this post ist also (maybe mainly) a reminder to myself.&lt;br /&gt;
&lt;br /&gt;
Actually, there are two widely use CI implementations for PHP projects used: &lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;phpUnderControl, an extension for cruise control&lt;/li&gt;
&lt;li&gt;jenkins, the open source fork moved out of formally known hudson ci server&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;br /&gt;
Both implementations are java based systems, which brings in the mainly functionality of a build system for CI.&lt;br /&gt;
More details should be taken from the project websites.&lt;br /&gt;
&lt;br /&gt;
I&#39;m going to describe the set up with both implementations. Why? You could run only the one of them you need, or both if you think it&#39;s cool. The other point is, the decision which one you prefer should not depend on how easy one solution is to install. Use the one which best fits your needs. So both are described here, test them, and give feedback to the maintainers if you are happy or unhappy with it.&lt;br /&gt;
&lt;br /&gt;
The CI Server covers the following build and software tools:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;phpunit&lt;/li&gt;
&lt;li&gt;php_codebrowser&lt;/li&gt;
&lt;li&gt;phploc&lt;/li&gt;
&lt;li&gt;phpcpd&lt;/li&gt;
&lt;li&gt;selenium&lt;/li&gt;
&lt;li&gt;php_depend&lt;/li&gt;
&lt;li&gt;php_codesniffer&lt;/li&gt;
&lt;li&gt;php_pmd&lt;/li&gt;
&lt;li&gt;phpdcd&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;br /&gt;
I&#39;ve tried to use headlines for each part. Some parts are used for both implementation, some are not. These parts have the used implementation in the headline.&lt;br /&gt;
&lt;br /&gt;
For usual, i install optional software in the /opt directory. Replace this directory with your own if you prefer another directory, for example /usr/local&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: large;&quot;&gt;&lt;b&gt;&lt;u&gt;1. The requirements&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
First, i&#39;ve set up a System with actually debian version (squeeze). I&#39;m alwys installing debian from the smaller netboot.iso and install all packagaes via aptitude, not via the install dialogs, where it asks if you plan a web server, dns server and so on.&lt;br /&gt;
(Just because i just had some troubles with these pre defined package sets in history. Thats why i&#39;m reloading apache configuration changes always with restart instead of reload, too. If you want to know why, ask for it.)&lt;br /&gt;
For now, squeeze is the stable debian release.&lt;br /&gt;
After installation always my first packages i&#39;m going to install are less, wget, ssh.&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: large;&quot;&gt;&lt;b&gt;&lt;u&gt;2. Who knows the Java and sex practise comparison?&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
For both implementations, we need Java. the most uncomplicated Java implementation on my way as a developer isbuild by Sun. So i suggest to use the Sun Java implementation. But this is only my opinion. If you think different, its your way. This how to covers my way.&lt;br /&gt;
To take advantage of debians packages system, we change the used repositories.&lt;br /&gt;
Change your /etc/apt/sources.list as follows:&lt;br /&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;sudo vi /etc/apt/sources.list
&lt;/pre&gt;&lt;pre class=&quot;brush:bash&quot;&gt;# deb http://ftp.de.debian.org/debian/ squeeze main

deb http://ftp.de.debian.org/debian/ squeeze main contrib non-free
deb-src http://ftp.de.debian.org/debian/ squeeze main contrib non-free

deb http://security.debian.org/ squeeze/updates main contrib non-free
deb-src http://security.debian.org/ squeeze/updates main contrib non-free

# squeeze-updates, previously known as &#39;volatile&#39;
deb http://ftp.de.debian.org/debian/ squeeze-updates main contrib non-free
deb-src http://ftp.de.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/pre&gt;Fire &lt;br /&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;sudo aptitude update
&lt;/pre&gt;to bring your package lists up to date.&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: large;&quot;&gt;&lt;b&gt;&lt;u&gt;3. Anything else?&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
There are now some packages which we need to install.&lt;br /&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;sudo aptitude install sun-java6-jre ant ant-optional rake php-pear php5-dev make php5-curl php5-imagick sun-java6-jdk subversion subversion-tools postgresql mysql-server php5 php5-mysql php5-pgsql php5-sqlite git unzip
&lt;/pre&gt;- sun-java6-jre and sun-java6-jdk are required for jenkins and cruisecontrol and also for selenium.&lt;br /&gt;
- ant ant-optional are used for the build process of a project and also selenium startup&lt;br /&gt;
- rake there is another way to start up selenium with rake&lt;br /&gt;
- php-pear php5-dev make php5-curl php5-imagick php5 are required for installing xdebug via pecl and the PHP quality assurance tools from pear&lt;br /&gt;
- subversion subversion-tools git to checkout project sources PHP quality assurance tools&lt;br /&gt;
- php5-mysql php5-pgsql php5-sqlite postgresql mysql-server are optional for project for example&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: large;&quot;&gt;&lt;b&gt;&lt;u&gt;4. [phpUnderControl] Selenium Grid standalone&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
If you plan to take advantage of frontend tests via selenium (and you should do it), we use selenium grid. With grid, we can manage multiple browser on multiple clients. This speed up tests a lot.&lt;br /&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;cd /opt
wget http://release.seleniumhq.org/selenium-grid/selenium-grid-1.0.8-bin.zip

unzip selenium-grid-1.0.8-bin.zip

cd selenium-grid-1.0.8

ant sanity-check
&lt;/pre&gt;You can test the functionality by starting a hub:&lt;br /&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;ant launch-hub
&lt;/pre&gt;If no error occures, stop selenium with ctrl^c. With rake you can easily start selenium grid as deamon in background. You need a pid subdirectory in the selenium directory.&lt;br /&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;mkdir pid
&lt;/pre&gt;Start the daemon with&lt;br /&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;rake hub:start BACKGROUND=true
&lt;/pre&gt;You can stop the deamon with a post to the selenium lifecycle manager&lt;br /&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;wget -q -t1 --post-data action=shutdown http://localhost:4444/lifecycle-manager
&lt;/pre&gt;If you need to pass arguments to selenium, you can pass them to the rake start command&lt;br /&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;rake hub:start BACKGROUND=true SELENIUM_ARGS=&quot;-multiWindow -debug&quot;
&lt;/pre&gt;Both, start and stop command, can easily be taken to configura a start--stop script in /etc/init.d/.&lt;br /&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;vi /etc/init.d/selenium-grid
&lt;/pre&gt;&lt;pre class=&quot;brush:bash&quot;&gt;#!/bin/bash

case &quot;$1&quot; in
  start)
    rake hub:start BACKGROUND=true SELENIUM_ARGS=&quot;-multiWindow -debug&quot;
    ;;
  stop)
    wget -q -t1 --post-data action=shutdown http://localhost:4444/lifecycle-manager
    ;;
  *)
    echo &quot;Usage: $SCRIPTNAME {start|stop}&quot; &amp;gt;&amp;amp;2
    exit 3
    ;;
esac

exit 0
&lt;/pre&gt;&lt;pre class=&quot;brush:bash&quot;&gt;chmod +x /etc/init.d/selenium-grid
&lt;/pre&gt;Thats it. Until now, we have a selenium hub, but the test should run on remote controls. Instructions for remote controls are described later.&lt;br /&gt;
&lt;br /&gt;
The concepts of selenium grid are explained on the projects website http://selenium-grid.seleniumhq.org/&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: large;&quot;&gt;&lt;b&gt;&lt;u&gt;5. The PHP tools&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
Currently, the most used PHP tools for quality assurance by myself are&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Xdebug &lt;a href=&quot;http://xdebug.org/&quot;&gt;http://xdebug.org/&lt;/a&gt; (thanks to Derick Rethans)&lt;/li&gt;
&lt;li&gt;PHPUnit &lt;a href=&quot;http://www.phpunit.de/manual/current/en/index.html&quot;&gt;http://www.phpunit.de/manual/current/en/index.html&lt;/a&gt; and&amp;nbsp;&lt;a href=&quot;https://github.com/sebastianbergmann/phpunit/&quot;&gt;https://github.com/sebastianbergmann/phpunit/&lt;/a&gt; (thanks to Sebastian Bergmann)&lt;/li&gt;
&lt;li&gt;PHP_Depend &lt;a href=&quot;http://pdepend.org/&quot;&gt;http://pdepend.org/&lt;/a&gt; (thanks to Manuel Pichler)&lt;/li&gt;
&lt;li&gt;PHPMD &lt;a href=&quot;http://phpmd.org/&quot;&gt;http://phpmd.org/&lt;/a&gt; (thanks to Manuel Pichler)&lt;/li&gt;
&lt;li&gt;phploc &lt;a href=&quot;https://github.com/sebastianbergmann/phploc&quot;&gt;https://github.com/sebastianbergmann/phploc&lt;/a&gt; (thanks to Sebastian Bergmann)&lt;/li&gt;
&lt;li&gt;PHP_CodeSniffer &lt;a href=&quot;http://pear.php.net/package/PHP_CodeSniffer/&quot;&gt;http://pear.php.net/package/PHP_CodeSniffer/&lt;/a&gt; (thanks to Greg Sherwood)&lt;/li&gt;
&lt;li&gt;phpcpd &lt;a href=&quot;https://github.com/sebastianbergmann/phpcpd&quot;&gt;https://github.com/sebastianbergmann/phpcpd&lt;/a&gt; (thanks to Sebastian Bergmann)&lt;/li&gt;
&lt;li&gt;phpdcd &lt;a href=&quot;https://github.com/sebastianbergmann/phpdcd&quot;&gt;https://github.com/sebastianbergmann/phpdcd&lt;/a&gt; (thanks to Sebastian Bergmann)&lt;/li&gt;
&lt;li&gt;PHP_CodeBrowser &lt;a href=&quot;https://github.com/mayflowergmbh/PHP_CodeBrowser&quot;&gt;https://github.com/mayflowergmbh/PHP_CodeBrowser&lt;/a&gt; (thanks to Sebastian Bergmann and Mayflower GmbH)&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;br /&gt;
Except Xdebug, all tools can be installed with pear.&lt;br /&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;sudo pecl install xdebug

sudo pear channel-discover pear.phpunit.de

sudo pear channel-discover components.ez.no

sudo pear channel-discover pear.symfony-project.com

sudo pear channel-discover pear.phpmd.org

sudo pear channel-discover pear.pdepend.org

sudo pear upgrade-all

sudo pear install --alldeps phpunit/PHPUnit

sudo pear install pdepend/PHP_Depend

sudo pear install phpmd/PHP_PMD

sudo pear install phpunit/phploc

sudo pear install PHP_CodeSniffer

sudo pear install phpunit/phpcpd
&lt;/pre&gt;If you want to know which packages are available on a channel, try pear remote-list -c phpunit for example.&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: large;&quot;&gt;&lt;b&gt;&lt;u&gt;6. [phpUnderControl] Never gonna give you up...&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
The installation of phpUnderControl works easy with the pear installer:&lt;br /&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;sudo pear channel-discover pear.phpundercontrol.org

sudo pear install --alldeps phpuc/phpUnderControl-beta
&lt;/pre&gt;PhpUnderControl is an extension for Cruise Control (current latest version is 2.8.4). So the next step:&lt;br /&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;sudo cd /opt

sudo wget http://downloads.sourceforge.net/project/cruisecontrol/CruiseControl/2.8.4/cruisecontrol-bin-2.8.4.zip

sudo unzip cruisecontrol-bin-2.8.4.zip

sudo mv cruisecontrol-bin-2.8.4 cruisecontrol

sudo phpuc install /opt/cruisecontrol

sudo useradd cruisecontrol

sudo chown -R cruisecontrol cruisecontrol
&lt;/pre&gt;You can now start your Cruise Control and phpUnderControl instance with &lt;br /&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;sudo /opt/cruisecontrol/cruisecontrol.sh
&lt;/pre&gt;and stop the instance with&lt;br /&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;wget http://localhost:8000/invoke?operation=halt&amp;amp;objectname=CruiseControl+Manager%3Aid%3Dunique
&lt;/pre&gt;There is an example of a startup script I often use. I changed the port cruise control runs on to get no conflicts with jenkins later:&lt;br /&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;vi /etc/init.d/cruisecontrol
&lt;/pre&gt;&lt;pre class=&quot;brush:bash&quot;&gt;#!/bin/sh
#content of /opt/cruisecontrol/init script
# chkconfig: 345 99 05
# description: CruiseControl build loop (see /home/tools)

# CruiseControl Unix Startup Script Version 2.1
#
# based on http://confluence.public.thoughtworks.org/display/CC/RunningCruiseControlFromUnixInit
# adapted for multiple projects
# also based on the file attached to the above page created by Jerome Lacoste

#
# CruiseControl startup: Startup and kill script for Cruise Control
#


###################################################################################################
# USER CONFIGURATION
#
# Fill in these values for your Cruise Control setup

# What user will Cruise Control run as?  The user will need permission to write and modify files
# in the next entries.
CC_USER=cruisecontrol


# Where is the CC startup script located?
CC_INSTALL_DIR=/opt/cruisecontrol

# In what directory is the config.xml file located for CC?
# default: CC_WORK_DIR=$CC_INSTALL_DIR
CC_WORK_DIR=$CC_INSTALL_DIR

# Where will the cruisecontrol.log file be located?
# default: CC_LOGFILE_DIR=$CC_INSTALL_DIR
CC_LOGFILE_DIR=$CC_INSTALL_DIR


#######################
# ENVIRONMENT ADDITIONS

# Add environement variables here that are needed by your build.
# example:
export JAVA_HOME=/usr
#
# or like this for local variables ONLY used in this file:
#  JAVA_HOME=/usr/local/java


# Add path to additional executables needed for project build.  See PATH entry below for base config.
# No additional action taken when blank.
PATH_ADDITIONS=



##############################
# CRUISE CONTROL PORT SETTINGS

# Port for Jetty reporting application.  You can access it by going to http://localhost:8080
# default CC_WEBPORT=8080
CC_WEBPORT=8081

# JMX port for webapp and Java Management eXtensions (JMX).  You can access it by going to http://localhost:8080
# Change only if this port is in use as the webapp will also need modification.
# default CC_JMXPORT=8082
CC_JMXPORT=8082

# RMI port for control via Java&#39;s Remote Management Interface (RMI)
# Leave blank to disable.
CC_RMIPORT=



###################################################################################################
# DO NOT MODIFY ENTRIES BELOW THIS LINE

NAME=cruisecontrol
DESC=&quot;CruiseControl - continuous integration build loop&quot;


PATH=/sbin:/usr/sbin:/usr/bin:/bin
# add additions if variable has text defined
if [ -n &quot;$PATH_ADDITIONS&quot; ]; then
    PATH=$PATH_ADDITIONS:$PATH
fi
export PATH


CC_DAEMON=$CC_INSTALL_DIR/cruisecontrol.sh

CC_CONFIG_FILE=$CC_WORK_DIR/config.xml

CC_LOG_FILE=$CC_LOGFILE_DIR/cruisecontrol.log

CC_COMMAND=&quot;$CC_DAEMON -configfile $CC_CONFIG_FILE -webport $CC_WEBPORT -jmxport $CC_JMXPORT -rmiport $CC_RMIPORT&quot;

# overwrite settings from default file
if [ -f /etc/default/cruisecontrol ]; then
  . /etc/default/cruisecontrol
fi

# does the executable exist?
test -f $CC_DAEMON || (echo &quot;The executable $CC_DAEMON does not exist!&quot; &amp;amp;&amp;amp; exit 0)

if [ `id -u` -ne 0 ]; then
        echo &quot;Not starting/stopping $DESC, you are not root.&quot;
        exit 4
fi

# Get the PID output from the startup script
if [ -f $CC_INSTALL_DIR/cc.pid ]; then
 CC_PID=`cat $CC_INSTALL_DIR/cc.pid`
else
 echo &quot;No cc.pid file found.  CC process may not be controllable from this script!&quot;
fi


case &quot;$1&quot; in

  &#39;start&#39;)
    cd $CC_INSTALL_DIR
    #echo &quot;CC environtment at startup&quot; &amp;gt; cc.startup.env
    #env &amp;gt;&amp;gt; cc.startup.env
    su $CC_USER -c &quot;/bin/sh -c \&quot;$CC_COMMAND &amp;gt;&amp;gt; $CC_LOG_FILE 2&amp;gt;&amp;amp;1\&quot;&quot; &amp;amp; RETVAL=$?
    echo &quot;$NAME started with jmx on port ${CC_JMXPORT}&quot;
    ;;

  &#39;stop&#39;)
    if [ -n &quot;$CC_PID&quot; ] &amp;amp;&amp;amp; ps -p ${CC_PID} &amp;gt; /dev/null ; then
     kill -9 ${CC_PID}
      $0 status
      RETVAL=$?
    else
      echo &quot;$NAME is not running&quot;
      RETVAL=1
    fi
    ;;

  &#39;status&#39;)
    if [ -n &quot;$CC_PID&quot; ] &amp;amp;&amp;amp; ps -p ${CC_PID} &amp;gt; /dev/null ; then
      echo $NAME \(pids $CC_PID\) is running
      RETVAL=0
    else
      echo &quot;$NAME is stopped&quot;
      RETVAL=1
    fi
    ;;

  &#39;restart&#39;)
    $0 stop &amp;amp;&amp;amp; $0 start
    RETVAL=$?
    ;;

  *)
    echo &quot;Usage: $0 { start | stop | status | restart }&quot;
    exit 1
    ;;
esac
#echo ending $0 $$....
exit 0;
&lt;/pre&gt;&lt;pre class=&quot;brush:bash&quot;&gt;chmod +x /etc/init.d/cruisecontrol
&lt;/pre&gt;Now you can start and stop your CI instance with &lt;br /&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;/etc/init.d/cruisecontrol start
/etc/init.d/cruisecontrol stop
&lt;/pre&gt;The webserver needs a few seconds to come up, so don&#39;t be eager and breathe deeply, then fire up your browser.&lt;br /&gt;
&lt;br /&gt;
Thats it! For now...&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: large;&quot;&gt;&lt;b&gt;&lt;u&gt;7. [jenkins] together forever...&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
Parts in this step are taken from &lt;a href=&quot;http://jenkins-php.org/&quot;&gt;http://jenkins-php.org/&lt;/a&gt; by Sebastian Bergmann. He also created the php-template project used later.&lt;br /&gt;
&lt;br /&gt;
Jenkins can be installed with use of a repository:&lt;br /&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;sudo wget -q -O - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | apt-key add -
sudo echo &quot;deb http://pkg.jenkins-ci.org/debian binary/&quot; &amp;gt; /etc/apt/sources.list.d/jenkins.list
sudo aptitude update
sudo aptitude install jenkins
&lt;/pre&gt;Thats it! Jenkins listens by default on port 8080.&lt;br /&gt;
&lt;br /&gt;
To get useful results in the jenkins instance, we use some plugins, installed by the client tool jenkins provides:&lt;br /&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;wget http://localhost:8080/jnlpJars/jenkins-cli.jar
java -jar jenkins-cli.jar -s http://localhost:8080 install-plugin checkstyle
java -jar jenkins-cli.jar -s http://localhost:8080 install-plugin clover
java -jar jenkins-cli.jar -s http://localhost:8080 install-plugin dry
java -jar jenkins-cli.jar -s http://localhost:8080 install-plugin htmlpublisher
java -jar jenkins-cli.jar -s http://localhost:8080 install-plugin jdepend
java -jar jenkins-cli.jar -s http://localhost:8080 install-plugin plot
java -jar jenkins-cli.jar -s http://localhost:8080 install-plugin pmd
java -jar jenkins-cli.jar -s http://localhost:8080 install-plugin violations
java -jar jenkins-cli.jar -s http://localhost:8080 install-plugin xunit
java -jar jenkins-cli.jar -s http://localhost:8080 install-plugin redmine

java -jar jenkins-cli.jar -s http://localhost:8080 install-plugin collapsing-console-sections
java -jar jenkins-cli.jar -s http://localhost:8080 install-plugin iphoneview
java -jar jenkins-cli.jar -s http://localhost:8080 install-plugin analysis-core
java -jar jenkins-cli.jar -s http://localhost:8080 install-plugin analysis-collector
java -jar jenkins-cli.jar -s http://localhost:8080 install-plugin selenium
java -jar jenkins-cli.jar -s http://localhost:8080 install-plugin piwikanalytics

java -jar jenkins-cli.jar -s http://localhost:8080 safe-restart
&lt;/pre&gt;&lt;br /&gt;
8. [phpUnderControl] The build.xml file&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;

&lt;project name=&quot;name-of-project&quot; default=&quot;build&quot; basedir=&quot;.&quot;&gt;
 &lt;property name=&quot;source&quot; value=&quot;${basedir}&quot;/&gt;

 &lt;target name=&quot;clean&quot;
         description=&quot;Clean up and create artifact directories&quot;&gt;
  &lt;delete dir=&quot;${basedir}/build/api&quot;/&gt;
  &lt;delete dir=&quot;${basedir}/build/code-browser&quot;/&gt;
  &lt;delete dir=&quot;${basedir}/build/coverage&quot;/&gt;
  &lt;delete dir=&quot;${basedir}/build/logs&quot;/&gt;
  &lt;delete dir=&quot;${basedir}/build/pdepend&quot;/&gt;
  &lt;delete dir=&quot;${basedir}/build/graph&quot; /&gt;

  &lt;mkdir dir=&quot;${basedir}/build/api&quot;/&gt;
  &lt;mkdir dir=&quot;${basedir}/build/code-browser&quot;/&gt;
  &lt;mkdir dir=&quot;${basedir}/build/coverage&quot;/&gt;
  &lt;mkdir dir=&quot;${basedir}/build/logs&quot;/&gt;
  &lt;mkdir dir=&quot;${basedir}/build/pdepend&quot;/&gt;
  &lt;mkdir dir=&quot;${basedir}/build/graph&quot; /&gt;
 &lt;/target&gt;

 &lt;target name=&quot;phpunit&quot;
         description=&quot;Run unit tests using PHPUnit and generates junit.xml and clover.xml&quot;&gt;
  &lt;exec executable=&quot;phpunit&quot; failonerror=&quot;true&quot;&gt;
    &lt;arg line=&quot;-c tests/phpunit.xml&quot; /&gt;
  &lt;/exec&gt;
 &lt;/target&gt;

 &lt;target name=&quot;parallelTasks&quot;
         description=&quot;Run the pdepend, phpmd, phpcpd, phpcs, phpdoc and phploc tasks in parallel using a maximum of 2 threads.&quot;&gt;
  &lt;parallel threadCount=&quot;2&quot;&gt;
   &lt;sequential&gt;
    &lt;antcall target=&quot;pdepend&quot;/&gt;
    &lt;antcall target=&quot;phpmd&quot;/&gt;
   &lt;/sequential&gt;
   &lt;antcall target=&quot;phpcpd&quot;/&gt;
   &lt;antcall target=&quot;phpcs&quot;/&gt;
   &lt;antcall target=&quot;phpdoc&quot;/&gt;
   &lt;antcall target=&quot;phploc&quot;/&gt;
  &lt;/parallel&gt;
 &lt;/target&gt;
 

 &lt;target name=&quot;pdepend&quot;
         description=&quot;Generate jdepend.xml and software metrics charts using PHP_Depend&quot;&gt;
  &lt;exec executable=&quot;pdepend&quot;&gt;
   &lt;arg line=&quot;--jdepend-xml=&#39;${basedir}/build/logs/jdepend.xml&#39;
              --jdepend-chart=&#39;${basedir}/build/pdepend/dependencies.svg&#39;
              --overview-pyramid=&#39;${basedir}/build/pdepend/overview-pyramid.svg&#39;
              --ignore=tests/,library/Zend/,bin/,docs/,build/
              &#39;${source}&#39;&quot; /&gt;
  &lt;/exec&gt;
 &lt;/target&gt;

 &lt;target name=&quot;phpmd&quot;
         description=&quot;Generate pmd.xml using PHPMD&quot;&gt;
  &lt;exec executable=&quot;phpmd&quot;&gt;
   &lt;arg line=&quot;&#39;${source}&#39;
              xml
              codesize,unusedcode
              --exclude &#39;tests/,library/Zend/,bin/,docs/,build/&#39;
              --suffixes php
              --reportfile &#39;${basedir}/build/logs/pmd.xml&#39;&quot; /&gt;
  &lt;/exec&gt;
 &lt;/target&gt;

 &lt;target name=&quot;phpcpd&quot;
         description=&quot;Generate pmd-cpd.xml using PHPCPD&quot;&gt;
  &lt;exec executable=&quot;phpcpd&quot;&gt;
   &lt;arg line=&quot;--log-pmd &#39;${basedir}/build/logs/pmd-cpd.xml&#39; --exclude library/Zend --exclude tests --exclude bin --exclude docs --exclude build &#39;${source}&#39;&quot; /&gt;
  &lt;/exec&gt;
 &lt;/target&gt;

 &lt;target name=&quot;phploc&quot;
         description=&quot;Generate phploc.csv&quot;&gt;
  &lt;exec executable=&quot;phploc&quot;&gt;
   &lt;arg line=&quot;--log-csv &#39;${basedir}/build/logs/phploc.csv&#39; --exclude library/Zend --exclude tests --exclude bin --exclude docs --exclude build &#39;${source}&#39;&quot; /&gt;
  &lt;/exec&gt;
 &lt;/target&gt;

 &lt;target name=&quot;phpcs&quot;
         description=&quot;Generate checkstyle.xml using PHP_CodeSniffer&quot;&gt;
  &lt;exec executable=&quot;phpcs&quot;&gt;
   &lt;arg line=&quot;--report=checkstyle
              --report-file=&#39;${basedir}/build/logs/checkstyle.xml&#39;
              --standard=Zend
              --ignore=library/Zend/*,tests/*,bin/*,docs/*,build/*
              &#39;${source}&#39;&quot; /&gt;
  &lt;/exec&gt;
 &lt;/target&gt;

 &lt;target name=&quot;phpdoc&quot;
         description=&quot;Generate API documentation using PHPDocumentor&quot;&gt;
  &lt;exec executable=&quot;phpdoc&quot;&gt;
   &lt;arg line=&quot;-d &#39;${source}&#39; -s -q -t &#39;${basedir}/build/api&#39; -i &#39;tests/,library/Zend/&#39; --parseprivate on --undocumentedelements on --output HTML:Smarty:PHP&quot; /&gt;
  &lt;/exec&gt;
 &lt;/target&gt;

 &lt;target name=&quot;phpcb&quot;
         description=&quot;Aggregate tool output with PHP_CodeBrowser&quot;&gt;
  &lt;exec executable=&quot;phpcb&quot;&gt;
   &lt;arg line=&quot;--log &#39;${basedir}/build/logs&#39;
              --source &#39;${source}&#39;
              --ignore &#39;tests,library/Zend,bin,docs,build&#39;
              --output &#39;${basedir}/build/code-browser&#39;&quot; /&gt;
  &lt;/exec&gt;
 &lt;/target&gt;

 &lt;target name=&quot;build&quot; depends=&quot;clean,parallelTasks,phpunit,phpcb&quot;/&gt;
&lt;/project&gt;
&lt;/pre&gt;&lt;br /&gt;
9. [phpUnderControl] cruise control config.xml&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;&lt;cruisecontrol&gt;
        &lt;project name=&quot;testproject&quot; buildafterfailed=&quot;false&quot;&gt;
                &lt;listeners&gt;
                        &lt;currentbuildstatuslistener file=&quot;logs/${project.name}/status.txt&quot;/&gt;
                &lt;/listeners&gt;
                &lt;plugin name=&quot;svn&quot; classname=&quot;net.sourceforge.cruisecontrol.sourcecontrols.SVN&quot; /&gt;
                &lt;modificationset quietperiod=&quot;60&quot;&gt;
                        &lt;svn RepositoryLocation=&quot;svn://my_ip/testproject&quot; localWorkingCopy=&quot;projects/${project.name}/&quot; username=&quot;myUserName&quot; password=&quot;myPassWord&quot; /&gt;
                &lt;/modificationset&gt;
                &lt;bootstrappers&gt;
                        &lt;svnbootstrapper localWorkingCopy=&quot;projects/${project.name}/&quot; file=&quot;build.xml&quot; username=&quot;myUserName&quot; password=&quot;myPassWord&quot; /&gt;
                &lt;/bootstrappers&gt;
                &lt;schedule interval=&quot;120&quot;&gt;
                        &lt;ant anthome=&quot;apache-ant-1.7.0&quot; buildfile=&quot;projects/${project.name}/build.xml&quot;/&gt;
                &lt;/schedule&gt; 
                &lt;log dir=&quot;logs/${project.name}&quot;&gt;
                        &lt;merge dir=&quot;projects/${project.name}/build/logs/&quot;/&gt;
                &lt;/log&gt; 
                &lt;publishers&gt;
                        &lt;execute command=&quot;phpuc graph logs/${project.name} artifacts/${project.name}&quot;/&gt; 
                        &lt;artifactspublisher dir=&quot;projects/${project.name}/build/api&quot; dest=&quot;artifacts/${project.name}&quot; subdirectory=&quot;api&quot;/&gt;
                        &lt;artifactspublisher dir=&quot;projects/${project.name}/build/coverage&quot; dest=&quot;artifacts/${project.name}&quot; subdirectory=&quot;coverage&quot;/&gt;
                        &lt;artifactspublisher dir=&quot;projects/${project.name}/build/code-browser&quot; dest=&quot;artifacts/${project.name}&quot; subdirectory=&quot;php-code-browser&quot;/&gt;
                        &lt;artifactspublisher dir=&quot;projects/${project.name}/build/pdepend&quot; dest=&quot;artifacts/${project.name}&quot; subdirectory=&quot;graph&quot;/&gt;
                &lt;/publishers&gt; 
        &lt;/project&gt;
&lt;/cruisecontrol&gt;
&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://featurebug.blogspot.com/feeds/1963063358651485147/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://featurebug.blogspot.com/2011/05/how-to-setting-up-your-continuous.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1288487704143902644/posts/default/1963063358651485147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1288487704143902644/posts/default/1963063358651485147'/><link rel='alternate' type='text/html' href='http://featurebug.blogspot.com/2011/05/how-to-setting-up-your-continuous.html' title='How To: Setting up your continuous integration server for PHP projects...'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1288487704143902644.post-8248289486754885129</id><published>2011-04-14T14:44:00.001+02:00</published><updated>2011-04-14T15:01:54.762+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="debian"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="selenium"/><title type='text'>Selenium Grid and Linux Debian Squeeze</title><content type='html'>This is just a quick reminder how to install or extend your (and ours) development environment with selenium grid.&lt;br /&gt;
&lt;br /&gt;
First of all, set up a fresh debian installation (actually &quot;Squeze&quot; 6.0.1).&lt;br /&gt;
&lt;br /&gt;
First step is to install Java JRE and Ant. Mostly i&#39;m using Sun Java JRE, so first we need to add the non-free target to our sources.list:&lt;br /&gt;
/etc/apt/sources.list:&lt;br /&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;deb http://ftp.de.debian.org/debian/ squeeze main contrib non-free
deb-src http://ftp.de.debian.org/debian/ squeeze main contrib non-free

deb http://security.debian.org/ squeeze/updates main contrib non-free
deb-src http://security.debian.org/ squeeze/updates main contrib non-free

# squeeze-updates, previously known as &#39;volatile&#39;
deb http://ftp.de.debian.org/debian/ squeeze-updates main contrib non-free
deb-src http://ftp.de.debian.org/debian/ squeeze-updates main contrib non-free
&lt;/pre&gt;&lt;br /&gt;
Ant is needed by selenium grid.&lt;br /&gt;
&lt;br /&gt;
Now we can install Java JRE and Ant:&lt;br /&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;sudo aptitude update
sudo aptitude install&amp;nbsp;sun-java6-jre ant ant-optional zip rake
&lt;/pre&gt;rake is optional, but the easiest way to run hub and remote controls in background&lt;br /&gt;
&lt;br /&gt;
Next we fetch selenium grid and extract the package:&lt;br /&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;cd /opt
wget http://release.seleniumhq.org/selenium-grid/selenium-grid-1.0.8-bin.zip
unzip selenium-grid-1.0.8-bin.zip
cd selenium-grid-1.0.8
&lt;/pre&gt;Now we are able to test and start selenium and continue with testing;&lt;br /&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;ant sanity-check
mkdir pid
rake hub:start BACKGROUND=true
&lt;/pre&gt;The Hub starts listening on port 4444 by default. To kill the hub, just send a HTTP POST request:&lt;br /&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;wget -q -t1 --post-data action=shutdown http://localhost:4444/lifecycle-manager
&lt;/pre&gt;so long,&lt;br /&gt;
&lt;br /&gt;
cheers!</content><link rel='replies' type='application/atom+xml' href='http://featurebug.blogspot.com/feeds/8248289486754885129/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://featurebug.blogspot.com/2011/04/selenium-grid-and-linux-debian-squeeze.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1288487704143902644/posts/default/8248289486754885129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1288487704143902644/posts/default/8248289486754885129'/><link rel='alternate' type='text/html' href='http://featurebug.blogspot.com/2011/04/selenium-grid-and-linux-debian-squeeze.html' title='Selenium Grid and Linux Debian Squeeze'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1288487704143902644.post-8206737027977346330</id><published>2011-04-06T17:04:00.002+02:00</published><updated>2011-04-06T17:13:40.758+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="dblib"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="odbc"/><category scheme="http://www.blogger.com/atom/ns#" term="php"/><category scheme="http://www.blogger.com/atom/ns#" term="Zend Framework"/><title type='text'>Linux, PHP (and Zend Framework) and MS SQL Server</title><content type='html'>As mentioned in my previous post&amp;nbsp;&lt;a href=&quot;http://featurebug.blogspot.com/2011/01/mac-os-x-php-zend-server-ce-freetds-and.html&quot;&gt;Mac OS X, PHP, Zend Server CE, FreeTDS and MS SQL&lt;/a&gt;&amp;nbsp;setting up a database connection to Microsoft SQL Server is quite easy.&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;In the case you are not using Zend Server or you are on Linux (Debian, Ubuntu, SuSE, RedHat, Fedora, Gentoo or one of the other distributions) i am going to show an easy way to connect to a Microsoft SQL Server (SQL Server 2005 Standard Edition x64 in my case, but this also works for all other actual supported SQL Server Versions from Microsoft). In my examples I use Ubuntu 10.10.&lt;br /&gt;
&lt;br /&gt;
First step is installing php via the distributions package and repository system, aptitude or apt-get in my case with Ubuntu or any other Debian based distribution.&lt;br /&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;sudo aptitude install libapache2-mod-php5 php5
&lt;/pre&gt;After the installation process is done, i have to restart the apache to getting the php5 module to work. Its easily done by&lt;br /&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;sudo /etc/init.d/apache restart
&lt;/pre&gt;Testing the successful installation is easy by creating a index.php in the Apache document root.&lt;br /&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;sudo vi /var/www/index.php
&lt;/pre&gt;index.php:&lt;br /&gt;
&lt;pre class=&quot;brush:php&quot;&gt;phpinfo();
&lt;/pre&gt;&lt;br /&gt;
You should see your php informations when browsing to http://&lt;your_ip_here&gt;/&lt;br /&gt;
&lt;br /&gt;
Next step is the database connectivity:&lt;br /&gt;
&lt;br /&gt;
On Linux, the used PDO Module for MS SQL Connections is dblib.&lt;br /&gt;
Sometimes the package is called dblib, sometimes sybase, and on ubuntu there is a virtual package php5-mssql&lt;br /&gt;
&lt;/your_ip_here&gt;&lt;br /&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;sudo aptitude install php5-mssql
&lt;/pre&gt;Reload the Webserver configuration:&lt;br /&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;sudo /etc/init.d/apache2 reload
&lt;/pre&gt;And check if the module is correctly loaded:&lt;br /&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;php -i | grep MSSQL  # should print MSSQL Support =&amp;gt; enabled
php -i | grep PDO # should print PDO Driver for FreeTDS/Sybase DB-lib =&amp;gt; enabled
&lt;/pre&gt;&lt;br /&gt;
At this point, you are able to connect to a MS SQL Server. But there are several issues with this type of connection:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Date Format (depends on user settings of connected database user)&lt;/li&gt;
&lt;li&gt;UTF-8 Support (there is an option for the connection string to solve it)&lt;/li&gt;
&lt;li&gt;binary and (long) text data&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
So the next step is configuring freeTDS (details of configuration can be found on the&amp;nbsp;&lt;a href=&quot;http://www.freetds.org/userguide/freetdsconf.htm&quot;&gt;freeTDS User Guide&lt;/a&gt;)&lt;br /&gt;
&lt;br /&gt;
the date time formatting:&lt;br /&gt;
/etc/freetds/locales.conf:&lt;br /&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;[default]
    date format = %Y-%m-%d %H:%M:%S.%z
&lt;/pre&gt;the database connection settings&lt;br /&gt;
/etc/freetds/freetds.conf:&lt;br /&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;[mydbhost]
        host = your database hostname or ip
        tds version = 8.0
        # text size don&#39;t need to be such a high value, its just an example
        text size = 4294967295
        client charset = UTF-8
&lt;/pre&gt;example script&lt;br /&gt;
/var/www/index.php:&lt;br /&gt;
&lt;pre class=&quot;brush:php&quot;&gt;try
 {
  $dbh = new PDO(&#39;dblib:host=yourdbhost;dbname=databasename;&#39;, &#39;username&#39;, &#39;password&#39;);
  echo &quot;Yeaha!&quot;;
  $stmt = $dbh-&amp;gt;prepare(&quot;SELECT column_xyz FROM table_xyz&quot;);
    $stmt-&amp;gt;execute();
    while ($row = $stmt-&amp;gt;fetch()) {
          // the returned values are UTF-8 encoded
          var_dump($row);
    }
    unset($stmt);
    unset($dbh); 
 }
 catch (PDOException $e)
 {
  die($e);
 }
&lt;/pre&gt;&lt;br /&gt;
At least, we are going to connect to the database with zend frameworks db adapter:&lt;br /&gt;
&lt;br /&gt;
Note: Example here is done by ubuntu repository package for zend framework, but this version may be outdated (surely it is ;-)). grab the latest version from http://framework.zend.com&lt;br /&gt;
install zend framework:&lt;br /&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;sudo aptitude&amp;nbsp;install zend-framework zend-framework-bin
&lt;/pre&gt;be sure to have the zend framework library path in your include dirs.&lt;br /&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;sudo vi /etc/php5/conf.d/zend-framework.ini
&lt;/pre&gt;&lt;pre class=&quot;brush:bash&quot;&gt;[Zend]
include_path=${include_path} &quot;:/usr/share/php/libzend-framework-php&quot;
&lt;/pre&gt;&lt;br /&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;cd /var/www
sudo zf.sh create project /var/www/ zftest
sudo zf.sh configure db-adapter &quot;adapter=Pdo_Mssql&amp;amp;host=mydbhost&amp;amp;dbname=mydbname&amp;amp;username=myusername&amp;amp;password=mypassword&amp;amp;pdoType=dblib&quot;
sudo vi application/controllers/IndexController.php
&lt;/pre&gt;&lt;div&gt;Be sure you include pdoType=dblib in your connection string, otherwise you got an error similar to &quot;The mssql driver is not currently installed&quot;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;Edit the indexAction() method content to test connection:&lt;br /&gt;
&lt;pre class=&quot;brush:php&quot;&gt;$db = $this-&amp;gt;getFrontController()
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-&amp;gt;getParam(&#39;bootstrap&#39;)
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-&amp;gt;getResource(&#39;db&#39;);

&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$result = $db-&amp;gt;fetchAll(&quot;SELECT * FROM myexampletable&quot;);
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var_dump($result);
&lt;/pre&gt;&lt;br /&gt;
And move your browser of choice to&amp;nbsp;http://&amp;lt;your_ip_here&amp;gt;/public/.&lt;br /&gt;
&lt;br /&gt;
You are done! Congratulations...&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://featurebug.blogspot.com/feeds/8206737027977346330/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://featurebug.blogspot.com/2011/04/linux-php-and-zend-framework-and-ms-sql.html#comment-form' title='2 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1288487704143902644/posts/default/8206737027977346330'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1288487704143902644/posts/default/8206737027977346330'/><link rel='alternate' type='text/html' href='http://featurebug.blogspot.com/2011/04/linux-php-and-zend-framework-and-ms-sql.html' title='Linux, PHP (and Zend Framework) and MS SQL Server'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1288487704143902644.post-5595619815662858087</id><published>2011-01-10T01:49:00.003+01:00</published><updated>2011-04-06T10:30:02.466+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Mac OS X"/><category scheme="http://www.blogger.com/atom/ns#" term="MSSQL"/><category scheme="http://www.blogger.com/atom/ns#" term="php"/><category scheme="http://www.blogger.com/atom/ns#" term="Zend Server"/><title type='text'>Mac OS X, PHP, Zend Server CE, FreeTDS and MS SQL</title><content type='html'>This post handles the configuration of a database connection from Mac OS X (Snow Leopard) and Microsoft SQL Server 2005/2008.&lt;br /&gt;
&lt;br /&gt;
By default, you can connect to a SQL Server from Mac OS X PHP with pdo_dblib.&lt;br /&gt;
But for my needs, i had trouble with the following points:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;troubles in correct displaying or saving of special characters like äöü in german or else in cause of UTF-8 charset and database collation&lt;/li&gt;
&lt;li&gt;differences in returning datetime values, also depending on settings for the connecting user of the database&lt;/li&gt;
&lt;li&gt;returning text and binary fields, espacially with large content&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;A solution to the first point is to add the client charset encoding to the DSN connection string:&lt;/div&gt;&lt;pre class=&quot;brush:php&quot;&gt;header(&#39;Content-Type: text/html; charset=UTF-8&#39;);
try
 {
  $dbh = new PDO(&#39;dblib:host=192.168.1.1;dbname=databasename;charset=utf8&#39;, &#39;username&#39;, &#39;password&#39;);
  echo &quot;Yeaha!&quot;;
  $stmt = $dbh-&amp;gt;prepare(&quot;SELECT column_xyz FROM table_xyz&quot;);
    $stmt-&amp;gt;execute();
    while ($row = $stmt-&amp;gt;fetch()) {
          // the returned values are UTF-8 encoded
          var_dump($row);
    }
    unset($stmt);
    unset($dbh); 
 }
 catch (PDOException $e)
 {
  die($e);
 }
&lt;/pre&gt;&lt;div&gt;To solve all points, the easiest way is to use FreeTDS via unixODBC. The following steps describe the installation and configuration.&lt;/div&gt;&lt;div&gt;Requirements:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;installed PHP Stack (e.g. Zend Server or Mac OS X own...) in latest version (5.3.3 at the moment of writing)&lt;/li&gt;
&lt;li&gt;all links and descriptions are made for Mac OS X 10.6 (Snow Leopard)&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;b&gt;1. Installing XCode&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
For the MacPorts installation we need XCode be installed. You need a registered AppleID for Apple&#39;s developer site. Grab it from the Apple developer website here&amp;nbsp;&lt;a href=&quot;https://developer.apple.com/ios/download.action?path=/ios/ios_sdk_4.2__final/xcode_3.2.5_and_ios_sdk_4.2_final.dmg&quot;&gt;Xcode 3.2.5 and iOS SDK 4.2&lt;/a&gt;. Take a coffee, its about 3.52 GB in size...&lt;br /&gt;
After downloading, just follow the instructions from the installer.&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;b&gt;2. Installing MacPorts&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
Get the MacPorts installation package from the website &lt;a href=&quot;http://distfiles.macports.org/MacPorts/MacPorts-1.9.2-10.6-SnowLeopard.dmg&quot;&gt;Macports for Snow Leopard&lt;/a&gt;&amp;nbsp;and follow the install instructions. After this, open up a Terminal session and run the selfupdate command to update the package repository.&lt;br /&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;sudo port -v selfupdate&lt;/pre&gt;If you get an error like &quot;-sh: port: command not found&quot; add the path /opt/local/bin to your PATH environment variable. edit your ~/.bash_profile file and add the line&lt;br /&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;export PATH=$PATH:/opt/local/bin&lt;/pre&gt;After you started a new shell, you are able to run the port command without giving the full path. Re-run the selfupdate command above.&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;b&gt;3. Installing unixODBC&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
Now we install the unixodbc package (with all dependencies) with&lt;br /&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;sudo port install unixodbc&lt;/pre&gt;There&#39;s nothing special here.&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;b&gt;4. Installing FreeTDS&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;u&gt;ATTENTION:&lt;/u&gt;&amp;nbsp;If you are using Zend Server (or Zend Server CE) you do not need to install FreeTDS, as Zend Server comes with it&#39;s own version. You just have to pay attention on the note in the place of your configuration files for FreeTDS.&lt;br /&gt;
&lt;br /&gt;
The next step is the installation of FreeTDS. As some MacPorts packages came along with several so called variants, we have to give the port install command the variant as parameter which we want to install&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;sudo&amp;nbsp;port install freetds +odbc +mssql&lt;/pre&gt;&lt;br /&gt;
This installs FreeTDS with unixODBC and dblib/MS SQL Server support. We can check the installation with tsql -C. This should return somwthing similiar to this:&lt;br /&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;Compile-time settings (established with the &quot;configure&quot; script)
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Version: freetds v0.82
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; freetds.conf directory: /opt/local/etc/freetds
&amp;nbsp;&amp;nbsp; &amp;nbsp; MS db-lib source compatibility: yes
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Sybase binary compatibility: no
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Thread safety: yes
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;iconv library: yes
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TDS version: 8.0
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;iODBC: no
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; unixodbc: yes
&lt;/pre&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;b&gt;5. Configure unixODBC and FreeTDS&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
The configuration needs four files. Samples of these files are installed in /opt/local/etc/.&lt;br /&gt;
&lt;br /&gt;
/opt/local/etc/odbc.ini&lt;br /&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;[MyMSSQLServer]
Driver          =       FreeTDS
Description     =       My Desription
Servername      =       MyMSSQLServer
&lt;/pre&gt;/opt/local/etc/odbcinst.ini&lt;br /&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;[FreeTDS]
Driver  = /opt/local/lib/libtdsodbc.so
&lt;/pre&gt;/opt/local/etc/freetds/freetds.conf&lt;br /&gt;
&lt;pre class=&quot;brush:shell&quot;&gt;[MyMSSQLServer]
        host = DB_SERVER_ADDRESS_OR_NAME
        port = PORT
        tds version = 8.0
        encryption = request
        client charset = UTF-8
        text size = 2147483647
&lt;/pre&gt;/opt/local/etc/freetds/locales.conf&lt;br /&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;[default]
    date format = %Y-%m-%d %H:%M:%S.%z

[de_DE]
    date format = %Y-%m-%d %H:%M:%S
    language = Deutsch
&lt;/pre&gt;&lt;u&gt;ATTENTION:&lt;/u&gt;&amp;nbsp;For Zend Server (and Zend Server CE) you have to save or better link your freetds.conf and locales.conf configuration files to the zend etc directory in /usr/local/zend/etc/.&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;b&gt;6. Testing connection&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
We testing the connection to a sample database as configured above with the installed unixODBC tools isql and with PHP after this.&lt;br /&gt;
&lt;br /&gt;
Testing with tsql:&lt;br /&gt;
On Mac OS X, you sometimes need to set your LC_ALL environment variable. On a new, fresh installed system on another installation i do not need to set this. Attention, FreeTDS needs UTF-8 in uppercase letters. A sign to this is when getting 20017 and 20002 errors in your tsql command.&lt;br /&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;export LC_ALL=&quot;de_DE.UTF-8&quot;&lt;/pre&gt;Testing the connection:&lt;br /&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;tsql -S MyMSSQLServer -U username -P password&lt;/pre&gt;Testing with PHP:&lt;br /&gt;
Change line no 4 from the first code snippet on this site with the following&lt;br /&gt;
&lt;pre class=&quot;brush:php&quot;&gt;$dbh = new PDO(&#39;dblib:host=MyMSSQLServer&#39;, &#39;username&#39;, &#39;password&#39;);
&lt;/pre&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://featurebug.blogspot.com/feeds/5595619815662858087/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://featurebug.blogspot.com/2011/01/mac-os-x-php-zend-server-ce-freetds-and.html#comment-form' title='1 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1288487704143902644/posts/default/5595619815662858087'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1288487704143902644/posts/default/5595619815662858087'/><link rel='alternate' type='text/html' href='http://featurebug.blogspot.com/2011/01/mac-os-x-php-zend-server-ce-freetds-and.html' title='Mac OS X, PHP, Zend Server CE, FreeTDS and MS SQL'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1288487704143902644.post-8416441201428598460</id><published>2011-01-07T04:21:00.002+01:00</published><updated>2011-01-07T04:34:03.143+01:00</updated><title type='text'>Test</title><content type='html'>some code....&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:php&quot;&gt;phpinfo();
&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://featurebug.blogspot.com/feeds/8416441201428598460/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://featurebug.blogspot.com/2011/01/test.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1288487704143902644/posts/default/8416441201428598460'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1288487704143902644/posts/default/8416441201428598460'/><link rel='alternate' type='text/html' href='http://featurebug.blogspot.com/2011/01/test.html' title='Test'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>