10 de diciembre de 2008

A la fuerza ahorcan...


Forges, siempre Forges...

Como siempre, genial...

Saludos de miércoles con sabor a lluvia, frío y necesidades encontradas...

FoN

3 de diciembre de 2008

Todo pasa... más o menos lento, pero pasa...

Todo pasa y, como no, el invierno también. Y con él, las navidades, esa época en la que a algunos parece como que se nos para el tiempo y deseamos que nunca pase pues es la época el año en la que los problemas que pudieramos tener pasan a la "nevera" de nuestra mente y nos centramos en los nuestros, que, aunque como norma te hagan sufrir, por algún halo del destino olvidamos rencillas nos dejamos llevar por nuestros sentimientos de afecto y cariño a los nuestros en forma de regalos y parabienes.

Todo pasa. Y todo esto, dicho así, parece de fábula, muy enrevesado y, a la vez, muy alegórico, pero absolutamente real: las navidades son el opio de algunos que nos lleva a otro mundo, aunque el mismo, más feliz, menos intrincado, más cariñoso, menos rencoroso...

Todo pasa y es verdad, pues probablemente después de la cabalgata de reyes, algo morirá en aquellos que, aún no gustándonos el período consumista que representan las fechas (no nos engañemos, ni crisis ni pollas en vinagre, gastamos y punto...), nos sumergimos en él por el simple hecho de ver la sonrisa de los nuestros en la boca, ese atisbo de satisfacción en sus ojos, de agradecimiento en sus palabras y de "sincero" cariño en su abrazo...

Pero, como no, todo pasa, y el día 7 volveremos a ser ya los mismos pringaos que no paramos de echarnos pullas los unos a los otros, dejandonos llevar, algunos por la envidia (con mayor o menor salud en ella, pero envidia al fin y al cabo), otros por el desalentador reflejo de lo que su vida representa en el mundo: una cagadita más... Volveremos al mismo juego donde nuestros sueños se rompen a diario y nos inventamos otros nuevos sobre la marcha, quizá los mismos, pero renovados, desde otra perspectiva... Producto sin duda de este deshumanizado mundo en el que nos movemos y que nos arrastra a guerras estúpidas, intereses desmesurados por parte de unos pocos que nos mangonean, y, sobre todo, a los "golpes" que cada uno nos llevamos en la cara con nuestros quehaceres diarios. Una lucha, sin duda, contra nuestro propio ser y nuestros valores más arraigados y a los que, en más de una ocasión al día, querríamos desarraigarnos por el simple placer de experimentar qué se siente, y que, tan pronto lo sentimos, los deshechamos por avergonzarnos de pensarlo siquiera, pues hasta aquí hemos llegado en ellos y menos da una piedra...

Y por fin, todo pasa, como este ridículo post que se me ha ido ocurriendo sobre la marcha, según escribía, pero que, desde lo más hondo de mi ser, deseaba escribir, pues escribir me evade, como me pasa con la música, el cine o la literatura, de "mi" mundo por un rato, por breve que sea.

Al final todo pasa... Pero nosotros aún permaneceremos en el mismo sitio viendo todo pasar.

Saludos de principios de diciembre con olor a navidades, regalos, familias y, sobre todo, comilonas y consumismo a raudales...

FoN

6 de noviembre de 2008

De Bolonia, Obama y otros menesteres atrasados...

En fin, ha sido un mesecito movidito para mi. Mucho de todo, pero de nada en concreto. Parece que cada vez tengo más cargas, y cada vez llego peor a fin de mes, pero así es la crisis, y hay que aguantarse y apretarse un poquito el cinturón.

Primero de todo, parece que por fin conseguiré cursar el ansiado Máster Oficial, lo que no se es si será por la UOC o por otro estamento, ya que lo que quiero es que el títulito del Máster me equipare a Ingeniero Europeo, según la normativa de Bolonia (el famoso acuerdo) para poder doctorarme y, posteriormente, buscarme plaza como profesor de universidad. Mientras tanto, sigo a lo mío, terminando las 3 asignaturas que me quedan, que me están costando darles constancia, ya que he vuelto a trabajar también como desarrollador web para el Vicerrectorado de Relaciones Internacionales de la Universidad de Las Palmas, y las mañanas las copa esta labor (y algunas tardes, aunque las horas extras me las pagan aparte).

