Todas las entradas de gwannon

Trucos para mostrar el firmamento con Google Maps v3

A tenor de haber estado currando estos días en cbeams.org he aprendido una serie de cosillas sobre Google Maps v3 y la opción de ver el firmamento. Para empezar diré que Google Maps v3 no da soporte directo para mostrar el firmamento, la Luna o Marte. No podemos decirle a la API que nos de una capa en concreto en plan MapTypeId.ROADMAP o MapTypeId.HYBRID. Hay que hacer un truco para cargar los mapas del espacio como una nueva capa. Mi solución tras romperme mucho la cabeza y darle bastantes vueltas ha sido la que podéis encontrar funcionando en skymaps.js a partir de un ejemplo que encontré aquí.

Otro truco es convertir la declinación y la ascensión derecha en formato decimal de manera que Google Maps pueda entenderlas. Al principio hacia la misma formula que usaba la latitud y longitud (grados + minutos / 60 + segundos / 3600) que si funcionaba con la declinación, pero en la ascensión derecha no tiraba correctamente. Para ello tuve que recurrir a estas dos formulas.

function convertRaToDecimal ($ra) { //Ascension derecha en formato hh:mm:ss
list($hours, $minutes, $seconds) = explode(":", $ra);
$hour = ($hours + ($minutes/60) + ($seconds /3600));
$d = ($hour/24)*360 + 180;
if ($d >180) $d=$d -360;
return $d*-1;
}


function convertDecToDecimal ($dec) { //Ascension derecha en formato gg:mm:ss
list($degrees, $minutes, $seconds) = explode(":", $dec);
if ($degrees < 0) {
$minutes = $minutes*-1;
$seconds = $seconds*-1;
}
return ($degrees + ($minutes/60) + ($seconds /3600));
}

Aún así tengo que seguir investigando ya que tengo problemas al mostrar la Estrella Polar, ya que me saca fuera del mapa, cuando en principio las coordenadas son correctas. También tengo que mirar de quitar el control de Google Street View que da problemas., ya que saca imágenes de la tierra.

Mi primer proyecto en Silex, cbeams.org

Hace unos 10 días fui a un evento aquí en Bilbao denominado BilboStack. En una de sus charlas, Javier Eguiluz hizo una presentación de Silex, un potente microframework para PHP, que me convenció de probarla. Tenía en la cabeza algunas ideas de cosas que me gustaría desarrollar y decidí montar un mashup de astronomía, sacando la información y las imágenes de diferentes fuentes y APIs. Esa misma tarde tenía montado ya el proyecto medianamente funcional y solo necesitaba darle un poco de diseño y mejorar la recogida de datos. Así que ayer y metiendo unas pocas horas más entre semana termine la primera fase del proyecto que he denominado cbeams.org (si te gusta Blade Runner sabreís porque se llama así). Uno de estos días me tengo que liar la manta la cabeza y subir todo el proyecto a Github para que le podaís echar un vistazo.

Sobre Silex dire que me ha convencido bastante. Te da la capacidad de programar con calidad y rápidamente proyectos pequeños y medianos con un código limpio y una estructura rapida, sobre todo si sigues la que te recomienda el propio creador de Silex.

Montando un servidor DNS en el VPS

Ya he terminado de migrar mis webs de los alojamientos que tenían antes al nuevo VPS y la verdad es que el tema de Apache2, PHP y MySQL no es complicado en absoluto y además hay muchisima información, pero para montar un servidor DNS con Bind he perdido muchas horas y por auténticas chorradas.

Me empeñe en creer que al hacer telnet 82.194.77.67 53 me daba “connection refused” por cosa de iptables. Así que como un tonto me puse a configurarlo. Al de muchas horas me di cuenta de que iptables no estaba filtrando nada en el VPS, ya que le puerto 80 estaba abierto para páginas webs y no aparecía en ningún sitio de la configuración de iptables. Al final lo único que tenía que hacer es decirle al named que aceptará peticiones por el puerto 53 no solo desde localhost, sino desde cualquier conexión. La solución era tan sencilla como como cambiar en named.conf:

listen-on port 53 { localhosts; };

por:

listen-on port 53 { any; };

Mi otro gran fallo es pensar que los temas de DNS eran más rápidos de lo que yo pensaba. Hacia cambios y trataba de ver los resultados al segundo y eso no siempre funciona en tema de DNS.

Mi servidor de MineCraft

Hace unos días me regale a mi mismo un servidor VPS para trastear con él. La verdad es que es una oferta muy buena de 9€+IVA al mes en Blackslot. Y lo primero que he montado para probarlo es montar un servidor de MineCraft. Aquí teneís los datos por si quereís probarlo.

IP: 82.194.77.67
Nombre: Gwannon Server

En cuanto tenga montado el servidor apache2 y todos sus complementos y el servidor de DNS (que me esta costando la vida configurarlo) moveré todas mis webs a este nuevo servidor.

Seguimos probando cosillas de LungoJS y aprendiendo HTML5

La verdad es que las funcionalidades que estoy descubriendo en HTML5, como el webSQL, me parecen muy buenas y con muchos potencial, sobre todo con moviles. He estado probando a montar un catálogo online de productos a partir de LungoJS y la verdad es que me impresiona la rapido que va y lo bien que tira todo. Desde luego no es una perdida de tiempo el estar aprendiendo HTML5, aunque el standard no este terminado y difundido.

Lo que principalmente he aprendido estos días a base de darme ostias, es que hay dos formas de crear una tabla en webSQL con la opción “drop” a true o false, por lo menos con LungoJS.

lng.Data.Sql.init({
  name: 'catalogo',
  version: '1.0',
  schema: [
   {
    name: 'categories',
    drop: true,
    fields: {
      id: 'INTEGER PRIMARY KEY',
      name: 'TEXT',
      description: 'TEXT'
    }
   },
   {
    name: 'products',
    drop: true,
    fields: {
      id: 'INTEGER PRIMARY KEY',
      name: 'TEXT',
      description: 'TEXT',
      cat_id: 'INTEGER',
      price: 'DOUBLE'
    }
   }
  ]
 });

 

Si la dejas en true cada vez que carges la página volverá a crearla, si la dejas en false la almacena y para cambair el contenido deberás hacerlo como si fuese una tabla normal con ALTER y esas cosas. LO que me paso es que por más que subia cambios a la tabla, esta no cambiaba de formato ni de contenido. fue poner el drop a true y todos los cambios me meti los aceptaba sin problemas.

Por cierto aquí os dejo una mega-chuleta de HTML5.

El entretenimiento de esta semana

Esta semana he vuelto a jugar con los mapas de Google y me ha salido este script. Es una mezcla de PHP, Javascript y Ajax. El script busca rutas a pie o en coche entre dos puntos.Funciones.

  • Puedes introducir el punto de salida o de llega a mano en el formulario o pinchando sobre el mapa (botón izquierdo para el origen y botón derecho para el destino).
  • Permite elegir entre rutas “a pie” o “en coche”. Si estuvieramos en USA también podría meter el de “en bicicleta”.
  • Pinchando en “Conseguir localización actual”, busca la localización actual del usuario (en caso de que uses un movil) y la coloca como punto de salida.

Espero que os guste y os sirva de algo. Podeís bajaros el código de aquí.