<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Tema: Desarrollo web | Sentido Web</title>
<link>http://sentidoweb.com/</link>
<description>Actualidad y maneras de hacer en Internet (programación, diseño, tendencias, negocios...)</description>
<language>es</language>
<copyright>Copyright 2008</copyright>
<lastBuildDate>Mon, 29 Sep 2008 11:00:00 +0000</lastBuildDate>
<generator>http://www.movabletype.org/?v=3.2</generator>
<docs>http://blogs.law.harvard.edu/tech/rss</docs> 

<item>
<title>Crea redes sociales con Elgg</title>
<description><![CDATA[<p><strong>Elgg</strong> es una aplicación open source que permite crear redes sociales de forma sencilla y con bastantes características que completarán nuestra web.</p>

<p><img alt="elgg.png" src="http://sentidoweb.com/img/2008/09/elgg.png" width="400" height="420" class="center" /></p>

<p>Entre las características del administrador nos encontramos con administración de usuarios, objetos, ficheros y del sitio, gráficas con relaciones de los usuarios, múltiples sitios por instalación, internacionalización, sistema de etiquetas, ACL, vistas, eventos, plugins y API para widgets.</p>

<p>Además permite RSS, <acronym title="Friend of a Friend">FOAF</acronym>, <acronym title="XHTML Friends Network<br />
">XFN</acronym>, OpenId, OpenSocial, OAuth, JSON, Ajax con jQuery, sistema de caché que permite memcached.</p>

<p>Lógicamente, el usuario final dispondrá de su perfil, panel, feeds de su actividad, preferencias, blog, aplicaicones OpenSocial, repositorio de ficheros, foros y mucho más.</p>

<p>Elgg necesita PHP 5.2+, Apache, GD, MySQL 5+ y mod_rewrite. A parte OpenSocial necesita Mcrypt y la librería PHP SOAP.</p>

<p><a href="http://Elgg.org">Elgg</a></p>

<p>Vía / <a href="http://www.webappers.com/2008/09/28/create-your-own-social-network-site-with-elgg/">WebAppers</a></p>]]></description>
<link>http://sentidoweb.com/2008/09/29/crea-redes-sociales-con-elgg.php</link>
<guid>http://sentidoweb.com/2008/09/29/crea-redes-sociales-con-elgg.php</guid>
<category>Desarrollo web</category>
<pubDate>Mon, 29 Sep 2008 11:00:00 +0000</pubDate>
</item>
<item>
<title>Project Kenai: proyectos open source alojados por Sun</title>
<description><![CDATA[<p><strong>Project Kenay</strong> es una especie de SourceForge que ha realizado Sun y que aún está en fase beta. Dispone de pocos proyectos alojados (la mayoría basados en Java y Ruby) pero está empezando y vamos a tener que estar pendiente de este proyecto.</p>

<p>Kenai provee a los proyectos de SVN y Mercurial, foros, listas de correo, wikis, sistemas de bugs y personalización de tu página.</p>

<p><a href="http://kenai.com">Porject Kenai</a></p>]]></description>
<link>http://sentidoweb.com/2008/09/11/project-kenai-proyectos-open-source-alojados-por-sun.php</link>
<guid>http://sentidoweb.com/2008/09/11/project-kenai-proyectos-open-source-alojados-por-sun.php</guid>
<category>Desarrollo web</category>
<pubDate>Thu, 11 Sep 2008 10:20:00 +0000</pubDate>
</item>
<item>
<title>5 consejos para reducir la carga de la página enfocado a imágenes</title>
<description><![CDATA[<p>Una cosa es realizar una aplicación o tener un blog y otra es que el número de visitas aumenten y tengamos que optimizar la carga de la página. Hay que intentar ganar rendimiento de cualquier forma, y una de estas formas es mediante imágenes, por eso estos consejos (que quizás sean un poco obvios) no vienen mal:</p>
<ul><li><strong>Evita usar imágenes complejas o grandes</strong>: cuanto más ligeras sean antes cargarán.</li>
<li><strong>Optimiza las imágenes</strong>: existe diferentes formatos, y cada cual es conveniente en un caso. Los más usados son GIF, PNG y JPEG. JPEG y  PNG tienen un valor de calidad de la imagen, reducirlo puede hacernos ganar algunos Kb y no perder en calidad.</li>
<li><strong>Indica el tamaño de las imágenes en el HTML</strong>: así el navegador sabrá como repartir el espacio para la imagen antes de que cargue por lo que el render de la página será más rápido.</li>
<li><strong>Precarga imágenes</strong>: aquí el autor dice un consejo un tanto peculiar, no sé si bueno o malo, pero sí interesante. Se trata de cargar imágenes grandes en páginas anteriores y asignarle el tamaño 1x1 para que no se vean y así esté cargada anteriormente. Eso sí, forzaría a que tire de caché para que no te la cargue dos veces.</li>
<li><strong>Animaciones flash</strong>: si tienes que usar una animación no uses GIFs animados (sí, algunos te encuentras aún), usa flash, pero tampoco te pases.</li></ul>
<p><a href="http://www.codeitred.com/2008/07/07/top-5-tips-decrease-load-time-websites-images">Top 5 tips to decrease the load time of your websites via images</a></p>]]></description>
<link>http://sentidoweb.com/2008/07/09/5-consejos-para-reducir-la-carga-de-la-pagina-enfocado-a-imagenes.php</link>
<guid>http://sentidoweb.com/2008/07/09/5-consejos-para-reducir-la-carga-de-la-pagina-enfocado-a-imagenes.php</guid>
<category>Desarrollo web</category>
<pubDate>Wed, 09 Jul 2008 11:00:00 +0000</pubDate>
</item>
<item>
<title>Búsquedas en Sphinx independiente de acentos</title>
<description><![CDATA[<p>Para aquellos que usen <a href="http://sentidoweb.com/2007/07/24/sphinx-buscador-de-texto-open-source.php">Sphinx</a> como motor de búsqueda en sus aplicaciones y que necesitan realizar búsquedas independientes de los acentos (buscar "jose" y encontrar "jose" y "josé"), les vendrá bien añadir <a href="http://pastie.org/204316">este charset_table</a> en el fichero de configuración de Sphinx.</p>

<p>Vía / <a href="http://beginrescue.blogspot.com/2008/05/sphinx-charsettable-with-unicode.html">Begin Rescue</a></p>]]></description>
<link>http://sentidoweb.com/2008/07/05/busquedas-en-sphinx-independiente-de-acentos.php</link>
<guid>http://sentidoweb.com/2008/07/05/busquedas-en-sphinx-independiente-de-acentos.php</guid>
<category>Desarrollo web</category>
<pubDate>Sat, 05 Jul 2008 16:55:17 +0000</pubDate>
</item>
<item>
<title>Consejos para desarrollar cumpliendo estándares</title>
<description><![CDATA[<p>Buenos consejos a tener en cuenta cuando se trata de desarrollar cumpliendo estándares web.</p>
<ul><li>Menos es más, no uses mas código del necesario</li>
<li>No uses CSS o Javascript dentro del HTML, ya sea en las etiquetas como en el head.</li>
<li>Usa código semántico, las cabeceras mediante etiquetas h1, h2, ..., resaltar mediante strong, ...</li>
<li>No uses meta etiquetas redundantes</li>
<li>Usa microformatos para hacer tu sitio legible</li>
<li>Usa tablas solo para mostrar tablas</li>
<li>Usa rel="external" para enlaces externos, no uses target="_blank", hazo mediante Javascript</li>
<li>No uses Javascript mediante enlaces</li>
<li>No muestres contenido importante mediante Flash o Ajax, siempre mediante HTML plano</li></ul>
<p><a href="http://seo2.0.onreact.com/10-coding-guidelines-for-perfect-findability-and-web-standards">10 Coding Guidelines for Perfect Findability and Web Standards</a></p>]]></description>
<link>http://sentidoweb.com/2008/06/04/consejos-para-desarrollar-cumpliendo-estandares.php</link>
<guid>http://sentidoweb.com/2008/06/04/consejos-para-desarrollar-cumpliendo-estandares.php</guid>
<category>Desarrollo web</category>
<pubDate>Wed, 04 Jun 2008 10:29:29 +0000</pubDate>
</item>
<item>
<title>Selenium IDE: plugin para Firefox para realizar testing</title>
<description><![CDATA[<p><strong>Selenium IDE</strong> es un plugin para Firefox que nos va a facilita la labor de realizar juegos de pruebas en nuestras aplicaciones web. Para ello nos permite grabar, editar y debuguear tests. Con la grabación, podremos grabar la navegación que realizamos en Firefox y después reproducirla. Aunque no es tan solo una herramienta de grabación, además permite editar las grabaciones.</p>
<p>Las características que nos ofrece son:</p>
<ul><li>Grabación y reproducción de casos de test</li>
<li>Selección inteligente de campos mediante sus ids, nombres o XPath</li>
<li>Autocompletado para todos los comandos de Selenium</li>
<li>Paso a paso</li>
<li>Debug y puntos de parada</li>
<li>Guardar los test como HTML, scripts de Ruby, ...</li>
</ul>
<p>Disponemos de un gran tutorial de uso <a href="http://www.jourmoly.com.ar/automatizando-pruebas-selenium-ide/">aquí</a></p>
<p><a href="http://selenium-ide.openqa.org/">Selenium IDE</a></p>
<p>Gracias <a href="http://www.taufpate.com/">Taufpate</a> por el aviso.</p>]]></description>
<link>http://sentidoweb.com/2008/05/19/selenium-ide-plugin-para-firefox-para-realizar-testing.php</link>
<guid>http://sentidoweb.com/2008/05/19/selenium-ide-plugin-para-firefox-para-realizar-testing.php</guid>
<category>Desarrollo web</category>
<pubDate>Mon, 19 May 2008 09:30:00 +0000</pubDate>
</item>
<item>
<title>Recursos para generar nubes de etiquetas</title>
<description><![CDATA[<p>Aunque sea algo que cada vez veo menos en la web, sí que es algo característico de la web2.0, por lo que quien necesite ayuda para crear sus nubes de etiquetas (tag cloud), podrá encontrarla en este listado de recursos.</p>
<h3>Tutoriales, consejos y referencias</h3>
<ul>
<li><a href="http://stevethomas.com.au/php/how-to-make-a-tag-cloud-in-php-mysql-and-css.html" >Cómo hacer una nube de tags en PHP, MySQL y CSS</a></li>
<li><a href="http://www.petefreitag.com/item/396.cfm" >Nubes de etiquetas con ColdFusion</a></li>
<li><a href="http://www.codeproject.com/KB/aspnet/cloud.aspx">Nubes de etiquetas en ASP.NET</a></li>
<li><a href="http://www.lotsofcode.com/demo/tag-cloud-v2/">Nube de etiquetas en PHP</a></li>
<li><a href="http://www.onlamp.com/pub/a/onlamp/2006/06/08/designing-tag-clouds.html" >Consejos para diseñar tu tag cloud</a></li>
<li><a href="http://24ways.org/2006/marking-up-a-tag-cloud">Mejor método para programar las nubes de etiquetas</a></li>
<li><a href="http://www.noupe.com/css/jquery-hover-sub-tag-cloud.html" >Sub tag cloud mediante hover y jquery</a></li>
</ul>
<h3>Inspiración</h3>
<ul>
<li><a href="http://www.smashingmagazine.com/2007/11/07/tag-clouds-gallery-examples-and-good-practices/">Galería de tag clouds: ejemplos y buenas prácticas</a></li>
</ul>
<h3>Generadores</h3>
<ul>
<li><a href="http://www.tagcloud-generator.com/" >TagCloud generator</a></li>
<li><a href="http://www.tag-cloud.de/">Tag Cloud Generator</a> (otro)</li>
</ul>
<p><a href="http://webtecker.com/2008/05/05/everything-tag-clouds/">Everything Tag Clouds</a></p>]]></description>
<link>http://sentidoweb.com/2008/05/12/recursos-para-generar-nubes-de-etiquetas.php</link>
<guid>http://sentidoweb.com/2008/05/12/recursos-para-generar-nubes-de-etiquetas.php</guid>
<category>Desarrollo web</category>
<pubDate>Mon, 12 May 2008 10:15:00 +0000</pubDate>
</item>
<item>
<title>Lista de recursos para desarrollar aplicaciones para Facebook</title>
<description><![CDATA[<p>Facebook es una aplicación que está muy de moda en estos momentos (no entiendo por qué) y aunque su desarrollo no es muy complicado, obtener la información de cómo hacer las cosas y encontrar algo en su documentación puede ser algo difícil. Su Wiki es un horror, los ejemplos escasos y los foros no muy útiles. Por ello, quien necesite encontrar ejemplos y tutoriales puede venirle bien esta lista:</p>
<ul><li><a href="http://timschmoyer.com/2007/10/18/how-to-create-a-facebook-application-for-your-youth-group-news-or-blog/">How to create a Facebook application for your youth group news or blog</a></li>
<li><a href="http://developers.facebook.com/step_by_step.php">Facebook's Simple Tutorials</a></li>
<li><a href="https://sourceforge.net/projects/newscloud/">NewsCloud</a></li>
<li><a href="http://wiki.developers.facebook.com/index.php/Infinite_session_howto">Running a Cron Job With Your Infinite Session Key</a></li>
<li><a href="http://www.jkwiens.com/blog/?p=42">Automatically Update all your User’s Facebook Profile</a></li>
<li><a href="https://secure.mysociety.org/cvstrac/fileview?f=mysociety/pb/phplib/pbfacebook.php&v=1.1">PledgeBank Facebook integration</a></li>
<li><a href="http://20bits.com/2007/06/04/an-introduction-to-fbml/">Sample FBML code and description of application architecture</a></li>
<li><a href="http://www.howtoforge.com/rss_facebook_app_php">How To Set Up A Facebook RSS Feed Reader Application For Your Blog</a> (muy completo)</li>
<li><a href="http://padrenel.blogs.experienceproject.com/3459.html">10 Things that would have been nice to know when starting my facebook application</a></li>
<li><a href="http://20bits.com/2007/06/19/5-facebook-application-gotchas/">5 Facebook Application Gotchas</a></li>
<li><a href="http://www.insidefacebook.com/2007/06/07/10-tips-for-releasing-your-facebook-application-and-maximizing-growth/">From inside facebook - 10 tips on promoting your app</a></li></ul>
<p>Vía / <a href="http://gotads.blogspot.com/2007/07/finding-sample-code-for-facebook-apps.html">Got Ads?</a></p>]]></description>
<link>http://sentidoweb.com/2008/04/04/lista-de-recursos-para-desarrollar-aplicaciones-para-facebook.php</link>
<guid>http://sentidoweb.com/2008/04/04/lista-de-recursos-para-desarrollar-aplicaciones-para-facebook.php</guid>
<category>Desarrollo web</category>
<pubDate>Fri, 04 Apr 2008 11:45:00 +0000</pubDate>
</item>
<item>
<title>Consejos para trabajar con el código de otros</title>
<description><![CDATA[<p>Cuando se trabaja en una empresa de desarrollo de software es muy común que entres en un proyecto que ya está empezado, por lo que deberás tratar con un código que no es el tuyo, y que da igual que sea bueno o malo, deberás adaptarte a él, algo que siempre puede dar algún problema. Más problemático es cuando sustituyes al único encargado del código y el traspaso de conocimientos se realiza en un par de horas (algo muy frecuente en las grandes empresas de consultoría).</p>
<p>Para aquellos que se encuentren en esas circunstancias, espero que los consejos que os voy a comentar, sacados de mi propia experiencia en el desarrollo web, os sean de utilidad.</p>
<h3>Echa un vistazo preliminar</h3>
<p>Aún no sabes cómo es el código, si es bueno o es malo, pero un vistazo preliminar a la estructura de directorios y a los nombres de los ficheros suele darte una idea aproximada de la funcionalidad que pueden tener.</p>
<p>Por muy malo que sea un programador, éste tiene su propia lógica para la nomenclatura, échale un rato a intentar adivinarla y así podrás localizar ficheros de forma más sencilla en futuras modificaciones.</p>
<p>No esperes un diseño <acronym title="Model View Controller">MVC</acronym> claro, quizás ni exista y esté todo mezclado. Tú tienes tu forma de programar, pero aunque para ti sea perfecta, ni quizás lo sea, ni todo el mundo la comparte.</p>
<h3>No intentes entenderlo todo de golpe</h3>
<p>Lo más seguro es que no debas cambiar toda la aplicación de golpe, por lo que de poco te va a servir empezar a estudiarla completamente y entender todo su significado. Ve por partes, si tienes que hacer un cambio en una parte céntrate en esa parte del código y olvídate del resto.</p>
<p>Cuando te hayas pegado con una parte del código no se te olvidará fácilmente, por lo que si en otra ocasión tienes que volver a tocar esa parte te será más sencillo.</p>
<h3>Empieza por el final para llegar al origen</h3>
<p>Afortunadamente el resultado del desarrollo web es visible para todos, tan solo debes ver el código HTML para ver qué se ha generado con la aplicación.</p>
<p>Normalmente, las modificaciones que se suelen realizar son del tipo "en tal página falla tal cosa". Mira el HTML de esa página y encuentra algo que pueda ser exclusivo de ella.</p>
<p>Busca nombres de clases de etiquetas, las cabeceras de las páginas (&lt;h1&gt;..&lt;h6&gt;), textos explicativos. Una vez creas que tienes un texto más o menos exclusivo de esa página busca entre todo el código, por ejemplo en Windows puedes usar <a href="http://www.kgpsoftware.com/gfind.htm">GlobalFind</a>.</p>
<p>Debes tener cuidado porque a veces el código no aparece exactamente como lo buscas. Por ejemplo un texto largo puede estar dividido en varias líneas:</p>
<pre><code lang="php">$texto = 'Texto largo que el desarrollador ';
$texto .= 'a cortado en líneas para verlo más claro, ';
$texto .= 'aunque sea menos eficiente por tener que ';
$texto .= 'concatenar strings.';</code></pre>
<p>O también puede darse la circunstancia de que el texto se forme por la unión de un texto y una variable:</p>
<pre><code lang="php">$clase = array('empleados', 'facturas', 'resumen');
// Algo de código por aquí
echo '&lt;div class="'.$clase[$tipo].'"&gt;...&lt;/div&gt;';
// Más código</code></pre>
<p>Quizás te encuentres con ficheros de idiomas, y verás que el texto que buscas está asociado a un código, céntrate en ese código y búscalo.</p>
<h3>Usa trazas</h3>
<p>La lógica del código es de todo menos lógica. Te vas a encontrar con partes de código que no vas a entender por mucho que lo estudies. No es bueno perder el tiempo intentando entender el código al 100%, ya tendrás tiempo para ello.</p>
<p>Cuando te encuentres con un trozo de código que no entiendas, métele trazas a todos los bloques para saber por dónde pasa:</p>
<pre><code lang="php">echo 'Empezamos';
if ($condicion1 && $condicion7) {
  echo 'Paso por aquí 1';
  // código
  if ($condicion3 || !$condicion4) {
    echo 'Paso por aquí 2';
    // código
  } else {
    echo 'Paso por aquí 3';
    // codigo
    if ($condicion5) {
      echo 'Paso por aquí 4';
    }
  }
} else {
  echo 'Paso por aquí 5';
  // código
}
echo 'FIN';</code></pre>
<p>Fijándote en las trazas que devuelva verás que código se ejecuta y así podrás encontrar mejor el error.</p>
<h3>Ten en cuenta la base de datos</h3>
<p>La BD es muy importante a la hora de localizar información. Mucha gente usa la BD para almacenar los mensajes de error o de información, que serán fundamentales para comprender el funcionamiento de la aplicación.</p>
<p>Localiza dónde se ejecutan las consultas, si hay suerte estarán separadas del resto de código (normalmente a las clases que tratan con la BD se le llama modelos). Si tienes que modificar los datos que devuelve una consulta, aunque no sepas cómo se obtienen esos datos (la sentencia SQL exacta), si que puedes hacerte una idea de las tablas a las que accede. Busca entre los modelos el nombre de esas tablas y filtra por los campos que muestra en la página. Claro que el <em>select * from</em> puede ser nuestro mayor enemigo.</p>
<p>Examina los datos de la tabla para ver si coincide con los datos que se muestran. Un ejemplo sencillo es insertar un registro mediante la aplicación y ver qué se ha guardado en la BD, así entenderás más facilmente qué se guarda en cada campo.</p>
<h3>No olvides los ficheros de configuración</h3>
<p>En ellos está mucha de la lógica de la aplicación, estudiarlos durante un rato puede aclararnos muchas cosas, como por ejemplo rutas de ficheros, conexiones a la BD, sistema de trazas, clases auto-ejecutables...</p>
<h3>Cuidado con las aplicaciones externas</h3>
<p>Si programas en Java es posible que no encuentres el por qué de un problema porque quizás la ejecución dependa de un JAR externo. Localízalos y tenlos siempre presentes. Si trabajas con Linux o Unix puede que haya llamadas a la shell. Pasará algo parecido a los JAR, deberás saber dónde están y qué hacen.</p>
<h3>Empieza por los cambios sencillos</h3>
<p>No intentes poner la aplicación del revés o cambiarla radicalmente nada más empezar con ella. Ve poco a poco, con cambios sencillos, que te hagan enfrentarte con el código y empezar a conocerlo.</p>
<p>Los cambios que puedas realizar en una parte no sabes donde van a poder afectar, por eso debes ir con cuidado y empezando con cosas sencillas, que tendrán menos posibilidades de estropear otras cosas.</p>
<h3>Un cambio en varios lugares</h3>
<p>Reutilizar código no siempre es una norma para los desarrolladores. Aunque creas que has localizado el lugar dónde debes cambiar el código, no pienses que es el único lugar. Sigue buscando a ver si hay más lugares donde se deba cambiar.</p>
<h3>Testea constantemente</h3>
<p>No conoces la aplicación y no sabes que puedes estropear cuando tocas algo. Un cambio sin importancia puede hacer que todo falle, ten cuidado si arreglas algo de no estropear otra cosa.</p>




]]></description>
<link>http://sentidoweb.com/2008/03/31/consejos-para-trabajar-con-el-codigo-de-otros.php</link>
<guid>http://sentidoweb.com/2008/03/31/consejos-para-trabajar-con-el-codigo-de-otros.php</guid>
<category>Desarrollo web</category>
<pubDate>Mon, 31 Mar 2008 10:30:00 +0000</pubDate>
</item>
<item>
<title>6 formas de hacer un diseño destacable</title>
<description><![CDATA[<p>A la hora de hacer diseños mucha gente puede opinar sobre ello mejor que yo, pero a mí estos consejos me han gustado. Está claro que en muchos diseños no se pueden usar, pero para algunas circunstancias sí son interesantes de aplicar.</p>
<ul><li><strong>Fondos de pantalla grandes</strong>: los fondos de pantalla grande pueden hacer que el diseño resalte, a parte de que son fáciles de añadir.<img alt="consejos1.png" src="http://sentidoweb.com/img/2008/03/consejos1.png" width="400" height="245" class="center" /></li>
<li><strong>Layout original</strong>: no es la primera vez que veo diseños con secciones de tamaños que superan el ancho y alto del navegador y que para acceder a cada sección hay que hacer un scroll progresivo (mediante javascript). Son originales y en algunos casos muy acertados. En el ejemplo que os pongo, cada color es una sección y el tamaño original tiene un ancho de 6000px.<img alt="consejos2.png" src="http://sentidoweb.com/img/2008/03/consejos2.png" width="450" height="193" class="center" /></li>
<li><strong>Navigación creativa</strong>: la navegación puede dar mucho juego para mejorar el diseño, ya sea mediante rollovers u otras cosas. Eso sí, ante todo que prime la usabilidad. En el ejemplo que os paso los menús van a juego con los colores de la calle.<img alt="consejos3.png" src="http://sentidoweb.com/img/2008/03/consejos3.png" width="450" height="296" class="center" /></li>
<li><strong>Minimalismo</strong>: aunque por ahora se ha tratado de consejos con un gran diseño, eso no implica que un gran diseño tenga que ser aparatoso, puede ser perfectamente minimalista, lo cual hace que llame mucho la atención.<img alt="consejos4.png" src="http://sentidoweb.com/img/2008/03/consejos4.png" width="300" height="317" class="center" /></li>
<li><strong>Logo</strong>: está claro que un buen logo hace que te represente y además te diferencie.</li>
<li><strong>Layout horizontal</strong>: aunque la gente está acostumbrada al scroll vertical, este tipo de diseño puede llegar a ser muy atractivo, aunque haya gente que lo odie.<img alt="consejos6.png" src="http://sentidoweb.com/img/2008/03/consejos6.png" width="450" height="40" class="center" /></li></ul>
<p><a href="http://www.mostinspired.com/blog/2008/03/06/standout-website/">6 Methods to Make Your Website Standout</a></p>]]></description>
<link>http://sentidoweb.com/2008/03/28/6-formas-de-hacer-un-diseno-destacable.php</link>
<guid>http://sentidoweb.com/2008/03/28/6-formas-de-hacer-un-diseno-destacable.php</guid>
<category>Desarrollo web</category>
<pubDate>Fri, 28 Mar 2008 10:00:00 +0000</pubDate>
</item>
<item>
<title>Consejos para diseñar emails</title>
<description><![CDATA[<p>A la hora de diseñar los emails en formato HTML que nuestras aplicaciones enviarán a los usuarios, hay que tener en cuenta varios puntos que nos ayudarán a un diseño más correcto:</p>
<ul><li><strong>Olvidarse del tableless</strong>: si, aunque sea duro, es mejor volver a las tablas y olvidarse del posicionamiento y la maquetación vía CSS.</li>
<li><strong>Usar los estilos dentro de las etiquetas</strong>: la mayoría de los lectores de correo online ignoran lo que hay entre la cabecera del HTML, por eso es conveniente usar los estilos dentro de las etiquetas.</li>
<li><strong>No uses imágenes de fondo</strong>: aunque para un buen diseño puede ser esencial, hay algunos lectores que no mostrarán los background, por lo que es mejor no usarlos para asegurarnos de que todo el mundo vea correctamente el correo.</li>
<li><strong>Considera las imágenes bloqueadas por defecto</strong>: por seguridad los clientes de correo bloquean las imágenes por defecto, por lo que no es conveniente usarlas para indicar el contenido del mensaje.</li>
<li><strong>Usa el atributo alt en las imágenes</strong>: como estarán bloqueadas por defecto, es necesario indicar la mayor información posible en ese atributo.</li>
<li><strong>Usa paths absolutos</strong>: ya que el mail se leerá en otro servidor es necesario indicar la ruta completa para que los contenidos se vean correctamente.</li>
<li><strong>Ten cuidado con el tamaño de los archivos</strong>: a parte de que el usuario no debe esperar para poder leer el correo, algunas veces los correos con archivos pesados son considerados spam.</li>
<li><strong>Evita flash y similares</strong>: evita el uso de flash u otros contenidos multimedia que puede que no se vean en el cliente.</li>
<li><strong>Diseña para espacios pequeños</strong>: aunque se trate de un HTML no siempre el espacio donde se ve es amplio, piensa en dimensiones pequeñas a la hora de diseñar.</li></ul>
<p><a href="http://www.vdotmedia.com/blog/9-best-practices-for-email-design/">9 best practices for email design</a></p>
<p>Vía / <a href="http://www.cssglobe.com/post/1359/9-best-practices-for-email-design">CSS Globe</a></p>]]></description>
<link>http://sentidoweb.com/2008/03/05/consejos-para-disenar-emails.php</link>
<guid>http://sentidoweb.com/2008/03/05/consejos-para-disenar-emails.php</guid>
<category>Desarrollo web</category>
<pubDate>Wed, 05 Mar 2008 12:45:00 +0000</pubDate>
</item>
<item>
<title>10 errores en el diseño de aplicaciones</title>
<description><![CDATA[<p>Un gran post en el que se nos explica diez errores que se cometen cuando se diseña una aplicación, un resumen sería el siguiente:</p>
<ul><li><strong>Controles no estándares</strong>: los enlaces, botones, radio buttons y demás controles tienen una utilidad específica y estándar. Cambiar el comportamiento no es lo correcto y no hace más que confundir al usuario.</li>
<li><strong>Inconsistencia</strong>: diferentes cosas para una misma utilidad, usa lo mismo en el mismo lugar para la misma acción.</li>
<li><strong>Acciones no perceptibles</strong>: se debe saber qué acción realiza un control a simple vista. Si hay que investigar para qué sirve algo no cumple su cometido.</li>
<li><strong>Controles sin reacción</strong>: cada control debe indicar 3 cosas: mostrar a los usuarios el estado actual, cómo se interpretan los comandos y qué está pasando.</li>
<li><strong>Malos mensajes de error</strong>: no basta con decir que hay un error, sino que es lo que ha pasado y que se puede hacer para solucionarlo.</li>
<li><strong>Preguntar por lo mismo dos veces</strong></li>
<li><strong>No hay valores por defecto</strong>: os valores por defecto sirven para que haya más rapidez en las respuestas, para enseñar mediante el ejemplo y para dirigir a usuarios novatos.</li>
<li><strong>No explicar cómo funciona la aplicación</strong>: en aplicaciones estándar eso no es muy problemático, pero en otras aplicaciones hay que explicar qué se puede conseguir y cómo y no únicamente acceder a la aplicación.</li>
<li><strong>No indicar qué se hace con la información</strong></li>
<li><strong>Mostrar características internas</strong>: al usuario no le importa y no llegará a entender cosas internas de la aplicación, por lo que no es necesario que el usuario lea.</li></ul>
<p><a href="http://www.useit.com/alertbox/application-mistakes.html">Top-10 Application-Design Mistakes</a></p>
<p>Vía / <a href="http://www.dzone.com/links/rss/top10_applicationdesign_mistakes.html">dzone</a></p>]]></description>
<link>http://sentidoweb.com/2008/02/20/10-errores-en-el-diseno-de-aplicaciones.php</link>
<guid>http://sentidoweb.com/2008/02/20/10-errores-en-el-diseno-de-aplicaciones.php</guid>
<category>Desarrollo web</category>
<pubDate>Wed, 20 Feb 2008 19:00:00 +0000</pubDate>
</item>
<item>
<title>Guía para que el usuario pueda personalizar una web</title>
<description><![CDATA[<p>Para las aplicaciones web es importante darle al usuario la posibilidad de personalizarla a su gusto.</p>
<p>El post que os pasamos a continuación explican muy bien los pasos que hay que dar para poder permitir que el usuario personalice la web a su gusto:</p>
<p>Existen varios tipos de personalización:</p>
<ul><li>Recolocar contenido en la página</li>
<li>Añadir elementos (widgets)</li>
<li>Modificar preferencias</li>
<li>Personalizar los estilos (skins)</li>
</ul>
<p>Eso sí, hay que tener en cuenta algunos aspectos a la hora de permitir personalizar la web:</p>
<ul><li>Es necesario un botón de reset para volver a la configuración inicial.</li>
<li>Permitir bloquear la configuración para que el usuario borre o elimine algo accidentalmente.</li>
<li>Facilidad para desplazar los módulos.</li>
</ul>
<p>Pero lógicamente existen pros y contras:</p>
<h3>Pros</h3>
<ul><li>Personalizar hace que el usuario sienta que un pedazo de web le pertenece.</li>
<li>Hace la web más interesante, ya que el usuario la dispone a su gusto y quita cosas que le sobren.</li>
<li>Le da frescura ya que las modificaciones permiten hacer sentir que los contenidos se actualizan con mayor frecuencia.</li></ul>
<h3>Contras</h3>
<ul><li>No a todo el mundo le gusta la personalización, a parte requiere tiempo para realizarlo y eso puede hacer que no se haga.</li>
<li>Lo simple a veces es mejor, aunque claro, el diseño por defecto debe ser suficientemente bueno para que la personalización sea una opción, no una necesidad.</li>
<li>Requiere complejidad, que no suele ir muy bien con la usabilidad.</li>
<li>Un usuario puede querer añadir mucha información, perjudicando el rendimiento general.</li></ul>
<p><a href="http://www.webcredible.co.uk/user-friendly-resources/web-usability/customisation.shtml">Customisable websites - the definitive guide</a></p>
<p>Vía / <a href="http://digg.com/design/A_Guide_to_Customisable_Websites">Digg</a></p>]]></description>
<link>http://sentidoweb.com/2008/02/15/guia-para-que-el-usuario-pueda-personalizar-una-web.php</link>
<guid>http://sentidoweb.com/2008/02/15/guia-para-que-el-usuario-pueda-personalizar-una-web.php</guid>
<category>Desarrollo web</category>
<pubDate>Fri, 15 Feb 2008 16:45:00 +0000</pubDate>
</item>
<item>
<title>Login mediante cookies</title>
<description><![CDATA[<p>Este post quizás es algo teórico, por lo que serviría para cualquier lenguaje (PHP, Java, ASP...), pero no habrá código para poder utilizar.</p>
<p><strong>Se trata de hacer login en una aplicación mediante una cookie que estará almacenada en el navegador</strong>. Esto es lo que se suele hacer cuando queremos recordar al usuario y así que no tenga que logarse cada vez que entra o se pierde la sesión del navegador. Como se trata de una cookie le podemos poner la fecha de caducidad que queramos por lo que el usuario permanecerá logado durante ese tiempo.</p>
<p><strong>Los datos en la cookie no pueden ir en claro</strong>, ya que cualquiera podría obtener esos datos si accedieran a nuestro navegador, por lo que hay que encriptarlos.</p>
<p>Supongamos que tenemos una tabla de usuarios que tiene como mínimo 3 datos: <em>alias</em>, <em>contraseña</em> y <em>código</em>. El <em>alias</em> y la <em>contraseña</em> están claro para que se usan y el <em>código</em> lo veremos más adelante. <em>Contraseña</em> y <em>código</em> serán ambos datos encriptados con MD5.</p>
<p>El proceso de login normal (mediante formulario) sería el siguiente: recibimos usuario y contraseña mediante POST y hacemos consulta a la BD para obtener los datos del usuario mediante el alias. Una vez obtenidos los datos del usuario, comprobamos si la contraseña de la BD y la contraseña recibida y encriptada con MD5 son la misma (nunca hay que recuperar los datos igualando el usuario y la contraseña, ya que si no se hace correctamente puede haber problemas de seguridad, por lo que es mejor obtener primero los datos y luego mediante código comparar los datos). Si las contraseñas coinciden daremos acceso a la aplicación, pero antes <strong>almacenaremos en el campo <em>código</em> un valor aleatorio y encriptado con MD5</strong> que usaremos después.</p>
<p>Para realizar el login mediante cookies tendremos que guardar en la cookie el <em>alias</em> y la <em>contraseña</em>. Lo único que encriptaremos será la contraseña, el usuario también se podría encriptar, pero obtener los datos del usuario usando el alias encriptado es menos eficiente, tendría que realizar un MD5 por cada registro de la tabla de usuarios. También se podría almacenar en otro campo el alias encriptado, pero serían datos redundantes y tampoco es muy correcto.</p> 
<p><strong>La contraseña no se guardaría únicamente encriptada</strong>, ya que el MD5 se puede romper mediante fuerza bruta, <strong>por lo que lo que almacenaremos será una unión encriptada de una función simple entre la <em>contraseña</em> y el <em>código</em></strong>. El ejemplo más sencillo para la función es la concatenación, por lo que la contraseña almacenada en la cookie quedaría algo así:</p>
<pre>md5(contraseña+codigo)</pre>
<p>que para ver un ejemplo más claro, si nuestra contraseña fuera '<em>password</em>', quedaría algo así:</p>
<pre>md5( md5('password') + md5( rand() ) )</pre>
<p>ya que la contrasñena en la BD se guarda encriptada y el código es un valor aleatorio encriptado.</p>
<p>Supongo que con mucha paciencia también se puede romper este código, pero realmente, si te preocupa que alguien pueda romper un MD5 de una cadena de 64 caracteres (32+32), mejor no hagas el recordar password y usa SSL.</p>
<p>Una vez obtenida la contraseña de la cookie, realizamos la operación con la contraseña obtenida en el consulta a la BD y si coinciden pues damos acceso a la aplicación.</p>
<p>Cada vez que se haga login se renueva el <em>código</em> y actualiza la cookie, y <strong>cada vez que se haga logout o se equivoque en el login se actualiza el <em>código</em> y se borra la cookie</strong>.</p>
<p>Esta es la forma en que lo haría yo, pero si alguien tiene dudas sobre la eficacia del método, por favor que lo comente.</p>]]></description>
<link>http://sentidoweb.com/2008/02/13/login-mediante-cookies.php</link>
<guid>http://sentidoweb.com/2008/02/13/login-mediante-cookies.php</guid>
<category>Desarrollo web</category>
<pubDate>Wed, 13 Feb 2008 10:00:00 +0000</pubDate>
</item>
<item>
<title>Desarrollar aplicaciones web iPhone desde Eclipse</title>
<description><![CDATA[<p>Los interesados en desarrollar aplicaciones web para <strong>iPhone</strong> pueden disponer de un plugin para <a href="http://Eclipse.org">Eclipse</a> que les será de gran utilidad, todo esto a la espera de que Apple saque su SDK este mes.</p>

<p><img alt="iphoneeclipse.png" src="http://sentidoweb.com/img/2008/02/iphoneeclipse.png" width="160" height="300" class="center" /></p>

<p>Mediante un plugin de <a href="http://www.aptana.com/iphone">Aptana</a> y <a href="http://code.google.com/p/iui/">iUi</a> un framework de Javascript y unos estilos CSS que emulan el iPhone, podemos desarrollar aplicaciones, incluso tener simulaciones preliminares en un visor que gira como en iPhone.</p>

<p>Dispondremos un visor para Safari, otro para Firefox y otro para iPhone. Pero hay que tener en cuenta que Apple distingue entre aplicaciones web compatibles con Safari en iPhone, optimizadas para Safari en iPhone y aplicaciones web para iPhone.</p>

<p>El tutorial realizado por la gente de IBM nos lleva paso a paso a desarrollar un ejemplo que luego podremos ver en nuestro iPhone / Ipod Touch.</p>

<p><a href="http://www.ibm.com/developerworks/opensource/library/os-eclipse-iphone/index.html?ca=drs-tp0508">Develop iPhone Web applications with Eclipse</a></p>

<p>Vía / <a href="http://www.ajaxline.com/develop-iphone-web-applications-with-eclipse">AjaxLine</a></p>]]></description>
<link>http://sentidoweb.com/2008/02/04/desarrollar-aplicaciones-web-iphone-desde-eclipse.php</link>
<guid>http://sentidoweb.com/2008/02/04/desarrollar-aplicaciones-web-iphone-desde-eclipse.php</guid>
<category>Desarrollo web</category>
<pubDate>Mon, 04 Feb 2008 09:15:00 +0000</pubDate>
</item>


</channel>
</rss>