Web Coder
My name is Victor Castell, I drive a company called season where we created the great eukaliptus.com platform.
If you need help in developing something in internet just contact us at www.season.es
Posts
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.
La PHP Conference 2010 está a la vuelta de la esquina.
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 1Una 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 3Así 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), teclearemossudo pmset -a hibernatemode 0Un 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
mkdir proyecto
cd proyecto
git init
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
echo "Enter an existing repository name:" read REPONAME cd /home/git/repositories/$REPONAME.git echo "Configuring bare git repo..." git --bare update-server-info git config core.bare false git config receive.denycurrentbranch ignore git config core.worktree /var/www/$REPONAME mkdir /var/www/$REPONAME chown git:git /var/www/$REPONAME echo "Working out the hook" cat >> hooks/post-receive <<-"EOA" #!/bin/sh read oldrev newrev ref BRANCH=`echo $ref | cut -d / -f 3-` if [ "$BRANCH" = "staging" ]; then echo "Deploying $BRANCH..." git checkout staging -f chmod -R u+rwX,go+rX `git config core.worktree` fi EOA chmod +x hooks/post-receive echo "==================================================" echo "Instructions " echo "==================================================" echo "Your repository has been configured to deploy to: " echo "/var/wwww/$REPONAME" echo "To deploy push to a remote branch named staging" echo "==================================================" |
git remote add devel root@servidor.com:/home/usuario/public_html
git push devel master
http://redmineblog.com/articles/redmine-1.0.0-released/
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.
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:
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/
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.
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/
Primero deberemos configurar la BD en el archivo database.yml Después podemos ejecutar rake db:schema:dump para generar el archivo db/shema.rb que contendra la estructura de la base de datos. Renombramos esa migración como schema_base.rb Creamos una primera migración usando ese esquema:
class CreateTables < ActiveRecord::Migration
def self.up
`cp #{RAILS_ROOT}/db/schema_base.rb #{RAILS_ROOT}/db/schema.rb`
Rake::Task['db:schema:load'].invoke
end
def self.down
end
end
Entonces se puede empezar a escribir migraciones cuidando que siempre sea esta la primera. Es ideal hacer modificaciones a la BD para que sea mas adecuada para trabajar con Rails.
Hace un tiempo que estoy profundizando en el lenguaje Ruby y en Ruby on Rails, framework ampliamente conocido y reconocido. Una de los puntos fuertes de Rails es su ORM, basado en el patrón Active Record. Estoy viendo que es muy sencillo utilizar esta característica de RoR para desarollar web services basados en RoR para que sirvan datos a aplicaciones externas. Si hablamos de Flex o de Flash, vemos que podemos realizar una comunicación mediante diversos formatos de datos, entre ellos AMF, este formato es el mas óptimo para la transferencia de datos entre Servidor - Flash. Leyendo este post sobre ActiveRecord y Flex me entero que existe una extensión de Ruby para transmitir datos AMF, llamada RubyAMF, y que ahora incluye un plugin de Rails que permite la integración total de una aplicación Rails con el formato AMF. Hay mas información en la web de RubyAMF Una combinación que va a dar que hablar sin duda, a mi por lo menos :)
He estado configurando el server adapter para Glassfish en Eclipse Ganymede tal y como indican las instrucciones que hay en la página de descarga del plugin de Sun https://glassfishplugins.dev.java.net/ pero después de seleccionar el adaptador en "Aditional Server Adapters" y realizar la instalación correctamente, no aparece en la lista de servidores. Buscando en google me he topado con este blog en el que se explica la instalación manual http://kaypress.kayrin.com/?p=220 Esto resuelve el problema, pero lo curioso es que me he dado cuenta que el adaptador sugerido por Eclipse es la versión 1.0.17 que no es compatible con Ganymede, y la versión de descarga en el blog es la 1.0.2 que soluciona el problema y se instala correctamente en Ganymede.
Estas vacaciones he tenido un poco de tiempo para poder instalar un software para gestionar mis proyectos personales. El gestor en cuestión es Redmine, un gran software parecido a Trac, pero programado en Ruby On Rails y que a mi personalmente me parece muy superior a este último y no tiene nada que envidiar a programas comerciales del mismo tipo. Además es Opensource y se distribuye libremente. En resumen, para acceder a las descargas de mi software a partir de ahora se puede hacer en esta dirección: http://redmine.victorcoder.com También hay un enlace en la columna de la derecha, en la sección de links "Personal"
Widgadget forma parte del listado de participantes internacionales de los Mashable Open Web Awards 2008. Es un premio internacional en el que participan cientos de personas de toda la red. A través de las votaciones se evalúa la popularidad de cientos de sitios web.
Hoy he necesitado realizar un post a twitter desde el API de Widgadget, y buscando he encontrado una clase de ZF que implementa el API de Twitter. Zend_Twitter es una propuesta y todavía no está disponible en el core de ZF.
Pese a que hay gente que la está usando con éxito, otros prefieren usar el Zend_Http_Client
El caso es que no me convencen ninguna de las dos, la primera por no estar en el core y la segunda porque podemos usar la clase Zend_Rest_Client para realizar lo mismo con muchas menos lineas de código.
Mi solución:
$twitter = new Zend_Rest_Client('http://twitter.com/statuses/update.xml');
$twitter->getHttpClient()->setAuth($user, $password);
$result = $twitter->status('status message')->post();
Algunos piensan que los frameworks no son necesarios para crear aplicaciones PHP, pero no están en lo cierto. Son absolutamente necesarios para crear aplicaciones. El problema es que están reinventando la rueda y ademas haciendolo sin la metodologia que pueden proporcionar algunos de los frameworks existente.
Ayer asistí a la segunda PHP Conference que se organiza en Barcelona por el grupo de PHP Barcelona. Esta vez la entrada costaba 20€, pero la verdad es que valía la pena ya que la organización fue genial. Nada mas llegar esperaba un catering de desayuno todo muy bueno y a las 10.00h empezaron las ponencias. Primero estuve en la conferencia de Jordi Roura que nos explico una serie de métodos y pautas para realizar un seguimiento detallado de los contenidos que funcionan o no funcionan en nuestra página web. Muy bien explicado y muy amena. La segunda conferencia realizada por Arno Schneider de bermilabs, intentaba evangelizar el uso de los Frameworks para la programación de sitios web en PHP, también muy bien realizada y con un debate final acalorado entre los promotores y detractores de uno u otro framework. Después de una pausa pude asistir parcialmente a la conferencia de Zoë Slattery sobre PHP Search engine libraries, que no me acabó de gustar ya que yo esperaba encontrar una comparativa entre diferentes librerías pero nos encontramos con un análisis exhaustivo sobre el rendimiento de Zend Lucene que es la implementación del motor Lucene para Java del Zend Framework. Finalmente pude asistir un momento a la conferencia de EyeOS pero como fue poco rato no puedo opinar mucho. Pausa para comer y después la tarde seguiría con otras conferencias.
widgadget.com gana el primer premio en el reciente bDigital Global Congres, celebrado en Barcelona, en la categoría de "Petites empreses i emprenedors" Hace unos meses que me incorporé a Iris Experience con la meta de relizar un proyecto nuevo bastante interesante, nuestro trabajo ha dado como resultado el portal widgadget.com del que estoy muy orgulloso, todavía estamos en fase de beta privada por lo que es posible solicitar el registro pero no usar todas las funcionalidades. Este portal ofrece las herramientas para crear widgets de forma sencilla y de publicar un canal de noticias en diversos formatos para incorporarlo a un directorio categorizado. Ademas permite realizar un seguimiento detallado, en tiempo real, de como se distribuyen estos widgets sobre las diferentes opciones de sindicación existentes. Cito la descripción del proyecto: "Aquesta solució permet transformar els continguts d'un portal en widgets, "mini webs", que l'usuari pot visualitzar a l'escriptori del seu ordinador, terminal mòbil, bloc o xarxa social favorita. La solució vol convertir-se en un referent europeu al sector dels widgets i ajudar les agències, empreses o bloggers a distribuir de forma eficient els seus continguts i monetitzar-los." De momento no puedo contar nada mas, pero esperamos que pronto todo el mundo pueda usar la plataforma.
Hace algunas semanas que he empezado a fondo a usar CakePHP y debo decir que estoy encantado. Al empezar a usar la versión 1.1 la impresión fue muy buena, pero desde que han publicado la versión 1.2 el trabajo con Cake es mucho mas eficiente si cabe y aunque no es una versión estable 100% es perfectamente factible para utilizar en ciertos programas donde la fiabilidad 100% no sea imprescindible. A la aplicación que estoy desarrollando en estos momentos le estoy dando una arquitectura orientada a servicios de modo que es capaz de administrar una serie de datos con algunas relaciones 1:n, o como se expresa en Cake HABTM, definidas en los modelos y para la obtención de los datos y realización de consultas expone una serie de webservices, consultables mediante REST, que según los parámetros proporcionados a la url devuelven los datos. Aquí es donde entra el problema mas importante que he encontrado, los resultados de estos servicios son devueltos en formato RSS. Si bien, la documentación de Cake 1.2 está todavía en borrador, hay alguna información en diversos blogs que indican como sacar paratido del RSS Helper que proporciona Cake 1.2 por defecto, por ejemplo Feed them para Cake 1.1, y esta introducción al uso de webservices con cake 1.2 Pero vuelvo al problema que he encontrado, al generar un feed Rss o una respuesta XML genérica, usando el Xml/RssHelper de Cake, hay que establecer debug a 0 en la configuración, esto es MUY IMPORTANTE, ya que sino Cake realiza un output extra de debug en HTML y no habrá forma de parsearlo correctamente con SimplePie por ejemplo (otro día hablaré de el). Esto lo podéis hacer, o bien en el fichero de config o bien al principio del método encargado de realizar el output del feed. Ejemplo: function feed() { Configure::write('debug', 0);
Updates
-
@fxn @ibelmonte sisi como digo son gustos, funcionar funciona pero no me mola como mierdea con el cd @fesplugas
-
@fesplugas m'ha tocat un server pero de rasqui
-
CentOS is weird http://t.co/xSj1f0KT
-
@fesplugas però no tens paquets de ruby 1.9.3 per la distro cc/ @fxn
-
@holamon @francescmasana fan servir comic sants… (no ho he pout evitar:)
-
@ala_747 claro que si! gracias
-
@ibelmonte nada mal tío! gracias
-
@aitorciki Dios te HOYGA! merci :)
-
@pedro_esteban sip :) gracias
-
@zigotica merci tiu! :)
-
Gracias majos @happywebcoder @martuishere
-
La edad de cristo nenes
Profile
Experience
- Feb 2009 - PresentCTO / Season
- Feb 2008 - PresentSenior Developer / Iris Experience
- Jun 2001 - PresentSenior Developer / International Venture Consultants
Education
-
2003 - 2011Universitat Oberta de CatalunyaBS in Computer Science
-
1997 - 1999Salesians de SarriàFPII in Informática
Posts
- victorcoder committed 1aec756
- victorcoder committed c90bd93
- victorcoder committed b99a64f
- victorcoder committed 8e0514c
- victorcoder committed 38e7c98
- victorcoder committed f3e4543
- victorcoder committed 698472d
- victorcoder committed e983610
- victorcoder committed 6c56f7e
- victorcoder committed 6c56f7e
- victorcoder committed e9020b6
- victorcoder committed 09aa946
- View comparison for these 2 commits »
- victorcoder committed e9020b6
- victorcoder committed 09aa946
- victorcoder committed d0cc23a
- victorcoder committed 2ec2ba1
- victorcoder committed be8e264
Recent tracks
-
La Rave de Dios by {u'mbid': u'3e826fec-6d97-4602-a05b-643edd159ad5', u'#text': u'Pony Bravo'}9 months ago
-
Blue Skies - Fred Falke Radio Edit by {u'mbid': u'f4857fb9-e255-4dc6-bd01-e4ca7cc68544', u'#text': u'Jamiroquai'}10 months ago
-
White Knuckle Ride - Alan Braxe Remix Radio Edit by {u'mbid': u'f4857fb9-e255-4dc6-bd01-e4ca7cc68544', u'#text': u'Jamiroquai'}10 months ago
-
Rock Dust Light Star - Live at Paleo by {u'mbid': u'f4857fb9-e255-4dc6-bd01-e4ca7cc68544', u'#text': u'Jamiroquai'}10 months ago
-
Hang It Over by {u'mbid': u'f4857fb9-e255-4dc6-bd01-e4ca7cc68544', u'#text': u'Jamiroquai'}10 months ago
-
Angeline by {u'mbid': u'f4857fb9-e255-4dc6-bd01-e4ca7cc68544', u'#text': u'Jamiroquai'}10 months ago
-
All Good In The Hood - Acoustic Version by {u'mbid': u'f4857fb9-e255-4dc6-bd01-e4ca7cc68544', u'#text': u'Jamiroquai'}10 months ago
-
Hey Floyd by {u'mbid': u'f4857fb9-e255-4dc6-bd01-e4ca7cc68544', u'#text': u'Jamiroquai'}10 months ago
-
Never Gonna Be Another by {u'mbid': u'f4857fb9-e255-4dc6-bd01-e4ca7cc68544', u'#text': u'Jamiroquai'}10 months ago
-
Goodbye To My Dancer by {u'mbid': u'f4857fb9-e255-4dc6-bd01-e4ca7cc68544', u'#text': u'Jamiroquai'}10 months ago
Top artists
Top tracks
-
15 plays
-
14 plays
-
14 plays
-
13 plays
-
13 plays
-
12 plays
-
12 plays
-
12 plays
-
12 plays
-
12 plays
-
12 plays
-
12 plays
-
12 plays
-
11 plays
-
11 plays
-
11 plays
-
11 plays
-
11 plays
-
11 plays
-
11 plays
-
10 plays
-
10 plays
-
10 plays
-
10 plays
-
10 plays
-
10 plays
-
10 plays
-
10 plays
-
9 plays
-
9 plays
-
9 plays
-
9 plays
-
9 plays
-
9 plays
-
9 plays
-
9 plays
-
9 plays
-
8 plays
-
8 plays
-
Do Something by CIV8 plays
-
8 plays
-
8 plays
-
8 plays
-
8 plays
-
7 plays
-
7 plays
-
7 plays
-
7 plays
-
7 plays
-
7 plays