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 Linq
List 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" });
Teniendo 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.

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, 17 de noviembre de 2010

Reto FlashLite Nokia Colombia

El "Reto FlashLite" de Nokia que está organizando el Adobe User Group Colombia, de la mano de Ivan Sosa,  este concurso se basa en el desarrollo de aplicaciones para dispositivos móviles con la tecnología Nokia y el sistema operativo Symbian, además deben ser desarrollados con la plataforma Flash Lite que conforma el entorno de desarrollo móvil de Adobe y la plataforma Flash.
Debo aclarar que el tiempo del concurso es algo corto así que es necesario empezar a trabajar desde ya, para quienes tienen miedo de participar por desconocimiento en el lenguaje AS2 o AS3, les recomiendo que no se asusten ya que el lenguaje es bastante parecido a JAVA o C# y en Internet se encuentra muchísimo material para aprender mientras se va desarrollando la aplicación, además este link tiene la lista de tutoriales que he desarrollado sobre AS3 para que se familiaricen con el tema.
Ante cualquier inquietud que tengan no duden en escribir sus comentarios

Para más información sobre el concurso, recuerden revisar el link dispuesto por el AUG: http://www.flashcampbogota.com/retoflashlite/home.html

Leer más...

domingo, 14 de noviembre de 2010

Luces de navidad en noviembre? - campaña ambiental

Llegó la navidad, se acaba el año y con el fin del año se acercan las vacaciones, la culminación de la academia, fiestas todos los días, encuentro con los familiares de otras ciudades, con los amigos que siempre están ocupados, la navidad es maravillosa y diciembre es un mes que todos esperamos desde el primer mes de cada año, estamos a poco tiempo de llegar a ese mes de encanto y placer, de descanso y jolgorio, sin embargo hay quien no soporta la navidad y no es propiamente el Grinch, es la tierra a la que tenemos acabada con tanta explotación, propongo lo siguiente:

No enciendas las luces de navidad en Noviembre


__

No voy a hablar de cifras exactas, ni de estudios realizados por organizaciones como la ONU, Greenpeace o las grandes universidades del planeta, tomaré el tema desde la cotidianidad de cada quien. Como mencioné hace unas cuantas lineas, ya estamos a pocos días de la navidad, sin embargo algo alarmado observo como muchas casas ya están llenas de iluminación por doquier, los centros comerciales están iluminados hasta en el subterráneo y las calles ya empiezan a tener más colores que en cualquier otra época del año, entiendo que la idea del fin de año nos alegra a todos, sin embargo debemos tener en cuenta que estamos acabando con nuestro planeta por el abuso desmesurado de recursos. La temperatura de las ciudades ha cambiado de una manera impresionante, el efecto invernadero es algo que se evidencia en temporadas invernales en las que a pesar de estar lloviendo todo el día, no hace frío y cuando deja de llover el clima es insoportable por las altas temperaturas, hace una década un fenómeno climático como el actual fenómeno de la niña nos obligaría a andar día y noche con mucha ropa, bufandas, chaquetas y sombrilla, pero ahora, si llueve 2 veces en el día es mucho y el resto del día hace calor, lo que fácilmente nos demuestra que ya no hay agua para que llueva, que la capa de ozono está cada vez más débil y que los gases de efecto invernadero no permiten la salida de los rayos ultra violeta de la superficie de la tierra.

A qué voy con todo esto? el planeta no aguanta más abusos, debemos parar, debemos ahorrar electricidad, reducir las emanaciones de CO2, limitarnos en el uso de los electrodomésticos y sobre todo, ahora que estamos a víspera de navidad, esperara a que sea 7 de diciembre para prender las luces, no antes, demosle un respiro a nuestro hogar, dejemos que se recupere antes de darle otra sacudida.

Invito a los lectores de este blog, a compartir este artículo, a postear en sus propios blogs, en facebook en twitter, procuremos consumir menos electricidad en esta temporada, y hagamos un regalo de navidad al planeta.

Leer más...

jueves, 23 de septiembre de 2010

Resumen Día 1 y 2 Anigames Expo 2010

Estos dos días (22 y 23 de Septiembre) he estado en el evento anigames expo, un evento organizado por Naska Digital y la revista GamersOn con el apoyo del SENA y Tecnoparque, el evento se está realizando en las instalaciones del Maloka en bogotá y es una gran iniciativa que cuenta con grandes expositores de la animación y el desarrollo de videojuegos a nivel mundial.


--

