<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress.com" -->
<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/"
	>

<channel>
	<title>dbi &amp;laquo; WordPress.com Tag Feed</title>
	<link>http://en.wordpress.com/tag/dbi/</link>
	<description>Feed of posts on WordPress.com tagged "dbi"</description>
	<pubDate>Mon, 30 Nov 2009 16:10:08 +0000</pubDate>

	<generator>http://en.wordpress.com/tags/</generator>
	<language>en</language>

<item>
<title><![CDATA[Conectando ruby + postgres usando DBI:Pg]]></title>
<link>http://diegonogueira.wordpress.com/2009/11/23/conectando-ruby-postgres-usando-dbi/</link>
<pubDate>Mon, 23 Nov 2009 23:55:25 +0000</pubDate>
<dc:creator>diegonogueira</dc:creator>
<guid>http://diegonogueira.wordpress.com/2009/11/23/conectando-ruby-postgres-usando-dbi/</guid>
<description><![CDATA[Olá pessoal!! Recentemente tive vários problemas ao tentar conectar o ruby com o banco postgres via ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Olá pessoal!!</p>
<p>Recentemente tive vários problemas ao tentar conectar o ruby com o banco postgres via dbi com a porta diferente da padrão 5432. Era erro atrás de erro, só conseguia conectar com a porta padrão 5432, mas queria utilizar outra, por exemplo, 5433. Até que consegui assim:</p>
<pre class="brush: ruby;">
require 'dbi'
con=[&#34;DBI:Pg:dbname=nome_do_banco;host=localhost;port=porta&#34;, &#34;nome_do_usuario&#34;, &#34;senha&#34;]
DBI.connect(*con)
</pre>
<p>É isso ai!<br />
Abraços!</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Baltic Dry Index (BDI)]]></title>
<link>http://basicmix.wordpress.com/2009/11/20/baltic-dry-index/</link>
<pubDate>Fri, 20 Nov 2009 10:44:25 +0000</pubDate>
<dc:creator>basicmix</dc:creator>
<guid>http://basicmix.wordpress.com/2009/11/20/baltic-dry-index/</guid>
<description><![CDATA[. Baltic Dry Index &#8211; BDI (BALDRY) es un índice de la contratación de fletes marítimos de carga]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><span style="color:#666699;"><span style="color:#ffffff;">.<br />
</span><strong>Baltic Dry Index &#8211; BDI (BALDRY)</strong></span> es un índice de la contratación de fletes marítimos de carga seca de las 26 principales líneas marítimas mundiales, administrado por el Baltic Exchange en Londres, su creación se remonta al año 1744. El índice es una evaluación del precio del transporte por mar de las principales materias primas como son principalmente carbón, mineral de hierro y granos y nos refleja la cantidad de contratos de envío de mercancías que se cierran en las principales rutas marítimas mundiales.</p>
<p>Obviamente, en la medida en que la economía mundial entra en crisis, se reducen los contratos de transporte y en consecuencia el Baltic Dry Index también desciende, por lo tanto <strong>es un indicador adelantado al mercado</strong> y se revela como un <strong>eficaz termómetro de la evolución de la economía mundial.</strong>En tiempos de crisis, el PIB <!--more-->(Producto Interior Bruto) desciende, se produce una reducción de consumo y aumenta la pobreza, lo que supone una menor demanda de materias primas y una paralización del comercio mundial que impacta en las empresas navieras, quedándose numerosos buques anclados en los puertos.</p>
<p>A diferencia de los mercados de valores y materias primas, el Baltic Dry Index está totalmente desprovisto de  especulación. El comercio está limitado sólo a las empresas asociadas, y las únicas partes pertinentes para asegurar contratos son los que tienen carga real a circular y los que tienen los barcos para moverlo.</p>
<p><strong>El Baltic Dry Index es considerado como uno de los indicadores libre de especulación. Por lo tanto es importante mantener un ojo en el índice para tener una idea de la dirección en la que se dirige la economía mundial.</strong></p>
<p>Datos mostrados desde 1-1-2009 hasta hoy.</p>
<p><a href="http://basicmix.wordpress.com/files/2009/11/graphic-107.png"><img class="aligncenter size-full wp-image-990" title="graphic-107" src="http://basicmix.wordpress.com/files/2009/11/graphic-107.png" alt="" width="600" height="277" /></a></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Refrescar vistas materializadas]]></title>
<link>http://amosqueda.wordpress.com/2009/11/04/refrescar-vistas-materializadas/</link>
<pubDate>Wed, 04 Nov 2009 23:33:32 +0000</pubDate>
<dc:creator>devdb</dc:creator>
<guid>http://amosqueda.wordpress.com/2009/11/04/refrescar-vistas-materializadas/</guid>
<description><![CDATA[Para refrescar la información en una vista materializada.. ejecutar en sqlplus exec dbms_snapshot.re]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Para refrescar la información en una vista materializada..<!--more--><br />
ejecutar en sqlplus</p>
<pre> exec dbms_snapshot.refresh('xxam_vista1_mv','C');</pre>
<p>después de refrescar en modo completo &#8220;C&#8221;, se puede usar para el modo fast &#8220;F&#8221;; ej.</p>
<pre> exec dbms_snapshot.refresh('xxam_vista1_mv','F');</pre>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Editar Reportes seeded en DBI]]></title>
<link>http://amosqueda.wordpress.com/2009/10/30/editar-reportes-seeded-en-dbi/</link>
<pubDate>Fri, 30 Oct 2009 22:28:10 +0000</pubDate>
<dc:creator>devdb</dc:creator>
<guid>http://amosqueda.wordpress.com/2009/10/30/editar-reportes-seeded-en-dbi/</guid>
<description><![CDATA[Al querer adecuar un reporte standar (seeded) en DBI, me encontre que este no aparece en la responsa]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Al querer adecuar un reporte standar (seeded) en DBI, me encontre que este no aparece en la responsabilidad de &#8220;Daily Business Intelligence Designer&#8221;.<!--more-->Después de investigarle llegue a la responsabilidad &#8220;Ak Developer&#8221;, tiene una opción de definir regiones, desde esta responsabilidad se pueden agregar nuevos items al reporte o modificar el display flag para hacer visibles ciertos campos, o en su defecto ocultar algunos.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Utilizando Adjava para crear objetos]]></title>
<link>http://amosqueda.wordpress.com/2009/10/29/utilizando-adjava-para-crear-objetos/</link>
<pubDate>Thu, 29 Oct 2009 23:19:51 +0000</pubDate>
<dc:creator>devdb</dc:creator>
<guid>http://amosqueda.wordpress.com/2009/10/29/utilizando-adjava-para-crear-objetos/</guid>
<description><![CDATA[Para crear una vista materializada que hacia falta para DBI, tuve que utilizar la herramienta FNDXDF]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Para crear una vista materializada que hacia falta para DBI, tuve que utilizar la herramienta FNDXDFCMP he aqui lo que encontre ..<br />
<!--more--><br />
Una vez obtenido el archivo xdf que vienen dentro de los patch, use la siguiente sintaxis<br />
<code><br />
<strong>adjava</strong> -m512m -nojit oracle.apps.fnd.odf2.FndXdfCmp &#60;owner schema&#62; &#60;schema password&#62;&#60;apps user&#62;&#60;apps password&#62; jdbc_protocol "tns" object_type &#60;full path xdf file&#62; &#60;$FND_TOP/patch/115/xdf/xsl&#62;</code><br />
donde:</p>
<ul>
<li>jdbc_protocol usar thin</li>
<li>tns usar los datos para la conexion [hostname:db_port:sid]</li>
<li>object_type usar all opciones mview,synonym,index,table,sequence,queue</li>
</ul>
<p>Ejemplo:</p>
<pre> adjava -mx512m -nojit oracle.apps.fnd.odf2.FndXdfCmp fnd fnd apps apps thin "192.168.1.27:1521:DESA" all missing_table.xdf $FND_TOP/patch/115/xdf/xsl</pre>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Error en Cargar Clasificación de Mercado de parte]]></title>
<link>http://amosqueda.wordpress.com/2009/10/27/error-en-carga-de/</link>
<pubDate>Tue, 27 Oct 2009 18:08:24 +0000</pubDate>
<dc:creator>devdb</dc:creator>
<guid>http://amosqueda.wordpress.com/2009/10/27/error-en-carga-de/</guid>
<description><![CDATA[Al ejecutar el concurrente &#8220;Cargar Clasificación de Mercado de parte&#8221; (FII_PARTY_MKT_CLA]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Al ejecutar el concurrente &#8220;Cargar Clasificación de Mercado de parte&#8221; (FII_PARTY_MKT_CLASS_C), leo que hay un error <em>ORA-01400: cannot insert NULL into (&#8220;FII&#8221;.&#8221;FII_PARTY_MKT_CLASS_STG&#8221;.&#8221;START_DATE&#8221;)</em>;  esto afecta a los tableros de Receivables.<br />
la solución es configurar la opción Tipo de Clasificación de Mercado de Parte en los parámetros globales</p>
<ul>
<li>Ir a la responsabilidad &#8220;Administrador de Daily Business Intelligence&#8221;</li>
<li>Después seleccionar Configuración:Globales</li>
<li>en Tipo de Clasificación de Mercado de Parte seleccionar el valor  &#8221;Categoría Clientes&#8221;.</li>
</ul>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[NYU Stern, New York]]></title>
<link>http://myedboutique.wordpress.com/2009/10/23/nyu-stern-new-york/</link>
<pubDate>Fri, 23 Oct 2009 18:22:39 +0000</pubDate>
<dc:creator>Lavanya</dc:creator>
<guid>http://myedboutique.wordpress.com/2009/10/23/nyu-stern-new-york/</guid>
<description><![CDATA[]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><img src="http://workscoolnow.googlepages.com/NYU_Stern.jpg" style="display:block;text-align:center;margin:0 auto 10px;" title="" alt="" /></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Rede sem Fio 1 Tutorial Watt x dB. Para que serve e como se usa para cálculo de antenas]]></title>
<link>http://jmsalles.wordpress.com/2009/10/08/rede-sem-fio-1-tutorial-watt-x-db-para-que-serve-e-como-se-usa-para-calculo-de-antenas/</link>
<pubDate>Thu, 08 Oct 2009 16:36:37 +0000</pubDate>
<dc:creator>jmsalles</dc:creator>
<guid>http://jmsalles.wordpress.com/2009/10/08/rede-sem-fio-1-tutorial-watt-x-db-para-que-serve-e-como-se-usa-para-calculo-de-antenas/</guid>
<description><![CDATA[Pessoal Vou Começãr Mais Uma Nova Serie de Tutoriais Rede Sem Fio Nesse Nosso 1 Tutorial Vamos ser B]]></description>
<content:encoded><![CDATA[Pessoal Vou Começãr Mais Uma Nova Serie de Tutoriais Rede Sem Fio Nesse Nosso 1 Tutorial Vamos ser B]]></content:encoded>
</item>
<item>
<title><![CDATA[Mario, Pac-Man better known than Michael Jordan]]></title>
<link>http://danthemantrivia.wordpress.com/2009/08/31/mario-pac-man-better-known-than-michael-jordan/</link>
<pubDate>Mon, 31 Aug 2009 20:09:05 +0000</pubDate>
<dc:creator>danthemantrivia</dc:creator>
<guid>http://danthemantrivia.wordpress.com/2009/08/31/mario-pac-man-better-known-than-michael-jordan/</guid>
<description><![CDATA[When it comes to celebrity status, Mario — of video game fame — ranks higher than Matt Damon, Ashley]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><a href="http://danthemantrivia.wordpress.com/files/2009/08/pac-man.jpg"><img class="alignright size-full wp-image-1585" title="Pac-Man" src="http://danthemantrivia.wordpress.com/files/2009/08/pac-man.jpg" alt="Pac-Man" width="300" height="346" /></a>When it comes to celebrity status, <strong>Mario</strong> — of video game fame — ranks higher than <strong>Matt Damon</strong>, <strong>Ashley Judd</strong>, <strong>Michael Jordan</strong> and <strong>Robert Redford</strong>.</p>
<p>According to the <strong><a href="http://www.reuters.com/article/pressRelease/idUS278313+15-May-2008+PRN20080515" target="_blank">Davie Brown Celebrity Index (DBI)</a></strong>, Mario is recognized by 93 percent of U.S. consumers. But he’s not the top dog in the video world. That honor goes to Pac-Man, who is recognized by 94 percent of U.S. consumers.</p>
<p>The Davie Brown Celebrity Index (DBI) is an independent index that ranks celebrities across eight attributes through a series of more than 1,600 consumer surveys.</p>
<p><strong>Did you know?</strong></p>
<ul>
<li>Mario made his first appearance in the video game “Donkey Kong.”</li>
<li>The four ghosts in Pac-Man are named Blinky, Pinky, Inky and Clyde.</li>
<li>Billy L. Mitchell was the first person to achieve a perfect <strong><a href="http://www.twingalaxies.com/index.aspx?c=18&#38;id=1349" target="_blank">Pac-Man score of 3,333,360</a></strong>. In 2007, he <strong><a href="http://www.twingalaxies.com/index.aspx?c=19&#38;id=1465" target="_blank">set the world record score for Donkey Kong</a></strong> with 1,050,200 points.</li>
</ul>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[On-line with Ambient Project]]></title>
<link>http://designweek.wordpress.com/2009/08/11/34/</link>
<pubDate>Tue, 11 Aug 2009 11:53:00 +0000</pubDate>
<dc:creator>designweek</dc:creator>
<guid>http://designweek.wordpress.com/2009/08/11/34/</guid>
<description><![CDATA[Now for a big Thank You! The Design Week 2009 website in association with Bombay Sapphire was create]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Now for a big Thank You! The <a href="http://www.designweek.ie" target="_blank">Design Week 2009 website</a> in association with Bombay Sapphire was created by Ambient Project.  We have worked successfully with them for our last website and current site and with graphics and branding for numerous projects in the last two years. Ambient Project is an experienced and established agency offering not only the skills to create websites but also the skills to make them highly usable, accessible and profitable.</p>
<p>Whether working with an Organisation, SME, start up-business, cafe, salon or restaurant, their work combines rationality, humour, visual clarity and a unique sensitivity to colour, to create memorable and stylish on-line identities for a wide range of clients. They provide a bespoke and highly considered service to large organisations and private individual clients alike.</p>
<p>Offering a personal service to all their clients, offering quotes and designs tailored to suit the needs of any business or organisation.</p>
<p>So Thank You! Ambient Project, and you can check them out on-line at <a href="http://www.ambientproject.com" target="_blank">www.ambientproject.com</a></p>
<p><img class="aligncenter size-medium wp-image-35" title="ambient" src="http://designweek.wordpress.com/files/2009/08/ambient.jpg?w=300" alt="ambient" width="300" height="176" /></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Perl DBI MySQL (beginer)]]></title>
<link>http://iceaccount.wordpress.com/2009/07/11/perl-dbi-mysql-beginer/</link>
<pubDate>Sat, 11 Jul 2009 00:17:10 +0000</pubDate>
<dc:creator>deatul</dc:creator>
<guid>http://iceaccount.wordpress.com/2009/07/11/perl-dbi-mysql-beginer/</guid>
<description><![CDATA[use DBI; $dbh = DBI-&gt;connect(&#8220;dbi:mysql:$database:$url&#8220;,$username,$password) or die ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p style="text-align:left;">use DBI;<br />
<span style="color:#ff6600;">$dbh</span> = DBI-&#62;connect(&#8220;dbi:mysql:<span style="color:#ff6600;">$database</span>:<span style="color:#ff6600;">$url</span>&#8220;,<span style="color:#ff6600;">$username</span>,<span style="color:#ff6600;">$password</span>)<span style="color:#808080;"> or die &#8220;Can&#8217;t open database: $DBI::errstr&#8221;;<br />
</span><em>$dbh-&#62;disconnect();</em></p>
<p style="text-align:left;"><span style="color:#339966;"><span style="color:#000000;">$database</span> //Name of database<br />
<span style="color:#000000;">$url</span> //Address of database<br />
<span style="color:#000000;">$username</span> //username<br />
<span style="color:#000000;">$password</span> //password</span></p>
<p style="text-align:left;">$sth = <em>$dbh</em>-&#62;prepare(&#8220;<strong>SELECT </strong>field1 , field2 , field3 FROM <span style="color:#333399;">table1 </span>WHERE field2 = ? AND field3 = ? &#8220;);<br />
$sth-&#62;execute(<span style="color:#ff6600;">$field2</span>,<span style="color:#ff6600;">$field3</span>);</p>
<p style="text-align:left;">$sth=<em>$dbh</em>-&#62;prepare(&#8220;<strong>INSERT </strong>INTO <span style="color:#333399;">table1</span> (field1 , field2 , timefield) VALUES ( ? , ? , now() ) &#8220;);<br />
$sth-&#62;execute(<span style="color:#ff6600;">$field1</span>,<span style="color:#ff6600;">$field2</span>);</p>
<p style="text-align:left;">$sth = $dbh-&#62;prepare(&#8220;<strong>UPDATE </strong><span style="color:#333399;">table1 </span>SET field1 = field1 + 1 , field2 = ? , field3 = ? WHERE field4 = ? &#8220;);<br />
$sth-&#62;execute(<span style="color:#ff6600;">$field2</span>,<span style="color:#ff6600;">$field3</span>,<span style="color:#ff6600;">$field4</span>);</p>
<p style="text-align:left;">$sth=$dbh-&#62;prepare(&#8220;<strong>DELETE </strong>FROM <span style="color:#333399;">table1 </span>WHERE field1 = ? &#8220;);<br />
$sth-&#62;execute(<span style="color:#ff6600;">$field1</span>);</p>
<p style="text-align:left;">if($sth-&#62;rows == 1){<br />
<span style="color:#339966;"> //do something</span><br />
}<br />
<span style="color:#ff6600;">$inserted_auto_id</span> = $dbh-&#62;{mysql_insertid};<br />
(<span style="color:#ff6600;">$field1</span>,<span style="color:#ff6600;">$field2</span>,<span style="color:#ff6600;">$field3</span>)=$sth-&#62;fetchrow_array();</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Accessing an Oracle 10g database with perl]]></title>
<link>http://houst0n.wordpress.com/2009/06/25/accessing-an-oracle-10g-database-with-perl/</link>
<pubDate>Thu, 25 Jun 2009 11:45:01 +0000</pubDate>
<dc:creator>houst0n</dc:creator>
<guid>http://houst0n.wordpress.com/2009/06/25/accessing-an-oracle-10g-database-with-perl/</guid>
<description><![CDATA[I&#8217;ve been given the task of writing some perl scripts which will run on a Solaris 10 machine a]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>I&#8217;ve been given the task of writing some perl scripts which will run on a Solaris 10 machine and communicate with an Oracle 10g XE database which in turn is living on a RHEL5 box.</p>
<p>While I have some experience installing/patching Oracle, I&#8217;ve never written a script which communicates directly with it &#8211; so this should be a good learning exercise.</p>
<p>There&#8217;s a simple table in the database called &#8220;SM_USER_CONFIG&#8221; which contains a few rows just for testing.</p>
<p>The first step I feel, is to get the machine communicating with the database via sqlplus.</p>
<p>To do this, we need to install &#8220;Instant Client&#8221; &#8211; We want &#8220;Basic&#8221; &#8220;Sqlplus&#8221; and &#8220;SDK&#8221;</p>
<p>(available from <a href="http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/solx86soft.html">http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/solx86soft.html</a>)</p>
<p>I extracted all of these to /opt/instantclient:</p>
<blockquote><p>(TCSUNDEV01:/opt/instantclient) sysmgr &#62; ls<br />
classes12.jar  libclntsh.so.10.1*  libocci.so.10.1*  libsqlplus.so*    sdk/        tnsnames.ora<br />
glogin.sql     libnnz10.so*        libociei.so*      libsqlplusic.so*  sqlnet.log<br />
libclntsh.so@  libocci.so@         libocijdbc10.so*  ojdbc14.jar       sqlplus*</p></blockquote>
<p>We need to create a /opt/instantclient/tnsnames.ora file like this:</p>
<blockquote><p>XE.WORLD =<br />
  (DESCRIPTION =<br />
    (ADDRESS_LIST =<br />
        (ADDRESS =<br />
          (COMMUNITY = tcp.world)<br />
          (PROTOCOL = TCP)<br />
          (Host = 10.17.58.22)<br />
          (Port = 1521)<br />
        )<br />
    )<br />
    (CONNECT_DATA = (SID = XE)<br />
    )<br />
  )</p></blockquote>
<p>Lets try and connect with SQL plus:</p>
<blockquote><p>(TCSUNDEV01:~) sysmgr &#62; setenv TNS_ADMIN /opt/instantclient/<br />
(TCSUNDEV01:~) sysmgr &#62; /opt/instantclient/sqlplus <a href="mailto:smuser/smuserpw@XE.WORLD">username/password@XE.WORLD</a></p>
<p>SQL*Plus: Release 10.2.0.2.0 &#8211; Production on Thu Jun 25 19:16:00 2009<br />
Copyright (c) 1982, 2005, Oracle.  All Rights Reserved.<br />
Connected to:<br />
Oracle Database 10g Express Edition Release 10.2.0.1.0 &#8211; Production</p>
<p>SQL&#62; SELECT USERNAME<br />
  2  FROM SM_USER_CONFIG<br />
  3  /</p>
<p>USERNAME<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
HoustonN<br />
UserTest<br />
TestUser </p>
<p>SQL&#62;</p></blockquote>
<p>Cool, it works.</p>
<p>Next up is perl. We will build DBD::Oracle for this. Head over to cpan and download the src. We&#8217;re using CSWperl from blastwave.</p>
<blockquote><p>(TCSUNDEV01:/var/tmp) sysmgr &#62; gzcat /tmp/DBD-Oracle-1.23.tar.gz &#124; gtar -xf -<br />
(TCSUNDEV01:/var/tmp) sysmgr &#62;cd DBD-Oracle-1.23<br />
(TCSUNDEV01:/var/tmp/DBD-Oracle-1.23) sysmgr &#62; setenv TNS_ADMIN /opt/instantclient/<br />
(TCSUNDEV01:/var/tmp/DBD-Oracle-1.23) sysmgr &#62; setenv LD_LIBRARY_PATH /opt/instantclient/<br />
(TCSUNDEV01:/var/tmp/DBD-Oracle-1.23) sysmgr &#62; setenv ORACLE_SID XE<br />
(TCSUNDEV01:/var/tmp/DBD-Oracle-1.23) sysmgr &#62; perl Makefile.PL -V 10.2.0.1</p>
<p>Using DBI 1.604 (for perl 5.008008 on i86pc-solaris-thread-multi) installed in /opt/csw/lib/perl/csw/auto/DBI/</p>
<p>Configuring DBD::Oracle for perl 5.008008 on solaris (i86pc-solaris-thread-multi)</p>
<p>Remember to actually *READ* the README file! Especially if you have any problems.</p>
<p>Trying to find an ORACLE_HOME<br />
Found /opt/instantclient/</p>
<p>WARNING: Setting ORACLE_HOME env var to /opt/instantclient/ for you.<br />
WARNING: If these tests fail you may have to set ORACLE_HOME yourself!<br />
Installing on a solaris, Ver#2.8<br />
Using Oracle in /opt/instantclient/<br />
SP2-1503: Unable to initialize Oracle call interface<br />
SP2-0152: ORACLE may not be functioning properly</p>
<p>            If sqlplus failed due to a linker/symbol/relocation/library error or similar problem<br />
            then it&#8217;s likely that you&#8217;ve not configured your environment correctly.<br />
            Specifically, your LD_LIBRARY_PATH environment variable<br />
            set to include the directory containing the Oracle libraries.</p>
<p>Forcing Oracle version to be treated as 10.2.0.1<br />
Oracle version 10.2.0.1 (10.2)<br />
Looks like an Instant Client installation, okay<br />
Your LD_LIBRARY_PATH env var is set to &#8216;/opt/instantclient/&#8217;<br />
Oracle sysliblist:<br />
Found header files in /opt/instantclient//sdk/include.</p>
<p>Checking for functioning wait.ph<br />
System: perl5.008008 sunos thor 5.8 generic_117351-51 i86pc i386 i86pc<br />
Compiler:   cc -xO3 -xtarget=generic -xarch=generic -D_REENTRANT -xO3 -xtarget=generic -xarch=generic -I/opt/csw/bdb44/include -I/opt/csw/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64<br />
Linker:     /usr/ccs/bin/ld<br />
Sysliblist:<br />
Linking with -lclntsh.</p>
<p>LD_RUN_PATH=/opt/instantclient<br />
Using DBD::Oracle 1.23.<br />
Using DBD::Oracle 1.23.<br />
Using DBI 1.604 (for perl 5.008008 on i86pc-solaris-thread-multi) installed in /opt/csw/lib/perl/csw/auto/DBI/<br />
Writing Makefile for DBD::Oracle</p></blockquote>
<blockquote><p>***  If you have problems&#8230;<br />
     read all the log printed above, and the README and README.help.txt files.<br />
     (Of course, you have read README by now anyway, haven&#8217;t you?)</p></blockquote>
<p>Notice the warning about sqlplus failing above. As we&#8217;re building this on a CLIENT, when sqlplus is invoked it doesn&#8217;t specify @XE.WORLD (default is to connect to a local database)- We can just ignore this.</p>
<p>Go ahead and run &#8220;make install&#8221;</p>
<blockquote><p>(TCSUNDEV01:/var/tmp/DBD-Oracle-1.23) sysmgr &#62; pfexec gmake install<br />
Skip blib/lib/DBD/Oracle.pm (unchanged)<br />
Skip blib/lib/oraperl.ph (unchanged)<br />
Skip blib/arch/auto/DBD/Oracle/dbdimp.h (unchanged)<br />
Skip blib/arch/auto/DBD/Oracle/ocitrace.h (unchanged)<br />
Skip blib/lib/Oraperl.pm (unchanged)<br />
Skip blib/arch/auto/DBD/Oracle/Oracle.h (unchanged)<br />
Skip blib/lib/DBD/Oracle/Object.pm (unchanged)<br />
Skip blib/arch/auto/DBD/Oracle/mk.pm (unchanged)<br />
Skip blib/lib/DBD/Oracle/GetInfo.pm (unchanged)<br />
cc -c  -I/opt/instantclient//sdk/include -I/opt/csw/lib/perl/csw/auto/DBI -D_REENTRANT -xO3 -xtarget=generic -xarch=generic -I/opt/csw/bdb44/include -I/opt/csw/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -xO3 -xtarget=generic -xarch=generic   -DVERSION=\&#8221;1.23\&#8221; -DXS_VERSION=\&#8221;1.23\&#8221; -KPIC &#8220;-I/opt/csw/lib/perl/5.8.8/CORE&#8221;  -DUTF8_SUPPORT -DNEW_OCI_INIT -DORA_OCI_VERSION=\&#8221;10.2.0.1\&#8221; Oracle.c<br />
cc -c  -I/opt/instantclient//sdk/include -I/opt/csw/lib/perl/csw/auto/DBI -D_REENTRANT -xO3 -xtarget=generic -xarch=generic -I/opt/csw/bdb44/include -I/opt/csw/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -xO3 -xtarget=generic -xarch=generic   -DVERSION=\&#8221;1.23\&#8221; -DXS_VERSION=\&#8221;1.23\&#8221; -KPIC &#8220;-I/opt/csw/lib/perl/5.8.8/CORE&#8221;  -DUTF8_SUPPORT -DNEW_OCI_INIT -DORA_OCI_VERSION=\&#8221;10.2.0.1\&#8221; dbdimp.c<br />
cc -c  -I/opt/instantclient//sdk/include -I/opt/csw/lib/perl/csw/auto/DBI -D_REENTRANT -xO3 -xtarget=generic -xarch=generic -I/opt/csw/bdb44/include -I/opt/csw/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -xO3 -xtarget=generic -xarch=generic   -DVERSION=\&#8221;1.23\&#8221; -DXS_VERSION=\&#8221;1.23\&#8221; -KPIC &#8220;-I/opt/csw/lib/perl/5.8.8/CORE&#8221;  -DUTF8_SUPPORT -DNEW_OCI_INIT -DORA_OCI_VERSION=\&#8221;10.2.0.1\&#8221; oci8.c<br />
Running Mkbootstrap for DBD::Oracle ()<br />
chmod 644 Oracle.bs<br />
rm -f blib/arch/auto/DBD/Oracle/Oracle.so<br />
LD_RUN_PATH=&#8221;/opt/instantclient&#8221; cc  -G -L/opt/csw/bdb44/lib -L/opt/csw/lib -L/usr/lib -L/usr/ccs/lib -L/opt/SUNWspro/prod/lib -L/lib Oracle.o dbdimp.o oci8.o  -o blib/arch/auto/DBD/Oracle/Oracle.so  \<br />
           -L/opt/instantclient/ -lclntsh       \</p>
<p>chmod 755 blib/arch/auto/DBD/Oracle/Oracle.so<br />
cp Oracle.bs blib/arch/auto/DBD/Oracle/Oracle.bs<br />
chmod 644 blib/arch/auto/DBD/Oracle/Oracle.bs<br />
/opt/csw/bin/perl &#8220;-Iblib/arch&#8221; &#8220;-Iblib/lib&#8221; ora_explain.PL ora_explain<br />
Extracted ora_explain from ora_explain.PL with variable substitutions.<br />
cp ora_explain blib/script/ora_explain<br />
/opt/csw/bin/perl &#8220;-MExtUtils::MY&#8221; -e &#8220;MY-&#62;fixin(shift)&#8221; blib/script/ora_explain<br />
Manifying blib/man1/ora_explain.1<br />
Manifying blib/man3/DBD::Oracle.3perl<br />
Manifying blib/man3/DBD::Oraperl.3perl<br />
Files found in blib/arch: installing files in blib/lib into architecture dependent library tree<br />
Writing /opt/csw/lib/perl/site_perl/auto/DBD/Oracle/.packlist<br />
Appending installation info to /opt/csw/lib/perl/5.8.8/perllocal.pod<br />
(TCSUNDEV01:/var/tmp/DBD-Oracle-1.23) sysmgr &#62;</p></blockquote>
<p>And test:</p>
<blockquote><p>(TCSUNDEV01:/var/tmp/DBD-Oracle-1.23) sysmgr &#62; perl -MDBD::Oracle -le &#8216;print $DBD::Oracle::VERSION;&#8217;<br />
1.23</p></blockquote>
<p>Finally, lets put togeather a little perl script to query our sample table:</p>
<p> </p>
<blockquote><p>use DBI;</p>
<p>$dbh = DBI-&#62;connect(&#8216;dbi:Oracle:&#8217;, <a href="mailto:q{smuser/smuserpw@(DESCRIPTION">q{USER/PASSWORD@(DESCRIPTION</a> =<br />
    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.17.58.22)(PORT = 1521))<br />
    (CONNECT_DATA =<br />
      (SERVER = DEDICATED)<br />
      (SERVICE_NAME = XE)<br />
    )<br />
  )},&#8221;") or die DBI::errstr;</p>
<p>$dbstr = $dbh-&#62;prepare(&#8220;SELECT id, username, hostname FROM sm_user_config&#8221;);<br />
$dbstr-&#62;execute;<br />
$~ = TABLEHEADER;<br />
write;</p>
<p>while (($rdbid, $rdbu, $rdbv) = $dbstr-&#62;fetchrow_array()) {<br />
        $~ = TABLEENTRY;<br />
        write;<br />
}</p>
<p>$~ = TABLEBOTTOM;<br />
write;<br />
print &#8220;\n&#8221;;</p>
<p> </p>
<p>format TABLEHEADER =</p>
<p>+&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;&#8212;-+<br />
&#124; ID     &#124;   User          &#124;  VMName        &#124;<br />
+&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;&#8212;-+<br />
.</p>
<p>format TABLEENTRY =<br />
&#124; @&#60;&#60;&#60;&#60;&#60; &#124; @&#60;&#60;&#60;&#60;&#60;&#60;&#60;&#60;&#60;&#60;&#60;&#60;   &#124; @&#60;&#60;&#60;&#60;&#60;&#60;&#60;&#60;&#60;&#60;&#60;&#60;&#60; &#124;<br />
 $rdbid,   $rdbu,            $rdbv<br />
.</p>
<p>format TABLEBOTTOM =<br />
+&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;&#8212;-+<br />
.</p>
<p> </p></blockquote>
<p>Running it, we get:</p>
<p> </p>
<blockquote><p>
<code><br />
(TCSUNDEV01:~) sysmgr &#62; perl ora2.pl</p>
<p>+--------+-----------------+---------+<br />
&#124; ID        &#124;   User          &#124;  VMName     &#124;<br />
+--------+-----------------+---------+<br />
&#124; 1         &#124; HoustonN     &#124; VXPTEST39   &#124;<br />
&#124; 3         &#124; UserTest      &#124; VXPTEST2    &#124;<br />
&#124; 2         &#124; TestUser      &#124; VXPTEST5    &#124;<br />
+--------+-------------+-------------+<br />
</code></p>
<p> </p></blockquote>
<p>(Formatting got a bit messed up when I pasted, but you get the idea =)<br />
Party on!</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Perl + DBI + MySQL]]></title>
<link>http://tidoc.wordpress.com/2009/05/23/perl-dbi-mysql/</link>
<pubDate>Sat, 23 May 2009 22:11:30 +0000</pubDate>
<dc:creator>Fernando Libório</dc:creator>
<guid>http://tidoc.wordpress.com/2009/05/23/perl-dbi-mysql/</guid>
<description><![CDATA[Essa semana precisei criar alguns scripts de migração e estatística de dados em bases MySQL. Esse ti]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Essa semana precisei criar alguns scripts de migração e estatística de dados em bases MySQL. Esse tipo de problema é bem a area do Perl e Python. Ambos tem uma boa performance em tratamento de dados principalmente arquivos.</p>
<p>Vou tentar explicar como instalar os recursos necessários para fazer uma aplicação em Perl que possa manipular bases de dados em MySQL.</p>
<p><strong>DBI</strong></p>
<p>O DBI é uma interface de acesso e manipulação de dados. Funciona como uma camada entre o script perl e o driver especifico de um SGBD. Com o DBI não é necessário saber a API  de cada SGBD ( Oracle, MySQL, PostgreSQL, etc ). Quando um métido da interface é invocado, a ação é transferida para o driver especifico de forma transparente para o usuário final.</p>
<p>Vamo fazer o troço funcionar.</p>
<p><strong>INGREDIENTES</strong></p>
<ul>
<li>Internet</li>
<li>Perl ou ActivePerl ( Caso seja usuário Windows )</li>
<li>Teclado</li>
</ul>
<p><strong>INSTALANDO</strong></p>
<p>Vá até o shell ou prompt de comando e digite:</p>
<p><strong><em>ppm install DBI</em></strong></p>
<p><strong><em>ppm install DBD-mysql</em></strong></p>
<p>Pronto, agora é só incluir o modulo DBI e já está pronto para usar.</p>
<pre class="brush: php;">
use strict;
use warnings;
use DBI;

my $conexao = DBI-&gt;connect('DBI:mysql:database=meu_banco;host=servidor;port=3306','usuario','senha');
</pre>
<p>É isso ai &#8230; a documentação está aqui: <a title="DBI" href="http://search.cpan.org/~timb/DBI/DBI.pm" target="_blank">http://search.cpan.org/~timb/DBI/DBI.pm</a><br />
divirtam-se!</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Difficulties in taint data propagation without an IR]]></title>
<link>http://seanhn.wordpress.com/2009/05/11/difficulties-in-taint-data-propagation-without-an-ir/</link>
<pubDate>Mon, 11 May 2009 15:28:48 +0000</pubDate>
<dc:creator>seanhn</dc:creator>
<guid>http://seanhn.wordpress.com/2009/05/11/difficulties-in-taint-data-propagation-without-an-ir/</guid>
<description><![CDATA[I&#8217;m currently building a tool that propagates taint information through a program as it execut]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>I&#8217;m currently building a tool that propagates taint information through a program as it executes. Essentially this consists of marking the data read by certain syscalls (e.g. read and recv) as &#8216;tainted&#8217;, or user controllable, followed by tracking the flow of this data through the program. The &#8216;propagation&#8217; occurs when tainted data is used as a source in an instruction, thus tainting the result. For example, if the data at address <tt>0x100</tt> is tainted and the instruction <tt>mov ebx, [0x100]</tt> is executed then <tt>ebx</tt> is now tainted.</p>
<p>To track all possible taint propagation is a fairly involved task. The <tt>mov</tt> instruction for instance has 4 potential configurations (memory to memory, register to memory etc.) and many instructions (arithmetic ones for instance), do more than simply copying memory. Considering that most binaries from the /bin directory on Linux have between 70-100 unique instructions, and many of these instructions have unique semantics in terms of how they spread the data from source operands into the destination operands, modelling these effects for each instruction would seem to be a fairly involved task.</p>
<p>It&#8217;s also a task I&#8217;m having to deal with at the moment due to my choice of dynamic binary analysis (DBI) framework. I am using <a href="http://pintool.org">Pin</a>, a free but closed source DBI. One of Pin&#8217;s primary goals is speed and thus it can&#8217;t afford something like converting each basic block to an intermediary representation (IR)  (like Valgrind does). This means we are left with convenience functions to access operators and operands and are required to perform a case by case analysis on each instruction. Luckily, the functions provided by Pin are quite well thought out. Let us consider how to process an instruction like <tt>mov dword ptr ds[esi+edx*4+0x2a0], ecx</tt>, where <tt>ecx</tt> is tainted. First of all, we must register a function with Pin to instrument each instruction. This is about as simple as you&#8217;d expect.</p>
<pre>INS_AddInstrumentFunction(instruction, 0);</pre>
<p>This function will then be passed each instruction and will have to decide the correct way to handle it.</p>
<pre>VOID
instruction(INS ins, VOID *v)
{
    UINT32 cat = INS_Category(ins);

    switch (cat) {
        case XED_CATEGORY_DATAXFER:
            switch (INS_Opcode(ins)) {
                case XED_ICLASS_XCHG:
                    processXCHG(ins);
                    break;
                case XED_ICLASS_MOV:
                    processMov(ins);
                    break;
etc etc
</pre>
<p>As you can see, we can work at two levels of granularity. The instruction categories groups together operators with similar emantics e.g there are seperate categories for string operations like <tt>rep movsb</tt>, arithmetic operations, interrupts etc. The operators in certain categories all have the same taint semantics and we need not go any deeper, but others contain instructions that must be handled on a case by case basis. DATAXFER for instance, contains <tt>xchg, mov</tt> and <tt>bswap</tt>, among others, all of which require special attention. </p>
<p>In our example we will end up in the <tt>processMov</tt> function. The purpose of this function is basically to figure out which of the 4 mov cases we are considering. Pin provides the <tt>INS_IsMemoryRead/Write</tt> functions, and others, that allow us to figure this out. Quite usefully, it also provides a mechanism to determine the exact address written/read and the number of bytes written/read at run time. This saves us having to calculate the effective address ourselves. For our example we would use these functions to determine that we are writing to memory, from a register, and then use the following call to insert a run time hook to our taint propagation function:</p>
<pre>
INS_InsertCall(ins, IPOINT_BEFORE, AFUNPTR(simMov_RM),
    IARG_MEMORYWRITE_EA,
    IARG_MEMORYWRITE_SIZE,
    IARG_UINT32, INS_RegR(ins, INS_MaxNumRRegs(ins)-1),
    IARG_END);
</pre>
<p>You can see here the use of <tt>IARG_MEMORYWRITE_EA</tt> to get the effective address of the write and the use of <tt>INS_RegR</tt> to get the last read register (<tt>ecx</tt> in this case). At runtime this will result in the <tt>simMov_RM</tt> (simulate mov register to memory) function being called with the specified arguments. It is this function that will finally do the taint propagation.</p>
<p>As you can see there are many cases that must be considered, even for a seemingly trivial operator like <tt>mov</tt>. Even the above explanation doesn&#8217;t deal with the case where a register used in calculating an effective address is itself tainted and requires more code to process correctly. A potential solution, suggested by <a href="http://silviocesare.wordpress.com">Silvio</a> might be to do a case split in some cases and then have a default case for instructions not explicitly handled. A solution like this, that over-approximates the tainted data, could lead to extensive false positives though and is not really suitable for the kind of work I&#8217;m doing. This leaves one other obvious option for a &#8216;default case&#8217;, and that is to untaint all destination operands in instructions I do not handle. This will lead to an under-approximation of the amount of tainted data, until I encode the semantics of all instructions, but will eliminate false positives and allow me to work on other parts of the algorithm once I have encoded the most common instructions. </p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Granular instrumentation with Pin]]></title>
<link>http://seanhn.wordpress.com/2009/05/11/granular-instrumentation-with-pin/</link>
<pubDate>Mon, 11 May 2009 15:05:26 +0000</pubDate>
<dc:creator>seanhn</dc:creator>
<guid>http://seanhn.wordpress.com/2009/05/11/granular-instrumentation-with-pin/</guid>
<description><![CDATA[Of the DBI frameworks I&#8217;ve used, Pin has best support for instrumentation beyond the basic blo]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Of the DBI frameworks I&#8217;ve used, <a href="http://www.pintool.org">Pin</a> has best support for instrumentation beyond the basic block/instruction level. The designers seem to have recognised that not all instrumentation needs to be done at the basic block or instruction level and thus you are provided with ways to instrument events at the routine level, as groups of basic blocks (traces), on thread creation/deletion and on image loading/unloading and more importantly you are provided with convenience functions to access important data when these events occur. I required this level of instrumentation earlier today when I ran into the following problem:</p>
<p>I have a Pin tool that performs data flow analysis at run time by marking data from certain function calls (e.g. <tt>read</tt> and <tt>recv</tt>) as tainted and then tracking this data through the program. We can do this relatively easily in Pin by registering a hook on all system calls as follows:</p>
<pre>
PIN_AddSyscallEntryFunction(syscallEntry, 0);
PIN_AddSyscallExitFunction(syscallExit, 0);
</pre>
<p>These functions can then access syscall arguments and return values. I noticed an issue earlier though where the number of tainted bytes was far higher than it should have been. The reason for this is that those syscall hooks also catch syscalls that take place while the executable is being loaded. I considered using a counter to denote a certain number of calls to skip over but then <a href="http://silviocesare.wordpress.com">Silvio</a> suggested a much cleaner alternative; to disable syscall hooking until the entry point has been executed. This turns out to be incredibly easy using Pin&#8217;s image level instrumentation. </p>
<p>We first register a function to be called when an image is loaded:</p>
<pre>
IMG_AddInstrumentFunction(image, 0);
</pre>
<p>Then using some functions provided by Pin we can extract the entry point of the main executable, and store it in a global variable <tt>entryPoint</tt>, as follows:</p>
<pre>
VOID
image(IMG img, VOID *v)
{
    if (IMG_IsMainExecutable(img))
        entryPoint = IMG_Entry(img);
}
</pre>
<p>And finally within our instruction level instrumentation function we can simply check the address of the instruction against this entry point value and set a global flag, <tt>passedEntryPoint</tt>, when the entry point is executed:</p>
<pre>
VOID
instruction(INS ins, VOID *v)
{
    if (!passedEntryPoint &#38;&#38; INS_Address(ins) == entryPoint)
        passedEntryPoint = true;
...
</pre>
<p>A check on this flag within the <tt>syscallExit function</tt>, before we mark any data as tainted then allows us to avoid spurious tainting.</p>
<pre>
VOID
syscallExit(THREADID tid, CONTEXT *ctx, SYSCALL_STANDARD std, VOID *v)
{
    int bufLen = 0;
    if (readData) {
        bufLen = PIN_GetSyscallReturn(ctx, std);
        if (passedEntryPoint &#38;&#38; bufLen &#62; 0) {
            tmgr.createTaintSourceM((unsigned)readBuf, bufLen, readCount++);
            totalBytesRead += bufLen;
        }
    }
}
</pre>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Crisis Poses New Risks to Directors]]></title>
<link>http://cgleaders.wordpress.com/2009/03/19/crisis-poses-new-risks/</link>
<pubDate>Thu, 19 Mar 2009 18:45:29 +0000</pubDate>
<dc:creator>santiagochaher</dc:creator>
<guid>http://cgleaders.wordpress.com/2009/03/19/crisis-poses-new-risks/</guid>
<description><![CDATA[by Joseph McCafferty for Directorship Boardroom Intelligence,  March 19, 2009. Directors and officer]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>by <span style="color:#000000;">Joseph McCafferty for<a title="Directorship" href="http://www.directorship.com/" target="_blank"> Directorship Boardroom Intelligence</a>,  March 19, 2009.</span></p>
<p style="text-align:justify;"><span style="color:#000000;">Directors and officers need protection for their personal assets. The need is especially great now, in the wake of the financial crisis, which has opened the door for government investigators and the plaintiffs’ bar to seek to hold corporate officials responsible for investors’ losses. In this climate, liability insurance tailored narrowly to the needs of directors and officers is an option every corporate board should consider. Protection for individual board members and officers, the original purpose of D&#38;O coverage, becomes critical in financial crises. A type of D&#38;O coverage called “Side A” or “Difference-in-Conditions” coverage fulfills this need. It can be purchased as part of a company’s D&#38;O insurance program, in addition to the now-standard D&#38;O coverage, which insures both directors and officers and the company for its own liability (or reimbursements of directors). A prudent choice is to hire counsel or a sophisticated broker to help navigate the different options that exist as regards D&#38;O coverage&#8230;</span></p>
<p style="text-align:justify;"><span style="color:#000000;">To continue readilg this article please <a title="Article" href="http://www.directorship.com/crisis-poses-new-risks-to-directors/" target="_blank">click here</a>.</span></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Efficient mod-perl with DBI]]></title>
<link>http://larig.wordpress.com/2009/03/09/efficient-mod-perl-with-dbi/</link>
<pubDate>Mon, 09 Mar 2009 13:06:18 +0000</pubDate>
<dc:creator>niczero</dc:creator>
<guid>http://larig.wordpress.com/2009/03/09/efficient-mod-perl-with-dbi/</guid>
<description><![CDATA[From http://perl.apache.org/docs/1.0/guide/performance.html#Work_With_Databases my @select_fields = ]]></description>
<content:encoded><![CDATA[From http://perl.apache.org/docs/1.0/guide/performance.html#Work_With_Databases my @select_fields = ]]></content:encoded>
</item>
<item>
<title><![CDATA[Edimax prezentuje nową kamerę sieciową z podwójnym trybem wideo]]></title>
<link>http://xteam7.wordpress.com/2009/02/04/edimax-prezentuje-nowa-kamere-sieciowa-z-podwojnym-trybem-wideo/</link>
<pubDate>Wed, 04 Feb 2009 19:45:52 +0000</pubDate>
<dc:creator>PrX</dc:creator>
<guid>http://xteam7.wordpress.com/2009/02/04/edimax-prezentuje-nowa-kamere-sieciowa-z-podwojnym-trybem-wideo/</guid>
<description><![CDATA[Wszystko w zasięgu wzroku stosując kamery sieciowe Edimax Edimax Technology (TSEC: 3047), wiodący pr]]></description>
<content:encoded><![CDATA[Wszystko w zasięgu wzroku stosując kamery sieciowe Edimax Edimax Technology (TSEC: 3047), wiodący pr]]></content:encoded>
</item>
<item>
<title><![CDATA[Installing DBD::Pg with Strawberry Perl]]></title>
<link>http://jawnsy.wordpress.com/2009/01/19/installing-dbdpg-with-strawberry-perl/</link>
<pubDate>Tue, 20 Jan 2009 04:01:11 +0000</pubDate>
<dc:creator>Jonathan Yu</dc:creator>
<guid>http://jawnsy.wordpress.com/2009/01/19/installing-dbdpg-with-strawberry-perl/</guid>
<description><![CDATA[Strawberry Perl, by default, does not include many Database Drivers. While it does a great job insta]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><a href="http://strawberryperl.com/">Strawberry Perl</a>, by default, does not include many Database Drivers. While it does a great job installing most modules, some CPAN authors simply overlooked Win32 as a target platform, so the build/installation scripts get confused. Among these is the DBD::Pg driver (<a href="http://postgresql.org">PostgreSQL</a> database driver), which is really just a thin layer providing access to the C library, libpq.</p>
<p>In terms of working with PostgreSQL databases under Windows, this effectively leaves people with a few options:</p>
<ol>
<li><strong>Try to install the Perl Package Manager (ppm) version of DBD-Pg.</strong> This didn&#8217;t work for me. I suppose that&#8217;s because the installer was expecting an <a href="http://activestate.com">ActivePerl</a>-like environment, and I was using Strawberry Perl&#8217;s <em>ppm</em> tool.</li>
<li><strong>Compile the DBD::Pg drivers from scratch using Microsoft Visual Studio.</strong> This wasn&#8217;t a possibility for me because I don&#8217;t want to purchase Visual Studio. My school provides licenses via the <a href="http://http://msdn.microsoft.com/en-us/academic/default.aspx">MSDN Academic Alliance</a>, but I wanted to use something more open-source if possible. Also, the Visual Studio suite is pretty large and takes a significant amount of time to install. It also clutters your machine with an SQL database, among other things.</li>
<li><strong>Install DBD::PgPP, a Pure Perl version of the PostgreSQL API.</strong> The problem with this is that there are lots of <a href="http://rt.cpan.org/Public/Dist/Display.html?Name=DBD-PgPP">outstanding bugs</a>, and so far it does not behave in exactly the same way as DBD::Pg.</li>
<li><strong>Install a specialized Perl package</strong> like <a href="http://code.google.com/p/camelbox/">Camelbox</a> (one of Camelbox&#8217;s design goals was to provide DBI and popular DBD support out of the box). I didn&#8217;t like the idea of this because I&#8217;m so far a pretty big fan of Strawberry Perl and its sister project, <a href="http://vanillaperl.com/">Vanilla Perl</a>. Together they seem like the most effective way to solve the Perl-on-Win32 dilemma.</li>
</ol>
<p>As it turns out, there&#8217;s another option. Taking the package stuff meant for Camelbox and dropping it into your Strawberry Perl installation. It works flawlessly, and I&#8217;m very grateful to Brian Manning for his work on the project.</p>
<p>Here&#8217;s the quick and dirty:</p>
<ol>
<li>Download the <strong>postgresql-bin</strong> package from the <a href="http://code.google.com/p/camelbox/downloads/list">Camelbox downloads area</a>.</li>
<li>Download the <strong>perl-DBD-Pg</strong> package from the same place.</li>
<li>Open the lzma files using your favourite archiver program. I love <a href="http://7-zip.org/">7-zip</a> and it worked beautifully for extracting those files.</li>
<li>Under the perl-DBD-Pg package, there should be a bunch of subdirectories; these correspond to those under <strong>C:\Strawberry\perl</strong> (or the <em>perl</em> subdirectory of wherever you installed Strawberry Perl). Extract all the files there.</li>
<li>In the postgresql-bin package, there is a bin directory that contains a single file, <strong>libpq.dll</strong>. This one is really important for connecting to the database as it does all of the real work; the Perl stuff just binds to the library functions. Extract this one into <strong>C:\Strawberry\perl\site\lib\auto\DBD\Pg</strong> (or wherever your Pg.dll is installed)</li>
</ol>
<p>Alternatively, it might be less stressful to just install Camelbox instead of Strawberry Perl; but this is entirely up to you.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Szybkie połączenie sieciowe z wykorzystaniem zewnętrznego, bezprzewodowego punktu dostępu Edimax]]></title>
<link>http://xteam7.wordpress.com/2009/01/15/szybkie-polaczenie-sieciowe-z-wykorzystaniem-zewnetrznego-bezprzewodowego-punktu-dostepu-edimax/</link>
<pubDate>Thu, 15 Jan 2009 12:43:46 +0000</pubDate>
<dc:creator>PrX</dc:creator>
<guid>http://xteam7.wordpress.com/2009/01/15/szybkie-polaczenie-sieciowe-z-wykorzystaniem-zewnetrznego-bezprzewodowego-punktu-dostepu-edimax/</guid>
<description><![CDATA[Edimax Technology (TSEC: 3047), producent sprzętu i dostawca rozwiązań sieciowych prezentuje nowość:]]></description>
<content:encoded><![CDATA[Edimax Technology (TSEC: 3047), producent sprzętu i dostawca rozwiązań sieciowych prezentuje nowość:]]></content:encoded>
</item>
<item>
<title><![CDATA[Perl+MySQL+DBD::Mysql on Mac OS X Leopard Server]]></title>
<link>http://skeldoy.wordpress.com/2008/12/28/perlmysqldbdmysql-on-mac-os-x-leopard-server/</link>
<pubDate>Sun, 28 Dec 2008 15:28:21 +0000</pubDate>
<dc:creator>skeldoy</dc:creator>
<guid>http://skeldoy.wordpress.com/2008/12/28/perlmysqldbdmysql-on-mac-os-x-leopard-server/</guid>
<description><![CDATA[The DBD::mysql isn&#8217;t compatible with the 64-bit version of MySQL that comes with the Leopard S]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>The DBD::mysql isn&#8217;t compatible with the 64-bit version of MySQL that comes with the Leopard Server.</p>
<p>When you <em>sudo cpan install DBD::mysql</em> you end up with a lot of compile-errors in dbdimp.c</p>
<p>You actually have to downgrade your MySQL-server-app to a 32-bit version in order to get it working.</p>
<p>You just have to download the 32-bit package from the mysql-site and rerun <em>sudo cpan install DBD::mysql</em></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Wichtige Webseiten zur Fort- und Weiterbildung III: Initiative Fortbildung]]></title>
<link>http://fobikom.wordpress.com/2008/12/08/wichtige-webseiten-zur-fort-und-weiterbildung-iii-initiative-fortbildung/</link>
<pubDate>Mon, 08 Dec 2008 13:27:34 +0000</pubDate>
<dc:creator>jplie</dc:creator>
<guid>http://fobikom.wordpress.com/2008/12/08/wichtige-webseiten-zur-fort-und-weiterbildung-iii-initiative-fortbildung/</guid>
<description><![CDATA[Die Initiative Fortbildung ist aus dem Ende der Beratung wissenschaftlicher Spezialbibliotheken des ]]></description>
<content:encoded><![CDATA[Die Initiative Fortbildung ist aus dem Ende der Beratung wissenschaftlicher Spezialbibliotheken des ]]></content:encoded>
</item>
<item>
<title><![CDATA[sudo yum install perl-DBD-mysql for { install_driver(mysql) failed: Can't locate DBD/mysql.pm }]]></title>
<link>http://saffrongeek.wordpress.com/2008/11/25/sudo-yum-install-perl-dbd-mysql-for-install_drivermysql-failed-cant-locate-dbdmysqlpm/</link>
<pubDate>Tue, 25 Nov 2008 10:40:18 +0000</pubDate>
<dc:creator>saffrongeek</dc:creator>
<guid>http://saffrongeek.wordpress.com/2008/11/25/sudo-yum-install-perl-dbd-mysql-for-install_drivermysql-failed-cant-locate-dbdmysqlpm/</guid>
<description><![CDATA[mysqlreport makes a friendly report of important MySQL status values. mysqlreport transforms the val]]></description>
<content:encoded><![CDATA[mysqlreport makes a friendly report of important MySQL status values. mysqlreport transforms the val]]></content:encoded>
</item>

</channel>
</rss>
