preload
Nov 19

iepas!

si! esto sigue activo!!! xD

pues nada posteo para dejar constancia (y por si a alguien le puede servir) el último tema que me he tenido que mirar en el curro…

nacía la necesidad de hacer una aplicación con bluetooth para una demo de un cliente, conseguir conectar un pc con un movil a través de bluetooth y hacer una mínima interacción entre una aplicación que corriera en el móvil y otra aplicación que corriera en modo standalone en el pc, se propone java para hacerlo y la comunicación para evitar montar servidores en el pc… chan chan… a través de bluetooth.

decir que no llevo yo el proyecto que solo he colaborado desatascando un poco el tema de la conexión inicial… pero bueno aqui os dejo la librería que hemos usado y un par de links a los ejemplos más interesantes y de los que más provecho hemos podido sacar.

libreria bluecove, desde la sección de descargas de la web… digamos que no funcionan muy bien los enlaces… pero buscando buscando descubrí un google pages de bluecove, mola bastante el googlecode (nota para la posteridad: cuando no sepa que hacer, mirarme como va y que ofrece exactamente googlecode), parece estar bastante currado.

volviendo a la página inicial de bluecove, hay unos ejemplos que encontré bastante interesantes… son los siguientes:

tras conseguir que tanto el cliente como el servidor funcionaran de pc a pc… el siguiente paso fue cambiar el cliente por una aplicación para móvil… en este punto, recordar que el wtk (emulador de wireless toolkit para java), cuando se arranca y se intentan acceder a las funcionalidades de bluetooth no tiene visibilidad al exterior, es decir, que se crea como si de una red local se tratara para el bluetooth, si deseas tener visibilidad al exterior, parece ser (o no he sabido hacerlo de otro modo) que hay que hacerlo desde el movil directamente, por lo cual una gran parte del testeo, almenos para mi, fue bastante dificil.

el paso siguiente, fue intentar solucionar los problemas que teníamos al migrar el cliente al movil, hay clases que no estan disponibles en J2ME de las que usabamos en el cliente en J2SE… por lo tanto vino un poco más de investigación sobre el tema… lo que me llevo a googlear un buen rato buscando cosas de bluetooth en aplicaciones midp… hasta que llegue a recordar que bluecove trabaja con JSR-82 y las búsquedas fueron más fructiferas… llegué a la página del JSR-82 y seguí encontrando más ejemplos, concretamente uno de muy bueno sobre un cliente y servidor de bluetooth con paso de mensajes… ideal!!! ahora ya solo quedaba volver a intentar migrar el cliente de J2SE a J2ME… y al final ayer lo conseguimos!

la nota final al post, es un poco protesta y reinvindicación, no tube absolutamente ningún problema para trabajar con el Wireless Toolkit de Sun en mi ubuntu, pude configurarla perfectamente desde Eclipse y desde NetBeans, pero ahora en cuanto a lo que hace referencia al SDK de nokia me parece fatal que una macro empresa como es nokia no haga versiones de sus SDK para los desarrolladores de aplicaciones que trabajamos en Linux.

Tagged with:
Sep 03

pues nada… habiendo tenido la enésima pelea con el sr. django, no es que haya conseguido algo muy meritorio pero bueno… puede ser que a alguien le pueda interesar y dado < ironia >la gran cantidad de documentación y código de ejemplo que hay por internet de django < /ironia > pues me animo a publicarlo.

primero pongamos un poco en antecedentes de cual era la necesidad que yo tenía, como lo tenía hecho antes y como lo he intentado hacer ahora (porque aún no me funciona al 100 % bien como yo quiero).

