MadeInFlex
Formación Flex en el CEV
Febrero 8th, 2010
Hace unos días el CEV, Escuela Superior de Comunicación, Imagen y Sonido, ha anunciado su acuerdo con Codeoscopic para la ofrecer formación especializada en Adobe Flex. Os dejo el comunicado oficial.
A su vez es de esperar que Made In Flex y CEV aprovechen los conocimientos del equipo de MIF en estas tecnologías y las estupendas instalaciones del CEV para ofrecer nuevos eventos para beneficio de toda la comunidad.
Os dejo la nota de prensa:
CEV Y CODEOSCOPIC: ACUERDO DE COLABORACIÓN
» Leer más, comentarios, etc...
Picando Código
Afiches minimalistas de la galaxia de Star Wars
Febrero 8th, 2010
Justin Van Genderen creó una serie de afiches de distintos sistemas en la galaxia de Star Wars. Hay afiches de: Dagobah, Endor, Tatooine, Hoth y Bespine. Están muy buenos, particularmente en mi caso uso el nombre de alguno de estos sistemas para cada una de mis computadoras, para algo los usaré:
fernando@dagobah fernando@hoth fernando@tatooine
Pueden ver el resto de la galería en Flickr. Visiten el sitio del autor para ver más diseños de su creación.
Vía: Laughing Squid
» Leer más, comentarios, etc...
Fetishcode...Thinking in objects
Acceder a métodos del AppModule desde el backing bean
Febrero 7th, 2010
A
» Leer más, comentarios, etc...
Fetishcode...Thinking in objects
Obtener la conexión actual de nuestro AppModule
Febrero 7th, 2010
A
» Leer más, comentarios, etc...
MonoCaffe
Wooops… Fallo en MCM 0.9
Febrero 7th, 2010
Gracias a mis beta testers :) he arreglado un par de fallos en la nueva versión de MCM 0.9. Por una parte, el script de instalación no copia el fichero "tips.json" al directorio del usuario, el script de arranque no añadía una nueva linea de configuración "buffer.size" al fichero mcm.conf y finalmente, por alguna razón mágica, Glade dejo de escribir las señales de los eventos para las acciones de importar y exportar. Todos estos fallos has sido resueltos, así que si habéis tenido estos problemas, descargad los ficheros nuevamente y todo debería funcionar sin problemas.
» Leer más, comentarios, etc...
Sergio Guerrero | Desarrollo web y Tiendas virtuales
Webinar sobre Desarrollo en Magento
Febrero 7th, 2010
El equipo de Magento nos ofrecerá, el próximo miércoles día 10 de febrero de 2010 a la 18:00 horas (hora Española; 9:00 AM hora de San Francisco), un seminario web para desarrolladores de Magento. Esta sesión estará dirigida a aquellos desarrolladores que quieran ampliar sus conocimientos sobre programación en Magento.
Bajo el título "Las mejores prácticas para el desarrollo en Magento", el equipo de desarrollo de Magento junto con la compañía Zend (creadores de PHP, PHP Zend Framework, etc) nos ilustrarán con los siguientes temas:
- Normas y convenciones de Magento y Zend Framework
- El estilo de programación de Magento
- Cómo configurar un proyecto de Magento en Zend Studio
- Programando bien, el código escalable y los principios de escalabilidad de Magento
- Las mejores prácticas para la programación de plantillas
- ¿Cómo convertirse en colaborador oficial de Magento y enviar Código?
No te lo puedes perder. Registrate al seminario para desarrolladores de Magento
Fuente: Blog Oficial de Magento
Entradas relacionadas
» Leer más, comentarios, etc...
Sergio Guerrero | Desarrollo web y Tiendas virtuales
SEO Magento – Guía SEO para Magento
Febrero 6th, 2010
Desde que se presentó la primera versión de Magento, ha pasado ya más de un año y seguimos sin tener un "guía definitiva" de SEO para Magento en español. Durante todo este tiempo, se ha escrito mucho sobre el posicionamiento en buscadores, pero siempre en los foros, en algunos blogs, etc. Nunca se ha mostrado una visión completa de este tema y es hora de recopilar todo ese conocimiento en un sólo artículo: la guía SEO Magento.
Conforme las búsquedas, el SEO y Magento vaya evolucionando esta guía se irá actualizando con nuevos consejos, trucos y con las mejores prácticas. Es muy recomendable mantenerse actualizado a la última versión de Magento, siempre que sea posible, para, de esta forma, beneficiarse de las mejoras y de las correcciones de errores que se vayan incorporando.
Para ir haciendo un seguimiento de las correcciones que se van incorporando en cada versión de Magento, podemos consultar su Hoja de Ruta.
Índice de contenidos
- 1. Optimización técnica básica
- 2. Optimización de la plantilla de Magento
- 3. SEO Avanzado en Magento y el contenido duplicado
1. Optimización técnica básica
1.1 Configuración general
Magento es una de las plataformas de comercio electrónico mejor preparada para los motores de búsqueda, sin necesidad de instalar extensiones adicionales, pero existen algunos errores conocidos, que deben ser corregidos a la hora de optimizar el SEO de nuestra tienda virtual con Magento. El primer paso debería ser siempre utilizar la última versión estable de Magento. A continuación deberemos activar la reescritura de las direcciones URL. Para activar esta opción, accederemos a la configuración de la siguiente forma: Administración -> Sistema -> Configuración -> Configuración-> Web -> Optimización para motores de búsqueda: Usar reescrituras del servidor web (Sí). Otra buena opción a configurar dentro de esta misma pantalla es "Añadir el código de tienda a las URLs", que será recomendable establecer a Sí en caso que tengamos configurada varias vistas de la tienda.
Activando la reescritura y la opción Añadir el código de tienda a las URLs, tendremos URLs com por ejemplo:
- http://www.mitiendamagento.com/espanol/extensiones-magento.html
- http://www.mitiendamagento.com/english/extensiones-magento.html
1.1 Con WWW o Sin WWW
Dentro de la opción: "Optimización para motores de búsqueda", mencionada en el apartado anterior, y bajo las etiquetas: "Inseguro" y "Seguro", se pueden encontrar las URLs base, donde podemos fijar el dominio de nuestra tienda y escoger entre un dominio con www o sin www. Realizando esta configuración solo estaremos indicando cual es nuestra URL preferida, pero no estaremos realizando ninguna redirección desde la versión con www a la versión sin, ni viceversa. Por lo tanto, será buena idea crear una redirección 301 mediante el mod_rewrite de htaccess, que además de resolver el problema entre URLs con www y sin, impide que Magento añada el identificador de sesiones (SID) en nuestras URLs. A la hora de realizar dicha redirección, debemos asegurarnos de indicar el mismo dominio, tanto en Magento, como en el archivo .htaccess.
El siguiente ejemplo .htaccess servirá para redireccionar desde index.php a la raiz de la tienda:
RewriteBase / RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://www.mitiendamagento.com/ [R=301,L]
En caso que nuestra tienda se encuentre en un subdirectorio (http://www.mitiendamagento.com/tienda), utilizaremos el siguiente código:
RewriteBase /tienda/ RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /magento/index\.php\ HTTP/
RewriteRule ^index\.php$ http://www.mitiendamagento.com/tienda/ [R=301,L]
1.2 Ajustes de la cabecera
Por defecto, nuestra instalación de Magento trae como título: "Magento Commerce", título poco adecuado para que nuestra tienda obtenga el tráfico que se merece. A la hora de redactar los títulos de nuestra tienda (productos, categorías, etc), deberemos tener en cuenta los siguientes aspectos:
- Los motores de búsqueda dan más importancia a las primeras palabras del título, así pues, si nuestras palabras clave se encuentran cerca del comienzo será más probable que nuestra página obtenga mejores posiciones.
- Las personas que consultan las páginas de resultados en los buscadores ven antes las primeras palabras de los títulos y de las descripciones. Si nuestras palabras clave están colocadas al comienzo, es más probable que recibamos más visitas.
En primer lugar, cambiaremos el título principal de nuestra tienda. Iremos a Sistema -> Configuración -> Cabecera HTML y dentro de "Título por defecto" introduciremos un buen título que describa perfectamente nuestra web. Este título aparecerá en varias páginas además de la página principal, por ejemplo, en la página de Contacto, en Términos de búsqueda más utilizados…
Para agregar el nombre de la tienda a todos los títulos, incluyendo las categorías y los productos, deberemos poner dicho nombre dentro del campo sufijo del título (Title Suffix), siendo buena idea mantener en blanco el prefijo (Title Prefix) para que los títulos de cada página queden siempre al comienzo (por importancia de las primeras palabras), y que justo después aparezca el nombre de la tienda. Mantendremos también en blanco tanto la "Descripción por defecto" como las "Palabras Clave por defecto". Para evitar que nuestra tienda sea indexada por los buscadores, mientras esta no esté en producción, puede ser útil fijar a "NOINDEX, NOFOLLOW" el parámetro robots (Default Robots). En el resto de casos, deberemos asegurarnos que este parámetro sea "INDEX, FOLLOW".
Ahora que estamos optimizando las cabeceras de las páginas, puede ser una buena idea agregar el nuevo tag canonical que nos ayudará a eliminar el contenido duplicado de los índices de los buscadores, mejorando así nuestro SEO. Actualmente existe un módulo para gestionar las URLs Canónicas en Magento y lo podemos instalar mediante Magento Connect.
Podemos encontrar más información sobre este tag en las siguientes direcciones:
- Baluart.net – Canonical Tag
- SEOMoz.org – Canonical Tag
- Yoast.com – Canonical Tag
1.3. Páginas adicionales (Páginas del CMS)
A primera vista, el sistema de administración de contenidos o CMS de Magento puede parecer carente de ciertas funcionalidades, pero es lo suficientemente potente y flexible para la mayoría de usos. Una de las ventajas de este CMS es que podemos controlar cada uno de los aspectos relacionados con las páginas (estado, vista, título, contenido, diseños, meta datos…). Una vez que hayamos introducido el contenido de cada página, deberemos escoger una URL Amigable (SEF URL; Search Engine Friendly URL), un título para la página (teniendo en cuenta los consejos del apartado 1.2), e ir a la pestaña de Meta Datos para escribir la descripción de la página (descripción o snippet que aparecerá en los buscadores).
Las palabras clave (Keywords) pueden dejarse en blanco, pero no está de más cumplimentar este campo si dicha página tiene cierta importancia. La descripción de la página tiene una función muy relevante: motivar a los usuarios para que la visiten, por lo tanto, deberemos redactarla concienzudamente describiendo lo que el usuario encontrará y de forma que llamemos su atención. Por eso, las buenas descripciones deben ser redactadas manualmente, y si preferimos que estas sean "generadas" de forma automática, lo mejor será dejarlas en blanco y ceder el control a los motores de búsqueda.
Si no utilizamos la meta descripción, el motor de búsqueda intentará encontrar los términos de la búsqueda dentro de nuestra página y automáticamente obtendrá un fragmento de texto alrededor de dichos términos. Esto nos proporcionará una o dos palabras en negrita dentro de la página de resultados y seguramente, una descripción poco llamativa.
1.4. Optimización de las categorías
Magento nos ofrece la posibilidad de añadir el nombre de las categorías en las URL de los productos, pero en las versiones actuales de Magento, esta funcionalidad no está muy bien desarrollada y genera contenido duplicado (por lo menos, hasta la versión 1.3.4.2). Al activar esta opción, el contenido de un producto podrá ser consultado desde varias URLs:
- http://www.mitiendamagento.com/catalog/producto/view/id/233
Esta URL no se mostrará nunca - http://www.mitiendamagento.com/catalog/producto/view/id/233/category/2
Esta URL no se mostrará nunca - http://www.mitiendamagento.com/guia-seo.html
Se utiliza en la página principal, en los bloques, etc - http://www.mitiendamagento.com/posicionamiento-web/guia-seo.htmk
Este enlace aparecerá en las páginas de las categorías - http://www.mitiendamagento.com/posicionamiento-web/libros/guia-seo.html
Este enlace aparecerá en las páginas de las subcategorías
Mientras el funcionamiento de esta opción sea el mencionado, será buena idea deshabilitarla o aplicar alguna modificación del Core de Magento para poder utilizar los nombres de las categorías en las URLs de los productos sin generar contenido duplicado.
Para activar/desactivar esta opción, accederemos al siguiente apartado: Sistema -> Configuración -> Catálogo -> Catálogo -> Optimizaciones para el motor de búsqueda: Usar rutas de categorías para la URL de los productos (SI/NO).
Es el momento de establecer los detalles de cada una de nuestras categorías (Admin -> Catálogo -> Gestionar las Categorías). Los campos más importantes de las categorías en relación con el posicionamiento web son:
- Meta Descripción: indicaremos un descripción atractiva de la categoría, teniendo en cuenta que dicha descripción será la que los usuarios verán en los motores de búsqueda.
- Título de la página: dejaremos este campo en blanco para que Magento genere un título con el nombre de dicha categoría y el de sus categorías padre. Si indicamos un título personalizado, el título de la categoría será exactamente el que indiquemos, sin incluir los nombres de las categorías padre.
- URL Key: intentaremos mantener una URL corta, pero al mismo tiempo rica en palabras clave. Es recomendable eliminar los artículos, las preposiciones y las conjunciones, como por ejemplo: "el", "y", "de", "para", "en", "a", etc. A la hora de escoger un nombre para la URL, deberemos tener en cuenta que este parámetro será único para todas las vistas y por lo tanto, en las tiendas multiidioma se mostrará siempre el mismo texto de URL. En este caso, siempre que sea posible, deberemos buscar una URL independiente del idioma u optar por aquel idioma que más nos convenga.
Magento permite indicar, para cada una de las vistas, un Nombre, una Descripción, un Título de Página y unos Meta Datos distintos. Esto supone una gran ventaja a la hora de posicionar nuestros contenidos en los buscadores.
1.5. Optimización de los productos
La optimización de las páginas de los Productos es similar a la de las Categorías.
En tiendas muy grandes puede suponer un enorme trabajo adicional el hecho de tener que indicar todos los Meta Datos, pero Magento ofrece la opción de generarlos automáticamente para cada una de las Vistas del producto, marcando la casilla: "Usar Valor por defecto". Como ya se ha comentado en los puntos anteriores, lo más recomendable, para conseguir buenos resultados, es redactar manualmente los Meta Datos. Si indicamos el Meta Título, deberemos tener en cuenta que estaremos sobreescribiendo el título por defecto (este contiene el nombre de las categorías, el nombre del producto, el prefijo y el sufijo), pero se mantendrá tanto el prefijo como el sufijo establecidos en la configuración global de la tienda.
Uno de los aspectos relacionados con el SEO, que con frecuencia se pasa por alto, es la forma como gestionamos nuestras imágenes. Por ejemplo, si escribimos buenos textos alternativos y pensamos bien los nombres que le ponemos a los archivos, podemos conseguir un incremento de nuestras visitas gracias a los motores de búsqueda de imágenes. Además, estaremos mejorando la accesibilidad de nuestra página, y por lo tanto, ayudando a aquellas personas con dificultades, que utilizan lectores de pantalla y que sin los textos alternativos serán incapaces de entender el contenido de dichas imágenes.
Por defecto, las imágenes serán renombradas con el título del producto, y lo mismo sucederá con los títulos y textos alternativos. Con un poco de esfuerzo adicional, podremos indicar buenos títulos y textos alternativos para cada una de las imágenes. Bajo la pestaña "Imágenes", dentro de la información del producto, podemos definir las etiquetas para cada una de las imágenes, este valor será utilizado tanto para el texto alternativo, como para el título de la imagen. Por supuesto, podemos indicar dichas etiquetas para cada una de las vistas de la tienda.
2. Optimización de la plantilla de Magento
2.1. Plantilla optimizada (Blank Template)
Las plantillas que trae Magento, como por ejemplo: "Default Theme", "Blue Skin" o la "Modern Theme", no hacen un buen trabajo en relación con los encabezados, desde el punto de vista del posicionamiento web. Para hacernos la vida más fácil, el equipo de Yoast ha creado una nueva plantilla que toma como base la plantilla "Magento Blank Theme" y que incorpora todas las mejorar mencionadas en esta guía de SEO para Magento. Esta plantilla la podemos encontrar entre las contribuciones de Magento con el nombre: Blank Magento SEO Theme.
2.2. Encabezados
Por defecto, el logotipo de la página suele ser un pero sólo debería serlo en la página principal. En el resto de páginas, el logo debería ser, como mucho, un ,
. Lo más importante es conseguir que el título de cada página tenga una etiqueta , por ejemplo, en la página de una categoría el título más importante o debería se el nombre de dicha categoría y de igual forma, en la página de un producto.
El siguiente paso consiste en limpiar el exceso de etiquetas de encabezado que restan importancia a las que realmente lo son o deberían serlo. Por ejemplo, podría ser buena idea deshacerse de los encabezados de las columnas laterales, o dar relevancia a los textos de la tienda (incluyendo palabras clave). No existe ninguna razón por la que las palabras clave deban estar dentro de un Ahora pasaremos a optimizar nuestro contenido. En las páginas de las categorías pondremos los nombres de los productos dentro de etiquetas Para obtener más información acerca de porqué es importante tener buenos encabezados, podemos leer este artículo sobre el HTML semántico y el SEO. Todo el código javascript y CSS que tengamos directamente dentro de los ficheros de nuestra plantilla deberían ser movidos a archivos externos (archivos js y CSS) para mantener limpia nuestra plantilla y mejorar el SEO de Magento. Con estos cambios, nos aseguraremos de que los usuarios podrán almacenar estos archivos en caché en la primera carga de la página, y de que los motores de búsqueda no tienen que descargar el mismo código la mayoría de las veces. Un factor muy importante, en relación con el número de páginas que un motor de búsqueda puede indexar dentro de nuestra tienda en un sólo día, es la velocidad de carga. Podemos realizar varias acciones para mejorar la velocidad de carga de nuestro Magento: Otro aspecto que debemos tener en cuenta es el número de archivos externos que se cargan en cada petición de página. Por cada archivo que el usuario descarga desde nuestra página web, el navegador tiene que crear una nueva conexión con el servidor y esto supone que necesitaremos más tiempo para descargar la página completa. Por eso, será buena idea reducir el número de archivos externos combinándolos en uno solo. Por defecto, Magento permite combinar casi todos los archivos Javascript en uno sólo, mediante la opción: Sistema -> Configuración -> Avanzado -> Desarrollador -> Ajustes de Javascript -> Combinar archivos Javascript (Sí). Magento no realiza esta tarea con las hojas de estilo y, por ejemplo, la plantilla por defecto trae 6 hojas de estilo diferentes. Nosotros podemos combinar el contenido de estas hojas de estilo en un solo archivo, exceptuando el contenido del archivo print.css, que debe mantenerse por separado. Podemos realizar esta combinación manualmente o podemos utilizar el módulo Fooman Speedster module, que además de hacer el trabajo de fusión por nosotros, se encargará de comprimir y cachear tanto los archivos javascript como los css. Antes de instalar el módulo Speedster, deberemos tener en cuenta sus requisitos, como, por ejemplo, que el Una vez que hayamos revisado todos los aspectos básicos, podríamos reducir toda la problemática restante a un único tema: el contenido duplicado. Para los productos de nuestro catálogo, al menos, las siguientes URLs muestran exactamente el mismo contenido: Además de estas URLs, también tendremos las páginas de comentarios donde Magento muestra casi el mismo contenido que en la ficha de los productos. Otro problema de este tipo lo encontraremos en las categorías, donde podemos llegar a tener contenido duplicado a causa de la navegación por capas (filtros) y/o las opciones de ordenación. Esto significa, que en el peor de los casos, un producto puede estar disponible, al menos, en 4 páginas además de la página donde realmente debería mostrarse. Para evitar esta problemática, vamos a deshacernos de todos los grupos de contenido duplicado, permitiendo que estos sean rastreados por los motores de búsqueda (follow), pero evitando que sean indexados (noindex). También corregiremos los problemas mencionados para las categorías en relación con la navegación por capas y la ordenación de los resultados. Las páginas sin contenido como pueden ser la URLs de las imágenes, la página de contacto, etc, son páginas para las que debemos realizar ajustes, de forma que los motores de búsqueda no las indexen, pero que rastreen todos los enlaces que puedan encontrar dentro. Para realizar dichos ajustes, existe la extensión: Yoast robots meta module, que nos permitirá ajustar el tag meta robots para cada una de las páginas sin contenido. Otro ajuste que deberemos realizar a la hora de optimizar nuestro SEO en Magento, consistirá en evitar que las arañas sigan aquellos enlaces poco relevantes para nuestro negocio, como por ejemplo, la página de login, el proceso de compra, la lista de productos deseados y otras páginas sin contenido. Los mismo sucede con los enlaces hacia nuestros feeds RSS, la navegación por capas, enlaces como agregar a la lista de productos deseados, agregar a la comparación, etc. Actualmente no existen extensiones para agregar el parámetro: rel="nofollow" en dichos enlaces, por lo que deberemos realizarlo manualmente y directamente sobre la plantilla. Para ayudar a los motores de búsqueda a entender el contenido duplicado de nuestra tienda, tenemos la posibilidad de indicar, en cada una de nuestras páginas, la URL principal utilizando el nuevo tag para URLs Canónicas. Para aplicar este tag disponemos de un módulo sencillo de instalar: URLs Canónicas para Magento (Canonical URLs for Magento). Los Sitemaps en XML són una forma sencilla de ayudar a que los motores de búsqueda localicen nuestro contenido. Los Sitemaps no nos ayudarán a posicionar mejor, pero si que conseguirán que nuestro contenido quede indexado de forma más rápida. Podemos crear un Sitemap XML manualmente de la siguiente forma: Admin -> Sistema -> Configuración -> Google Sitemap -> Agregar un Sitemap, indicamos el nombre del archivo resultante, la ruta donde se almacenará y la vista o vistas que queremos incluir, presionaremos sobre el botón: Generar y Guarda y ya tendremos nuestro Sitemap creado. A continuación deberemos indicar a los buscadores donde se encuentra ubicado nuestro Sitemap XML y para eso disponemos de varias opciones: Siempre que sea posible, puede ser buena idea utilizar ambas opciones y en caso de no ser así, por lo menos utilizaremos la opción del robots.txt de la siguiente forma: El proceso de regeneración del Sitemap no se realiza de forma periódica y automatizada. Para asegurarnos de que este archivo se encuentra actualizado cuando los motores de búsqueda lo consulten, es buena idea utilizar un tarea programada en el servidor (cron job), que se encargue de actualizar el contenido del Sitemap. Para informarnos sobre la creación de tareas programadas o cron jobs en Magento, podemos consultar la siguiente dirección: http://www.magentocommerce.com/wiki/how_to/how_to_setup_a_cron_job. Esta guía de SEO para Magento cubre los aspectos más importantes que debemos tener en cuenta a la hora de optimizar nuestra tienda. La versión que aquí se expone es una traducción personal del artículo original escrito por Joachim Houtman, que podemos encontrar en la web de Yoast. » Leer más, comentarios, etc... Febrero 5th, 2010 Muchas veces por Picando Código postié sobre Navegadores Web. Es un tema que personalmente me interesa mucho, seguirles el desarrollo y ver las variaciones de cada uno, conocer cómo surgieron, etc. Incluso generalmente tengo al menos 5 o 6 navegadores web diferentes instalados en cada computadora. Si navegan por la categoría Browsers del blog, sabrán lo que les digo… Por eso, tuve que canalizar todo eso por otro lado, para no saturar Picando Código con ese tema en particular, en un nuevo blog: Navegadores Web. Si les interesa, dense una vuelta por el primer post: Hola mundo de los navegadores web y dejen su comentario. Y de bonus, dejo las noticias de navegadores web de esta semana: » Leer más, comentarios, etc... Febrero 5th, 2010 Esta semana publiqué varios posts sobre Scrum en el otro blog, las comparto por acá ya que les pueden interesar: » Leer más, comentarios, etc... Febrero 5th, 2010 DefectiveByDesign reporta que la respuesta a la protesta y petición sobre el iPad ha sido tremenda: 5.000 personas firmaron en las primeras 24 horas, con cobertura en la presa técnica, Digg, Slashdot, Reddit, The Guardian, NPR, y más. La petición sigue juntando firmas, pueden firmarla y compartirla para ayudar a alcanzar las 10.000 firmas. Se entregó la carta con las primeras 5.000 firmas en una tableta iPad gigante, directamente a Steve Jobs. Por cada bloque de 5.000 firmas se entregará una tableta nueva. En una postal acompañada de una tableta, le están diciendo a Steve Jobs que todavía tiene una oportunidad de hacer lo correcto, “5.000 personas en 24 horas se tomaron el tiempo de su día para llamarle la atención sobre esto, y demandan un cambio. Todavía hay tiempo para que haga lo correcto en los próximos 60 días, antes que el iPad salga a la venta. Puede retirar todo el DRM del dispositivo y la App Store, y abrazar los ideales que clama defender — creatividad, libertad e individualidad.” La tableta incluye una cabeza de Steve Jobs “malvado” de la publicidad paródica de 1984 de Apple, y se tomó prestado un sello de Apple Entre los 5.000 nombres está el mío, si todavía no han firmado, todavía pueden hacerlo, y si ya lo hicieron, busquen su nombre en la foto: » Leer más, comentarios, etc... Febrero 5th, 2010 Un par de enlaces sobre Java: » Leer más, comentarios, etc... Febrero 5th, 2010 Hace unos días, aparentemente tras una actualización en Debian Squeeze, obtuve un error al intentar montar por NFS un directorio compartido en el servidor Ubuntu del trabajo: Fue algo raro, ya que antes funcionaba automáticamente, y no encontraba errores en el fstab ni nada. Así que buscando un poco me encontré con este artículo cuyo autor sufría el mismo problema. Incluso usando la opción mount -v (modo verbo) la información provista no es demasiado específica: Al igual que en el post en cuestión, mi computadora intenta usar NFS versión 4 para montar el directorio. Sin embargo el servidor usa NFS versión 3. La solución es agregar el parámetros nfsvers=3 en el fstab: Con esto quedó funcionando correctamente. » Leer más, comentarios, etc... Febrero 5th, 2010 Con este post comenzamos una serie de recomendaciones, tips y tutoriales enfocados a cubrir aquellos temas básicos de la tecnología Flex que esperamos sean de utilidad para los entusiastas de la plataforma. Uno de los primeros tips que es importante conocer cuando hacemos aplicaciones con Flex utilizando Flex/Flash Builder es el manejo de los archivos de salida. De forma automática cuando generamos un proyecto nuevo con la herramienta se crean varias carpetas: bin-debug, html-template, src y libs. Es común encontrar por la red aplicaciones Flex de desarrolladores que al compilar sus proyectos por descuido o desconocimiento suben las aplicaciones SWF generadas en la carpeta bin-debug, esta versión contiene información adicional que es utilizada cuando utilizamos el comando debug de la herramienta. La forma correcta de subir nuestras aplicaciones al servidor sería aprovechando las versiones generadas a partir del comando “Export Release Build”, ya que al no incluir esa información adicional su peso es considerablemente menor que la versión de depuración. Tomemos como ejemplo una aplicación sencilla que contiene 3 componentes: Button, TextInput y DataGrid. Al compilar estar aplicación el SWF generado en la carpeta bin-debug tiene un peso de 449 kb. Ahora ejecutemos el comando Project > Export Release Build, el tamaño de la aplicación generada es de tan solo 276 kb, siendo el ancho de banda uno de los recursos más preciados en las aplicaciones de Internet es importante tener cuidado con estos pequeños detalles. Hace tiempo en algún taller de Flex recuerdo que utilicé el hashtag #flex101 para hablar de los fundamentos de la tecnología, por lo que los invito a compartir sus mejores tips en Twitter a la cuenta de @madeinflex no duden que en una entrada posterior merecerá que hagamos una compilación de los mejores. » Leer más, comentarios, etc... Febrero 5th, 2010 Leo en el blog de Andrew Glover, que el equipo de easyb ha publicado un pequeño videotutorial de introducción a cómo utilizar este framework de testing para hacer Behaviour Driven Development en la JVM, tanto para escribir specifications como stories. Aquí ya toqué el tema de easyb junto a grails, eso sí, no he llegado a utilizarlo de verdad. Otras alternativas que pueden ser interesantes para practicar BDD, y que pueden correr en la JVM son Spock, RSpec, JBehave… y unos cuantos más cuyos nombres no recuerdo » Leer más, comentarios, etc... Febrero 4th, 2010 Bruce Eckel (autor de Thinking in Java) publicó junto a James Ward el libro First Steps in Flex (Primeros pasos en Flex). El libro intenta enseñar Flex creando ejemplos y capítulos cortos, suficiente como para introducirse en cada tema. El asunto es que decidieron lanzar Screencasts gratuitos de cada capítulo del libro. En teoría, se obtiene la misma información de los seminarios online que del libro. Están en inglés, hablados y comentados por sus dos autores quienes van discutiendo el código. Pueden verlos en el sitio web: First Steps in Flex Un recurso interesante para quienes quieran comenzar con Flex. » Leer más, comentarios, etc... Febrero 4th, 2010 Inicio este post con la estupenda frase utilizada BI Fácil en el post Datos, información y conocimiento, si recuerdan sus clases de Base de datos encontramos que es muy común que se toque el tema de que los datos por si solos no nos dicen nada pero si los unimos nos dan información pero seguramente pocos saben como termina la historia, bueno si esa información la utilizamos para tomar decisiones estamos accionando, acciones de las cuales esperamos un resultado, y resultados de los cuales esperamos obtener valor, todo esto es sinónimo de empresa exitosa!!!. Excelente post, Datos, información y conocimiento » Leer más, comentarios, etc... Febrero 4th, 2010 Nueva versión de Monocaffe Connections Manager con una gran adición de la que estoy muy contento. Un widget al estilo breadcrumb para acceder a referencias a comandos, tal que el usuario no tenga que recordar cada opción, comando o conjunto de teclas de cada aplicación que usa. » Leer más, comentarios, etc... Febrero 3rd, 2010 A » Leer más, comentarios, etc... Febrero 3rd, 2010 Ya he subido a github el código que añadimos el viernes en el taller de Grails(con algunos arreglillos que tenía pendientes) que hicimos en la sede de hispalinux Zaragoza. Aún siendo un día festivo, finalmente vinieron 10 personas, y eso que se despistaron un par de la hora(mea culpa por no mandar un email de recordatorio el día de antes :S). Creo que durante las casi 3 horas que duró, llegamos a ver bastante del framework y algunos detalles de lo que puede aportar groovy en casos prácticos. Antes de ponernos a trabajar sobre el código, también hice una pequeña presentación de introducción, para situar a la gente que no conociera demasiado acerca de groovy y grails. Al terminar el taller estuvimos charlando de varias cosas, lo más interesante: » Leer más, comentarios, etc... Febrero 2nd, 2010 El día de hoy se anunció en Adobe Labs, AIR 2 beta 2. Es importante darle un vistazo puesto que las aplicaciones compiladas con beta 1 ya no podrán ejecutarse con el runtime de AIR 2 beta 2, así mismo hay algunas características importantes en esta versión entre las que destacan… También hay algunas aplicaciones de ejemplo que podemos ir descargando para revisar a detalle estas características. » Leer más, comentarios, etc... Febrero 2nd, 2010 Otro problemita a la hora de instalar el entorno de desarrollo para Flex Builder en Debian. Buscando encontré que este error también se daba en otras aplicaciones basadas en Eclipse, en Ubuntu y Debian. El error: Launching installer... An internal LaunchAnywhere application error has occured and this application cannot proceed. (LAX) Stack Trace: En mi caso se daba cuando intentaba ejecutar el instalador de Flex Builder. Aparentemente puede venir por el lado del shell que usemos, o alguna propiedad. El asunto es que pude ejecutarlo corriéndolo desde Bash, y haciendo un unset antes de correrlo: Otra solución corta para tener de referencia… La solución que encontré en este link: Problema: Causa: Este es un bug conocido de InstallAnywhere. Solución » Leer más, comentarios, etc... Febrero 1st, 2010 Parecería que el popular programa de TV tiene poco que ver con el desarrollo de software y el diseño de interfaces… pero algo sí que podemos aprender de él (y no es que los desarrolladores seamos como niños). Seguro que recuerdas Supernanny, ese programa de TV en el que una psicóloga aconsejaba a diferentes padres (habitalmente al borde de la desesperación) en cuanto a la educación de sus hijos. http://www.youtube.com/watch?v=_d35AeoGpY4 Quizás te sorprenda, pero podemos extraer algunas lecciones de su modo de actuar aplicables al desarrollo de software. Y si no, veamos cuál es la estrategia de Supernanny: ¿Creéis que Supernanny sería tan efectiva si, en vez de proceder así, esperara a que los padres acudieran a su despacho, le expusieran el problema, y ella les diera una solución sin ni siquiera conocer a sus hijos? Parece obvio que no. Entonces ¿por qué no seguimos el mismo esquema en el desarrollo de software? Habitualmente esperamos que el cliente nos cuente sus problemas, y nosotros desarrollamos la solución, muchas veces sin conocer en entorno de trabajo ni a los usuarios. La técnica equivalente a lo que hace Supernanny en el ámbito del Diseño Centrado en el Usuario (y en otras muchas disciplinas) suele ser conocida como "estudio de campo". Y es que, si bien es cierto que no hay dos niños iguales, lo mismo ocurre con los usuarios y sus situaciones. Y sí, seguro que Supernanny nos ayudaría con muchos clientes. » Leer más, comentarios, etc... Febrero 1st, 2010 Seguramente alguna vez hemos oído o leído sobre los conceptos de “pool de objetos” o “cache de objetos”. En este artículo quiero darles un vistazo en profundidad. Son conceptos que pueden confundirse, es por esto que intentaré resaltar las diferencias entre ambos conceptos después de haber investigado un poco.
Son patrones orientados a objetos muy potentes y muy usados en diferentes tecnologías, sobre todo en J2EE. Cuando hablamos de pool, ésta se concibe como una colección de objetos sin estado. Algunos ejemplos serían una pool de conexiones a base de datos o una pool de item renderers. En cambio, la cache se define como una colección de objetos con estado definido, por ejemplo, cuando trabajamos con servicios con una capa como puede ser Spring, los servicios se cachean. La diferencia más importante entre estos dos conceptos está en lo que contienen, es decir, usaremos una cache cuando nos interese guardar un estado de un objeto concreto. En cambio usaremos una pool cuando necesitamos guardar objetos de los cuales no nos importa perder su estado. Otras consideraciones importantes son: Podemos decir que la manera más habitual una cache se representa como un diccionario, es decir, como una colección de parejas id-value, de manera que cuando necesitamos un recurso determinado, éste es buscado en el diccionario y se devuelve el valor. Para representar una pool, también podemos hacerlo con un diccionario, pero se suele crear una clase que controle los recursos, con una lógica no tan sencilla como la de una cache. Una pool de objetos puede ofrecer una mejora de rendimiento en una aplicación. Es adecuada en aquellas situaciones en la que nos puede penalizar el proceso de creación de objetos o en las que el número de objetos de un determinado tipo puede hacer degradar el rendimiento la aplicación. En la siguiente imagen se muestra un ejemplo típico de Pool: La pool está implementada como un singleton, el cual nos permite pedir un elemento, liberar un elemento o settear el valor máximo de elementos que la pool puede albergar. Las pools se diferencian en tres tipos: Cada aproximación de las anteriores expuestas tiene sus beneficios y depende del contexto, el uso de una o de otra. Espero que este post haya servido para aclarar ambos conceptos. A continuación os dejo unos links interesantes sobre este tema: » Leer más, comentarios, etc... Enero 30th, 2010 La Ciudad del Cusco (mi ciudad) y los alrededores han venido sufriendo desde hace una semana atrás grandes precipitaciones pluviales, las cuales han inundado parte y en otros casos toda una ciudad. Esta tragedia ya ha cobrado al menos 10 víctimas. La región del Cusco ha sido declarada en emergencia desde el martes pasado, este periodo será por 60 días. Un amigo me comenta que en el extranjero se cree que la tragedia es sólo en Machupicchu, pero desde aquí decimos que aparte de Machupicchu y Aguas calientes hay otras ciudades que han sufrido mucho más y están necesitando nuestra ayuda. Tenemos algunas fotos: Yucay por Daniel Nakasone Zurite por Marco Moscoso Aguas Calientes por Alfredo Velarde Las ciudades que necesitan ayuda se pueden ver en el siguiente mapa realizado por @elcaminerito: En el mapa arriba también se muestran en verde los puntos de apoyo en Cusco. Además, podemos ayudar donando frazadas, alimentos no perecibles, agua, etc. Podemos ver la lista completa en el Blog de El caminerito. En Lima: Hoy y mañana se recibirán donativos en Almirante Guisse 934, Jesus Maria. A la altura de la pre de la Agraria en avenida Cuba. En Cusco: HOY antes de las 10am para realizar catastro de la gente damnificada en Cusco. Llamar al teléfono 984750101 Puedes seguir también mediante Twitter a @elcaminerito, @achachau, @Apu_Rimak, @VOXURUBAMBA y o los trends #cusco, #machupicchu y #lluvias. Estaremos actualizando para más información. » Leer más, comentarios, etc... Enero 30th, 2010 Programanía lleva teniendo cuenta en Twitter mucho tiempo. David se encargó de llevar este humilde blog al mundo de las redes sociales. Lo que pasa es que lo anuncio ahora porque me he decidido a reactivar este blog (ya era hora, me daba mucha pena tenerlo parado) y a empezar a utilizarla. Pienso postear lo que vaya leyendo de artículos del Google Reader y los artículos que vayamos escribiendo…. Con ustedes, PROGRAMANIA EN TWITTER. ¡Bienvenidos al 2009! , por lo tanto, será mejor que cambiemos todas las etiquetas que aparecen dentro de .
y el nombre de la categoría dentro de una
. En las páginas de los productos, debemos poner el nombre del producto dentro de una .
2.3. Limpiar nuestro código
2.4. La velocidad como objetivo
mod_rewrite esté activado y que nuestro servidor soporte archivos .htaccess. En caso que utilicemos URLs Canónicas en Magento junto con las extensión Fooman Speedster, deberemos reemplazar el módulo de URLs Canónicas por esta otra versión.3. SEO Avanzado en Magento y el Contenido Duplicado
3.1. Noindex, Follow para páginas sin contenido
3.2. Nofollow, para enlaces innecesarios o sin relevancia
3.3. URLs Canónicas
3.4. Sitemaps en XML
Sitemap: /sitemap.xml
Conclusión
Entradas relacionadas
Picando Código
Nuevo blog sobre Navegadores Web
Picando Código
Enlaces sobre Scrum
Picando Código
Entregadas las primeras 5.000 firmas en contra del DRM en el iPad a Steve Jobs
avemundi, blog de un micro-isv » Desarrollo de software
enlaces 05.febrero.2010
Picando Código
Debian: mount.nfs: Operation not permitted
mount.nfs: Operation not permitted
fernando@dagobah~/ $ mount -v server01
mount.nfs: timeout set for Fri Feb 5 10:56:10 2010
mount.nfs: trying text-based options 'intr,addr=192.168.1.10,vers=4,clientaddr=192.168.1.163'
mount.nfs: mount(2): Operation not permitted
mount.nfs: Operation not permitted
root@dagobah:~# emacs /etc/fstab
*.*.*.*:/shared /home/fernando/server01 nfs noauto,user,nfsvers=3,intr 0 0
MadeInFlex
#flex101 SWF más ligeros, bin-release




Arragonán
Video de BDD con easyb
Picando Código
Bruce Eckel – Screencasts First Steps in Flex
Ingenieria de Software / Software Engineering
El ciclo virtuoso de Business Intelligence
MonoCaffe
Monocaffe Connections Manager 0.9
Este widget además permite añadir nuevos "Tips" y compartirlos con el mundo. Aun hay que desarrollar un poco más éste widget, pero es 95% funcional y espero os guste la idea.
Tambien se han resulto algunos fallos y molestias que mis compañeros de trabajo han ido encontrando al utilizar mcm y es que tengo un equipo de beta-testers de elite.
Screenshot!
Descargad desde aquí:
http://launchpad.net/mcm/+download
Fetishcode...Thinking in objects
Target blank en commandLink
Arragonán
El código y la presentación del taller
MadeInFlex
Adobe AIR 2 beta 2
Una nueva API que permite recuperar información adicional de la impresión, como el área a imprimir, los colores y status de actividad. También es posible mandar a imprimir sin mostrar el diálogo de imprimir.Picando Código
Java: An internal LaunchAnywhere application error has occurred and this application cannot proceed. (LAX)
fernando@dagobah~/software/Flex $ ./flexbuilder_linux_install_a5_112409.bin
Preparing to install...
Extracting the installation resources from the installer archive...
Configuring the installer for this system's environment...
java.lang.IllegalArgumentException: Malformed \uxxxx encoding.
at java.util.Properties.loadConvert(Properties.java:552)
at java.util.Properties.load0(Properties.java:375)
at java.util.Properties.load(Properties.java:325)
at com.zerog.common.java.util.PropertiesUtil.loadProperties(DashoA8113)
at com.zerog.lax.LAX.(DashoA8113)
at com.zerog.lax.LAX.main(DashoA8113)
#!/bin/bash
unset
./flexbuilder_linux_install_a5_112409.bin
El error descrito arriba
Los valores seteados para las variables del shell TITLEBAR y PSI están causando problemas con InstallAnywhere, el cual se usa para instalar 2 productos de la empresa.
Ejecutar ‘unset’ en las variables TITLEBAR y PSI antes de instalar.
jordisan.net blog: sobre lo humano, lo divino... y lo técnico: desarrollo
Lo que diseñadores y desarrolladores deberíamos aprender de Supernanny
MadeInFlex
Object Pool and Caching
Definiciones
Implementación
Sobre las pools

Conclusión
http://elromdesign.com/blog/2009/11/05/object-pooling-in-flex-actionsctipt/
http://www.lostinactionscript.com/blog/index.php/2008/10/30/object-pooling-in-as3/Buayacorp
Emergencia en Cusco y el Sur del Perú
Ver Cusco en Emergencia en un mapa más grande ¿Cómo ayudar?
programania
Programania en Twitter












