2007-05-21

Generics con tipos anonimos en C# 3.0

Hace unas semanas bajé el Beta 1 de Visual Studio Code Name Orcas, el cual trae soporte para el .NET Framework 3.5 y las herramientas de lenguaje para C# 3.0

Jugando un poco, primero con LINQ y después con los nuevos chiches de los tipos anónimos me encontré con el siguiente problema: pese a que haciendo queries de LINQ los valores de retorno podían venir como un tipo anónimo, yo no podía hacer lo mismo para mis clases.

Básicamente mi motivación era no tener que crear una clase para, por ejemplo, tener una colección de tuplas <Int, String> para poder hacer algo como esto:

(este código no compila. La notacion List<{Int, String}> es product de mi imaginación :D)

List<{Int, String}> miLista = new List<{Int, String}>();
miLista.Add(new { Elem1 = 1, Elem2 = "A" });
miLista.Add(new { Elem1 = 2, Elem2 = "B" });
miLista.Add(new { Elem1 = 3, Elem2 = "C" });

foreach (var tupla in miLista)
{
    Console.WriteLine(tupla.Elem1);
    Console.WriteLine(tupla.Elem2);
}



Le comenté esta duda a Diego Gonzalez y después de unos días me averiguó la forma de poder hacer esto y por que no funcionaba mi idea original. Me dijo que el problema es que los tipos genéricos no pueden ser inferidos en el constructor y es por eso que no se pueden crear las List<T> de esta forma.

Para poder crearlas hubo que hacer una clase auxiliar que infiere los tipos desde métodos estáticos y crea las instancias de las clases genéricas con los tipos ya inferidos (por si no se entendió, aca va un ejemplo):

(este código SI compila!)

using System;
using System.Collections.Generic;
using System.Text;

namespace CollectionsTest
{
    public class CollectionGenerator
    {
        public static List<T> NewList<T>(T witness)
        {
        return new List<T>();
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            var miLista = CollectionGenerator.NewList(
            new { Elem1 = 1, Elem2 = "A" });

            miLista.Add(new { Elem1 = 1, Elem2 = "A" });
            miLista.Add(new { Elem1 = 2, Elem2 = "B" });
            miLista.Add(new { Elem1 = 3, Elem2 = "C" });

            foreach (var tupla in miLista)
            {
                Console.WriteLine(tupla.Elem1);
                Console.WriteLine(tupla.Elem2);
            }
        }
    }
}


Básicamente, lo que hace el método NewList de la clase CollectionGenerator es inferir el tipo de un testigo de una clase genérica y construir una lista del tipo inferido. Una vez hecho esto, ya podemos usar nuestra lista de objetos de un tipo anónimo!

Espero que les sea útil.

Un saludo!

Z

2007-05-10

VMWare Workstation 6 (o Player 2) vs. Virtual PC 2007

Hace poco me bajé el Beta 1 de Visual Studio Orcas y prefería no destruir mi PC en el intento de probarlo me incliné por la opción de la virtualización.

Como cada vez que hago esto desde Windows, llegué a la dicotomía de si debía usar VMWare (el cual siempre supo dar buenos resultados en el pasado), o el nuevo Virtual PC 2007, del cual me habían hablado muy bien.

Para empezar, me bajé (de forma gratuita) el Virtual PC 2007 y creé una nueva máquina virtual con Windows XP SP2, todas las actualizaciones y Visual Studio Orcas. Para mi sorpresa (y en comparación con las versiones anteriores de Virtual PC) teniendo una VPC con sólo 256MB de RAM, se podía trabajar con total fluidez y soltura, sin frenadas ni grandes tiempos de carga (y decir eso sobre Visual Studio no es poca cosa). Lo único que podía notar a veces es que la máquina host se notaba un poco lenta.

Para mi suerte, después de 2 días (y por pura casualidad) salió la nueva versión de VMWare. Como andaba con un poco de tiempo, decidí probar cual era el mejor de los dos para lo que quería hacer (de por sí, el VMWare arrancaba con la ventaja de que corre Linux sin problemas, cosa que necesito a veces para la facultad). Bajé el VMWare Player 2.0 para Windows y el trial de VMWare Workstation para Linux (después verán para que). El único asunto es que el VMWare Player no tiene ninguna tool para crear nuevas máquinas virtuales. Aquí es donde www.easyvmx.com entra en juego: una página donde uno puede configurar una maquina virtual como quiere, y la genera! Con esto, ya podemos tener una maquina virtual similar a la creada para VPC. Una vez bajada la VM, procedí a instalar Windows XP.

Una vez ya instalado el sistema operativo salta a la luz otra diferencia del VMWare Player con la versión Workstation o Server: la falta de las VMWare Tools, instalables en la máquina Guest. Igualmente, esto tiene una muy simple solución: vamos al archivo .tgz que bajamos de la versión trial para Linux de VMWare Workstation y si buscamos un poco vamos a encontrar un archivo llamado Windows.iso o Linux.iso, los cuales son las imágenes de CD de las VMWare tools para Windows y Linux respectivamente. Montamos la imagen en la VM e instalamos las tools.