..
Lo bueno
Los organizadores del evento, son un par de empresas de gran calidad que se destacan por su amplia trayectoria y además su influencia en los medios digitales y relacionados con la animación, diseño y desarrollo de vídeojuegos en Colombia.

Los conferencistas en la mayoría de los casos son personas profesionales en el área con un gran recorrido que se han encargado de darnos una idea acertada y precisa de como hacer juegos e incursionar en un tema que no es del todo desconocido en el país pero que está muy quedado todavía a diferencia de otros países.

Las instalaciones de Maloka son muy agradables, ofrecen un espacio muy rico en tecnología que va muy bien con el tema del evento y es un lugar que da la sensación de protección para un gremio de geeks inadaptados que estamos allá para aprender encerrados durante 3 días seguidos, a esto debo sumar el excelente escenario que representa el Cine Domo para los asistentes y los expositores.

Lo Malo
Desorden, mucho, muchísimo, atribuyo esto a que es el primer evento que organizan de esta magnitud, pero el desorden es bien grande, el ingreso empezó demasiado tarde casi hora y media después de lo previsto.

En la agenda del día habían unas charlas y de manera intempestiva cambiaron las agendas y forzaron a los asistentes a reformular las conferencias o talleres a los que asistirían, esto no me parece tan grave, pero es un detalle que se debe controlar muy bien antes de organizar un evento como este.

Generalmente soy muy critico, con respecto al contenido de las charlas más que al contexto en el que se encuentren, pero en esta oportunidad me he encontrado que en los dos factores fallan los elementos, en primera medida y no pretendiendo ser un muerto de hambre, no me parece que a la entrada al entregar los maletines, entregarán publicidad de Naska y una revista de GamersOn y no un cuaderno para tomar apuntes, una libreta o así fuera papel higienico y un esfero para copiar el número de tus nuevos contacto, ciertamente un gran Fail de parte de los organizadores, he asistido a inumerables eventos y por poco entregan una libreta con 20 hojas para llevar apuntes y copiar datos de contactos a esto sumado el alto precio del evento (más caro que campus party) creo que fue una gran falla.

En cuanto a las charlas debo decir que son buenas, salvo por algunos casos en los que mandan a gente que sabe hacer muy bien su trabajo, pueden ser excelente desarrolladores o diseñadores pero eso no asegura que sean capaces de dominar un auditorio de entre 50 y 100 personas, falta una mejor selección de los temas y los expositores.

Para resaltar
Me parece excelente el espacio adaptado para la feria, y los stands son muy buenos, muestran lo último en tecnología y permiten a los asistentes interactuar con las nuevas tendencias y dispositivos de las grandes casas como SONY, Microsoft y Nintendo.

Además de eso las charlas de los profesionales son excelentes, hoy estuve en la charla de Sussan Gold, una mujer increíble que es asesora de la Casa blanca en el tema de educación y videojuegos y nos dio un punto de partida para el desarrollo de video juegos y demostró que no es solo "soplar y hacer botellas"

Mañana escribiré sobre el tercer y último día del anigames expo mientras tanto, los dejo con esta charla que hicieron en la emisora Caracol sobre el tema:



Leer más...

jueves, 16 de septiembre de 2010

Zbrush Introducción Tercera parte

Para seguir con la serie de videtutoriales sobre Zbrush, esta es la tercera entrada hecha por Harold Duque, en este vídeo, la explicación trata temas sobre la edición de elementos de Zbrush con Maya.



No olviden dejar sus comentarios.

Leer más...

martes, 14 de septiembre de 2010

Zbrush Introducción Segunda parte

Siguiendo con la serie de videotutoriales sobre Zbrush, esta es la segunda entrega hecha por Harold, en este vídeo hay una aproximación más amplia de la herramienta y se plantea una integración con MAYA.



No olviden dejar sus comentarios

Leer más...

domingo, 12 de septiembre de 2010

Zbrush Introducción

Quiero empezar este articulo agradeciendo a Harold Duque quien se dio a la tarea de hacer una serie de videotutoriales que iré colgando en el transcurso de esta semana, sobre una herramienta de modelado 3D llamada Zbrush, en este primer vídeo, nos muestra de que se trata el programa además de hacer unas cuantas cuñas publicitarias que también le agradezco mucho.





Finalmente quiero agregar que es gracias a este tipo de iniciativas que se logra hacer comunidad, y extiendo la invitación a todos los visitantes del sitio a compartir lo que quieran en este sitio, siempre y cuando se trate de tecnología y de enseñar algo a a alguien.

No olviden dejar sus comentarios

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.


Con el rápido avance de la tecnología, es inevitable que los lenguajes de programación también mejoren cada día más. Es por eso que desde la salida al mercado del sistema operativo Microsoft Windows Vista los sistemas Windows incorporan una tecnología llamada Windows Presentation Foundation, la cual además de separar eficientemente la parte lógica de la parte gráfica haciendo uso del Lenguaje XAML, también hace las interfaces de usuario mucho más agradables y dinámicas. De ahí que para un desarrollador sea más fácil y práctico trabajar junto a un experto en interfaces (Diseñador Gráfico) o bien hacer uso de su buen gusto y "cacharrearle" un poco al tema para pulir sus aplicaciones con sencillos Skins, Templates y/o Temas para WPF. Pero de esto hablaremos luego. Hoy quienes tengan aunque sea un poco de experiencia en desarrollo .Net podrán realizar este sencillo How-To.

pulsa clic en la imagen para verla más grande
__

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:
Eso es todo. Hasta una próxima oportunidad...

Leer más...

martes, 17 de agosto de 2010

El SENA y Adobe te llevan al AdobeMAX


El evento AdobeMAX es probablemente el evento geek más importante para los que trabajamos con las herramientas de Adobe, es una semana de charlas día tras día con temas de interés sobre todo tipo de tecnologías, adelantos, muestras y mensajes que te hacen sentir que Adobe es la mejor empresa del planeta y que debes aprender a usar eso último que viste. Se realiza año tras año en la ciudad de Los Angeles en California en la tierra del tio Sam y el SENA te va a llevar!



..

No todo es gratis! para ir al evento debes tener un excelente rendimiento académico, y debes saber bastante sobre el manejo de las 3 herramientas contempladas en la Certificación Adobe Certified Associate (Flash, Dreamweaver y Photoshop) ya que se desarrollaran pruebas en cada centro de formación del SENA que este certificado y se tendrá en cuenta el rendimiento en los exámenes de conocimiento de cada una de las herramientas.

Cada centro selecciona a UN SOLO APRENDIZ quien competirá en la ciudad de Cali por el primer puesto que es el viaje a los estados unidos para el evento. El Segundo premio gana una licencia de la Adobe Master Collection CS5 y el tercer puesto ganará una licencia de la Adobe Web Premium CS5.

Animo muchachos, estudien, en esta semana estaré informandoles sobre las bases del concurso y como se seleccionara al aprendiz del centro.

Para obtener más información pueden visitar el sitio del concurso

--

Leer más...

lunes, 16 de agosto de 2010

Controlar eventos de teclado en C#

En ocasiones, cuando creamos aplicaciones para Windows Forms con C# tenemos la necesidad de capturar los gestos del teclado del usuario para ejecutar determinada acción, ejemplo de eso es cuando para enviar la información de un formulario o iniciar sesión en algún programa presionamos la tecla Enter o cuando presionamos teclas como Ctrl+W en el navegador para cerrar una pestaña.

..

--
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.

Lo primero que haremos, será crear un proyecto de Windows Forms con dos TextBox, uno en el que crearemos la lógica para determinar la tecla o teclas presionadas y otro que muestre la información correspondiente a la acción de usuario.


El primer campo se llamará eventoTxt y el siguiente se llamará informacionTxt. Después de agregar los controles al formulario, debemos ir al método constructor del formulario, para agregar el delegado encargado de las acciones del teclado (sí no sabes qué es un delegado, deberías revisar este articulo, que habla sobre los listeners en ActionScript que son muy parecidos).

En el método constructor se agrega el nuevo delegado por medio de la expresión += y dentro de los paréntesis se debe poner el nombre la función que se va a invocar cuando se produzca el evento KeyDown. En el método validarTeclas, se pueden ver 2 variables que pone por defecto en Visual Studio, para acceder a la información de la tecla presionada debemos ver los atributos del párametro e que contiene toda la información.



Y eso es todo, espero sus comentarios, y los archivos quedan disponibles para trabajarlos con el Framework 4.0.


--

Leer más...

domingo, 4 de julio de 2010

Magazine Xpert tercera edición

Magazine Xpert, es una revista en formato digital creada por la comunidad Adobe Xpert, que cuenta con la participación de la comunidad Adobe de habla hispana, el proyecto en cabeza de Marlon Ceballos, ya va en su tercera publicación y espero que sean muchísimas más.


La revista es de distribución libre y descarga gratuita y la tercera versión se puede descargar desde aquí.

