martes, 20 de julio de 2010

Música gratis en la red

Un nuevo servicio gratuito lanzado en EU permite a los usuarios escuchar sus colecciones de música desde cualquier computadora o teléfono Android

NUEVA YORK, ESTADOS UNIDOS (29/JUN/2010).- Un nuevo servicio gratuito lanzado en Estados Unidos permite a los usuarios escuchar sus colecciones de música desde cualquier computadora o teléfono Android sin tener que portarla en unidades de memoria en sus aparatos, pues pueden escucharla directamente desde internet.

El servicio de MSpot almacena la música del usuario y le permite acceso remoto mediante un navegador web. Es un concepto conocido como ''computación en nube'' y es popular con servicios de suscripción de música como Rhapsody y Thumbplay.

MSpot es gratis por hasta dos gigabytes de música -alrededor de mil 600 canciones- y cobra entre tres y 14 dólares por hasta 100 gigabytes de almacenamiento extra.

El servicio detecta las condiciones de la red celular y adapta la reproducción a fin de que las canciones no se vean interrumpidas por una señal pobre de red. El llamado ''modo de aeroplano'' permite reproducir temas seleccionados previamente sin necesidad de acceso a internet.

FUENTE:
http://www.informador.com.mx/tecnologia/2010/213891/6/musica-gratis-en-la-red.htm

Científicos desarrollan método nuevo para vacunar sin jeringas

LONDRES,INGLATERRA(19/JUL/2010).- Científicos estadounidenses han desarrollado un método revolucionario que permite vacunar sin jeringas o agujas y sin necesidad de personal médico especializado, según un estudio publicado en la revista Nature Medicine.

Se trata de un parche que se coloca en la piel y que transformará la batalla contra futuras pandemias inoculando a los pacientes con vacunas que podrán enviarse por correo y que podrán administrarse en el hogar sin necesidad de ayuda médica.

En el mundo en desarrollo, la utilización de esos parches podría eliminar la necesidad de la costosa infraestructura de las campañas masivas de vacunación y su almacenamiento, además del peligro que supone la utilización de jeringas sucias.

El parche contiene alrededor de un centenar de agujas microscópicas hechas de plástico biodegradable que penetran ligeramente y de forma indolora en la superficie de la piel y se disuelven sin dejar huella.

Las pruebas efectuadas indican que el parche es tan eficaz, si no más que las vacunas convencionales en las que se utilizan jeringas y agujas.

Los experimentos llevados a cabo con ratones de laboratorio revelan que los parches funcionan mejor que las vacunas inyectables al prevenir las infecciones gripales ya que la vacuna penetra en el cuerpo por la superficie de la piel, que desempeña un papel importante en el sistema inmunológico.

El profesor Mark Prausnitz, del George Institute of Technology, de Atlanta (EU), que dirigió al equipo de investigadores, dijo que ese parche puede revolucionar la forma de administrar las vacunas por lo sencillo y seguro que es.

"El parche con las microagujas que se autodisuelven puede facilitar los programas de inmunización al eliminar la necesidad de personal especializado y permitir la autovacunación", explicó.

"En nuestro estudio hemos demostrado que el parche con las microagujas que se disuelven puede vacunar contra la gripe tan bien o tal vez incluso mejor que las agujas hipodérmicas tradicionales", agregó el científico.

Los ratones inmunizados con los parches evitaron la infección con el virus de la gripe un mes después de la vacunación lo mismo que otro grupo en los que utilizaron agujas hipodérmicas.

Sin embargo, los primeros resistieron una segunda infección tres meses después mejor que los del segundo, lo que los científicos atribuyen al hecho de que la inoculación se produjo por vía cutánea en lugar de mediante una inyección tradicional en el músculo.

Según los expertos, otra ventaja de la vacuna es que se presenta como una formulación seca (congelada), lo que refuerza su estabilidad durante la distribución y el almacenamiento.