Ahora si, ya estamos en igualdad de condiciones para comparar los dos productos. Para ver que me convenía más, decidí correr unos benchmarks. Pese a que estuvieron bastante más parejos que los benchmarks anteriores, VMWare sigue superando a Virtual PC en performance.

Una cosa loca que me paso con los benchmarks es que al hacer un benchmark de disco, VPC sacó incluso más puntaje que la maquina nativa, por lo que pienso que debe estar haciendo alguna trampa en esa categoría…

Como todavía no quería cerrar el veredicto, me puse a usar la VM para ver como era el tiempo de respuesta y usabilidad. En una palabra, excelente. Como dato extra, la maquina host queda bastante más viva al correr la VM que con VPC.

Por lo tanto el veredicto final es: VMWare sigue ofreciendo superior performance, pero ahora es seguido bastante más de cerca por Virtual PC.

¡Hasta la próxima!

Z

2007-04-22

Vuelta al Blog, vuelta a XP

Hace una banda que no escribo nada!!

Ya que es un blog bastante nerd, solo voy a poner las cosas nerd-reelevantes:

  • Volví a XP. Vista es muy lindo y todo lo que quieran, pero todavía esta verde. Para las cosas de desarrollo y, en general, el uso de la red todavía anda mal. Más aún, con la IBM, XP vuela. Pero vuela en serio.
  • Pude usar bien (tanto en Vista como XP) el acelerómetro de la Thinkpad. En unos días subo unos ejemplos de unos jueguitos tontos que hice.
  • Salió Ubuntu 7.04 – Feisty Fawn! Ya lo tengo corriendo y configurado en mi máquina desktop. 10 puntos…
  • Salió el custom firmware 3.30 OE para la PSP. Para quienes quieran bajarlo, vayan a la página que recomendé hace unos posts.


 

Otro tema: para quienes tengan problemas para ver DVDs en la notebook porque se les escucha muy bajito (en WMP), les paso 2 tips:

  1. Usen el VLC. Si le ponen el volumen al taco, se escucha bastante bien.
  2. Bajense el ultimo AC3Filter, pongan que tienen salida stereo de 2.0 y suban el volumen de ahí. La diferencia es abismal.


 

Un saludo!!

Z

2007-03-20

New Toy: PSP

Desde el día de hoy soy un feliz poseedor de una PSP (también conocida como Gameboy con Esteroides).

Este minibichito tiene de 3 a 8 horas de autonomía (dependiendo del volumen, brillo y cosas extras como el WiFi) y capacidad de proceso similar (si no, superior) a la de una PSOne.

Lo mejor de todo es que como vino con un Firmware menor al 2.81 (2.60) pude actualizarlo perfectamente para que use un firmware custom, que permite correr libremente juegos backupeados, para decirlo de alguna forma y… todos mis juegos de PSOne con una imagen de CD desde un MemoryStick Pro Duo! (si… me compré uno de esos), aparte de emuladores y un montón de cosas mas.

Bueno, para quienes la tengan y quieran saber como actualizar su firmware o cosas similares, les dejo unas páginas que me fueron muy útiles:

http://homepage.eircom.net/~pspcalo/index.html - Todo sobre como actualizar a cada firmware, con guías paso a paso. Muy útil.

http://foro.tales-tra.com/viewtopic.php?t=109 – Popstation. Programa para pasar las imágenes de CD de PSOne al format de la PSP. Must Have.


 

Hasta la próxima!

Z

2007-03-19

Si fuese un superheroe sería Superman (o Spider-Man) y si fuese un supervillano, sería Dr. Doom

Dando vueltas por la red encontré unas páginas muy piolas: http://www.thesuperheroquiz.com/villain/ y http://www.thesuperheroquiz.com/


Con unas cuantas preguntas, te dicen que superheroe o supervillano serías. ¡A mi me salió Superman (y Spider-Man en segunda instancia) - ahora entiendo por que esos dos son mis superheroes favoritos :D - y como supervillano Dr. Doom!


You are Superman


You are mild-mannered, good,
strong and you love to help others.




Superman 80%
Spider-Man 70%
Green Lantern 70%
Robin 62%
Supergirl 50%
The Flash 50%
Batman 45%
Hulk 40%
Iron Man 35%
Wonder Woman 30%
Catwoman 25%


You are Dr. Doom


Blessed with smarts and power but burdened by vanity.



Dr. Doom 61%
Riddler 60%
Juggernaut 53%
Apocalypse 52%
Dark Phoenix 52%
The Joker 47%
Lex Luthor 43%
Magneto 42%
Mystique 37%
Green Goblin 33%
Two-Face 33%
Catwoman 29%
Kingpin 28%
Mr. Freeze 26%
Poison Ivy 23%
Venom 19%


