miércoles, 29 de julio de 2009

Windows en Gallego

domingo, 26 de julio de 2009

LINQ to Object en 10 minutos


LINQ to Object nos permite a los desarrolladores .NET escribir "consultas" sobre las colecciones de objetos.

Tradicionalmente, el trabajo con colecciones de objetos ha sido muy utilizado, pero nos obligaba a escribir un montón de código para recorrer bucles foreach complejos que especifican cómo recuperar los datos de una colección, y así trabajar con los elementos de las listas, o para hacer conteos o sumas acumuladas o cualquier otra operación.

LINQ nos facilita todas estas acciones, basta con escribe el código declarativo que describe lo que se desea recuperar.

Pero echemos un vistazo de algunos ejemplos que nos ayuden a entender la sintaxis básica.
public static void Linq1()
{
  int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
  var lowNums =
    from n in numbers
    where n < 5
    select n;

  Console.WriteLine("Numbers < 5:");
  
  foreach (var x in lowNums)
  {
    Console.WriteLine(x);
  }
}
Con el ejemplo anterior, vemos que podemos filtrar una lista, en este caso filtramos una lista de numbers, dejando solo aquellos que son menores que 5, y el resultado será guardado en lowNums.

Como hemos visto es muy intuitivo el modo de escribir las “consultas”. Pero veamos otros ejemplos que nos muestren las cosas que podemos hacer.
public static void LinqSum1()
{
  int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
  double numSum = numbers.Sum();

  Console.WriteLine("La suma de los numeros es: {0}.", numSum);
}
También es posible hacer filtros en la suma deseada, veamos el siguiente ejemplo que lo explica mejor:
double numSum = numbers.Where(n =>; n > 5).Sum();
Acá el resultado según el juego de datos anterior seria 10. Debido a que estaríamos sumando todos los números que cumplen con la condición de que el numero sea menor que 5.

Veamos otras cosas que podemos hacer, pero antes debemos tener en cuenta que aunque la forma de escribir consultas LINQ es muy similar a las de cualquier base de datos relacional SQL, existe una diferencia y es sobre el orden en que aparecen los operadores. Pero sigamos viendo ejemplos:
public static void LinqOrderBy()
{
  List<Producto> productos = GetProductList();

  var sortedProducts =
    from p in productos
    where p.Categoria = "2"
    orderby p.Cantidad descending
    select p;
}

En este filtramos todos los productos cuya categoría sea “2“ y lo ordenamos en orden descendente por la propiedad Cantidad.

Compliquemos un poco más la consulta de forma que tome los datos de 2 listas distintas y devuelva un conjunto de elementos anónimos.

public static void LinqJoin()
{
  List<Producto> productos = GetProductList();
  List<Categoria> categorias = GetCategoryList();

  var elementos =
    from p in productos
    join c in categorias on p.Categoria equals c.Categoria
    where p.Categoria = "2"
    orderby p.Cantidad descending
    select new {
      ProductoNombre = p.Descripcion,
      ProductoNombre = p.Descripcion,
      Existencia = p.Cantidad
      };
}

En este ejemplo vemos como se relacionan las dos listas de elementos por el campo común “Categoria” y se obtiene como resultado una lista de “elementos” que es además de tipo anónimo.

LINQ “ANY"

Veamos un ejemplo. Imaginemos que tengo un:
String[n] pricesType, que contiene una lista o array de los distintos tipos de precios de un determinado elemento. Y quiero saber si un determinado tipo de precio esta en dicha lista (por ejemplo el tipo de precio "L").
Para ello podría usar Any de la siguiente manera:

bool result = pricesType.Any(s => s.Contains("L"));
//o también
bool result = pricesType.Any(s => s == "L");
 

RESUMEN LINQ TO OBJECT

Con esta lista de ejemplos he intentado trasmitir la idea básica de LINQ to Object, espero les halla sido de ayuda.

Las consultas LINQ ofrecen tres ventajas principales respecto a los bucles foreach tradicionales:

  1. Son más concisas y legibles, sobre todo al filtrar varias condiciones.
  2. Proporcionan funcionalidad eficaz de filtrado, ordenación y agrupación con código de aplicación mínimo.

  3. Se pueden trasladar a otros orígenes de datos con pocas o ningunas modificaciones.

En general, cuanto más compleja sea la operación que se deba realizar con los datos, observará un número mayor de ventajas al utilizar LINQ en lugar de las técnicas de iteración convencionales.


Notas:

En unos días continuaré escribiendo sobre LINQ, profundizaré LINQ to SQL y LINQ to XML, que son los dos temas, además de LINQ to Object que más me han solicitado; si tienes algún interés particular no dudes en dejarme tú comentario o enviarme un mail.

Puede utilizar LINQ para consultar cualquier colección enumerable, como List<(Of <(T>)>), Array o Dictionary<(Of <(TKey, TValue>)>). La colección puede estar definida por el usuario o ser devuelta por una API de .NET Framework.


Artículos Relacionados:

sábado, 18 de julio de 2009

LINQ Introducción

¿Que es LINQ?

LINQ (Language Integrated Query) Lenguaje Integrado de Consulta, y es una funcionalidad incluida en Visual Studio 2008 (.Net 3.5), que nos permite realizar consultas nativas semejantes a las de SQL.

Si se está familiarizado con las consultas SQL de bases de datos, el aprendizaje de LINQ será increíblemente sencillo.

Una de las principales ventajas de LINQ es que podemos usar la misma sintaxis para filtrar, enumerar y crear proyecciones de varios tipos de colecciones:

En Visual Studio se pueden escribir consultas LINQ con cualquier colección de objetos que admita IEnumerable o la interfaz genérica IEnumerable(T).

La mejor manera de aprender LINQ es ver y usar ejemplos, por ello les dejo acá un enlace que espero les sea de ayuda, sinceramente, esta fue mi principal fuente de aprendizaje:

101 Ejemplos de LINQ usando C# o VB.NET.

Nota:

En unos días continuaré escribiendo sobre LINQ, profundizaré primeramente en LINQ to Object y LINQ to SQL, que son los dos temas que más me han solicitado; si tienes algún interés particular no dudes en dejarme tú comentario o enviarme un mail.

Artículos Relacionados:

miércoles, 15 de julio de 2009

Google Chrome Operating System, una realidad

El proyecto Chrome Operating System

Parece que los de Google quieren meter la cabeza en todas partes. Google Chrome OS es un sistema operativo de código abierto, basado en el kernel de Linux, especialmente diseñado para su uso con ultra portátiles. Será un sistema operativo basado en la Web. Google Chrome OS correrá en x86 así como en la plataforma ARM.

La principal carta de presentación de Google Chrome OS es la propia empresa que lo desarrolla, se sabe que Google genera confianza entre todo tipo de usuarios, y esto hace que las posibilidades de éxito de su nuevo SO aumenten.

Según comunicaciones de Google, en unos meses liberaran el código para los desarrolladores y en la segunda mitad del año 2010 se ofrecerán portátiles con Google Chrome OS como sistema operativo.

¿Como se habrá tomado la noticia Microsoft?

Que Google se meta con Windows les puede traer problemas. Además, coincide el anuncio de Google con el inminente lanzamiento de Windows 7.

Microsoft será el principal perjudicado por el lanzamiento del sistema operativo de Google. Hasta ahora Microsoft reinaba sin problemas en el mercado de software para ordenadores personales (más del 88% de los ordenadores usan Windows). A pesar de que en los últimos tiempos el sistema operativo de Redmond, Windows, pierde terreno frente a Mac OS (que se acerca al 10%).

La llegada de Chrome OS es un golpe directo para uno de los principales focos de ingresos de Microsoft: las ventas del sistema operativo Windows para portátiles.

Bill Gates, fundador de Microsoft, afirmó en una entrevista que Google Chrome OS no es más que otro de los tantos Linux que existen por la red, solo que este se ha desarrollado por una de las empresas más importantes del mundo.

En fin, solo nos queda esperar por el desenlace de este nuevo choque frontal entre 2 de los gigantes de la industria.

sábado, 11 de julio de 2009

jQuery, Trucos o Consejos

En los artículos anteriores, hemos enfocado el texto hacia la inicialización de los programadores en este formidable Framework. El objetivo de este post es dar consejos o buenas practicas sobre el uso de la misma. Además de crear un espacio para que todas las personas que la hemos utilizado, escribamos a modo de comentarios los consejos para los nuevos desarrolladores que se nos unen. Si eres novato con jQuery te recomiendo comiences por aquí.

CONSEJOS O TRUCOS:

1. Almacenar los resultados en objetos jQuery

Al usar los selectores de jQuery, hemos comentado que lo que obtenemos es un array (arreglo) de elementos:

var arrInputObligatorios = $(“input.Obligatorio”);

