Ya está Firefox 6.0, el martes se hará oficial

Al igual que en la versión anterior, Mozilla ha publicado en su FTP la versión 6.0 de Firefox 6.0, unos días antes de su comunicado oficial.

Como aun no es oficial, no hay lista de cambios, ni novedades, pero deberían ser las mismas y algo más que en la Beta1 de Firefox 6.0. Si no quieres esperar puedes descargarte la versión desde aquí, de lo contrario espera al anuncio oficial.

Fuente: Xtreme Systems

Juegos en Google+

Ya hace algún tiempo se comentaba que Google añadiría juegos a Google+ y por fin se ha hecho realidad.

Poco a poco la lista de juegos crecerá, por ahora el catálogo inicial de juegos es pequeño, aunque con títulos muy conocidos, como Angry Birds o Sudoku. La página también incluye información referente al juego, actualizaciones de los círculos, invitaciones, títulos jugados por los contactos, tabla de puntuaciones, entre otros datos para compartir.


Si vas a tu cuenta verás un quinto botón a la derecha de los existentes en la cabecera para acceder a los juegos, ya que los juegos y lo relacionado con ellos se integran de forma separada para no interferir en la vista principal del usuario. Si no ves este botón no te preocupes ya que en estos momentos se están implementado para todas las cuentas.

Fuente: GoogleBlog

Banshee 2.0.1


Banshee es un reproductor de audio desarrollado en Mono y Gtk#. Además usa la plataforma multimedia GStreamer para reproducir, codificar y decodificar formatos tales como Ogg, MP3 y otros. Es ideal para organizar tu música y escucharla de una manera diferente gracias a sus complementos, como recomendaciones de otros usuarios o compatibilidad con Last.fm.

También soporta calificación de canciones (de uno a cinco estrellas), reproducción de vídeo (aunque este carece muchas opciones, como la de subtítulos), descarga y reproducción de podcasts, radios y la descarga automática de carátulas. Soporta extensiones, que permiten darle otras funciones, como por ejemplo buscar la letra de una canción. Otra característica es la posibilidad de crear listas de reproducción, tanto estáticas como inteligentes.

Actualmente Ubuntu incorpora la versión 2.0 si deseas instalar la versión 2.0.1, en la que se corrigen unos 40 errores, desde la consola ejecuta:
$ sudo add-apt-repository ppa:banshee-team/ppa
$ sudo apt-get update
$ sudo apt-get install banshee

Calendario de Lanzamiento de Ubuntu 12.04 LTS

La fecha de lanzamiento de Ubuntu 12.04 LTS será el 26 de Abril de 2012, el calendario completo lo teneís aquí:

  • 01 de Diciembre de 2011: Ubuntu 12.04 Alfa 1
  • 02 de Febrero de 2012: Ubuntu 12.04 Alpha 2
  • 01 de Marzo de 2012: Ubuntu 12.04 Beta 1
  • 22 de Marzo de 2012: Ubuntu 12.04 Beta 2
  • 19 de Abril de 2012: Ubuntu 12.04 Release Candidate
  • 26 de Abril de 2012: Final Ubuntu 12.04
Fuente: wiki.ubuntu.com

Especificaciones para OpenGL 4.2


Casi un año después de las especificaciones de OpenGL 4.1, el Grupo Khronos, ha publicado las especificaciones para la última versión de esta API de desarrollo con OpenGL 4.2 (Open Graphics Library 4.2) que extiende sus funcionalidades para mejorar el rendimiento, conservando la compatibilidad con versiones anteriores.

Las novedades están orientadas principalmente a los desarrolladores:
  • Enabling shaders with atomic counters and load/store/atomic read-modify-write operations to a single level of a texture. These capabilities can be combined, for example, to maintain a counter at each pixel in a buffer object for single-rendering-pass order-independent transparency.
  • capturing GPU-tessellated geometry and drawing multiple instances of the result of a transform feedback to enable complex objects to be efficiently repositioned and replicated.
  • modifying an arbitrary subset of a compressed texture, without having to re-download the whole texture to the GPU for significant performance improvements.
  • packing multiple 8 and 16 bit values into a single 32-bit value for efficient shader processing with significantly reduced memory storage and bandwidth, especially useful when transferring data between shader stages.