Zaiden

2007-03-13

Ordenando los DVDs

Ayer se me dio por ponerme a ordenar los DVDs de casa.


Mala idea.


No me había dado cuenta que llegué a tener tantos DVDs. Decidí que la mejor forma de organizarlos es poniéndolos en carpetas en vez de cajas. Lo que pasa ahora es que no se que voy a hacer con las cajas (si a alguien le interesa comprar unas 200 – 300 cajas de DVD, avíseme J).


Ordenando DVDs


Zaiden

2007-03-07

Problema con software de Thinkpad y Internet Explorer

Gente, si alguien tiene una Thinkpad con todo el soft de Lenovo instalado y está teniendo problemas con el IE7 (los tabs tardan muchísimo en abrirse), pruebe desinstalar el ThinkVantage Client Security Solution for Vista. Eso lo arregla.

Zaiden

2007-03-05

Instalando Ubuntu Linux 6.10 en un disco USB o Pendrive

En este post voy a explicar cómo instalar Ubuntu Linux 6.10 (y probablemente cualquier versión posterior) en un disco externo USB o Pendrive (siempre y cuando tenga suficiente capacidad).

Primero que todo, configuramos en el BIOS que el orden de booteo tenga antes que el disco interno, el CD/DVD y el booteo por USB. Arrancamos la máquina con el CD de Ubuntu colocado e iniciamos el LiveCD. Antes de iniciar la instalación, conectamos el Disco o Pendrive a la computadora (nota al margen: en mi caso, tengo un disco de notebook conectado por un cable IDE-To-USB. Para que este funcione tuve que jumpearlo para que sea Master ya que con Cable Select no lo detectaba). Iniciamos la instalación y cuando nos pregunta en que disco instalar, elegimos el disco externo (en mi caso, /dev/sdb2). Cuando pregunta donde instalar GRUB, cambiamos (hd0) por el dispositivo en el que instalamos Ubuntu (en mi caso, sería /dev/sdb, sin los paréntesis y sin ningún número). Cuando termina la instalación, reiniciamos la maquina recordando sacar el CD de instalación antes de que vuelva a bootear.

Al volver a iniciar la computadora, el disco externo ya debe encontrarse conectado y si todo salió como esperábamos aparecerá el menú de GRUB para iniciar el Linux.

En mi caso, me paso que al seleccionar cualquier opción de Ubuntu en GURB me decía "Error 17". Esto ocurre porque al bootear desde el disco externo, el disco pasa a ser la primera unidad, entonces su denominación cambia por /dev/sdb1. Para solucionar esto presionen "E" sobre la opción que quieren usar y nuevamente E sobre la línea que dice: "root        (hd1,1)" (o similar) y cambien el primer 1 por un 0. Les debería quedar así: "root        (hd0,1)".

Una vez editado, toquen B para arrancar (creo que es B) y... tadaaaa! Ubuntu debería estar arrancando.

Para no tener que tocar el menú de arranque cada vez que inicia la máquina, desde su Ubuntu editen en archivo /boot/grub/menu.lst y cambien lo mismo que cambiaron recién en el menú de GRUB, pero en este archivo.

Cualquier duda, comenten acá. No me manden mails así otras personas también se benefician con su pregunta.

Un saludo!!


 

Zaiden

2007-02-27

A mover esas Notebooks!

Desde que Jony me dijo que las ThinkPad nuevas traen un sensor para poder medir la inclinación de la notebook, estoy con ganas de hacer alguna aplicación tonta que lo use.

Resulta que ya hubo gente a la que se le ocurrió, y si buscan en YouTube van a encontrar videos de gente manejando el TuxRace (famoso juego de carrera de pingüino en 3D de Linux) con el movimiento de la ThinkPad.

Habiendo visto esto, me emocioné bastante ya que confirmaba que lo que yo quería se podía hacer perfectamente.

Buscando por internet encontré la pagina de un flaco que hizo un programita de ejemplo en Python que usa el driver de este acelerómetro y obtiene los valores. Buscando un poco mas también pude encontrar casi el mismo ejemplo en C++ y C# (voy a dejar el ejemplo en C++)

El único problema, fue que al ejecutar el DeviceIoControl me tira un error y no puedo leer los valores. Si alguien llega a tener una idea de que puede ser lo que pasa, por favor digame. Igualmente ya le pregunté al flaco que lo hizo en Python, a ver si me puede dar una mano.

El ejemplo en C++ (compilado en VC++ 2005):

#include
"stdafx.h"

#include
<iostream>


 

using
namespace std;


 

//.........jun hirabayashi............................

// this C++ class was ported and modified from C# class

// http://www.ussg.iu.edu/hypermail/linux/kernel/0412.1/0974.html


 

#include
"windows.h"

