<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" 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" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;DU4FQH09fCp7ImA9WhFSFEs.&quot;"><id>tag:blogger.com,1999:blog-5231362252682280672</id><updated>2013-06-17T04:18:31.364-07:00</updated><category term="linux" /><category term="open source time tracking" /><category term="zend server" /><category term="continuous integration" /><category term="basecamp alternatives" /><category term="phing" /><category term="weird error messages" /><category term="php" /><category term="basecamp replacement" /><category term="jenkins" /><category term="phpunit" /><category term="web development" /><category term="putty" /><category term="ubuntu" /><category term="open source" /><category term="open source project tracking" /><category term="zend framework development" /><category term="openssh" /><title>WebDevbyJoss</title><subtitle type="html">PHP, MySQL, Drupal, Zend Framework, Linux, Android</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://webdevbyjoss.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://webdevbyjoss.blogspot.com/" /><author><name>Joseph Chereshnovsky</name><uri>https://plus.google.com/101487751140981792213</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-6aAbwv6np0E/AAAAAAAAAAI/AAAAAAAAIYc/Ya36ki4WbVo/s512-c/photo.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>18</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/blogspot/crXmp" /><feedburner:info uri="blogspot/crxmp" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;CkEHR3c7fCp7ImA9WhJaGEs.&quot;"><id>tag:blogger.com,1999:blog-5231362252682280672.post-630821086479703609</id><published>2012-10-10T02:17:00.001-07:00</published><updated>2012-10-10T02:17:16.904-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-10-10T02:17:16.904-07:00</app:edited><title>PHP Copy and Paste detection tool installation</title><summary type="html">
In order to install it you will need to:

1. Upgrade to latest PHPUnit 3.7
2. Install https://github.com/theseer/fDOMDocument (see instructions inside)
3. Install https://github.com/sebastianbergmann/phpcpd (see instructions inside)

Then you can run it like:

$ phpcpd /path/to/project/directory

You will see the copy&amp;amp;paste report:


Found 3 exact clones with 53 duplicated lines in 5 files:

  -&lt;img src="http://feeds.feedburner.com/~r/blogspot/crXmp/~4/fk5i1RdDehQ" height="1" width="1"/&gt;</summary><link rel="replies" type="application/atom+xml" href="http://webdevbyjoss.blogspot.com/feeds/630821086479703609/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://webdevbyjoss.blogspot.com/2012/10/php-copy-and-paste-detection-tool.html#comment-form" title="14 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5231362252682280672/posts/default/630821086479703609?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5231362252682280672/posts/default/630821086479703609?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/crXmp/~3/fk5i1RdDehQ/php-copy-and-paste-detection-tool.html" title="PHP Copy and Paste detection tool installation" /><author><name>Joseph Chereshnovsky</name><uri>https://plus.google.com/101487751140981792213</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-6aAbwv6np0E/AAAAAAAAAAI/AAAAAAAAIYc/Ya36ki4WbVo/s512-c/photo.jpg" /></author><thr:total>14</thr:total><feedburner:origLink>http://webdevbyjoss.blogspot.com/2012/10/php-copy-and-paste-detection-tool.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A04AQnw8fCp7ImA9WhVaE0k.&quot;"><id>tag:blogger.com,1999:blog-5231362252682280672.post-7733617337184631072</id><published>2012-06-10T10:39:00.000-07:00</published><updated>2012-06-10T10:39:03.274-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-06-10T10:39:03.274-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="jenkins" /><category scheme="http://www.blogger.com/atom/ns#" term="phing" /><category scheme="http://www.blogger.com/atom/ns#" term="php" /><category scheme="http://www.blogger.com/atom/ns#" term="phpunit" /><category scheme="http://www.blogger.com/atom/ns#" term="continuous integration" /><title>Easy start with Jenkins for PHP developer</title><summary type="html">


Lets look into the quick and minimal Jenkins setup for middle sized fast growing PHP project.
In order to easy follow this article you should at least:

have PEAR installed on server
use phpUnit for unit tests
build your app with Phing




Install Jenkins according to the operation system you have.


On my Ubuntu 12.04 LTS its only four CLI commands:

