Link del día: Consejitos jQuery, MySQL, AJAX y PHP
Sabemos que los cuatro componentes mencionados (jQuery, MySQL, AJAX y PHP) deben de ser unos de los más comunes para generar aplicaciones web. Cada uno tiene una gran variedad de tutoriales o aproximaciones, podemos buscar y encontrar manuales, libros, ejemplos en abundancia.
Sin embargo, hay algo que resulta muy atractivo, que es lograr buenas aproximaciones, y con “buenas” me refiero a atractivas, usables y novedosas. Ya varios lo han logrado, como es el caso de Facebook, Twitter, Digg y tantos otros servicios con conceptos como el scroll infinito, la manipulación inline del contenido, interfaces avanzadas, etc. Muchos ejemplos pueden servirnos para hacer nuestra propia versión, y como ya alguien me dijo “fijate cómo lo hizo alguien que ya lo haya hecho”.
Para eso el artículo de hoy nos viene muy bien, es jQuery, Ajax, PHP and MySQL projects, de 9Lessons, un compilado de muchos artículos de sus blogs que muestran ejemplos de cosas comunes que querremos lograr, y que, por supuesto, podemos adecuar a nuestras necesidades particulares. Una suerte de cheatsheet pero algo extenso y complejo.
Soy un zorrinito web.
Link del día: Performance Web
A pedido de JF que está luchando con la performance de algunas aplicaciones web, hago un compilado de ciertos links que fui encontrando hace tiempo, y que de seguro serán útiles a más de una persona para mejorar la velocidad con la que funciona una web application. Especialmente ahora que es tenido en cuenta para su Page Ranking.
Comenzamos!
- [SpeedTracer](http://code.google.com/p/speedtracer/), una herramienta de Google para detectar problemas de performance a bajo nivel
- [JavaScript performance best practices](http://wiki.forum.nokia.com/index.php/JavaScript_Performance_Best_Practices), una guía harto detallada de mejoras para la programación JavaScript
- [GTmetrix](http://gtmetrix.com/), una aplicación web que mide la performance de una aplicación/sitio web y muestra resultados al respecto. Mucho de lo que hace se basa en resultados de [YSlow](http://developer.yahoo.com/yslow/) y [PageSpeed](http://code.google.com/speed/page-speed/), ambas herramientas para Firefox que considero imprescindibles.
- [Yahoo! Smush.it](http://www.smushit.com/ysmush.it/), un servicio online de compresión de imágenes. Lossless.
- [W3 Total Cache](http://wordpress.org/extend/plugins/w3-total-cache/), un plugin de WordPress que permite mejorar mucho la caché del servidor de los elementos enviados.
- [Clever JPEG Optimization Techniques](http://www.smashingmagazine.com/2009/07/01/clever-jpeg-optimization-techniques/), técnicas de optimización de imágenes para lograr una buena calidad con bajos tamaños.
- [Things Cache Do](http://tomayko.com/writings/things-caches-do), una explicación muy simplista de cómo funcionan los sistemas de caché, gracias a la gente de [MicroSiervos](http://www.microsiervos.com/archivo/ordenadores/asi-funciona-las-caches-web.html).
- [Best Practices for creating websites in IIS 6](http://omaralzabir.com/best_practices_for_creating_websites_in_iis_6_0/), título autoexplicativo.
- [Force caching with .htaccess method to increase loading speed of your site](http://tutzone.net/2010/04/force-caching-to-increase-loading-speed-of-your-site.html)
Eso es todo por hoy, pero seguramente tengo más por ahí guardado que hoy no logré encontrar. A apurar los websites!
UPDATE 21/05/2010:
Agrego los siguientes links que me mandó El Hombre Gris, para optimización de PNGs, parte I y parte II, de la misma idea que el de la optimización de JPEG que vimos antes.
Soy un zorrinito rápido.
Link of the Day: Cassandra by example
In a past link of the day, I have already talked about some distributed NoSQL systems, and the benefits it could bring. I think now it’s time to dive a little deeper in one of them, probably one of the most popular of these days, which is Cassandra.
But instead of going through a long, technical book, lets take this article from Eric Evans called Cassandra By Example, where he gets off all of the theorization and technicisms about these systems, and instead, provides us with a nice example to start from scratch: Twitter. He first explains how would the relational approach should be, and then how the NoSQL approach would be, using Cassandra.
Not only that, we will see some code implementing Twitter features, which is not functional but totally understandable as an example. Then we’ll be able to grasp concepts like keyspaces, column families, reversed columns and so on.
Also, remember that there are already a variety of implementations for Thrift (the client interface) and lots of articles to check out.
I’m a little skunk by example.
Link del día: IE9, bien encaminado
Llamó mi atención un artículo en SixRevisions llamado Five Things IE9 is (Actually) Doing Right, y me sorprendió leer que este navegador está tomando un rumbo muy interesante. Más allá de personalmente creer que no llega al nivel de usabilidad que logran otros navegadores (aunque es una opinión personal), realmente está dando un giro refrescante.
Entre las cosas que menciona el artículo (sobre las cuales no me extenderé) quiero resaltar el hecho de soportar los nuevos estándares, cosa sin precedentes, tener una performance realmente increíble, la integración de herramientas de depuración (developer tools) y como extra, la transparencia de los desarrolladores.
Uno de los puntos mencionados allí es el hecho que Microsoft nos permita dar un vistazo a la plataforma de IE9 para probarla, cosa que podemos hacer desde IE9 TestDrive, una experiencia sorprendente, en lo especial para mí. No he hecho mucho más que ejecutar varias de las pruebas en IE9 y en comparación con otros navegadores (Chrome, Firefox) y realmente la forma en la que IE9 está trabajando parece ser la mejor.
Por supuesto, lo que tenemos disponible hoy por hoy es solamente la plataforma de renderizado de IE9. ¿Qué pasará cuando se anexen todas las posibilidades que el navegador nos brinda? ¿Mantendrá su performance y su estabilidad? El tiempo nos responderá.
Soy un zorrinito beta.
Link del día: URLs en detalle
Las URLs son un elemento que usamos en nuestro día a día, más seguramente si trabajamos o estudiamos en algo relacionado a la informática. URLs para sitios web, URLs para aplicaciones 2.0, URLs para web services, URLs para todo. Y sin embargo, es posible que usándolos tanto, aún no sepamos cómo se componen en detalle.
Para eso, no es necesario que vayamos a leer el RFC 2396, sino que con leer un artículo de Alan Skorkin titlulado What Every Developer Should Know About URLs, ya sabremos responder gran parte de las preguntas que nos pueden haber surgido, y haber aprendido más de lo que sabíamos al respecto. De hecho, yo me encontré con varias cosas que no sabía de antemano, y yo pensaba que tenía los conceptos bastante conocidos.
Por ejemplo, nunca me había enterado de los Path Parameters, elemento que me parece muy aprovechable. En una pequeña conversación que tuve, me aconsejaron no usarlos por cuestiones de SEO o user-friendliness al momento de compartir URLs.
Soy un zorrinito web.
Link of the day: Open Source Project Management
I spend the first days of this week searching for a good issue tracker with hosted services. Unfortunately, I couldn’t find any that wasn’t paid, or that didn’t force you to share your code with everyone and/or upload the code as well. I ended up using Flyspray, a PHP-based issue tracker, even when I would have preferred another options (like Bugzilla or Trac).
Anyway, that led me to a Wikipedia page called Comparison of Issue Tracking Systems, which is a good way to make a decision based on what you need and what you can use/pay.
Of course, there’s also a Comparison of Project Management Software, and among the products listed there, a lot of them are open source and free. Masters In Project Management (Mr Master) also makes a review of the Top 25 Open Source Project Management Apps.
I’m a managed little skunk.
Link del día: OpenGraph Protocol
Hace muy poco tiempo fue que en f8 se anunciaron varios de los proyectos de Facebook para el futuro de la web. Causaron conmoción noticias como la colaboración de enormes empresas (por ejemplo CNN, MTV, Microsoft) y más específicamente, la presentación de OpenGraph, que intenta volver social a la web completa.
Como tal, ya podemos comenzar a utilizarlo. La especificación del OpenGraph Protocol posee un sitio propio que sin duda se irá expandiendo en detalles a medida que pase el tiempo. Hasta que Facebook reconozca a los recursos sociales que existen en la web, muy seguramente nos sirva utilizar integración social de otro tipo en nuestras websites. Por supuesto, no es el único tipo de integración que podemos usar, y para eso podemos interiorizarnos dentro de la documentación para desarrolladores de Facebook.
Sobre OpenGraph, también existe una pequeña presentación que Mark Kinsey publicó en la web Facebook Developers, titulada After f8: Implementing the OpenGraph protocol around the web. Muy simple y muy claro.
Soy un zorrinito social.
Link del día: Entendiendo REST
Un tiempo atrás tuvimos una lectura que trataba de una visión simple de la arquitectura REST. Sin embargo, hay mucho más por comprender en esta arquitectura.
En este caso me dediqué a leer el artículo de Ivan Zuzak, llamado Why understanding REST is hard and what we should do about it (Por qué comprender REST es difícil y qué deberíamos hacer sobre eso). El artículo es extenso en demasía, pero quisiera dejar alguna suerte de resumen para que no tengan que lidiar completamente con él sin conocimientos previos:
El artículo explica cómo bajo una interfaz simple como REST se esconde una arquitectura muy difícil de modelar. Un sistema que tiene sus puntas desconectadas de a momentos y todavía debe mantener estados puede ser representado con distintos modelos matemáticos, pero ninguno se ajusta a la exactitud. Una vez que se logre modelar y generar una representación formal de esta arquitectura, pueden establecerse estándares que facilitarán el avance. Más que esto, la existencia de un modelo matemático preciso permitirá predecir sus limitaciones y sus capacidades.
Como extra, la especificación de una arquitectura correcta permitirá también concebir buenas prácticas y conceptos de seguridad para la utilización de este tipo de comunicación que de a poco logrará volver a la web semántica.
Soy un zorrinito semántico.
Link del día: Cómo esconder passwords públicamente
últimamente se ha puesto de moda una buena idea que la gente de PasswordCard ha propuesto. PasswordCard es la idea de tener una tarjeta de colores y símbolos y una combinación de letras mayúsculas, minúsculas y números.
¿Cuál es la idea? Nosotros podemos elegir nuestro password de cualquier punto de la tarjeta. Podemos recordar en dónde se encuentra gracias a los colores y a los símbolos de la primera línea. (Por ejemplo, rojo-triángulo, o celeste-dólar.) Dicha combinación nos dará un símbolo con el que podemos comenzar a escribir nuestro password, copiando los que sigan a continuación. Sólo tenemos que recordar dicha combinación, que es ciertamente más fácil de recordar que el password en sí, y con esta tarjeta nos podemos acordar.
La tarjeta la podemos llevar a todos lados, porque, por supuesto, nadie más que nosotros sabe la combinación con la que comienza nuestro password, de forma que esta tarjeta puede mostrarse públicamente sin miedo a que roben tus passwords.
¿Qué ocurre si perdemos nuestra tarjeta? Podemos simplemente volver a imprimirla. Existe un código hexadecimal que identifica a cada tarjeta. Podemos guardar este código por cualquier problema, para reimprimir nuestra tarjeta si es que la perdemos o se arruina. Por supuesto, el código no indica para nada cuál es el password que elegimos, de forma que aún así no lo estaremos revelando.
Como consideración extra, suponiendo que nuestra tarjeta cayera en malas manos, cada una de las tarjetas tiene 29 columnas y 8 filas. Esto significa, nuestro password podría comenzar en 232 posiciones distintas. Asumiendo que nuestro password sólo se utiliza hasta el final de la línea, existen sólo 232 passwords posibles para esta tarjeta, con lo cual, sería fácil para cualquiera crackear nuestro password. Suponiendo que eligiéramos un límite que no es el final de la tarjeta, tendríamos 8 × 29 × 28 × 27 … × 2 × 1 = 8 × 29! ≈ 70 × 1022 combinaciones. Ya es un poco más seguro. Si comparáramos contra cualquier password de la misma longitud que inventáramos nosotros (es decir, sin uso de una tarjeta), utilizando los mismos caracteres, la combinación sería de 62 (10 números + 26 minúsculas + 26 mayúsculas) × 62… × 62 = 6229 ≈ 951, (y esto es, sin considerar la incertidumbre del tamaño del password) con lo que, en el fondo, la buena memoria está más segura que las tarjetas.
Pero para aquellos que, como yo, tengan dificultad en recordar este tipo de cosas, sin duda las tarjetas serán de buena utilidad.
Soy un zorrinito tarjetero.
Link of the day: Graphics Programming Black Book
I don’t know if you agree with me, but graphics programming is something I always wanted to learn – and will eventually do it someday. For that, we need a book that is as explicative as possible and detailed, going through every concept and being insightful on the concepts. Luckily, I found a web holding a full online version of Graphics Programming Black Book, a full featured book with really deep explanations and concepts.
It goes through optimization techniques and source code examples, even with 3D rendering and known examples as Doom or Quake graphic engines. You may see that the book is quite extensive, and good it is, for 70 short chapters we can really grasp the concepts and get hands to work on C++ and ASM in order to make our graphic programming.
I’m a graphic little skunk.