Documentos de Nomenclatura para escribir código en C# y VB

En muchas empresas, es un caos para entender código, cuando la gente no ha seguido estándares o una nomenclatura para escribir código. Así es, sabemos que existen nomenclaturas para escribir código como lo son Camel, Hungarian Notation y varias mas, eso si te lo han enseñado en la universidad o bien has investigado por algún otro lado, sin embargo, gente que nunca ha escuchado de esto, escribe de la manera que se le ocurra.

Clint Edmonson, nos regala para este tipo de situaciones, un par de documentos con estándares de nomenclatura tanto para C# como para VB, aunque como dice él:

"It doesn’t matter what the standards are, as long as you have them and everyone agrees to adhere to them!"

Espero que te sean de utilidad 😉

Documentos Nomenclatura

Salu2

Héctor Pérez

“Hector the Wizard” finalmente publicado

Hola qué tal a todos? Bueno pues esta es una aplicación que he creado para el concurso de Mix 09, el reto se llama Mix 10K, se trata de crear una aplicación donde el total de archivos para la aplicación pese como limite 10k. Esta es la aplicación:

image

Básicamente, los primeros 5 pasos son para obtener un número, el cual puedes hacer en la aplicación, o a mano, el paso numero 6 es donde a partir del número en el paso 5, se tratará de adivinar el número sobrante.

Si quieres probarla y de paso votar por mí 😛 , puedes checarla aquí:

Mi entrada en el concurso 10k Competition

😉

Héctor Pérez

Mi regalo de Navidad ;)

Hola qué tal a todos de nuevo? Bueno, pues sé que aún faltan algunos días para celebrar el nacimiento de nuestro Señor Jesucristo, pero me adelanto a ponerles un regalo, que seguro a mas de uno le gustará, y tendrá tiempo para disfrutar.

Se trata, de las 12 ediciones de este 2008 de la famosa revista MSDN magazine, en las cuales encontrarán una manera de lectura muy amena, por medio de una aplicación Flash. Las revistas son full(es decir, contienen hasta la publicidad).

Cabe mencionar, que este contenido NO es ilegal, al contrario, es totalmente gratuito, así que no dudes en descargarlo 😉

Espero que lo disfrutéis y Feliz Navidad!

Link: Revistas MSDN 2008

Héctor Pérez

Me uno al equipo de mty.Coders

Bien, pues el día de hoy, Michael A. Warner de Alva me ha dado la bienvenida a la comunidad mty.Coders, el post lo puden ver aquí: Permanent Link to ¡Héctor Pérez se une al equipo!; espero colaborar activamente con ellos, y con ello, que hagamos crecer esta comunidad cada día mas.

mty.Coders, como lo definen sus creadores Michael Warner y Gustavo Barrientos,

es un Blog de Noticias de TI, Comunidad de Desarrolladores y Foro de Discusión orientado a estudiantes, desarrolladores y consultores, fundado en Monterrey, Nuevo León, México. Es un lugar dónde compartir código, snippets, tutorials, e información relativo a la programación y consultoría de TI, etc.

Me ha gustado en particular el propósito:

El propósito del sitio es abrir puertas y unir a los programadores para compartir conocimientos, ideas, código y programas en español.

La web esta llena de información en Ingles, sin embargo hay muy poca información relevante en español.

En eso concuerdo mucho con ellos, así que te invito de la manera mas cordial, a que te unas a nosotros, y hagamos de esta comunidad algo grande! Gracias pues, Michael, y en hora buena 🙂

Link de la comunidad: http://mtycoders.com

Salu2

Héctor Pérez

 

¡Pon a prueba tus habilidades de programación!

Si has sentido que te faltan retos de programación, quieres practicar un poco tus habilidades de programación, o simplemente quieres saber mas o menos en qué nivel estás en comparación a otros developers, te recomiendo ampliamente que visites el sitio:

http://www.topcoder.com/

La wikipedia nos lo define algo así:

TopCoder es una compañía que administra concursos de programación. TopCoder aloja semanalmente competiciones semanales en línea, sobre diseño y desarrollo. El trabajo hecho en estas competencias, produce software útil el cual tiene licencia para beneficio por TopCoder. Los competidores que trabajan en la creación de estos componentes, reciben regalías basados en estas ventas.

En sí, TopCoder organiza semanalmente  concursos en varias categorías, entre las cuales encontramos competencias de algoritmos, arquitectura de software, desarrollo de software, y un gran etcétera.

El modo de competencia, se basa en la llamada “Arena”, la cual es un lugar en donde se llevan a cabo las competencias. Los pasos para poder competir son los siguientes:

Primero, y antes de todo, debes registrarte en el sitio:

image

image

Aquí, te salen varias opciones, La primera, es para registrarte en competencias de desarrollo, la segunda, TopCoder Studio, va mas enfocada a diseñadores gráficos, y la tercera, a chavales de nivel preparatoria.

image

No falta que te diga qué datos poner aquí verdad?? jeje.

