<?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>Programación Php, Java y C++</title>
	<atom:link href="http://cearenas.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://cearenas.com</link>
	<description></description>
	<lastBuildDate>Mon, 05 Jul 2010 01:27:10 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Creación de Modulos en Joomla 1.5</title>
		<link>http://cearenas.com/creacion-modulos-joomla-1-5/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=creacion-modulos-joomla-1-5</link>
		<comments>http://cearenas.com/creacion-modulos-joomla-1-5/#comments</comments>
		<pubDate>Mon, 05 Jul 2010 01:24:09 +0000</pubDate>
		<dc:creator>ceamha</dc:creator>
				<category><![CDATA[Joomla - Developer]]></category>
		<category><![CDATA[Php]]></category>

		<guid isPermaLink="false">http://cearenas.com/?p=321</guid>
		<description><![CDATA[Hace más de un año, la versión de Joomla cambió, muchas instalaciones que los webmaster usan son de la versión 1.0 y sus módulos también. Al principio era un poco complejo entender el porque estos módulos no funcionaban en la nueva versión y tocaba modificar el XML para que fuese compatible (Lo cual explicaré en [...]]]></description>
			<content:encoded><![CDATA[<p>Hace más de un año, la versión de Joomla cambió, muchas instalaciones que los webmaster usan son de la versión 1.0 y sus módulos también. Al principio era un poco complejo entender el porque estos módulos no funcionaban en la nueva versión y tocaba modificar el XML para que fuese compatible (Lo cual explicaré en mi próxima entrada), de momento explicaré como se crea un módulo para la versión 1.5 de Joomla! <img src='http://cearenas.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /><br />
<span id="more-321"></span></p>
<p>Para empezar, debemos tener clara la organización de los archivos, tendremos un directorio el cual debe tener el nombre del modulo y dentro de él lo siguiente:</p>
<ul>
<li><strong>tmpl:</strong> Directorio en el cual están los archivos para visualizar el módulo; aclaro que puede llamarse como quiera.
        </li>
<li><strong>tmpl/default.php:</strong> Recibe todos los datos correspondientes del modulo.
        </li>
<li><strong>tmpl/index.php:</strong> Digamos que es la plantilla básica que usa default para mostrarse.
        </li>
<li><strong>mod_nombre_del_modulo.php:</strong> Aquí incluímos las clases y las librerías que necesitaremos para obtener los datos del módulo
        </li>
<li><strong>mod_nombre_del_modulo.xml:</strong> Este, será el esqueleto en el cual estarán todas las propiedades, archivos y directorios del módulo.
        </li>
<li><strong>helper.php:</strong> La clase en la cual se realiza la programación pertinente del módulo
        </li>
</ul>
<h3>A Trabajar!</h3>
<p>Vamos a crear un módulo que muestre los usuarios que están cumpliendo años en el mes. Empecemos por crear el archivo mod_cumpleanos.php, en él irán las directivas que necesitamos para obtener los datos:</p>
<pre class="brush: php;">
&lt;?php
defined( '_JEXEC' ) or die( 'Restricted access' );

require_once( dirname(__FILE__).DS.'helper.php' );

$nombres = modCumpleanosHelper::getNombres( $params );
require( JModuleHelper::getLayoutPath( 'mod_cumpleanos','default') );
?&gt;
</pre>
<p>El archivo helper.php tendrá como función, realizar las consultas que necesitemos para el resultado que mostrará el módulo, en este caso haremos una consulta que nos traiga los usuarios que están cumpliendo años en el mes, éstos organizados por el día:</p>
<pre class="brush: php;">
&lt;?php
class modCumpleanosHelper
{
    function getNombres( $params )
    {
	jimport('joomla.utilities.date');
	$jnow = new JDate();
	$now = $jnow-&gt;toMySQL();
        $month = substr($now, 5, 2);
	$db = &amp;JFactory::getDBO();

        $consulta = &quot;select name, cumpleanos from #__users where MONTH(cumpleanos)='&quot;.$month.&quot;' order by DAY(cumpleanos) ASC&quot;;
	$db-&gt;setQuery($consulta);

        return $db-&gt;loadObjectList();
    }
}
?&gt;
</pre>
<p>Ahora, dentro de nuestra carpeta temporal, tenemos el archivo default.php el cual recibe todos los datos que necesita para el módulo, además de ser el que le da el estilo al módulo en el Front del Joomla!:</p>
<pre class="brush: php;">
&lt;ul&gt;
&lt;?php
echo &quot;&lt;table class='mod_cumpleanos'&gt;&quot;;
echo &quot;&lt;th&gt;Usuario&lt;/th&gt;&lt;th&gt;Dia&lt;/th&gt;&quot;;
foreach ($nombres as $usuario) {
	echo &quot;&lt;tr align='center'&gt;&lt;td&gt;&lt;li&gt;&quot;.$usuario-&gt;name.&quot;&lt;/td&gt;
                  &lt;td&gt;&quot;.substr($usuario-&gt;cumpleanos, 8, 2).&quot;&lt;/td&gt;&lt;/tr&gt;&lt;/li&gt;&quot;;
	}
echo &quot;&lt;/table&gt;&quot;;
?&gt;
&lt;/ul&gt;
</pre>
<h3>Falta poco!</h3>
<p>Para terminar solo nos queda crear el archivo mod_cumpleanos.xml, en el cual pondremos todo lo que necesita el módulo para funcionar completamente y poderlo instalar en el Gestor de Módulos del Joomla!:</p>
<pre class="brush: xml;">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;install type=&quot;module&quot; version=&quot;1.5.0&quot;&gt;
    &lt;name&gt;Cumpleanos del Mes&lt;/name&gt;
    &lt;author&gt;Cindy Esmeralda Arenas&lt;/author&gt;
    &lt;version&gt;1.5.0&lt;/version&gt;
    &lt;creationDate&gt;19.06.2010&lt;/creationDate&gt;
    &lt;description&gt;Modulo que carga los usuarios que estan cumpliendo anos&lt;/description&gt;
    &lt;authorEmail&gt;cearenas@cearenas.com&lt;/authorEmail&gt;
    &lt;files&gt;
	&lt;filename module=&quot;mod_cumpleanos&quot;&gt;mod_cumpleanos.php&lt;/filename&gt;
       	&lt;filename&gt;helper.php&lt;/filename&gt;
	&lt;filename&gt;mod_cumpleanos.xml&lt;/filename&gt;
       	&lt;filename&gt;tmpl/default.php&lt;/filename&gt;
       	&lt;filename&gt;tmpl/index.html&lt;/filename&gt;
    &lt;/files&gt;
&lt;/install&gt;
</pre>
<p>Al instalarlo, lo ubicamos en cualquier Posición de la plantilla y podemos observar un listado de los usuarios que tenemos registrados y que están de cumpleaños en el mes. <a href="http://cearenas.com/mod_cumpleanos.zip">Descargar</a></p>
<h3>Importante</h3>
<p>No olviden consultar las fuentes, los foros de ayuda de Joomla! son buenos y colaborar en ellos también <img src='http://cearenas.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://cearenas.com/creacion-modulos-joomla-1-5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cambio de Actividades en Android</title>
		<link>http://cearenas.com/cambio-de-actividades-en-android/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=cambio-de-actividades-en-android</link>
		<comments>http://cearenas.com/cambio-de-actividades-en-android/#comments</comments>
		<pubDate>Mon, 22 Mar 2010 16:37:25 +0000</pubDate>
		<dc:creator>ceamha</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://cearenas.com/?p=293</guid>
		<description><![CDATA[Durante el desarrollo de una aplicación en Android para la Universidad, junto con casidiablo duramos alrededor de unas 5 horas para darnos cuenta de lo que nos hacía falta ya que nuestra aplicación se rompía al intentar cambiar de actividad por no tener en cuenta el archivo AndroidManifiest.xml. 

Entonces, entrando en acción vamos a ver [...]]]></description>
			<content:encoded><![CDATA[<p>Durante el desarrollo de una aplicación en <a href="http://www.android.com/" title="Android">Android</a> para la Universidad, junto con <a href="http://casidiablo.net" title="casidiablo.net">casidiablo</a> duramos alrededor de unas 5 horas para darnos cuenta de lo que nos hacía falta ya que nuestra aplicación se rompía al intentar cambiar de actividad por no tener en cuenta el archivo <code>AndroidManifiest.xml</code>. <img src='http://cearenas.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /><br />
<span id="more-293"></span><br />
Entonces, entrando en acción vamos a ver un ejemplo básico de cómo cambiar de una actividad a otra. Para esto, creamos un nuevo Proyecto de Android (Yo trabajé eclipse, pero pues según su preferencia). Allí creamos el archivo <code>ActividadPrincipal.java</code> esta será nuestra actividad de entrada y en donde veremos el resultado de los eventos finales.</p>
<h3>Código Actividad Principal</h3>
<pre class="brush: java;">
package ejemplo.actividades;

public class ActividadPrincipal extends Activity implements OnClickListener {

	private Button btnPresioname;
	private TextView texto;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        btnPresioname = (Button) findViewById(R.id.push);
        btnPresioname.setOnClickListener(this);

        texto = (TextView) findViewById(R.id.texto);
        Bundle recibido = getIntent().getExtras();
        String lenguaje = &quot;&quot;;
		if(recibido !=null)
			lenguaje = recibido.getString(&quot;Lenguaje&quot;);
        texto.setText(lenguaje);

    }
	@Override
	public void onClick(View v) {
			Intent intent = new Intent(ActividadPrincipal.this, ActividadLista.class);
			startActivity(intent);
	}

}
</pre>
<p>Lo que me parece bueno aclarar, creamos un Bundle para guardar allí los valores que estamos enviando como &#8220;parámetros&#8221; desde la otra actividad, en este caso es el lenguaje que presionemos, siendo así entonces cambiaríamos la variable <code>texto</code>. Si nos fijamos en esta línea:</p>
<pre class="brush: java;">
Intent intent = new Intent(ActividadPrincipal.this, ActividadLista.class);
</pre>
<p>Estamos diciéndole la actividad en donde nos encontramos y a la que queremos ir. Para esta actividad tenemos el siguiente xml:</p>
<h3>Código Etiquetas</h3>
<pre class="brush: xml;">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;LinearLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    android:orientation=&quot;vertical&quot;
    android:layout_width=&quot;fill_parent&quot;
    android:layout_height=&quot;fill_parent&quot; &gt;
&lt;TextView
    android:layout_width=&quot;fill_parent&quot;
    android:layout_height=&quot;wrap_content&quot;
    android:text=&quot;@string/hello&quot; /&gt;
&lt;Button
	android:layout_width=&quot;wrap_content&quot;
        android:layout_height=&quot;wrap_content&quot;
	android:id=&quot;@+id/push&quot;
        android:text=&quot;@string/texto_boton&quot; /&gt;
&lt;TextView
	android:id=&quot;@+id/texto&quot; android:text=&quot;&quot;
	android:layout_width=&quot;wrap_content&quot;
        android:layout_height=&quot;wrap_content&quot; /&gt;
&lt;/LinearLayout&gt;
</pre>
<p>Importante que tengamos claro cuáles son las cadenas de texto que usaremos en la aplicación, éstas aparecen en el archivo <code>string.xml</code> dentro del directorio<code> values</code>. En este paso, si corremos nuestra aplicación nos debería mostrar lo siguiente: <a href="http://cearenas.com/wp-content/uploads/2010/03/ActividadPrincipal.png" rel="sexylightbox" title="Actividad Principal" style="text-decoration:none;">Primera Actividad</a><br />
Ahora creamos nuestra Actividad Secundaria, la cual nos va a mostrar una lista de lenguajes y cuando presionemos uno nos va a devolver a la Actividad Principal. La llamaremos <code>ActividadLista.java</code>:</p>
<h3>Código Actividad Lista</h3>
<pre class="brush: java;">
package ejemplo.actividades;

public class ActividadLista extends ListActivity {

	@Override
	public void onCreate(Bundle savedInstanceState) {
	  super.onCreate(savedInstanceState);

	  setListAdapter(new ArrayAdapter&lt;String&gt;(this, R.layout.list_item, LENGUAJES));

	  ListView lv = getListView();
	  lv.setTextFilterEnabled(true);

	  lv.setOnItemClickListener(new OnItemClickListener() {
	    public void onItemClick(AdapterView&lt;?&gt; parent, View view, int position, long id) {

	      Toast.makeText(getApplicationContext(), &quot;Lenguaje: &quot;+((TextView) view).getText(),
	          Toast.LENGTH_LONG).show();
	      Intent intent = new Intent(ActividadLista.this, ActividadPrincipal.class);
	      intent.putExtra(&quot;Lenguaje&quot;, &quot;Lenguaje presionado: &quot;+((TextView) view).getText());
	      startActivity(intent);
	   }
	  });
	}
	static final String[] LENGUAJES = new String[] {&quot;Java&quot;,&quot;Php&quot;,&quot;Python&quot;,&quot;Ruby&quot;};
}
</pre>
<p>En la siguiente línea de código estamos incluyendo la variable que vamos a pasar como parámetro a la Actividad Principal:<br />
Definimos el nombre de la variable y si asignación:</p>
<pre class="brush: java;">
intent.putExtra(&quot;Lenguaje&quot;, &quot;Lenguaje presionado: &quot;+((TextView) view).getText());
</pre>
<p>Para esta actividad tenemos el siguiente xml, recordemos que es importante tener la interface de cómo queremos que se vea:</p>
<h3>Código Etiquetas</h3>
<pre class="brush: xml;">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;TextView xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    android:layout_width=&quot;fill_parent&quot;
    android:layout_height=&quot;fill_parent&quot;
    android:padding=&quot;10dp&quot;
    android:textSize=&quot;16sp&quot; &gt;
&lt;/TextView&gt;
</pre>
<p>En este momento si lo corremos, cuando presionemos el botón se nos va a romper la aplicación, para que no nos pase eso, vamos al archivo <code>AndroidManifiest.xml</code> y dentro de la etiqueta <em>aplication</em> insertamos la actividad que queremos pasar:</p>
<pre class="brush: xml;">
&lt;activity android:name=&quot;ActividadLista&quot; android:label=&quot;Lista de Lenguajes&quot;&gt;&lt;/activity&gt;
</pre>
<p>Entonces ahora sí, podemos correr nuestra aplicación y nos mostrará lo siguiente cuando presionemos el botón:  <a href="http://cearenas.com/wp-content/uploads/2010/03/ListaDeLenguajes2.png" rel="sexylightbox" title="Segunda Actividad" style="text-decoration:none;">Lista Lenguajes</a>.</p>
<p>Cuando presionemos cualquier elemento de la lista, nos va a aparecer un Dialog con el nombre del elemento  <a href="http://cearenas.com/wp-content/uploads/2010/03/ListaDeLenguajes.png" rel="sexylightbox" title="Lenguaje Presionado" style="text-decoration:none;">ver</a> e inmediatamente después nos devuelve a la Actividad Principal y allí nos muestra cual fue el lenguaje que presionamos  <a href="http://cearenas.com/wp-content/uploads/2010/03/ActividadPrincipal2.png" rel="sexylightbox" title="Actividad Principal" style="text-decoration:none;">ver</a></p>
<p>Si quieren pueden descargar el ejemplo del siguiente enlace <a href="http://cearenas.com/descargas/Actividades.zip" title="Ejemplo">Descargar!</a> y como siempre, no olviden consultar la <a href="http://www.android.com" title="Android">fuente</a></p>
]]></content:encoded>
			<wfw:commentRss>http://cearenas.com/cambio-de-actividades-en-android/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Cómo saber la ip de un visitante</title>
		<link>http://cearenas.com/como-saber-la-ip-de-un-visitante/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=como-saber-la-ip-de-un-visitante</link>
		<comments>http://cearenas.com/como-saber-la-ip-de-un-visitante/#comments</comments>
		<pubDate>Thu, 04 Mar 2010 21:20:40 +0000</pubDate>
		<dc:creator>ceamha</dc:creator>
				<category><![CDATA[Php]]></category>

		<guid isPermaLink="false">http://cearenas.com/?p=275</guid>
		<description><![CDATA[Un día intenté hacer una encuesta para Joomla!, sí lo logré, pero me fallaba en el hecho que la Ip desde la que había votado hace unos segundos, podía volverlo a hacer sin ningún inconveniente y pues entonces la opción de darle un espacio después del voto para volverlo a hacer no me servía para [...]]]></description>
			<content:encoded><![CDATA[<p>Un día intenté hacer una encuesta para <a href="http://joomla.org" title="Joomla!">Joomla!</a>, sí lo logré, pero me fallaba en el hecho que la Ip desde la que había votado hace unos segundos, podía volverlo a hacer sin ningún inconveniente y pues entonces la opción de darle un espacio después del voto para volverlo a hacer no me servía para nada <img src='http://cearenas.com/wp-includes/images/smilies/icon_cry.gif' alt=':cry:' class='wp-smiley' /><br />
<span id="more-275"></span><br />
Hace un tiempo que encontré la forma de saber la Ip, pero pues por exceso de tiempo no había hecho nada; ahora es el momento, quizás no sea mucho, pero puede servir bastante para diferentes aplicaciones. <img src='http://cearenas.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>En este ejemplo vamos a usar un artículo que ya se había publicado hace un tiempo por estos lados, <a href="http://cearenas.com/envio-de-correo-con-php/" title="cearenas.com">Envío de correos con Php </a>, ya que de alguna manera debemos recibir la Ip que estamos esperando.</p>
<h3>El código</h3>
<p>Vamos a crear un archivo que lleve el nombre &#8220;funciones.php&#8221;, en éste vamos a tener dos funciones, una que decide cuál es la forma en que está expresada la Ip y otra que tiene el envío del correo:</p>
<pre class="brush: php;">
//Recibir IP
function recibirIP(){
	if ($_SERVER) {
		if ( $_SERVER[&quot;HTTP_X_FORWARDED_FOR&quot;] ) {
		   $ip = $_SERVER[&quot;HTTP_X_FORWARDED_FOR&quot;];
		} elseif ( $_SERVER[&quot;HTTP_CLIENT_IP&quot;] ) {
			$ip = $_SERVER[&quot;HTTP_CLIENT_IP&quot;];
		} else {
			$ip = $_SERVER[&quot;REMOTE_ADDR&quot;];
		}
	}
	else {
		if (getenv(&quot;HTTP_X_FORWARDED_FOR&quot;) ) {
			$ip = getenv(&quot;HTTP_X_FORWARDED_FOR&quot;);
		} elseif (getenv(&quot;HTTP_CLIENT_IP&quot;) ) {
			$ip = getenv(&quot;HTTP_CLIENT_IP&quot;);
		} else {
			$ip = getenv(&quot;REMOTE_ADDR&quot;);
		}
	}
	return $ip;
}
</pre>
<pre class="brush: php;">
//Enviar el correo
function correo($comentario){
    $para = &quot;cearenas@cearenas.com&quot;;
    $desde = &quot;micorreo@correo.com&quot;;
    $cabecera = &quot;From: &quot;. $desde.&quot; &lt;&quot;.$desde. &quot;&gt;\r\n&quot;;
    $asunto = &quot;Ip del visitante&quot;;
    mail ($para, $asunto, $comentario, $cabecera);
}
</pre>
<p>Ahora creamos otro archivo para ejecutar nuestros métodos, &#8220;local.php&#8221; éste va a hacer el llamado correspondiente a las funciones y por suspuesto incluímos funciones.php:</p>
<pre class="brush: php;">
    include(&quot;funciones.php&quot;);
    $comentario = &quot;Esta es la Ip: &quot;.recibirIP();
    correo($comentario);
</pre>
<h3>Lo nuevo&#8230;</h3>
<p><em>$_SERVER:</em> Usamos algunas de las variables de la matriz $_SERVER, ésta contiene información tal como cabeceras, rutas y ubicaciones de scripts creados por el servidor web donde se ejecute el archivo.<br />
<em>getenv:</em>Se encarga de obtener el valor de la variable de entorno que necesitamos.</p>
<h3>¿Hasta dónde llega?</h3>
<p>Este ejemplo, revela la ip de cualquier computador, pero eyy!, cuando éste es resguardado por un firewall bien configurado, podemos llegar sólamente hasta la puerta de enlace.<br />
Ya para terminar, sólo me queda decir que revisen su correo, allí debe estar la información de la Ip que acaban de obtener <img src='http://cearenas.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  además como siempre, si existe alguna duda no olvidar consultar la <a href="http://php.net" title="Documentación">Fuente</a></p>
]]></content:encoded>
			<wfw:commentRss>http://cearenas.com/como-saber-la-ip-de-un-visitante/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Interfaces gráficas con Ruby</title>
		<link>http://cearenas.com/interfaces-graficas-con-ruby/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=interfaces-graficas-con-ruby</link>
		<comments>http://cearenas.com/interfaces-graficas-con-ruby/#comments</comments>
		<pubDate>Wed, 03 Mar 2010 01:22:41 +0000</pubDate>
		<dc:creator>ceamha</dc:creator>
				<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://ceamha.casidiablo.net/?p=219</guid>
		<description><![CDATA[En esta ocasión les mostraré como hacer un &#8220;Concéntrese&#8221; con Ruby. Lo sé, la página es sobre Java, Php y C++ pero bueno, me parece que es buen momento para mostrar cosas sencillas y rápidas que se pueden hacer en otros lenguajes y que uno piensa &#8220;Naa, eso está muy complicado!&#8221;   

¿Cómo empezar?
Ruby [...]]]></description>
			<content:encoded><![CDATA[<p>En esta ocasión les mostraré como hacer un &#8220;Concéntrese&#8221; con <a href="http://www.ruby-lang.org/es/" title="Ruby">Ruby</a>. Lo sé, la página es sobre Java, Php y C++ pero bueno, me parece que es buen momento para mostrar cosas sencillas y rápidas que se pueden hacer en otros lenguajes y que uno piensa &#8220;Naa, eso está muy complicado!&#8221; <img src='http://cearenas.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  <br/><br />
<span id="more-219"></span></p>
<h3>¿Cómo empezar?</h3>
<p>Ruby es un lenguaje de programación que se puede manejar orientado a objetos, como Java, Php y C++, con la diferencia que todas sus variables declaradas son de tipo privado. Es sencillo de manejar y aprenderlo es fácil, ya que es de la línea de Phyton y para los programadores suele ser muy claro, relajado y hasta suave de trabajar <img src='http://cearenas.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> <br/></p>
<p>Pero bueno, arranquemos, primero que todo importantísimo aclarar que este artículo está trabajado sobre Linux, específicamente en Ubuntu, pero que para los amantes de Windows, la diferencia es relativamente muy poca. <br/> </p>
<p>Empecemos por instalar <a href="http://www.ruby-lang.org/es/" title="Ruby">Ruby</a> en nuestro equipo. Como vamos a trabajar interfaces gráficas es importante tener una librería gráfica a usar, como Swing en Java, en este caso usaremos GTK2.</p>
<h3>¿GTK2?</h3>
<p>GTK2 es un librería para crear interfaces gráficas, publicada bajo licencia pública <a href="http://es.wikipedia.org/wiki/GNU_Lesser_General_Public_License" title="LGPL">LGPL</a>. La idea es descargarla y copiarla en el directorio lib de nuestro Ruby. <a href="http://ruby-gnome2.sourceforge.jp/" title="GTK2">Descargar</a></p>
<h3>A programar!</h3>
<p>Un concéntrese clásico es una ventana con un cierto número de fichas las cuales tienen un a imagen al reverso de éstas. El concéntrese que vamos a hacer cumple con ciertas características de la Programación Orientada a Objetos, como la Herencia, Overriding de métodos y manejo de eventos; además vamos a manejar el concepto de Thread (hilo) para la ejecución del programa.</p>
<p>Nuestro concéntrese comienza definiendo la clase BotonConcentrese, la cual es una herencia de la clase Botón de GTK, además se hace uso de variables globales las cuales permitirán el buen funcionamiento del mismo.</p>
<h3>Clase Botón</h3>
<pre class="brush: ruby;">
$click = 0
$botones = 6
$bloqueados = 0
$registrados = Array.new

#Clase Boton
class BotonConcentrese &lt; Gtk::Button
	#Constructor
	def initialize(nombre, numero)
	    super(nombre)
	    @numero = numero
	    signal_connect(&quot;clicked&quot;){
		Thread.new{jugar(self)}
	    }
	  end

        #Accesor
	  def getNumero
	    return @numero
	  end
end
</pre>
<p>En la primera línea se puede observar la forma en que la clase está heredando de Botón, a continuación se definen sus métodos como el constructor, el accesor getNumero (el cual retorna el valor asignado al botón), y jugar.<br />
Es en este método donde se encuentra la interactividad del juego. El cual recibe como parámetro un botón, es decir el botón que haya sido oprimido por el usuario, es aquí donde cada botón del Concéntrese tiene relacionada una imagen, pero resulta que cada imagen tiene una copia que debe estar asignada en otro botón, es por eso que en esta parte se asigna teniendo en cuenta que solo exista una copia y no varias.</p>
<pre class="brush: ruby;">
	#Metodo Principal Jugar
	  def jugar(boton)
		  $click = $click+1
		  image = Gtk::Image.new(boton.getNumero + &quot;.jpg&quot;)
		  imagen = Gtk::Window.new
		  imagen.add(image)
		  imagen.show_all
		  #Puntaje - Actualizacion de Inferfaz
		  if $click==2
			$click = 0
			if $primeraOpcion.getNumero == boton.getNumero
				#desactivando los botones
				boton.set_sensitive(false)
				$primeraOpcion.set_sensitive(false)
				$primeraOpcion = BotonConcentrese.new(&quot;?&quot;, &quot;0&quot;)
				$bloqueados = $bloqueados + 2
			end

		  else
		     $primeraOpcion = boton
		  end 

		  sleep (2)
		  imagen.destroy
		  if $bloqueados == $botones
			puts &quot;Juego Completo!&quot;
			terminar = Gtk::Image.new(&quot;terminado2.jpg&quot;)
			terminado = Gtk::Window.new
			terminado.add(terminar)
			terminado.show_all
			sleep (3)
			terminado.destroy
			Gtk.main_quit
		  end
	  end
</pre>
<p>A continuación entonces la serie de código en el cual se controla y se crean los botones aleatoriamente:</p>
<pre class="brush: ruby;">
#Metodo para controlar la creacion de los botones
def estaRegistrado(num)
  cont = 0
  $registrados.each do |x|
    if x == num
      cont = cont + 1
    end
  end

  if cont &lt; 2
    return false
  end

  if cont == 2
     return true
  end
  return true
end

#Creacion de los metodos
for j in 0..($botones-1)
  numero = (rand(5)%3)+1
  while estaRegistrado(numero) &amp;&amp; $registrados.length != 0 do
     numero = (rand(5)%3)+1
  end
  $registrados &lt;&lt; numero
  box1.pack_start(BotonConcentrese.new(Gtk::Stock::DIALOG_QUESTION, numero.to_s), true, true, 0)
end
</pre>
<p>Esta mini-aplicación hace que cuando se escoja algún botón, éste se cierre por sí solo, gracias a los Hilos que se ejecutan. Subo el comprimido con los fuentes para los que quieran <a href="http://cearenas.com/ejemplo_ruby.zip" title="Ejemplo Ruby">descargarlo</a> y probarlo. Y como siempre, no olviden dejar sus comentarios y consultar la fuente: <a href="http://ruby-gnome2.sourceforge.jp/" title="Documentación">Fuente</a><!--more--></p>
]]></content:encoded>
			<wfw:commentRss>http://cearenas.com/interfaces-graficas-con-ruby/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Generar Pdf desde Php</title>
		<link>http://cearenas.com/generar-pdf-desde-php/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=generar-pdf-desde-php</link>
		<comments>http://cearenas.com/generar-pdf-desde-php/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 20:59:03 +0000</pubDate>
		<dc:creator>ceamha</dc:creator>
				<category><![CDATA[Php]]></category>

		<guid isPermaLink="false">http://cearenas.com/?p=238</guid>
		<description><![CDATA[Una vez más me he encontrado con formas más sencillas para hacer las cosas, con las que normalmente me tomaba mucho tiempo y me volvía un ocho para hacerlas funcionar. En esta ocasión veremos como generar un pdf desde un script php sin la necesidad de hacer demasiados llamados y con estilo y gráficos en [...]]]></description>
			<content:encoded><![CDATA[<p>Una vez más me he encontrado con formas más sencillas para hacer las cosas, con las que normalmente me tomaba mucho tiempo y me volvía un ocho para hacerlas funcionar. En esta ocasión veremos como generar un pdf desde un script php sin la necesidad de hacer demasiados llamados y con estilo y gráficos en ellos.<br />
<span id="more-238"></span><br />
Ya había intentado hacer esto varias veces, quizás para muchos sea una cosa sencilla, pero pues he aquí otra forma de hacerlo. He encontrado una clase que provee las funcionalidades básicas para crear un documento pdf sin necesidad de cualquier modulo adicional, como me había ocurrido antes. Esta clase ha sido creada por <a href="http://www.ros.co.nz/pdf/">Wayne Munro, R&amp;OS Ltda</a>, en este enlace pueden hacer la descarga de la clase, se llama <em>class.pdf</em></p>
<p>Además la idea de hacer este post, es para combinar un poco de Bases de Datos con esta funcionalidad, entonces aquí va el ejemplo básico de la generación del documento:</p>
<h3>Código</h3>
<pre class="brush: php;">
require_once('clases/class.ezpdf.php');
$pdf =&amp; new Cezpdf('a4');
$pdf-&gt;selectFont('fonts/Courier.afm');
$pdf-&gt;ezSetCmMargins(1,1,1.5,1.5);

$conexion = mysql_connect(&quot;localhost&quot;, &quot;root&quot;, &quot;&quot;);
mysql_select_db(&quot;personal&quot;, $conexion);
$queEmp = &quot;SELECT nombre, correo, telefono FROM persona ORDER BY nombre ASC&quot;;
$resEmp = mysql_query($queEmp, $conexion) or die(mysql_error());
$totEmp = mysql_num_rows($resEmp);

$ixx = 0;
while($datatmp = mysql_fetch_assoc($resEmp)) {
	$ixx = $ixx+1;
	$data[] = array_merge($datatmp, array('num'=&gt;$ixx));
}
$titles = array(
				'nombre'=&gt;'&lt;b&gt;Nombres&lt;/b&gt;',
				'correo'=&gt;'&lt;b&gt;Correo&lt;/b&gt;',
				'telefono'=&gt;'&lt;b&gt;Telefono&lt;/b&gt;'
			);
$options = array(
				'shadeCol'=&gt;array(0.9,0.9,0.9),
				'xOrientation'=&gt;'center',
				'width'=&gt;500,
				'justification'=&gt;'center'
			);
$txttit = &quot;&lt;b&gt;Programacion Php, Java y C++&lt;/b&gt;\n&quot;;
$txttit.= &quot;Listado de Personal \n&quot;;

$pdf-&gt;ezImage(&quot;../Imagenes/logo.jpg&quot;, 0, 100, 'none', 'center');
$pdf-&gt;ezText($txttit, 12, $options, 0);
$pdf-&gt;ezTable($data, $titles, '', $options);
$pdf-&gt;ezText(&quot;\n\n\n&quot;, 10);
$pdf-&gt;ezText(&quot;&lt;b&gt;Fecha:&lt;/b&gt; &quot;.date(&quot;d/m/Y&quot;), 10);
$pdf-&gt;ezText(&quot;&lt;b&gt;Hora:&lt;/b&gt; &quot;.date(&quot;H:i:s&quot;).&quot;\n\n&quot;, 10);
$pdf-&gt;ezStream();
</pre>
<p>Entonces, la idea es incluir las clases que construyen el pdf con todas sus características, hacer la consulta en la base de datos, crear unos arreglos donde se incluyan los títulos y los campos que nos dan como resultado de la consulta y a continuación ponerlos en el pdf, como textos del mismo. Quizás lo único que hay para destacar es la forma en la que se ubica la imagen en el documento:</p>
<pre class="brush: php;">
$pdf-&gt;ezImage(&quot;../Imagenes/logo.jpg&quot;, 0, 100, 'none', 'center');
</pre>
<p>Ya que se está haciendo el llamado de la imagen, se ubica en el centro del documento y con su tamaño al 100%. Y por supuesto la recomendación de siempre, ir a la <a href='http://www.ros.co.nz/pdf/" style='text-decoration:none;' title='Documentación'>Fuente</a> <img src='http://cearenas.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Ahh bueno desde aquí pueden descargar el ejemplo: <a href='http://cearenas.com/ejemplo_pdf.zip" style='text-decoration:none;' title='Ejemplo PDF'>Descargar</a></p>
]]></content:encoded>
			<wfw:commentRss>http://cearenas.com/generar-pdf-desde-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Leer XML desde PHP</title>
		<link>http://cearenas.com/leer-xml-desde-php/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=leer-xml-desde-php</link>
		<comments>http://cearenas.com/leer-xml-desde-php/#comments</comments>
		<pubDate>Wed, 29 Jul 2009 15:33:12 +0000</pubDate>
		<dc:creator>ceamha</dc:creator>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[archivos]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://ceamha.casidiablo.net/?p=197</guid>
		<description><![CDATA[En una ocasión para un trabajo tenía que sacar datos de un xml y usarlos para realizar unas operaciones, lo primero que se me pasó por la mente fue usar las funciones para manejo de archivos normales en Php, las populares como fread, fclose, fwrite; pero obviamente es un problema grandísimo porque hay que realizar [...]]]></description>
			<content:encoded><![CDATA[<p>En una ocasión para un trabajo tenía que sacar datos de un xml y usarlos para realizar unas operaciones, lo primero que se me pasó por la mente fue usar las funciones para manejo de archivos normales en Php, las populares como fread, fclose, fwrite; pero obviamente es un problema grandísimo porque hay que realizar un algoritmo que te determine etiqueta por etiqueta del xml. Pero ajám, nuestro señor, el amigo Google, me ayudó a encontrar una solución rápida, fácil y cómoda para leer datos de archivos xml.<br />
<span id="more-197"></span><br />
Bueno, pero ahora sí, entrando en materia, lo que hay que hacer es crear dos archivos, el xml a leer y el .php que hará el proceso <img src='http://cearenas.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<h3>Lo nuevo</h3>
<p>* <strong>simplexml_load_string:</strong> Toma una cadena xml y devuelve un objeto de la clase SimpleXMLElement, con las propiedades del xml leído. Ej.:</p>
<pre class="brush: php;">
// Lo que convierte es algo así:
SimpleXMLElement Object(
  [nombre] =&gt; David Fernando
  [telefono] =&gt; 311 123 4567
)
</pre>
<p>*<strong>count:</strong> Como vimos en temas anteriores, lo que hace count, es precisamente contar los elementos que contiene un arreglo; en este ejemplo, la etiqueta
<persona> se convierte en un arreglo y sus elementos son nombre y teléfono.</p>
<h3>El XML</h3>
<p>Llamaremos a nuestro archivo <em>directorio.xml</em>, este será el que usaremos para la lectura.</p>
<pre class="brush: xml;">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;directorio&gt;
	&lt;persona&gt;
		&lt;nombre&gt;David Fernando&lt;/nombre&gt;
		&lt;telefono&gt;311 123 4567&lt;/telefono&gt;
	&lt;/persona&gt;
	&lt;persona&gt;
		&lt;nombre&gt;Viviana Marcela&lt;/nombre&gt;
		&lt;telefono&gt;300 987 6543&lt;/telefono&gt;
	&lt;/persona&gt;
&lt;/directorio&gt;
</pre>
<h3>Nuestro Php en funci&oacute;n</h3>
<p>Y para que todo esto funcione creamos un archivo llamado <em>directorio.php</em>, así veremos en funcionamiento la lectura de nuestro XML.<br />
Si notamos de todas formas no estamos dejando de lado las funciones de manipulación de archivos generales. Cuando ya tenemos el string listo como xml, lo que hacemos entonces es crear un ciclo para que nos muestre una a una las personas que se encuentran en el directorio. (La tabla es para que se vea un poco ordenado).</p>
<pre class="brush: php;">
&lt;?php
$url = &quot;persona.xml&quot;;
$contenido_xml = &quot;&quot;;
if($d = fopen($url, &quot;r&quot;)){
  while ($aux= fgets($d, 1024)){
    $contenido_xml .= $aux;
  }
  fclose($d);
}else{
  echo &quot;No se pudo abrir el XML&quot;;
}
$xml = simplexml_load_string($contenido_xml);
?&gt;
&lt;table align=&quot;center&quot; border=&quot;1&quot;&gt;
    	&lt;tr&gt;&lt;td&gt;Nombre&lt;/td&gt;&lt;td&gt;Telefono&lt;/td&gt;
&lt;?php
	for($i=0; $i&lt;count($xml-&gt;persona); $i++)
		echo '&lt;tr&gt;&lt;td&gt;'.$xml-&gt;persona[$i]-&gt;nombre.'&lt;/td&gt;&lt;td&gt;'.$xml-&gt;persona[$i]-&gt;telefono.'&lt;/td&gt;&lt;/tr&gt;';
?&gt;
&lt;/table&gt;
</pre>
<h3>Terminamos!</h3>
<p>Lo subimos a nuestro servidor ya sea local o remoto y, bueno ahí está la solución a nuestros problemas con las lecturas de archivos xml. Y por supuesto la recomendación de siempre, ir a la <a href='http://php.net' style='text-decoration:none;' title='Documentación'>Fuente</a> <img src='http://cearenas.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://cearenas.com/leer-xml-desde-php/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Obtener datos en Sesión de Joomla!</title>
		<link>http://cearenas.com/obtener-datos-de-joomla/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=obtener-datos-de-joomla</link>
		<comments>http://cearenas.com/obtener-datos-de-joomla/#comments</comments>
		<pubDate>Wed, 29 Jul 2009 15:32:58 +0000</pubDate>
		<dc:creator>ceamha</dc:creator>
				<category><![CDATA[Joomla - Developer]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[joomla]]></category>
		<category><![CDATA[sesion de joomla]]></category>

		<guid isPermaLink="false">http://ceamha.casidiablo.net/?p=162</guid>
		<description><![CDATA[En esta ocasión veremos como adquirir los datos de la sesion de Joomla! 
Aclaro que este post es para Desarrolladores de Joomla!  (pero no es complicado para novatos), ya que deben tener conocimientos de los directorios y algunas funciones que se nombraran, aunque diré cuál es su funcionalidad. 

A saber&#8230;

_JEXEC: Constante para poder entrar [...]]]></description>
			<content:encoded><![CDATA[<p>En esta ocasión veremos como adquirir los datos de la sesion de <a href='http://www.joomla.org/' title='Joomla!' style='text-decoration:none;'>Joomla! </a></p>
<p>Aclaro que este post es para Desarrolladores de <a href='http://www.joomla.org/' title='Joomla!' style='text-decoration:none;'>Joomla! </a> (pero no es complicado para novatos), ya que deben tener conocimientos de los directorios y algunas funciones que se nombraran, aunque diré cuál es su funcionalidad. <img src='http://cearenas.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
<span id="more-162"></span></p>
<h3>A saber&#8230;</h3>
<ul>
<li><strong>_JEXEC</strong>: Constante para poder <em>entrar</em> a los archivos de Joomla!</li>
<li><strong>DIRECTORY_SEPARATOR</strong>: Constante nativa de PHP, osea que no es definida por Joomla!, ésta contiene el separador de directorios del sistema operativo de nuestro servidor. Así que si el sistema es Unix se usa &#8216;/&#8217; o por si lo contrario es es windows se usa &#8216;\&#8217;.</li>
<li><strong>__FILE__</strong>: También es una constante nativa de PHP, muestra la ruta del sistema del archivo que se está ejecutando. Hay que tener en cuenta que la ruta del sistema es diferente a la ruta http, ya que si es un sistema Unix sería algo así: &#8220;/var/www/&#8230;&#8221; o si es Windows entonces sería asi: &#8220;C:\Apache2\&#8230;&#8221;. </li>
<li><strong>JFactory/getApplication</strong>:Retorna una referencia del objeto aplicación (de tipo JApplication), pero esto solo si la referencia existe.</li>
</ul>
<p>Entonces lo que hacemos es generar un archivo que enlace los datos de <a href='http://www.joomla.org/' title='Joomla!' style='text-decoration:none;'>Joomla! </a> y de ahí para allá los archivos que necesitemos, en realidad aquí solo vamos a hacer uno, ya que es suficiente.<br />
Lo que vamos a mostrar es los datos del usuario que está en sesión en la plantaforma.</p>
<h3>C&oacute;digo para el Enlace..</h3>
<p>Creamos un archivo llamado <em>enlace.php</em>, importante que se encuentre en el directorio raiz de Joomla!. </p>
<pre class="brush: php;">
&lt;?php
define( '_JEXEC', 1 );
define('JPATH_BASE', dirname(__FILE__) );
define( 'DS', DIRECTORY_SEPARATOR );
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );

$mainframe =&amp; JFactory::getApplication('site');
?&gt;
</pre>
<h3>&#8230;Ahora el c&oacute;digo de la aplicaci&oacute;n..</h3>
<p>Después de tener nuestro archivo de enlace creamos el archivo de la aplicación <em>aplicacion.php</em>, es decir, el archivo en el que vamos a usar la información del usuario que está en sesión.</p>
<pre class="brush: php;">
&lt;?php
include('../enlace.php');
	if (JFactory::getUser()-&gt;usertype == NULL){
		echo &quot;No está conectado&quot;;
	}
	else{
		$user = JFactory::getUser();
		if($user-&gt;usertype=='Registered'){
                        echo &quot;Usuario Registrado. UserName: &quot;.$user-&gt;username;
		}
	}
?&gt;
</pre>
<p>Con eso ya terminamos, vieron muy fácil, además nos estamos asegurando que solamente se haga lo que necesitamos cuando el usuario esté registrado.</p>
<h3>Por &Uacute;ltimo:</h3>
<p>Como siempre, seguir la <a href='http://docs.joomla.org/' style='text-decoration:none;'>documentación</a> para no perdernos de cosas importantes, además por si necesitamos algo no hay nada mejor que ir a la fuente <img src='http://cearenas.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://cearenas.com/obtener-datos-de-joomla/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Conexion MySQL y C/C++</title>
		<link>http://cearenas.com/conexion-mysql-y-cc/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=conexion-mysql-y-cc</link>
		<comments>http://cearenas.com/conexion-mysql-y-cc/#comments</comments>
		<pubDate>Sun, 12 Jul 2009 16:54:46 +0000</pubDate>
		<dc:creator>ceamha</dc:creator>
				<category><![CDATA[C/C++]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://ceamha.casidiablo.net/?p=126</guid>
		<description><![CDATA[Continuando con nuestro tema de conexión a bases de datos, ahora le llegó el turno a nuestro amigo C/C++. Quizás este tema no es para usuarios novatos, pero para los que más o menos han manejado un poco de C/C++ (nociones básicas), podrán llevarlo con éxito.
El ejemplo que vamos a ver está hecho en C++ [...]]]></description>
			<content:encoded><![CDATA[<p>Continuando con nuestro tema de conexión a bases de datos, ahora le llegó el turno a nuestro amigo C/C++. Quizás este tema no es para usuarios novatos, pero para los que más o menos han manejado un poco de C/C++ (nociones básicas), podrán llevarlo con éxito.</p>
<p>El ejemplo que vamos a ver está hecho en C++ usando MySQL y en Windows, en el siguiente tema, lo veremos en Linux, para los que les gusta usar software libre <img src='http://cearenas.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
<span id="more-126"></span><br />
Cuando hice este ejercicio, lo desarrollé sobre <a href="http://www.bloodshed.net/devcpp.html" target="_blank" alt="DevC++"> DevC++ </a>, un editor de código bueno para trabajar en C. Arranquemos pues, entonces creamos un nuevo proyecto a ese proyecto, antes de empezar con el código es importante que en las propiedades del proyecto en los parámetros se enlace la librería de mysql, con eso nos aseguramos que se puedan hacer las conexiones correspondientes en el proyecto a la base de datos. <a href="http://cearenas.com/wp-content/uploads/2009/07/propiedadesDevCpp.png" rel="sexylightbox" title="Propiedades del Proyecto" style="text-decoration:none;">Ver Propiedades</a> </p>
<h3>¿Qué es nuevo y necesario?</h3>
<p>1. Incluir las librerías de mysql, mysql_error y windows, ya que sin ellas no será posible realizar el ejercicio.<br />
2. Creamos el objeto que nos va a llevar el enlace con MySQL.<br />
3. Nos conectamos a el servidor y, la base de datos. (El mismo paso del tema anterior).<br />
4. Por último, hacemos una consulta normal en MySQL e imprimimos los datos del resultado de nuestra consulta.</p>
<h3>Y.. El c&oacute;digo:</h3>
<pre class="brush: cpp;">
//Librerías
#include &lt;windows.h&gt;
#include &lt;mysql/mysql.h&gt;
#include &lt;mysql/mysqld_error.h&gt;

int main()
{
   MYSQL             *objDatos;
   MYSQL_RES       *res;

   // Intentar iniciar MySQL:
   if(!(objDatos = mysql_init(0))) {
      // Imposible crear el objeto objDatos
      cout &lt;&lt; &quot;ERROR: imposible crear el objeto objDatos.&quot; &lt;&lt; endl;
      getchar();
      return 1;
   }

   // Debe existir un usuario, clave y base de datos
   if(!mysql_real_connect(objDatos,NULL,&quot;root&quot;,&quot;&quot;,&quot;estudiante&quot;,MYSQL_PORT,NULL,0)){
      cout &lt;&lt; &quot;Imposible conectar con servidor mysql en el puerto &quot;
           &lt;&lt; MYSQL_PORT &lt;&lt; &quot; Error: &quot; &lt;&lt; mysql_error(objDatos) &lt;&lt; endl;
      mysql_close(objDatos);
      getchar();
      return 1;
   }

   // Conectar a base de datos.
   if(mysql_select_db(objDatos, &quot;estudiante&quot;)) {
      cout &lt;&lt; &quot;ERROR: &quot; &lt;&lt; mysql_error(objDatos) &lt;&lt; endl;
      mysql_close(objDatos);
      getchar();
      return 2;
   }

   // Hacer una consulta con el comando &quot;SELECT * FROM datos&quot;:
   if(mysql_query(objDatos, &quot;SELECT * FROM datos&quot;)) {
      cout &lt;&lt; &quot;ERROR: &quot; &lt;&lt;  mysql_error(objDatos) &lt;&lt; endl;
      mysql_close(objDatos);
      getchar();
      return 2;
   }

   // Almacenar el resultado de la consulta:
   if((res = mysql_store_result(objDatos))) {
      // Obtener el número de registros seleccionados:
      int i = (int) mysql_num_rows(res);
      // Obtener el número de columnas por fila:
      int j = (int) mysql_num_fields(res);
      for(int l = 0; l &lt; i; l++) {
      MYSQL_ROW   row = mysql_fetch_row(res);
         // Mostramos cada campo
         for(int k = 1 ; k &lt; j ; k++)
            cout &lt;&lt; row[k] &lt;&lt; ((k==j-1)? &quot; &quot;: &quot;, &quot; ) ;
         cout &lt;&lt; endl;
      }
  mysql_free_result(res);
   }
 mysql_close(objDatos);   

   getchar();
   return 0;
}
</pre>
<h3>::El SQL::</h3>
<pre class="brush: sql;">
--Estructura de tabla para crear la tabla 'datos'
CREATE TABLE IF NOT EXISTS 'datos' (
  'idEstudiante' int(3) NOT NULL AUTO_INCREMENT,
  'nombre' text NOT NULL,
  'identificacion' text NOT NULL,
  'edad' int(3) NOT NULL,
  PRIMARY KEY ('idEstudiante')
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

-- Datos para la tabla 'datos'
INSERT INTO 'datos' ('idEstudiante', 'nombre', 'identificacion', 'edad') VALUES
(1, 'Andrea', '1.010.101.010 de Bogota', 28),
(2, 'Catalina', '1.012.312.010 de Bogota', 30)
</pre>
<p>Después de compilar y ejecutar el proyecto, nos debe dar como resultado un listado de estudiantes con sus datos personales, bueno en este caso <img src='http://cearenas.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  <a href="http://cearenas.com/wp-content/uploads/2009/07/mysqlc_resultado.jpg" rel="sexylightbox" title="Resultado Conexión MySQL-Php" style="text-decoration:none;">Resultado</a></p>
<h3>Recuerda</h3>
<p>Que no debes dejar de revisar la documentación pertinente y con eso te informas más sobre lo que aparece en este post. Eso es muy importante! <img src='http://cearenas.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  <a href="http://www.cppreference.com" rel="sexylightbox" title="Cpp Reference" style="text-decoration:none;" target="_blank">Documentación</a> ahh y obviamente si algo no quedó claro, de una no dudes en decirlo, así mejoramos el tema.</p>
]]></content:encoded>
			<wfw:commentRss>http://cearenas.com/conexion-mysql-y-cc/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Conexión a mysql con Php</title>
		<link>http://cearenas.com/conexion-a-mysql-php/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=conexion-a-mysql-php</link>
		<comments>http://cearenas.com/conexion-a-mysql-php/#comments</comments>
		<pubDate>Mon, 06 Jul 2009 15:22:48 +0000</pubDate>
		<dc:creator>ceamha</dc:creator>
				<category><![CDATA[Php]]></category>

		<guid isPermaLink="false">http://ceamha.casidiablo.net/?p=92</guid>
		<description><![CDATA[Bueno pues, aquí empezamos, las conexiones básicas a mysql desde nuestros lenguajes de programación  
Arrancaremos con Php, todos alguna vez hemos hecho una conexion a mysql con php, porque es la más sencilla y porque existe bastante documentación de cómo realizarla en la web, bueno en esta ocasión una vez más mostraremos cómo llevarla [...]]]></description>
			<content:encoded><![CDATA[<p>Bueno pues, aquí empezamos, las conexiones básicas a mysql desde nuestros lenguajes de programación <img src='http://cearenas.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Arrancaremos con Php, todos alguna vez hemos hecho una conexion a mysql con php, porque es la más sencilla y porque existe bastante documentación de cómo realizarla en la web, bueno en esta ocasión una vez más mostraremos cómo llevarla a cabo, pero además veremos más adelante en paralelo la forma de hacerlo con Java y C/C++, a lo que quizás nosotros como estudiantes le tenemos un poco de sustillo.<br />
<span id="more-92"></span><br />
Para los que no saben como hacerlo, entraré en detalle en cada uno de las líneas, si queda algo inconcluso, de una me avisan, así lo aclaramos..</p>
<h3>Conexi&oacute;n con Php</h3>
<p>Creamos un archivo que se llame funciones.php, allí creamos la función Conectarse(), en ella damos los datos básicos de siempre, tales como el servidor, el usuario y la contraseña, si se conecta al servidor entonces intentamos conectarnos a la base de datos.</p>
<pre class="brush: php;">
&lt;?php
   function Conectarse()
   {
      if (!($link=mysql_connect(&quot;localhost&quot;,&quot;root&quot;,&quot;&quot;))){
         echo &quot;Error conectando al servidor.&quot;;
         exit();
      }
      if (!mysql_select_db(&quot;datos&quot;,$link)){
         echo &quot;Error seleccionando la base de datos.&quot;;
         exit();
      }
     return $link;
   }
?&gt;
</pre>
<p>De nuevo creamos un nuevo archivo index.php, en él vamos a hacer ejecutar la conexión y hacer una consulta básica, así obtendremos la info de la base de datos.</p>
<pre class="brush: php;">
&lt;?php
	include (&quot;funciones.php&quot;);
	$enlace = Conectarse();
?&gt;
&lt;body&gt;
	&lt;?php
		$consulta = mysql_db_query(&quot;datos&quot;,&quot;select * from estudiante&quot;);

		while($estudiante = mysql_fetch_array($consulta)){
	?&gt;
    	&lt;p&gt;Nombre: &lt;?php echo $estudiante['nombre'];?&gt;&lt;br /&gt;
       	      Identificacion: &lt;?php echo $estudiante['identificacion'];?&gt;&lt;br /&gt;
              Edad: &lt;?php echo $estudiante['edad']; ?&gt;
        &lt;/p&gt;
    &lt;?php
		}
	?&gt;
&lt;/body&gt;
&lt;?php
	mysql_close($enlace);
?&gt;
</pre>
<p>Este sería el resultado de lo que acabamos de hacer&#8230; sí, lo sé, está simple, pero el resto queda para su creatividad.<a href="http://cearenas.com/wp-content/uploads/2009/07/cxnmysqlphp.png" rel="sexylightbox" title="Resultado Conexión MySQL-Php" style="text-decoration:none;"> Resultado</a></p>
<h3>Pero espera, recuerda que&#8230;</h3>
<p>No hay que dejar de consultar las fuentes de información, pasa por <a href="http://php.net" style="text-decoration:none;" alt="php.net" >php.net</a> y mira más a fondo lo que vimos en este post.</p>
]]></content:encoded>
			<wfw:commentRss>http://cearenas.com/conexion-a-mysql-php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Envio de correo con Php</title>
		<link>http://cearenas.com/envio-de-correo-con-php/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=envio-de-correo-con-php</link>
		<comments>http://cearenas.com/envio-de-correo-con-php/#comments</comments>
		<pubDate>Fri, 03 Jul 2009 15:09:43 +0000</pubDate>
		<dc:creator>ceamha</dc:creator>
				<category><![CDATA[Php]]></category>

		<guid isPermaLink="false">http://ceamha.casidiablo.net/?p=50</guid>
		<description><![CDATA[Quizás para muchos sea fácil pensar que enviar un correo es complicado, eso pensaba yo cuando inicié y vaya sorpresa qué facilísimo es&#8230;
Lo único que hacemos es usar una de las funciones que nos provee el lenguaje la función mail() y sale!.

A continuación se expone un código chiquitico en php que hace el envío de [...]]]></description>
			<content:encoded><![CDATA[<p>Quizás para muchos sea fácil pensar que enviar un correo es complicado, eso pensaba yo cuando inicié y vaya sorpresa qué facilísimo es&#8230;<br />
Lo único que hacemos es usar una de las funciones que nos provee el lenguaje la función <strong><a href="http://www.php.net/manual/en/function.mail.php" alt="Mail php.net" style="text-decoration:none;">mail()</a></strong> y sale!.<br />
<span id="more-50"></span><br />
A continuación se expone un código chiquitico en php que hace el envío de correos por nosotros..</p>
<h3>¿Qué hay de nuevo?</h3>
<p>En realidad lo nuevo es como hacer el llamado de <strong><a href="http://www.php.net/manual/en/function.mail.php" alt="Mail php.net" style="text-decoration:none;">mail()</a></strong>, como se puede ver recibe como parámetros el correo al que queremos enviar, el asunto, el mensaje, y la cabecera del mensaje, ésta es la que nos muestra el formato de donde viene el correo (en este caso).</p>
<pre class="brush: php;">
&lt;?php
	$para = &quot;ceamha@gmail.com&quot;;
	$desde = &quot;micorreo@correo.com&quot;;
	$cabecera = &quot;From: &quot;. $desde . &quot; &lt;&quot; . $desde . &quot;&gt;\r\n&quot;;

	$asunto = &quot;Envio de correo con php&quot;;
	$comentario = &quot;Nuestro mensaje en el correo&quot;;
	mail ($para, $asunto, $comentario, $cabecera);
?&gt;
</pre>
<p>Cuando lo ejecutemos en nuestra bandeja de entrada vamos a ver un nuevo correo así:<br />
<img src="http://cearenas.com/wp-content/uploads/2009/07/imagen_correo11.jpg" alt="inbox" title="inbox" width="500" height="71" class="alignnone size-full wp-image-56" /></p>
<p>Y si vemos el contenido, podemos observar que tiene el comentario que queríamos que apareciera <img src='http://cearenas.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
<img src="http://cearenas.com/wp-content/uploads/2009/07/inbox2.jpg" alt="inbox2" title="inbox2" width="450" height="209" class="aligncenter size-full wp-image-58" /></p>
<p>Esta es la forma más sencilla de hacerlo, el ejemplo sencillito, si ya quieres hacer algo más complejo, solo es que pruebes!<br />
Ahh no olvides ver la documentación de la función en la <strong><a href="http://www.php.net/manual/en/function.mail.php" alt="Mail php.net" style="text-decoration:none;">página oficial</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://cearenas.com/envio-de-correo-con-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