#include
<iostream>


 

struct ShockData

{


int status;


short
int x0;


short
int y0;


short
int x1;


short
int y1;


short
int x2;


short
int y2;


short
int x3;


short
int y3;


short
int x4;


short
int y4;


short
int x5;


short
int y5;


short
int x6;


short
int y6;


short
int x7;


short
int y7;


short
int x8;


short
int y8;


short
int x9;


short
int y9;


short
int x10;


short
int y10;


short
int x11;


short
int y11;


short
int x12;


short
int y12;


short
int x13;


short
int y13;


short
int unknown0;


short
int unknown1;

};


 

class Accelerometer{


private:

HANDLE hFile;

     ShockData AccelerometerData;


int OffsetX;


int OffsetY;


protected:


public:

Accelerometer();

~Accelerometer();


bool GetAccelerometerData(void);


int Status(void);


int X;


int Y;

};


 

Accelerometer::Accelerometer()

{


try

{

hFile = CreateFile(L"\\\\.\\ShockMgr", GENERIC_READ,

FILE_SHARE_READ | FILE_SHARE_WRITE,

             NULL, OPEN_EXISTING, 0, NULL);


if(hFile == INVALID_HANDLE_VALUE)


throw
"Failed to open ShockMgr.";

}


catch(...){}

OffsetX = 0;

OffsetY = 0;


if ( GetAccelerometerData() )

{

OffsetX = -X;

OffsetY = -Y;

GetAccelerometerData();

}

}


 

Accelerometer::~Accelerometer()

{

CloseHandle(hFile);

}


 

bool Accelerometer::GetAccelerometerData(void)

{


unsigned
long ulRead = 0;


try

{


if( !DeviceIoControl( hFile, 0x733fc, NULL, 0, // via IOCTL(0x733fc)

(void *)&AccelerometerData, 0x24, &ulRead, NULL))


throw
"Failed to DeviceIoControl";

X = AccelerometerData.x0 + OffsetX;

Y = AccelerometerData.y0 + OffsetY;


return
true;

}


catch(...)

{


return
false;

}


return
false;

}


 

int Accelerometer::Status(void)

{


return AccelerometerData.status;

}


 


 

int _tmain(int argc, _TCHAR* argv[])

{

    Accelerometer *pAccel = new Accelerometer();

    pAccel->GetAccelerometerData();


 

    cout << "X: " << pAccel->X << " Y: " << pAccel->Y << endl;


 

    system("pause");

}

Si llego a saber cómo solucionarlo, prometo postearlo.

Zaiden

2007-02-26

El regreso de los muertos vivos (o por que el Firewall de Vista se reactiva solo)

Pese a los reiterados intentos de desactivar el Firewall que Windows Vista instala de forma predeterminada, el mismo vuelve a activarse de forma sospechosamente aleatoria luego de un tiempo.

Si realmente no quieren usar el Firewall de Windows Vista, primero que todo, desactívenlo de la forma tradicional y luego de hacer esto hagan click derecho sobre Computer => Manage, van a la parte de servicios, doble click en Windows Firewall y cambien el tipo de inicio a Disabled.

Sé que es algo bastante tonto, pero ya vi mucha gente a la que se le reactiva solo el Firewall y ni siquiera se da cuenta.

¡Hasta la próxima!

Zaiden

2007-02-24

Cortito: ¡Pude volver a postear desde Word 2007!

Desde hacer un tiempo que el posteo desde Word 2007 había dejado de andar para Blogger, pero por suerte ya está operativo nuevamente :D

No sé si habrá sido una actualización de Office, o de Blogger ¡Pero la cosa es que anda!

Zaiden

New Toy! Lenovo ThinkPad T60p

Como sabrán por mi último post, la querida notebook HP COMPAQ V2069 cumplió su ciclo el día que decidió inmolarse cerca de mi persona.

Estuve cerca de un mes sin laptop, lo que me llevó a volver a usar la desktop para algo más que rockola o MuleComputer. En esa máquina tengo instalado un Ubuntu Linux 6.10 y aprovechando que tengo instalada una veterana pero todavía potente placa 3D (una ATI Radeon 9600XT) aproveché para ver a la nueva niña bonita del mundo Linux: Beryl, XGL y demás yerbas.

¡Simplemente agregué los repositorios de Beryl, 2 clicks en el Synaptic y listo! Me tomé mí tiempo y terminé dejando al Ubuntu como un bello Mac OSX lleno de efectos 3D, jeje :D.

Varias semanas pasaron, hasta que finalmente el chiche nuevo llego: Una Lenovo ThinkPad T60p con las siguientes specs:

  • Procesador Intel Centrino Duo (Core 2 Duo) T7200 (2Ghz).
  • 1GB RAM DDR2.
  • ATI FireGL V5250.
  • HD 100GB, 7200 RPM.
  • Pantalla wide de 15"4 a una increíble resolución de… ¡1680 x 1050! (¡Se ve bárbaro desde cualquier lado!).
  • Grabadora de CD/DVD.
  • Batería extendida de 9 celdas.
  • Y demás chiches (Lector de huellas digitales, Bluetooth, IR, Red Wireless, etc…).

