Mujer demanda a Google Maps por malas instrucciones

A ver si a mi también se me ocurre cómo demandar a

De

Lauren Rosenberg creyó a pies juntillas lo que le decía Google y, siguiendo las instrucciones del GPS, cruzó una autopista por la mitad (mientras iba a pie).

Como consecuencia, fue arrollada por un auto y terminó en el hospital. Y ahora demanda a Google Maps por US$100.000.

Rosenberg quería pasear en un lugar que no conocía, y para ubicarse utilizó Google Maps desde su Blackberry. Después de ingresar el lugar hacia donde quería ir, el servicio le recomendó cruzar la ruta estatal 224 del estado de Utah por la mitad, en un lugar donde no hay pasarelas ni lugar para peatones.

Rosenberg y sus abogados alegan que las instrucciones del servicio fueron “negligentes” por haberla hecho cruzar por ahí.

A favor está que cuando se usa Google Maps en un PC, aparece una gran advertencia que dice que “las instrucciones para peatones están en beta. Tenga cuidado – esta ruta podría no tener veredas o caminos para peatones”. Sin embargo, cuando entras desde un teléfono, la advertencia no está.

Publicado en Google, Humor. 1 Comment »

Programación multiplataforma con QT.

Programación multiplataforma con QT.

Hace tiempo que perdí la pista a la librería QT la cual es la base del gran escritorio de linux kde, y me he llevado la sorpresa de que Trolltech (padres del QT) ha sido comprada por Nokia la cual esta dando bastante apoyo a esta librería que nos permite realizar programas para diferentes sistemas operativos.

Además dispone de un IDE gratuito bastante logrado llamado QT Creator.

Y de unos bindings para Java llamados QT Jambi .

Ejemplos de aplicaciones desarrolladas con QT son el conocido Google Earth y el Adobe Photo Album:

Los cuales nos dan visión de las capacidades que nos ofrece esta librería.

Apple supera a Microsoft para convertirse en la empresa de tecnología más valiosa

De

A finales de mayo Apple ha superado a Microsoft para convertirse en la empresa de tecnología más valiosa en bolsa, o lo que es lo mismo la capitalización bursátil de Apple en el mercado de valores NASDAQ es superior a la de Microsoft.

Apple se posiciona como la segunda empresa pública con mayor capitalización de mercado en todo EEUU, justo debajo de Exxon Mobil Corporation (una empresa petrolera estadounidense).

Apple está valorada en cerca de 227 mil millones dólares en comparación con los 223 mil millones dólares de Microsoft.

Con el regreso de Steve Jobs en 1996 – y una inversión por parte de Microsoft de 150 millones de dólares – la compañía comenzó su lenta recuperación, sobre todo con la introducción del iPod que iniciaría una revolución musical que se convertiría en un negocio con la tienda de música online iTunes.

Más tarde superó a Nokia, la marca dominante en teléfonos móviles, mediante la introducción del iPhone en 2007.

Y este año, Jobs sacudió las cosas de nuevo con el IPAD (al menos en el mercado de Tablets/e-Readers).

En tan solo 5 años las acciones de Apple han subido casi un 560%, mientras que Microsoft ha aumentado sólo un 4%.

Por otro lado Microsoft sigue siendo una empresa sumamente poderosa y rentable en el mundo de la tecnología. Windows se ejecuta en 9 de cada 10 computadoras, mientras que más de 500 millones de personas utilizan su software Office para realizar sus tareas diarias. Estas dos soluciones representan la mayor parte de los ingresos anuales de Microsoft.

Publicado en Noticias. 1 Comment »

Persistencia KISS: Persistencia sin JPA, ni Hibernate ni IBatis

Probablemente la Capa de Persistencia sea después de la Capa de Presentación uno de las elecciones más esenciales para que en un proyecto podamos centrarnos en el negocio y no dediquemos más tiempo del necesario en temas técnicos.

Es habitual, en esta Capa más que ninguna: “Asumir que nuestra solución favorita es universalmente aplicable, haciendo bueno el refrán a un martillo, todo son clavos.” y que el patrón de diseño se haya convertido en un auténtico antipatrón (un patrón de diseño que invariablemente conduce a una mala solución para un problema), en este caso al antipatrón

(Goldern Hammer/Martillo de Oro para los que no practiquéis los juegos mentales :D)

Pero no divaguemos más, que el tema de los antipatrones da para muchooooos posts 😉

