You are currently browsing the archives for the Programación category


Ruteador simple para aplicaciones PHP

Cuando uno hace aplicaciones en PHP o algún otro lenguaje parecido, generalmente tiene dos opciones: o trabajar con un framework que cumple la función de router o trabajar a “php puro” y tener urls feas y demases.

En el contexto de aplicaciones web, un router es un sistema que toma una petición del servidor web, por ejemplo /post/new, y carga la página correspondiente.

Para un nuevo proyecto que estoy haciendo decidí no usar un framework y hacerme mi propio router, siguiendo un poco la línea de como lo hace Kohana hice el siguiente código.

Trabaja con clases. Si se consulta por /post/jojo va a llamar a el método action_jojo() de la clase Controller_Post, bien similar a lo que hace Kohana.

Las clases las incluí en el archivo controller.php.

Comenté el código y lo subí acá por si le quieren dar una vuelta.

Es importante que le digan a su servidor web que redirija todas las consultas a el archivo index.php.

En nginx puse el siguiente código en mi vhost.

1
try_files $uri $uri/ /index.php;

Ya no recuerdo como se hace en Apache, pero pueden usar el .htaccess de WordPress.

Díganme qué les parece, si les sirvió y qué le mejorarían. Continue reading →

Haciendo un sistema de noticias

Si quieres ver el sistema y luego leer el post dirige tu navegador a http://news.eljojo.net

Si usan twitter vía web se habrán dado cuenta que hay una nueva pestaña llamada Activity (no sé como se llama en español). La gracia de esta pestaña de actividades es que me permite ver lo que hace la gente que sigo.

Me di cuenta que varia gente hacía lo mismo que yo: favoritear tweets con links interesantes. Tomando esto como una fuente de noticias interesante, hice un sistema bien similar a Hacker News de Ycombinator pero con un toque mío.

Decidí trabajar con MongoDB, un sistema de bases de datos no-sql que trabaja en base a documentos (creo que todos los no-sql lo hacen así :P ).
Nunca había hecho un proyecto con Mongo, es bacán y la curva de aprendizaje es bien baja si ya manejas javascript.

El sistema trabaja de la siguiente manera: todas las horas busca los tweets favoritos de ciertas cuentas twitter, extrae los links y los guarda en la base de datos.

Cada cierto tiempo a cada tweet se le asigna un puntaje, en base a su antigüedad y la cantidad de votos que reciba en la página.

Acá está funcionando: http://news.eljojo.net/

Se puede navegar usando j y k o las flechas del teclado, favoritear usando l (ele) y ñ.

Estoy muy contento con como quedó, aunque la parte de css y javascript me gustaría dejarla mejor. MongoDB resultó ser bien rápido.

Se reciben sugerencias, comentarios y todo lo demás. En una de esas libero el sistema como open source.

¡Temas para Ajipirijou!

Para hacer un poco más entretenida la lectura del blog elegí varias fotos (que tomé yo mismo) y las puse en el header del blog.
Lo divertido es que la foto va cambiando de acuerdo al post que se lee, pero no es elegida al azar, así que cada post va a tener siempre la misma foto.

Para hacerlo, en el archivo header.php de mi tema agregué un arreglo con todas las fotos. Para que no se repitan las fotos hice el siguiente snippet:

1
2
3
$numero = strlen($_SERVER['REQUEST_URI']) % count($fotos);
if(is_home() or is_page()) $numero = mt_rand(0, count($fotos)-1);
$foto_elegida = $fotos[$numero];

Recorran el blog y vean todas las fotos :D

Creando un sistema que me avise cuando me depositan

Se me ocurrió hacer un sistema (un poco inspirado en buxus.cl) que obtenga mi saldo y me avise por sms cuando cambie.
La idea es simple: conectarme a la página del banco, obtener mi saldo y compararlo con el anterior registrado. Si cambia, avisar a jojo por sms :) Continue reading →

Idea: One-Time Passwords para Redes Wi-Fi

Hace poco abrieron la red inalámbrica de mi colegio. El problema es que “no la podemos usar en clases” (igual uso mi MB :D ), lo que hace que pierda todo el sentido, ¿no?. Se me ocurrió una solución: Aplicar claves de un uso (One-Time Passwords) para redes Wi-Fi.

Estrictamente hablando, no son claves de un uso, sino que duren un día.
La idea es simple: una vez al mes, generar una lista de 30 claves que vayan rotando automáticamente en el router, una vez por día. Así los profesores podrían permitir el uso de la red Wi-Fi por todo el día. Limite más que justo. Continue reading →

La Otra documentación de jQuery

Desde que aprendí a trabajar con jQuery siempre me guié por Visual jQuery, una documentación un poco más dinámica y agradable de usar que la versión oficial on-line (es descargable también).

