Sombras y degradados en CSS3

Esta vez no voy a hablar de nada nuevo. Muchos diseñadores y maquetadores web están ya incluyendo estos efectos a sus trabajos. Sin embargo, para mí son nuevos :) Los he utilizado con anterioridad pero muy brevemente, y sin tener muy claro qué hacían y por qué exactamente. Si quieres ir directo a los ejemplos, los tienes aquí. ¡Al lío!

Tipos de posts personalizados en WordPress

Wordpress es una maravilla de software. Nacido en 2003, actualmente es el gestor de contenidos más usado (53.9% de cuota de mercado). La clave de su éxito, en mi opinión, radica en su sencillez de uso, en su versatilidad, en ser un proyecto libre, y sobre todo en su comunidad de usuarios, que crean plugins para casi cualquier cosa que podamos imaginar.

¿Pero sabías que se pueden crear tipos de posts personalizados en los que alojar cualquier tipo de dato que se te ocurra?

Mini-receta: Tunel SSH

Un túnel SSH es una técnica que te permite encaminar un determinado tráfico a través de una conexión SSH. Por ejemplo, supón que conectas a un servicio de ficheros remoto mediante FTP. Todo el tráfico entre el cliente y el servidor viajará sin estar cifrado, por lo que estaríamos expuestos a un ataque Man-in-the-middle, en el que un atacante con acceso a nuestra conexión podría interceptar todos los paquetes para su consulta o modificación. Si enrutaramos todo este tráfico mediante un túnel SSH, evitaríamos estos problemas, asegurándonos un tráfico seguro añadiendo la capa SSH. De hecho, es común utilizar FTP sobre SSH (no confundir con SFTP, que es un protocolo distinto).

Sin embargo, esta técnica tiene más utilidades, que es la que a mí personalmente más práctica me resulta. Supón que te dan acceso a un servicio remoto que sólo autoriza para conectar a una determinada IP. Si quisieras conectar a ese servicio desde una conexión de banda ancha convencional o desde la red 3G, tendrías un problema, ya que, salvo que lo hayas contratado explícitamente, estarán asignando a tu conexión una IP dinámica. Si cada vez utilizas una IP, ¿cómo puedes entonces conectar al servicio? Utilizando un tercer servidor.

Muy posiblemente ya tengas acceso a un servidor remoto con una IP estática y al que tienes acceso SSH (por ejemplo, porque en él tienes alojada una página web). Podremos autorizar a este tercer servidor a ser el único al que se le permita acceder al servicio deseado. De esta forma, tendríamos tres equipos:

  1. Por un lado, el equipo #1, que es el cliente, el ordenador desde el que inicias la conexión a través de tu línea ADSL o 3G.
  2. Por otro lado, tenemos el equipo #2, que es el servidor web al que tienes acceso SSH. Host: example1.com.
  3. Y por último, el equipo #3, que es el que tiene el servicio que sólo autoriza a unas determinadas direcciones IPs. Host: example2.com. El puerto del servicio es, por ejemplo, el 1234.
Lo que haríamos sería indicar al administrador de #3 que añada la dirección IP de #2 como una IP autorizada. Entonces, podríamos iniciar un túnel SSH de #1 a #2, configurado para que redirija todo su tráfico a #3:
$ ssh usuario@example1.com -L 2222:example2.com:1234 -N

Es decir, primero conectamos mediante SSH al equipo #2 (example1.com). Por otra parte, el parámetro L indica que todo el tráfico que conecte al puerto 2222 del cliente (equipo #1) se redirigirá, mediante la conexión SSH del equipo #2 (example1.com), hasta el puerto 1234 del equipo #3 (example2.com). Por último, el parámetro -N es un modificador que se utiliza en túneles SSH para evitar que se ejecuten comandos en el equipo remoto (equipo #2).

Pulsamos INTRO, introducimos la constraseña de nuestro usuario de example1.com, y ya está. ¿Ahora qué? Si quisiéramos conectar al famoso servicio remoto del equipo #3, tan sólo deberíamos realizar la conexión a localhost:2222, y ya estaríamos dentro.

Espero que este truquito os sea de tanta utilidad como lo es para mí :)

Introducción a la programación en Facebook V

Quinta y última parte de esta guía introductoria al desarrollo de aplicaciones web sobre la Facebook Platform. Ya conoces el ecosistema de tecnologías de Facebook, sabes cómo crear distintos tipos de aplicaciones, y conoces el SDK JavaScript por completo. Hoy vamos a ver el PHP SDK.