En este post quería comentar que en la Capa de Persistencia no siempre la opción adecuada es Hibernate, o JPA+Hibernate ahora. Por ejemplo en muchas organizaciones (públicas incluso) el departamento de Arquitectura y Metodología tiene prohibido el uso de estos motores por los problemas y complejidades adicionales que ocasionan (por ejemplo en el rendimiento de la base de datos,…).

En estos casos (como ya he dicho en otros posts) la opción obvia es IBatis (MyBatis ahora)…

Pero en ocasiones incluso IBatis (me resisto al nombre MyBatis…qué representa el My en un producto de este tipo…se personaliza para mi? :)) puede no encajar, sobre todo por la necesidad de mapear clases a tablas en XML, aunque herramientas como Abator son capaces de generar a partir de las tablas los mapeos.

En estos casos quedaría la opción obvia de usar JDBC directamente, la de usar el soporte de Spring para JDBC: Spring JDBC (he de reconocerlo Spring es mi Golden Hammer y le encuentro aplicación en cualquier sitio :)) o la de usar otro framework/producto aún más sencillo que IBatis.

Hasta el momento (y salvo alguna excepción que también la hay) en estos casos siempre he optado por Spring JDBC sobre todo por la extensibilidad, aunque he de decir que Spring JDBC es uno de los módulos de Spring más complejos de usar (y más para lo que ofrecen).

En la actualidad existen algunos frameworks muy interesantes para aquellas ocasiones en las que ni JPA, ni IBatis ni Spring JDBC sean lo que necesitemos.

Regularmente me paseo por en la sección de Persistencia para ver qué novedades hay: http://java-source.net/open-source/persistence, pero si me lo permitís os voy a hacer mi personal elección:

Persist , Siena y SeQuaLite

(a última hora había incluido pero finalmente lo he sacado de la lista y no porque esté en Google Code ni porque esté hecho por un español, sólo lo he hecho porque no soporta las principales bases de datos: Oracle, DB2, SQL Server)

Cada uno tiene sus virtudes e inconvenientes.

Sobre :

Sencillo. Siena no tiene dependencias, ocupa 25Kb y el API está diseñada para ser lo más sencilla posible.

Intrusivo. Los objetos persistentes extienden de la clase Model(el código depende de Siena). Tampoco es que esto sea un gran problema, no acabamos haciéndolo igual nosotros y además alguien ha cambiado alguna vez de motor de persistencia en un proyecto en marcha. Tiene una forma de trabajar con clases que no heredan de Model

Similitud con JPA

Soporte SimpleDB de Amazon, Google App Engine,

Limitado. El API se ha diseñado para que todas las consultas puedan ser ejecutadas usando sólo un índice. Todas las consultas se realizan sólo sobre una tabla, no se pueden hacer subconsultas ni JOINs y no se puede utilizar OR en una cláusula WHERE. De este modo se consigue que todas las consultas puedan ser realizadas utilizando sólo un índice y así sean lo más rápidas posible. Esta estrategia es la que viene siendo utilizada por las aplicaciones que necesitan ser altamente escalables. Las bases de datos “en la nube” Big Table de Google, SimpleDB de Amazon, utilizan esta aproximación.

Extensible. La implementación actual utiliza JDBC. La funcionalidad principal de Siena se basa en interfaces que pueden ser implementadas utilizando otros mecanismos de persistencia.

Ejemplo de uso sencillo:

o Clase Employee

o siena.properties:

o haciendo queries:

Trabajando con relaciones:

o Clase Pet:

o Clase Person:

En el caso de :

Adaptable: Se puede trabajar con POJOs mapeados a tablas (al estilo Siena o JPA) o con POJOs no mapeados (al estilo Spring JDBC)

Sencillo:

o Si trabajamos con una clase mapeada a tabla se usaría:

o Si trabajamos con POJOs no mapeados:

Poca documentación y actividad: el proyecto surge en 2008 y aunque sigue activo su actividad es muy baja.

De

Uso:

Mapeo en package.sequalite:

Documentación?

Características avanzadas:

o Soporte paginación

o Lazy loading

o Save y Delete en Cascada

Herramienta para generación de POJOS a partir de tablas

Abandonado?

Que con cuál me quedo?

SeQuaLite tiene algunas características que no tienen ni Siena ni Persist pero pierde en el resto, sólo lo usaría como base para evolucionarlo.

