viernes, 14 de septiembre de 2007

13 de Septiembre Día del Programador

El día doscientos cincuenta y seis de cada año se celebra el “Día del Programador”. Esta festividad tiene por motivo reconocer esfuerzo de los trabajadores de este ambiente tan atípico y estereotipado. La razón de que se celebre este día en particular proviene de que 256 es la cantidad de valores diferentes representables en un byte de datos (lo que equivale a 8 bits).

Fuente: Wikipedia

viernes, 24 de agosto de 2007

Micro$oft MVP

Creo que es unos de los video mas ridículo, pero chistosos que he visto (sobre temas informáticos)





miércoles, 22 de agosto de 2007

¿Eres o crees ser Nerd?

Te has dado cuenta que tus gustos respecto a como pasar tus ratos libres son un tanto distinto al resto (de las masas). Que en vez de ver tele, prefieres leer un libro (no novela), que muchas veces tienes ideas en la cabeza y hasta tropiezas por la calle, ya que andas despistado del medio que te rodea.
Bueno, si tus respuestas fueron mucho "SI!!", o simplemente si quieres ver donde te encuentras parado llego para ti el "Nerd Test" (jajaja).

Acá dejo posteado mi puntaje :D


I am nerdier than 97% of all people. Are you a nerd? Click here to find out!

jueves, 5 de julio de 2007

Importando Dll para Hacer tu propio MessageBox

Bueno, hoy tengo mucho sueño, así que esto sera cortito (jejeje)

La idea básica es importar una dll (de c/c++), en este caso especifico, se importara la user32.dll de wintendo, quien se encarga del famoso mensaje de pantalla de Windows.Form (MessageBox). La idea es llamar a la biblioteca y crear nuestro propio MessageBox hispano, o sea, CajaDeMensaje (suena ridículo, pero quizas este ejemplo sencillo y base le pueda servir a alguien mas). (voy a incluir pantallazos [imágenes], para no tener que modificar este html, para que el código se distinga del resto).



Luego, llamamos a la Dll, creando nuestra propia clase, con métodos estáticos, para que se utilice igual que el original (ahí va nuestro wrapper)



Habiendo terminado nuestra clase, solo nos falta usarla. Ahora bien, el ejemplo muestra un botón, donde en el método del evento Click llama a nuestra muy querida clase CajaDeMensaje (la puedes llamar de donde quieras...esto es solo un ejemplo y en ningún momento es restrictivo)



Si se dan cuenta, nuestra clase "CajaDeMensaje" posee un método sobrecargado (Mostrar). Su diferencia es que en el primero (con 1 sólo parámetro) solo se ingresa el mensaje a mostrar, en cambio en el segundo (2 parámetros) ingresas el mensaje a mostrar, mas el título que aparece en la parte superior de tu caja de mensaje

espero que a alguien le sirva...ojalá se me pase el sueño (ya el café no me hace efecto) ZZZZZZZZZZZZZZZZZZzzzzzzzzzzzzzzzzzz.

lunes, 25 de junio de 2007

Relajandose las manos con las Propiedades

Quien no a tenido que desarrollar clases donde las propiedades son puros get y set sin mayor lógica que aquello (podría suceder al aplicar un model view presenter)(aunque obviamente suele suceder que debemos validar un valor, para agregarlo de una u otra manera). Pues bien, el caso de que sólo queremos aliviarnos el trabajo de escritura, tanto para ahorro de código, como para que no suframos de tendinitis a tan temprana edad podemos usar las propiedades de esta manera (te recuerda a una interface?):

public class DatosPersonales{
public string Nombre {get;set;}
public string Apellido {get;set;}
public string Direccion {get;set;}
}



luego, para utilizarla:

DatosPersonales misDatos= new DatosPersonales();
misDatos.Nombre="Perico";
misDatos.Apellido="Los Palotes";
misDatos.Direccion="Bajo el Puente s/n";


tataan!!!.

Personalmente, habría preferido la utilización de la palabra property (creo que seria mas listo o en su defecto, agregarla y dejar las 2 opciones...por si alguien solo desea usar un get o un set), como por ejemplo:
property string Nombre;
property string Apellido;
property string Direccion;


Pero bueno, es lo que hay, yo solo lo comento :P

Yield en C#

Básicamente, yield te permite poder retornar valores intermedios de una función, mediante la implementación de la Interfaz IEnumerable.
Esto quiere decir que podemos capturar cada iteración que pueda poseer un método, como por ejemplo:

using System;
using System.Collections;
public class Moledor
{
//Por que moledor?, porque toma un string y lo imprime caracter por caracter
public static IEnumerable Moledor(string palabra) {
int count = palabra.Length;
for (int i = 0; i < count; i++) {
yield return palabra[i];
}
}

static void Main()
{
foreach(char c in Moledor("Paralelepipedo")){
Console.WriteLine(c);
}
}
}

Ahora bien, otro ejemplo (que no es mío) es :

using System;
using System.Collections;
public class List
{
public static IEnumerable Power(int number, int exponent)
{
int counter = 0;
int result = 1;
while (counter++ < exponent)
{
result = result * number;
yield return result;
}
}

static void Main()
{
// Display powers of 2 up to the exponent 8:
foreach (int i in Power(2, 8))
{
Console.Write("{0} ", i);
}
}
}

Esto quiere decir: La operación 2^8 (dos elevado a 8) nos daría por resultado 256. Pero que sucede si queremos obtener los valores intermedios también (2^1 , 2^2,...,2^8)...entonces use yield :D nice!!!

Establecimiento implícito de tipos en C# 3.0 - No saber que es o tontera?

Buscando información por la red, me encuentro con el "nuevo" tipo de dato soportado por C# 3.0, el conocido "var" (por la gente de javascript).
Pues bien,¿que es var?; var es cualquier tipo de dato para una variable.
¿Un Variant de Visual Basic?; NO y NO. Un Variant no de ser inicializado (puede ser cualquier cosa), en cambio un var si!!! y es ahí donde realmente toma el tipo de dato (como sucede con php. Se puede no asignar el tipo de dato, pero una ver inicializada la variable, esta es del tipo de dato que se asigno).
Ejemplo:

int ñandu;
ñandu=1;

Ahora podemos decir:

var ñandu; <---Wow!!!! ñandú, a parte de ser un animal, de que tipo de dato es?

var ñandu=1; <----ahaha!!! ñandú es 1, osea entero.

Pd: El ejemplo pudo ser con una variable llamada cantidad o contador, la cual es mas autodescriptiva. Quise dejar esté nombre por 2 cosas;
1) Para aquellas personas que no sepan la existencia del ñandú
2) Para demostrar que se puede usar la Ñ (eñe).

Conclusión:

Para mi el aporte de var no es mucho: 4(para flojos?). y para uds que nota posee? (de 1 a 7, siendo 7 la mejor nota).
Luego posteré las nuevas de C# 3.0

martes, 15 de mayo de 2007

Free as a Bird

Que mejor canción para poder imitar. Luego de tanto stress, peleas en la calle, atropellos, celos, gente histérica, smog, lo único que quiero ser, es libre. Poder hacer volar mi imaginación sin la contaminación de la ciudad.
Mirar las aves volar crean un cierto celo, al querer ser parte de ellas y tener una vida de aire, limpia y pacifica...excelente the beatles.





domingo, 13 de mayo de 2007

Encontre a mi niña


El día sábado 12 de mayo recibo una llamada a mi celular...aló!!!!...Que?, SI voy enseguida...gracias gracias. Fue el llamado que esperaba.
Un vecino de del sector se tomo la molestia en recoger a mi niña, Gracias a esta persona, ahora Dijkstra esta nuevamente en casa...y jugando con newton (a morderse la cola)...y nosotros?...estamos como niño con juguete nuevo :D ....vease foto de dijkstra feliz

jueves, 10 de mayo de 2007

Se perdio mi niña

