NuGet 2.7

El equipo de NuGet anunció la nueva version NuGet 2.7

Características:

  1. Restauración de paquetes por defecto (con consentimiento implícito)
  2. Redirección de Proyectos
  3. Valores por defecto para la Configuración de NuGet.
  4. Se puede re-nombrar la fuente del paquete por defecto.
  5. Mejoras en el rendimiento.
  6. Nuevas APIs de extensibilidad.
  7. Dependencias solamente para desarrollo (development-only)

Con NuGet 2.7, se ha quitado el soporte para Visual Studio Express para Windows Phone debido a limitaciones tecnicas relacionadas a la nueva característica restauracion de paquetes automática. Hay una descarga separada que está disponible para esa version de Visual Studio y puede ser encontrada en la página NuGet 2.7 downloads en CodePlex.

Visual Studio 2013.

NuGet 2.7 es la versión de NuGet que sera incluida en Visual Studio 2013, con la excepción de actualizaciones menores tales como una refrescada localización. Cuando estas actualizaciones estén completadas, será re-publicado NuGet 2.7, pero no se agregarán nuevas características.

Problemas Conocidos.

Hay 2 problemas conocidos con la restauración de nuget.exe con la versión 2.7, y estos serán corregidos pronto y la descarga de nuget.exe será actualizada junto con el paquete NuGet.CommandLine.

Los problemas son:

  1. Una nueva restauración de paquete no funciona en Mono cuando se usa un archive SLN.
  2. Una nueva restauración de paquete no funciona con proyectos Wix.

La versión original en inglés se encuentra en: http://blog.nuget.org/20130822/nuget-2.7-released.html

Steve Ballmer se retira de Microsoft dentro de 12 meses.

ballmer

Steve Ballmer, el jefazo de Microsoft, ha anunciado sus intenciones de retirarse dentro de los próximos 12 meses.

«Nunca es el momento perfecto para este tipo de transición pero es el momento correcto.» Ballmer dijo en una conferencia de prensa. «Nos hemos embarcado en una nueva estrategia con una nueva organización y tenemos un sorprendente equipo de liderazgo senior. Lo que pensé originalmente es que el momento de mi retiro sucediera a mitad de la transformación de Microsoft en una compañía de dispositivos y servicios. Necesitamos un Director Ejecutivo (CEO) quien esté aquí por un término mayor en esta nueva dirección.

En el 2008, Ballmer dijo públicamente que planeaba permanecer en Microsoft hasta que su hijo menor saliera de la Universidad (college). Eso hubiera mantenido a Ballmer en Redmond hasta el 2018.

Fuente: Mary Jo Foley en All about Microsoft.

ASP.MVC asignar un valor al modelo (model) en la vista (view).

¿Es posible hacer esto: @model.attribute = «algo» ?

Respuesta:

Primero la capitalización (el uso de mayúsculas y minúsculas) importa:

@model (en minúsculas la letra «m») es una palabra reservada en vistas (views) que utilizan Razor. Declara el tipo de dato que tiene el modelo y normalmente se pone al inicio de la vista (view).

Ejemplo:

@model MyNamespace.Models.MyModel

Posteriormente en el mismo archivo (donde se encuentra la vista) puedes referenciar el atributo que quieras con @Model.Attribute (en este caso va en mayúscula la letra «M»)

Resumiendo:

@model ----> Declara el modelo (model) que vas a utilizar.
Model ---> Referencia la instancia del modelo (model)

Continuando con la asignación de un valor a un atributo de un modelo, sí puedes asignar un valor a tu modelo y utilizarlo posteriormente en la página (vista o view) PERO no será persistido cuando la página envíe (submit) los datos al controlador (controller) A MENOS que sea un valor en un campo del formulario (form field value). Para que puedas obtener el valor de regreso en el modelo durante el proceso llamado vinculación del modelo (model binding) necesitas asignar el valor a un campo del formulario (form field).

Ejemplos:

Opción Nro. 1.

En el controlador (controller) en la acción (action) necesitas crear el modelo para la primera vista de tu página, de otra forma cuando quieras establecer el Model.Attribute. El objeto Model será nulo (null).

Ejemplo 1: Asignando el valor para Model.Attribute en la vista (view):

En el Controlador (controller)

public ActionResult AlgunaAccion()
{
   MyModel model = new MyModel();
   return View(model);
}
[HttpPost] // Esta acción acepta la data enviada al servidor
public ActionResult AlgunaAccion(MyModel model)
{
   // model.Attribute será ahora "algo"
   return View(model);
}

En la Vista (view)