Apenas llego, hice los DVDs de recovery (por cualquier cosa) y… ¡Zas! Instalé Windows Vista. Debo admitir que fui un poco miedoso y me mantuve en la versión para x86 (32 bits). Sin embargo, RodoF fue más valiente y se mando directamente a la versión x86-64, ya que este procesador implementa la arquitectura desarrollada originalmente por AMD, pero que Intel llama Intel64 (en contraparte de AMD64).

Al principio pensé que teniendo 1GB de RAM iba a notar demasiado acceso al disco por swapping, pero para mi sorpresa la máquina anda con mucha soltura, incluso usando muchas aplicaciones a la vez (el único problema que noté hasta ahora es que tarda bastante en prender y en apagar, pero estoy sospechando que el culpable de eso es alguno de los programas de ThinkPad. Tendré que investigar al respecto).

Bueno, esto es todo por ahora. Hasta el próximo post!

Zaiden

PD1: En 2 semanas quemé una notebook, una desktop, un disco e hice que otro tirara errores de S.M.A.R.T. ¡Juro que fue sin querer!

PD2: Le voy a decir a Jony que se postee algo, porque hace mucho que no escribe nada.

Dato Loco: El cerebro no procesa negativos. Ej.: NO pienses en un elefante rosa… ¡Viste!

2007-01-24

Notebook Explosion!

Hola! Vengo hoy a contar la historia de como sobreviví al segundo atentado contra mi vida en menos de un mes (el primero fue la bomba colocada por la ETA en el aeropuerto de Madrid, al cual llegue solo dos horas mas tarde de que ocurriera la explosion)

Ese lunes parecia ser un lunes como cualquier otro lunes de verano: los pajaros cantaban, la temperatura del asfalto era superior a la del sol y la red de Quantum andaba mas lenta que tortuga liciada.
Dado que estaba laburando por RDP sobre otra máquina (y como ya dije, la red wireless no estaba en sus mejores momentos) decidí probar suerte cambiandome de lugar en la oficina, para ver si lograba tener una mejor recepción.

Una vez encontrado el nuevo lugar (pero aún manteniendo el mismo enchufe para la notebook, ya que estaba conectada en una zapatilla ubicada entre las dos locaciones) enchufé la computadora portatil.

Como casi siempre uso una maquina por RDP, suelo conectar un monitor extra a la notebook, asi puedo ver ambas computadoras a la vez. En mi lugar original ya tenia un monitor, pero para el nuevo "spot" iba a tener que trasladarlo, hasta que me di cuenta que al lado mio ya se encontraba un monitor, enchufado y andando, pero que nadie usaba, por lo que procedí a conectarlo.
En el momento que acerqué la ficha del monitor al conector de la notebook, lo primero que vi fue una especie de "relampago localizado", seguido de una bola de fuego (todo esto sobre mi mano).

La computadora se apagó instantaneamente. Y lo que siguió fue... olor a pistola de cebitas.

El resultado del nuevo atentado (nuevamente planeado para que "parezca un accidente") fue: La notebook ya no prende. El conector para docking station quemado-derretido y - por suerte - la preservación de los 5 dedos de mi mano izquierda.

La cosa es que por ahora estoy sin máquina, pero espero que en estos dias se solucione.

Hasta la próxima!

Zaiden

2007-01-19

Existe un lugar mejor, y se llama "London"

Hace unos días volví de mis vacaciones por europa. Me fui dos semanas para pasear por Inglaterra y Holanda.

Los primeros 10 días (incluido Año Nuevo) los pasé en Inglaterra. 3 días cerca de Norwich y una semanita en London.

London es, sencillamente, espectacular: la vista, las cosas, los lugares, la gente... todo! El único problema que tenía era la guita. Considerando que el cambio esta 6 a 1 con los Pounds y el Peso argentino, estaba un poco limitado en el factor shopping. El tema es que ahi se encuentran todo tipo de cosas que nunca van a llegar para aca (como ediciones de coleccion de DVD de Star Trek, modelos para armar, y mil cosas mas). Lo que noté es que, pese a lo que yo pensaba, no estamos tan atrasados aca en materia de celulares. Allá la mayoria de la gente usa las mismas porquerías que usamos aca (por ejemplo, mi celular - que tiene mas de 2 años - con Windows Mobile 2003 es muchisimo mejor que el 95 % de los celulares que venden ahi).

Después de London me fui para Amsterdam por 3 días, donde me encontré con mi amigo Chavito. También... espectacular! Muy muy lindo, aunque el clima nos arruinó un poco la vista los primeros dos dias.

