JASoft.org

El blog de José Manuel Alarcón Aguín. Programación web y mucho más...

MENÚ - JASoft: JM Alarcón

Implementación de interfaces: implícitas vs explícitas - O cómo ocultar miembros de interfaces

Las interfaces en .NET y otros lenguajes son una manera de establecer un contrato entre dos clases, de manera que dejemos perfectamente definido de qué manera vana poder interactuar entre ellas. Así, si una clase implementa una determinada interfaz sabemos que dicha clase va a disponer de determinados métodos y podemos contar con ellos a la hora de trabajar con ésta. Además gracias a las interfaces podemos implementar ciertos tipos de polimorfismo o genericidad a la hora de trabajar con conjuntos de clases que implementan la misma interfaz. En fin, nada nuevo en el párrafo anterior para un programador mínimamente experimentado de .NET o cualquier otro lenguaje orientado a objetos. En nuestro curso de preparación del examen 70-536 se trata profusamente este tema, como es lógico. Lo interesante, y objeto de este post, viene a la hora de decidir cómo implementar una determinada interfaz en una clase. Así, si tenemos definida una interfaz cualquiera, por ejemplo esta:public interface IMiI... [Más]

Clases y estructuras en .NET: cuándo usar cuál y otras cuestiones habituales

Algunas preguntas que recibo con frecuencia en el curso de preparación del examen 70-536 en campusMVP están relacionadas con las estructuras y las clases en .NET. Esta misma semana he tenido un par de ellas muy interesantes, lo que me lo ha recordado y me he decidido a resumir aquí algunas de estas preguntas y sus respuestas. ¿Cuál es la principal diferencia entre una estructura y una clase? La principal diferencia entre Estructura y Clase es que las primeras son tipos por valor y las otras tipos por referencia. Es decir, aunque los primeros pueden trabajar como clases, realmente son valores ubicados en la pila directamente, y no punteros (referencias) a la estructura en memoria. Esto significa que los primeros se pueden gestionar más eficientemente al instanciarlos (se hace más rápido), sobre todo en grandes cantidades, como una matriz. Al crear una matriz de estructuras éstas se crean consecutivamente en memoria y no es necesario instanciar una a una y guardar sus referencias ... [Más]

Objetos dinámicos en .NET 4.0: ExpandoObject

.NET 4.0 dispone de soporte para tiempo de ejecución de lenguajes dinámicos, el DLR (Dynamic Language Runtime). El propósito del DLR es permitir que los lenguajes de tipo dinámico -como PHP, JavaScript, Ruby, Python, Lisp o Groovy, por citar unos cuantos- puedan ejecutarse en la plataforma y además interactuar con código escrito en un lenguaje .NET -como C# o VB. El DLR introduce en el framework una serie de clases dinámicas de comportamiento dinámico que ayudan mucho a la hora de interactuar con estos lenguajes o acceder a COM, pero que abren la puerta a crear monstruos de código si son mal utilizados. De hecho gurús de la plataforma como mi buen amigo Octavio Hernández, reniegan de esta característica ;-) Lo cierto es que en general yo no recomendaría el uso de las clases dinámicas, pero sí que pueden llegar a ser útiles en algunas ocasiones. Por ello en este artículo voy a presentar la más útil y fácil de usar de todas, la clase ExpandoObject. Añadiendo miembros dinámicament... [Más]

Notación asintótica para indicar la eficiencia de algoritmos

El otro día un alumno del curso de preparación del examen 70-536 en campusMVP me hizo la siguiente (interesante) pregunta: "He revisando el tema de las coleciones y me han surgido las siguentes dudas: Al leer en el MSDN información sobre distintas colecciones a veces aparece la siguiente frase: 'La recuperación del valor de esta propiedad es una operación O(1); el establecimiento de la propiedad también es una operación O(1).' ¿exactamente a que se refiere con operación O(1)? El ejemplo que he puesto pertenece a ArrayList.Item (Propiedad) http://msdn.microsoft.com/es-es/library/system.collections.arraylist.item.aspx" ¿Y esto qué es? Lo de 0(1) es una notación matemática usada en algoritmia que indica el comportamiento límite de una función. A este tipo de notación se le llama "notación asintótica", "notación Landau" o "notación Big O". En la wikipedia hay un artículo muy completo sobre esta notación, pero básicamente lo que hay que saber para "andar por casa" es que lo que s... [Más]

ARTÍCULO: Búsqueda de ensamblados en tiempo de ejecución en .NET

Hoy he escrito un pequeño artículo sobre la carga de ensamblados por parte del motor de tiempo de ejecución de .NET. Se trata de algo que no muchos programadores de .NET tienen totalmente claro y que creo que puede resultar de interés general. En este documento explico los tipos de ensamblados que tenemos en .NET, cómo el motor de tiempo de ejecución de la plataforma busca los diferentes ensamblados que usan nuestras aplicaciones, y cómo podemos incluir referencias a ensamblados de la GAC desde Visual Studio. Finalmente, como apéndice, explicaré un truco para poder ver ensamblados propios en el diálogo de agregar referencia de Visual Studio. Como ves no hay más que ensamblados por todas partes ;-) Lo he colgado en la página en Scribd de Krasis Press, y lo puedes leer on-line y también descargártelo. ARTÍCULO: Búsqueda de ensamblados en tiempo de ejecución en .NET ¡Espero que te resulte útil!

