Obtener posicion GPS con GoogleMaps

 Muchas veces hemos necesitado obtener la posicion GPS de un punto sin estar alli. para metersela al TomTom,
para hacer algun estudio, por curiosidad, … Pues bien, simplemente
siguiendo los cuatro pasos que se muestras a continuacion los tendreis

  • Busca el punto que quieres localizar 
  • Centralo todo lo que puedas
  • Pon en la barra de tu navegador (sin espacios entre javascript y void, solo los dos puntos):

                javascript : void(prompt(»,gApplication.getMap().getCenter()));

  •  Y ya lo tienes !!! Posicion GPS de SymbiaIT:

PD. Muy recomendable tambien pasarse por http://www.gmap-pedometer.com/ si lo que queremos es medir distancias.

 

Duelo de titanes: Windows Mobile vs Android

Despues de la rendicion de Palm y la no llegada al publico de OpenMoko, ataca Google con su Sistema Operativo Android siendo una realidad, hoy sale a la venta el HTC Dream, con este S.O. empotrado, pudiendo desarrollar con lenguajes como Java, Mono, …..

ACTUALIZACION: (HTC parece que corre el rumor de anunciar el lanzamiento del Diamond en el Sur de África en Q4 2008)

HTC Dream

Y aunque teoricamente es novedad hardware, desde hace ya tiempo podemos ver videos en youtube de como funciona en otros dispositivos:

 


HTC Touch Dual

 

HTC Wizard

 


HTC TyTN

 


HTC Polaris

 

Un servidor web en 30 líneas de código

  Tiembla IIS !! je ,je , interesante articulo de Oren Eini, en el que nos muestra como programar un servidor web en pocas lineas de codigo en Boo,
un leguaje que empezo como experimento inspirado en Python, pero que
cada vez coje mas fuerza, dada la comunidad que le acompaña.

 

import System.Net
import System.IO

if argv.Length != 2:
print "You must pass [prefix] [path] as parameters"
return

prefix = argv[0]
path = argv[1]

if not Directory.Exists(path):
print "Could not find ${path}"
return

listener = HttpListener()
listener.Prefixes.Add(prefix)
listener.Start()

while true:
context = listener.GetContext()
file = Path.GetFileName(context.Request.RawUrl)
fullPath = Path.Combine(path, file)
if File.Exists(fullPath):
context.Response.AddHeader("Content-Disposition","attachment; filename=${file}")
bytes = File.ReadAllBytes(fullPath)
context.Response.OutputStream.Write(bytes, 0, bytes.Length)
context.Response.OutputStream.Flush()
context.Response.Close()
else:
context.Response.StatusCode = 404
context.Response.Close()

 

 

 Para compilarlo solo

# booi prueba.boo http://localhost:8085/ ~/Desktop/

Mapear la definicion SOAP del WSDL

 Si por cualquier motivo no te gusta la devulucion del WSDL
que nos brinda un Servicio Web, no te preocupes, todo se puede modificar.Gracias
a un articulo de Christian Weyer, puedes alterar, como es este caso la URL que
nos devuleve el la etiqueta <soap:address location=http://www.tuURL.com /> o <soap12:address locationhttp://www.tuURL.com« /> .Casos
reales en los que el IIS contesta por el puerto 80 y estan mapeados en el
firewall los puertos, existen redirecciones, …..

Creamos un fichero SoapAddressReflector.cs dentro del
App_Code

using System.Configuration;
using
System.Web.Services.Description;


namespace
SymbiaIT.Tools.Web.Services.Metadata
{

public class SoapAddressReflector : SoapExtensionReflector


{

public override void
ReflectMethod()

{

ServiceDescription sd =
ReflectionContext.ServiceDescription;

ServiceCollection myServiceCollection =
sd.Services;

foreach (Port port
in myServiceCollection[0].Ports)

{

 

foreach (ServiceDescriptionFormatExtension extension
in port.Extensions)

{

if (extension is SoapAddressBinding)

{

SoapAddressBinding address = (SoapAddressBinding)extension;

address.Location = ConfigurationManager.AppSettings[«SoapAddress»];

}

}

}

}

}

}

 