Bueno, eso es todo. Quería escribir algo porque si no, el blog queda medio muerto. Cuando vea algo copado, lo posteo.

Zaiden

2006-12-09

Que NO hace el código en la vida real (y si hace en las películas)

Antes que todo, quiero aclarar que este texto no es mio, sino que es una traducción que hice de un excelente artículo que pueden ver aca: http://www.drivl.com/code.html

 

1. El código no se mueve

En las películas y en television el codigo siempre está navegando por la pantalla a increibles velocidades; está presentado como un flujo indecifrable de letras y números que tienen sentido perfectamente para el programador, pero imposible de comprender por cualquier otra persona. Entiendo que para la persona que no comprende, las habilidades de un programador pueden parecer increiblemente complejas, pero... honestamente, piensan que podemos leer mierda que no está quieta? Sería como tratar de leer seis diarios, volando en un tornado. Seguro, puedo ver como compila un kernel, tirar un tail de un log o, simplemente, ir viendo que tira el output de un programa - pero la mayoría de lo que puedo sacar de eso es cuando la ejecución frena y realmente puedo hacer scroll para arriba y ver que carajo pasó (excepto que el output haya ido suficientemente lento como para poder leerlo mientras salia)

 

2. El código no es texto verde sobre fondo negra

Seguro, puede ser texto verde sobre fondo negro si querés, pero la mayoría de los programadores usamos syntax highlighting y los sysadmins configuran su shell para usar colores ANSI

 

3. El código tiene estructura

Según las peliculas, todos los programadores odian las teclas space y enter. En el mundo real, el código tiene estructura - tiene saltos de linea, espaciado e indentación. Seguro que todos nosotros hemos escrito nuestra porcion de hacks ilegibles: yo solía escribir un montón y tenia la destreza de escribir horribles regular expressions que hicieron que varios de mis sucesores haga seppuku, pero esos días terminaron. Ahora es todo claridad.

 

4. El código no es tridimensional

Se acuerdan en Hackers cuando la Gibson era representada como una ciudad tridimensional, la cual los hackers tenian que navegar? Mierda! Nosotros usamos un poco de color en nuestro shell para hacer las cosas un poco mas claras, pero la última vez que chequee mi terminal no requería OpenGL. Estoy laburando! - No estoy jugando al Quake...

 

5. El código no hace "blip!" cuando va apareciendo en pantalla

Esto va para cualquier texto, no solamente código. Cuando el texto aparece en mi monitor no hace blips - Esto no es 1902 (o cuando sea que los monitores hacían eso). Esta es una de las mas comunes ofensas en las películas de Hollywood. En casi todas las películas donde hay una escena donde un personaje está escribiendo un E-Mail o navegando por Internet, el texto hace un blip cuando aparece. Se dan una puta idea de cuan irritante puede llegar a ser eso en la vida real? Este artículo solo serían unos treintamil blip!

 

6. El código no puede ser crackeado por un nene de 8 años en cuestión de segundos.

Lo lamento, pero simplemente no.

 

7. No todo el código está hecho para ser crackeado

Hollywood ama mostrar que la noción de programar, la encripción y la computación compleja en general son todo la misma cosa: una gran cantidad de datos secretos que tienen que ser rotos por un hacker realmente inteligente. Esto de alguna manera se puede llegar a entender ya que el término código es ambiguo. En el contexto de la computación, código tiene comunmente dos definiciones:

  1. La representación simbolica de instrucciones, las cuales pueden ser comprendidas por una computadora - como "Tu código PHP es una mierda"
  2. La transformación disfrazada de un mensaje - "Los transmisores del código Navajo en la segunda guerra mundial"

Hollywood comunmente usa la segunda para toda actividad desarrollada por un programador. No hay arrastre de ventanas, llaves que cierran IFs o escritorio. Todo en la computadora toma la forma de un mensaje encriptado, lo cual debe hacer ver porno un real quilombo.

 

8. El código no es simplemente 0100110 010101 10100 011

Seguro, cuando bajas al nivel binario es todo 1s y 0s, pero quien hace eso? Yo nunca conocí a nadie que codee en binario.

