31may2010

Hydrive - Disco óptico + SSD

Hitachi y LG han creado una unidad óptica que tiene incluida una unidad SSD. Como en Engadget lo dicen, es sorprendente que esta idea haya tomado tanto tiempo en surgir. Estas unidades no difieren estéticamente de las unidades ópticas comunes, sin embargo tienen incluida una unidad SSD de 32GB o 64GB.

Unidad HyDrive 


Una de las características de estas unidades es que no se necesitan aditamentos especiales para ser instaladas en lugar de otra unidad óptica. Con la unidad SSD se puede acceder a la información entre 30% y 60% más rápido que en discos comunes, por tanto esta unidad puede ser usada para alojar al sistema operativo que usemos, aplicaciones que hagan uso intensivo de disco o incluso puede ser usada para hacer de caché y reproducir discos ópticos en mal estado.

Se tiene previsto que Hydrive salga al mercado en Corea del Sur en Agosto del 2010 y que salga a nivel mundial en Septiembre. Además se esperaría tener una segunda generación con capacidades de hasta 256GB y pasar de interfaces SATA de  3GBps a interfaces SATA de 6GBps. La primera generación medirá 12,7mm de espesor por lo que estaría orientada a PC's HTPC's y otros equipos de sobremesa, aunque se prevee sacar unidades de 9,5mm orientada a equipos de menor tamaño.

Fuente:

Engadget

25may2010

[Flex] Extensiones Cairngorm - Eventos encadenados

La ejecución de eventos en forma paralela o secuencial usando solamente las características de Flex 3 es imposible debido a la ejecución en forma asíncrona. Aquí es donde podemos usar una de las características de las extensiones para Cairngorm desarrolladas por UniversalMind que permite crear cadenas de eventos, pudiendo invocar a dichos eventos de forma secuencial o de forma paralela. Estas cadenas de eventos son creadas mediante la clase EventGenerator

Para poder encadenar eventos usando el framework Cairngorm, los eventos deben extender de la clase UMEvent, una clase de eventos deberá tener una estructura como la que se presenta a continuación.

import com.universalmind.cairngorm.events.UMEvent;
import mx.rpc.IResponder;
 
public class Event1 extends UMEvent 
{
    static public var TYPE_EVENT:String = "typeEvent";
    private var parameter:String;
  
    public function Event1t(type:String, parameter:String, handlers:IResponder=null, bubbles:Boolean=true, cancelable:Boolean=false)
    {
        this.parameter=parameter;
        super(type);
    }
}

Además los comandos deben extender de la clase Command dentro del paquete de UniversalMind com.universalmind.cairngorm.commands. Estos comandos deben sobreescribir los métodos execute, result y fault, aunque éste último puede ser obviado si se utiliza otra característica de la extensiones para Cairngorm que permite centralizar el manejo de errores mediante la clase FaultCommand, una clase de comandos debe tener una estructura como la que se presenta a continuación.

import com.adobe.cairngorm.control.CairngormEvent;
import com.universalmind.cairngorm.commands.Command;

import flash.events.IEventDispatcher;

import Event1;

public class Command1 extends Command
{
    private var event1:Event1;

    override public function execute(event:CairngormEvent):void
    {
        super.execute(event);
        event1=event as Event1;

        var delegate:Delegate=new Delegate(this);
        delegate.ExecuteEvent(event1.parameter);
    }

    override public function result(info:Object):void
    {
        //resultado de ejecucion de Event1
        notifyCaller(info);
    }

    override public function fault(info:Object):void
    {
        notifyCaller(info);
    }
}

Para notificar acerca de la ejecución de los comandos se debe llamar al método notifyCaller.

