<?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>Benjamin Mock &#187; Coding</title>
	<atom:link href="http://benjaminmock.de/category/coding/feed/" rel="self" type="application/rss+xml" />
	<link>http://benjaminmock.de</link>
	<description>web &#38; mobile development</description>
	<lastBuildDate>Thu, 05 Apr 2012 20:49:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>7 Things I Hate About Xcode</title>
		<link>http://benjaminmock.de/7-thing-i-hate-about-xcode/</link>
		<comments>http://benjaminmock.de/7-thing-i-hate-about-xcode/#comments</comments>
		<pubDate>Tue, 08 Nov 2011 16:20:31 +0000</pubDate>
		<dc:creator>Benjamin</dc:creator>
				<category><![CDATA[Coding]]></category>

		<guid isPermaLink="false">http://benjaminmock.de/?p=342</guid>
		<description><![CDATA[Usually I&#8217;m working on Windows Systems. I&#8217;m using Eclipse for all my coding work. JavaScript, PHP and Android-Development. Eclipse has a really nice set of great features for all these languages. But lately I&#8217;m working on an iPhone App. So I have to use the Mac and Xcode as IDE. There are a lot of [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://benjaminmock.de/wp-content/uploads/1320769062_Xcode.png"><img src="http://benjaminmock.de/wp-content/uploads/1320769062_Xcode.png" alt="" title="Xcode Icon" width="128" height="128" class="alignleft size-full wp-image-344" /></a>Usually I&#8217;m working on Windows Systems. I&#8217;m using Eclipse for all my coding work. JavaScript, PHP and Android-Development. Eclipse has a really nice set of great features for all these languages. But lately I&#8217;m working on an iPhone App. So I have to use the Mac and Xcode as IDE. There are a lot of things I really don&#8217;t like about Xcode. Here&#8217;s my ongoing list of Xcode shortcomings and bugs:</p>
<ol>
<li>A shortcut to <strong>jump to the place last edited</strong> is missing. In Eclipse im using CTRL+Q all the time. Write someting; look something up and press CTRL+Q to jump back to your edited place is so easy. In Xcode you can use Undo + Redo &#8211; but it works only in the same file.</li>
<li><strong>Find &#038; Replace in Selection</strong> is missing completely.</li>
<li>Refactoring (i.e. renaming) jumps to file end. Why? I want to keep editing where I was and I don&#8217;t want to scroll up and look for the position I started the refactoring.</li>
<li>Stopping or restarting the iPhone-simulator lets Xcode jump to main.m because of the sigkill in the debugger. The simulator itself is quite good, but having to click around to get to the code I&#8217;m currently working at after each time I&#8217;m restarting the simulator pretty much sucks</li>
<li>You have to select the definition of a variable to rename it with the refactoring tool. In Eclipse I can click on any occurence of the variable and refactor it right there</li>
<li>Pos1 or Apple+left jumps to the beginning of the line and not to the current indentation level. In Eclipse I press Pos1 and it jumps to the current indentation level. Another Pos1 and it jumps to the beginning of the line. That&#8217;s much more useful than always jumping to the beginning</li>
<li>Selecting and using the mouse wheel doesn&#8217;t work. That&#8217;s a big bug in my opinion</li>
</ol>
<p>If there&#8217;s anything on this list because I&#8217;m using Xcode wrong or if you have a workaround for some of the points I&#8217;d be glad if you&#8217;d let me know it.</p>
]]></content:encoded>
			<wfw:commentRss>http://benjaminmock.de/7-thing-i-hate-about-xcode/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Send eMail with Android</title>
		<link>http://benjaminmock.de/send-email-with-android/</link>
		<comments>http://benjaminmock.de/send-email-with-android/#comments</comments>
		<pubDate>Wed, 20 Jul 2011 23:39:05 +0000</pubDate>
		<dc:creator>Benjamin</dc:creator>
				<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://benjaminmock.de/?p=324</guid>
		<description><![CDATA[final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); emailIntent.setType("plain/text"); emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[]{"to@email.com"}); emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Subject"); emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Text"); context.startActivity(Intent.createChooser(emailIntent, "Send mail..."));]]></description>
			<content:encoded><![CDATA[<p><code><br />
final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);</p>
<p>emailIntent.setType("plain/text");<br />
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[]{"to@email.com"});<br />
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Subject");<br />
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Text");</p>
<p>context.startActivity(Intent.createChooser(emailIntent, "Send mail..."));<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://benjaminmock.de/send-email-with-android/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eclipse Autocomplete für CodeIgniter</title>
		<link>http://benjaminmock.de/eclipse-autocomplete-fuer-codeigniter/</link>
		<comments>http://benjaminmock.de/eclipse-autocomplete-fuer-codeigniter/#comments</comments>
		<pubDate>Sat, 24 Jul 2010 16:24:13 +0000</pubDate>
		<dc:creator>Benjamin</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[autocomplete]]></category>
		<category><![CDATA[codeigniter]]></category>

		<guid isPermaLink="false">http://benjaminmock.de/?p=254</guid>
		<description><![CDATA[Ich verwende für so ziemlich alle meine Programmierarbeiten die Eclipse IDE. Leider hatte ich bisher noch keinen Weg gekannt das Autocomplete für CodeIgniter-Projekte zu aktivieren. Die Dokumentation von CodeIgniter ist zwar richtig gut, dennoch kostet das Nachschlagen seltener verwendeter Methoden doch immer recht viel Zeit. Ein Autocomplete ist für die CodeIgniter Methoden ist daher eine [...]]]></description>
			<content:encoded><![CDATA[<p>Ich verwende für so ziemlich alle meine Programmierarbeiten die Eclipse IDE. Leider hatte ich bisher noch keinen Weg gekannt das Autocomplete für CodeIgniter-Projekte zu aktivieren. Die Dokumentation von CodeIgniter ist zwar richtig gut, dennoch kostet das Nachschlagen seltener verwendeter Methoden doch immer recht viel Zeit. Ein Autocomplete ist für die CodeIgniter Methoden ist daher eine echte Erleichterung. <a href="http://www.gostomski.co.uk/codeigniter/getting-full-auto-complete-with-codeigniter-in-eclipse">Damian Gostomski</a> erklärt in diesem Post wie es geht. Auch wenn man das Projekt cleanen muss und Eclipse neustarten muss &#8211; irgendwann funktioniert es. Also am besten einfach mal austesten:</p>
<p>1) In system/codeigniter/Base5.php (bzw. Base4.php) am Ende des Konstruktors den folgenden Code einbinden:</p>
<p><code><br />
if(false) { // eclipse autocomplete<br />
			$agent = new CI_User_agent();<br />
			$benchmark = new CI_Benchmark();<br />
			$calendar = new CI_Calendar();<br />
			$cart = new CI_Cart();<br />
			$config = new CI_Config();<br />
			$db = new CI_DB_active_record();<br />
			$email = new CI_Email();<br />
			$encrypt = new CI_Encrypt();<br />
			$form_validation = new CI_Form_validation();<br />
			$ftp = new CI_FTP();<br />
			$image_lib = new CI_Image_lib();<br />
			$input = new CI_Input();<br />
			$lang = new CI_Language();<br />
			$output = new CI_Output();<br />
			$pagination = new CI_Pagination();<br />
			$parser = new CI_Parser();<br />
			$session = new CI_Session();<br />
			$table = new CI_Table();<br />
			$trackback = new CI_Trackback();<br />
			$typography = new CI_Typography();<br />
			$unit = new CI_Unit_test();<br />
			$upload = new CI_Upload();<br />
			$uri = new CI_URI();<br />
			$xmlrpc = new CI_Xmlrpc();<br />
			$xmlrpcs = new CI_Xmlrpcs();<br />
			$zip = new CI_Zip();<br />
		}<br />
</code></p>
<p>2) Project -> clean<br />
3) Eclipse neu starten<br />
4) falls das Autocomplete nicht erscheint den Shortcut Strg + Leer testen</p>
]]></content:encoded>
			<wfw:commentRss>http://benjaminmock.de/eclipse-autocomplete-fuer-codeigniter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Safe Mode auf der Kommandozeile</title>
		<link>http://benjaminmock.de/safe-mode-auf-der-kommandozeile/</link>
		<comments>http://benjaminmock.de/safe-mode-auf-der-kommandozeile/#comments</comments>
		<pubDate>Thu, 25 Mar 2010 23:44:28 +0000</pubDate>
		<dc:creator>Benjamin</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[safe mode]]></category>

		<guid isPermaLink="false">http://benjaminmock.de/?p=228</guid>
		<description><![CDATA[Ich hatte gerade auf der Konsole (cli) auf einem Server den Fehler &#8220;set_time_limit(): Cannot set time limit in safe mode in &#8230;&#8221;, obwohl ich laut phpinfo() den Safe Mode ausgeschaltet hatte. Nach anfänglicher Verwunderung habe ich festgestellt, dass zwei verschiedene php.inis verwendet werden; eine für den Apache, eine für die Kommandozeile. Unter Suse 10 findet [...]]]></description>
			<content:encoded><![CDATA[<p>Ich hatte gerade auf der Konsole (cli) auf einem Server den Fehler &#8220;set_time_limit(): Cannot set time limit in safe mode in &#8230;&#8221;, obwohl ich laut phpinfo() den Safe Mode ausgeschaltet hatte. Nach anfänglicher Verwunderung habe ich festgestellt, dass zwei verschiedene php.inis verwendet werden; eine für den Apache, eine für die Kommandozeile.</p>
<p>Unter Suse 10 findet man diese beispielsweise unter </p>
<p>Apache:<br />
/etc/php5/apache2/php.ini</p>
<p>CMD:<br />
/etc/php5/cli/php.ini</p>
]]></content:encoded>
			<wfw:commentRss>http://benjaminmock.de/safe-mode-auf-der-kommandozeile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JavaScript Console Wrapper</title>
		<link>http://benjaminmock.de/javascript-console-wrapper/</link>
		<comments>http://benjaminmock.de/javascript-console-wrapper/#comments</comments>
		<pubDate>Sun, 31 Jan 2010 02:46:41 +0000</pubDate>
		<dc:creator>Benjamin</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://benjaminmock.de/?p=224</guid>
		<description><![CDATA[Die alert()-function benutzt hoffentlich niemand mehr zum Debuggen von JavaScript. Dafür sind Tools wie Firebug viel zu gut und komfortabel, denn sie besitzen unter anderem eine Konsole, über die Log und Debug-Ausgaben getätigt werden können. Problematisch wird das nur, wenn Testbrowser keine Konsole besitzen, oder die console-Aufrufe vergessen werden. Dann nämlich werden Fehler geworfen und [...]]]></description>
			<content:encoded><![CDATA[<p>Die alert()-function benutzt hoffentlich niemand mehr zum Debuggen von JavaScript. Dafür sind Tools wie <a href="http://www.getfirebug.com/">Firebug</a> viel zu gut und komfortabel, denn sie besitzen unter anderem eine Konsole, über die Log und Debug-Ausgaben getätigt werden können. Problematisch wird das nur, wenn Testbrowser keine Konsole besitzen, oder die console-Aufrufe vergessen werden. Dann nämlich werden Fehler geworfen und der JavaScript-Code nicht weiter ausgeführt.</p>
<p>Abhilfe schaffen hier sogenannte Console-Wrapper. Diese ersetzen die console-Calls, falls keine Konsole vorhanden ist. Die Console-Wrapper von <a href="http://paulirish.com/2009/log-a-lightweight-wrapper-for-consolelog/">Paul Irish</a> oder <a href="http://benalman.com/projects/javascript-debug-console-log/">Ben Alman</a> sind hier besonders zu erwähnen, da diese die console-Calls speichern. Hängt man dann etwa Firebug-Lite an die Seite an, werden die gespeicherten Log-Ausgaben darin ausgegeben. </p>
<p>Hier der Link zur <a href="http://github.com/cowboy/javascript-debug/raw/master/ba-debug.min.js">minified-Version des Console-Wrappers</a> von Ben Alman, den man grundsätzlich in jedes JS-Projekt einbinden sollte um Fehler mit der Konsole zu vermeiden.</p>
]]></content:encoded>
			<wfw:commentRss>http://benjaminmock.de/javascript-console-wrapper/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CodeIgniter Validation-Library Probleme mit PHP 4</title>
		<link>http://benjaminmock.de/codeigniter-validation-library-probleme-mit-php-4/</link>
		<comments>http://benjaminmock.de/codeigniter-validation-library-probleme-mit-php-4/#comments</comments>
		<pubDate>Thu, 22 Oct 2009 10:53:00 +0000</pubDate>
		<dc:creator>Benjamin</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[codeigniter]]></category>
		<category><![CDATA[validation]]></category>

		<guid isPermaLink="false">http://benjaminmock.de/?p=185</guid>
		<description><![CDATA[Die CodeIgniter-Validation-Library zum Überprüfen von Formularen hat mit PHP 4 ein Problem. Wer die Fehlermeldung Message: Undefined property: ... in seiner View erhält kann sich mit $data['this'] = $this; im Controller behelfen. So wird das $this in der View erreichbar und somit sind auch die Validation-Values zugreifbar.]]></description>
			<content:encoded><![CDATA[<p>Die CodeIgniter-Validation-Library zum Überprüfen von Formularen hat mit PHP 4 ein Problem.</p>
<p>Wer die Fehlermeldung</p>
<pre language="php">
Message: Undefined property: ...
</pre>
<p>in seiner View erhält kann sich mit </p>
<pre language="php">
$data['this'] = $this;
</pre>
<p> im Controller behelfen. So wird das <b>$this</b> in der View erreichbar und somit sind auch die Validation-Values zugreifbar.</p>
]]></content:encoded>
			<wfw:commentRss>http://benjaminmock.de/codeigniter-validation-library-probleme-mit-php-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL Tabelle kopieren / synchronisieren</title>
		<link>http://benjaminmock.de/mysql-tabelle-kopieren-synchronisieren/</link>
		<comments>http://benjaminmock.de/mysql-tabelle-kopieren-synchronisieren/#comments</comments>
		<pubDate>Wed, 12 Aug 2009 02:01:49 +0000</pubDate>
		<dc:creator>Benjamin</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[copy]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[sync]]></category>

		<guid isPermaLink="false">http://benjaminmock.de/?p=176</guid>
		<description><![CDATA[Der einfachste Weg eine Datenbank anhand einer anderen zu synchronisieren ist, sie einfach zu kopieren. Das kann man über den Umweg eines Dumps machen, oder direkt über eine Pipe. Zwar handelt es sich dabei nicht um eine echte Synchronisation, da alle Daten gelöscht und neu erstellt werden, aber dieses Vorgehen funktioniert schnell und unkompliziert. mysqldump [...]]]></description>
			<content:encoded><![CDATA[<p>Der einfachste Weg eine Datenbank anhand einer anderen zu synchronisieren ist, sie einfach zu kopieren. Das kann man über den Umweg eines Dumps machen, oder direkt über eine Pipe. Zwar handelt es sich dabei nicht um eine echte Synchronisation, da alle Daten gelöscht und neu erstellt werden, aber dieses Vorgehen funktioniert schnell und unkompliziert.</p>
<pre><code>
mysqldump -al --user=[username1] --password=[pw1] -h [host1] --add-drop-table [db_name1] [table] | mysql -h [host2] --user=[username2] --password=[pw2] [db_name2]
</code></pre>
<p>Alles mit [*] muss natürlich entsprechend ersetzt werden (auch die Klammern entfernen!).</p>
]]></content:encoded>
			<wfw:commentRss>http://benjaminmock.de/mysql-tabelle-kopieren-synchronisieren/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JQuery CSS Reset Plugin</title>
		<link>http://benjaminmock.de/jquery-css-reset-plugin/</link>
		<comments>http://benjaminmock.de/jquery-css-reset-plugin/#comments</comments>
		<pubDate>Wed, 22 Jul 2009 02:06:29 +0000</pubDate>
		<dc:creator>Benjamin</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[reset-css]]></category>

		<guid isPermaLink="false">http://benjaminmock.de/?p=155</guid>
		<description><![CDATA[summary: plugin resets css styles of given element version: 0.1 date: 09.07.22 If you&#8217;re coding a widget which is not included in the page via an iframe you have to cope with a lot of different styles that are given by the css of the page. Using a lot of inline styles for your elements [...]]]></description>
			<content:encoded><![CDATA[<ul style="border:1px solid #ffffff; overflow:hidden;margin:5px;">
<li><b>summary: </b>plugin resets css styles of given element</li>
<li><b>version: </b>0.1</li>
<li><b>date: </b>09.07.22</li>
</ul>
<p>If you&#8217;re coding a widget which is not included in the page via an iframe you have to cope with a lot of different styles that are given by the css of the page. Using a lot of inline styles for your elements is most of the time not an option, because you need some easy injectable html-code for the users. So styling your widget with JavaScript is the best option. And therefore you will maybe like to reset the css for your elements. And that&#8217;s exactly what the <b>beResetCSS</b>-JQuery-Plugin does.</p>
<h3>Download</h3>
<p style="border:1px solid #ffffff; overflow:hidden;">
<img src="http://benjaminmock.de/wp-content/uploads/box_download.png" align="left" alt="download beResetCSS"> <br/><br /> <br />
<a href="http://benjaminmock.de/wp-content/uploads/beResetCSS.zip">Download BeResetCSS v0.1 as zip</a></p>
<h3>Usage</h3>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family:monospace;">$<span style="color: #009900;">&#40;</span>document<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">ready</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;YourElement&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">beResetCSS</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre>
</div>
</div>
<p>The reset-CSS is based on the <a href="http://meyerweb.com/eric/tools/css/reset/">suggestion</a> from meyerweb.</p>
]]></content:encoded>
			<wfw:commentRss>http://benjaminmock.de/jquery-css-reset-plugin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mischen von Query-Strings und URL-Segmenten</title>
		<link>http://benjaminmock.de/mischen-von-query-strings-und-url-segmenten/</link>
		<comments>http://benjaminmock.de/mischen-von-query-strings-und-url-segmenten/#comments</comments>
		<pubDate>Tue, 21 Jul 2009 16:07:54 +0000</pubDate>
		<dc:creator>Benjamin</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[codeigniter]]></category>
		<category><![CDATA[query_string]]></category>
		<category><![CDATA[uri_protocol]]></category>

		<guid isPermaLink="false">http://benjaminmock.de/?p=152</guid>
		<description><![CDATA[CodeIgniter ist auf saubere URLs ausgelegt. Das heißt, dass Daten entweder per post durch Formulare oder per URL-Segment übergeben werden. Ein Zugriff auf das $_GET-Array ist in der Standardkonfiguration nicht vorgesehen. Dennoch kann es nötig sein eben dieses $_GET-Array zu nutzen. Eine Suchfunktion kann zum Beispiel ein Grund dafür sein. Zwar könnte der Suchstring auch [...]]]></description>
			<content:encoded><![CDATA[<p>CodeIgniter ist auf saubere URLs ausgelegt. Das heißt, dass Daten entweder per post durch Formulare oder per URL-Segment übergeben werden. Ein Zugriff auf das <b>$_GET</b>-Array ist in der Standardkonfiguration nicht vorgesehen. Dennoch kann es nötig sein eben dieses <b>$_GET</b>-Array zu nutzen. Eine Suchfunktion kann zum Beispiel ein Grund dafür sein. Zwar könnte der Suchstring auch mit post aus dem Formular übergeben werden, jedoch gäbe es keine Ergebnis-URLs, die z.B. vom Benutzer kopiert werden könnten. Entweder man kodiert den Suchstring mit base64 und nutzt diesen dann als URL Segment, so dass eindeutige URLs entstehen für alle Suchanfragen, allerdings ist diese URL dann natürlich nicht mehr lesbar. Will man lesbare URLs, muss man zwangsläufig auf die <b>Get-Methode</b> zurückgreifen.</p>
<p>Dazu setzt man in <b>system/application/config/config.php</b> den Wert von uri_protocol von AUTO auf PATH_INFO.</p>
<div class="wp_syntax">
<div class="code">
<pre class="php" style="font-family:monospace;"><span style="color: #000088;">$config</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'uri_protocol'</span><span style="color: #009900;">&#93;</span>	<span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;PATH_INFO&quot;</span><span style="color: #339933;">;</span></pre>
</div>
</div>
<p>In den Controllern, in denen nun das $_GET-Array genutzt werden soll muss folgende Zeile in den Konstruktor:</p>
<div class="wp_syntax">
<div class="code">
<pre class="php" style="font-family:monospace;"><span style="color: #990000;">parse_str</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'QUERY_STRING'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span><span style="color: #000088;">$_GET</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre>
</div>
</div>
<p>Damit kann dann in diesen Controllern ganz normal auf $_GET zugegriffen werden. Dennoch bleiben auch die URL-Segmente aktiviert und können weiter genutzt werden. </p>
]]></content:encoded>
			<wfw:commentRss>http://benjaminmock.de/mischen-von-query-strings-und-url-segmenten/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CodeIgniter error reporting / logging</title>
		<link>http://benjaminmock.de/codeigniter-error-reporting-logging/</link>
		<comments>http://benjaminmock.de/codeigniter-error-reporting-logging/#comments</comments>
		<pubDate>Mon, 20 Jul 2009 20:11:36 +0000</pubDate>
		<dc:creator>Benjamin</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[codeigniter]]></category>
		<category><![CDATA[error_reporting]]></category>
		<category><![CDATA[fehler]]></category>
		<category><![CDATA[logging]]></category>

		<guid isPermaLink="false">http://benjaminmock.de/?p=149</guid>
		<description><![CDATA[CodeIgniter wurde so entwickelt, dass es auf möglichst vielen Servern ohne Probleme läuft. Daher wird die Serverumgebung als unbekannt vorausgesetzt. Einstellungen wie display_error werden daher nicht beachtet. Vielmehr wird bei jedem Seitenaufruf die PHP-Funktion error_reporting aufgerufen. Wer die Einstellungen von error_reporting aber in der config.php sucht, wird vergeblich suchen. Eingestellt wird das error_reporting in der [...]]]></description>
			<content:encoded><![CDATA[<p>CodeIgniter wurde so entwickelt, dass es auf möglichst vielen Servern ohne Probleme läuft. Daher wird die Serverumgebung als unbekannt vorausgesetzt. Einstellungen wie <i>display_error</i> werden daher nicht beachtet. Vielmehr wird bei jedem Seitenaufruf die PHP-Funktion <i>error_reporting</i> aufgerufen. Wer die Einstellungen von error_reporting aber in der config.php sucht, wird vergeblich suchen. Eingestellt wird das error_reporting in der index.php im root-Verzeichnis.</p>
<p>Für den Test- und Entwicklungsbetrieb eignet sich</p>
<div class="wp_syntax">
<div class="code">
<pre class="php" style="font-family:monospace;"><span style="color: #990000;">error_reporting</span><span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">E_ALL</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre>
</div>
</div>
<p>Für den Produktivbetrieb, sollte diese Einstellung aber auf jeden Fall in</p>
<div class="wp_syntax">
<div class="code">
<pre class="php" style="font-family:monospace;"><span style="color: #990000;">error_reporting</span><span style="color: #009900;">&#40;</span>0<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre>
</div>
</div>
<p>geändert werden. Generell sollten zwar so wenig Fehler wie möglich auftreten, leider gibt es aber doch immer wieder Unvorhersehbarkeiten, die durch das Error Reporting sensible Daten aufdecken könnten.</p>
<p>Allerdings ist es allein mit dem Error Reporting noch nicht getan, denn Datenbankfehler werden dennoch angezeigt. Um auch diese im Produktivbetrieb auszuschalten muss in  <b>system/application/database.php</b></p>
<div class="wp_syntax">
<div class="code">
<pre class="php" style="font-family:monospace;"><span style="color: #000088;">$db</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'default'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'db_debug'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">TRUE</span><span style="color: #339933;">;</span></pre>
</div>
</div>
<p>in</p>
<div class="wp_syntax">
<div class="code">
<pre class="php" style="font-family:monospace;"><span style="color: #000088;">$db</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'default'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'db_debug'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">FALSE</span><span style="color: #339933;">;</span></pre>
</div>
</div>
<p>geändert werden. </p>
<p>Zwei einfache Handgriffe, die in jedem Fall zur Sicherheit der Applikation und des Servers beitragen und niemals vergessen werden sollten. Am besten aktiviert man, wenn man schon dabei ist in <b>system/application/config.php</b> das <b>Fehler Logging</b>. Dazu wird</p>
<div class="wp_syntax">
<div class="code">
<pre class="php" style="font-family:monospace;"><span style="color: #000088;">$config</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'log_threshold'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span></pre>
</div>
</div>
<p>auf</p>
<div class="wp_syntax">
<div class="code">
<pre class="php" style="font-family:monospace;"><span style="color: #000088;">$config</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'log_threshold'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span></pre>
</div>
</div>
<p>gesetzt. So werden alle aufgetretenen PHP-Fehler in <b>system/logs/</b> geloggt.</p>
]]></content:encoded>
			<wfw:commentRss>http://benjaminmock.de/codeigniter-error-reporting-logging/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

