Varios

Lists of values

If you are into building applications of any kind, probably you sometime had the need of a list of countries for a dropdown box or a select list with states.

This is why we created LOVs https://github.com/seasonlabs/lovs a repository to store this kind of datasets, in a plain, machine readable format that can be used to create DB tables or other kind of automated datastore.

With firsts commits I tried to contribute some common use datasets. You can find for example a list of countries in Spanish: https://github.com/seasonlabs/lovs/blob/master/es/countries.yml or the same list in English: https://github.com/seasonlabs/lovs/blob/master/en/countries.yml

Hope this could be of utility to some people and get a lot of contributions.

Forks are welcome!

Open source @ www.season.es 

Posted March 8, 2011

PHP Barcelona Conference 2010

La PHP Conference 2010 está a la vuelta de la esquina. 

El programa de este año está lleno de buenas charlas. Yo voy a ir fijo a unas cuantas que me interesan bastante. 

Ultimamente estoy mas metido con Rails y no toco tanto PHP pero la organización aceptó mi propuesta para hablar de Desarrollo de aplicaciones para Facebook en PHP (ya tenemos unas cuantas) y estaremos Xavi y Yo el Viernes día 29 de 15.15 a 17.25 en el Citylab explicando en plan práctico como hacer una aplicación para Facebook con CakePHP. Lo que contaremos se puede aplicar a cualquier Framework MVC. 

El programa por encima es este: http://phpconference.es/php-barcelona-conference-2010/talks/#t31

Filed under  //   conferencias   development   php  

Truco Mac: Suspender

He encontrado este truco en un foro y lo cuelgo a modo de archivo.

Cuando cerramos la tapa de un macbook, por defecto el macbook se pone en reposo. Es muy útil este modo, porque casi no consume energía, el ordenador no se calienta y te permite continuar con el trabajo cuando abres la tapa. Pero el tema es ese "casi". Energía sí que consume (aunque muy poca), por lo que si se quiere dejar el macbook un largo período en ese modo no resulta útil. 

Para solucionarlo nos vamos al terminal y escribimos lo siguiente:

sudo pmset -a hibernatemode 1

Una vez tecleado y pulsada la tecla "enter", nos pregunta la contraseña de administrador. Se la damos. Ahora cuando cerremos la tapa, el macbook copiará todo el contenido de la memoria a un archivo del disco duro y se apagará completamente. Así no consume absolutamente NADA de energía. Podemos dejarlo así y después de dos semanas, abrir la tapa y encenderlo. cuando lo hagamos, se volverá a copiar todo el contenido del archivo en la memoria y volveremos a tener el equipo con los mismos programas abiertos que teníamos cuando lo hibernamos, y con los mismos documentos y procesos abiertos. 

¿Ventajas? Pues que así no se consume energía mientras está la tapa cerrada. 
¿Inconvenientes? Pues que al encenderlo, en lugar de ser un encendido inmediato como cuando se recupera de la suspensión, tenemos un encendido que durará unos 10 o 15 segundos (lo que tarde el macbook en copiar el archivo a la memoria del equipo).

Si se quiere volver al método anterior, simplemente tecleamos 

sudo pmset -a hibernatemode 3

Así cuando cerremos la tapa, el equipo se "suspenderá" en lugar de hibernar. Sólo hibernará si permanece durante mucho tiempo suspendido y la batería está a punto de agotarse. Entonces el equipo hibernará automáticamente. 

Y si queremos que no hiberne ni haga nada cuando cerremos la tapa (no lo recomendaría), teclearemos

sudo pmset -a hibernatemode 0

Un truco muy útil a mi gusto. 

Añado que para hibernar el equipo directamente, sin usar este truco, en el menú de la manzana hay que pinchar en "reposo". Eso no hace que el equipo se quede "suspendido", sinó que directamente hiberne.

via no-se-sabe-quien

Autoupdate en Git usando hooks

Dejo aquí una pequeña receta para configurar un repositorio Git para que se actualize automaticamente al recibir un push. Esto es útil para seguir un pequeño workflow de deployment en la fase de desarrollo. De esta forma simplemente seguiremos los siguientes pasos:

1. Creamos un repositorio nuevo en el servidor de destino: 

mkdir proyecto
cd proyecto
git init

Con esto tendremos un repositorio nuevo con su copia de trabajo (working copy) listo para recibir los datos que queremos enviarle.

2. Seguidamente ejecutamos el siguiente código que nos prepara el repositorio para realizar el update automaticamente mediante el hook post-receive.
En la carpeta hooks que encontramos en el directorio .git de cualquiera de nuestros repositorios tenemos una serie de scripts que podemos habilitar para realizar tareas de cualquier tipo sobre nuestro sistema o sobre el repositorio cuando ocurren diferentes sucesos en el proceso de versionado.

3. En nuestra maquina local, añadimos un nuevo destino remoto que apuntará a nuestro servidor remoto:

 git remote add devel root@servidor.com:/home/usuario/public_html 

Y listo. Solo a partir de ahora para publicar el proyecto en el servidor web solo hace falta realizar un push sobre el nuevo destino que hemos configurado:

 git push devel master 

Basado en el post de: 
http://debuggable.com/posts/git-tip-auto-update-working-tree-via-post-receive-hook:49551efe-6414-4e86-aec6-544f4834cda3

Redmine 1.0 Released

Redmine llega a la versión 1.0

http://redmineblog.com/articles/redmine-1.0.0-released/

En season trabajamos con Redmine desde hace años y nos funciona perfecto.

Posted July 20, 2010

Objetivos 2010

Update: Parece que puedo ir tachando algunas cosas de la lista. Esto parece ir por buen camino... aún queda un poco de año

 

Como lista de buenos propósitos para el 2010 voy a hacer una recopilación de lo que creo que sería ideal para este nuevo año.

  • Cambiar mi blog de diseño... :)
  • Retornar mas a la comunidad, participando en mas proyectos Opensource y mantener vivos en los que ya participo.
  • Ir a mas eventos de Networking, conocer a mas gente y presentar lo que hacemos en Season.
  • Seguir reciclandome y aprendiendo nuevas cosas.
  • Programar mi primera aplicación para iPhone y Android
  • Trabajar mas con Ruby on Rails.
  • Mejorar mis conocimientos del entorno de Flash i AS3.0
  • Asistir a, por lo menos una conferéncia de Data Visualization, Arte Digital o Interactividad.

Veremos que nos depara este próximo año y deseo que sea el año de Season, tenemos muchos y buenos proyectos horneandose.

Pasar parametros a bloques de vista en Drupal

En ocasiones nos encontramos con la necesidad de que el bloque que hemos generado con Views 2 modifique su contenido basandose en los parametros que obtenemos de la URL de un sitio elaborado con Drupal. El problema que encontramos es que no podemos pasar parámetros a los bloques desde Views 2. Simplemente no funciona. Pero vamos a ver como podemos solucionarlo. El workaround consiste en forzar el envío del parámetro al bloque mediante una configuración determinada del parámetro requerido. Los pasos que hay que seguir son: Agregamos el parámetro requerido a la configuración de parametros de la View y lo configuramos como muestra la siguiente imágen:

Default_arg
 Como se puede ver en el argumento PHP se retorna un valor constante a modo de ejemplo. El bloque recibe como parámetro el valor que retornemos en este fragmento de PHP y a nosotros nos interesa retornar un valor basado en la URL que el usuario está visitando. Para ello vamos a escribir como valor de retorno un código parecido al siguiente: $path = drupal_get_path_alias($_GET[‘q’]); //get URL alias $path = explode(‘/’, $path); //break path into an array if ($path[0] == ‘projects’ && $path[1] != ”) { return $path[1]; } Con esta operación podremos enviar al bloque casi cualquier parámetro que nos interesa y configurarlo para actuar según nos interese. Espero que sea de ayuda. Referencias: http://www.ridgesolutions.ie/index.php/2009/01/19/passing-an-argument-to-a-block-view-in-drupal-6/

Manifiesto en defensa de los derechos fundamentales en internet

