[Evento CartujaDotNet & SVQDotNet] The State of .NET

El evento

La industria está en un estado de continuo cambio. No es diferente ni mucho menos para desarrolladores .NET. ¿Qué significa eso para tus proyectos de hoy?, ¿tus habilidades se quedarán obsoletas rapidamente?, ¿en qué deberías centrarse ahora?.

El ponente

Tiberiu Covaci, Microsoft RD y MVP. Está en una posición única para compartir información basada en la experiencia del mundo real con proyectos propios o aquellos proyectos que puede ver en su papel de mentor y consultor, así como el feedback que recive de lectores de la revista CODE.

La fecha

El evento será el próximo Lunes, 03 de Julio de 16:00h a 18:00h (2 horas de duración).

¿Te apuntas?

Más información

[Eventos] re-Connect Tour

re-connectEl Tour

Tras un exitoso Microsoft Connect(); 2016, en New York, donde se presentaron importantes novedades relacionadas con la plataforma Cloud, novedades en .NET, Visual Studio para MacOS o novedades en Xamarin, ¿algo mejor que recopilar todas las novedades en un evento?.

Si, haciendo varios y organizarlos en un Tour por varias ciudades!.

Las ciudades y fechas son:

La agenda

  • 9:30 Más productividad que nunca en el desarrollo móvil multiplataforma con Xamarin
    En esta charla veremos las novedades más importantes que llegan de la mano de Xamarin. Para empezar el nuevo Visual Studio for Mac que permite crear aplicaciones iOS y Android con backend net core. Pero esa no es la única novedad: veremos en acción el previsualizador de Xamarin Forms, Xamarin Profiler y el espectacular Xamarin Inspector que lleva el desarrollo móvil a otro nivel. Y finalmente Visual Studio Mobile Center, la evolución de HockeyApp y la integración con toda la suite de movilidad de Microsoft.
  • 10:30 .NET Core & SQL ❤ Linux
    Net Core 1.1 ya está aquí, y a pesar de ser una versión “menor” no deja de tener novedades interesantes: la integración con los logs de Azure, mejoras de rendimiento y, por supuesto Entity Framework 1.1, entre otras. En esta charla desgranaremos las novedades de asp.net core 1.1 y mostraremos como EF1.1 permite trabajar con las últimas novedades de SQL Server. Comentaremos el concepto de SQL Server CPSA y como nos impacta eso como desarrolladores. Y por supuesto, veremos SQL Server for Linux en acción.
  • 11:30 Microsoft y el mundo de los contenedores
    En esta charla veremos las novedades incluídas en Visual Studio 2017 para facilitar el uso de Docker. Comentaremos que es Docker, como funciona y como con Visual Studio 2017 podemos crear aplicaciones netcore y empaquetarlas con Docker de forma sencilla, sin perder ni un ápice de productividad. Veremos también como publicar contenedores Docker en un AppService, como usar Azure Container Registry así como un esbozo de Azure Container Services. Y para finalizar comentaremos las novedades de VSTS al respecto de Docker.
  • 12:30 ASP Net Core & Visual Studio en 3 sabores, elige el tuyo
    En esta charla veremos lo sencillo que es desarrollar una aplicación netcore con cualquiera de las 3 ediciones de Visual Studio que disponemos, Visual Stduio, Visual Studio for Mac y Visual Studio Code 1.7 bajo Linux. Para ello crearemos una aplicación sencilla asp.net core que use MongoDb. Veremos todas las facilidades de la suite de Visual Studio para depurar código y para navegar por el código. Finalmente veremos cómo usar Docker desde la suite de Visual Studio para crear un contenedor con nuestra aplicación, y usando las nuevas CLI de Azure veremos cómo publicarlo en un AppService. Finalmente veremos cómo podemos usar DocumentDb en lugar de MongoDb en menos que canta un gallo

¿Te apuntas?

Más información

[Tips and Tricks] Correr una App de consola .NET en la Intel Galileo

galileo-illustrationIntroducción

En la Preview Release del programa de desarrollo de Windows para IoT podemos desarrollar aplicaciones para la Intel Galileo utilizando las APIs Arduino Wiring y un subconjunto de Win32. En el pasado //BUILD 2014 en San Francisco, Microsoft anuncio la futura disponibilidad del modelo de desarrollo de aplicaciones Windows universales.

Aplicación .NET de consola

Abrimos Visual Studio y creamos una nueva aplicación de consola:

Nuevo proyecto de Consola