# wget -q -O - http://pkg.jenkins-ci.org/&lt;img src="http://feeds.feedburner.com/~r/blogspot/crXmp/~4/ee1Ur1pCOdw" height="1" width="1"/&gt;</summary><link rel="replies" type="application/atom+xml" href="http://webdevbyjoss.blogspot.com/feeds/7733617337184631072/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://webdevbyjoss.blogspot.com/2012/06/easy-start-with-jenkins-for-php.html#comment-form" title="11 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5231362252682280672/posts/default/7733617337184631072?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5231362252682280672/posts/default/7733617337184631072?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/crXmp/~3/ee1Ur1pCOdw/easy-start-with-jenkins-for-php.html" title="Easy start with Jenkins for PHP developer" /><author><name>Joseph Chereshnovsky</name><uri>https://plus.google.com/101487751140981792213</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-6aAbwv6np0E/AAAAAAAAAAI/AAAAAAAAIYc/Ya36ki4WbVo/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-XLdaT02yadA/T9TGBU6qVKI/AAAAAAAAHLI/QXfHSWSKaWM/s72-c/1.png" height="72" width="72" /><thr:total>11</thr:total><feedburner:origLink>http://webdevbyjoss.blogspot.com/2012/06/easy-start-with-jenkins-for-php.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk8HRHkzfSp7ImA9WhVUEUs.&quot;"><id>tag:blogger.com,1999:blog-5231362252682280672.post-1922422524790223043</id><published>2012-05-16T03:40:00.000-07:00</published><updated>2012-05-16T03:40:35.785-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-05-16T03:40:35.785-07:00</app:edited><title>Drupal produces warnings with file_check_directory() on low bootstrap levels</title><summary type="html">
I've found interesting issue with file_check_directory() in Drupal. It generates errors like:

Warning: array_key_exists() [function.array-key-exists]: The second argument should be either an array or an object in /.../public_html/includes/module.inc on line 245


With back trace like:
30.06424656960 file_check_directory( )../mycustom-script.php:90
40.06434657840 t( )../file.inc:114
&lt;img src="http://feeds.feedburner.com/~r/blogspot/crXmp/~4/XCCJnO31YlM" height="1" width="1"/&gt;</summary><link rel="replies" type="application/atom+xml" href="http://webdevbyjoss.blogspot.com/feeds/1922422524790223043/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://webdevbyjoss.blogspot.com/2012/05/drupal-produces-warnings-with.html#comment-form" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5231362252682280672/posts/default/1922422524790223043?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5231362252682280672/posts/default/1922422524790223043?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/crXmp/~3/XCCJnO31YlM/drupal-produces-warnings-with.html" title="Drupal produces warnings with file_check_directory() on low bootstrap levels" /><author><name>Joseph Chereshnovsky</name><uri>https://plus.google.com/101487751140981792213</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-6aAbwv6np0E/AAAAAAAAAAI/AAAAAAAAIYc/Ya36ki4WbVo/s512-c/photo.jpg" /></author><thr:total>4</thr:total><feedburner:origLink>http://webdevbyjoss.blogspot.com/2012/05/drupal-produces-warnings-with.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck4MRXc_fSp7ImA9WhVQF08.&quot;"><id>tag:blogger.com,1999:blog-5231362252682280672.post-7314074011669148416</id><published>2012-04-06T07:03:00.001-07:00</published><updated>2012-04-06T07:03:04.945-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-04-06T07:03:04.945-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="openssh" /><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><category scheme="http://www.blogger.com/atom/ns#" term="putty" /><title>Convert OpenSSH keys to Putty on Linux with puttygen</title><summary type="html">If you need a Putty ppk key on Linux when you don't have Windows installation, for example when using Windows application that requires ppk-key under Wine. You can use "puttygen" CLI tool in that case.

On Ubuntu:

# apt-get install putty-tools

$ cd ~/.ssh/
$ puttygen id_dsa -o id_dsa.ppk

Make sure you've replaced the "id_dsa" with your private key filename.

