sábado, 5 de marzo de 2011
meetandroids – Bogotá 9 de Marzo
miércoles, 29 de diciembre de 2010
Ordenar arreglos con Linq
Uno de los grandes logros personales de este año, fue empezar a trabajar con la tecnología Linq del .NET Framework 4.0, no sabía todas las bondades que tiene trabajar con este "nuevo" tipo de recursos que ofrece Microsoft y que realmente optimiza varios procesos además de agilizar mucho la codificación.
Para empezar con Linq es necesario estar dispuesto a olvidar muchas de las cosas de las antiguas tecnologías como ADO.NET y viejas maneras de trabajar con elementos como arreglos y listas, además parte fundamental del proceso de aprendizaje es repetir constantemente la palabra "NOO!!" o la frase "NO puede ser tan fácil!" así que espero que tras leer éste artículo me regalen un gran "NOOO!!! increible!"
En tiempos antiguos, donde el macho alfa era quien más líneas de código podía escribir sin volverse loco o atentar contra la integridad de sus grupo de trabajo, los procesos de organización de arreglos y cosas por el estilo eran un calvario y más cuando el profesor era uno de esos malditos que quería que todos supieran como se trabaja con el antiguo método burbuja (lo sé, muchos quizá piensen en mi).
Con linq, no es necesario hacer nada de ésto, es más ni siquiera es necesario utilizar ciclos repetitivos o la clase Array para organizar un arreglo, un ArrayList o un List, así que paso a explicar como es posible organizar un arreglo con Linq.
Empecemos con un Arreglo de Strings
string[] x = new string[] {"a","b","c","d","e"};
var q = from f in x
orderby f descending
select f;
x = q.ToArray();Con éste sencillo proceso, el arreglo x que está lleno de strings, queda ordenado de manera descendente. La última linea simplemente se encarga de almacenar el resultado que está en el objeto anonimo q de nuevo en la variable x para poderlo utilizar como un arreglo, pero para esta instancia el arreglo x está compuesto por las letras en orden descendente.Ahora vamos a hacer un ordenamiento más complejo utilizando objetos de una clase dentro de una lista, para ello vamos a utilizar la clase Auto.
public class Auto {
public string marca { get; set; }
public string color { get; set; }
public string modelo { get; set; }
}
Ahora vamos a crear una lista de objetos de tipo Auto para hacer varios ejercicios de consulta con LinqListTeniendo la lista creada vamos a crear las consultas de Linq necesarias para ordenar por medio de la marca, sin embargo, la consulta es igual para organizar los elementos por su color o por su modelo, lo único que debemos cambiar es el nombre del atribto por medio del cual queremos hacer que se organice la lista.carros = new List (); carros.Add(new Auto() { marca="Renault", color="Negro", modelo="Logan" }); carros.Add(new Auto() { marca = "Mazda", color = "Blanco", modelo = "Mazda2" }); carros.Add(new Auto() { marca = "Renault", color = "Azul", modelo = "Twingo" });
var q = from f in carros
orderby f.marca ascending
select f;Ahora paso a describir un poco el funcionamiento de las consultas de Linq que estamos utlizando, estas consultas están basadas en la estructura de consulta del lenguaje SQL por lo tanto contamos con clausulas como el where, orderby, groupby, etc. La diferencia con las consultas de SQL está en el orden, ya que aquí debemos iniciar la consulta con la palabra reservada "from" después debemos poner el nombre de la variable temporal que almacenará la consulta, en este caso es "f", seguido de esto definimos el origen de los datos que es la lista carros, Podemos agregar las condiciones que queramos después de esa primera linea, así que podemos agregar la clausula where para crear condiciones o la clausula groupby para agrupar los elementos de acuerdo a un criterio. Finalmente agregamos "select f" que se encarga de hacer la consulta en el origen de datos ("carros") y almacena el resultado en el objeto anonimo q que se maneja como si fuera un objeto creado a partir de la Interfaz IEnumerable ya que cuenta con los mismos métodos y atributos.Para obtener más información sobre Linq recomiendo que sigan el Blog de mi amigo Sergio, quien también cuenta con tutoriales y explicaciones de las nuevas tecnologías de .NET. Leer más...
miércoles, 18 de agosto de 2010
Introducción a WPF
En esta ocasión @EdwinCruces, blogger del sitio Ante todo variedad me ha permitido colgar un artículo que escribió, que da una idea de como empezar a trabajar con WPF, así que aquí les dejo el post.
Lo primero que debes hacer es abrir Visual Studio (2008 ó 2010) y crear una nueva solución con la plantilla de Aplicación WPF en el lenguaje de tu preferencia (VB ó C#), dale un nombre y clic en Crear. Lo primero que verás será una especia de texto XML con un diseñador de interfaz arriba de él; ése es el lenguaje declarativo XAML (eXtensible Application Markup Language) que es con el cual se crean las interfaces WPF. Allí puedes crear botones, paneles, contenedores, elementos para multimedia, etc. Crea un TextBox, un Botón y un ListBox y dale un nombre a cada uno. Para acceder al código de la parte lógica de tu aplicación basta con dar clic derecho en el diseñador y seleccionar 'Ver código', esto te llevará al archivo Code-Behind que contiene tan solo el constructor de la clase. Ahora agrega una nueva clase estática llamada Commands que contenga un objeto estático de tipo RoutedCommand.De vuelta al XAML. Si te habías fijado el primer Tag que aparece en el archivo dice "Window", dentro de él escribe:
xmlns:local="...y se desplegará una lista con los Assemblies que tengas en el proyecto. Escoge el de tu aplicación que se ha de llamar algo así como "MiPrimerAppEnWpf (MiPrimerAppEnWpf)". Dentro del Tag del botón que creaste antes escribe:
Command="{x:Static local:Commands.Agregar}"Y ya tan solo queda que agregues en el Code-Behind el Command a la lista de CommandBindings de la aplicación y especificar cuales son los Manejadores de sus dos eventos: Execute y CanExecute. El código fuente de este ejemplo lo pueden descargar de:
lunes, 16 de agosto de 2010
Controlar eventos de teclado en C#
--
En el programa que vamos a hacer, vamos a programar un TextBox que indique las teclas que se han presionado o la combinación de teclas que se está utilizando, después de esto el desarrollo para un método específico debe ser muy sencillo.
--
domingo, 20 de junio de 2010
Lenguaje C# - Tercera parte (Condicionales)
--
| V | && | V | V |
| V | && | F | F |
| F | && | V | F |
| F | && | F | F |
| V | || | V | V |
| V | || | F | V |
| F | || | V | V |
| F | || | F | F |
if(a == b){
//acciones en caso de que se cumpla la condición}
En caso de que no se cumpla la condición también es posible utilizar la sentencia else (de lo contrario) que representa la otra posibilidad dentro de una condición que tiene número limitado de acciones.bool a = true;if(a==true) // es lo mismo que decir: if(a)
Suponiendo que se tengan más de dos opciones es posible agregar un if a un else, por ejemplo en el caso de determinar el signo de un número:bool interruptor = true //está encendido
if(interruptor){ //si el interruptor está encendido
...
}
else{ //de lo contrario
...}
Dentro de C# también existe el Switch Case que es una herramienta muy buena en caso de tener una serie de opciones preestablecidas, sin embargo no vamos a tocar esa herramienta todavía.int x = valor;if(x>0){//x es positivo}else if(x<0){//x es negativo}else{//x es neutro (0 es un valor neutro)}
Leer más...
lunes, 7 de junio de 2010
Adobe Enterprise Café - Resumen
Hoy me encontraba navegado por la WEB, y encontré una excelente aplicación hecha por Adobe, que permite estar al tanto de las novedades de sus productos empresariales y de comunidad, además de otras decenas de características. Adobe Enterprise Café es una herramienta basada en Adobe AIR, que permite conectarse a los servicios más utilizados por los desarrolladores de Adobe, todo desde el mismo lugar.
Adobe Enterprise Café, requiere que tengas cuenta de Adobe si todavía no la tienes una buena idea es obtenerla ya que gracias a esa cuenta, se pueden obtener varios beneficios en el sitio y es una cuenta que sirve para todos los productos web de Adobe.
domingo, 23 de mayo de 2010
Crear controles personalizados en Flex

..
Para iniciar, vamos a crear un nuevo proyecto de Adobe Flash Builder 4, para este caso lo llamare ControlPersonalizado, en tipo de proyecto seleccionamos proyecto WEB y utilizamos la SDK4 (con Flex 3 también es posible). Una buena práctica en el desarrollo de software, es tener un proyecto de pruebas, donde se creen las rutinas de prueba, los controles personalizados y todo lo que eventualmente pueda llegar a constituir un problema en el desarrollo, bien sea por su complejidad o por los riesgos del ejercicio.
Presionamos el botón “Finish” para cargar la aplicación.
Una de las ventajas del nuevo Flash Builder, es la posibilidad de trabajar paquetes (package), los paquetes son carpetas lógicas que permiten administrar de una manera ordenada nuestros componentes, clases, y recursos de código, etcétera. En el explorador de proyectos, buscamos la carpeta src, presionamos clic derecho, new package, y lo llamamos Componentes (la primera letra de la palabra debe están en mayúscula).
En el paquete, presionamos clic derecho, new, MXML Component.
Ponemos el nombre del Componente (cómo este funcionará como una clase, entonces la primera letra debe ir en mayúscula al igual que la primera letra de cada palabra compuesta). Para este ejercicio, vamos a crear un Campo de texto que tenga restricciones para que solo acepte números, en el campo Base don, seleccionamos la clase Group, cambiamos el tamaño por defecto a 200px por 200px (estos valores van a cambiar), y presionamos Finish.
Ahora, tenemos un nuevo archivo con código independiente de la aplicación, que también cuenta con un entorno de diseño, sin embargo no lo vamos a utilizar. Después de la etiqueta “s:Group” vamos a crear un campo de texto y debe quedar de esta manera:
Descripción: En la etiqueta s:Group, editamos el valor de ancho y alto, y lo ponemos del mismo tamaño de un campo de texto clásico: 132 x 22.
Creamos una etiqueta TextInput, esto crea un campo de texto en el formulario, el campo id, es muy importante, ya que gracias a este id, podemos acceder directamente a la información del campo. Las propiedades X y Y quedan en 0, para que se alineen al borde superior izquierdo del grupo. La propiedad restrict nos permite restringir o permitir valores dentro del campo de texto, en este caso, el campo solo admite valores numéricos, al intentar ingresar letras o caracteres especiales no será posible entrar ese tipo de datos. Finalmente las propiedades de ancho y alto del campo, las dejamos en 100% cada una, esto asegura que sin importar el tamaño final del control, el campo de texto se acoplara a su contenedor.
Guardamos y vamos al archivo del proyecto, es decir a ControlPersonalizado.mxml, estando en la vista de diseño, vamos al panel components y nos podemos dar cuenta que hay un nuevo control en la carpeta Custom:
Ahora solo basta con arrastrar el control y probar el proyecto:
Si intentamos introducir algún carácter que no sean números, no los acepta el campo de texto. La propiedad restrict se puede adicionar a cualquier campo de texto, la ventaja de hacerlo de esta manera es que no es necesario añadir esa línea cada vez que necesitemos hacer un control numérico, solo basta con crear un componente personalizado y utilizarlo las veces que sea necesario.
Finalmente para acceder a la información del campo de texto, es necesario recurrir al id del control en el formulario y al id del campo de texto, de esta manera:
Lo último que hacemos es poner un botón en el formulario, que al presionar click, llame al método mostrarTexto(), este método muestra una alerta con el texto del campo de texto. Lo realmente importante es que para acceder a la información del campo de texto, solo se necesita poner el nombre del control en el formulario (campo1Txt), el nombre del campo de texto en el componente (campoTexto) y la propiedad text de este último.
Este es el ejemplo:
Espero sus comentarios.
Leer más...
lunes, 17 de mayo de 2010
Lenguaje C# - Segunda parte (Operadores)
Siguiendo con la serie de tutoriales para aprender a programar con C#, esta vez escribiré sobre el uso de los operadores, su importancia y algunos ejemplos de como funcionan, no es un tema complicado pero siempre es necesario saber cómo funcionan.

--
- +: representa la suma de dos o más valores o variables.
- -: representa la resta de dos o más valores o variables.
- *: representa la multiplicación de dos o más valores o variables.
- /: representa la división de dos o más valores o variables.
- %: representa el modulo (obtención del residuo de una división) de dos o más valores o variables.
- ++: Incrementa el valor de una variable en una unidad.
- --: Decrementa el valor de una variable en una unidad.
- -: Cambia el signo de una variable, es como multiplicar por -1.
- 2 + 2 = 4
- 10 - 5 = 5
- 4 * 6 = 24
- 8 / 2 = 4
- 8 % 2 = 0 (cero es el residuo de la división 8/2)
- c=4; c++; //c=5 (c inicia siendo igual a 4, después del incremento [c++], c vale 5)
- d=10; d--; //d=9
- e = -(4) // e = -4
- f = -(-6) // f = 6 (por regla de signos menos por menos igual a mas)
- = : igual que
- != : diferente a
- > : mayor que
- < : menor que
- >= : mayor igual que
- <= : menor igual que
- a > b > c //ERROR
- (a > b) && (b > c) //BIEN
- && : Operador AND (Y) quiere decir que todas las condiciones deben ser verdaderas para que se ejecute una acción.
- || : Operador OR (O) quiere decir que de todas las condiciones solo una debe ser verdadera y se asume que con eso es suficiente para hacer determinada acción.
- ! : Operdaro NOT (NO) quiere decir que se niega la afirmación para cambiar su valor, es decir cambia de verdadero a falso y de falso a verdadero.
miércoles, 28 de abril de 2010
Lenguaje C# - Primera parte (variables)


domingo, 4 de abril de 2010
Expresiones regulares Uso en JAVA
--
Expresiones regulares Uso en JAVA
JAVA + Expresiones regulares; lo prometido es deuda (eso es lo que enseñan los abuelos), en este post implementaremos las expresiones regulares en JAVA, la verdad es fácil, claro si ya sabemos cómo funcionan.
JAVA nos ofrece un paquete especial para el manejo de expresiones regulares el cual esjava.until.regex presentándose dos clases: Pattern y Matcher donde dichas clases son finales (final) y con método constructor privado (Private) por ende no se puede crear Objetos ni heredar de dichas clases… ¿Cómo?!! ¿No puedo crear objetos de estas clases? No, no puedes crear objetos ni heredar de estas clases, ahí es donde uno dice “que clases tan inservibles” pero no es así porque al no poder heredar de ellas no se pueden modificar sus funciones y así las clases sirven para lo que fueron hechas, además al no poder crear objetos ellas nos entregan un objeto estándar para la clasificación y uso de las Expresiones regulares.
Muy bien la clase Pattern tiene un método que es: compile(String regex), este método recibe como parámetro un String el cual es la expresión regular con la que queremos validar nuestros datos, dicho método nos devuelve un objeto estándar de la clase Pattern usándolo de la manera que queramos.
Después de tener el objeto de la clase Pattern, que es el que nos ayudara a contener el patrón, necesitamos la clase Matcher este compara los datos contra la expresión regular, para obtener el objeto de dicha clase se usa el método matcher(CharSequence input) cuyo parámetro es en pocas palabras un String el cual es el dato que se quiere validar, al tener ya el objeto que valida el patrón contra el dato, podemos usarlo de cualquier forma, para identificar si el dato coincide con el patrón se usa el método .find() que retorna un booleano pero dicho método se entiende mejor en la práctica.
Nota: el siguiente ejemplo esta desarrollado en Netbeans 6.8, los archivos podrán ser descargados en formato .java y en proyecto Netbeans.
El ejemplo está basado en la validación de un correo electrónico, creare un formulario JAVA (JFrame) el cual contendrá un campo de texto y un botón; no me extenderé mucho con la creación de botones y campos de texto dentro del formulario la idea principal es entender cómo se implementan las expresiones regulares, en un próximo tutorial profundizaremos sobre la interfaz grafica en java; para la creación del formulario usaremos el siguiente fragmento de código:
Pattern pat = Pattern.compile("^[a-zA-Z0-9_-]{2,}@[a-zA-Z0-9_-]{2,}\\.[a-zA-Z]{2,4}(\\.[a-zA-Z]{2,4})?$");
Esta Línea de código Activa el patrón a usar; es decir compila la expresión regular para poderla usar.
Matcher mat = pat.matcher(dato);
Esta línea de código crea el objeto de la clase Matcher para comparar el patrón con el dato que queremos validar, pero para que eso ocurra debemos usar el método find() de dicha clase así:
if(mat.find()){
JOptionPane.showMessageDialog(null, "el texto escrito es un correo");
}else{
JOptionPane.showMessageDialog(null, "el texto escrito NO! es un correo");
}
El método find() devuelve un booleano el cual es verdadero si el dato coincide con el patrón y un false en caso contrario.
Este es el Final del Tutorial, espero haya sido de gran utilidad para ud's y pronto tutoriales de como crear interfaz gráfica en JAVA
DESCARGABLES
Proyecto NEtBeans 6.8
Archivos .JAVA
Archivo ejecutable .JAR