Nuevo proyecto de Consola

Vamos a crear una aplicación muy sencilla, nos mostrará los primeros 100 números primos. Para ello, crearemos un Helper que nos indicará si un número es o no primo:

public static bool IsPrime(int number)
{
     if ((number & 1) == 0)
          return number == 2;

     for (int i = 3; (i * i) <= number; i += 2)
     {
          if ((number % i) == 0)
               return false;
     }

     return number != 1;
}

En nuestra App crearemos un bucle con los primeros 100 números e iremos verificando si son o no primos:

Console.WriteLine("--- Primes between 0 and 100 ---");

for (int i = 0; i < 100; i++)
{
     bool prime = PrimeHelper.IsPrime(i);
     if (prime)
     {
          Console.Write("Prime: ");
          Console.WriteLine(i);
     }
}

Console.ReadLine();

Si la ejecutamos veremos un resultado como el siguiente:

100 primeros primos

100 primeros primos

Vamos a desplegar la App en la Galileo y a ejecutar la misma. Recordamos que la Galileo es una placa Open Hardware basado en el procesador Quark SoC X1000 de 32bits de Intel. Por lo tanto, si queremos ejecutar la aplicación debemos modificar la plataforma destino a x86 en las propiedades de compilación de nuestro proyecto.

Compilar en x86

Compilar en x86

Utilizamos Galileo Watcher con la Galileo conectada a nuestro equipo de desarrollo para acceder a los recursos compartidos y copiar la aplicación:

Copiamos la App en los recursos compartidos

Copiamos la App en los recursos compartidos

Todo listo!. Si ejecutamos nuestra aplicación vía Telnet el resultado es:

Ejecutando la App en la Galileo vía Telnet

Ejecutando la App en la Galileo vía Telnet

Podéis descargar el sencillo ejemplo realizado a continuación:

También podéis acceder al código fuente directamente en GitHub:

Ver GitHub

Recordar que cualquier tipo de duda o sugerencia la podéis dejar en los comentarios de la entrada.

A tener en cuenta

Hemos verificado que nuestra aplicación .NET de consola funciona perfectamente. De hecho, muchas otras aplicaciones de consola podrían funcionar. La mayoría de funciones del Core asi como mscorlib/mscoree funcionaran. Sin embargo, al comenzar a utilizar librerías dependientes no implementadas obtendremos distintos tipos de excepciones. No funciona todo lo que sería necesario. Por ejemplo, si utilizamos System.Diagnostics.Debug, obtendremos una excepción.

Si queremos desarrollar aplicaciones para la Galileo las APIs Wiring son la opción sólida. Sin embargo,  tenemos un subconjunto de APIs Win32 soportadas que nos permiten poder ejecutar aplicaciones .NET como la vista en este artículo.

Más información

[Eventos] dotNet Spain Conference, no te lo puedes perder!

datedotNet Spain Conference

Como desarrolladores de la plataforma .NET tenemos ciertas citas más o menos reservadas cada cierto tiempo a nivel nacional y local. Siempre es un tremendo placer conocer nuevas herramientas, tecnologías, experiencias y poder pasar un rato con compañeros brillantes tanto a nivel profesional como a nivel personal. Pues bien, apuntad en vuestras agendas una de esas citas imperdibles. A final de Febrero, concretamente los días 27 y 28 de Febrero tendrá lugar el mayor evento de .NET celebrasdo hasta la fecha, la dotNet Spain Conference.

dotNet Spain Conference

dotNet Spain Conference

El evento esta centrado en exclusividad a .NET pero cubriendo todo el espectro, desde .NET MicroFramework a desarrollo de Apps, Cloud, IoT, soluciones ERP, etc.

El evento tendrá lugar en dos días, Viernes y Sábado organizado con Tracks de la siguiente forma:

  • Viernes: ALM/Tools, Web, Cloud, Data, Enterprise, Hands-on-lab patrocinadores.
  • Sábado: Apps, Games, IoT, Coding-4-fun, Talleres de programación para niños, Hands-on-labs patrocinadores.

Tendremos sesiones técnicas de elevado nivel de 1 hora y 15 minutos de duración organizadas en 8 tracks además de talleres, stands, etc.

Tendrá lugar en la Escuela Politécnica Superior (Universidad de Alcalá):

 Campus Universitario. Ctra. Madrid-Barcelona, Km. 33,600

28805 Alcalá de Henares

Lugar

Lugar