Siena, teniendo en cuenta cómo funciona la pregunta lógica es porqué no usar JPA…quizás porque soporta Google App Engine, o porque es extensible o por el lenguaje de consultas, o porque no requiere dependencias ni configuración, ni cacheos,…

Persist si eres capaz de lidiar con la falta de documentación (sólo hay un Getting Started) es una opción muy atractiva, un sustituto completo al complejo Spring JDBC y puede que más 🙂

Destroy IE6, by ¿Microsoft?

La verdad es que hay veces que las noticias te sorprenden de tal forma que te quedas sin palabras. Ahora ellos mismos quieren cargarse su propio navegador… Mi opinión al respecto es que lejos de pensar en el usuario o en el desarrollador (y las múltiples incompatibilidades con las tendencias actuales) más se trata de un juego de venta pero…

Aquí tenéis la noticia completa: http://www.pcpro.co.uk/news/358276/microsoft-man-my-job-is-to-destroy-ie6

Ubuntu Server VII: Apt-Cacher

Veamos hoy como podemos crearnos un repositorio de software dentro de nuestra empresa y así no depender tanto de la conexión a Internet y de por supuesto su velocidad.

En el post de hoy aprenderemos a montar un repositorio que nos servirá para todos y cada uno de los servidores de nuestra empresa, puesto que una vez bajado el código al anfitrión, este lo podremos usar siempre que queramos sin necesidad de descargarlo de nuevo.

Fundamentalmente existen en Ubuntu dos, o al menos son los más conocidos: apt-proxy y apt-cacher.

Nosotros nos centraremos en el segundo, puesto que es más actual y según parece da mejores rendimientos.

Como siempre antes de instalar algo:

sudo apt-get update

Y posteriormente:

sudo apt-get install apt-cacher

Ahora vamos a cambia unos mínimos parámetros de configuración y para ello:

sudo vi /etc/apt-cacher/apt-cacher.conf

admin_email=admin

generate_reports=1

expire_hours=24

El primero parece que se explica sólo, jejej. Con el segundo lo que hacemos es habilitar las estadísticas de modo gráfico y con el último le decimos que se puede bajar de nuevo los ficheros si éstos tienen más de 24 horas.

Para que los cambios tengan su efecto pues podemos resetear los servicios o la máquina entera:

Opción 1:

sudo service apt-cacher restart

sudo service apache2 restart

Opción 2:

sudo reboot

Hay veces que no se puede, pero particularmente siempre prefiero resetear la máquina entera. Además esta nueva release tarda muy poquito en levantar de nuevo la máquina J

Si quieres generar las estadísticas antes de las 24 horas de haber instalado el apt-cacher ejecutamos el siguiente comando que las genera inmediatamente:

sudo /usr/share/apt-cacher/apt-cacher-report.pl

Y ya podemos comprobar si la instalación ha ido correctamente o no:

http://hostServer/apt-cacher/

http://hostServer/apt-cacher/report

Lo último que nos queda es configurar los servidores para que obtengan los paquetes o las releases de este nuevo repositorio. Para ello editamos el archivo sources.list:

sudo vi /etc/apt/sources.list

Y añadimos delante de cada url algo como:

http://hostServer/apt-cacher/

Y como siempre con un ejemplo lo vemos más claro:

Y para que los cambios surtan efecto:

sudo apt-get update

NOTA:

Lo que se puede hacer para ahorrarnos bastantes descargas, es usar la caché del propio apt que tenemos en el disco, de la siguiente forma:

sudo /usr/share/apt-cacher/apt-cacher-import.pl /var/cache/apt/archives

DeskHedron: Escritorio virtual Portable

DeskHedron es un escritorio virtual 3D (sí, otro) para Windows.

Lo que diferencia este programa japonés de otros (CubeDesktop, Dexpot, MicroDesk, EmergeDesktop, MicroDesk,…) es que es Portable, ocupa 348 Kb y apenas consume memoria.

DeskHedron se aloja en la barra de estado, y desde allí permite agregar hasta 8 escritorios adicionales al tuyo,

Para navegar entre escritorios, puede accederse a la vista "poligonal" de tus pantallas mediante Ctrl+Shift+Z, y cambiar entre una y otra con la rueda del ratón o los botones de dirección en el teclado.

Podéis descargarlo desde:

A %d blogueros les gusta esto: