JASoft.org

Vídeo de campusMVP sobre las nuevas certificaciones de Visual Studio 2008

Vídeo de campusMVP sobre las nuevas certificaciones de Visual Studio 2008
Hola holita vecinitos: Es posible que, ante la inminente aparición en el mercado español de Visual Studio 2008, si estás pensando en obtener una certificación te encuentres en un mar de dudas respecto a qué es mejor hacer, cómo va a afectar la nueva versión de la plataforma en las certificaciones, y muchas otras cuestiones por el estilo. Con el comienzo del año muchos han sido los alumnos de campusMVP que nos han llamado o escrito preguntándonos cosas como estas, pero no había apenas información pública al respecto por parte de Microsoft. Por fin, el pasado jueves por la tarde tuvimos la oportunidad de participar en una conferencia con los responsables de estas certificaciones en Redmond. Al día siguiente yo mismo ofrecí en Madrid una explicación sobre todas estas novedades, la cual se grabó en directo y desde campusMVP la hemos puesto a disposición de todos en Internet. En este (creo que) completo vídeo explico el estado actual de las certificaciones para desarrollad... [Más]

Detectar si hay conectividad en el equipo (Método 1)

Detectar si hay conectividad en el equipo (Método 1)
Últimamente he estado trabajando bastante con la nueva API de Sincronización de Microsoft (Microsoft Sync Framework) que ahora mismo se encuentra en CTP (Community Technology Review), es decir, todavía no es la versión definitiva (pero casi). Esta plataforma te permite crear aplicaciones capaces de trabajar conectadas o desconectadas, y además sincronizar bases de datos, carpetas locales y remotas o información RSS se convierte en un trabajo sencillo. La API es bastante extensa y no voy a hablar de ella aquí (pronto leereis un artículo mío sobre el tema en DotNetMania). En lo que me quiero centrar es en el hecho de que, para trabajar desconectado, primero hay que saber qué realmente lo estamos ¿no? De hecho en la API no hay referencia alguna a esto, y muchos de los que la usen se preguntarán "vale, ya sé trabajar en local cuando no hayconexión y sé cómo sincronizarla con una remota (o con la de cualquier otro equipo en redes P2P también soportadas por la API) cuando recupere la conexi... [Más]

Novedades lenguaje C# 3.0 (III): Declaración implícita de tipos

Novedades lenguaje C# 3.0 (III): Declaración implícita de tipos
En mi post anterior sobre novedades de C# 3.0 hablé sobre los tipos anónimos. En el ejemplo de código use una palabra clave nueva, 'var', cuyo significado dejé para hoy. Algún lector asiduo se adelantó ademas preguntando algo sobre cómo se determinaban los tipos de las propiedades de las clases anónimas así definidas. La nueva palabra clave 'var' sirve para declarar variables locales sin indicar su tipo. Así podemos escribir, por ejemplo: var i = 1; var nombre = "JM"; var personajillo = new PersonaHumana("Perico", "De los palotes", 42) Es muy parecido a la sintaxis de JavaScript, pero con una importante diferencia: el hecho de que no indiquemos el tipo no quiere decir que no lo tengan, ya que C# sigue siendo un lenguaje fuertemente tipado. Lo hace var no es declarar una variable sin tipo, sino que declara la variable con el tipo adecuado para contener el dato indicado, siendo dicho tipo deducido a partir del valor. Así en el código anterior 'i' será un entero, 'nombre' será una c... [Más]

Novedades lenguaje C# 3.0 (II): Tipos anónimos