Por si fuera poco, durante el sábado se organizarán talleres destinados a los más peques de la casa para que aprendan a programar: pensamiento computacional, robótica, videojuegos y mucho más.

NOTA: La entrada tendrá un coste muy reducido de tanto 10 €  e incluso inferior si la compras con tiempo.

No te lo puedes perder!

Más información

Visual Studio 2008. Not enough storage is available to complete this operation.

Con esta extraña entrada comenzamos hoy.

El título de la entrada no es más que un error repetido que me estaba sucediendo con Visual Studio 2008 al trabajar con soluciones grandes. Es decir, que contengan múltiples proyectos.

Al compilar el proyecto de buenas a primeras daba este molesto error. Si continuamos intentando compilar aunque se realicen múltiples tareas como limpiar la solución ó cerrar las ventanas abiertas no solucionamos nada. Es más, el error anterior puede derivar en el siguiente:

¿Solución?

Inicialmente no encontré otra más que cerrar el proceso “devenv.exe”. Es decir, cerrar el Visual Studio 2008 y volver a ejecutarlo. El problema podía provocar que tubiese que cerrar el VS2008 al menos unas 8-10 veces al día asi que aunque me permitía continuar trabajando la perdida de tiempo y por lo tanto de productividad era evidente.

El propio error nos indica que nos falta memoria. ¿Qué memoria?

El error me ha llegado a dar con más de un TeraByte libre asi que al espacio en disco duro es evidente que no.

Nos centramos entonces en la RAM. Sin embargo, al producirse el error tenemos bastante memoria RAM libre (más de 1,5GB). ¿Entonces?

Es evidente que no es un problema de Hardware sino de Software. Al mirar en el “Administrador de Tareas” el proceso “devenv.exe” comenzamos a visualizar por donde puede venir el problema.

El problema es el propio Visual Studio 2008. Es una aplicación de 32 bits y está limitada a un máximo de 2GB de RAM de memoria virtual. Y es independiente de si el sistema operativo es XP, Vista ó 7. Ni tampoco si es de 32bits o de 64bits.

La solución más correcta es aumentar la memoria a usar por VS 2008 de los 2GB de RAM que es insuficiente a 3GB de RAM. ¿Cómo lo hacemos?

Windows XP

Realiza una copia de seguridad del archivo boot.ini . A continuación, modifica el archivo original añadiendo los 3GB. Quedará algo similar a:

[Boot loader]
timeout=30 tiempo de espera = 30
default=multi(0)disk(0)rdisk(0)partition(2)\WINNT default = multi (0) disk (0) rdisk (0) partition (2) \ WINNT
[operating systems] [Sistemas operativos]
multi(0)disk(0)rdisk(0)partition(2)\WINNT="????" multi (0) disk (0) rdisk (0) partition (2) \ WINNT ="????" /3GB / 3 GB

Windows Vista

Abre el símbolo del sistema de Visual Studio y ejecuta la siguiente línea:

bcdedit / IncreaseUserVa Set 3072

Por último habría que modificar ciertos parámetros de Visual Studio. Antes de modificar nada de nuevo haz un copia de seguridad en este caso del fichero “devenv.exe”.

A continuación, en la línea de comandos de Visual Studio dirígete al directorio:

C:\Program Files\Microsoft Visual Studio 9\Common7\IDE\

Y ejecuta:

EDITBIN / LARGEADDRESSAWARE devenv.exe

Tras realizar todo lo anterior y reiniciar, el proceso “devenv.exe” podrá llegar a los 3GB. Realmente no hemos solucionado el problema. Es decir, permitimos que el proceso pueda legar a consumir bastante más pero seguimos teniendo límite. A pesar de ello, en mi caso ha sido suficiente. En principio, Microsoft a solucionado esto en el Visual Studio 2010. Puede ser otra solución el actualizar el entorno. Pero si económicamente no te lo puedes permitir espero que está solución te sea válida.

Si no te atreves a modificar ningún fichero existe otra opción. En la siguiente dirección:

http://confluence.jetbrains.net/display/ReSharper/OutOfMemoryException+Fix

Podrás descargarte un fichero zip(wrappers.zip) que contiene en su interior ficheros tanta para visual studio 2005 como para 2008(devenv2005_wrap y devenv2008_wrap). Bastaría con que ejecutaras VS2008 desde devenv2008_wrap.

Son todas las soluciones válidas que he podido localizar. Por supuesto si conoces alguna otra y quieres compartirla con todos no dudes en comentar la entrada con ella.