Hey directores de Hollywood: los programadores usan esa cosa bonita llamada Alfabeto. Tiene letras que podes juntar para formar palabras. Nosotros incluso ponesmos espacios entre esas palabras (ver #3)

 

Tambien, el chiste de que todo en una computadora son 1s y 0s se volvió dolorosamente no gracioso. Esta a la misma altua del chiste del usuario que usa la bandeja de su CD como posa-vasos. Estoy bastante seguro de que escuché es chiste mil veces por 1997. Solo por el hecho de que toda la data en una computadora es finalmente representada por unos y ceros no quiere decir que la base detras de eso es tan simple como un uno o un cero. Eso sería como decir que que toda la humanidad es un cacho de átomos de carbono (o de lo que sea que estamos hechos), asi que la próxima vez que alguien me robe el auto me puedo reír y decir "Uh! Esos tontos atomos de carbono..."

 

9. La gente que escribe código usa el mouse

Según Hollywood, la mayoría de los programadores no descubrieron como usar un mouse. Seguro, tipeamos rápido, pero el mouse es una herramienta muy util y no hay motivo para que lo abandonemos. Mientras disipamos estereotipos, también me gustaría decir que no todos los programadores son locos come-virgenes que juegan al World of Warcraft. Algunos de nosotros hacemos ejercicio y tenemos una vida social activa. Incluso, Algunos incluso han tenido sexo! Mierda!

 

10. La mayoría del código no es, necesariamente multiplataforma

Recuerdan en Independence Day, cuando el flaco matemático con cara de boludo escribe un virus que funciona tanto en su laptop apple como en la nave madre de lo aliens? Mierda que funciona!

Si la vida real fuese asi, yo podría portar wordpress a mi tostadora...

 

Alguna otra que se les ocurra?

2006-12-08

¿Como que "Yo Probé"?

A ver... ¿Alguien me puede decir a quien se le ocurrió que la gente iría a usar una remera que dice, bien grande "Yo Probé" en la espalda?


(perdon por el comentario asi, ahora los pongo en contexto)


Como conté hace unos dias, la gente de MS me trajo una Notebook a casa con Windows Vista y Office 2007 para que la probara durante una semana. La cosa es que cuando la pasaron a buscar, me dejaron una remera negra con el loguito de MSDN adelante y los logos de WinVista y Office2007 atrás. Si la remera terminase ahi, estaría buena... pero no! A algún genio de marketing se le ocurrió ponerle un cartel grande que dice "Yo Probé" arriba, en la espalda.


No se habrán dado cuenta que, al menos aca en Argentina, la frase "Yo Probé" podía llegar a tener algún doble sentido (y por las dudas, por si alguno no se dio cuenta de que estoy hablando, le recuerdo la frase "Macho es el que prueba y no le gusta..." y todo bien, pero yo no probé ni tengo intenciones de hacerlo :D)


Ahora no tengo mas remedio que apelar a las habilidades adquiridas en Bricolage de mi hermana para que me ayude a modificar la remera para que se lea la leyenda "Yo no probé" y abajo que se lea "Ni quiero" :D


Hasta la próxima!

Zaiden

2006-12-01

Nooo... PageFile no hay... (con música de Woman No Cry)

Desde hace mas de una semana estoy usando Windows Vista sin PageFile y debo decir que los resultados son excelentes.

Al disponer de 2GB de RAM, me aventuré a configurar Windows para que no usara PageFile. Por ahora nunca tuve problemas del tipo "Out of memory" ni nada similar. El uso normal de la máquina la mantiene con un consumo de, aproximadamente, un 50% de la memoria (1GB) y con una carga importante (compilando varias cosas grandes + Photoshop + Internet Explorer con varias paginas + Word + Excel + Outlook) no llega a superar 1.5GB de memoria utilizada, por lo que parece que no me va a traer problemas.

Al no estar paginando al disco, la maquina está siempre con una velocidad de respuesta altisima. Por ejemplo, antes si no usaba la pc por un buen rato, maximizar Outlook tomaba unos cuantos
segundos. Ahora la respuesta es instantanea. :D

Alguien sabe de alguna contraindicación importante (y real, no un caso hipotético) de no usar Pagefile?

Un saludo!!

Zaiden

Problemas para postear el Blogger desde Word 2007 o Windows Live Writer

Desde hace unos dias que tengo problemas para postar aca, en Blogger desde Word 2007 o Windows Live Writer.

Alguien sabe a que se puede deber esto?

Zaiden

Microsoft me dio una Notebook para probar Vista y Office 2007 por una semana (¿?)

Hace más o menos un mes y medio, haciendo tiempo hasta que me entregaran el resultado de un parcial, vi un mail de Microsoft, anunciando que le iban a prestar notebooks con Windows Vista y Office 2007 a algunas de las personas que llenaran correctamente unas preguntas (las cuales no poseían un grado importante de dificultad). Dado que estaba sin mucho que hacer, procedí a llenar las preguntas y aplicar para el concurso. Obviamente, 30 minutos más tarde esto ya había desaparecido por completo de mi memoria.

En el día de ayer, me sonó el teléfono mientras manejaba hacia la facultad. Atiendo haciendo malabares para no chocar y escucho: “¿El Sr. Pablo Zaidenvoren?”. Y paso a responder: “Eh… si. Mira, discúlpame. Estoy manejando (bocina, bocina, insulto, esquivar transeúnte el cual no domina por completo sus facultades mentales, insulto, bocina)… me llamarías en 20 minutos?” Corto. Ahí pensé: Seguramente es para alguna oferta de trabajo. Si llega a volver a llamar voy a tratar de decirle lo más cordialmente posible que no. Y listo, me olvidé. 30 minutos más tarde (yo ya, sano y salvo, en la facultad :D) vuelve a sonar el teléfono y al atender escucho el mismo: “El Sr. Pablo Zaidenvoren?”.

A diferencia de lo que yo pensaba, el llamado resultó ser de una señorita de MS, diciéndome que hoy me iban a alcanzar a mi casa, en el cómodo horario de 9.00 a 17.00 ( :( ) una notebook para que use durante una semana Windows Vista y Office 2007 con Visual Studio 2005 y SQL Server 2005. Esta señorita hizo oídos sordos a que le haya dicho que yo ya tenía y estaba usando los últimos productos de MS en mi notebook, por lo que procedió a confirmar el domicilio.

Lo más extraño es que supuestamente ya me habían confirmado por mail hace unas 3 semanas que yo había salido seleccionado para esto, pero se ve que el mail nunca me llegó.

Hoy, a eso de las 3 de la tarde, llegó la maquina (junto con un pequeño contrato que tuve que firmar diciendo, entre otras cosas, que si llego a perder/romper la notebook tengo que pagar algo así como… ¡¡¡3000 dólares!!!) y me dispuse a probarla.

Grande fue mi desilusión cuando me di cuenta que las versiones, tanto de Windows Vista como de Office 2007 instaladas no eran las últimas, sino que el Windows instalado es el Vista RC2 y el Office 2007 es el Beta 2 TR.

Más allá de esto, la idea está muy piola. Tenés la maquina lista para desarrollar con VS 2005 y al ser una máquina más que decente (CPU Core Duo 2, 1GB de RAM, placa de video que soporta todas las chucherías gráficas de Vista y el pulidísimo estilo de las Sony Vaio) da muchas ganas de probarla. Igualmente, me sigo quedando con el estado actual de mi máquina: 2GB de RAM, pantalla y carcasa mucho mas chica (nota al margen: hace poco probé la notebook de un amigo que es de 12 pulgadas y quedé fascinado. Yo pensaba que eran demasiado chiquitas, pero no! Son increíbles. Mi próxima máquina no supera las 13 pulgadas seguro!). Pese a no poder disfrutar de todas las transparencias y efectos que provee una placa de video con drivers WDDM (Grrr!! Odio a Intel y a esta maldita placa de video!) Sigo teniendo un Plus que tapa al resto de las cosas: Office 2007 RTM y Windows Vista RTM (y como adicional, tengo el OneNote instalado – uno de los mejores programas que vienen en la suite de Office – y el SP1 Beta para Visual Studio 2005, para hacerlo mas compatible con vista J) y eso se nota. Sencillamente, anda mejor. Por lo tanto voy a hacer todas las evaluaciones, comentarios y demás que me pidan los amigos de MS, pero basándome en la experiencia con mi máquina y no con la Vaio.

El martes próximo van a pasar a buscar la maquina, nuevamente en el mismo cómodo horario

Bueno, como diría el amigo Marcos Mundstock, finalizando este recital, escucharemos a continuación el veredicto conciso y final de Mr. Zaiden sobre la iniciativa TestDrive de Microsoft: Muy piola para quienes no pueden acceder a una maquina con las prestaciones suficientes como para ejecutar Vista u Office, o no pueden acceder al software, ya sea por la facultad por ej, o por el trabajo. Aunque nuevamente digo que, ya que la versión final ya está disponible para los subscriptores de MSDN, ¿Por qué estas máquinas no los incluían?

Un saludo, y que la fuerza los acompañe!

Zaiden

PD: Un saludo para Gaby Sz. con el que finalmente pude juntarme para que me de la tarjeta de su casamiento. Felicidades!

2006-11-24

SyncToy – La forma mas facil de sincronizar directorios entre PCs

Ayer estaba buscando alguna aplicación que cumpliese una simple función: poder sincronizar un directorio entre dos computadoras al conectarlas a la misma red.

Supuestamente Windows trae desde Win95 el famoso “Briefcase” para hacer esto, pero resulta que para que funcione, tiene que tener todos los datos a sincronizar copiados dentro de una carpeta (¿?) y al querer sincronizar directorios de unos 13GB, esto se puede tornar un poco molesto…

Dando vueltas por internet también leí que se podía usar el feature de Offline Files para esto, pero resulta que en mi maquina desktop no me dejaba usar mas de 2GB.

Finalmente encontré una powertoy maravillosa hecha por Microsft: SyncToy.
Es tan simple como útil: Seleccionar directorio de la izquierda, seleccionar directorio de la derecha y… tadaaaaaa! Listo.

Después tiene mas opciones, como que es lo que se quiere copiar, modificar o borrar en cada directorio y unas cositas mas, pero lo importante es que con 3 clics pude sincronizar perfectamente todo!

El SyncToy se lo pueden bajar desde acá.

Zaiden