En las secciones pertinentes del web.config

<configuration>

<appSettings>

<!–
URL del web service, para el parseo soap
–>

<add
key=«SoapAddress« value=«http://scorm.cuadernia.educa.jccm.es/cuadernia/service.asmx«/>


</appSettings>

<system.web>

<webServices>

<soapExtensionReflectorTypes>

<add
type=«SymbiaIT.Tools.Web.Services.Metadata.SoapAddressReflector,
App_code
«/>

</soapExtensionReflectorTypes>

</webServices>


</system.web>

</configuration>

 

Premio Mejor Idea Original

    El pasado dia 17 de Abril se realizo la entrega de premios en Ciudad Real del I Concurso de SL de CLM, en el cual nuestro proyecto ThoRo fue premiado con el de Mejor Idea Original,

Diploma

 

Agracedecer a la organizacion por el premio y el trabajo realizado y felicitar por sus proyectos al resto de los premiados:

 

 Articulos relacionados:

[CLMNET] Hands On Lab.- Desarrollo guiado por pruebas

El proximo dia 29 de Marzo contaremos con la presencia de Hadi Hariri con una estupenda sesion de TDD, ya oodeis apuntaros:

 
http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032373678&Culture=es-ES

http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032373678&Culture=es-ES

http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032373678&Culture=es-ES

 

No se puede mostrar la imagen “https://mseventsww.microsoft.com/BannerImages/418b5849-f9e8-4305-8e4f-fe2ce586b214.jpg” porque contiene errores.

CLMNET.- Hands On Lab.- Desarrollo guiado por pruebas (TDD)

 

Descripción:

 

Hadi
Hariri realizará un Hand On Lab (Taller práctico guiado) con una charla
extendida de desarrollo utilizando TDD (Test Driven Development o
desarrollo guiado por pruebas), con un enfoque práctico, con ejemplos,
de cómo resolver casos reales incluyendo aspectos de metodología y de
desarrollo en equipo como:


      Pruebas unitarias

      Mocks (prototipos)

      Arquitectura en capas incluyendo MVC

  

Ponente: Hadi Hariri

 

Fecha    Sábado 29 marzo del 2008

 

Horas:     9:00h  a 13:00

 

Lugar:     Laboratorio Software 5, Escuela Politécnica superior de Albacete (EPSA)

 

http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032373678&Culture=es-ES

http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032373678&Culture=es-ES
http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032373678&Culture=es-ES
 

 

Charles Simonyi o como escribir codigo

 Dado que llevo un tiempo sin escribir, la mejor forma que me ha
parecido de retomar la marcha es recordando (en mi opinion) al padre de
la notacion en la programacion. Este caballero de origen hungaro, ha
estado trabajando durante muchos años en proyectos de Microsoft de los
menos conocidos, Word, Excel, … no se si os sonaran 😉

Charles Simonyi

Y no vamos a hablar sobre su proximo viaje espacial, si no sobre la  «Notacion Hungara», obviamente en la epoca que se planteo esta nomemclatura se basaba en usar unos prefijos antes de cada variable:

Prefijo Significado

