Category Archives for L-exp

Nuevo sistema de ranking en L-exp y otras novedades

Hacía tiempo que no comentaba novedades sobre mi proyecto personal L-exp pero he estado trabajando para ir perfilando mi idea en algo que cada vez intente ser más útil.

Ranking

En L-exp siempre he buscado que se creen listas que reflejen la información más óptima para un tema.  Mi intención es que una determinada lista o recurso siempre sea valorada de forma que el usuario pueda valorar su peso respecto al “universo”. Así como usuario podemos si queremos ser más óptimos a la hora de ver la información ya que tenemos una valoración del peso de cada elemento.image

He implementado un nuevo sistema que permite valorar la importancia que tiene cada elemento respecto los demás. Estos elementos sean listas, recursos o feeds quedan valorados y comparados respecto a los demás.

El resultado final es que todos los elementos tienen un ranking asignado y que podemos ver tanto un ranking total de listas como de recursos. Además este ranking es dinámico y podremos ver los cambios que se producen en sus elementos. Este ranking se va recalculando periódicamente para que podamos ver la evolución.

Aún tengo que perfilar el baremo de cálculo para asegurarme que es lo más justo posible a la hora de tener en cuenta las variables que influyen.

Las principales listas en función de este ranking son:

  1. Best programming Cheat Sheets
  2. Find all the Google products and services
  3. My first Mac Software List
  4. Economy blogs
  5. Essential software to install on a new Windows PC
  6. Ruby on Rails editors (IDE)
  7. (Ver ranking)

Podéis ver el ranking de recursos | enlace

Top Feeds

En cuanto a las feeds que son el último elemento de la cadena he creado una opción llamada “Top feeds” que muestra aquellas feeds que realmente los usuarios están consultando. Permitiéndonos ver realmente que es lo que se está moviendo y cogiendo importancia.  Esto hace además que me diferencie de un tradicional lector de noticias ya que nunca las mostraré todas y guardaré las que se han leído o no. Mi intención nunca ha sido competir con uno de ellos.

Otro factor que he mejorado es el intentar no quitar el protagonismo a las fuentes de los contenidos. No pretendo ser un sustituto y para ello he implementado varías técnicas de limpieza del feed para que haga que el visitante si le interesa el contenido tenga que ir a la fuente para encontrar la información completa con sus vídeos,formatos, los links, etc…

L-exp mobile

De una funcionalidad que encuentro realmente útil y que utilizo diariamente es la versión móvil desde mi teléfono. He ido trabajando bastante en hacerla lo más intuitiva posible y la verdad es que aún siendo sólo de consulta es muy práctica. 

Shared items

Podemos compartir feeds que nos han interesado y podrán ser consultados posteriormente. Esto ayudará a compartir lo que creemos que es más interesante.

List Cloud

La nube de listas hace tiempo que corre por L-exp, pero recientemente le añadi el mismo concepto pero con los recursos. Asi podemos ver de una forma más gráfica cuales son los más importantes.

Mejoras en el reader de las listas

En este apartado he trabajado mucho para intentar que el lector de una lista muestre la información de la mejor forma posible. Mi apuesta por usar frames no ha dejado de ser complicada y al alejarse del modelo de página web estándar ha traido sus problemas. Pero creo que al final es una forma bastante ágil de seguir las listas. Un tema que he procurado tratar muy bien ha sido la feeds de la lista para que se puedan consultar de forma lo más ágil posibleimage .

También podemos exportar el contenido de una lista en formato OPML de las feeds que contiene permitiendo luego añadirlo a otro lector fácilmente.

 

¿Para cuando la beta?

Como aún se ve en el logo sigue siendo Alpha. ¿ llegará alguna vez a ser Beta? Es decir, que se hayan implementado todas las funcionalidades y sólo quede depurar la aplicación… Pues sí, en principio sólo me quedan tres temas que tengo medio en desarrollo.

  • Acceso abierto a usuarios con OpenId o con registro
  • Permitir sugerir recursos en las listas que ayude a enriquecerlas.
  • Traducción del interface al castellano

Mi idea es cerrar estos tres temas en breve y pasar a fase Beta. Aunque no os voy a engañar que tengo pensadas muchas funcionalidades…..

Como siempre agradecer a la comunidad Rails por la generosidad en información, plugins y ayudas que siempre brindan.

Espero que os sea de utilidad y como siempre bienvenidos sean vuestros comentarios. Podéis solicitar una invitación para probar las funcionalidades de usuario.

L-exp ya corre sobre Rails 2.0