En el ejemplo anterior obtendremos un array con todos los INPUT cuya clase sea “Obligatorio”.

jQuery siempre devolverá un array, pero que a su ves es un objeto jQuery, por lo tanto mi consejo es que el código anterior quede como sigue:

var $arrInputObligatorios = $(“input.Obligatorio”);

Al hacer esto estamos aprovechando, o podemos aprovechar, aun mas las utilidades de jQuery.

Me explico, los objetos jQuery tienen una serie de métodos que sirven para su manipulación, por lo tanto podríamos manipular la variable obtenida, por ejemplo podríamos hacer lo siguiente:

var inputObligatorio1Valor = $arrInputObligatorios.get(0).val();

Este ejemplo, nos devolvería el valor que contiene el primer INPUT con clase “Obligatorio”.

Nota: Continuaré adicionando consejos progresivamente en esta misma pagina. Te invito a que nos comentes tus experiencia, tus consejos, trucos o buenas practicas relacionadas con este hermoso Framework jQuery.

jQuery, Parte 3, Otros Filtros

En el articulo anterior escribí sobre los filtros básicos e hice una introducción sobre jQuery, en este pretendo continuar hablando sobre los demás filtros:

jQuery Filtros:

  • Filtros Básicos
  • Filtros de Contenido
  • Filtros de Visibilidad
  • Filtros por Atributos
  • Filtros Descendientes
  • Filtros de Formularios

Filtros de Contenido:

Ejemplo Descripción
$("div:contains('Derbis')"); Selecciona los elementos con el texto ‘Derbis’
$(':empty'); $('td:empty'); Selecciona los elementos que no tienen ni texto ni elementos.
$("div:has(img)"); Selecciona los elementos DIV que tenga por lo menos un elemento img
$("td:parent");
Selecciona las celdas TD, que tienen hijos, incluido textos.

Filtros de Visibilidad:

$(':hidden'); Selecciona los elementos no visibles.
$('div:hidden'); Selecciona los DIV no visibles.
$(':visible'); Selecciona los elementos visibles.
$('div:visible'); Selecciona los DIV visibles.

Filtros de Atributo:

// e.j.: Selecciona los elementos con el atributo HREF. $('[href]'); // e.j.: Selecciona los elementos con el atributo HREF="blank.html". $('[href=blank.html]'); // e.j.: Selecciona los elementos con el atributo HREF que no sea // igual a "blank.html". $('[href!=blank.html]'); // e.j.: Selecciona los elementos con el atributo HREF que // comienze con"blan". $('[href^=blan]'); // e.j.: Selecciona los elementos con el atributo HREF que // termine en ".html". $('[href$=.html]'); // e.j.: Selecciona los elementos con el atributo HREF que // tenga en cualquier parte el valor "k.h". $('[href*=k.h]'); // e.j.: Selecciona los elementos con el atributo HREF que // comienze por "bla" y termine en ".html". $('[href^=bla][href$=.html]');

Conclusión

Los selectores y filtros de jQuery no son complejos de entender, pero la mejor manera de comprenderlos y entenderlos, es practicar con ellos, de cualquier forma, espero les halla servido de ayuda este articulo.

Próximos blogs sobre jQuery:

  • Dom, Manipulación.
  • Eventos.
  • Interacción con Ajax.

No dejes de leer jQuery Consejos, Trucos y Buenas Practicas, y déjanos algún consejo o truco sobre jQuery.

jueves, 9 de julio de 2009

jQuery, Parte 2, Filtros

En días pasados escribí un pequeño resumen sobre las principales características de la biblioteca jQuery, donde además comenté sobre los selectores mas usados, para leer más sobre esto pinche aquí. También, me comprometí a continuar desmenuzando sobre las características de JQuery.

En esta ocasión comentaremos sobre los filtros jQuery.

jQuery Filtros:

La filosofía de jQuery es: primero seleccionar los elementos y después aplicar una acción sobre la selección. Ahora veremos como aplicar filtros sobre los elementos seleccionados:

Antes debo volver a comentar que la función $(), siempre devuelve un array (arreglo) de elementos. Teniendo esto es cuenta pasemos a comentar los ejemplos:

Categoría de Filtros:

Filtros Básicos