Las microagujas tienen una longitud de 650 micrones (seis veces el grosor de un pelo humano) y son lo suficientemente cortas como para no estimular los receptores del dolor en la piel aunque tienen la longitud suficiente como para superar la capa protectora de la epidermis.

Serán, sin embargo, nuevas pruebas con animales antes de que se ensaye la vacuna en voluntarios humanos aunque el polímero plástico con que se fabrican las microagujas se emplea ya en medicina sin efectos secundarios en el paciente.

Enjambres de insectos-robots sustituirán a los aviones de reconocimiento no tripulados

Los vehículos aéreos no tripulados han adquirido creciente importancia debido al desarrollo de la tecnología, que permite recopilar información crítica (frente a otros sistemas como los satélites o misiones tripuladas) de una forma más rápida y económica sin, además, tener que arriesgar vidas humanas.

Estos aparatos reducen de horas a segundos el tiempo necesario para identificar un objetivo, al mismo tiempo que la información obtenida es de mayor precisión. Su sistema de propulsión es asimismo económico.

Aunque en la práctica los aparatos no tripulados han mostrado estas excelencias, también algunas veces han funcionado mal y en ocasiones han sido destruidos en el intento de obtener la información.

Perfeccionamiento

El ejército australiano pretende perfeccionar la capacidad de estos aparatos posibilitando la asignación de una misión no a uno, sino a un grupo de unidades, y que esta misión sea además perfectamente coordinada entre ellos para optimizar los resultados.

El medio de conseguirlo es fabricar pequeños robots no tripulados cuyo comportamiento se inspira en el funcionamiento de los enjambres de insectos, que manifiestan una gran capacidad de adaptación y versatilidad en la naturaleza.

El funcionamiento coordinado de estos enjambres de robots no tripulados se consigue con la ayuda de algoritmos, que permiten desarrollar una red inteligente que les comunique entre sí durante la misión.

Un enjambre se compone de miles de zánganos, de micro-robots que caminan, suben cuestas, vuelan y navegan. Cada una de estas unidades costaría 14.000 dólares y estaría equipada con armas específicamente diseñadas para estos tamaños.

Dentro de 10 o 15 años

El proyecto tardará entre 10 y 15 años en estar operativo, pero una vez conseguido, permitirá a estos enjambres de robots de vigilar una región. Cada zángano, además de esta integrado en un sistema y de proceder según su coherencia, será también autónomo a la hora de decidir cómo proceder, gracias al sistema inteligente de que está dotado.

Gran parte de la dificultad del proyecto reside en la elaboración de algoritmos complejos. Un algoritmo es un conjunto finito de instrucciones que sirven para ejecutar una tarea. El algoritmo complejo se caracteriza por capturar relaciones complejas de los datos.

La decisión australiana de adentrarse en este proyecto responde, de un lado, a las singularidades de su territorio, que reclaman una vigilancia de diseño adecuada a sus características, y de otro lado a su propósito de desarrollar tecnología propia antes que comprarla a otros países.


lunes, 14 de junio de 2010

Antipatrón de diseño

Antipatrón de diseño

Un antipatrón de diseño es un patrón de diseño que invariablemente conduce a una mala solución para un problema.

Al documentarse los antipatrones, además de los patrones de diseño, se dan argumentos a los diseñadores de sistemas para no escoger malos caminos, partiendo de documentación disponible en lugar de simplemente la intuición.

El término se origina inspirado en el libro Design Patterns, escrito por un grupo de autores conocido como Gang of Four, y que aglutina un conjunto de buenas soluciones de programación. Los autores bautizaron dichas soluciones con el nombre de "patrones de diseño" por analogía con el mismo término, usado en arquitectura. El libro Anti-Patterns (de William Brown, Raphael Malveau, Skip McCormick y Tom Mowbray, junto con la más reciente incorporación de Scott Thomas) describe los antipatrones como la contrapartida natural al estudio de los patrones de diseño. El estudio formal de errores que se repiten permite reconocer y reconducir los elementos involucrados hacia una mejor solución. Los antipatrones no se mencionan en el libro original de Design Patterns, puesto que éste es anterior.