Si dispones de una tarjeta NVIDIA ya puedes probar los nuevos drivers beta GeForce 280.28 (Windows) y 280.10.01.02 (Linux), los cuales están disponibles desde NVIDIA. Para los usuario de ATI, AMD debe estar terminando la implementación y supongo que saldrán en la próxima versión que debería salir a mediados de mes.

El patron de diseño singleton


Muchos problemas de rendimiento y de escalabilidad suceden cuando se utilizan las conexiones a las bases de datos. Hay que tener en cuenta que las conexiones son un recurso que consume memoria y tiempo de procesador, por lo que sólo se deben crear las conexiones necesarias y estas deben cerrarse tan pronto como se a posible.

Una buena práctica es que todas las clases accedan a los recursos de la base de datos usando siempre una única conexión sin importar el número de instancias que estas clases generen al ser ejecutadas en una aplicación.

El patrón Singleton (instancia única) es el más sencillos, conocidos y utilizados. Está diseñado para restringir la creación de objetos pertenecientes a una clase o el valor de un tipo a un único objeto, asegurando de que sólo exista una única instancia de la clase sin importar el número de veces que se intente crear y proporcionando un punto de acceso global.

Se podría suponer que utilizando miembros estáticos obtendríamos el mismo resultado, pero no es así, ya que en este caso la responsabilidad de tener una única instancia recae en el cliente de la clase.

El patrón Singleton hace que la clase sea responsable de su única instancia y se implementa creando en nuestra clase un método para la creación de la instancia del objeto sólo si todavía no existe alguna. Para asegurar que la clase no puede ser instanciada nuevamente se regula el alcance del constructor (con atributos como protegido o privado).

Resumiendo, el patrón Singleton, provee una única instancia global ya que:
  • La propia clase es responsable de crear la única instancia.
  • Permite el acceso global a dicha instancia mediante un método de clase.
  • Declara el constructor de clase como privado para que no sea instanciable directamente.
El diseño clásico de un es el siguiente:

Analizando la clase se puede observar el uso de los modificadores "private" y "static" en el constructor que hacen que no se pueda crear la clase de forma directa, sino a través del método public GetInstance() que devuelve la instancia creada.

A continuación voy a mostrar un ejemplo en c# en el que tendremos dos clases, que al crearse se guardan la fecha y hora de creación:
  • "Instancia1", en la que no se utiliza el patrón Singleton
  • "Instancia2" en la que implementaremos el patrón Singleton.
    Para utilizar esta clase se deberá invocar mediante el método "GetInstance()".
Aquí les dejo el pantallazo del programa en el que se utilizan ambas clases, es muy básico con la opción "a" se crea una instancia de la clase que no tiene implementado el patrón Singleton y con la opción "b" se crea la instancia con el patrón implementado y estas instancias se guardan en una lista para mostrarlas.


Como se puede observar cada vez que se crea una instancia sin el patrón Singleton obtenemos una fecha y hora diferente, es decir, son instancias diferentes que se crean en cada llamada. En cambio, utilizando el patrón Singleton obtenemos la misma fecha y hora, ya que se crea una sola instancia de acceso global.

Si quieren ver el código fuente completo, aquí les dejo el código.

Si a los conductores se les contratara como a los programadores

OFERTA DE TRABAJO

Puesto: Conductor de coches
Requisitos:
  • Experiencia en la conducción de coches, transportes de mercancias, autobuses, camiones, trolebuses, tranvías, metro, tractores, excavadoras y tanques ligeros y pesados actualmente en uso por los países de la OTAN.
  • Imprescindible experiencia en rallies y conducción extrema.
  • Se valorará experiencia en conducción de Formula-1.
  • Conocimiento y experiencia en la reparación de motores de pistón y rotor/Wankel, transmisión automática y manual, sistemas de encendido, ordenador abordo, ABS, ABD, GPS y equipos de audio de las marcas más conocidas.
  • Se valorará experiencia en la pintura de automóviles y labores de chapista.
  • Los candidatos deberán contar con certificaciones de BMW, General Motors y Bosch, con menos de 2 años de antigüedad.
Retribución: $15-$20/hora, dependiendo del resultado de la entrevista.
Estudios mínimos: Ingeniero

Fuente: mundogeek.net