Lo de llegar peor a fin de mes tiene una explicación: las putas navidades... Sí, como suena. Tal cual. Me encanta hacer regalos, por lo que me vuelvo loco a gastar para mis seres queridos y no reparo en gastos y, claro, eso se paga al final, pero la satisfacción que se siente cuando ves las caras de agradecimiento de los tuyos bien merece el precio que se paga.

En otro orden de cosas, y como no podía ser menos, me he hecho eco de la aplastante victoria de Obama sobre McCain en la elecciones presidenciales de los EE.UU. No les haría ni caso a estos tipos del otro lado del charco si no fuera porque dominan el mundo en que vivimos, determinan los estereotipos a seguir y nos incitan a consumir lo que ellos consumen. Además, está la manida crisis financiera, que a ver qué pasa. Así que enhorabuena al partido demócrata, por la parte que a Obama corresponde, por su brillante campaña presidencial, pero, aún así, debo temer que no es todo oro lo que reluce, y me da que el grano en el culo esta vez se llama Joe Biden (famoso por ser un denotado miembro persecutor de las redes P2P), el vicepresidente que acompañará a Obama en la histórica elección del primer presidente afroamericano de la historia de los EE.UU. Señalar también, el emotivo discurso de la victoria... La verdad es que Obama ha sabido llegar a lo más hondo de los corazones de todo el mundo, con ese templado tono de voz y esa mirada de no haber roto un plato en su vida. Buena suerte y nos vaya bonito! Digo "nos", porque las decisiones que tome nos van a salpicar de una u otra forma, como por todos es sabido ya a estas alturas de la vida.

Y ya para finiquitar, la nota "geek": AJAX es cada vez más sorprendente, pero buffff! Para dominarlo es obligatorio controlar muy mucho JavaScript, que es un mundo, y sigo en esa tesitura.

En fin, no hay mucho más. Aunque ya se que ha pasado un mes y que hay muchas cosas en el mundo que merecen ser comentadas, yo debo decir que, aunque ya se que debiere postear más a menudo, a menudo no tengo nada reseñable para postear en este blog, pues aunque sea una bitácora personal, y hable mucho de mis paranoias mentales, prefiero ir dejando de lado este apartado de mi, para centrarme en mi otro yo, el profesional, y postear lo interesante del mundo, mi mundo, en el blog.

Esperemos ser más constante que de costumbre.

Saludos de jueves con sabor a raquetas de squash, días de lluvia y WOMAD en Las Palmas.

FoN

3 de octubre de 2008

Primeras experiencias con AJAX...

La verdad es que llevo bastante poco mirando cosas acerca de AJAX, empapándome de JavaScript (lenguaje harto complicado por su alto nivel de sofisticación y encapsulamiento) para intentar llegar a dominarlo en cierto modo, y que no se me haga tan pesado mirar código ajeno que, a veces, para una cosa muy simple, cierto coders se empeñan en complicar, quizás para probarse a sí mismo de lo que son capaces de hacer, pero lo cierto que es este lenguaje se puede complicar tanto como nos podemos imaginar: funciones embebidas en funciones, asignar valores declarando funciones implícitamente que llaman a otras funciones... Llega un momento en que, o lo tienes muy claro y el código es tuyo, o realmente te pierdes en una maraña de variables funciones y valores que, al final, no sabes de dónde viene ni a dónde va.

La verdad es que con JavaScript puedes hacer casi cualquier cosa, pues tiene la potencialidad de Java, pues es un lenguaje interpretado, pero a su vez no se le parece en nada pues, por ejemplo, sólo tiene 2 tipos de datos: primitivos y referenciados.