Novedades lenguaje C# 3.0 (II): Tipos anónimos
Siguiendo con las serie de post sobre C# 3.0 y sus novedades hoy le toca el turno a los tipos anónimos. Los tipos anónimos nos permiten definir clases de un solo uso dinámicamente, lo cual tiene una importancia vital en el manejo de resultados de consultas LINQ. De hecho, si no me equivoco, se añadieron al lenguaje precisamente para ello. Una clase anónima se define con la palabra clave new, igual que una clase normal, pero no se le da nombre (de ahí lo de anónima) y se crea sobre la marcha a partir de los datos que se le pasen al constructor. Por ejemplo: var nuevoMVP = new { Nombre = "José Manuel Alarcón", Especialidad = "ASP.NET", PrimerAño = 2004 }; Ahora ya podemos usar la variable 'nuevoMVP' como si hubiésemos instanciado una clase definida en el código de manera normal, por ejemplo: Console.Write(nuevoMVP.Nombre); Esto permite manejar datos "sintetizados" dinámicamente como resultados de consultas LINQ que contengan campos arbitrarios obtenidos desde la fuente de datos sub... [Más]

Novedades lenguaje C# 3.0 (I): Propiedades automáticas

Novedades lenguaje C# 3.0 (I): Propiedades automáticas
Tengo intención de repasar estos días brevemente algunas novedades que trae la versión 3.0 del lenguaje C#, que viene con .NET 3.5 y con Visual studio 2008. Hay un poco de todo: cosas sencillas y complejas pero todas interesantes. Las intercalaré con algunos otros posts normales que se me vayan ocurriendo. Hoy, como primer post sobre el tema, voy a describir algo muy sencillo pero de gran utilidad: las implementación automática de propiedades. Generalmente cuando definimos una propiedad de C# debemos declarar una variable privada para contener los valores, así como sus métodos set y get para asignarla y recuperarla. Si no necesitamos añadir lógica y la propiedad sólo es un envoltorio deuncampo privado (algo super-común) avabamos repitiendo todo el tiempo multitud de código como este: private string _nombre; public string Nombre { get { return _nombre; } set { _nombre = value; } } Un verdadero "peñazo" para hacer todo el tiempo lo mis... [Más]

La Herramienta de Prueba de Objetos de Visual Studio

La Herramienta de Prueba de Objetos de Visual Studio
Visual Studio 2005 y 2008 disponen de una herramienta bastante útil pero también bastante desconocida llamada "Herramienta de Prueba de Objetos" que, como su propio nombre indica, nos permite probar cualquier clase disponible en nuestro programa sin necesidad de ejecutarlo ni de crear elementos de prueba. ¿Cuántas veces diseñando una clase para reutilizar en otros proyectos te has creado un proyecto anexo de tipo consola para poder probar poco a poco el código que ibas desarrollando? Con esta herramienta no te hará falta. Puedes mostrarla desde el menú Ver·Otras ventanas. Para hacer uso de ella debes ir al explorador de clases  y localizar la clase que quieres probar (o ir a un diagrama de clase que contenga la clase a probar). Pulsando con el botón derecho sobre la clase, una de las opciones que aparecen es la de "Crear Instancia": Al hacerlo se crea un nuevo objeto de la clase elegida al cual le otorgamos un nombre descriptivo: y a partir de ese momento estará dispo... [Más]

Volta: desarrollo de aplicaciones Web usando sólo los materiales que tienes en la habitación

Volta: desarrollo de aplicaciones Web usando sólo los materiales que tienes en la habitación
Ese es el original eslógan de la nueva herramienta de desarrollo Web salida de los laboratorios de Windows Live y de Microsoft Research. Se trata de Microsoft Volta, una serie de extensiones y bibliotecas para Visual Studio 2008, presentada oficialmente hace 4 días. La novedad de este interesante proyecto es que permite desarrollar aplicaciones Web sin importarnos si su funcionalidad se va a ejecutar en el cliente (navegador) o en el servidor. Nosotros desarrollamos y es más tarde, antes del despliegue, cuando decidimos de qué forma distribuimos todas las capas de la aplicación. Así, podemos decidir que una determinada funcionalidad se ejecute en el servidor por ser más compleja y con menos necesidad de inmediatez, mientras qeu por otro lado indicamos que una página completa (toda su funcionalidad) se ejecute en el cliente. Para ello programamos todo en el lenguaje .NET que queramos (C#, VB.NET, JScript o, yo que sé, PHP) y sólo tenemos que marcar las clases que hemos creado con un at... [Más]

Cómo insertar valores aleatorios en una base de datos SQL Server

Cómo insertar valores aleatorios en una base de datos SQL Server
Esta parece fácil pero no lo es tanto. Imagínate que tienes que meter valores aleatorios dentro de un campo de una tabla para todos los registros de ésta. Por ejemplo, le vamos a asignar un número aleatorio como pin de acceso inicial a cada usuario de nuestra base de datos y éste debe estar entre 1 y 100.000 (Vale, el ejemplo es un poco chorrada, pero se capta la idea). Queremos actualizar los miles de registros de nuestra base de datos y asegurarnos de que cada uno recibe un valor aleatorio en el campo correspondiente. Lo primero que salta a la mente para intentar es esto: UPDATE Usuarios Set pin = Round(((100000) * Rand() + 1 Es decir, usamos la función RAND para obtener un valor aleatorio dentro del rango especificado. Parece correcto ¿no? Si lo ejecutamos nos llevaremos una sorpresa: todos los registros se quedan con el mismo valor. :-( Pero ¿no era aleatorio?. Sí. El problemilla es que RAND se evalúa sólo una vez para el proceso completo, y se inserta sólo un valor. No nos ... [Más]

Nuevos algoritmos criptográficos en "Orcas"

Nuevos algoritmos criptográficos en "Orcas"
Desde siempre soy un gran aficionado a la criptografía, y en mi opinión Whitfield Diffie se merece el premio Nobel de matemáticas por su contribución a la humanidad :-) El caso es que en .NET hay un gran soporte criptográfico, tanto en código manejado, como haciendo uso de la API de criptografía del sistema operativo. Sobre todo en .NET 2.0, porque en .NET 1.x había bastantes carencias en cuanto al manejo de algoritmos de clave pública basados en certificados (lo sufrí enun proyecto a base de bien). En .NET 3.5, o la versión de la plataforma que saldrá conorcas dentro de unos meses, el soporte de criptografía se ha mejorado mucho. En concreto se han centrado en ofrecer todos los algoritmos conocidos como Suite B, de la NSA. Esta suite contempla una serie de algoritmos avanzados de seguridad exigidos por el Estado USA e implica ofrecer soporte para AES, SHA-256 y SHA-384 (ya los ofrecía) y una serie de algoritmos criptográficos de curvas elípticas que se han tenido que incorporar (E... [Más]

Ejecutar código con todos los permisos desde un recurso de red

Ejecutar código con todos los permisos desde un recurso de red
Esta pregunta ha surgido en uno de los cursos de campusMVP que imparto y me ha parecido interesante comentarla aquí. Resulta que un alumno tenía un ejecutable que, entre otras cosas, necesitaba escribir una serie de registros en un inofensivo archivo de texto. Al ejecutar la aplicación en local todo iba perfectamente, pero al hacerlo cuando el .exe estaba en una unidad de red compartida o en una carpeta remota el programa, lógicamente, le rompía con un error de falta de permisos. El motivo de que no funcione el código en estas circunstancias es que, al ejecutarlo desde la Red, el ejecutable cae bajo el conjunto de permisos "LocalIntranet" que es mucho más recortado que el conjunto normal que se aplica a los ejecutables .NET y que se llama "FullTrust". Lo primero que se debería hacer es declarar los permisos que el código necesita para que al menos el runtime pueda saber qué necesita esos permisos antes de "petar", nada más intentar ejecutarla. De este modo si se ejeucta sin los per... [Más]

Este soy yo y este es mi blog técnico, dedicado al software y a la programación.

¡Sígueme en Twitter!

Mis otros blogs

- JM Alarcón @ campusMVP.es
Contenido técnico en español orientado a desarrolladores
- JMAlarcon.es
Blog personal no técnico: sociedad, innovación, empresa...

Krasis

- campusMVP.es:
Los mejores cursos online de programación en español

- SELF LMS:
La plataforma de elearning más potente del mercado.

Histórico