Datapayasadas

Julio 11, 2008

Realizando búsquedas simples sobre colecciones

Archivado en: C# — Etiquetas:, , — Matías @ 11:18 pm

Buenas,

Hoy voy a contarles un poquito como realizar búsquedas sencillas sobre colecciones genéricas en C#.

Imaginemos que tenemos una clase con la siguiente estructura:

public class Usuario
{
    public string Nombre;
    public string Apellido;
    public int IdUsuario;
}

Ahora, podríamos tener una lista con varias instancias de esa clase, llamemosla usuarios:

List<Usuario> usuarios = new List<Usuario>();

Hasta acá nada loco … entonces, si quisiéramos buscar alguna instancia en particular sobre esa lista, como por ejemplo, el usuario cuyo nombre es Matías podríamos hacer algo así:

Usuario usuario = usuarios.Find(delegate(Usuario u) { return u.Nombre == "Matías"; });

Sencillo, ¿no?

El método Find nos devolvería la primera instancia de entre todos los elementos de la colección que cumpla la condición. ¿Cuál es la condición?: la que le pasamos en el predicado. En este último estamos especificando que recorra la colección de objetos de la clase Usuario, y que referencie como “u” a la instancia actual, es decir, donde se encuentra parado en ese momento.
Luego se verifica que la variable Nombre sea equivalente a Matías, esto devolverá un true o false, y finalmente, si la condición se cumple, entonces finaliza el método devolviendo la instancia actual. Si se recorrió toda la colección sin haber cumplido la condición, entonces se devolverá null.

Bien, ahora supongamos que no solo nos interesa obtener la primer ocurrencia que cumple la condición, sino todas aquellas que lo hagan. Ejemplo: queremos encontrar a todos los usuarios de apellido Perez.

Para ello tenemos el método FindAll, funciona básicamente igual que el anterior, pero en vez de devolver una simple instancia, devuelve una colección:

List<Usuario> sublistaUsuarios = usuarios.FindAll(delegate(Usuario u) { return u.Apellido == "Perez"; });

Otro ejemplo: deseamos la lista de todos los usuarios cuyo Id sea menor de 100.

List<Usuario> sublistaUsuarios = usuarios.FindAll(delegate(Usuario u) { return u.IdUsuario < 100; });

Como verán es una forma sencilla y elegante para realizar búsquedas sobre colecciones en C#. Si desean más información sobre estos métodos pueden ir a la página del Microsoft Development Network, mas precisamente en los siguientes enlaces: para el Find y para el FindAll.

Bueno, esto fue “Realizando búsquedas simples sobre colecciones” para Nintendo 64, y espero que le haya gustado. Chau.
LOL

– M

Hablemos de Licencias

Archivado en: Software — Etiquetas:, , — pabloide86 @ 4:43 pm

Buenas que tal?

Hoy vamos a hablar de un tema tabú en nuestro pais que es el tema de la legalidad del software.

Digo tabú porque casi nadie habla del tema y hay mucha incertidumbre al respecto. También vivimos en una época donde el software esta a unos clicks de distancia y donde los mecanismos que protegen a los autores del software son cada dia mas inefectivos. Solo basta con buscar en San Google o Yahoo San para encontrar el numero de serie de prácticamente cualquier cosa.

Y en mi opinión personal creo que también es un problema cultural de nuestro país.

Cuando pensamos en el costo de una PC nueva solo pensamos en el costo del Hardware. Por eso a la hora de comparar una Dell o HP contra un cloncito armado por nuestro amigo siempre terminamos mostrando nuestro costado de roedor y terminamos prefiriendo el clon porque sale lo mismo pero tiene mejores componentes. Pero lo que ignoramos es que la diferencia está en que la Dell viene con licencia y la que nos arma nuestro buen amigo no.

Hace poco me toco formar parte de un acontecimiento único en mi vida: tener que instalar una licencia original de Windows XP! (adjunto fotos para que me crean!). Resulta que en el año 2000 aproximadamente se termino la tregua y los inspectores salieron a revisar que las empresas estuvieran en regla con las licencias. Resultó ser que las condiciones que ya todos sabemos hicieron que con la devaluación fuese imposible comprar una licencia en dolares! Hoy en dia no es tan asi y salieron de vuelta con la cacería. Las multas son elevadisimas (aproximadamente 2 veces y media de lo que cuesta una licencia) y para una empresa con muchas PCs puede resultar muy caro de afrontar.

De todo este proceso aprendi algunas cosas interesantes con respecto a las licencias de Windows.

Voy a hablar en general de las licencias para PyMES. Podemos dividir a las formas de adquirir licencias en dos grandes ramas:

  • OEM: son las que podemos adquirir cuando compramos una PC nueva.
  • Genuine Kit (Kit de Legalización para los amigos): son las que podemos adquirir sueltas.

Desafortunadamente la licencia es instransferible o sea que muere con el equipo por lo que tendremos que tener en consideración si el hardware de la PC que queremos legalizar tiene una esperanza de vida suficiente para amortizar la licencia. En el caso que me toco había un par de K6-II de 500Mhz que directamente fueron descartados! Realmente no valia la pena el riesgo de poner una licencia y que el equipo dejara de funcionar al poco tiempo y la licencia quede inutilizable.

El otro aspecto importante es que las licencias OEM o GK son innominadas esto quiere decir que no estan registradas con un nombre. Son “al portador”.

Por ultimo debo decir que para el caso de los kits de legalización es un requisito conservar la factura de compra! (sin esto la licencia no tiene validez).

Con respecto a Microsoft Office tambien vienen 2 tipos de licencia, una innominada y otra nominada. En caso de que Office no sea estrictamente necesario siempre podemos contar con el no tan querido OpenOffice que si bien no es 100% compatible en algunas cositas siempre safa y viene bien.

Para terminar agrego los últimos comentarios.

Existen esquemas de microsoft por contrato para empresas mas grandes donde se obtienen mejores descuentos y formas de pago.

Y acá dejo el link de Microsoft acerca del licenciamiento:

http://www.microsoft.com/conosur/technet/licenciamiento/

Y tambien cabe destacar que para las alternativas libres deberemos fijarnos en cada caso si la licencia es para uso personal o comercial.

Y a vos pebete que laburas en una empresa y si estan en forma irregular con el software siempre es mejor prevenir. Los agentes estan merodeando empresas grandes y chicas, tengas 1 o 100 PCs. Mi recomendación es pedir asesoramiento profesional antes de encarar una cruzada de estas características!

Y para vos que tenes 2 compus en tu casa compartiendo el ADSL de 640k con el alfajor Huahuey, desde lo que yo se no hay mucho de que preocuparse (por ahora) ya que las inspecciones son para empresas nomas.

Saludos y mucha suerte!

Blog de WordPress.com.