Thinking on hiring me?

Please read

Fernando Guillén

a Freelance Web Developer

cabecera decorativa

software development as an artistic expression

Archive for Abril, 2008

Lunes, Abril 14th, 2008

¿Qué es una API?… pues cualquier cosa¡

O por lo menos eso es lo que piensa la gente de Open Movil Forum al ‘abrirnos’ su flamante Api de acceso a su servicio Localizame.

Yo no sé si todo esto es una beta o una especie de mal chiste.

Resulta que para usar su supuesta y liberada API tengo que hacer las mismas peticiones que haría si accediera mediante un navegador. En realidad, ¿no será una API para un navegador?, en realidad, ¿no será que no han hecho ninguna API?.

Se me está pidiendo que haga petciones GET/POST y filtre el HTML resultante como si fuera un motor html. Aunque bueno, ni siquiera se dice como se debe interpretar las respuestas… Incluso tengo que simular la cookie que se me envía.

Graciosísimos los ejemplos dónde incluso aperecen como parámetros las coordenadas x e y dónde el botón “submit” fué pulsado:

submit.x=36&submit.y=6

Bueno bueno.. igual me estoy acelerando voy esperar a ver si por lo menos funciona el SMS que tengo que enviar para tener una clave, no hago más que recibir SMSs con un churro de números y un lapidario “Comando no valido”. A ver que comando válido me ponen en mi factura.

Actualizado 15 de Abril: ¿Se puede tener pesadillas con un API? Pues sí hoy las he tenido. Soñaba que mi petición tardaba eternamente en ser contestada y que cuando por fín me llegaba lo hacía cada vez de un modo diferente de tal modo que no había un patrón concreto para descifrarla de manera mecánica.

Aunque también he vislumbrado una posibilidad de que esta API me sirva para lo que quiero. Al parecer la API contesta con la posición del móvil de esta manera:

“ANA está en MADRID en los Barrios de LA PAZ y ALMENARA cerca de CL DE SINESIO DELGADO, PO DE LA CASTELLANA, CP 28029. Precisión +/- 528 mts”

“ANA está cerca de las carreteras M-103 Km 9, M-106 Km 2, M-111 Km 18 en ALGETE, MADRID, CP28110, Precisión +/- 780 mts”

“ANA está cerca de las carreteras A-301 Km 7, en SANTA ELENA, JAEN, CP.23220, Precisión +/- 12.1 Kms”

Es decir: exactamente como en mi pesadilla.

Pero he visto que en la web aparece un mapita con la posición actual, si este mapa es un mashup configurado por javascript puede que se esté usando las coordenadas geográficas en modo latitud y longitud, por lo menos así era en mi sueño y de ahí podía extraerlas con un script/parser :)

Todavía no puedo confirmarlo pues al solicitar mi clave me sigue saliendo el rollo “Comando no valido” :/

Jueves, Abril 10th, 2008

Es mi deber tomarlas.

Si estas sustancias mejoran mi servicio a las humanidad, es mi deber tomarlas.

Científico anónimo en relación a los fármacos de mejora del rendimiento intelectual y la concentración.

Vía Público vía Nature.

Martes, Abril 8th, 2008

Poner una aplicación Rails en producción.

Esto no es un tutorial, es una nota mental.

Entorno
  • Ubuntu 7.10
  • MySql 5.0
Instalar capistrano

Tanto en cliente como en servidor.

$ gem install capistrano
Configurar aplicación rails para Capistrano

En cliente.

$ cd #{RAILS_ROOT}
$ capify .

Editar fichero /config/deploy.rb:

require 'mongrel_cluster/recipes'

set :user, "username"
set :runner, "username"

set :application, "miaplicacion"
set :repository,  "http://www.mirepositorio.com/svn/trunk/"
set :scm_username, "username"
set :scm_password, "userpass"

set :deploy_to, "/var/www/railsapps/#{application}"  # path en el servidor
set :mongrel_conf, "#{current_path}/config/mongrel_cluster.yml"  # no tocar

role :app, "miservidor.com"       # si quieres indicar puerto miservidor.com:puerto
role :web, "miservidor.com"       # si quieres indicar puerto miservidor.com:puerto
role :db,  "miservidor.com", :primary => true # si quieres indicar puerto miservidor.com:puerto

Tuve problemas con el username y el userpass y al final les puse el mismo username y pass al usuario del sistema como al usuario del svn.

Editar /config/mongrel_cluster.yml:

---
cwd: /var/www/railsapps/miaplicacion"  # path en el servidor
log_file: log/mongrel.log
port: "5000"
environment: production
address: 127.0.0.1
pid_file: tmp/pids/mongrel.pid
servers: 2      # puertos 5000 y 5001
Preparar servidor

En servidor.

Preparamos el directorio:

$ sudo mkdir -p /var/www/railsapps
$ sudo chown username /var/www/railsapps

Fichero configuración de VirtualHost /etc/apache/sites-available/miaplicacion.miservidor.com:

#we need this as on Ubuntu by default Proxy is not allowed
<Proxy *>
  Order allow,deny
  Allow from all
</Proxy>

#Proxy balancer section (create one for each ruby app cluster)
<Proxy balancer://miaplicacion.miservidor.com_cluster>
  BalancerMember http://127.0.0.1:5000
  BalancerMember http://127.0.0.1:5001
</Proxy>

