<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Technical stuff &#187; Resources</title>
	<atom:link href="http://www.tekkie.ro/category/resources/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.tekkie.ro</link>
	<description>Requirements are like water. They&#039;re easier to build on when they&#039;re frozen.</description>
	<lastBuildDate>Sat, 26 Nov 2011 11:35:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Very good practical introduction to Symfony2</title>
		<link>http://www.tekkie.ro/resources/very-good-practical-introduction-to-symfony2/</link>
		<comments>http://www.tekkie.ro/resources/very-good-practical-introduction-to-symfony2/#comments</comments>
		<pubDate>Thu, 17 Nov 2011 10:37:14 +0000</pubDate>
		<dc:creator>Georgiana</dc:creator>
				<category><![CDATA[Resources]]></category>
		<category><![CDATA[learn]]></category>
		<category><![CDATA[symfony2]]></category>
		<category><![CDATA[Web development]]></category>

		<guid isPermaLink="false">http://www.tekkie.ro/?p=312</guid>
		<description><![CDATA[Very good intro, but you need to have the basics laid out from the Getting started guide.]]></description>
			<content:encoded><![CDATA[<div id="__ss_5339691" style="width: 425px;"><object id="__sse5339691" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=symfony2tokyo-101002065759-phpapp02&amp;rel=0&amp;stripped_title=symfony2-tokyo&amp;userName=kriswallsmith" /><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="wmode" value="transparent" /><embed type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=symfony2tokyo-101002065759-phpapp02&amp;rel=0&amp;stripped_title=symfony2-tokyo&amp;userName=kriswallsmith" name="__sse5339691" allowscriptaccess="always" allowfullscreen="true" wmode="transparent"></embed></object></div>
<p>Very good intro, but you need to have the basics laid out from the <a title="Symfony2 getting started" href="http://symfony.com/doc/current/">Getting started</a> guide.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tekkie.ro/resources/very-good-practical-introduction-to-symfony2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>List of Emacs Commands</title>
		<link>http://www.tekkie.ro/resources/list-of-emacs-commands/</link>
		<comments>http://www.tekkie.ro/resources/list-of-emacs-commands/#comments</comments>
		<pubDate>Sun, 14 Aug 2011 10:07:54 +0000</pubDate>
		<dc:creator>Georgiana</dc:creator>
				<category><![CDATA[Resources]]></category>
		<category><![CDATA[cheatsheet]]></category>
		<category><![CDATA[Emacs]]></category>
		<category><![CDATA[reference]]></category>

		<guid isPermaLink="false">http://www.tekkie.ro/?p=297</guid>
		<description><![CDATA[C = Control M = Meta = Alt&#124;Esc Basics C-x C-f &#8220;find&#8221; file i.e. open/create a file in buffer C-x C-s save the file C-x C-w write the text to an alternate name C-x C-v find alternate file C-x i insert file at cursor position C-x b create/switch buffers C-x C-b show buffer list C-x [...]]]></description>
			<content:encoded><![CDATA[<p><code>C = Control<br />
M = Meta = Alt|Esc</code></p>
<h2>Basics</h2>
<p><code>C-x C-f</code> &#8220;find&#8221; file i.e. open/create a file in buffer<br />
<code>C-x C-s</code> save the file<br />
<code>C-x C-w</code> write the text to an alternate name<br />
<code>C-x C-v</code> find alternate file<br />
<code>C-x i</code> insert file at cursor position<br />
<code>C-x b</code> create/switch buffers<br />
<code>C-x C-b</code> show buffer list<br />
<code>C-x k</code> kill buffer<br />
<code>C-z</code> suspend emacs<br />
<code>C-X C-c</code> close down emacs</p>
<h2>Basic movement</h2>
<p><code>C-f</code> forward char<br />
<code>C-b</code> backward char<br />
<code>C-p</code> previous line<br />
<code>C-n</code> next line<br />
<code>M-f</code> forward one word<br />
<code>M-b</code> backward one word<br />
<code>C-a</code> beginning of line<br />
<code>C-e</code> end of line<br />
<code>C-v</code> one page up<br />
<code>M-v</code> scroll down one page<br />
<code>M-&lt;</code> beginning of text <code>M-&gt;</code> end of text</p>
<h2>Editing</h2>
<p><code>M-n</code> repeat the following command n times<br />
<code>C-u</code> repeat the following command 4 times<br />
<code>C-u</code> n repeat n times<br />
<code>C-d</code> delete a char<br />
<code>M-d</code> delete word<br />
<code>M-Del</code> delete word backwards<br />
<code>C-k</code> kill line</p>
<p><code>C-Space</code> Set beginning mark (for region marking for example)<br />
<code>C-W</code> &#8220;kill&#8221; (delete) the marked region region<br />
<code>M-W</code> copy the marked region<br />
<code>C-y</code> &#8220;yank&#8221; (paste) the copied/killed region/line<br />
<code>M-y</code> yank earlier text (cycle through kill buffer)<br />
<code>C-x C-x</code> exchange cursor and mark</p>
<p><code>C-t</code> transpose two chars<br />
<code>M-t</code> transpose two words<br />
<code>C-x C-t</code> transpose lines<br />
<code>M-u</code> make letters uppercase in word from cursor position to end<br />
<code>M-c</code> simply make first letter in word uppercase<br />
<code>M-l</code> opposite to M-u</p>
<h2>Important</h2>
<p><code>C-g</code> quit the running/entered command<br />
<code>C-x u</code> undo previous action<br />
<code>M-x</code> revert-buffer RETURN (insert like this) undo all changes since last save<br />
<code>M-x</code> recover-file RETURN Recover text from an autosave-file<br />
<code>M-x</code> recover-session RETURN if you edited several files</p>
<h2>Online-Help</h2>
<p><code>C-h c</code> which command does this keystroke invoke<br />
<code>C-h k</code> which command does this keystroke invoke and what does it do?<br />
<code>C-h l</code> what were my last 100 typed keys<br />
<code>C-h w</code> what key-combo does this command have?<br />
<code>C-h f</code> what does this function do<br />
<code>C-h v</code> what&#8217;s this variable and what is it&#8217;s value<br />
<code>C-h b</code> show all keycommands for this buffer<br />
<code>C-h t</code> start the emacs tutorial<br />
<code>C-h i</code> start the info reader<br />
<code>C-h C-k</code> start up info reader and go to a certain key-combo point<br />
<code>C-h F</code> show the emacs FAQ<br />
<code>C-h p</code> show infos about the Elisp package on this machine</p>
<h2>Search/Replace</h2>
<p><code>C-s</code> Search forward<br />
<code>C-r</code> search backward<br />
<code>C-g</code> return to where search started (if you are still in search mode)<br />
<code>M-%</code> query replace</p>
<blockquote><p><code>Space</code> or <code>y</code> replace this occurence<br />
<code>Del</code> or <code>n</code> don&#8217;t replace<br />
<code>.</code> only replace this and exit (replace)<br />
<code>,</code> replace and pause (resume with Space or y)<br />
<code>!</code> replace all following occurences<br />
<code>^</code> back to previous match<br />
<code>RETURN</code> or <code>q</code> quit replace</p></blockquote>
<h2>Search/Replace with regular expressions</h2>
<p>Characters to use in regular expressions:<br />
<code>^</code> beginning of line<br />
<code>$</code> end of line<br />
<code>.</code> single char<br />
<code>.*</code> group or null of chars<br />
<code>\&lt;</code> beginning of a word <code>\&gt;</code> end of a word<br />
<code>[]</code> every char inside the backets (for example [a-z] means every small letter)</p>
<p><code>M C-s RETURN</code> search for regular expression forward<br />
<code>M C-r RETURN</code> search for regular expression backward<br />
<code>M C-s</code> incremental search<br />
<code>C-s</code> repeat incremental search<br />
<code>M C-r</code> incremental search backwards<br />
<code>C-r</code> repeat backwards<br />
<code>M-x query-replace-regexp</code> search and replace</p>
<h2>Window-Commands</h2>
<p><code>C-x 2</code> split window vertically<br />
<code>C-x o</code> change to other window<br />
<code>C-x 0</code> delete window<br />
<code>C-x 1</code> close all windows except the one the cursors in<br />
<code>C-x ^</code> enlarge window<br />
<code>M-x shrink-window</code> command says it <img src='http://www.tekkie.ro/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /><br />
<code>M C-v</code> scroll other window<br />
<code>C-x 4 f</code> find file in other window<br />
<code>C-x 4 o</code> change to other window<br />
<code>C-x 4 0</code> kill buffer and window<br />
<code>C-x 5 2</code> make new frame<br />
<code>C-x 5 f</code> find file in other frame<br />
<code>C-x 5 o</code> change to other frame<br />
<code>C-x 5 0</code> close this frame</p>
<h2>Bookmark commands</h2>
<p><code>C-x r m</code> set a bookmark at current cursor pos<br />
<code>C-x r b</code> jump to bookmark<br />
<code>M-x bookmark-rename</code> says it<br />
<code>M-x bookmark-delete</code> &#8221;<br />
<code>M-x bookmark-save</code> &#8221;<br />
<code>C-x r l</code> list bookmarks</p>
<blockquote><p><code>d</code> mark bookmark for deletion<br />
<code>r</code> rename bookmark<br />
<code>s</code> save all listed bookmarks<br />
<code>f</code> show bookmark the cursor is over<br />
<code>m</code> mark bookmarks to be shown in multiple window<br />
<code>v</code> show marked bookmarks (or the one the cursor is over)<br />
<code>t</code> toggle listing of the corresponding paths<br />
<code>w</code> &#8221; path to this file<br />
<code>x</code> delete marked bookmarks<br />
<code>Del</code> ?<br />
<code>q</code> quit bookmark list</p></blockquote>
<p><code>M-x bookmark-write</code> write all bookmarks in given file<br />
<code>M-x bookmark-load</code> load bookmark from given file</p>
<h2>Shell</h2>
<p><code>M-x</code> shell starts shell modus<br />
<code>C-c C-c</code> same as <code>C-c</code> under unix (stop running job)<br />
<code>C-d</code> delete char forward<br />
<code>C-c C-d</code> Send EOF<br />
<code>C-c C-z</code> suspend job (<code>C-z</code> under unix)<br />
<code>M-p</code> show previous commands</p>
<h2>DIRectory EDitor (dired)</h2>
<p><code>C-x d</code> start up dired<br />
<code>C</code> (large C) copy<br />
<code>d</code> mark for erase<br />
<code>D</code> delete right away<br />
<code>e</code> or <code>f</code> open file or directory<br />
<code>g</code> reread directory structure from file<br />
<code>G</code> change group permissions (chgrp)<br />
<code>k</code> delete line from listing on screen (don&#8217;t actually delete)<br />
<code>m</code> mark with *<br />
<code>n</code> move to next line<br />
<code>o</code> open file in other window and go there<br />
<code>C-o</code> open file in other window but don&#8217;t change there<br />
<code>P</code> print file<br />
<code>q</code> quit dired<br />
<code>Q</code> do query-replace in marked files<br />
<code>R</code> rename file<br />
<code>u</code> remove mark<br />
<code>v</code> view file content<br />
<code>x</code> delete files marked with D<br />
<code>z</code> compress file<br />
<code>M-Del</code> remove all marks (whatever kind)<br />
<code>~</code> mark backup files (name~ files) for deletion<br />
<code>#</code> mark auto-save files (#name#) for deletion<br />
<code>*/</code> mark directory with * (<code>C-u *</code> removes that mark again)<br />
<code>=</code> compare this file with marked file<br />
<code>M-=</code> compare this file with it&#8217;s backup file<br />
<code>!</code> apply shell command to this file<br />
<code>M-}</code> change to the next file marked with * od D<br />
<code>M-{</code> &#8221; previous &#8221;<br />
<code>% d</code> mark files described through regular expression for deletion<br />
<code>% m</code> &#8221; (with *)<br />
<code>+</code> create directory<br />
<code>&gt;</code> changed to next dir<br />
<code>&lt;</code> change to previous dir<br />
<code>s</code> toggle between sorting by name or date</p>
<p>Maybe into this category also fits this command:<br />
<code>M-x speedbar</code> starts up a separate window with a directory view</p>
<h2>Telnet</h2>
<p><code>M-x</code> telnet starts up telnet-modus<br />
<code>C-d</code> either delete char or send EOF<br />
<code>C-c C-c</code> stop running job (similar to <code>C-c</code> under unix)<br />
<code>C-c C-d</code> send EOF<br />
<code>C-c C-o</code> clear output of last command<br />
<code>C-c C-z</code> suspend execution of command<br />
<code>C-c C-u</code> kill line backwards<br />
<code>M-p</code> recall previous command</p>
<h2>Text</h2>
<p>Works only in text mode<br />
<code>M-s</code> center line<br />
<code>M-S</code> center paragraph<br />
<code>M-x center-region</code> name says</p>
<h2>Macro-commands</h2>
<p><code>C-x (</code> start macro definition<br />
<code>C-x )</code> end of macro definition<br />
<code>C-x e</code> execute last defined macro<br />
<code>M-n C-x e</code> execute last defined macro n times<br />
<code>M-x name-last-kbd-macro</code> give name to macro (for saving)<br />
<code>M-x insert-keyboard-macro</code> save named macro into file<br />
<code>M-x load-file</code> load macro<br />
<code>M-x macroname</code> execute macroname</p>
<h2>Programming</h2>
<p><code>M C-\</code> indent region between cursor and mark<br />
<code>M-m</code> move to first (non-space) char in this line<br />
<code>M-^</code> attach this line to previous<br />
<code>M-;</code> formatize and indent comment</p>
<p>C, C++ and Java Modes<br />
<code>M-a</code> beginning of statement<br />
<code>M-e</code> end of statement<br />
<code>M C-a</code> beginning of function<br />
<code>M C-e</code> end of function<br />
<code>C-c RETURN</code> Set cursor to beginning of function and mark at the end<br />
<code>C-c C-q</code> indent the whole function according to indention style<br />
<code>C-c C-a</code> toggle modus in which after electric signs (like {}:&#8217;;./*) emacs does the indention<br />
<code>C-c C-d</code> toggle auto hungry mode in which emacs deletes groups of spaces with one del-press<br />
<code>C-c C-u</code> go to beginning of this preprocessor statement<br />
<code>C-c C-c</code> comment out marked area</p>
<p>More general<br />
<code>M-x outline-minor-mode</code> collapses function definitions in a file to a mere {&#8230;}<br />
<code>M-x show-subtree</code> If you are in one of the collapsed functions, this un-collapses it<br />
In order to achive some of the feats coming up now you have to run etags *.c *.h *.cpp (or what ever ending you source files have) in the source directory<br />
<code>M-.</code> (Thats Meta dot) If you are in a function call, this will take you to it&#8217;s definition<br />
<code>M-x tags-search ENTER</code> Searches through all you etaged<br />
<code>M-,</code> (Meta comma) jumps to the next occurence for tags-search<br />
<code>M-x tags-query-replace</code> yum. This lets you replace some text in all the tagged files</p>
<h2>GDB (Debugger)</h2>
<p><code>M-x gdb</code> starts up gdm in an extra window</p>
<h2>Version Control</h2>
<p><code>C-x v d</code> show all registered files in this dir<br />
<code>C-x v =</code> show diff between versions<br />
<code>C-x v u</code> remove all changes since last checkin<br />
<code>C-x v ~</code> show certain version in different window<br />
<code>C-x v l</code> print log<br />
<code>C-x v i</code> mark file for version control add<br />
<code>C-x v h</code> insert version control header into file<br />
<code>C-x v r</code> check out named snapshot<br />
<code>C-x v s</code> create named snapshot<br />
<code>C-x v a</code> create changelog file in gnu-style</p>
<p>When <a title="Emacs command reference" href="http://www.cse.unl.edu/~choueiry/S08-476-876/Documents/emacs_ref.html">the one I normally use</a> is down, I really need a complete cheatsheet for Emacs, so I added it here.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tekkie.ro/resources/list-of-emacs-commands/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>hCard brief introduction</title>
		<link>http://www.tekkie.ro/resources/hcard-brief-introduction/</link>
		<comments>http://www.tekkie.ro/resources/hcard-brief-introduction/#comments</comments>
		<pubDate>Fri, 19 Nov 2010 22:24:58 +0000</pubDate>
		<dc:creator>Georgiana</dc:creator>
				<category><![CDATA[Quick and dirty]]></category>
		<category><![CDATA[Resources]]></category>
		<category><![CDATA[hCard]]></category>
		<category><![CDATA[microformats]]></category>
		<category><![CDATA[online tools]]></category>
		<category><![CDATA[quickies]]></category>
		<category><![CDATA[Web development]]></category>

		<guid isPermaLink="false">http://www.tekkie.ro/?p=262</guid>
		<description><![CDATA[Below you can find a brief list to get you started. reading start point, have a look at some examples, or simply generate yours for more advanced information, refer to the semanticweb.org validate it place a link to http://h2vx.com/vcf/your.website.com/contact-page/ or to http://feeds.technorati.com/contacts/http://your.website.com/contact-page/ , replacing your.website.com/contact-page/ with your correct online URL discover hCards in the web [...]]]></description>
			<content:encoded><![CDATA[<p>Below you can find a brief list to get you started.</p>
<ul>
<li><a title="hCard starting point on microformats.org" href="http://microformats.org/wiki/hcard">reading start point</a>, have a look at <a title="hCard examples on microformats.org" href="http://microformats.org/wiki/hcard-examples">some</a> <a title="real-life usage of hCards" href="http://microformats.org/wiki/hcard-examples-in-wild">examples</a>, or simply <a title="hCard creator on microformats.org" href="http://microformats.org/code/hcard/creator">generate yours</a></li>
<li>for more advanced information, refer to the <a href="http://semanticweb.org/wiki/HCard">semanticweb.org</a></li>
<li><a title="hCard validator" href="http://hcard.geekhood.net/">validate it</a></li>
<li>place a link to
<pre>http://h2vx.com/vcf/your.website.com/contact-page/</pre>
<p>or to</p>
<pre>http://feeds.technorati.com/contacts/http://your.website.com/contact-page/</pre>
<p>, replacing</p>
<pre>your.website.com/contact-page/</pre>
<p>with your correct online URL</li>
<li>discover hCards in the web pages you crawl with the <a href="https://addons.mozilla.org/en-US/firefox/addon/3886/">Semantic Radar</a> or  <a href="https://addons.mozilla.org/en-US/firefox/addon/2240/">Tails Export</a> add-ons for Firefox</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.tekkie.ro/resources/hcard-brief-introduction/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Checklist for the Agile Manager</title>
		<link>http://www.tekkie.ro/resources/checklist-for-the-agile-manager/</link>
		<comments>http://www.tekkie.ro/resources/checklist-for-the-agile-manager/#comments</comments>
		<pubDate>Thu, 28 May 2009 09:26:37 +0000</pubDate>
		<dc:creator>Georgiana</dc:creator>
				<category><![CDATA[Methodology]]></category>
		<category><![CDATA[Resources]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[presentation]]></category>
		<category><![CDATA[Software development processes]]></category>

		<guid isPermaLink="false">http://www.tekkie.ro/?p=171</guid>
		<description><![CDATA[To be a leader is not the next step for managers. It is the manager&#8217;s job to leave room to leaders. Checklist for the Agile Manager View more OpenOffice presentations from Jurgen Appelo.]]></description>
			<content:encoded><![CDATA[<blockquote><p>To be a leader is <em>not</em> the next step for managers. It is the manager&#8217;s job to <em>leave room</em> to leaders.</p></blockquote>
<div id="__ss_1476474" style="width: 425px; text-align: left;"><a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" title="Checklist for the Agile Manager" href="http://www.slideshare.net/jurgenappelo/checklist-for-the-agile-manager?type=powerpoint">Checklist for the Agile Manager</a><object width="425" height="355" data="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=checklistfortheagilemanager-090522153628-phpapp01&amp;stripped_title=checklist-for-the-agile-manager" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=checklistfortheagilemanager-090522153628-phpapp01&amp;stripped_title=checklist-for-the-agile-manager" /><param name="allowfullscreen" value="true" /></object></p>
<div style="font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px;">View more <a style="text-decoration:underline;" href="http://www.slideshare.net/">OpenOffice presentations</a> from <a style="text-decoration:underline;" href="http://www.slideshare.net/jurgenappelo">Jurgen Appelo</a>.</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.tekkie.ro/resources/checklist-for-the-agile-manager/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The PHP code conventions I use</title>
		<link>http://www.tekkie.ro/resources/the-php-code-conventions-i-use/</link>
		<comments>http://www.tekkie.ro/resources/the-php-code-conventions-i-use/#comments</comments>
		<pubDate>Fri, 22 May 2009 13:42:57 +0000</pubDate>
		<dc:creator>Georgiana</dc:creator>
				<category><![CDATA[Resources]]></category>
		<category><![CDATA[code conventions]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.tekkie.ro/?p=166</guid>
		<description><![CDATA[&#60;?php // Did you notice the full-style opening PHP tags? /************************************************************** * Variable Naming conventions ************************************************************* * - Use data type as prefix inside the name * Eg: $sName instead of just $name * - Try to use as descriptive names as possible * Eg: $arProductList instead of just $arList **************************************************************/ /************************************************************** * Basic Datatypes [...]]]></description>
			<content:encoded><![CDATA[<pre class="brush: php">

&lt;?php
// Did you notice the full-style opening PHP tags?

/**************************************************************
 * Variable Naming conventions
 *************************************************************
 * - Use data type as prefix inside the name
 *          Eg: $sName instead of just $name
 * - Try to use as descriptive names as possible
 *         Eg: $arProductList instead of just $arList
 **************************************************************/

/**************************************************************
 * Basic Datatypes conventions
 **************************************************************/

// Strings
$sName = &quot;tekkie.ro&quot;;

// Integers
$iYear = 2004;

// Floats
$fAccountValue = 12.34;

// Booleans
$bCheck = true;

// Objects
$oProduct = new Product( $iProductId );

// Arrays
$aProperties = array (&#039;1&#039;, &#039;2&#039;, &#039;3&#039;);

/**************************************************************
* Spacing convention
**************************************************************/

$iSum = $iNumber1 + $iNumber2;
$sSum = $iNumber1 . $iNumber2; // space dot space before and after a variable
$sSum = &#039; Here we add a number &#039; . $iNumber1; // quote space dot space after a string
$sSum = $iNumber2 . &#039; Here we add a number &#039;; // space dot space quote before a string

/*
* Function definition convention
*
* A comment describing the function should precede its declaration.
* Begin with a slash followed by two stars.
* Give a one-line function synopsis, then a brief explanation.
*/

/**
 * bool hasPrices (obj oProduct [, bool bAlwaysTrue])
 *
 * @param Product the product we chack for prices
 * @param boolean
 * @return true if the Product has prices, false otherwise
*/

function hasPrices( $oProduct, $bAlwaysTrue = false ) {
    if ($bAlwaysTrue) return true;
    foreach ($oProduct-&gt;aProperties as $sProperty ) {
        if( &#039;price&#039; === $sProperty ) {  // use === as often as possible; put the string first for speed reasons
            return( true );
        } // .. if
    }
    return( false );
} // END func hasPrices()

/*
 * echo tag
 */

define (CR, &quot;\n&quot;);

echo 

	CR, &#039;Line1&lt;br /&gt;&#039;,

	CR, &#039;Line2&lt;br /&gt;&#039;,

	CR, &#039;Line3&lt;br /&gt;&#039;
;

/**************************************************************
 * Spacing convention
 **************************************************************/

// Code like this:

$sText = &#039;Time flies like an arrow.&#039;;
$sText .= &#039; Fruit flies like bananas.&#039;;

// Should be done in one statement instead of two:

$sText =
    &#039;Time flies like an arrow.&#039; .
    &#039; Fruit flies like bananas.&#039;
;

?&gt;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.tekkie.ro/resources/the-php-code-conventions-i-use/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>PHP on Hormones: Rasmus Lerdorf talk</title>
		<link>http://www.tekkie.ro/resources/php-on-hormones-rasmus-lerdorf-talk/</link>
		<comments>http://www.tekkie.ro/resources/php-on-hormones-rasmus-lerdorf-talk/#comments</comments>
		<pubDate>Thu, 18 Dec 2008 10:26:09 +0000</pubDate>
		<dc:creator>Georgiana</dc:creator>
				<category><![CDATA[Resources]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[tekkies]]></category>

		<guid isPermaLink="false">http://www.tekkie.ro/?p=78</guid>
		<description><![CDATA[Rasmus Lerdorf from Yahoo! talks at MySQL Conference &#38; Expo 2007. Starts with the beginning of PHP and continues to more advances stuff. Make sure you have the slides handy, too. Spaghetti code, otherwise known as Drupal.]]></description>
			<content:encoded><![CDATA[<p><a title="Rasmus Lerdorf resume" href="http://lerdorf.com/resume/">Rasmus Lerdorf</a> from Yahoo! talks at MySQL Conference &amp; Expo 2007. Starts with the beginning of PHP and continues to more advances stuff.</p>
<p>Make sure you <a title="PHP on Hormones: MySQL Conference slides" href="http://talks.php.net/show/mysql07key">have the slides handy</a>, too.</p>
<p><object width="320" height="270" data="http://blip.tv/play/AaGUe4a8EA" type="application/x-shockwave-flash"><param name="src" value="http://blip.tv/play/AaGUe4a8EA" /><param name="allowfullscreen" value="true" /></object></p>
<blockquote><p>Spaghetti code, otherwise known as Drupal.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.tekkie.ro/resources/php-on-hormones-rasmus-lerdorf-talk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Writing code is an art, not a simple day-job</title>
		<link>http://www.tekkie.ro/resources/writing-code-art-not-simple-day-job/</link>
		<comments>http://www.tekkie.ro/resources/writing-code-art-not-simple-day-job/#comments</comments>
		<pubDate>Mon, 01 Dec 2008 18:09:57 +0000</pubDate>
		<dc:creator>Georgiana</dc:creator>
				<category><![CDATA[Methodology]]></category>
		<category><![CDATA[Resources]]></category>

		<guid isPermaLink="false">http://www.tekkie.ro/?p=57</guid>
		<description><![CDATA[If builders built buildings the way programmers wrote programs, then the first woodpecker that came along would destroy civilization. Gerald Weinberg Copy and paste is a design error. David Parnas   Think about how you develop your own code. Do you rush into writing a piece of code and use comments later, if you have [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>If builders built buildings the way programmers wrote programs, then the first woodpecker that came along would destroy civilization.</p></blockquote>
<p>Gerald Weinberg</p>
<blockquote><p>Copy and paste is a design error.</p></blockquote>
<p>David Parnas<br />
 </p>
<p>Think about how you develop your own code.</p>
<p>Do you rush into writing a piece of code and use comments later, if you have any time left? Or do you use a pseudocode approach by writing comments n the first place and then developing functionality to implement that?</p>
<p>Do you develop code in such a way that it can be later tested and mainained? Or do you write it, prove &#8220;it works&#8221; and think about it next time you have to adjust functionality?</p>
<p>Do you favor speed for maintainability?</p>
<p>These are the lessons one learns while reading <a title="Code Complete, A Practical Handbook of Software Construction" href="http://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670">Code Complete</a>, a book which aims to learn you how to do stuff <strong>right</strong>, not &#8220;just do it&#8221;. I like it more and more while I&#8217;m reading it. Most of the examples present common-sense development, yet I&#8217;ve seen so much poor code which does the job that I would like to reccommend it to all software developers. If you do read it, I can only promise it&#8217;ll make you a better colleague than you already might be.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tekkie.ro/resources/writing-code-art-not-simple-day-job/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JavaScript for PHP developers</title>
		<link>http://www.tekkie.ro/resources/javascript-for-php-developers/</link>
		<comments>http://www.tekkie.ro/resources/javascript-for-php-developers/#comments</comments>
		<pubDate>Wed, 29 Oct 2008 18:54:42 +0000</pubDate>
		<dc:creator>Georgiana</dc:creator>
				<category><![CDATA[Resources]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.tekkie.ro/?p=44</guid>
		<description><![CDATA[If you're a PHP developer and you find it difficult to get used to all the insides of JavaScript, you might need PHP.JS, developed by Kevin van Zonneveld.]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;re a PHP developer and you find it difficult to get used to all the insides of JavaScript, I think you need to take a look at <a href="http://phpjs.org/">PHP.JS</a>. It&#8217;s a brilliant tool initially developed by <a href="http://kevin.vanzonneveld.net/about/">Kevin van Zonneveld</a>, and which aims to port most of the usual PHP functions into equivalent JavaScript ones.</p>
<p>There are two ways of using this excellent codebase:</p>
<ul>
<li>grab all the <a title="one file containing all the available PHP.Js functions" href="http://kevin.vanzonneveld.net/code/php_equivalents/php.js">available PHP.JS functions</a> and use them as you need them</li>
<li>take each function you really need and put it into your JS codebase for the project</li>
</ul>
<p>The advantage of the second method is that you don&#8217;t have code you don&#8217;t need included all over the place, but it also means you will search each time the codebase to discover the code you need. Meanwhile, the first solution seems appropriate for the ones in a hurry, you just try to use one function like you&#8217;re accustomed in PHP and it&#8217;s there already included, you&#8217;re developing fast and safe, with just a small performance issue you can always address later.</p>
<p>Let&#8217;s say you&#8217;ve using the <a title="PHP long2ip function manual page" href="http://php.net/long2ip">long2ip</a> and <a title="PHP ip2long function manual page" href="http://www.php.net/ip2long">ip2long</a> PHP functions for storing IPs as numbers, and have a strong preference for using them for performance reasons, as all your IPs are stored as numbers in the database. What if you need similar functionality in JavaScript? Well, just <a title="PHP.JS long2ip function" href="http://phpjs.org/functions/long2ip:48e4b52c-c26c-4ba7-84f0-2d6486a786ee">take the code</a> <a title="PHP.JS ip2long function" href="http://phpjs.org/functions/ip2long:48e4b52b-3860-4f6c-830b-2d6486a786ee">you need</a> and use it! It&#8217;s that simple <img src='http://www.tekkie.ro/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.tekkie.ro/resources/javascript-for-php-developers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Collaborative online task tracker &#8211; free</title>
		<link>http://www.tekkie.ro/resources/collaborative-online-task-tracker-free/</link>
		<comments>http://www.tekkie.ro/resources/collaborative-online-task-tracker-free/#comments</comments>
		<pubDate>Sun, 28 Sep 2008 14:39:16 +0000</pubDate>
		<dc:creator>Georgiana</dc:creator>
				<category><![CDATA[Resources]]></category>
		<category><![CDATA[online tools]]></category>

		<guid isPermaLink="false">http://www.tekkie.ro/?p=20</guid>
		<description><![CDATA[free online issue tracking system, with minimal set of features: No Kahuna]]></description>
			<content:encoded><![CDATA[<p>Every project, be it small, medium or large, needs tracking down its status and pieces of work / research. A team of people will bring the project to completion, so even if the team has only one member, a way of tracking down its status and work left is extremely important for having always a quick and accurate overview.</p>
<p>For managing small projects, I have found a nice <a href="http://nokahuna.com/" alt="Website of No Kahuna">collaborative task tracker</a> with minimal features. It allows for setting up projects, creating tasks, distributing them and tracking them down for completion.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tekkie.ro/resources/collaborative-online-task-tracker-free/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to be a programmer</title>
		<link>http://www.tekkie.ro/resources/how-to-be-a-programmer/</link>
		<comments>http://www.tekkie.ro/resources/how-to-be-a-programmer/#comments</comments>
		<pubDate>Sat, 27 Sep 2008 15:22:08 +0000</pubDate>
		<dc:creator>Georgiana</dc:creator>
				<category><![CDATA[Resources]]></category>
		<category><![CDATA[books]]></category>
		<category><![CDATA[personal skills]]></category>

		<guid isPermaLink="false">http://www.tekkie.ro/?p=18</guid>
		<description><![CDATA[Resource: "How to be a Programmer" by Robert Read]]></description>
			<content:encoded><![CDATA[<p>A <a title="How to be a Programmer by Robert Read" href="http://samizdat.mines.edu/howto/HowToBeAProgrammer.html" target="_blank">good book</a> on what it means to be a programmer and how you cand improve your abilities.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tekkie.ro/resources/how-to-be-a-programmer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

