<?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/"
	>

<channel>
	<title>SQL, perl und Unix/Linux Schulungen in und um Wien</title>
	<atom:link href="http://www.trust-box.at/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.trust-box.at</link>
	<description>SQL, perl und Unix/Linux Schulungen in und um Wien</description>
	<pubDate>Fri, 13 Apr 2012 11:43:12 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>XML Generation in Perl - how it should have always been</title>
		<link>http://www.trust-box.at/2012/04/13/xml-generation-in-perl-how-it-should-have-always-been/</link>
		<comments>http://www.trust-box.at/2012/04/13/xml-generation-in-perl-how-it-should-have-always-been/#comments</comments>
		<pubDate>Fri, 13 Apr 2012 11:05:17 +0000</pubDate>
		<dc:creator>schulung</dc:creator>
		
		<category><![CDATA[Perl]]></category>

		<guid isPermaLink="false">http://www.trust-box.at/?p=122</guid>
		<description><![CDATA[At first big thanks to Mark Overmeer for XML::Compile. I had the pleasure to meet Mark in .nl once - cheers and carry on the great work.
Whenever I had to create XML (either with perl or php) I did it one way or the other with some sort of templating toolkit. In php I use(d) [...]]]></description>
			<content:encoded><![CDATA[<p>At first big thanks to <a href="http://mark.overmeer.net/">Mark Overmeer</a> for <a href="http://search.cpan.org/~markov/XML-Compile-1.25/">XML::Compile</a>. I had the pleasure to meet Mark in .nl once - cheers and carry on the great work.</p>
<p>Whenever I had to create XML (either with perl or php) I did it one way or the other with some sort of templating toolkit. In php I use(d) <a href="http://www.tinybutstrong.com/">http://www.tinybutstrong.com</a>/ for creating xml . In perl several templating systems come into mind like</p>
<li>tt2</li>
<li>Template::Declare</li>
<li>and many others more</li>
<p></p>
<h2>Feeling Wrong</h2>
<p>this always felt wrong and awkward for several reasons:</p>
<li>You need to build/have the xml before (and creating xml from xsd is not one of my many hobbies)</li>
<li>You/the templating system have to take care whether or not a whole tree needs to be displayed and so on</li>
<p></p>
<h2>The Rescue: <a href="http://search.cpan.org/~markov/XML-Compile-1.25/">XML::Compile</a></h2>
<p>This nifty Module comes to the rescue. Using XML::Compile make xml+xsd behave like I always wanted to. </p>
<p>I want to demonstrate this using <a href="http://tools.ietf.org/html/rfc5730">epp</a> as an example. I want to create a valid epp frame for creating a contact object.</p>
<p>The epp schemas may be obtained by a simple internet search eg <a href="http://www.nominet.org.uk/registrars/systems/standardepp/schemas/">here</a>.</p>
<p>You may create a valid epp frame by reading the both the contact-1.0.xsd and the epp-1.0.xsd each approx. 400 lines of thrilling xml. Or use some code like:</p>
<h3>1. Convert xsd to perl hash</h3>
<pre class="prettyprint linenumstrigger linenums">
use strict;
use warnings;

use XML::Compile::Schema;

my $schema = XML::Compile::Schema-&gt;new([
     'epp-xsd/epp-1.0.xsd',
     'epp-xsd/eppcom-1.0.xsd',
     'epp-xsd/contact-1.0.xsd',
                      ]);

my $s = $schema-&gt;template('PERL' =&gt; '{urn:ietf:params:xml:ns:contact-1.0}create');
print $s;
</pre>
<p>which gives you a more readable idea what your data should look like:</p>
<pre class="prettyprint linenumstrigger linenums">
# is a x0:createType
{ # sequence of id, postalInfo, voice, fax, email, authInfo, disclose

  # is a xs:token
  # length &lt;= 16
  # length &gt;= 3
  id =&gt; &quot;token&quot;,

  # is a x0:postalInfoType
  # occurs 1 &lt;= # &lt;= 2 times
  postalInfo =&gt;
  [ { # sequence of name, org, addr

      # is a xs:normalizedString
      # length &lt;= 255
      # length &gt;= 1
      name =&gt; &quot;example&quot;,
....
</pre>
<p>Using this perl hash template you create the first part of your epp-xml</p>
<h3>2. Use perl hash to xml conversion</h3>
<pre class="prettyprint linenumstrigger linenums">
use strict;
use warnings;

use XML::Compile::Schema;

my $schema = XML::Compile::Schema-&gt;new([
     'epp-xsd/epp-1.0.xsd',
     'epp-xsd/eppcom-1.0.xsd',
     'epp-xsd/contact-1.0.xsd'
   ]);

my $write  = $schema-&gt;compile(WRITER =&gt; '{urn:ietf:params:xml:ns:contact-1.0}create');
my $doc    = XML::LibXML::Document-&gt;new('1.0', 'UTF-8');
my $hash = {
              id =&gt; 'idid',
              postalInfo =&gt; {
                'name' =&gt; 'name',
                'addr' =&gt; {
                    'street' =&gt; ['street', 'street2'],
                    'city'   =&gt; 'city',
                    'cc'     =&gt; 'cc',
                },
                type =&gt; 'int',
              },
              email =&gt; 'mymail',
              &quot;authInfo&quot; =&gt; {pw =&gt; &quot;PWauthInfo&quot;},
           };
my $xml    = $write-&gt;($doc, $hash);
$doc-&gt;setDocumentElement($xml);

print $doc-&gt;toString(1);
</pre>
<p>this leads to the following xml</p>
<pre class="prettyprint linenumstrigger linenums">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;x0:create xmlns:x0=&quot;urn:ietf:params:xml:ns:contact-1.0&quot;&gt;
  &lt;x0:id&gt;idid&lt;/x0:id&gt;
  &lt;x0:postalInfo type=&quot;int&quot;&gt;
    &lt;x0:name&gt;name&lt;/x0:name&gt;
    &lt;x0:addr&gt;
      &lt;x0:street&gt;street&lt;/x0:street&gt;
      &lt;x0:street&gt;street2&lt;/x0:street&gt;
      &lt;x0:city&gt;city&lt;/x0:city&gt;
      &lt;x0:cc&gt;cc&lt;/x0:cc&gt;
    &lt;/x0:addr&gt;
  &lt;/x0:postalInfo&gt;
  &lt;x0:email&gt;mymail&lt;/x0:email&gt;
  &lt;x0:authInfo&gt;
    &lt;x0:pw&gt;PWauthInfo&lt;/x0:pw&gt;
  &lt;/x0:authInfo&gt;
&lt;/x0:create&gt;
</pre>
<p>this xml has to be wrapped into an epp frame. As the epp frame uses xml any elements some &#8220;manual&#8221; work is necessary for creating the complete epp frame. In principle you start with {urn:ietf:params:xml:ns:epp-1.0}epp at step one. </p>
<h3>3. Generate epp-xml-frame and wrap contact-create command into it</h3>
<pre class="prettyprint linenumstrigger linenums">
use strict;
use warnings;

use XML::Compile::Cache;
use XML::Compile::Schema;

my $cache = XML::Compile::Cache-&gt;new([
     'epp-xsd/eppcom-1.0.xsd',
     'epp-xsd/epp-1.0.xsd',
     'epp-xsd/extensions.xsd',
     'epp-xsd/contact-1.0.xsd',
   ]);

my $create_contact_ns = '{urn:ietf:params:xml:ns:contact-1.0}create';
my $epp_frame_ns = '{urn:ietf:params:xml:ns:epp-1.0}epp';
my $prefixes = {'urn:ietf:params:xml:ns:contact-1.0' =&gt; 'contact'};

$cache-&gt;declare(WRITER =&gt; [$create_contact_ns, $epp_frame_ns, ],
       (
         prefixes =&gt; $prefixes,
         use_default_namespace =&gt; 1,
         include_namespaces =&gt; 1,
        )
      );

$cache-&gt;compileAll;

my $doc = XML::LibXML::Document-&gt;new('1.0', 'UTF-8');
$doc-&gt;setStandalone(0);

my $contact_data = {
                id =&gt; 'idid',
                postalInfo =&gt; {
                  'name' =&gt; 'name',
                  'addr' =&gt; {
                      'street' =&gt; ['street', 'street2'],
                      'city'   =&gt; 'city',
                      'cc'     =&gt; 'cc',
                  },
                  type =&gt; 'int',
                },
                email =&gt; 'mymail',
                &quot;authInfo&quot; =&gt; {pw =&gt; &quot;PWauthInfo&quot;},
             };

my $xml = $cache-&gt;writer($create_contact_ns)-&gt;($doc, $contact_data);

my $epp_frame_data = {
	         command =&gt; {
              create =&gt; {
                '{urn:ietf:params:xml:ns:contact-1.0}create' =&gt; $xml,
                },
              clTRID =&gt; &quot;token&quot;,
             },
           };

my $eppxml = $cache-&gt;writer($epp_frame_ns)-&gt;($doc, $epp_frame_data);

$eppxml-&gt;setNamespace( 'http://www.w3.org/2001/XMLSchema-instance', 'xsi', 0 ); ## append additonal ns for the feelinx

print $doc-&gt;toString(1) .
      $eppxml-&gt;toString(1) .&quot;n&quot;;
</pre>
<p>Voila, we have a valid epp frame without even touching the xml! Again Kudos to Mark Overmeer for making this possible!</p>
<h3>4. The result</h3>
<pre class="prettyprint linenumstrigger linenums">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;
&lt;epp xmlns=&quot;urn:ietf:params:xml:ns:epp-1.0&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&gt;
  &lt;command&gt;
    &lt;create&gt;
      &lt;contact:create xmlns:contact=&quot;urn:ietf:params:xml:ns:contact-1.0&quot;&gt;
        &lt;contact:id&gt;idid&lt;/contact:id&gt;
        &lt;contact:postalInfo type=&quot;int&quot;&gt;
          &lt;contact:name&gt;name&lt;/contact:name&gt;
          &lt;contact:addr&gt;
            &lt;contact:street&gt;street&lt;/contact:street&gt;
            &lt;contact:street&gt;street2&lt;/contact:street&gt;
            &lt;contact:city&gt;city&lt;/contact:city&gt;
            &lt;contact:cc&gt;cc&lt;/contact:cc&gt;
          &lt;/contact:addr&gt;
        &lt;/contact:postalInfo&gt;
        &lt;contact:email&gt;mymail&lt;/contact:email&gt;
        &lt;contact:authInfo&gt;
          &lt;contact:pw&gt;PWauthInfo&lt;/contact:pw&gt;
        &lt;/contact:authInfo&gt;
      &lt;/contact:create&gt;
    &lt;/create&gt;
    &lt;clTRID&gt;token&lt;/clTRID&gt;
  &lt;/command&gt;
&lt;/epp&gt;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.trust-box.at/2012/04/13/xml-generation-in-perl-how-it-should-have-always-been/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Das XML der Statistik Austria</title>
		<link>http://www.trust-box.at/2011/02/22/das-xml-der-statistik-austria/</link>
		<comments>http://www.trust-box.at/2011/02/22/das-xml-der-statistik-austria/#comments</comments>
		<pubDate>Tue, 22 Feb 2011 10:24:16 +0000</pubDate>
		<dc:creator>schulung</dc:creator>
		
		<category><![CDATA[Allgemein]]></category>

		<guid isPermaLink="false">http://www.trust-box.at/?p=113</guid>
		<description><![CDATA[Lobenswerterweise stellt die die Statistik-Austria sehr viele Daten zur &#8220;freien&#8221; Verfügung ins Netz. So auch alle Straßen- und Ortsnamen Österreichs.  Wer sich allerdings das XML ausgedacht hat zb:
&#60;datensatz&#62;
    &#60;element&#62;10101&#60;/element&#62;
    &#60;element&#62;Eisenstadt&#60;/element&#62;
    &#60;element&#62;00001&#60;/element&#62;
    &#60;element&#62;Eisenstadt&#60;/element&#62;
    &#60;element&#62;000001&#60;/element&#62;
    &#60;element&#62;Josef Stanislaus Albach-Gasse&#60;/element&#62;
 [...]]]></description>
			<content:encoded><![CDATA[<p>Lobenswerterweise stellt die die <a href="http://statistik.at">Statistik-Austria</a> sehr viele Daten zur &#8220;freien&#8221; Verfügung ins Netz. So auch <a href="http://www.statistik.at/strasse/suchmaske.jsp">alle Straßen- und Ortsnamen Österreichs</a>.  Wer sich allerdings das XML ausgedacht hat zb:</p>
<p><code>&lt;datensatz&gt;<br />
    &lt;element&gt;10101&lt;/element&gt;<br />
    &lt;element&gt;Eisenstadt&lt;/element&gt;<br />
    &lt;element&gt;00001&lt;/element&gt;<br />
    &lt;element&gt;Eisenstadt&lt;/element&gt;<br />
    &lt;element&gt;000001&lt;/element&gt;<br />
    &lt;element&gt;Josef Stanislaus Albach-Gasse&lt;/element&gt;<br />
    &lt;element&gt;7000&lt;/element&gt;<br />
    &lt;element&gt;10101&lt;/element&gt;<br />
&lt;/datensatz&gt;<br />
</code></p>
<p>der hat geistig den Umstieg von csv zu xml noch nicht ganz verkraftet <img src='http://www.trust-box.at/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.trust-box.at/2011/02/22/das-xml-der-statistik-austria/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Registrar(Partner) bei der switch.ch werden</title>
		<link>http://www.trust-box.at/2011/01/25/registrar-partner-bei-der-switchch-werden/</link>
		<comments>http://www.trust-box.at/2011/01/25/registrar-partner-bei-der-switchch-werden/#comments</comments>
		<pubDate>Tue, 25 Jan 2011 16:34:51 +0000</pubDate>
		<dc:creator>schulung</dc:creator>
		
		<category><![CDATA[Domain Registry Stuff]]></category>

		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.trust-box.at/?p=109</guid>
		<description><![CDATA[Nachdem ich ja beruflich mit einigen Registries zu tun habe - ich arbeite primär für die nic.at - kenne ich einige Zulassungsprozesse für ccTLD Registries.
Der bei weitem &#8220;lustigste&#8221; Prozess ist der der switch.ch, der Schweizer Registry.  Dort sind nicht nur finanzielle und organisatorische Hürden zu nehmen (und auch die sind nicht zu knapp) sondern [...]]]></description>
			<content:encoded><![CDATA[<p>Nachdem ich ja beruflich mit einigen Registries zu tun habe - ich arbeite primär für die <a href="http://nic.at">nic.at</a> - kenne ich einige Zulassungsprozesse für ccTLD Registries.</p>
<p>Der bei weitem &#8220;lustigste&#8221; Prozess ist der der <a href="http://switch.ch">switch.ch, der Schweizer Registry</a>.  Dort sind nicht nur finanzielle und organisatorische Hürden zu nehmen (und auch die sind nicht zu knapp) sondern auch ein technischer Parcours.</p>
<p>Dieser Parcours (der heißt wirklich so) besteht aus 23 epp transactionen (Querbeet, dh personen, hostobjekte, domains  anlegen, löschen und so weiter) die einem Durchgang durchzuführen sind. </p>
<p>Das bedeutet, daß jeder Registrar neben des Implementierungsaufwands für den normalen Clienten, sich nochmals zwei Tage (solange habe ich alles in allem gebraucht) Zeit &#038; Geld nehmen darf um den Parcours zu implementieren. Man muß allerdings auch wirklich zugeben, wenn man den Parcour implementiert (und somit verstanden) hat, daß man auch die Prozesse der switch &#8220;durchschaut&#8221; hat.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.trust-box.at/2011/01/25/registrar-partner-bei-der-switchch-werden/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Scraping web pages in JavaScript with Perl</title>
		<link>http://www.trust-box.at/2010/11/18/scraping-web-pages-in-javascript-with-perl/</link>
		<comments>http://www.trust-box.at/2010/11/18/scraping-web-pages-in-javascript-with-perl/#comments</comments>
		<pubDate>Thu, 18 Nov 2010 21:30:19 +0000</pubDate>
		<dc:creator>schulung</dc:creator>
		
		<category><![CDATA[JavaScript]]></category>

		<category><![CDATA[Perl]]></category>

		<guid isPermaLink="false">http://www.trust-box.at/?p=102</guid>
		<description><![CDATA[Sometimes you want to scrape Webpages which contain JavaScript and therefore resist beeing scraped with Web::Scraper or the likes. Imagine some JavaScript code like the following to disguise a email address.

function mail() {
    var name = "mail";
    var domain = "example.com";
    var mailto = 'mailto:' + [...]]]></description>
			<content:encoded><![CDATA[<p>Sometimes you want to scrape Webpages which contain JavaScript and therefore resist beeing scraped with Web::Scraper or the likes. Imagine some JavaScript code like the following to disguise a email address.<br />
<code><br />
function mail() {<br />
    var name = "mail";<br />
    var domain = "example.com";<br />
    var mailto = 'mailto:' + name + '@' + domain;<br />
    document.write(mailto);<br />
 }<br />
mail();<br />
</code></p>
<p>One could use somethink elaborate like <a href="http://seleniumhq.org/">Selenium</a> to execute the code within a browser and then extract the address with &#8220;conventional&#8221; means. There are cases when this isn&#8217;t sufficent.<br />
Enter <a href="http://search.cpan.org/~tbusch/JavaScript-SpiderMonkey/SpiderMonkey.pm">JavaScript::SpiderMonkey</a>, which allows you to execute JavaScript Code on the console without a browser. The only problem remaining is that the console doesn&#8217;t provide some properties and methods the browser has, so you have to define them yourself. This happens from line 11-14 where we define the &#8220;document&#8221; and the method &#8220;write&#8221;. The rest of the code is pretty self explanatory. </p>
<p><code><br />
000:  use strict;<br />
001:  use warnings;<br />
002:<br />
003:  use Slurp;<br />
004:  use JavaScript::SpiderMonkey;<br />
005:<br />
006:  my $js = JavaScript::SpiderMonkey->new();<br />
007:  my $code = slurp('mailto.js');<br />
008:<br />
009:  $js->init();<br />
010:<br />
011:  my $obj = $js->object_by_path("document");<br />
012:<br />
013:  my @write;<br />
014:  $js->function_set("write", sub { push @write, @_ }, $obj);<br />
015:<br />
016:  my $rc = $js->eval(<br />
017:    $code<br />
018:  );<br />
019:<br />
020:  printf "document.write:\n%s\n", join "\n", @write;<br />
021:  printf "Error: %s\n", $@;<br />
022:  printf "Return Code: %s\n", $rc;<br />
023:<br />
024:  $js->destroy();<br />
</code></p>
<p>The output is:<br />
document.write:<br />
mailto:mail@example.com<br />
Error:<br />
Return Code: 1</p>
]]></content:encoded>
			<wfw:commentRss>http://www.trust-box.at/2010/11/18/scraping-web-pages-in-javascript-with-perl/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Oracle 11.2:IGNORE_ROW_ON_DUPKEY_INDEX - Please No!</title>
		<link>http://www.trust-box.at/2010/05/18/oracle-112-ignore_row_on_dupkey_index/</link>
		<comments>http://www.trust-box.at/2010/05/18/oracle-112-ignore_row_on_dupkey_index/#comments</comments>
		<pubDate>Tue, 18 May 2010 09:02:38 +0000</pubDate>
		<dc:creator>schulung</dc:creator>
		
		<category><![CDATA[Allgemein]]></category>

		<category><![CDATA[Oracle]]></category>

		<category><![CDATA[SQL Beispiele]]></category>

		<guid isPermaLink="false">http://www.trust-box.at/?p=97</guid>
		<description><![CDATA[Oracle hat mit 11.2 neue optimizer hints &#8220;erfunden&#8221; und zwar auch IGNORE_ROW_ON_DUPKEY_INDEX.
Er dient dazu (wie der Name schon sagt) bei einem INSERT  (und  nicht bei einem UPDATE!) auf einen Unique Key die Exception zu  ignorieren und das statement tut dann einfach nichts. Es würde dann also zb funktionieren (ohne unique key violation):
insert into [...]]]></description>
			<content:encoded><![CDATA[<p>Oracle hat mit 11.2 neue optimizer hints &#8220;erfunden&#8221; und zwar auch <a href="http://download.oracle.com/docs/cd/E11882_01/server.112/e10592/sql_elements006.htm#CHDEGDDG">IGNORE_ROW_ON_DUPKEY_INDEX</a>.</p>
<p>Er dient dazu (wie der Name schon sagt) bei einem INSERT  (und  nicht bei einem UPDATE!) auf einen Unique Key die Exception zu  ignorieren und das statement tut dann einfach nichts. Es würde dann also zb funktionieren (ohne unique key violation):</p>
<p><code>insert into testtable (id, text) values (1, 'testtext der erste');<br />
insert /*+ IGNORE_ROW_ON_DUPKEY_INDEX(testtable(id))*/  into testtable (id, text) values (1, 'testtext der zweite');<br />
</code></p>
<p>Dieser Hint ist eigentlich kein Hint  sondern eine Option (&#8230;), und außerdem aus mehreren Gründen keine gute  Idee:</p>
<ul>
<li>andere Oracle Hints (zb für den Optimizer) verändern das Verhalten des Statments nicht, und sind somit kompatibel mit anderen Datenbanken</li>
<li>es gibt schon ein statment mit dem man den gleichen Effekt erreichen kann und zwar MERGE, welches man mittelfristig sicher auch in <a href="http://petereisentraut.blogspot.com/2010/05/merge-syntax.html?utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed%3A+PeterEisentraut+%28Peter+Eisentraut%27s+Blog%29">anderen Datenbanken wie Postgres </a>erwarten kann</li>
</ul>
<p>Und gleich der Vollständigkeit halber das MERGE-Statement:</p>
<p><code>merge into testtable<br />
using (select 1 from dual)<br />
on (id = :b_id)<br />
when not matched then<br />
insert (id, text) values (:b_id, :b_text);<br />
</code></p>
<p>ich verwende deswegen bind Variablen weil man ansonsten den Wert :b_id zweimal einsetzen müßte. Entgegen anderslautenden Gerüchten muß es keinen &#8220;when matched &#8230; where 2=1&#8243; (oder Ähnliches)  Abschnitt geben. Das &#8220;select 1 from dual&#8221; dient dazu um genau ein Zeile zum bekommen und somit die Zahl der zu behandelnden Zeilen zu determinieren.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.trust-box.at/2010/05/18/oracle-112-ignore_row_on_dupkey_index/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Die Relevanz der Inflationsrate</title>
		<link>http://www.trust-box.at/2010/04/16/die-relevanz-der-inflationsrate/</link>
		<comments>http://www.trust-box.at/2010/04/16/die-relevanz-der-inflationsrate/#comments</comments>
		<pubDate>Fri, 16 Apr 2010 17:59:34 +0000</pubDate>
		<dc:creator>schulung</dc:creator>
		
		<category><![CDATA[Oracle]]></category>

		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.trust-box.at/?p=87</guid>
		<description><![CDATA[Zend, Oracle, perl, php
]]></description>
			<content:encoded><![CDATA[<p>Zend, Oracle, perl, php</p>
]]></content:encoded>
			<wfw:commentRss>http://www.trust-box.at/2010/04/16/die-relevanz-der-inflationsrate/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Oracle XE on Suse 11 64bit</title>
		<link>http://www.trust-box.at/2010/03/15/oracle-xe-on-suse-11-64bit/</link>
		<comments>http://www.trust-box.at/2010/03/15/oracle-xe-on-suse-11-64bit/#comments</comments>
		<pubDate>Mon, 15 Mar 2010 20:28:10 +0000</pubDate>
		<dc:creator>schulung</dc:creator>
		
		<category><![CDATA[Allgemein]]></category>

		<guid isPermaLink="false">http://www.trust-box.at/?p=85</guid>
		<description><![CDATA[Oracle XE (Express Edition) uses libaio 32bit. So if you want to install it on 64bit system you have to install the 32bit version. For example from here
]]></description>
			<content:encoded><![CDATA[<p>Oracle XE (Express Edition) uses libaio 32bit. So if you want to install it on 64bit system you have to install the 32bit version. For example from <a href="http://rpm.pbone.net/index.php3/stat/4/idpl/13090305/dir/opensuse/com/libaio-32bit-0.3.104-144.2.x86_64.rpm.html">here</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.trust-box.at/2010/03/15/oracle-xe-on-suse-11-64bit/feed/</wfw:commentRss>
		</item>
		<item>
		<title>nic.at epp client on github (written in php)</title>
		<link>http://www.trust-box.at/2010/01/05/nicat-epp-client-on-github-written-in-php/</link>
		<comments>http://www.trust-box.at/2010/01/05/nicat-epp-client-on-github-written-in-php/#comments</comments>
		<pubDate>Tue, 05 Jan 2010 12:13:04 +0000</pubDate>
		<dc:creator>schulung</dc:creator>
		
		<category><![CDATA[Domain Registry Stuff]]></category>

		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.trust-box.at/?p=82</guid>
		<description><![CDATA[I decided that from now on the source code for the  epp client for domain registries (templates specifically for the austrian top level domain .at) will reside on github
The giturl you&#8217;ll find the code at is
http://github.com/MarkHofstetter/php-epp-client
remarks/comments/suggestion are very welcome
]]></description>
			<content:encoded><![CDATA[<p>I decided that from now on the source code for the  epp client for domain registries (templates specifically for the austrian top level domain .at) will reside on <a href="http://www.github.com" target="_blank">github</a></p>
<p>The giturl you&#8217;ll find the code at is</p>
<p>http://github.com/MarkHofstetter/php-epp-client</p>
<p>remarks/comments/suggestion are very welcome</p>
]]></content:encoded>
			<wfw:commentRss>http://www.trust-box.at/2010/01/05/nicat-epp-client-on-github-written-in-php/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The Zend Guestbook demo with Oracle 11g</title>
		<link>http://www.trust-box.at/2009/11/23/the-zend-guestbook-demo-with-oracle-11g/</link>
		<comments>http://www.trust-box.at/2009/11/23/the-zend-guestbook-demo-with-oracle-11g/#comments</comments>
		<pubDate>Mon, 23 Nov 2009 10:21:14 +0000</pubDate>
		<dc:creator>schulung</dc:creator>
		
		<category><![CDATA[Oracle]]></category>

		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.trust-box.at/?p=80</guid>
		<description><![CDATA[The Zend Guestbook demo implemented with Zend 1.95, Oracle 11g and the xampp package
download the complete example here
First things first. Don&#8217;t, *again* don&#8217;t, use Zend 1.9 which seems to have some bugs, use at least 1.91.
What I&#8217;ve done I changed as few things as possible to get the guestbook quickstart demo running on Oracle.
Only some [...]]]></description>
			<content:encoded><![CDATA[<h2>The <a href="http://framework.zend.com/docs/quickstart" target="_blank">Zend Guestbook</a> demo implemented with Zend 1.95, Oracle 11g and the xampp package</h2>
<p><a href="http://trust-box.at/download/">download </a>the complete example <a href="http://trust-box.at/download/zend-quickstart-oracle.zip">here</a></p>
<p>First things first. Don&#8217;t, *again* don&#8217;t, use Zend 1.9 which seems to have some bugs, use at least 1.91.<br />
What I&#8217;ve done I changed as few things as possible to get the guestbook quickstart demo running on Oracle.<br />
Only some minor yak shaving had to take place:</p>
<ul>
<li>You cannot easily user the Zend .ini style configuration  because you need some Db_Zend constansts, so you either have to use XML style config or hardcode the constants (and the credentials) directly in the Bootstrap.php file (the easy route which I have taken)</li>
<li> In Oracle its not possible to name a column &#8220;COMMENT&#8221; so I have chosen &#8220;COMMENTS&#8221; instead which is equally bad but at least working</li>
<li> Use at least Zend 1.91, have I already mentioned that?</li>
<li> I haven&#8217;t came around to get &#8220;Zend_Db::CASE_FOLDING =&gt; Zend_Db::CASE_UPPER&#8221; working quickly, so all the column names used have to be upper case as they are stored in the Oracle data dictonary views</li>
</ul>
<h3>Installation</h3>
<ul>
<li> Be careful, if you break something it&#8217;s your fault not mine</li>
<li> Everything is you need is in the zip file which should be unpacked in a directory accessable by your webserver, in the many cases (also with the XAMPP and LAMPP packages) this folder is named &#8220;htdocs&#8221;</li>
</ul>
<h3>Database (Oracle) Side</h3>
<ul>
<li> if you have user create privileges (usually SYSTEM or SYS user), you may execute the questbook.sql script found in the INSTALL folder</li>
<li> if you don&#8217;t have user create privileges, but a database user (the name doesn&#8217;t matter) login as the user and start with line 6 (the create sequence command) of the guestbook.sql file</li>
</ul>
<h3>PHP Side</h3>
<ul>
<li> in application/Bootstrap.php change the dbname, username and password to your settings</li>
</ul>
<h3>You are ready</h3>
<ul>
<li>navigate your web browser to http://&lt;yourhostname&gt;/quickstart/public/guestbook and everything should work out fine</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.trust-box.at/2009/11/23/the-zend-guestbook-demo-with-oracle-11g/feed/</wfw:commentRss>
		</item>
		<item>
		<title>20 Jahre Mauerfall im Lichte von RDBMS</title>
		<link>http://www.trust-box.at/2009/11/09/20-jahre-mauerfall-im-lichte-von-rdbms/</link>
		<comments>http://www.trust-box.at/2009/11/09/20-jahre-mauerfall-im-lichte-von-rdbms/#comments</comments>
		<pubDate>Mon, 09 Nov 2009 18:53:05 +0000</pubDate>
		<dc:creator>schulung</dc:creator>
		
		<category><![CDATA[Oracle]]></category>

		<category><![CDATA[SQL Beispiele]]></category>

		<guid isPermaLink="false">http://www.trust-box.at/?p=76</guid>
		<description><![CDATA[In jedem meiner Datenbankkurse predige ich ein paar Stehsätze einer davon lautet
jede Tabelle muß eine &#8220;abstrake&#8221; ID haben, und es ist sehr schlecht &#8220;scheinbar&#8221; eindeutige numerische Felder wie zum Beispiel Kontonummer, Personalnummer oder auch die Postleitzahl als ID zu mißbrauchen.
Ich bringe immer das Beispiel das eine Personentabelle mit einer Orte Tabellen über die Postleitzahl verknüpft [...]]]></description>
			<content:encoded><![CDATA[<p>In jedem meiner Datenbankkurse predige ich ein paar Stehsätze einer davon lautet</p>
<blockquote><p>jede Tabelle muß eine &#8220;abstrake&#8221; ID haben, und es ist sehr schlecht &#8220;scheinbar&#8221; eindeutige numerische Felder wie zum Beispiel Kontonummer, Personalnummer oder auch die Postleitzahl als ID zu mißbrauchen.</p></blockquote>
<p>Ich bringe immer das Beispiel das eine Personentabelle mit einer Orte Tabellen über die Postleitzahl verknüpft ist. Was von den meisten Teilnehmer mit einem begeisterten Kopfnicken quittiert wird &#8220;ist ja eh eindeutig und wird sich sicher NIE ändern&#8221;.</p>
<p>Dann kommt mein großer Moment und ich sage: &#8220;Und dann kommt die Wiedervereinigung und das ganze Datenmodell bricht zusammen!&#8221;. Das ist sehr deutlich und einprägsam - nur sind mittlerweile auch so junge Teilnehmer dabei bei denen das große Ereignis eben nicht mehr so präsent ist. Hm ich werde alt. Meine Hoffnungen ruhen auf Nord- und Südkorea für neue Beispiele.</p>
<p>In diesem Sinne ist der positive Beitrag des Mauerfalls zum Thema &#8220;Datenbankdidaktik&#8221; gar nicht hoch genug einzuschätzen!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.trust-box.at/2009/11/09/20-jahre-mauerfall-im-lichte-von-rdbms/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>

