Tiny Post – Configurando Bash en la terminal integrada de Visual Studio Code

Desde hace un tiempo que vengo trabajando cada más seguido con la consola utilizando Bash – ya sea desde entornos Linux como en Windows -.

Cuando trabajo en Windows uso Git Bash – herramienta que me permite correr Git desde la consola utilizando un emulador de Bash -. Ahora bien, ¿por qué no usarlo directamente desde la terminal integrada que nos ofrece Visual Studio Code?.

La configuración es muy sencilla, lo primero que tenemos que hacer es ir a configuración de las preferencias de usuario: “Archivo > Preferencias > Configuración de usuario” y acto seguido editar la property “terminal.integrated.shell.windows” que se encuentra en la sección “Terminal Integrado”.

A esta propiedad vamos a setearle el path donde se encuentra el ejecutable bash.exe:

"terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe"

El resultado debería ser similar al siguiente:

Configurando la terminal integrada

Configurando la terminal integrada

Reiniciamos Visual Studio Code y ya podemos trabajar con la terminal integrada:

Running bash!

Running bash!

A disfrutar de la consola 🙂

Corriendo nuestras web apps en Kestrel usando Apache como servidor proxy

Hablando la otra vez con los muchachos del ASP.NET Latam StandUp surgió la idea de correr nuestras web apps en Kestrel  usando Apache como servidor proxy. Por lo tanto con mi compañero @camboris – al cual le agradezco que comparta su tiempo y su conocimiento conmigo – nos pusimos una tarde a jugar un poco y logramos publicar nuestra aplicación en ese escenario.

Antes que nada vamos a dejar que la documentación oficial de ASP.NET nos cuente muy brevemente que es Kestrel:

Kestrel is a cross-platform web server based on libuv, a cross-platform asynchronous I/O library.

Pero ojo…

Kestrel is designed to be run behind a proxy (for example IIS or Nginx) and should not be deployed directly facing the Internet.

No voy a entrar en detalles técnicos, con esto solo quiero recordarles que Kestrel no fue diseñado para estar expuesto a Internet, por lo que debemos configurar un server proxy que le sirva los requests a Kestrel y que además ofrezca características que este último no tiene, como capacidad para virtual hosts, security y logging.

Si nos vamos al mundo Linux las dos opciones clásicas a la hora de elegir servidores son Nginx y Apache. En la documentación oficial y otros enlaces, como el que menciono a continuación, podemos encontrar como configurar Nginx para esta función.

En este post vamos a explicar como configurar Apache para que funcione como reverse server proxy y voy a usar como guía el post Publishing an ASP.NET Core website to a cheap Linux VM host del gran Scott Hanselman.

Sigue leyendo

Novedades en C#7

Como es habitual, con la salida de una nueva versión de Visual Studio/.NET Framework en camino, tenemos también una nueva versión de uno de mis lenguajes de programación preferidos: C# 7.0.

En este post simplemente voy a nombrar las características principales que se vienen, pero para mayor detalle pueden ir al post What’s New in C# 7.0 del .NET Blog o bien ver el video News Features in C# 7.0 de Mads Torgersen – presentado recientemente para el evento Connect(); -.

¿Qué se trae esta nueva versión C#? Dejemos que ellos nos cuenten muy brevemente y luego pasamos a detallar algunas de las novedades principales:

C# 7.0 adds a number of new features and brings a focus on data consumption, code simplification and performance.

Tengan en cuenta que no estamos ante la versión final, por lo que alguna de las cosas que se comentan a continuación pueden sufrir cambios.

Sigue leyendo

.NET Core – Cuando Sí y cuando NO

En esta “primera edición oficial” del ASP.NET Community Standup LATAM – del cual les voy a hablar más adelante – comenté acerca de cuales son los escenarios en donde conviene arrancar con .NET Core y en los cuales hay que evaluar con mayor cuidado su implementación y tal vez optar por alguno de sus frameworks “hermanos”.

.NET Family

Voy aprovechar este post para resumir estos escenarios y les comparto documentación donde se explica en mayor detalle los motivos de cada uno.

Sigue leyendo

Deployment Continuo de webapp ASP.NET Core en Azure trabajando en entorno Linux

Esta semana junto a mis compañeros @francoferrari86 y @camboris estuvimos jugando un poquito con .NET Core y terminamos configurando el deployment continuo – en Azure – de una aplicación ASP.NET Core desde un entorno Linux. A partir de esto pensé escribir este post por si le sirve de referencia a alguien.

Dicidí dividir este post en secciones para que sea más sencillo el seguimiento.

Preparar el entorno de desarrollo

El primer paso fue instalar .NET Core y Visual Studio Core. Paso siguiente procedimos a crear un proyecto ASP.NET Core con Yeoman utilizando el template “Empty Web Application“:

Creando proyecto ASP.NET Core con Yeoman

Creando proyecto ASP.NET Core con Yeoman

Sigue leyendo

ASP.NET MVC Pipeline: Routing

Hace ya un tiempo que no escribo sobre el “tradicional” ASP.NET MVC y justamente la otra vez me cruce con esta excelente entrada en DotNet Tricks que me motivo a escribir sobre un tema que siempre posponía: el pipeline de ASP.NET MVC y sus puntos de extensión.

En esta primer entrega vamos hablar sobre la etapa de routing del pipeline, con una breve descripción de la función que cumple y las diferentes formas en que podemos extenderlo. En próximas entregas vamos a ir hablando de las siguientes faces: “Controller Initialization”, “Action Execution”, “Result Execution” y “View Initialization & Rendering”.

Routing

Routing

Routing

Esta es la primer etapa del pipeline y su función se centra en determinar quien será el encargado de manejar la petición.

Como ya todos saben el framework ASP.NET MVC nos provee de un motor de enrutamiento – routing engine – que se encarga de parsear la URL del request entrante y luego de machearla/mapearla contra alguna de las rutas – routes – almacenadas en la tabla de enrutamiento – route table –. A partir de la ruta coincidente podremos determinar que handler será el encargo de manejar la petición – el comportamiento por defecto es determinar el controlador y acción que deben ser invocados – pero como veremos más adelante podemos extendernos en este punto.

Sigue leyendo

Ya se viene #Build2016 :)

Falta cada vez menos para el evento  que organiza MS y en donde se presentan las últimas herramientas y tecnologías que hacen más simple y productivo el trabajo de los desarrolladores. Seguramente nos enteraremos de novedades respecto a los servicios de Azure, Visual Studio, Visual Studio Code, .NET, .NET Core… etc.

#Build2016

#Build2016

Si al igual que yo se te complica viajar hasta San Francisco 🙂 tenes dos alternativas: o te acercas a una subsidiaria de Microsoft o participas por live streaming desde build.microsoft.com.

Agendate el evento: 30/03 a las 13.30 hs.