portada de la magazinexpert
--

--
En esta oportunidad la comunidad Xpert nos da la oportunidad de ver en su magazine articulos sobre lo nuevo de Adobe CS5, un recuento de lo sucedido en el evento Adobe en vivo 2010, y unos cuantos tutoriales entre los que se encuentra el tutorial de creación de controles personalizados que publiqué hace un par de semanas.

Espero que descarguen la revista, la lean, la compartan y disfruten de las publicaciones hechas por la comunidad para la comunidad.

Estos son los links para descargar las dos publicaciones anteriores:


--

Leer más...

domingo, 20 de junio de 2010

Lenguaje C# - Tercera parte (Condicionales)

Retomando la serie de tutoriales sobre el lenguaje C#, esta vez escribiré sobre el manejo de condicionales. En el tutorial sobre operadores se toco algo del tema, al referirnos a los distintos tipos de operadores que existen en los lenguajes de programación, siendo los operadores parte fundamental en la construcción de condiciones.

Antes de empezar a definir técnicamente, es necesario definir el concepto de condición, las condiciones son preguntas o evaluaciones de los elementos que se presentan antes de poder realizar una acción. Según la RAE una condición (en una de sus tantas definiciones) se refiere a "circunstancias que afectan a un proceso o al estado de una persona o cosa" ahora en programación quizás la definición sea más sencilla.


--

--
En cualquier lenguaje de programación la condición está dada por la evaluación y comparación de dos o más valores siempre teniendo en cuenta que estas condiciones se deben dar en parejas (esto ya lo dije en el anterior tutorial) es decir que las comparaciones solo se pueden hacer de dos en dos, cada una de las comparaciones entrega un valor booleano, es decir solo puede entregar valores verdaderos y/o falsos.

Después de obtener el valor booleano de cada comparación estos se pueden comparar por medio de las compuertas lógicas AND (&&), OR (||) y NOT (!), existen las tablas de verdad que representan los resultados que podemos obtener el comparar los valores de tipo booleano entre ellos.

Tabla de Verdad para AND (&&)

V&&VV
V&&
FF
F&&
VF
F&&
FF


Tabla de Verdad para OR (||)

V||VV
V||
FV
F||
VV
F||
FF

La compuerta lógica representa una negación de una expresión de esta manera:

! verdadero = falso
! falso = verdadero
!(verdadero && falso) = verdadero (recordemos que V y F da falso, al negar la expresión se vuelve verdadero).

Las condiciones en el lenguaje C# al igual que en lenguajes como JAVA, PHP, JavaScript, ActionScript, etc están dadas por la palabra if (sí) seguida de las condiciones entre paréntesis y las acciones dentro de llaves ( {...} ).
if(a == b){
//acciones en caso de que se cumpla la condición
}
Por defecto el if siempre valida la última respuesta contra un verdadero es decir:
bool a = true;
if(a==true) // es lo mismo que decir: if(a)
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.

Suponiendo el caso de un interruptor que solo puede estar encendido o apagado la condición sería esta:
bool interruptor = true //está encendido
if(interruptor){ //si el interruptor está encendido
...
}
else{ //de lo contrario
...
}
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:

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)
}
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.

Esto es todo por este tutorial y dentro de un tiempo seguiré escribiendo, el siguiente tutorial será sobre ciclos repetitivos.

--

Leer más...

lunes, 7 de junio de 2010

Iniciar Sesión en Windows 7 por medio de la camara

Gracias a un Twitt que llego a mi twitter conocí una herramienta maravillosa que permite iniciar sesión en el sistema operativo Windows 7 o Vista, sin necesidad de escribir contraseñas o pasar el dedo en un lector de huella dactilar que muchas veces pone problema bien sea por lo sucia que este la mano o porque hay polvo en el lector. La herramienta se llama Luxand Blink.


..

La herramienta básicamente permite iniciar sesión por medio de un poderoso algoritmo de reconocimiento facial que detecta el rostro de la persona autorizada para iniciar el equipo, la instalación es muy sencilla y no tarda más de 5 minutos, solo se requiere tener una cámara web y en caso de tener más de una cámara el sistema permite al usuario seleccionar con cual de ellas se va a hacer el proceso de autenticación.

Para descargar el programa solo basta con ir al sitio web de Luxand y luego ir a la opción descargar.

Mi equipo tiene lector de huella y cuando mis amigos me lo pedían prestado siempre me decían que les prestara el dedo y que un día me lo cortarían...vamos a ver si ahora pretenden cortarme la cabeza para iniciar sesión en mi equipo XD
..