Luego usando la clase EventGenerator se puede crear cadenas de eventos que pueden ser ejecutadas en forma paralela o secuencial. El código a continuación permite despachar eventos en forma paralela. El constructor de esta clase recibe como parámetros:

  • Un arreglo con los eventos a ejecutar
  • Los handlers opcionales para el resultado de la ejecución de los comandos 
  • Un entero que representa el como se manejarán los errores
  • El tipo de ejecución de los eventos, puede ser, EventGenerator.TRIGGER_PARALLEL o EventGenerator.TRIGGER_SEQUENCE
var paralellLocaleEvents:Array=[new Event1(Event1.TYPE_EVENT, "parameter"), new Event2(Event2.TYPE_EVENT), new Event3(Event3(Event3.TYPE_EVENT)];
var eventLocaleGenerator:EventGenerator=new EventGenerator(paralellLocaleEvents, null, 0, EventGenerator.TRIGGER_PARALLEL);

eventLocaleGenerator.dispatch();

También pueden ser encadenados eventos en forma paralela y secuencial en conjunto, por ejemplo el ejemplo a continuación ejecutará en paralelo Event1 con los eventos Event2 y Event3 que se ejecutarán ambos en secuencia.

var sequenceEvents:Array=[new Event2(Event2.TYPE_Event), new Event3(Event3.TYPE_EVENT)];
    var sequenceEventGenerator:EventGenerator=new EventGenerator(sequenceEvents, null, 0, EventGenerator.TRIGGER_SEQUENCE);

    var parallelEvents:Array=[new Event1(Event1.TYPE_EVENT, "parameter"), sequenceEventGenerator];
    var parallelEventGenerator:EventGenerator=new EventGenerator(parallelEvents, null, 0, EventGenerator.TRIGGER_PARALLEL);
    parallelEventGenerator.dispatch();

Disco duro híbrido

Seagate uno de los líderes en fabricación de dispositivos de almacenamiento ha creado el Seagate Momentus XT. Éste modelo de disco puede ser considerado como el primer disco duro híbrido pues integra partes mecánicas y una memoria flash.

Este modelo ha sido lanzado en un tamaño de 2.5 pulgadas pensado para computadores portátiles aunque puede ser utilizado en equipos de escritorio mediante adaptadores.

La interfaz de este disco es SATA2 y tiene capacidades de 250 GB, 320 GB y 500GB, todos con una memoria flash de 4 GB.

Todo el mecanismo de integración de la memoria flash con la parte mecánica es completamente interno por lo tanto éste disco puede ser en cualquier plataforma. El mecanismo de integración interno además verifica cuales son los sectores del disco mecánico que se usan con mayor frecuencia y los saca hacia la memoria flash que tiene velocidades de transferencia mucho mayores. De esta manera la velocidad de éste disco puede compararse con discos mecánicos de 7200 rpm y en teoría ofreciendo el doble de velocidad de discos mecánicos de 5400 rpm.

En cuanto al precio de éste disco es de 156 USD el disco de 500 GB.

21may2010

[Humor Geek] Jobs vs Gates

Después de que Gates predijera el éxito del iPad antes que el mismo Jobs, estas bromas entre los millonarios muestra su buen sentido del humor.

Clic en las imágenes para agrandar.



19may2010

[Humor geek] Psicología

Esperemos no terminar así por culpa de los blogs

[Humor geek] No utilizo Windows

Un día un profesor de Desarrollo de Software explicaba en clase que los buenos programadores sólo usan Windows XP y pide que levante la mano todo el que también sea seguidor de la empresa de Bill Gates. Todos en clase, por temor a represalias por parte del profesor, levantan la mano, excepto uno con pinta de geek que estaba sentado al fondo del aula. El profesor le miró y empezó el dialogo:


- Profesor: Oiga, usted. ¿Por qué no ha levantado la mano?.
- Alumno: Porque yo no utilizo Windows.
- Profesor: Vaya, y si no utilizas Windows. ¿Qué sistema operativo utilizas?
- Alumno: GNU/Linux. (Respondió orgulloso)

El profesor, cuyos fanáticos oídos no podían dar crédito a algo así, exclamó:

- Pero, hijo mío, ¿qué pecado has cometido para utilizar tal tontería?

El alumno, muy tranquilo, le respondió:

- Mi padre es informático y usa SUSE Linux, mi madre es asesora en seguridad y usa Debian Linux y mi hermano estudia Física y utiliza Quantian Linux, por eso !yo también utilizo GNU/Linux! -remató orgulloso y convencido-.

- Bueno, -replicó irritado el profesor-, pero ese no es motivo para utilizar Linux. Tú no tienes porqué hacer lo que hacen tus padres… Por ejemplo, si tu madre se prostituyese y se drogase todo el día, tu padre bebiese como un cabrón y traficase con drogas y tu hermano atracase comercios y robase a abuelitas, entonces, ¿tú qué harías?

- Seguramente instalaría Windows.

Mensajes de texto SMS internacionales

De todas las cosas que se pueden encontrar en la red hay una que me llamó la atención.

Mediante el uso del "Cloud Computing" o en otras palabras el acceso a servicios a través de Internet se pueden obtener aplicaciones interesantes como la que se presenta en http://for-ever.us/

Clic para agrandar la imagen
Formulario para envío de SMS (Clic para agrandar)
Para el envío de mensajes SMS a nivel global lo que se debe hacer es ingresar el número telefónico incluido el código del país.

El mensaje a ser enviado puede tener hasta 160 caracteres.

Antes de enviar el mensaje se deben ingresar los caracteres presentados en el captcha de la parte inferior derecha.

Personalmente lo he probado con números telefónicos de las tres operadoras ecuatorianas (Alegro, Movistar , Porta) y los mensajes fueron recibidos sin retardos.


18may2010

Screengrab para Chrome

Firefox posee una extensión que permite realizar capturas de la página web que estamos visitando. La misma funcionalidad ha sido trasladada hacia Chrome.

Screengrab para Chrome (Clic para agrandar)
Aunque existan varias extensiones con funcionalidad parecida, el punto fuerte de ésta extensión es que permite hacer capturas de toda la página web sin necesidad de hacer scroll manualmente, además de realizar capturas de la parte visible o de partes específicas de una página.

La extensión puede ser descargada desde aquí

17may2010

Publicar código fuente

  1. Más que una entrada novedosa, ésta entrada servirá como referencia propia al momento de publicar código fuente. Espero también sea de ayuda para otras personas que busquen la misma solución para su Blog.Para agregar el script de resaltado de código fuente (SyntaxHighlighter) en nuestro Blog seguimos los siguientes pasos:
  2. Ir a la dirección de GoogleCode de SyntaxHighlighter. Copiar todo el código mostrado.
  3. Pegar la información al final de la sección de estilos CSS de la plantilla de nuestro blog (entre la etiqueta <b:skin><!--[CDATA[/* y la etiqueta ]]--></b:skin>).
  4. Antes de la etiqueta </head>, pegue lo siguiente:
  5. <!-- Add-in CSS for syntax highlighting -->
    <script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shCore.js' type='text/javascript'></script>
    <script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushCpp.js' type='text/javascript'></script>
    <script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushCSharp.js' type='text/javascript'></script>
    <script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushCss.js' type='text/javascript'></script>
    <script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushDelphi.js' type='text/javascript'></script>
    <script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushJava.js' type='text/javascript'></script>
    <script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushJScript.js' type='text/javascript'></script>
    <script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushPhp.js' type='text/javascript'></script>
    <script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushPython.js' type='text/javascript'></script>
    <script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushRuby.js' type='text/javascript'></script>
    <script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushSql.js' type='text/javascript'></script>
    <script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushVb.js' type='text/javascript'></script>
    <script src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushXml.js' type='text/javascript'></script>
    Puede eliminar las líneas que hagan referencia a los lenguajes que no usará; esto permitirá una carga más rápida.

  6. Antes de la etiqueta </body>, pegue lo siguiente:
  7. <!-- Add-in Script for syntax highlighting -->
    <script language='javascript'>
    dp.SyntaxHighlighter.BloggerMode();
    dp.SyntaxHighlighter.HighlightAll('code');
    </script>
  8. Use el botón "Vista previa" para asegurarse de que el Blog se ve correctamente. Si la previsualización es correcta guarde la plantilla.
  9. Para publicar código fuente, seleccione la pestaña "Edición de HTML" e inserte lo siguiente:
  10. <pre name="code" class="nombre_lenguaje">
    ...Código fuente a ser publicado en código "escaped HTML" ...
    </pre>
    Puede verificar la lista de "nombre_lenguaje" disponibles aquí .
    El código "escaped HTML" puede ser generado por varias herramientas disponibles en la red que pueden ser ubicadas al realizar la búsqueda de "html escaper", o se puede usar la herramienta Quick Escape usada en la publicación de este blog.
    Fuente:
    Adding Syntax Highlighting to Blogger

Frases informáticas

A continuación una recopilación de algunas célebres y no tan célebres frases que han pasado por la historia de la informática

Todo lo que no tiene solución no se soluciona, y lo que la tiene tampoco.
Bill Gates

El ordenador ha sido hasta ahora el producto más genial de la vagancia humana.
Slogan de IBM

Todavía hay mucha gente que ofrece contenidos por el mero placer de saber que la información puede resultar útil a otras personas.
Vinton Cerf

No pensábamos en el negocio, sino en Internet como una forma de comunicación global.
Jerry Yang
Si debbuging es el proceso de eliminar errores, entonces la programación debe ser el proceso de ponerlos.
PC Users

Primero resuelve el problema. Entonces, escribe el código.
John Johnson

Hay dos formas de escribir programas sin errores. Sólo la tercera funciona.
PC Users

No confíes en una PC que no puedas tirar por la ventana.
Steve Wozniak

S pd lr sto, usd pd btnr n ben trbjo cm prgdor
PC Users

Todo programa hace algo perfectamente bien, aunque no sea exactamente lo que nosotros queremos que haga.
R.S. Pressmann

El programa es totalmente perfecto, por lo tanto la PC es que debe andar mal.
Cualquier programador

Ahora ya no se pregunta si tenés email, te lo piden directamente.
Matt Stein

Iterar es humano, recursivar es divino.
LPeter Deutsch

Lo mejor de los booleanos es que si te equivocas estás a un sólo bit de la solución correcta.
Anónimo

Pienso que Microsoft eligió el nombre .Net para que no pudiera ser mostrado en un listado de directorio de Unix.
Oktal

No hay lenguaje de programación, no importa su estructura, que impida que los programadores hagan malos programas.
Larry Flon

C++ : Donde los amigos tienen acceso a tus miembros privados.
Gavin Russell Baker

Decir que Java es estupendo porque funciona con todos los sistemas operativos es como decir que el sexo anal es estupendo porque funciona con todos los géneros.
Alanna

El software es como el sexo: mejor si es libre y gratis.
Linus Torvalds

Una de las causas principales de la caída del imperio romano fue que, como no usaban el cero, no tenían forma de saber cuándo sus programas en C terminaban correctamente.
Robert Firth

El problema de los virus es pasajero y durará un par de años
John McAfee


Realmente, no estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
Linus Torvalds

Sabes que eres brillante, pero querrás comprender lo que has hecho dentro de dos semanas
Linus Torvalds


Si compila esta bien, si arranca es perfecto.
Linus Torvalds

En dos años el problema del spam estará resuelto.
Bill Gates

El ordenador nació para resolver problemas que antes no existían.
Bill Gates

El mercado para los ordenadores personales está muerto. La innovación ha cesado, virtualmente. Microsoft domina con muy poca innovación. Se acabó. Apple perdió. Ese mercado ha entrado en la Edad Oscura, y va a estar en esa Edad Oscura durante los próximos diez años.
Steve Jobs