<?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>República I.T.</title>
	<atom:link href="http://www.republicait.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.republicait.com</link>
	<description>Progamación, Tecnología y mucho más...</description>
	<lastBuildDate>Thu, 20 May 2010 20:22:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Estándares y Evolución de la WEB</title>
		<link>http://www.republicait.com/2010/05/19/estandares-y-evolucion-de-la-web/</link>
		<comments>http://www.republicait.com/2010/05/19/estandares-y-evolucion-de-la-web/#comments</comments>
		<pubDate>Wed, 19 May 2010 21:28:33 +0000</pubDate>
		<dc:creator>dcamargo.n</dc:creator>
				<category><![CDATA[Artículos]]></category>
		<category><![CDATA[estándares]]></category>
		<category><![CDATA[WEB]]></category>

		<guid isPermaLink="false">http://www.republicait.com/?p=332</guid>
		<description><![CDATA[Actualmente en la gran red mundial (WWW), existe un sin fin de sitios WEB con distintos propósitos, como por ejemplo, los blogs, e-commerce, comunidades, intercambio de información, etc.

Si a esta gran variedad le sumamos los distintos navegadores que existen, tendremos que el mismo sitio se puede ver diferente para cada navegador, es aquí donde entra en acción los estándares WEB.]]></description>
			<content:encoded><![CDATA[<h3>Introducción</h3>
<p>Actualmente en la gran red mundial (WWW), existe un sin fin de sitios WEB con distintos propósitos, como por ejemplo, los blogs, e-commerce, comunidades, intercambio de información, etc.</p>
<p>Si a esta gran variedad le sumamos los distintos navegadores que existen, tendremos que el mismo sitio se puede ver diferente para cada navegador, es aquí donde entra en acción los estándares WEB.</p>
<p>Un estándar no es más que una serie de reglas que sirven como guías para el uso de algún modelo, objetos, etc. Estas reglas o estándares para la WEB están desarrollados y mantenidos por el World Wide Web Consortium (W3C)</p>
<h3>Historia</h3>
<p>Al principio, la finalidad de las páginas WEB era el de poder publicar textos planos el cual pudiera ser accedido desde cualquier lugar.</p>
<p>Luego con el pasar de los tiempos, se pudieron ir agregando elementos visuales (imágenes por ejemplo) y esto abrió camino a una serie de cambios para hacer ya no solo páginas WEB, sino construir sitios WEB.</p>
<p>Más adelante, con el surgimiento de nuevos lenguajes de programación, se podrían hacer pequeñas aplicaciones e integrarlas en la páginas WEB, como lo era por ejemplo, un libro de visitas, un formulario de contacto, con esto se inicia lo que es Sitios WEB interactivos con el usuario (o visitante).</p>
<p>En este punto, dado que el usuario podía interactuar con la página WEB, surge la necesidad de crear “experiencias de usuarios”, con lo cual surge el uso de multimedia para ser la página más llamativa al usuario.</p>
<p>Hoy en día los sitios WEB han evolucionado de tal manera que las experiencias para el usuario, son lo más amigables y sociables posibles, de hecho, no solo se toma en cuenta los distintos tipos de navegadores, sino también el dispositivo que esta accediendo al sitio WEB (celular, smartphone, notebooks, etc), se toma en cuenta también la información geográfica del usuario para que en lo posible, la información se pueda mostrar en su idioma y sea fácil de entender.</p>
<h3>Estándares en la WEB</h3>
<p>Muchas personas no toman estos estándares en cuenta a la hora de construir su sitio WEB. Esta es una mala práctica dado que puede que la página no cargue debidamente en los distintos navegadores y como consecuencia sea imposible de navegar, teniendo como resultado final una disminución de tráfico en el sitio.</p>
<p>A continuación una serie de tips que pueden servir a la hora de construir su sitio WEB:</p>
<h4>DOCTYPE</h4>
<p>El DOCTYPE nos permite definir el tipo de reglas o estándares que debe implementar nuestra página WEB, a su vez, sirve como guía para los navegadores de como este puede interpretar y/o validar nuestro código, así por ejemplo, si estamos sirviendo un archivo HTML que implementa reglas y estructuras XML, conocido formalmente como XHTML, tendremos la siguiente declaración:</p>
<p><code>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;</code></p>
<p>Por otro lado, si definimos que nuestro documento debe ser interpretado para dispositivos móviles, podemos utilizar:</p>
<p><code>&lt;!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd"&gt;</code></p>
<p>En este aspecto, muchos de los editores HTML nos permite definir el tipo de documento, como por ejemplo Dreamweaver a la hora de crear un nuevo documento</p>
<p><a href="http://www.republicait.com/wp-content/uploads/2010/05/dreamweaver-new-document.jpg"><img class="aligncenter size-full wp-image-388" title="Dreamweaver New Document" src="http://www.republicait.com/wp-content/uploads/2010/05/dreamweaver-new-document.jpg" alt="Dreamweaver New Document" width="550" height="350" /></a></p>
<h4>Hojas de Estilo (CSS)</h4>
<p>Las hojas de estilo nos ayudan a dar formato a nuestra página agrupando dentro de clases y/o identificadores, propiedades que afectan al elemento o una sección de la página. Se recomienda el uso de estas y evitar en la medida de lo posible el uso de tablas.</p>
<h4>Texto Alternativo</h4>
<p>Cuando mostramos imágenes en nuestro sitio WEB, es recomendable colocar un texto alterno que identifique nuestra imagen en caso tal esta no pueda cargar, como por ejemplo:</p>
<p><code>&lt;img src="logo.png" alt="Logo del Sitio" /&gt;</code></p>
<h4>Estructura del Documento</h4>
<p>Los documentos HTML siguen una estructura de un árbol de etiquetas, el mal formato y uso de estas puede tener como consecuencia resultados inesperados.</p>
<p>Mala práctica:</p>
<p><code>&lt;strong&gt;&lt;i&gt;Texto en negrita y cursiva&lt;/strong&gt;&lt;/i&gt;</code></p>
<p>Buena práctica:</p>
<p><code>&lt;strong&gt;&lt;i&gt;Texto en negrita y cursiva&lt;/i&gt;&lt;/strong&gt;</code></p>
<p>Puede utilizar herramientas en línea que te permiten validar la estructura del documento, como por ejemplo: <a href="http://validator.w3.org/" target="_blank">W3C Validator</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.republicait.com/2010/05/19/estandares-y-evolucion-de-la-web/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Asignación de Permisos con Operadores Binarios</title>
		<link>http://www.republicait.com/2010/01/09/asignacion-de-permisos-con-operadores-binarios/</link>
		<comments>http://www.republicait.com/2010/01/09/asignacion-de-permisos-con-operadores-binarios/#comments</comments>
		<pubDate>Sun, 10 Jan 2010 04:50:38 +0000</pubDate>
		<dc:creator>dcamargo.n</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[operadores binarios]]></category>
		<category><![CDATA[permisos]]></category>

		<guid isPermaLink="false">http://www.republicait.com/?p=312</guid>
		<description><![CDATA[En este post veremos como utilizar operaciones binarias para la asignación de permisos y la verificación de los mismos. Ejemplo escrito en PHP]]></description>
			<content:encoded><![CDATA[<h3>Introducción</h3>
<p>En este post veremos como utilizar operaciones binarias para la asignación de permisos y la verificación de los mismos.</p>
<h3>Un Poco de Historia</h3>
<h4>Números Binarios</h4>
<p>Las operaciones realizadas por una computadora son hechas a base de los bit 1 y 0, cada número decimal puede ser representado en su respectivo número binario.<br />
Asi por ejemplo vemos la siguiente tabla, la cual usaremos para trabajar con los permisos:</p>
<table>
<tbody>
<tr>
<td></td>
<td>2<sup>4</sup></td>
<td>2<sup>3</sup></td>
<td>2<sup>2</sup></td>
<td>2<sup>1</sup></td>
<td>2<sup>0</sup></td>
</tr>
<tr>
<td>2</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>1</td>
<td>0</td>
</tr>
<tr>
<td>4</td>
<td>0</td>
<td>0</td>
<td>1</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<td>8</td>
<td>0</td>
<td>1</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<td>16</td>
<td>1</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
</tbody>
</table>
<h4>Operadores Binarios</h4>
<ul>
<li><strong>Operador lógico AND (&amp;):</strong>El operador lógico AND compara si dos bits estan encendidos, osea si su valor es 1, si ambos bits estan encendidos el resultado sera 1, en caso contrario, el resultado sera 0.</li>
<li><strong>Operador lógico OR (|):</strong>El operador lógico OR compara si alguno de los bits se encuentran encedidos, si algunos de los bits esta encendido retorna 1, a diferencia del AND, el OR solo retorna 0 cuando ambos bits se encuentran apagados.</li>
<li><strong>Operador lógico NOT (~):</strong>El operador lógico NOT convierte el valor del bit actual a su valor opuesto, osea de 1 lo coloca en 0 y viceversa.</li>
</ul>
<h4>Tabla de la Verdad</h4>
<p>Sean A y B dos bits con el valor de 1 y 0 respectivamente, las tablas de verdad para los operadores lógicos serian las siguientes:<br />
<em>A=1, B=0</em></p>
<table>
<tbody>
<tr>
<td>
<table>
<tbody>
<tr>
<td>AND (&amp;)</td>
<td>A</td>
<td>B</td>
</tr>
<tr>
<td>A</td>
<td>1</td>
<td>0</td>
</tr>
<tr>
<td>B</td>
<td>0</td>
<td>0</td>
</tr>
</tbody>
</table>
</td>
<td>
<table>
<tbody>
<tr>
<td>OR (|)</td>
<td>A</td>
<td>B</td>
</tr>
<tr>
<td>A</td>
<td>1</td>
<td>1</td>
</tr>
<tr>
<td>B</td>
<td>1</td>
<td>0</td>
</tr>
</tbody>
</table>
</td>
<td>
<table>
<tbody>
<tr>
<td></td>
<td></td>
<td>NOT (~)</td>
</tr>
<tr>
<td>A</td>
<td>1</td>
<td>0</td>
</tr>
<tr>
<td>B</td>
<td>0</td>
<td>1</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<h3>Los valores TRUE y FALSE en PHP</h3>
<p>En PHP la evulacion de que alguna condicion sea cierta o falsa es un poco complicada, técnicamente hablando, en PHP cualquiera expresion es cierta (TRUE) si el resultado final es <strong>DISTINTO</strong> de los siguientes valores:</p>
<ul>
<li>false</li>
<li>0 (cero entero)</li>
<li>0.0 (cero flotante)</li>
<li>La cadena &#8220;0&#8243;</li>
<li>Una cadena vacía</li>
<li>Un arreglo con cero elementos</li>
<li>NULL</li>
</ul>
<p>Para una mayor referencia, visita la documentación de PHP en linea</p>
<ul>
<li><a href="http://www.php.net/manual/en/language.types.boolean.php" target="_blank">PHP Booleans</a></li>
<li><a href="http://www.php.net/manual/en/types.comparisons.php" target="_blank">PHP type comparisions</a></li>
</ul>
<h3>Permisos y Operadores Binarios</h3>
<p>En base a los puntos previos de los operadores binarios y como PHP evalua los valores TRUE y FALSE, vamos a demostrar como se pueden asignar permisos de escritura (WRITE), edición (EDIT) y de eliminar (DELETE).</p>
<h4>Script PHP</h4>
<pre class="brush:php">&lt;?php
/**
* Asignacion de permisos utilizando operadores binarios
* WRITE		= 2 (0010 en binario)
* EDIT		= 4 (0100 en binario)
* DELETE	= 8 (1000 en binario)
*/
define('WRITE',	2);
define('EDIT',	4);
define('DELETE',8);

//Asignamos los permisos de WRITE y EDIT a la variable $perm
$perm = WRITE | EDIT; //el valor asignado es 0110 (operador or)

//Verificamos cada permiso
if($perm &amp; WRITE){ // 0110 &amp; 0010 = 0010
echo 'WRITE asignado&lt;br /&gt;';
}
if($perm &amp; EDIT){ // 0110 &amp; 0100 = 0100
echo 'EDIT asignado&lt;br /&gt;';
}
if($perm &amp; DELETE){ //0110 &amp; 1000 = 0000
echo 'DELETE asignado&lt;br /&gt;';
}

//Ahora verificamos la negacion de los permisos
//  $perm = 0110, ~$perm = 1001

if(~$perm &amp; WRITE){ // 1001 &amp; 0010 = 0000
echo 'WRITE no esta asignado&lt;br /&gt;';
}
if(~$perm &amp; EDIT){ // 1001 &amp; 0100 = 0000
echo 'EDIT no esta asignado&lt;br /&gt;';
}
if(~$perm &amp; DELETE){ // 1001 &amp; 1000 = 1000
echo 'DELETE no esta asignado&lt;br /&gt;';
}
?&gt;</pre>
<p>Resultado al ejecutar el script:<br />
<code><br />
WRITE asignado<br />
EDIT asignado<br />
DELETE no esta asignado<br />
</code></p>
<blockquote><p>Nota: En PHP se hace facil este uso dado que la cadena &#8220;0000&#8243; al final es evaluada a false, mientras que en las otras cadenas seran evaluadas a true dado que tiene al menos un valor que la hace distinto de cero.</p></blockquote>
Términos de búsqueda<ul><li><a href="http://www.republicait.com/2010/01/09/asignacion-de-permisos-con-operadores-binarios/" title="asignacion de permisos">asignacion de permisos</a></li><li><a href="http://www.republicait.com/2010/01/09/asignacion-de-permisos-con-operadores-binarios/" title="Asignación con AND binario &=">Asignación con AND binario &=</a></li><li><a href="http://www.republicait.com/2010/01/09/asignacion-de-permisos-con-operadores-binarios/" title="operadores logico y sus respetiva tablas">operadores logico y sus respetiva tablas</a></li><li><a href="http://www.republicait.com/2010/01/09/asignacion-de-permisos-con-operadores-binarios/" title="operadores logicos BINARio">operadores logicos BINARio</a></li><li><a href="http://www.republicait.com/2010/01/09/asignacion-de-permisos-con-operadores-binarios/" title="pantalla asignaion permisos">pantalla asignaion permisos</a></li><li><a href="http://www.republicait.com/2010/01/09/asignacion-de-permisos-con-operadores-binarios/" title="Pantalla para asignación de permisos">Pantalla para asignación de permisos</a></li><li><a href="http://www.republicait.com/2010/01/09/asignacion-de-permisos-con-operadores-binarios/" title="permisos bcon binarios en php">permisos bcon binarios en php</a></li><li><a href="http://www.republicait.com/2010/01/09/asignacion-de-permisos-con-operadores-binarios/" title="permisos en binario">permisos en binario</a></li><li><a href="http://www.republicait.com/2010/01/09/asignacion-de-permisos-con-operadores-binarios/" title="permisos en binario ejemplo">permisos en binario ejemplo</a></li><li><a href="http://www.republicait.com/2010/01/09/asignacion-de-permisos-con-operadores-binarios/" title="permisos PHP binario">permisos PHP binario</a></li></ul><!-- SEO SearchTerms Tagging 2 plugin took 3.656 ms -->]]></content:encoded>
			<wfw:commentRss>http://www.republicait.com/2010/01/09/asignacion-de-permisos-con-operadores-binarios/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Detectar Acceso Móvil con ASP</title>
		<link>http://www.republicait.com/2009/11/10/detectar-acceso-movil-asp/</link>
		<comments>http://www.republicait.com/2009/11/10/detectar-acceso-movil-asp/#comments</comments>
		<pubDate>Tue, 10 Nov 2009 21:44:36 +0000</pubDate>
		<dc:creator>dcamargo.n</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[asp]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[móvil]]></category>

		<guid isPermaLink="false">http://www.republicait.com/?p=296</guid>
		<description><![CDATA[Este es un pequeño artículo de como detectar si se esta accediendo desde un dispositivo movil con un script ASP. La idea general es poder utilizar el script desde cualquier servidor que soporte la ejecucion de paginas ASP y/o ASP .Net.]]></description>
			<content:encoded><![CDATA[<h3>Introducción</h3>
<p>Este es un pequeño artículo de como detectar si se esta accediendo desde un dispositivo movil con un script ASP. La idea general es poder utilizar el script desde cualquier servidor que soporte la ejecucion de paginas ASP y/o ASP .Net.</p>
<blockquote><p><strong>Nota:</strong> Este script esta basado en: <a href="http://www.codeproject.com/KB/aspnet/mobiledetect.aspx" target="_blank">http://www.codeproject.com/KB/aspnet/mobiledetect.aspx</a></p>
<p>A diferencia del script original, este script remueve la verificación por la propiedad IsMobileDevice lo que impide que se ejecute en versiones anteriores del .Net Framework</p></blockquote>
<h3>Script Completo:</h3>
<pre class="brush:csharp">&lt;%@ Page Language="C#" AutoEventWireup="true" ContentType="text/plain" %&gt;
&lt;script type="text/C#" runat="server"&gt;
void Page_Load(object sender, EventArgs e)
{
    // Variable para almacenar el resultado de la deteccion
    bool isMobile = false;

    //Obtenemos el contexto actual
    HttpContext context = HttpContext.Current;

    //Variable que almacena la firma del navegador
    string userAgent = context.Request.ServerVariables["HTTP_USER_AGENT"];

    //Verificamos primero por la variable HTTP_X_WAP_PROFILE
    if (context.Request.ServerVariables["HTTP_X_WAP_PROFILE"] != null)
    {
        isMobile = true;
    }

    //Procedemos a verificar la firma del navegador
    else if (userAgent != null)
    {
        //Lista posible de dispositivos
        string[] mobiles =
        {
            "midp", "j2me", "avant", "docomo",
            "novarra", "palmos", "palmsource",
            "240x320", "opwv", "chtml",
            "pda", "windows ce", "mmp/",
            "blackberry", "mib/", "symbian",
            "wireless", "nokia", "hand", "mobi",
            "phone", "cdm", "up.b", "audio",
            "SIE-", "SEC-", "samsung", "HTC",
            "mot-", "mitsu", "sagem", "sony"
            , "alcatel", "lg", "eric", "vx",
            "NEC", "philips", "mmm", "xx",
            "panasonic", "sharp", "wap", "sch",
            "rover", "pocket", "benq", "java",
            "pt", "pg", "vox", "amoi",
            "bird", "compal", "kg", "voda",
            "sany", "kdd", "dbt", "sendo",
            "sgh", "gradi", "jb", "dddi",
            "moto", "iphone"
        };

        //Recorremos el arreglo de los dispositivos
        // y verificamos vs la firma del navegador
        foreach (string mobile in mobiles)
        {
            if (userAgent.ToLower().IndexOf(mobile.ToLower()) != -1)
            {
                isMobile = true;
                break;
            }
        }
    }
    //Imprimimos el resultado
    Response.Write("UserAgent: " + userAgent.ToLower() + "\n");
    Response.Write("IsMobile: " + isMobile + "\n");
    Response.Write(".Net Framework: "+Environment.Version.ToString());
}
&lt;/script&gt;</pre>
<p><strong>Muestra de la salida obtenida</strong></p>
<p><code>UserAgent: mozilla/5.0 (windows; u; windows nt 6.1; es-es; rv:1.9.1.5) gecko/20091102 firefox/3.5.5 (.net clr 3.5.30729)<br />
IsMobile: False<br />
.Net Framework: 2.0.50727.4927</code></p>
<blockquote><p><strong>Nota:</strong> En este ejemplo utilize el metodo indexOf para comprobar el userAgent vs el dispositivo, como sugerencia, se puede utilizar expresiones regulares para hacer el script mas completo.</p></blockquote>
Términos de búsqueda<ul><li><a href="http://www.republicait.com/2009/11/10/detectar-acceso-movil-asp/" title="detectar navegador movil asp">detectar navegador movil asp</a></li><li><a href="http://www.republicait.com/2009/11/10/detectar-acceso-movil-asp/" title="detectar dispositivo movil asp">detectar dispositivo movil asp</a></li><li><a href="http://www.republicait.com/2009/11/10/detectar-acceso-movil-asp/" title="detectar si un navegador es movil o no">detectar si un navegador es movil o no</a></li><li><a href="http://www.republicait.com/2009/11/10/detectar-acceso-movil-asp/" title="detectar dispositivo movil c#">detectar dispositivo movil c#</a></li><li><a href="http://www.republicait.com/2009/11/10/detectar-acceso-movil-asp/" title="detectar movil asp">detectar movil asp</a></li><li><a href="http://www.republicait.com/2009/11/10/detectar-acceso-movil-asp/" title="asp detectar navegador movil">asp detectar navegador movil</a></li><li><a href="http://www.republicait.com/2009/11/10/detectar-acceso-movil-asp/" title="detectar acceso desde movil">detectar acceso desde movil</a></li><li><a href="http://www.republicait.com/2009/11/10/detectar-acceso-movil-asp/" title="aspx detectar navegador movil">aspx detectar navegador movil</a></li><li><a href="http://www.republicait.com/2009/11/10/detectar-acceso-movil-asp/" title="detectar movil symfony">detectar movil symfony</a></li><li><a href="http://www.republicait.com/2009/11/10/detectar-acceso-movil-asp/" title="asp detectar dispositivos moviles">asp detectar dispositivos moviles</a></li></ul><!-- SEO SearchTerms Tagging 2 plugin took 5.549 ms -->]]></content:encoded>
			<wfw:commentRss>http://www.republicait.com/2009/11/10/detectar-acceso-movil-asp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Captura de pantalla de una WEB utilizando WordPress</title>
		<link>http://www.republicait.com/2009/09/22/captura-pantalla-web-wordpress/</link>
		<comments>http://www.republicait.com/2009/09/22/captura-pantalla-web-wordpress/#comments</comments>
		<pubDate>Tue, 22 Sep 2009 14:45:45 +0000</pubDate>
		<dc:creator>dcamargo.n</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[screenshot]]></category>
		<category><![CDATA[website]]></category>

		<guid isPermaLink="false">http://www.republicait.com/?p=286</guid>
		<description><![CDATA[En este artículo veremos como tomar el screenshot de página WEB utilizando el servicio de toma de pantallas de Wordpress.]]></description>
			<content:encoded><![CDATA[<p>En este artículo veremos como tomar el screenshot de página WEB utilizando el servicio de toma de pantallas de WordPress.</p>
<p>La URL donde se encuentra este servicio es:</p>
<pre>http://s.wordpress.com/mshots/v1/</pre>
<p>El formato para indicar cual es la página WEB de donde capturar la pantalla es:</p>
<pre>http://s.wordpress.com/mshots/v1/{DIRECCION_URL}?w={WIDTH}</pre>
<p>Donde <code>{DIRECCION_URL}</code> es la dirección URL codificada y <code>{WIDTH}</code> representa el tamaño de la imagen que deseamos generar, asi por ejemplo, si deseamos tomar un screenshot de Google cuyo tamaño sea de 500px el formato seria:</p>
<pre>http://s.wordpress.com/mshots/v1/http%3A%2F%2Fgoogle.com%2F?w=500</pre>
<p>Este servicio lo podemos integrar desde nuestro propio sitio WEB mediante un script PHP el cual reciba como parametros la URL y el tamaño de la imagen.</p>
<p>Ejemplo:</p>
<pre class="brush:php">&lt;?php
//Direccion URL del servicio de wordpress
define('SERVICE_URL','http://s.wordpress.com/mshots/v1/');

/**
* Funcion para tomar screenshots utilizando el servicio de wordpress
* @param string $url
* @param int $width
* @return string
*/
function takeScreenshot($url,$width)
{
    $url = urlencode($url);
    $request = SERVICE_URL."{$url}?w={$width}";
    return $request;
}
?&gt;
&lt;html&gt;
&lt;head&gt;
    &lt;title&gt;Captura de Pantalla de una WEB&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
    &lt;img src="&lt;?php echo takeScreenshot('http://www.google.com',500); ?&gt;" /&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
Términos de búsqueda<ul><li><a href="http://www.republicait.com/2009/09/22/captura-pantalla-web-wordpress/" title="que son webs mShots">que son webs mShots</a></li><li><a href="http://www.republicait.com/2009/09/22/captura-pantalla-web-wordpress/" title="capturar pantalla con jquery">capturar pantalla con jquery</a></li><li><a href="http://www.republicait.com/2009/09/22/captura-pantalla-web-wordpress/" title="asp capturar pantallazo pagina web">asp capturar pantallazo pagina web</a></li><li><a href="http://www.republicait.com/2009/09/22/captura-pantalla-web-wordpress/" title="que es un webs mShots">que es un webs mShots</a></li><li><a href="http://www.republicait.com/2009/09/22/captura-pantalla-web-wordpress/" title="que es mShots">que es mShots</a></li><li><a href="http://www.republicait.com/2009/09/22/captura-pantalla-web-wordpress/" title="plugin wordpress captura web">plugin wordpress captura web</a></li><li><a href="http://www.republicait.com/2009/09/22/captura-pantalla-web-wordpress/" title="mshots">mshots</a></li><li><a href="http://www.republicait.com/2009/09/22/captura-pantalla-web-wordpress/" title="jquery captura pantalla de una web">jquery captura pantalla de una web</a></li><li><a href="http://www.republicait.com/2009/09/22/captura-pantalla-web-wordpress/" title="formato de la pantalla en la web">formato de la pantalla en la web</a></li><li><a href="http://www.republicait.com/2009/09/22/captura-pantalla-web-wordpress/" title="en html capturar la pantalla">en html capturar la pantalla</a></li></ul><!-- SEO SearchTerms Tagging 2 plugin took 3.508 ms -->]]></content:encoded>
			<wfw:commentRss>http://www.republicait.com/2009/09/22/captura-pantalla-web-wordpress/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>¿Cómo tomar el screenshot de una WEB?</title>
		<link>http://www.republicait.com/2009/09/20/tomar-screenshot-web/</link>
		<comments>http://www.republicait.com/2009/09/20/tomar-screenshot-web/#comments</comments>
		<pubDate>Sun, 20 Sep 2009 15:30:44 +0000</pubDate>
		<dc:creator>dcamargo.n</dc:creator>
				<category><![CDATA[Configuración]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[ImageMagick]]></category>
		<category><![CDATA[screenshot]]></category>
		<category><![CDATA[website]]></category>
		<category><![CDATA[X11]]></category>
		<category><![CDATA[Xvfb]]></category>

		<guid isPermaLink="false">http://www.republicait.com/?p=264</guid>
		<description><![CDATA[En este post veremos como tomar un screenshot de una página web utilizando la linea de comandos de Linux.]]></description>
			<content:encoded><![CDATA[<h3>Introducción</h3>
<p>En este post veremos como tomar un screenshot de una página web utilizando la linea de comandos de Linux.<br />
Los requerimientos necesarios son:</p>
<ul>
<li>Sistema operativo Linux</li>
<li>Framebuffer Virtual del Servidor X (Xvfb)</li>
<li>Navegador Firefox</li>
<li>ImageMagick</li>
</ul>
<h3>Xvfb</h3>
<p>En el Sistema Windows X, Xvfb es un servidor X11 que realiza todas las operaciones gráficas en memoria sin necesidad de utilizar una pantalla. Con esta herramienta vamos a crear una especie de pantalla virtual para iniciar Firefox en ella y luego tomar el screenshot.</p>
<p>En la siguiente imagen se muestra como installar Xvfb</p>
<div id="attachment_267" class="wp-caption aligncenter" style="width: 592px"><a href="http://www.republicait.com/wp-content/uploads/2009/09/xvfb-install.png"><img class="size-full wp-image-267  " title="xvfb-install" src="http://www.republicait.com/wp-content/uploads/2009/09/xvfb-install.png" alt="Instalando Xvfb" width="582" height="350" /></a><p class="wp-caption-text">Instalando Xvfb</p></div>
<p>Una vez instalado, procedemos a editar el siguiente archivo <code>/etc/dbus-1/system.d/xorg-server.conf</code> para poder arrancar nuesta pantalla virtual</p>
<p>El contenido actual es:</p>
<pre class="brush:xml">&lt;!DOCTYPE busconfig PUBLIC
 "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
 "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd"&gt;
&lt;busconfig&gt;
 &lt;policy context="default"&gt;
 &lt;allow own="org.x.config.display0"/&gt;
 &lt;allow send_destination="org.x.config.display0"/&gt;
 &lt;allow send_interface="org.x.config.display0"/&gt;
 &lt;allow own="org.x.config.display1"/&gt;
 &lt;allow send_destination="org.x.config.display1"/&gt;
 &lt;allow send_interface="org.x.config.display1"/&gt;
 &lt;/policy&gt;
&lt;/busconfig&gt;</pre>
<p>Agregamos la pantalla numero 2:</p>
<pre class="brush:xml">&lt;!DOCTYPE busconfig PUBLIC
 "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
 "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd"&gt;
&lt;busconfig&gt;
 &lt;policy context="default"&gt;
 &lt;allow own="org.x.config.display0"/&gt;
 &lt;allow send_destination="org.x.config.display0"/&gt;
 &lt;allow send_interface="org.x.config.display0"/&gt;
 &lt;allow own="org.x.config.display1"/&gt;
 &lt;allow send_destination="org.x.config.display1"/&gt;
 &lt;allow send_interface="org.x.config.display1"/&gt;
 &lt;allow own="org.x.config.display2"/&gt;
 &lt;allow send_destination="org.x.config.display2"/&gt;
 &lt;allow send_interface="org.x.config.display2"/&gt;
 &lt;/policy&gt;
&lt;/busconfig&gt;</pre>
<p>Ahora el siguiente paso es iniciar nuestra pantalla virtual, ejecutamos el siguiente commando:</p>
<p><code>$ Xvfb :2 -ac -screen :0 1024x768x24 2&gt;&amp;1 &gt; /dev/null &amp;</code></p>
<p>Esto nos debe iniciar nuestro servicio de Xvfb, para verificar que se esta ejecutando ejecutamos el siguiente comando:</p>
<p><code>$ ps auxx | grep Xvfb</code></p>
<h3>Firefox</h3>
<p>El siguiente paso ahora es iniciar Firefox en nuestra pantalla virtual y como parametro le pasamos la URL que debe cargar</p>
<p><code>$ firefox --display=:2 http://www.google.com -silent -nosplash -fullscreen 2&gt;&amp;1 &gt; /dev/null &amp;</code></p>
<p>Verificamos si en efecto se creo el proceso:</p>
<p><code>$ ps auxx | grep firefox</code></p>
<p>Luego procedemos a tomar el screenshot con el siguiente comando:</p>
<p><code>$ xwd -root -out -display :2 screen.xwd</code></p>
<h3>ImageMagick</h3>
<p>ImageMagick es una herramienta para manipular imagenes mediante linea de comandos.</p>
<p>Procedemos a installar ImageMagick</p>
<div id="attachment_272" class="wp-caption aligncenter" style="width: 602px"><a href="http://www.republicait.com/wp-content/uploads/2009/09/install-imagemagick.png"><img class="size-full wp-image-272 " title="install-imagemagick" src="http://www.republicait.com/wp-content/uploads/2009/09/install-imagemagick.png" alt="Instalando ImageMagick" width="592" height="367" /></a><p class="wp-caption-text">Instalando ImageMagick</p></div>
<p>Luego convertimos la imagen capturada a otro formato, como PNG por ejemplo.</p>
<p><code>$ convert screen.xwd screen.png</code></p>
<p>Resultado Final:</p>
<p style="text-align: center;">
<div id="attachment_279" class="wp-caption aligncenter" style="width: 594px"><a href="http://www.republicait.com/wp-content/uploads/2009/09/screen.png"><img class="size-full wp-image-279  " title="screen" src="http://www.republicait.com/wp-content/uploads/2009/09/screen.png" alt="Resultado del Screenshot" width="584" height="328" /></a><p class="wp-caption-text">Resultado del Screenshot</p></div>
<p>Para finalizar, hay que cerrar los procesos de firefox y Xvfb</p>
<p><code>$ kill `pidof firefox`</code></p>
<p><code>$ kill `pidof Xvfb`</code></p>
<h3>Script Completo</h3>
<p>A continuación un pequeño script con el código para tomar el screenshot, como parámetro se le pasa la URL:</p>
<pre class="brush:shell">DISPLAY_NUMBER=:2
Xvfb $DISPLAY_NUMBER -ac -screen :0 1024x768x24 2&gt;&amp;1 &gt; /dev/null &amp;
sleep 10
firefox --display=$DISPLAY_NUMBER $1 -silent -nosplash -fullscreen 2&gt;&amp;1 &gt; /dev/null &amp;
sleep 10
xwd -root -out -display $DISPLAY_NUMBER screen.xwd
convert screen.xwd screen.png
rm screen.xwd
kill `pidof firefox`
kill `pidof Xvbf`
echo "[DONE]"</pre>
<p>Para ejecutarlo:</p>
<p><code>$ ./take-screenshot http://www.google.com</code></p>
<h3>Notas Finales</h3>
<p>Como firefox se esta ejecutando en una pantalla virtual y no lo estamos cerrando de forma correcta (matando el proceso), es necesario eliminar el archivo que pide la restauracion de firefox.</p>
<p><code>$ rm /home/{USER_HOME}/.mozilla/firefox/{PROFILE_NAME}.default/sessionstore.js</code></p>
<p>Donde <code>{USER_HOME}</code> es el usuario donde se esta ejecutando firefox y <code>{PROFILE_NAME}</code> es el nombre del profile que se creo cuando se ejecuto firefox.</p>
Términos de búsqueda<ul><li><a href="http://www.republicait.com/2009/09/20/tomar-screenshot-web/" title="screenshot javascript">screenshot javascript</a></li><li><a href="http://www.republicait.com/2009/09/20/tomar-screenshot-web/" title="graficar en linux con xorg xvfb">graficar en linux con xorg xvfb</a></li><li><a href="http://www.republicait.com/2009/09/20/tomar-screenshot-web/" title="script firefox tomar foto">script firefox tomar foto</a></li><li><a href="http://www.republicait.com/2009/09/20/tomar-screenshot-web/" title="script para tomas foto de pantalla firefox">script para tomas foto de pantalla firefox</a></li><li><a href="http://www.republicait.com/2009/09/20/tomar-screenshot-web/" title="tomar pantallazos con javascript">tomar pantallazos con javascript</a></li><li><a href="http://www.republicait.com/2009/09/20/tomar-screenshot-web/" title="tomar Screen completo de web">tomar Screen completo de web</a></li><li><a href="http://www.republicait.com/2009/09/20/tomar-screenshot-web/" title="tomar screen de web">tomar screen de web</a></li><li><a href="http://www.republicait.com/2009/09/20/tomar-screenshot-web/" title="tomar screen en javascript">tomar screen en javascript</a></li><li><a href="http://www.republicait.com/2009/09/20/tomar-screenshot-web/" title="tomar screenshots con mozilla firefox">tomar screenshots con mozilla firefox</a></li><li><a href="http://www.republicait.com/2009/09/20/tomar-screenshot-web/" title="tomar screenshots en mozilla">tomar screenshots en mozilla</a></li></ul><!-- SEO SearchTerms Tagging 2 plugin took 3.982 ms -->]]></content:encoded>
			<wfw:commentRss>http://www.republicait.com/2009/09/20/tomar-screenshot-web/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Project Object Model (POM)</title>
		<link>http://www.republicait.com/2009/07/24/project-object-model/</link>
		<comments>http://www.republicait.com/2009/07/24/project-object-model/#comments</comments>
		<pubDate>Fri, 24 Jul 2009 20:49:23 +0000</pubDate>
		<dc:creator>dcamargo.n</dc:creator>
				<category><![CDATA[Administración de Proyectos]]></category>
		<category><![CDATA[Configuración]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[pom]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://www.republicait.com/?p=232</guid>
		<description><![CDATA[El POM es un archivo XML que representa la estructura de un proyecto Maven, este archivo lleva por nombre pom.xml, actualmente la versión soportada por Maven es la 4.0.]]></description>
			<content:encoded><![CDATA[<h3>Introducción</h3>
<p>El POM es un archivo XML que representa la estructura de un proyecto Maven, este archivo lleva por nombre pom.xml, actualmente la versión soportada por Maven es la 4.0.</p>
<p>Se puede decir que un archivo POM esta compuesto de los siguientes elementos o secciones:</p>
<ol>
<li>Elementos básicos.</li>
<li>Información del proyecto.</li>
<li>Módulos.</li>
<li>Herencia.</li>
<li>Dependencias.</li>
<li>Propiedades.</li>
<li>Configuración de construcción del proyecto.</li>
<li>Configuración del entorno de construcción.
<ul>
<li>Entorno del proyecto.</li>
<li>Entorno de Maven.</li>
</ul>
</li>
</ol>
<pre class="brush:xml">&lt;project&gt;
 &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;

 &lt;!-- Elementos básicos --&gt;
 &lt;groupId&gt;...&lt;/groupId&gt;
 &lt;artifactId&gt;...&lt;/artifactId&gt;
 &lt;version&gt;...&lt;/version&gt;
 &lt;packaging&gt;...&lt;/packaging&gt;

 &lt;!-- Información del proyecto --&gt;
 &lt;name&gt;...&lt;/name&gt;
 &lt;description&gt;...&lt;/description&gt;
 &lt;url&gt;...&lt;/url&gt;
 &lt;inceptionYear&gt;...&lt;/inceptionYear&gt;
 &lt;licenses&gt;...&lt;/licenses&gt;
 &lt;organization&gt;...&lt;/organization&gt;
 &lt;developers&gt;...&lt;/developers&gt;
 &lt;contributors&gt;...&lt;/contributors&gt;

 &lt;!-- Módulos --&gt;
 &lt;modules&gt;...&lt;/modules&gt;

 &lt;!-- Herencia --&gt;
 &lt;parent&gt;...&lt;/parent&gt;
 &lt;dependencyManagement&gt;...&lt;/dependencyManagement&gt;

 &lt;!-- Dependencias --&gt;
 &lt;dependencies&gt;...&lt;/dependencies&gt;

 &lt;!-- Propiedades --&gt;
 &lt;properties&gt;...&lt;/properties&gt;

 &lt;!-- Configuración de construcción del proyecto --&gt;
 &lt;build&gt;...&lt;/build&gt;
 &lt;reporting&gt;...&lt;/reporting&gt;

 &lt;!-- Entorno del proyecto --&gt;
 &lt;issueManagement&gt;...&lt;/issueManagement&gt;
 &lt;ciManagement&gt;...&lt;/ciManagement&gt;
 &lt;mailingLists&gt;...&lt;/mailingLists&gt;
 &lt;scm&gt;...&lt;/scm&gt;

 &lt;!-- Entorno de Maven --&gt;
 &lt;prerequisites&gt;...&lt;/prerequisites&gt;
 &lt;repositories&gt;...&lt;/repositories&gt;
 &lt;pluginRepositories&gt;...&lt;/pluginRepositories&gt;
 &lt;distributionManagement&gt;...&lt;/distributionManagement&gt;
 &lt;profiles&gt;...&lt;/profiles&gt;

&lt;/project&gt;</pre>
<h3>Definiciones</h3>
<p><strong>groupId:</strong><br />
Es el nombre del paquete o grupo al que pertenece el proyecto, como por ejemplo <code>com.csd-web.utils</code></p>
<p><strong>artifactId:</strong><br />
Es el nombre del proyecto o del módulo a desarollar, por ejemplo <code>logger</code></p>
<p><strong>version:</strong><br />
Es la versión actual del módulo o proyecto, por ejemplo <code>0.1</code></p>
<p><strong>modules:</strong><br />
Es una lista de los módulos que componen el proyecto, esto se utiliza cuando se trata de  un proyecto multimódulo.</p>
<p><strong>parent:</strong><br />
Esta etiqueta se utiliza si nuestro proyecto pertenece a un proyecto padre del cual debe heredar ciertas características, todos los proyectos tienen como padre SuperPOM por defecto</p>
<p><strong>dependencyManagement:</strong><br />
En esta etiqueta se indican cuales seran las dependencias de los proyectos hijos que deben heredar del POM padre.</p>
<p><strong>dependencies:</strong><br />
Aquí se especifican todas las dependencias desde otros proyectos externos para que Maven los incluya en el momento de construir el proyecto.</p>
<p><strong>properties:</strong><br />
Son las propiedades o variables que se pueden definir a la hora de la construcción del proyecto.</p>
<h3>Ejemplo de un POM</h3>
<p>Aqui les muestro el archivo POM del proyecto <a title="SLF4J" href="http://www.slf4j.org" target="_blank">SLF4J</a></p>
<pre class="brush:xml">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd"&gt;

 &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;

 &lt;groupId&gt;org.slf4j&lt;/groupId&gt;
 &lt;artifactId&gt;slf4j-parent&lt;/artifactId&gt;
 &lt;version&gt;1.5.8&lt;/version&gt;

 &lt;packaging&gt;pom&lt;/packaging&gt;
 &lt;name&gt;SLF4J&lt;/name&gt;

 &lt;url&gt;http://www.slf4j.org&lt;/url&gt;

 &lt;organization&gt;
 &lt;name&gt;QOS.ch&lt;/name&gt;
 &lt;url&gt;http://www.qos.ch&lt;/url&gt;
 &lt;/organization&gt;
 &lt;inceptionYear&gt;2005&lt;/inceptionYear&gt;

 &lt;properties&gt;
 &lt;/properties&gt;

 &lt;modules&gt;
 &lt;module&gt;slf4j-api&lt;/module&gt;
 &lt;module&gt;slf4j-simple&lt;/module&gt;
 &lt;module&gt;slf4j-nop&lt;/module&gt;
 &lt;module&gt;slf4j-jdk14&lt;/module&gt;
 &lt;module&gt;slf4j-log4j12&lt;/module&gt;
 &lt;module&gt;slf4j-jcl&lt;/module&gt;
 &lt;module&gt;slf4j-ext&lt;/module&gt;
 &lt;module&gt;jcl-over-slf4j&lt;/module&gt;
 &lt;module&gt;jcl104-over-slf4j&lt;/module&gt;
 &lt;module&gt;log4j-over-slf4j&lt;/module&gt;
 &lt;module&gt;jul-to-slf4j&lt;/module&gt;
 &lt;module&gt;integration&lt;/module&gt;
 &lt;module&gt;slf4j-site&lt;/module&gt;
 &lt;module&gt;slf4j-migrator&lt;/module&gt;
 &lt;/modules&gt;

 &lt;dependencies&gt;
 &lt;dependency&gt;
 &lt;groupId&gt;junit&lt;/groupId&gt;
 &lt;artifactId&gt;junit&lt;/artifactId&gt;
 &lt;version&gt;3.8.1&lt;/version&gt;
 &lt;scope&gt;test&lt;/scope&gt;
 &lt;/dependency&gt;
 &lt;/dependencies&gt;

 &lt;dependencyManagement&gt;
 &lt;dependencies&gt;

 &lt;dependency&gt;
 &lt;groupId&gt;org.slf4j&lt;/groupId&gt;
 &lt;artifactId&gt;slf4j-api&lt;/artifactId&gt;
 &lt;version&gt;${project.version}&lt;/version&gt;
 &lt;/dependency&gt;

 &lt;dependency&gt;
 &lt;groupId&gt;org.slf4j&lt;/groupId&gt;
 &lt;artifactId&gt;slf4j-jdk14&lt;/artifactId&gt;
 &lt;version&gt;${project.version}&lt;/version&gt;
 &lt;/dependency&gt;

 &lt;dependency&gt;
 &lt;groupId&gt;log4j&lt;/groupId&gt;
 &lt;artifactId&gt;log4j&lt;/artifactId&gt;
 &lt;version&gt;1.2.14&lt;/version&gt;
 &lt;/dependency&gt;

 &lt;/dependencies&gt;
 &lt;/dependencyManagement&gt;

 &lt;build&gt;
 &lt;resources&gt;
 &lt;resource&gt;
 &lt;directory&gt;src/main/resources&lt;/directory&gt;
 &lt;filtering&gt;true&lt;/filtering&gt;
 &lt;/resource&gt;
 &lt;/resources&gt;

 &lt;plugins&gt;
 &lt;plugin&gt;
 &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
 &lt;artifactId&gt;maven-compiler-plugin&lt;/artifactId&gt;
 &lt;configuration&gt;
 &lt;source&gt;1.3&lt;/source&gt;
 &lt;target&gt;1.3&lt;/target&gt;
 &lt;/configuration&gt;
 &lt;/plugin&gt;

 &lt;plugin&gt;
 &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
 &lt;artifactId&gt;maven-surefire-plugin&lt;/artifactId&gt;
 &lt;configuration&gt;
 &lt;forkMode&gt;once&lt;/forkMode&gt;
 &lt;reportFormat&gt;plain&lt;/reportFormat&gt;
 &lt;trimStackTrace&gt;false&lt;/trimStackTrace&gt;
 &lt;excludes&gt;
 &lt;exclude&gt;**/AllTest.java&lt;/exclude&gt;
 &lt;exclude&gt;**/PackageTest.java&lt;/exclude&gt;
 &lt;/excludes&gt;
 &lt;/configuration&gt;
 &lt;/plugin&gt;        

 &lt;plugin&gt;
 &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
 &lt;artifactId&gt;maven-source-plugin&lt;/artifactId&gt;
 &lt;executions&gt;
 &lt;execution&gt;
 &lt;phase&gt;package&lt;/phase&gt;
 &lt;goals&gt;
 &lt;goal&gt;jar&lt;/goal&gt;
 &lt;/goals&gt;
 &lt;/execution&gt;
 &lt;/executions&gt;
 &lt;/plugin&gt;

 &lt;plugin&gt;
 &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
 &lt;artifactId&gt;maven-javadoc-plugin&lt;/artifactId&gt;
 &lt;configuration&gt;
 &lt;aggregate&gt;true&lt;/aggregate&gt;
 &lt;excludePackageNames&gt;org.slf4j.migrator:org.slf4j.migrator.*&lt;/excludePackageNames&gt;
 &lt;links&gt;
 &lt;link&gt;

http://java.sun.com/j2se/1.5.0/docs/api

 &lt;/link&gt;
 &lt;/links&gt;
 &lt;groups&gt;
 &lt;group&gt;
 &lt;title&gt;SLF4J packages&lt;/title&gt;
 &lt;packages&gt;org.slf4j:org.slf4j.*&lt;/packages&gt;
 &lt;/group&gt;

 &lt;group&gt;
 &lt;title&gt;SLF4J extensions&lt;/title&gt;
 &lt;packages&gt;org.slf4j.profiler:org.slf4j.ext:org.slf4j.instrumentation:org.slf4j.agent&lt;/packages&gt;
 &lt;/group&gt;

 &lt;group&gt;
 &lt;title&gt;Jakarta Commons Logging packages&lt;/title&gt;
 &lt;packages&gt;org.apache.commons.*&lt;/packages&gt;
 &lt;/group&gt;

 &lt;group&gt;
 &lt;title&gt;Apache log4j&lt;/title&gt;
 &lt;packages&gt;org.apache.log4j&lt;/packages&gt;
 &lt;/group&gt;

 &lt;group&gt;
 &lt;title&gt;java.util.logging (JUL) to SLF4J bridge&lt;/title&gt;
 &lt;packages&gt;org.slf4j.bridge&lt;/packages&gt;
 &lt;/group&gt;

 &lt;/groups&gt;
 &lt;/configuration&gt;
 &lt;/plugin&gt;

 &lt;/plugins&gt;

 &lt;/build&gt;

 &lt;profiles&gt;
 &lt;profile&gt;
 &lt;id&gt;skipTests&lt;/id&gt;
 &lt;properties&gt;
 &lt;maven.test.skip&gt;true&lt;/maven.test.skip&gt;
 &lt;/properties&gt;
 &lt;/profile&gt;
 &lt;profile&gt;
 &lt;id&gt;osgi&lt;/id&gt;
 &lt;modules&gt;
 &lt;module&gt;osgi-over-slf4j&lt;/module&gt;
 &lt;module&gt;slf4j-osgi-test-bundle&lt;/module&gt;
 &lt;module&gt;slf4j-osgi-integration-test&lt;/module&gt;
 &lt;/modules&gt;

 &lt;repositories&gt;
 &lt;repository&gt;
 &lt;id&gt;m2apache.snapshots&lt;/id&gt;
 &lt;url&gt;http://people.apache.org/repo/m2-snapshot-repository&lt;/url&gt;
 &lt;releases&gt;
 &lt;enabled&gt;false&lt;/enabled&gt;
 &lt;/releases&gt;
 &lt;snapshots&gt;
 &lt;enabled&gt;true&lt;/enabled&gt;
 &lt;/snapshots&gt;
 &lt;/repository&gt;

 &lt;repository&gt;
 &lt;id&gt;springframework.org&lt;/id&gt;
 &lt;name&gt;Springframework Maven SNAPSHOT Repository&lt;/name&gt;
 &lt;url&gt;http://static.springframework.org/maven2-snapshots/&lt;/url&gt;
 &lt;snapshots&gt;
 &lt;enabled&gt;true&lt;/enabled&gt;
 &lt;/snapshots&gt;
 &lt;/repository&gt;

 &lt;/repositories&gt;

 &lt;pluginRepositories&gt;
 &lt;pluginRepository&gt;
 &lt;id&gt;apache.snapshots&lt;/id&gt;
 &lt;name&gt;Apache Snapshot Plugin Repository&lt;/name&gt;
 &lt;url&gt;http://people.apache.org/repo/m2-snapshot-repository&lt;/url&gt;
 &lt;releases&gt;
 &lt;enabled&gt;false&lt;/enabled&gt;
 &lt;/releases&gt;
 &lt;snapshots&gt;
 &lt;enabled&gt;true&lt;/enabled&gt;
 &lt;/snapshots&gt;
 &lt;/pluginRepository&gt;
 &lt;/pluginRepositories&gt;

 &lt;/profile&gt;
 &lt;/profiles&gt;

 &lt;pluginRepositories&gt;
 &lt;pluginRepository&gt;
 &lt;id&gt;apache.snapshots&lt;/id&gt;
 &lt;name&gt;Apache Snapshot Plugin Repository&lt;/name&gt;
 &lt;url&gt;http://people.apache.org/repo/m2-snapshot-repository&lt;/url&gt;
 &lt;releases&gt;
 &lt;enabled&gt;false&lt;/enabled&gt;
 &lt;/releases&gt;
 &lt;snapshots&gt;
 &lt;enabled&gt;true&lt;/enabled&gt;
 &lt;/snapshots&gt;
 &lt;/pluginRepository&gt;
 &lt;/pluginRepositories&gt;

 &lt;reporting&gt;
 &lt;plugins&gt;
 &lt;plugin&gt;
 &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
 &lt;artifactId&gt;maven-site-plugin&lt;/artifactId&gt;
 &lt;/plugin&gt;

 &lt;plugin&gt;
 &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
 &lt;artifactId&gt;maven-project-info-reports-plugin&lt;/artifactId&gt;
 &lt;reportSets&gt;
 &lt;reportSet&gt;&lt;reports/&gt;&lt;/reportSet&gt;
 &lt;/reportSets&gt;
 &lt;/plugin&gt;        

 &lt;plugin&gt;
 &lt;artifactId&gt;maven-assembly-plugin&lt;/artifactId&gt;
 &lt;version&gt;2.1&lt;/version&gt;
 &lt;configuration&gt;
 &lt;descriptors&gt;
 &lt;descriptor&gt;
 src/main/assembly/source.xml
 &lt;/descriptor&gt;
 &lt;/descriptors&gt;
 &lt;finalName&gt;slf4j-${project.version}&lt;/finalName&gt;
 &lt;appendAssemblyId&gt;false&lt;/appendAssemblyId&gt;
 &lt;outputDirectory&gt;target/site/dist/&lt;/outputDirectory&gt;
 &lt;/configuration&gt;
 &lt;/plugin&gt;

 &lt;plugin&gt;
 &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
 &lt;artifactId&gt;maven-jxr-plugin&lt;/artifactId&gt;
 &lt;reportSets&gt;
 &lt;reportSet&gt;
 &lt;reports&gt;
 &lt;report&gt;jxr&lt;/report&gt;
 &lt;report&gt;test-jxr&lt;/report&gt;
 &lt;/reports&gt;
 &lt;/reportSet&gt;
 &lt;/reportSets&gt;
 &lt;configuration&gt;
 &lt;aggregate&gt;true&lt;/aggregate&gt;
 &lt;javadocDir&gt;target/site/api/&lt;/javadocDir&gt;
 &lt;linkJavadoc&gt;true&lt;/linkJavadoc&gt;
 &lt;/configuration&gt;
 &lt;/plugin&gt;

 &lt;/plugins&gt;

 &lt;/reporting&gt;

 &lt;scm&gt;
 &lt;connection&gt;scm:svn:http://svn.slf4j.org/repos/slf4j/trunk&lt;/connection&gt;
 &lt;developerConnection&gt;scm:svn:https://svn.slf4j.org/repos/slf4j/trunk&lt;/developerConnection&gt;
 &lt;url&gt;http://svn.slf4j.org/viewvc/slf4j/trunk/&lt;/url&gt;
 &lt;/scm&gt;

 &lt;distributionManagement&gt;
 &lt;site&gt;
 &lt;id&gt;pixie&lt;/id&gt;
 &lt;url&gt;scp://pixie/var/www/www.slf4j.org/htdocs/&lt;/url&gt;
 &lt;/site&gt;

 &lt;repository&gt;
 &lt;id&gt;pixie&lt;/id&gt;
 &lt;url&gt;scp://pixie/var/mvnrepo/&lt;/url&gt;
 &lt;/repository&gt;

 &lt;/distributionManagement&gt;

&lt;/project&gt;</pre>
<h3>Enlaces Externos</h3>
<p>Algunos enlaces en los cuales puedes encontrar una referencia mas completa acerca de los archivos POM</p>
<ul>
<li><a title="Project Object Model (POM) de Maven" href="http://www.elholgazan.com/2007/08/project-object-model-pom-de-maven.html" target="_blank">Project Object Model (POM) de Maven</a></li>
<li><a title="The Maven 2 POM demystified" href="http://www.javaworld.com/javaworld/jw-05-2006/jw-0529-maven.html" target="_blank">The Maven 2 POM demystified</a></li>
<li><a title="Introduction to the POM" href="http://maven.apache.org/guides/introduction/introduction-to-the-pom.html" target="_blank">Introduction to the POM</a></li>
</ul>
Términos de búsqueda<ul><li><a href="http://www.republicait.com/2009/07/24/project-object-model/" title="<module> pom maven svn osgi"><module> pom maven svn osgi</a></li><li><a href="http://www.republicait.com/2009/07/24/project-object-model/" title="maven <prerequisites>">maven <prerequisites></a></li><li><a href="http://www.republicait.com/2009/07/24/project-object-model/" title="maven 2 1 site descriptor parent pom">maven 2 1 site descriptor parent pom</a></li><li><a href="http://www.republicait.com/2009/07/24/project-object-model/" title="maven appendAssemblyId example">maven appendAssemblyId example</a></li><li><a href="http://www.republicait.com/2009/07/24/project-object-model/" title="maven distributionmanagement parent pom">maven distributionmanagement parent pom</a></li><li><a href="http://www.republicait.com/2009/07/24/project-object-model/" title="maven org slf4j">maven org slf4j</a></li><li><a href="http://www.republicait.com/2009/07/24/project-object-model/" title="maven plugin dojo profiles">maven plugin dojo profiles</a></li><li><a href="http://www.republicait.com/2009/07/24/project-object-model/" title="osgi profile pom">osgi profile pom</a></li><li><a href="http://www.republicait.com/2009/07/24/project-object-model/" title="pom exclude">pom exclude</a></li><li><a href="http://www.republicait.com/2009/07/24/project-object-model/" title="pom fork mode">pom fork mode</a></li></ul><!-- SEO SearchTerms Tagging 2 plugin took 4.564 ms -->]]></content:encoded>
			<wfw:commentRss>http://www.republicait.com/2009/07/24/project-object-model/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHING</title>
		<link>http://www.republicait.com/2009/02/24/phing/</link>
		<comments>http://www.republicait.com/2009/02/24/phing/#comments</comments>
		<pubDate>Wed, 25 Feb 2009 01:07:26 +0000</pubDate>
		<dc:creator>dcamargo.n</dc:creator>
				<category><![CDATA[Configuración]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[builders]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.republicait.com/?p=171</guid>
		<description><![CDATA[PHING (PHing Is Not GNU make), es una herramienta basada en el constructor (builder) de aplicaciones Java, Apache Ant, con la diferencia de que PHING es para construir aplicaciones escritas en PHP.]]></description>
			<content:encoded><![CDATA[<h3 style="text-align: justify;">
<div class="mceTemp mceIEcenter">
<dl id="attachment_172" class="wp-caption aligncenter" style="width: 221px;">
<dt class="wp-caption-dt"><img class="size-full wp-image-172" title="phing logo" src="http://www.republicait.com/wp-content/uploads/2009/02/logo.png" alt="phing logo" width="211" height="74" /></dt>
</dl>
</div>
</h3>
<h3>Introducción</h3>
<p style="text-align: justify;">PHING (<strong>PH</strong>ing <strong>I</strong>s <strong>N</strong>ot <strong>G</strong>NU make), es una herramienta basada en el constructor (builder) de aplicaciones Java, <a href="http://ant.apache.org/" target="_blank">Apache Ant</a>, con la diferencia de que PHING es para construir aplicaciones escritas en PHP.</p>
<p style="text-align: justify;">La estructura de la aplicación se describe en un archivo XML llamado <code>build.xml</code>, en este archivo podemos encontrar el nombre de la aplicación a construir, una descripción de la misma, la carpeta donde se encuentra nuestro código fuente, la carpeta de destino que contendrá la última versión de la aplicación y las tareas (tasks) que este debe ejecutar.</p>
<p style="text-align: justify;">Esta herramienta es muy útil, por lo general, cuando se tiene una ruta  específica de un conjunto de librerías de utilidades que pueden formar parte de cualquier aplicación. Se puede hacer referencia a esta ruta desde su IDE de PHP, pero luego, tenie que asegurarse de copiarla cuando ya tiene su producto final.</p>
<p style="text-align: justify;">También cuando se trabaja con diferentes configuraciones, ya sea el servidor de desarrollo o el de producción debe asegurarse de copiar y/o subir la configuración correcta, esto sin tomar en cuenta que la PC del programador pueda tener otra configuración. Este problema se resuelve con PHING, ya que a la hora de construir la aplicación solo basta con decirle que configuración debe cargar.</p>
<p>Enlace de descarga: <a href="http://phing.info/trac/wiki/Users/Download" target="_blank">http://phing.info/trac/wiki/Users/Download</a></p>
<p>Instalación y Documentación: <a href="http://phing.info/docs/guide/current/" target="_blank">http://phing.info/docs/guide/current/</a></p>
<h3>Ejemplo del archivo build.xml</h3>
<pre class="brush:xml">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;project
	name="Proyecto de prueba"
	default="stage"
	basedir="."
	description="Archivo Build del Proyecto de Prueba"&gt;

	&lt;!--  Ruta que contendra la aplicacion web final --&gt;
	&lt;property name="build.dir" value="../build" /&gt;

	&lt;!-- Ruta de los archivos fuentes --&gt;
	&lt;property name="src.dir" value="./app" /&gt;

	&lt;!--
	PHP COMMONS LIBS - PCL
	Configuracion de la libreria de utilidades comunes

	pcl.src.dir:
	Es la ruta donde se encuentra los archivos fuente de PCL

	pcl.out.dir:
	Es la ruta donde se copiara las utiliades dentro de la aplicacion
	--&gt;
	&lt;property name="pcl.src.dir" value="../PCL" /&gt;
	&lt;property name="pcl.out.dir" value="${build.dir}/libs/PCL" /&gt;

	&lt;!-- Incluye los archivos fuente de la aplicacion --&gt;
	&lt;fileset dir="${src.dir}" id="srcfiles"&gt;
		&lt;include name="**" /&gt;
	&lt;/fileset&gt;

	&lt;!--
	- Incluye los archivos del proyecto PCL
	- Excluye archivos de Zend Studio for Eclipse (ZSE) - opcional
	--&gt;
	&lt;fileset dir="${pcl.src.dir}" id="pclfiles"&gt;
		&lt;include name="**" /&gt;
		&lt;exclude name=".cache/**" /&gt;
		&lt;exclude name=".settings/**" /&gt;
		&lt;exclude name=".project" /&gt;
	&lt;/fileset&gt;

	&lt;!-- Prepara el directorio de destino --&gt;
	&lt;target
		name="init"
		description="Preparando el directorio destino ==&gt; ${build.dir}"&gt;

		&lt;echo message="Preparando el directorio ${build.dir}" /&gt;
		&lt;delete dir="${build.dir}" failonerror="true" /&gt;
		&lt;mkdir dir="${build.dir}" /&gt;
		&lt;mkdir dir="${build.dir}/libs"/&gt;
		&lt;!--
		Crea el directorio de destino de PCL
		--&gt;
		&lt;mkdir dir="${pcl.out.dir}" /&gt;
	&lt;/target&gt;

	&lt;!-- Construye la aplicacion WEB PHP --&gt;
	&lt;target
		name="build"
		depends="init"
		description="Construye la aplicacion WEB"&gt;

		&lt;!--
		Copia los archivos fuentes de la aplicacion
		--&gt;
		&lt;echo message="Copiando archivos desde ${src.dir}" /&gt;
		&lt;copy todir="${build.dir}"&gt;
			&lt;fileset refid="srcfiles" /&gt;
		&lt;/copy&gt;

		&lt;!--
		Copia los archivos de configuracion de la aplicacion
		--&gt;
		&lt;echo message="Copiando configuracion desde ${config.dir}" /&gt;
		&lt;copy todir="${build.dir}"&gt;
			&lt;fileset dir="${config.dir}"&gt;
				&lt;include name="**" /&gt;
			&lt;/fileset&gt;
		&lt;/copy&gt;

		&lt;!--
		Copia los archivos de PCL dentro de la carpeta de destino
		--&gt;
		&lt;echo message="Copiando archivos PCL desde ${pcl.src.dir}" /&gt;
		&lt;copy todir="${pcl.out.dir}"&gt;
			&lt;fileset refid="pclfiles" /&gt;
		&lt;/copy&gt;
	&lt;/target&gt;

	&lt;!-- Carga la configuracion del servidor de desarrollo de la aplicación --&gt;
	&lt;target
		name="stage"
		description="Construir con la configuracion de desarrollo"&gt;

		&lt;!--
		Llamado a build con la configuracion de desarrollo
		--&gt;
		&lt;phingcall target="build"&gt;
			&lt;property name="config.dir" value="./config/stage" /&gt;
		&lt;/phingcall&gt;

		&lt;echo message="-----------------------------------" /&gt;
		&lt;echo message="  APLICACION CONSTRUIDA CON EXITO  " /&gt;
		&lt;echo message="CONFIGURACION DE DESARROLLO CARGADA" /&gt;
		&lt;echo message="-----------------------------------" /&gt;
	&lt;/target&gt;

	&lt;!-- Carga la configuración del servidor de produccion de la aplicacion --&gt;
	&lt;target
		name="production"
		description="Construir con la configuracion de produccion"&gt;

		&lt;!--
		Llamado a phing con la configuracion de produccion
		--&gt;
		&lt;phingcall target="build"&gt;
			&lt;property name="config.dir" value="./config/production" /&gt;
		&lt;/phingcall&gt;

		&lt;echo message="-----------------------------------" /&gt;
		&lt;echo message="  APLICACION CONSTRUIDA CON EXITO  " /&gt;
		&lt;echo message="CONFIGURACION DE PRODUCCION CARGADA" /&gt;
		&lt;echo message="-----------------------------------" /&gt;
	&lt;/target&gt;
&lt;/project&gt;</pre>
<p style="text-align: justify;">Para construir la aplicación con este archivo, nos vamos por linea de comandos hasta la ruta donde se encuentra nuestro proyecto y ejecutamos:</p>
<pre>Carga la configuración stage por defecto

<code>{RUTA_DEL_PROYECTO}&gt; phing</code>

Carga la configuración de produccion

<code>{RUTA_DEL_PROYECTO}&gt; phing production</code></pre>
<h3>Integracion del PHING con ZSE</h3>
<p style="text-align: justify;">Podemos crear un proyecto en el ZSE que contenga nuestro archivo build.xml y ejecutar el PHING desde el ZSE para construir nuestro proyecto.</p>
<p>Para esto nos vamos al menú <code>Project -&gt; Properties -&gt; Builders -&gt; New... -&gt; Program -&gt; OK</code></p>
<p>Name: Phing</p>
<p>Location: <code>{RUTA_DE_INSTALACIÓN_DEL_PHING}</code></p>
<p>Working Directory: <code>{RUTA_DEL_PROYECTO}</code></p>
<p>Arguments: Aqui se puede colocar que configuración se desea cargar, por defecto toma <code>stage (desarrollo)</code></p>
<div class="mceTemp mceIEcenter">
<dl id="attachment_179" class="wp-caption aligncenter" style="width: 510px;">
<dt class="wp-caption-dt"><img class="size-full wp-image-179" title="phing zse configuration" src="http://www.republicait.com/wp-content/uploads/2009/02/phing-zse-config.jpg" alt="phing and zse" width="500" height="402" /></dt>
</dl>
</div>
Términos de búsqueda<ul><li><a href="http://www.republicait.com/2009/02/24/phing/" title="phing">phing</a></li><li><a href="http://www.republicait.com/2009/02/24/phing/" title="que es phing">que es phing</a></li><li><a href="http://www.republicait.com/2009/02/24/phing/" title="copiar archivo de ruta en dir en java">copiar archivo de ruta en dir en java</a></li><li><a href="http://www.republicait.com/2009/02/24/phing/" title="phing build xml">phing build xml</a></li><li><a href="http://www.republicait.com/2009/02/24/phing/" title="proyecto maven no encuentra xml properties dentro de la carpeta conf">proyecto maven no encuentra xml properties dentro de la carpeta conf</a></li></ul><!-- SEO SearchTerms Tagging 2 plugin took 2.433 ms -->]]></content:encoded>
			<wfw:commentRss>http://www.republicait.com/2009/02/24/phing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Herramientas para un servidor de desarrollo</title>
		<link>http://www.republicait.com/2009/01/17/herramientas-para-un-servidor-de-desarrollo/</link>
		<comments>http://www.republicait.com/2009/01/17/herramientas-para-un-servidor-de-desarrollo/#comments</comments>
		<pubDate>Sun, 18 Jan 2009 03:33:05 +0000</pubDate>
		<dc:creator>dcamargo.n</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[Servidores]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[red5]]></category>
		<category><![CDATA[tomcat]]></category>

		<guid isPermaLink="false">http://www.republicait.com/?p=123</guid>
		<description><![CDATA[En este artículo veremos algunos programas y herramientas que nos serán muy útiles a la hora de preparar una pc para que funcione como nuestro servidor de desarrollo.]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">En este artículo veremos algunos programas y herramientas que nos serán muy útiles a la hora de preparar una pc para que funcione como nuestro servidor de desarrollo.</p>
<p style="text-align: justify;">Cada una de estas herramientas realizan una tarea especifica distinta una de la otra, por lo cual le brinda a nuestro servidor una variedad de funcionalidades para poder desarrollar nuestra aplicación ya sea en java, php, ruby, etc.</p>
<blockquote style="text-align: justify;">
<p style="text-align: justify;"><strong>Nota:</strong> Todas estas herramientas que mencionaremos son gratis, free, sin costos.</p>
</blockquote>
<p style="text-align: justify;">
<h3 style="text-align: justify;">1. Sistema Operativo</h3>
<h4 style="text-align: justify;"><a href="http://www.ubuntu.com/products/whatIsubuntu/serveredition" target="_blank"><img class="size-full wp-image-126 alignleft" title="Ubuntu logo" src="http://www.republicait.com/wp-content/uploads/2009/01/icon-ubuntu.png" alt="Ubuntu logo" width="40" height="40" /></a></p>
<p><a href="http://www.ubuntu.com/products/whatIsubuntu/serveredition" target="_blank">Ubuntu Server Edition</a></h4>
<p style="text-align: justify;">Ubuntu Server Edition es una distribución de Linux basada en <a href="http://www.debian.org/index.es.html" target="_blank">Debian</a> la cual utilizaremos como el sistema operativo de nuestro servidor de desarrollo, para obtenerla, debes dirigirte a su <a href="http://www.ubuntu.com/getubuntu/download" target="_blank">página descargas</a> la cual ofrece distintas formas de poder descargar esta distribución.</p>
<p style="text-align: justify;">Cabe destacar que esta distribución no ofrece un entorno de escritorio visual por defecto, como por ejemplo <a href="http://www.gnome.org/" target="_blank">Gnome</a> dado que esta orientado para un entorno de servidor y los gráficos pueden reducir la disponibilidad de recursos de nuestra pc.</p>
<p style="text-align: justify;">Algunas otras opciones:</p>
<ul style="text-align: justify;">
<li>Fedora Project</li>
<li>Debian</li>
<li>OpenSolaris</li>
</ul>
<h3 style="text-align: justify;">2. Accesibilidad</h3>
<h4 style="text-align: justify;"><a href="http://www.proftpd.org/" target="_blank">ProFTPD</a></h4>
<p style="text-align: justify;">ProfFTPD es un servidor FTP orientado principalmente a plataformas Linux, la instalación y configuración no requiere de una gran experiencia bajo el entorno Linux, su archivo de configuración proporciona comentarios que les sirve de ayuda para saber que sección estan afectando.</p>
<h4 style="text-align: justify;"><a href="http://www.openssh.com/index.html" target="_blank">OpenSSH</a></h4>
<p style="text-align: justify;">OpenSSH es una herramienta con la cual se pueden establecer una conexión segura con el servidor mediante el protocolo SSH, dado que nuestro sistema operativo es Linux, esta es una excelente herramienta para poder utilizar la consola o terminal de nuestro servidor desde cualquier punto.</p>
<h3 style="text-align: justify;">3. Servidores WEB</h3>
<h4>
<div class="mceTemp">
<dl id="attachment_153" class="wp-caption alignleft" style="width: 99px;">
<dt class="wp-caption-dt"><a href="http://httpd.apache.org/" target="_blank"><img class="size-full wp-image-153" title="apache logo" src="http://www.republicait.com/wp-content/uploads/2009/01/apache.jpg" alt="apache logo" width="89" height="40" /> </a></dt>
</dl>
</div>
<p><a href="http://httpd.apache.org/" target="_blank">Apache HTTP Server Project</a></h4>
<p style="text-align: justify;">Apache es un servidor WEB desarrollado y mantenido por <a href="http://www.apache.org/" target="_blank">The Apache Software Foundation</a> con el proposito de ofrecer un servidor de alto rendimiento, sin costos, configurable y con funcionalidades o modulos que se pueden adaptar para la generación de páginas WEB dinámicas desde un lenguaje o script de programación, como por ejemplo PHP. Una alternativa para el servidor apache es: <a href="http://www.lighttpd.net/" target="_blank">Ligth HTTPd</a>.</p>
<h4>
<div class="mceTemp">
<dl id="attachment_155" class="wp-caption alignleft" style="width: 67px;">
<dt class="wp-caption-dt"><a href="http://tomcat.apache.org/" target="_blank"><img class="size-full wp-image-155" title="tomcat logo" src="http://www.republicait.com/wp-content/uploads/2009/01/tomcat.gif" alt="tomcat logo" width="57" height="40" /></a></dt>
</dl>
</div>
<p><a href="http://tomcat.apache.org/" target="_blank">Apache Tomcat</a></h4>
<p style="text-align: justify;">Apache Tomcat es un servidor WEB orientado para servir aplicaciones desarrolladas con el lenguaje de progrmación Java utilizando las tecnologias <a href="http://java.sun.com/products/servlet/index.jsp" target="_blank">Java Servlets</a> y <a href="http://java.sun.com/products/jsp/">Java Server Pages</a>, forma tambien parte del Apache Software Foundation. Una alternativa al servidor apache tomcat es <a href="http://www.caucho.com/" target="_blank">Resin</a>.</p>
<h4>
<div class="mceTemp">
<dl id="attachment_158" class="wp-caption alignleft" style="width: 111px;">
<dt class="wp-caption-dt"><a href="http://osflash.org/red5" target="_blank"><img class="size-full wp-image-158" title="red5 logo" src="http://www.republicait.com/wp-content/uploads/2009/01/red5logo.png" alt="red5 logo" width="101" height="40" /></a></dt>
</dl>
</div>
<p><a href="http://osflash.org/red5" target="_blank">Red5</a></h4>
<p style="text-align: justify;">Red5 es un servidor WEB desarrollado en Java como una alternativa al <a href="http://www.adobe.com/es/products/flashmediaserver/" target="_blank">Flash Media Server (FMS)</a> para el desarrollo de aplicaciones WEB utilizando la tecnología <a href="http://www.adobe.com/es/products/flex/" target="_blank">Adobe Flex</a>, como por ejemplo, el desarrollo de aplicaciones de Streaming utilizando el protocolo <a href="http://en.wikipedia.org/wiki/Real_Time_Messaging_Protocol" target="_blank">RTMP</a>.</p>
<h3>4. Programación</h3>
<h4>Interpretes</h4>
<p style="text-align: justify;">Dado que el sistema operativo seleccionado para el servidor es una distribución Linux, estas en su mayoría brinda soporte para los siguientes lenguajes interpretados:</p>
<ul>
<li>PHP</li>
<li>Perl</li>
<li>Python</li>
<li>Ruby</li>
</ul>
<p style="text-align: justify;">En caso tal no soporte alguno de los lenguajes mencionados, Ubuntu consta con un <a href="http://doc.ubuntu-es.org/Repositorios_desde_Ubuntu" target="_blank">repositorio de programas</a> en el cual puedes encontrar el intérprete necesario.</p>
<h4>Compiladores</h4>
<p style="text-align: justify;">Actualmente en las mayorías de las distribuciones Linux existe una coleccion de compiladores conocida como <a href="http://gcc.gnu.org/" target="_blank">GCC (<em>GNU Compiler Collection</em>)</a>, el cual brinda soporte a distintos lengajes como C/C++ y Java.</p>
<h3>5. Bases de Datos</h3>
<h4>
<div class="mceTemp">
<dl id="attachment_163" class="wp-caption alignleft" style="width: 77px;">
<dt class="wp-caption-dt"><a href="http://dev.mysql.com/downloads/mysql/5.1.html" target="_blank"><img class="size-full wp-image-163" title="MySQL Logo" src="http://www.republicait.com/wp-content/uploads/2009/01/logo_mysql_sun_a.gif" alt="MySQL Logo" width="67" height="40" /></a></dt>
</dl>
</div>
<p><a href="http://dev.mysql.com/downloads/mysql/5.1.html" target="_blank">Mysql Community Server</a></h4>
<p style="text-align: justify;">MySQL es un<em> </em>servidor de base de datos de alto rendimiento, conocido también como RDBMS (<em>Relational Data Base Management System</em>) desarrollado actualmente por Sun Microsystems. La versión <em>Community</em>, es la versión gratis del servidor. MySQL es compatible con la mayoría de los lenguajes de programación y puede ser accedido desde una aplicación de escritorio o WEB.</p>
<p style="text-align: justify;">Otras bases de datos que se pueden instalar son:</p>
<ul>
<li><a href="http://db.apache.org/derby/" target="_blank">Apache Derby</a></li>
<li><a href="http://hsqldb.org/" target="_blank">HSQLDB</a></li>
<li><a href="http://www.postgresql.org/" target="_blank">PostgreSQL</a></li>
</ul>
Términos de búsqueda<ul><li><a href="http://www.republicait.com/2009/01/17/herramientas-para-un-servidor-de-desarrollo/" title="herramientas de un servidor">herramientas de un servidor</a></li><li><a href="http://www.republicait.com/2009/01/17/herramientas-para-un-servidor-de-desarrollo/" title="aplicacion flex en servidor fedora">aplicacion flex en servidor fedora</a></li><li><a href="http://www.republicait.com/2009/01/17/herramientas-para-un-servidor-de-desarrollo/" title="red5 y apache tomcat">red5 y apache tomcat</a></li><li><a href="http://www.republicait.com/2009/01/17/herramientas-para-un-servidor-de-desarrollo/" title="red5 postgresql">red5 postgresql</a></li><li><a href="http://www.republicait.com/2009/01/17/herramientas-para-un-servidor-de-desarrollo/" title="protocolo rtmp en servidores linux">protocolo rtmp en servidores linux</a></li><li><a href="http://www.republicait.com/2009/01/17/herramientas-para-un-servidor-de-desarrollo/" title="instalar un servidor de desarrollo java en fedora">instalar un servidor de desarrollo java en fedora</a></li><li><a href="http://www.republicait.com/2009/01/17/herramientas-para-un-servidor-de-desarrollo/" title="instalar derby en eclipse (fedora)">instalar derby en eclipse (fedora)</a></li><li><a href="http://www.republicait.com/2009/01/17/herramientas-para-un-servidor-de-desarrollo/" title="instalar apache derby en fedora con yum">instalar apache derby en fedora con yum</a></li><li><a href="http://www.republicait.com/2009/01/17/herramientas-para-un-servidor-de-desarrollo/" title="herramientas servidor apache">herramientas servidor apache</a></li><li><a href="http://www.republicait.com/2009/01/17/herramientas-para-un-servidor-de-desarrollo/" title="herramientas servidor">herramientas servidor</a></li></ul><!-- SEO SearchTerms Tagging 2 plugin took 3.745 ms -->]]></content:encoded>
			<wfw:commentRss>http://www.republicait.com/2009/01/17/herramientas-para-un-servidor-de-desarrollo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Configurando un ambiente de desarrollo &#8211; Parte IV</title>
		<link>http://www.republicait.com/2009/01/01/configurando-un-ambiente-de-desarrollo-parte-4/</link>
		<comments>http://www.republicait.com/2009/01/01/configurando-un-ambiente-de-desarrollo-parte-4/#comments</comments>
		<pubDate>Thu, 01 Jan 2009 16:51:53 +0000</pubDate>
		<dc:creator>dcamargo.n</dc:creator>
				<category><![CDATA[Bases de datos]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[zend studio for eclipse]]></category>

		<guid isPermaLink="false">http://www.republicait.com/?p=96</guid>
		<description><![CDATA[En esta sección veremos como configurar el Zend Studio for Eclipse para que podamos acceder a nuestro servidor MySQL.]]></description>
			<content:encoded><![CDATA[<h3>Introducción</h3>
<p>En esta sección veremos como configurar el ZSE para que funcione con MySQL.</p>
<h3>Zend Studio for Eclipse y MySQL</h3>
<p style="text-align: justify;">Lo primero que tenemos que hacer es abrir la vista del explorador de fuentes de datos, para esto nos vamos al menu <code>Window -&gt; Show View -&gt; Other...</code>, seleccionamos la carpeta <code>Connectivity -&gt; Data Source Explorer</code></p>
<div id="attachment_100" class="wp-caption aligncenter" style="width: 290px"><img class="size-full wp-image-100" title="Zend Studio for Eclipse - Show View" src="http://www.republicait.com/wp-content/uploads/2009/01/zse-view-others.jpg" alt="Zend Studio for Eclipse - Show View" width="280" height="414" /><p class="wp-caption-text">Zend Studio for Eclipse - Show View</p></div>
<p style="text-align: justify;">Ahora creamos nuestra conexión con el servidor MySQL, para esto, damos click derecho sobre la carpeta <code>SQL Databases</code> y seleccionamos <code>New...</code>, esto nos mostrará el asistente para establecer la conexión, lo que haremos es conectarnos con la base de datos de prueba de MySQL test. En el <code>Connection Name</code> colocamos <code>MySQL Test</code>, en <code>URL</code> colocamos <code>jdbc:mysql://localhost:3306/test</code>, en <code>User root</code> y el <code>Password</code> lo dejamos en blanco. Luego damos click en <code>Test connection</code> para confirmar los parametros de la conexión y si todo esta bien, damos click en <code>Finish</code>.<span id="more-96"></span></p>
<div id="attachment_101" class="wp-caption aligncenter" style="width: 510px"><img class="size-full wp-image-101" title="Zend Studio for Eclipse - New Database Connection Wizard" src="http://www.republicait.com/wp-content/uploads/2009/01/zse-new-db-con.jpg" alt="Zend Studio for Eclipse - New Database Connection Wizard" width="500" height="441" /><p class="wp-caption-text">Zend Studio for Eclipse - New Database Connection Wizard</p></div>
<blockquote><p><strong>Nota:</strong> Por defecto, la instalación del paquete XAMPP crea el usuario root sin contraseña</p></blockquote>
<p style="text-align: justify;">Una vez creada nuestra configuración, damos click derecho sobre <code>MySQL Test</code> y seleccionamos <code>Connect</code>, navegamos hasta <code>SQL Databases -&gt; MySQL Test (MySQL v. {VERSION}) -&gt; MySQL Test -&gt; Schemas -&gt; MySQL Test -&gt; Tables</code>, damos click derecho sobre la carpeta <code>Tables</code> y seleccionamos <code>New Table...</code>, esto nos mostrará el asistente para crear una nueva tabla, dejamos los valores iniciales por defecto y damos click en <code>Next</code> para crear los campos de nuestra tabla. Creamos una tabla de prueba con dos campos, id de tipo INTEGER UNSIGNED y value tipo VARCHAR de 30 caracteres.</p>
<p style="text-align: justify;">
<div id="attachment_103" class="wp-caption aligncenter" style="width: 510px"><img class="size-full wp-image-103" title="Zend Studio for Eclipse - New Table Wizard" src="http://www.republicait.com/wp-content/uploads/2009/01/zse-new-table-wizard.jpg" alt="Zend Studio for Eclipse - New Table Wizard" width="500" height="503" /><p class="wp-caption-text">Zend Studio for Eclipse - New Table Wizard</p></div>
<p style="text-align: justify;">Damos click en <code>Next</code> para crear nuestra llave primaria, en el nombre colocamos <code>PRIMARY KEY</code>, seleccionamos el campo <code>id</code> y damos click en <code>Finish</code>. Se generará automaticamente las sentencias <code>DDL</code> para la creación de nuestra tabla.</p>
<pre class="brush:sql">CREATE TABLE test_table (
	id INTEGER UNSIGNED NOT NULL,
	value VARCHAR(30) NOT NULL,
	PRIMARY KEY (id)
);</pre>
<p>Para ejecutar estas sentencias, damos click derecho sobre el código DDL y seleccionamos Execute All</p>
<div id="attachment_106" class="wp-caption aligncenter" style="width: 477px"><img class="size-full wp-image-106" title="Zend Studio for Eclipse - SQL Editor" src="http://www.republicait.com/wp-content/uploads/2009/01/zse-sqleditor-execute.jpg" alt="Zend Studio for Eclipse - SQL Editor" width="467" height="404" /><p class="wp-caption-text">Zend Studio for Eclipse - SQL Editor</p></div>
<p style="text-align: justify;">Una vez ejecutadas las sentencias, refrescamos la carpeta <code>Tables</code> de nuestro explorador de datos para que se muestre la tabla que acabamos de crear.</p>
<div id="attachment_108" class="wp-caption aligncenter" style="width: 510px"><img class="size-full wp-image-108" title="Zend Studio for Eclipse - Data Source Explorer View" src="http://www.republicait.com/wp-content/uploads/2009/01/zse-dse-view.jpg" alt="Zend Studio for Eclipse - Data Source Explorer View" width="500" height="217" /><p class="wp-caption-text">Zend Studio for Eclipse - Data Source Explorer View</p></div>
<p>Con esto tenemos un ambiente configurado listo para:</p>
<ul>
<li>Depurar una aplicación Web.</li>
<li>Trabajar en conjunto con otros programadores.</li>
<li>Acceso directo a la base de datos.</li>
</ul>
Términos de búsqueda<ul><li><a href="http://www.republicait.com/2009/01/01/configurando-un-ambiente-de-desarrollo-parte-4/" title="ambiente connection">ambiente connection</a></li><li><a href="http://www.republicait.com/2009/01/01/configurando-un-ambiente-de-desarrollo-parte-4/" title="Ambiente Connection Execute">Ambiente Connection Execute</a></li><li><a href="http://www.republicait.com/2009/01/01/configurando-un-ambiente-de-desarrollo-parte-4/" title="como hacer logueo en eclipse con sentencias de mysql">como hacer logueo en eclipse con sentencias de mysql</a></li><li><a href="http://www.republicait.com/2009/01/01/configurando-un-ambiente-de-desarrollo-parte-4/" title="conexion ext js mysql">conexion ext js mysql</a></li><li><a href="http://www.republicait.com/2009/01/01/configurando-un-ambiente-de-desarrollo-parte-4/" title="eclipse sql editor">eclipse sql editor</a></li><li><a href="http://www.republicait.com/2009/01/01/configurando-un-ambiente-de-desarrollo-parte-4/" title="extjs crear login password">extjs crear login password</a></li></ul><!-- SEO SearchTerms Tagging 2 plugin took 3.039 ms -->]]></content:encoded>
			<wfw:commentRss>http://www.republicait.com/2009/01/01/configurando-un-ambiente-de-desarrollo-parte-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Configurando un ambiente de desarrollo &#8211; Parte III</title>
		<link>http://www.republicait.com/2009/01/01/configurando-un-ambiente-de-desarrollo-parte-3/</link>
		<comments>http://www.republicait.com/2009/01/01/configurando-un-ambiente-de-desarrollo-parte-3/#comments</comments>
		<pubDate>Thu, 01 Jan 2009 13:36:22 +0000</pubDate>
		<dc:creator>dcamargo.n</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[debugging]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[svn commit]]></category>

		<guid isPermaLink="false">http://www.republicait.com/?p=70</guid>
		<description><![CDATA[En esta sección veremos como configurar el Zend Studio for Eclipse para llevar acabo un proceso de depuración de nuestra aplicación con Zend Debugger.]]></description>
			<content:encoded><![CDATA[<h3>Introducción</h3>
<p>En esta sección veremos como configurar el ZSE con Zend Debugger.</p>
<h3>ZSE y Zend Debugger</h3>
<p style="text-align: justify;">El siguiente paso es configurar el ZSE con el Zend Debugger, por defecto, el ZSE ya viene con los valores predeterminados del Zend Debugger, lo que haremos es verificar esos datos, para esto nos vamos al menu <code>Window -&gt; Preferences</code>, luego navegamos en el arbol hasta el nodo <code>PHP -&gt; Debug -&gt; Installed Debuggers</code>, damos click en <code>Zend Debugger</code> y presionamos el boton <code>Configure</code> para ver sus parametros.</p>
<div id="attachment_74" class="wp-caption aligncenter" style="width: 510px"><img class="size-full wp-image-74" title="Zend Studio for Eclipse - Zend Debugger Preferences" src="http://www.republicait.com/wp-content/uploads/2008/12/zse-zd-configuration.jpg" alt="Zend Studio for Eclipse - Zend Debugger Preferences" width="500" height="521" /><p class="wp-caption-text">Zend Studio for Eclipse - Zend Debugger Preferences</p></div>
<p>Dejamos estos valores por defecto.<span id="more-70"></span></p>
<p style="text-align: justify;">El archivo dummy.php es el que establece la conexión con el debugger el cual debemos crear bajo la ruta <code>C:\xampp\htdocs\local.testapp.com</code> con las siguientes líneas de codigo:</p>
<pre class="brush:php">&lt;?php
@ini_set('zend_monitor.enable', 0);
if(@function_exists('output_cache_disable')) {
    @output_cache_disable();
}
if(isset($_GET['debugger_connect']) &amp;&amp; $_GET['debugger_connect'] == 1) {
    if(function_exists('debugger_connect'))  {
        debugger_connect();
        exit();
    } else {
        echo "No connector is installed.";
    }
}
?&gt;</pre>
<p style="text-align: justify;">Ahora vamos crear nuestro archivo <code>testdebug.php</code>, para esto damos click derecho sobre la carpeta <code>testapp [trunk]</code> y nos vamos al menu <code>New -&gt; PHP File</code>, en <code>File Name</code> colocamos <code>testdebug.php</code> y damos click en <code>Finish</code>, hacemos doble click sobre el archivo creado y agregamos las siguientes líneas de codigo:</p>
<pre class="brush:php">&lt;?php
$str = 'Debugger test';
$pattern = '^Deb.*$';
$match = ereg($pattern,$str);
if($match)
{
    echo 'Match';
}
else
{
    echo 'Doesn\'t Match';
}
?&gt;</pre>
<p style="text-align: justify;">Ahora procedemos a crear una configuration para depurar nuestro archivo, para esto nos vamos al menu <code>Run -&gt; Debug Configurations...</code> y damos doble click sobre <code>PHP Web Page</code>, como nombre colocamos <code>TESTAPP-DEBUG-CONFIG</code>; creamos un nuevo servidor PHP que apunte a nuestro host virtual, damos click en el boton <code>New</code>, como nombre colocamos <code>TESTAPP-LOCAL-SERVER</code> y en la URL colocamos <code>http://local.testapp.com</code> y damos click en <code>Finish</code></p>
<div id="attachment_76" class="wp-caption aligncenter" style="width: 550px"><img class="size-full wp-image-76" title="Zend Studio for Eclipse - Debug Configuration" src="http://www.republicait.com/wp-content/uploads/2008/12/zse-debugger-configuration.jpg" alt="Zend Studio for Eclipse - Debug Configuration" width="540" height="419" /><p class="wp-caption-text">Zend Studio for Eclipse - Debug Configuration</p></div>
<p>Damos click en Test Debugger y debemos obtener el mensaje de confirmación</p>
<div id="attachment_79" class="wp-caption aligncenter" style="width: 513px"><img class="size-full wp-image-79" title="Zend Studio for Eclipse - Debugger Success" src="http://www.republicait.com/wp-content/uploads/2008/12/zse-debugger-confirmation.jpg" alt="Zend Studio for Eclipse - Debugger Success" width="503" height="295" /><p class="wp-caption-text">Zend Studio for Eclipse - Debugger Success</p></div>
<p style="text-align: justify;">El siguiente paso es especificar el archivo a depurar, para esto hacemos click en <code>Browse</code> y seleccionamos <code>testapp -&gt; testdebug.php</code>, le quitamos el check a <code>Break at First Line</code>, damos click en <code>Apply</code> y luego en <code>Close</code>.</p>
<div id="attachment_80" class="wp-caption aligncenter" style="width: 510px"><img class="size-full wp-image-80" title="Zend Studio for Eclipse - Debugger Configuration Preview" src="http://www.republicait.com/wp-content/uploads/2008/12/zse-debugger-configuration-preview.jpg" alt="Zend Studio for Eclipse - Debugger Configuration Preview" width="500" height="385" /><p class="wp-caption-text">Zend Studio for Eclipse - Debugger Configuration Preview</p></div>
<p style="text-align: justify;">Ahora creamos un <code>break point</code> en nuestro archivo, para esto hacemos doble click sobre cualquier número de línea a la izquierda del código, el <code>break point</code> se debe marcar con un círculo azul. Para iniciar la depuración nos vamos a nuestro ícono del <code>debug</code> y seleccionamos la configuración <code>TESTAPP-DEBUG-CONFIG</code></p>
<div id="attachment_85" class="wp-caption aligncenter" style="width: 510px"><img class="size-full wp-image-85" title="Zend Studio for Eclipse - Starting the debugger" src="http://www.republicait.com/wp-content/uploads/2009/01/zse-debugger-start.jpg" alt="Zend Studio for Eclipse - Starting the debugger" width="500" height="321" /><p class="wp-caption-text">Zend Studio for Eclipse - Starting the debugger</p></div>
<p style="text-align: justify;">Al darle click a nuestra configuración, se nos preguntará si deseamos abrir la perspectiva del debugger y le damos <code>Yes</code>, con esto se abre la perspectiva del debugger y estamos listos para depurar nuestro archivo. En esta perspectiva se puede ver diferentes aspectos de nuestro archivo, como por ejemplo valores que toman las variables en tiempo de ejecución hasta el <code>break point</code>, los procesos que se estan ejecutando, etc.</p>
<div id="attachment_87" class="wp-caption aligncenter" style="width: 540px"><img class="size-full wp-image-87" title="Zend Studio for Eclipse - Debugger Perspective" src="http://www.republicait.com/wp-content/uploads/2009/01/zse-debugger-perspective.jpg" alt="Zend Studio for Eclipse - Debugger Perspective" width="530" height="377" /><p class="wp-caption-text">Zend Studio for Eclipse - Debugger Perspective</p></div>
<p style="text-align: justify;">Ya que tenemos todo funcionando, es hora de agregar nuestro archivo al repositorio, para esto, damos click derecho sobre el archivo y nos vamos a <code>Team -&gt; Add to Version Control</code>, inmediatemente veremos que nuestro archivo aparece ahora con un símbolo de más, una vez agregado, le damos un commit a nuestro archivo para que este disponible para los demas programadores, para esto damos click derecho sobre el archivo y nos vamos a <code>Team -&gt; Commit...</code>, escribimos un comentario y damos <code>OK</code>, en caso tal el repositorio este restringido por cuentas de usuario, se les pedirá sus credenciales para hacer el <code>Commit<code>.</code></code></p>
<div id="attachment_92" class="wp-caption aligncenter" style="width: 483px"><img class="size-full wp-image-92" title="Zend Studio for Eclipse - SVN Commit" src="http://www.republicait.com/wp-content/uploads/2009/01/zse-svn-commit-wizard.jpg" alt="Zend Studio for Eclipse - SVN Commit" width="473" height="413" /><p class="wp-caption-text">Zend Studio for Eclipse - SVN Commit</p></div>
<p style="text-align: justify;">Para ver el historial de los cambios realizados, damos click derecho sobre el archivo y nos vamos al menu <code>Team -&gt; Show History</code></p>
<div id="attachment_93" class="wp-caption aligncenter" style="width: 510px"><img class="size-full wp-image-93" title="Zend Studio for Eclipse - SVN History" src="http://www.republicait.com/wp-content/uploads/2009/01/zse-svn-history.jpg" alt="Zend Studio for Eclipse - SVN History" width="500" height="189" /><p class="wp-caption-text">Zend Studio for Eclipse - SVN History</p></div>
Términos de búsqueda<ul><li><a href="http://www.republicait.com/2009/01/01/configurando-un-ambiente-de-desarrollo-parte-3/" title="zend studio debugger">zend studio debugger</a></li><li><a href="http://www.republicait.com/2009/01/01/configurando-un-ambiente-de-desarrollo-parte-3/" title="debug zend studio">debug zend studio</a></li><li><a href="http://www.republicait.com/2009/01/01/configurando-un-ambiente-de-desarrollo-parte-3/" title="zend studio svn">zend studio svn</a></li><li><a href="http://www.republicait.com/2009/01/01/configurando-un-ambiente-de-desarrollo-parte-3/" title="Configurar Zend Studio">Configurar Zend Studio</a></li><li><a href="http://www.republicait.com/2009/01/01/configurando-un-ambiente-de-desarrollo-parte-3/" title="debug zendstudio">debug zendstudio</a></li><li><a href="http://www.republicait.com/2009/01/01/configurando-un-ambiente-de-desarrollo-parte-3/" title="zend studio debug">zend studio debug</a></li><li><a href="http://www.republicait.com/2009/01/01/configurando-un-ambiente-de-desarrollo-parte-3/" title="como configurar el zend para depurar">como configurar el zend para depurar</a></li><li><a href="http://www.republicait.com/2009/01/01/configurando-un-ambiente-de-desarrollo-parte-3/" title="fichero dummy zend development">fichero dummy zend development</a></li><li><a href="http://www.republicait.com/2009/01/01/configurando-un-ambiente-de-desarrollo-parte-3/" title="function_exists(debugger_connect)">function_exists(debugger_connect)</a></li><li><a href="http://www.republicait.com/2009/01/01/configurando-un-ambiente-de-desarrollo-parte-3/" title="eclipse debug xampp">eclipse debug xampp</a></li></ul><!-- SEO SearchTerms Tagging 2 plugin took 4.672 ms -->]]></content:encoded>
			<wfw:commentRss>http://www.republicait.com/2009/01/01/configurando-un-ambiente-de-desarrollo-parte-3/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