Profit!&lt;img src="http://feeds.feedburner.com/~r/blogspot/crXmp/~4/TfrdP1pth_A" height="1" width="1"/&gt;</summary><link rel="replies" type="application/atom+xml" href="http://webdevbyjoss.blogspot.com/feeds/7314074011669148416/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://webdevbyjoss.blogspot.com/2012/04/convert-openssh-keys-to-putty-on-linux.html#comment-form" title="12 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5231362252682280672/posts/default/7314074011669148416?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5231362252682280672/posts/default/7314074011669148416?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/crXmp/~3/TfrdP1pth_A/convert-openssh-keys-to-putty-on-linux.html" title="Convert OpenSSH keys to Putty on Linux with puttygen" /><author><name>Joseph Chereshnovsky</name><uri>https://plus.google.com/101487751140981792213</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-6aAbwv6np0E/AAAAAAAAAAI/AAAAAAAAIYc/Ya36ki4WbVo/s512-c/photo.jpg" /></author><thr:total>12</thr:total><feedburner:origLink>http://webdevbyjoss.blogspot.com/2012/04/convert-openssh-keys-to-putty-on-linux.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE8FRHs7fip7ImA9WhRbF0U.&quot;"><id>tag:blogger.com,1999:blog-5231362252682280672.post-3466660811914556737</id><published>2012-02-09T02:08:00.000-08:00</published><updated>2012-02-09T02:20:15.506-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-09T02:20:15.506-08:00</app:edited><title>Xdebug PHP scipts profiling examples</title><summary type="html">

Look at this presentation to become familiar with PHP profiling:

http://www.slideshare.net/samkeen/profiling-php-with-xdebug-webgrind

And also look into this article for more details:


http://devzone.zend.com/article/2899

Edit PHP.ini and add the line:

xdebug.profiler_enable = 1

Restart the Apache and you will find the profiling dumps in /tmp/ .



The format of those files is "Cachegrind&lt;img src="http://feeds.feedburner.com/~r/blogspot/crXmp/~4/5dg786I5XZg" height="1" width="1"/&gt;</summary><link rel="replies" type="application/atom+xml" href="http://webdevbyjoss.blogspot.com/feeds/3466660811914556737/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://webdevbyjoss.blogspot.com/2012/02/some-tricks-of-php-scipts-profiling.html#comment-form" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5231362252682280672/posts/default/3466660811914556737?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5231362252682280672/posts/default/3466660811914556737?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/crXmp/~3/5dg786I5XZg/some-tricks-of-php-scipts-profiling.html" title="Xdebug PHP scipts profiling examples" /><author><name>Joseph Chereshnovsky</name><uri>https://plus.google.com/101487751140981792213</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-6aAbwv6np0E/AAAAAAAAAAI/AAAAAAAAIYc/Ya36ki4WbVo/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-iYwEyFb9XZU/TvIVXgkGAjI/AAAAAAAAF_c/mWvDgBBpyq4/s72-c/profiling-1.png" height="72" width="72" /><thr:total>5</thr:total><feedburner:origLink>http://webdevbyjoss.blogspot.com/2012/02/some-tricks-of-php-scipts-profiling.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEMBQ348cCp7ImA9WhRbF0U.&quot;"><id>tag:blogger.com,1999:blog-5231362252682280672.post-2468637668216885836</id><published>2012-02-09T02:06:00.001-08:00</published><updated>2012-02-09T02:14:12.078-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-09T02:14:12.078-08:00</app:edited><title>PHP debug process internals with xdebug</title><summary type="html">



Xdebug debugger allows you to interactively walk through script execution and inspect the call traces and variable values in each appropriate scope.











Debugger client listens on 9000 port by default. Browser initiates regular HTTP request to 80 port indicating that debug session should be started (by parameter in request URI or cookie) . Debugger starts the debug session and connects&lt;img src="http://feeds.feedburner.com/~r/blogspot/crXmp/~4/Hb6tTwEhZKA" height="1" width="1"/&gt;</summary><link rel="replies" type="application/atom+xml" href="http://webdevbyjoss.blogspot.com/feeds/2468637668216885836/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://webdevbyjoss.blogspot.com/2012/02/php-debug-process-internals-with-xdebug.html#comment-form" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5231362252682280672/posts/default/2468637668216885836?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5231362252682280672/posts/default/2468637668216885836?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/crXmp/~3/Hb6tTwEhZKA/php-debug-process-internals-with-xdebug.html" title="PHP debug process internals with xdebug" /><author><name>Joseph Chereshnovsky</name><uri>https://plus.google.com/101487751140981792213</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-6aAbwv6np0E/AAAAAAAAAAI/AAAAAAAAIYc/Ya36ki4WbVo/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-Ep--k8aGt4c/TvHG-ogGSOI/AAAAAAAAF_U/R_JLE8em-P0/s72-c/how-xdebugger-works.png" height="72" width="72" /><thr:total>4</thr:total><feedburner:origLink>http://webdevbyjoss.blogspot.com/2012/02/php-debug-process-internals-with-xdebug.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEMAQHs6cCp7ImA9WhRbF0U.&quot;"><id>tag:blogger.com,1999:blog-5231362252682280672.post-4984933277816539172</id><published>2012-02-09T02:05:00.000-08:00</published><updated>2012-02-09T02:14:01.518-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-09T02:14:01.518-08:00</app:edited><title>Why install xdebug?</title><summary type="html">
Even without actual integration with your IDE you are able to get benefit from xdebug on your development machine:




overloads var_dump() and beautifies the output






turn off "@" operator
track headers that are already send by script with header() function
xdebug_debug_zval() dumps variables information like ref status &amp;amp; ref counts






provides stack traces







provides execution / &lt;img src="http://feeds.feedburner.com/~r/blogspot/crXmp/~4/-IwOOHmUzU8" height="1" width="1"/&gt;</summary><link rel="replies" type="application/atom+xml" href="http://webdevbyjoss.blogspot.com/feeds/4984933277816539172/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://webdevbyjoss.blogspot.com/2012/02/why-install-xdebug.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5231362252682280672/posts/default/4984933277816539172?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5231362252682280672/posts/default/4984933277816539172?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/crXmp/~3/-IwOOHmUzU8/why-install-xdebug.html" title="Why install xdebug?" /><author><name>Joseph Chereshnovsky</name><uri>https://plus.google.com/101487751140981792213</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-6aAbwv6np0E/AAAAAAAAAAI/AAAAAAAAIYc/Ya36ki4WbVo/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-IY5DaNiOB_s/TvG85y_hmQI/AAAAAAAAF-0/5WiU89MO0EE/s72-c/xdebug.png" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://webdevbyjoss.blogspot.com/2012/02/why-install-xdebug.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE8NQn0zeip7ImA9WhRbF0U.&quot;"><id>tag:blogger.com,1999:blog-5231362252682280672.post-5445232326520876480</id><published>2011-12-21T11:06:00.000-08:00</published><updated>2012-02-09T02:21:33.382-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-09T02:21:33.382-08:00</app:edited><title>PHP debug &amp; profiling for dummies</title><summary type="html">Sometimes very basic debug can be done by dumping the values of variables. The other method is about writing debug values into log files. Such approaches are hard to be successfully used on large sophisticated projects like Drupal or Magento. In such case the best solution is to use the debugger and debug your code via step by step code execution, back traces, breakpoints, variables scope &lt;img src="http://feeds.feedburner.com/~r/blogspot/crXmp/~4/kXYMxgeV0gA" height="1" width="1"/&gt;</summary><link rel="replies" type="application/atom+xml" href="http://webdevbyjoss.blogspot.com/feeds/5445232326520876480/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://webdevbyjoss.blogspot.com/2011/12/php-debug-profiling-for-dummies.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5231362252682280672/posts/default/5445232326520876480?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5231362252682280672/posts/default/5445232326520876480?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/crXmp/~3/kXYMxgeV0gA/php-debug-profiling-for-dummies.html" title="PHP debug &amp; profiling for dummies" /><author><name>Joseph Chereshnovsky</name><uri>https://plus.google.com/101487751140981792213</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-6aAbwv6np0E/AAAAAAAAAAI/AAAAAAAAIYc/Ya36ki4WbVo/s512-c/photo.jpg" /></author><thr:total>3</thr:total><feedburner:origLink>http://webdevbyjoss.blogspot.com/2011/12/php-debug-profiling-for-dummies.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE4CQXw9eip7ImA9WhdaGU0.&quot;"><id>tag:blogger.com,1999:blog-5231362252682280672.post-8323336991357052068</id><published>2011-10-29T09:49:00.000-07:00</published><updated>2011-10-29T09:49:20.262-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-29T09:49:20.262-07:00</app:edited><title>Simplest solution to enable PHP mail() function under Ubuntu</title><summary type="html">If PHP mail() function doesn't works on your development desktop and your Apache error log shows something like "sh: /usr/sbin/sendmail: not found" - then you obviously need to install "sendmail" in order to fix that :)

Just run the following command in Ubuntu:

# apt-get install sendmail

To configure Sendmail for your needs use (see appropriate configuration scripts in output):
 