Los tipos de datos primitivos son los que todos los programadores conocemos, pero existe una diferencia: todos se instancia con la palabra reservada var, y es el intérprete quien decide qué tipos de dato es, por lo que te olvidas un poco de la compatibilidad entre variables, pues es transparente al programador.

Y los tipos de datos referenciados son aquellos, como habréis ya supuesto los que sabéis de estas cosas (para los que no va la explicación, evidentemente), que hacer referencia a objetos creados por el propio programador y toman su valor en función de los métodos que tenga implementados y de las llamada a los mismos (referencia).

En fin, que la finalidad de este post es recomendar la lectura de varios libros/cuadernos, que a mi me han resuelto muchas dudas y me han ayudado a comprender mejor cómo usar cada cosa y cuándo hacerlo. Ahí va la listas:

  • PC-Cuadernos:

    • Iniciación a JavaScript

    • JavaScript, nivel 2

    • PHP 5

    • AJAX, un juego de niños: crea tus propias aplicaciones web

    • Introducción a XML


  • Editorial ANAYA:

    • Profesional AJAX (Nicholar C. Zackas, Jeremy McPeak, Joe Fawcett)

Espero que os sirvan, como han servido conmigo.

Saludos de viernes con sabor amargo a webs sin terminar y mil llamadas que responder.

FoN

Homer también se decanta por Barack Obama

Ahí queda eso para la historia de las carreras presidenciales en los Estados Unidos.