tengo un tipo de datos llamado “Concepto” el cual tiene asociadas unas “Keywords” y necesitaba que estos Conceptos y sus Keywords asociadas se pudieran duplicar, de forma que se creara una copia a través de la interfaz web con solo hacer un clic, bien en un principio bastó con hacer una copia del objeto y sencillamente redireccionar al formulario de edición con el nuevo concepto duplicado. (si a alguien le interesa esta version le puedo indicar como lo hice, o como estaba hecho) el problema de esta versión es que guarda el nuevo concepto si o si, es decir que si el usuario se lo piensa mejor y realmente no desea guardar ese nuevo concepto duplicado, ya está guardado en la base de datos, por lo cual ya se ha creado.
de ahí surge la necesidad de hacerlo de otra forma, de obtener el formulario de añadir un nuevo concepto y rellenarlo de alguna forma.
se puede hacer de varias formas, con una pequeña trampa que el sr. django se come de maravilla y contento, consiste en rellenarle el diccionario del POST o del GET.
si rellenamos el diccionario del POST, podemos tener problemas, ya que por defecto cuando en nuestro views.py tenemos algo así:
result = django.contrib.admin.views.main.add_stage( request, 'nombreAplicacion', 'concept', False, '','/'+apachePath+'/concept/')
ese método de django que es el que nos muestra el formulario y el mismo nos lo guarda, lo hace mirando si hay una determinada información en el diccionario del POST.
si le rellenamos los valores de los campos del formulario que nosotros de forma automática queremos rellenar mediante POST, nos vamos a encontrar con que directamente nos va a guardar el nuevo concepto duplicado, sin darnos opción a modificar nada, es decir, no nos va a mostrar el formulario para editar.
para hacer que nos deje modificarlo se me ocurrió, usar primero el diccionario del GET, para sugerirle los valores que quiero que se muestren en el formulario y dejar que el resto de la operación transcurra de forma normal, por suerte funcionó :)
viene a quedar algo así:

def duplicateConcept(request,conceptId) :
import django.views.generic.list_detail
import django.contrib.admin.views.main
import django.http
from django.views.generic.simple import redirect_to
from config import apachePath
from database import cargaDatosConcepto, cargaKeywordsConcepto
concepto = cargaDatosConcepto(conceptId)
strinstance = 'name='+concepto[1]+'_copia'
if concepto[2] :
strinstance += '&parent='+str(concepto[2])
keywords = cargaKeywordsConcepto(conceptId)
i = 0
for (key,type) in keywords :
strinstance += '&keyword.' + str(i) + '.keyword=' + key
strinstance += '&keyword.' + str(i) + '.type=' + type
i += 1
request.GET= django.http.QueryDict(strinstance)
result = django.contrib.admin.views.main.add_stage ( request, 'nombreAplicacion', 'concept', False, '', '/'+apachePath+'/concept/')
return result

y con esto conseguimos el efecto deseado, el problema, es que las keywords son una entidad débil de los conceptos, es decir que un concepto tiene asociadas una serie de keywords y que los keywords por si sólos carecen de importancia además de que por si sólos no existen, pues lo dicho el problema es que las keywords que se asocian al concepto se muestran en un formulario adjunto al del concepto y que no consigue rellenar el formulario de las keywords para más de 3 keywords… por lo cual al hacer el duplicado se pierde una posible gran parte de la información.

eso es todo por el momento.

Tagged with:
May 13

cuando todo viene cuesta arriba… cuando los marroncitos “extras” se convierten en super-marrones, todo se hace díficil… dormir por las noches, concentrarse en una única cosa… seguir adelante en definitiva…

quedan pocos marrones ya… pero aún hay uno que sigue dando por el culo, la decisión ya está tomada… antes de que un marrón te de por el culo, dale tu a él por el culo.

lo único que queda claro en el aspecto profesional, que es en el único que tengo dudas, es que a día de hoy mi trabajo fijo, al que me dedico 8 horas diarias en la fundación es el único que me merece la pena y me motiva. para un programador es dificil no meter el moco en diferentes temas… esa ansía de aprender es la que durante mucho tiempo me ha matado y de momento eligo matarla, o más bien, delimitarla a lo que a mi trabajo se refiere.

seguiremos trabajando para seguir recibiendo recompensas… trabajando duro.

Tagged with:
Apr 03

las cosas comienzan a salir…

Hola Ángel,

He estado probando la herramienta y está bastante estable. Me parece que está funcionando muy bien. [...]

Bueno, realmente con la corredera y el estrés de todos los días no hay mucho tiempo para comentar sobre el trabajo, pero quería aprovechar la oportunidad para felicitarte por el buen trabajo que has estado haciendo.

Saludos cordiales y buen fin de semana
Rafael

escrito por el jefe del departamento para el cual estoy trabajando.

… después de 5 meses pencando como un cabrón, llega el reconocimiento ^^

Tagged with:
Nov 08

pues eso… que me va tocar pillar y bastante en serio… pues resulta que en el curro tengo que por el momento desarrollar una API de Java para un sistema de publicidad contextual… aprovecharé para ir haciendo un mini-manual, asi de paso si otro día lo necesito lo tendré a mano xD.

de momento el nuevo curro va bastante bien… aunque aún no me ha tocado ponerme en serio… pero ya comienza a pintar la cosa de que toca ponerse a currar… a ver que tal… es bastante diferente todo esto a Can JAD.

bueno ya iremos posteando con las novedades ;)