# &lt;img src="http://feeds.feedburner.com/~r/blogspot/crXmp/~4/_rf-5hs8Rl4" height="1" width="1"/&gt;</summary><link rel="replies" type="application/atom+xml" href="http://webdevbyjoss.blogspot.com/feeds/8323336991357052068/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://webdevbyjoss.blogspot.com/2011/10/simplest-solution-to-enable-php-mail.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5231362252682280672/posts/default/8323336991357052068?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5231362252682280672/posts/default/8323336991357052068?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/crXmp/~3/_rf-5hs8Rl4/simplest-solution-to-enable-php-mail.html" title="Simplest solution to enable PHP mail() function under Ubuntu" /><author><name>Joseph Chereshnovsky</name><uri>https://plus.google.com/101487751140981792213</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-6aAbwv6np0E/AAAAAAAAAAI/AAAAAAAAIYc/Ya36ki4WbVo/s512-c/photo.jpg" /></author><thr:total>3</thr:total><feedburner:origLink>http://webdevbyjoss.blogspot.com/2011/10/simplest-solution-to-enable-php-mail.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0cCQHw9eip7ImA9WhdQFE0.&quot;"><id>tag:blogger.com,1999:blog-5231362252682280672.post-943704797776256888</id><published>2011-08-14T22:29:00.000-07:00</published><updated>2011-08-15T02:37:41.262-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-15T02:37:41.262-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="open source" /><category scheme="http://www.blogger.com/atom/ns#" term="web development" /><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu" /><title>Preparing Ubuntu Linux desktop for web development</title><summary type="html">There are a lot of articles on the Internet about configuring Ubuntu desktop for web developer. I'm using Ubuntu for 3 years already as my working desktop station for web development and want to share my own list of software each web developer should have. So here is just another guide to prepare Ubuntu powered desktop for web development.


OS Installation
Ubuntu is an easy to use operating &lt;img src="http://feeds.feedburner.com/~r/blogspot/crXmp/~4/ikIpU2WNcXU" height="1" width="1"/&gt;</summary><link rel="replies" type="application/atom+xml" href="http://webdevbyjoss.blogspot.com/feeds/943704797776256888/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://webdevbyjoss.blogspot.com/2011/08/preparing-ubuntu-linux-desktop-for-web.html#comment-form" title="141 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5231362252682280672/posts/default/943704797776256888?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5231362252682280672/posts/default/943704797776256888?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/crXmp/~3/ikIpU2WNcXU/preparing-ubuntu-linux-desktop-for-web.html" title="Preparing Ubuntu Linux desktop for web development" /><author><name>Joseph Chereshnovsky</name><uri>https://plus.google.com/101487751140981792213</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-6aAbwv6np0E/AAAAAAAAAAI/AAAAAAAAIYc/Ya36ki4WbVo/s512-c/photo.jpg" /></author><thr:total>141</thr:total><feedburner:origLink>http://webdevbyjoss.blogspot.com/2011/08/preparing-ubuntu-linux-desktop-for-web.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D04GSHk_fyp7ImA9Wx9aGEk.&quot;"><id>tag:blogger.com,1999:blog-5231362252682280672.post-2609402393863410508</id><published>2011-03-11T04:14:00.000-08:00</published><updated>2011-03-11T04:18:49.747-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-11T04:18:49.747-08:00</app:edited><title>Merge two collections in Magento</title><summary type="html">Searched for the way to merge two Magento collections. Here is the interesting approach I've figured out. We can extract SELECT object from both collections and then use UNION to merge the results of these collections.

$selectFoo = Mage::getResourceModel('model/foo')-&amp;gt;getSelect();
$selectBar= Mage::getResourceModel('model/bar')-&amp;gt;getSelect();