En ese entonces, Visual jQuery estaba genial. Con el pasar del tiempo dejó de ser actualizada (ver 1.2.6) y, a pesar de que sus ejemplos y códigos todavía sirven, no contiene los cambios que han salido en las nuevas versiones de jQuery, a la fecha 1.5.

Hoy descubrí jQAPI, que es en la práctica lo mismo pero mejor. La documentación es muy extensa, muy detallada, tiene varios ejemplos y una búsqueda. Está actualizada a la versión 1.5 que es la última.

Según su propio sitio, son la única documentación alternativa que está actualizada.
Si trabajas con jQuery este sitio es un must.

Link: http://jqapi.com/

Y se va a llamar Joj.me

Si no leyó el post de los acortadores de urls hágalo ahora.

Con mi entusiasmo por el sistema para acortar urls me compré el dominio joj.me, el más corto que encontré.
Este es mi plan: instalar mi servicio para acortar urls como servicio (en joj.me) y de paso ofrecerlo como script opensource, para que el que quiera lo pueda tener en su servidor.

Me di cuenta que lo de los subdominios a simple vista no es tan buena idea, pero que a gran escala sirve harto.
Además, a @Zentaurus se le ocurrió un uso muy genial.

Mi mayor desafío para esto es hacer que sea realmente fácil de usar y de instalar.

El script yo creo que va a estar listo en unos meses (siempre digo lo mismo). La buena noticia es que ya comencé a desarrollarlo y de hecho, ahora mismo se está encargando de algunas de las urls que hay detrás de elJOjo.net, como http://eljojo.net/flickr .

También lo tengo para beta personal en http://joj.me, tal vez vean algunos twitteos míos con links acortados.

A pesar de que acortar urls es algo tan simple y todo, le tengo harta fe a este proyecto. La verdad no se por qué.

Se reciben ideas y comentarios acá mismo o a mi correo.

Nota: agregué el script a github, juegue. http://joj.me/6

Creando un Sistema para Acortar URLs que valga la pena

Actualmente, para acortar mis urls uso dos sistemas: YOUrls y bit.ly pro.
Tengo YOUrls asociado a elJOjo.net, cosa que cuando visiten http://eljojo.net/twitter retorne a mi cuenta en twitter, pero a la vez si visitan http://eljojo.net muestra mi página.
Para bit.ly tuve que crear un subdominio, i.eljojo.net, que funciona igual que bit.ly pero con ese dominio.

El mayor problema con los sistemas que acortan urls es que gastan todos los caracteres rápidamente y al final las urls cortas terminan siendo largas.

La mayoría de las URLs que acorto deberían ir a un subdominio de eljojo.net, ojalá de un caracter, pero también me gustaría poder acortar urls para elJOjo.net directamente.

Esta es mi idea para hacer un sistema para acortar URLs que valga la pena usar:

  • Usar múltiples subdominios y que el sistema pueda discriminar automáticamente el que más conviene: a.eljojo.net, b.eljojo.net, c.eljojo.net, etc. Ya que obligatoriamente vamos a tener que usar el caracter para el subdominio, así gano muchas más combinaciones manteniendo urls realmente cortas.
  • Posibilidad de poder elegir un dominio a mano, incluyendo elJOjo.net solo.
  • Crear un sistema para mantener estadísticas de las visitas de los links.
  • Múltiples servidores: me gusta garantizar la disponibilidad de eljojo.net, para poder lograr esto usando dos servidores y no tener que jugar con algún sistema de sincronización de bases de datos, decidí crear una sistema de servidores master-slave con una api simple.
    Básicamente tengo dos o más servidores, uno maestro y el resto slave. Cuando acorto una URL, el sistema replica los cambios a todos los servidores via una API, todo bajo PHP. Ojalá via POST y usando JSON.
  • Crear una API compatible con la de bit.ly: sería genial poder engañar a un cliente twitter que auto-acorta urls editando el archivo hosts (apuntándolo a mi servidor) y que acorte la url con mi sistema.
  • Interfaz Simple: la interfaz de YOUrls no es tan agradable como me gustaría que fuera.

El sistema todavía no lo escribo, pero lo quiero empezar a programar hoy mismo.

Creo que estas son todas las features que se me han ocurrido hasta ahora. ¿Ideas/comentarios?
También recibo sugerencias a mi correo.

Cambiar el Avatar en Twitter via REST API en PHP

Si no entendiste el título, te recomiendo que no sigas leyendo.

En este post, vamos a mostrar y explicar un poco el código necesario (que en realidad es bien simple) para cambiar el avatar de una cuenta twitter via api.

Continue reading →