Una vez hecho todo esto, basta con que vayas a link para inicializar la aplicación Java, que te automáticamente lanzará la Arena; te recomiendo tener instalado la última actualización del JRE(java runtime environment):

image

image

Después de Permitir, solo tienes que loguearte con tu nombre d e usuario y password con los cuales te registraste, y el tipo de conexión:

image

 

Después de aceptar, vemos la tan ansiada Arena, en este punto, nos sentimos como los gladiadores romanos cuando competían entre ellos, claro en los momentos en los que hay competencia 😀

image

Ahora bien, como estás leyendo esto, supongo que eres principiante en la Arena (no en habilidades de programación), así que para familiarizarte un poco, puedes ir a ver los eventos anteriores, y comenzar a explorar un poco, dándole en la casilla de “Practice Room”(Debo aclarar que las condiciones de la Arena en las salas de práctica, son muy diferentes a las condiciones de competencia por $$$ jeje, así que te recomiendo que leas bien las instrucciones del sitio si quieres entrarle duro a esto):

image

En mi caso, seleccionaré el torneo #1, la competencia # 1: Inv2001 R1. Una vez seleccionado el reto, seremos transferidos al lugar donde sucedió una gran batalla entre gladiadores jeje:

image

image

Una vez aquí, deberás seleccionar el nivel de la lista, básicamente hay 3 niveles:

image

Eso de 250, 500 y 1000, básicamente son los puntos máximos que se pueden alcanzar en cada competencia. Para muestra, seleccionaremos el de 250, con lo que seremos transferidos al lugar del problema, que se divide en 2 áreas; Problem statement, y Coding Area. Problem statement, es el problema en cuestión, se podría decir que los requerimientos del problema:

image  La segunda parte, es tu espada, tus conocimientos reflejados en la solución del problema en el lenguaje que mas se te acomoda, Java, C++, C#, VB o Python, en mi caso y para esta demo, he escogido C#:

image

Después de poner tu código, puedes darle en compile, para compilar el proyecto, y checar que se compiló correctamente:

image

Si todo ha salido satisfactoriamente, posteriormente puedes darle en Test, con lo que podrás verificar que cumple con los requerimientos del problema:

image

image

Finalmente, le das click en submit, y te mostrará los resultados. Podrás ver los diferentes resultados de la gente que ha hecho el mismo ejercicio que tú, y valorar qué tan bien fue hecho tu código, además por cierto, de que podrás checar el código fuente de cada uno de ellos, para ver y aprender de sus habilidades 🙂 :

image

Ahora solo falta que lo hagas en un Torneo real, con tiempo límite y contra los demás gladiadores 🙂

Así es amigo, ya no hay motivo por el cual aburrirte en estas vacaciones, te he dado una gran opción para divertirte, claro si eres un gladiador con vestimenta de desarrollador verdadero. Un abrazo 🙂

Por cierto, hoy es mi cumpleaños jaja, así q se aceptan toda clase de regalos jeje 😛

Salu2

Héctor Pérez

¿Cómo crear un Splash Screen en WPF?

John 10:14-15“I am the good shepherd; I know my sheep and my sheep know me— just as the Father knows me and I know the Father—and I lay down my life for the sheep.”

Para aquellos no familiarizados con el tema, el Splash Screen según la Wikipedia es:

“Splash screen is a term used to describe an image that appears while a computer program is loading. Splash screens sometimes do not cover the entire screen, but only a rectangle near the center. The splash screens of operating systems and some applications that expect to be run full-screen usually cover the entire screen.”

En palabras sencillas, un splash screen es la imagen que te aparece cuando inicias algún programa como office, visual studio, etc. Bien, pues para que tengas una idea, antes, era un tanto complicado hacer que estas aparecieran en escena, ya que no aparecen junto con la aplicación, sino que son lanzadas justo antes de que se cargue completamente tu programa, y esperan a que este se cargue para darle paso. Pues hoy aprenderemos a hacerlo sin tanto esfuerzo.

Antes que nada, los requisitos, Visual studio 2008, y lo más importante, el SP1 del framework 3.5.

Método 1:

Crear una aplicación WPF estándar. Paso siguiente es agregar la imágen que quieras que sea tu splashscreen:

image

En mi caso, he creado una para efectos de la demostración:

tarjeta

Acto seguido, es irnos a las propiedades de la imagen que hemos insertado, y cambiar el modo de Build Action a Splash Screen:

image

Si has hecho todo bien, seguramente debe de salirte tu splash screen antes de cargar la aplicación:

image

Sencillo no?

Paso # 2:

Para continuar con la demo, cambiaremos el modo de la imagen a None:

image

Dirigete a tu archivo (en mi caso) Window1.xaml.cs, donde agregarás el siguiente código, desupés del método InitializeComponent():

SplashScreen sp = new SplashScreen("tarjeta.png");
sp.Show(true);

