<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>ixmael.ar+s</title>
	<atom:link href="http://ixmael.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://ixmael.wordpress.com</link>
	<description>Todavía no sé qué me vas a preguntar, pero me opongo. [Marx Groucho]</description>
	<lastBuildDate>Sat, 14 Jan 2012 10:00:02 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='ixmael.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>ixmael.ar+s</title>
		<link>http://ixmael.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://ixmael.wordpress.com/osd.xml" title="ixmael.ar+s" />
	<atom:link rel='hub' href='http://ixmael.wordpress.com/?pushpress=hub'/>
		<item>
		<title>My Birthday</title>
		<link>http://ixmael.wordpress.com/2012/01/06/my-birthday/</link>
		<comments>http://ixmael.wordpress.com/2012/01/06/my-birthday/#comments</comments>
		<pubDate>Fri, 06 Jan 2012 16:03:57 +0000</pubDate>
		<dc:creator>ixmael.arts</dc:creator>
				<category><![CDATA[personal]]></category>

		<guid isPermaLink="false">http://ixmael.wordpress.com/?p=1098</guid>
		<description><![CDATA[That&#8217;s all!<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ixmael.wordpress.com&amp;blog=81682&amp;post=1098&amp;subd=ixmael&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>That&#8217;s all!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ixmael.wordpress.com/1098/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ixmael.wordpress.com/1098/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ixmael.wordpress.com/1098/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ixmael.wordpress.com/1098/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ixmael.wordpress.com/1098/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ixmael.wordpress.com/1098/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ixmael.wordpress.com/1098/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ixmael.wordpress.com/1098/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ixmael.wordpress.com/1098/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ixmael.wordpress.com/1098/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ixmael.wordpress.com/1098/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ixmael.wordpress.com/1098/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ixmael.wordpress.com/1098/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ixmael.wordpress.com/1098/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ixmael.wordpress.com&amp;blog=81682&amp;post=1098&amp;subd=ixmael&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ixmael.wordpress.com/2012/01/06/my-birthday/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/35b671e411e1c407366e6f5ee04bf09f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ixmael</media:title>
		</media:content>
	</item>
		<item>
		<title>FormValidate</title>
		<link>http://ixmael.wordpress.com/2011/01/03/formvalidate/</link>
		<comments>http://ixmael.wordpress.com/2011/01/03/formvalidate/#comments</comments>
		<pubDate>Mon, 03 Jan 2011 19:34:55 +0000</pubDate>
		<dc:creator>ixmael.arts</dc:creator>
				<category><![CDATA[Computación]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[trabajo]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://ixmael.wordpress.com/?p=1048</guid>
		<description><![CDATA[El motivo de este post es para presentar una clase que ayuda al procesamiento de formularios en PHP (también estará la versión Java) teniendo en cuenta su facilidad de uso (como jQuery Validate). Para descargarlo acá tienen el desarrollo (y el ejemplo): FormValidate. Configuración Para tener una forma de hacer cambios rápidos sin tener que [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ixmael.wordpress.com&amp;blog=81682&amp;post=1048&amp;subd=ixmael&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>El motivo de este post es para presentar una clase que ayuda al procesamiento de formularios en PHP (también estará la versión Java) teniendo en cuenta su facilidad de uso (como<a href="http://bassistance.de/jquery-plugins/jquery-plugin-validation/"> jQuery Validate</a>).</p>
<p>Para descargarlo acá tienen el desarrollo (y el ejemplo): <a href="http://www.mediafire.com/?oab7712himr0nbd">FormValidate</a>.</p>
<h2>Configuración</h2>
<p>Para tener una forma de hacer cambios rápidos sin tener que hacer modificaciones en el código se usa un archivo ini, en la que para cada campo a considerar se define una sección y sus atributos a validar, por ejemplo:</p>
<pre><span style="color:#3366ff;">;ESTE ARCHIVO ES UN EJEMPLO PARA PHPTools -&gt; FomrValidate

;Campo para evitar los robots
[f0]
type=security

;Campo de tipo númerico
[f1]
type=number
min=5
required=true

;Campo de tipo mail
[f2]
type=mail

;Campo que requiere una expresión regular
[f3]
type=regex
regexstr="/^[_\.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$/i"
max=100
required=true

;Campo con un tamaño mínimo de 20 caracteres
[f4]
min=20</span></pre>
<p>donde:</p>
<ul>
<li>f0: se usa para evitar robots, si el campo llega con información, se debe desechar la información.</li>
<li>f1: se valida que sea un número mayor o igual a 5 y siempre debe tener información.</li>
<li>f2: se valida que sea un correo electrónico válido.</li>
<li>f3: se valida que cumpla con la expresión regular (regexstr) usando la función PHP preg_match, con un máximo de 100 caracteres y siempre debe tener información.</li>
<li>f4: se valida que el tamaño mínimo sea de 20 caracteres.</li>
</ul>
<h2>Uso</h2>
<p>Ahora para poder validar los datos enviados al servidor, vamos a hacer uso de este script:</p>
<pre><span style="color:#3366ff;">&lt;?php
include "PHPTools/FormValidate.php";

$form = new FormValidate(array(
                'get' =&gt; true,
                'path' =&gt; 'properties',
                'ini' =&gt; 'form'
));
// limpiar entrada
$form-&gt;escape();
// validar
$form-&gt;validate();
?&gt;</span></pre>
<p>En la descarga de FormValidate el ejemplo muestra el arreglo antes de ser validado y después (que agrega mensajes de error y llena el arreglo de errores en caso de existir).</p>
<h2>Especificaciones</h2>
<p>Estos son los valores de los parámetros usados para la configuración:</p>
<ul>
<li>required: determina si el campo es necesario.</li>
<li>type: especifica como se tiene que validar el dato. Sólo se pueden usar security, number, mail y regex.</li>
<li>max: Tamaño/valor máximo del campo; si es number se compara directamente, en otro caso se compara el tamaño de la cadena.</li>
<li>min: Tamaño/valor mínimodel campo; si es number se compara directamente, en otro caso se compara el tamaño de la cadena.</li>
<li>regexstr: Cadena con la expresión regular (se usa la función preg_match), debe de ir entre comillas.</li>
</ul>
<p>Estos son los valores de los parámetros para  el uso de la clase FormValidate</p>
<ul>
<li>get: con el valor true determina si se va a procesar los valores de $_GET, si no se define usa los valores de $_POST</li>
<li>path: determina el path donde se encuentra el archivo ini</li>
<li>ini: el nombre del archivo ini. También se puede definir un array con las propiedades y así evitar el uso del archivo ini.</li>
</ul>
<h2>TODO</h2>
<p>Estas son algúnas tareas que faltan en este desarrollo:</p>
<ul>
<li>Agregar tipos de datos especiales (por ejemplo: fecha).</li>
<li>Cambiar el parámetro para la clase FormValidate para usar $_GET.</li>
<li>Hacer más flexible el sistema de mensajes de error.</li>
<li><strong>Dependencia entre campos</strong>.</li>
</ul>
<h2>Licencia</h2>
<p>Este clase tiene la <a href="http://www.opensource.org/licenses/mit-license.php">licencia MIT</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ixmael.wordpress.com/1048/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ixmael.wordpress.com/1048/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ixmael.wordpress.com/1048/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ixmael.wordpress.com/1048/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ixmael.wordpress.com/1048/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ixmael.wordpress.com/1048/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ixmael.wordpress.com/1048/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ixmael.wordpress.com/1048/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ixmael.wordpress.com/1048/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ixmael.wordpress.com/1048/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ixmael.wordpress.com/1048/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ixmael.wordpress.com/1048/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ixmael.wordpress.com/1048/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ixmael.wordpress.com/1048/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ixmael.wordpress.com&amp;blog=81682&amp;post=1048&amp;subd=ixmael&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ixmael.wordpress.com/2011/01/03/formvalidate/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/35b671e411e1c407366e6f5ee04bf09f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ixmael</media:title>
		</media:content>
	</item>
		<item>
		<title>¡Fin de trimestre!</title>
		<link>http://ixmael.wordpress.com/2010/11/29/fin-de-trimestre/</link>
		<comments>http://ixmael.wordpress.com/2010/11/29/fin-de-trimestre/#comments</comments>
		<pubDate>Mon, 29 Nov 2010 19:46:03 +0000</pubDate>
		<dc:creator>ixmael.arts</dc:creator>
				<category><![CDATA[escuela]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[UAM]]></category>

		<guid isPermaLink="false">http://ixmael.wordpress.com/?p=1046</guid>
		<description><![CDATA[Pues ya se va a acabar otro trimestre en la UAM y antes de encerrarme por completo en temas relacionados con la escuela, me permito escribir esto. He llevado redes de telecomunicaciones y me encanto y ahora tengo en mente porque HTTP es tan inseguro (jeje, es lo que imagino, pero falta corroborarlo). En mi [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ixmael.wordpress.com&amp;blog=81682&amp;post=1046&amp;subd=ixmael&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Pues ya se va a acabar otro trimestre en la UAM y antes de encerrarme por completo en temas relacionados con la escuela, me permito escribir esto.</p>
<p>He llevado redes de telecomunicaciones y me encanto y ahora tengo en mente porque HTTP es tan inseguro (jeje, es lo que imagino, pero falta corroborarlo).</p>
<p>En mi proyecto de investigación he aprendido a usar GTK y regresar a programar con C (que hubiera preferido python, pero no se puede todo en la vida).</p>
<p>Saludos.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ixmael.wordpress.com/1046/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ixmael.wordpress.com/1046/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ixmael.wordpress.com/1046/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ixmael.wordpress.com/1046/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ixmael.wordpress.com/1046/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ixmael.wordpress.com/1046/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ixmael.wordpress.com/1046/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ixmael.wordpress.com/1046/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ixmael.wordpress.com/1046/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ixmael.wordpress.com/1046/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ixmael.wordpress.com/1046/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ixmael.wordpress.com/1046/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ixmael.wordpress.com/1046/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ixmael.wordpress.com/1046/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ixmael.wordpress.com&amp;blog=81682&amp;post=1046&amp;subd=ixmael&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ixmael.wordpress.com/2010/11/29/fin-de-trimestre/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/35b671e411e1c407366e6f5ee04bf09f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ixmael</media:title>
		</media:content>
	</item>
		<item>
		<title>Automatizando en el desarrollo</title>
		<link>http://ixmael.wordpress.com/2010/09/15/automatizando-desarrollo/</link>
		<comments>http://ixmael.wordpress.com/2010/09/15/automatizando-desarrollo/#comments</comments>
		<pubDate>Wed, 15 Sep 2010 17:11:33 +0000</pubDate>
		<dc:creator>ixmael.arts</dc:creator>
				<category><![CDATA[Computación]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[trabajo]]></category>
		<category><![CDATA[apache ant]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[develop]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[modx]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://ixmael.wordpress.com/?p=998</guid>
		<description><![CDATA[Este artículo se basa en mi experiencia en el trabajo, desarrollo de aplicaciones web, y de llevar a estas el requerimiento no funcional del rendimiento del navegador al momento de hacer el render de la página. Para poder medir este requerimiento use la herramienta web GTmetrix que realiza dos pruebas (YSlow y Page Speed) de [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ixmael.wordpress.com&amp;blog=81682&amp;post=998&amp;subd=ixmael&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Este artículo se basa en mi experiencia en el trabajo, desarrollo de aplicaciones web, y de llevar a estas el requerimiento no funcional del rendimiento del navegador al momento de hacer el render de la página. Para poder medir este requerimiento use la herramienta web <a href="http://gtmetrix.com/">GTmetrix</a> que realiza dos pruebas (YSlow y Page Speed) de la página web a mostrar.</p>
<p>Hasta este momento parte de mi trabajo ha sido trabajar con el CMS <a href="http://modxcms.com/">modx</a>, que pesar de tener una nueva versión llamada revolution (con muchas mejoras sobre la versión anterior), sigue con el problema de manejar el código (html o php) a través de la base de datos y dificultando su manejo a través de su administrador. Para paliar este problema, y mostrar las maravillas de automatizar tareas, realize una clase en Java para interactuar entre archivos físicos (de tu ambiente de desarrollo) y la base de datos con el código de estos (sin tener que abrir el administrador de modx).</p>
<h2>(Algunas) herramientas para automatizar</h2>
<p>Para automatizar tenemos muchas herramientas que permiten hacerlo, como por ejemplo, scripts de shell o archivos de procesos por lotes. Debido a que son herramientas que cubren necesidades diferentes preferí no apegarme a una de estas opciones, en cambio, dada la extensión del lenguaje Java y las herramientas basadas en este lenguaje que permiten automatizar tareas en el desarrollo decidí usar <a href="http://ant.apache.org/">Apache Ant</a>.</p>
<p>Si buscas compresores para CSS o Javascript hay muchos online, que desde mi punto de vista son buenos para hacer el proceso una sola vez. Sin embargo, si deseas integrar esta actividad de manera continua en tus proyectos creo que verás que no es ameno estar desarrollando en x programa, abrirlo, copiar el contenido del archivo, pegarlo en el navegador y poner el resultado en un nuevo archivo. Por este motivo para la compresión de las hojas de estilos y archivos javascript he usado <a href="http://developer.yahoo.com/yui/compressor/">YUI Compressor</a> que es una clase Java y que se puede ejecutar desde línea de comandos. Para la compresión de HTML use la herramienta <a href="http://code.google.com/p/htmlcompressor/">HTML Compressor</a> que básicamente cambia los saltos de línea y tabuladores en espacios en blanco.</p>
<p>Para el manejo de los elementos de modx hice una clase en Java (para ejecutar desde la línea de comandos) y evitar trabajar con estos a través del navegador (dejando la tarea del desarrollo a herramientas hechas para esto). Al desarrollo lo llame <a href="http://www.mediafire.com/file/xuvelddt09vcv9f/modxConnect.zip">modxConnect</a> y la idea es que una vez que se encuentra comprimidos los elementos (html) modxConnect inserte el contenido de los elementos en la base de datos de modx. Falta mucho desarrollo, pero es un primer acercamiento.</p>
<p>Para los siguientes pasos supongo que ya esta configurado todo este ambiente:</p>
<ul>
<li>Java (si ya esta configurado el acceso al classpath mejor)</li>
<li>Apache Ant que este accesible desde línea de comandos (lo puedes agregar al classpath) y si no pues tienes que poner la ruta completa del ejecutable (en <a href="http://ant.apache.org/manual/index.html">Apache Ant User Manual</a> puedes encontrar como instalarlo y empezar a usarlo).</li>
<li>YIU Compressor, HTML Compressor y modxConnect accesibles a través de la línea de comandos (o configurando el archivo de Apache Ant para determinar la ruta de donde se encuentran).</li>
</ul>
<p>Ahora ya que tienes listo este ambiente de desarrollo vamos a empezar la configuración para la automatización.</p>
<h2>Configurar</h2>
<p>Uno de los beneficios de Apache Ant, es que solo tienes que crear un archivo XML llamado build.xml (por lo general, pero puedes hacer referencia a otro archivo) y es donde definirás las tareas (targets) repetitivas que deseas realizar de manera automática. La estructura básica del archivo build.xml es:</p>
<pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;project name="NombreProjecto" default="clean" basedir="."&gt;
	&lt;property file="build.properties" /&gt;
	&lt;target name="clean" depends="" description=""&gt;
		&lt;delete dir="${build}" /&gt;
		&lt;delete dir="${dist}" /&gt;
	&lt;/target&gt;
	&lt;target name="clean" depends="" description=""&gt;
		&lt;delete dir="${build}" /&gt;
		&lt;delete dir="${dist}" /&gt;
	&lt;/target&gt;
&lt;/project&gt;</pre>
<p>Ahora comentemos un poco de las etiquetas (que puedes ver más a detalle en <a href="http://ant.apache.org/manual/index.html">Apache Ant User Manual</a>):</p>
<ul>
<li><strong>project</strong>: se usa para definir información al proyecto. El atributo <em>name </em>es para asociarle un nombre, <em>default </em>es la tarea (target) que se ejecutará por default y <em>basedir </em>para asociar el directorio sobre el que se estará trabajando.</li>
<li><strong>property</strong>: se usa para asociar &#8220;variables&#8221; al archivo build.xml, puedes ponerlas directamente o asociar un archivo properties con los valores, a los que haces referencia con los placeholders <em>${nombreVariable}</em><em>.</em></li>
<li><strong>target</strong>: es la definición de una tarea que realizará. El atributo <em>name </em>es el nombre de esta (y como será llamada por Ant), <em>depends </em>es la lista de tareas que deben completarse antes de llevar a cabo la tarea seleccionada y <em>description </em>es una descripción de la tarea.</li>
</ul>
<p>Antes de continuar, necesitamos la información del archivo build.properties:</p>
<pre>dir.src=src
dir.build=build
dir.sub=assets
dir.js=js
dir.css=css
dir.server=C:/servers/xampp/htdocs/app
dir.chunks=chunks
dir.lib=lib
dir.classPHP=class
dir.processPHP=process
dir.propertiesPHP=properties
dir.modx=C:/servers/xampp/htdocs/cmsModx
dir.ftp=urlFTP
server.dir=00.000.00.00
server.usr=usuario
server.pwd=password
file.css=style.css
file.js=scripts.js
file.chunk.css=html.css.xhtml
file.chunk.js=html.js.xhtml
dir.compressor=C:/tools/yuicompressor-2.4.2/build
class.compressor=yuicompressor-2.4.2.jar
dir.compressorHTML=C:/tools/htmlcompressor
class.compressorHTML=htmlcompressor-0.9.1.jar</pre>
<p>Y ya que se definió una tarea, para realizarla necesitas llamar a ant y darle el nombre de la tarea como parámetro:</p>
<pre>ant nombreTarget</pre>
<p>Una de las primeras tareas, y practicas en Java, es tener por separado el ambiente de desarrollo y el ambiente de producción, que por lo general es la compilación de los fuentes, pero en este caso solo será los archivos fuentes con cierto proceso (compresión) y para llevar a cabo esta tarea, se puede definir una tarea como la que sigue:</p>
<pre>&lt;target name="makeDirs" description="Crea los directorios sobre los que se trabajara"&gt;
	&lt;copy todir="${dir.build}"&gt;
		&lt;fileset dir="${dir.src}"&gt;
			&lt;exclude name="**/*.*" /&gt;
			&lt;exclude name="**/js/src/**" /&gt;
		&lt;/fileset&gt;
	&lt;/copy&gt;
&lt;/target&gt;</pre>
<ul>
<li><strong>copy</strong>: copia los archivos/directorios a donde se indique <em>todir</em>.</li>
<li><strong>fileset</strong>: define, a través de <em>dir</em>, los archivos que serán copiados.</li>
<li><strong>exclude</strong>: define la referencia de los archivos que no deben ser copiados a <em>todir</em>, se pueden usar comodines (** significa que no importa la carpeta)</li>
</ul>
<p>Para este caso solo se crea la estructura de directorios (como lo tengas en desarrollo) ya que en otras tareas se harán los procesos para comprimir los diferentes tipos de archivos. Puedes permitir copiar las clases PHP o las imágenes desde un principio (aunque más adelante puedo dar unas ideas para no hacerlo aún).</p>
<p>Empecemos a hacer una de las tareas repetitivas: comprimir CSS y JS. Si se dificulta tener una sóla hoja de estilos (siempre es más ordenado separar los estilos de las secciones en diferentes archivos) entonces primero juntemos toda la información de las hojas de estilos en un sólo archivo (lo mismo pasa con los archivos de los javascripts), para eso se pueden hacer unas tareas como estas:</p>
<pre>&lt;target name="conCSS" description="Concatena los CSS a un archivo en el directorio BUILD"&gt;
	&lt;concat destfile="${dir.build}/${dir.sub}/${dir.css}/${file.css}" force="no"&gt;
		&lt;filelist dir="${dir.src}/${dir.sub}"&gt;
			&lt;file name="${dir.css}/charset.css" /&gt;
			&lt;file name="${dir.css}/reset.css" /&gt;
			&lt;file name="${dir.css}/estilo1.css" /&gt;
			&lt;file name="${dir.css}/estilo2.css" /&gt;
			&lt;file name="${dir.css}/estilo3.css" /&gt;
		&lt;/filelist&gt;
	&lt;/concat&gt;
&lt;/target&gt;
&lt;target name="conJS" description="Concatena los JS a un archivo en el directorio BUILD"&gt;
	&lt;concat destfile="${dir.build}/${dir.sub}/${dir.js}/${file.js}" force="no"&gt;
		&lt;filelist dir="${dir.src}/${dir.sub}"&gt;
			&lt;file name="${dir.js}/jquery-1.4.2.js" /&gt;
			&lt;file name="${dir.js}/jquery.ui.core.js" /&gt;
			&lt;file name="${dir.js}/jquery.ui.widget.js" /&gt;
			&lt;file name="${dir.js}/jquery.ui.mouse.js" /&gt;
			&lt;file name="${dir.js}/jquery.ui.draggable.js" /&gt;
			&lt;!-- wrapper &gt; --&gt;
			&lt;file name="${dir.js}/wrapStart.js" /&gt;
			&lt;file name="${dir.js}/main1.js" /&gt;
			&lt;file name="${dir.js}/main2.js" /&gt;
			&lt;file name="${dir.js}/main3.js" /&gt;
			&lt;file name="${dir.js}/wrapEnd.js" /&gt;
			&lt;!-- &lt; wrapper --&gt;
		&lt;/filelist&gt;
	&lt;/concat&gt;
&lt;/target&gt;</pre>
<ul>
<li><strong>concat</strong>: con esta tarea concatenas los archivos (de filelist) en el path/archivo definido en <em>destfile</em>.</li>
<li><strong>filelist</strong>: define los archivos que serán concatenados. Si agregas uno más Ant automáticamente lo incluirá en el archivo final.</li>
<li>En la tarea de la compresión de los javascript puse dos archivos para crear el template de carga de las acciones de jQuery, donde <em>$document.ready(function() { </em>esta en  wrapStart.js mientras que en wrapEnd.js se encuentra <em>});</em></li>
</ul>
<p>Comprimir los archivos de CSS y JS ya concatenados (con el YUI Compressor):</p>
<pre>&lt;target name="compressCSS" description="comprime el CSS de BUILD" depends="conCSS"&gt;
	&lt;exec executable="cmd"&gt;
		&lt;arg line="/c java -jar ${dir.compressor}/${class.compressor} ${dir.build}/${dir.sub}/${dir.css}/${file.css} -o ${dir.build}/${dir.sub}/${dir.css}/${file.css} " /&gt;
	&lt;/exec&gt;
&lt;/target&gt;

&lt;target name="compressJS" description="comprime el js de BUILD" depends="conJS"&gt;
	&lt;exec executable="cmd"&gt;
		&lt;arg line="/c java -jar ${dir.compressor}/${class.compressor} ${dir.build}/${dir.sub}/${dir.js}/${file.js} -o ${dir.build}/${dir.sub}/${dir.js}/${file.js} " /&gt;
	&lt;/exec&gt;
&lt;/target&gt;</pre>
<ul>
<li><strong>exec</strong>: establece que se usará una instrucción de línea de comando.</li>
<li><strong>arg</strong>: es propiamente la llamada a la instrucción para comprimir el archivo.</li>
</ul>
<p>Con esto ejecuta</p>
<pre>ant compressJS compressCSS</pre>
<p>y siempre se generarán los archivos de JS y CSS comprimidos.</p>
<p>Los archivos HTML y PHP son muchos y no tiene caso que los concatenemos, pero si se puede &#8220;comprimir&#8221; (eliminar los metacaracteres) para agilizar la transferencia de los archivos. Esto se resuelve con la siguiente tarea:</p>
<pre>&lt;target name="compressAll" depends="makeDirs"&gt;
	&lt;apply executable="java" parallel="false"&gt;
		&lt;fileset dir="${dir.src}/" includes="**/*.html,**/*.php,**/*.xhtml"&gt;
			&lt;exclude name="**/config/**" /&gt;
			&lt;exclude name="**/css/**" /&gt;
			&lt;exclude name="**/js/**" /&gt;
			&lt;exclude name="**/lib/**" /&gt;
			&lt;exclude name="pagina1.php" /&gt;
			&lt;exclude name="pagina2.php" /&gt;
			&lt;exclude name="pagina3.php" /&gt;
		&lt;/fileset&gt;
		&lt;arg value="-jar"/&gt;
		&lt;arg path="${dir.compressorHTML}/${class.compressorHTML}"/&gt;
		&lt;arg line="--type html"/&gt;
		&lt;srcfile/&gt;
		&lt;arg value="-o"/&gt;
		&lt;mapper type="glob" from="*" to="${dir.build}/*"/&gt;
		&lt;targetfile/&gt;
	&lt;/apply&gt;
	&lt;copy todir="${dir.build}/${dir.sub}/${dir.lib}"&gt;
		&lt;fileset dir="${dir.src}/${dir.sub}/${dir.lib}" includes="**/*.php"&gt;&lt;/fileset&gt;
	&lt;/copy&gt;
&lt;/target&gt;</pre>
<ul>
<li><strong>apply</strong>: es otra forma de ejecutar un comando (en línea de comandos) aplicado a los archivos definidos por fileset.</li>
<li><strong>fileset</strong>: conjunto de archivos que serán comprimidos. En includes se seleccionan todos los archivos HTML, PHP y XHTML, excepto <em>pagina1.php</em>, <em>pagina2.php</em> y <em>pagina3.php</em>.</li>
<li><strong>arg</strong>: argumentos para la llamada de la línea de comandos.</li>
<li><strong>srcfile</strong>: referencia al archivo de fileset.</li>
<li><strong>mapper</strong>: define la salida del archivo.</li>
<li>Al final copia todos los archivos excluidos (clases de PHP) a la carpeta build.</li>
</ul>
<p>Por último resolvemos el inconveniente de modx respecto a los elementos con modxConnect. La definición de la tarea:</p>
<pre>&lt;target name="copyServer" depends="compressJS,compressCSS,compressAll"&gt;
	&lt;exec executable="cmd"&gt;
		&lt;arg line="/c C:\Java\jdk1.6.0_03/bin/java -jar C:\tool\modxConnect.jar" /&gt;
	&lt;/exec&gt;
	&lt;!-- limpiar el cache del modx --&gt;
	&lt;exec executable="cmd"&gt;
		&lt;arg line="/c curl http://SITEURE/clearCache.html" /&gt;
	&lt;/exec&gt;
&lt;/target&gt;</pre>
<ul>
<li>El primer comando es para llamar a la clase que hace el mapeo (modxConnect). Como se encuentra no es funcional (por la configuración que se encuentra en los archivos properties del jar). Para poder usarlo tienes que configurar la base de datos, los paths donde se encontrarán los archivos (ya comprimidos) y crear los chunks a través del modx y después ligar el archivo físico con el id del chunk (en los archivos properties vienen comentarios al respecto).</li>
<li>El segundo comando es para limpiar la cache del modx. Se necesita definir un documento y asociarle el snippet con el código siguiente:</li>
</ul>
<pre>&lt;?php
// Snippet para limpiar la cache
$paths = array(
	'config.cache.php',
	'sitePublishing.idx.php',
	'registry/mgr/workspace/',
	'lexicon/'
);
$contexts = $modx-&gt;getCollection('modContext');
foreach ($contexts as $context) {
	$paths[] = $context-&gt;get('key') . '/';
}
$options = array(
	'publishing' =&gt; 1,
	'extensions' =&gt; array('.cache.php', '.msg.php', '.tpl.php'),
);
if ($modx-&gt;getOption('cache_db')) $options['objects'] = '*';
	$results= $modx-&gt;cacheManager-&gt;clearCache($paths, $options);
return 'OK';
?&gt;</pre>
<p>Ya configuraste todo, pero no te olvides de agregar una tarea que borre todo lo que generaste</p>
<pre>&lt;target name="clean" description="limpiar los paths"&gt;
	&lt;delete dir="${dir.build}" /&gt;
	&lt;delete dir="${dir.server}" /&gt;
&lt;/target&gt;</pre>
<h2>Que lo haga la computadora</h2>
<p>La parte más sencilla de esto: usar Apache Ant. Una de las ventajas de modularizar la construcción, es que puedes hacer cualquier paso intermedio y no tener siempre que ejecutar todo, por esa razón se separo la concatenación de los archivos de la compresión o la creación de el árbol de producción.</p>
<p>Para ejecutar todas las tareas, ponemos</p>
<pre>ant compressAll</pre>
<p>Por ejemplo, esta modificando la hoja de estilos y solo quieres concatenar los archivos (sin comprimir) sólo ejecutas</p>
<pre>ant compressCSS</pre>
<p>y ya solo subes el archivo y haces el debug (lo mismo se puede hacer con los javascript).</p>
<h2>Conclusiones</h2>
<p>Este artículo se centra en mejorar algunos procesos en el desarrollo de software. Después de estar trabajando un tiempo de esta manera mi experiencia me dice que HAY QUE ORGANIZAR LOS PROYECTOS (y esto incluye como se implementará) para atender procesos que son susceptibles de automatizar y mejorar la calidad en este rubro.</p>
<p>También es dar algunas ideas respecto a lo que se me ocurre automatizar:</p>
<ul>
<li>Esteganografía: crear procesos que oculten datos dentro de imágenes (el uso más sencillo que he visto al respecto) como inyectar claves en ciertas imagenes del sitio web.</li>
<li>FTP: subir cierta parte del desarrollo (como las imágenes) sin tener que abrir el programa FTP.</li>
<li>Ambientes de desarrollo: generar la estructura general de los proyectos siempre que se inicie (sin estar apegado a un IDE).</li>
<li>Criptografía: hacer procesos para encriptar información (en la base de datos o en archivos).</li>
<li>Desarrollo: puedes poner códigos que midan el tiempo de cierta sección (consulta a la base de datos por ejemplo) y que en la aplicación final no necesitas.</li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ixmael.wordpress.com/998/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ixmael.wordpress.com/998/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ixmael.wordpress.com/998/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ixmael.wordpress.com/998/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ixmael.wordpress.com/998/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ixmael.wordpress.com/998/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ixmael.wordpress.com/998/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ixmael.wordpress.com/998/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ixmael.wordpress.com/998/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ixmael.wordpress.com/998/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ixmael.wordpress.com/998/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ixmael.wordpress.com/998/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ixmael.wordpress.com/998/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ixmael.wordpress.com/998/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ixmael.wordpress.com&amp;blog=81682&amp;post=998&amp;subd=ixmael&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ixmael.wordpress.com/2010/09/15/automatizando-desarrollo/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/35b671e411e1c407366e6f5ee04bf09f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ixmael</media:title>
		</media:content>
	</item>
		<item>
		<title>i love this</title>
		<link>http://ixmael.wordpress.com/2010/07/29/i-love-thi/</link>
		<comments>http://ixmael.wordpress.com/2010/07/29/i-love-thi/#comments</comments>
		<pubDate>Thu, 29 Jul 2010 21:23:10 +0000</pubDate>
		<dc:creator>ixmael.arts</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://ixmael.wordpress.com/?p=988</guid>
		<description><![CDATA[Me encanto este theme de wordpress.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ixmael.wordpress.com&amp;blog=81682&amp;post=988&amp;subd=ixmael&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Me encanto este theme de wordpress.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ixmael.wordpress.com/988/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ixmael.wordpress.com/988/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ixmael.wordpress.com/988/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ixmael.wordpress.com/988/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ixmael.wordpress.com/988/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ixmael.wordpress.com/988/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ixmael.wordpress.com/988/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ixmael.wordpress.com/988/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ixmael.wordpress.com/988/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ixmael.wordpress.com/988/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ixmael.wordpress.com/988/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ixmael.wordpress.com/988/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ixmael.wordpress.com/988/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ixmael.wordpress.com/988/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ixmael.wordpress.com&amp;blog=81682&amp;post=988&amp;subd=ixmael&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ixmael.wordpress.com/2010/07/29/i-love-thi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/35b671e411e1c407366e6f5ee04bf09f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ixmael</media:title>
		</media:content>
	</item>
		<item>
		<title>Desilusionado</title>
		<link>http://ixmael.wordpress.com/2010/06/02/desilusionado-2/</link>
		<comments>http://ixmael.wordpress.com/2010/06/02/desilusionado-2/#comments</comments>
		<pubDate>Wed, 02 Jun 2010 14:24:06 +0000</pubDate>
		<dc:creator>ixmael.arts</dc:creator>
				<category><![CDATA[Computación]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[trabajo]]></category>

		<guid isPermaLink="false">http://ixmael.wordpress.com/?p=986</guid>
		<description><![CDATA[¿Han sentido que lo que hacen (trabajo) es una basura? Pues yo en este momento siento eso y no por lo que hago, sino por la retribución que tengo de este. Sigo trabajando de medio tiempo y esa es la excusa de no tener un sueldo acorde a mi trabajo y que solo se acercan [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ixmael.wordpress.com&amp;blog=81682&amp;post=986&amp;subd=ixmael&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>¿Han sentido que lo que hacen (trabajo) es una basura? Pues yo en este momento siento eso y no por lo que hago, sino por la retribución que tengo de este.</p>
<p>Sigo trabajando de medio tiempo y esa es la excusa de no tener un sueldo acorde a mi trabajo y que solo se acercan a pedirme más tiempo de trabajo a cambio de más dinero (ni siquiera lo hicieron al revés).</p>
<p>No debería compararme con otras personas, pero la verdad me causa indignación como otras personas crecen (al menos económicamente) siendo que su trabajo y el mio son equivalentes, con la diferencia claro de que yo trabajo medio tiempo, no gozo de todo el tiempo muerto que hay en un horario de tiempo completo (es natural, no lo juzgo) y desde mi punto de vista he respondido adecuadamente a las peticiones del trabajo (siempre mejorando lo que hago).</p>
<p>¿Debería de platicarlo con las personas que están al frente de la empresa? La verdad es que me han dado motivos para pensar que no les importa lo que piensen las personas (de abajo) y solo te ven como un recurso (cuando dicen esto me siento como un pisapapeles).</p>
<p>¿Qué hacer? En primer lugar <strong>seguir trabajando como sé hacerlo</strong> (organizadamente, abierto a las críticas, mejorando lo que siento que se puede mejorar y aprendiendo) aunque no se retribuya hacia mi esto y en segundo lugar recordar que <strong>mi objetivo es crear cosas más trascendentes para la humanidad</strong> que solo hacer páginas web.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ixmael.wordpress.com/986/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ixmael.wordpress.com/986/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ixmael.wordpress.com/986/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ixmael.wordpress.com/986/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ixmael.wordpress.com/986/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ixmael.wordpress.com/986/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ixmael.wordpress.com/986/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ixmael.wordpress.com/986/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ixmael.wordpress.com/986/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ixmael.wordpress.com/986/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ixmael.wordpress.com/986/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ixmael.wordpress.com/986/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ixmael.wordpress.com/986/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ixmael.wordpress.com/986/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ixmael.wordpress.com&amp;blog=81682&amp;post=986&amp;subd=ixmael&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ixmael.wordpress.com/2010/06/02/desilusionado-2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/35b671e411e1c407366e6f5ee04bf09f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ixmael</media:title>
		</media:content>
	</item>
		<item>
		<title>Lightbox con jQuery (v2)</title>
		<link>http://ixmael.wordpress.com/2010/04/12/lightbox-con-jquery-v2/</link>
		<comments>http://ixmael.wordpress.com/2010/04/12/lightbox-con-jquery-v2/#comments</comments>
		<pubDate>Mon, 12 Apr 2010 16:18:49 +0000</pubDate>
		<dc:creator>ixmael.arts</dc:creator>
				<category><![CDATA[Computación]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://ixmael.wordpress.com/?p=960</guid>
		<description><![CDATA[Ahora les presento una nueva versión del lightbox, pero ahora como plugin, por cierto si no quieres leer todo el post aquí te pongo un enlace para descargar el Custom LightBox ¿Por qué otro lightbox? Bueno para empezar si no te quieres esforzar en diseñar un lightbox tienes muchos de donde escoger (FancyBox, ThickBox, SuperBox, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ixmael.wordpress.com&amp;blog=81682&amp;post=960&amp;subd=ixmael&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Ahora les presento una nueva versión del lightbox, pero ahora como plugin, por cierto si no quieres leer todo el post aquí te pongo un enlace para <a href="http://www.mediafire.com/?mcjazjqagkj">descargar el Custom LightBox</a></p>
<h2>¿Por qué otro lightbox?</h2>
<p>Bueno para empezar si no te quieres esforzar en diseñar un lightbox tienes muchos de donde escoger (<a href="http://fancybox.net/">FancyBox</a>, <a href="http://jquery.com/demo/thickbox/">ThickBox</a>, <a href="http://www.pierrebertet.net/projects/jquery_superbox/">SuperBox</a>, <a href="http://colorpowered.com/colorbox/">ColorBox</a> por ejemplo en jQuery, para otros frameworks también hay e incluso sin frameworks de javascript), pero si quieres hacer algo diferente con el lightbox este desarrollo fue pensado bajo esta característica.</p>
<p>Otra característica añadida es hacer algo más liviano sin tener todas las características de los lightbox (carga de iframes por ejemplo), esto significa que tendrás que trabajar un poco más para hacer lo que necesitas, pero que al final el código es más pequeño (cosa que se recomienda por todos lados).</p>
<h2>El XHTML</h2>
<p>Esta maqueta que muestro es extremadamente sencilla para mostrar esto, pero ha sido usado con maquetas más elaboradas. La base de esto es tener el contenido general y al final (de preferencia) agregar la maqueta de lo que será el lightbox (una capa que este por encima de todo y sobre de esta la ventana con información), esto se muestra en el código en rojo.</p>
<pre><span style="color:#008000;">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /&gt;
&lt;title&gt;Prueba de lightbox&lt;/title&gt;

&lt;link href="css/style.css" rel="stylesheet" type="text/css" /&gt;

&lt;/head&gt;

&lt;body&gt;
&lt;h1&gt;&lt;a id="link" href="#"&gt;test&lt;/a&gt;&lt;/h1&gt;<span style="color:#3366ff;">&lt;!-- enlace que muestrará el lightbox --&gt;</span></span>

<span style="color:#ff0000;"><span style="color:#3366ff;">&lt;!-- elementos ocultos --&gt;</span>
&lt;div id="overlay"&gt;&lt;/div&gt; <span style="color:#3366ff;">&lt;!-- capa que ocultará la página --&gt;</span>
&lt;div id="lightbox"&gt; <span style="color:#3366ff;">&lt;!-- el lightbox --&gt;</span>
	&lt;a id="closeLightbox" href="#"&gt;&lt;/a&gt;<span style="color:#3366ff;">&lt;!-- botón para cerrar el lightbox --&gt;</span>
	&lt;div id="contentLightbox"&gt;&lt;img src="css/img/ajax-loader.gif" alt="" /&gt;&lt;/div&gt; <span style="color:#3366ff;">&lt;!-- imagen de precarga --&gt;</span>
&lt;/div&gt;</span>
<span style="color:#008000;">&lt;/body&gt;
&lt;/html&gt;</span>
</pre>
<h2>CSS</h2>
<p>En primer lugar te recomiendo usar un reset para los estilos (yo te recomiendo <a href="http://meyerweb.com/eric/tools/css/reset/">Reset CSS de meyerweb.com</a>) y después darle estilos al lightbox.</p>
<p>Básicamente el asunto es poner un div por encima de todos los elementos que a continuación les muestro el código y un comentario respecto a los elementos:</p>
<pre><span style="color:#008000;">/* estilos */
div#<span style="color:#ff0000;">overlay</span> { <span style="color:#3366ff;">/* este elemento es el que bloqueará los elementos de la página */</span>
	background:#96F;
	display:none;
	position:absolute;
	left:0;
	width:100%;
	top:0;
	z-index:10
}

div#<span style="color:#ff0000;">lightbox</span> { <span style="color:#3366ff;">/* el div que contiene el otro div que tendrá la información (además de que este tiene el diseño) */</span>
	background:url(img/lbBG.png) no-repeat center;
	display:none;
	height:500px;
	left:50%;
	margin:-300px 0 0 -250px;
	position:absolute;
	top:50%;
	width:600px;
	z-index:20;
}

div#<span style="color:#ff0000;">lightbox</span> a#<span style="color:#ff0000;">closeLightbox</span> { <span style="color:#3366ff;">/* enlace para cerrar el lightbox */</span>
	background:url(img/shut_down.png) no-repeat center;
	display:block;
	height:50px;
	margin:-25px 0 0 0;
	position:absolute;
	right:-50px;
	text-indent:-9999em;
	top:50%;
	width:50px;
}

div#<span style="color:#ff0000;">lightbox</span> div#<span style="color:#ff0000;">contentLightbox</span> { <span style="color:#3366ff;">/* donde estará la información que se mostrará */</span>
	background:#FFF;
	height:268px;
	left:174px;
	position:absolute;
	top:90px;
	width:292px;
}

div#<span style="color:#ff0000;">lightbox</span> div#<span style="color:#ff0000;">contentLightbox</span> <span style="color:#ff0000;">img</span> { <span style="color:#3366ff;">/* esta imagen es la imagen de precarga */</span>
	display:none;
	left:50%;
	margin:-16px 0 0 -16px;
	position:absolute;
	top:50%;
}</span>
</pre>
<p>Ahora vamos a poner esto en la página (bueno, la asociación a este código):</p>
<pre><span style="color:#008000;">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /&gt;
&lt;title&gt;Prueba de lightbox&lt;/title&gt;</span><span style="color:#008000;">

</span><span style="color:#ff00ff;">&lt;link href="css/style.css" rel="stylesheet" type="text/css" /&gt; &lt;!-- hoja de estilos con el código anterior --&gt;</span><span style="color:#008000;">
&lt;/head&gt;

<span style="color:#008000;">&lt;body&gt;
&lt;h1&gt;&lt;a id="link" href="#"&gt;test&lt;/a&gt;&lt;/h1&gt;&lt;!-- enlace que muestrará el lightbox --&gt;</span></span><span style="color:#008000;">

&lt;!-- elementos ocultos --&gt;
&lt;div id="overlay"&gt;&lt;/div&gt; &lt;!-- capa que ocultará la página --&gt;
&lt;div id="lightbox"&gt; &lt;!-- el lightbox --&gt;
	&lt;a id="closeLightbox" href="#"&gt;&lt;/a&gt;&lt;!-- botón para cerrar el lightbox --&gt;
	&lt;div id="contentLightbox"&gt;&lt;img src="css/img/ajax-loader.gif" alt="" /&gt;&lt;/div&gt; &lt;!-- imagen de precarga --&gt;
&lt;/div&gt;
</span><span style="color:#008000;"><span style="color:#008000;">&lt;/body&gt;</span>
&lt;/html&gt;</span>
</pre>
<h2>jQuery plugin</h2>
<p>Lo de siempre: cargar la librería de jQuery</p>
<p>La idea básica del funcionamiento de javascript en el lightbox es mostrar el div principal que oculta la página, después cargar el div que tiene el lightbox y poder ocultar de nuevo los elementos mostrados. Esto lo vamos a hacer dentro de un plugin de jQuery (que es el mecanismo para agregar funcionalidad a jQuery, en este caso la nuestra).</p>
<p>La idea básica esta, ahora empecemos con el plugin para jQuery. Para empezar me he basado (aprendido) de estos artículos: <a href="http://docs.jquery.com/Plugins/Authoring">jQuery plugins authoring</a>, <a href="http://blog.jeremymartin.name/2008/02/building-your-first-jquery-plugin-that.html">Building your first jQuery Plugin</a> y <a href="http://net.tutsplus.com/videos/screencasts/learn-how-to-create-a-jquery-plugin/">Learn how to create a jQuery Plugin</a>, de donde el primer paso es poner la estructura de los plugins:</p>
<pre><span style="color:#008000;">(function($) {
$.fn.<span style="color:#ff0000;">CustomLightBox </span>= function() {
	<span style="color:#ff00ff;">return this.each(function() {
		//nuestro código
	});</span>
};
})(jQuery);</span>
</pre>
<p>El código anterior muestra la estructura básica de cualquier plugin de jQuery (también evita el problema con el uso de otras librerías). El código en rojo es el nombre del plugin (que llamaremos como <span style="color:#008000;">jQuery(selector).CustomLightBox()</span>) y el código en rosa/fiucsa es donde pondremos toda la funcionalidad.</p>
<p>Ahora asignemos al plugin una funcionalidad (jeje, el hola mundo) con esto:</p>
<pre><span style="color:#008000;">(function($) {
<span style="color:#008000;">$.fn.<span style="color:#ff0000;">CustomLightBox</span> = function() {</span>
	<span style="color:#ff00ff;"><span style="color:#008000;">return this.each(function() {</span>
		alert('hola mundo');
	<span style="color:#008000;">});</span></span>
};
})(jQuery);</span></pre>
<p>Con esto al usar el lightbox en un elemento aparecerá la fabulosa ventana de alerta del navegador. Ahora asociemos un evento al plugin, y solo necesitas el selector (en este caso el mismo) y programar el click (como lo harías en un script normal de jQuery).</p>
<p>Para esto solo asociaremos el click con un alert:</p>
<pre><span style="color:#339966;">(function($) {
$.fn.<span style="color:#ff0000;">CustomLightBox</span> = function() {
	return this.each(function() {
		<span style="color:#ff00ff;">jQuery(this).click(function() {
			alert('evento enviado por el enlace asociado al plugin');
		});</span>
	});
};
})(jQuery);
</span></pre>
<p>Ahora a meter nuestro desarrollo en el plugin (con comentarios):</p>
<pre><span style="color:#339966;"><span style="color:#3366ff;">/**
 * CustomLightBox
 */</span>
(function($){
	var _this = null; <span style="color:#3366ff;">// referencia al elemento que se le asocio el plugin</span>
	var settings = null; <span style="color:#3366ff;">// configuración</span>

    $.fn.CustomLightBox = function(params) {
		_this = jQuery(this);
		settings = $.extend({
			// elementos
			overLayer: null,<span style="color:#3366ff;">// layer que oculta todos los elementos - jQuery element</span>
			mainLayer: null, <span style="color:#3366ff;">// layer que muestra la info del lightbox - jQuery element</span>
			closeButton: null, <span style="color:#3366ff;">// botón que cierra el lightbox - jQuery element</span>
			// animación
			overLayerOpacity: null, <span style="color:#3366ff;">// opacidad del layer que oculta todos los elementos - entero</span>
			showAnimate: null, <span style="color:#3366ff;">// tipo de animación - cadena</span>
			// métodos
			onShowFn: null, <span style="color:#3366ff;">// llamada después de la muestra del lightbox - función</span>
			onCloseFn: null <span style="color:#3366ff;">// llamada después del cierre del lightbox - función</span>
		},params);

        return this.each(function() {
			<span style="color:#3366ff;">/**
			 * lanzador del lightbox
			 */</span>
			_this.click(function() {
				switch(settings.showAnimate) {
					case 'fadeIn': fadeIn(settings.onShowFn);break;
					case 'overLayerLeft2Right': overLayerLeft2Right(settings.onShowFn);break;
					default: fadeIn(settings.onShowFn);
				}
			});

			<span style="color:#3366ff;">/**
			 * Cerrar el lightbox cuando se da click en el overlayer
			 */</span>
			settings.overLayer.click(function() {
				closeLightBox(settings.onCloseFn);
			});

			<span style="color:#3366ff;">/**
			 * Cerrar el lightbox cuando se da click en el boton de cerrar
			 */</span>
			settings.closeButton.click(function() {
				closeLightBox(settings.onCloseFn);
			});
        });
    };

	// funciones &gt;
	<span style="color:#3366ff;">/**
	 * Verificar si se han cumplido los requisitos mínimos para poder operar
	 */</span>
	var isReady = function() {
		if(settings.overLayer &amp;&amp; settings.mainLayer &amp;&amp; settings.closeButton)
			return true;
		else
			return false;
	};

	<span style="color:#3366ff;">/**
	 * Verificar si callback es una función y ejecutarla
	 */</span>
	var runFunction = function(callFn) {
		if (typeof callFn == "function")
			callFn();
	};

	<span style="color:#3366ff;">/**
	 * Cerrar el LightBox
	 */</span>
	var closeLightBox = function(func) {
		if(isReady()) {
			// ocultar overlayer
			settings.mainLayer.fadeOut(function() {
				settings.overLayer.fadeOut();
			});
		}
		return false;
	};

	<span style="color:#3366ff;">/**
	 * Animación que muestra poco a poco el overlayer completo
	 */</span>
	var fadeIn = function(func) {
		if(isReady()) {
			// mostrar overlayer
			settings.overLayer.css({
				'display': 'block',
				'height': jQuery(window).height(),
				'opacity': settings.overLayerOpacity
			}).fadeIn(function() {
				settings.mainLayer.fadeIn();
			});
		}
		return false;
	};

	<span style="color:#3366ff;">/**
	 * Animación que recorre el overlayer de izquierda a derecha
	 */</span>
	var overLayerLeft2Right = function(func) {
		if(isReady()) {
			// mostrar overlayer
			settings.overLayer.css({
				'display': 'block',
				'height': jQuery(window).height(),
				'opacity': settings.overLayerOpacity,
				'width': 0
			}).animate({'width':'100%'},500,function() {
				settings.mainLayer.fadeIn(function() {
					runFunction(func);
				});
			});
		}
		return false;
	};
})(jQuery);</span>
</pre>
<p>Bueno ya pusimos todo lo que va a hacer el plugin, pero ¿cómo lo asociamos a la página? Jejeje, aquí esta el código (el comentario CDATA y el cierre de este son para poder tener el código javascript y que <a href="http://validator.w3.org">valide con la W3C</a>):</p>
<pre><span style="color:#008000;">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /&gt;
&lt;title&gt;Custom LightBox&lt;/title&gt;

&lt;link href="css/style.css" rel="stylesheet" type="text/css" /&gt;
<span style="color:#ff00ff;">&lt;script type="text/javascript" src="js/jquery-1.4.2.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript" src="js/jquery.lightbox.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript"&gt;
<span style="color:#3366ff;">// &lt;![CDATA[</span>
jQuery(document).ready(function() {
	var lbContent = jQuery('div#contentLightbox');
	jQuery('a#link').CustomLightBox({
	overLayer: jQuery('div#overlay'),// jQuery element
	mainLayer: jQuery('div#lightbox'), // jQuery element
	closeButton: jQuery('a#closeLightbox'), // jQuery element
	subLayers: null, // array jQuery element
	// animación
	overLayerOpacity: 0.5,
	showAnimate: 'overLayerLeft2Right', // text
	// métodos
	onShowFn: function() {
		jQuery.ajax({
			url: 'ajaxTest.php', <span style="color:#3366ff;">// cargamos contenido con AJAX</span>
			type: 'POST',
			dataType: 'html',
			error: function(request,sts,error) {
			alert(error);
 		},
 		beforeSend: function() {
 			lbContent.children('img').fadeIn();
 		},
 		success: function(data, sts) {
 			lbContent.children('img').fadeOut(function() {
				lbContent.append(data);
			});
		}
	});
	}, // function
	onCloseFn: null // function
	});
});
<span style="color:#3366ff;">// ]]&gt;</span>
&lt;/script&gt;</span>
&lt;/head&gt;

&lt;body&gt;
&lt;h1&gt;&lt;a id="link" href="#"&gt;test&lt;/a&gt;&lt;/h1&gt;

&lt;!-- elementos ocultos --&gt;
&lt;div id="overlay"&gt;&lt;/div&gt;
&lt;div id="lightbox"&gt;
	&lt;a id="closeLightbox" href="#"&gt;&lt;/a&gt;
	&lt;div id="contentLightbox"&gt;&lt;img src="css/img/ajax-loader.gif" alt="" /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;</span></pre>
<h2>El PHP (solo para la prueba)</h2>
<p>El PHP para la llamada AJAX es este:</p>
<pre><span style="color:#008000;">&lt;?php
	sleep(3); // sólo para que se vea el efecto ajax
?&gt;
&lt;h2&gt;Carga con AJAX&lt;/h2&gt;
&lt;p&gt;archivo de prueba con carga dinámica&lt;/p&gt;</span>
</pre>
<h2>TODO</h2>
<p>Bueno, a este plugin le falta (desde mi punto de vista):</p>
<ul>
<li>Poner valores por default en la configuración (en este momento solo les pongo null).</li>
<li>Poder generarlo de manera automática con x o y característica (al estilo de jQuery YUI).</li>
<li>Desarrollar más transiciones a la hora de mostrar el lightbox.</li>
<li>Añadir transiciones como funciones a la manera de <a href="http://jquery.bassistance.de/validate/demo/custom-methods-demo.html">jQuery Validate (para nuevos tipos de datos)</a>.</li>
</ul>
<h2>Licencia</h2>
<p>Puedes <a href="http://www.mediafire.com/?mcjazjqagkj">descargar el Custom LightBox</a>, bajo la licencia Creative Commons (o sea que solo dame un poco de crédito y puedes hacer lo que quieras) y tampoco hay garantía alguna (así le hacen todos los que hacen Open Source).</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ixmael.wordpress.com/960/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ixmael.wordpress.com/960/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ixmael.wordpress.com/960/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ixmael.wordpress.com/960/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ixmael.wordpress.com/960/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ixmael.wordpress.com/960/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ixmael.wordpress.com/960/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ixmael.wordpress.com/960/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ixmael.wordpress.com/960/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ixmael.wordpress.com/960/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ixmael.wordpress.com/960/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ixmael.wordpress.com/960/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ixmael.wordpress.com/960/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ixmael.wordpress.com/960/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ixmael.wordpress.com&amp;blog=81682&amp;post=960&amp;subd=ixmael&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ixmael.wordpress.com/2010/04/12/lightbox-con-jquery-v2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/35b671e411e1c407366e6f5ee04bf09f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ixmael</media:title>
		</media:content>
	</item>
		<item>
		<title>Otro wallpaper</title>
		<link>http://ixmael.wordpress.com/2010/02/23/otro-wallpaper/</link>
		<comments>http://ixmael.wordpress.com/2010/02/23/otro-wallpaper/#comments</comments>
		<pubDate>Wed, 24 Feb 2010 03:46:52 +0000</pubDate>
		<dc:creator>ixmael.arts</dc:creator>
				<category><![CDATA[diseño]]></category>
		<category><![CDATA[escuela]]></category>
		<category><![CDATA[imagen]]></category>
		<category><![CDATA[UAM]]></category>
		<category><![CDATA[wallpaper]]></category>

		<guid isPermaLink="false">http://ixmael.wordpress.com/2010/02/23/otro-wallpaper/</guid>
		<description><![CDATA[Pues aquí les mando otro wallpaper (con una sola resolución).<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ixmael.wordpress.com&amp;blog=81682&amp;post=956&amp;subd=ixmael&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Pues aquí les mando otro wallpaper (con una sola resolución).<a href="http://ixmael.files.wordpress.com/2010/02/uam_wallpaper.jpg"><img class="aligncenter size-thumbnail wp-image-955" title="UAM wallpaper (1440x900)" src="http://ixmael.files.wordpress.com/2010/02/uam_wallpaper.jpg?w=150&#038;h=93" alt="wallpaper de la Universidad Autónoma Metropolitana" width="150" height="93" /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ixmael.wordpress.com/956/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ixmael.wordpress.com/956/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ixmael.wordpress.com/956/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ixmael.wordpress.com/956/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ixmael.wordpress.com/956/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ixmael.wordpress.com/956/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ixmael.wordpress.com/956/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ixmael.wordpress.com/956/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ixmael.wordpress.com/956/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ixmael.wordpress.com/956/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ixmael.wordpress.com/956/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ixmael.wordpress.com/956/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ixmael.wordpress.com/956/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ixmael.wordpress.com/956/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ixmael.wordpress.com&amp;blog=81682&amp;post=956&amp;subd=ixmael&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ixmael.wordpress.com/2010/02/23/otro-wallpaper/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/35b671e411e1c407366e6f5ee04bf09f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ixmael</media:title>
		</media:content>

		<media:content url="http://ixmael.files.wordpress.com/2010/02/uam_wallpaper.jpg?w=150" medium="image">
			<media:title type="html">UAM wallpaper (1440x900)</media:title>
		</media:content>
	</item>
		<item>
		<title>Crisis profesional</title>
		<link>http://ixmael.wordpress.com/2010/01/25/crisis-profesional/</link>
		<comments>http://ixmael.wordpress.com/2010/01/25/crisis-profesional/#comments</comments>
		<pubDate>Tue, 26 Jan 2010 04:50:08 +0000</pubDate>
		<dc:creator>ixmael.arts</dc:creator>
				<category><![CDATA[Computación]]></category>
		<category><![CDATA[escuela]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[trabajo]]></category>
		<category><![CDATA[critica]]></category>
		<category><![CDATA[investigación]]></category>

		<guid isPermaLink="false">http://ixmael.wordpress.com/?p=950</guid>
		<description><![CDATA[¿Por qué una carrera con una gran posibilidad de desarrollo se estanca en programar en PHP o Java o .NET? o ¿por qué la capacidad de análisis que se adquiere se ve mermado a usar Apache y MySQL para desarrollar sistemas? Y dirán que son muy usadas las herramientas, pero ¿usas una llave perico para [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ixmael.wordpress.com&amp;blog=81682&amp;post=950&amp;subd=ixmael&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>¿Por qué una carrera con una gran posibilidad de desarrollo se estanca en programar en PHP o Java o .NET? o ¿por qué la capacidad de análisis que se adquiere se ve mermado a usar Apache y MySQL para desarrollar sistemas? Y dirán que son muy usadas las herramientas, pero ¿usas una llave perico para destornillar?</p>
<p>Estas son de las pocas preguntas que me han surgido con alrededor de 3 años trabajando y eso de trabajar en internet 2.0 ya no tiene nada de nuevo y desafiante, sobre todo porque nunca hay tiempo de hacer las cosas, retroalimentarse y re-hacer la solución de manera más &#8220;eficiente&#8221; (en el sentido habitual de la palabra).</p>
<p>Por otra parte esta empezar un cambio en la burocracia de las empresas ¿cómo le haces saber a una persona que lleva trabajando 30 años de x manera que esta mal y que tu propuesta es lo de hoy? Esto fue muy notorio en mi primer trabajo, donde la burocracia misma no permitía nada nuevo (tanto así que aprendí a trabajar como se hacía en el 2001 y adiós a mis estándares web). Ahora en mi trabajo más reciente pues estamos en lo último con las tecnologías en web pero no salimos del <a href="http://es.wikipedia.org/wiki/LAMP">LAMP</a> y ni siquiera se permiten hacer análisis más adecuados para cada sitio (digo, youtube.com no usa Apache).</p>
<p>Y lo último es que la percepción de l@s empresari@s con los que me he topado es que todo es perder tiempo: que si vas por el desayuno, que si te distraes porque te has bloqueado, que si usas tecnologías de la web 2.0 (y lo raro es que trabajas ofreciendo un amplio conocimiento en esto), etc. ¿Por eso las personas se deben de poner la camiseta? Si ni siquiera la gestión/administración de esta se hace de manera justa ¿tenemos que dar más que lo que el contrato dice? Pues extrañamente las empresas ven solo gastos y gastos en poner herramientas adecuadas para el trabajo (computadoras, infraestructura de internet). Digo, yo no soy un empresario, pero creo que cosas tan básicas no se les deberían pasar a las personas emprendedoras&#8230;</p>
<p>Por eso ahora que tengo dos maestros en la UAM me estoy animando a regresar al ambito acádemico. No crean que sigo de inocente que todo es felicidad acá, pero de menos tienes más vida que en la industria, haces cosas más relevantes que si se valoraran en México pues tendríamos mejor industria ¿a poco creen que la web 2.0 nació en IBM o Microsoft?</p>
<p>Ahora bien ¿hacía donde voy? Es una pregunta difícil pues todo me maravilla: software empotrado, sistemas operativos en tiempo real, interfaces cerebro máquina, complejidad computacional, computación en paralelo, etc.</p>
<p>Entonces estoy frente a una gran dilema para dirigir mis esfuerzos para aprender, espero pronto poder decidir hacía donde voy, pero lo que es definitivo es que me voy de la industria privada.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ixmael.wordpress.com/950/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ixmael.wordpress.com/950/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ixmael.wordpress.com/950/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ixmael.wordpress.com/950/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ixmael.wordpress.com/950/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ixmael.wordpress.com/950/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ixmael.wordpress.com/950/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ixmael.wordpress.com/950/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ixmael.wordpress.com/950/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ixmael.wordpress.com/950/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ixmael.wordpress.com/950/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ixmael.wordpress.com/950/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ixmael.wordpress.com/950/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ixmael.wordpress.com/950/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ixmael.wordpress.com&amp;blog=81682&amp;post=950&amp;subd=ixmael&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ixmael.wordpress.com/2010/01/25/crisis-profesional/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/35b671e411e1c407366e6f5ee04bf09f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ixmael</media:title>
		</media:content>
	</item>
		<item>
		<title>Un cambio laboral</title>
		<link>http://ixmael.wordpress.com/2010/01/10/un-cambio-laboral/</link>
		<comments>http://ixmael.wordpress.com/2010/01/10/un-cambio-laboral/#comments</comments>
		<pubDate>Sun, 10 Jan 2010 17:54:01 +0000</pubDate>
		<dc:creator>ixmael.arts</dc:creator>
				<category><![CDATA[Computación]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[escuela]]></category>
		<category><![CDATA[trabajo]]></category>

		<guid isPermaLink="false">http://ixmael.wordpress.com/?p=942</guid>
		<description><![CDATA[El año pasado trabaje en Ingenia Group 30 hrs por semana. Pero en diciembre del año pasado llego un nuevo director de operaciones, que para ser sincero pense que no iba a cambiar nada, pero resulta que este mes voy a empezar (a partir de mañana) a trabajar 4.5 hrs (medio tiempo de verdad) y [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ixmael.wordpress.com&amp;blog=81682&amp;post=942&amp;subd=ixmael&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>El año pasado trabaje en Ingenia Group 30 hrs por semana.</p>
<p>Pero en diciembre del año pasado llego un nuevo director de operaciones, que para ser sincero pense que no iba a cambiar nada, pero resulta que este mes voy a empezar (a partir de mañana) a trabajar 4.5 hrs (medio tiempo de verdad) y a parte me van a subir el sueldo (solo 500 pesos, de menos para los boletos del metro). Esto no solo aplica para mi, sino para tod@s l@s estudiantes.</p>
<p>Pero no solo es el cambio, en teoría ya no habrá equipos a cargo de los Administradores de Proyectos, sino que l@s programadores funcionameros bajo el esquema de Fabrica de Software (yo trabajaba con FS en Bancomer) en el que l@s programadores/as vamos a proporcionar el servicio de desarrollo de software y en el cuál ya habrá una evaluación más concreta para poder determinar cierta promoción (y no dedazos).</p>
<p>Yo si estoy bastante emocionado por el cambio radical bajo el que empezaré a trabajar (ya que me parece más justo), un cambio en la forma de desarrollar, pues se desarrollará como equipo (cosa que las personas a veces hacemos, pero no por parte de la forma de trabajo).</p>
<p>Bueno, esto me permitirá avanzar de forma más rápida en la escuela, pues este trimestre tengo un hueco muy grande en el horario con las dos materias que tomaré.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ixmael.wordpress.com/942/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ixmael.wordpress.com/942/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ixmael.wordpress.com/942/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ixmael.wordpress.com/942/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ixmael.wordpress.com/942/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ixmael.wordpress.com/942/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ixmael.wordpress.com/942/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ixmael.wordpress.com/942/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ixmael.wordpress.com/942/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ixmael.wordpress.com/942/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ixmael.wordpress.com/942/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ixmael.wordpress.com/942/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ixmael.wordpress.com/942/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ixmael.wordpress.com/942/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ixmael.wordpress.com&amp;blog=81682&amp;post=942&amp;subd=ixmael&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ixmael.wordpress.com/2010/01/10/un-cambio-laboral/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/35b671e411e1c407366e6f5ee04bf09f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ixmael</media:title>
		</media:content>
	</item>
	</channel>
</rss>
