developerro2024-01-31T03:00:55+00:00https://www.developerro.comFernando Escolarfer.escolar@gmail.comLogs en .Net2023-10-04T00:00:00+00:00https://www.developerro.com/2023/10/04/dotnet-logs<p>Los <em>logs</em> son una parte fundamental de cualquier aplicación. Nos permiten saber qué está pasando en nuestra aplicación, y nos ayudan a encontrar errores y problemas. Además, forman parte de uno de los tres pilares de la observabilidad, junto con las <a href="/2023/09/20/dotnet-metrics/">métricas</a> y las <a href="/2023/09/06/dotnet-traces/">trazas</a>.Métricas en .Net2023-09-20T00:00:00+00:00https://www.developerro.com/2023/09/20/dotnet-metrics<p>Dentro de la rama de la observabilidad existen tres pilares fundamentales: métricas, logs y <a href="/2023/09/06/dotnet-traces/">trazas</a>. En este artículo vamos a hablar de métricas y cómo podemos medir diferentes factores de nuestras aplicaciones de manera efectiva. Pero espera, ¿qué tienen que ver las métricas con la programación? Bueno, todo. Las métricas son importantes para cualquier tipo de proyecto, y más aún si se trata de programación. Y en .Net existe un sistema muy completo que nos permite medir casi todo tipo de cosasTrazas en .Net2023-09-06T00:00:00+00:00https://www.developerro.com/2023/09/06/dotnet-traces<p>Las trazas son una de las herramientas más antiguas y conocidas para la observabilidad de aplicaciones. Históricamente, las trazas se han utilizado para registrar información sobre el estado de una aplicación, como mensajes de error, advertencias o información de depuración. C#: class, struct o record2023-07-26T00:00:00+00:00https://www.developerro.com/2023/07/26/class-struct-record<p>En este post vamos a ver las diferencias entre los tipos de datos de referencia <code class="language-plaintext highlighter-rouge">class</code>, los tipos de datos de valor <code class="language-plaintext highlighter-rouge">struct</code> y cómo encaja en todo este entramado de objetos los nuevos tipos <code class="language-plaintext highlighter-rouge">record</code> y <code class="language-plaintext highlighter-rouge">record struct</code> que han sido introducidos en las últimas versiones del lenguaje C#Asp.Net: Routing2023-07-12T00:00:00+00:00https://www.developerro.com/2023/07/12/aspnet-routing<p>No se me ocurre una mejor forma de explicar el routing que con un ejemplo basado en una cervecería. Imagina “The Router’s Brew”, el pub donde todo desarrollador es bienvenido para tomarse una refrescante cerveza. Aquí hay un camarero cuya misión es escuchar las solicitudes de los clientes y servirles la cerveza que han pedido. El camarero sería el enrutador, y el cliente es el navegador webEl inyector de dependencias de .Net2023-06-28T00:00:00+00:00https://www.developerro.com/2023/06/28/dotnet-dependency-injection<p>Desde la primera versión de .Net Core se ha incluido un inyector de dependencias en el framework. Este inyector forma parte del núcleo de las aplicaciones ASP.NET Core, las basadas en <code class="language-plaintext highlighter-rouge">IHost</code> y se puede utilizar en cualquier aplicación .Net de forma independiente. De hecho, prácticamente todos los programadores de c# lo estamos usando aun sin saberlo. Pero esto no es excusa para no implementarlo de la mejor forma posibleGoroutines y Channels en Go2023-06-14T00:00:00+00:00https://www.developerro.com/2023/06/14/goroutines-channels<p>Si hay algo que hace a <em>Go</em> especial, son las <em>goroutines</em> y los <em>channels</em>. Es como tener una varita mágica que te permite hacer malabares con múltiples tareas al mismo tiempo sin caer en el caos. Y si <em>Golang</em> es la varita mágica de los desarrolladores, entonces las <em>goroutines</em> y los <em>channels</em> son los hechizos de la programación. Y por consiguiente, los <em>gophers</em> vienen del mundo mágico de <em>Harry Potter</em>Timers en .Net2023-05-31T00:00:00+00:00https://www.developerro.com/2023/05/31/timers-dotnet<p>Si te preguntas cuántas implementaciones de <code class="language-plaintext highlighter-rouge">Timer</code> hay en C#, te diré que hay un montón. ¡Es un locurón! Y lo mejor de todo es que cada uno tiene su propio estilo, forma de programar y funcionalidad. Así que, si necesitas un temporizador en tu proyecto, tienes muchas opciones para elegir. ¡Es hora de poner en marcha esa cuenta regresiva!Top 5: Errores de performance en C#2023-05-17T00:00:00+00:00https://www.developerro.com/2023/05/17/performance-errores-csharp<p>¿Alguna vez has sentido que tu aplicación .NET se arrastra como un caracol en la nieve? ¿Te has quedado mirando fijamente la pantalla mientras una tarea tardaba minutos en completarse? ¿Te has preguntado si hay algo mal con tu código? o ¿simplemente la máquina se niega a colaborar contigo? Si has respondido “sí” a cualquiera de estas preguntas, podrías estar sufriendo alguno de los típicos problemas derivados de malas prácticas de programación. Pero no te preocupes. No estás solo. En este artículo, te presentamos algunos de los errores más comunes hemos visto en nuestros proyectos. Además, las soluciones para resolverlos. Así que agarra una taza de café, relájate y prepárate para aprender cómo hacer que tu aplicación funcione como un FerrariSeguridad mTLS en ASP.NET Core2023-05-03T00:00:00+00:00https://www.developerro.com/2023/05/03/mtls-aspnet-core<p>¡Hey! ¿Te preocupa la seguridad de tus conexiones? ¿Quieres que tus datos sean privados y confidenciales? Seguro que conoces SSL/TLS. Esto está bastante bien para proteger conexiones. Pero quizá te pueda parecez insuficiente y te interese conocer el protocolo de autenticación de transporte mutuo, o mTLS para los amigos ¡Sigue leyendo!Trabajos en segundo plano en .Net2023-04-19T00:00:00+00:00https://www.developerro.com/2023/04/19/trabajos-segundo-plano-dotnet<p>Hace ya un tiempo que me preguntaron cómo podríamos hacer un servicio de <em>Windows</em> usando los nuevos <em>framework open source</em> de <strong>.Net</strong>. En ese momento no pensé en los <code class="language-plaintext highlighter-rouge">BackgoundService</code> ni conocía la existencia de los tipos de proyecto <em>“Worker Service”</em>. Hoy, después de haber investigado más sobre el tema y haberlo usado en diferentes ámbitos, creo ya estoy listo para escribir sobre el tema:Modelo de madurez de Richardson2023-04-05T00:00:00+00:00https://www.developerro.com/2023/04/05/richardson-madurity-model<p>Al <em>loco</em> de <a href="https://twitter.com/leonardr">Leonard Richardson</a> se le ocurrió la feliz idea de que para implementar una <em>API</em> en internet solo hacía falta seguir las normas de la <em>WWW</em>. Necesitábamos recoger los principios del protocolo <em>HTTP</em> y construir un modelo propio basado en 3 pilares: dividir correctamente la información, refactorizar nuestro código y describir el comportamiento de una forma estandarizadaMinimal API en .NET 72023-03-22T00:00:00+00:00https://www.developerro.com/2023/03/22/minimal-api-net7<p><strong>ASP.NET</strong> es un framework desarrollado por Microsoft para construir aplicaciones web y servicios web. Lleva muchos años en el mercado y es una solución muy robusta. Con la aparición de <strong>.Net Core</strong>, se creó <strong>Asp.Net Core</strong>. Una versión moderna y más ligera, diseñada para ser multiplataforma y compatible con una variedad de sistemas operativos, incluyendo <em>Windows</em>, <em>MacOS</em> y <em>Linux</em>. Pero su gran robusted sigue vinculada a cierta complejidad a la hora de programarla. Aquí es donde entra <strong>Minimal API</strong>.Qué podemos esperar de nuestra Manager2023-03-08T00:00:00+00:00https://www.developerro.com/2023/03/08/nuestra-manager<p>Hace unos días que, por equivocación, me recomendaron un libro al que le tenía muchas ganas. Así que aproveché tan dulce error para retomar ese ya olvidado objetivo y empecé a leerlo. Su título: <em>“The Manager’s Path: A Guide for Tech Leaders Navigating Growth and Change”</em>. Muy sugerente. NetCoreConf 23: Richardson Maturity Model2023-03-04T00:00:00+00:00https://www.developerro.com/video/2023/03/04/netcoreconf23-bcn<p>El pasado sábado 4 de marzo estuvimos en la NetCoreConf 2023 de Barcelona. Allí tuvimos el placer de ver muchas charlas interesantes, tomar una cerveza con amigos e incluso nos dió tiempo a hablar del modelo de madurez de RichardsonC#: enum2023-02-22T00:00:00+00:00https://www.developerro.com/2023/02/22/enums-csharp<p>Antes de que existieran los tipos enumeración (<code class="language-plaintext highlighter-rouge">enum</code>), los programadores teníamos que usar otras técnicas para representar conjuntos de valores constantes con nombres significativos. Estas técnicas incluían el uso de constantes, estructuras y cadenas de texto. Sin embargo, estos apaños tenían sus propias desventajas y no eran tan flexibles ni tan fáciles de usar. Pi Hole o cómo bloquear publicidad en tu red local2023-02-08T00:00:00+00:00https://www.developerro.com/2023/02/08/pi-hole<p>Después de leer muchas referencias por internet y ver que tenía una <em>Raspberry Pi 3 B+</em> sin usar, decidí instalar <strong>Pi Hole</strong> en mi red local. Desde entonces, he estado muy contento con el resultado. Quizá no ha bloqueado toda la publicidad y todo el rastreo que puede existir en la Web, pero sí ha reducido considerablemente la cantidad de publicidad que veo al navegar.Cómo corregir una Null Reference Exception2023-01-25T00:00:00+00:00https://www.developerro.com/2023/01/25/nullreferenceexception<p>¿Alguna vez has intentado tomarte un botellín de cerveza sin abrir? Puede ser divertido, pero también será decepcionante. Si no andas con cuidado, podrías hacerte una herida con la chapa que cierra el botellín. Siempre deberías abrir una cerveza antes de tomarla, o terminarás con la garganta seca, el estómago vacío y una estupenda cerveza en la mano que no te puedes beber.Mi chuleta de Git2023-01-11T00:00:00+00:00https://www.developerro.com/2023/01/11/git-cheatsheet<p>Los repositorios de Git pueden ser muy útiles, pero a veces el uso del terminal puede ser intimidante. No es el objetivo de este artículo tratar todo lo que abarca esta tecnología de una forma pormenorizada, simplemente mostrar algunos trucos para hacer el trabajo con Git del día a día un poco más fácilHigh underperformance code2022-11-18T00:00:00+00:00https://www.developerro.com/video/2022/11/18/high-<p>A lo largo de esta sesión mostraremos los errores más comunes que nos hemos encontrado y que causan problemas de rendimiento en nuestros servicios ¿Nos acompañas a ver cómo podemos detectarlos antes de salir a producción?APIs con AspNet core 72022-09-17T00:00:00+00:00https://www.developerro.com/video/2022/09/17/apis-aspnet-core-7<p>Hacer APIs en dotnet ya no se reduce a un controlador MVC. En los últimos años se han ido introduciendo una serie de mejoras a nivel de framework y lenguaje que nos permitirán desarrollar servicios rápidos, seguros y eficientes siguiendo los patrones que más nos convengan. Quieres verlo?Copilot un año más tarde2022-09-14T00:00:00+00:00https://www.developerro.com/video/2022/09/14/tras-copilot<p>GitHub Copilot es un sistema de IA basado en Codex que extrae el contexto del código fuente que tenemos, y nos sugiere desde líneas individuales hasta funciones completas. Su página oficial lo define como “Your AI pair programmer”. Así que, hemos decidido ponerlo a prueba ¿sabrá trabajar bien en equipo? ¿nos ayudará? ¿entenderá la dinámica de una Kata? ¿nos saboteará?Mesa redonda: debatimos sobre DI e IoC2022-07-26T00:00:00+00:00https://www.developerro.com/video/2022/07/26/mesa-redonda-ioc-di<p>Tertulia técnica sobre las implicaciones del uso de Dependency Injection y contenedores de Inversion Of Control en nuestros desarrollos.Dockerfile para Rust2022-05-11T00:00:00+00:00https://www.developerro.com/2022/05/11/dockerfile-rust<p>He de reconocer que tengo una debilidad con <em>rust</em>. No es mi lenguaje de programación favorito ni de referencia. Ni si quiera lo uso en mi trabajo diario. Pero siempre que puedo hago alguna pequeña aplicación usándolo. Es un lenguaje de programación que me gusta muchoDockerfile para .Net 62022-04-27T00:00:00+00:00https://www.developerro.com/2022/04/27/dockerfile-net6-test<p>Hoy vamos a proponer un reto: a ver si conseguimos hacer un artículo sobre contenedores sin usar la palabra <em>docker</em> españolizada y verbalizada. Y ya que estamos, a ver si también conseguimos hablar de como <em>dockerizar</em> nuestras aplicaciones en <em>.Net 6</em>… oh vaya… bueno, como iba diciendo: a ver si conseguimos no escribir la palabra <em>kubernetes</em> en todo el artículo. DifícilDockerfile tips2022-03-03T00:00:00+00:00https://www.developerro.com/2022/03/03/dockerfile-tips<p>Hace unos años, la entradilla de un artículo de este mismo blog, que hablaba de contenedores y Azure Functions, comenzaba:</p>
<blockquote>
<p>Docker y los containers son a la programación, lo que el rebozado y empanado a la cocina tradicional.</p>
</blockquote>
<p>Y sigo pensando lo mismo. De hecho, los contenedores están más de moda que nunca. Y en este contexto, es fundamental saber crear las imágenes más eficientes posibles. Es decir, buenos archivos <em>Dockerfile</em>Novedades Asp.Net Core 6.02021-11-16T00:00:00+00:00https://www.developerro.com/2021/11/16/novedades-aspnet-core-6<p>La semana pasada asistimos a una vorágine de eventos de Microsoft en los que pudimos ver desde la presentación de Visual Studio 2022 hasta un evento plagado de sesiones de desarrollo llamado <a href="https://www.dotnetconf.net/">.NET Conf 2021</a>. El resultado: nueva versión de todo y un montón de cosas para probarResolviendo katas con Copilot2021-10-02T00:00:00+00:00https://www.developerro.com/video/2021/10/02/katas-copilot<p>Dice la página web oficial de Github Copilot que es “Your AI pair programmer” y hemos decidido ponerlo a prueba ¿sabrá trabajar bien en equipo? ¿nos ayudará? ¿entenderá la dinámica de una Kata? ¿nos saboteará?Creando un bot para Twitch con GPT-32021-09-25T00:00:00+00:00https://www.developerro.com/video/2021/09/25/twitch-bot-gpt3<p>Aprovechando que tenemos acceso a la beta de la API de GPT-3 de OpenAi, vamos a crear un chat bot de twitch usando para responder esta inteligencia artificial. El resultado seguro que no es lo que esperabas..Probamos la beta de OpenAI2021-09-24T00:00:00+00:00https://www.developerro.com/video/2021/09/24/probamos-beta-openai<p>Nos hemos puesto a probar la API beta de OpenAI: GPT-3, Codex y además Github Copilot. Y para ello hemos contado con la ayuda de Bruno Capuano (<a href="https://www.twitter.com/elbruno">@elbruno</a>), Microsoft AI MVP y Lead Innovation en AvanadeMadridDotNet - Hot Crazy C# 102021-07-03T00:00:00+00:00https://www.developerro.com/video/2021/07/03/csharp10-madriddotnet<p>Hablamos de los planes que hay para C#10. Repasaremos todas esas funcionalidades curiosas que podemos encontrar en el backlog del equipo de desarrollo y lo que es más divertido: les pondremos nota Rust es especial2021-06-10T00:00:00+00:00https://www.developerro.com/2021/06/10/rust-especial<p>Rust es un lenguaje de programación que no ha venido a hacer que programemos menos. Desde el primer momento de empezar a escribir código vamos a descubrir que, cosas relativamente comunes son mucho más fáciles de desarrollar usando lenguajes interpretados o compilados para una máquina virtual. Quizá ahí resida su encantoNo Tiene Nombre [podcast]2021-06-08T00:00:00+00:00https://www.developerro.com/2021/06/08/no-tiene-nombre<p>Lo que más me gusta de los eventos técnicos presenciales es lo de las “charlas del bar”. Esas que surgen esporádicamente en el bar más cercano al lugar donde se celebra la convención y, cerveza en mano, se monta un corro improvisado donde todo el que quiera está invitado a hablar o expresar su opinión sobre: tecnologías, experiencias, lo que está por venir, lo que nos gustaría viniera… sobre todo. Y eso mismo es lo que nos ofrece el podcast <a href="https://www.ivoox.com/podcast-bruno-no-tiene-nombre_sq_f1277993_1.html">No Tiene Nombre</a>.Kata FizzBuzz en Rust2021-06-02T00:00:00+00:00https://www.developerro.com/2021/06/02/fizz-buzz-rust<p>Dicen las leyendas que uno de los juegos de beber más conocidos de Inglaterra es el FizzBuzz. El <em>quinito</em> en cuestión consiste en montar un corro de personas e ir contando desde 1 en adelante. Cada jugador va diciendo un número secuencialmente. Pero hay 3 condiciones: si el número es múltiplo de 3 en lugar del número, debes decir “Fizz”, si es múltiplo de 5 dices “Buzz” y si es múltiplo de ambos, “FizzBuzz”. El que falle al decir su número o palabra, bebePrimeros pasos con Rust2021-05-26T00:00:00+00:00https://www.developerro.com/2021/05/26/rust-intro<p>El año 2020 corona por quinta vez consecutiva a <a href="https://www.rust-lang.org/">Rust</a> como <a href="https://insights.stackoverflow.com/survey/2020#technology-most-loved-dreaded-and-wanted-languages-loved">el lenguaje de programación más querido</a> por los visitantes de <a href="https://stackoverflow.com/">stackoverflow</a>. Puede ser que en 2016 la gente tuviera un poco de <em>hype</em>. No en vano, ese año ya había salido su versión 1.0. Después de varios años de desarrollo empezaba a parecer una plataforma muy rápida, eficiente, solvente y, en definitiva, interesanteNovedades de c# 102021-05-19T00:00:00+00:00https://www.developerro.com/2021/05/19/csharp-10<p>Hace unos días <a href="https://devblogs.microsoft.com/visualstudio/visual-studio-2022/">Microsoft anunció Visual Studio 2022</a>. La herramienta que viene a actualizar al ya vetusto Visual Studio 2019 (dos años en el mundo de la tecnología son una eternidad). Dicen que podremos probarlo en verano, pero no han indicado fecha exacta de lanzamiento. Quizá lo publiquen junto con .Net 6 en noviembre. Y si sacan nueva versión de IDE y de <em>framework</em>, tendrán nueva versión de C#Simple Asp.Net Core2021-05-12T00:00:00+00:00https://www.developerro.com/2021/05/12/aspnet-core-simple<p>La vida está plagada de casualidades. Si no preguntadle a <a href="https://en.wikipedia.org/wiki/David_Heinemeier_Hansson">David Heinemeier Hansson</a>. Quién le iba a decir que, en 2005 iba a hacer explotar las mentes de los desarrolladores y poner <a href="https://rubyonrails.org">Ruby On Rails</a> en boca de todos. Tampoco pensaría que iba a ser la fuente de inspiración de un proyecto en .net llamado <a href="http://www.castleproject.org/projects/monorail/">MonoRail</a>, desarrollado por el grupo de <a href="https://www.infoq.com/news/2007/09/castleproject/">Castle Project en 2007</a>.OwnCloud con Azure Storage2021-05-05T00:00:00+00:00https://www.developerro.com/2021/05/05/owncloud-azure-storage<p>Todos conocemos sistemas como <em>OneDrive</em>, <em>Dropbox</em>, <em>iCloud</em>, <em>Google Drive</em>, <em>Cloud Drive</em> o <em>Mega</em>. Unos pocos de los muchos servicios de almacenamiento de archivos en la nube. Lo cierto es que además son bastante económicos. Debe ser gracias a la fuerte competencia. Pero ¿para qué usar un servicio de terceros si puedo montar el mío propio?Azure WebApps: Ip estática de salida2021-04-27T00:00:00+00:00https://www.developerro.com/2021/04/27/azure-webapp-static-outbound-ip<p>Uno de los grandes inconvenientes de usar Azure Web Apps ha sido el de configurar una IP estática de salida. Simplemente no se podía. Ha habido soluciones de lo más variopintas: usar un ASE, montar una máquina virtual tipo pasarela, Application Gateway, proxies… Pero ninguna de ellas se ha visto como una solución verdaderamente aceptable, hasta hoyAzure Functions con .NET 52021-03-24T00:00:00+00:00https://www.developerro.com/2021/03/24/azure-functions-net-5<p>Ha tardado más de lo que esperábamos, pero ya está aquí. Después de meses de espera y escondiendo el <a href="https://techcommunity.microsoft.com/t5/apps-on-azure/net-on-azure-functions-roadmap/ba-p/2197916">anuncio</a> dentro de un roadmap de las próximas versiones de <em>.Net</em>, las <em>dotnet Isolated Functions</em> pasan a RTMEF Core vs. Records2021-03-10T00:00:00+00:00https://www.developerro.com/2021/03/10/efcore-vs-records<p>No cabe duda de que los <em>tipos registro</em> son la funcionalidad más molona de C# 9. Es el abrazo definitivo que necesitábamos para poder mezclar, de una vez por todas, el paradigma funcional con el orientado a objetos. Es la expresión con nombre propio de la inmutabilidad en el mundo <em>.Net</em>ChorraTip: rutas windows en git bash2021-03-03T00:00:00+00:00https://www.developerro.com/2021/03/03/chorra-tip-1-wcd-command<p>¿No te ha pasado nunca que estás navegando por carpetas en el explorador de windows y copias la ruta para pegar en el terminal? A mí sí. Y resulta que esto no funciona con el <strong>bash</strong> de <em>Git for Windows</em>. Así que he decidido hacer que sí que funcioneRaiders of the lost leak2021-02-27T00:00:00+00:00https://www.developerro.com/video/2021/02/27/raiders-od-the-lost-leak<p>Esto que has terminado la primera fase de tu proyecto. Subes la aplicación a azure. Lo pones en producción. Empiezan a llegar visitas. Todo genial. Se empieza a caer la aplicación. Aleatoriamente. Miras la herramienta de monitoring y tienes la memoria a tope. Miras Application Insights y tienes un montón de excepciones de tipo “OutOfMemoryException”. Ay yai yai! Tienes un memory leak.Net 5 Just Talking2020-12-09T00:00:00+00:00https://www.developerro.com/video/2020/12/09/net-5-just-talking<p>Al fin ha llegó el día de la publicación de <strong>.Net 5 - <em>A unified platform</em></strong>. Y todo el mundo tiene dudas: ¿Es tán unificada como decían? ¿Es fácil actualizar a esta nueva versión? ¿Cuando sacan la 5.1? ¿Al final mola tanto C# 9 como parecía? ¿Qué novedades trae todo esto? ¿Estamos ante un cambio de ciclo?Personalización de Windows Terminal2020-11-18T00:00:00+00:00https://www.developerro.com/2020/11/18/custom-windows-terminal<p>Todos sabemos que, para conseguir el respeto de tus compañeros y jefes, solo hace falta tener un terminal que mole. Da igual si luego escribes usando solo los dedos índices. Si tu terminal parece <em>3|173</em>, es que eres <em>3|173</em>. Incluso si lo que usas en realidad es un producto de Microsoft con el nombre “Windows” delanteWorkshop Azure 100M2020-10-19T00:00:00+00:00https://www.developerro.com/video/2020/10/19/workshop-azure<p>Tengo una aplicación Web que podría calificarse en todo sentido como una web normal. Una WebApp que vive en un pacífico hosting en un data center empresarial, donde se ha desarrollado al igual que otras tantas aplicaciones. Pero ese día no fue para nada normal: nuestra aplicación debería subir a la nube y aguantar 100 millones de usuariosSOLID menos mola2020-10-15T00:00:00+00:00https://www.developerro.com/video/2020/10/15/solid-menos-mola<p>He de reconocer que el trabajo de Uncle Bob (Robert C. Martin) me ayuda a ser mejor programador. Cada vez que leo uno de sus libros o veo una de sus charlas, aprendo algo. Incluso si no es la primera vez que lo hago. Y los principios S.O.L.I.D. no son una excepciónSOLID menos mola (D)2020-10-14T00:00:00+00:00https://www.developerro.com/2020/10/14/solid-menos-mola-d<p>La <em>D</em> de <em>SOLID</em> se refiere al principio de inversión de dependencia o <strong>DIP</strong> por sus siglas en inglés (<strong>D</strong>ependency <strong>I</strong>nversion <strong>P</strong>rinciple). Se puede resumir con que una clase debe depender de las abstracciones, no de las concreciones. Aunque <a href="https://twitter.com/unclebobmartin">Robert C. Martin</a> es mucho más específico y realiza una definición dividida en dos partesSOLID menos mola (I)2020-10-06T00:00:00+00:00https://www.developerro.com/2020/10/06/solid-menos-mola-i<p>La <em>I</em> de <em>SOLID</em> se refiere al principio de segregación de interfaz o <strong>ISP</strong> por sus siglas en inglés (<strong>I</strong>nterface <strong>S</strong>egregation <strong>P</strong>rinciple). Se puede definir como que muchas interfaces específicas son mejores que una interfaz de propósito general. O como diría <a href="https://twitter.com/unclebobmartin">Robert C. Martin</a>, “los clientes no deben ser forzados a depender de interfaces que no utilizan”SOLID menos mola (L)2020-09-30T00:00:00+00:00https://www.developerro.com/2020/09/30/solid-menos-mola-l<p>La <em>L</em> de <em>SOLID</em> se refiere al principio de sustitución de Liskov o <strong>LSP</strong> por sus siglas en inglés (<strong>L</strong>iskov <strong>S</strong>ubstitution <strong>P</strong>rinciple). Se puede definir como que cada clase que hereda de otra puede usarse como su padre sin necesidad de conocer las diferencias entre ellas. Una definición muy compleja para un concepto mucho más simple. Pero con una historia algo truculenta detrásSOLID menos mola (O)2020-09-23T00:00:00+00:00https://www.developerro.com/2020/09/23/solid-menos-mola-o<p>La <em>O</em> de <em>SOLID</em> se refiere al principio de abierto/cerrado, <strong>OCP</strong> por sus siglas en inglés (<strong>O</strong>pen/<strong>C</strong>losed <strong>P</strong>rinciple). Se puede definir como que una clase debe estar abierta a la extensión y cerrada a la modificación. Fue acuñado por primera vez por <a href="https://twitter.com/Bertrand_Meyer">Bertrand Meyer</a>. Pero no fue hasta que <a href="https://twitter.com/unclebobmartin">Robert C. Martin</a> lo reformuló e introdujo dentro del acrónimo <em>SOLID</em>, que se popularizóSOLID menos mola (S)2020-09-16T00:00:00+00:00https://www.developerro.com/2020/09/16/solid-menos-mola-s<p>La <em>S</em> de <em>SOLID</em> se refiere al principio de responsabilidad única o <strong>SRP</strong> por sus siglas en inglés (<strong>S</strong>ingle <strong>R</strong>esponsibility <strong>P</strong>rinciple). Se puede definir como que una clase debe tener una sola responsabilidad, o como diría <a href="https://twitter.com/unclebobmartin">Robert C. Martin</a>, “una clase debe tener solo una razón para cambiar”The Hitchhiker's Guide to Azure WebApps2020-09-10T00:00:00+00:00https://www.developerro.com/video/2020/09/10/advanced-azure-webapps<p>La grabación del evento de Twitch de <a href="https://twitter.com/CAT_zure">Catzure</a> junto con <a href="https://twitter.com/robertbemejo">Robert Bermejo</a>. En esta sesión os enseñamos algunos de esos truquillos que solemos utilizar para mantener nuestras aplicaciones con vida a pesar de que el mundo las quiera matarAzure WebApps Tips & Tricks2020-08-26T00:00:00+00:00https://www.developerro.com/2020/08/26/azure-webapps-tips-n-tricks<p><em>Si no nos anticipamos a los imprevistos, si no esperamos lo inesperado en una nube con infinitas posibilidades, podríamos hallarnos a merced de cualquiera y de cualquier cosa que no pueda ser programada, etiquetada o clasificada</em>.Novedades de c# 92020-08-19T00:00:00+00:00https://www.developerro.com/2020/08/19/csharp-9<p>Este año 2020 está siendo como una montaña rusa. Y el mundo de las tecnologías de desarrollo de Microsoft no iba a ser diferente. En noviembre se espera la presentación de <strong>.Net 5 - <em>A unified platform</em></strong>. No, no es el título de una película de sábado por la tarde de antena 3. Es la nueva plataforma para gobernarlas a todas. Una plataforma para encontrarlas, una plataforma para atraerlas a todas y atarlas en las tinieblas.Azure Summer Talks Community2020-07-31T00:00:00+00:00https://www.developerro.com/video/2020/07/31/azure-summer-talks<p>Como cada año para estas fechas desde <a href="https://twitter.com/CAT_zure">Catzure</a> organizan una mesa redonda con los mejores expertos de Azure de España para conversar sobre el cloud, desarrollo y todo aquello que les aptezca. Y este año he tenido la suerte de ser uno de los invitados.Introducción a la programación cuántica v22020-07-09T00:00:00+00:00https://www.developerro.com/video/2020/07/09/introduccion-programacion-cuantica<p>Te explicaré por qué estás aquí. Estás aquí porque sabes algo, aunque lo que sabes no lo puedes explicar, pero lo percibes. Ha sido así durante toda tu vida. Algo no funciona en la programación, no sabes lo que es, pero ahí está, como una astilla clavada en tu mente. Y te está enloqueciendo. Esa sensación te ha traído hasta aquí ¿Sabes de lo que estoy hablando? ¿Te gustaría saber qué es la programación cuántica?Asp.Net core data protection2020-05-13T00:00:00+00:00https://www.developerro.com/2020/05/13/aspnet-core-data-protection<p>Cuando encontré en <a href="https://stackoverflow.com/search?q=c%23+encrypt+data">stackoverflow</a> mi primer algoritmo para encriptar datos, fue como entrar por primera vez en Hogwarts, la escuela de magia y hechicería. No entendía muy bien que era eso, pero podía copiar el código y hacer lo mismo en mis aplicacionesAzure DevOps: El panel de expertos2020-04-24T00:00:00+00:00https://www.developerro.com/video/2020/04/24/gab-azure-devops<p>En esta sesión del Global Azure Bootcamp 2020 nuestros expertos van a repasar la actualidad del universo Azure DevOps y su ecosistema. Se abordan temas tales como Github, Ephimeral Agents, IaC, monitorización, MLOps y otras muchas cosas másUnit testing tips2020-04-22T00:00:00+00:00https://www.developerro.com/2020/04/22/unit-testing-tips<p>Cuando preguntas a la gente por unit tests, en mi experiencia, te puedes encontrar con tan solo un puñado de posibilidades: los que no saben qué son, los que dicen saber qué son y los que saben que son. Y si miramos más profundamente este último grupo nos encontraremos con: los que dicen usarlos cuando deben, los que dicen usarlos cuando pueden, los que dicen usarlos siempre y los que los usan cuando puedenNo comments...2020-04-11T00:00:00+00:00https://www.developerro.com/2020/04/11/no-comments<p>Muchas gracias a todos por los comentarios que habéis ido dejando en este blog. Siempre me habéis animado a seguir escribiendo y de alguna manera, le habéis dado sentido a todo esto. Hoy admito mi derrota. Las redes sociales han ganado. Hoy comienza la era de sin comentariosN-Texture Chocolate Cake Architecture2020-04-09T00:00:00+00:00https://www.developerro.com/video/2020/04/09/n-texture-chocolate-cake-architecture<p>La arquitectura de “la tarta de chocolate de n-texturas”, también conocida como “arquitectura tarta sacher” o, por su nombre más informal, “Vertical Slice”; es un modelo de desarrollo que ha venido a revolucionar el mundo de la arquitectura de software tal y como lo conocemosIntroducción a la programación cuántica2020-04-04T00:00:00+00:00https://www.developerro.com/video/2020/04/04/introduccion-programacion-cuantica<p>Te explicaré por qué estás aquí. Estás aquí porque sabes algo, aunque lo que sabes no lo puedes explicar, pero lo percibes. Ha sido así durante toda tu vida. Algo no funciona en la programación, no sabes lo que es, pero ahí está, como una astilla clavada en tu mente. Y te está enloqueciendo. Esa sensación te ha traído hasta aquí ¿Sabes de lo que estoy hablando? ¿Te gustaría saber qué es la programación cuántica?Github Actions vs. Azure Pipelines2020-01-25T00:00:00+00:00https://www.developerro.com/video/2020/01/25/github-actions-vs-azure-pipelines<p>Analizaremos a fondo Github Actions y Azure Pipelines en busca de sus ventajas y sus puntos débiles. Será un combate a muerte entre estas dos tecnologías mellizas para gestionar nuestro CI/CDAzure hex-char-counter tutorial2019-10-01T00:00:00+00:00https://www.developerro.com/2019/10/01/azure-hex-char-counter<p>El otro día en el trabajo surgió la necesidad de crear un sistema online complejo y escalable para la resolución de un problema general que teníamos. El objetivo era conseguir el tamaño de una cadena de texto en formato hexadecimal. Lo primero que nos vino a la cabeza fue Azure: ¿cómo podría ayudarnos?Terraform con Azure2019-07-19T00:00:00+00:00https://www.developerro.com/2019/07/19/terraform-azure<p>La terraformación es una serie de técnicas que, aplicadas en conjunto, conseguirían dotar a un planeta o asteroide inerte, de una serie de características semejantes a las de la tierra. De esta forma se conseguiría un planeta habitable. Y aunque pueda parecer pomposo (que lo es), Terraform va de eso mismo, pero con el <em>cloud</em>.Introducción a Quatum Development (iii)2019-05-29T00:00:00+00:00https://www.developerro.com/2019/05/29/introduccion-quatum-development-iii<p>Sé que tenéis miedo. Teméis los <em>qubits</em>. Teméis el cambio. Yo no conozco el futuro. No he venido para deciros cómo acabará todo esto. Al contrario, he venido a deciros cómo va a comenzar. Voy a terminar de escribir este artículo. Voy a enseñarles a todos lo que vosotros no queréis que vean. Les enseñaré un mundo sin vosotros. Un mundo sin <em>bits</em> y sin problemas de calor en los transistores, sin limites ni fronteras. Un mundo donde todos los estados sean posibles. Lo que hagáis después, es una decisión que dejo en vuestras manos.Introducción a Quatum Development (ii)2019-05-23T00:00:00+00:00https://www.developerro.com/2019/05/23/introduccion-quatum-development-ii<p>Te explicaré por qué estás aquí. Estás aquí porque sabes algo, aunque lo que sabes no lo puedes explicar, pero lo percibes. Ha sido así durante toda tu vida. Algo no funciona en la programación, no sabes lo que es, pero ahí está, como una astilla clavada en tu mente. Y te está enloqueciendo. Esa sensación te ha traído hasta aquí ¿Sabes de lo que estoy hablando? ¿Te gustaría saber qué es la programación cuántica?Introducción a Quatum Development (i)2019-05-10T00:00:00+00:00https://www.developerro.com/2019/05/10/introduccion-quatum-development<p>El mundo de la programación tal y cómo lo conocemos tiene fecha de caducidad. Por muchos materiales nuevos, aleaciones especiales o mejoras tecnológicas que tengamos, un microprocesador tiene un límite de tamaño a partir del cual deja de ser eficiente. Cada día estamos más cerca de ese límite y es aquí donde aparece la computación cuántica. Prepárate para cambiar de paradigma, para cambiar <em>bits</em> por <em>qubits</em>Azure Functions: custom triggers2019-05-02T00:00:00+00:00https://www.developerro.com/2019/05/02/azure-functions-custom-triggers<p>Si ya sé que soy un vago. Es el tercer artículo más o menos igual que escribo. Este es sobre cómo crear <em>triggers</em> personalizados de <em>Azure Functions</em>. Y antes ya tuvimos los de los bindings de <a href="/2019/04/15/azure-functions-custom-out-bindings/"><em>out</em></a> y de <a href="/2019/04/23/azure-functions-custom-in-bindings/"><em>in</em></a>. Tenéis que entender que tengo otra vida más allá de este blog. Además, creo que al final queda mucho mejor separadoAzure Functions: custom in bindings2019-04-23T00:00:00+00:00https://www.developerro.com/2019/04/23/azure-functions-custom-in-bindings<p>El otro día veíamos <a href="/2019/04/15/azure-functions-custom-out-bindings">cómo crear <em>custom out bindings</em> para <em>Azure Functions</em></a>, así que hoy me he visto obligado a tratar los <em>custom in bindings</em> o de entrada. Para ello utilizaremos de ejemplo la creación de un <em>binding</em> que lea un valor (secret) del servicio Azure Key VaultAzure Functions: custom out bindings2019-04-15T00:00:00+00:00https://www.developerro.com/2019/04/15/azure-functions-custom-out-bindings<p>La gran ventaja en de Azure Functions frente a otra tecnología es que escribes muy poco código, ya que solo debes gestionar como fluyen los datos usando unos <em>bindings</em> de entrada y salida. El propio SDK nos aporta un buen conjunto por defecto de <em>bindings</em> que nos ayudarán a tratar con peticiones HTTP, Azure Storage Account (Blob, Queue y Table), Service Bus o Cosmos DB. Pero ¿y si quiero integrarme con otro sistema no soportado? Microsoft Graph: Webhooks2019-04-09T00:00:00+00:00https://www.developerro.com/2019/04/09/microsoft-graph-webhooks<p>Es el día en el que salen a la venta las entradas de la <a href="https://www.comic-con.org/">Comic-Con</a>, o cualquier evento grande, de semejante calado, como el Global Azure Bootcamp (en <a href="https://azurebootcamp.es/">Madrid</a>, <a href="https://catazurebootcamp.azurewebsites.net/">Barcelona</a> o incluso en Seattle). Cuando publicas un nuevo <em>post</em> en tu blog y todavía no se ha actualizado. Si estás usando autenticación de doble factor y aun no ha llegado el email de verificación. El caso es que toda situación semejante, acaba igual: aporreando la tecla F5Microsoft Graph2019-04-02T00:00:00+00:00https://www.developerro.com/2019/04/02/microsoft-graph<p>Toda buena película adolescente de los 80, comienza con un pelele al que todo el mundo margina. Este personaje esconde algo en su interior de lo que, al principio, solo se notan pequeños y casuales atisbos. Después de una gran aventura de autoconocimiento y superación personal, el protagonista consigue dominar este poder oculto y convertirse en un verdadero héroeAzure Functions con docker2019-03-26T00:00:00+00:00https://www.developerro.com/2019/03/26/azure-functions-docker<p>Docker y los containers son a la programación, lo que el rebozado y empanado a la cocina tradicional. Si bien añade un paso extra que ensucia y a veces se hace un poco difícil, después puedes transportar la comida con mucha facilidad, sin romperla, y además te resulta muy fácil de comer. Y no nos engañemos, está claro que a todo el mundo le gustan las croquetasOAuth 2.0 Grant Types2019-03-19T00:00:00+00:00https://www.developerro.com/2019/03/19/oauth-authentication-grant-types<p>Muy buenos días y gracias por acompañarnos un martes más. La pregunta de hoy y por 25 pesetas la respuesta acertada: díganos tipos de concesión (Grant Types) permitidos por OAuth 2.0, como por ejemplo “password”. Un, dos, tres, responda otra vezAutenticando una API con JWT2019-03-12T00:00:00+00:00https://www.developerro.com/2019/03/12/jwt-api-authentication<p>Uno de los grandes problemas de ser programador hoy en día es que, tenemos tantas librerías y tantas facilidades, que resulta muy sencillo ignorar el funcionamiento interno de las cosas que utilizamos. Supongo que el caso de la autenticación+autorización de una API, al ser un factor importante dentro de una aplicación, no será uno de estos casos. No obstante, y solo por prevenir, vamos a describirloMétodo Kanban con Azure DevOps (y 2)2019-03-05T00:00:00+00:00https://www.developerro.com/2019/03/05/azure-devops-kanban-ii<p>Si ya tienes claro qué es el Método Kanban, pero no tienes del todo claro cómo aplicarlo en una metodología; si ya aplicas este método, pero te interesan las experiencias de otros equipos; o si por el contrario, tu objetivo en la vida es demostrarle a todo el mundo lo equivocado que está: te va a encantar lo que viene a continuación.Método Kanban con Azure DevOps2019-02-26T00:00:00+00:00https://www.developerro.com/2019/02/26/azure-devops-kanban<p>Reservar un trozo de pared, dividirlo en columnas con cinta aislante y ponerle post-its de colores; no es Kanban. A eso se le llama guarrear la oficina. Y la idea de este artículo es que aprendas a guarrear Azure DevOps y así puedas dejar las paredes limpias. Todos te lo agradecerán.Novedades de c# 82019-02-19T00:00:00+00:00https://www.developerro.com/2019/02/19/csharp-8<p>¡Qué fuerte! ¡Qué fuerte! ¡Qué fuerte! ¡Qué Visual Studio 2019 ya está aquí! Bueno, casi. Ahora mismo tenemos disponible la versión <em>Preview</em> 2.2. Promete ser la ostia de rápido. Tiene un montón de novedades para programar en <em>python</em>. Una nueva experiencia para tratar con <em>WorkItems</em> de <em>Azure DevOps</em>. Realmente tiene innumerables nuevas <em>features</em> a la medida del desarrollador moderno. Pero hoy, solo hay una de ellas que nos interese: C# 8.0.Azure Functions con TypeScript2019-02-12T00:00:00+00:00https://www.developerro.com/2019/02/12/azure-functions-typescript<p>No os ha pasado alguna vez que al leer un artículo en lugar de leer los textos explicativos que su autor ha añadido, vais directamente al contenido de los <em>code snipets</em> y vais copiando y pegando… No os ha pasado que ignoráis la prosa que tanto tiempo ha costado escribir y solo leéis el código, porque ya os resulta bastante auto explicativo… Historia de C#2019-02-05T00:00:00+00:00https://www.developerro.com/2019/02/05/historia-csharp<p>Dicen que la historia la escriben siempre los vencedores. Aunque en mi opinión, la historia la ha escrito siempre el que tenía un medio para hacerlo. Esta afirmación puede demostrarse hoy en día echando un vistazo a un medio al que todo el mundo tiene acceso: internet. Una plataforma donde todos podemos escribir <em>nuestra propia historia</em>. Así pues, al igual que cualquier otro ignorante de la red, os voy a dar mi versión de la historia de C#. Y además os aseguro que esta sí cuenta lo que sucedió de verdad de la buena.Serverless API Rest2019-01-29T00:00:00+00:00https://www.developerro.com/2019/01/29/serverless-api-rest<p>Serverless es un concepto nacido en la Nube. Su gran éxito es ser una arquitectura para backend, del lado del servidor (Server-side), que no tiene estado, de ejecución rápida y que responde a eventos. Literalmente, se traduce como “sin servidor”. Y aquí es donde empieza el conflicto. IoT con MxChip (I)2019-01-21T00:00:00+00:00https://www.developerro.com/2019/01/21/iot-con-mxchip-i<p>Hoy empezamos una pequeña serie sobre IoT usando un dispositivo MxChip y la plataforma Azure. Nada como empezar el año escribiendo un nuevo artículo sobre una tecnología de la que nunca antes lo había hecho.Por qué todo lo que subo a azure está mal2018-04-27T00:00:00+00:00https://www.developerro.com/2018/04/27/todo-subo-azure-esta-mal<p>Hoy he venido contaros mis experiencias ayudando a diferentes empresas en la subida de sus aplicaciones a azure, y concretamente a azure PaaS. Así que en realidad no son mis experiencias, son las de esas empresas. Y si soy totalmente sincero, no son sus experiencias, en realidad de lo que os voy a hablar es de sus quejas.GAB18 - Por qué todo lo que subo a azure está mal2018-04-26T00:00:00+00:00https://www.developerro.com/video/2018/04/26/gab18-todo-subo-azure-esta-mal<p>“Azure es muy lento” o “Me voy a amazon” son solo un par de las frases que puedes oir cuando ayudas a alguien con las migración de su aplicación on-premises (que en la mayoría de los casos es del tipo on-my-laptop) a Microsoft Azure. Pero ¿Que hay detrás de este tipo de comentarios?Zork (en Español) - Bot2017-02-20T00:00:00+00:00https://www.developerro.com/2017/02/20/zork-en-espanol<blockquote>
<p>Corriendo, rodeé la casa hasta su parte trasera, donde encontré una ventana mal cerrada. La abrí y me colé. Como esperaba, había entrado por la cocina. En el centro de aquel espacio había una mesa de madera y sobre ella reposaba un saco marrón, alargado, y una botella de agua. Aun lado había una chimenea y una escalera que conducía al desván. Un distribuidor, situado a la izquierda, conducíaalsalón. Igual que en eljuego.Duelo de espadas: el bot definitivo2017-02-15T00:00:00+00:00https://www.developerro.com/2017/02/15/duelo-espadas-bot-definitivo<p>Los 90 fueron una década estupenda. En cuanto a videojuegos, quizá sea por la edad, pero creo que eran los mejores. Y aprovechando este momento melancólico decidí volver a jugar al Monkey Island. Una saga que como todos sabréis consta de dos partes. En el que teníamos duelos de espada/insultos delirantes. Pero algunas veces eran combates bastante complejos. Quizá la nueva tecnología me podría ayudar con esto. Dos horas más tarde, el proyecto terminado. He aquí el diario del pirata. Las notas de desarrollo del bot definitivo: El duelo de espadas.ReConnect(); //2016 - Microsoft ALM End to End2016-12-12T00:00:00+00:00https://www.developerro.com/video/2016/12/12/reconnect-alm-end-to-end<p>Veremos cómo hacer una una pull request con modificaciones, lanzar compilaciones con sonar para comprobar la calidad, reléase y deployment automático en varios entornos y finalmente cómo controlar el ciclo de vida completo con VSTS/TFS.Novedades de c# 72016-11-16T00:00:00+00:00https://www.developerro.com/2016/11/16/csharp-7<p>La nueva versión de c# se acerca. Será la número 7 ya. C# 7 lo llaman. Aunque posiblemente le acompañará una versión de .Net Framework 4.X.X. Ó quizá una dotNet Core 1.X. De cualquier forma no podemos ignorarlo. Pero no es mi intención realizar un aburrido recorrido sobre sus novedosas características. El objetivo del post es realizar un aburrido recorrido sobre sus novedosas características, y ponerles nota.VSTS: Package Management2016-10-03T00:00:00+00:00https://www.developerro.com/2016/10/03/vsts-package-management<p>¿Os acordais de John McClane? Lo dejamos salvando la navidad en Los Ángeles. Ahora está en Nueva York. Feliz. Hasta que Simon, el hermano de Hans, aparece con ganas de bronca. Quiere robar el oro de los Estados Unidos de America. Pero esta vez John McClane cuenta con la ayuda de Samuel L. Jackson. ¿Podrán superar juntos el juego de “Simon dice”?VSTS: Migrar TFVC a Git2016-09-15T00:00:00+00:00https://www.developerro.com/2016/09/15/vsts-migrar-tfvc-a-git<p>Hace no mucho, <a href="https://twitter.com/elbruno" title="El Bruno">El Bruno</a> me invitó a participar en <a href="https://elbruno.com/2016/08/30/podcast-por-que-odio-git/" title="Podcast: Por qué odio Git">uno de sus conocidos podcast</a>. En este caso la temática trataba de un artículo que podréis leer en esta misma Web: <a href="http://fernandoescolar.github.io/2016/02/16/por-que-odio-git/" title="Artículo: por qué odio Git">Por qué odio Git</a>. Dejando de lado lo agradecido que estoy por esta oportunidad, dentro de la conversación, me preguntó si me habían pedido migrar a Git muchos clientes. La verdad es que no. Pero me dió una buena idea sobre la que escribir.Quiero mi propio NuGet2016-09-08T00:00:00+00:00https://www.developerro.com/2016/09/08/quiero-mi-propio-nuget<p>¿Recuerdas la primera vez que viste a John McClane? Nada más llegar en avión, le llevaron a la torre Nakatomi. La idea era recoger a Holly y llevarla de vuelta a casa. En navidad. Todo era estupendo. Hasta Allen disfrutaba de un día tranquilo. Pero un maldito bastardo llamado Hans tuvo que venir a joder el cotarro.El preguntón y cierre evento2016-04-20T00:00:00+00:00https://www.developerro.com/video/2016/04/20/gab16-pregunton<p>Cierre del Global Azure Bootcamp 2016 con el concurso “El Preguntón”.Por qué odio Git2016-02-16T00:00:00+00:00https://www.developerro.com/2016/02/16/por-que-odio-git<p>El sistema de control de versión que más se ha extendido en los últimos años posiblemente sea Git. Algo que no ha pasado desapercibido para los desarrolladores de Microsoft. Así que han decidido integrarlo en todas sus herramientas. Y este hecho… Me ha destrozado la vida.
Un vistazo a Roslyn2016-02-09T00:00:00+00:00https://www.developerro.com/2016/02/09/un-vistazo-a-roslyn<p>El número de resultados que encuentras al buscar “Roslyn” es de 9-13 millones. Está claro que está de moda. Pero ¿qué es Roslyn? ¿y por qué debería importarme?
SCBCN15 - #NoEstimates2015-10-19T00:00:00+00:00https://www.developerro.com/video/2015/10/19/scbcn15-no-estimates<p>Aquí podrás encontrar el vídeo grabado de la sesión de la <strong>Software Craftsmanship Barcelona de 2015</strong> sobre #NoEstimates junto con <a href="https://twitter.com/acasquete">Alex Casquete</a>:SCBCN15 - Code Smells2015-10-06T00:00:00+00:00https://www.developerro.com/video/2015/10/06/scbcn15-code-smells<p>Aquí podrás encontrar el vídeo grabado de la sesión de la <strong>Software Craftsmanship Barcelona de 2015</strong> sobre Code Smells:Cachés2015-03-18T00:00:00+00:00https://www.developerro.com/2015/03/18/caches<p>La memoria caché es un tipo de almacenamiento, menor que la unidad de almacenamiento principal, pero con un acceso más rápido, que se utiliza en ingeniería de la computación para aportar un mayor rendimiento al sistema. La caché no es un concepto nuevo dentro de la informática, es una memoria que se lleva utilizando años y desde el punto de más bajo nivel de una computadora (procesador), hasta el más alto (software).
Load Test - Cómo crear un Web Performance Test2014-02-17T00:00:00+00:00https://www.developerro.com/video/2014/02/17/load-tests-2<p>En esta serie de vídeos se explicarán las pruebas de carga y cómo desarrollarlas usando la herramientas de Microsoft Visual Studio.Load Test - Introducción a las pruebas de carga2014-02-17T00:00:00+00:00https://www.developerro.com/video/2014/02/17/load-tests-1<p>En esta serie de vídeos se explicarán las pruebas de carga y cómo desarrollarlas usando la herramientas de Microsoft Visual Studio.Mesa redonda sobre SPA2014-01-22T00:00:00+00:00https://www.developerro.com/video/2014/01/22/mesa-redonda-sobre-spa<p>El pasado miércoles día 15 de enero realizamos una mesa redonda vía Hangout Air para tratar sobre retos, estado, y el "por qué" de las apps SPA. Contamos con la colaboración de Alfredo Fernandez (<a href="https://twitter.com/afernandez_l">@afernandez_l</a>), Albert Margarit (<a href="https://twitter.com/albertmargarit">@albertmargarit</a>), Marc Rubiño (<a href="https://twitter.com/Marc_Rubino">@Marc_Rubino</a>), Óscar Sotorrío (<a href="https://twitter.com/osotorrio">@osotorrio</a>), Tomás Corral (<a href="https://twitter.com/amischol">@amischol</a>) y Fernando Escolar (<a href="https://twitter.com/fernandoescolar">@fernandoescolar</a>).
La pequeña gran guía sobre Load Tests2013-10-21T00:00:00+00:00https://www.developerro.com/2013/10/21/la-pequea-gran-gua-sobre-load-tests<p>Las pruebas de carga se usan para observar y analizar un sistema en unas circunstancias específicas. Por ejemplo, podríamos crear un portal web en el que esperamos un número determinado de usuarios. Y antes de ponerlo en producción queremos estar seguros de que se va a comportar correctamente cuando lleguemos al cupo esperado.
Scrum con TFS2013-01-23T00:00:00+00:00https://www.developerro.com/2013/01/23/scrum-con-tfs<p>En los últimos años estamos asistiendo a un cambio radical en la forma de gestionar los proyectos de desarrollo de software. Empieza a resultar extraño encontrar ofertas de trabajo en las que no se mencione scrum, o proyectos que empiecen en los que no se haya planteado el uso de metodologías ágiles. Pero de nada nos sirve una metodología, por muy buena que pueda ser, si perdemos más tiempo gestionando el proceso que programando. Por lo que nos vemos casi obligados a empezar a usar herramientas que nos ayuden con esta tarea. A lo largo de este artículo trataremos una de esas herramientas, que consideramos más potentes: TFS.</p>
Patrones de diseño: Repository2013-01-07T00:00:00+00:00https://www.developerro.com/2013/01/07/patrones-de-diseo-repository<p><em>En todos los asuntos de opinión, nuestros adversarios están locos</em> (Oscar Wilde). Por suerte los locos con los que puedes compartir opiniones en la lista de correo de la fundación <a href="http://www.techdencias.net" target="_blank">[T]echdencias</a>, son magníficos profesionales como <a href="https://twitter.com/Marc_Rubino" target="_blank">@Marc_Rubino</a> o <a href="https://twitter.com/mserrate" target="_blank">@mserrate</a>. Hace unos días tuvimos la oportunidad de discutir sobre el patrón “Repository”.
Team Foundation Server: Mac OS X+Java+Eclipse+Maven2012-11-26T00:00:00+00:00https://www.developerro.com/2012/11/26/team-foundation-server-mac-os-xjavaeclipsemaven<p>Hace unos meses, me encontraba en un cliente hablando de la posibilidad de sustituir su conjunto de aplicativos para ALM (Application Lifecycle Management o gestión del ciclo de vida de las aplicaciones) por el potente TFS de Microsoft. Se mostró fascinado por la herramienta: estuvimos navegando por el portal, mostrándole las gráficas y lo fácil que era gestionar todo el trabajo. No obstante, el líder tecnológico era escéptico y no confiaba en las capacidades del entorno que estábamos proponiendo. </p>
Patrones de diseño: Mediator2012-10-18T00:00:00+00:00https://www.developerro.com/2012/10/18/patrones-de-diseno-mediator<p>En el mundo de la programación orientada a objetos una de las máximas que debemos cumplir, si queremos desarrollar un código de calidad, es que debemos buscar una elevada cohesión con bajo acoplamiento. Y con el fin de ayudarnos en esta ardua tarea, aparece el patrón Mediator.
Patrones de diseño: Strategy2012-10-03T00:00:00+00:00https://www.developerro.com/2012/10/03/patrones-de-diseno-strategy<p>La mayor parte de los problemas que nos podemos encontrar al usar patrones de diseño vienen de no ser capaces de reconocer en qué contextos hay que aplicarlos.
Analizando la seguridad de una aplicación en .net
2012-09-18T00:00:00+00:00https://www.developerro.com/2012/09/18/analizando-seguridad-aplicacion-net<p>Se han escrito muchas líneas acerca de la seguridad de las aplicaciones que realizamos en .Net. Se dice que son muy fáciles de hackear, que aun usando herramientas de ofuscación, la seguridad de los empaquetados que se distribuyen es nula.
Patrones de diseño: Singleton2012-09-10T00:00:00+00:00https://www.developerro.com/2012/09/10/patrones-diseno-singleton<p>Cuando hablamos de un <strong>patrón de diseño nos referimos a una solución a un problema concreto en el desarrollo de software</strong>. Pero no cualquier solución, sólo aquellas que se ha desmostrado que <span style="text-decoration: underline;">son eficientes en diferentes escenarios</span> y <span style="text-decoration: underline;">reutilizables en gran cantidad de contextos</span> de aplicaciones. Por lo tanto, aunque los ejemplos que podamos dar estén en un lenguaje de programación concreto, la idea será extrapolable a diferentes lenguajes de programación orientada a objetos.</p>
Deuda Técnica2012-05-29T00:00:00+00:00https://www.developerro.com/2012/05/29/deuda-tecnica<p>¿Qué desarrollador de software nunca ha estado una semana programando a toda velocidad, casi sin saber que hace, ya que la fecha de entrega está cerca y todo tiene que estar terminado “para ayer”? ¿Quién no se ha encontrado en la situación de saber que está programando una chapuza, pensando que otro día lo mejorará, y ese día nunca llega? ¿Quién alguna vez, al ver una porción de código fuente no ha exclamado indignado: ¡qué narices hace este código! o ¡quién leches lo ha programado!?
Gestión de excepciones con WCF2012-04-12T00:00:00+00:00https://www.developerro.com/2012/04/12/gestion-de-excepciones-con-wcf<p>Hace unos días en los <a title="Cual es la diferencia entre Faults y Exception " href="http://social.msdn.microsoft.com/Forums/es-ES/wcfes/thread/fa88fa15-fe22-42a8-98ef-85f260a8c97b" target="_blank">foros de Windows Communication Foundation de MSDN</a> un usuario preguntaba por la diferencia entre <strong>Faults</strong> y <strong>Exceptions</strong> dentro de esta plataforma. La respuesta me llevó a escribir una pequeña introducción a la <strong>gestión de excepciones para los servicios WCF</strong> que me gustaría ampliar en este artículo. Para los más experimentados resultará un texto algo básico. Para los demás sin embargo, les puede ayudar a programar siguiendo las buenas prácticas en el desarrollo de sus servicios.
Reactive Extensions (#codemotion)2012-03-27T00:00:00+00:00https://www.developerro.com/2012/03/27/reactive-extensions<p>El pasado fin de semana <a title="@Quiqu3" href="https://twitter.com/quiqu3" target="_blank">@quiqu3</a> y <a title="@fernandoescolar" href="https://twitter.com/fernandoescolar" target="_blank">@fernandoescolar</a> estuvieron en Madrid, en la <strong>codemotion</strong>, en representación de <strong>programando en .net</strong>. Además tuvieron el placer de impartir una pequeña charla de 45 minutos acerca de las reactive extensions. Aprovechando este hecho, nos gustaría cerrar de una forma más o menos elegante la serie de artículos sobre rx, aportando un índice de los artículos, un breve resumen basado en la charla y varios programas de ejemplo (incluida la red social de moda: <strong>BeerToBeer</strong>).
Rx V – Schedulers y Linq2Events2012-03-26T00:00:00+00:00https://www.developerro.com/2012/03/26/rx-v-schedulers-y-linq2events<p>Hoy os vamos a proponer el último artículo teórico acerca de las <strong>reactive extensions</strong>. Una vez hemos <a title="Rx I - Qué son las Reactive eXtensions" href="/2011/12/12/rx-i-que-son-las-reactive-extensions">definido las rx</a>, sabemos <a title="Rx II - Observables: los sujetos" href="/2011/12/19/rx-ii-observables-los-sujetos">qué son los <strong>sujetos</strong></a> y las operaciónes de <a title="Rx III - Linq: crear objetos observables" href="/2012/01/02/rx-iii-linq-crear-objetos-observables">creación</a> y <a title="Rx IV - Linq: operaciones con observables" href="/2012/02/15/rx-iv-linq-operaciones-con-observables"><strong>Linq</strong></a>, ya podemos hablar de el último parámetro de la fórmula que definimos en su día: los <strong>Schedulers</strong>.
Rx IV – Linq: operaciones con observables2012-02-15T00:00:00+00:00https://www.developerro.com/2012/02/15/rx-iv-linq-operaciones-con-observables<p>Hemos llegado al cuarto artículo sobre <strong>reactive extensions</strong> en el que vamos a hablar de operaciones que se pueden realizar con observables. Pero, como hace unos días que no publicábamos nada al respecto, vamos a hacer primero una pequeña retrospectiva. Hasta ahora hemos tratado de explicar <a href="/2011/12/12/rx-i-que-son-las-reactive-extensions" title="Rx I - Qué son las Reactive eXtensions">rx como una fórmula matemática</a>:</p>
Sobre WCF, DTO, EF, POCO y los principios de la programación
2012-01-22T00:00:00+00:00https://www.developerro.com/2012/01/22/sobre-wcf-dto-ef-poco-y-los-principios-de-la-programacion<p>Creo que este es el primer artículo que vamos a ver en <a href="http://www.programandonet.com"><strong>programandonet</strong></a> a modo editorial. Esto es el resultado de <a href="http://www.linkedin.com/groups/WCF-DTO-vs-WCF-POCO-2615616.S.89901834?qid=56f3138d-d4ae-4072-9eb3-617867092b49&trk=group_most_popular-0-b-ttl&goback=%2Egmp_2615616" target="_blank">una conversación</a> en el <a href="http://www.linkedin.com/groups/Arquitectos-NET-2615616?trk=myg_ugrp_ovr" target="_blank">grupo de <em>arquitectos .net</em></a> de <a href="http://www.linkedin.com" target="_blank">LinkedIn</a>, en la que se hablaba sobre usar <strong>POCO</strong>s de entity framework como <strong>DTO</strong> para servicios <strong>WCF</strong>, que se inició hace unos días. Y es que, no me hubiera gustado que algunas conclusiones y escritos se <em>perdieran</em> en este grupo y por eso hemos creído interesante publicarlas aquí, para tenerlas <em>a mano</em>.</p>
Rx III – Linq: crear objetos observables2012-01-02T00:00:00+00:00https://www.developerro.com/2012/01/02/rx-iii-linq-crear-objetos-observables<p>Año nuevo artículo nuevo. Después de dos artículos cargados de conceptos teóricos y pruebas, ha llegado el momento de empezar a sacarle partido de verdad a la <strong>reactive framework</strong>. Hasta ahora hemos visto <a href="/2011/12/12/rx-i-que-son-las-reactive-extensions">cuales son los principios en los que se fundamenta Rx</a>,<a href="/2011/12/19/rx-ii-observables-los-sujetos"> los objetos que vamos a tener que utilizar (los sujetos)</a> e incluso introdujimos el uso de una clase llamada <em><strong>Observable</strong></em> que contiene métodos y extensiones para que todo esto sea más sencillo.</p>
Rx II – Observables: los sujetos2011-12-19T00:00:00+00:00https://www.developerro.com/2011/12/19/rx-ii-observables-los-sujetos<p>Hace <a href="/2011/12/12/rx-i-que-son-las-reactive-extensions" title="Rx I - ¿Qué son las Reactive eXtensions?">unos días empezamos a hablar de las <strong>Reactive eXtensions</strong></a>. Estudiamos su contexto y las bases teóricas en las que se fundamentan. Además expusimos la fórmula creada por los <strong>Microsoft Live Labs</strong> para definirla. Y terminamos el artículo comentando que resolveríamos esta fórmula en futuras publicaciones. Hoy es el día de resolver el primer parámetro: <strong>Observables</strong>. </p>
Rx I – Qué son las Reactive eXtensions2011-12-12T00:00:00+00:00https://www.developerro.com/2011/12/12/rx-i-que-son-las-reactive-extensions<p>Dentro de las librerías de moda para .net la, posiblemente, más difícil de explicar tiene el nombre de <strong>Reactive eXtensions</strong> o <strong>Rx</strong>. Una idea que nace en el contexto actual de aplicaciones distribuidas. Donde la información se encuentra en la nube, y mediante llamadas asíncronas podemos procesarla usando clientes que interaccionan con el usuario basándose en eventos.</p>
Usando la palabra clave “ref”2011-12-07T00:00:00+00:00https://www.developerro.com/2011/12/07/usando-la-palabra-clave-ref<p>No hace mucho, estabamos tomando unas cervezas algunos desarrolladores de .net de Barcelona. Entonces salió el tema de los talibanes del código. Cosas como <em>fxCop</em> o <em>styleCop</em>. Aunque estas herramientas y sus reglas dan para varios artículos de debate, el caso es que surgió una norma del<strong> code analysis</strong> (<em>fxCop</em>) que recomienda no usar la palabra en clave "<em>ref</em>".</p>
TDD en entornos .net #bdc112011-11-21T00:00:00+00:00https://www.developerro.com/2011/11/21/tdd-en-entornos-net-bdc11<p>La semana pasada, los días 17, 18 y 19, estuvimos en la: <a href="http://bcndevcon.org/">Barcelona Developers Conference</a>.
Introducción a Windows Phone 72011-11-20T00:00:00+00:00https://www.developerro.com/2011/11/20/introduccion-a-windows-phone-7<p><strong>Windows Phone 7</strong> es un sistema operativo móvil desarrollado por <strong>Microsoft</strong> como sustituto de <strong>Windows Mobile</strong>. Pero se diferencia de este último en que está pensando para un mercado generalista, en detrimento del empresarial. En adición no mantiene compatibilidad con su antecesor, debido a que es un desarrollo nuevo, y no una evolución.