<?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>Adobe User Group Granada</title>
	<atom:link href="http://www.adobe-user-group-granada.es/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.adobe-user-group-granada.es</link>
	<description>Grupo de usuarios de Adobe orientado a Dreamweaver y Spry en la ciudad de Granada</description>
	<lastBuildDate>Sat, 21 Jan 2012 19:10:40 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Presentación de PideCurso en Granada</title>
		<link>http://www.adobe-user-group-granada.es/presentacion-de-pidecurso-en-granada/</link>
		<comments>http://www.adobe-user-group-granada.es/presentacion-de-pidecurso-en-granada/#comments</comments>
		<pubDate>Sat, 21 Jan 2012 19:06:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[anuncios]]></category>
		<category><![CDATA[eventos]]></category>
		<category><![CDATA[noticias]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[móviles]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.adobe-user-group-granada.es/?p=1025</guid>
		<description><![CDATA[El próximo viernes se realiza la presentación de PideCurso en nuestra ciudad. Nosotros asistiremos para dar nuestro apoyo a este emprendimiento que viene de la mano del ex presidente y actual vice-presidente de la Asociación de Webmaster de Granada. Te esperamos y a continuación os dejamos la información sobre este evento:
Con motivo de la presentación de [...]]]></description>
			<content:encoded><![CDATA[<div>El próximo viernes se realiza la presentación de <strong>PideCurso </strong>en nuestra ciudad. Nosotros asistiremos para dar nuestro apoyo a este emprendimiento que viene de la mano del ex presidente y actual vice-presidente de la Asociación de Webmaster de Granada. Te esperamos y a continuación os dejamos la información sobre este evento:</div>
<div>Con motivo de la presentación de PideCurso, nuestro equipo se ha puesto las pilas y ha decidido organizar una Jornada titulada: “<strong>Nuevos retos profesionales; web y móvil</strong>“, donde algunos de los representantes de los grupos locales como <a title="NSCoder Granada" href="https://twitter.com/nscoder_grn" target="_blank">NSCoder</a>, el <a title="Grupo de Usuarios de las Tecnologías de Google" href="http://granada.gtugs.org/" target="_blank">Grupo de Usuarios de las Tecnologías de Google (GTUG)</a> o la <a title="Asociación de Webmasters de Granada" href="http://www.webmastergranada.es/" target="_blank">Asociación de Webmasters de Granada (AWGR)</a> participarán dando charlas de algunas de las temáticas disponibles en nuestra web y cómo se enfocan éstas actualmente. Además, <strong>habrá un espacio dedicado a la presentación de proyectos</strong> web y móvil para aquellos interesados en dar a conocer sus trabajos, ideas, etc.</div>
<div><span id="more-1025"></span></div>
<div><a href="http://blog.pidecurso.es/wp-content/http://www.adobe-user-group-granada.es/boletines/uploads/2012/01/Captura-de-pantalla-2012-01-17-a-las-10.34.393.png" target="_blank"><br />
</a>Al evento asistirá el <a href="http://pidecurso.es/sobre-pidecurso/" target="_blank">equipo de PideCurso</a> al completo, algunos docentes que participan en los cursos, asociaciones y empresas que colaboran con nosotros. Aquí os dejamos el programa al completo de la jornada.</div>
<p>El evento será:</p>
<ul>
<li>Fecha: el <strong>viernes 27 de Enero de 2012 .</strong></li>
<li>Lugar: en el auditorio de la<strong> <a title="ETSIIT - Facultad de Informática (Google Maps)" href="http://maps.google.com/maps/ms?msid=204520629691711228427.0004952b1bc5d25f479b8&amp;msa=0&amp;ll=37.197275,-3.624389&amp;spn=0.001577,0.00284" target="_blank">Facultad de Informática</a></strong>.</li>
<li>Coste: la <strong>asistencia es gratuita</strong>.</li>
<li>Inscripciones: dado que el aforo es limitado <strong>es necesario </strong><a href="http://grm.vg/5AS" target="_blank"><strong>inscribirse</strong> aquí</a>: <a href="http://grm.vg/5AS" target="_blank">http://grm.vg/5AS</a>.</li>
</ul>
<p>¡No te lo puedes perder!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.adobe-user-group-granada.es/presentacion-de-pidecurso-en-granada/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Progreso de subida de ficheros únicamente con HTML5</title>
		<link>http://www.adobe-user-group-granada.es/progreso-de-subida-de-ficheros-unicamente-con-html5/</link>
		<comments>http://www.adobe-user-group-granada.es/progreso-de-subida-de-ficheros-unicamente-con-html5/#comments</comments>
		<pubDate>Sun, 11 Dec 2011 12:42:06 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[artículos]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[tutoriales]]></category>
		<category><![CDATA[html5]]></category>

		<guid isPermaLink="false">http://www.adobe-user-group-granada.es/?p=1023</guid>
		<description><![CDATA[Uno de los mayores problemas con los que nos hemos encontrado a la  hora de hacer aplicaciones que suben ficheros, es mostrar al usuario  cuánto se ha subido y así poder saber cuánto queda. Ahora con HTML5 y  XMLHttpRequest Level 2 podemos mostrarlo sin necesidad de parte del  servidor.
El script hace [...]]]></description>
			<content:encoded><![CDATA[<p>Uno de los mayores problemas con los que nos hemos encontrado a la  hora de hacer aplicaciones que suben ficheros, es mostrar al usuario  cuánto se ha subido y así poder saber cuánto queda. Ahora con HTML5 y  XMLHttpRequest Level 2 podemos mostrarlo sin necesidad de parte del  servidor.</p>
<p>El script hace uso de <a href="http://www.w3.org/TR/progress-events/">Evento de Progreso</a> de HTML5 para poder mostrar:</p>
<ul>
<li><strong>total</strong>: total de bytes</li>
<li><strong>loaded</strong>: bytes subidos</li>
<li><strong>lengthComputable</strong>: indica si el tamaño del fichero es conocido</li>
<li><strong>transferSpeed</strong>: velocidad de transferencia</li>
<li><strong>timeRemaining</strong>: tiempo que falta (en formato Date)</li>
</ul>
<p>Por ahora solo es compatible con Firefox, Chrome y Safari.</p>
<p>En el post lo explican con gran detalle.</p>
<p><a href="http://www.matlus.com/html5-file-upload-with-progress/">Html5 File Upload with Progress </a></p>
<p>Nuestra fuente: <a href="http://sentidoweb.com/2011/11/19/progreso-de-subida-de-ficheros-unicamente-con-html5.php?utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed%3A+sentidoweb+%28Sentido+Web%29&amp;utm_content=Google+International" target="_blank">Sentidoweb</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.adobe-user-group-granada.es/progreso-de-subida-de-ficheros-unicamente-con-html5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Guía de supervivencia con Apache</title>
		<link>http://www.adobe-user-group-granada.es/guia-de-supervivencia-con-apache/</link>
		<comments>http://www.adobe-user-group-granada.es/guia-de-supervivencia-con-apache/#comments</comments>
		<pubDate>Thu, 17 Nov 2011 18:31:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[apache]]></category>
		<category><![CDATA[artículos]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[tutoriales]]></category>

		<guid isPermaLink="false">http://www.adobe-user-group-granada.es/?p=1019</guid>
		<description><![CDATA[El servidor web Apache es uno de los más extendidos y con más opciones de configuración, esto implica que es complejo. Vamos a ver cómo sobrevivir con Apache.


Guía de supervivencia con Apache

Otras veces ya hemos visto como realizar una instalación de Apache con PHP y eAccelerator, una vez instalado los ficheros ejecutables importantes son:

apachectl: Mediante [...]]]></description>
			<content:encoded><![CDATA[<p>El <strong>servidor web Apache</strong> es uno de los más extendidos y con más opciones de configuración, esto implica que es complejo. Vamos a ver <strong>cómo sobrevivir con Apache</strong>.</p>
<p><span id="more-1019"></span></p>
<div id="attachment_3639">
<p><a href="http://systemadmin.es/wp-content/uploads/2011/11/supervivencia-con-Apache.jpg"></a>Guía de supervivencia con Apache</p>
</div>
<p>Otras veces ya hemos visto como realizar una <a href="http://systemadmin.es/2009/08/instalacion-de-un-servidor-lamp-v-apache-con-php-y-eaccelerator">instalación de Apache con PHP y eAccelerator</a>, una vez instalado los ficheros ejecutables importantes son:</p>
<ul>
<li><strong>apachectl</strong>: Mediante este script podremos:
<ul>
<li>Gestionar el arranque y parada del daemon (<strong>start</strong>/<strong>stop</strong>)</li>
<li>Comprobar la configuración (<strong>configtest</strong>):
<pre># /usr/local/apache22/bin/apachectl configtest
Syntax OK</pre>
</li>
<li>Recargar la configuración en caliente, sin apagar el daemon (<strong>graceful</strong>)</li>
</ul>
</li>
<li><strong>httpd</strong>: Binario del daemon, con dicho fichero podemos:
<ul>
<li>Indicar que fichero de configuración cargar (<strong>opción -f</strong>)</li>
<li>Ver el listado de módulos que carga (<strong>opción -M</strong>):
<pre># /usr/local/apache22/bin/httpd -M
Loaded Modules:
 core_module (static)
(...)
 jrun_module (shared)</pre>
</li>
<li>Al igual que con <strong>apachectl</strong>, comprobar la configuración con la <strong>opción -t</strong>:
<pre># /usr/local/apache22/bin/httpd -t
Syntax OK</pre>
</li>
<li>Ver el resumen de configuración de los <strong>VirtualHosts</strong> con la <strong>opción -S</strong>:
<pre># /usr/local/apache22/bin/httpd -S
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80                   is a NameVirtualHost
         default server shuvak.systemadmin.es (/usr/local/apache22/conf/extra/httpd-vhosts.conf:7)
         port 80 namevhost shuvak.systemadmin.es (/usr/local/apache22/conf/extra/httpd-vhosts.conf:7)
         port 80 namevhost systemadmin.es (/usr/local/apache22/conf/extra/vhosts/systemadmin.es.conf:1)
         port 80 namevhost foro.systemadmin.es (/usr/local/apache22/conf/extra/vhosts/foro.systemadmin.es.conf:1)
Syntax OK</pre>
</li>
</ul>
</li>
</ul>
<p>Un ejemplo de <strong>configuración típica de un VirtualHost</strong> sería la siguiente:</p>
<pre>&lt;VirtualHost *:80&gt;
        DocumentRoot "/var/www/systemadmin.es/htdocs"
        DirectoryIndex index.php
        ServerName systemadmin.es
        ServerAlias foro.systemadmin.es

        &lt;Directory /var/www/systemadmin.es/htdocs&gt;
            Options FollowSymLinks
            AllowOverride all
            Order deny,allow
            Allow from all
        &lt;/Directory&gt;

        ErrorLog  "| /usr/local/sbin/cronolog -S /var/www/systemadmin.es/logs/current.error.log /var/www/systemadmin.es/logs/%Y/%m/%d/error.log"
        CustomLog "| /usr/local/sbin/cronolog -S /var/www/systemadmin.es/logs/current.custom.log /var/www/systemadmin.es/logs/%Y/%m/%d/custom.log" combined

&lt;/VirtualHost&gt;</pre>
<p>Las directivas importantes son:</p>
<ul>
<li><strong>DocumentRoot</strong>: Directorio base desde el cual  serviremos el contenido. Deberemos acompañarlo de la directiva Directory  para establecer si se puede servir o no su contenido</li>
<li><strong>DirectoryIndex</strong>: Cuando se intente servir la raíz o  cualquier directorio (sin especificar fichero), cual se debería servir.  Típicamente se usa index.algo, pero podría ser cualquier fichero. Esta  directiva indica que fichero servir y en que orden de prioridad. Por  ejemplo:
<pre>DirectoryIndex index.php index.html index.htm</pre>
<p>Primero miraría si existe un fichero <strong>index.php</strong>, en caso que no exista buscaría el siguiente (<strong>index.html</strong>) y así el listado que indiquemos. En caso que no exista ninguno, <strong>se serviría un 404</strong></li>
<li><strong>ServerName</strong> y <strong>ServerAlias</strong>: Nombres a los que responde según el <a href="http://systemadmin.es/2010/08/especificar-que-host-header-debe-usar-el-curl">header Host</a>. Se pueden <strong>especificar wildcards</strong> tanto pode delante (<strong>*.systemadmin.es</strong>) como por detrás (<strong>webmail.*</strong>). La diferencia entre <strong>ServerName</strong> y <strong>ServerAlias</strong> a la practica tiene poca importancia.</li>
</ul>
<p>En cuanto a la <strong>gestión de logs</strong>, personalmente uso <a href="http://systemadmin.es/2009/01/rotacion-de-logs-de-apache-mediante-cronolog">cronolog</a> ya que una vez configurado cómo queremos almacenar los logs no  deberemos hacer mantenimiento a no se que queramos eliminar los  antiguos. Para ello suelo emplear un simple script que haga limpieza:</p>
<pre>#!/bin/bash
for i in $(find /var/www/ -maxdepth 2 -iname logs);
do

        #eliminacion de los mas antiguos de 10 dias
        find $i -mtime +10 -type f -exec rm {} \;

        #eliminacion de directios vacios
        find $i -empty -type d -exec rmdir {} \; 2&gt;/dev/null

        #compresión de logs ya rotados
        find $i -type f -iname \*\.log -mtime +2 -exec gzip {} \;

done</pre>
<p>Deberemos <strong>adaptar el find del for</strong> para que encuentre los directorios raíz dónde tenemos los logs.</p>
<p>Para conocer el estado del Apache existe el <a href="http://systemadmin.es/2009/02/instalacion-del-server-status-mod_status-de-apache">modulo mod_status</a>, que nos indica que esta haciendo dicho daemon. Generalmente se instala en <strong>/server-staus</strong> con <strong>acceso limitado por IP de origen</strong>.</p>
<p>En el <strong>scoreboard</strong> veremos los estado del los <strong>apachitos</strong> (procesos apache) y podremos ver si existe algún problema con algún VirtualHost. Típicamente podremos ver:</p>
<ul>
<li>Se nos llena el scoreboard de <strong>W</strong>: Cuando un slot esta en estado W significa que esta contestando, pero si vemos que se nos acumulan <strong>W</strong> posiblemente esta contestando muy lentamente por algún motivo o bien  simplemente se queda colgado. Generalmente indica problemas en la base  de datos.Si habilitamos la opción
<pre>ExtendedStatus On</pre>
<p>Tendremos un listado de todas las peticiones y su estado, para cuanto  tiempo lleva un slot en el estado actual deberemos fijarnos en la  columna <strong>SS</strong>. Por lo tanto, las peticiones <strong>en estado W que tenga el SS alto</strong> son las primeras que deberemos investigar. Evidentemente, si servimos contenido estático (un <strong>mp3</strong>) es lógico que tarde en ser entregado y por lo tanto que <strong>su SS sea alto</strong>.</li>
<li>Se nos llena el scoreboard de <strong>K</strong>: Tendremos que ver  si nos interesa reducir el tiempo de KeepAlive de las conexiones. Por  defecto lo tenemos a 5 segundos, pero lo podemos dejar en 1 o 2 segundos  según la aplicación.</li>
</ul>
<p>En otra ocasión ya hablamos de en que debemos fijarnos para <a href="http://systemadmin.es/2010/04/encontrar-la-raiz-del-problema-en-un-entorno-lamp-i">entender el problema que tenga un entorno LAMP</a></p>
<p>Otra cosa a tener en cuenta es la <a href="http://systemadmin.es/2009/04/diferencia-entre-serverlimit-y-maxclients-de-apache">diferencia entre ServerLimit y MaxClients</a>: <strong>ServerLimit</strong> es el límite fijo que no puede ser modificado mediante una recarga de configuración (graceful) mientras que <strong>MaxClients</strong> es el límite actual.</p>
<p>Actualmente <strong>mod_status</strong> no muestra los slots de Apache que quedan deshabilitados por la directiva <strong>MaxClients</strong>, por lo que nos puede dar pie a error al suponerlos libres. En su momento hice un patch para evitar esto y <strong>será incluido en la próxima release de Apache</strong> (2.4), actualmente <a href="http://systemadmin.es/2011/03/apache-2-4-beta-httpd-2-3-11">ya se encuentra disponible en la versión beta desde la versión 2.3.11</a>.</p>
<p>Nuestra fuente: <a href="http://systemadmin.es/2011/11/guia-de-supervivencia-con-apache" target="_blank">Systemadmin</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.adobe-user-group-granada.es/guia-de-supervivencia-con-apache/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Workshop de Adobe Digital Publishing Suite</title>
		<link>http://www.adobe-user-group-granada.es/workshop-de-adobe-digital-publishing-suite/</link>
		<comments>http://www.adobe-user-group-granada.es/workshop-de-adobe-digital-publishing-suite/#comments</comments>
		<pubDate>Tue, 08 Nov 2011 10:44:53 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[anuncios]]></category>
		<category><![CDATA[adobe]]></category>

		<guid isPermaLink="false">http://www.adobe-user-group-granada.es/?p=1016</guid>
		<description><![CDATA[Últimas plazas para un workshop de Adobe Digital Publishing Suite!!!!
Grupo reducido, dirigido a profesionales del sector editorial interesados en dar el salto a la publicación digital.
Agenda

10.00 – 11.30 Presentación &#38; Folio Builder
11.30 – 12.00 Coffee Break
12.00 – 13.30 Overlay Creator
13.30 – 15.30 Descanso para comer
15.30 – 17.30 Viewer Builder y Diferentes modalidades de distribución comercial

¿Cuándo [...]]]></description>
			<content:encoded><![CDATA[<p>Últimas plazas para un workshop de Adobe Digital Publishing Suite!!!!<br />
Grupo reducido, dirigido a profesionales del sector editorial interesados en dar el salto a la publicación digital.</p>
<p><strong>Agenda</strong></p>
<ul>
<li>10.00 – 11.30 Presentación &amp; Folio Builder</li>
<li>11.30 – 12.00 Coffee Break</li>
<li>12.00 – 13.30 Overlay Creator</li>
<li>13.30 – 15.30 Descanso para comer</li>
<li>15.30 – 17.30 Viewer Builder y Diferentes modalidades de distribución comercial</li>
</ul>
<p><strong>¿Cuándo y dónde?</strong><br />
Viernes 11 en las oficinas de Adobe en la Torre Mapfre, Barcelona.</p>
<p><strong>¿Registro?</strong><br />
Gratuito y por orden de inscripción hasta llenar las plazas. Envía email para apuntarte: nlopez@adobe.com</p>
]]></content:encoded>
			<wfw:commentRss>http://www.adobe-user-group-granada.es/workshop-de-adobe-digital-publishing-suite/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Crear ficheros ZIP mediante Javascript con JSZip</title>
		<link>http://www.adobe-user-group-granada.es/crear-ficheros-zip-mediante-javascript-con-jszip/</link>
		<comments>http://www.adobe-user-group-granada.es/crear-ficheros-zip-mediante-javascript-con-jszip/#comments</comments>
		<pubDate>Thu, 03 Nov 2011 20:16:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[artículos]]></category>
		<category><![CDATA[programación]]></category>

		<guid isPermaLink="false">http://www.adobe-user-group-granada.es/?p=1012</guid>
		<description><![CDATA[Interesante librería que nos permite crear ficheros ZIP desde  Javascript, con unas simples líneas de código podemos crear zips con  ficheros de texto, imágenes, crear directorios…
var zip = new JSZip();
zip.add("Hello.txt", "Hello World\n");
img = zip.folder("images");
img.add("smile.gif", imgData, {base64: true});
content = zip.generate();
location.href="data:application/zip;base64,"+content;
El único problema que hay es a la hora de generar el nombre del  [...]]]></description>
			<content:encoded><![CDATA[<p>Interesante librería que nos permite crear ficheros ZIP desde  Javascript, con unas simples líneas de código podemos crear zips con  ficheros de texto, imágenes, crear directorios…</p>
<pre>var zip = new JSZip();
zip.add("Hello.txt", "Hello World\n");
img = zip.folder("images");
img.add("smile.gif", imgData, {base64: true});
content = zip.generate();
location.href="data:application/zip;base64,"+content;</pre>
<p>El único problema que hay es a la hora de generar el nombre del  fichero: Firefox crea un fichero con un nombre extraño y acabado en  .part, Safari lo nombra “Unknown” sin extensión, Chrome “download.zip” e  IE directamente ni funciona la librería.</p>
<p>Nuestra fuente: <a href="http://sentidoweb.com/2011/10/06/jszip-crear-ficheros-zip-mediante-javascript.php?utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed%3A+sentidoweb+%28Sentido+Web%29&amp;utm_content=Google+International" target="_blank">SentidoWeb</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.adobe-user-group-granada.es/crear-ficheros-zip-mediante-javascript-con-jszip/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>¿Renovarse o morir? Adobe lanza Edge, su plataforma de animación web usando HTML5</title>
		<link>http://www.adobe-user-group-granada.es/%c2%bfrenovarse-o-morir-adobe-lanza-edge-su-plataforma-de-animacion-web-usando-html5/</link>
		<comments>http://www.adobe-user-group-granada.es/%c2%bfrenovarse-o-morir-adobe-lanza-edge-su-plataforma-de-animacion-web-usando-html5/#comments</comments>
		<pubDate>Mon, 01 Aug 2011 19:52:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[anuncios]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.adobe-user-group-granada.es/?p=1009</guid>
		<description><![CDATA[Adobe lleva defendiendo a Flash con uñas y dientes desde que empezó la polémica de si la plataforma tenía que formar parte del futuro de los estándares web, encendida por Apple y sus medidas para que Flash no esté presente en sus dispositivos. Aún  así, en la compañía responsable de aplicaciones como Photoshop  [...]]]></description>
			<content:encoded><![CDATA[<p>Adobe lleva <a title="Adobe se enfada: " href="http://www.genbeta.com/multimedia/adobe-se-enfada-apple-esta-incitando-una-campana-negativa-contra-nosotros">defendiendo a Flash con uñas y dientes</a> desde que empezó la polémica de si la plataforma tenía que formar parte del futuro de los estándares web, <a title="Steve Jobs opina publicamente acerca de Flash: Adobe responde y Microsoft opina" href="http://www.genbeta.com/actualidad/steve-jobs-opina-publicamente-acerca-de-flash-adobe-responde-y-microsoft-opina">encendida por Apple</a> y sus medidas para que Flash no esté presente en sus dispositivos. Aún  así, en la compañía responsable de aplicaciones como Photoshop  contemplan todos los caminos y han lanzado <strong>Adobe Edge, una plataforma para crear animaciones web usando HTML5, CSS y Javascript</strong>.</p>
<p>La idea de Adobe es que Edge coexista con la plataforma Flash, pero  algunos ya lo están viendo como una solución alternativa para que todo  el contenido web sea más estándar y se pueda ver desde cualquier gadget.  Con Edge se pueden crear animaciones web, y <strong>en el futuro podremos crear incluso juegos</strong>. Suena mucho a una evolución de Flash a largo plazo más que a su compañero.</p>
<p>Adobe Edge puede descargarse de forma <strong>gratuita</strong> al  estar en una fase de pruebas preliminar, aunque pasará a tener un precio  en cuanto sea lanzado definitivamente el año que viene. Hay <strong>versiones para Windows y Mac OS X</strong>.  Si habéis hecho algunos pinitos con animaciones en Flash, quizás  tengáis curiosidad para ver cómo se puede hacer lo mismo con Edge.</p>
<p>Vía | <a title="Farewell Flash? Adobe Launches HTML5 Web Animations Tool " href="http://www.readwriteweb.com/archives/farewell_flash_adobe_launches_html5_web_animations_tool_adobe_edge.php">ReadWriteWeb</a><br />
Más información | <a title="HTML5 tools, Animation tools - Adobe Edge Preview | Adobe Labs" href="http://labs.adobe.com/technologies/edge/">Adobe Edge</a><br />
En Genbeta | <a title="Hablamos con Anup Murarka, director de márketing de Adobe Flash" href="http://www.genbeta.com/exclusiva/hablamos-con-anup-murarka-director-de-marketing-de-adobe-flash">Hablamos con Anup Murarka, director de márketing de Adobe Flash</a></p>
<p>Nuestra fuente: <a href="http://www.genbeta.com/multimedia/renovarse-o-morir-adobe-lanza-edge-su-plataforma-de-animacion-web-usando-html5" target="_blank">Genbeta</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.adobe-user-group-granada.es/%c2%bfrenovarse-o-morir-adobe-lanza-edge-su-plataforma-de-animacion-web-usando-html5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adobe cierra InMarket y AIR Marketplace</title>
		<link>http://www.adobe-user-group-granada.es/adobe-cierra-inmarket-y-air-marketplace/</link>
		<comments>http://www.adobe-user-group-granada.es/adobe-cierra-inmarket-y-air-marketplace/#comments</comments>
		<pubDate>Mon, 25 Jul 2011 19:49:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[anuncios]]></category>
		<category><![CDATA[noticias]]></category>
		<category><![CDATA[adobe]]></category>

		<guid isPermaLink="false">http://www.adobe-user-group-granada.es/?p=1007</guid>
		<description><![CDATA[Adobe vuelve a hacer recortes. Hace más o menos un mes, veíamos como dejaban de desarrollar AIR para Linux, quedándose en la versión 2.6 para este sistema operativo. Ahora, anuncian que van a dar de baja tanto el AIR Marketplace como InMarket. Éste último ni siquiera ha alcanzado el año de existencia,ya que salió en [...]]]></description>
			<content:encoded><![CDATA[<p>Adobe vuelve a hacer recortes. Hace más o menos un mes, veíamos como dejaban de desarrollar AIR para Linux, quedándose en la versión 2.6 para este sistema operativo. Ahora, anuncian que van a dar de baja tanto el AIR Marketplace como InMarket. Éste último ni siquiera ha alcanzado el año de existencia,ya que salió en octubre del año pasado.</p>
<p>Ambos servicios cerrarán sus puertas en poco más de un mes: <strong>el 31 de agosto</strong>.  Según argumentan desde la compañía, su propósito en enfocarse en ayudar  a los desarrolladores a realizar y publicar sus aplicaciones para  múltiples plataformas. Recordemos que InMarket no era una tienda de  aplicaciones más sino un sistema de distribución que hacía llegar las  aplicaciones a otras tiendas.</p>
<p>En cuanto al AIR Marketplace, consideran  que si bien, cuando la lanzaron hace tres años, no había muchas  oportunidades de distribución, hoy ya hay <strong>tiendas de aplicaciones suficientes</strong> tanto para escritorio como para teléfonos y tablets, y animan a los desarrolladores a que hagan uso de ellas.</p>
<p>De esta forma, parece que se acaba la aventura de Adobe en el  terreno de la distribución de aplicaciones de terceros, sobrepasado por  los esfuerzos que ponen en sus propias tiendas empresas como Google,  Apple o Microsoft.</p>
<p>Nuestra fuente: <a href="http://www.genbeta.com/web/adobe-cierra-inmarket-y-air-marketplace" target="_blank">Genbeta</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.adobe-user-group-granada.es/adobe-cierra-inmarket-y-air-marketplace/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Almacenar la salida de un comando SQL en formato CSV</title>
		<link>http://www.adobe-user-group-granada.es/almacenar-la-salida-de-un-comando-sql-en-formato-csv/</link>
		<comments>http://www.adobe-user-group-granada.es/almacenar-la-salida-de-un-comando-sql-en-formato-csv/#comments</comments>
		<pubDate>Fri, 15 Jul 2011 18:35:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[artículos]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[tutoriales]]></category>

		<guid isPermaLink="false">http://www.adobe-user-group-granada.es/?p=1004</guid>
		<description><![CDATA[El formato CSV resulta muy cómodo tanto de generar  como leer, por eso muchos programas lo aceptan. Se trata simplemente de  valores separados por comas (Comma-Separated Values). Vamos a ver como generar un fichero desde MySQL para almacenar datos.
Para generar el fichero desde un comando SQL en MySQL deberemos indicar INTO OUTFILE con [...]]]></description>
			<content:encoded><![CDATA[<p>El <strong>formato CSV</strong> resulta muy cómodo tanto de generar  como leer, por eso muchos programas lo aceptan. Se trata simplemente de  valores separados por comas (<strong>Comma-Separated Values</strong>). Vamos a ver como generar un fichero desde <strong>MySQL</strong> para almacenar datos.</p>
<p>Para generar el fichero desde un comando <strong>SQL</strong> en <strong>MySQL</strong> deberemos indicar <strong>INTO OUTFILE</strong> con el nombre de fichero y las siguientes opciones:</p>
<ul>
<li><strong>FIELDS TERMINATED BY</strong>: Indicamos como terminan los campos, en este caso deben ser separados por comas <strong>‘,’</strong></li>
<li><strong>OPTIONALLY ENCLOSED BY</strong>: Como se deben indicar en el caso que tengan el separador como valor. En este caso mediante comillas dobles <strong>‘”‘</strong></li>
<li><strong>ESCAPED BY</strong>: Indicamos como debemos escapar los carácteres, en este caso mediante la contrabarra <strong>‘\\’</strong></li>
<li><strong>LINES TERMINATED BY</strong>: Indicamos como especificamos una nueva fila, en este caso mediante un intro <strong>‘\n’</strong></li>
</ul>
<p>Por lo tanto el comando <strong>SQL</strong> quedaría:</p>
<pre>mysql&gt;  select * from loquesea
INTO OUTFILE "/tmp/inventari.txt"
FIELDS TERMINATED BY  ','
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY  '\\'
LINES TERMINATED BY '\n' from RackObject;
Query OK, 168 rows affected (0.29 sec)</pre>
<p>Nuestra fuente: <a href="http://systemadmin.es/2011/06/almacenar-la-salida-de-un-comando-sql-en-formato-csv" target="_blank">Systemadmin.es</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.adobe-user-group-granada.es/almacenar-la-salida-de-un-comando-sql-en-formato-csv/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PDF.js librería Javascript para leer PDF en Canvas</title>
		<link>http://www.adobe-user-group-granada.es/pdf-js-libreria-javascript-para-leer-pdf-en-canvas/</link>
		<comments>http://www.adobe-user-group-granada.es/pdf-js-libreria-javascript-para-leer-pdf-en-canvas/#comments</comments>
		<pubDate>Fri, 01 Jul 2011 07:47:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[artículos]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[móviles]]></category>
		<category><![CDATA[pdf]]></category>

		<guid isPermaLink="false">http://www.adobe-user-group-granada.es/?p=1001</guid>
		<description><![CDATA[Interesante librería Javascript que nos permite mostrar en Canvas  (HTML5) el contenido de un PDF. Puede venir muy bien para aplicaciones  móviles, ya que en navegación en escritorio normalmente la gente tiene  instalado un visor de PDFs.

&#60;html&#62;
&#60;head&#62;
  &#60;title&#62;Simple pdf.js page viewer&#60;/title&#62;
  &#60;script type="text/javascript"
        [...]]]></description>
			<content:encoded><![CDATA[<p>Interesante librería Javascript que nos permite mostrar en Canvas  (HTML5) el contenido de un PDF. Puede venir muy bien para aplicaciones  móviles, ya que en navegación en escritorio normalmente la gente tiene  instalado un visor de PDFs.</p>
<p><span id="more-1001"></span></p>
<pre><a href="http://december.com/html/4/element/html.html">&lt;html&gt;</a>
<a href="http://december.com/html/4/element/head.html">&lt;head&gt;</a>
  <a href="http://december.com/html/4/element/title.html">&lt;title&gt;</a>Simple pdf.js page viewer&lt;/title&gt;
  <a href="http://december.com/html/4/element/script.html">&lt;script</a> type="text/javascript"
          src="pdf.js"&gt;&lt;/script&gt;
  <a href="http://december.com/html/4/element/style.html">&lt;style</a> type"text/css"&gt;
body {
  margin: 6px;
  padding: 0px;
  background-color: #c0bdb7;
}
#controls {
  border-bottom: 1px solid black;
  position:fixed;
  left: 0px; top: 0px;
  width: 100%;
  padding: 7px;
  background-color: rgb(242, 240, 238);
}
span#info {
  float: right;
  font: 14px sans-serif;
  margin-right: 10px;
}
#viewer {
  margin: auto;
  border: 1px solid black;
  width: 8.5in;
  height: 11in;
}
#pageNumber {
  text-align: right;
}
  &lt;/style&gt;

<a href="http://december.com/html/4/element/script.html">&lt;script</a> type="text/javascript"&gt;
function queryParams() {
    var qs = window.location.search.substring(1);
    var kvs = qs.split("&amp;");
    var params = { };
    for (var i = 0; i &lt; kvs.length; ++i) {
        var kv = kvs[i].split("=");
        params[unescape(kv[0])] = unescape(kv[1]);
    }
    return params;
}

var canvas, numPages, pageDisplay, pageNum;
function load() {
    canvas = document.getElementById("canvas");
    canvas.mozOpaque = true;
    pageDisplay = document.getElementById("pageNumber");
    infoDisplay = document.getElementById("info");
    pageNum = parseInt(queryParams().page) || 1;
    fileName = queryParams().file || "compressed.tracemonkey-pldi-09.pdf";
    open(fileName);
}

function open(url) {
    document.title = url;
    req = new XMLHttpRequest();
    req.open("GET", url);
    req.mozResponseType = req.responseType = "arraybuffer";
    req.expected = (document.URL.indexOf("file:") == 0) ? 0 : 200;
    req.onreadystatechange = xhrstate;
    req.send(null);
}

function xhrstate() {
    if (req.readyState == 4 &amp;&amp; req.status == req.expected) {
        var data = req.mozResponseArrayBuffer ||
                   req.mozResponse ||
                   req.responseArrayBuffer ||
                   req.response;
        pdf = new PDFDoc(new Stream(data));
        numPages = pdf.numPages;
        document.getElementById("numPages").innerHTML = numPages.toString();
        gotoPage(pageNum);
    }
}

function displayPage(num) {
    pageDisplay.value = num;

    var t0 = Date.now();

    var page = pdf.getPage(pageNum = num);

    var t1 = Date.now();

    var ctx = canvas.getContext("2d");
    ctx.save();
    ctx.fillStyle = "rgb(255, 255, 255)";
    ctx.fillRect(0, 0, canvas.width, canvas.height);
    ctx.restore();

    var gfx = new CanvasGraphics(ctx);

    // page.compile will collect all fonts for us, once we have loaded them
    // we can trigger the actual page rendering with page.display
    var fonts = [];
    page.compile(gfx, fonts);

    var t2 = Date.now();

    // This should be called when font loading is complete
    page.display(gfx);

    var t3 = Date.now();

    infoDisplay.innerHTML = "Time to load/compile/render: "+ (t1 - t0) + "/" + (t2 - t1) + "/" + (t3 - t2) + " ms";
}

function nextPage() {
    if (pageNum &lt; numPages)
        ++pageNum;
    displayPage(pageNum);
}

function prevPage() {
    if (pageNum &gt; 1)
        --pageNum;
    displayPage(pageNum);
}
function gotoPage(num) {
    if (0 &lt;= num &amp;&amp; num &lt;= numPages)
        pageNum = num;
    displayPage(pageNum);
}
  &lt;/script&gt;
&lt;/head&gt;

<a href="http://december.com/html/4/element/body.html">&lt;body</a> onload="load();"&gt;
  <a href="http://december.com/html/4/element/div.html">&lt;div</a> id="controls"&gt;
    <a href="http://december.com/html/4/element/button.html">&lt;button</a> onclick="prevPage();"&gt;Previous&lt;/button&gt;
    <a href="http://december.com/html/4/element/button.html">&lt;button</a> onclick="nextPage();"&gt;Next&lt;/button&gt;
    <a href="http://december.com/html/4/element/input.html">&lt;input</a> type="text" id="pageNumber" onchange="gotoPage(this.value);"
           value="1" size="4"&gt;&lt;/input&gt;
    / <a href="http://december.com/html/4/element/span.html">&lt;span</a> id="numPages"&gt;--&lt;/span&gt;
    <a href="http://december.com/html/4/element/span.html">&lt;span</a> id="info"&gt;&lt;/span&gt;
  &lt;/div&gt;
  <a href="http://december.com/html/4/element/div.html">&lt;div</a> id="viewer"&gt;
    &lt;!-- Canvas dimensions must be specified in CSS pixels.  CSS pixels
      -- are always 96 dpi.  These dimensions are 8.5x11in at 96dpi. --&gt;
    &lt;canvas id="canvas" width="816" height="1056"&gt;&lt;/canvas&gt;
  &lt;/div&gt;
&lt;/body&gt;

&lt;/html&gt;</pre>
<p>Nuestra fuente: <a href="http://sentidoweb.com/2011/06/15/pdf-js-libreria-javascript-para-leer-pdf-en-canvas.php?utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed%3A+sentidoweb+%28Sentido+Web%29&amp;utm_content=Google+International" target="_blank">Sentidoweb</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.adobe-user-group-granada.es/pdf-js-libreria-javascript-para-leer-pdf-en-canvas/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>eSeminar Contenido Web para Múltiples Pantallas</title>
		<link>http://www.adobe-user-group-granada.es/eseminar-contenido-web-para-multiples-pantallas/</link>
		<comments>http://www.adobe-user-group-granada.es/eseminar-contenido-web-para-multiples-pantallas/#comments</comments>
		<pubDate>Tue, 14 Jun 2011 10:18:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[anuncios]]></category>
		<category><![CDATA[eventos]]></category>
		<category><![CDATA[dreamweaver]]></category>
		<category><![CDATA[eseminario]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.adobe-user-group-granada.es/?p=995</guid>
		<description><![CDATA[En este eSeminar veremos qué soluciones web móviles podemos crear a través del correcto uso de
browsers, frameworks, Adobe Dreamweaver y el prototipo Wallaby.

Hora: 20:00 en España (GMT+1), 19:00 en Canarias (GMT +0), 13:00 en México (GMT-6), 13:00 en
Colombia (GMT-5) o Argentina 15:00 (GMT-3).

¿Cuándo? Miércoles 15 de junio de 2011.

¿Dónde? http://webdwk35.bon.at/web/

Aprende a tu ritmo de la [...]]]></description>
			<content:encoded><![CDATA[<div id="_mcePaste">En este eSeminar veremos qué soluciones web móviles podemos crear a través del correcto uso de</div>
<div id="_mcePaste">browsers, frameworks, Adobe Dreamweaver y el prototipo Wallaby.</div>
<div></div>
<div id="_mcePaste"><strong>Hora</strong>: 20:00 en España (GMT+1), 19:00 en Canarias (GMT +0), 13:00 en México (GMT-6), 13:00 en</div>
<div id="_mcePaste">Colombia (GMT-5) o Argentina 15:00 (GMT-3).</div>
<div id="_mcePaste"></div>
<div><strong>¿Cuándo?</strong> Miércoles 15 de junio de 2011.</div>
<div id="_mcePaste"></div>
<div><strong>¿Dónde?</strong> <a href="http://webdwk35.bon.at/web/" target="_blank">http://webdwk35.bon.at/web/</a></div>
<div id="_mcePaste"></div>
<div>Aprende a tu ritmo de la mano de Edgar Parada.</div>
<div id="_mcePaste">El aforo al aula online donde tiene lugar el eSeminar es limitado y sólo podrán entrar las primeras</div>
<div id="_mcePaste">250 personas que lleguen, así que pedimos que los asistentes sean puntuales. Abriremos las puertas</div>
<div id="_mcePaste">5 minutos antes del comienzo de la sesión.</div>
]]></content:encoded>
			<wfw:commentRss>http://www.adobe-user-group-granada.es/eseminar-contenido-web-para-multiples-pantallas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