Leer más...

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.

Antes de poder iniciar se selecciona la herramienta favorita podemos seleccionar entre Adobe LiveCycle, Acrobat, Connect, ColdFusion y Flash Plataform (supongo que ya saben cual escogí), al ingresar a la información de la herramienta, encontramos una serie de botones que sirven para conocer las novedades, estar al pendiente de foros, RSS, eventos, notas, etc.

Cabe destacar el hecho de que desde esta plataforma podemos visitar Tv.Adobe, Tour de Flex, Tour de LiveCycle, Air Marketplace y muchas de las herramientas más utilizadas, todo desde el mismo entorno, esto es una gran ventaja y representa ahorro de tiempo para la consulta de información.

Realmente recomiendo mucho al herramienta para estar al tanto de las novedades de los proyectos Adobe.
..

Leer más...

domingo, 23 de mayo de 2010

Crear controles personalizados en Flex

Una de las ventajas que tiene el desarrollo con el framework de Flex, es la capacidad de crear controles personalizados basados en otros controles es decir, crear controles de usuarios con características especiales, que cumplan con ciertos procesos y que nos ahorren trabajo.








..
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.


Nota: recuerda que este es el segundo de una serie de tutoriales, el primero esta aquí.

--

--
Lo primero es definir el concepto de operador. Un operador es un símbolo que representa una acción determinada para una variable o valor y así como en español la coma ( , ) indica una pausa corta y el punto ( . ) indica una pausa un poco más larga, en aritmética existen operadores que indican la ejecución de determinado proceso, por ejemplo:
2 + 2 = 4
En este caso el operador es el signo mas ( + ) que indica que se debe hacer una suma o un incremento de dos valores dados.
Los operadores en programación están en categorías dependiendo de su funcionalidad, los primeros son los operadores aritméticos que a su vez se dividen en binarios y unarios, los operadores relacionales y los operadoresLógicos.

Operadores Aritméticos

Binarios: los operadores binarios indican operaciones sencillas de incremento (suma o multiplicación ) y decremento (resta, división y modulo), estos son los operadores binarios:
  • +: 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.
Unarios: los operadores unarios representan operaciones simplificadas de incremento decremento y modificación de signos, estos son los operadores unarios:
  • ++: 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.
Ejemplos:
  • 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)
En conclusión los operadores unarios, simplifican el proceso de modificación de valores ya que al escribir c++ se hace lo mismo que c=c+1.

Operadores Relacionales

Son operadores que se encargan de unir y comparar dos o más valores, siempre se utilizan en comparaciones de parejas y están dadas por los símbolos:
  • = : igual que
  • != : diferente a
  • > : mayor que
  • < : menor que
  • >= : mayor igual que
  • <= : menor igual que
Estos operadores se usan para comparar valores de variables por pares es decir,no se pueden comparar más de 2 valores al tiempo:
  • a > b > c //ERROR
  • (a > b) && (b > c) //BIEN
Cuando se requiere hacer una comparación de varios valores se deben usar losOperadores Lógicos, que son operadores de unión, también llamados compuertas lógicas, estos operadores pueden unir dos o más pares de valores comparados por medio de los operadores relaciones y están dados por estos símbolos:

  • && : 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.
Es muy importante reconocer cuando y como se deben utilizar los operadores lógicos, ya que estos indican cual será el flujo de ejecución de nuestras aplicaciones. Supongamos que estamos desarrollando un formulario en el que todos los datos del usuario son obligatorios, cuando el usuario final presione clic en el botón para guardar los datos, debemos validar si toda la información está debidamente diligenciada, en ese caso usaríamos al operador && ya que este indica que todo debe ser igual a verdadero.

if(nombre.text != "" && apellido.text != "" && telefono.text != "" ) // OK

La condición pregunta por el valor del texto de tres campos de texto (nombre, apellido, telefono), si el valor de texto es diferente de nada (es decir, si está lleno) quiere decir que todo está bien, ahora en caso de que alguno de los campos no cumpla la condición no se puede guardar la información y se le mostrará una alerta o un mensaje al usuario.

Es importante ver como las condiciones están dadas por parejas: telefono.text!= "" estas parejas se forman por valor operador relacional valor y cuando se desea comparar ese resultado por otro valor es necesario implementar los operadores lógicos.

Esto es todo para este tutorial, en el siguiente escribiré sobre las tablas de verdad, y sobre el manejo de condiciones en C#.

Espero sus comentarios.
--

Leer más...