Efectivamente ha terminado el período de adaptación y migración de L-exp a Rails 2.0.2. Puedo constatar que ha sido muy sencillo y fácil. Curiosamente donde he tenido que migrar más  es lo primero que empecé a desarrollar que copiaba de ejemplos que iba encontrando por internet con código más antiguo.

Rails 2.0 ha eliminado (deprecated) algunos métodos y funciones que ya estaban obsoletas. Imagino que ha sido para hacer limpieza y poder aligerar el código de la framework.

 

Las principales cosas que me he encontrado han sido:

  • Paginator. Deja de estar en Rails, pero existe un plugin. Aunque yo he preferido pasar a will_paginate.
  • find_all: Método que ha pasado a obsoleto.
  • Algunos comandos de configuración del environment.rb
  • Otros…

Rails 2.0 trae muchas novedades, y a su vez mantiene muy buena compatibilidad. El proceso ha sido sencillo y rápido. A priori yo diría que he ganado en rendimiento de la aplicación, aunque no tengo ningún benchmark para ratificarlo. Ahora podré utilizar algunas de las mejoras para sacar jugo a las nuevas funcionalidades de la nueva versión.

Optimizando una aplicación Rails

Recientemente he tenido que enfrentarme al problema de optimizar mi aplicación Rails ( L-exp). El echo es que la carga de una determinada vista me llegaba a tardar más de un minuto. Realmente te quedas bastante frustrado cuando ves que te pasa esto.

Lo primero en pensar es que como Ruby on Rails está desarrollado en Ruby y este es un lenguaje Script. Pues que será lento y que hasta aquí hemos llegado.

Tras profundizar un poco se me ocurren dos caminos a seguir.

El primero analizar la base de datos para detectar problemas de índices. Es decir que se hagan consultas que no utilicen índices y por tanto sean lentas. Para ello utilizo un plugin para Rails llamado Query Analyzer. Este te muestra en el log a que datos acceden y si está utilizando índices. Así puedes detectar consultas complejas e ir optimizando las tablas. Se trata de ir añadiendo índice que contengas los campos por los cuales ejecutamos el query.

Gracias a este proceso detecté varios índices que faltaban y los añadi. Pude comprobar que un query que duraba casi un minuto pasó a durar menos de un 1 segundo.

En paralelo hice la segunda optimización que había leído por alguna parte que era la de utilizar el hash include en las llamadas a la base de datos( find(:all, :include =>”)). La idea es que en vez de hacer muchas consultas, si tiene tablas relacionadas hace una gran consulta trayendo todos los datos de las tablas relacionadas.

Tras acabar de hacer las consultas note una gran mejoría en las listas cortas, pero sin embargo las grandes tardaban mucho.En especial una lista ( Find all the google products and services) que llama a 67 recursos que me tardaba más de un minuto. Entonces…. ¿ donde me he perdido?

El echo es que tras varíos dias dándole vueltas me di cuenta que había cometido un error importante al usar ambos métodos a la vez. Optimizar los índices siempre es bueno ya que es el acceso a la base de datos es acelerado. Este es prioritario y se debe hacer siempre. Mi error fue utilizar el segundo método en consultas que traen muchos datos. Imagino que en estos casos cuando interroga la base de datos y guarda todo en memoria hace que la máquina gaste mucha memoria y CPU siendo poco efectiva para consultas con muchos datos.

Por tanto tan sólo tuve que quitar la optimización de includes y la lista más larga pasó a tardar pocos segundos. Algo impresionante.

Por tanto la moraleja de la historia es: ” Índices, Índices, Índices, ……”

Y el problema en mi caso no era de Rails sino de la base de datos que no la tenía optimizada.

Os adjunto una lista con los plugins que suelo utilizar: Rails plugins

365 días con Ruby on Rails

Ya hace un buen tiempo que llevo peleándome y gozando de esta Web Framework. Uno de los objetivos de empezar mi proyectito L-exp fue el de aprender a desarrollar con esta Framework.

La principal ventaja de esta framework basada en el lenguaje script Ruby está en su lógica aplastante. Has de entender la filosofía de como se hacen las cosas, pero una vez la tiene cada vez el desarrollo se vuelve más intuitivo y sencillo.

Yo diria que en estos momentos utilizo sólo un 40% de las posibilidades de esta framework. Pero la realidad es que suficiente ya que me permite desarrollar ágilmente y además voy solventando todos los retos. Para mi lo más complicado de este desarrollo está siendo siempre el HTML y CSS. No porque sea difícil de entender, sino que es difícil hacer diseños de páginas webs para conseguir que queden atractivas y funcionales. Es decir, que entren por los ojos. Es un problema artístico y no técnico.