Herramientas de prototipado de aplicaciones Web

Algo muy habitual en los equipos de desarrollo Web es el dibujar maquetas de las pantallas y sus elementos, de forma que podamos transmitir mejor la idea de lo que queremos a los programadores que lo van a implementar. Esto es válido también para los clientes, que a veces no se hacen una idea de lo que les estamos contando si no lo ven dibujado. Este tipo de croquis o prototipos pintados a mano de las Webs (llamados generalmente wireframes) son muy útiles, pero hacerlos realmente a mano es problemático porque no suelen quedar muy bien y luego muchas veces ni siquiera se hacen. Una herramienta especializada viene de maravilla para hacerlo mejor, más rápido y que quede de manera presentable. A continuación pongo una lista de productos, tanto gratuitos como comerciales, que sirven para hacer esto y que están muy bien: iPlotz Protoshare Justinmind Balsamiq: este es de pago pero me gusta especialmente gliffy Smartdraw Jumpchart Pencil Axure Si trabajas con ... [Más]

El último fallo seguridad de IE se debía a un simple "&"

Por si alguno no estaba convencido aún de la importancia de escribir código pensando en la seguridad que se lea este artículo sobr eel último fallo de seguridad de Internet Explorer: http://blogs.msdn.com/sdl/archive/2009/07/28/atl-ms09-035-and-the-sdl.aspx Y si el tema te interesa de verdad: ya sabes.   Foto por Gui Tavares, Flickr

TRUCO: Inspecciones flotantes en Visual Studio 2010

Soy fan de esos pequeños detalles de calidad que muchas veces pasan inadvertidos pero que, una vez descubiertos, no puedes vivir sin ellos. En este caso me gustaría hablar de una nueva característica del depurador de Visual Studio 2010 que me resulta muy útil y que echo de menos cuando tengo que volver a versiones anteriores: las inspecciones/watches flotantes. Quizá no lo hayas notado, pero cuando te colocas encima de una variable o de una expresión cualquiera en el código mientras estás depurando, en la habitual ventanita flotante que te permite inspeccionar las variables y los objetos verás una especie de cuadrito amarillo a la derecha,como en la figura siguiente (por cierto, depurando JavaScript, o sea que funciona con todos los lenguajes): Si lo pulsas verás que la ventana flotante se convierte en el típico Post-it que se queda visible de forma permanente, y puedes arrastrar a donde queiras. De este modo puedes tener tus objetos de interés siempre visibles, de manera muc... [Más]

La misteriosa página que se envía dos veces

Este es uno de los problemas/bugs más raros con los que me he topado en años, y puede llegar a ser desesperante. Si has llegado aquí a través de una búsqueda de Google porque tienes el problema que indico en el título del post, estoy seguro de que me vas a dejar una nota de agradecimiento por el consejo :-) Hace unos días hicimos una nueva plantilla estética para un cliente de nuestra plataforma de e-Learning, SELF. La plataforma tiene un sistema muy potente de plantillas estéticas que permite personalizar mucho la estética y parte de la funcionalidad de la interfaz. Se pueden asociar plantillas a los diferentes campus (entornos cerrados de formación) y también se pueden asignar muchas plantillas/fachadas diferentes a cada campus de forma que se pueda acceder con aspectos diferentes para cada cliente al mismo campus a través de diferentes URLs o directorios virtuales. Una de estas plantillas, preciosa por cierto, provocaba un extraño efecto sobre todas y cada una de las páginas ... [Más]

Sistema operativo en varios idiomas al mismo tiempo para prueba de aplicaciones

¡Fenomenal!: nos ha salido ese cliente en Arabia Saudí o Finlandia y ahora toca localizar nuestra aplicación a esos idiomas y, sobre todo, probarla en el sistema operativo real para no llevarnos sorpresas. Lo primero que suele hacer todo el mundo es correr hacia el MSDN y rezar para no haber tirado los DVDs de Windows en todos esos idomas raros que envían. Eso o descargarlo de MSDN Online para instalarlo en algún equipo. Lo que mucha gente no sabe es que la ediciones más profesionales de Windows viene con la posibilidad de trabajar en varios idiomas al mismo tiempo. En el caso concreto de Windows Vista, las ediciones Ultimate y Enterprise disponen legalmente de esta interesante capacidad. De esta manera no es necesario que nos instalemos varios sistemas operativos diferentes en varios idiomas, ni tendremos que andar con máquinas virtuales ni nada similar: nuestro sistema operativo de trabajo, normal y corriente, nos permitirá cambiar de idioma y localización de manera muy sencilla. ¿... [Más]