Los antipatrones se consideran una parte importante de una buena práctica de programación. Es decir, un buen programador procurará evitar los antipatrones siempre que sea posible, lo que requiere su reconocimiento e identificación tan pronto como sea posible, dentro del ciclo de vida del software.

El concepto de antipatrón se puede aplicar a la ingeniería en general, e incluso a cualquier tarea realizada por el hombre. Aunque no se escucha con frecuencia fuera del campo ingenieril, la noción está ampliamente extendida.

Antipatrones generales de diseño de software

* Base de datos como comunicador de procesos (database as an IPC): Usar una base de datos para comunicar procesos en uno o varios ordenadores, cuando la comunicación entre procesos directa es más adecuada.
* Blob: Concentrar demasiada funcionalidad en una única parte del diseño (clase).
* BOMQ (Batch Over MQ): Abuso en el empleo de integración basada en mensajes en tiempo real para transferencias esporádicas de gran tamaño en segundo plano.
* Clase Gorda: Dotar a una clase con demasiados atributos y/o métodos, haciéndola responsable de la mayoría de la lógica de negocio.
* Botón mágico (magic pushbutton): Tender, desarrollando interfaces, a programar la lógica de negocio en los métodos de interacción, implementando los resultados de las acciones del usuario en términos no suficientemente abstractos.

Antipatrones de diseño orientado a objetos

* Acoplamiento secuencial (sequential coupling): Construir una clase que necesita que sus métodos se invoquen en un orden determinado.
* BaseBean: Heredar funcionalidad de una clase utilidad en lugar de delegar en ella.
* Fallo de clase vacía (empty subclass failure): Crear una clase que no supera el test de la subclase vacía, es decir, que se comporta de manera diferente cuando se invoca desde una subclase que no añade modificación alguna.
* Llamar a super (callsuper): Obligar a las subclases a llamar a un método de la superclase que ha sido sobrescrito.
* Modelo de dominio anémico (anemic domain model): Usar un modelo del dominio sin ninguna lógica de negocio. Esto no es un enfoque orientado a objetos porque cada objeto debería tener tanto propiedades como comportamiento asociado.
* Objeto sumidero (object cesspool): Reusar objetos no adecuados realmente para el fin que se persigue.
* Objeto todopoderoso (god object): Concentrar demasiada funcionalidad en una única parte del diseño (clase).
* Poltergeist: Emplear objetos cuyo único propósito es pasar la información a terceros objetos.
* Problema del círculo-elipse (circle-ellipse problem): Crear variables de tipo pensando en los valores de posibles subtipos.
* Problema del yoyó (yo-yo problem): Construir estructuras (por ejemplo, de herencia) que son difíciles de comprender debido a su excesiva fragmentación.
* Singletonitis: Abuso de la utilización del patrón singleton.
* YAFL (yet another layer, y otra capa más): Añadir capas innecesarias a un programa, biblioteca o framework. Esta tendencia se extendió bastante después de que se publicase el primer libro sobre patrones.

* Carrera de obstáculos (race hazard): Incapacidad de prever las consecuencias de diferentes sucesiones de eventos.
* Entrada chapuza (input kludge): No especificar e implementar el manejo de entradas inválidas.
* Fábrica de combustible (gas factory): Diseñar de manera innecesariamente compleja.
* Gran bola de lodo (big ball of mud): Construir un sistema sin estructura definida.
* Interfaz inflada (interface bloat): Pretender que una interfaz sea tan potente que resulta extremadamente difícil de implementar.
* Inversión de abstracción (abstraction inversion): No exponer las funcionalidades implementadas que los usuarios necesitan, forzando a que se reimplementen a más alto nivel.
* Punto de vista ambiguo (ambiguous viewpoint): Presentar un modelo sin concretar ciertos aspectos, postergando así decisiones conflictivas.
* Re-dependencia (re-coupling): Introducir dependencias innecesarias entre objetos.
* Sistema de cañerías de calefacción (stovepipe system): Construir un sistema difícilmente mantenible, ensamblando componentes poco relacionados.