Un factor importante en Rails es que las cosas las puedes hacer de muchas formas y lo que hay que aprender es como hacerlas de forma más óptima. Un mismo acceso en un controlador puede tardar 8 segundos o medio simplemente enfocando bien la búsqueda de los datos. Estas cosas son las que he de ir aprendiendo.

Hay que mencionar la genialidad del lenguaje Ruby en la flexibilidad y facilidad que tiene. Al principio si vienes de lenguajes como C  o Visual Basic te choca mucho. Ya que estas acostumbrado a hacerlo todo tu programando y Ruby está pensado para tener que escribir poco código. Probar Ruby en este enlace y entenderéis lo que digo.

Lo más sorprendente esta Framework es las cosas que he llegado a realizar de forma tan trivial. Quien me iba a decir hace un año que estaría leyendo Feeds para incluirlas en mi proyecto con dos líneas de código o  enviando pings a technorati y Feedburner para que actualicen sus RSS. El mérito no es que yo sea un genio, sino que la comunidad es muy abierta y encuentras soluciones para todo.

No puedo dejar de mencionar la base de datos MySQL ya que ha sido la gran desconocida al funcionar perfectamente y sin problemas.

Otro factor colateral que te encuentras en este mundo Rails es que usas hostings que están basados en Linux. En este aspecto he podido contastar que aunque utilizas terminales para acceder que quizás queda poco glamuroso, la potencia de los comando que puedes realizar y la tecnología que tienen es impresionante. Además las cosas están pensadas para ser fáciles, hay comandos para todo y al final el conocimiento que has de tener es reducido ya que son cuatro tareas las que realizas continuamente.

En cuanto a los servidores Linux me ha sorprendido la capacidad de configuración que tienen, la utilización de servidores como mongrel, el control de versiones con SVN, la gestión de tareas con cron y rake, la facilidad de configuración y muchas cosas más.

Relacionado con el mundo Linux hay que hablar sobre el tema del hosting que sin duda ha sido una pieza clave. Recientemente me mude de hosting y estoy muy satisfecho del cambio. En este aspecto me ha sorprendido la tecnología que tienen los hosting como los paneles de control y como estos shared servers pueden coexistir multiples entornos y usuarios. Sin duda un factor clave es la amabilidad del servicio técnico que como ya comenté en Railsplayground.com me está sorprendiendo.

Para predicar con el ejemplo os pongo un enlace a las listas L-exp que he creado sobre Ruby on Rails (ya van 9). He procurado ir añadiendo todos aquellos recursos que he necesitado clasificándolos por temáticas ( listas).

Como podéis leer ha sido un año divertido y he podido disfrutar mucho con mi proyecto. Ahora estoy haciendo cambios importantes en L-exp para hacerlo más útil y funcional.

Iré publicando algunos trozos de código con cosas interesante que he utilizado para compartirlo.

Migrando L-exp a Railsplayground

Como alguna vez he comentado estoy desarrollando un proyecto en Ruby on Rails que consiste en una forma para compartir información en forma de listas llamado L-exp  ( lists of experience).

Hasta ahora este proyecto ha estado en Dreamhost, pero llegó un momento que Dreamhost me pudo por varíos motivos. Para tener mi blog  Dreamhost me funciona perfectamente, pero con L-exp empecé a hacer procesos con Rake para cargar Feeds de las listas y aquí sucumbió mi servidor ya que mataba mis procesos aleatoriamente. Además descubri que el software no estaba totalmente actualizado y el soporte era horrible ( resumiendo mucho).

Como anécdota Recuerdo una vez que me dijeron que esperase a ver si se actualizaba la aplicación con tono bastante prepotente y además tras varíos emails mios diciendo que no iba. Entonces tras contestarles que si tras dos dias de espera no era suficiente por fin me respondieron y actualizaron la máquina. Fue patético.

Asi que despues de todo esto decidi dar el salto y buscar un hosting algo más especializado. Alguién hace tiempo en un post me recomendó Railsplayground y asi me decidi a configurar una cuenta de developer del mínimo nivel. Como principales elementos que me atraieron fueron:

  • Claridad y facilidad en los procesos
  • Dispones de un Mysql en el localhost
  • Dispones del Cpanel para configurar todo fácilmente
  • Incluye correo electrónico
  • Puedes instalar los gems de rails que quieras
  • El sistema respondió muy bien a las pruebas de carga que hice
  • El soporte fue muy rápido, efectivo y activo
  • precio lógicamente