$mergedFooBar = $selectFoo-&amp;gt;union(array($selectBar));&lt;img src="http://feeds.feedburner.com/~r/blogspot/crXmp/~4/KI6ZA-mFu2c" height="1" width="1"/&gt;</summary><link rel="replies" type="application/atom+xml" href="http://webdevbyjoss.blogspot.com/feeds/2609402393863410508/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://webdevbyjoss.blogspot.com/2011/03/merge-two-collections-in-magento.html#comment-form" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5231362252682280672/posts/default/2609402393863410508?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5231362252682280672/posts/default/2609402393863410508?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/crXmp/~3/KI6ZA-mFu2c/merge-two-collections-in-magento.html" title="Merge two collections in Magento" /><author><name>Joseph Chereshnovsky</name><uri>https://plus.google.com/101487751140981792213</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-6aAbwv6np0E/AAAAAAAAAAI/AAAAAAAAIYc/Ya36ki4WbVo/s512-c/photo.jpg" /></author><thr:total>4</thr:total><feedburner:origLink>http://webdevbyjoss.blogspot.com/2011/03/merge-two-collections-in-magento.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0AMQX8ycSp7ImA9Wx9aFUQ.&quot;"><id>tag:blogger.com,1999:blog-5231362252682280672.post-5632261315440757203</id><published>2011-03-08T06:17:00.000-08:00</published><updated>2011-03-08T07:56:20.199-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-08T07:56:20.199-08:00</app:edited><title>What if Zend_File_Transfer_Adapter_Http receive() returns false?</title><summary type="html">I wasn't able to locale comprehensive information about  Zend_File_Transfer_Adapter_Http in Zend Framework documentation during couple hours of debug and digging into Google results. So when I've finally figured out everything then decided to share my experience with others and also have a little note for my self about the architecture of this component.

What to do if code example from &lt;img src="http://feeds.feedburner.com/~r/blogspot/crXmp/~4/0LDBdBFeXn8" height="1" width="1"/&gt;</summary><link rel="replies" type="application/atom+xml" href="http://webdevbyjoss.blogspot.com/feeds/5632261315440757203/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://webdevbyjoss.blogspot.com/2011/03/what-if-zendfiletransferadapterhttp.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5231362252682280672/posts/default/5632261315440757203?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5231362252682280672/posts/default/5632261315440757203?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/crXmp/~3/0LDBdBFeXn8/what-if-zendfiletransferadapterhttp.html" title="What if Zend_File_Transfer_Adapter_Http receive() returns false?" /><author><name>Joseph Chereshnovsky</name><uri>https://plus.google.com/101487751140981792213</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-6aAbwv6np0E/AAAAAAAAAAI/AAAAAAAAIYc/Ya36ki4WbVo/s512-c/photo.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://webdevbyjoss.blogspot.com/2011/03/what-if-zendfiletransferadapterhttp.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0AFQng7eSp7ImA9Wx9QEE8.&quot;"><id>tag:blogger.com,1999:blog-5231362252682280672.post-6510861811741865869</id><published>2010-12-21T12:52:00.000-08:00</published><updated>2010-12-22T06:55:13.601-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-22T06:55:13.601-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="open source project tracking" /><category scheme="http://www.blogger.com/atom/ns#" term="basecamp replacement" /><category scheme="http://www.blogger.com/atom/ns#" term="open source time tracking" /><category scheme="http://www.blogger.com/atom/ns#" term="basecamp alternatives" /><title>Project tracking open source Basecamp-like solutions</title><summary type="html">Once upon a time I've asked people on LinkedIn about collaboration software they prefer to manage their business and received a lot of interesting options that were optimal for different needs.

But I have my own specific needs, so decided to try only those that meets the following requirements:
Open source - to be able to customise the system for our own needs
Free of charge - I'm starting new &lt;img src="http://feeds.feedburner.com/~r/blogspot/crXmp/~4/7xSgs9Ym25s" height="1" width="1"/&gt;</summary><link rel="replies" type="application/atom+xml" href="http://webdevbyjoss.blogspot.com/feeds/6510861811741865869/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://webdevbyjoss.blogspot.com/2010/12/project-tracking-open-source-basecamp.html#comment-form" title="21 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5231362252682280672/posts/default/6510861811741865869?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5231362252682280672/posts/default/6510861811741865869?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/crXmp/~3/7xSgs9Ym25s/project-tracking-open-source-basecamp.html" title="Project tracking open source Basecamp-like solutions" /><author><name>Joseph Chereshnovsky</name><uri>https://plus.google.com/101487751140981792213</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-6aAbwv6np0E/AAAAAAAAAAI/AAAAAAAAIYc/Ya36ki4WbVo/s512-c/photo.jpg" /></author><thr:total>21</thr:total><feedburner:origLink>http://webdevbyjoss.blogspot.com/2010/12/project-tracking-open-source-basecamp.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkEDQnk6fCp7ImA9Wx9aGEk.&quot;"><id>tag:blogger.com,1999:blog-5231362252682280672.post-1877724104782034498</id><published>2010-11-24T19:12:00.000-08:00</published><updated>2011-03-11T05:04:33.714-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-11T05:04:33.714-08:00</app:edited><title>ZFConf Ukraine 2010 + MageConf Ukraine 2010</title><summary type="html"> I'm glad to share the information according upcoming greatest web-development event in Eastern Europe. This time we will have double-conference: ZFConf Ukraine 2010 + MageConf Ukraine 2010 that will occur at 27 Nov 2010 in Kyiv, Ukraine.