@{Model.Attribute = "algo";}
@HTML.HiddenFor(m => m.Attribute); @* Esto asigna el Attribute = "algo" cuando la página sea enviada de vuelta al servidor *@

Ejemplo 2: Asignando el valor para Model.Attribute en el controlador (controller)

En el Controlador (controller)

public ActionResult AlgunaAccion()
{
   MyModel model = new MyModel();
   model.Attribute = "algo";
   return View(model);
}
[HttpPost] // Esta acción acepta la data enviada al servidor
public ActionResult AlgunaAccion(MyModel model)
{
   // model.Attribute será ahora "algo"
   return View(model);
}

En la Vista (view)

@HTML.HiddenFor(m => m.Attribute); @* Esto asigna el Attribute = "algo" cuando la página sea enviada de vuelta al servidor *@

Opción Nro. 2.

Desde que los modelos está basados en nombres (name-based) puedes saltarte el paso de crear el modelo en el controlador y tan sólo ponerle de nombre a un campo del formulario (form field) el mismo nombre que la propiedad del modelo. En este caso, establecer un campo oculto (hidden field) y llamarlo «Attribute» y asignarle el valor «algo», asegurará que cuando la página se envíe de vuelta el valor «algo» esté enlazado a la propiedad Attribute del modelo durante el proceso de vinculación del modelo (model-binding process)
Nota. No tiene que ser obligatoriamente un campo oculto (hidden field) puede ser cualquier campo de entrada HTML con nombre igual a «Attribute» (name=»Attribute»).

En el Controlador

public ActionResult AlgunaAccion()
{
   return View();
}
[HttpPost] // Esta acción acepta la data enviada al servidor
public ActionResult AlgunaAccion(MyModel model)
{
   // model.Attribute será ahora "algo"
   return View(model);
}

En la Vista (view)

@HTML.Hidden("Attribute", "algo");

Basado en el siguiente artículo en inglés: http://stackoverflow.com/questions/7562393/how-to-set-model-attribute-in-razor-view

Más de 400 Imágenes de Máquinas Virtuales en el VM Depot Azure Gallery (Galería Azure Almacén de Máquinas Virtuales)

Cuando quieres crear una nueva máquina virtual en el Portal de Azure, vas a ver que hay unas imágenes de máquinas virtuales por defecto junto con las imágenes que has subido o creado tu mismo.

Hay un cerro de cosas de Windows y si te desplazas hacia abajo, verás algunas buenas imágenes de Linux como OpenSUSE, CentOS y Ubuntu.

Nota. Hay también una imagen de Visual Studio Ultimate 2013 Preview (prevista) recuerda que puedes registrarte para una prueba gratis de Azure y utilizar Visual Studio de manera remota en la nube y jugar un poco si quieres. Si tienes una subscripción MSDN (Microsoft Developer Network o Red de desarrolladores de Microsoft) ya cuentas con créditos, por lo tanto asocia tu MSDN con Azure.

Es bueno tener Linux en Azure pero esta no es la más abundante selección de imágenes.

Según Scott Hanselman debería haber una sección Comunidad (community) o al momento de crear la máquina virtual una opción Código Fuente Abierto (Open Source).

Si vas al área máquinas virtuales (Virtual Machines) y das clic en imágenes (Images), hay un enlace a explorar almacén de máquinas virtuales (Browse VM Depot). Uno de los grandes secretos de Azure. Scott Hanselmann está trabajando para hacer esto más obvio porque realmente es épico (es grande).

Hay actualmente más de 400 imágenes de máquinas virtuales código abierto (open source) hechas por la comunidad y compañías como BitNami, y almacenadas por MS Open Tech. Puedes crear máquinas virtuales (VMs) desde esta interfaz dentro del Portal de Azure pero es más fácil crearlas desde la línea de comandos.

Obtener la línea de comandos Azure.

Esto asume que ya tienes las herramientas de línea de comandos «Azure Command Line Tools». Las puedes conseguir de una de dos maneras. Si tienes «node» y «npm», sólo instala azure-cli así:

npm install azure-cli --g

Luego consigue tus certificados de cuenta (account certificates) e impórtalos.

azure account download
azure account import "foo.publishsettings"

Luego, selecciona una subscripción. Esto es todo una sola vez.

azure account set "algún otro nombre de cuenta"

En este punto ya se puede utilizar «azure vm create». Se puede administrar la mayor parte de la nube Azure desde la línea de comandos. Esta herramienta trabaja en Linux, Windows y Mac, es código abierto (open source) y escrita en JavaScript.

Creando una máquina virtual (VM) desde una imagen en VM Depot.

Digamos que quiero una imagen Redis. Puedo visitar http://vmdepot.msopentech.com y encontrar una. Aquí hay una imagen personalizada Ubuntu 12.04 con Redis configurada y endurecida la seguridad (configured and hardened)