ACTUALIZACION: Dijkstra ya fue encontrada;
Si, ayer, a 5 minutos de llegar a mi casa, luego de mi día laboral, me llama mi hermano para informarme que mi perra "Dijkstra" se escapo. Llegamos lo más rápido con gogy a nuestra casa, para sacar mi auto e ir a buscar a la niña...lamentablemente no la pudimos encontrar :( .En el camino tuvimos un pseudo encuentro con ella, gogy (mi señora) salio corriendo a buscarla, pero cuando se dio vuelta, nos dimos cuenta que no era ella. Ojala vuelva, sino, esperamos que la adopte una buena familia

Pd: Se perdió en el cuadrante de las Calles Américo Vespucio, Cristobal Colón, Av, Manquehue, Isabel la Católica el día de ayer miércoles 09 de Mayo de 2007

sábado, 5 de mayo de 2007

Un poco de Seguridad en la Vida

Bueno, luego de meditar un poco (de todo un poco), llegue a la conclusión (Güau, ojala que no pierda todas la neuronas por esto) de lo muy mal que programan algunas personas. Esto es debido quizas al desconociemiento de lo que sucede en realidad.
Al escribir código, no solo debemos cumplir un objetivo (que debe ser algo claro...obtener un entregable al cliente), sino que también debemos proteger dicha información para que no sea asequible (o accesible...cualquiera de las 2 está aceptada por la RAE) para el resto de las personas (me refiero a información un tanto delicada para la empresa).
Uno de los grandes problemas radica por la utilización de sentencias SQL puras. Me refiero a esto como un simple string, como por ejemplo SELECT * FROM mi_table ....ufff que fea sentencia.
Dicha sentencia se puede armar a través de una caja de texto, como por ejemplo, aquella que consulta por un tipo de producto. Esta caja de texto se llamara txtProducto. Entonces, nuestra sentencia será de la siguiente manera:

strSQL= "SELECT producto FROM tabla_producto WHERE producto=" + txtProducto;

Para el común de los mortales esto está bien, pero le cuento que no es tan asi, debido a 2 cosas (mas importantes según yo)

1) se puede insertar codigo SQL, o también llamado SQL Injection. Esto es que agreguemos o alarguemos nuestra sentencia SQL como nosotros queramos. Ejemplo:

En la caja de texto escribimos "espacio'union SELECT @@SERVERVERSION,0,null,0-- . De esta manera obtenemos que servidor es el que se esta utilizando.

2) Al enviar una consulta SQL pura, el servidor de base de datos es mas lenta. (no voy a hacer mayor hincapié en esto).

Como podrán leer, una pequeña recomendación radica en tratar de utilizar procedimientos de almacenado o en el caso de que no los programos utilzar, entonces deberiamos restringir las entradas por texto.

Saludos

viernes, 4 de mayo de 2007

Y los años pasan

Quien no recuerda aquellos años...si, cuando teníamos alrededor de 8-10 años y por las tardes en canal 13 daban las películas de Bud Spencer y Terence Hill.
Recuerdo el capítulo del buggy, donde unos matones destruyen el muy anelado vehiculo obtenido por estos 2 personajes...jajaja, pero bueno, creo que a parte de eso, lo mas motivante de aquellas película eran las peleas..sobre todo a mi parecer las de bud










martes, 27 de marzo de 2007

Patrones de Diseño

Un patrón describe un problema que ocurre una y otra vez en nuestro entorno, así como la solución a dicho problema, de tal manera que se pueda aplicar dicha solución miles de veces sin tener que hacer lo mismo dos veces.
Los patrones de diseño se separan en:

1- Patrones de Creación
2- Patrones Estruturales
3- Patrones de Comportamiento


Patrones de Creación: Abstraen el proceso de creación de instancias. Ayudan a hacer a un sistema independiente de como se crean, se componen y representan sus objetivos.

- Abstract Factory
- Builder
- Factory Method
- Prototype
- Singleton

Patrones Estructurales: se ocupan de cómo se combinan las clases y los objetos para formar estructuras más grandes.(güau)

- Adapter
- Bridge
- Composite
- Decorator
- Facade
- Flyweight
- Proxy

Patrones de Comportamiento:

- Chain of Responsibility
- Command
- Interpreter
- Iterator
- Mediator
- Memento
- Observer
- State
- Strategy
- Template Method
- Visitor

...luego terminare algunas definiciones con ejemplos en C#

viernes, 16 de marzo de 2007

Primer Comentario

Bueno, esta es mi primera vez que escribo en un blog, así que realmente no se que mas decir.
Mejor contare algo de mi. Mi nombre es Mauricio Felipe Pacheco D., tengo 28, casado (con mi amada Olga Kublik), ingeniero (E) informático y egresado de Ingeniería Civil en Informática de la Usach (Universidad de Santiago de Chile, para los ignorantes.).
Mi pasatiempo es la informática, así que este blog sera para de aquello que me apasiona y bueno, de algunas tonteras que me han y me seguirán pasando.

Saludos