Hace tiempo que no publicaba un post, creo que la ocasión se lo merece. Ante la inclusión en el Anteproyecto de Ley de Economía sostenible de modificaciones legislativas que afectan al libre ejercicio de las libertades de expresión, información y el derecho de acceso a la cultura a través de Internet, los periodistas, bloggers, usuarios, profesionales y creadores de internet manifestamos nuestra firme oposición al proyecto, y declaramos que... 1.- Los derechos de autor no pueden situarse por encima de los derechos fundamentales de los ciudadanos, como el derecho a la privacidad, a la seguridad, a la presunción de inocencia, a la tutela judicial efectiva y a la libertad de expresión. 2.- La suspensión de derechos fundamentales es y debe seguir siendo competencia exclusiva del poder judicial. Ni un cierre sin sentencia. Este anteproyecto, en contra de lo establecido en el artículo 20.5 de la Constitución, pone en manos de un órgano no judicial -un organismo dependiente del ministerio de Cultura-, la potestad de impedir a los ciudadanos españoles el acceso a cualquier página web. 3.- La nueva legislación creará inseguridad jurídica en todo el sector tecnológico español, perjudicando uno de los pocos campos de desarrollo y futuro de nuestra economía, entorpeciendo la creación de empresas, introduciendo trabas a la libre competencia y ralentizando su proyección internacional. 4.- La nueva legislación propuesta amenaza a los nuevos creadores y entorpece la creación cultural. Con Internet y los sucesivos avances tecnológicos se ha democratizado extraordinariamente la creación y emisión de contenidos de todo tipo, que ya no provienen prevalentemente de las industrias culturales tradicionales, sino de multitud de fuentes diferentes. 5.- Los autores, como todos los trabajadores, tienen derecho a vivir de su trabajo con nuevas ideas creativas, modelos de negocio y actividades asociadas a sus creaciones. Intentar sostener con cambios legislativos a una industria obsoleta que no sabe adaptarse a este nuevo entorno no es ni justo ni realista. Si su modelo de negocio se basaba en el control de las copias de las obras y en Internet no es posible sin vulnerar derechos fundamentales, deberían buscar otro modelo. 6.- Consideramos que las industrias culturales necesitan para sobrevivir alternativas modernas, eficaces, creíbles y asequibles y que se adecuen a los nuevos usos sociales, en lugar de limitaciones tan desproporcionadas como ineficaces para el fin que dicen perseguir. 7.- Internet debe funcionar de forma libre y sin interferencias políticas auspiciadas por sectores que pretenden perpetuar obsoletos modelos de negocio e imposibilitar que el saber humano siga siendo libre. 8.- Exigimos que el Gobierno garantice por ley la neutralidad de la Red en España, ante cualquier presión que pueda producirse, como marco para el desarrollo de una economía sostenible y realista de cara al futuro. 9.- Proponemos una verdadera reforma del derecho de propiedad intelectual orientada a su fin: devolver a la sociedad el conocimiento, promover el dominio público y limitar los abusos de las entidades gestoras. 10.- En democracia las leyes y sus modificaciones deben aprobarse tras el oportuno debate público y habiendo consultado previamente a todas las partes implicadas. No es de recibo que se realicen cambios legislativos que afectan a derechos fundamentales en una ley no orgánica y que versa sobre otra materia.

RubyAMF

Despues de mucho tiempo sin escribir... :P diré lo siguiente: Hace un tiempo que estoy trabajando en RubyAMF. Este plugin para Ruby on Rails permite la comunicación entre Actionscript y Rails usando el protocolo AMF. La comunidad de usuarios no es muy grande pero es bastante compacta. Entre ellos Tony Hillerson co-autor del libro Flex on Rails y hasta hace poco, miembro de EffectiveUI así como Aaron Smith, programador interactivo y primer creador de RubyAMF. Ahora tomo el relevo y paso a coordinar el proyecto en google code http://code.google.com/p/rubyamf/ y a administrar el blog donde podras conocer todas las novedades del proyecto en http://blog.rubyamf.org/

Posted July 15, 2009