#Virtual host section (create one for each ruby app you need to publish)
<VirtualHost *:80>
  ServerName miaplicacion.miservidor.com
  DocumentRoot /var/www/railsapps/miaplicacion/current/public/

  <Directory /var/www/railsapps/miaplicacion/current/public/ >
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
  </Directory>

  ErrorLog /var/log/apache2/error_miaplicacion.miservidor.com_log
  CustomLog /var/log/apache2/access_miaplicacion.miservidor.com_log combined

  #Rewrite stuff
  RewriteEngine On

  # Check for maintenance file and redirect all requests
  RewriteCond %{DOCUMENT_ROOT}/system/maintenance.html -f
  RewriteCond %{SCRIPT_FILENAME} !maintenance.html
  RewriteRule ^.*$ /system/maintenance.html [L]

  # Rewrite index to check for static
  RewriteRule ^/$ /index.html [QSA]

  # Rewrite to check for Rails cached page
  RewriteRule ^([^.]+)$ $1.html [QSA]

  # Redirect all non-static requests to cluster
  RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
  RewriteRule ^/(.*)$ balancer://miaplicacion.miservidor.com_cluster%{REQUEST_URI} [P,QSA,L]
</VirtualHost>

Activamos el VirtualHost:

$ sudo a2ensite miaplicacion.miservidor.com

Recargamos Apache:

$ sudo /etc/init.d/apache reload
Subir primera versión a servidor

En cliente.

$ cap deploy:setup
Preparar BD en servidor

En servidor.

Esto seguro que se puede hacer desde Capistrano:

$ mysql> create database midatabase;
$ mysql> grant all privileges on midatabase.* to username@localhost identified by 'userpass';
$ rake db:migrate
Próximos despliegues

En cliente.

$ cap deploy

Y si hay migraciones entonces hay que ejecutarlas en el servidor (aunque seguro que se puede hacer con el Capistrano).

Martes, Abril 8th, 2008

Procedimiento almacenado con cursor en MySQL

Aquí dejo el código de un procedimiento almacenado de MySQL que usa un cursor.

Esto no es un tutorial es una nota mental.

DROP procedure IF EXISTS test_cursor
/
 
CREATE procedure test_cursor()
 
begin
 
--
-- variables
--
declare hasMoreRows bool DEFAULT true;
declare _field1 varchar(20);
declare _field2 varchar(20);
 
--
-- the cursor
--
declare cur cursor FOR
 
  SELECT
      cl.LIBRARY_NAME,
      cl.LIBRARY_DESCRIPTION
  FROM
      CAT_LIBRARIES AS cl
  ;
 
declare continue handler FOR SQLSTATE '02000'
    SET hasMoreRows = false;
 
--
-- create table test
--
DROP TABLE IF EXISTS test_cursor;
 
CREATE TABLE `test_cursor` (
  `field1`  varchar(20) NULL,
  `field2`  varchar(20) NULL
);
 
--
-- open the cursor
--
open cur;
 
fetch cur INTO
  _field1,
  _field2;
 
while hasMoreRows do
 
--
-- ####### WALK:INI ########
--
 
  INSERT INTO
      test_cursor
  SET
    field1 = _field1,
    field2 = _field2
  ;
 
--
-- ####### WALK:END ########
--
 
  fetch cur INTO
    _field1,
    _field2;
 
end while;
 
close cur;
 
end;
/

Aquí está el fichero con el código fuente.

Martes, Abril 8th, 2008

¿Lees la Biblia?

- ¿Lees la biblia Pit?

- Sí, creo que sí, en cualquier caso he oído hablar de ella.

Barton Fink (1991) Hermanos Cohen.

Martes, Abril 8th, 2008

!Felicidades¡

Space Invaders cumple 30 años.

¿Te apetece una partidita?

Space Invaders

Vía BarraPunto. 

Domingo, Abril 6th, 2008

Euruko 2009 en Madrid?

Se está discutiendo a dónde llevar el próximo Euruko 2009. Podéis participar en el grupo del omnipresente FaceBook: EURUKOBACKWEB, para ayudar a decidirse.

Aunque los organizadores de la actual edición ya declararon sus preferencias:

madrid euruko 2009

:)

Actualización 08 de Abril: Parece ser que la gente implicada en llevar la convocatoria española se está decantando por Barcelona, para repartir las conferencias: Conferencia Rails en Madrid, Euruko en Barcelona.

Viernes, Abril 4th, 2008

La historia de amor y sexo más romántica mide 2 milímetros

gusanito

El Diplozoon Paradoxum es un pequeño gusano que habita en las branquias de los peces.

Cuando son aún adolescentes se juntan a otro miembro de su especie y se fusionan convirtiéndose literalmente en un sólo cuerpo, permaneciendo en perpetua cópula durante el resto de sus vidas.

Jueves, Abril 3rd, 2008

Negocio

Negocio = negación del ocio.

Vía Wikipedia y DeChile.net.

Miércoles, Abril 2nd, 2008

Campaña, Fin 6!, Haz de internet un lugar más feliz

“Sí, Internet Explorer 6 era genial… ¡en el 2001!”

Campaña organizada por un grupo de maquetadores web atormentados deseosos de hacer de la web un sitio más feliz para navegar y para crear.

Las incompatibilidades a nivel CSS y HTML del navegador IE 6 con todos los navegadores actuales es un infierno tanto para los usuarios como para los creadores web.

Proponen difundir la actualización del navegador IE 6 a cualquier otro de una buena lista. Para ello proporcionan un pequeño javascript que puedes poner en tu web que detectará el navegador del visitante y le recomendará se actualice el navegador si detecta la tan irritable versión 6 del IE.

Me sumo a la campaña, así que te pido disculpas si tu navegador es IE 6 por el intrusista popup, de todos modos se lo han currado bien para que no te vuelva a aparecer en 10 días.

Campaña Fin 6!.

a Freelance Web Developer is proudly powered by WordPress
Entries (RSS) and Comments (RSS).

Creative Commons License
Fernando Guillen's blog by Fernando Guillen is licensed under a Creative Commons Attribution-NoDerivs 3.0 Unported License.