Antipatrones de programación

* Nomenclatura heroica (heroic naming): Identificar los miembros de un programa (interfaces, clases, propiedades, métodos...) con nombres que provocan que el conjunto aparente estandarización con la ingeniería del software pero que en realidad oculta una implementación anárquica.
* Acción a distancia (action at a distance): Provocar la interacción no prevista de componentes muy distantes de un sistema.
* Acumular y arrancar (accumulate and fire): Establecer una colección de variables globales para ser usadas por un conjunto de subrutinas.
* Ancla del barco (boat anchor): Retener partes del sistema que ya no tienen utilidad.
* Bucle activo (busy spin): Utilizar espera activa cuando existen alternativas.
* Código duro (hard code): Hacer supuestos sobre el entorno del sistema en demasiados lugares de la implementación.
* Complejidad no indispensable (accidental complexity): Dotar de complejidad innecesaria a una solución.
* Código espagueti (spaghetti code): Construir sistemas cuya estructura es difícilmente comprensible, especialmente debido a la escasa utilización de estructuras de programación.
* Código ravioli (ravioli code): Construir sistemas con multitud de objetos muy débilmente conectados.
* Comprobación de tipos en lugar de interfaz (checking type instead of interface): Comprobar que un objeto es de un tipo concreto cuando lo único que se necesita es verificar si cumple un contrato determinado.
* Confianza ciega (blind faith): Descuidar la comprobación de los resultados que produce una subrutina, o bien de la efectividad de un parche o solución a un problema.
* Doble comprobación de bloqueo (double-checked locking): Comprobar, antes de modificar un objeto, si es necesario hacer esa modificación, pero sin bloquear para comprobarlo, de manera que dicha comprobación puede fallar.
* Fallo de caché (caching failure): Olvidar restablecer una marca de error cuando éste ya ha sido tratado.
* Lava seca (lava flow): Código muerto e información de diseño olvidada permanecen congelados en un diseño cambiante. Esto es análogo a un flujo de lava en el que se van endureciendo pedazos de roca. La solución incluye un proceso de gestión de la configuración que elimina el código muerto y permite evolucionar o rehacer el diseño para acrecentar la calidad.
* Lógica super-booleana (superboolean logic): Emplear comparaciones o abstracciones de la lógica booleana innecesarias.
* Manejo de excepciones (exception handling): Emplear el mecanismo de manejo de excepciones del lenguaje para implementar la lógica general del programa.
* Manejo de excepciones inútil (useless exception handling): Introducir condiciones para evitar que se produzcan excepciones en tiempo de ejecución, pero lanzar manualmente una excepción si dicha condición falla.
* Momento del código (code momentum) : Establecer demasiadas restricciones sobre una parte del sistema debido a la asunción de muchas de sus propiedades desde otros lugares del propio sistema.
* Números mágicos (magic numbers): Incluir en los algoritmos números concretos sin explicación aparente.
* Ocultación de errores (error hiding): Capturar un error antes de que se muestre al usuario, y reemplazarlo por un mensaje sin importancia o ningún mensaje en absoluto.
* Packratting: Consumir memoria en exceso debido a no liberar objetos reservados dinámicamente una vez ya han dejado de ser necesarios.
* Programación por excepción (coding by exception): Añadir trozos de código para tratar casos especiales a medida que se identifican.
* Secuencia de bucle por casos (Loop-switch sequence): Programar un conjunto de pasos secuenciales usando un bucle en combinación con una estructura de control por casos.
* Cadenas mágicas (magic strings): Incluir cadenas de caracteres determinadas en el código fuente para hacer comparaciones, como tipos de eventos, etc.

Criptografía cuántica (Quantum Cryptography)

