<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

  <title><![CDATA[Onur Özgür ÖZKAN]]></title>
  <link href="http://onurozgurozkan.github.com/atom.xml" rel="self"/>
  <link href="http://onurozgurozkan.github.com/"/>
  <updated>2011-12-19T23:43:03+02:00</updated>
  <id>http://onurozgurozkan.github.com/</id>
  <author>
    <name><![CDATA[Onur Özgür ÖZKAN]]></name>
    
  </author>
  <generator uri="http://octopress.org/">Octopress</generator>

  
  <entry>
    <title type="html"><![CDATA[Zen coding for gedit]]></title>
    <link href="http://onurozgurozkan.github.com/blog/2011/12/19/zen-coding-for-gedit/"/>
    <updated>2011-12-19T22:21:00+02:00</updated>
    <id>http://onurozgurozkan.github.com/blog/2011/12/19/zen-coding-for-gedit</id>
    <content type="html"><![CDATA[<p>Zen Coding is powerful abbreviation engine which allows you to expand expressions into HTML code. The hint of zen coding is using css selectors to generate code which is pretty cool like access the dom elements.</p>

<!--more-->


<p><em>For example</em></p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class='css'><span class='line'><span class="nt">div</span><span class="nf">#page</span><span class="o">&gt;</span><span class="nt">div</span><span class="nc">.logo</span><span class="o">+</span><span class="nt">ul</span><span class="nf">#navigation</span><span class="o">&gt;</span><span class="nt">li</span><span class="o">*</span><span class="nt">5</span><span class="o">&gt;</span><span class="nt">a</span>
</span></code></pre></td></tr></table></div></figure>


<p>can be expanded into:</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
</pre></td><td class='code'><pre><code class='html'><span class='line'><span class="nt">&lt;div</span> <span class="na">id=</span><span class="s">&quot;page&quot;</span><span class="nt">&gt;</span>
</span><span class='line'>  <span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">&quot;logo&quot;</span><span class="nt">&gt;&lt;/div&gt;</span>
</span><span class='line'>  <span class="nt">&lt;ul</span> <span class="na">id=</span><span class="s">&quot;navigation&quot;</span><span class="nt">&gt;</span>
</span><span class='line'>      <span class="nt">&lt;li&gt;&lt;a</span> <span class="na">href=</span><span class="s">&quot;&quot;</span><span class="nt">&gt;&lt;/a&gt;&lt;/li&gt;</span>
</span><span class='line'>      <span class="nt">&lt;li&gt;&lt;a</span> <span class="na">href=</span><span class="s">&quot;&quot;</span><span class="nt">&gt;&lt;/a&gt;&lt;/li&gt;</span>
</span><span class='line'>      <span class="nt">&lt;li&gt;&lt;a</span> <span class="na">href=</span><span class="s">&quot;&quot;</span><span class="nt">&gt;&lt;/a&gt;&lt;/li&gt;</span>
</span><span class='line'>      <span class="nt">&lt;li&gt;&lt;a</span> <span class="na">href=</span><span class="s">&quot;&quot;</span><span class="nt">&gt;&lt;/a&gt;&lt;/li&gt;</span>
</span><span class='line'>      <span class="nt">&lt;li&gt;&lt;a</span> <span class="na">href=</span><span class="s">&quot;&quot;</span><span class="nt">&gt;&lt;/a&gt;&lt;/li&gt;</span>
</span><span class='line'>  <span class="nt">&lt;/ul&gt;</span>
</span><span class='line'><span class="nt">&lt;/div&gt;</span>
</span></code></pre></td></tr></table></div></figure>


<p><strong>Useful Links over Zen Coding</strong></p>

<ol>
    <li>Homepage : <a title="Zen Coding" href="https://github.com/sergeche/zen-coding" target="_blank">https://github.com/sergeche/zen-coding</a></li>
    <li>Download Link : <a style="font-weight: normal;" title="Zen Coding For Gedit" href="http://github.com/mikecrittenden/zen-coding-gedit" target="_blank">http://github.com/mikecrittenden/zen-coding-gedit</a></li>
    <li>Demo Video<strong>s </strong><span style="font-weight: normal;">: <a href="http://vimeo.com/7405114" target="_blank">http://vimeo.com/7405114</a></span></li>
    <li>Examples : <a style="font-weight: normal;" href="http://www.smashingmagazine.com/2009/11/21/zen-coding-a-new-way-to-write-html-code/" target="_blank">http://www.smashingmagazine.com/2009/11/21/zen-coding-a-new-way-to-write-html-code/</a></li>
    <li>Features : <a style="font-weight: normal;" href="http://code.google.com/p/zen-coding/wiki/Actions" target="_blank">http://code.google.com/p/zen-coding/wiki/Actions</a></li>
</ol>


<p><strong>Install Zen Coding at gedit</strong></p>

<ol>
    <li>Download <a href="http://github.com/mikecrittenden/zen-coding-gedit/zipball/master" target="_blank">http://github.com/mikecrittenden/zen-coding-gedit/zipball/master</a> source and unpack it.</li>
    <li>Move `zencoding.gedit-plugin` and the `zencoding` folder into `~/.gnome2/gedit/plugins/`</li>
    <li>In Gedit, go to Edit → Preferences → Plugins to enable the plugin.</li>
    <li>Try it out using the shortcut keys listed below.</li>
</ol>


<p><strong>Shortcuts</strong></p>

<ul>
    <li>Expand abbreviation with <code><strong>Ctrl+E</strong></code></li>
    <li>Expand abbreviation as you type with <code><strong>Ctrl+Alt+E</strong></code></li>
    <li>Wrap with abbreviation with <code><strong>Ctrl+Shift+E</strong></code></li>
    <li>Balance tag inward or outward with <code><strong>Ctrl+Alt+I</strong></code><strong> </strong>or <code><strong>Ctrl+Alt+O</strong></code></li>
    <li>Merge lines with <code><strong>Ctrl+Alt+M</strong></code></li>
    <li>Go to previous or next edit point with <code><strong>Alt+Left</strong></code> and <code><strong>Alt+Right</strong></code></li>
    <li>Remove tag with <code><strong>Ctrl+Alt+R</strong></code></li>
    <li>Split or join tags with <code><strong>Ctrl+Alt+J</strong></code></li>
    <li>Toggle comment with <code><strong>Ctrl+Alt+C</strong></code></li>
</ul>


<p>Best Regards.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Install Sun Java JDK on Ubuntu]]></title>
    <link href="http://onurozgurozkan.github.com/blog/2011/12/19/install-sun-java-jdk-on-ubuntu/"/>
    <updated>2011-12-19T17:29:00+02:00</updated>
    <id>http://onurozgurozkan.github.com/blog/2011/12/19/install-sun-java-jdk-on-ubuntu</id>
    <content type="html"><![CDATA[<p>I usually use open source software but sometimes we haven&#8217;t choice. When i started to use <a href="http://www.jetbrains.com/phpstorm/" target="_blank">PhpStorm IDE</a>, i got notification over Performans Issue over Open JDK. Yes i also don&#8217;t believe it. PhpStorm offered me that Sun JDK instead of Open JDK. So i decided that switch Sun JDK. This short post is helped us how to install Sun JDK on Ubuntu.</p>

<!--more-->


<p>First we need to check that Ubuntu Partners repository is enabled in our apt source list, open <strong>/etc/apt/sources.list</strong> and uncomment the following line:
<code>deb http://archive.canonical.com/ubuntu maverick partner</code></p>

<p>Of course this is over Ubuntu 10.10 Maverick Meerkat. You can find the correct line in your version.</p>

<p>Then in command line type</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'>sudo apt-get update
</span><span class='line'>sudo apt-get install sun-java6-jdk
</span></code></pre></td></tr></table></div></figure>


<p>Now we can switch Java provider in our system by typing the following in command line</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'>sudo update-alternatives --config java
</span></code></pre></td></tr></table></div></figure>


<p>We will be presented with the screen similar to rhis one</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'>There are 2 choices <span class="k">for </span>the alternative java <span class="o">(</span>providing /usr/bin/java<span class="o">)</span>.
</span><span class='line'>
</span><span class='line'>  Selection    Path                                      Priority   Status
</span><span class='line'>------------------------------------------------------------
</span><span class='line'>* 0            /usr/lib/jvm/java-6-openjdk/jre/bin/java   1061     auto mode
</span><span class='line'>   1            /usr/lib/jvm/java-6-openjdk/jre/bin/java   1061     manual mode
</span><span class='line'>   2            /usr/ lib/jvm/java-6-sun/jre/bin/java        63        manual mode
</span><span class='line'>
</span><span class='line'>Press enter to keep the current choice<span class="o">[</span>*<span class="o">]</span>, or <span class="nb">type </span>selection number: 2
</span></code></pre></td></tr></table></div></figure>


<p>Select the option that has the path <strong>/usr/ lib/jvm/java-6-sun/jre/bin/java</strong> thats all. Now we check the java version with following command line code.</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'>java -version
</span></code></pre></td></tr></table></div></figure>


<p>We should see a similar to the below</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'>java version <span class="s2">&quot;1.6.0_24&quot;</span>
</span><span class='line'>Java<span class="o">(</span>TM<span class="o">)</span> SE Runtime Environment <span class="o">(</span>build 1.6.0_24-b07<span class="o">)</span>
</span><span class='line'>Java HotSpot<span class="o">(</span>TM<span class="o">)</span> Server VM <span class="o">(</span>build 19.1-b02, mixed mode<span class="o">)</span>
</span></code></pre></td></tr></table></div></figure>


<p>Best Regards.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Set the Default Browser on Ubuntu From the Command Line]]></title>
    <link href="http://onurozgurozkan.github.com/blog/2011/12/17/set-the-default-browser-on-ubuntu-from-the-command-line/"/>
    <updated>2011-12-17T12:34:00+02:00</updated>
    <id>http://onurozgurozkan.github.com/blog/2011/12/17/set-the-default-browser-on-ubuntu-from-the-command-line</id>
    <content type="html"><![CDATA[<p>Open your terminal</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'>sudo update-alternatives --config x-www-browser
</span></code></pre></td></tr></table></div></figure>


<p>Choice your browser</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'>There are 2 choices <span class="k">for </span>the alternative x-www-browser <span class="o">(</span>providing /usr/bin/x-www-browser<span class="o">)</span>.
</span><span class='line'>
</span><span class='line'>  Selection    Path                    Priority   Status
</span><span class='line'>------------------------------------------------------------
</span><span class='line'>* 0            /usr/bin/google-chrome   200       auto mode
</span><span class='line'>  1            /usr/bin/firefox         40        manual mode
</span><span class='line'>  2            /usr/bin/google-chrome   200       manual mode
</span><span class='line'>
</span><span class='line'>Press enter to keep the current choice<span class="o">[</span>*<span class="o">]</span>, or <span class="nb">type </span>selection number:
</span></code></pre></td></tr></table></div></figure>


<p>Thats all.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Difference between &amp; and &amp;&amp;]]></title>
    <link href="http://onurozgurozkan.github.com/blog/2011/12/15/difference-between-and-and-and-and/"/>
    <updated>2011-12-15T13:38:00+02:00</updated>
    <id>http://onurozgurozkan.github.com/blog/2011/12/15/difference-between-and-and-and-and</id>
    <content type="html"><![CDATA[<p>&amp; is unconditional logical AND;
&amp;&amp; is conditional logical AND;
| is unconditional logical OR;
|| is  conditional logical OR;</p>

<!--more-->


<p>The diffrence  between conditional and unconditional logical operator is the single ampersand always evaluates both arguments whereas the double ampersand will only evaluate the second argument if the first argument is <tt>true</tt>.</p>

<p>Check the below examples.</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
<span class='line-number'>13</span>
<span class='line-number'>14</span>
<span class='line-number'>15</span>
<span class='line-number'>16</span>
<span class='line-number'>17</span>
<span class='line-number'>18</span>
<span class='line-number'>19</span>
</pre></td><td class='code'><pre><code class='php'><span class='line'><span class="cp">&lt;?php</span>
</span><span class='line'>
</span><span class='line'><span class="nv">$c</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
</span><span class='line'>
</span><span class='line'><span class="p">(</span><span class="k">true</span> <span class="o">||</span> <span class="nv">$c</span><span class="o">++</span><span class="p">);</span>
</span><span class='line'><span class="k">echo</span> <span class="nv">$c</span> <span class="o">.</span> <span class="s2">&quot;&lt;br /&gt;&quot;</span><span class="p">;</span> <span class="c1">//Output 1</span>
</span><span class='line'>
</span><span class='line'><span class="p">(</span><span class="k">true</span> <span class="o">|</span> <span class="nv">$c</span><span class="o">++</span><span class="p">);</span>
</span><span class='line'><span class="k">echo</span> <span class="nv">$c</span> <span class="o">.</span> <span class="s2">&quot;&lt;br /&gt;&quot;</span><span class="p">;</span> <span class="c1">//Output 2</span>
</span><span class='line'>
</span><span class='line'><span class="nv">$c</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
</span><span class='line'>
</span><span class='line'><span class="p">(</span><span class="k">false</span> <span class="o">&amp;&amp;</span> <span class="nv">$c</span><span class="o">++</span><span class="p">);</span>
</span><span class='line'><span class="k">echo</span> <span class="nv">$c</span> <span class="o">.</span> <span class="s2">&quot;&lt;br /&gt;&quot;</span><span class="p">;</span> <span class="c1">//Output 1</span>
</span><span class='line'>
</span><span class='line'><span class="p">(</span><span class="k">false</span> <span class="o">&amp;</span> <span class="nv">$c</span><span class="o">++</span><span class="p">);</span>
</span><span class='line'><span class="k">echo</span> <span class="nv">$c</span> <span class="o">.</span> <span class="s2">&quot;&lt;br /&gt;&quot;</span><span class="p">;</span> <span class="c1">//Output 2</span>
</span><span class='line'>
</span><span class='line'><span class="cp">?&gt;</span><span class="x"></span>
</span></code></pre></td></tr></table></div></figure>


<p>Best Regards.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Rails 3.1 and ExecJS::RuntimeUnavailable Error]]></title>
    <link href="http://onurozgurozkan.github.com/blog/2011/10/02/rails-3-dot-1-and-execjs-runtimeunavailable-error/"/>
    <updated>2011-10-02T17:40:00+03:00</updated>
    <id>http://onurozgurozkan.github.com/blog/2011/10/02/rails-3-dot-1-and-execjs-runtimeunavailable-error</id>
    <content type="html"><![CDATA[<p>When i start the rails server</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'>rails server -b 0.0.0.0 -p 3000 -e development
</span></code></pre></td></tr></table></div></figure>


<p>I get the</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'>/gems/execjs-1.2.4/lib/execjs/runtimes.rb:45:in <span class="sb">`</span>autodetect<span class="err">&#39;</span>: Could not find a JavaScript runtime. See
</span><span class='line'>https://github.com/sstephenson/execjs <span class="k">for </span>a list of available runtimes. <span class="o">(</span>ExecJS::RuntimeUnavailable<span class="o">)</span>
</span></code></pre></td></tr></table></div></figure>




<!--more-->


<p>errors after searching on google i found the solutions.</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'>sudo apt-get install python-software-properties
</span><span class='line'>sudo add-apt-repository ppa:chris-lea/node.js
</span><span class='line'>sudo apt-get update
</span><span class='line'>sudo apt-get install nodejs
</span></code></pre></td></tr></table></div></figure>


<p>You must install a server site js compiler like node.js or an other solution is adding &#8216;therubyracer&#8217;, &#8216;>= 0.8.2&#8217; at gemfile.</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class='ruby'><span class='line'><span class="n">gem</span> <span class="s1">&#39;therubyracer&#39;</span><span class="p">,</span> <span class="s1">&#39;&gt;= 0.8.2&#39;</span>
</span></code></pre></td></tr></table></div></figure>


<p>Best Regards.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Add Ruby on Rails locale files from subfolders]]></title>
    <link href="http://onurozgurozkan.github.com/blog/2011/10/01/add-ruby-on-rails-locale-files-from-subfolders/"/>
    <updated>2011-10-01T17:50:00+03:00</updated>
    <id>http://onurozgurozkan.github.com/blog/2011/10/01/add-ruby-on-rails-locale-files-from-subfolders</id>
    <content type="html"><![CDATA[<p>As you know locale files place at /config/locales folder like en.yml, tr.yml . If you want to organize your folder with sub folder. You must edit your <code>config/application.rb</code></p>

<!--more-->




<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'><span class="c"># The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.</span>
</span><span class='line'>config.i18n.load_path +<span class="o">=</span> Dir<span class="o">[</span>Rails.root.join<span class="o">(</span><span class="s1">&#39;config&#39;</span>, <span class="s1">&#39;locales&#39;</span>, <span class="s1">&#39;**&#39;</span>, <span class="s1">&#39;*.{rb,yml}&#39;</span><span class="o">)]</span>
</span><span class='line'>config.i18n.default_locale <span class="o">=</span> :en
</span></code></pre></td></tr></table></div></figure>


<p>Best regards.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Configure hostname on Ubuntu]]></title>
    <link href="http://onurozgurozkan.github.com/blog/2011/09/21/configure-hostname-on-ubuntu/"/>
    <updated>2011-09-21T17:44:00+03:00</updated>
    <id>http://onurozgurozkan.github.com/blog/2011/09/21/configure-hostname-on-ubuntu</id>
    <content type="html"><![CDATA[<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'>sudo hostname your-hostname
</span></code></pre></td></tr></table></div></figure>


<p>Add 127.0.0.1 your-hostname</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'>sudo nano /etc/hosts
</span></code></pre></td></tr></table></div></figure>


<p>Write your-hostname in</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'>sudo nano /etc/hostname
</span></code></pre></td></tr></table></div></figure>


<p>Verify that hostname is set</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'>hostname
</span></code></pre></td></tr></table></div></figure>


<p>Best Regards.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Configure timezone on Ubuntu]]></title>
    <link href="http://onurozgurozkan.github.com/blog/2011/09/01/configure-timezone-on-ubuntu/"/>
    <updated>2011-09-01T17:46:00+03:00</updated>
    <id>http://onurozgurozkan.github.com/blog/2011/09/01/configure-timezone-on-ubuntu</id>
    <content type="html"><![CDATA[<p>Time zone is very important at web applications. This is the solution to set up the servers.</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'>sudo dpkg-reconfigure tzdata
</span><span class='line'>sudo apt-get install ntp
</span><span class='line'>sudo ntpdate ntp.ubuntu.com
</span></code></pre></td></tr></table></div></figure>


<p>Best Regards.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Github Repository Installer for Kebab Project]]></title>
    <link href="http://onurozgurozkan.github.com/blog/2011/08/20/github-repository-installer-for-kebab-project/"/>
    <updated>2011-08-20T23:34:00+03:00</updated>
    <id>http://onurozgurozkan.github.com/blog/2011/08/20/github-repository-installer-for-kebab-project</id>
    <content type="html"><![CDATA[<p>We support a lot of our customer project in these days. Installing and setting new kebab project and its vendors are become very boring. I decided to write a simple installer for this problem. If you want, you can also modified for your project. You can find the source code on Github. <a href="https://gist.github.com/1158767">https://gist.github.com/1158767</a> . If the link is broken, please send me a comment.</p>

<!--more-->


<p><em>How to use?</em>
Run the command at project folder. It will open the &#8216;www&#8217; folder and install there.</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'>install.php
</span></code></pre></td></tr></table></div></figure>


<p><em>Source Code</em></p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
<span class='line-number'>13</span>
<span class='line-number'>14</span>
<span class='line-number'>15</span>
<span class='line-number'>16</span>
<span class='line-number'>17</span>
<span class='line-number'>18</span>
<span class='line-number'>19</span>
<span class='line-number'>20</span>
<span class='line-number'>21</span>
<span class='line-number'>22</span>
<span class='line-number'>23</span>
<span class='line-number'>24</span>
<span class='line-number'>25</span>
<span class='line-number'>26</span>
<span class='line-number'>27</span>
<span class='line-number'>28</span>
<span class='line-number'>29</span>
<span class='line-number'>30</span>
<span class='line-number'>31</span>
<span class='line-number'>32</span>
<span class='line-number'>33</span>
<span class='line-number'>34</span>
<span class='line-number'>35</span>
<span class='line-number'>36</span>
<span class='line-number'>37</span>
<span class='line-number'>38</span>
<span class='line-number'>39</span>
<span class='line-number'>40</span>
<span class='line-number'>41</span>
<span class='line-number'>42</span>
<span class='line-number'>43</span>
<span class='line-number'>44</span>
<span class='line-number'>45</span>
<span class='line-number'>46</span>
<span class='line-number'>47</span>
<span class='line-number'>48</span>
<span class='line-number'>49</span>
<span class='line-number'>50</span>
<span class='line-number'>51</span>
<span class='line-number'>52</span>
<span class='line-number'>53</span>
<span class='line-number'>54</span>
<span class='line-number'>55</span>
<span class='line-number'>56</span>
<span class='line-number'>57</span>
<span class='line-number'>58</span>
<span class='line-number'>59</span>
<span class='line-number'>60</span>
<span class='line-number'>61</span>
<span class='line-number'>62</span>
<span class='line-number'>63</span>
<span class='line-number'>64</span>
<span class='line-number'>65</span>
<span class='line-number'>66</span>
<span class='line-number'>67</span>
<span class='line-number'>68</span>
<span class='line-number'>69</span>
<span class='line-number'>70</span>
<span class='line-number'>71</span>
<span class='line-number'>72</span>
<span class='line-number'>73</span>
<span class='line-number'>74</span>
<span class='line-number'>75</span>
<span class='line-number'>76</span>
<span class='line-number'>77</span>
<span class='line-number'>78</span>
<span class='line-number'>79</span>
<span class='line-number'>80</span>
<span class='line-number'>81</span>
</pre></td><td class='code'><pre><code class='php'><span class='line'><span class="x">#!/usr/bin/env php</span>
</span><span class='line'><span class="cp">&lt;?php</span>
</span><span class='line'>
</span><span class='line'><span class="nv">$kebab</span> <span class="o">=</span> <span class="k">array</span><span class="p">(</span><span class="s1">&#39;kebab-project&#39;</span><span class="p">,</span>
</span><span class='line'>               <span class="nb">dirname</span><span class="p">(</span><span class="k">__FILE__</span><span class="p">)</span> <span class="o">.</span> <span class="s1">&#39;/www&#39;</span><span class="p">,</span>
</span><span class='line'>               <span class="s1">&#39;git@github.com:kebab-project/kebab-project.git&#39;</span><span class="p">,</span>
</span><span class='line'>               <span class="s1">&#39;origin/HEAD&#39;</span><span class="p">);</span>
</span><span class='line'>
</span><span class='line'><span class="nv">$extjs</span> <span class="o">=</span> <span class="k">array</span><span class="p">(</span><span class="s1">&#39;extjs&#39;</span><span class="p">,</span>
</span><span class='line'>               <span class="nb">dirname</span><span class="p">(</span><span class="k">__FILE__</span><span class="p">)</span> <span class="o">.</span> <span class="s1">&#39;/www/web/assets/vendors&#39;</span><span class="p">,</span>
</span><span class='line'>               <span class="s1">&#39;git@github.com:kebab-project/vendor-extjs.git&#39;</span><span class="p">,</span>
</span><span class='line'>               <span class="s1">&#39;origin/HEAD&#39;</span><span class="p">);</span>
</span><span class='line'>
</span><span class='line'><span class="nx">Menu</span><span class="o">::</span><span class="na">show</span><span class="p">();</span>
</span><span class='line'><span class="k">switch</span> <span class="p">(</span><span class="nx">Menu</span><span class="o">::</span><span class="na">getLine</span><span class="p">())</span> <span class="p">{</span>
</span><span class='line'>    <span class="k">case</span> <span class="s1">&#39;K&#39;</span><span class="o">:</span>
</span><span class='line'>        <span class="k">echo</span> <span class="s2">&quot;You want to install Kebab Project</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">;</span>
</span><span class='line'>        <span class="nx">Installer</span><span class="o">::</span><span class="na">install</span><span class="p">(</span><span class="nv">$kebab</span><span class="p">);</span>
</span><span class='line'>        <span class="k">break</span><span class="p">;</span>
</span><span class='line'>    <span class="k">case</span> <span class="s2">&quot;E&quot;</span><span class="o">:</span>
</span><span class='line'>        <span class="k">echo</span> <span class="s2">&quot;You want to install ExtJS</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">;</span>
</span><span class='line'>        <span class="nx">Installer</span><span class="o">::</span><span class="na">install</span><span class="p">(</span><span class="nv">$extjs</span><span class="p">);</span>
</span><span class='line'>        <span class="k">break</span><span class="p">;</span>
</span><span class='line'>    <span class="k">default</span><span class="o">:</span>
</span><span class='line'>        <span class="k">echo</span> <span class="s2">&quot;</span><span class="se">\033</span><span class="s2">[31mWrong choice</span><span class="se">\033</span><span class="s2">[37m</span><span class="se">\r\n</span><span class="s2">&quot;</span><span class="p">;</span>
</span><span class='line'><span class="p">}</span>
</span><span class='line'>
</span><span class='line'>
</span><span class='line'><span class="k">class</span> <span class="nc">Menu</span>
</span><span class='line'><span class="p">{</span>
</span><span class='line'>    <span class="k">public</span> <span class="k">static</span> <span class="k">function</span> <span class="nf">show</span><span class="p">()</span>
</span><span class='line'>    <span class="p">{</span>
</span><span class='line'>        <span class="k">echo</span> <span class="s2">&quot;What do you install? </span><span class="se">\n</span><span class="s2">&quot;</span>
</span><span class='line'>                <span class="o">.</span> <span class="s2">&quot;K - Kebab </span><span class="se">\n</span><span class="s2">&quot;</span>
</span><span class='line'>                <span class="o">.</span> <span class="s2">&quot;E - Extjs </span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">;</span>
</span><span class='line'>    <span class="p">}</span>
</span><span class='line'>
</span><span class='line'>    <span class="k">public</span> <span class="k">static</span> <span class="k">function</span> <span class="nf">getLine</span><span class="p">()</span>
</span><span class='line'>    <span class="p">{</span>
</span><span class='line'>        <span class="nv">$handle</span> <span class="o">=</span> <span class="nb">fopen</span> <span class="p">(</span><span class="s2">&quot;php://stdin&quot;</span><span class="p">,</span><span class="s2">&quot;r&quot;</span><span class="p">);</span>
</span><span class='line'>        <span class="k">return</span> <span class="nb">trim</span><span class="p">(</span><span class="nb">fgets</span><span class="p">(</span><span class="nv">$handle</span><span class="p">));</span>
</span><span class='line'>    <span class="p">}</span>
</span><span class='line'>
</span><span class='line'>    <span class="k">public</span> <span class="k">static</span> <span class="k">function</span> <span class="nf">isYes</span><span class="p">(</span><span class="nv">$input</span><span class="p">)</span>
</span><span class='line'>    <span class="p">{</span>
</span><span class='line'>        <span class="k">return</span> <span class="nb">in_array</span><span class="p">(</span><span class="nv">$input</span><span class="p">,</span> <span class="k">array</span><span class="p">(</span><span class="s1">&#39;YES&#39;</span><span class="p">,</span> <span class="s1">&#39;Yes&#39;</span><span class="p">,</span> <span class="s1">&#39;yes&#39;</span><span class="p">,</span> <span class="s1">&#39;Y&#39;</span><span class="p">,</span> <span class="s1">&#39;y&#39;</span><span class="p">,</span> <span class="s1">&#39;OK&#39;</span><span class="p">,</span> <span class="s1">&#39;Ok&#39;</span><span class="p">,</span> <span class="mi">1</span><span class="p">));</span>
</span><span class='line'>    <span class="p">}</span>
</span><span class='line'>
</span><span class='line'>    <span class="k">public</span> <span class="k">static</span> <span class="k">function</span> <span class="nf">isNo</span><span class="p">(</span><span class="nv">$input</span><span class="p">)</span>
</span><span class='line'>    <span class="p">{</span>
</span><span class='line'>        <span class="k">return</span> <span class="nb">in_array</span><span class="p">(</span><span class="nv">$input</span><span class="p">,</span> <span class="k">array</span><span class="p">(</span><span class="s1">&#39;NO&#39;</span><span class="p">,</span> <span class="s1">&#39;No&#39;</span><span class="p">,</span> <span class="s1">&#39;no&#39;</span><span class="p">,</span> <span class="s1">&#39;N&#39;</span><span class="p">,</span> <span class="s1">&#39;n&#39;</span><span class="p">,</span> <span class="mi">0</span><span class="p">));</span>
</span><span class='line'>    <span class="p">}</span>
</span><span class='line'><span class="p">}</span>
</span><span class='line'>
</span><span class='line'><span class="k">class</span> <span class="nc">Installer</span>
</span><span class='line'><span class="p">{</span>
</span><span class='line'>    <span class="k">public</span> <span class="k">static</span> <span class="k">function</span> <span class="nf">install</span><span class="p">(</span><span class="nv">$data</span><span class="p">)</span>
</span><span class='line'>    <span class="p">{</span>
</span><span class='line'>        <span class="k">list</span><span class="p">(</span><span class="nv">$name</span><span class="p">,</span> <span class="nv">$path</span><span class="p">,</span> <span class="nv">$url</span><span class="p">,</span> <span class="nv">$branch</span><span class="p">)</span> <span class="o">=</span> <span class="nv">$data</span><span class="p">;</span>
</span><span class='line'>
</span><span class='line'>        <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nb">is_dir</span><span class="p">(</span><span class="nv">$path</span><span class="p">))</span> <span class="p">{</span>
</span><span class='line'>            <span class="nb">mkdir</span><span class="p">(</span><span class="nv">$path</span><span class="p">,</span> <span class="mo">0777</span><span class="p">,</span> <span class="k">true</span><span class="p">);</span>
</span><span class='line'>        <span class="p">}</span>
</span><span class='line'>
</span><span class='line'>        <span class="k">echo</span> <span class="s2">&quot;&gt; Installing </span><span class="si">$name</span><span class="s2"> </span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">;</span>
</span><span class='line'>
</span><span class='line'>        <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nb">is_dir</span><span class="p">(</span><span class="nv">$path</span> <span class="o">.</span> <span class="s1">&#39;/.git&#39;</span><span class="p">))</span> <span class="p">{</span>
</span><span class='line'>           <span class="nb">system</span><span class="p">(</span><span class="nb">sprintf</span><span class="p">(</span><span class="s1">&#39;git clone %s %s&#39;</span><span class="p">,</span> <span class="nb">escapeshellarg</span><span class="p">(</span><span class="nv">$url</span><span class="p">),</span> <span class="nb">escapeshellarg</span><span class="p">(</span><span class="nv">$path</span><span class="p">)));</span>
</span><span class='line'>        <span class="p">}</span>
</span><span class='line'>
</span><span class='line'>        <span class="nb">system</span><span class="p">(</span><span class="nb">sprintf</span><span class="p">(</span><span class="s1">&#39;cd %s &amp;&amp; git fetch origin &amp;&amp; git reset --hard %s&#39;</span><span class="p">,</span> <span class="nb">escapeshellarg</span><span class="p">(</span><span class="nv">$path</span><span class="p">),</span> <span class="nb">escapeshellarg</span><span class="p">(</span><span class="nv">$branch</span><span class="p">)));</span>
</span><span class='line'>
</span><span class='line'>        <span class="k">echo</span> <span class="s2">&quot;&gt; </span><span class="si">$name</span><span class="s2"> is installed correctly. Do you want to delete the .git folder? </span><span class="se">\n</span><span class="s2">&quot;</span>
</span><span class='line'>                <span class="o">.</span> <span class="s2">&quot;Yes </span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">;</span>
</span><span class='line'>
</span><span class='line'>        <span class="k">if</span> <span class="p">(</span><span class="nx">Menu</span><span class="o">::</span><span class="na">isYes</span><span class="p">(</span><span class="nx">Menu</span><span class="o">::</span><span class="na">getLine</span><span class="p">()))</span> <span class="p">{</span>
</span><span class='line'>            <span class="nb">system</span><span class="p">(</span><span class="nb">sprintf</span><span class="p">(</span><span class="s1">&#39;rm -R -f %s/.git&#39;</span><span class="p">,</span> <span class="nb">escapeshellarg</span><span class="p">(</span><span class="nv">$path</span><span class="p">)));</span>
</span><span class='line'>            <span class="k">echo</span> <span class="s1">&#39;.git folder is deleted \n&#39;</span><span class="p">;</span>
</span><span class='line'>        <span class="p">}</span>
</span><span class='line'>    <span class="p">}</span>
</span><span class='line'><span class="p">}</span>
</span></code></pre></td></tr></table></div></figure>

]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Understanding Doctrine Record State and Kebab_Validate_DoctrineTable]]></title>
    <link href="http://onurozgurozkan.github.com/blog/2011/08/19/understanding-doctrine-record-state-and-kebab-validate-doctrinetable/"/>
    <updated>2011-08-19T23:10:00+03:00</updated>
    <id>http://onurozgurozkan.github.com/blog/2011/08/19/understanding-doctrine-record-state-and-kebab-validate-doctrinetable</id>
    <content type="html"><![CDATA[<p>In this tutorial, i try to show you how Kebab_Validate_DoctrineTable manages the unique validation. Lets give an example of unique validation.</p>

<!--more-->


<p>Our user.yml</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
</pre></td><td class='code'><pre><code class='yaml'><span class='line'><span class="l-Scalar-Plain">User</span><span class="p-Indicator">:</span>
</span><span class='line'>  <span class="l-Scalar-Plain">tableName</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">system_user</span>
</span><span class='line'>  <span class="l-Scalar-Plain">columns</span><span class="p-Indicator">:</span>
</span><span class='line'>    <span class="l-Scalar-Plain">userName</span><span class="p-Indicator">:</span>
</span><span class='line'>      <span class="l-Scalar-Plain">type</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">string(55)</span>
</span><span class='line'>      <span class="l-Scalar-Plain">unique</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">true</span>
</span><span class='line'>    <span class="l-Scalar-Plain">email</span><span class="p-Indicator">:</span>
</span><span class='line'>      <span class="l-Scalar-Plain">type</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">string(255)</span>
</span><span class='line'>      <span class="l-Scalar-Plain">unique</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">true</span>
</span><span class='line'>      <span class="l-Scalar-Plain">notnull</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">true</span>
</span><span class='line'>    <span class="l-Scalar-Plain">password</span><span class="p-Indicator">:</span>
</span><span class='line'>      <span class="l-Scalar-Plain">type</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">string(255)</span>
</span></code></pre></td></tr></table></div></figure>


<p>As you see userName and email fields are unique. So lets continue the example</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
<span class='line-number'>13</span>
<span class='line-number'>14</span>
<span class='line-number'>15</span>
<span class='line-number'>16</span>
<span class='line-number'>17</span>
<span class='line-number'>18</span>
<span class='line-number'>19</span>
<span class='line-number'>20</span>
<span class='line-number'>21</span>
<span class='line-number'>22</span>
<span class='line-number'>23</span>
<span class='line-number'>24</span>
<span class='line-number'>25</span>
<span class='line-number'>26</span>
<span class='line-number'>27</span>
<span class='line-number'>28</span>
<span class='line-number'>29</span>
<span class='line-number'>30</span>
<span class='line-number'>31</span>
<span class='line-number'>32</span>
<span class='line-number'>33</span>
<span class='line-number'>34</span>
<span class='line-number'>35</span>
<span class='line-number'>36</span>
</pre></td><td class='code'><pre><code class='php'><span class='line'><span class="cp">&lt;?php</span>
</span><span class='line'><span class="k">class</span> <span class="nc">IndexController</span> <span class="k">extends</span> <span class="nx">Kebab_Controller_Action</span>
</span><span class='line'><span class="p">{</span>
</span><span class='line'>    <span class="sd">/**</span>
</span><span class='line'><span class="sd">     * Front-end area index action</span>
</span><span class='line'><span class="sd">     * @return void</span>
</span><span class='line'><span class="sd">     */</span>
</span><span class='line'>    <span class="k">public</span> <span class="k">function</span> <span class="nf">indexAction</span><span class="p">()</span>
</span><span class='line'>    <span class="p">{</span>
</span><span class='line'>        <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">_helper</span><span class="o">-&gt;</span><span class="na">layout</span><span class="o">-&gt;</span><span class="na">disableLayout</span><span class="p">();</span>
</span><span class='line'>        <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">_helper</span><span class="o">-&gt;</span><span class="na">viewRenderer</span><span class="o">-&gt;</span><span class="na">setNoRender</span><span class="p">();</span>
</span><span class='line'>
</span><span class='line'>        <span class="c1">// This is a new user from sign up form</span>
</span><span class='line'>        <span class="nv">$newUser</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Model_Entity_User</span><span class="p">();</span>
</span><span class='line'>        <span class="nv">$newUser</span><span class="o">-&gt;</span><span class="na">email</span> <span class="o">=</span> <span class="s1">&#39;admin@kebab-project.com&#39;</span><span class="p">;</span>
</span><span class='line'>
</span><span class='line'>        <span class="c1">// This user is exist already on db with the same email address</span>
</span><span class='line'>        <span class="nv">$existUser</span> <span class="o">=</span> <span class="nx">Doctrine_Core</span><span class="o">::</span><span class="na">getTable</span><span class="p">(</span><span class="s1">&#39;Model_Entity_User&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">find</span><span class="p">(</span><span class="mi">2</span><span class="p">);</span>
</span><span class='line'>        <span class="nv">$exitsUser</span><span class="o">-&gt;</span><span class="na">email</span> <span class="o">=</span> <span class="s1">&#39;admin@kebab-project.com&#39;</span><span class="p">;</span>
</span><span class='line'>
</span><span class='line'>        <span class="nv">$validate</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Kebab_Validate_DoctrineTable</span><span class="p">(</span><span class="nv">$newUser</span><span class="p">);</span>
</span><span class='line'>        <span class="k">if</span> <span class="p">(</span><span class="nv">$validate</span><span class="o">-&gt;</span><span class="na">isValid</span><span class="p">())</span> <span class="p">{</span>
</span><span class='line'>            <span class="k">echo</span> <span class="s1">&#39;New user is valid.&#39;</span><span class="p">;</span>
</span><span class='line'>        <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
</span><span class='line'>            <span class="nx">Zend_Debug</span><span class="o">::</span><span class="na">dump</span><span class="p">(</span><span class="nv">$validate</span><span class="o">-&gt;</span><span class="na">getErrors</span><span class="p">());</span>
</span><span class='line'>        <span class="p">}</span>
</span><span class='line'>
</span><span class='line'>        <span class="nv">$validateExist</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Kebab_Validate_DoctrineTable</span><span class="p">(</span><span class="nv">$newUser</span><span class="p">);</span>
</span><span class='line'>        <span class="k">if</span> <span class="p">(</span><span class="nv">$validateExist</span><span class="o">-&gt;</span><span class="na">isValid</span><span class="p">())</span> <span class="p">{</span>
</span><span class='line'>            <span class="k">echo</span> <span class="s1">&#39;Exist user is valid.&#39;</span><span class="p">;</span>
</span><span class='line'>        <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
</span><span class='line'>            <span class="nx">Zend_Debug</span><span class="o">::</span><span class="na">dump</span><span class="p">(</span><span class="nv">$validateExist</span><span class="o">-&gt;</span><span class="na">getErrors</span><span class="p">());</span>
</span><span class='line'>        <span class="p">}</span>
</span><span class='line'>    <span class="p">}</span>
</span><span class='line'><span class="p">}</span>
</span><span class='line'><span class="cp">?&gt;</span><span class="x"></span>
</span></code></pre></td></tr></table></div></figure>


<p>In this example <code>$validate-&gt;isValid() === false</code> because there is a user with same email address on db but &lt;<code>$validateExist-&gt;isValid() === false</code> because Kebab_Validate_DoctrineTable check the Doctrine_Record is the same with the row on Db. How it is possible? This is not magic, Kebab_Validate_DoctrineTable uses Kebab_Validate_Unique and in isValid method we check the record is not new with this code <code>! ($state == Doctrine_Record::STATE_TDIRTY || $state == Doctrine_Record::STATE_TCLEAN)</code></p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
</pre></td><td class='code'><pre><code class='php'><span class='line'><span class="cp">&lt;?php</span>
</span><span class='line'>
</span><span class='line'><span class="c1">// Check primary key if the record is not new</span>
</span><span class='line'><span class="nv">$state</span> <span class="o">=</span> <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">_table</span><span class="o">-&gt;</span><span class="na">state</span><span class="p">();</span>
</span><span class='line'><span class="k">if</span> <span class="p">(</span> <span class="o">!</span> <span class="p">(</span><span class="nv">$state</span> <span class="o">==</span> <span class="nx">Doctrine_Record</span><span class="o">::</span><span class="na">STATE_TDIRTY</span> <span class="o">||</span> <span class="nv">$state</span> <span class="o">==</span> <span class="nx">Doctrine_Record</span><span class="o">::</span><span class="na">STATE_TCLEAN</span><span class="p">))</span> <span class="p">{</span>
</span><span class='line'>    <span class="k">foreach</span> <span class="p">((</span><span class="k">array</span><span class="p">)</span> <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">_table</span><span class="o">-&gt;</span><span class="na">getIdentifierColumnNames</span><span class="p">()</span> <span class="k">as</span> <span class="nv">$pk</span><span class="p">)</span> <span class="p">{</span>
</span><span class='line'>        <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nb">is_null</span><span class="p">(</span><span class="nv">$this</span><span class="o">-&gt;</span><span class="na">_table</span><span class="o">-&gt;</span><span class="nv">$pk</span><span class="p">))</span> <span class="p">{</span>
</span><span class='line'>            <span class="nv">$query</span><span class="o">-&gt;</span><span class="na">andWhere</span><span class="p">(</span><span class="s2">&quot;</span><span class="si">$pk</span><span class="s2"> != ?&quot;</span><span class="p">,</span> <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">_table</span><span class="o">-&gt;</span><span class="nv">$pk</span><span class="p">);</span>
</span><span class='line'>        <span class="p">}</span>
</span><span class='line'>    <span class="p">}</span>
</span><span class='line'><span class="p">}</span>
</span></code></pre></td></tr></table></div></figure>


<p>Then we get tables identifier columns name with <code>$this-&gt;_table-&gt;getIdentifierColumnNames()</code> and add an andWhere conditional check the primary key is not equal to data.</p>

<p>This means that you can use Kebab_Validate_DoctrineTable&#8217;s unique features when update the records.</p>

<p>Best Regards.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!]]></title>
    <link href="http://onurozgurozkan.github.com/blog/2011/08/19/warning-remote-host-identification-has-changed/"/>
    <updated>2011-08-19T22:17:00+03:00</updated>
    <id>http://onurozgurozkan.github.com/blog/2011/08/19/warning-remote-host-identification-has-changed</id>
    <content type="html"><![CDATA[<p>The solution is</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'>ssh-keygen -f <span class="s2">&quot;/home/user_name/.ssh/known_hosts&quot;</span> -R xx.xx.xx.xx
</span></code></pre></td></tr></table></div></figure>


<p>Don’t forget to change these variables at bash command.
user_name is your linux user name.
xx.xx.xx.xx is your remote server IP.</p>

<p>Best Regards</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Doctrine Table and Zend Validate Integration]]></title>
    <link href="http://onurozgurozkan.github.com/blog/2011/08/17/doctrine-table-and-zend-validate-integration/"/>
    <updated>2011-08-17T23:08:00+03:00</updated>
    <id>http://onurozgurozkan.github.com/blog/2011/08/17/doctrine-table-and-zend-validate-integration</id>
    <content type="html"><![CDATA[<p>If you use Doctrine and want to make validation with Zend Framework. This tutorial is for you.</p>

<!--more-->


<ol>
<li>Create a TestTable.Yml</li>
</ol>


<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
<span class='line-number'>13</span>
<span class='line-number'>14</span>
<span class='line-number'>15</span>
<span class='line-number'>16</span>
<span class='line-number'>17</span>
<span class='line-number'>18</span>
<span class='line-number'>19</span>
<span class='line-number'>20</span>
<span class='line-number'>21</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'>Test:
</span><span class='line'>  tableName: system_test
</span><span class='line'>  columns:
</span><span class='line'>    email:
</span><span class='line'>      <span class="nb">type</span>: string
</span><span class='line'>      email: <span class="nb">true</span>
</span><span class='line'><span class="nb">    </span>minlength:
</span><span class='line'>      <span class="nb">type</span>: string
</span><span class='line'>      minlength: 4
</span><span class='line'>    range:
</span><span class='line'>      <span class="nb">type</span>: integer
</span><span class='line'>      range: <span class="o">[</span>10, 100<span class="o">]</span>
</span><span class='line'>    regexp:
</span><span class='line'>      <span class="nb">type</span>: string
</span><span class='line'>      regexp: <span class="s1">&#39;/^[a-zA-Z0-9]+$/&#39;</span>
</span><span class='line'>
</span><span class='line'>
</span><span class='line'>  options:
</span><span class='line'>    <span class="nb">type</span>: INNODB
</span><span class='line'>    collate: utf8_bin
</span><span class='line'>    charset: utf8
</span></code></pre></td></tr></table></div></figure>


<ol>
<li>Build the Doctrine_Record with doctrine.php build-all comment then we get the record</li>
</ol>


<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
<span class='line-number'>13</span>
<span class='line-number'>14</span>
<span class='line-number'>15</span>
<span class='line-number'>16</span>
<span class='line-number'>17</span>
<span class='line-number'>18</span>
<span class='line-number'>19</span>
<span class='line-number'>20</span>
<span class='line-number'>21</span>
<span class='line-number'>22</span>
<span class='line-number'>23</span>
<span class='line-number'>24</span>
<span class='line-number'>25</span>
<span class='line-number'>26</span>
<span class='line-number'>27</span>
<span class='line-number'>28</span>
<span class='line-number'>29</span>
<span class='line-number'>30</span>
<span class='line-number'>31</span>
<span class='line-number'>32</span>
<span class='line-number'>33</span>
<span class='line-number'>34</span>
<span class='line-number'>35</span>
<span class='line-number'>36</span>
<span class='line-number'>37</span>
<span class='line-number'>38</span>
</pre></td><td class='code'><pre><code class='php'><span class='line'><span class="cp">&lt;?php</span>
</span><span class='line'><span class="k">class</span> <span class="nc">Model_Entity_Test</span> <span class="k">extends</span> <span class="nx">Doctrine_Record</span>
</span><span class='line'><span class="p">{</span>
</span><span class='line'>    <span class="k">public</span> <span class="k">function</span> <span class="nf">setTableDefinition</span><span class="p">()</span>
</span><span class='line'>    <span class="p">{</span>
</span><span class='line'>        <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">setTableName</span><span class="p">(</span><span class="s1">&#39;system_test&#39;</span><span class="p">);</span>
</span><span class='line'>        <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">hasColumn</span><span class="p">(</span><span class="s1">&#39;email&#39;</span><span class="p">,</span> <span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="k">null</span><span class="p">,</span> <span class="k">array</span><span class="p">(</span>
</span><span class='line'>             <span class="s1">&#39;type&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;string&#39;</span><span class="p">,</span>
</span><span class='line'>             <span class="s1">&#39;email&#39;</span> <span class="o">=&gt;</span> <span class="k">true</span><span class="p">,</span>
</span><span class='line'>             <span class="p">));</span>
</span><span class='line'>        <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">hasColumn</span><span class="p">(</span><span class="s1">&#39;minlength&#39;</span><span class="p">,</span> <span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="k">null</span><span class="p">,</span> <span class="k">array</span><span class="p">(</span>
</span><span class='line'>             <span class="s1">&#39;type&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;string&#39;</span><span class="p">,</span>
</span><span class='line'>             <span class="s1">&#39;minlength&#39;</span> <span class="o">=&gt;</span> <span class="mi">4</span><span class="p">,</span>
</span><span class='line'>             <span class="p">));</span>
</span><span class='line'>        <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">hasColumn</span><span class="p">(</span><span class="s1">&#39;range&#39;</span><span class="p">,</span> <span class="s1">&#39;integer&#39;</span><span class="p">,</span> <span class="k">null</span><span class="p">,</span> <span class="k">array</span><span class="p">(</span>
</span><span class='line'>             <span class="s1">&#39;type&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;integer&#39;</span><span class="p">,</span>
</span><span class='line'>             <span class="s1">&#39;range&#39;</span> <span class="o">=&gt;</span>
</span><span class='line'>             <span class="k">array</span><span class="p">(</span>
</span><span class='line'>              <span class="mi">0</span> <span class="o">=&gt;</span> <span class="mi">10</span><span class="p">,</span>
</span><span class='line'>              <span class="mi">1</span> <span class="o">=&gt;</span> <span class="mi">100</span><span class="p">,</span>
</span><span class='line'>             <span class="p">),</span>
</span><span class='line'>             <span class="p">));</span>
</span><span class='line'>        <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">hasColumn</span><span class="p">(</span><span class="s1">&#39;regexp&#39;</span><span class="p">,</span> <span class="s1">&#39;string&#39;</span><span class="p">,</span> <span class="k">null</span><span class="p">,</span> <span class="k">array</span><span class="p">(</span>
</span><span class='line'>             <span class="s1">&#39;type&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;string&#39;</span><span class="p">,</span>
</span><span class='line'>             <span class="s1">&#39;regexp&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;/^[a-zA-Z0-9]+$/&#39;</span><span class="p">,</span>
</span><span class='line'>             <span class="p">));</span>
</span><span class='line'>
</span><span class='line'>        <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">option</span><span class="p">(</span><span class="s1">&#39;type&#39;</span><span class="p">,</span> <span class="s1">&#39;INNODB&#39;</span><span class="p">);</span>
</span><span class='line'>        <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">option</span><span class="p">(</span><span class="s1">&#39;collate&#39;</span><span class="p">,</span> <span class="s1">&#39;utf8_bin&#39;</span><span class="p">);</span>
</span><span class='line'>        <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">option</span><span class="p">(</span><span class="s1">&#39;charset&#39;</span><span class="p">,</span> <span class="s1">&#39;utf8&#39;</span><span class="p">);</span>
</span><span class='line'>    <span class="p">}</span>
</span><span class='line'>
</span><span class='line'>    <span class="k">public</span> <span class="k">function</span> <span class="nf">setUp</span><span class="p">()</span>
</span><span class='line'>    <span class="p">{</span>
</span><span class='line'>        <span class="k">parent</span><span class="o">::</span><span class="na">setUp</span><span class="p">();</span>
</span><span class='line'>
</span><span class='line'>    <span class="p">}</span>
</span><span class='line'><span class="p">}</span>
</span></code></pre></td></tr></table></div></figure>


<ol>
<li>In our controller we use the Kebab_Validation_DoctrineTable</li>
</ol>


<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
<span class='line-number'>13</span>
<span class='line-number'>14</span>
<span class='line-number'>15</span>
<span class='line-number'>16</span>
<span class='line-number'>17</span>
<span class='line-number'>18</span>
<span class='line-number'>19</span>
<span class='line-number'>20</span>
<span class='line-number'>21</span>
<span class='line-number'>22</span>
<span class='line-number'>23</span>
<span class='line-number'>24</span>
<span class='line-number'>25</span>
<span class='line-number'>26</span>
</pre></td><td class='code'><pre><code class='php'><span class='line'><span class="cp">&lt;?php</span>
</span><span class='line'><span class="k">class</span> <span class="nc">IndexController</span> <span class="k">extends</span> <span class="nx">Kebab_Controller_Action</span>
</span><span class='line'><span class="p">{</span>
</span><span class='line'>    <span class="sd">/**</span>
</span><span class='line'><span class="sd">     * Front-end area index action</span>
</span><span class='line'><span class="sd">     * @return void</span>
</span><span class='line'><span class="sd">     */</span>
</span><span class='line'>    <span class="k">public</span> <span class="k">function</span> <span class="nf">indexAction</span><span class="p">()</span>
</span><span class='line'>    <span class="p">{</span>
</span><span class='line'>        <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">_helper</span><span class="o">-&gt;</span><span class="na">layout</span><span class="o">-&gt;</span><span class="na">disableLayout</span><span class="p">();</span>
</span><span class='line'>        <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">_helper</span><span class="o">-&gt;</span><span class="na">viewRenderer</span><span class="o">-&gt;</span><span class="na">setNoRender</span><span class="p">();</span>
</span><span class='line'>
</span><span class='line'>        <span class="nv">$test</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Model_Entity_Test</span><span class="p">();</span>
</span><span class='line'>        <span class="nv">$test</span><span class="o">-&gt;</span><span class="na">email</span> <span class="o">=</span> <span class="s1">&#39;asdf#$½2&#39;</span><span class="p">;</span>
</span><span class='line'>        <span class="nv">$test</span><span class="o">-&gt;</span><span class="na">minlength</span> <span class="o">=</span> <span class="s1">&#39;123&#39;</span><span class="p">;</span>
</span><span class='line'>        <span class="nv">$test</span><span class="o">-&gt;</span><span class="na">range</span> <span class="o">=</span> <span class="s1">&#39;101&#39;</span><span class="p">;</span>
</span><span class='line'>        <span class="nv">$test</span><span class="o">-&gt;</span><span class="na">regexp</span> <span class="o">=</span> <span class="s1">&#39;asdf#£$½£#½&#39;</span><span class="p">;</span>
</span><span class='line'>
</span><span class='line'>        <span class="nv">$validator</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Kebab_Validate_DoctrineTable</span><span class="p">(</span><span class="nv">$test</span><span class="p">,</span> <span class="s1">&#39;Model_Entity_Test&#39;</span><span class="p">);</span>
</span><span class='line'>        <span class="k">if</span><span class="p">(</span><span class="o">!</span><span class="nv">$validator</span><span class="o">-&gt;</span><span class="na">isValid</span><span class="p">())</span> <span class="p">{</span>
</span><span class='line'>            <span class="nx">Zend_Debug</span><span class="o">::</span><span class="na">dump</span><span class="p">(</span><span class="nv">$validator</span><span class="o">-&gt;</span><span class="na">getErrors</span><span class="p">());</span>
</span><span class='line'>        <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
</span><span class='line'>            <span class="k">echo</span> <span class="s1">&#39;ok&#39;</span><span class="p">;</span>
</span><span class='line'>        <span class="p">}</span>
</span><span class='line'>    <span class="p">}</span>
</span><span class='line'><span class="p">}</span>
</span></code></pre></td></tr></table></div></figure>


<ol>
<li>The output is</li>
</ol>


<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'>array<span class="o">(</span>3<span class="o">)</span> <span class="o">{</span>
</span><span class='line'>  <span class="o">[</span><span class="s2">&quot;email&quot;</span><span class="o">]</span> <span class="o">=</span>&gt; array<span class="o">(</span>1<span class="o">)</span> <span class="o">{</span>
</span><span class='line'>    <span class="o">[</span><span class="s2">&quot;emailAddressInvalidFormat&quot;</span><span class="o">]</span> <span class="o">=</span>&gt; string<span class="o">(</span>77<span class="o">)</span> <span class="s2">&quot;&#39;asdf#$Â½2&#39; is no valid email address in the basic format local-part@hostname&quot;</span>
</span><span class='line'>  <span class="o">}</span>
</span><span class='line'>  <span class="o">[</span><span class="s2">&quot;range&quot;</span><span class="o">]</span> <span class="o">=</span>&gt; array<span class="o">(</span>1<span class="o">)</span> <span class="o">{</span>
</span><span class='line'>    <span class="o">[</span><span class="s2">&quot;notBetween&quot;</span><span class="o">]</span> <span class="o">=</span>&gt; string<span class="o">(</span>48<span class="o">)</span> <span class="s2">&quot;&#39;101&#39; is not between &#39;10&#39; and &#39;100&#39;, inclusively&quot;</span>
</span><span class='line'>  <span class="o">}</span>
</span><span class='line'>  <span class="o">[</span><span class="s2">&quot;regexp&quot;</span><span class="o">]</span> <span class="o">=</span>&gt; array<span class="o">(</span>1<span class="o">)</span> <span class="o">{</span>
</span><span class='line'>    <span class="o">[</span><span class="s2">&quot;regexNotMatch&quot;</span><span class="o">]</span> <span class="o">=</span>&gt; string<span class="o">(</span>67<span class="o">)</span> <span class="s2">&quot;&#39;asdf#Â£$Â½Â£#Â½&#39; does not match against pattern &#39;/^[a-zA-Z0-9]+$/&#39;&quot;</span>
</span><span class='line'>  <span class="o">}</span>
</span><span class='line'><span class="o">}</span>
</span></code></pre></td></tr></table></div></figure>


<p>You can find the code on github at kebab-project.com repos. <a href="https://github.com/kebab-project/kebab-project/blob/master/library/Kebab/Validate/DoctrineTable.php">https://github.com/kebab-project/kebab-project/blob/master/library/Kebab/Validate/DoctrineTable.php</a></p>

<p>Bugs and feedback are always welcome.</p>

<p>Best regards.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Sending Email with Zend Framework, ExtJS on Kebab Project using Gmail]]></title>
    <link href="http://onurozgurozkan.github.com/blog/2011/08/15/sending-email-with-zend-framework/"/>
    <updated>2011-08-15T23:40:00+03:00</updated>
    <id>http://onurozgurozkan.github.com/blog/2011/08/15/sending-email-with-zend-framework</id>
    <content type="html"><![CDATA[<p>This is a simple tutorial over sending email with Zend Framework. First of all we write our email setting on config file which name is kebab.ini .</p>

<!--more-->




<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
</pre></td><td class='code'><pre><code class='php'><span class='line'><span class="x">;Mail Settings</span>
</span><span class='line'><span class="x">kebab.mail.smtpServer           = &quot;smtp.gmail.com&quot;</span>
</span><span class='line'><span class="x">kebab.mail.config.ssl           = &quot;tls&quot;</span>
</span><span class='line'><span class="x">kebab.mail.config.auth          = &quot;login&quot;</span>
</span><span class='line'><span class="x">kebab.mail.config.port          = &quot;587&quot;</span>
</span><span class='line'><span class="x">kebab.mail.config.username      = &quot;onur.ozgur.ozkan@lab2023.com&quot;</span>
</span><span class='line'><span class="x">kebab.mail.config.from          = &quot;onur.ozgur.ozkan@lab2023.com&quot;</span>
</span><span class='line'><span class="x">kebab.mail.config.password      = &quot;your_password&quot;</span>
</span></code></pre></td></tr></table></div></figure>


<p>Secondly, we write our actions</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
<span class='line-number'>13</span>
<span class='line-number'>14</span>
<span class='line-number'>15</span>
<span class='line-number'>16</span>
<span class='line-number'>17</span>
<span class='line-number'>18</span>
<span class='line-number'>19</span>
<span class='line-number'>20</span>
<span class='line-number'>21</span>
<span class='line-number'>22</span>
<span class='line-number'>23</span>
<span class='line-number'>24</span>
<span class='line-number'>25</span>
<span class='line-number'>26</span>
<span class='line-number'>27</span>
<span class='line-number'>28</span>
<span class='line-number'>29</span>
<span class='line-number'>30</span>
<span class='line-number'>31</span>
<span class='line-number'>32</span>
<span class='line-number'>33</span>
<span class='line-number'>34</span>
</pre></td><td class='code'><pre><code class='php'><span class='line'><span class="cp">&lt;?php</span>
</span><span class='line'>
</span><span class='line'><span class="k">class</span> <span class="nc">TestController</span> <span class="nx">extend</span> <span class="nx">Kebab_Controller_Action</span>
</span><span class='line'><span class="p">{</span>
</span><span class='line'>    <span class="k">public</span> <span class="k">function</span> <span class="nf">contactAction</span><span class="p">()</span>
</span><span class='line'>    <span class="p">{</span>
</span><span class='line'>        <span class="k">if</span> <span class="p">(</span><span class="nv">$this</span><span class="o">-&gt;</span><span class="na">getRequest</span><span class="p">()</span><span class="o">-&gt;</span><span class="na">isPost</span><span class="p">())</span> <span class="p">{</span>
</span><span class='line'>            <span class="nv">$param</span> <span class="o">=</span> <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">_helper</span><span class="o">-&gt;</span><span class="na">param</span><span class="p">();</span>
</span><span class='line'>            <span class="c1">// $param = array(&#39;name&#39; =&gt; &#39;Visiter Name&#39;, &#39;email&#39; =&gt; &#39;visiter@email.com&#39;, &#39;body&#39; =&gt; &#39;Hi, This is a message body&#39;);</span>
</span><span class='line'>            <span class="nv">$configParam</span> <span class="o">=</span> <span class="nx">Zend_Registry</span><span class="o">::</span><span class="na">get</span><span class="p">(</span><span class="s1">&#39;config&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">kebab</span><span class="o">-&gt;</span><span class="na">mail</span><span class="p">;</span>
</span><span class='line'>            <span class="nv">$smtpServer</span> <span class="o">=</span> <span class="nv">$configParam</span><span class="o">-&gt;</span><span class="na">smtpServer</span><span class="p">;</span>
</span><span class='line'>            <span class="nv">$config</span> <span class="o">=</span> <span class="nv">$configParam</span><span class="o">-&gt;</span><span class="na">config</span><span class="o">-&gt;</span><span class="na">toArray</span><span class="p">();</span>
</span><span class='line'>
</span><span class='line'>            <span class="c1">// Mail phtml</span>
</span><span class='line'>            <span class="nv">$view</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Zend_View</span><span class="p">;</span>
</span><span class='line'>            <span class="nv">$view</span><span class="o">-&gt;</span><span class="na">setScriptPath</span><span class="p">(</span><span class="nx">APPLICATION_PATH</span> <span class="o">.</span> <span class="s1">&#39;/views/mails/&#39;</span><span class="p">);</span> <span class="c1">// we create a contact.phtml for send email</span>
</span><span class='line'>            <span class="nv">$view</span><span class="o">-&gt;</span><span class="na">assign</span><span class="p">(</span><span class="s1">&#39;name&#39;</span><span class="p">,</span> <span class="nv">$param</span><span class="p">[</span><span class="s1">&#39;name&#39;</span><span class="p">]);</span>
</span><span class='line'>            <span class="nv">$view</span><span class="o">-&gt;</span><span class="na">assign</span><span class="p">(</span><span class="s1">&#39;email&#39;</span><span class="p">,</span> <span class="nv">$param</span><span class="p">[</span><span class="s1">&#39;email&#39;</span><span class="p">]);</span>
</span><span class='line'>            <span class="nv">$view</span><span class="o">-&gt;</span><span class="na">assign</span><span class="p">(</span><span class="s1">&#39;body&#39;</span><span class="p">,</span> <span class="nb">nl2br</span><span class="p">(</span><span class="nv">$param</span><span class="p">[</span><span class="s1">&#39;body&#39;</span><span class="p">]));</span>
</span><span class='line'>
</span><span class='line'>            <span class="nv">$transport</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Zend_Mail_Transport_Smtp</span><span class="p">(</span><span class="nv">$smtpServer</span><span class="p">,</span> <span class="nv">$config</span><span class="p">);</span>
</span><span class='line'>            <span class="nv">$mail</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Zend_Mail</span><span class="p">(</span><span class="s1">&#39;UTF-8&#39;</span><span class="p">);</span>
</span><span class='line'>            <span class="nv">$mail</span><span class="o">-&gt;</span><span class="na">setFrom</span><span class="p">(</span><span class="nv">$configParam</span><span class="o">-&gt;</span><span class="na">from</span><span class="p">,</span> <span class="s1">&#39;Contact Form from - &#39;</span><span class="o">.</span> <span class="nv">$param</span><span class="p">[</span><span class="s1">&#39;name&#39;</span><span class="p">]);</span>
</span><span class='line'>            <span class="nv">$mail</span><span class="o">-&gt;</span><span class="na">addTo</span><span class="p">(</span><span class="nv">$param</span><span class="p">[</span><span class="s1">&#39;email&#39;</span><span class="p">],</span> <span class="nv">$param</span><span class="p">[</span><span class="s1">&#39;name&#39;</span><span class="p">]);</span>
</span><span class='line'>            <span class="nv">$mail</span><span class="o">-&gt;</span><span class="na">setSubject</span><span class="p">(</span><span class="s1">&#39;Contact Form from - &#39;</span><span class="o">.</span> <span class="nv">$param</span><span class="p">[</span><span class="s1">&#39;name&#39;</span><span class="p">]);</span>
</span><span class='line'>            <span class="nv">$mail</span><span class="o">-&gt;</span><span class="na">setBodyHtml</span><span class="p">(</span><span class="nv">$view</span><span class="o">-&gt;</span><span class="na">render</span><span class="p">(</span><span class="s1">&#39;contact.phtml&#39;</span><span class="p">));</span>
</span><span class='line'>            <span class="nv">$mail</span><span class="o">-&gt;</span><span class="na">send</span><span class="p">(</span><span class="nv">$transport</span><span class="p">);</span>
</span><span class='line'>
</span><span class='line'>            <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">_helper</span><span class="o">-&gt;</span><span class="na">response</span><span class="p">(</span><span class="k">true</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">getResponse</span><span class="p">();</span> <span class="c1">// send success response json format</span>
</span><span class='line'>        <span class="p">}</span>
</span><span class='line'>
</span><span class='line'>        <span class="c1">// Show contact.form.phtml which user fill and send</span>
</span><span class='line'>    <span class="p">}</span>
</span><span class='line'><span class="p">}</span>
</span></code></pre></td></tr></table></div></figure>


<p>This is our /view/mails/contact.phtml</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
</pre></td><td class='code'><pre><code class='php'><span class='line'><span class="x">&lt;h1&gt;</span><span class="cp">&lt;?php</span> <span class="k">echo</span> <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">translate</span><span class="p">(</span><span class="s1">&#39;Contact Form&#39;</span><span class="p">);</span> <span class="cp">?&gt;</span><span class="x">&lt;/h1&gt;</span>
</span><span class='line'><span class="x">&lt;h2&gt;</span><span class="cp">&lt;?php</span> <span class="k">echo</span> <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">translate</span><span class="p">(</span><span class="s1">&#39;Sender&#39;</span><span class="p">);</span> <span class="cp">?&gt;</span><span class="x"> : </span><span class="cp">&lt;?php</span> <span class="k">echo</span> <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">name</span><span class="p">;</span> <span class="cp">?&gt;</span><span class="x"> - </span><span class="cp">&lt;?php</span> <span class="k">echo</span> <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">email</span><span class="p">;</span> <span class="cp">?&gt;</span><span class="x">&lt;/h2&gt;</span>
</span><span class='line'><span class="x">&lt;p&gt;</span><span class="cp">&lt;?php</span> <span class="k">echo</span> <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">body</span><span class="p">;</span> <span class="cp">?&gt;</span><span class="x">&lt;/p&gt;</span>
</span></code></pre></td></tr></table></div></figure>


<p>Now you need a view form send form.</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
</pre></td><td class='code'><pre><code class='php'><span class='line'><span class="cp">&lt;?php</span>
</span><span class='line'><span class="nv">$this</span><span class="o">-&gt;</span><span class="na">headTitle</span><span class="p">(</span><span class="nv">$this</span><span class="o">-&gt;</span><span class="na">translate</span><span class="p">(</span><span class="s1">&#39;Contact&#39;</span><span class="p">));</span>
</span><span class='line'><span class="nv">$this</span><span class="o">-&gt;</span><span class="na">headScript</span><span class="p">()</span><span class="o">-&gt;</span><span class="na">prependFile</span><span class="p">(</span><span class="nv">$this</span><span class="o">-&gt;</span><span class="na">asset</span><span class="p">(</span><span class="s1">&#39;frontend/javascripts/contact.js&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">get</span><span class="p">(</span><span class="k">false</span><span class="p">));</span>
</span><span class='line'><span class="cp">?&gt;</span><span class="x"></span>
</span><span class='line'>
</span><span class='line'><span class="x">&lt;div class=&quot;rounded contents&quot;&gt;</span>
</span><span class='line'><span class="x">    &lt;h1&gt;Contact&lt;/h1&gt;</span>
</span><span class='line'><span class="x">    &lt;p&gt;Please touch as&lt;/p&gt;</span>
</span><span class='line'><span class="x">    &lt;br /&gt;</span>
</span><span class='line'><span class="x">    &lt;div id=&quot;form-wrapper&quot;&gt;&lt;/div&gt;</span>
</span><span class='line'><span class="x">&lt;/div&gt;</span>
</span></code></pre></td></tr></table></div></figure>


<p>And javascript file for ajax <b>web/assets/frontend/javascripts/contact-debug.js</b></p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
<span class='line-number'>13</span>
<span class='line-number'>14</span>
<span class='line-number'>15</span>
<span class='line-number'>16</span>
<span class='line-number'>17</span>
<span class='line-number'>18</span>
<span class='line-number'>19</span>
<span class='line-number'>20</span>
<span class='line-number'>21</span>
<span class='line-number'>22</span>
<span class='line-number'>23</span>
<span class='line-number'>24</span>
<span class='line-number'>25</span>
<span class='line-number'>26</span>
<span class='line-number'>27</span>
<span class='line-number'>28</span>
<span class='line-number'>29</span>
<span class='line-number'>30</span>
<span class='line-number'>31</span>
<span class='line-number'>32</span>
<span class='line-number'>33</span>
<span class='line-number'>34</span>
<span class='line-number'>35</span>
<span class='line-number'>36</span>
<span class='line-number'>37</span>
<span class='line-number'>38</span>
<span class='line-number'>39</span>
<span class='line-number'>40</span>
<span class='line-number'>41</span>
<span class='line-number'>42</span>
<span class='line-number'>43</span>
<span class='line-number'>44</span>
<span class='line-number'>45</span>
<span class='line-number'>46</span>
<span class='line-number'>47</span>
<span class='line-number'>48</span>
<span class='line-number'>49</span>
<span class='line-number'>50</span>
<span class='line-number'>51</span>
<span class='line-number'>52</span>
<span class='line-number'>53</span>
<span class='line-number'>54</span>
<span class='line-number'>55</span>
<span class='line-number'>56</span>
<span class='line-number'>57</span>
<span class='line-number'>58</span>
<span class='line-number'>59</span>
<span class='line-number'>60</span>
<span class='line-number'>61</span>
<span class='line-number'>62</span>
<span class='line-number'>63</span>
<span class='line-number'>64</span>
<span class='line-number'>65</span>
<span class='line-number'>66</span>
<span class='line-number'>67</span>
<span class='line-number'>68</span>
<span class='line-number'>69</span>
<span class='line-number'>70</span>
<span class='line-number'>71</span>
<span class='line-number'>72</span>
</pre></td><td class='code'><pre><code class='javascript'><span class='line'><span class="nx">Contact</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(){</span>
</span><span class='line'>
</span><span class='line'>    <span class="k">return</span> <span class="p">{</span>
</span><span class='line'>
</span><span class='line'>        <span class="cm">/**</span>
</span><span class='line'><span class="cm">         * Application initializer</span>
</span><span class='line'><span class="cm">         * @return void</span>
</span><span class='line'><span class="cm">         */</span>
</span><span class='line'>        <span class="nx">init</span><span class="o">:</span> <span class="kd">function</span><span class="p">(){</span>
</span><span class='line'>
</span><span class='line'>            <span class="k">new</span> <span class="nx">Ext</span><span class="p">.</span><span class="nx">FormPanel</span><span class="p">({</span>
</span><span class='line'>                <span class="nx">id</span><span class="o">:</span> <span class="s1">&#39;contact-form&#39;</span><span class="p">,</span>
</span><span class='line'>                <span class="nx">renderTo</span><span class="o">:</span> <span class="s1">&#39;form-wrapper&#39;</span><span class="p">,</span>
</span><span class='line'>                <span class="nx">url</span><span class="o">:</span> <span class="nx">BASE_URL</span> <span class="o">+</span> <span class="s1">&#39;/test/contact&#39;</span><span class="p">,</span>
</span><span class='line'>                <span class="nx">frame</span><span class="o">:</span><span class="kc">true</span><span class="p">,</span>
</span><span class='line'>                <span class="nx">bodyStyle</span><span class="o">:</span><span class="s1">&#39;padding:5px&#39;</span><span class="p">,</span>
</span><span class='line'>                <span class="nx">autoHeight</span><span class="o">:</span> <span class="kc">true</span><span class="p">,</span>
</span><span class='line'>                <span class="nx">defaultType</span><span class="o">:</span> <span class="s1">&#39;textfield&#39;</span><span class="p">,</span>
</span><span class='line'>                <span class="nx">defaults</span><span class="o">:</span> <span class="p">{</span>
</span><span class='line'>                    <span class="nx">anchor</span><span class="o">:</span> <span class="s1">&#39;100%&#39;</span><span class="p">,</span>
</span><span class='line'>                    <span class="nx">height</span><span class="o">:</span> <span class="mi">50</span>
</span><span class='line'>                <span class="p">},</span>
</span><span class='line'>                <span class="nx">labelAlign</span><span class="o">:</span> <span class="s1">&#39;top&#39;</span><span class="p">,</span>
</span><span class='line'>                <span class="nx">waitMsgTarget</span><span class="o">:</span> <span class="kc">true</span><span class="p">,</span>
</span><span class='line'>                <span class="nx">items</span><span class="o">:</span> <span class="p">[{</span>
</span><span class='line'>                        <span class="nx">fieldLabel</span><span class="o">:</span> <span class="s1">&#39;Name&#39;</span><span class="p">,</span>
</span><span class='line'>                        <span class="nx">name</span><span class="o">:</span> <span class="s1">&#39;name&#39;</span><span class="p">,</span>
</span><span class='line'>                        <span class="nx">allowBlank</span><span class="o">:</span><span class="kc">false</span>
</span><span class='line'>                    <span class="p">},{</span>
</span><span class='line'>                        <span class="nx">fieldLabel</span><span class="o">:</span> <span class="s1">&#39;Email&#39;</span><span class="p">,</span>
</span><span class='line'>                        <span class="nx">name</span><span class="o">:</span> <span class="s1">&#39;email&#39;</span><span class="p">,</span>
</span><span class='line'>                        <span class="nx">vtype</span><span class="o">:</span><span class="s1">&#39;email&#39;</span>
</span><span class='line'>                    <span class="p">},{</span>
</span><span class='line'>                        <span class="nx">fieldLabel</span><span class="o">:</span> <span class="s1">&#39;Message&#39;</span><span class="p">,</span>
</span><span class='line'>                        <span class="nx">xtype</span><span class="o">:</span> <span class="s1">&#39;textarea&#39;</span><span class="p">,</span>
</span><span class='line'>                        <span class="nx">height</span><span class="o">:</span> <span class="mi">100</span><span class="p">,</span>
</span><span class='line'>                        <span class="nx">name</span><span class="o">:</span> <span class="s1">&#39;body&#39;</span>
</span><span class='line'>                    <span class="p">}</span>
</span><span class='line'>                <span class="p">],</span>
</span><span class='line'>                <span class="nx">buttons</span><span class="o">:</span> <span class="p">[{</span>
</span><span class='line'>                    <span class="nx">text</span><span class="o">:</span> <span class="s1">&#39;Gönder&#39;</span><span class="p">,</span>
</span><span class='line'>                    <span class="nx">handler</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">btn</span><span class="p">)</span> <span class="p">{</span>
</span><span class='line'>                        <span class="k">this</span><span class="p">.</span><span class="nx">sendContactAction</span><span class="p">(</span><span class="nx">btn</span><span class="p">);</span>
</span><span class='line'>                    <span class="p">},</span>
</span><span class='line'>                    <span class="nx">scope</span><span class="o">:</span><span class="k">this</span>
</span><span class='line'>                <span class="p">}]</span>
</span><span class='line'>            <span class="p">});</span>
</span><span class='line'>        <span class="p">},</span>
</span><span class='line'>
</span><span class='line'>        <span class="nx">sendContactAction</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">btn</span><span class="p">)</span> <span class="p">{</span>
</span><span class='line'>            <span class="kd">var</span> <span class="nx">form</span> <span class="o">=</span> <span class="nx">Ext</span><span class="p">.</span><span class="nx">getCmp</span><span class="p">(</span><span class="s1">&#39;contact-form&#39;</span><span class="p">).</span><span class="nx">getForm</span><span class="p">();</span>
</span><span class='line'>            <span class="k">if</span> <span class="p">(</span><span class="nx">form</span><span class="p">.</span><span class="nx">isValid</span><span class="p">())</span> <span class="p">{</span>
</span><span class='line'>                <span class="nx">btn</span><span class="p">.</span><span class="nx">disable</span><span class="p">();</span>
</span><span class='line'>                <span class="nx">form</span><span class="p">.</span><span class="nx">submit</span><span class="p">({</span>
</span><span class='line'>                    <span class="nx">url</span><span class="o">:</span> <span class="nx">form</span><span class="p">.</span><span class="nx">url</span><span class="p">,</span>
</span><span class='line'>                    <span class="nx">waitMsg</span><span class="o">:</span> <span class="s1">&#39;Sending...&#39;</span><span class="p">,</span>
</span><span class='line'>                    <span class="nx">success</span><span class="o">:</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
</span><span class='line'>                        <span class="nx">btn</span><span class="p">.</span><span class="nx">enable</span><span class="p">();</span>
</span><span class='line'>                        <span class="nx">Ext</span><span class="p">.</span><span class="nx">fly</span><span class="p">(</span><span class="s1">&#39;contact-form&#39;</span><span class="p">).</span><span class="nx">remove</span><span class="p">();</span>
</span><span class='line'>                        <span class="nx">Ext</span><span class="p">.</span><span class="nx">fly</span><span class="p">(</span><span class="s1">&#39;form-wrapper&#39;</span><span class="p">).</span><span class="nx">update</span><span class="p">(</span><span class="s1">&#39;&lt;p&gt;Your message has been send. Thank you...&lt;/p&gt;&#39;</span><span class="p">);</span>
</span><span class='line'>                    <span class="p">},</span>
</span><span class='line'>                    <span class="nx">failure</span><span class="o">:</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
</span><span class='line'>                        <span class="nx">btn</span><span class="p">.</span><span class="nx">enable</span><span class="p">();</span>
</span><span class='line'>                    <span class="p">}</span>
</span><span class='line'>                <span class="p">})</span>
</span><span class='line'>            <span class="p">}</span>
</span><span class='line'>        <span class="p">}</span>
</span><span class='line'>
</span><span class='line'>    <span class="p">}</span>
</span><span class='line'><span class="p">}();</span>
</span><span class='line'>
</span><span class='line'><span class="nx">Ext</span><span class="p">.</span><span class="nx">onReady</span><span class="p">(</span><span class="nx">Contact</span><span class="p">.</span><span class="nx">init</span><span class="p">,</span> <span class="nx">Contact</span><span class="p">);</span>
</span></code></pre></td></tr></table></div></figure>


<p>Thats all.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Text and String at Ruby]]></title>
    <link href="http://onurozgurozkan.github.com/blog/2011/07/10/text-and-string-at-ruby/"/>
    <updated>2011-07-10T22:19:00+03:00</updated>
    <id>http://onurozgurozkan.github.com/blog/2011/07/10/text-and-string-at-ruby</id>
    <content type="html"><![CDATA[<p>First of all, remember that everything are object at ruby.</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
</pre></td><td class='code'><pre><code class='ruby'><span class='line'><span class="nb">puts</span> <span class="o">&amp;</span><span class="n">amp</span><span class="p">;</span><span class="n">quot</span><span class="p">;</span><span class="no">Hello</span><span class="p">,</span> <span class="n">world!</span><span class="o">&amp;</span><span class="n">amp</span><span class="p">;</span><span class="n">quot</span><span class="p">;</span><span class="o">.</span><span class="n">class</span>
</span><span class='line'>
</span><span class='line'><span class="c1"># Output</span>
</span><span class='line'><span class="c1"># String</span>
</span></code></pre></td></tr></table></div></figure>


<!--more-->


<p>You can add and compare the string</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
</pre></td><td class='code'><pre><code class='ruby'><span class='line'><span class="n">a</span> <span class="o">=</span> <span class="s1">&#39;First&#39;</span>
</span><span class='line'><span class="n">b</span> <span class="o">=</span> <span class="s1">&#39;Second&#39;</span>
</span><span class='line'><span class="nb">puts</span> <span class="o">&amp;</span><span class="n">amp</span><span class="p">;</span><span class="n">quot</span><span class="p">;</span><span class="no">Success</span><span class="o">!&amp;</span><span class="n">amp</span><span class="p">;</span><span class="n">quot</span><span class="p">;</span> <span class="k">if</span> <span class="n">a</span> <span class="o">+</span> <span class="n">b</span> <span class="o">==</span> <span class="o">&amp;</span><span class="n">amp</span><span class="p">;</span><span class="n">quot</span><span class="p">;</span><span class="no">FirstSecond</span><span class="o">&amp;</span><span class="n">amp</span><span class="p">;</span><span class="n">quot</span><span class="p">;</span>
</span><span class='line'>
</span><span class='line'><span class="c1"># Output</span>
</span><span class='line'><span class="c1"># Success!</span>
</span></code></pre></td></tr></table></div></figure>


<p>Using quotation mark is only viable for a single line, but if you want to span multiple lines, you can do like that</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
</pre></td><td class='code'><pre><code class='ruby'><span class='line'><span class="n">text</span> <span class="o">=</span> <span class="sx">%q{This text is</span>
</span><span class='line'><span class="sx">multi line capabilities}</span>
</span></code></pre></td></tr></table></div></figure>


<p>You can use any delimiters of your choice.</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
</pre></td><td class='code'><pre><code class='ruby'><span class='line'><span class="n">text</span> <span class="o">=</span> <span class="sx">%q&amp;amp;lt;This text is</span>
</span><span class='line'><span class="sx">multi line capabilities&amp;</span><span class="n">amp</span><span class="p">;</span><span class="n">gt</span><span class="p">;</span>
</span></code></pre></td></tr></table></div></figure>


<p>Here document is</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
</pre></td><td class='code'><pre><code class='ruby'><span class='line'><span class="n">text</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">amp</span><span class="p">;</span><span class="n">lt</span><span class="p">;</span><span class="o">&amp;</span><span class="n">amp</span><span class="p">;</span><span class="n">lt</span><span class="p">;</span><span class="no">END_MY_STRING_PLEASE</span>
</span><span class='line'><span class="no">This</span> <span class="n">is</span> <span class="n">the</span> <span class="n">string</span>
</span><span class='line'><span class="no">And</span> <span class="n">a</span> <span class="n">second</span> <span class="n">line</span>
</span><span class='line'><span class="no">END_MY_STRING_PLEASE</span>
</span></code></pre></td></tr></table></div></figure>


<p>Multiply strings</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
</pre></td><td class='code'><pre><code class='ruby'><span class='line'><span class="nb">puts</span> <span class="o">&amp;</span><span class="n">amp</span><span class="p">;</span><span class="n">quot</span><span class="p">;</span><span class="n">dudu1</span><span class="o">&amp;</span><span class="n">amp</span><span class="p">;</span><span class="n">quot</span><span class="p">;</span> <span class="o">*</span> <span class="mi">5</span>
</span><span class='line'>
</span><span class='line'><span class="c1"># Output</span>
</span><span class='line'><span class="c1"># dudu1dudu1dudu1dudu1dudu1</span>
</span></code></pre></td></tr></table></div></figure>


<p>Greater than or less than</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
</pre></td><td class='code'><pre><code class='ruby'><span class='line'><span class="nb">puts</span> <span class="o">&amp;</span><span class="n">amp</span><span class="p">;</span><span class="n">quot</span><span class="p">;</span><span class="n">x</span><span class="o">&amp;</span><span class="n">amp</span><span class="p">;</span><span class="n">quot</span><span class="p">;</span> <span class="o">&amp;</span><span class="n">amp</span><span class="p">;</span><span class="n">gt</span><span class="p">;</span> <span class="o">&amp;</span><span class="n">amp</span><span class="p">;</span><span class="n">quot</span><span class="p">;</span><span class="n">y</span><span class="o">&amp;</span><span class="n">amp</span><span class="p">;</span><span class="n">quot</span><span class="p">;</span>
</span><span class='line'>
</span><span class='line'><span class="c1"># output</span>
</span><span class='line'><span class="c1"># false</span>
</span><span class='line'>
</span><span class='line'>
</span><span class='line'><span class="nb">puts</span> <span class="o">&amp;</span><span class="n">amp</span><span class="p">;</span><span class="n">quot</span><span class="p">;</span><span class="n">x</span><span class="o">&amp;</span><span class="n">amp</span><span class="p">;</span><span class="n">quot</span><span class="p">;</span> <span class="o">&amp;</span><span class="n">amp</span><span class="p">;</span><span class="n">lt</span><span class="p">;</span> <span class="o">&amp;</span><span class="n">amp</span><span class="p">;</span><span class="n">quot</span><span class="p">;</span><span class="n">y</span><span class="o">&amp;</span><span class="n">amp</span><span class="p">;</span><span class="n">quot</span><span class="p">;</span>
</span><span class='line'>
</span><span class='line'><span class="c1"># output</span>
</span><span class='line'><span class="c1"># true</span>
</span></code></pre></td></tr></table></div></figure>


<p>Note : Every letter or symbol has a value, called an ASCII value. You can see them with ? operator.</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
</pre></td><td class='code'><pre><code class='ruby'><span class='line'><span class="nb">puts</span> <span class="sc">?x</span>
</span><span class='line'>
</span><span class='line'><span class="c1"># output</span>
</span><span class='line'><span class="c1"># 120</span>
</span><span class='line'>
</span><span class='line'><span class="nb">puts</span> <span class="sc">?A</span>
</span><span class='line'>
</span><span class='line'><span class="c1"># output</span>
</span><span class='line'><span class="c1"># 65</span>
</span></code></pre></td></tr></table></div></figure>


<p>You can achieve the inverse by using the String Class&#8217;s chr method.</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
</pre></td><td class='code'><pre><code class='ruby'><span class='line'><span class="nb">puts</span> <span class="sc">?x</span>
</span><span class='line'><span class="nb">puts</span> <span class="mi">120</span><span class="o">.</span><span class="n">chr</span>
</span><span class='line'>
</span><span class='line'><span class="c1"># output</span>
</span><span class='line'><span class="c1"># 120</span>
</span><span class='line'><span class="c1"># x</span>
</span></code></pre></td></tr></table></div></figure>


<p>Interpolation in Ruby</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
</pre></td><td class='code'><pre><code class='ruby'><span class='line'><span class="n">x</span> <span class="o">=</span> <span class="mi">10</span>
</span><span class='line'><span class="n">y</span> <span class="o">=</span> <span class="mi">20</span>
</span><span class='line'><span class="nb">puts</span> <span class="o">&amp;</span><span class="n">amp</span><span class="p">;</span><span class="n">quot</span><span class="p">;</span><span class="c1">#{x} + #{y} = #{x + y}&amp;amp;quot;</span>
</span><span class='line'>
</span><span class='line'><span class="c1"># output</span>
</span><span class='line'><span class="c1"># 10 + 20 = 30</span>
</span></code></pre></td></tr></table></div></figure>


<p>Best Regards.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[List Management and Kebab_List Classes]]></title>
    <link href="http://onurozgurozkan.github.com/blog/2011/07/03/list-management-and-kebab-list-classes/"/>
    <updated>2011-07-03T22:59:00+03:00</updated>
    <id>http://onurozgurozkan.github.com/blog/2011/07/03/list-management-and-kebab-list-classes</id>
    <content type="html"><![CDATA[<p><a href="http://www.birekmek.com">birekmek.com</a>, our last project at company, was very strange and interest project. The aim of project is choice best supplier for customers. At this project we use a lot of list and flow cart. Lets give some example; <!--more--></p>

<p><b>Member Status</b></p>

<ol>
    <li><strong>Pending</strong>: give email and username waiting activation email</li>
    <li><strong>Activation</strong>: click the activation mail and actived profile</li>
    <li><strong>Approved</strong>: admin approved the user</li>
    <li><strong>Block</strong>: admin blocked the user</li>
</ol>


<p><b>Order Status</b></p>

<ol>
    <li><strong>sms</strong>: waiting sms activation code</li>
    <li><strong>create</strong>: when order starts</li>
    <li><strong>preparation</strong>: when system decides the supplier</li>
    <li><strong>shipping</strong>: when supplier starts shipping</li>
    <li><strong>delivery</strong>: when delivery is finised</li>
    <li><strong>noservice</strong>: If no supplier accepts the order</li>
    <li><strong>norouting</strong>: ıf there isn&#8217;t any available supplier </li>
    <li><strong>nothouse</strong>: customer isn&#8217;t at house</li>
    <li><strong>notaccept</strong>: customer doesn&#8217;t accept the good or service</li>
    <li><strong>cancel</strong>: order is canceled</li>
</ol>


<p>At this project the main problem is our customer, owner of project, want to having right change each resource at admin panel. Normally system knows the flow charts but admin may be not know because system is computer but admin is human. So we need to check admin&#8217;s choices right options.</p>

<p>Lets give details examples;</p>

<ol>
    <li>User want to sign up  so he/she fills the form and waits mail. Now his/her statu is <b>pending</b>. He/she can pass <a>activation, block</a> not approved.</li>
    <li>User clicks the activation mail. Now his/her statu is <b>activation</b>. Status can pass <a>approved, block</a> not pending becaouse we check the email.</li>
</ol>


<p>Simple we can say that status can pass all other. There is a rule.</p>

<ol>
    <li>Customer wanna give order. If his/her first order, we sent SMS. Now order statu is <b>sms</b>. After sms status, order&#8217;s statu can pass create or cancel</li>
    <li>After preparation status, order can&#8217;t cancel because system make a deal with between customer and supplier at that moment.</li>
</ol>


<p>So if system&#8217;s admin wanna change order status from preparation to create or cancel. System couldn&#8217;t be calculate statistics right. This is the main problem! What is the solution?</p>

<p>I have wrote classes, <a href="https://github.com/lab2023/kebab-project/blob/master/library/Kebab/List.php" target="_blank">Kebab_List</a> overs this problem. The solution is simple we write a rules array and manage the passing between status. First how to use?</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
<span class='line-number'>13</span>
<span class='line-number'>14</span>
</pre></td><td class='code'><pre><code class='php'><span class='line'><span class="cp">&lt;?php</span>
</span><span class='line'>
</span><span class='line'><span class="nv">$rules</span> <span class="o">=</span> <span class="k">array</span><span class="p">(</span>
</span><span class='line'>    <span class="s1">&#39;A&#39;</span> <span class="o">=&gt;</span> <span class="k">array</span><span class="p">(</span><span class="s1">&#39;B&#39;</span><span class="p">,</span> <span class="s1">&#39;C&#39;</span><span class="p">),</span>
</span><span class='line'>    <span class="s1">&#39;B&#39;</span> <span class="o">=&gt;</span> <span class="k">array</span><span class="p">(</span><span class="s1">&#39;C&#39;</span><span class="p">,</span> <span class="s1">&#39;D&#39;</span><span class="p">),</span>
</span><span class='line'>    <span class="s1">&#39;C&#39;</span> <span class="o">=&gt;</span> <span class="k">array</span><span class="p">(</span><span class="s1">&#39;A&#39;</span><span class="p">,</span> <span class="s1">&#39;D&#39;</span><span class="p">),</span>
</span><span class='line'>    <span class="s1">&#39;D&#39;</span> <span class="o">=&gt;</span> <span class="k">array</span><span class="p">()</span>
</span><span class='line'><span class="p">);</span>
</span><span class='line'>
</span><span class='line'><span class="c1">// Create instance</span>
</span><span class='line'><span class="nv">$list</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Kebab_List</span><span class="p">();</span>
</span><span class='line'>
</span><span class='line'><span class="c1">// Set Rules</span>
</span><span class='line'><span class="nv">$list</span><span class="o">-&gt;</span><span class="na">setRules</span><span class="p">(</span><span class="nv">$rules</span><span class="p">);</span>
</span></code></pre></td></tr></table></div></figure>


<p>Get all rules</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
</pre></td><td class='code'><pre><code class='php'><span class='line'><span class="x">$list-&gt;getRules();</span>
</span><span class='line'><span class="x">/* return  array(</span>
</span><span class='line'><span class="x">    &#39;A&#39; =&gt; array(&#39;B&#39;, &#39;C&#39;),</span>
</span><span class='line'><span class="x">    &#39;B&#39; =&gt; array(&#39;C&#39;, &#39;D&#39;),</span>
</span><span class='line'><span class="x">    &#39;C&#39; =&gt; array(&#39;A&#39;, &#39;D&#39;),</span>
</span><span class='line'><span class="x">    &#39;D&#39; =&gt; array()</span>
</span><span class='line'><span class="x">); */</span>
</span></code></pre></td></tr></table></div></figure>


<p>Check rights</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
</pre></td><td class='code'><pre><code class='php'><span class='line'><span class="x">$list-&gt;canPass(&#39;A&#39;, &#39;B&#39;); //true</span>
</span><span class='line'><span class="x">$list-&gt;canPass(&#39;B&#39;, &#39;E&#39;); //false</span>
</span><span class='line'><span class="x">$list-&gt;canPass(&#39;D&#39;, &#39;B&#39;); //false</span>
</span></code></pre></td></tr></table></div></figure>


<p>Check the items exist</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
</pre></td><td class='code'><pre><code class='php'><span class='line'><span class="x">$list-&gt;hasItem(&#39;A&#39;) // true</span>
</span><span class='line'><span class="x">$list-&gt;hasItem(&#39;X&#39;); //false</span>
</span></code></pre></td></tr></table></div></figure>


<p>Set item</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
</pre></td><td class='code'><pre><code class='php'><span class='line'><span class="x">$list-&gt;canPass(&#39;D&#39;, &#39;B&#39;); //false</span>
</span><span class='line'><span class="x">$list-&gt;setItem(&#39;D&#39;, array(&#39;B&#39;, &#39;C&#39;));</span>
</span><span class='line'><span class="x">$list-&gt;canPass(&#39;D&#39;, &#39;B&#39;); //true</span>
</span></code></pre></td></tr></table></div></figure>


<p>Get item</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
</pre></td><td class='code'><pre><code class='php'><span class='line'><span class="x">$list-&gt;getItem(&#39;A&#39;); // return array(&#39;B&#39;, &#39;C&#39;);</span>
</span><span class='line'><span class="x">$list-&gt;getItem(&#39;D&#39;); // return array(&#39;B&#39;, &#39;C&#39;);</span>
</span></code></pre></td></tr></table></div></figure>


<p>In the future i want to integrate this classes with Kebab_Translate helper and Doctrine enum data type.</p>

<p>Best Regards.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Develop a simple installer for Kebab Project On PHP CLI - II]]></title>
    <link href="http://onurozgurozkan.github.com/blog/2011/06/11/develop-a-simple-installer-for-kebab-project-on-php-cli-ii/"/>
    <updated>2011-06-11T23:38:00+03:00</updated>
    <id>http://onurozgurozkan.github.com/blog/2011/06/11/develop-a-simple-installer-for-kebab-project-on-php-cli-ii</id>
    <content type="html"><![CDATA[<p>Last post, i introduced Kebab Project Installer on PHP CLI. First of all i want to say that i changed some codes because i was writing the code when i was writing the post in the same time. This morning i coded review and improve the codes. First of all i want to say that you can improve the codes, you can add new repository from git. But these codes are for trial not for products. If you want to use them at products, please first test them. We will start a project for Kebab Installer. You can find more codes and examples there.</p>

<!--more-->


<p>First i created a final Helper Class and add getLine and showMenu static methods.</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
<span class='line-number'>13</span>
<span class='line-number'>14</span>
</pre></td><td class='code'><pre><code class='php'><span class='line'><span class="x">final class Helper</span>
</span><span class='line'><span class="x">{</span>
</span><span class='line'><span class="x">    public static function getLine()</span>
</span><span class='line'><span class="x">    {</span>
</span><span class='line'><span class="x">        $handle = fopen (&quot;php://stdin&quot;,&quot;r&quot;);</span>
</span><span class='line'><span class="x">        return trim(fgets($handle));</span>
</span><span class='line'><span class="x">    }</span>
</span><span class='line'>
</span><span class='line'><span class="x">    public static function showMenu()</span>
</span><span class='line'><span class="x">    {</span>
</span><span class='line'><span class="x">        echo &quot;What do you install?\n&quot;</span>
</span><span class='line'><span class="x">          . &quot;1. Kebab \n&quot;;</span>
</span><span class='line'><span class="x">    }</span>
</span><span class='line'><span class="x">}</span>
</span></code></pre></td></tr></table></div></figure>


<p>Developer can use the methods like above because they are static methods.</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
</pre></td><td class='code'><pre><code class='php'><span class='line'><span class="x">$input = Helper::getLine();</span>
</span><span class='line'><span class="x">Helper::showMenu();</span>
</span></code></pre></td></tr></table></div></figure>


<p>Then i try to write a simple factory design pattern for GitHub Repository Installer. First i write a interface for Repository classes. Every repository class has to install() function.</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
</pre></td><td class='code'><pre><code class='php'><span class='line'><span class="x">interface IInstaller</span>
</span><span class='line'><span class="x">{</span>
</span><span class='line'><span class="x">    public function install();</span>
</span><span class='line'><span class="x">}</span>
</span></code></pre></td></tr></table></div></figure>


<p>Of course we should define the what is repository. So i write a abstract class Repository whose properties are name, path, url and branch.</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
</pre></td><td class='code'><pre><code class='php'><span class='line'><span class="x">abstract class Repository</span>
</span><span class='line'><span class="x">{</span>
</span><span class='line'><span class="x">    protected $name;</span>
</span><span class='line'><span class="x">    protected $path;</span>
</span><span class='line'><span class="x">    protected $url;</span>
</span><span class='line'><span class="x">    protected $branch;</span>
</span><span class='line'><span class="x">}</span>
</span></code></pre></td></tr></table></div></figure>


<p>After that i extend KebabProject Class from Repository Abstract Class and implement IInstaller interface.</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
<span class='line-number'>13</span>
<span class='line-number'>14</span>
<span class='line-number'>15</span>
<span class='line-number'>16</span>
<span class='line-number'>17</span>
<span class='line-number'>18</span>
<span class='line-number'>19</span>
<span class='line-number'>20</span>
<span class='line-number'>21</span>
<span class='line-number'>22</span>
<span class='line-number'>23</span>
<span class='line-number'>24</span>
<span class='line-number'>25</span>
</pre></td><td class='code'><pre><code class='php'><span class='line'><span class="x">class KebabProject extends Repository implements IInstaller</span>
</span><span class='line'><span class="x">{</span>
</span><span class='line'><span class="x">    protected $name = &#39;KebabProject&#39;;</span>
</span><span class='line'><span class="x">    protected $path;</span>
</span><span class='line'><span class="x">    protected $url = &#39;https://github.com/lab2023/kebab-project.git&#39;;</span>
</span><span class='line'><span class="x">    protected $branch = &#39;origin/HEAD&#39;;</span>
</span><span class='line'>
</span><span class='line'><span class="x">    public function __construct()</span>
</span><span class='line'><span class="x">    {</span>
</span><span class='line'><span class="x">        if (!is_dir($this-&gt;path = dirname(__FILE__) . &#39;/www&#39;)) {</span>
</span><span class='line'><span class="x">            mkdir($this-&gt;path, 0777, true);</span>
</span><span class='line'><span class="x">        }</span>
</span><span class='line'><span class="x">    }</span>
</span><span class='line'>
</span><span class='line'><span class="x">    public function install()</span>
</span><span class='line'><span class="x">    {</span>
</span><span class='line'><span class="x">        echo &quot;&gt; Installing $this-&gt;name\n&quot;;</span>
</span><span class='line'>
</span><span class='line'><span class="x">        if (!is_dir($this-&gt;path . &#39;/.git&#39;)) {</span>
</span><span class='line'><span class="x">           system(sprintf(&#39;git clone %s %s&#39;, escapeshellarg($this-&gt;url), escapeshellarg($this-&gt;path)));</span>
</span><span class='line'><span class="x">        }</span>
</span><span class='line'>
</span><span class='line'><span class="x">        system(sprintf(&#39;cd %s &amp;&amp; git fetch origin &amp;&amp; git reset --hard %s&#39;, escapeshellarg($this-&gt;path), escapeshellarg($this-&gt;branch)));</span>
</span><span class='line'><span class="x">    }</span>
</span><span class='line'><span class="x">}</span>
</span></code></pre></td></tr></table></div></figure>


<p>In this class $name is class name, $path is install directory, $url is git&#8217;s url from github, $branch is revision. At __construct method we check the $path and give value, if there isn&#8217;t directory, make a directory with mkdir method.</p>

<p>In install methed, first we check $this->path is a directory, if not, we run git clone $url $path method.  If $this->path is a directory we do nothing and pass other line. Then we change directory to $this->path and git fetch and git reset.</p>

<p>Of course we need a factory class and method for run this classes.</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
</pre></td><td class='code'><pre><code class='php'><span class='line'><span class="x">class Installer</span>
</span><span class='line'><span class="x">{</span>
</span><span class='line'><span class="x">    public static function factory($type)</span>
</span><span class='line'><span class="x">    {</span>
</span><span class='line'><span class="x">        return new $type();</span>
</span><span class='line'><span class="x">    }</span>
</span><span class='line'><span class="x">}</span>
</span></code></pre></td></tr></table></div></figure>


<p>This Installer class return the Repository classes. It use like that</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
<span class='line-number'>13</span>
<span class='line-number'>14</span>
</pre></td><td class='code'><pre><code class='php'><span class='line'><span class="x">// Start here</span>
</span><span class='line'><span class="x">Helper::showMenu();</span>
</span><span class='line'>
</span><span class='line'><span class="x">switch (Helper::getLine()) {</span>
</span><span class='line'><span class="x">    case &quot;1&quot;:</span>
</span><span class='line'><span class="x">        echo &quot;You wanna install Kebab Project\n&quot;;</span>
</span><span class='line'><span class="x">        $installer = Installer::factory(&#39;KebabProject&#39;);</span>
</span><span class='line'><span class="x">        $installer-&gt;install();</span>
</span><span class='line'><span class="x">        break;</span>
</span><span class='line'><span class="x">    default:</span>
</span><span class='line'><span class="x">        echo &quot;\033[31mWrong choice\033[37m\r\n&quot;;</span>
</span><span class='line'><span class="x">}</span>
</span><span class='line'>
</span><span class='line'><span class="x">exit;</span>
</span></code></pre></td></tr></table></div></figure>


<p>If we concat all the codes, we&#8217;ll get</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
<span class='line-number'>13</span>
<span class='line-number'>14</span>
<span class='line-number'>15</span>
<span class='line-number'>16</span>
<span class='line-number'>17</span>
<span class='line-number'>18</span>
<span class='line-number'>19</span>
<span class='line-number'>20</span>
<span class='line-number'>21</span>
<span class='line-number'>22</span>
<span class='line-number'>23</span>
<span class='line-number'>24</span>
<span class='line-number'>25</span>
<span class='line-number'>26</span>
<span class='line-number'>27</span>
<span class='line-number'>28</span>
<span class='line-number'>29</span>
<span class='line-number'>30</span>
<span class='line-number'>31</span>
<span class='line-number'>32</span>
<span class='line-number'>33</span>
<span class='line-number'>34</span>
<span class='line-number'>35</span>
<span class='line-number'>36</span>
<span class='line-number'>37</span>
<span class='line-number'>38</span>
<span class='line-number'>39</span>
<span class='line-number'>40</span>
<span class='line-number'>41</span>
<span class='line-number'>42</span>
<span class='line-number'>43</span>
<span class='line-number'>44</span>
<span class='line-number'>45</span>
<span class='line-number'>46</span>
<span class='line-number'>47</span>
<span class='line-number'>48</span>
<span class='line-number'>49</span>
<span class='line-number'>50</span>
<span class='line-number'>51</span>
<span class='line-number'>52</span>
<span class='line-number'>53</span>
<span class='line-number'>54</span>
<span class='line-number'>55</span>
<span class='line-number'>56</span>
<span class='line-number'>57</span>
<span class='line-number'>58</span>
<span class='line-number'>59</span>
<span class='line-number'>60</span>
<span class='line-number'>61</span>
<span class='line-number'>62</span>
<span class='line-number'>63</span>
<span class='line-number'>64</span>
<span class='line-number'>65</span>
<span class='line-number'>66</span>
<span class='line-number'>67</span>
<span class='line-number'>68</span>
<span class='line-number'>69</span>
<span class='line-number'>70</span>
<span class='line-number'>71</span>
<span class='line-number'>72</span>
<span class='line-number'>73</span>
<span class='line-number'>74</span>
<span class='line-number'>75</span>
<span class='line-number'>76</span>
<span class='line-number'>77</span>
<span class='line-number'>78</span>
<span class='line-number'>79</span>
<span class='line-number'>80</span>
</pre></td><td class='code'><pre><code class='php'><span class='line'><span class="x">#!/usr/bin/env php</span>
</span><span class='line'><span class="cp">&lt;?php</span>
</span><span class='line'>
</span><span class='line'><span class="k">final</span> <span class="k">class</span> <span class="nc">Helper</span>
</span><span class='line'><span class="p">{</span>
</span><span class='line'>    <span class="k">public</span> <span class="k">static</span> <span class="k">function</span> <span class="nf">getLine</span><span class="p">()</span>
</span><span class='line'>    <span class="p">{</span>
</span><span class='line'>        <span class="nv">$handle</span> <span class="o">=</span> <span class="nb">fopen</span> <span class="p">(</span><span class="s2">&quot;php://stdin&quot;</span><span class="p">,</span><span class="s2">&quot;r&quot;</span><span class="p">);</span>
</span><span class='line'>        <span class="k">return</span> <span class="nb">trim</span><span class="p">(</span><span class="nb">fgets</span><span class="p">(</span><span class="nv">$handle</span><span class="p">));</span>
</span><span class='line'>    <span class="p">}</span>
</span><span class='line'>
</span><span class='line'>    <span class="k">public</span> <span class="k">static</span> <span class="k">function</span> <span class="nf">showMenu</span><span class="p">()</span>
</span><span class='line'>    <span class="p">{</span>
</span><span class='line'>        <span class="k">echo</span> <span class="s2">&quot;What do you install?</span><span class="se">\n</span><span class="s2">&quot;</span>
</span><span class='line'>          <span class="o">.</span> <span class="s2">&quot;1. Kebab </span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">;</span>
</span><span class='line'>    <span class="p">}</span>
</span><span class='line'><span class="p">}</span>
</span><span class='line'>
</span><span class='line'><span class="k">interface</span> <span class="nx">IInstaller</span>
</span><span class='line'><span class="p">{</span>
</span><span class='line'>    <span class="k">public</span> <span class="k">function</span> <span class="nf">install</span><span class="p">();</span>
</span><span class='line'><span class="p">}</span>
</span><span class='line'>
</span><span class='line'><span class="k">abstract</span> <span class="k">class</span> <span class="nc">Repository</span>
</span><span class='line'><span class="p">{</span>
</span><span class='line'>    <span class="k">protected</span> <span class="nv">$name</span><span class="p">;</span>
</span><span class='line'>    <span class="k">protected</span> <span class="nv">$path</span><span class="p">;</span>
</span><span class='line'>    <span class="k">protected</span> <span class="nv">$url</span><span class="p">;</span>
</span><span class='line'>    <span class="k">protected</span> <span class="nv">$branch</span><span class="p">;</span>
</span><span class='line'><span class="p">}</span>
</span><span class='line'>
</span><span class='line'><span class="k">class</span> <span class="nc">KebabProject</span> <span class="k">extends</span> <span class="nx">Repository</span> <span class="k">implements</span> <span class="nx">IInstaller</span>
</span><span class='line'><span class="p">{</span>
</span><span class='line'>    <span class="k">protected</span> <span class="nv">$name</span> <span class="o">=</span> <span class="s1">&#39;KebabProject&#39;</span><span class="p">;</span>
</span><span class='line'>    <span class="k">protected</span> <span class="nv">$path</span><span class="p">;</span>
</span><span class='line'>    <span class="k">protected</span> <span class="nv">$url</span> <span class="o">=</span> <span class="s1">&#39;https://github.com/lab2023/kebab-project.git&#39;</span><span class="p">;</span>
</span><span class='line'>    <span class="k">protected</span> <span class="nv">$branch</span> <span class="o">=</span> <span class="s1">&#39;origin/HEAD&#39;</span><span class="p">;</span>
</span><span class='line'>
</span><span class='line'>    <span class="k">public</span> <span class="k">function</span> <span class="nf">__construct</span><span class="p">()</span>
</span><span class='line'>    <span class="p">{</span>
</span><span class='line'>        <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nb">is_dir</span><span class="p">(</span><span class="nv">$this</span><span class="o">-&gt;</span><span class="na">path</span> <span class="o">=</span> <span class="nb">dirname</span><span class="p">(</span><span class="k">__FILE__</span><span class="p">)</span> <span class="o">.</span> <span class="s1">&#39;/www&#39;</span><span class="p">))</span> <span class="p">{</span>
</span><span class='line'>            <span class="nb">mkdir</span><span class="p">(</span><span class="nv">$this</span><span class="o">-&gt;</span><span class="na">path</span><span class="p">,</span> <span class="mo">0777</span><span class="p">,</span> <span class="k">true</span><span class="p">);</span>
</span><span class='line'>        <span class="p">}</span>
</span><span class='line'>    <span class="p">}</span>
</span><span class='line'>
</span><span class='line'>    <span class="k">public</span> <span class="k">function</span> <span class="nf">install</span><span class="p">()</span>
</span><span class='line'>    <span class="p">{</span>
</span><span class='line'>        <span class="k">echo</span> <span class="s2">&quot;&gt; Installing </span><span class="si">$this-&gt;name</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">;</span>
</span><span class='line'>
</span><span class='line'>        <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nb">is_dir</span><span class="p">(</span><span class="nv">$this</span><span class="o">-&gt;</span><span class="na">path</span> <span class="o">.</span> <span class="s1">&#39;/.git&#39;</span><span class="p">))</span> <span class="p">{</span>
</span><span class='line'>           <span class="nb">system</span><span class="p">(</span><span class="nb">sprintf</span><span class="p">(</span><span class="s1">&#39;git clone %s %s&#39;</span><span class="p">,</span> <span class="nb">escapeshellarg</span><span class="p">(</span><span class="nv">$this</span><span class="o">-&gt;</span><span class="na">url</span><span class="p">),</span> <span class="nb">escapeshellarg</span><span class="p">(</span><span class="nv">$this</span><span class="o">-&gt;</span><span class="na">path</span><span class="p">)));</span>
</span><span class='line'>        <span class="p">}</span>
</span><span class='line'>
</span><span class='line'>        <span class="nb">system</span><span class="p">(</span><span class="nb">sprintf</span><span class="p">(</span><span class="s1">&#39;cd %s &amp;&amp; git fetch origin &amp;&amp; git reset --hard %s&#39;</span><span class="p">,</span> <span class="nb">escapeshellarg</span><span class="p">(</span><span class="nv">$this</span><span class="o">-&gt;</span><span class="na">path</span><span class="p">),</span> <span class="nb">escapeshellarg</span><span class="p">(</span><span class="nv">$this</span><span class="o">-&gt;</span><span class="na">branch</span><span class="p">)));</span>
</span><span class='line'>    <span class="p">}</span>
</span><span class='line'><span class="p">}</span>
</span><span class='line'>
</span><span class='line'><span class="k">class</span> <span class="nc">Installer</span>
</span><span class='line'><span class="p">{</span>
</span><span class='line'>    <span class="k">public</span> <span class="k">static</span> <span class="k">function</span> <span class="nf">factory</span><span class="p">(</span><span class="nv">$type</span><span class="p">)</span>
</span><span class='line'>    <span class="p">{</span>
</span><span class='line'>        <span class="k">return</span> <span class="k">new</span> <span class="nv">$type</span><span class="p">();</span>
</span><span class='line'>    <span class="p">}</span>
</span><span class='line'><span class="p">}</span>
</span><span class='line'>
</span><span class='line'>
</span><span class='line'><span class="c1">// Start here</span>
</span><span class='line'><span class="nx">Helper</span><span class="o">::</span><span class="na">showMenu</span><span class="p">();</span>
</span><span class='line'>
</span><span class='line'><span class="k">switch</span> <span class="p">(</span><span class="nx">Helper</span><span class="o">::</span><span class="na">getLine</span><span class="p">())</span> <span class="p">{</span>
</span><span class='line'>    <span class="k">case</span> <span class="s2">&quot;1&quot;</span><span class="o">:</span>
</span><span class='line'>        <span class="k">echo</span> <span class="s2">&quot;You wanna install Kebab Project</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">;</span>
</span><span class='line'>        <span class="nv">$installer</span> <span class="o">=</span> <span class="nx">Installer</span><span class="o">::</span><span class="na">factory</span><span class="p">(</span><span class="s1">&#39;KebabProject&#39;</span><span class="p">);</span>
</span><span class='line'>        <span class="nv">$installer</span><span class="o">-&gt;</span><span class="na">install</span><span class="p">();</span>
</span><span class='line'>        <span class="k">break</span><span class="p">;</span>
</span><span class='line'>    <span class="k">default</span><span class="o">:</span>
</span><span class='line'>        <span class="k">echo</span> <span class="s2">&quot;</span><span class="se">\033</span><span class="s2">[31mWrong choice</span><span class="se">\033</span><span class="s2">[37m</span><span class="se">\r\n</span><span class="s2">&quot;</span><span class="p">;</span>
</span><span class='line'><span class="p">}</span>
</span><span class='line'>
</span><span class='line'><span class="k">exit</span><span class="p">;</span>
</span></code></pre></td></tr></table></div></figure>


<p>Best Regards.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Develop a simple installer for Kebab Project On PHP CLI]]></title>
    <link href="http://onurozgurozkan.github.com/blog/2011/06/10/develop-a-simple-installer-for-kebab-project-on-php-cli/"/>
    <updated>2011-06-10T23:37:00+03:00</updated>
    <id>http://onurozgurozkan.github.com/blog/2011/06/10/develop-a-simple-installer-for-kebab-project-on-php-cli</id>
    <content type="html"><![CDATA[<p>In this post i&#8217;m going to explain how to write a simple installer for <a href="http://www.kebab-project.com">Kebab Project</a>.  Above codes and informations are trials and i am writing them right now. So don&#8217;t use them in really life. :) First of all we should understand PHP CLI. So it is a good idea to quick look</p>

<!--more-->




<ol>
    <li><a href="http://php.net/manual/en/features.commandline.php">http://php.net/manual/en/features.commandline.php</a></li>
    <li><a href="http://www.php-cli.com/php-cli-tutorial.shtml">http://www.php-cli.com/php-cli-tutorial.shtml</a></li>
</ol>


<p>Now we create a menu because developer want to choices what to install. showMenu function echo a menu with 4 choice.</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
</pre></td><td class='code'><pre><code class='php'><span class='line'><span class="x">function showMenu()</span>
</span><span class='line'><span class="x">{</span>
</span><span class='line'><span class="x">    echo &quot;What do you install?\n&quot;</span>
</span><span class='line'><span class="x">      . &quot;1. Kebab \n&quot;</span>
</span><span class='line'><span class="x">      . &quot;2. Doctrine \n&quot;</span>
</span><span class='line'><span class="x">      . &quot;3. Zend Framework \n&quot;</span>
</span><span class='line'><span class="x">      . &quot;4. ExtJs \n&quot;;</span>
</span><span class='line'><span class="x">}</span>
</span></code></pre></td></tr></table></div></figure>


<p>Now we need to access the user input all we need to do is read from stdin.  getLine function is accessed the input and trimed.</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
</pre></td><td class='code'><pre><code class='php'><span class='line'><span class="x">function getLine()</span>
</span><span class='line'><span class="x">{</span>
</span><span class='line'><span class="x">    $handle = fopen (&quot;php://stdin&quot;,&quot;r&quot;);</span>
</span><span class='line'><span class="x">    return trim(fgets($handle));</span>
</span><span class='line'><span class="x">}</span>
</span></code></pre></td></tr></table></div></figure>


<p>Now we do action here. I mean get the user choice and install what they want to. But this is an other post issue thats why i just wanna echo a sentence what they wanna install.</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
<span class='line-number'>13</span>
<span class='line-number'>14</span>
<span class='line-number'>15</span>
<span class='line-number'>16</span>
<span class='line-number'>17</span>
<span class='line-number'>18</span>
</pre></td><td class='code'><pre><code class='php'><span class='line'><span class="x">switch (getLine()) {</span>
</span><span class='line'><span class="x">    case &quot;1&quot;:</span>
</span><span class='line'><span class="x">        echo &quot;You wanna install Kebab Project\n&quot;;</span>
</span><span class='line'><span class="x">        break;</span>
</span><span class='line'><span class="x">    case &quot;2&quot;:</span>
</span><span class='line'><span class="x">        echo &quot;You wanna install Doctrine\n&quot;;</span>
</span><span class='line'><span class="x">        break;</span>
</span><span class='line'><span class="x">    case &quot;3&quot;:</span>
</span><span class='line'><span class="x">        echo &quot;You wanna install Zend Framework\n&quot;;</span>
</span><span class='line'><span class="x">        break;</span>
</span><span class='line'><span class="x">    case &quot;4&quot;:</span>
</span><span class='line'><span class="x">        echo &quot;You wanna install ExtJS\n&quot;;</span>
</span><span class='line'><span class="x">        break;</span>
</span><span class='line'><span class="x">    default:</span>
</span><span class='line'><span class="x">        echo &quot;\033[31mWrong choice\033[37m\r\n&quot;;</span>
</span><span class='line'><span class="x">}</span>
</span><span class='line'>
</span><span class='line'><span class="x">exit;</span>
</span></code></pre></td></tr></table></div></figure>


<p>If we concat the all code, it will be like that&#8230;</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
<span class='line-number'>13</span>
<span class='line-number'>14</span>
<span class='line-number'>15</span>
<span class='line-number'>16</span>
<span class='line-number'>17</span>
<span class='line-number'>18</span>
<span class='line-number'>19</span>
<span class='line-number'>20</span>
<span class='line-number'>21</span>
<span class='line-number'>22</span>
<span class='line-number'>23</span>
<span class='line-number'>24</span>
<span class='line-number'>25</span>
<span class='line-number'>26</span>
<span class='line-number'>27</span>
<span class='line-number'>28</span>
<span class='line-number'>29</span>
<span class='line-number'>30</span>
<span class='line-number'>31</span>
<span class='line-number'>32</span>
<span class='line-number'>33</span>
<span class='line-number'>34</span>
<span class='line-number'>35</span>
<span class='line-number'>36</span>
<span class='line-number'>37</span>
<span class='line-number'>38</span>
</pre></td><td class='code'><pre><code class='php'><span class='line'><span class="x">#!/usr/bin/env php</span>
</span><span class='line'><span class="cp">&lt;?php</span>
</span><span class='line'>
</span><span class='line'><span class="nx">showMenu</span><span class="p">();</span>
</span><span class='line'>
</span><span class='line'><span class="k">switch</span> <span class="p">(</span><span class="nx">getLine</span><span class="p">())</span> <span class="p">{</span>
</span><span class='line'>    <span class="k">case</span> <span class="s2">&quot;1&quot;</span><span class="o">:</span>
</span><span class='line'>        <span class="k">echo</span> <span class="s2">&quot;You wanna install Kebab Project</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">;</span>
</span><span class='line'>        <span class="k">break</span><span class="p">;</span>
</span><span class='line'>    <span class="k">case</span> <span class="s2">&quot;2&quot;</span><span class="o">:</span>
</span><span class='line'>        <span class="k">echo</span> <span class="s2">&quot;You wanna install Doctrine</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">;</span>
</span><span class='line'>        <span class="k">break</span><span class="p">;</span>
</span><span class='line'>    <span class="k">case</span> <span class="s2">&quot;3&quot;</span><span class="o">:</span>
</span><span class='line'>        <span class="k">echo</span> <span class="s2">&quot;You wanna install Zend Framework</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">;</span>
</span><span class='line'>        <span class="k">break</span><span class="p">;</span>
</span><span class='line'>    <span class="k">case</span> <span class="s2">&quot;4&quot;</span><span class="o">:</span>
</span><span class='line'>        <span class="k">echo</span> <span class="s2">&quot;You wanna install ExtJS</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">;</span>
</span><span class='line'>        <span class="k">break</span><span class="p">;</span>
</span><span class='line'>    <span class="k">default</span><span class="o">:</span>
</span><span class='line'>        <span class="k">echo</span> <span class="s2">&quot;</span><span class="se">\033</span><span class="s2">[31mWrong choice</span><span class="se">\033</span><span class="s2">[37m</span><span class="se">\r\n</span><span class="s2">&quot;</span><span class="p">;</span>
</span><span class='line'><span class="p">}</span>
</span><span class='line'>
</span><span class='line'><span class="k">exit</span><span class="p">;</span>
</span><span class='line'>
</span><span class='line'><span class="k">function</span> <span class="nf">getLine</span><span class="p">()</span>
</span><span class='line'><span class="p">{</span>
</span><span class='line'>    <span class="nv">$handle</span> <span class="o">=</span> <span class="nb">fopen</span> <span class="p">(</span><span class="s2">&quot;php://stdin&quot;</span><span class="p">,</span><span class="s2">&quot;r&quot;</span><span class="p">);</span>
</span><span class='line'>    <span class="k">return</span> <span class="nb">trim</span><span class="p">(</span><span class="nb">fgets</span><span class="p">(</span><span class="nv">$handle</span><span class="p">));</span>
</span><span class='line'><span class="p">}</span>
</span><span class='line'>
</span><span class='line'><span class="k">function</span> <span class="nf">showMenu</span><span class="p">()</span>
</span><span class='line'><span class="p">{</span>
</span><span class='line'>    <span class="k">echo</span> <span class="s2">&quot;What do you install?</span><span class="se">\n</span><span class="s2">&quot;</span>
</span><span class='line'>      <span class="o">.</span> <span class="s2">&quot;1. Kebab </span><span class="se">\n</span><span class="s2">&quot;</span>
</span><span class='line'>      <span class="o">.</span> <span class="s2">&quot;2. Doctrine </span><span class="se">\n</span><span class="s2">&quot;</span>
</span><span class='line'>      <span class="o">.</span> <span class="s2">&quot;3. Zend Framework </span><span class="se">\n</span><span class="s2">&quot;</span>
</span><span class='line'>      <span class="o">.</span> <span class="s2">&quot;4. ExtJs </span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">;</span>
</span><span class='line'><span class="p">}</span>
</span></code></pre></td></tr></table></div></figure>


<p>Next post i will explain how we install Kebab Project from git with this install. :) I wish i will be finished until next post :)</p>

<p>Best Regards.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Git Tagging]]></title>
    <link href="http://onurozgurozkan.github.com/blog/2011/05/21/git-tagging/"/>
    <updated>2011-05-21T17:47:00+03:00</updated>
    <id>http://onurozgurozkan.github.com/blog/2011/05/21/git-tagging</id>
    <content type="html"><![CDATA[<p>Most VCS has the ability to &#8216;tag&#8217; specific points in history. Generally people use this to mark release point (&#8216;v0.1.0.dev1). I try to show you some tagging command here.</p>

<!--more-->


<p><strong>Listing Tags</strong></p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'><span class="nv">$ </span>git tag
</span><span class='line'>v0.1.0.dev1
</span><span class='line'>v0.1.0.dev2
</span></code></pre></td></tr></table></div></figure>


<p>If you are interested in looking v0.1.0 serias, you can run</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'><span class="nv">$ </span>git tag v0.1.0.*
</span><span class='line'>v0.1.0.dev1
</span><span class='line'>v0.1.0.dev2
</span></code></pre></td></tr></table></div></figure>


<p><strong>Creating Tags</strong></p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'><span class="nv">$ </span>git tag v0.1.0.dev3
</span><span class='line'><span class="nv">$ </span>git tag
</span><span class='line'>v0.1.0.dev1
</span><span class='line'>v0.1.0.dev2
</span><span class='line'>v0.1.0.dev3
</span></code></pre></td></tr></table></div></figure>


<p><strong>Sharing tags</strong></p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'><span class="nv">$ </span>git push --tags
</span></code></pre></td></tr></table></div></figure>


<p><strong>Delete a tag</strong></p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'><span class="nv">$ </span>git tag -d v0.1.0.dev3
</span><span class='line'>Deleted tag <span class="s1">&#39;0.1.0.dev3&#39;</span> <span class="o">(</span>was 088fb93<span class="o">)</span>
</span></code></pre></td></tr></table></div></figure>


<p>If you want to delete tag at remote repo.</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'><span class="nv">$ </span>git push origin :refs/tags/0.1.0.dev3
</span><span class='line'> - <span class="o">[</span>deleted<span class="o">]</span>         0.1.0.dev1
</span></code></pre></td></tr></table></div></figure>


<p>Best regards.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Restfull Applications and Accessing Incoming Put and Delete Data From Php, Zend Framework]]></title>
    <link href="http://onurozgurozkan.github.com/blog/2011/01/09/restfull-applications-and-accessing-incoming-put-and-delete-data-from-php/"/>
    <updated>2011-01-09T22:24:00+02:00</updated>
    <id>http://onurozgurozkan.github.com/blog/2011/01/09/restfull-applications-and-accessing-incoming-put-and-delete-data-from-php</id>
    <content type="html"><![CDATA[<p>When i started writing a <a href="http://en.wikipedia.org/wiki/REST" target="_blank">REST</a> service on <a href="http://www.kebab-project.com" target="_blank">Kebab Project</a>, I recognized that we can&#8217;t access the imcoming data at PUT and DELETE method with $<em>POST or $</em>GET. It was really suprised me. So how can php access the incoming data. I searched on internet and i found <strong>php://input</strong> is the solution.</p>

<!--more-->




<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class='php'><span class='line'><span class="x">file_get_contents(&quot;php://input&quot;);</span>
</span></code></pre></td></tr></table></div></figure>


<p>The above line provided us with a query string. It is similar to GET Request on the URL. If you parse this query string, you can access the incoming params.</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
</pre></td><td class='code'><pre><code class='php'><span class='line'><span class="x">parse_str(file_get_contents(&quot;php://input&quot;),$params);</span>
</span><span class='line'><span class="x">var_dump($params);</span>
</span></code></pre></td></tr></table></div></figure>


<p>You can find more information at <a href="http://www.lornajane.net/posts/2008/Accessing-Incoming-PUT-Data-from-PHP" target="_blank">LornaJane blogs</a> over this issue.</p>

<p>But usually we use php framework and we wanna the general solutions over this issue. We use <a href="http://www.zendframework.com" target="_blank">Zend Framework</a> at Kebab Project. All Kebab Project Services are RestFull so we need a good solutions over this issue. I found good <a href="http://weierophinney.net/matthew/archives/233-Responding-to-Different-Content-Types-in-RESTful-ZF-Apps.html#extended" target="_blank">article</a> on the weblog and site of Matthew Weier O&#8217;Phinney. His helper is very neat and very usefull. Then i wrote <a href="https://github.com/lab2023/kebab-project/blob/master/library/Kebab/Controller/Helper/Param.php" target="_blank">our helper</a> which only support JSON response type.</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
<span class='line-number'>13</span>
<span class='line-number'>14</span>
<span class='line-number'>15</span>
<span class='line-number'>16</span>
<span class='line-number'>17</span>
<span class='line-number'>18</span>
<span class='line-number'>19</span>
<span class='line-number'>20</span>
<span class='line-number'>21</span>
<span class='line-number'>22</span>
<span class='line-number'>23</span>
<span class='line-number'>24</span>
<span class='line-number'>25</span>
<span class='line-number'>26</span>
<span class='line-number'>27</span>
<span class='line-number'>28</span>
</pre></td><td class='code'><pre><code class='php'><span class='line'><span class="cp">&lt;?php</span>
</span><span class='line'>
</span><span class='line'><span class="k">class</span> <span class="nc">Kebab_Controller_Helper_Param</span> <span class="k">extends</span> <span class="nx">Zend_Controller_Action_Helper_Abstract</span> <span class="p">{</span>
</span><span class='line'><span class="sd">/**</span>
</span><span class='line'><span class="sd"> * @var array Parameters detected in raw content body</span>
</span><span class='line'><span class="sd"> */</span>
</span><span class='line'> <span class="k">protected</span> <span class="nv">$_bodyParams</span> <span class="o">=</span> <span class="k">array</span><span class="p">();</span>
</span><span class='line'> <span class="k">protected</span> <span class="nv">$_decodeJsonFieldTypeArray</span> <span class="o">=</span> <span class="k">true</span><span class="p">;</span>
</span><span class='line'> <span class="c1">//true is array, false is object</span>
</span><span class='line'>
</span><span class='line'> <span class="sd">/**</span>
</span><span class='line'><span class="sd">  * Do detection of content type, and retrieve parameters from raw body if present</span>
</span><span class='line'><span class="sd">  *</span>
</span><span class='line'><span class="sd">  * @return void</span>
</span><span class='line'><span class="sd">  */</span>
</span><span class='line'>  <span class="k">public</span> <span class="k">function</span> <span class="nf">init</span><span class="p">()</span>     <span class="p">{</span>
</span><span class='line'>        <span class="nv">$request</span> <span class="o">=</span> <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">getRequest</span><span class="p">();</span>
</span><span class='line'>        <span class="nv">$rawBody</span> <span class="o">=</span> <span class="nv">$request</span><span class="o">-&gt;</span><span class="na">getRawBody</span><span class="p">();</span>
</span><span class='line'>
</span><span class='line'>        <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nv">$rawBody</span><span class="p">)</span> <span class="p">{</span>
</span><span class='line'>            <span class="k">return</span><span class="p">;</span>
</span><span class='line'>        <span class="p">}</span>
</span><span class='line'>
</span><span class='line'>        <span class="k">if</span> <span class="p">(</span><span class="nv">$request</span><span class="o">-&gt;</span><span class="na">isPut</span><span class="p">()</span> <span class="o">||</span> <span class="nv">$request</span><span class="o">-&gt;</span><span class="na">isDelete</span><span class="p">())</span> <span class="p">{</span>
</span><span class='line'>            <span class="nb">parse_str</span><span class="p">(</span><span class="nv">$rawBody</span><span class="p">,</span> <span class="nv">$params</span><span class="p">);</span>
</span><span class='line'>            <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">setBodyParams</span><span class="p">(</span><span class="nv">$params</span><span class="p">);</span>
</span><span class='line'>        <span class="p">}</span>
</span><span class='line'>    <span class="p">}</span>
</span></code></pre></td></tr></table></div></figure>


<p>When you look the init function you can understand the tips. How you can use the Param Helpers at and Controller. You set a variable with this helper.</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
<span class='line-number'>13</span>
</pre></td><td class='code'><pre><code class='php'><span class='line'><span class="x">public function putAction()</span>
</span><span class='line'><span class="x">{</span>
</span><span class='line'><span class="x">        // Param</span>
</span><span class='line'><span class="x">        $params = $this-&gt;_helper-&gt;param();</span>
</span><span class='line'>
</span><span class='line'><span class="x">        // Validation</span>
</span><span class='line'><span class="x">        $fullName = $params[&#39;fullName&#39;];</span>
</span><span class='line'><span class="x">        $email = $params[&#39;email&#39;];</span>
</span><span class='line'><span class="x">        $language = $params[&#39;language&#39;];</span>
</span><span class='line'>
</span><span class='line'><span class="x">// continues</span>
</span><span class='line'>
</span><span class='line'><span class="x">}</span>
</span></code></pre></td></tr></table></div></figure>


<p>I wish this little article help the people who use Kebab Project and develop restfull software with Php.</p>

<p>Best Regards.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Improve Perfect Blemish 2.0 by Free WordPress Themes]]></title>
    <link href="http://onurozgurozkan.github.com/blog/2010/12/19/improve-perfect-blemish-2-dot-0-by-free-wordpress-themes/"/>
    <updated>2010-12-19T22:55:00+02:00</updated>
    <id>http://onurozgurozkan.github.com/blog/2010/12/19/improve-perfect-blemish-2-dot-0-by-free-wordpress-themes</id>
    <content type="html"><![CDATA[<p>First of all thank you very much <a title="Free Wp Themes" href="http://www.freewpthemes.net/" target="_blank">free wordpress themes</a> to this minimalist, perfect theme Perfect Blemish 2.0.</p>

<!--more-->


<p><strong>1.Fix the CSS Validation</strong></p>

<p>File : /wp-content/themes/perfectblemish/style.css
Change line 90</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
</pre></td><td class='code'><pre><code class='css'><span class='line'><span class="nf">#logo</span> <span class="nt">p</span> <span class="p">{</span>
</span><span class='line'><span class="k">margin</span> <span class="o">:</span> <span class="m">-5px</span> <span class="m">0</span> <span class="m">0</span> <span class="m">0</span><span class="p">;</span>
</span><span class='line'><span class="k">text-transform</span> <span class="o">:</span> <span class="k">lowercase</span><span class="p">;</span>
</span><span class='line'><span class="k">font</span> <span class="o">:</span> <span class="k">normal</span> <span class="m">14px</span> <span class="n">Georgia</span><span class="o">,</span> <span class="s2">&quot;Times New Roman&quot;</span><span class="o">,</span> <span class="n">Times</span><span class="o">,</span> <span class="k">serif</span><span class="p">;</span>
</span><span class='line'><span class="k">font-style</span> <span class="o">:</span> <span class="k">italic</span><span class="p">;</span>
</span><span class='line'><span class="k">color</span> <span class="o">:</span> <span class="m">#45302c</span><span class="p">;</span>
</span><span class='line'><span class="p">}</span>
</span></code></pre></td></tr></table></div></figure>


<p>to</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
</pre></td><td class='code'><pre><code class='css'><span class='line'><span class="nf">#logo</span> <span class="nt">p</span> <span class="p">{</span>
</span><span class='line'>  <span class="k">margin</span><span class="o">:</span> <span class="m">-5px</span> <span class="m">0px</span> <span class="m">0px</span> <span class="m">0px</span><span class="p">;</span>
</span><span class='line'>  <span class="k">padding</span><span class="o">:</span> <span class="m">0px</span> <span class="m">0px</span> <span class="m">0px</span> <span class="m">0px</span><span class="p">;</span>
</span><span class='line'>  <span class="k">text-transform</span><span class="o">:</span> <span class="k">lowercase</span><span class="p">;</span>
</span><span class='line'>  <span class="k">font</span><span class="o">:</span> <span class="k">normal</span> <span class="m">14px</span> <span class="n">Georgia</span><span class="o">,</span> <span class="s2">&quot;Times New Roman&quot;</span><span class="o">,</span> <span class="n">Times</span><span class="o">,</span> <span class="k">serif</span><span class="p">;</span>
</span><span class='line'>  <span class="k">font-style</span><span class="o">:</span> <span class="k">italic</span><span class="p">;</span>
</span><span class='line'>  <span class="k">color</span><span class="o">:</span> <span class="m">#45302C</span><span class="p">;</span>
</span><span class='line'><span class="p">}</span>
</span></code></pre></td></tr></table></div></figure>


<p>Now your blog should be valid CSS 2.1. Please check <a title="This page validates as W3C CSS 2.1" href="http://jigsaw.w3.org/css-validator/check/referer"><abbr title="Cascading Style Sheets">CSS</abbr> Validation.</a></p>

<p><strong>2.Fix the Menu background image</strong></p>

<p>File : /wp-content/themes/perfectblemish/style.css
Change line 67</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
</pre></td><td class='code'><pre><code class='css'><span class='line'><span class="nf">#header</span> <span class="p">{</span>
</span><span class='line'>  <span class="k">overflow</span><span class="o">:</span> <span class="k">hidden</span><span class="p">;</span>
</span><span class='line'>  <span class="k">width</span><span class="o">:</span> <span class="m">1000px</span><span class="p">;</span>
</span><span class='line'>  <span class="k">height</span><span class="o">:</span> <span class="m">50px</span><span class="p">;</span>
</span><span class='line'>  <span class="k">margin</span><span class="o">:</span> <span class="m">0px</span> <span class="k">auto</span> <span class="m">20px</span> <span class="k">auto</span><span class="p">;</span>
</span><span class='line'>  <span class="k">background</span><span class="o">:</span> <span class="sx">url(images/img01.jpg)</span> <span class="k">no-repeat</span> <span class="k">right</span> <span class="k">top</span><span class="p">;</span>
</span><span class='line'><span class="p">}</span>
</span></code></pre></td></tr></table></div></figure>


<p>to</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
</pre></td><td class='code'><pre><code class='css'><span class='line'><span class="nf">#header</span> <span class="p">{</span>
</span><span class='line'>  <span class="k">overflow</span><span class="o">:</span> <span class="k">hidden</span><span class="p">;</span>
</span><span class='line'>  <span class="k">width</span><span class="o">:</span> <span class="m">1000px</span><span class="p">;</span>
</span><span class='line'>  <span class="k">height</span><span class="o">:</span> <span class="m">50px</span><span class="p">;</span>
</span><span class='line'>  <span class="k">margin</span><span class="o">:</span> <span class="m">0px</span> <span class="k">auto</span> <span class="m">20px</span> <span class="k">auto</span><span class="p">;</span>
</span><span class='line'><span class="p">}</span>
</span></code></pre></td></tr></table></div></figure>


<p>And don&#8217;t forget to delete file /wp-content/themes/perfectblemish/images/img01.jpg .</p>

<p><strong>3.Fix the lorem ipsum text under the blog</strong></p>

<p>File : /wp-content/themes/perfectblemish/single.php
Delete line between 49 to 52.</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
</pre></td><td class='code'><pre><code class='css'><span class='line'><span class="o">&lt;</span><span class="nt">div</span> <span class="nt">id</span><span class="o">=</span><span class="s2">&quot;about&quot;</span><span class="o">&gt;</span>
</span><span class='line'><span class="o">&lt;</span><span class="nt">h2</span><span class="o">&gt;</span><span class="nt">Lorem</span> <span class="nt">ipsum</span> <span class="nt">dolor</span> <span class="nt">amet</span><span class="o">&lt;/</span><span class="nt">h2</span><span class="o">&gt;</span>
</span><span class='line'><span class="o">&lt;</span><span class="nt">p</span><span class="o">&gt;</span><span class="nt">Sed</span> <span class="nt">lacus</span><span class="o">.</span> <span class="nt">Donec</span> <span class="nt">lectus</span><span class="o">.</span> <span class="nt">Nullam</span> <span class="nt">pretium</span> <span class="nt">nibh</span> <span class="nt">ut</span> <span class="nt">turpis</span><span class="o">.</span> <span class="nt">Nam</span> <span class="nt">bibendum</span><span class="o">.</span> <span class="nt">In</span> <span class="nt">nulla</span> <span class="nt">tortor</span><span class="o">,</span> <span class="o">&lt;</span><span class="nt">a</span> <span class="nt">href</span><span class="o">=</span><span class="s2">&quot;#&quot;</span><span class="o">&gt;</span><span class="nt">elementum</span><span class="o">&lt;/</span><span class="nt">a</span><span class="o">&gt;</span> <span class="nt">vel</span><span class="o">,</span> <span class="nt">tempor</span> <span class="nt">at</span><span class="o">,</span> <span class="nt">varius</span> <span class="nt">non</span><span class="o">,</span> <span class="nt">purus</span><span class="o">.</span> <span class="nt">Mauris</span> <span class="nt">vitae</span> <span class="nt">nisl</span> <span class="nt">nec</span> <span class="nt">metus</span> <span class="nt">placerat</span> <span class="nt">consectetuer</span><span class="o">.</span> <span class="nt">Donec</span> <span class="nt">ipsum</span><span class="o">.</span> <span class="nt">Proin</span> <span class="nt">imperdiet</span> <span class="nt">est</span><span class="o">.</span> <span class="nt">Phasellus</span> <span class="nt">dapibus</span> <span class="nt">semper</span> <span class="nt">urna</span><span class="o">.</span> <span class="nt">Pellentesque</span> <span class="nt">ornare</span><span class="o">,</span> <span class="nt">orci</span> <span class="nt">in</span> <span class="o">&lt;</span><span class="nt">a</span> <span class="nt">href</span><span class="o">=</span><span class="s2">&quot;#&quot;</span><span class="o">&gt;</span><span class="nt">consectetuer</span> <span class="nt">hendrerit</span><span class="o">&lt;/</span><span class="nt">a</span><span class="o">&gt;,</span> <span class="nt">urna</span> <span class="nt">elit</span> <span class="nt">eleifend</span> <span class="nt">nunc</span><span class="o">,</span> <span class="nt">ut</span> <span class="nt">consectetuer</span> <span class="nt">nisl</span> <span class="nt">felis</span> <span class="nt">ac</span> <span class="nt">diam</span><span class="o">.</span> <span class="o">&lt;/</span><span class="nt">p</span><span class="o">&gt;</span>
</span><span class='line'><span class="o">&lt;/</span><span class="nt">div</span><span class="o">&gt;</span>
</span></code></pre></td></tr></table></div></figure>


<p>File : /wp-content/themes/perfectblemish/search.php
Delete line between 42 to 45.</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
</pre></td><td class='code'><pre><code class='css'><span class='line'><span class="o">&lt;</span><span class="nt">div</span> <span class="nt">id</span><span class="o">=</span><span class="s2">&quot;about&quot;</span><span class="o">&gt;</span>
</span><span class='line'><span class="o">&lt;</span><span class="nt">h2</span><span class="o">&gt;</span><span class="nt">Lorem</span> <span class="nt">ipsum</span> <span class="nt">dolor</span> <span class="nt">amet</span><span class="o">&lt;/</span><span class="nt">h2</span><span class="o">&gt;</span>
</span><span class='line'><span class="o">&lt;</span><span class="nt">p</span><span class="o">&gt;</span><span class="nt">Sed</span> <span class="nt">lacus</span><span class="o">.</span> <span class="nt">Donec</span> <span class="nt">lectus</span><span class="o">.</span> <span class="nt">Nullam</span> <span class="nt">pretium</span> <span class="nt">nibh</span> <span class="nt">ut</span> <span class="nt">turpis</span><span class="o">.</span> <span class="nt">Nam</span> <span class="nt">bibendum</span><span class="o">.</span> <span class="nt">In</span> <span class="nt">nulla</span> <span class="nt">tortor</span><span class="o">,</span> <span class="o">&lt;</span><span class="nt">a</span> <span class="nt">href</span><span class="o">=</span><span class="s2">&quot;#&quot;</span><span class="o">&gt;</span><span class="nt">elementum</span><span class="o">&lt;/</span><span class="nt">a</span><span class="o">&gt;</span> <span class="nt">vel</span><span class="o">,</span> <span class="nt">tempor</span> <span class="nt">at</span><span class="o">,</span> <span class="nt">varius</span> <span class="nt">non</span><span class="o">,</span> <span class="nt">purus</span><span class="o">.</span> <span class="nt">Mauris</span> <span class="nt">vitae</span> <span class="nt">nisl</span> <span class="nt">nec</span> <span class="nt">metus</span> <span class="nt">placerat</span> <span class="nt">consectetuer</span><span class="o">.</span> <span class="nt">Donec</span> <span class="nt">ipsum</span><span class="o">.</span> <span class="nt">Proin</span> <span class="nt">imperdiet</span> <span class="nt">est</span><span class="o">.</span> <span class="nt">Phasellus</span> <span class="nt">dapibus</span> <span class="nt">semper</span> <span class="nt">urna</span><span class="o">.</span> <span class="nt">Pellentesque</span> <span class="nt">ornare</span><span class="o">,</span> <span class="nt">orci</span> <span class="nt">in</span> <span class="o">&lt;</span><span class="nt">a</span> <span class="nt">href</span><span class="o">=</span><span class="s2">&quot;#&quot;</span><span class="o">&gt;</span><span class="nt">consectetuer</span> <span class="nt">hendrerit</span><span class="o">&lt;/</span><span class="nt">a</span><span class="o">&gt;,</span> <span class="nt">urna</span> <span class="nt">elit</span> <span class="nt">eleifend</span> <span class="nt">nunc</span><span class="o">,</span> <span class="nt">ut</span> <span class="nt">consectetuer</span> <span class="nt">nisl</span> <span class="nt">felis</span> <span class="nt">ac</span> <span class="nt">diam</span><span class="o">.</span> <span class="o">&lt;/</span><span class="nt">p</span><span class="o">&gt;</span>
</span><span class='line'><span class="o">&lt;/</span><span class="nt">div</span><span class="o">&gt;</span>
</span></code></pre></td></tr></table></div></figure>


<p>File : /wp-content/themes/perfectblemish/page.php
Delete line between 20 to 23.</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
</pre></td><td class='code'><pre><code class='css'><span class='line'><span class="o">&lt;</span><span class="nt">div</span> <span class="nt">id</span><span class="o">=</span><span class="s2">&quot;about&quot;</span><span class="o">&gt;</span>
</span><span class='line'><span class="o">&lt;</span><span class="nt">h2</span><span class="o">&gt;</span><span class="nt">Lorem</span> <span class="nt">ipsum</span> <span class="nt">dolor</span> <span class="nt">amet</span><span class="o">&lt;/</span><span class="nt">h2</span><span class="o">&gt;</span>
</span><span class='line'><span class="o">&lt;</span><span class="nt">p</span><span class="o">&gt;</span><span class="nt">Sed</span> <span class="nt">lacus</span><span class="o">.</span> <span class="nt">Donec</span> <span class="nt">lectus</span><span class="o">.</span> <span class="nt">Nullam</span> <span class="nt">pretium</span> <span class="nt">nibh</span> <span class="nt">ut</span> <span class="nt">turpis</span><span class="o">.</span> <span class="nt">Nam</span> <span class="nt">bibendum</span><span class="o">.</span> <span class="nt">In</span> <span class="nt">nulla</span> <span class="nt">tortor</span><span class="o">,</span> <span class="o">&lt;</span><span class="nt">a</span> <span class="nt">href</span><span class="o">=</span><span class="s2">&quot;#&quot;</span><span class="o">&gt;</span><span class="nt">elementum</span><span class="o">&lt;/</span><span class="nt">a</span><span class="o">&gt;</span> <span class="nt">vel</span><span class="o">,</span> <span class="nt">tempor</span> <span class="nt">at</span><span class="o">,</span> <span class="nt">varius</span> <span class="nt">non</span><span class="o">,</span> <span class="nt">purus</span><span class="o">.</span> <span class="nt">Mauris</span> <span class="nt">vitae</span> <span class="nt">nisl</span> <span class="nt">nec</span> <span class="nt">metus</span> <span class="nt">placerat</span> <span class="nt">consectetuer</span><span class="o">.</span> <span class="nt">Donec</span> <span class="nt">ipsum</span><span class="o">.</span> <span class="nt">Proin</span> <span class="nt">imperdiet</span> <span class="nt">est</span><span class="o">.</span> <span class="nt">Phasellus</span> <span class="nt">dapibus</span> <span class="nt">semper</span> <span class="nt">urna</span><span class="o">.</span> <span class="nt">Pellentesque</span> <span class="nt">ornare</span><span class="o">,</span> <span class="nt">orci</span> <span class="nt">in</span> <span class="o">&lt;</span><span class="nt">a</span> <span class="nt">href</span><span class="o">=</span><span class="s2">&quot;#&quot;</span><span class="o">&gt;</span><span class="nt">consectetuer</span> <span class="nt">hendrerit</span><span class="o">&lt;/</span><span class="nt">a</span><span class="o">&gt;,</span> <span class="nt">urna</span> <span class="nt">elit</span> <span class="nt">eleifend</span> <span class="nt">nunc</span><span class="o">,</span> <span class="nt">ut</span> <span class="nt">consectetuer</span> <span class="nt">nisl</span> <span class="nt">felis</span> <span class="nt">ac</span> <span class="nt">diam</span><span class="o">.</span> <span class="o">&lt;/</span><span class="nt">p</span><span class="o">&gt;</span>
</span><span class='line'><span class="o">&lt;/</span><span class="nt">div</span><span class="o">&gt;</span>
</span></code></pre></td></tr></table></div></figure>


<p>File : /wp-content/themes/perfectblemish/archive.php
Delete line between 54 to 57.</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
</pre></td><td class='code'><pre><code class='css'><span class='line'><span class="o">&lt;</span><span class="nt">div</span> <span class="nt">id</span><span class="o">=</span><span class="s2">&quot;about&quot;</span><span class="o">&gt;</span>
</span><span class='line'><span class="o">&lt;</span><span class="nt">h2</span><span class="o">&gt;</span><span class="nt">Lorem</span> <span class="nt">ipsum</span> <span class="nt">dolor</span> <span class="nt">amet</span><span class="o">&lt;/</span><span class="nt">h2</span><span class="o">&gt;</span>
</span><span class='line'><span class="o">&lt;</span><span class="nt">p</span><span class="o">&gt;</span><span class="nt">Sed</span> <span class="nt">lacus</span><span class="o">.</span> <span class="nt">Donec</span> <span class="nt">lectus</span><span class="o">.</span> <span class="nt">Nullam</span> <span class="nt">pretium</span> <span class="nt">nibh</span> <span class="nt">ut</span> <span class="nt">turpis</span><span class="o">.</span> <span class="nt">Nam</span> <span class="nt">bibendum</span><span class="o">.</span> <span class="nt">In</span> <span class="nt">nulla</span> <span class="nt">tortor</span><span class="o">,</span> <span class="o">&lt;</span><span class="nt">a</span> <span class="nt">href</span><span class="o">=</span><span class="s2">&quot;#&quot;</span><span class="o">&gt;</span><span class="nt">elementum</span><span class="o">&lt;/</span><span class="nt">a</span><span class="o">&gt;</span> <span class="nt">vel</span><span class="o">,</span> <span class="nt">tempor</span> <span class="nt">at</span><span class="o">,</span> <span class="nt">varius</span> <span class="nt">non</span><span class="o">,</span> <span class="nt">purus</span><span class="o">.</span> <span class="nt">Mauris</span> <span class="nt">vitae</span> <span class="nt">nisl</span> <span class="nt">nec</span> <span class="nt">metus</span> <span class="nt">placerat</span> <span class="nt">consectetuer</span><span class="o">.</span> <span class="nt">Donec</span> <span class="nt">ipsum</span><span class="o">.</span> <span class="nt">Proin</span> <span class="nt">imperdiet</span> <span class="nt">est</span><span class="o">.</span> <span class="nt">Phasellus</span> <span class="nt">dapibus</span> <span class="nt">semper</span> <span class="nt">urna</span><span class="o">.</span> <span class="nt">Pellentesque</span> <span class="nt">ornare</span><span class="o">,</span> <span class="nt">orci</span> <span class="nt">in</span> <span class="o">&lt;</span><span class="nt">a</span> <span class="nt">href</span><span class="o">=</span><span class="s2">&quot;#&quot;</span><span class="o">&gt;</span><span class="nt">consectetuer</span> <span class="nt">hendrerit</span><span class="o">&lt;/</span><span class="nt">a</span><span class="o">&gt;,</span> <span class="nt">urna</span> <span class="nt">elit</span> <span class="nt">eleifend</span> <span class="nt">nunc</span><span class="o">,</span> <span class="nt">ut</span> <span class="nt">consectetuer</span> <span class="nt">nisl</span> <span class="nt">felis</span> <span class="nt">ac</span> <span class="nt">diam</span><span class="o">.</span> <span class="o">&lt;/</span><span class="nt">p</span><span class="o">&gt;</span>
</span><span class='line'><span class="o">&lt;/</span><span class="nt">div</span><span class="o">&gt;[</span>
</span></code></pre></td></tr></table></div></figure>


<p><strong>4.Add w3c validation icons to footer</strong>
File : /wp-content/themes/perfectblemish/footer.php
Add code after line 9</p>

<p>&nbsp;</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
</pre></td><td class='code'><pre><code class='css'><span class='line'><span class="o">&lt;</span><span class="nt">div</span> <span class="nt">id</span><span class="o">=</span><span class="s2">&quot;footer-wrap&quot;</span><span class="o">&gt;</span>
</span><span class='line'>      <span class="o">&lt;</span><span class="nt">p</span> <span class="nt">id</span><span class="o">=</span><span class="s2">&quot;legal&quot;</span><span class="o">&gt;</span><span class="nt">Designed</span> <span class="nt">by</span> <span class="o">&lt;</span><span class="nt">a</span> <span class="nt">href</span><span class="o">=</span><span class="s2">&quot;http://www.freewpthemes.net/&quot;</span><span class="o">&gt;</span><span class="nt">Free</span> <span class="nt">WordPress</span> <span class="nt">Themes</span><span class="o">&lt;/</span><span class="nt">a</span><span class="o">&gt;.</span> <span class="nt">Powered</span> <span class="nt">by</span> <span class="o">&lt;</span><span class="nt">a</span> <span class="nt">href</span><span class="o">=</span><span class="s2">&quot;http://wordpress.org/&quot;</span><span class="o">&gt;</span><span class="nt">WordPress</span><span class="o">&lt;/</span><span class="nt">a</span><span class="o">&gt;.&lt;</span><span class="nt">br</span> <span class="o">/&gt;&lt;/</span><span class="nt">p</span><span class="o">&gt;</span>
</span><span class='line'><span class="o">&lt;/</span><span class="nt">div</span><span class="o">&gt;</span>
</span></code></pre></td></tr></table></div></figure>


<p>Attention line between 10 to 19.</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
<span class='line-number'>13</span>
</pre></td><td class='code'><pre><code class='css'><span class='line'><span class="o">&lt;</span><span class="nt">div</span> <span class="nt">id</span><span class="o">=</span><span class="s2">&quot;footer-wrap&quot;</span><span class="o">&gt;</span>
</span><span class='line'>    <span class="o">&lt;</span><span class="nt">p</span> <span class="nt">id</span><span class="o">=</span><span class="s2">&quot;legal&quot;</span><span class="o">&gt;</span><span class="nt">Designed</span> <span class="nt">by</span> <span class="o">&lt;</span><span class="nt">a</span> <span class="nt">href</span><span class="o">=</span><span class="s2">&quot;http://www.freewpthemes.net/&quot;</span><span class="o">&gt;</span><span class="nt">Free</span> <span class="nt">WordPress</span> <span class="nt">Themes</span><span class="o">&lt;/</span><span class="nt">a</span><span class="o">&gt;.</span> <span class="nt">Powered</span> <span class="nt">by</span> <span class="o">&lt;</span><span class="nt">a</span> <span class="nt">href</span><span class="o">=</span><span class="s2">&quot;http://wordpress.org/&quot;</span><span class="o">&gt;</span><span class="nt">WordPress</span><span class="o">&lt;/</span><span class="nt">a</span><span class="o">&gt;.&lt;</span><span class="nt">br</span> <span class="o">/&gt;&lt;/</span><span class="nt">p</span><span class="o">&gt;</span>
</span><span class='line'>    <span class="o">&lt;</span><span class="nt">p</span><span class="o">&gt;</span>
</span><span class='line'>        <span class="o">&lt;</span><span class="nt">a</span> <span class="nt">href</span><span class="o">=</span><span class="s2">&quot;http://validator.w3.org/check?uri=referer&quot;</span><span class="o">&gt;</span>
</span><span class='line'>            <span class="o">&lt;</span><span class="nt">img</span> <span class="nt">src</span><span class="o">=</span><span class="s2">&quot;http://www.w3.org/Icons/valid-xhtml10&quot;</span>
</span><span class='line'>            <span class="nt">alt</span><span class="o">=</span><span class="s2">&quot;Valid XHTML 1.0 Transitional&quot;</span> <span class="nt">height</span><span class="o">=</span><span class="s2">&quot;31&quot;</span> <span class="nt">width</span><span class="o">=</span><span class="s2">&quot;88&quot;</span> <span class="o">/&gt;&lt;/</span><span class="nt">a</span><span class="o">&gt;</span>
</span><span class='line'>        <span class="o">&lt;</span><span class="nt">a</span> <span class="nt">href</span><span class="o">=</span><span class="s2">&quot;http://jigsaw.w3.org/css-validator/check/referer&quot;</span><span class="o">&gt;</span>
</span><span class='line'>            <span class="o">&lt;</span><span class="nt">img</span> <span class="nt">style</span><span class="o">=</span><span class="s2">&quot;border:0;width:88px;height:31px&quot;</span>
</span><span class='line'>            <span class="nt">src</span><span class="o">=</span><span class="s2">&quot;http://jigsaw.w3.org/css-validator/images/vcss&quot;</span>
</span><span class='line'>            <span class="nt">alt</span><span class="o">=</span><span class="s2">&quot;Valid CSS!&quot;</span> <span class="o">/&gt;</span>
</span><span class='line'>        <span class="o">&lt;/</span><span class="nt">a</span><span class="o">&gt;</span>
</span><span class='line'>    <span class="o">&lt;/</span><span class="nt">p</span><span class="o">&gt;</span>
</span><span class='line'><span class="o">&lt;/</span><span class="nt">div</span><span class="o">&gt;</span>
</span></code></pre></td></tr></table></div></figure>


<p><strong>Note:</strong> When you develop or design some project, please avoid to extend 80 or 120 character per line. Otherwise it is difficult to read at screen or print A4. :)</p>

<p>Best Regards.</p>
]]></content>
  </entry>
  
</feed>

