<?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>Ric&#039;s Blog &#187; Computer</title>
	<atom:link href="http://blog.rki-home.de/category/computer/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.rki-home.de</link>
	<description>Interessantes oderso...</description>
	<lastBuildDate>Tue, 31 Aug 2010 15:20:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>PostgreSQL: interval</title>
		<link>http://blog.rki-home.de/2010/08/31/postgresql-interval/</link>
		<comments>http://blog.rki-home.de/2010/08/31/postgresql-interval/#comments</comments>
		<pubDate>Tue, 31 Aug 2010 15:20:22 +0000</pubDate>
		<dc:creator>ric</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Computer]]></category>
		<category><![CDATA[Datenbanken]]></category>
		<category><![CDATA[interval]]></category>
		<category><![CDATA[postgresql]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://blog.rki-home.de/?p=339</guid>
		<description><![CDATA[Wir hatten hier gerade einen schönen AHA-Effekt mit einem Query, bei dem mit Zeit-Intervallen gerechnet wurde. SELECT INTERVAL '600' SECOND; Das sieht doch gar nicht soo falsch aus und liefert auch keinen SQL-Fehler zurück. Leider ist das Ergebnis nicht gerade richtig: das Intervall zeigt &#8217;00:00:00&#8242; an. Richtig wäre es so: SELECT INTERVAL '600 SECOND'; Und [...]]]></description>
			<content:encoded><![CDATA[<p>Wir hatten hier gerade einen schönen AHA-Effekt mit einem Query, bei dem mit Zeit-Intervallen gerechnet wurde.</p>
<p><code>SELECT INTERVAL '600' SECOND;</code><br />
Das sieht doch gar nicht soo falsch aus und liefert auch keinen SQL-Fehler zurück. Leider ist das Ergebnis nicht gerade richtig: das Intervall zeigt &#8217;00:00:00&#8242; an.</p>
<p>Richtig wäre es so:<br />
<code>SELECT INTERVAL '600 SECOND';</code><br />
Und siehe da: das Intervall ist &#8217;00:10:00&#8242;, sprich: 10 Minuten. Yay!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rki-home.de/2010/08/31/postgresql-interval/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Select-Boxen als Dropdown in Facebook lassen unter dem IE8 nichts auswählen</title>
		<link>http://blog.rki-home.de/2009/09/20/select-boxen-als-dropdown-in-facebook-lassen-unter-dem-ie8-nichts-auswahlen/</link>
		<comments>http://blog.rki-home.de/2009/09/20/select-boxen-als-dropdown-in-facebook-lassen-unter-dem-ie8-nichts-auswahlen/#comments</comments>
		<pubDate>Sun, 20 Sep 2009 17:03:01 +0000</pubDate>
		<dc:creator>ric</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Computer]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[fbml]]></category>
		<category><![CDATA[form]]></category>
		<category><![CDATA[ie8]]></category>
		<category><![CDATA[selectbox]]></category>

		<guid isPermaLink="false">http://blog.rki-home.de/?p=309</guid>
		<description><![CDATA[Habe mich in den letzten Tagen mit einem Problem herumschlagen müssen, welches nur im Internet Explorer 8 auftritt &#8211; und auch nur in FBML-Boxen in Facebook-Pages (früher hiessen die glaub ich noch Fanpages). Mein Auftrag war es, ein einfaches Formular auf der Facebook-Page eines Kunden einzubauen. Man sollte Destinationen auswählen und ein Datum festlegen können. [...]]]></description>
			<content:encoded><![CDATA[<p>Habe mich in den letzten Tagen mit einem Problem herumschlagen müssen, welches nur im Internet Explorer 8 auftritt &#8211; und auch nur in FBML-Boxen in Facebook-Pages (früher hiessen die glaub ich noch Fanpages).<span id="more-309"></span><br />
Mein Auftrag war es, ein einfaches Formular auf der Facebook-Page eines Kunden einzubauen. Man sollte Destinationen auswählen und ein Datum festlegen können. Kein sonderlich schweres Problem, dachte ich! Habe das Formular eingebaut, getestet, alles wunderbar!<br />
Der Kunde war aber leider gar nicht zufrieden damit, weil er (wenn nicht auf Facebook eingelogt) die Destinationen, welche ich in einer einzeiligen Selectbox zum Auswählen per Dropdown eingebaut hatte, einfach nicht anwählen konnte &#8211; die Dropdown-Liste schloss sich sofort, wenn man mit der Maus drüberfuhr.<br />
Dieses Problem konnte ich aber beim besten Willen nicht nachvollziehen. Nach einem Test mit allen mir zur Verfügung stehenden Browsern konnte ich das Problem immer noch nicht reproduzieren, obwohl die Liste der getesteten Browser nicht gerade klein war:</p>
<ul>
<li>Internet Explorer 6.0 (Win XP)</li>
<li>Internet Explorer 7.0 (Vista)</li>
<li>Firefox 3.5.3 (Win XP)</li>
<li>Firefox 3.0.14 (Debian/Iceweasel)</li>
<li>Apple Safari 4.0 (Win XP)</li>
<li>Opera 9.64 (WinXP und Debian)</li>
<li>Google Chrome 2.0 (Win XP)</li>
<li>Konqueror 4.3.1 (Debian)</li>
</ul>
<p>In keinem dieser aufgelisteten Browser gab es ein derartiges Problem! Der einzige Browser, der im Ansatz Schwierigkeiten gemacht hatte, war der Internet Explorer 6.0 &#8211; aber nur, weil er die Facebook-Seiten erst gar nicht anzeigen wollte und dann komplett abgestürzt war. Nach dem dritten Versuch hatte er dann die Seite und das Formular ohne zu Mucken dargestellt &#8211; und eine Auswahl der Destination zugelassen.</p>
<p>Als ich erfuhr, dass der Kunde den Internet Explorer 8 verwendete, war ich erstmal ratlos, denn ich hatte gerade keinen zur Hand und ich konnte mir beim besten Willen nicht vorstellen, warum eine simple Select-Box ein Problem darstellen sollte. Nach einem Telefonat mit einem Freund, der ein System mit Internet Explorer 8 hatte, wurde mir der Fehler bestätigt. Leider hat das aber nicht erklärt, warum dieser Browser sich so verhielt &#8211; vor allem machte mich stutzig, dass die Vorgänger-Versionen ja nicht derartige Probleme aufwiesen.</p>
<p>Mir blieb also nichts anderes übrig, als ein eigenes System mit Internet Explorer 8 zum Experimentieren aufzusetzen. Zum Glück hatte ich noch eine Vista64-Lizenz rumfliegen. Nach etlichen Stunden der Installation und Updates und Probleme mit einer zu kleinen Systempartitionen (<em>30 GB reichen für ein leeres Vista64 <strong>nicht</strong> aus, wenn man alle Updates inkl. SP1 haben will!</em>), konnte ich endlich rumexperimentieren.</p>
<p><strong>Die Lösung:</strong><br />
Ich kann zwar immer noch nicht erklären, warum sich der IE8 in diesem Fall so merkwürdig verhält, aber ich habe ein Workaround gefunden. Und zwar stellte sich heraus, dass immer nur die erste Select-Box betroffen war. Nachfolgende Dropdowns funktionierten einwandfrei. Mein Workaround: Banal und unschön, aber es funktioniert. Man baue vor der ersten Select-Box eine Dummy-Select-Box ein, die per Style unsichtbar gemacht wird (&#8220;display:none&#8221;) und siehe da, das Formular funktioniert so, wie erwartet &#8211; und der Benutzer kriegt davon normalerweise gar nichts mit.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rki-home.de/2009/09/20/select-boxen-als-dropdown-in-facebook-lassen-unter-dem-ie8-nichts-auswahlen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Benutzerdefinierte Variablen in MySQL</title>
		<link>http://blog.rki-home.de/2009/02/06/benutzerdefinierte-variablen-in-mysql/</link>
		<comments>http://blog.rki-home.de/2009/02/06/benutzerdefinierte-variablen-in-mysql/#comments</comments>
		<pubDate>Fri, 06 Feb 2009 12:03:22 +0000</pubDate>
		<dc:creator>ric</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Computer]]></category>
		<category><![CDATA[Datenbanken]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[variablen]]></category>

		<guid isPermaLink="false">http://blog.rki-home.de/?p=283</guid>
		<description><![CDATA[MySQL unterstützt Variablen anscheinend bereits seit Version 3.23.6, aber ich habe diese Möglichkeit (ausserhalb von Stored Procedures) erst vor ein paar Monaten zu Kenntnis genommen und erst gestern wirklich wahrgenommen. Es gibt ja in der Tat immer wieder Fälle, in denen Variablen einem die Arbeit erheblich erleichtern würden. Wenn man zum Beispiel zwei Felder &#8216;datum&#8217; [...]]]></description>
			<content:encoded><![CDATA[<p>MySQL unterstützt Variablen anscheinend bereits seit Version 3.23.6, aber ich habe diese Möglichkeit (ausserhalb von Stored Procedures) erst vor ein paar Monaten zu Kenntnis genommen und erst gestern wirklich wahrgenommen.<br />
Es gibt ja in der Tat immer wieder Fälle, in denen Variablen einem die Arbeit erheblich erleichtern würden.<br />
<span id="more-283"></span><br />
Wenn man zum Beispiel zwei Felder &#8216;datum&#8217; und &#8216;uhrzeit&#8217; hat, und diese per Select zu einem Feld mit dem Alias &#8216;datum_zeit&#8217; zusammenfassen möchte, aber gleichzeitig in einem weiteren Feld &#8216;abgelaufen&#8217; feststellen möchte, ob der Zeitpunkt des Datensatzes bereits vorrüber ist, musste ich das bisher so machen:</p>
<div class="codeblock">SELECT CONCAT(datum,&#8217; &#8216;,uhrzeit) AS datum_zeit,<br />IF (CONCAT(datum,&#8217; &#8216;,uhrzeit) < NOW(), 1, 0) AS abgelaufen<br />FROM tabelle</div>
<p>Mit Variablen verkürzt sich der Query folgendermassen:</p>
<div class="codeblock">SELECT @v:=CONCAT(datum,&#8217; &#8216;,uhrzeit ) AS datum_zeit,<br />IF (@v < NOW(), 1, 0) AS abgelaufen<br />FROM tabelle</div>
<p>Ich muss also nicht mehr den CONCAT-Teil wiederholen, sondern kann ihn in der Variable @v speichern und darf diese Variable sofort verwenden. Im Gegensatz zum Alias, denn der ist frühestens im GROUP-BY-Abschnitt verfügbar .</p>
<p>Hier die offizielle MySQL-Dokumentation zu dem Thema: <a href="http://dev.mysql.com/doc/refman/4.1/en/user-variables.html">User-Defined Variables</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rki-home.de/2009/02/06/benutzerdefinierte-variablen-in-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nachtrag zu: Vista Dateitransfer bricht ab mit Ereignis-ID 2017</title>
		<link>http://blog.rki-home.de/2009/01/26/nachtrag-zu-vista-dateitransfer-bricht-ab-mit-ereignis-id-2017/</link>
		<comments>http://blog.rki-home.de/2009/01/26/nachtrag-zu-vista-dateitransfer-bricht-ab-mit-ereignis-id-2017/#comments</comments>
		<pubDate>Sun, 25 Jan 2009 23:03:00 +0000</pubDate>
		<dc:creator>ric</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[2017]]></category>
		<category><![CDATA[ereignis-id 2017]]></category>
		<category><![CDATA[netzwerk]]></category>
		<category><![CDATA[smb]]></category>
		<category><![CDATA[smb2]]></category>
		<category><![CDATA[vista]]></category>

		<guid isPermaLink="false">http://blog.rki-home.de/?p=268</guid>
		<description><![CDATA[Wie es scheint, war der &#8220;Bug-Fix&#8221; doch nur Einbildung. Hatte soeben wieder einen kompletten Zusammenbruch des SMB-Dienstes, was sich im System-Protokoll mit lauter Einträgen von Ereignis-ID 2017 niederschlägt. Es wäre aber doch schön, wenn man das Problem irgendwie beheben könnte&#8230;]]></description>
			<content:encoded><![CDATA[<p>Wie es scheint, war der <a href="http://blog.rki-home.de/2009/01/14/vista-dateitransfer-bricht-ab-mit-ereignis-id-2017/">&#8220;Bug-Fix&#8221;</a> doch nur Einbildung. Hatte soeben wieder einen kompletten Zusammenbruch des SMB-Dienstes, was sich im System-Protokoll mit lauter Einträgen von Ereignis-ID 2017 niederschlägt.<br />
Es wäre aber doch schön, wenn man das Problem irgendwie beheben könnte&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rki-home.de/2009/01/26/nachtrag-zu-vista-dateitransfer-bricht-ab-mit-ereignis-id-2017/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Vista Dateitransfer bricht ab mit Ereignis-ID 2017</title>
		<link>http://blog.rki-home.de/2009/01/14/vista-dateitransfer-bricht-ab-mit-ereignis-id-2017/</link>
		<comments>http://blog.rki-home.de/2009/01/14/vista-dateitransfer-bricht-ab-mit-ereignis-id-2017/#comments</comments>
		<pubDate>Wed, 14 Jan 2009 15:36:39 +0000</pubDate>
		<dc:creator>ric</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[2017]]></category>
		<category><![CDATA[ereignis-id 2017]]></category>
		<category><![CDATA[netzwerk]]></category>
		<category><![CDATA[smb]]></category>
		<category><![CDATA[smb2]]></category>
		<category><![CDATA[vista]]></category>

		<guid isPermaLink="false">http://blog.rki-home.de/?p=262</guid>
		<description><![CDATA[Achtung: Der Bug-Fix wurde durch meinen Nachfolge-Artikel in Frage gestellt. Ich hatte in letzter Zeit öfters das Problem, dass meine Dateitransfers bei grösseren Dateien über das normale Windows-Netzwerk von einem Computer (nicht Vista) zum Vista-Rechner plötzlich abgebrochen wurden. Danach akzeptierte Vista keine Verbindungsversuche mehr, bis die Maschine neu gebootet wurde. Im Ereignis-Protokoll konnte man viele [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Achtung:</strong> <em>Der Bug-Fix wurde durch meinen <a href="http://blog.rki-home.de/2009/01/26/nachtrag-zu-vista-dateitransfer-bricht-ab-mit-ereignis-id-2017/">Nachfolge-Artikel</a> in Frage gestellt.</em></p>
<p>Ich hatte in letzter Zeit öfters das Problem, dass meine Dateitransfers bei grösseren Dateien über das normale Windows-Netzwerk von einem Computer (nicht Vista) zum Vista-Rechner plötzlich abgebrochen wurden. Danach akzeptierte Vista keine Verbindungsversuche mehr, bis die Maschine neu gebootet wurde.</p>
<p>Im Ereignis-Protokoll konnte man viele Fehler-Einträge mit der Ereignis-ID 2017 finden. Die Systembeschreibung dazu lautet <em>&#8220;Der Server konnte keinen nicht-ausgelagerten Poolspeicher reservieren, da die konfigurierte Grenze für die Reservierung von nicht-ausgelagertem Poolspeicher erreicht wurde.&#8221;</em> was nicht wirklich hilfreich ist.<br />
<span id="more-262"></span><br />
Nach einer Recherche im weltberühmten Internet bin ich nur auf eine einzige Lösung gestossen, die darin besteht, das von Vista standardmässig verwendete SMB2-Protokoll zu deaktivieren. Vista greift dann auf das alte SMB1-Protokoll zu, welches anscheinend weniger Probleme mit Filetransfers hat <img src='http://blog.rki-home.de/wp-includes/images/smilies/icon_razz.gif' alt=':-P' class='wp-smiley' /> </p>
<p>Um das SMB2-Protokoll zu deaktivieren reicht es, einen DWORD-Key mit dem Namen <strong>SMB2</strong> und dem Wert <strong>0</strong> in der Registry anzulegen &#8211; und zwar hier:</p>
<div class="codeblock oneliner"><strong>HKEY_LOCAL_MACHINE ->SYSTEM ->CurrentControlSet ->Services ->LanmanServer -> Parameters</strong></div>
<p>und das System neu zu starten.</p>
<p>Seit dem ich den Key eingetragen habe, klappts nun auch mit den Dateitransfers. Einbildung, Glück, Zufall? Ich hoffe nicht!</p>
<p>Will man den Fix wieder rückgängig machen, muss man nur den Key wieder entfernen (und rebooten). Vista benutzt dann wieder das SMB2-Protokoll.</p>
<p><strong>Aber Achtung! Wer in der Registry wahllos Änderungen durchführt darf sich nicht wundern, wenn Windows einem das übel nimmt. Im schlimmsten Fall ist eine Neuinstallation des Systems fällig.</strong></p>
<p>(<a href="http://www.hardforum.com/showthread.php?p=1032714322">via</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rki-home.de/2009/01/14/vista-dateitransfer-bricht-ab-mit-ereignis-id-2017/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>CodeCharge: Custom Blocks innerhalb Panels</title>
		<link>http://blog.rki-home.de/2008/10/26/codecharge-custom-blocks-innerhalb-panels/</link>
		<comments>http://blog.rki-home.de/2008/10/26/codecharge-custom-blocks-innerhalb-panels/#comments</comments>
		<pubDate>Sun, 26 Oct 2008 14:24:10 +0000</pubDate>
		<dc:creator>ric</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[CodeCharge]]></category>
		<category><![CDATA[Custom Blocks]]></category>
		<category><![CDATA[Panels]]></category>
		<category><![CDATA[Template]]></category>

		<guid isPermaLink="false">http://blog.rki-home.de/?p=228</guid>
		<description><![CDATA[Dieser Artikel bezieht sich auf CodeCharge Studio 4.01.00.06. Andere Versionen könnten sich abweichend verhalten! Seit ein paar Wochen arbeite ich an einem Projekt, welches die Vorgabe hat, komplett in CodeCharge enwickelt zu werden. Dabei bin ich immer wieder an die Grenzen dieses mächtigen Werkzeuges gestossen. Ein häufiges Problem ist für mich, die Custom-Block-Möglichkeiten der Template-Klasse [...]]]></description>
			<content:encoded><![CDATA[<p><em>Dieser Artikel bezieht sich auf <strong>CodeCharge Studio 4.01.00.06</strong>. Andere Versionen könnten sich abweichend verhalten!</em></p>
<p>Seit ein paar Wochen arbeite ich an einem Projekt, welches die Vorgabe hat, komplett in CodeCharge enwickelt zu werden. Dabei bin ich immer wieder an die Grenzen dieses mächtigen Werkzeuges gestossen. Ein häufiges Problem ist für mich, die Custom-Block-Möglichkeiten der Template-Klasse an Stellen zu verwenden, die CodeCharge anscheinend nicht dafür vorgesehen hat und daher nicht ohne weiteres zulässt.<span id="more-228"></span></p>
<p>Es gibt drei unterschiedlich zu behandelnde Fälle, Custom Blocks zu plazieren, soweit ich das überblicke:</p>
<ul>
<li><strong>in der obersten Ebene, ausserhalb aller Components</strong><br />
Hier gibt es gar keine Probleme. Man kann seine Custom Blocks einfach definieren:</p>
<pre>
&lt;!-- BEGIN mein_custom_block --&gt;
   mein html code undso mit {meine_variable}
&lt;!-- END mein_custom_block --&gt;
</pre>
<p>und per benutzerdefinierten PHP-Code z.B. im &#8220;Before Show&#8221;-Event der Seite so verwenden:</p>
<pre>
global $Tpl;
$first = true;
foreach ($mein_array as $element)
{
   $Tpl->SetVar("meine_variable", element);
   $Tpl->Parse("mein_custom_block", !$first);
   $first = false;
}
</pre>
</li>
<li><strong>innerhalb eines Blockes <em>(z.B. Row)</em> einer Component <em>(z.B. Grid)</em></strong><br />
Das funktioniert fast genauso. Man muss der Template-Klasse nur die eigene Block-Variable nennen:</p>
<pre>
global $Tpl;
$first = true;
$Tpl->SetBlockVar("mein_custom_block","");
foreach ($mein_array as $element)
{
   $Tpl->SetVar("meine_variable", element);
   $Tpl->Parse("mein_custom_block", !$first);
   $first = false;
}
</pre>
<p>Diese ersten beiden Fälle sind auch dokumentiert: <a href="http://docs.codecharge.com/studio40/html/ProgrammingTechniques/HowTo/WorkingWithPages/CustomTemplateBlocks.html">Working with Custom Template Blocks</a>
</li>
<li><strong>innerhalb eines Panels (bzw. Update-Panels)</strong><br />
Will man einen Custom-Block innerhalb eines Panels verwenden, was ja das Mittel der Wahl sein soll, sobald man ganze Bereiche der Webseite einfach ein bzw. ausblenden muss (z.B. wegen Zugangsberechtigungen), dann funktionieren die ersten beide Vorgehensweisen nicht mehr. Custom-Blöcke werden hier nicht berücksichtigt, ja sogar vor dem Anzeigen entfernt.</p>
<p>Das liegt daran, dass der Template-Klassen-interne Zeiger auf der darüberliegenden Ebene stehen bleibt, sobald man sich im &#8220;before show&#8221;-Ereignis des Panels befindet.<br />
Die Abhilfe dazu sieht so aus, dass man </p>
<ol>
<li>sich die aktuelle Position des Template-Klassen-Zeigers merkt (in unserem Fall müsste &#8220;/main&#8221; darin stehen),</li>
<li>dann den Zeiger mit dem Panel-Pfad-Überschreibt (z.B. &#8220;/main/Panel mein_panel&#8221;),</li>
<li>hier wie bei den anderen beiden Fällen, die Template-Operationen durchführt und </li>
<li>danach den Zeiger wieder auf den ursprünglichen Punkt richtet (also in unserem Beispiel wieder auf &#8220;/main&#8221;).</li>
</ol>
<pre>
global $Tpl;
// (1):
$aktueller_zeiger = $Tpl->block_path;
// (2):
$Tpl->block_path = $aktueller_zeiger . "/Panel mein_panel";
// (3):
$first = true;
foreach ($mein_array as $element)
{
   $Tpl->SetVar("meine_variable", element);
   $Tpl->Parse("mein_custom_block", !$first);
   $first = false;
}
// (4):
$Tpl->block_path = $aktueller_zeiger;
</pre>
<p><strong>Benötigt man übrigens in seinem Panel lediglich eine Template-Variable (also {meine_variable}) ohne einen Custom-Block, so braucht man sich nicht mit diesem Workaround abgeben. Template-Variablen alleine funktionieren innerhalb von Panels wie gewohnt und völlig problemlos.<br />
</strong></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.rki-home.de/2008/10/26/codecharge-custom-blocks-innerhalb-panels/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Firebug, &#8220;syntax error&#8221; und DOCTYPE</title>
		<link>http://blog.rki-home.de/2008/10/22/firebug-syntax-error-und-doctype/</link>
		<comments>http://blog.rki-home.de/2008/10/22/firebug-syntax-error-und-doctype/#comments</comments>
		<pubDate>Wed, 22 Oct 2008 12:35:50 +0000</pubDate>
		<dc:creator>ric</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[CodeCharge]]></category>
		<category><![CDATA[DOCTYPE]]></category>
		<category><![CDATA[firebug]]></category>
		<category><![CDATA[mod_rewrite]]></category>
		<category><![CDATA[syntax error]]></category>

		<guid isPermaLink="false">http://blog.rki-home.de/?p=207</guid>
		<description><![CDATA[Heute sind wir über ein interessantes Phänomen bei einem CodeCharge-Projekt gestolpert: bei bestimmten Seiten hatte der Firebug einen &#8220;syntax error&#8221; in Zeile 1 festgestellt und die erste Zeile des HTML-Codes zitiert: &#8220;&#60;!DOCTYPE (&#8230;)&#8221;. Nachfolgene JavaScript-Aufrufe gaben teilweise weitere Fehler aus, teilweise aber auch nicht. Damit konnten wir zunächst gar nichts anfangen. Eine Suche bei Google [...]]]></description>
			<content:encoded><![CDATA[<p>Heute sind wir über ein interessantes Phänomen bei einem CodeCharge-Projekt gestolpert: bei bestimmten Seiten hatte der Firebug einen <strong>&#8220;syntax error&#8221; in Zeile 1</strong> festgestellt und die erste Zeile des HTML-Codes zitiert: &#8220;<strong>&lt;!DOCTYPE</strong> (&#8230;)&#8221;. Nachfolgene JavaScript-Aufrufe gaben teilweise weitere Fehler aus, teilweise aber auch nicht.<br />
<span id="more-207"></span><br />
Damit konnten wir zunächst gar nichts anfangen. Eine Suche bei Google ergab nicht viel, ausser dass vereinzelt Leute auch solche Probleme meldeten, aber meistens keine sinnvolle Lösung präsentieren konnten. Unter anderem wurde darauf hingewiesen, dass dieser Fehler vorkommt, sobald man ein <strong>script-Tag </strong>im Code stehen hat, welches ein <strong>leeres src-Attribut</strong> besitzt.<br />
Bei uns gab es aber keine leeren src-Attribute &#8211; die Lösung war aber gar nicht so weit davon entfernt. In diesem speziellen Fall haben wir wegen der URL-Lesbarkeit diverse <strong>mod_rewrite</strong>-Regeln in unserem Projekt, die dummerweise mit den (leider nicht absoluten) Pfadangaben der CodeCharge-JavaScript-Dateien kollidierten. Erschwert hat die Fehlersuche, dass durch die mod_rewrite-Regeln die Script-Datei zufälligerweise auf die jeweilige aufrufende(!) HTML- bzw PHP-Seite umgeleitet wurde. Wenn man also im Firebug die Fehlerzeile anzeigen wollte, bekam man genau den HTML-Code der aufgerufenen Webseite. Wenn wir aufmerksamer gewesen wären, hätten wir merken müssen, dass eigentlich die erste Zeile der jeweiligen JavaScript-Datei als Fehler genannt wurde&#8230;</p>
<p><strong>Zusammengefasst:</strong> Das Problem lag daran, dass die externen JavaScript-Dateien nicht geladen werden konnten, stattdessen wurden HTML-Seiten durch ungünstig gewählte mod_rewrite-Regeln geladen, die natürlich einen &#8220;syntax error&#8221; erzeugten.<br />
Das steht dem Fehlverhalten bei leerem src-Attribut in script-Tags nicht entgegen, denn der Webserver gibt normalerweise eine Standard-Seite (z.B. index.html) zurück, wenn nur ein Verzeichnis aufgerufen wird (bei leerem src-Attribut wird von Webserver automatisch der komplette Pfad der Basis-Seite ohne Dateiname verwendet), oder eben, falls nicht vorhanden, eine Fehler-Seite, die meistens HTML-Code beinhalten und eben nicht JavaScript.</p>
<p><strong>Die Lösung:</strong> Man muss nur dafür sorgen, dass alle eingebundenen JavaScript-Dateien auch tatsächlich geladen werden, bzw auch den Inhalt haben, der tatsächlich gebraucht wird.<br />
Bei uns hiess das, die mod_rewrite-Regeln soweit anpassen, dass solche Script-Dateien nicht umgeleitet werden. CodeCharge-seitig wäre das zu aufwendig geworden, denn es handelte sich hier um HTML-Code der von CodeCharge generiert wird und nur schwer beeinflusst werden kann, ohne dass bei neuem Generieren die Anpassungen wieder überschrieben geworden wären.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rki-home.de/2008/10/22/firebug-syntax-error-und-doctype/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>CAPTCHA!</title>
		<link>http://blog.rki-home.de/2008/09/02/captcha/</link>
		<comments>http://blog.rki-home.de/2008/09/02/captcha/#comments</comments>
		<pubDate>Tue, 02 Sep 2008 13:13:25 +0000</pubDate>
		<dc:creator>ric</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://blog.rki-home.de/?p=173</guid>
		<description><![CDATA[Sehr schönes Beispiel, das zeigt, wie man effektiv Webseiten vor Spambots schützen kann. Herrlich! Würde auch vor mir schützen, wobei hier erwähnt werden sollte, dass der Umkehrschluss, nämlich ich sei ein (Spam)Bot, zumindest meiner Meinung nach nicht zutreffen dürfte CAPTCHA heisst übrigens ausgeschrieben und dann übersetzt „Vollautomatischer öffentlicher Turing-Test, um Computer und Menschen zu unterscheiden“. [...]]]></description>
			<content:encoded><![CDATA[<div class="image"><img src="http://blog.rki-home.de/wp-content/uploads/2008/09/captcha.jpg" alt="" title="captcha" width="446" height="271" /></div>
<p>Sehr schönes Beispiel, das zeigt, wie man effektiv Webseiten vor Spambots schützen kann. Herrlich!<br />
Würde auch vor mir schützen, wobei hier erwähnt werden sollte, dass der Umkehrschluss, nämlich ich sei ein (Spam)Bot, zumindest meiner Meinung nach nicht zutreffen dürfte <img src='http://blog.rki-home.de/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /><br />
<span id="more-173"></span><br />
CAPTCHA heisst übrigens ausgeschrieben und dann übersetzt „<em>Vollautomatischer öffentlicher Turing-Test, um Computer und Menschen zu unterscheiden</em>“.<br />
Nachzulesen hier: <a href="http://de.wikipedia.org/wiki/CAPTCHA">de.wikipedia.org</a></p>
<p>(<a href="http://www.scienceblogs.de/mathlog/2008/03/captcha.php">via Mathlog</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rki-home.de/2008/09/02/captcha/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Blog-Umzug</title>
		<link>http://blog.rki-home.de/2008/08/28/blog-umzug/</link>
		<comments>http://blog.rki-home.de/2008/08/28/blog-umzug/#comments</comments>
		<pubDate>Thu, 28 Aug 2008 11:29:08 +0000</pubDate>
		<dc:creator>ric</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://blog.rki-home.de/?p=6</guid>
		<description><![CDATA[Ich versuche gerade, meinen Blog auf einem WordPress-MU-System in ein neues Single-Wordpress der neuesten Generation zu überführen. Mal sehen, ob das klappt. Wenn innerhalb der nächsten Stunden (Tage? Wochen?) die keine älteren Posts hier auftauchen, kann man wohl davon ausgehen, dass ich es aufgegeben habe Nachtrag: Scheint ja ansatzweise geklappt zu haben! Amazon.de Widgets]]></description>
			<content:encoded><![CDATA[<p>Ich versuche gerade, meinen Blog auf einem WordPress-MU-System in ein neues Single-Wordpress der neuesten Generation zu überführen. Mal sehen, ob das klappt.<br />
Wenn innerhalb der nächsten Stunden (Tage? Wochen?) die keine älteren Posts hier auftauchen, kann man wohl davon ausgehen, dass ich es aufgegeben habe <img src='http://blog.rki-home.de/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /><br />
<span id="more-6"></span><br />
<strong>Nachtrag:</strong> Scheint ja ansatzweise geklappt zu haben!</p>
<div align="center"><OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab" id="Player_ed87a3c5-8b55-4f31-811f-b45f57f5c82c"  WIDTH="300px" HEIGHT="250px"> <PARAM NAME="movie" VALUE="http://ws.amazon.de/widgets/q?ServiceVersion=20070822&#038;MarketPlace=DE&#038;ID=V20070822%2FDE%2Frisbl0f-21%2F8003%2Fed87a3c5-8b55-4f31-811f-b45f57f5c82c&#038;Operation=GetDisplayTemplate"><PARAM NAME="quality" VALUE="high"><PARAM NAME="bgcolor" VALUE="#FFFFFF"><PARAM NAME="allowscriptaccess" VALUE="always"><PARAM NAME="WMODE" VALUE="transparent"><embed src="http://ws.amazon.de/widgets/q?ServiceVersion=20070822&#038;MarketPlace=DE&#038;ID=V20070822%2FDE%2Frisbl0f-21%2F8003%2Fed87a3c5-8b55-4f31-811f-b45f57f5c82c&#038;Operation=GetDisplayTemplate" id="Player_ed87a3c5-8b55-4f31-811f-b45f57f5c82c" quality="high" bgcolor="#ffffff" name="Player_ed87a3c5-8b55-4f31-811f-b45f57f5c82c" allowscriptaccess="always"  WMODE="transparent"  type="application/x-shockwave-flash" align="middle" height="250px" width="300px"></embed></OBJECT> <NOSCRIPT><A HREF="http://ws.amazon.de/widgets/q?ServiceVersion=20070822&#038;MarketPlace=DE&#038;ID=V20070822%2FDE%2Frisbl0f-21%2F8003%2Fed87a3c5-8b55-4f31-811f-b45f57f5c82c&#038;Operation=NoScript">Amazon.de Widgets</A></NOSCRIPT></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.rki-home.de/2008/08/28/blog-umzug/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CodeCharge 4 &#8211; Testbericht Teil 2</title>
		<link>http://blog.rki-home.de/2008/08/27/codecharge-4-testbericht-teil-2/</link>
		<comments>http://blog.rki-home.de/2008/08/27/codecharge-4-testbericht-teil-2/#comments</comments>
		<pubDate>Wed, 27 Aug 2008 15:52:58 +0000</pubDate>
		<dc:creator>ric</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[CodeCharge]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[test]]></category>

		<guid isPermaLink="false">http://blogs.rki-home.de/ric/2008/08/27/codecharge-4-testbericht-teil-2/</guid>
		<description><![CDATA[Gestern abend bin ich bei dem Task Manager Demo hängen geblieben. Zum einen konnte ich die &#8220;Home Page&#8221; per F7 innerhalb CodeCharge nicht öffnen, zum anderen fehlte die komplette Tabellenstruktur. Ich habe auch keinen Hinweis in dem Demo gefunden, wie die Struktur aussehen soll. Nun gut, vielleicht habe ich versucht, einen zu grossen Schritt zu [...]]]></description>
			<content:encoded><![CDATA[<p>Gestern abend bin ich bei dem Task Manager Demo hängen geblieben. Zum einen konnte ich die &#8220;Home Page&#8221; per F7 innerhalb CodeCharge nicht öffnen, zum anderen fehlte die komplette Tabellenstruktur. Ich habe auch keinen Hinweis in dem Demo gefunden, wie die Struktur aussehen soll.<br />
<span id="more-54"></span><br />
Nun gut, vielleicht habe ich versucht, einen zu grossen Schritt zu machen. Mein neuer Ansatz: die vorhandene Dokumentation sichten. Eigentlich wollte ich zuerst ins Forum schauen, aber zu dem Zeitpunkt war die Subdomain des Forums (<a href="http://forums.codecharge.com/">forums.codecharge.com</a>) nicht erreichbar. Ich bin dann auf die Seite http://support.codecharge.com/tutorials.asp gekommen, wo diverse PDF-Dokumente aufgelistet sind. Dummerweise war die Subdomain docs.codecharge.com, auf der die PDF-Dateien liegen, auch nicht erreichbar! Es stellte sich aber als schlechtes Timing heraus, denn ein paar Minuten später konnte ich alle herunterladen.</p>
<p>Ich nehme mir jetzt mal das 162 Seiten starke Dokument &#8220;Quick Start Tutorials&#8221; vor.</p>
<p><strong>Hello World</strong><br />
Wir fangen an &#8211; wie kann es anders sein &#8211; mit dem klassischen &#8220;Hello World&#8221; Projekt. Es wird einem schön Schritt für Schritt gesagt, was man tun muss. Diese Schritte werden teilweise von Screenshots begleitet, wobei ich das Gefühl habe, dass diese Bilder oft nicht zum aktuellen Abschnitt passen, bzw. dass die passenden Bilder etwas zu spät kommen. Aber das sollte einen nicht aufhalten.<br />
Eine Stelle, über die ich gestoplert bin, weil nicht explizit darauf hingewiesen wurde (und das passende Bild dazu natürlich erst einen Absatz später gezeigt wurde), ist die Angabe des Strings in &#8220;Source Name&#8221;, nachdem man &#8220;Source Type&#8221; auf &#8220;Expression&#8221; gesetzt hat: ich hatte nämlich die Anführungszeichen vergessen, was zu einem PHP-Fehler führte. Das ist mir aber auch erst klar geworden, nachdem ich mir den generierten Code angeschaut hatte.<br />
Gravierender ist der Punkt, den ich gestern schon bemängelte: Die &#8220;Live Page&#8221;-Option funktioniert einfach nicht. Die Adresse, die in der IE-Fehlermeldung als falsch erklärt wird, funktioniert, wenn man sie manuell in einem Browser (auf der selben Maschine!) aufruft. Diverse Forums-Einträge zeigen, dass ich nicht der einzige bin, der das &#8220;Hello World&#8221;-Tutorial nicht komplett erfolgreich beenden kann. Lösungen werden keine geboten. Eine finale Antwort eines ellenlangen Threads war nicht schlecht, an die ich mich wohl auch halten werde: &#8220;<em>I never use that option&#8230;</em>&#8220;.</p>
<p>Somit ist das erste Tutorial quasi fertig und das End-Ergebnis ist &#8220;lauffähig&#8221;, wenn auch nicht alles innerhalb CCS so funktioniert hat, wie beschrieben.</p>
<p><strong>Employee Directory</strong><br />
Das nächste Tutorial soll ein Mitarbeiterverzeichnis erzeugen, wobei zunächst erstmal diverse Projekteinstellungen vorgestellt werden, darunter auch die Datenbankverbindungen. Da CodeCharge mit vielen verschiedenen Programmiersprachen und auch Datenbanksystemen arbeiten kann, sehen hier leider die Projekteinstellungs-Screens teilweise recht unterschiedlich aus. Auch wird auf ein paar Datenbankverbindungs-Details eingegangen, die es in meinem Fall gar nicht gibt&#8230;ein wenig irritierend ist das schon.<br />
Nachdem man alle Projekteinstellungen durchgegangen ist, darf man jetzt den &#8220;Grid Builder&#8221; verwenden, um vermutlich eine Tabelle mit Daten aus der Datenbank anzuzeigen. Um die darzustellenden Felder auszuwählen, kann man den Visual Query Builder verwenden, der mit CCS kommt. Hier soll man zwei Tabellen auswählen&#8230;die ich natürlich nicht habe. Wer den ersten Teil dieses Testberichts gelesen hat, mag sich vielleicht erinnern, dass ich gestern vor einem ähnlichen Problem stand: die Datenbank ist natürlich leer! Es gibt keine einzige Tabelle! Auch im Tutorial ist dazu nichts erwähnt. Zumindest ist mir nichts aufgefallen und ich werde es wohl übersehen haben, wenn es beschrieben wurde.<br />
Ein Blick ins Forum (ok, das war gelogen, mehrere Blicke) und die Lösung findet sich in einem Antwort-Post eines YesSoftware-Forum-Moderators, der einem anderen verzweifelten Tutorial-Anwender erklärt, die Tabellenstruktur befünde sich hier: <em>C:\Program Files\CodeChargeStudio3\Examples\Intranet\Intranet_MySQL.sql</em>. Und das stimmt! Mein Gott, Walter! Warum denn nicht gleich so <img src='http://blog.rki-home.de/wp-includes/images/smilies/icon_razz.gif' alt=':-P' class='wp-smiley' /><br />
Ab hier geht alles recht relativ leicht. Besonders schön sind die Einstellmöglichkeiten für die Sortierung der Tabelle und man kann diverse Seiten-Navigationsdesigns auswählen. Ausserdem gibt es für das Seitenlayout unzählige Styles aus denen man auswählen kann. Das hat schon was &#8211; ohne so ein Tool würde man eine nicht unerhebliche Zeit allein zum Zusammenschustern von einigermassen lesbaren Tabellen benötigen.<br />
Die weiteren Schritte bestehen hauptsächlich darin, die Such-Felder mit der HTML-Tabelle und den DB-Tabellen zu verknüpfen. Wenn man damit fertig ist, steht das Publishen an.<br />
Wenn man aber, wie ich, den Security-Teil des Tutorials übersprungen hat, wie es der Text einem vorschlägt, wird man vor einem Problem stehen. Man hat nämlich laut Tutorial eine Login-Seite eingerichtet und die Seite mit der Tabelle auf Restricted gestellt, damit nur eingeloggte User mit einem bestimmten Level diese Tabelle sehen dürfen. Dummerweise habe ich aber eben jenen Teil übersprungen, der die projektweiten Userdaten definiert. Somit funktioniert das Login-Formular gar nicht und man kann seine tolle Tabelle nicht anschauen <img src='http://blog.rki-home.de/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /><br />
Gut ich bin ja nicht auf den Kopf gefallen und habe diese Einstellungen noch vorgenommen und jetzt kann ich mir die sehr hübsche, funktionsreiche und eigentlich total easy erstellte Tabelle anschauen und darin blättern, bzw. suchen. Genial &#8211; ich bin wirklich begeistert!</p>
<div align="center"><a href='http://blogs.rki-home.de/ric/files/2008/08/grid.png' title='Employee Directory'><img src='http://blogs.rki-home.de/ric/files/2008/08/grid.thumbnail.png' alt='Employee Directory' /></a></div>
<p>Spätestens jetzt kann ich wirklich sagen, dass CodeCharge ungeheuer mächtig ist und einem wirklich verdammt viel Arbeit abnimmt, sobald man sich darin zurechtfindet.<br />
Ich habe bis jetzt wohl nur an der Oberfläche gekratzt, denn es stehen mir noch unzählige Builder zur Verfügung, von denen ich noch nichts weiss. Ich bin wirklich gespannt, was da noch für Tools versteckt sind.</p>
<div align="center"><OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab" id="Player_ed87a3c5-8b55-4f31-811f-b45f57f5c82c"  WIDTH="300px" HEIGHT="250px"> <PARAM NAME="movie" VALUE="http://ws.amazon.de/widgets/q?ServiceVersion=20070822&#038;MarketPlace=DE&#038;ID=V20070822%2FDE%2Frisbl0f-21%2F8003%2Fed87a3c5-8b55-4f31-811f-b45f57f5c82c&#038;Operation=GetDisplayTemplate"><PARAM NAME="quality" VALUE="high"><PARAM NAME="bgcolor" VALUE="#FFFFFF"><PARAM NAME="allowscriptaccess" VALUE="always"><embed src="http://ws.amazon.de/widgets/q?ServiceVersion=20070822&#038;MarketPlace=DE&#038;ID=V20070822%2FDE%2Frisbl0f-21%2F8003%2Fed87a3c5-8b55-4f31-811f-b45f57f5c82c&#038;Operation=GetDisplayTemplate" id="Player_ed87a3c5-8b55-4f31-811f-b45f57f5c82c" quality="high" bgcolor="#ffffff" name="Player_ed87a3c5-8b55-4f31-811f-b45f57f5c82c" allowscriptaccess="always"  type="application/x-shockwave-flash" align="middle" height="250px" width="300px"></embed></OBJECT> <NOSCRIPT><A HREF="http://ws.amazon.de/widgets/q?ServiceVersion=20070822&#038;MarketPlace=DE&#038;ID=V20070822%2FDE%2Frisbl0f-21%2F8003%2Fed87a3c5-8b55-4f31-811f-b45f57f5c82c&#038;Operation=NoScript">Amazon.de Widgets</A></NOSCRIPT></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.rki-home.de/2008/08/27/codecharge-4-testbericht-teil-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