Asi que tras probarlo todo he cogido una cuenta Level 2 por 108 $ al año con mejores opciones. Entre ellas podemos enumerar:

  • 7 GB de espacio
  • 200 GB/mes de año de banda
  • 5 cuentas/shells
  • 2 instancias mongrel/lighttpd/static
  • Ilimitados subdominios
  • Soporte para SVN y Trac disponible
  • Backups nocturnos
  • ………

De momento todo está funcionando muy bien y los problemillas que he tenido de migración me lo han solventado los de soporte ágilmente. Esto me da cierta tranquilidad que no tenía con Dreamhost para garantizar que mi aplicación va a funcionar bien y que debo preocuparme poco de ello. Además tengo opciones de escalabilidad que con Dreamhost no tenía.

Esto no quiere decir que abandone Dreamhost, pero lo limitaré a mi blog que no tiene ningún secreto ni complicación.

 

Betabug interesante servicio para gestionar proyectos de software

Acabo de crear mi propio proyecto en Betabug para gestionar mi proyecto L-exp y me ha sorprendido gratamente este sistema de gestión de proyectos de software. De entrada ya he podido añadir 25 mejoras que voy a desarrollar durante estas vacaciones para pasar a la BETA 1.

Volviendo a Betabug Puedes gestionar varíos proyectos y además ir clasificando por bugs (errores) o TO-DO (cosas pendientes). Además con un sistema de gestión de etiquetas puedes clasificar perfectamente la entrada para luego tenerla bien clasificada.

Otro tema interesante es el de disponer de la posibilidad de abrir todo esto a una comunidad para que puedan trabajar en el proyecto y entrar errores o mejoras. Además dispone de un Widget para facilitar esta integración. Un interface muy claro y además muchas opciones para exportar y clasificar la información. Incluso puedes suscribirte vía RSS.

 

Sin duda puede ser una buena herramienta y recomendable. De momento es gratuita pero habrá que ver si sigue siéndola.

 

 

Vía Genbeta

Betabug

Herramientas para promocionar y controlar tu web

Recientemente puse online mi proyecto L-exp después de unos meses de desarrollo. Es importante que una vez publicado se utilicen unas determinadas herramientas para hacerlo más visible en internet y controlarlo.

Voy a comentar las que he utilizado para compartirlo con otra gente que pueda pasar por la misma situación:

1.- Controlar el número de visitas

Para saber si estamos siendo visitados debemos tener algún sistema de estadísticas. Para ello yo recomiendo dos:

  • Mint : Es de pago (30$) pero para mi es el mejor sistema que hay ya que te da una información muy detallada y además al tener que instalarlo en tu servidor la tienes en tiempo real.
  • Google Analytics: Tras abrir una cuenta e instalar un código en tu web puedes seguir tus visitas con un interface gráfico muy interesante. Funciona bien aunque a veces he notado que tardan en actualizarse las estadísticas.
  • Feedburner: Hace poco que han añadido esta funcionalidad y no tengo mucha experiencia. Pero sin duda que puede ser una buena alternativa. Mis experiencias con Wordpress no han sido muy buenas.

2.- Dar de alta en el buscador Google

  • Google Webmasters : Desde este grupo de herramientas controlaremos la alta y el estado de la indexación del motor de búsqueda de Google. Aquí podemos publicar un fichero sitemap.xml y ver que resultados van dándose.

No se el procedimiento para darme de alta en otros buscadores ( sin pagar) pero ya añadiré si los descubro.

3.- Generar ficheros sitemap.xml: Estos son los ficheros que ayudan a las arañas que buscan en la red a analizar el website.

  • Xml-sitemaps : Este es el que yo he utilizado. Debido a que L-exp tiene muchos enlaces ( unos 800 de momento). He tenido que utilizar una herramienta automática. Es de pago pero vale la pena para ahorrarte muchas horas. Corre sobre PHP y lo puedes instalar en tu servidor y automatizar generaciones. Funciona muy bien.
  • ROR sitemaps Generator : No lo he probado pero parece una herramienta gratuita. Tiene una versión online y otra que se instala que corre sobre windows ( .NET).

Seguro que hay otras alternativas pero estas son las que he encontrado.

4.- Gestionar tus feeds

  • Feedburner : Sin duda es una herramienta imprescindible para saber que está pasando con tus feeds. Te muestra estadísticas y además te ahorra tráfico a tu web ya que hace de puente.

5.- Financiar tu hosting con publicidad

  • Google Adsense : Se que alguno se ha hecho rico con esto pero a mi de momento me da 1$ al mes. Pero tengo esperanza que al menos me de para pagar el hosting de Dreamhost.

He creado una lista L-exp para compartirlo mejor.