[youtube=http://www.youtube.com/watch?v=oFOTC30RhHY&hl=es&fs=1]

FoN

1 de septiembre de 2008

En estos días...

Días inciertos, tensos, con olor a nervios, a sudor, a lágrimas. También con cierto aire nostálgico: un verano más que se va. Al menos me queda el consuelo de que no lo he disfrutado como antaño, que llegarán días mejores en los que las vacaciones vuelvan y me evadan de nuevo a otro lugar, a otros mundos, a otros sueños. El que no se consuela es porque no quiere y, aunque suene a derrota, nada de eso, pues se ha aprovechado el tiempo en establecer otros objetivos.

Además, la lanzadera de salida está ahí mismo, a mis pies, simplemente tengo que coger impulso (y algo más de coraje) y lanzarme, para que todo vuelva a tener sentido. Por perder, he perdido mis antiguas ansias de jugar al fútbol y sentir la competición, no hay ilusión ya por ello. Ahora la ilusión se centra en la realización del proyecto fin de carrera de una vez por todas, y elegir bien el lado por el que tirar en el mundo profesional. Para ello, tengo marcado en rojo varios proyectos que debo sopesar muy bien, pero cuando termine este período de nervios, de sudor y de lágrimas que son los exámenes de septiembre. Eso si, el deporte sigue siendo parte importante de mi vida y me ejercito todo lo que puedo. De momento, me he desviado 6 meses del objetivo, lo cual ya no me gusta, pero la vida es así: hay que saber encajar los golpes cuanto antes y defenderte lanzando los tuyos para seguir adelante. Lo importante al final, es no cambiar de objetivo: ir paso a paso. Igual más lento de lo que se presumía en un principio, pero nunca parado. Movimiento: esa es la sensación que me recuerda que estoy vivo y que tengo un objetivo que cumplir antes de que mis cenizas se esparzan por el Valle de Tena, lugar, sin duda, de mis mejores recuerdos.

Tengo a veces la sensación de que el camino tomado es el más arduo, pero al final pienso "así soy yo. Nunca he elegido los caminos fáciles. No reportan tantas alegrías, aunque también reportan muchas más decepciones de las que cabe esperar. Pero sólo así me hago mejor persona, crezco". Nunca he sido persona que se conformara con lo sencillo: nunca me llenó.

Pero bueno, a estas horas, después de muchas horas de estudio, toca desvariar un poco, pues este post es más bien eso: tratar de expresas todo aquellos que me pase por la cabeza, aunque sean frases aparentemente inconexas que se agolpan en el buffer de salida de mi mente, luchando por obtener su ranura de tiempo a bien de ganarse un puesto en el ránking de prioridades. Si, lo se, friki, muy friki para muchos, pero es lo que hay. Vicios de tecnólogo. "Deformación profesional", dirían otros. Prefiero llamarlo vicio, porque, al fin y al cabo, es lo que es. ¿Si no para qué tantos años de esfuerzo y estudio para aprender una jerga que sólo una muy pequeña proporción de la población mundial entiende?. Sólo así se entiende que poca gente dirija, en estos días inciertos, su futuro hacia la tecnología, cuando precisamente en estos tiempos vivimos en la llamada "Sociedad de la Información", a pesar de Internet, de los avances en tecnología móvil, la nanotecnología, la domótica cada vez más presente en nuestras vida, la inteligencia artificial, el correo electrónico, la videoconsolas de última generación, la TV en alta definición, además de la TDT, los discos duros multimedia, los MP3/MP4, iPod, iPhone... y tantas otras cosas que hoy por hoy son cotidianas en nuestras vidas, pero que parece que nadie quiere llegar ni a entender, ni mucho menos a diseñar.

En fin, desvaríos de principio de mes, de principio de época de exámenes, de la cuenta atrás hacia mi 28 cumpleaños. Que los haga caso quien quiera, y el que no, pues que lea otra cosa.

Ea pues...

Saludos de lunes noche con sabor a futuro incierto, a pelea por sobrevivir y de salto con ojos tapados.

FoN

18 de julio de 2008

Sensibilidades y despedidas...

Desde luego, no se puede decir que en los últimos tiempos esté fino, no. Más bien todo lo contrario: cada día que pasa, más y más problemas llegan a mi puerta para que les reciba con los brazos abiertos y predispuesto a solucionarlos... O a intentarlos al menos... O, al menos, eso es lo que esperan.

Pues, como ser humano, mi paciencia y motivación tiene límite, y el mío se sobrepasó hace tiempo. Cada día ando más convencido de que mi futuro es estar sólo, pues cada día que pasa, se me hace más real el hecho de que nadie más me entiende, ni nadie más puede ayudarme. Yo soy la llave de mi felicidad. Un aseveración muy cruda dicha así, de sopetón, pero muy muy cierta al mismo tiempo.

Lo mejor/peor de saberlo y vivir con ello, es que no esperas nada más de nadie que lo que pueden aportarte, lo cual es un alivio para las personas que me rodean, pues mis exigencias, si alguna chica se planteara la macabra idea de querer convivir conmigo durante X tiempo, son bastante altas: soy insoportable, susceptible, cabezota y tengo un punto autista: me gusta estar sólo; no en vano, paso mucho tiempo sólo y disfruto con el hecho de que nadie moleste cualquier cosa sin sustancia que me apetezca hacer en mi soledad.

No me interpreten mal, me encanta la compañía, disfruto las cenas con amigos que organizo en mi casa, me gusta que mi casa sea centro de unión de mis amig@s, que se sientan cómodos y que vengan cuando les venga en gana. Pero estando en pareja, como estoy, noto cada vez más esa sensación de ahogo, de no poder llegar a donde quiero por causas que yo no puedo controlar, que son externas a mi, y todo se me va haciendo cada vez más cuesta arriba por pensar SIEMPRE en lo que a la otra persona le gustará más/menos, le molestará más/menos o lo que le apetecerá hacer más/menos, y si eso irá más/menos en contra o a favor de lo que a mi me apetece y lo dispuesto que estoy a adaptarme a situaciones que para mi son insulsas, carecen de sentido para mi bienestas personal o, simplemente, me aburren soberanamente. Tampoco creo que eso sea la definición de "vivir en pareja", pero es lo que yo he vivido.

Y tampoco se equivoquen, quiero a mi pareja con locura, pero necesito que se "despegue" de mi un poco, que me de mi espacio. Es muy difícil convivir 24 horas y que no haya nada que te moleste pasados los primeros 3 meses de relación (el umbral donde empiezan las parejas, de verdad, a conocer sus escasas virtudes y sus numerosos defectos), pero más difícil se hace estar discutiendo por cualquier cosa que a cualquiera de los 2 nos haya molestado, a cualquier hora del día, y en cualquier situación. No, no es agradable, ni sano, no es así como yo me veo. Y lo peor no es eso, es que, en cualquier caso, los 2 tienen razón. Que si dijiste eso y me dolió, que si fue fuera de lugar, de que siempre me reprochas X, de que te has dejado la taza de WC abierta, que has dejado los zapatos en tal sitio y me tropiezo, que mi orden es este, que no quiero ver ese canal pon otra cosa menos estúpida, etc... Es decir, multitud de situaciones que, en mayor o menor medida, son realmente la convivencia entre personas, que seguro aguantarías a un amigo, pero no a tu pareja.

Extraño si, pero cierto. Al menos, eso me pasa a mi, y cada día que pasa me vuelvo más intransigente, me molestan más cosas, tengo menos paciencia. Si a eso le sumamos los problemas cotidianos individuales, los familiares de cada cual y un problema puntual de trabajo, ya tienes armado El Belén. ¿Cómo conseguimos pues que nuestra relación sea lo más sana posible sin llegar a volvernos locos por conseguirlo y hacerlo de tal manera que no estorbe la progresión personal de cada uno? Porque de una cosa estoy seguro: por muchas cosas que me puedan molestar de mi pareja, luego están los llamados intangibles, que son los que te recuerdan por qué estás enamorado hasta la médula de esa persona y por qué vives con ella y no quieres separarla de tu lado. ¿Contradicción? Si. ¿Locura? Por supuesto que si, es amor, ¿qué esperaban?.

Por lo menos escribiendo me desahogo y me abstraigo del mundo por un rato.

Saludos de viernes con sabor a despedidas de grandes amigos y sensibilidades que hoy se tocarán en mayor medida. Deseenme suerte.

FoN
Tags Technorati: , , , , ,

9 de julio de 2008

Malos tiempos, nuevos tiempos...

En fin, parece que cuanto más cerca está la meta, más me cuesta llegar a ella, o al menos esa es la sensación que se desprende tras mi fatlísitico mes de exámenes, ya que no he podido aprobar ninguna de las 4 asignaturas que me restan para terminar la carrera, por lo que tendré un verano un tanto movidito. Todo lo contrario a lo planeado. Vamos, que me he desviado del objetivo un 100%. Malos tiempos para mi mente, que se ve saturada por un año difícil e injusto y que ya no desea, al menos por el momento, almacenar más información, y me lo transmite en forma de sueño, incapacidad para concentrarse y dificultad para recuperar conceptos ya manidos.

Año difícil, nuevos tiempos, nuevos retos, trabajo y más trabajo: aquí no se para.

Creo que lo más difícil, de todos modos, ya está hecho: encarrilada la carrera, el verano supone machacar conceptos ya tratados y comprendidos, hasta que sean "palabra de teleco...". Sin pararme a pensar, vamos, sólo actuar. También empezando lo profesional, con nuevos e interesantes proyectos a la vista. Encarrilado también el proyecto fin de carrera, que empieza a ver la luz en forma material y no sólo, digamos, académica.

Lo que no está nada encarrilado, y creo que nunca lo estará, es el tema personal. Necesito abstraerme más de lo que me rodea, del entorno, pues tampoco me está ayudando a encontrar ese punto de equilibrio necesario para tener una estabilidad que me permita seguir adelante con paso firme. Mi paso es más bien dubitativo. Y de ese paso tengo también un pequeño esguince en el tobillo izquierdo. Contratiempos.

Así que me he propuesto, a lo largo que resta del mes, centrarme en varios asuntos que tengo pendientes, para finiquitarlos de tal manera, que me permitan entrar en el mes de Agosto con pasillo libre, para alcanzar la recta final y saltar las últimas vallas del recorrido de la manera más limpia posible, sin errores que me priven de la victoria.

Saludos de miércoles con sabor a reencuentro y horas de trabajo.

FoN

7 de junio de 2008

Comunicación por bluetoth entre un terminal móvil y un GPS bluetooth en J2ME...

A continuación, y como muestra de frikismo, os presento el código asociado a la comunicación bluetooth entre un terminal móvil y un GPS.

Funciona, os lo aseguro. Si no me creéis, probadlo. Mola.

/* TITULO DE LA APLICACIÓN: practicaGPS
AUTOR: FoN
DESCRIPCIÓN: Generación de una clase que va a crear una conexión bluetooth con un GPS bluetooth y éste le va a responder
con la posición geográfica en que nos encontramos (latitud, elevación, longitud y orientación)
VERSIÓN: 1.0 */

/* Librerías necesarias */
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.bluetooth.*;
import java.io.*;
import javax.microedition.io.*;

/* Creación de la clase que extiende de MIDlet e implementará las interfacez CommandListener y DiscoveryAgent
Estas interfaces sirven para la comunicación de órdenes al terminal (CommandListener tiene asociado un método abstracto commandAction implementado más abajo) y para el descubrimiento y tratamiento de terminales bluetooth (DiscoveryAgent) */
public class AplicacionGPS extends MIDlet implements CommandListener, DiscoveryListener
{
private Display pantalla;
private Command salir, buscar;
private Form formulario;
private List lista;
private LocalDevice local;
private DiscoveryAgent agente;
private TextBox infoPos;
private StreamConnection conn;
private InputStream in;

/* CONSTRUCTOR: creamos todos los elementos necesarios al iniciar la aplicación */
public AplicacionGPS()
{
/* Inicializamos el objeto Displayable a null */
pantalla = null;

/* Creamos la orden SALIR */
salir = new Command("Salir", Command.EXIT, 0);

/* Ponemos el formulario como pantalla activa */
formulario = new Form("Informacion del dispositivo local");
formulario.addCommand(salir);

/* Se crea un lista de dispositivos */
lista = new List("Lista de dispositivos", Choice.IMPLICIT);
lista.addCommand(salir);
lista.setCommandListener(this);

/* Si no se encuentran dispositivos conocidos, se buscan y se añaden a la lista */
buscar = new Command("Buscar", Command.OK, 1);
formulario.addCommand(buscar);
formulario.setCommandListener(this);

/* Objeto TextBox */
infoPos = new TextBox("Posicion geografica", "Buscando...", 50, TextField.ANY);
infoPos.addCommand(salir);
infoPos.setCommandListener(this);
}

/* Método para pausar la aplicación en curso (se necesita declarar, pues implementamos una interfaz y este método es abstracto) */
public void pauseApp() {}

/* Cuando salimos de la aplicación, cerramos la conexión con el GPS */
public void destroyApp(boolean t)
{
try
{
if (conn!=null) conn.close();
if (in!=null) in.close();
}

catch(IOException ioex) {}
}

/* Método implementado para comenzar la aplicación */
public void startApp()
{
if (pantalla == null)
{
/* Obtenemos las características de la pantalla del terminal */
pantalla = Display.getDisplay(this);

/* Y le ponemos como pantalla activa un objeto de la clase Form */
pantalla.setCurrent(formulario);

try
{
/* Obtenermos las características del terminal local */
local = LocalDevice.getLocalDevice();
agente = local.getDiscoveryAgent();

/* Y la mostramos por la pantalla activa */
getInfo();
}

/* Capturamos la excepción BluetoothStateException */
catch (BluetoothStateException bse) {}
}
}

/* Implementación del método abstracto asociado a la interfaz CommandListener */
public void commandAction(Command c, Displayable d)
{
if (c == salir)
{
destroyApp(true);
notifyDestroyed();
}

/* Vemos si buscamos dispositivos */
else if (c == buscar)
{
/* Borramos los elementos de la lista para iniciar el Inquiry */
lista.deleteAll();

try
{
/* Iniciamos el Inquiry (busqueda de dispositivos bluetooth mediante APIs) */
agente.startInquiry(DiscoveryAgent.GIAC, this);
}

catch(BluetoothStateException bse)
{
formulario.append("Error de dispositivo BT");
}
}

/* O si seleccionamos un elemento de la lista de entre los dispositivos encontrados o ya conocidos */
else if (c == List.SELECT_COMMAND)
{
try
{
/* Obtenemos su dirección bluetooth */
String dir = lista.getString(lista.getSelectedIndex());

/* Y abrimos la conexión bluetooth para la comunicación de datos */
/* El GPS siempre será un esclavo, por lo que únicamente obtendremos datos de él */
conn = (StreamConnection)Connector.open("btspp://"+dir+":1", Connector.READ);
in = conn.openInputStream();

/* Si la apertura fue satisfactoria, pasamos a obtener los parámetros para mostrar */
if ((conn != null)&&(in != null)) escucharGPS();
}

catch (IOException ioex) {}

/* Y ponemos como pantalla activa el TextBox donde veremos los datos a mostrar */
pantalla.setCurrent(infoPos);
}
}

/* Este método obtiene la información de los terminales remotos y se pone él en modo Discoverable, para poder
ser descubierto por otros dispositivos */
void getInfo()
{
formulario.append(local.getBluetoothAddress() + "\n");
int modoI = local.getDiscoverable();
String modoS = "";

switch(modoI)
{
case DiscoveryAgent.GIAC: modoS = "GIAC";
break;
case DiscoveryAgent.LIAC: modoS = "LIAC";
break;
case DiscoveryAgent.NOT_DISCOVERABLE: modoS = "No descubierto";
break;
}

formulario.append(modoS + "\n");
formulario.append(local.getFriendlyName() + "\n");
formulario.append(local.getProperty("bluetooth.master.switch") + "\n");
formulario.append(local.getProperty("bluetooth.api.version"));

try
{
local.setDiscoverable(DiscoveryAgent.GIAC);
}

catch(BluetoothStateException bse){}
}

/* Método que pone al terminal en modo escucha
No es más que la invocación a un Thread que nos va a capturar información del GPS para tratarla */
private void escucharGPS()
{
Thread thr = new Thread()
{
public void run()
{
try
{
StringBuffer informacion = new StringBuffer();
int dato;

while(in.read() != (int)'$');

while((dato = in.read()) != 13) informacion.append((char)dato);

String temp = informacion.toString();
String infoGPS = temp.substring(0, temp.length() - 1);

/* De entre las muchas tramas que puedo recibir, sólo trato 2 en concreto que
me mostrarán el posicionamiento de mi terminal, el resto las descarto */
if ((infoGPS.indexOf("GPRMC") == 0) || (infoGPS.indexOf("GPGGA") == 0) presentarInfo(infoGPS);
else escucharGPS();
}

catch(IOException ioex) {}
}
};

thr.start();
}

/* Método que me va a presentar por pantalla los detalles del posicionamiento que he descrito en el inicio.
Evidentemente, cada trama tiene un formato que debe ser conocido de antemano para poder tratarlas de manera
adecuada y seleccionar la información que cada uno quiera mostrar */
void presentarInfo(String cadena)
{
String latitud, longitud, a, b;
int i = cadena.indexOf(',');
System.out.println ("i = " + i + " " + cadena.substring(0, i));

if (cadena.substring(0, i).compareTo("GPRMC") == 0)
{
i = cadena.indexOf(',');
i = cadena.indexOf(',' , i + 1);
i = cadena.indexOf(',', i + 1);

/* Latitud*/
latitud = cadena.substring(i+1, cadena.indexOf(',', i+1));

/* Elevación */
i = cadena.indexOf(',', i + 1);
a = cadena.substring(i+1, cadena.indexOf(',', i+1));
if (a.compareTo("N") == 0) a = "Norte";
else a = "Sur";

/* Longitud */
i = cadena.indexOf(',', i + 1);
longitud = cadena.substring(i+1, cadena.indexOf(',', i+1));

/* Orientación */
i = cadena.indexOf(',', i + 1);
b = cadena.substring(i+1, cadena.indexOf(',', i+1));
if (b.compareTo("E") == 0) b = "Este";
else b = "Oeste";
}

else
{
i = cadena.indexOf(',');

/* Latitud*/
i = cadena.indexOf(',' , i + 1);
latitud = cadena.substring(i+1, cadena.indexOf(',', i+1));

/* Elevación */
i = cadena.indexOf(',', i + 1);
a = cadena.substring(i+1, cadena.indexOf(',', i+1));
if (a.compareTo("N") == 0) a = "Norte";
else a = "Sur";

/* Longitud */
i = cadena.indexOf(',', i + 1);
longitud = cadena.substring(i+1, cadena.indexOf(',', i+1));

/* Orientación */
i = cadena.indexOf(',', i + 1);
b = cadena.substring(i+1, cadena.indexOf(',', i+1));
if (b.compareTo("E") == 0) b = "Este";
else b = "Oeste";
}

/* Mostramos la información relevante con respecto a las 2 tramas validadas */
infoPos.setString("Latitud: " + latitud + ", " + a + "\n" + "Longitud: " + longitud + ", " + b);
}

/* Conjunto de métodos asociados a la interfaz DiscoveryAgent, que hay que declarar al usar Inquiry para
buscar dispositivos */

/* Estos 2 métodos hay que declararlos (ya que son métodos abstractos de la interfaz DiscoveryAgent), pero en
este caso, no es necesaria su implementación */
public void servicesDiscovered(int transID, ServiceRecord[] rd) {}

public void serviceSearchCompleted(int transID, int tipo) {}

/* Método que me inserta por el frente de una lista las direcciones bluetooth de los dispositivos encontrados
en el Inquiry */
public void deviceDiscovered(RemoteDevice rd, DeviceClass dc)
{
lista.insert(0, rd.getBluetoothAddress(), null);
}

/* Método asociado al Inquiry que me mostrará por la pantalla activa la dirección bluetooth de los dispositivos
encontrados, en caso de existir alguno */
public void inquiryCompleted(int tipo)
{
if (lista.size() == 0)
{
lista.insert(0, "No hay dispositivos al alcance", null);
lista.addCommand(buscar);
}

pantalla.setCurrent(lista);
}
}

Ahí es nada.

FoN

6 de junio de 2008

El principio del fin...

Empieza la hora de verdad: la hora de los exámenes finales.

Y esta vez son finales de verdad, pues son los últimos de la carrera técnica que estoy haciendo (no serán los últimos de mi vida pues debo decidir si hacer la superior o no, pues es una espinita clava en el alma). La fiesta ha empezado hoy: Tecnologías Telemáticas Avanzadas. Y ha ido bien (como no podía ser menos en una asignatura optativa, con un examen optativo que valía el 20% de la nota final), teniedo en cuenta que no he estudiado, pues lo realmente importantes empiezan el lunes con el segundo parcial de Circuitos eléctricos, y terminaré con el examen de convocatoria de Programación el día 4 de Julio (pues la profesora me hace presentarme finalmente). Entre medias, varios más: Cálculo II (12 de Junio), segundo parcial de Programación (16 de Junio) y examen de convocatoria de Circuitos eléctricos (30 de Junio).

5 exámenes, 5. 5 (por el c*** te la hinco) ... Pues eso. Y además el proyecto, que va bien, y en Agosto (crucemos los dedos) estará todo listo para pasar página y enfrentarme a un verano que espero sea todo lo relajante que ha sido este año de estresante. Realmente lo necesito. 1 mes sin móvil, lejos del mundanal ruido y disfrutando de las cosas que me gustan hacer: novia, amigos, entrenar y disfrutar con calma de la vida, sin agobios. Ya llegará septiembre y llegará el momento de hacer el examen de Electrónica básica, que es la que he decidido dejar por problemas de tiempo y, pro supuesto, el lío administrativo para presentar el proyecto al tribunal, papeleo, colegiarme, pagar el título, etc...

Saludos de viernes con sabor a cuenta atrás...

FoN