Si te das cuenta, lo que hacemos aquí, es crear un nuevo SplashScreen, pasando el parámetro de nuestra imágen al constructor. La propiedad de Show, que tiene que ser booleano, identifica si la imagen se cerrará sola cuando se cargue nuestro programa o no. Ahora puedes probar el programa y verás que sucede lo mismo que la vez anterior.

Espero que te sea de utilidad 😉

Salu2

Héctor Pérez

Bases de WCF(Parte 1/N)

Hola qué tal a todos? Bueno, vamos a hablar algo distinto de WPF, muchos me han pedido algo acerca de WCF, y aquí les traigo, una serie de artículos con los cuales, espero puedan ir aprendiendo sobre esta tecnología 😉 .

Windows Communication Foundation(WCF de ahora en adelante), es un modelo de programación unificado para la creación de aplicaciones distribuidos. Se trata de crear, alojar y consumir servicios. Es acerca de estándares e interoperabilidad, además de la productividad de los desarrolladores. En este post vamos a discutir las bases de WCF.

Antes que nada, un poco de historia:

evolucionWCF

Como se puede apreciar, han existido en la historia, diferentes maneras de comunicación entre computadoras, pasando por COM(para comunicación de componentes en una sola máquina), DCOM(para componentes distribuidos), COM+(evolución de DCOM), Enterprise Services, Web Services(que podría decirse que es lo que está de moda hoy en día), etc, etc, etc. Bien, como podéis ver, tenemos muchísimas tecnologías disponibles para la comunicación, un gran problema de esto es que la persona que quisiera hacer uso de estas tecnologías, debía tener en claro qué quería para poder escoger la mejor tecnología a implementar, y conocer la tecnología obviamente.

¿Cuál es la solución? Bueno, pues Microsoft, lanzó con el framework 3.0, una tecnología llamada WCF, la cual permite que podamos hacer uso de las tecnologías anteriormente mostradas, de una manera sencilla y con un modelo unificado:

unionWCF

Comencemos…

Antes que nada, es necesario que nos familiaricemos con algunos términos, para tener una mejor comprensión de la tecnología:

Servicio: Un conjunto de Endpoints que proveen capacidades usables a los clientes.

Endpoint: Un recurso en la red, al cual pueden ser enviados mensajes.

Ahora bien, los clientes acceden a las capacidades, mandando mensajes a los Endpoints, los cuales están en formato de acuerdo al contrato que han acordado tanto el cliente como el servicio. Los servicios, están a la escucha de mensajes, especificados en la dirección especificada por el endpoint, esperando como dijimos antes, mensajes con el formato acordado.

image

Un cliente, necesita conocer el ABC del Endpoint: Addres (Dirección), Binding (Enlace), Contract (Contrato).

"A" es para direccion, el donde en la red. la dirección a la cual los mensajes deben ser enviados para que el endpoint los reciba, por parte del cliente. Por ejemplo, para HTTP, la dirección sería algo como http://servidor/servicio/; para TCP, sería algo como net.tcp://servidor:8080/servicio.

"B" es para binding, el cómo. El binding define el canal(channel) usado para comunicarse con un endpoint. Los canales son el medio por los cuales los mensajes pasan a través de una aplicación WCF. Un canal está compuesto de una serie de binding elements. El nivel mas bajo de un binding element, es el de transporte, el cual entrega los mensajes a través de la red. Entre estos, encontramos varios como HTTP, TCP, MSMQ, etc. Sobre este nivel, se encuentran binding elements que especifican la seguridad y transacciones.

"C" es para contratos, el qué. Define las capacidades ofrecidas por el endpoint. El contrato define las operaciones que un endpoint expone y los formatos de los mensajes que las operaciones requieren. Los contratos de operaciones mapean a los métodos de la clase que implementan el endpoint, incluyendo la firma de los parámetros pasados dentro y fuera de los métodos.

image

En esta imagen, podemos observar cómo un Servicio WCF está formado por varios Endpoints, los cuales a su vez, tienen un Address, un Binding y un Contract. Como la comunicación es generalmente bidireccional, los clientes también alojan un Endpoint, el cual recibirá los mensajes de regreso del servicio.

Lo servicios, tienen comportamientos que controlan la seguridad, transacciones y otros. Estos se implementan a través de atributos.

Para el descubrimiento del servicio, existe un endpoint de infraestructura llamado MEX (no, jaja, no se refiere a México), que significa Metadata Exchange Endpoint. Este endpoint es accesible por los clientes, para obtener el WSDL (Web service Definition Language). Generalmente, el MEX es llamado cuando en visual studio, le das click en “Add Service Reference”. Después de que el WSDL es obtenido, dos objetos son obtenidos, una clase proxy en el lenguaje del proyecto y un archivo app.config. El proxy refleja la firma de las operaciones del endpoint de tal forma que el cliente pueda llamar sencillamente el endpoint. El archivo app.config, especifica los bindings.

En el próximo artículo, crearemos nuestro primer servicio WCF, mientras, preocúpate por aprender los términos que se han mencionado, con lo cual se te facilitará en gran manera, todo lo que viene jeje.

Salu2

Héctor Pérez