a de ‘array’. Para vectores/matrices/listas de n dimensiones ordenados escalarmente.
b de ‘booleano’. Para variables que tomen sólo dos tipos de valores.
c de ‘char’. Para el tipo primitivo de carácter alfanumérico individual.
d de ‘double’. Para tipos numéricos de alta precisión, como double o float.
e de ‘event’. Para eventos.
f de ‘función’. Sólo la utilizaremos delante de funciones
cuando se traten de funciones que se añadan como observadores de un
evento (ya que usar esta notación para cualquier método o función sería
bastante engorroso).
g de ‘delegated’. Para tipos delegados.
h de ‘hashtable’. Colecciones ordenables mediante clave hash (hUsuarios[“juan23”]).
i de ‘int’. Para números enteros en general, tanto enteros normales como aquellos tipos enteros de más capacidad (como long).
l de ‘lock’. Para objetos de control que nos faciliten el uso de exclusiones mutuas, candados y semáforos.
n de ‘enum’. Para tipos enumerados.
o de ‘objeto’. Para objetos en general (no se debe usar la
notación húngara para distinguir entre tipos de objetos, salvo escasas
excepciones).
p de ‘puntero’. Para lenguajes con aritmética de punteros.
s de ‘string’. Para variables de tipo cadena de texto, ya
sean nativos o arrays de chars. Este tipo de datos es muy habitual en
lenguajes sin lógica de punteros. Si se usara el objeto de tipo
“String” en estos casos, acudiremos a este identificador en lugar de al
‘o’ de objeto.
t de ‘struct’. Similar al ‘o’ de objetos, éste se usaría
para variables de tipo struct en general (es decir, objetos de tipo
primitivo).
v de ‘variable’. Para variables que adquieran diferentes
tipos de valores. Normalmente sólo acudiremos a esta opción en
lenguajes no tipados (como JavaScript/EcmaScript).
La usaremos cuando no estemos seguros del tipo de valor que albergará
una variable. También puede valer para objetos que tengan un tipo
genérico T.
y de ‘byte’.

 

   
El detalle es que la programacion avanza, y al crearse nuevos objetos,
tipos, … nos encontramos con nuevas posibilidades, y lo peor, que la
tecnologia nos permite (en mi opinion) la aberracion de llamar a
proyectos que generan dll de la forma «La_Libreria v1.0.dll»
vale, muy bien, aplaudo la posibilidad de estas opciones, pero cuando
eres desarollador el echo de tenerque picar Shift +  guion , el punto,
los espacios, …. seamos realistas ES UN INCORDIO !! , y mas,
si queremos usar la gran capacidad de cambio de plataforma del .NET
hemos de recordar que no todos los sistemas operativos interpretan
igual los nombres, sin ir mas lejos la diferenciacion de Mayusculas y
Minisculas.

    La solucion de este tipo de inconvenientes es
obvio, evolucionar la notacion hungara y readaptarla a nuestras nuevas
clases. Si queremos simular un espacio se hace cambio de minusculas a
mayusculas ( asiDefinimosEspacios ), simpre empezar a escribir con
minusculas, cada objeto lo definiremos con dos o tres letras delante.
Por ejemplo:

  • txtCuadrado: para los TexBox.
  • cmbCombo: para los ComboBox.
  • rbOpcion:  para los RadioButton.
  • chkOpcion: para los CheckBox.
  • …..

 

    De esta forma el leer codigo de otras personas, junto con los
comentarios, nos sera muuucho mas sencillo, hasta el punto en el que
solo sepamos diferenciar quien lo has escrito por el nombre de autor
que ponga en el comentario y la complejidad de sus algoritmos.

 

 

Como IIS o Apache no protege y como nos empeñamos en ser vulnerables

    Una propuesta para el nuevo año, ser algo mas seguros de lo que
nos encabezonamos algunas veces de practicar, todos sabemos
perogrulladas tales como que nuestro servidor web con soporte .NET no
nos permitira nunca servir determinados ficheros, tales como cualquier
fichero dentro del directorio bin, algunos tales como web.config, y algunos mas que en ningun momento nos interesa que rescaten, dado que acostumbran a poseer informacion comprometida.

   
El guardar las cadenas de conexion en el web.config es una opcion usado
por todos, dada la facilidad de rescatar esta informacion en nuestra
aplicacion web, y poder portarla de un server a otro, pero ……..

   ¿Quien no ha modificado alguna vez este fichero y para asegurarse de tener un backup no ha guardado copia del mismo con un cambio de su extion con .OLD,  .BAK, …..? 

    Pues bien, si estas malas formas las realizas en servidores de desarrollo, «hasta cierto punto»
no exite mayor  problema, el problema real es cuando las haces en un
servidor de producion, añadiendole a esto el dejar marcada la casilla
de «examinar directorio» con la excusa …… «es que queria ver si
estaba bien subido» u otras similares,  ….. ejem, ejem, …..
 