http://vmdepot.msopentech.com/Vhd/Show?vhdId=147&version=254

Si selecciono secuencia de comandos para despliegue (Deployment Script) en la parte superior. Conseguiré una línea de comando como esta:

azure vm create TU_SUFIJO_DNS -o vmdepot-147-6-1 -l "West US" TU_NOMBRE_USUARIO [PASSWORD] --ssh

Ese número «vmdepot» es el identificador de imagen que le dice a Azure que copie esa imagen de máquina virtual (VM) desde el VM Depot (Almacén de máquinas virtuales) y hacer una nueva instancia. Asegúrate de añadir –ssh o no funcionará.

Ejemplo:

C:\>azure vm create hanselredis -o vmdepot-147-6-1 "West US" Scott miclave --ssh

Al terminar de ejecutar Azure ha creado la máquina virtual (VM) desde la imagen. Puede luego abrir extremos (endpoints) y hacer redirección de puertos (port forwarding) al mundo exterior para que puedas acceder a tu servicio, o crear redes virtuales internas (virtual internal networks) para mantener la máquinar virtual privada.

Máquinas Virtuales que resaltan.

Muchas de las imágenes vienen de una empresa llamada Bitnami que configura imágenes con paquetes populares. Algunas imágenes que resaltan son:

  • Discourse, un nuevo software para foros (fórum) de Jeff Atwood y amigos.
  • Una imagen reciente de Ruby Stack. «Ruby Stack 2.0.0-4-dev (Ubuntu 12.10)
  • Drupal 7.23-0 (Ubuntu 12.10)
  • Debian Wheezy.

Recuerden que estas imágenes son impulsadas por la comunidad por lo tanto tú puedes publicar imágenes si quieres.

Como con todas las galerías de cosas cultivadas por la comunidad hay algunas gemas y algunos trapos (duds). En Bitnami parece que saben lo que hacen

Para más información leer el articulo original en inglés de Scott Hanselman:

http://www.hanselman.com/blog/Over400VirtualMachineImagesOfOpenSourceSoftwareStacksInTheVMDepotAzureGallery.aspx

Libro gratis sobre ASP.NET de Red Gate: 25 Secrets for Faster ASP.NET

Red Gate está ofreciendo gratis el libro 25 Secrets for Faster ASP.NET Applications.

ebookofferredgate

La descarga es un archivo zip que incluye una herramienta llamada «ANTS Performance Profiler.exe»

Descárgalo aquí http://bit.ly/14HXwMz

O de aquí

http://www.red-gate.com/products/dotnet-development/ants-performance-profiler/entrypage/faster-asp-net-apps?utm_source=hanselman&utm_medium=displayad&utm_content=25asp_secrets&utm_campaign=antsperformanceprofiler&utm_term=rss-20604

Sólo tienes que proporcionar tu nombre y correo electrónico.

Aproximadamente 25 megabytes.

El predecesor de este libro es: 50 Ways to Avoid, Find and Fix ASP.NET Performance Issues.

El libro menciona que puede hacer que tus aplicaciones ASP.NET corran más rápido que Usain Bolt usando guepardos de zapatillas, al parecer no es tanto así pero esperan que encuentres suficientes consejos como para hacer que los pasos de tus aplicaciones tengan un resorte parecido al de una gacela.

Disfrútenlo.

Windows Azure: Disponibilidad general del soporte de SQL Server Always On y Notification Hubs (Centros de Notificaciones), Mejoras a AutoScale y más.

Esta mañana se han hecho grandes modificaciones a Windows Azure. Estas nuevas capacidades incluyen:

  • Soporte para SQL Server AlwaysOn: Soporte de disponibilidad general con máquinas virtuales Windows Azure (permite ambos alta disponiblidad y recuperación de desastres)
  • Notification Hubs (Centros de notificación): Lanzamiento de disponibilidad general de Windows Azure Notification Hubs (empuje de transmisiones «broadcast push» para Windows 8, Windows Phone, iOS y Android)
  • Máquinas Virtuales: Configuración del balanceador de carga y administración.
  • Servicios de Administración: Nueva extensión del Portal para registros de operación + alertas.

Todas estas mejoras están disponibles ahora para uso inmediato.

Nota: AutoScale esta en prevista (preview) – todo lo demás está disponible de manera general.

Para más información leer el blog de Scott Guthrie en:

http://weblogs.asp.net/scottgu/archive/2013/08/12/windows-azure-general-availability-of-sql-server-always-on-support-and-notification-hubs-autoscale-improvements-more.aspx