Criptografía cuántica (Quantum Cryptography).
Introduccion
El mundo funciona con muchos secretos, materiales altamente confidenciales. Entidades como gobiernos, empresas y individuos no sabrían funcionar sin estos secretos altamente protegidos. Nicolás Gisin de la Universidad de Génova dirige un movimiento tecnológico que podrá fortalecer la seguridad de comunicaciones electrónicas. La herramienta de Gisin (quantum cryptography), depende de la física cuántica aplicada a dimensiones atómicas y puede transmitir información de tal forma que cualquier intento de descifrar o escuchar será detectado.
Esto es especialmente relevante en un mundo donde cada vez más se utiliza el Internet para gestionar temas. Según Gisin, "comercio electrónico y gobierno electrónico solo serán posibles si la comunicación cuántica existe". En otras palabras, el futuro tecnológico depende en gran medida de la "ciencia de los secretos".

Contenido

La criptograía es la disciplina que trata de la transmisión y almacenamiento de datos de manera que no puedan ser comprendidos ni modificados por terceros. Los diferentes métodos de criptografía actualmente utilizados necesitan que dos personas que deseen comunicar información intercambien de forma segura una o más clavez; una vez que las claves han sido intercambiadas, los interlocutores pueden transferir información con un nivel de seguridad conocido. Pero esta forma de trabajar basa la seguridad de las transmisiones exclusivamente en la seguridad en el intercambio de claves. La forma más segura de realizar este intercambio de claves es de manera presencial, pero ello no es posible en la mayoría de los casos, dado el múltiple número de interlocutores con los que se desea intercambiar información confidencial (bancos, tiendas en Internet, colegas de trabajo en sedes distantes, etc.). De manera que el punto donde hay menor seguridad en el intercambio de información confidencial está en el proceso de intercambio y transmisión de las claves.

La mecánica cuántica describe la dinámica de cada partícula cuántica (fotones, electrones, etc.) en términos de estasdos cuánticos, asignando una probabilidad a cada posible estado de la partícula por medio de una función.

Algunos aspectos a considerar de la mecánica cuántica:

  • Superposición: Una partícula puede poseer más de un estado a la vez, en otras palabras, se encuentra en realidad "repartida" entre todos los estados que le sean accesibles.
  • La medición no es un proceso pasivo como se suponía en la mecánica clásica, ya que altera al sistema.
  • Colapso de estados: Una partícula que se encuentra repartida entre todos sus estados accesibles, al ser medida se altera su estado superpuesto determinando en qué estado particular, de entre una variedad de estados posibles, se encuentra.
  • Incertidumbre: En la teoría cuántica, algunos pares de propiedades físicas son complementarias (por ejemplo, la posición y el momentum), en el sentido de que es imposible saber el valor exacto de ambas. Si se mide una propiedad, necesariamente se altera la complementaria, perdiéndose cualquier noción de su valor exacto. Cuanto más precisa sea la medición sobre una propiedad, mayor será la incertidumbre de la otra propiedad.
  • Entrelazamiento: Dos partículas cuánticas pueden tener estados fuertemente correlacionados, debido a que se generaron al mismo tiempo o a que interactuaron, por ejemplo, durante un choque. Cuando esto ocurre se dice que sus estados están entrelazados, lo que provoca que la medición sobre una de ellas determina inmediatamente el estado de la otra, sin importar la distancia que las separe. Este fenómeno se explica aplicando las leyes de conservación del momento y de la energía.

Las partículas utilizadas habitualmente en la criptografía cuántica son los componentes de la luz o fotones, y los estados que se utilizan para ser entrelazados o superpuestos entre sí son sus dos estados de polarización, que es una de las características conocidas de la luz, aunque no sea directamente perceptible.

Un fotón puede ser polarizado artificialmente en una dirección en particular con respecto a su dirección de desplazamiento. Dicha polarización puede ser detectada mediante el uso de filtros, orientados en el mismo sentido en el que la luz fue polarizada. Estos filtros dejan pasar los fotones polarizados en un estado y absorben los polarizados en el otro.