Ejemplo Descripción
$(':first'); Selecciona el primer elemento
$('div:first'); Selecciona el primer DIV
$('div:last'); Selecciona el último DIV
$('div:not(#txtName)'); Selecciona los DIV que no tenga un id="txtName"
$('div:odd'); $('div:even'); Selecciona los DIV impares. Y el 2do los pares
$('div:eq(2)'); Selecciona el tercer elemento, índice=2, comienza por 0.
$('div:gt(2)'); Selecciona todos los DIV después del tercero.
$(':header'); Selecciona los elementos: h1, h2, h3 etc....
$(':animated'); Selecciona todos los elementos animados

Sobre animaciones escribiré algún post mas adelante.

También escribiré un nuevo post sobre las restantes categorías de filtros.

Conclusión

Los selectores y filtros de jQuery no son complejos de entender, pero la mejor manera de comprenderlos y entenderlos, es practicar con ellos, de cualquier forma, espero les halla servido de ayuda este articulo.

Próximos blogs sobre jQuery:

No dejes de leer jQuery Consejos, Trucos y Buenas Practicas, y déjanos algún consejo o truco sobre jQuery.

miércoles, 8 de julio de 2009

jQuery Introducción

jQuery es una biblioteca o Framework de JavaScript, creada por John Resig, que nos facilita a los desarrolladores WEB la manera de interactuar con los documentos HTML.

En este artículo intentaré explicar alguna de sus principales características, y lo haré de la forma más práctica posible (usando ejemplos), que a mi entender es lo más productivo, y como es mi blog, jejejejej, ¡Así se hará!.

jQuery, Principales Características:

  • Selección de elementos.
  • Manipulación de elementos DOM.
  • Manejo de Eventos.
  • Manipulación de CSS (Hojas de estilo).
  • Desarrollo de Efectos y Animaciones.
  • Interacción con la Tecnología AJAX.
  • Soporte de Extensiones.
  • Compatibilidad con los navegadores más populares (Internet Explorer 6+, Firefox 2.0+, Safari 2.0.2+, Google Chrome y Opera 9+).

Por cierto, Microsoft añadirá de serie a jQuery en el IDE de Visual Studio y la usará junto con los Frameworks ASP.NET AJAX y ASP.NET MVC.

Como Adicionar jQuery a tu Página WEB

jQuery consiste en un único fichero JavaScript que contiene las funcionalidades comunes del DOM, por lo que adicionar jQuery a una página es muy sencillo:

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server/>"

<script src="scripts/jquery.js" type="text/javascript" </script>

</head>

DOM, Selector de Elementos

Lo primero, antes de comenzar, es tener en cuenta 2 aspectos que serán usados:

  1. La función $() (un alias de jQuery()) recibe como parámetro una expresión CSS o el nombre de una etiqueta HTML y devuelve todos los nodos (elementos) que concuerden con la expresión.
  2. La función $() siempre devuelve un arreglo.

Entremos en materia, y como prometí hagámoslo sobre ejemplos:

Ejemplo

Descripción

$("#txtNombre")

Devolverá el elemento con id="txtNombre"

$("div")

Devolverá un arreglo con todos los elementos div de la página.

$(".grisClaro")

Devolverá un arreglo con todos los elementos, que su estilo CSS (cssClass) sea grisClaro.

$(".grisClaro.rojoTexto")

Devolverá un arreglo con todos los elementos, que tengan ambos estilos CSS: grisClaro y rojoTexto.

$("div.grisClaro")

Devolverá todos los div con cssClass = grisClaro.

$("span, div, .grisClaro")

Pueden combinarse varias selecciones separándolas por coma. Devolverá la unión de los resultados individuales. Todos los span + los div + cssClass grisClaro.

$("#divMain input")

Devolverá todos los input que están dentro de el elemento con id = divMain.

 $("*")

Devolverá todos los elemento incluidos en el head y body de la página.

Una vez obtenidos los nodos o elementos, se les puede aplicar cualquiera de las funciones que facilita la librería, veamos un ejemplo:

$("#txtNombre").css("border","3px solid blue");

Hasta aquí lo básico de los selectores, en realidad el poder de los selectores con jQuery abarca mucho más, pero el objetivo de este post es solo dar una idea general, y que sirva para enganchar a más de uno a este fantástico Framework JavaScript.

De todas formas, los invito a que escriban algún comentario a modo de ejemplo, que sirva para enriquecer aun más este post.

Una ves llegado a este punto es indispensable hablar sobre los filtros jQuery, me comprometo a publicar en breve sobre este y otros temas de jQuery.

Les invito además a que profundicen sobre selectores en jQuery Selectors y Ejemplos en acción. Y para los mas exigentes no dejen de leerse jQuery in Action.

Próximos blogs sobre jQuery: