<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.0.5" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>am80</title>
	<link>http://am80.com</link>
	<description>tips para desarrolladores web</description>
	<pubDate>Thu, 26 Jul 2007 15:17:42 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.0.5</generator>
	<language>en</language>
			<item>
		<title>Programador AJAX 20,000dlls mensuales</title>
		<link>http://am80.com/programador-ajax-20000dlls-mensuales/</link>
		<comments>http://am80.com/programador-ajax-20000dlls-mensuales/#comments</comments>
		<pubDate>Thu, 26 Jul 2007 15:17:42 +0000</pubDate>
		<dc:creator>maltos18</dc:creator>
		
		<category>Otros</category>

		<guid isPermaLink="false">http://am80.com/programador-ajax-20000dlls-mensuales/</guid>
		<description><![CDATA[Hoy revisando unos vínculos me encontré con esta nota.
* Titulo: Web Developer
* Salario: $200K mas prestaciones
* Impuestos: Sin taxas para quienes apliquen por un año
* Locación: Iraq
Resumen: El departamento principal de la defensa esta buscando programadores, desarrolladores y/o coders, para mantenimiento y supervisión de una nueva aplicación de base de datos que sera utilizada por [...]]]></description>
			<content:encoded><![CDATA[<p>Hoy revisando unos vínculos me encontré con esta nota.</p>
<p>* Titulo: Web Developer<br />
* Salario: $200K mas prestaciones<br />
* Impuestos: Sin taxas para quienes apliquen por un año<br />
* Locación: Iraq</p>
<p>Resumen: El departamento principal de la defensa esta buscando programadores, desarrolladores y/o coders, para mantenimiento y supervisión de una nueva aplicación de base de datos que sera utilizada por la armada en sus unidades en Irak. Estas posiciones son de tiempo completo, 7 días a la semana 365 días del año localizados en una de las mayores bases en IRAQ. El desarrollo sera en un periodo de 6 a 12 meses. La capacitación en el software de desarrollo de la aplicación empezará previo al desarrollo en el estado de Virginia. Estas vacantes están disponibles para tiempo completo o para contratantes independientes y disponibles desde ahora.</p>
<p><a href="http://www.careerbuilder.com/JobSeeker/Jobs/JobDetails.aspx?IPath=JRGCM&#038;ff=21&#038;APath=2.21.0.0.0&#038;job_did=J8E27R758MWRHR3QTG9&#038;cbRecursionCnt=1&#038;cbsid=cbbbb94d77e949faa5f915a56c1ae92c-238763593-JU-5&#038;ns_siteid=">vinculo&#8230;</a>
</p>
<p class="akst_link"><a href="http://am80.com/?p=33&amp;akst_action=share-this"  title="E-mail this, post to del.icio.us, etc." id="akst_link_33" class="akst_share_link">Compartelo</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://am80.com/programador-ajax-20000dlls-mensuales/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Charla en la Facultad de Artes Visuales</title>
		<link>http://am80.com/charla-en-la-facultad-de-artes-visuales/</link>
		<comments>http://am80.com/charla-en-la-facultad-de-artes-visuales/#comments</comments>
		<pubDate>Sun, 27 May 2007 03:20:20 +0000</pubDate>
		<dc:creator>maltos18</dc:creator>
		
		<category>Otros</category>

		<guid isPermaLink="false">http://am80.com/charla-en-la-facultad-de-artes-visuales/</guid>
		<description><![CDATA[El viernes pasado recibí la invitación para dar una charla sobre creación de paginas web y generalidades del Web2.0, aprovecho desde aquí para mandarles un saludo a los estudiantes de la UANL y agradecer a Guadalupe Cano León por permitirme usar sus artículos que fueron de gran ayuda.



Compartelo
]]></description>
			<content:encoded><![CDATA[<p>El viernes pasado recibí la invitación para dar una charla sobre creación de paginas web y generalidades del Web2.0, aprovecho desde aquí para mandarles un saludo a los estudiantes de la <a href="http://www.uanl.mx">UANL</a> y agradecer a <a href="http://www.canoleon.com.ar">Guadalupe Cano León</a> por permitirme usar sus artículos que fueron de gran ayuda.</p>
<p><a class="imagelink" href="http://am80.com/wp-content/uploads/2007/05/004.JPG" title="004.JPG"><img id="image26" src="http://am80.com/wp-content/uploads/2007/05/004.thumbnail.JPG" alt="004.JPG" /></a></p>
<p><a class="imagelink" href="http://am80.com/wp-content/uploads/2007/05/003.JPG" title="003.JPG"><img id="image25" src="http://am80.com/wp-content/uploads/2007/05/003.thumbnail.JPG" alt="003.JPG" /></a>
</p>
<p class="akst_link"><a href="http://am80.com/?p=24&amp;akst_action=share-this"  title="E-mail this, post to del.icio.us, etc." id="akst_link_24" class="akst_share_link">Compartelo</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://am80.com/charla-en-la-facultad-de-artes-visuales/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Los editores de Macros/Snippets</title>
		<link>http://am80.com/dreamweaver-textmate-jedit-etexeditor-gedit-snippets/</link>
		<comments>http://am80.com/dreamweaver-textmate-jedit-etexeditor-gedit-snippets/#comments</comments>
		<pubDate>Tue, 22 May 2007 08:56:09 +0000</pubDate>
		<dc:creator>maltos18</dc:creator>
		
		<category>Software</category>

		<guid isPermaLink="false">http://am80.com/dreamweaver-textmate-jedit-etexeditor-gedit-snippets/</guid>
		<description><![CDATA[
Revisando un tutorial sobre ruby on rails en youtube pude notar que quien editaba los archivos de configuración del ruby utilizaba un editor de textos que a primera instancia me pareció primitivo, y es que en realidad si lo comparo con la gama de opciones gráficas que tiene una herramienta como dreamweaver puedo decir que [...]]]></description>
			<content:encoded><![CDATA[<p><img id="image20" src="http://am80.com/wp-content/uploads/2007/05/002.jpg" alt="e-texteditor" /></p>
<p>Revisando un tutorial sobre ruby on rails en youtube pude notar que quien editaba los archivos de configuración del ruby utilizaba un editor de textos que a primera instancia me pareció primitivo, y es que en realidad si lo comparo con la gama de opciones gráficas que tiene una herramienta como dreamweaver puedo decir que el editor en si esta en pañales, esto visto del lado del diseñador y en el plano donde la necesidad de la previsualización es un requisito. Lejos de preocuparme por seguir el tutorial fui prestando mas atención a la ventana arcaica que solo mostraba carpetas y pestañas, que a manera de tabs coloreaba el código y daba un orden a las tabulaciones mas limpio y amigable, el tipo escribía a lineas múltiples, reemplazaba bloques con expresiones regulares, insertaba etiquetas a partir de escribir una sola palabra que después completaba de una manera muy veloz.</p>
<p>El editor en si se llama <a href="http://macromates.com/" target="_blank">TextMate</a>, y para mi desgracia es un software exclusivo de MAC, que sabido por la gente que me conoce es un sistema operativo que de plano se me complica para trabajar por sus limitantes de control sobre el mismo OS.</p>
<p>Empece a investigar y me di cuenta que existen versiones digamos así &#8220;clonicas&#8221; que emulan el funcionamiento de TextMate, es decir, que llevan la ventaja de las snippets a sistemas operativos como windows y linux (OS en los cuales trabajo).</p>
<h1>En que se diferencian estos programas a los ya existentes..?</h1>
<p>Dreamweaver (Windows/MAC) y Quanta (Linux) utilizan snippets digamos así&#8230; primera generación&#8230;, es decir se copia un bloque de código y se pega tal cual, se puede disponer incluso de un listado organizado por categorías o un acceso directo a través de combinaciones de teclas&#8230; veamos a través de un video una operación común y corriente donde veremos la diferencia entre los snipets nuevos y los de antaño.</p>
<p>Nota: En realidad tecleo mas rápido y cometo menos errores, pero el camtasia se come casi toda la memoria cuando esta grabando el monitor</p>
<p>[See post to watch Flash video]</p>
<p>Existen una gama de herramientas que soportan estos snipets.</o></p>
<ul>
<li><a href="http://macromates.com/" target="_blank">MAC - TextMate</a></li>
<li><a href="http://www.e-texteditor.com/" target="_blank">Windows - E-TextEditor</a></li>
<li><a href="http://joselo.wordpress.com/2007/03/28/textmate-en-linux/" target="_blank">Linux - gEdit</a></li>
</ul>
<p>Existen algunas otras como jedit&#8230; particularmente no me gusto pues corre sobre java y eso hace muy lento todo.</p>
<p class="akst_link"><a href="http://am80.com/?p=21&amp;akst_action=share-this"  title="E-mail this, post to del.icio.us, etc." id="akst_link_21" class="akst_share_link">Compartelo</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://am80.com/dreamweaver-textmate-jedit-etexeditor-gedit-snippets/feed/</wfw:commentRss>
		</item>
		<item>
		<title>SWFUpload 2.0 [Subir archivos multiples con AJAX]</title>
		<link>http://am80.com/enviar-archivos-multiples-con-ajax/</link>
		<comments>http://am80.com/enviar-archivos-multiples-con-ajax/#comments</comments>
		<pubDate>Fri, 30 Mar 2007 10:32:43 +0000</pubDate>
		<dc:creator>maltos18</dc:creator>
		
		<category>Flash</category>

		<category>PHP</category>

		<category>AJAX</category>

		<category>Javascript</category>

		<guid isPermaLink="false">http://am80.com/enviar-archivos-multiples-con-ajax/</guid>
		<description><![CDATA[

SWFUpload2.0 consiste en una pequeña librería javascript/flash, que incorpora las habilidades de flash para enviar archivos múltiples, y la accesibilidad y estilo de html/css.

Con SWFUpload2.0 se puede&#8230;


Subir archivos múltiples, a través de una selección múltilple
Definir el comportamiento de Javascript para todos los eventos
Retraer información de los archivos antes de que se envien
Definir el estilo para [...]]]></description>
			<content:encoded><![CDATA[<p><img id="image17" src="http://am80.com/wp-content/uploads/2007/03/swfupload.jpg" alt="SWFUpload2.0" /><br />
</p>
<p>SWFUpload2.0 consiste en una pequeña librería javascript/flash, que incorpora las habilidades de flash para enviar archivos múltiples, y la accesibilidad y estilo de html/css.<br />
</p>
<h2>Con SWFUpload2.0 se puede&#8230;</h2>
<p></p>
<ol>
<li>Subir archivos múltiples, a través de una selección múltilple</li>
<li>Definir el comportamiento de Javascript para todos los eventos</li>
<li>Retraer información de los archivos antes de que se envien</li>
<li>Definir el estilo para botones de envió a traves de XHTML y CSS</li>
<li>Mostrar información del progreso de envió utilizando HTML</li>
<li>No es necesario recargar una pagina</li>
<li>Funciona en todas las plataformas/navegadores donde Flash es soportado</li>
<li>HTML alternativo en el caso de que Flash/Javascript no estén disponibles</li>
<li>Restringir el tamaño de los archivos antes de enviarlos</li>
<li>Restringir el tipo de archivo en base a su extensión</li>
<li>Enviar archivos a una lista de espera, así como modificar dicha lista antes de iniciar el envio</li>
</ol>
<p></p>
<h2>Descargar swfupload</h2>
<p></p>
<p><a href="http://swfupload.mammon.se/" target="_blank">Sitio Oficial</a></p>
<h2>Como funciona?</h2>
<p></p>
<p>Se embebe dentro de las cabeceras el javascript swfupload.js</p>
<p><code>&lt;script type="text/javascript" src="jscripts/SWFUpload/SWFUpload.js"&gt;&lt;/script&gt;</code></p>
<p>Se define un contenido alternativo, este sera mostrado en caso de que el navegador carezca del reproductor flash o tenga javascript deshabilitado.</p>
<p>Dentro de las mismas cabeceras se define una instancia del swfupload que sera llamada una ves que la pagina haya cargado.</p>
<pre><code>window.onload = function() {
	swfu = new SWFUpload({
		upload_script : "/upload.php?id=someid", // archivo encargado de los uploads
		target : "SWFUpload.swf?RandID=&lt;?= rand(0,1000) ?&gt;", // ID del layer donde se mostrara el flash embedido
		flash_path : "/jscripts/SWFUpload/SWFUpload.swf", // Path a donde se encuentra el swfupload.swf
		allowed_filesize : 30720,	// Tamaño maximo del archivo definido en bytes (dividir entre1024 para KB y entre 1024 nuevamente para MB)
		allowed_filetypes : "*.*",	// Tipos de archivo permitidos (en el caso de imagenes seria algo asi "*.jpg;*.png;*.gif")
		allowed_filetypes_description : "All files...", // Rotulo a mostrar en la seleccion de archivos
		browse_link_innerhtml : "Browse", // Html del boton "examinar"
		upload_link_innerhtml : "Upload queue", // Html del boton "enviar"
		browse_link_class : "swfuploadbtn browsebtn", // Style para el boton "examinar"
		upload_link_class : "swfuploadbtn uploadbtn", // Style para el boton "enviar"
		flash_loaded_callback : 'swfu.flashLoaded', // Función a llamar cuando flash este disponible
		upload_file_queued_callback : "fileQueued", // Función a llamar cuando se agregan archivos a la lista
		upload_file_start_callback : 'uploadFileStart', // Función a llamar cuando se inicia el envió de cada archivo
		upload_progress_callback : 'uploadProgress', // Función a llamar cuando se reciben datos en el progreso de subida de 1 archivo
		upload_file_complete_callback : 'uploadFileComplete', // Función a llamar cuando se completa el envió de 1 archivo
		upload_file_cancel_callback : 'uploadFileCancelled', // Función a llamar cuando se cancela el envío de 1 archivo
		upload_queue_complete_callback : 'uploadQueueComplete', // Función a llamar cuando se han enviado todos los archivos
		upload_error_callback : 'uploadError', // Función a llamar cuando existe un error en un envió
		upload_cancel_callback : 'uploadCancel', // Función a llamar cuando se cancela la lista de envíos
		auto_upload : false // Mostrar alertas del depurador ?
	});
};</code></pre>
<p></p>
<p>La mayoria de las funciones que se pueden definir regresan el objeto file. el cual contiene los siguientes datos.</p>
<ul>
<li>id - un id unico generado para cada envío</li>
<li>name - nombre del archivo que se esta enviando en ese momento</li>
<li>size - tamaño</li>
<li>type - tipo de archivo (extensión)</li>
<li>creationDate - fecha de creación</li>
<li>creator - información del software con el cual fue creado el archivo</li>
</ul>
<p></p>
<h2>SWFUpload no envia?</h2>
<p></p>
<p>Un fallo conocido se presenta con apache, cuando mod_security se encuentra activado, en tal caso ha de crearse un archivo .htaccess con la siguiente indicacion</p>
<pre><code>SecFilterEngine Off
SecFilterScanPOST Off 
</code></pre>
<p></p>
<h2>Se muestra el contenido html aunque flash esta instalado?</h2>
<p></p>
<p>En varias ocasiones note que flash no es detectado, el problema lo he resuelto agregando a través de php esto a la instancia del swfupload, de tal manera que siempre se forza al swf a ser recargado desde el servidor y no del cache.</p>
<p><code>target : "path/swfupload.swf?RandID=&lt;?= rand(1000,2000) ?&gt;"</code><br />
</p>
<h2>Ejemplo de upload.php para recoger los archivos que se envían desde flash?</h2>
<p></p>
<p>El siguiente es un ejemplo de un archivo php para recibir las imágenes enviadas a través de swfobject.</p>
<pre><code>&lt;?php

$folder_destino = "./folder_donde_se_guardan_las_imagenes/";

// intentar mover el archivo al directorio destino
if (@move_uploaded_file($_FILES['Filedata']['tmp_name'],$folder_destino)){

		// Aqui se movio
		header('HTTP/1.1 200 OK');

// Si el envio falla
}else {

		// Reportar el error
		header('HTTP/1.1 404 Not Found');
	 
		// Guardar el error en un archivo
		error_log("Error al intentar enviar archivo".date()."\n",3,"logs.txt");
	 
}

?&gt;</code></pre>
<p></p>
<h2>Trabajo con sesiones pero no continúan los datos en el upload.php aunque inicio la session?</h2>
<p></p>
<p>Si la ruta donde se van a guardar cambia, y esta por ejemplo dentro de una sesión, es necesario iniciar una sesión en el código de arriba indicando el id con el que se venia operando, de tal manera que este bloque deberá encontrarse en la parte superior.</p>
<pre><code>&lt;?php

    // Al inicio del PHP
    if(isset($_GET['SessionID'])){
        session_id(trim($_GET['SessionID']));
    }

    // start session
    session_start(); 

?&gt;</code></pre>
<p></p>
<p>Y en la configuracion agregarse el id como parametro</p>
<pre><code>swfu = new SWFUpload({
	upload_script : "upload.php?SessionID=&lt;?= sesion_id(); ?&gt;",
	target : "SWFUploadTarget",
	flash_path : FlashPath,
	allowed_filesize : (200*1024),    // 200 K
	allowed_filetypes : "*.*",
	allowed_filetypes_description : "Todos los archivos",
	browse_link_innerhtml : "&lt;h1&gt;Agregar&lt;/h1&gt;",
	upload_link_innerhtml : "&lt;h1&gt;Enviar&lt;\/h1&gt;",
	flash_loaded_callback : 'swfu.flashLoaded',
	upload_queue_complete_callback : function(){
		alert('se enviaron todos los archivos');
	},
    auto_upload : false
});</code></pre>
<p></p>
<h2>SWFUpload Screencast</h2>
<p>[See post to watch Flash video]<br />

</p>
<p class="akst_link"><a href="http://am80.com/?p=19&amp;akst_action=share-this"  title="E-mail this, post to del.icio.us, etc." id="akst_link_19" class="akst_share_link">Compartelo</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://am80.com/enviar-archivos-multiples-con-ajax/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.793 seconds -->
