Aunque a algunos de los que me conocen quizas les sorprenda....yo a veces leo..... si si, leo libros..... sin dibujos ni nada, y en letra pequeña.... entre algunos de los que leo (literatura fantastica mas que nada) los de MundoDisco (Discworld xD) y el famosisisisisimo y extraordinario, el unico e inigualable, Terry Pratchett.... mago del humor y la narracion de nuestra epoca.
Dialogos hilarantemente epicos, batallas sangrientamente guasonas..... creo que eso lo define todo. Algunos comparan su estilo con una mezcla de Tolkien con Monty Python..... y yo, fan de Tolkien... y de las peliculas de los Monty..... puedo decir que los supera a ambos... con creces.
Sus sagas son familiares, ya que una vez llevas unos pocos libros, al juntarse y entreliarse las vidas de sus protagonistas.... eso al lector le gusta. Si no sabeis que leer para pasar un buen rato... teneis 32 libros (Que yo sepa y a dia de hoy, que este tio es una maquina de escribir con patas) de lo mejorcito del mercado. Os aseguro que los reelereis y los reelereis sin parar.
Tampoco todo son risas..... Si buscais la moraleja, el mensaje oculto que todo libro nos transmite.... los de Terry tienen mucho que decir. Sus libros llegan a tratar sobre el sexismo en "El color de la magia" o sobre el racismo en "Hombres de armas", toca un poco las narices a la iglesia en "Dioses menores"..... vamos, que sin duda os encontraris algunas similitudes con nuestra sociedad... en este hilarante mundo.
Hace ya tiempo que se de la existencia de un videojuego, no lo conseguir instalar (cosas del mal trato del CD, supongo). Tambien lei algo acerca de una pelicula que comenzo a rodarse, pero la empresa se fue a pique y se quedo en el olvido.... hoy, buscando por esa gran fuente de conocimientos que es el EMULE, me encontre con una pelicula (No la que yo lei, si no otra).... rapidamente busque en youtub a ver si alguien la habia subtitulado, pero no he encontrado subtitulacion alguna.... otra razon mas para aprender ingles asi como "fluido" pronto.
Aqui teneis el empezar.... vosotros vereis que haceis con ello. Os recomiendo leer la saga, si os gusta, ver la pelicula ^^.
Yo por mi parte, aunque supongo que nunca leera este blog.....una cosa.... Go Pratchett Go!!!!!
PD: Y ya sabeis como es la vida... si en verdad os gusta el autor. Compraros sus libros, no son muy caros y merece la pena. Yo me he propuesto acabar la coleccion... a ver si en españa tiene mas auge lo relacionado con el.... y nos llega.
PPD: Publicadlo!! Expandirlo a los 4 vientos!!! Terry For President!!!!
viernes, 28 de diciembre de 2007
Go Pratchett Go!!!
Publicado por
(brants) Gonzalo R.G.
en
17:58
0
comentarios
Etiquetas: Terry pratchett
jueves, 27 de diciembre de 2007
J0az
Mas perlas del youtub...
Publicado por
(brants) Gonzalo R.G.
en
14:08
0
comentarios
Etiquetas: Desvarios
sábado, 22 de diciembre de 2007
Llega la navidad....
Bueno!!! Por fin se acabaron las clases!!! Por fin ya no mas informatica!!! (eso estarian pensando esos alegres e ingenuos señores, señoras, señoritos y señoritas que se apuntaron al cursillo de informatica jejejeje)
Ya se que os he dado mucha caña, y algunos os costaba seguir el ritmo, pero ya sabeis como es esto, el que sigue la consigue.... ademas supongo yo que algo aprenderiais... aunque solo sea a maldecir al ordenador (fase por la que pasamos todos). Opino que los que tienen PC en casa les valdra para mas lo que yo he dado, que los que no lo tienen.... que se notaba mucha diferencia de nivel (y seguimiento) en ese aspecto.... A ver si nos vemos otro curso!!
Yo personalmente he sacado mucho de la experiencia.... que el salir "al estrado" no es facil jejejeje.
Como pequeño homenaje a ellos... aqui dejo unas "foticos"
Publicado por
(brants) Gonzalo R.G.
en
9:47
0
comentarios
Etiquetas: varios
domingo, 16 de diciembre de 2007
Me emociono...
Cuando veo cosas como esta, es cuando me alegro de ser informatico
Publicado por
(brants) Gonzalo R.G.
en
10:32
0
comentarios
Etiquetas: Desvarios
miércoles, 12 de diciembre de 2007
Apuntes .NET (C#) - Chapter 4 - Clases y Estructuras I
En C# la diferencia entre clases y estructuras es que las clases se usan para declarar un tipo por referencia, mientras que las estructuras uno por valor, mientras que en otros lenguajes hay mas diferencia de una cosa a otra. Por norma general, las estructuras son utilizadas para almacenar no muchos datos. Aunque es mas una pauta que una norma (Go Pratchett Go!! :D).
(No me convenze a mi eso de que son iguales.... supongo yo que la diferencia habra de ser mas radical que eso y en que unas llevan punto y coma y otras no, no?.... ya me enterare jejejeje)
Esta es la manera de definir una estructura en C#, Se escriben donde se escribiria una clase... es decir dentro del espacio de nombres (si tenemos).
Los constructores se aplican tanto en clases como en estructuras... es un metodo especial, llamado igual que la clase/estructura, de esta manera cuando instanciemos un nuevo tipo, este ejecutara el constructor. Si el constructor tiene parametros y es una estructura, como en este caso, podremos NO indicarlos, mientras que si fuera una clase, estariamos obligados a ello.
struct nombre_estructura {
//Esto es un constructor
public nombre_estructura(int a,string b, double c) {
this.dato1=a;
this.dato2=b;
this.dato3=c;
}
//fin del constructor
public int dato1;
public string dato2;
public double dato3;
};
nombre_estructura aux; //Funciona
nombre_estructura aux=new nombre_estructura(); //Funciona
nombre_estructura aux=new nombre_estructura(2,"uuu",1.0) //Funciona
No se si ya he echo mencion a "public", esta palabrita consigue que podamos tratar con el dato cuando manejamos alguna estructurao clase. Si no lo tuvieramos, C# no nos permitiria acceder a el. Es la contrapartida de "private" de C++.
En .NET, las propiedades (datos) en clases y estructuras, asi como sus metodos, hemos de declararlos "public" ya que son "private" por defecto ¿capicci?
Asi, si fuesemos programadores intentando matar un dragon, por poner un ejemplo eh... empezariamos construyendo el objeto "dragon"
public class dragon {
int x,y; //posiciones absolutas del bixo
int fuerza; //fuerza transformada en numero... si no ke, esperas ake te pegue?
int resistencia; //Ahi ahi... como las magic
int largo_llamarada; //demosle un arma al bixo...
int ancho_llamarada;
int direccion_llamarada; //dejemoslo en 4 suponiendo ke el mapa sea una matriz simple...
string nombre; //por si acaso nos preguntan
}
Los metodos de clase, son funciones que incorporamos DENTRO de la clase, para manejar los datos, tambien llamados "funciones miembro". En la programacion , ya sea orientada a objetos o no, es importante la encapsulacion por motivos ya mentados, asi que se deberia impedir el acceso a los dato de la clase, como ya estan declarados "por defecto" como private, hacemos public los metodos, asi manejamos dichos datos, sin peligro a que el usuario los trastee (aparte de conseguir que no pase nada si se mejora la clase y esta mantiene sus metodos)
El dragon, quedaria asi....
public class dragon {
int x,y; //posiciones absolutas del bixo
int fuerza; //fuerza transformada en numero... si no ke, esperas ake te pegue?
int resistencia; //Ahi ahi... como las magic
int largo_llamarada; //demosle un arma al bixo...
int ancho_llamarada;
int direccion_llamarada; //dejemoslo en 4 suponiendo ke el mapa sea una matriz simple...
string nombre; //por si acaso nos preguntan
public void Set_X(int val) { this.x=val; } //funciones get/para cada una de las variables....
public int Get_X() { return this.x; }
//Imaginaros que he escrito el resto... xD
}
Esto, por supuesto, puede mejorarse, puedes crear rapidamente los metodos asi..
public int X {
get {
return this.x;
}
set {
this.x=value;
}
}
A esta chorradilla (denominemosla "get/set sentences" por decir algo) le veo la pega que no me deja insertarle algun otro metodo propio.... pero bueno, igual si es posible y sencillamente no se como ^^... pero es util en cuanto a organizar el codigo, y a crear rapidamente funciones get/set.
El constructor arriba mencionado tambien es aplicable a las clases, solo que si esta lo incorpora, obliga a usarlo, no permite obviarlo. Es recomendable incluir siempre un constructor en las clases que creemos, de todas maneras el compilador creara uno basico si no se incluye, asi que por la fuerza acabara haciendolo igualmente ^^.
public class dragon {
int x,y; //posiciones absolutas del bixo
int fuerza; //fuerza transformada en numero... si no ke, esperas ake te pegue?
int resistencia; //Ahi ahi... como las magic
int largo_llamarada; //demosle un arma al bixo...
int ancho_llamarada;
int direccion_llamarada; //dejemoslo en 4 suponiendo ke el mapa sea una matriz simple...
string nombre; //por si acaso nos preguntan
//Constructor
public dragon() {
this.x=0; this.y=0;
nombre="EskamaRoja";
//......... y seteamos todas las variables asi
}
}
En .NET no existen destructores en si.... ya que la gestion de memoria lo lleva el framework y a nosotros no nos deja meter mucha mano... nos deja usar en cambio, finalizadores... que viene a ser algo parecido, y que casi que nos sirve para lo mismo... asi que estamos contentos. Un finalizador se indica con el simbolo ~ antes del nombre del metodo de finalizacion (se escribe como el constructor, pero con el simbolito coñe), y en ese metodo deberiamos efectuar las tareas de limpieza necesarias.
El Garbage Collecter gestiona los recursos de memoria, pero no es capaz de trabajar con otro tipo de recursos como manipuladores de bases de datos, graficos, etc. Asi que las clases que tengan algun tipo de datos que el Garbage Collecter no pueda manejar, sera la que tenga que llevar un destructor implementado.
Es recomendable crear a su vez un metodo que haga lo mismo que el destructor, pero que pueda ser llamada por el usuario, esto vuelve a ser mas una pauta que una norma.
Los metodos de clase, siguen siendo funciones, y como tal admiten parametros de entrada tipicos, y sobrecarga de funciones, que consiste basicamente en crear funciones con el mismo nombre, pero distintos parametros. Asi este ejemplo seria valido. Lo explicaremos mejor en otro post
public class miclase {
int x;
public void SetX() { this.x=0; }
public void SetX(int a) { this.x=a; }
public void SetX(int a,int b) { this.x=a*b; }
}
La sobrecarga de metodos tambien se usa para crear varios constructores, asi poder definir un objeto de varias maneras.
Para modificar variables enviadas a una funcion por sus parametros (lo que en C/C++ conseguiamos usando una referencia), en C# ha de utilizarse las palabras claves "ref" y "out".
nombremetodo(ref int a) { } //Definicion de metodo...
nombremetodo(ref b); //llamada al metodo....
De esta manera, podremos cambiar B en el metodo, y los cambios persistiran. Pero solo podremos enviar de esta manera variables ya inicializadas, a las que ya les hayamos asignado previamente un valor. Para poder enviar variables sin inicializar, usaremos la sentencia "out", que funciona igual que ref. (En otros lenguajes out no existe, y ref se lleva todo el trabajo xD)
Como ya me he extendido demasiado... seguire en otro post....Hasta mas ver
Publicado por
(brants) Gonzalo R.G.
en
22:00
0
comentarios
domingo, 9 de diciembre de 2007
Ficheros Configuracion .INI
Bueno... programando programando me encontre un dia que quise(Y me juego los webos ke a mas de uno la pasao), por H o por B, programarme una clase para manejar configuracion desde ficheros .INI.
Gente del fondo: "Baaah pelaooo! usa XML!! j0aZ j0aZ j0aZ miraleee"
!!Que si que si, pero yo con mis .ini!! XD
No pienso discutir cual es mejor, mas sencillo, eficaz o lo que quieran, pero a mi personalmente, que aun no he echo ningun programa que requiera ingentes cantidades de datos de configuracion, no necesito XML.... ademas, les tengo apego a los .ini
Asi pues, me ha surgido la misma necesidad en .NET, he abierto mi clase escrita en C++ ... y a trabajar
En lineas de codigo la cosa cambia mucho, si contamos plantillas de listas dinamicas, las clases hijas de estas adaptadas a la clase para los "Inis"... mas la propia clase, .... no he echo ni contarlas... pro muchas mas ... y en mas ficheros...
Visto que rafb me borro el codigo.... no creia que lo hicieran xD usando Google Docs voy a pastear el codigo a partir de ahora... de tanto en cuanto quiza lo actualize segun yo mismo vaya aprendiendo (Recordad que estas cosas son experimentos, locuras y similares)
Codigo de la clase Aqui
¿Como usarlo? Empollate el codigo y lo sabras...
PD: Despues de colgarlo me he dado cuenta de que hay 1 pequeña incongruencia en los comentarios... digo que "limpio el fichero" en el metodo save, estas eran mis intenciones iniciales... al final decidi que era mas sencillo crear o sobreescribir, dejandolo "limpio" y copiarle todos los datos. ala, a jugar a pala.
Publicado por
(brants) Gonzalo R.G.
en
21:46
0
comentarios
martes, 4 de diciembre de 2007
Freaks For President...
Hamburguesa vegetal.... ke grandes.....no tiene perdida casi ninguna de sus canciones...cojonudos...no tengo mas que añadir
Publicado por
(brants) Gonzalo R.G.
en
22:12
0
comentarios
Etiquetas: Desvarios
lunes, 3 de diciembre de 2007
Apuntes .NET (C#) - Chapter 3 - Tipos de datos
Los tipos de datos en .NET los podemos catalogar en 2 grandes grupos. Por valor y por Referencia.
TIPOS POR VALOR:
- Los tipos por valor son espacios en el Stack (Pila) cuando son variables locales y expresiones intermedias y en el Heap (Monton) en el resto de situaciones (Globales y Estaticas)
- Contienen sus datos directamente, ofreciendo un excelente rendimiento
- El tamaño maximo es de 16 bytes
- Estructuras y Enumeraciones son Tipos por valor definidos por el usuario, y se comportan exactamente igual que los demas.
- Los tipos por valor no pueden ser "null"
- Puedes declarar un tipo por valor como "Nullable" (Que puede ser null) asi: Nullable
nombre=null; O de esta otra manera int?nombre=null; - Heredan todos de System.ValueType
- La memoria asignada de estos tipos se elimina cuando esta fuera de ambito en el Stack, y mediante el Colector de basura (Garbage collector) cuando esta en el Heap (Desapareciendo con la clase a la que esta asociada)
| Tipo | Bytes | Rango |
| Char (char) | 2 | |
| bolean (bool) | 4 | |
| IntPtr | ? | |
| DateTime (date) | 8 | 1/1/0001 12:00:00 AM a 12/31/9999 11:59:59 PM |
| SByte (sbyte) | 1 | -128 a 127 |
| Byte (byte) | 1 | 0 a 255 |
| Int16 (short) | 2 | -32768 a 32767 |
| Int32 (int) | 4 | -2147483648 a 2147483647 |
| UInt32 (uint) | 4 | 0 a 4294967295 |
| Int64 (long) | 8 | -9223372036854775808 a 9223372036854775807 |
| Single (float) | 4 | -3.402823E+38 a 3.402823E+38 |
| Double (double) | 8 | -1.79769313486232E+308 a 1.79769313486232E+308 |
| Decimal (decimal) | 16 | -79228162514264337593543950335 a 79228162514264337593543950335 |
TIPOS POR REFERENCIA
- Cuando declaramos una variable de tipo objeto, se crea una referencia en el stack, y al crear la instancia en el heap por medio del operador "new", su dirección en memoria se asigna a la susodicha variable. De esta forma se puede acceder al valor del objeto por medio de la referencia.
- Si copias un tipo por referencia, y modificas la copia, ambas variables, copia hija y copia madre, seran cambiadas.
- Los String son inmutables. Cuando un String es modificado, un nuevo objeto se crea en el Heap con las caracteristicas del nuevo String, sustituyendo al antiguo String
- Heredan todos de System.Object
- Como ya hemos dicho, estos objetos almacenados en el Heap, son eliminados por el Colector de basura.
Console.WriteLine(8.ToString());
Que quizas ahora no sirva de mucho, ya que sin el .ToString() obtendriamos la misma salida, cuando avanzemos mas en el lenguaje veremos como hay ocasiones en las que usaremos el boxing para cosas mas interesantes.
CONVERSIO DE TIPOS
Conversion Implicita: (Widening Conversion) Aquella para la cual no necesitamos de ningun otro mecanismo de conversion mas que el simbolo de asignacion. Solo nos permitira este tipo de conversion si el valor que queremos convertir es menor al valor convertido. Me Explico...:
int a=10;
double b=10.0000005
a=b; //No Permitido
b=a; //permitido
Conversion Explicita: (Narrowing Conversion) Es la contraria a la implicita, la que necesitamos en el caso de que el valor a convertir no sea compatible con el valor convertido. Para ello usaremos el tipo al que queremos "pasarlo" entre parentesis (Igual que en C++).
a=(int) b; //Ahora si nos dejaria
Publicado por
(brants) Gonzalo R.G.
en
11:37
0
comentarios
domingo, 2 de diciembre de 2007
Apuntes .NET (C#) - Chapter 2 - Conceptos basicos sobre la POO
La Programacion Orientada a Objetos, a partir de ahora, POO, es uno de los paradigmas de programacion a los que quizas cueste mas "dar el salto" en un principio, luego vereis que la cosa es coser y cantar. Voy a tomarme la explicacion de este punto bastante mas " a mi manera" y dejar la docencia en manos de profesionales. Vamos, que busqueis en google.
¿Que es un objeto?
Un objeto no es mas que unos datos de informacion, y las acciones que podemos realizar con esos datos, almacenadas en una misma entidad, un objeto. Asi un objeto "Caballo", podria tener datos como Raza, Color, Nombre, Edad, Hambre, Cansancio.....
y Metodos, o "Acciones que podemos efectuar sobre esos datos" como , Comer, Andar, HacerFiletes,... ¿que es muy abstracto? en eso consiste la cosa nenes que el ejemplo del coche esta muy visto xD
Herencia
Es la capacidad de un objeto para heredar datos y metodos de otro. Al que se le denomina objeto padre. En el caso del caballo, la herencia seria como un "es un", asi el caballo "Es Un" animal. Diriamos que el caballo hereda de animal (Si hubiera definido un objeto animal).
Para usar la herencia, es necesario que el objeto del que queremos heredar haya sido diseñado pensando en ello (Aunque no obligatorio, y depende con que lenguajes... xD).
En el entorno de ejecucion .NET todos los objetos heredan de una clase base denominada "Object" y solo existe la herencia simple de objetos (Un objeto solo puede ser derivado desde una clase base). Esto nos impide, lo que yo decia antes de que por ejemplo en C++ podemos heredar de la clase que nos salga de los webs.... a veces malo, a veces bueno. A eso de heredar de la clase que nos salga de los webs, esta gente de palabras finas lo llama "Herencia multiple". En la mayoria de los casos es mas seguro no usar la herencia multiple.
El entorno de ejecucion .NET permite la herencia multiple en forma de interfaces, que no pueden contener implementacion. Ya las trataremos...
Polimorfismo y funciones virtuales
Las funciones abstractas, o virtuales, permiten al programador usar polimorfismo para simplificar el codigo. Cuando hay una funcion virtual, el programador puede pasar una referencia a la clase abstracta en vez de a la derivada y el compilador escribira el codigo para llamar a la version apropiada de la funcion en tiempo de ejecucion.
public abstract class objeto1
{
public abstract void metodo1();
}
Las clases abstractas, se usan basicamente para englobar objetos de un mismo tipo, ya que como veis, no se le puede incluir cuerpo a un metodo abstracto. Aunque si hay otras maneras de que un objeto abstracto, suministre funciones utiles para otras clases, lo trataremos mas adelante.
Encapsulamiento y visibilidad
Cuando se crea un objeto se ha de tener en cuenta que datos queremos que el usuario del objeto "Toque" y cuales no. Los detalles que no son visibles al usuario se consideran Encapsulados. Normalmente intentaremos encapsular todo lo que se pueda por varias razones:
- Reduce la posibilidad de que el usuario cambie o dependa de esos detalles en su propio codigo, ya que los cambios en el objeto podrian provocar problemas en dicho codigo.
- Los cambios realizados en las partes publicas de un objeto deben mantenerse compatibles con las versiones anteriores. Cuanto mas visible sea la clase al usuario, mas dificil es conseguir llevar a cabo este punto.
- Si tenemos muchos campos publicos, la depuracion es mas dificil.
Publicado por
(brants) Gonzalo R.G.
en
10:56
0
comentarios
Apuntes .NET (C#) - Chapter 1 - Lexico basico
C# Es un lenguaje cuyo léxico se asemeja a C o C++ con algunas pequeñas variaciones.
La estructura básica de un programa en C# es esta:
//---------------------------------------------------------------
/*
Comentario
*/
//Otro Comentario
using System; //Clases principales del entorno de ejecución .NET
public class programa { //Todo programa en C# ha de estar contenido en una clase
public static void main() { //Void main, es el inicio de la aplicación... como en C/C++
//CÓDIGO...
}
}
//-----------------------------------------------------------------
Como explico en los comentarios, todo programa en C# ha de estar escrito dentro de una clase.
Tanto el void main() como lo que antes eran variables "Globales", ahora seran propiedades de clase, y las funciones, metodos. Y todo en .NET es una clase, usease, un objeto, pa que nos entendamos.
El espacio de nombres se asemeja a los #include, solo que todo lenguaje que use .NET ya lo lleva incorporado "de serie" y nuestros "using" solo nos sirve para no tener que escribir toda la ruta del espacio de nombres... me explico
System.Console.Write("hola"); <-- Esto escribiria "Hola" en pantalla Y si mi programa lleva escrito: using System.Console; podre escribir Write("hola"); y funcionara. Es decir, que las sentencias using no añaden ninguna biblioteca, solo nos hace mas facil el acceso a ella. Dentro del espacio de nombres incluyen las siguientes anidaciones:
- Collections: Objetos como listas, colas, tablas hash....
- Configurations: Objetos de configuracion e instalacion
- Diagnostics: Codigo de depuracion y control de ejecucion
- Globalization: Globaliza nuestra aplicacion
- IO: Entrada/Salida
- Net: Operaciones de red
- Reflection: Visualizacion de los metadatos de tipos, carga dinamica y creacion de objetos
- Security: Soporte de seguridad .NET
- ServiceProcess: Creacion y gestion de servicios de ventanas
- Text: Codificacion y conversion de clases y texto
- Threading: Subprocesos y sincronizacion
- Runtime: Interop, uso remoto y serializacion.
- Data: Operaciones con bases de datos
- XML: Clases para la gestion XML
- Drawing: Clases que soportan GDI, impresion y gestion de imagenes
- Web: Clases para tratar con servicios web
- Windows.Forms: Clases para crear interfaces
- ........
Las sentencia "public" indica que el "objeto" al que precede va a ser de caracter publico, es decir, "accesible desde fuera". Que viene a ser lo contrario que la sentencia "private:" de C/C++.
Mas adelante me extendere en este tema.
Otra cosa que cabe mentar es que los tipos de datos en C# (Y creo que tambien en todos los lenguajes que corren bajo .NET, aunque no lo he mirado xD) son en realidad "pseudomacros" que llaman a los tipos de datos que alberga .NET. Explico, cuando yo creo un "int"...
int nombrevariable;
En realidad mi compilador entiende:
System.Int32 nombrevariable;
Y con esto y un bizcocho.....dew
Publicado por
(brants) Gonzalo R.G.
en
10:46
0
comentarios
viernes, 30 de noviembre de 2007
Primer Experimento C#
Como estoy dandole al 70-536, he empezado a empollar C#.
.NET me ha sorprendido por 2 cosas..... su sencillez, y la multitud de modulos a los que soy capaz de acceder "asi de buenas a primeras" sin saber mas que el "que busco".
Es decir, si se que es un socket, como funcionan los sockets y demas.... con .NET estan comidos.. mientras que en otros lenguajes la cosa se complica algo mas, quien lo haya intentado usando la Win32 me comprendera
Lo mismo podria decir con bastantes cosas mas. Asi pues, no le recomiendo a nadie .NET como primer lenguaje... pero si ya te has roto los cuernos con algun otro, descubriras que .NET te hace la vida mucho mas placentera y comoda.
Como muestra, una guinda..... Mi primera aplicacion en .NET ha sido un splitter, para lo que me he basado en el manual que incluye "El Guille" en su web (Gracias al Guille por esa web que siempre ha sido una fuente de inspiracion). Aunque mi version es un poco mas "de andar por casa".
La cosa es que en apenas 3/4 horas de trabajo ya he implementado mi clase completamente funcional.
Envalentonado por los resultados obtenidos, y a pesar de que me habia jurado no tocar el editor grafico hasta conocer mejor el lenguaje.... invierto otra hora de trabajo en crearle una GUI a mi splitter....
Conclusion.... con .NET, como dice gigatron.... construiras piramides con la punta del miembro.
Ahora a por un spyder....
Publicado por
(brants) Gonzalo R.G.
en
12:51
0
comentarios
jueves, 29 de noviembre de 2007
Matando un dragon - Heavy version...
Power Metal
El protagonista llega al castillo en un caballo blanco alado, escapa del dragón, salva a la princesa, se van lejos y hacen el amor.
True Metal
El protagonista llega al castillo y vence al dragón en una batalla utilizando su espada. Bañado en la sangre del dragón, lo hace con la princesa.
Thrash Metal
El protagonista llega la castillo, pelea rabiosamente con el dragón, salva a la princesa y se la tira.
Heavy Metal
El protagonista llega al castillo en una Harley Davidson, mata al dragón, se toma unas chelas con la princesa y después lo hacen.
Folk Metal
El protagonista llega con varios amigos tocando el acordeón, alaude, violín, y otros instrumentos extraños. El dragón se queda dormido de tanto danzar, y luego se van… sin la princesa.
Viking Metal
El protagonista llega en un navío, mata al dragón con un hacha, lo cocina y se lo come. Viola a la princesa, saquea el castillo y le prende fuego a todo antes de irse.
Death Metal
El protagonista llega, mata al dragón, se tira a la princesa, la mata y se va.
Black Metal
Llega de madrugada, en medio de la neblina, mata al dragón y lo empala frente al castillo. Sodomiza a la princesa, la corta con una daga y bebe su sangre en un ritual antes de matarla. Después descubre que ella no era virgen y la empala junto al dragón.
Gore Metal
Llega y mata al dragón. Sube al castillo, se tira a la princesa y la mata. Después se la vuelve a tirar. Quema el cuerpo de la princesa y se la tira de nuevo.
Doom Metal
Llega al castillo, ve el tamaño del dragón, se deprime y se suicida. El dragón se come el cadáver del protagonista y después se come a la princesa.
Nu Metal
Llega al castillo y se jacta de lo bueno que es peleando y de que es capaz de ganarle al dragón. Pierde miserablemente y queda hecho una mierda. Huye y encuentra a la princesa, le cuenta su trágica infancia. La princesa le sacude y se va a buscar al protagonista de “Heavy Metal”. El protagonista “Nu” se toma un prozak y se va a grabar un disco de “The best of”.
Rock n’ Roll clásico
Llega en una moto fumándose un troncho y se lo ofrece al dragón, que resultó que era su amigo. Luego acampa con la princesa en la parte más apartada del jardín, y después de mucho sexo, drogas y rock n’ roll, tiene una sobredosis de LSD y muere ahogado en su propio vómito.
Punk Rock
Le tira una piedra al dragón y huye. Pinta la “A” de anarquía en un muro del castillo. Le hace un peinado tipo “mohicano” a la princesa y abre un kiosko de fanzines en el pasadizo del castillo.
Metal Progresivo
Llega, toca un solo virtuoso de guitarra de 26 minutos. El dragón se muere de tanto tedio. Llega donde la princesa y toca otro solo explorando todas las técnicas de tonos y compases aprendidas en el último año en el conservatorio. La princesa huye buscando al protagonista de “Heavy Metal”.
Hard Rock
Llega al castillo en un convertible rojo, acompañado de dos rubias pechugonas y tomándose una botella de Jack Daniels. Mata al dragón con un cuchillo y luego hace una orgía con las rubias y la princesa.
Glam Rock
Llega al castillo. El dragón se ríe tanto al verlo que lo deja pasar. Entra al castillo, roba la laca y el lapiz de labios de la princesa. Luego convence al dragón para pintar el castillo en tonos rosados y hacerse unas mechas.
Extraido de: http://latierradeuel.blogspot.com/2006/01/estilos-de-rock-y-heavy.html
Publicado por
(brants) Gonzalo R.G.
en
19:11
0
comentarios
Etiquetas: varios
Programadores matando un dragon
Como a todo escritor supongo que le pasara, el principio siempre es lo mas dificil. Una vez se ha cogido carrerilla, lo complicado suele ser el terminar. Y como primer post, o dejo un extracto de otro blog con el que llevo un buen rato partiendome la caja toracica. Java - Llega, encuentra al dragón, desarrolla un framework para aniquilación de tragones en múltiples capas, escribe varios artículos sobre el framework... pero no mata al dragón. .NET - Llega, ve la idea del desarrollador de Java y la copia, intenta matar al dragón, pero el bicho se lo come C - Llega, mira al dragón con mirada de desprecio, tira de espada, degolla al dragón, encuentra a la princesa... y la ignora para ver los últimos checkins del cvs del kernel de linux C++ - Crea un pincho básico y va juntando funcionalidades hasta tener una espada compleja que apenas consigue entender... mata al dragón pero se atasca en medio del puente por culpa de pérdidas de memoria (memory leaks) COBOL - Llega, ve al dragón y piensa que es demasiado viejo para conseguir matar un bicho de ese tamaño y quedarse con la princesa, y entonces se va Pascal - Se prepara durante 10 años para crear un sistema de aniquilación de dragones... cuando llega el momento descubre que el programa sólo acepta lagartijas como entrada VB - Monta un arma de destrucción de dragones a partir de varios componentes, salta encima del lomo del dragón, y en la hora H descubre que la espada sólo funciona durante las noches de lluvia... PL/SQL - Recoge datos de otros matadores de dragones, crea tablas con n relaciones de complejidad ternaria, datos en tres dimensiones, OLAP, tarda quince años para procesar la información... y para entonces la princesa se volvió lesbiana. Ruby - Llega con muchísima fama, diciendo que es el mejor en hacer cualquier cosa y cuando va a enfrentarse al dragón muestra una peliculita en la que él mismo aparece matando a un dragón... el dragón se lo come de puro aburrimiento Smalltalk - Llega, analiza al dragón y a la princesa, se da la vuelta y se pira: ellos son muy inferiores shell - Crea un arma poderosa para matar dragones, pero en la hora H no recuerda como usarla shell(2)- El tío se acerca al dragón con un script de dos líneas que mata, corta, destripa, empala, pica en pedacitos y empaca al bicho, pero a la hora de ejecutarlo el script aumenta, engorda, enfurece y pone alcohol en el fuego del dragón. Ensamblador - Cree que está haciendo lo más correcto y eficiente... pero pone un A en lugar de un D y mata a la princesa para terminar follándose al dragón Fortran - Llega y desarrolla una solución con 45 mil líneas de código, mata al dragón, va al encuentro de la princesa... pero ella le llama tirillas y se va corriendo detrás del programador de java que era elegante y además es rico FOX PRO - Desarrolla un sistema para matar al dragón. Por fuera es precioso y funciona, pero por dentro está todo parcheado y cuando va a ejecutar el aniquilador de dragones recuerda que olvidó indexar los DBF. ANALISTA DE PROCESOS - Se acerca al dragón con dos toneladas de documentación desarrollada sobre el proceso de matar un dragón genérico, desarrolla un DFD para liberar a la princesa y casarse con ella, convence al dragón de que es lo mejor para el y que no va a doler. Al ejecutar el proceso estima el esfuerzo y el tamaño del daño que causará con la firma del papa, de Buda y de Joan Manuel Serrat para el plano, y entonces compra dos bombas nucleares, 45 cañones, un portaaviones y contrata a 300 hombres armados hasta los dientes... cuando en realidad tan sólo necesitaría la espada que tenía en la mano desde el principio CLIPPER: Monta una rutina que carga un array de codeblocks para insultar al dragón, cantarle a la princesa, cargar la espada a memoria, moler al dragón, limpiar la suciedad, preparar un vaso de leche condensada con moras para la princesa, follar a la princesa, darse un baño, encender el coche, ponerle gasolina y volver para casa. A la hora de ejecutar recibe un "Bound Error: Array Access" y el dragón se lo come con patatas That?s all Folks? No, con el efecto Menéame y el efecto Barrapunto coaligados, me han dejado nuevos lenguajes en diferentes foros. Paso a relataros los que más me han gustado Lisp, donde el famoso caballero andante, tras hablar con numerosos expertos en matar dragones y modelar el conocimiento que ellos poseen programa el sistema y se da cuenta... de que se ha dejado algún paréntesis (bender the offender, barrapunto) Prolog: Piensa que para matar al dragón necesita un arma. Busca en un catálogo 182014 armas. Para cuando la princesa muere de vieja ya ha logrado descubrir como fabricar todas las armas que empiezan por la A: Armas atómicas, Alabardas,Alfanges, Asesinos contratados, Armas blancas, Antiaéreos, Arcos, ... (aquelquesiente) PHP: Crea una página web que al ejecutarla eliminará al $dragón tirando de una base de datos de armas en mysql y sobre un servidor apache. Sin embargo, se olvidó el Where en la query de delete y mata a la princesa, al dragon, a los campesinos, a la bruja, al hechicero y al propio programador.
JavaScript: El programador intenta matar al gran dragón verde que lanza fuego por la boca. Crean un script que borrará al dragón cuando carge una página web para unos segundos después crear unas damiselas que lancen flores y hagan soniditos de aplausos. Por desgracia no tuvo en cuenta la estructura Dom del lagarto, también conocido como Mozilla, y lo único que consigue es rellenar su consola de errores y que el libro de mozilla narre como acabó devorado.
ActiveX: Los programadores crean un tunel para entrar a la guarida del dragón desde el castillo y ejecutar un programa que matará al dragón desde una distacia segura y prudencial. El dragón descubre el tunel, se come a los trabajadores que cavaban, a los matadores de dragones y esclaviza a todos los siervos del castillo que pasan a ser sus esclavos. El castillo pasa a ser un lugar de cría de dragones lleno crías que manda en pop ups a otros castillos. Los restos poco apetitosos de los caballeros los mete en latas de Spam y manda también a otros castillos como advertencia. (aquelquesiente)
Basic. Crean un arma capaz de matar a dragones de papel, pero mucho que la perfeccionan descubren que no sirve para matar a ningún dragón más grande que una cría de caniche. (aquelquesiente)
Matlab: Crean un bucle que calcula las trayectorias para lanzar una flecha gigante contra el dragón. El programa funciona perfectamente. Sólo faltan los voluntarios capaces de lanzar la flecha con la fuerza y puntería necesaria. (aquelquesiente, barrapunto)
Programador de videojuegos:Se pasa dos años programando una espada state of the art, con shaders y todo. A la hora de matar al dragón se encuentra con que la mitad de los caballeros no tienen fuerza para mover la espada. Luego alguien programa un parche que revela las escenas de sexo con la princesa y Hillary Clinton le monta un escándalo (rogerdv, en barrapunto).
Perl - El caballero decide matar al dragón con una expresión regular, pero se equivoca en los carácteres de comodín y acaba incluyendo en el patrón de mortalidad a Dragones, Iguanas, lagartos, perros, gatos, osos, princesas y ratones. (emezeta.com)
HyperCard: crea en 5 minutos una pila con un catálogo de armas, con fotos, gráficas y vídeos sobre su utilización y los distintos tipos de dragones que puede matar, y que además fabrica el arma elegida utilizando las herramientas de dibujo, con una interfaz impecable y fantásticos efectos visuales, lo guarda como ejecutable, le pone un bonito icono, pero cuando va a fabricar la espada no funciona porque se dejó un XCMD en casa (Home) (Zydeco, faq-mac)
Macromedia Director: crea una mágnifica interfaz destellante mata dragones, con una espada deslumbrante, fabricada a bases de Xtras de terceros fabricantes, al primer intento de matar al dragon "Script Error", entonces a duras penas se esquiva el mordisco, y se procede al segundo intento... pero el ejecutable va tan lento que se los come a todos (Victor_js, faq-mac.com)
El experto en IA: Decide crear una red neuronal que mediante casos de asesinatos de dragones pueda converger a una acción que permite realizar la matanza con el mínimo de error posible.
Cuando la red estaba lista, el programador en C ya había matado el dragon, y la princesa esta sola esperando que la follaran, pero el experto era virgen y tuvo que hacer otra red neuronal que le enseñara a tener sexo.
WEB 2.0 :Desarrolla una forma de matar al dragon utilizando XML, tonos pastel y letras grandes, y permite que todos los guerreros del mundo opinen sobre la mejor forma de matar al dragon con un sistema de tags y puntuaciones.
En medio de la discusión, una horda de trolls revienta la convencion y mueren todos.
Programador de GAMBAS: Define la clase dragon, la clase princesa, la clase espada y la clase principe sin saber ni siquiera que es una clase, y sus profesores se rien de el y le dicen que aprenda C. A la hora de compilar el programa en su iBook, le sale un error de violacion de segmento porque Gambas no corre sobre LinuxPPC por problemas de endian y termina aprendiendo C+x (C con prisas y extres) y OpenGL para matar al dragon dentro de un juego de plataformas 3D, que es mucho mas seguro que enfrentarse al bicho... La princesa piensa que la protagonista del juego se parece mucho a ella
Extraido de: http://rebotacion.blogspot.com/2006/03/programadores-matando-un-dragn.html
Publicado por
(brants) Gonzalo R.G.
en
18:43
0
comentarios
Etiquetas: programadores, varios