Antes de seguir leyendo, puedes echar un vistazo a la página GitHub donde está alojado el proyecto PHP SDK, y desde donde te lo podrás descargar. Nosotros vamos a hablar sobre la última versión estable, la 3.1.0.

Introducción a la programación en Facebook IV

En la primera parte vimos una introducción a las tecnologías usadas para programar en Facebook. En la segunda, creamos una aplicación, y le añadimos algún Social Plugin y etiquetas Open Graph. En el tercero, nos zambullimos en el SDK JavaScript, y autenticamos al usuario en nuestra aplicación, le solicitamos permisos extra, publicamos en su muro, y mostramos algún diálogo.

Hasta ahora hemos trabajado sobre una aplicación que funcione sobre nuestra página web. Sin embargo, como ya sabes, Facebook nos da más opciones: aplicaciones en móviles, y aplicaciones dentro de Facebook. Hoy vamos a ver cómo crear una aplicación dentro de Facebook. Esto se hace mediante un canvas (iframe) en Facebook en el que se mostrará la página web que deseemos. Por supuesto, en esa página web podremos gestionar JavaScript, CSS y HTML como queramos.

Introducción a la programación en Facebook III

Tercera parte de esta guía de introducción a la programación de aplicaciones en Facebook. Si seguiste la primera y la segunda parte, a estas alturas ya le habrás perdido el medio a muchos de los conceptos clave (tipos de aplicaciones, SDKs, Social Plugins, Open Graph, XFBML, Insights). Pero hay otros conceptos igualmente importantes que todavía no conocemos. Hoy vamos a tratar la autenticación OAuth, el SDK de JavaScript a fondo, y veremos cómo crear diálogos.

Introducción a la programación Facebook II

Ok, el anterior artículo no estuvo mal; vimos una introducción conceptual a las piezas clave para la construcción de aplicaciones en Facebook. ¡Pero no llegamos a hacer nada! En este post vamos a construir algo sencillo, jugando con el SDK en JavaScript. Vamos a probar a mostrar algunos de los social plugins, usaremos Open Graph, y presentaremos dos nuevas tecnologías: XFBML y Facebook Insights. ¡Al lío!

Introducción a la programación en Facebook

¿De modo que te han pedido que hagas una aplicación para Facebook y no sabes por dónde empezar? ¿Has llegado a la documentación oficial y te pierdes entre tanto Open Graph, SDK, plugins, dialogs y Graph API? Don’t panic! En este artículo vamos a ver paso a paso cómo empezar a programar en el nuevo sistema de Facebook. ¡Al lío!

Bibliotecas JavaScript: Motores de física

Hoy hemos visto en el Google I/O la noticia de que Angry Birds estará disponible para el navegador Google Chrome. ¿Cómo es esto posible? Gracias al objeto canvas :D Ahora que HTML5 ha llegado para quedarse, y que incluso Internet Explorer ofrece soporte para el elemento canvas, poco a poco se irán popularizando las animaciones y juegos en el navegador, sin necesidad de Flash. Uno de los elementos clave son los motores de física; consiste en una serie de bibliotecas que permiten modelar sistemas donde exista gravedad, y se puedan definir objetos rígidos o dinámicos, con coeficientes de fricción, elasticidad, etc. Suena bien, ¿verdad? :)

Introducción a Doctrine 2

¡Hola! Últimamente sigo liado sumergiéndome en el mundo de ASP.NET, de ADO.NET, y sacando tiempo de debajo de las piedras para un pequeño proyecto en mi querido Zend Framework en PHP. Tras ver ADO.NET Entity Framework sentí la necesidad de usar algo igual en PHP; la solución se llama Doctrine :) La primera pregunta que nos deberíamos hacer es, qué es exactamente Doctrine. Respuesta rápida: Es un ORM de PHP. Pero analicémoslo un poco más.

En primer lugar, ¿qué diantres es un ORM? Viene de las siglas Object-relational mapping, que viene a traducirse como Mapeo objeto-relacional. En concreto es una técnica, o patrón arquitectónico, que permite comunicar dos sistemas distintos, típicamente una base de datos relacional con objetos de un lenguaje orientado a objetos, mediante un sistema que “mapea” (vincula) ambos sistemas. Mucha gente (yo mismo) ha creado a mano sus objetos mapeadores que, junto con objetos usando el patrón Active Record, daban un resultado muy similar a lo que un ORM nos ofrece. Pero oye, un ORM hace todo el trabajo sucio por nosotros ;)