ZFConf Ukraine is the first Ukrainian Zend Framework conference prepared alongside with ZFConf Russia and the zendframework.ru community.

Three different &lt;img src="http://feeds.feedburner.com/~r/blogspot/crXmp/~4/FZs_YJZV7co" height="1" width="1"/&gt;</summary><link rel="replies" type="application/atom+xml" href="http://webdevbyjoss.blogspot.com/feeds/1877724104782034498/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://webdevbyjoss.blogspot.com/2010/11/zfconf-ukraine-2010-mageconf-ukraine.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5231362252682280672/posts/default/1877724104782034498?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5231362252682280672/posts/default/1877724104782034498?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/crXmp/~3/FZs_YJZV7co/zfconf-ukraine-2010-mageconf-ukraine.html" title="ZFConf Ukraine 2010 + MageConf Ukraine 2010" /><author><name>Joseph Chereshnovsky</name><uri>https://plus.google.com/101487751140981792213</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-6aAbwv6np0E/AAAAAAAAAAI/AAAAAAAAIYc/Ya36ki4WbVo/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://webdevbyjoss.blogspot.com/2010/11/zfconf-ukraine-2010-mageconf-ukraine.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEYHQ34_eyp7ImA9Wx5VFEo.&quot;"><id>tag:blogger.com,1999:blog-5231362252682280672.post-3065017109200943419</id><published>2010-10-07T10:16:00.000-07:00</published><updated>2010-10-07T10:22:12.043-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-07T10:22:12.043-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="weird error messages" /><category scheme="http://www.blogger.com/atom/ns#" term="php" /><title>T_PAAMAYIM_NEKUDOTAYIM error message in PHP</title><summary type="html">I had a trivial task a while ago - to call static method when class name defined dynamically via variable. There were no any need to instantiate class instance to do a simple check if provided class is suitable to work with the current data. So I decided to create a static method that will process a simple check before class instance will be even instantiated.