http://mx.geocities.com/txeme_7/google_hacker.gif

   Cualquiera en este momento diria ……. nadie es tan retorcido
para buscar estas cosas …… pues si, ahi uno, el mas retorcido de
todos, nuestro gran amigo GOOGLE !!!, basicamente lanzando ciertas
busquedas puedes encontrar informacion muy comprometida de muchos
servidores, solo hace falta un poco de paciencia.

Realizemos una busqueda al azar CLICK  o CLICK,

 ¿Os animais a publicar algunas mas …?  😉
 

 

OpenMoko, una alternativa a Windows Mobile

 

  Soy maximo defensor de la competencia, tanto de para mi enemigo,
como para mi, basicamente por que esto implica que ninguno de los dos
se quedara durmiendo e iremos avanzando la tecnologia, siendo siempre el
mayor beneficiario el usuario final. Hasta dia de hoy Windows Mobile
es el indiscutible lider en dispositivos moviles, pero poco a poco van
naciendo rivales que no son precisamente algo que deberiamos descartar (IPhone, Android, …..). Pues bien, una realidad es OpenMoko (me da que no hay mucho hispanohablante en el proyecto 😉 ).

 

  La base de este S.O. es que corre sobre GNU/Linux, dispone de unas
buenas SDK, a dia de hoy es compatible con Mono, no un Compact
Framework, si no el grande. Basicamente se rompe esa distancia que
habia para desarrolladores entre dispositivos moviles y aplicaciones de
escritorio.

   El proyecto en principio se penso para el Neo 1973, pero gracias
a la flexibilidad de GNU/Linux, se ha portado para otros muchos, como
la HTC s100, Motorola A780, PALM TX,  ….
 

 

Desde Windows

    Descargar el emulador,  y correr el run.bat, se basa en el emulador qemu que al estar portado para Win32 no tendremos problemas.

 

Desde GNU/Linux:

Preparamos el sistema

apt-get install netpbm libsdl1.2-dev gcc-3.3

Descargamos la ultima version del SVN

svn checkout https://svn.openmoko.org/trunk/src/host/qemu-neo1973
cd qemu-neo1973

Configuramos y compilamos:

./configure –target-list=arm-softmmu  # GCC 3.x will be required, see –cc=
make

Descargamos la ultima ROM y Flash

openmoko/download.sh
openmoko/flash.sh

Ejecutamos y a clickar !!

arm-softmmu/qemu-system-arm
-M gta01 -m 130 -mtdblock openmoko/openmoko-flash.image -kernel
openmoko/openmoko-kernel.bin -usb -show-cursor

 Y ya podemos disfrutar del sistema de nuestro amigo o enemigo 😉

 

Tu TFS va a caducar …. o no!! HA CADUCADO !!

      Una mañana llegas a tu PC y te encuentras …… «TFS has expired»
, en ese momento es cuando clamas al cielo, piensas … «por que no me
hice profesor de latin
«, y mil ideas mas, ninguna de ellas buenas. Pero
no te preocupes, si por algun motivo no recordabas que la version que
se instalo fue la trial, en vez de la buena, tu problema tiene varias
soluciones.

 

 Compra una CAL

    Para
introducirla solo tendras que ir a Agregar o quitar programas,
modificar tu TFS y saldra la posibilidad de introducirle el nuevo
numero de serie.

 

Ganate unos dias

    SI ya
has comprado una nueva licencia, pero tienes nada mas que el soporte
fisico, y no el serial, puedes conseguir unos dias para poder sacar los
datos e integrarlos en la nueva instalacion. Descarga el programa que
adjunto «TFSVersionDetection.zip». Ejecutalo y tendras 30 dias mas en
los que tu maxima prioridad sera cambiarlo todo para que no vuelva a
pasar.

    Eso si, esto ultimo queda bajo tu responsabilidad, y consecuencias respecto a tu licencia.
 

 

Gracias BHarry.