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
lunes, 25 de junio de 2007
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!!!
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
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.
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
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
Etiquetas:
beagle,
colon,
dijkstra,
isabel la catolica,
las condes,
manquehue,
perdida,
perrita,
vespucio
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
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
Suscribirse a:
Entradas (Atom)