foreach ($dirDataDrivers as $&lt;img src="http://feeds.feedburner.com/~r/blogspot/crXmp/~4/6rgXfMPpPNs" height="1" width="1"/&gt;</summary><link rel="replies" type="application/atom+xml" href="http://webdevbyjoss.blogspot.com/feeds/3065017109200943419/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://webdevbyjoss.blogspot.com/2010/10/tpaamayimnekudotayim-error-message-in.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5231362252682280672/posts/default/3065017109200943419?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5231362252682280672/posts/default/3065017109200943419?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/crXmp/~3/6rgXfMPpPNs/tpaamayimnekudotayim-error-message-in.html" title="T_PAAMAYIM_NEKUDOTAYIM error message in PHP" /><author><name>Joseph Chereshnovsky</name><uri>https://plus.google.com/101487751140981792213</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-6aAbwv6np0E/AAAAAAAAAAI/AAAAAAAAIYc/Ya36ki4WbVo/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://webdevbyjoss.blogspot.com/2010/10/tpaamayimnekudotayim-error-message-in.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkEERX8-fip7ImA9WhZXGUo.&quot;"><id>tag:blogger.com,1999:blog-5231362252682280672.post-821252196453820368</id><published>2010-09-25T09:16:00.000-07:00</published><updated>2011-05-09T13:56:44.156-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-09T13:56:44.156-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="zend framework development" /><title>Running Zend Framework From CLI</title><summary type="html">My aim was to crate an easy and simple way of running ZF MVC from command line. Solution should be able to run with any existent application, based on ZF version 1.8 or higher.

You should follow the standard zend framework directory placement structure to create your project or use any existent project that follows this structure in order to easy apply all direction from this post.


Create a &lt;img src="http://feeds.feedburner.com/~r/blogspot/crXmp/~4/8fjv22uA3ys" height="1" width="1"/&gt;</summary><link rel="replies" type="application/atom+xml" href="http://webdevbyjoss.blogspot.com/feeds/821252196453820368/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://webdevbyjoss.blogspot.com/2010/09/running-zend-framework-application-from.html#comment-form" title="27 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5231362252682280672/posts/default/821252196453820368?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5231362252682280672/posts/default/821252196453820368?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/crXmp/~3/8fjv22uA3ys/running-zend-framework-application-from.html" title="Running Zend Framework From CLI" /><author><name>Joseph Chereshnovsky</name><uri>https://plus.google.com/101487751140981792213</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-6aAbwv6np0E/AAAAAAAAAAI/AAAAAAAAIYc/Ya36ki4WbVo/s512-c/photo.jpg" /></author><thr:total>27</thr:total><feedburner:origLink>http://webdevbyjoss.blogspot.com/2010/09/running-zend-framework-application-from.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUcBRng8eSp7ImA9Wx5WFUU.&quot;"><id>tag:blogger.com,1999:blog-5231362252682280672.post-6510369652867045143</id><published>2009-03-23T10:27:00.000-07:00</published><updated>2010-09-27T04:30:57.671-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-27T04:30:57.671-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="zend server" /><category scheme="http://www.blogger.com/atom/ns#" term="zend framework development" /><title>Zend Server tips and tricks</title><summary type="html">Zend Server is a “ready to use” development solution for PHP and Zend Framework developers. It includes Apache + PHP + Zend Optimizer + Zend Debug with Zend Studio debugging integration + Zend Framework pre-installed + some additional staff. Distribution is available for Windows (XP, Vista, 2003, 2008 Servers), Linux (Tarball, RPM, DEB) and Mac OS X.



In August 2008 I've joined the project with&lt;img src="http://feeds.feedburner.com/~r/blogspot/crXmp/~4/GQ6GnYV7VM0" height="1" width="1"/&gt;</summary><link rel="replies" type="application/atom+xml" href="http://webdevbyjoss.blogspot.com/feeds/6510369652867045143/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://webdevbyjoss.blogspot.com/2009/02/zend-server-tips-and-tricks.html#comment-form" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5231362252682280672/posts/default/6510369652867045143?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5231362252682280672/posts/default/6510369652867045143?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/crXmp/~3/GQ6GnYV7VM0/zend-server-tips-and-tricks.html" title="Zend Server tips and tricks" /><author><name>Joseph Chereshnovsky</name><uri>https://plus.google.com/101487751140981792213</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-6aAbwv6np0E/AAAAAAAAAAI/AAAAAAAAIYc/Ya36ki4WbVo/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/_wflmhYIFzsI/SaLqm3irocI/AAAAAAAAAuA/OF14fOFXu54/s72-c/image_thumb1.png?imgmax=800" height="72" width="72" /><thr:total>5</thr:total><feedburner:origLink>http://webdevbyjoss.blogspot.com/2009/02/zend-server-tips-and-tricks.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE4AR387eCp7ImA9WxJRFks.&quot;"><id>tag:blogger.com,1999:blog-5231362252682280672.post-8468259962196906881</id><published>2007-06-27T07:46:00.000-07:00</published><updated>2009-05-18T10:15:46.100-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-18T10:15:46.100-07:00</app:edited><title>Hi! Hello! Welcome!</title><summary type="html">Hey, visitor  This is the first post to my web development blog. I think this blog will be interested for people that have the same interests that I have. See you soon...  Joseph&lt;img src="http://feeds.feedburner.com/~r/blogspot/crXmp/~4/J3kybJHURIg" height="1" width="1"/&gt;</summary><link rel="replies" type="application/atom+xml" href="http://webdevbyjoss.blogspot.com/feeds/8468259962196906881/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://webdevbyjoss.blogspot.com/2007/06/hi-hello-welcome.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5231362252682280672/posts/default/8468259962196906881?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5231362252682280672/posts/default/8468259962196906881?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/crXmp/~3/J3kybJHURIg/hi-hello-welcome.html" title="Hi! Hello! Welcome!" /><author><name>Joseph Chereshnovsky</name><uri>https://plus.google.com/101487751140981792213</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-6aAbwv6np0E/AAAAAAAAAAI/AAAAAAAAIYc/Ya36ki4WbVo/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://webdevbyjoss.blogspot.com/2007/06/hi-hello-welcome.html</feedburner:origLink></entry></feed>
