<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>Lo Crestià</title><link>https://www.eiximenis.dev/</link><description>Recent content on Lo Crestià</description><generator>Hugo -- gohugo.io</generator><language>es</language><copyright>{}</copyright><lastBuildDate>Mon, 04 Jul 2022 00:00:00 +0000</lastBuildDate><atom:link href="https://www.eiximenis.dev/index.xml" rel="self" type="application/rss+xml"/><item><title>Sobre el prefijo I en las interfaces...</title><link>https://www.eiximenis.dev/posts/2022-07-04-prefijo-i-en-las-interfaces-si-o-no/</link><pubDate>Mon, 04 Jul 2022 00:00:00 +0000</pubDate><atom:modified>Mon, 04 Jul 2022 00:00:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2022-07-04-prefijo-i-en-las-interfaces-si-o-no/</guid><description>El otro día estuve viendo el vídeo de CodelyTV sobre código sostenible, el cual os recomiendo porque se comentan unas &amp;ldquo;reglas&amp;rdquo; para ayudar a escribir código que sea fácil de entender y modificar. Probablemente si ya lleváis algunos añitos en este mundillo os sonarán todas ya que se refieren a aspectos bastante elementales: que haya tests y que sean significativos, que cuidemos el nombre de las cosas (ya se sabe &amp;ldquo;naming things is hard&amp;rdquo;) y que el código no haga más de lo que dice (lo que vendría a entroncar directamente con el SRP).</description><dc:creator>eiximenis</dc:creator><category>csharp</category><category>dotnet</category></item><item><title>¿Se ha vuelto demasiado complejo C#?</title><link>https://www.eiximenis.dev/posts/2022-04-19-se-ha-vuelto-demasiado-complejo-csharp/</link><pubDate>Tue, 19 Apr 2022 00:00:00 +0000</pubDate><atom:modified>Tue, 19 Apr 2022 00:00:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2022-04-19-se-ha-vuelto-demasiado-complejo-csharp/</guid><description>Este post viene motivado a raíz de una respuesta mía a un tweet de CampusMVP:
Yo, ha llegado un momento que no sé si vale la pena ir añadiendo parches a C# o empezar de cero otra vez. Y no lo digo en broma.
&amp;mdash; Eduard Tomàs (@eiximenis) April 18, 2022 Las reacciones posteriores son las que me han motivado a escribir este post, aunque es algo que ya hace tiempo que barrunta en mi cabeza: ¿Toda la evolución que está sufriendo C# es buena o mala?</description><dc:creator>eiximenis</dc:creator><category>csharp</category><category>opinion</category><category>dotnet</category></item><item><title>De runas y grafemas en Unicode y NET6</title><link>https://www.eiximenis.dev/posts/2022-02-02-de-runas-y-grafemas-en-unicode/</link><pubDate>Wed, 02 Feb 2022 00:00:00 +0000</pubDate><atom:modified>Wed, 02 Feb 2022 00:00:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2022-02-02-de-runas-y-grafemas-en-unicode/</guid><description>Hace algún tiempo (varios años xD) escribí un post sobre encodings en Unicode en el que comentaba un poco el lío de codificaciones que tenemos en Unicode, y que significa UTF-8 o UTF-16. Te lo puedes leer si quieres pero si no aquí tienes un pequeño resúmen de lo más importante que comentaba y que es necesario para entender de lo que quiero hablarte hoy.
Lo más importante de aquel post eran los siguientes tres puntos:</description><dc:creator>eiximenis</dc:creator><category>unicode</category><category>dotnet</category><category>c#</category><category>dotnet</category></item><item><title>AKS, affinity zones y volúmenes</title><link>https://www.eiximenis.dev/posts/2021-01-31-aks-affinity-zones-volumenes/</link><pubDate>Sun, 31 Jan 2021 00:00:00 +0000</pubDate><atom:modified>Sun, 31 Jan 2021 00:00:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2021-01-31-aks-affinity-zones-volumenes/</guid><description>Es posible crear un AKS cuyos nodepools tengan más de una zona de afinidad. Esto asegura que distintos nodos del cluster están físicamente separados en zonas distintas dentro de la misma región, lo que añade redundancia: si una zona se cae, el cluster sigue funcionando. En la documentación se mencionan algunas limitaciones (no todas las regiones lo soportan u el tamaño de MV del pool debe estar disponible en todas las zonas de afinidad).</description><dc:creator>eiximenis</dc:creator><category>azure</category><category>backup</category><category>k8s</category><category>aks</category><category>kubernetes</category></item><item><title>Backups de AKS. Parte 1 (de 2): Snapshots de discos</title><link>https://www.eiximenis.dev/posts/2021-01-29-backups-aks-1-snapshots/</link><pubDate>Fri, 29 Jan 2021 00:00:00 +0000</pubDate><atom:modified>Fri, 29 Jan 2021 00:00:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2021-01-29-backups-aks-1-snapshots/</guid><description>Uno de los aspectos vitales cuando tienes tu Kubernetes en marcha, es tener un plan de backup y restore para las cargas de trabajo ejecutándose en él. Hay dos aspectos principales a considerar:
Backup de los propios objetos del cluster: Tener copias de seguridad de todos los objetos (incluyendo CRDs) que se están ejecutando en el clúster. De este modo ante una pérdidad de datos que involucre dichos objetos, los podrás restaurar en el estado en el qué estaban.</description><dc:creator>eiximenis</dc:creator><category>azure</category><category>backup</category><category>k8s</category><category>aks</category><category>kubernetes</category></item><item><title>Kaniko - Construir imágenes Docker sin Docker</title><link>https://www.eiximenis.dev/posts/2020-12-05-kaniko-construir-imagenes-docker-sin-docker/</link><pubDate>Sun, 06 Dec 2020 00:00:00 +0000</pubDate><atom:modified>Sun, 06 Dec 2020 00:00:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2020-12-05-kaniko-construir-imagenes-docker-sin-docker/</guid><description>En el contexto de este post, cuando digo &amp;ldquo;imágenes Docker&amp;rdquo; me refiero a imágenes OCI y que se crean usando un Dockerfile. La idea es poder seguir usando nuestros Dockerfiles para generar imágenes OCI, que luego pueden ser ejecutadas cualquier motor compatible, como el propio Docker o containerd (aunque si hablamos de ejecutar contenedores Docker y containerd son lo mismo).
Creando imágenes con Kaniko Vamos a ver primero como usar Kaniko, para crear una imagen.</description><dc:creator>eiximenis</dc:creator><category>docker</category><category>k8s</category><category>kubernetes</category></item><item><title>Escenarios corporativos en AKS</title><link>https://www.eiximenis.dev/posts/2020-11-30-mecanismos-corporativos-en-aks/</link><pubDate>Mon, 30 Nov 2020 00:00:00 +0000</pubDate><atom:modified>Mon, 30 Nov 2020 00:00:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2020-11-30-mecanismos-corporativos-en-aks/</guid><description>A medida que ha ido pasando el tiempo, AKS ha ido incorporando cada vez más mecanismos para ir cubriendo escenarios necesarios en entornos corporativos. Ese post muestra una lista y algunos ejemplos de esas características :)
Clusters privados Desde hace mucho tiempo es posible tener los nodos worker en una vnet propia y privada, lo que impide acceso exterior a esos nodos. Los nodos master (los que ejecutan el control plane) nunca han sido accesibles, pero sí lo es el Api Server.</description><dc:creator>eiximenis</dc:creator><category>k8s</category><category>aks</category><category>kubernetes</category><category>aks</category></item><item><title>De StatefulSets y headless services</title><link>https://www.eiximenis.dev/posts/2020-11-15-de-statefulsets-y-headless-services/</link><pubDate>Sun, 15 Nov 2020 00:00:00 +0000</pubDate><atom:modified>Sun, 15 Nov 2020 00:00:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2020-11-15-de-statefulsets-y-headless-services/</guid><description>Los tipos más habituales de servicios en Kubernetes son los llamados ClusterIP que tienen una IP privada solo accesible desde el interior del clúster. Asumiendo que CoreDNS está instalado (que es lo habitual, vamos), esos servicios generan una entrada DNS con su nombre, bajo el cual engloban todos los pods que cumplan con el selector del servicio. Luego, tenemos los servicios de tipo NodePort que además de todo lo anterior son accesibles mediante una llamada a los nodos del clúster con el puerto especificado y son pues la forma de exponer servicios al exterior.</description><dc:creator>eiximenis</dc:creator><category>k8s</category><category>kubernetes</category></item><item><title>Procesar SIGTSTP en netcore (Linux)</title><link>https://www.eiximenis.dev/posts/2020-11-04-procesar-sigtstp-en-netcore/</link><pubDate>Wed, 04 Nov 2020 00:00:00 +0000</pubDate><atom:modified>Wed, 04 Nov 2020 00:00:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2020-11-04-procesar-sigtstp-en-netcore/</guid><description>Una de las cosas que he visto más veces en gente que está dando sus primeros pasos en Linux es usar Vi, equivocarse y darle a Ctrl+Z para hacer undo&amp;hellip; con el &amp;ldquo;catastrófico&amp;rdquo; resultado de que Vi desaparecen y se vuelve al terminal. Además, para más horror eso sucede sin ninguna confirmación y da igual si había cambios por guardar. No solo eso, si no que si luego se inicia otra vez Vi para continuar editando el mismo fichero, se recibe un mensjae de error de que el fichero está siendo editado en otro editor y varias opciones a elegir sobre qué hacer, en las que uno tiene la sospecha que haga lo que haga va a perder algún dato.</description><dc:creator>eiximenis</dc:creator><category>linux</category><category>terminal</category><category>netcore</category></item><item><title>Validando con FluentValidation en Blazor</title><link>https://www.eiximenis.dev/posts/2020-10-21-blazor-y-fluent-validations/</link><pubDate>Wed, 21 Oct 2020 00:00:00 +0000</pubDate><atom:modified>Wed, 21 Oct 2020 00:00:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2020-10-21-blazor-y-fluent-validations/</guid><description>Blazor tiene un soporte para formularios bastante bien montado. Por un lado, existe el componente &amp;ldquo;padre&amp;rdquo;, que representa al propio formulario. Este componente padre (solemos utilizar EditForm) es el encargado de crear &amp;ldquo;el contexto de edición&amp;rdquo; y proveerlo a todos los componentes hijos que están dentro de él. Este contexto consta básicamente de un modelo (el objeto que se está editando) y el estado de la validación de sus propiedades.</description><dc:creator>eiximenis</dc:creator><category>blazor</category></item><item><title>Project tye</title><link>https://www.eiximenis.dev/posts/2020-10-05-project-tye/</link><pubDate>Mon, 05 Oct 2020 00:00:00 +0000</pubDate><atom:modified>Mon, 05 Oct 2020 00:00:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2020-10-05-project-tye/</guid><description>Project Tye (simplemente Tye de ahora en adelante) es un proyecto experimental del equipo de NetCore pensado para ayudarnos en el desarrollo de apliaciones de (micro)servicios basadas en NetCore. Aunque podríamos llegar a usar Tye sin netcore, no es para lo que está concebida: NO es una herramienta de propósito general. Es una herramienta pensada para desarrolladores en netcore.
Funcionalidades de Tye Es complicado definir qué es exactamente Tye, ya que anda a medio camino entre un orquestador básico, un ejecutor de aplicaciones, un control plane básico y un gestor de despliegues.</description><dc:creator>eiximenis</dc:creator><category>microservices</category><category>kubernetes</category><category>k8s</category><category>netcore</category></item><item><title>Opinión: De Kubernetes y independencia del cloud</title><link>https://www.eiximenis.dev/posts/2020-09-26-de-kubernetes-y-cloud-agnostic/</link><pubDate>Sat, 26 Sep 2020 18:00:00 +0000</pubDate><atom:modified>Sat, 26 Sep 2020 18:00:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2020-09-26-de-kubernetes-y-cloud-agnostic/</guid><description>Cuando una organización me dice que ha elegido Kubernetes para desplegar en él su último proyecto, siempre pregunto cuales son las razones que han llevado a elegir Kubernetes como plataforma. Y lo pregunto porque en muchos casos, lo que se quiere desplegar en el clúster es poco más que una API y un frontend&amp;hellip; Vamos, una web de toda la vida. ¿Cuales son los motivos para meterte en un producto con un alto nivel de complejidad como Kubernetes?</description><dc:creator>eiximenis</dc:creator><category>cloud</category><category>kubernetes</category><category>k8s</category><category>opinion</category></item><item><title>C#9 - Top Level Programs</title><link>https://www.eiximenis.dev/posts/2020-09-17-csharp9-top-level-programs/</link><pubDate>Thu, 17 Sep 2020 18:00:00 +0000</pubDate><atom:modified>Thu, 17 Sep 2020 18:00:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2020-09-17-csharp9-top-level-programs/</guid><description>Una de las novedades de C#9 a la que se está prestando (y probablemente con razón) menos atención es la característica denominada &amp;ldquo;Top Level Programs&amp;rdquo;, lo que básicamente viene a decir que, el siguiente programa es válido en C#9:
1 Console.WriteLine(&amp;#34;Hello World!&amp;#34;); Eso es todo lo que necesitas para ejecutar un Hello World en C#9. Vamos, que ya no necesitas el método estático Main definido en una clase como hasta ahora.</description><dc:creator>eiximenis</dc:creator><category>csharp</category></item><item><title>Ejecutar contenedores bajo demanda con ACI y Azure Functions</title><link>https://www.eiximenis.dev/posts/2020-09-15-contenedores-by-demand-con-aci/</link><pubDate>Tue, 15 Sep 2020 18:00:00 +0000</pubDate><atom:modified>Tue, 15 Sep 2020 18:00:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2020-09-15-contenedores-by-demand-con-aci/</guid><description>Este post nace a partir de la necesidad de tener un sistema sencillo, pero 100% serverless para ejecutar tareas bajo demanda en Azure. Esas tareas se pueden ejecutar cada cierto tiempo (programadas) o bien como respuesta a algún evento.
Es obvio que en este modelo, Azure Functions encaja como anillo al dedo, pero había dos requisitos que eran importantes contemplar:
Esas tareas pueden ser escritas con cualquier lenguaje de desarrollo desde .</description><dc:creator>eiximenis</dc:creator><category>serverless</category><category>azurefunctions</category><category>aci</category><category>azure</category></item><item><title>C# funcional con Arrow Sharp</title><link>https://www.eiximenis.dev/posts/2020-08-04-csharp-funcional-con-arrowsharp/</link><pubDate>Fri, 07 Aug 2020 00:00:00 +0000</pubDate><atom:modified>Fri, 07 Aug 2020 00:00:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2020-08-04-csharp-funcional-con-arrowsharp/</guid><description>ArrowSharp es una pequeña librería inspirada en Arrow-kt Core que ofrece algunas utilidades para ayudarte a desarrollar con un estilo más funcional usando C#. Lo mejor es verlo con un ejemplillo. Como ejemplo voy a basarme en el que muestra Massimo Carli en este post.
En él partiríamos de un código inicial (C# clásico) como el siguiente:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 public class FetcherException : Exception { public FetcherException(Exception inner) : base(inner.</description><dc:creator>eiximenis</dc:creator><category>general</category></item><item><title>Como controlar un Application Gateway desde AKS</title><link>https://www.eiximenis.dev/posts/2020-08-03-controlar-agic-desde-aks/</link><pubDate>Mon, 03 Aug 2020 18:00:00 +0000</pubDate><atom:modified>Mon, 03 Aug 2020 18:00:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2020-08-03-controlar-agic-desde-aks/</guid><description>Como controlar un Application Gateway desde AKS Esta entrada está escrita por Jorge Turrado, un crack tanto en lo personal como en lo profesional. Es un placer que haya elegido mi blog para publicar esa entrada. Si quieres leer más cosas publicadas por Jorge, pásate por su blog: Fixed Buffer. ¡Gracias!
Es un gusto poder estar aquí en el blog del grandísimo Eduard Tomas, el cual me ha abierto sus puertas encantado para escribir sobre un tema que personalmente me ha resultado muy interesante y útil.</description><dc:creator>Jorge Turrado</dc:creator><category>aks</category><category>k8s</category></item><item><title>Unit testing de métodos privados</title><link>https://www.eiximenis.dev/posts/2020-07-08-testing-metodos-privados/</link><pubDate>Wed, 08 Jul 2020 18:00:00 +0000</pubDate><atom:modified>Wed, 08 Jul 2020 18:00:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2020-07-08-testing-metodos-privados/</guid><description>Este es uno de esas cuestiones de las que se ha escrito mucho, así que este post tampoco va a descubrir la sopa de ajo, pero bueno&amp;hellip; si os sirve para algo esas son mis impresiones sobre las pruebas unitarias en métodos privados. Este post viene motivado por un tweet que lanzó Juanjo:
Alguien aqí ha dicho: ¿que no puedo hacer tests de métodos privados? ¡pues los hago públicos! xD</description><dc:creator>eiximenis</dc:creator><category>general</category></item><item><title>C#9 Records: Mis impresiones</title><link>https://www.eiximenis.dev/posts/2020-07-01-csharp9-records/</link><pubDate>Wed, 01 Jul 2020 18:00:00 +0000</pubDate><atom:modified>Wed, 01 Jul 2020 18:00:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2020-07-01-csharp9-records/</guid><description>Estos días, preparando la charla del Talks4Kids he estado jugando un poco con el futuro C#9 y su característica más destacada: los records. He aquí mis impresiones, pero antes un aviso:
Este post se basa en una preview. En la versión final las cosas pueden cambiar (o no). Para jugar con C#9 puedes usar la última versión que haya del .NET5 SDK, junto con la última versión que haya de Visual Studio Preview.</description><dc:creator>eiximenis</dc:creator><category>netcore</category></item><item><title>Span&lt;T> y P/Invoke</title><link>https://www.eiximenis.dev/posts/2020-06-29-span_y_pinvoke/</link><pubDate>Mon, 29 Jun 2020 12:00:00 +0000</pubDate><atom:modified>Mon, 29 Jun 2020 12:00:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2020-06-29-span_y_pinvoke/</guid><description>Uno de los movimientos más nuevos en .NET Core consiste en lo que podemos llamar &amp;ldquo;zero-allocation code&amp;rdquo; o código sin reservas. Eso consiste en tener código que evite al máximo (hasta llegar al ideal de eliminar) las reservas de objetos en el heap. Para ello es necesario que tanto el lenguaje como el entorno de ejecución lo permitan. Pero&amp;hellip; ¿por qué es beneficioso evitar las reservas en el heap?
Predictibilidad La razón principal es la predictibilidad de tu código, en este caso predictibilidad en el tiempo de ejecución, claro.</description><dc:creator>eiximenis</dc:creator><category>netcore</category></item><item><title>SQL Server en Docker que no se ejecuta como root</title><link>https://www.eiximenis.dev/posts/2020-06-26-sql-server-docker-no-se-ejecuta-en-root/</link><pubDate>Fri, 26 Jun 2020 18:00:00 +0000</pubDate><atom:modified>Fri, 26 Jun 2020 18:00:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2020-06-26-sql-server-docker-no-se-ejecuta-en-root/</guid><description>Muchos contenedores, por motivos de seguridad, se están moviendo de ejecutar su proceso como root a hacerlo con otro usuario. Un ejemplo es SQL Server (mcr.microsoft.com/mssql/server:2019-latest). Eso te puede dar algunos problemas, especialmente si usas volúmenes, pero nada que, afortunadamente, no pueda arreglarse. ¡Vamos allá!
Ejecutando contenedores con Docker for Windows desde WSL2 / Ejecutando contendores en Linux con Docker Ambos escenarios son equivalentes: tanto si usas directamente Linux y Docker, como si usas Docker for Windows con el backend de WSL2 y ejecutas los contenedores desde la CLI de Docker en WSL2 (no en Windows).</description><dc:creator>eiximenis</dc:creator><category>docker</category></item><item><title>Estableciendo un servidor de DNS propio en AKS</title><link>https://www.eiximenis.dev/posts/2020-06-13-aks-establecer-dns-propio/</link><pubDate>Sat, 13 Jun 2020 12:30:00 +0000</pubDate><atom:modified>Sat, 13 Jun 2020 12:30:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2020-06-13-aks-establecer-dns-propio/</guid><description>La situación es la siguiente: tienes un AKS y hay determinados dominios que deben servirse usando un servidor de DNS propio, no el que trae &amp;ldquo;AKS por defecto&amp;rdquo;. Claro que&amp;hellip; te has preguntado ¿como funciona la resolución DNS en Kubernetes en general y AKS en particular?
CoreDNS Un servidor de Kubernetes suele incluir un servidor de DNS propio. Técnicamente no es una obligación, pero vamos, es lo habitual y AKS lo incluye de serie, así que lo vamos a dar por supuesto.</description><dc:creator>eiximenis</dc:creator><category>k8s</category></item><item><title>EF memoria y BBDD</title><link>https://www.eiximenis.dev/posts/2020-04-08-ef-memoria-y-bbdd/</link><pubDate>Wed, 08 Apr 2020 12:00:00 +0000</pubDate><atom:modified>Wed, 08 Apr 2020 12:00:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2020-04-08-ef-memoria-y-bbdd/</guid><description>Si tienes experiencia con Entity Framework, es posible que esta entrada no te aporte mucho, pero tras ver los mismos errores en más de un proyecto me he decidido a escribirla. En concreto se trata de asegurarte de que todas tus queries LINQ (con EF) se ejecutan en la BBDD.
Evaluación en cliente Las primeras versiones de EF (hasta, sin incluir, la 3.0), tenían la posibilidad de realizar lo que se llamaba &amp;ldquo;evaluación en cliente&amp;rdquo;.</description><dc:creator>eiximenis</dc:creator><category>ef</category></item><item><title>El patrón operador en Kubernetes</title><link>https://www.eiximenis.dev/posts/2020-04-06-el-patron-operador-en-k8s/</link><pubDate>Mon, 06 Apr 2020 12:00:00 +0000</pubDate><atom:modified>Mon, 06 Apr 2020 12:00:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2020-04-06-el-patron-operador-en-k8s/</guid><description>Antes de hablar sobre como podemos crear operaadores para Kubernetes, vamos a ver qué entendemos por un operador, para qué lo podemos usar y qué ventajas nos aporta respecto otros mecanismos similares. ¡Vamos allá!
Un operador es un mecanismo para manejar y desplegar aplicaciones para Kubernetes. La palabra clave, aquí es &amp;ldquo;para&amp;rdquo;. No estamos hablando de desplegar una aplicación en un Kubernetes, si no de desplegar una aplicación para Kubernetes. Este &amp;ldquo;para&amp;rdquo; implica, no solo que el despliegue lo efectuamos mediante kubectl si no que también efectuamos el mantenimiento y configuración.</description><dc:creator>eiximenis</dc:creator><category>k8s</category><category>Operadores de Kubernetes</category></item><item><title>Como ejecutar (fácilmente) operator-sdk en Windows</title><link>https://www.eiximenis.dev/posts/2020-03-13-empezando-con-operator-sdk-ejecutando-en-win/</link><pubDate>Fri, 13 Mar 2020 13:00:00 +0000</pubDate><atom:modified>Fri, 13 Mar 2020 13:00:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2020-03-13-empezando-con-operator-sdk-ejecutando-en-win/</guid><description>Estoy haciendo una serie de posts (que ya irán saliendo) sobre como crear operadores para Kubernetes. Crear esos operadores implica usar la herramienta operator-sdk que no está disponible para Windows (está solo para MacOS y Linux).
Por supuesto puedes usar una MV Linux y olvidarte de este problema o incluso usar WSL (instalar go, git, kubectl y la CLI de Docker configurada contra el daemon de Docker for Windows), pero si no quieres hacerlo, aquí te propongo una solución con relativa poca fricción: se trata de empaquetar en un contenedor esta aplicación y usar docker para ejecutarla.</description><dc:creator>eiximenis</dc:creator><category>k8s</category><category>Operadores de Kubernetes</category></item><item><title>Ingress, sticky sessions y servicios</title><link>https://www.eiximenis.dev/posts/2020-03-11-ingress-sticky-sessions-y-servicios/</link><pubDate>Wed, 11 Mar 2020 12:00:00 +0000</pubDate><atom:modified>Wed, 11 Mar 2020 12:00:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2020-03-11-ingress-sticky-sessions-y-servicios/</guid><description>El otro día estuve revisando un proyecto, desplegado en un Kubernetes (un AKS, aunque eso no es relevante en este caso). El tema es que parecía que &amp;ldquo;las sticky sessions no iban&amp;rdquo;. Por motivos del proyecto, era necesario tener sticky sessions y además estrictas, es decir, que en caso de que se escalara el número de pods los usuarios NO fuesen redirigidos a esos nuevos pods para repartir la carga.</description><dc:creator>eiximenis</dc:creator><category>ingress</category><category>k8s</category></item><item><title>Serverless &amp; Kubernetes</title><link>https://www.eiximenis.dev/posts/2020-02-06-serverless-k8s/</link><pubDate>Thu, 06 Feb 2020 16:30:00 +0000</pubDate><atom:modified>Thu, 06 Feb 2020 16:30:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2020-02-06-serverless-k8s/</guid><description>Antes de empezar a discutir como Kubernetes y Serverless pueden estar juntos en la misma frase que no sea sacada de un flyer comercial (y por lo tanto, tenga sentido) debemos hablar un poco sobre Serverless en si mismo.
¿Qué es Serverless? El concepto de Serverless significa a grandes rasgos que no &amp;ldquo;ves&amp;rdquo; el servidor que ejecuta tu aplicación. Claro, servidor hay, todavía no se ha inventado el humo que ejecute software, así que en algún lado hay un servidor.</description><dc:creator>eiximenis</dc:creator><category>k8s</category><category>serverless</category></item><item><title>C#: Equals y ref structs</title><link>https://www.eiximenis.dev/posts/2020-02-05-csharp-equals-y-ref-structs/</link><pubDate>Wed, 05 Feb 2020 10:00:00 +0000</pubDate><atom:modified>Wed, 05 Feb 2020 10:00:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2020-02-05-csharp-equals-y-ref-structs/</guid><description>En .NET / C# sabemos que todos los tipos heredan de System.Object (aka object) por lo que, dada una referencia de tipo object podemos almacenar cualquier valor. Pero, también sabemos que en el fondo hay dos jerarquías de tipos claramente separadas, con características distintas: Por un lado los tipos por referencia (clases) y por otro lado los tipos por valor (estructuras). Los primeros, se almacenan en el heap y las variables son meras referencias (apuntadores) al objeto que está en el heap.</description><dc:creator>eiximenis</dc:creator><category>csharp</category></item><item><title>NetCore 3 - NativeLibrary: ¡p/invoke a tope!</title><link>https://www.eiximenis.dev/posts/2020-01-31-netcore3-nativelibrary/</link><pubDate>Fri, 31 Jan 2020 18:20:00 +0000</pubDate><atom:modified>Fri, 31 Jan 2020 18:20:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2020-01-31-netcore3-nativelibrary/</guid><description>¿Conoces P/Invoke? Se trata de la posibilidad de realizar llamadas nativas al sistema operativo desde código .NET. Para habilitarlo debemos definir en C# una función externa (usando la palabra clave extern) y luego usar [DllImport] para indicarle al CLR en qué librería del SO se encuentra esta función implementada. Por supuesto eso genera código que no es cross platform, ya que estás llamando explícitamente a una librería en concreto del SO.</description><dc:creator>eiximenis</dc:creator><category>netcore</category></item><item><title>Admission webhooks de Kubernetes con netcore</title><link>https://www.eiximenis.dev/posts/2020-01-29-admission-webhooks-de-k8s-en-netcore/</link><pubDate>Wed, 29 Jan 2020 18:20:00 +0000</pubDate><atom:modified>Wed, 29 Jan 2020 18:20:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2020-01-29-admission-webhooks-de-k8s-en-netcore/</guid><description>Si has usado Kubernetes un poco, seguro que conoces el concepto de sidecar container: Un contenedor que se ejecuta en el mismo pod que el contenedor principal y que ofrece servicios adicionales. Es muy habitual en implementaciones de Service Mesh tales como Istio. También dapr se basa en un sidecar así como Devspaces sin ir más lejos, por poner solo tres ejemplos.
Todo eso viene a cuento, porque cuando usas uno de esos sistemas, tus deployments son modificados automáticamente por el sistema para añadir el sidecar container.</description><dc:creator>eiximenis</dc:creator><category>netcore</category><category>k8s</category></item><item><title>Heap vs Stack</title><link>https://www.eiximenis.dev/posts/2020-01-24-heap-vs-stack/</link><pubDate>Mon, 20 Jan 2020 18:20:00 +0000</pubDate><atom:modified>Mon, 20 Jan 2020 18:20:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2020-01-24-heap-vs-stack/</guid><description>Es curioso como hoy en día mucha gente no tiene nada clara la diferencia entre la pila y el heap, que son los dos &amp;ldquo;lugares&amp;rdquo; donde se pueden almacenar valores (tales como objetos). Por norma general (salvo que uses interop para gestionar memoria directamente con funciones provistas por el sistema operativo) tus objetos terminarán o bien en la pila, o bien en el heap.
La pila es rapidísima pero su alcance se limita al de la función: es decir, cada función tiene su propia pila y esa es destruída una vez se sale de la función.</description><dc:creator>eiximenis</dc:creator><category>programacion</category></item><item><title>WPF y netcore3 con custom host</title><link>https://www.eiximenis.dev/posts/2020-01-20-wpf-netcore3-customhost/</link><pubDate>Mon, 20 Jan 2020 18:20:00 +0000</pubDate><atom:modified>Mon, 20 Jan 2020 18:20:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2020-01-20-wpf-netcore3-customhost/</guid><description>¡Buf! Hacía un porrón que no escribía sobre WPF, pero bueno, creo que vale la pena hablar un poco de las ventajas de usar WPF junto con .NET Core 3. Sí, se habla mucho de los aumentos de rendimiento pero a mi me interesa enfocarlo más en como usar, fácilmente, las ventajas intrínsecas de .NET Core al usar un proyecto de WPF. En concreto hay tres puntos que creo que son interesantes: DI, Configuración y Logging.</description><dc:creator>eiximenis</dc:creator><category>netcore</category><category>wpf</category></item><item><title>Expediente X en rendimiento</title><link>https://www.eiximenis.dev/posts/2020-01-15-expediente-x-en-rendimiento/</link><pubDate>Wed, 15 Jan 2020 18:20:00 +0000</pubDate><atom:modified>Wed, 15 Jan 2020 18:20:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2020-01-15-expediente-x-en-rendimiento/</guid><description>El expediente es el siguiente: contrariamente a todo sentido común copiar una estructura de 21 campos double tardaba menos, pero mucho menos, que copiar una clase.
El expediente X Tengo una clase y una estructura equivalentes: simplemente 21 propiedades de tipo double con get y set. Nada más. La clase se llama Point21D y la estructura Point21DStruct.
Luego, tengo dos classes (World21D y World21DStruct) con el mismo código salvo, que la primera usa Point21D y la segunda Point21DStruct:</description><dc:creator>eiximenis</dc:creator><category>netcore</category></item><item><title>Análisis de clouding.io</title><link>https://www.eiximenis.dev/posts/2020-01-14-analisis-cloudingio/</link><pubDate>Tue, 14 Jan 2020 00:00:00 +0000</pubDate><atom:modified>Tue, 14 Jan 2020 00:00:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2020-01-14-analisis-cloudingio/</guid><description>Esos días he tenido el placer de poder probar la plataforma de la gente de Clouding.io, que ofrece servicios de IaaS en el cloud. Te cuento ahora, brevemente, mis impresiones :)
Creación de un servidor Clouding.io es un servicio que ofrece, básicamente, servidores VPS cloud. Eso es, un servicio enfocado al enfoque IaaS, en el cual alquilamos servidores virtuales y tenemos el control total sobre ellos. En el caso concretol de Clouding.</description><dc:creator>eiximenis</dc:creator><category>patrocinado</category><category>general</category><category>cloud</category></item><item><title>Adiós geeks! Nuevo blog :)</title><link>https://www.eiximenis.dev/posts/2020-01-10-nuevo-blog/</link><pubDate>Fri, 10 Jan 2020 00:00:00 +0000</pubDate><atom:modified>Fri, 10 Jan 2020 00:00:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2020-01-10-nuevo-blog/</guid><description>Buf&amp;hellip; durante casi 12 años geeks.ms ha sido mi casa. Pero todo el mundo se termina emancipando tarde o temprano y había llegado ya el momento de tener un nuevo hogar&amp;hellip;
¿Por qué dejo geeks.ms? Hay varias razones que desgranaré a contiunación, pero la principal: el tener tus datos, tu blog en propiedad. Mirad, os cuento&amp;hellip; hace un porrón de años tuve un blog de desarrollo en una comunidad llamada Clearscreen.</description><dc:creator>eiximenis</dc:creator><category>general</category></item><item><title>Charlas del 2020</title><link>https://www.eiximenis.dev/talks/2020/</link><pubDate>Wed, 01 Jan 2020 00:00:00 +0000</pubDate><atom:modified>Wed, 01 Jan 2020 00:00:00 +0000</atom:modified><guid>https://www.eiximenis.dev/talks/2020/</guid><description>Este 2020 ha sido un año muy raro para todos ¿verdad? Empezamos como siempre, sin ser consicentes que, en apenas tres meses, todo cambiaría&amp;hellip;
El maldito COVID hizo que muchos eventos se postpusieran primero (con la esperanza de que en la segunda mitad del año las cosas mejoraran) y a la vista que no, algunos se suspendieron, otros se convirtieron en eventos on-line. Eso hizo que los últimos meses del año fuesen &amp;ldquo;moviditos&amp;rdquo; a nivel de charlas, ya que muchas de las charlas de eventos que debían realizarse durante todo el año cayeron recolocadas en este último par de meses.</description><dc:creator>eiximenis</dc:creator></item><item><title>Gestión de Builds y Releases con Docker y Azure Devops</title><link>https://www.eiximenis.dev/posts/2019-10-25-gestion-de-builds-y-releases-con-docker-y-azure-devops/</link><pubDate>Fri, 25 Oct 2019 00:00:00 +0000</pubDate><atom:modified>Fri, 25 Oct 2019 00:00:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2019-10-25-gestion-de-builds-y-releases-con-docker-y-azure-devops/</guid><description>&lt;p>El sistema de Builds y Releases de Azure Devops es extremadamente flexible, pero se basa en una premisa: la build publica cierto artefacto binario que la Release recoje e instala en los distintos entornos (stages en la terminología de Azure Devops).&lt;/p></description><dc:creator>eiximenis</dc:creator><category>devops</category><category>docker</category></item><item><title>Azure Functions en Linux con un Consumption Plan en ARM</title><link>https://www.eiximenis.dev/posts/2019-10-24-azure-functions-en-linux-con-un-consumption-plan-en-arm/</link><pubDate>Thu, 24 Oct 2019 00:00:00 +0000</pubDate><atom:modified>Thu, 24 Oct 2019 00:00:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2019-10-24-azure-functions-en-linux-con-un-consumption-plan-en-arm/</guid><description>&lt;p>Buenas! Esos días he tenido que desplegar una Azure Function en Python. A día de hoy solo se pueden desplegar en Azure Functions cuyo service plan sea Linux (no están soportadas en Windows).&lt;/p>
&lt;p>En mi caso quería una plantilla ARM que soportase la creación del service plan y la function app tanto en consumption como en app service plan, para tener la máxima flexibilidad.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>azure</category><category>serverless</category></item><item><title>Ficheros de configuración por entorno… ¿Sí, no o todo lo contrario?</title><link>https://www.eiximenis.dev/posts/2019-07-12-ficheros-de-configuracion-por-entorno-si-no-o-todo-lo-contrario/</link><pubDate>Fri, 12 Jul 2019 08:48:31 +0000</pubDate><atom:modified>Fri, 12 Jul 2019 08:48:31 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2019-07-12-ficheros-de-configuracion-por-entorno-si-no-o-todo-lo-contrario/</guid><description>&lt;p>Andaba yo ayer gastándome el dedo intentando refrescar mi Twitter, extrañado &lt;a href="https://www.elperiodico.com/es/extra/20190711/twitter-sufre-una-caida-a-nivel-mundial-7550442">por qué no veía nuevos tweets&lt;/a>. Total, que tras unos intentos infructuosos, repasé algunos tweets antiguos de mi timeline, mientras esperaba el bus que me llevaría de la T2 del Aeropuerto del Prat, donde aterricé, a la T1 donde tenía el coche. Y así di con este tweet de &lt;a href="https://twitter.com/ckgrafico">Quique&lt;/a>:  .&lt;/p>
&lt;blockquote class="twitter-tweet" data-width="550" data-dnt="true">
&lt;p lang="en" dir="ltr">
If you have one JSON (or equivalent) file per ENV in your project... I'm sorry but you're not doing well 🤷🏽‍♂️ I don't care how much articles you read about this. Configure ENVs in your CD, if you don't have CD create one 😬 read about CI and CD and enjoy!
&lt;/p>
&lt;p>
&amp;mdash; Quique Fdez Guerra (@CKGrafico) &lt;a href="https://twitter.com/CKGrafico/status/1149271018374123520?ref_src=twsrc%5Etfw">July 11, 2019&lt;/a>
&lt;/p>
&lt;/blockquote>
&lt;p>Y bueno&amp;hellip; iba yo a responder, pero vi que la respuesta daba para mucho más que un tweet o sea que, aquí va 😉&lt;/p></description><dc:creator>eiximenis</dc:creator><category>devops</category><category>opinion</category></item><item><title>Excepciones como errores: ¿Sí o no?</title><link>https://www.eiximenis.dev/posts/2019-07-08-excepciones-como-errores-si-o-no/</link><pubDate>Mon, 08 Jul 2019 17:43:59 +0000</pubDate><atom:modified>Mon, 08 Jul 2019 17:43:59 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2019-07-08-excepciones-como-errores-si-o-no/</guid><description>&lt;p>Bueno, he aquí un dilema que es más o menos como el tipado estático vs el dinámico o el preferir espacios o tabuladores: es decir, preferencia personal. Pero a veces las preferencias personales se ven influenciadas por lo que conocemos (o más precisamente por lo que desconocemos)&amp;hellip; Así que dejadme que os cuente cuatro cosas al respecto y ya si eso, luego lo discutimos en los comentarios o en un bar&amp;hellip;&lt;/p></description><dc:creator>eiximenis</dc:creator><category>C#</category></item><item><title>Traducir entre gRPC y HTTP/JSON</title><link>https://www.eiximenis.dev/posts/2019-06-28-traducir-entre-grpc-y-http-json/</link><pubDate>Fri, 28 Jun 2019 16:22:05 +0000</pubDate><atom:modified>Fri, 28 Jun 2019 16:22:05 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2019-06-28-traducir-entre-grpc-y-http-json/</guid><description>&lt;p>Como comenté en mi &lt;a href="http://geeks.ms/etomas/2019/06/27/grpc-y-no-grpc-todo-junto-en-el-mismo-proyecto/">post anterior sobre gRPC&lt;/a>, la traducción entre gRPC y JSON es estándard. Esto nos permite tener nuestra comunicación interna en gRPC y exponer una fachada en HTTP con JSON para aquellos clientes que (todavía) no pueden usar gRPC.&lt;/p>
&lt;p>En este post os voy a mostrar como podemos crear dicha fachada usando Envoy ejecutándose en un contenedor Docker. ¡Vamos allá!&lt;/p></description><dc:creator>eiximenis</dc:creator><category>grpc</category><category>asp.net core</category><category>docker</category></item><item><title>gRPC y "no gRPC" todo junto en el mismo proyecto</title><link>https://www.eiximenis.dev/posts/2019-06-27-grpc-y-no-grpc-todo-junto-en-el-mismo-proyecto/</link><pubDate>Thu, 27 Jun 2019 09:22:03 +0000</pubDate><atom:modified>Thu, 27 Jun 2019 09:22:03 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2019-06-27-grpc-y-no-grpc-todo-junto-en-el-mismo-proyecto/</guid><description>&lt;p>Una de las novedades que incluye Net Core 3 es el soporte para gRPC. ¿No conoces gRPC? Bueno, pues básicamente se trata del RPC de toda la vida, pero vestido a la moda, duchado y perfumado. Vamos, si te lees los puntos principales de la &lt;a href="https://grpc.io/">página oficial de gRPC&lt;/a> (definición de servicio independiente del lenguaje, soporte de muchos lenguajes, streaming bi-direccionales) es como si volvieses unos cuantos años atrás y &lt;a href="https://blog.mattmags.com/2011/05/19/don-box-the-bathtub-lecture/">Don Box estuviese en la bañera&lt;/a> vendiéndote SOAP. Y de todos modos, cuando hablábamos de &lt;a href="https://es.wikipedia.org/wiki/Simple_Object_Access_Protocol">SOAP&lt;/a> ya era difícil no acordarse de CORBA (ya fuese &lt;a href="https://es.wikipedia.org/wiki/CORBA">el estándard&lt;/a> o &lt;a href="https://es.wikipedia.org/wiki/Modelo_de_Objetos_de_Componentes_Distribuidos">el de Microsoft&lt;/a> xD).&lt;/p></description><dc:creator>eiximenis</dc:creator><category>grpc</category><category>.net</category><category>asp.net core</category></item><item><title>Net Core (Linux) Error: System.IO .IOException: The configured user limit on the number of inotify instances has been reached</title><link>https://www.eiximenis.dev/posts/2019-06-17-net-core-linux-error-system-io-ioexception-the-configured-user-limit-on-the-number-of-inotify-instances-has-been-reached/</link><pubDate>Mon, 17 Jun 2019 09:57:08 +0000</pubDate><atom:modified>Mon, 17 Jun 2019 09:57:08 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2019-06-17-net-core-linux-error-system-io-ioexception-the-configured-user-limit-on-the-number-of-inotify-instances-has-been-reached/</guid><description>&lt;p>Buenas! Andaba yo preparando unas demos donde tenía varios contenedores ejecutándose en un Kubernetes, usando netcore y Linux. Todo funcionaba (más o menos) bien, hasta que de golpe y porrazo los contenedores empezaron a fallar:&lt;/p>
&lt;pre>&lt;span class="js-display-url">System.IO&lt;/span>&lt;span class="tco-ellipsis">&lt;span class="invisible"> &lt;/span>&lt;/span>.IOException: The configured user limit (1024) on the number of inotify instances has been reached&lt;/pre>
&lt;p>Este error apareció cuando escalé el número de contenedores y se daba en los nuevos contenedores creados (los iniciados seguían funcionando). ¿Qué podía estar sucendiendo?&lt;/p></description><dc:creator>eiximenis</dc:creator><category>asp.net core</category><category>docker</category></item><item><title>C#9 – Type classes y extensiones</title><link>https://www.eiximenis.dev/posts/2019-06-07-c9-type-classes-y-extensiones/</link><pubDate>Fri, 07 Jun 2019 10:58:11 +0000</pubDate><atom:modified>Fri, 07 Jun 2019 10:58:11 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2019-06-07-c9-type-classes-y-extensiones/</guid><description>&lt;p>Estaba yo revisando &lt;a href="https://github.com/dotnet/csharplang/milestone/15">algunas de las nuevas características que quizá incorpore C# 9&lt;/a> y me he encontrado con la &lt;a href="https://github.com/dotnet/csharplang/issues/110">propuesta de &lt;strong>type classes&lt;/strong>&lt;/a> (&lt;em>shapes&lt;/em> en la teminología de C#), que me parece bastante interesante y sobre la cual me gustaría hacer algunos comentarios 🙂&lt;/p></description><dc:creator>eiximenis</dc:creator><category>C#</category></item><item><title>Crear imágenes Docker multi-arquitectura con Azure Devops</title><link>https://www.eiximenis.dev/posts/2019-05-30-crear-imagenes-docker-multi-arquitectura-con-azure-devops/</link><pubDate>Thu, 30 May 2019 10:12:23 +0000</pubDate><atom:modified>Thu, 30 May 2019 10:12:23 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2019-05-30-crear-imagenes-docker-multi-arquitectura-con-azure-devops/</guid><description>&lt;p>Ahora que los contenedores windows empiezan a funcionar decentemente, nos &lt;strong>puede interesar crear imágenes Docker multi-arquitectura&lt;/strong> para que se puedan desplegar en contenedores Windows o Linux dependiendo de las necesidades. En este post te cuento como hacerlo usando Azure Devops.&lt;/p>
&lt;p>Vamos a ver primero qué es una imagen multi-arquitectura, como crearla con la CLI de Docker y finalmente como hacerlo desde Azure Devops 🙂&lt;/p></description><dc:creator>eiximenis</dc:creator><category>devops</category><category>docker</category></item><item><title>Terminales y millones de colores: una historia complicada</title><link>https://www.eiximenis.dev/posts/2019-04-05-terminales-y-millones-de-colores-una-historia-complicada/</link><pubDate>Fri, 05 Apr 2019 17:28:27 +0000</pubDate><atom:modified>Fri, 05 Apr 2019 17:28:27 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2019-04-05-terminales-y-millones-de-colores-una-historia-complicada/</guid><description>&lt;p>Los que más o menos me seguís por &lt;a href="https://twitter.com/eiximenis">Twitter&lt;/a>, quizá os habréis enterado de que estoy escribiendo una &lt;a href="https://github.com/eiximenis/tvision2">librería &lt;em>cross-platform&lt;/em> (netstandard2) para desarrollar aplicaciones de consola&lt;/a>. Evidentemente &lt;a href="https://github.com/migueldeicaza/gui.cs">no es la única&lt;/a>, es simplemente otra más y puedo asegurar que me lo paso genial desarrollándola.&lt;/p>
&lt;p>Uno de los objetivos principales cuando empecé &lt;strong>era permitir usar true color&lt;/strong> (es decir 16 millones de colores) en aquellos terminales que lo soportan y la verdad es que la historia del soporte de colores en terminales da para un post&amp;hellip; y aquí estamos 😉&lt;/p></description><dc:creator>eiximenis</dc:creator><category>.net</category><category>consola</category><category>netcore</category></item><item><title>Curiosidad: Esos nombres de contenedores en Docker…</title><link>https://www.eiximenis.dev/posts/2019-03-05-curiosidad-esos-nombres-de-contenedores-en-docker/</link><pubDate>Tue, 05 Mar 2019 15:51:11 +0000</pubDate><atom:modified>Tue, 05 Mar 2019 15:51:11 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2019-03-05-curiosidad-esos-nombres-de-contenedores-en-docker/</guid><description>&lt;p>Una cosa que causa cierta confusión en la gente que empieza con Docker es **el nombre de los contenedores. **La verdad es que cuando ejecutamos un contenedor usando &lt;em>docker run&lt;/em> este tiene un nombre aleatorio.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>docker</category></item><item><title>AKS, KeyVault y netcore</title><link>https://www.eiximenis.dev/posts/2019-02-23-aks-keyvault-y-netcore/</link><pubDate>Sat, 23 Feb 2019 16:16:31 +0000</pubDate><atom:modified>Sat, 23 Feb 2019 16:16:31 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2019-02-23-aks-keyvault-y-netcore/</guid><description>&lt;p>¡Buenas! Vamos a ver en este artículo &lt;strong>como podemos leer secretos almacenados en un &lt;a href="https://azure.microsoft.com/es-es/services/key-vault/">Azure Key Vault&lt;/a>&lt;/strong> desde nuestro código netcore ejecutándose en un AKS.&lt;/p>
&lt;p>A diferencia de ACR donde contamos con una integración nativa en la cual nos basta con usar un _service account _de AKS vinculado a un _service principal _de Azure que tenga permisos de lectura contra el ACR (escribiéndolo veo que esto da para un pequeño futuro post), para Key Vault no tenemos integración nativa.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>asp.net core</category><category>kubernetes</category></item><item><title>Container Groups en ACI</title><link>https://www.eiximenis.dev/posts/2019-02-19-container-groups-en-aci/</link><pubDate>Tue, 19 Feb 2019 22:18:45 +0000</pubDate><atom:modified>Tue, 19 Feb 2019 22:18:45 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2019-02-19-container-groups-en-aci/</guid><description>&lt;p>Este es el segundo post sobre Azure Container instances. En el &lt;a href="https://geeks.ms/etomas/2019/02/01/aci-azure-container-instances-serverless-containers/">post anterior&lt;/a> vimos lo fácil que era publicar un contenedor y ejecutarlo usando ACI y discutimos algunas de sus limitaciones.&lt;/p>
&lt;p>En este post veremos que ACI nos permite &lt;strong>ejecutar grupos de contenedores&lt;/strong>, de forma igualmente sencilla y así tener algunos escenarios más complejos.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>aci</category><category>aks</category><category>azure</category><category>docker</category><category>serverless</category></item><item><title>Trabajando con AKS Devspaces</title><link>https://www.eiximenis.dev/posts/2019-02-13-trabajando-con-aks-devspaces/</link><pubDate>Wed, 13 Feb 2019 17:34:10 +0000</pubDate><atom:modified>Wed, 13 Feb 2019 17:34:10 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2019-02-13-trabajando-con-aks-devspaces/</guid><description>&lt;p>AKS Devspaces es una característica que Microsoft está promocionando bastante en sus charlas: casi en cualquier evento donde se hable de AKS se demuestra, ni que sea brevemente, Devspaces.&lt;/p>
&lt;p>Pero&amp;hellip; qué es y lo más importante: ¿Para qué sirve y como se usa?&lt;/p></description><dc:creator>eiximenis</dc:creator><category>asp.net core</category><category>kubernetes</category></item><item><title>ASP.NET Core: Error de npm al generar una imagen Docker de un proyecto creado con la plantilla de React</title><link>https://www.eiximenis.dev/posts/2019-02-06-asp-net-core-error-de-npm-al-generar-una-imagen-docker-de-un-proyecto-creado-con-la-plantilla-de-react/</link><pubDate>Wed, 06 Feb 2019 18:09:40 +0000</pubDate><atom:modified>Wed, 06 Feb 2019 18:09:40 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2019-02-06-asp-net-core-error-de-npm-al-generar-una-imagen-docker-de-un-proyecto-creado-con-la-plantilla-de-react/</guid><description>&lt;p>He visto este problema con un proyecto generado a partir de la plantilla de SPA de React, pero quizá puede aplicar a otras plantillas de SPA (como Angular).&lt;/p></description><dc:creator>eiximenis</dc:creator><category>asp.net core</category><category>docker</category><category>reactjs</category><category>visual studio</category></item><item><title>¿Qué significa un problema P o NP?</title><link>https://www.eiximenis.dev/posts/2019-02-02-que-significa-un-problema-p-o-np/</link><pubDate>Sat, 02 Feb 2019 12:07:51 +0000</pubDate><atom:modified>Sat, 02 Feb 2019 12:07:51 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2019-02-02-que-significa-un-problema-p-o-np/</guid><description>&lt;p>No suelo escribir en el post artículos sobre teoría de la computación, aunque es un tema apasionante. Que ahora recuerde solo escribí uno acerca del concepto del &lt;a href="https://geeks.ms/etomas/2012/11/28/el-orden-de-los-algoritmos-esa-gran-o/">Orden de un algoritmo&lt;/a>. Pero hace algunos días (he tardado más de lo esperado en escribir eso xD) buceando por &lt;em>twitter&lt;/em> leí unos comentarios donde se mencionaba el concepto de un problema NP y leyendo el desconocimiento al respecto, me he animado a escribir esto&amp;hellip; para que, si alguna vez te topas con ese concepto, sepas de que se habla. &lt;strong>Por supuesto voy a hacer varias simplificaciones al respecto, así que si alguien conoce los fundamentos matemáticos que subyacen debajo, espero que me perdone&lt;/strong> 😉&lt;/p></description><dc:creator>eiximenis</dc:creator><category>otros</category></item><item><title>ACI (Azure Container Instances): Serverless containers</title><link>https://www.eiximenis.dev/posts/2019-02-01-aci-azure-container-instances-serverless-containers/</link><pubDate>Fri, 01 Feb 2019 11:56:15 +0000</pubDate><atom:modified>Fri, 01 Feb 2019 11:56:15 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2019-02-01-aci-azure-container-instances-serverless-containers/</guid><description>&lt;p>Cuando hablamos de &lt;em>serverless&lt;/em> todo el mundo lo asociamos a las soluciones tipo FaaS como Azure Functions o Amazon Lambda, pero hay otros productos que se engloban dentro de ese paradigma y en Azure uno de los más interesantes es &lt;strong>Azure Container Instances&lt;/strong>. Del mismo modo que con una Azure Function me limito a poner código en “ejecución” y esto se ejecuta en algún sitio, usando ACI lo que hago es “poner un contenedor” que se ejecutará en&amp;hellip; bueno, donde sea. Eso es &lt;em>serverless&lt;/em> señores.&lt;/p>
&lt;p>Con este post quiero iniciar una pequeña serie dedicada a ACI, como ACI se compara con su &lt;a href="https://www.youtube.com/watch?v=B90D3Eq7KjU">primo Zumosol&lt;/a> (AKS) y como AKS y ACI habilitan interesantes escenarios (altísima escalabilidad y workloads mixtos de contenedores).&lt;/p></description><dc:creator>eiximenis</dc:creator><category>aci</category><category>aks</category><category>azure</category><category>docker</category><category>serverless</category></item><item><title>JavaScript: Limitar el tiempo de ejecución de una promise</title><link>https://www.eiximenis.dev/posts/2019-01-31-javascript-limitar-el-tiempo-de-ejecucion-de-una-promise/</link><pubDate>Thu, 31 Jan 2019 15:45:13 +0000</pubDate><atom:modified>Thu, 31 Jan 2019 15:45:13 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2019-01-31-javascript-limitar-el-tiempo-de-ejecucion-de-una-promise/</guid><description>&lt;p>Este es un post cortito y motivado porque hace algunos días en el curso de &lt;a href="https://www.campusmvp.es/catalogo/Product-Programaci%C3%B3n-avanzada-con-JavaScript-y-ECMAScript_206.aspx">JavaScript avanzado&lt;/a> que tengo, junto al maestro &lt;a href="https://twitter.com/jm_alarcon">José Manuel Alarcón&lt;/a>, en CampusMVP un alumno preguntó más o menos eso: como se podía tener un &lt;em>timeout&lt;/em> en una promise, de forma que esa fallase automáticamente si se superaba un determinado tiempo.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>javascript</category></item><item><title>Charlas del 2019</title><link>https://www.eiximenis.dev/talks/2019/</link><pubDate>Tue, 01 Jan 2019 00:00:00 +0000</pubDate><atom:modified>Tue, 01 Jan 2019 00:00:00 +0000</atom:modified><guid>https://www.eiximenis.dev/talks/2019/</guid><description>El 2019 lo empecé dando una charla loca sobre aplicaciones de consola y lo cerré con una charla de pura diversión. Intenté dejar de dar charlas sobre Kubernetes y Docker ya que estaba un poco saturado (aunque en retrospectiva veo que tampoco lo conseguí del todo xD). Eso sí, para que no se me olvidara impartí varios workshops de Kubernetes (en Madrid, Barcelona y Bilbao y también para clientes).
NetCore Conf Barcelona 2019 (¿Aplicaciones de consola fáciles?</description><dc:creator>eiximenis</dc:creator></item><item><title>Ya es oficial: Microsoft anuncia el abandono de Full Framework</title><link>https://www.eiximenis.dev/posts/2018-12-28-ya-es-oficial-microsoft-anuncia-el-abandono-de-full-framework/</link><pubDate>Fri, 28 Dec 2018 14:51:23 +0000</pubDate><atom:modified>Fri, 28 Dec 2018 14:51:23 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2018-12-28-ya-es-oficial-microsoft-anuncia-el-abandono-de-full-framework/</guid><description>&lt;p>A ver, era algo que se veía a venir&amp;hellip; Microsoft ha anunciado finalmente el abandono de Full Framework, en favor de Net Core. Cualquiera que estuviese al tanto de los intríngulis de pasillo del gigante de Redmond sabía que ambos equipos andaban bastante a la greña.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Sin categoría</category></item><item><title>Comparaciones en C#</title><link>https://www.eiximenis.dev/posts/2018-12-17-comparaciones-en-c/</link><pubDate>Mon, 17 Dec 2018 07:00:28 +0000</pubDate><atom:modified>Mon, 17 Dec 2018 07:00:28 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2018-12-17-comparaciones-en-c/</guid><description>&lt;p>¡Buenas!&lt;/p>
&lt;p>Este &lt;em>post&lt;/em> pertenece al “&lt;a href="https://aspnetcoremaster.com/c%23/advientocsharp/2018/11/16/Calendario-adviento-csharp.html">calendario de adviento de C#&lt;/a>“, y me gustaría hablaros de un tema que parece sencillo pero que bueno, esconde sus cosillas. En concreto sobre &lt;strong>comparaciones en C#&lt;/strong>.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>.net</category><category>C#</category></item><item><title>C#: Conversiones (explícitas o implícitas) e interfaces</title><link>https://www.eiximenis.dev/posts/2018-12-01-c-conversiones-implicitas-e-interfaces/</link><pubDate>Sat, 01 Dec 2018 15:12:14 +0000</pubDate><atom:modified>Sat, 01 Dec 2018 15:12:14 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2018-12-01-c-conversiones-implicitas-e-interfaces/</guid><description>&lt;p>Una de las características más útiles, aunque más potencialmente peligrosas de C# es la posibilidad de sobrecargar los operadores de conversión (&lt;em>casting&lt;/em>) y concretamente el de conversión implícita.&lt;/p>
&lt;p>Poder sobrecargar el operador de conversión explícita, aunque lo entiendo como una característica que agrega ortogonalidad al lenguaje, no es algo que me guste. Antes de eso prefiero crear un método AsXXX(). De hecho me parece que un cliente de mi clase encontrará más lógico un método AsXXX() que no “un casting a XXX” que debes saber que se puede hacer para hacerlo.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>C#</category></item><item><title>Crear imágenes Docker de proyectos netcore en varias versiones del framework</title><link>https://www.eiximenis.dev/posts/2018-11-29-crear-imagenes-docker-de-proyectos-netcore-en-varias-versiones-del-framework/</link><pubDate>Thu, 29 Nov 2018 14:33:33 +0000</pubDate><atom:modified>Thu, 29 Nov 2018 14:33:33 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2018-11-29-crear-imagenes-docker-de-proyectos-netcore-en-varias-versiones-del-framework/</guid><description>&lt;p>Imagina que estás probando alguna versión &lt;em>release&lt;/em> de netcore (pongamos la 2.2-preview3) y quieres generar imágenes Docker de tu proyecto para esa imagen. Pero a la vez quieres también crear las imágenes usando la última versión estable (pongamos la 2.1).&lt;/p>
&lt;p>&lt;strong>Asumiendo que el código fuente es compatible&lt;/strong>, ¿como puedes gestionar eso sin morir en el intento?&lt;/p></description><dc:creator>eiximenis</dc:creator><category>docker</category><category>netcore</category></item><item><title>C#: Structs de un solo campo como typedefs</title><link>https://www.eiximenis.dev/posts/2018-11-16-c-structs-de-un-solo-campo-como-typedefs/</link><pubDate>Fri, 16 Nov 2018 09:21:26 +0000</pubDate><atom:modified>Fri, 16 Nov 2018 09:21:26 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2018-11-16-c-structs-de-un-solo-campo-como-typedefs/</guid><description>No hace mucho me preguntaba si usar structs de un solo campo tenía alguna penalización respecto a usar, simplemente, una variable del tipo del campo. Es decir, me preguntaba si tener:
struct Sint { public int value; } Tenía alguna penalización al respecto de usar, simplemente, una variable int.
A nivel de memoria sospechaba que no: una struct ocupa lo mismo que la suma de todos sus campos, más los paddings que se agregan para que los campos estén alineados, más el padding final que se agrega para que, en el caso de un array, los elementos estén alineados.</description><dc:creator>eiximenis</dc:creator><category>.net</category><category>C#</category></item><item><title>Depurar netcore ejecutándose en WSL con VS2017</title><link>https://www.eiximenis.dev/posts/2018-11-15-depurar-netcore-ejecutandose-en-wsl-con-vs2017/</link><pubDate>Thu, 15 Nov 2018 09:27:24 +0000</pubDate><atom:modified>Thu, 15 Nov 2018 09:27:24 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2018-11-15-depurar-netcore-ejecutandose-en-wsl-con-vs2017/</guid><description>&lt;p>Hoy he tenido que afrontar la dolorosa situación de un código en netcore que funcionaba correctamente en mi máquina (Windows 10) pero que al ejecutarse en Docker fallaba miserablemente.&lt;/p>
&lt;p>Dado que el error que imprimía por consola era que no encontraba un fichero, lo primero fue comprobar que nuestro código era &lt;em>cross-platform&lt;/em> (p. ej. que usábamos siempre Path.Combine y no concatenábamos el caráter &lt;code>\&lt;/code> para separar directorios) ya que la imagen Docker era de Linux. Luego hicimos todas las verificaciones habidas y por haber (permisos, etc) y nada. Todo parecía correcto. Al final, nos preguntamos si era un problema de Docker o de cualquier Linux en general y ahí acudimos a WSL.&lt;/p>
&lt;p>Ejecutamos el programa bajo WSL y obtuvimos el mismo error. Eso era bueno por dos motivos: No era Docker la fuente del error y además nos permitía depurar el proceso.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>depuracion</category><category>visual studio</category></item><item><title>Crear imágenes Docker de una app SPA pura y… como configurarla</title><link>https://www.eiximenis.dev/posts/2018-10-26-crear-imagenes-docker-de-una-app-spa-pura-y-como-configurarla/</link><pubDate>Fri, 26 Oct 2018 16:44:13 +0000</pubDate><atom:modified>Fri, 26 Oct 2018 16:44:13 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2018-10-26-crear-imagenes-docker-de-una-app-spa-pura-y-como-configurarla/</guid><description>&lt;p>El otro día habé de &lt;a href="http://geeks.ms/etomas/2018/10/25/generar-imagenes-docker-de-proyectos-spa-de-netcore/">como crear imágenes Docker para las aplicaciones SPA de .NET Core&lt;/a>. Hoy quiero comentaros como crear imágenes Docker para aplicaciones SPA puras y un tema importante al respecto: &lt;strong>como configurarlas&lt;/strong>.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>docker</category></item><item><title>Generar imágenes Docker de proyectos SPA de netcore</title><link>https://www.eiximenis.dev/posts/2018-10-25-generar-imagenes-docker-de-proyectos-spa-de-netcore/</link><pubDate>Thu, 25 Oct 2018 14:04:52 +0000</pubDate><atom:modified>Thu, 25 Oct 2018 14:04:52 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2018-10-25-generar-imagenes-docker-de-proyectos-spa-de-netcore/</guid><description>&lt;p>¡Buenas!&lt;/p>
&lt;p>Cuando creas un proyecto SPA de netcore, ya sea mediante VS o bien usando &lt;em>dotnet new&lt;/em> y alguna plantilla SPA como react (&lt;em>dotnet new react&lt;/em>), se genera una estructura parecida a la siguiente:&lt;/p>
&lt;p>&lt;a href="https://geeks.ms/etomas/wp-content/uploads/sites/154/2018/10/spa-estructura.png">&lt;img class="alignnone size-full wp-image-2195" src="https://geeks.ms/etomas/wp-content/uploads/sites/154/2018/10/spa-estructura.png" alt="Estructura ficheros proyecto SPA" width="249" height="293" />&lt;/a>&lt;/p>
&lt;p>La carpeta “ClientApp” contiene todo el código de cliente (javascript, CSS y demás) mientras que el resto es el código netcore que se limita a “lanzar” la SPA.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>asp.net core</category><category>docker</category></item><item><title>Unicode y encodings</title><link>https://www.eiximenis.dev/posts/2018-10-01-unicode-y-encodings/</link><pubDate>Mon, 01 Oct 2018 09:40:40 +0000</pubDate><atom:modified>Mon, 01 Oct 2018 09:40:40 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2018-10-01-unicode-y-encodings/</guid><description>&lt;p>Uno de los conceptos que hoy en día siguen causando más confusión es el de Unicode y sus distintos tipos de codificación. Pero&amp;hellip; ¿qué es realmente Unicode? Para ello, déjame que remonte unos cuantos años atrás&amp;hellip;&lt;/p>
&lt;p>&lt;strong>El inicio: ASCII&lt;/strong>&lt;/p>
&lt;p>Los ordenadores los inventaron los americanos y como suele ocurrir se preocuparon de lo suyo: que un ordenador pudiese presentar textos en su idioma. Tampoco hay tantos caracteres en el inglés: las veinte y poco letras (en mayúsculas y minúsculas), los símbolos de puntuación, paréntesis, operaciones matemáticas y poco más. En total eran menos de 128 carácteres. Genial, porque esos espacios que sobraban se podían aprovechar para colocar otros caracteres que no tienen representación gráfica pero que eran (y son) necesarios para controlar el teletipo: retornos de carro, saltos de línea y similares. Había nacido el &lt;a href="https://en.wikipedia.org/wiki/ASCII">código ASCII&lt;/a>.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>unicode</category><category>.net</category></item><item><title>Ejecutar bases de datos en Kubernetes: ¿Sí, no?</title><link>https://www.eiximenis.dev/posts/2018-09-21-ejecutar-bases-de-datos-en-kubernetes-si-no/</link><pubDate>Fri, 21 Sep 2018 07:21:35 +0000</pubDate><atom:modified>Fri, 21 Sep 2018 07:21:35 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2018-09-21-ejecutar-bases-de-datos-en-kubernetes-si-no/</guid><description>&lt;p>Esta es una de las preguntas que tarde o temprano cualquiera que trabaje con Docker y Kubernetes (o cualquier otro orquestrador) se termina encontrando: Tienes toda tu aplicación en contenedores, ejecutándose en Kubernetes. Sabes también que existen versiones &lt;em>dockerizadas&lt;/em> de las bases de datos. Así pues&amp;hellip; ¿es conveniente ejecutar las bases de datos como contenedores adicionales en el orquestrador?&lt;/p></description><dc:creator>eiximenis</dc:creator><category>kubernetes</category><category>opinion</category></item><item><title>Azure Functions y SignalR: serverless push</title><link>https://www.eiximenis.dev/posts/2018-09-06-azure-functions-y-signalr-serverless-push/</link><pubDate>Thu, 06 Sep 2018 09:11:46 +0000</pubDate><atom:modified>Thu, 06 Sep 2018 09:11:46 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2018-09-06-azure-functions-y-signalr-serverless-push/</guid><description>&lt;p>El hecho de ofrecer SignalR como servicio PaaS en Azure y su integración con Azure Functions nos abre un escenario interesante: ahora es facilísimo hacer notificaciones &lt;em>push&lt;/em> desde una Azure Function (AF) a un cliente SignalR (p. ej. una Web).&lt;/p></description><dc:creator>eiximenis</dc:creator><category>af</category><category>azure functions</category><category>signalr</category><category>.net</category><category>serverless</category></item><item><title>Diseccionando DevSpaces (i)</title><link>https://www.eiximenis.dev/posts/2018-07-30-diseccionando-devspaces-i/</link><pubDate>Mon, 30 Jul 2018 06:44:22 +0000</pubDate><atom:modified>Mon, 30 Jul 2018 06:44:22 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2018-07-30-diseccionando-devspaces-i/</guid><description>&lt;p>DevSpaces es una de las grandes novedades para desarrolladores que nos trae Microsoft (ehm sí&amp;hellip; es &lt;em>otro&lt;/em> producto más que está en &lt;em>preview&lt;/em> :p). Básicamente se trata &lt;strong>de la posibilidad de desplegar parcialmente y depurar nuestros contenedores ejecutándose en un clúster de Kubernetes&lt;/strong>. En lo que Hanselman llama un “entorno que &lt;em>huele&lt;/em> como producción”.&lt;/p>
&lt;p>¿Pero&amp;hellip; cómo funciona esa magia? Vamos a ver, dentro de lo posible, qué ha hecho Microsoft para proporcionarnos esta experiencia, dentro de un Kubernetes completamente normal&amp;hellip;&lt;/p>
&lt;p>Este post **no pretender ser un tutorial de DevSpaces, **ya que la &lt;a href="https://docs.microsoft.com/es-es/azure/dev-spaces/azure-dev-spaces">propia documentación&lt;/a> lo explica bastante bien. La idea es intentar ver “como” funciona DevSpaces, más que como lo podemos usar.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>kubernetes</category></item><item><title>SF Mesh: Primeras impresiones</title><link>https://www.eiximenis.dev/posts/2018-07-18-sf-mesh-primeras-impresiones/</link><pubDate>Wed, 18 Jul 2018 14:39:20 +0000</pubDate><atom:modified>Wed, 18 Jul 2018 14:39:20 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2018-07-18-sf-mesh-primeras-impresiones/</guid><description>&lt;p>Dentro de esta vorágine de productos relacionados con los contenedores en la que está inmersa Microsoft, ahora le toca el turno a &lt;a href="https://azure.microsoft.com/en-us/blog/azure-service-fabric-mesh-is-now-in-public-preview/">Service Fabric Mesh que salió hace nada en public preview&lt;/a>. En este post quiero comentaros un poco de qué va este producto y como ha ido mi (limitada) experiencia con él.&lt;/p>
&lt;p>&lt;strong>Disclaimer:&lt;/strong> Este es un post sobre un producto que está en &lt;em>preview&lt;/em>. Lo expuesto aquí puede cambiar a medida que avance tanto el propio producto como mi experiencia en él.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Sin categoría</category></item><item><title>Runtimes de contenedores</title><link>https://www.eiximenis.dev/posts/2018-07-16-runtimes-de-contenedores/</link><pubDate>Mon, 16 Jul 2018 16:33:11 +0000</pubDate><atom:modified>Mon, 16 Jul 2018 16:33:11 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2018-07-16-runtimes-de-contenedores/</guid><description>&lt;p>Una de las preguntas más frecuentes que me hacen sobre contenedores es hasta que punto penalizan el rendimiento. Es una pregunta muy lógica ya que al final los contenedores ofrecen un cierto nivel de aislamiento, &lt;em>parecen&lt;/em> máquinas virtuales&amp;hellip; Algo han de penalizar, ¿no?. En esta entrada voy a hablar de los &lt;em>runtimes&lt;/em> de contenedores, para que entendamos un poco más qué significa ejecutar un contenedor.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>docker</category><category>kubernetes</category></item><item><title>Desplegar una aplicación ASP.NET Core 2.1 con https en Docker</title><link>https://www.eiximenis.dev/posts/2018-07-02-desplegar-una-aplicacion-asp-net-core-2-1-con-https-en-docker/</link><pubDate>Mon, 02 Jul 2018 15:49:12 +0000</pubDate><atom:modified>Mon, 02 Jul 2018 15:49:12 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2018-07-02-desplegar-una-aplicacion-asp-net-core-2-1-con-https-en-docker/</guid><description>&lt;p>Una de las novedades de ASP.NET Core 2.1 es que redirige automáticamente todo el tráfico de http a https y, además, fuerza el uso de HSTS. Sobre https nada que decir, seguro que todos lo conocéis.&lt;/p>
&lt;p>Sobre HSTS simplemente comentar que es un protocolo mediante el cual el servidor informa a los &lt;em>user-agents&lt;/em> de que solo acepta conexiones seguras, es decir que deben usar HTTPS para acceder a sus recursos. A pesar de que HSTS tiene sus limitaciones (y que para evitarlas sería necesaria un protocolo a nivel de DNS y no de servidores) su uso es una práctica imprescindible en seguridad web. De hecho **hoy en día NO HAY EXCUSA PARA NO USAR HTTPS NI HSTS **en cualquier sitio web. Da absolutamente igual lo que haga. No usar https ni hsts es una negligencia que debería avergonzar a cualquiera.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>asp.net core</category><category>docker</category></item><item><title>Usar vscode para depurar tus contenedores netcore</title><link>https://www.eiximenis.dev/posts/2018-06-15-usar-vscode-para-depurar-tus-contenedores-netcore/</link><pubDate>Fri, 15 Jun 2018 11:14:24 +0000</pubDate><atom:modified>Fri, 15 Jun 2018 11:14:24 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2018-06-15-usar-vscode-para-depurar-tus-contenedores-netcore/</guid><description>&lt;p>Una de las ventajas que tiene **Visual Studio 2017 es el &lt;a href="https://geeks.ms/etomas/2017/07/27/las-herramientas-de-docker-de-vs2017/">soporte de depuración para contenedores netcore&lt;/a>. **A partir de la versión 15.7 el soporte está relativamente maduro soportando algunos escenarios que daban errores en versiones anteriores (p. ej. dos servicios compose usando la misma imagen).&lt;/p>
&lt;p>Pero&amp;hellip; ¿y si no podemos/queremos usar Visual Studio? ¿Tenemos alguna alternativa? Pues sí: &lt;strong>usar visual studio code&lt;/strong>, y aunque el &lt;em>workflow&lt;/em> no es tan sencillo como en Visual Studio, al final se puede conseguir algo similar: ejecutar y depurar un contenedor. ¡Vamos allá!&lt;/p></description><dc:creator>eiximenis</dc:creator><category>asp.net core</category><category>depuracion</category><category>docker</category></item><item><title>Docker: Imágenes Windows y Linux con un solo Dockerfile. Sí, pero…</title><link>https://www.eiximenis.dev/posts/2018-06-12-docker-imagenes-windows-y-linux-con-un-solo-dockerfile-si-pero/</link><pubDate>Tue, 12 Jun 2018 15:28:11 +0000</pubDate><atom:modified>Tue, 12 Jun 2018 15:28:11 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2018-06-12-docker-imagenes-windows-y-linux-con-un-solo-dockerfile-si-pero/</guid><description>&lt;p>Una de las características menos conocidas de Docker son las imágenes multi-arch. Es una característica que agradecerás si trabajas tanto en contenedores Linux como Windows.&lt;/p>
&lt;p>Como ya debes saber, Docker no permite ejecutar contenedores cuyos binarios no sean los mismos de la plataforma que los hospeda: es decir, si estás en Windows solo puedes ejecutar contenedores cuyos binarios sean Windows y si estás en Linux pues lo mismo. Y sí, Docker CE For Windows “hace tramas” para permitirte ejecutar contenedores Linux: los ejecuta en una máquina virtual Hyper-V.&lt;/p>
&lt;p>Si desarrollas un producto multi-plataforma y quieres ofrecer contenedores tanto Linux como Windows, el uso de imágenes multi-arch es algo que, como digo, vas a agradecer, &lt;strong>ya que te permite usar un solo Dockerfile&lt;/strong> para generar ambas imágenes.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>asp.net core</category><category>docker</category></item><item><title>HttpClient en C# y servicios de Docker escalados.</title><link>https://www.eiximenis.dev/posts/2018-06-11-httpclient-en-c-y-servicios-de-docker-escalados/</link><pubDate>Mon, 11 Jun 2018 11:09:25 +0000</pubDate><atom:modified>Mon, 11 Jun 2018 11:09:25 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2018-06-11-httpclient-en-c-y-servicios-de-docker-escalados/</guid><description>&lt;p>En este post vamos a ver como escalar servicios, tanto en Compose, como en Swarm como en Kubernetes y luego veremos algunas consideraciones cuando usemos HttpClient desde el cliente al acceder a un servidor escalado.&lt;/p>
&lt;p>Nos centramos en el escenario de escalado básico, es decir, sin demasiada lógica.&lt;/p>
&lt;p>&lt;strong>[Autobombo]:&lt;/strong> Si estás interesado en temas de Docker y Kubernetes, échale un vistazo a &lt;a href="https://www.campusmvp.es/catalogo/Product-Docker-y-Kubernetes-desarrollo-y-despliegue-de-aplicaciones-basadas-en-contenedores_237.aspx">mi curso de Docker y Kubernetes en CampusMVP&lt;/a>.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>asp.net core</category><category>docker</category><category>kubernetes</category></item><item><title>Novedades .NET Core 2.1: Generic host</title><link>https://www.eiximenis.dev/posts/2018-06-07-novedades-net-core-2-1-generic-host/</link><pubDate>Thu, 07 Jun 2018 11:04:55 +0000</pubDate><atom:modified>Thu, 07 Jun 2018 11:04:55 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2018-06-07-novedades-net-core-2-1-generic-host/</guid><description>&lt;p>Ahora que .NET Core 2.1 ya es oficial ya podemos desgranar algunas de sus novedades más interesantes. La verdad es que, por fin, se vislumbra una madurez en la plataforma. Realmente a no ser que haya algún motivo de fuerza mayor (librería no disponible), .NET Core 2.1 debería ser la opción &lt;em>por defecto&lt;/em> a la hora de empezar cualquier proyecto nuevo.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>.net</category><category>asp.net 5</category></item><item><title>Monitorizando nuestros servicios en Kubernetes con Beatpulse</title><link>https://www.eiximenis.dev/posts/2018-06-03-monitorizando-nuestros-servicios-en-kubernetes-con-beatpulse/</link><pubDate>Sun, 03 Jun 2018 16:58:34 +0000</pubDate><atom:modified>Sun, 03 Jun 2018 16:58:34 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2018-06-03-monitorizando-nuestros-servicios-en-kubernetes-con-beatpulse/</guid><description>&lt;p>&lt;strong>&lt;em>Disclaimer&lt;/em>:&lt;/strong> &lt;span style="text-decoration: underline;">En ese post hablo de una librería (Beatpulse) de la que soy contribuidor&lt;/span> (lo aclaro, para que no haya ningún malentendido).&lt;/p>
&lt;p>En todo sistema distribuído es importante disponer de un mecanismo que permita saber en todo momento &lt;strong>si un servicio está funcionando o no&lt;/strong>. Es cierto que el concepto de “funcionando” es algo difuso de definir, pero yendo a mínimos deberíamos saber si un sistema se ha caído o no.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>asp.net core</category><category>docker</category><category>kubernetes</category></item><item><title>Tip: Acceder a Minikube desde WSL</title><link>https://www.eiximenis.dev/posts/2018-05-31-tip-acceder-a-minikube-desde-wsl/</link><pubDate>Thu, 31 May 2018 14:48:36 +0000</pubDate><atom:modified>Thu, 31 May 2018 14:48:36 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2018-05-31-tip-acceder-a-minikube-desde-wsl/</guid><description>&lt;p>Hoy me han preguntado eso, así que mira, aprovecho para apuntarlo aquí, por si alguien más tiene esta duda.&lt;/p>
&lt;p>La situación es la siguiente: tienes minikube instalado y funcionando en Windows, pero quieres usarlo desde un &lt;em>kubectl&lt;/em> ejecutándose en un terminal WSL. ¿Es posible?&lt;/p></description><dc:creator>eiximenis</dc:creator><category>docker</category><category>kubernetes</category></item><item><title>Añadir soporte TLS a tu Kubernetes en Azure con Let's Encrypt</title><link>https://www.eiximenis.dev/posts/2018-04-13-anadir-soporte-tls-a-tu-kubernetes-en-azure-con-lets-encrypt/</link><pubDate>Fri, 13 Apr 2018 16:05:06 +0000</pubDate><atom:modified>Fri, 13 Apr 2018 16:05:06 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2018-04-13-anadir-soporte-tls-a-tu-kubernetes-en-azure-con-lets-encrypt/</guid><description>&lt;p>¡Buenas! En este post vamos a ver como añadir soporte TLS a tu clúster de Kubernetes desplegado en ACS o AKS. Hace tiempo escribí un post sobre como añadir certificados de desarrollo a un servicio NGINX que tuvieses en Kubernetes. Aunque lo dicho en &lt;a href="https://geeks.ms/etomas/2017/10/16/configurar-ssl-en-un-cluster-de-k8s/">aquel post&lt;/a> sigue siendo válido, hay una manera mucho más sencilla con la condición de que &lt;a href="https://geeks.ms/etomas/2018/01/03/kubernetes-3-controladores-ingress/">usemos &lt;em>ingress&lt;/em> para exponer nuestros servicios al exterior&lt;/a>.&lt;/p>
&lt;p>En este post parto de la suposición de que:&lt;/p>
&lt;ol>
&lt;li>Tienes un clúster de Kubernetes en ACS/AKS y &lt;em>kubectl&lt;/em> configurado para atacar a él&lt;/li>
&lt;li>Tienes el controlador &lt;em>ingress&lt;/em> de NGINX instalado en el clúster exponiendo cualquier servicio&lt;/li>
&lt;/ol>
&lt;p>Es decir, haciendo http://IP-CLUSTER/servicio obtienes alguna respuesta. Lo que queremos es poder usar https en su lugar.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>docker</category><category>kubernetes</category><category>Sin categoría</category></item><item><title>Ejecutar pruebas de tus contenedores en VSTS</title><link>https://www.eiximenis.dev/posts/2018-03-07-ejecutar-pruebas-de-tus-contenedores-en-vsts/</link><pubDate>Wed, 07 Mar 2018 12:33:37 +0000</pubDate><atom:modified>Wed, 07 Mar 2018 12:33:37 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2018-03-07-ejecutar-pruebas-de-tus-contenedores-en-vsts/</guid><description>&lt;p>Si desarrollas con Docker es probable que uses &lt;a href="https://geeks.ms/etomas/2017/11/28/docker-multi-stage-builds-o-como-compilar-casi-cualquier-cosa-sin-tener-que-instalar-nada/">&lt;em>multi-stage builds&lt;/em>&lt;/a> para crear tus contenedores, en este caso unificas bajo un mismo Dockerfile la creación del binario (usando una imagen de compilación) y la creación de la imagen final (basandote en una imagen de &lt;em>runtime&lt;/em>).&lt;/p>
&lt;p>Ahora bien, si usas un pipeline de CI/CD con VSTS&amp;hellip; ¿como gestionar los tests de esos contenedores? Eso es lo que vamos a discutir en este post.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>asp.net core</category><category>docker</category><category>Sin categoría</category></item><item><title>C# Varianza en delegados</title><link>https://www.eiximenis.dev/posts/2018-02-05-c-varianza-en-delegados/</link><pubDate>Mon, 05 Feb 2018 15:02:39 +0000</pubDate><atom:modified>Mon, 05 Feb 2018 15:02:39 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2018-02-05-c-varianza-en-delegados/</guid><description>&lt;p>¡Buenas! A raíz de una situación en la que me he encontrado en un proyecto real (de la que luego hablaré) me he decidido a escribir este post para comentar algunas cosillas sobre varianzas en los delegados mismos.&lt;/p>
&lt;p>Cuando hablamos de varianzas en delegados hay que contemplar dos aspectos:&lt;/p>
&lt;ul>
&lt;li>Varianzas entre los &lt;em>tipos definidos por el delegado&lt;/em> y los &lt;em>tipos de la función asignada al delegado&lt;/em>&lt;/li>
&lt;li>Varianzas entre _el tipo del delegado _y otros tipos (en este caso &lt;em>object&lt;/em>).&lt;/li>
&lt;li>Las combinaciones entre esos dos puntos.&lt;/li>
&lt;/ul></description><dc:creator>eiximenis</dc:creator><category>C#</category></item><item><title>Gestionar la configuración en asp.net core y Docker</title><link>https://www.eiximenis.dev/posts/2018-01-31-gestionar-la-configuracion-en-asp-net-core-y-docker/</link><pubDate>Wed, 31 Jan 2018 12:40:32 +0000</pubDate><atom:modified>Wed, 31 Jan 2018 12:40:32 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2018-01-31-gestionar-la-configuracion-en-asp-net-core-y-docker/</guid><description>&lt;p>Cuando desarrollamos una aplicación en asp.net core que queremos terminar ejecutando con Docker, el como gestionar la configuración puede causarnos más de un quebradero de cabeza.&lt;/p>
&lt;p>En este post voy a comentar, brevemente, como podemos gestionar varios escenarios de configuración.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>asp.net core</category><category>docker</category></item><item><title>Algunos conceptos en arquitrcturas de (¿micro?)servicios que se suelen confundir</title><link>https://www.eiximenis.dev/posts/2018-01-26-algunos-conceptos-en-arquitrcturas-de-microservicios-que-se-suelen-confundir/</link><pubDate>Fri, 26 Jan 2018 09:01:21 +0000</pubDate><atom:modified>Fri, 26 Jan 2018 09:01:21 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2018-01-26-algunos-conceptos-en-arquitrcturas-de-microservicios-que-se-suelen-confundir/</guid><description>&lt;p>Bueno, dejémoslo en &lt;strong>arquitecturas distribuídas&lt;/strong>, que a veces hablamos muy (demasiado) alegremente de &lt;em>microservicios&lt;/em>&amp;hellip;&lt;/p>
&lt;p>La idea es hablar sobre algunos conceptos, patrones que se prestan a confusión porque muchas veces “se tocan” a nivel funcional y no queda claro si estamos uno u otro. Vamos a hablar de &lt;em>proxies&lt;/em>, &lt;em>API Gateway&lt;/em>, &lt;em>Service Mesh&lt;/em> y &lt;em>Backend For Frontend&lt;/em>.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>patrones</category></item><item><title>Asp.Net Core – solucionar error al publicar en docker (assembly not found)</title><link>https://www.eiximenis.dev/posts/2018-01-24-asp-net-core-solucionar-error-al-publicar-en-docker-assembly-not-found/</link><pubDate>Wed, 24 Jan 2018 08:34:23 +0000</pubDate><atom:modified>Wed, 24 Jan 2018 08:34:23 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2018-01-24-asp-net-core-solucionar-error-al-publicar-en-docker-assembly-not-found/</guid><description>&lt;p>Buenas! Imagina que tienes una aplicación hecha en Asp.Net Core y que referencia al &lt;a href="https://geeks.ms/etomas/2017/12/26/el-metapaquete-microsoft-aspnetcore-all/">metapaquete Microsoft.AspNetCore.All&lt;/a>. También tienes un Dockerfile y un fichero compose para generar la imagen &lt;a href="https://geeks.ms/etomas/2017/11/28/docker-multi-stage-builds-o-como-compilar-casi-cualquier-cosa-sin-tener-que-instalar-nada/">usando una &lt;/a>&lt;em>&lt;a href="https://geeks.ms/etomas/2017/11/28/docker-multi-stage-builds-o-como-compilar-casi-cualquier-cosa-sin-tener-que-instalar-nada/">multi-stage build&lt;/a>.&lt;/em>&lt;/p>
&lt;p>La imagen se genera sin problemas pero al ejecutarla recibes un error y no arranca.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>asp.net core</category><category>docker</category></item><item><title>Dependencias condicionales en VS</title><link>https://www.eiximenis.dev/posts/2018-01-22-dependencias-condicionales-en-vs/</link><pubDate>Mon, 22 Jan 2018 16:28:19 +0000</pubDate><atom:modified>Mon, 22 Jan 2018 16:28:19 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2018-01-22-dependencias-condicionales-en-vs/</guid><description>&lt;p>Bueno, imagina que trabajas en un proyecto en NetCore que debe ser multiplataforma. En general el propio framework te provee de todo lo necesario, pero sigamos imaginando que algunas partes de tu proyecto dependen via P/Invoke de llamadas nativas.&lt;/p>
&lt;p>En este caso puedes optar por tener todos los enlaces P/Invoke para cada plataforma en el mismo proyecto (no hay ningún problema) o bien tenerlos separados en proyectos por cada una de las plataformas.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>herramientas</category><category>Sin categoría</category><category>visual studio</category></item><item><title>Marker Interface: ¿Patrón o Anti-patrón?</title><link>https://www.eiximenis.dev/posts/2018-01-19-marker-interface-patron-o-anti-patron/</link><pubDate>Fri, 19 Jan 2018 13:14:31 +0000</pubDate><atom:modified>Fri, 19 Jan 2018 13:14:31 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2018-01-19-marker-interface-patron-o-anti-patron/</guid><description>&lt;p>Llamamos &lt;em>marker interface&lt;/em> a una interfaz vacía. Sí, sí sin métodos ni propiedades ni nada. A pesar de que te pueda parecer una tontería tiene sus usos. Vamos hablar un poco de este patrón y sus usos y por qué es en cierta manera un anti-patrón, aunque no siempre, porque en esa vida, como todo, todo depende&amp;hellip;&lt;/p></description><dc:creator>eiximenis</dc:creator><category>C#</category><category>patrones</category></item><item><title>Meltdown y Spectre… algunos comentarios</title><link>https://www.eiximenis.dev/posts/2018-01-05-meltdown-y-spectre-algunos-comentarios/</link><pubDate>Fri, 05 Jan 2018 12:27:46 +0000</pubDate><atom:modified>Fri, 05 Jan 2018 12:27:46 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2018-01-05-meltdown-y-spectre-algunos-comentarios/</guid><description>&lt;p>dBueno, todo el mundo está hablando sobre Meltdown y Spectre los dos ataques que aprovechan fallos de los microprocesadores “modernos” Intel (el primero) y de cualquier fabricante (el segundo). Como digo muchos medios ya han hablado de ambos ataques, en muchos casos con titulares grandilocuentes y sensacionalistas y contando apenas nada.&lt;/p>
&lt;p>En este post voy a intentar explicar como funcionan ambos ataques, aunque me centraré en Meltdown por ser el más fácil de explicar, entender y aplicar. Spectre se basa en los mismos conceptos, pero es un ataque bastante más complejo.&lt;/p>
&lt;p>Voy a intentar explicarlo de un modo “entendible”, pero obviamente eso requiere ciertos conocimientos técnicos, pero bueno&amp;hellip; ese es un blog de desarrollo, así que seguramente los tienes 😉&lt;/p></description><dc:creator>eiximenis</dc:creator><category>otros</category></item><item><title>Kubernetes (3) – Controladores Ingress</title><link>https://www.eiximenis.dev/posts/2018-01-03-kubernetes-3-controladores-ingress/</link><pubDate>Wed, 03 Jan 2018 16:48:58 +0000</pubDate><atom:modified>Wed, 03 Jan 2018 16:48:58 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2018-01-03-kubernetes-3-controladores-ingress/</guid><description>&lt;p>Seguimos con esta serie de posts sobre Kubernetes. Los posts anteriores:&lt;/p>
&lt;ol>
&lt;li>&lt;a href="https://geeks.ms/etomas/2017/12/19/kubernetes-1-componentes-de-kubernetes/">Componentes de Kubernetes&lt;/a> (donde vimos los distintos componentes de Kubernetes y como usar &lt;a href="https://github.com/kubernetes/minikube">Minikube&lt;/a> para ejecutarlo en local).&lt;/li>
&lt;li>&lt;a href="https://geeks.ms/etomas/2017/12/21/kubernetes-2-modelo-de-aplicacion/">Modelo de aplicación&lt;/a> (donde vimos como crear nuestra primera aplicación en k8s).&lt;/li>
&lt;/ol>
&lt;p>En este tercer post veremos que son los recursos &lt;em>ingress&lt;/em> y los controladores &lt;em>ingress&lt;/em> y que ventajas nos aportan.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>docker</category><category>kubernetes</category><category>Sin categoría</category></item><item><title>Charlas del 2018</title><link>https://www.eiximenis.dev/talks/2018/</link><pubDate>Mon, 01 Jan 2018 00:00:00 +0000</pubDate><atom:modified>Mon, 01 Jan 2018 00:00:00 +0000</atom:modified><guid>https://www.eiximenis.dev/talks/2018/</guid><description>Si me tengo que quedar con algo del 2018, sin duda elijo el nacimiento de IGD Tech &amp;amp; Drinks, un meetup que empecé a organizar junto con buenos colegas como David Regordosa, Toni Tebas, Darío Castañé y Jordi Solà La idea del meetup era (y sigue siendo) el poder dar charlas técnicas en Igualada, de desarrollador a desarrollador, sobre temas variados.
Que una ciudad como Igualada tenga un evento así me parece algo necesario para demostrar que no todo tiene por qué pivotar alrededor de Barcelona ;-)</description><dc:creator>eiximenis</dc:creator></item><item><title>El metapaquete Microsoft.AspNetCore.All</title><link>https://www.eiximenis.dev/posts/2017-12-26-el-metapaquete-microsoft-aspnetcore-all/</link><pubDate>Tue, 26 Dec 2017 19:47:54 +0000</pubDate><atom:modified>Tue, 26 Dec 2017 19:47:54 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2017-12-26-el-metapaquete-microsoft-aspnetcore-all/</guid><description>&lt;p>Todos estamos acostumbrados a usar los &lt;strong>paquetes de NuGet en nuestros desarrollos&lt;/strong>. Pero a raíz de Net Core 2.0, apareció el concepto de &lt;em>metapaquete&lt;/em>. Qué es exactamente un &lt;em>metapaquete&lt;/em> y por qué existen?&lt;/p>
&lt;p>La respuesta rápida es que un &lt;em>metapaquete&lt;/em> de NuGet es simplemente un paquete que &lt;strong>no incluye ningún ensamblado, solo referencia a otros paquetes&lt;/strong>. Es, en definitiva, un mecanismo para “agrupar” paquetes de NuGet bajo un mismo número de version.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>asp.net 5</category><category>asp.net core</category><category>netcore</category><category>Sin categoría</category></item><item><title>Kubernetes (2) – Modelo de aplicación</title><link>https://www.eiximenis.dev/posts/2017-12-21-kubernetes-2-modelo-de-aplicacion/</link><pubDate>Thu, 21 Dec 2017 11:18:03 +0000</pubDate><atom:modified>Thu, 21 Dec 2017 11:18:03 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2017-12-21-kubernetes-2-modelo-de-aplicacion/</guid><description>&lt;p>Si conoces compose conocerás su “modelo de aplicación”. Es un modelo sencillo, contiene básicamente &lt;em>servicios.&lt;/em> Un servicio en compose no es nada más que una imagen de Docker y su configuración asociada.  Luego cuando levantamos una aplicación compose con &lt;code>docker-compose up&lt;/code> se crea uno (o varios) contenedor por cada servicio y listos.&lt;/p>
&lt;p>Pero Kubernetes tiene su propio modelo de aplicación radicalmente distinto. En este post vamos a ver (de forma simplificada) cual es el modelo de aplicación que tiene Kubernetes y ¡desplegaremos nuestra primera aplicación!&lt;/p></description><dc:creator>eiximenis</dc:creator><category>docker</category><category>kubernetes</category><category>Sin categoría</category></item><item><title>Kubernetes (1): Componentes de Kubernetes</title><link>https://www.eiximenis.dev/posts/2017-12-19-kubernetes-1-componentes-de-kubernetes/</link><pubDate>Tue, 19 Dec 2017 11:10:29 +0000</pubDate><atom:modified>Tue, 19 Dec 2017 11:10:29 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2017-12-19-kubernetes-1-componentes-de-kubernetes/</guid><description>&lt;p>Bueno, con este post empiezo una serie de posts sobre &lt;a href="https://kubernetes.io/">Kubernetes&lt;/a>. Tengo varios posts en borrador, pero creo que antes de publicarlos puede estar bien una pequeña introducción a Kubernetes: qué es. Y de esto va este post.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>docker</category><category>kubernetes</category></item><item><title>Hoy he echado en falta poder definir macros en C#</title><link>https://www.eiximenis.dev/posts/2017-12-14-hoy-he-echado-en-falta-poder-definir-macros-en-c/</link><pubDate>Thu, 14 Dec 2017 17:43:12 +0000</pubDate><atom:modified>Thu, 14 Dec 2017 17:43:12 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2017-12-14-hoy-he-echado-en-falta-poder-definir-macros-en-c/</guid><description>&lt;p>Pues sí&amp;hellip; y no me avergüenzo de decirlo, si hoy C# tuviese algo como el preprocesador de C/C++ me hubiese hecho feliz.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>C#</category></item><item><title>Docker multi-stage builds… o como compilar (casi) cualquier cosa sin tener que instalar nada.</title><link>https://www.eiximenis.dev/posts/2017-11-28-docker-multi-stage-builds-o-como-compilar-casi-cualquier-cosa-sin-tener-que-instalar-nada/</link><pubDate>Tue, 28 Nov 2017 12:58:09 +0000</pubDate><atom:modified>Tue, 28 Nov 2017 12:58:09 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2017-11-28-docker-multi-stage-builds-o-como-compilar-casi-cualquier-cosa-sin-tener-que-instalar-nada/</guid><description>&lt;p>Poco a poco los contenedores, y Docker en especial, se han ido abriendo paso en nuestro &lt;em>workflow&lt;/em> diario. Y si al principio era tan solo un mecanismo para encapsular aplicaciones, luego también vimos en ellos una magnífica opción para evitar tener que instalar mil dependencias en las máquinas de desarrollo y finalmente para compilar cualquier proyecto&amp;hellip; sin tener que instalar ningún SDK en local.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>docker</category><category>Sin categoría</category></item><item><title>Configurar SSL en un cluster de k8s</title><link>https://www.eiximenis.dev/posts/2017-10-16-configurar-ssl-en-un-cluster-de-k8s/</link><pubDate>Mon, 16 Oct 2017 14:38:27 +0000</pubDate><atom:modified>Mon, 16 Oct 2017 14:38:27 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2017-10-16-configurar-ssl-en-un-cluster-de-k8s/</guid><description>&lt;p>¡Buenas! En esta entrada voy a resumir los pasos seguidos para añadir soporte SSL a un cluster Kubernetes. En mi caso lo tengo desplgado en ACS pero eso es irrelevante.&lt;/p>
&lt;p>Lo único que si usas ACS y quieres usar una IP determinada, recuerda que la IP pública que vayas a usar debe estar creada anteriormente. Si no, por más que la especifiques dentro de la configuración del servicio (usando &lt;em>loadBalancerIP&lt;/em>), Kubernetes no va a poder levantar el servicio.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>acs</category><category>k8s</category><category>nginx</category><category>ssl</category><category>Sin categoría</category></item><item><title>Swashbuckle con ASP.NET Core y AAD B2C</title><link>https://www.eiximenis.dev/posts/2017-10-06-swashbuckle-con-asp-net-core-y-aad-b2c/</link><pubDate>Fri, 06 Oct 2017 09:11:43 +0000</pubDate><atom:modified>Fri, 06 Oct 2017 09:11:43 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2017-10-06-swashbuckle-con-asp-net-core-y-aad-b2c/</guid><description>&lt;p>&lt;a href="https://github.com/domaindrivendev/Swashbuckle">Swashbuckle&lt;/a> es una gran herramienta para crear documentaciones de tus APIs desarrolladas con ASP.NET Core. Por debajo usa Swagger y &lt;a href="https://swagger.io/swagger-ui/">Swagger UI&lt;/a> pero nos abstrae de instalar y configurar esos dos productos. Tan solo tenemos que instalar el paquete NuGet &lt;a href="https://www.nuget.org/packages/Swashbuckle.AspNetCore/">Swashbuckle.AspNetCore&lt;/a> y ya tenemos todo lo que necesitamos.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>asp.net core</category><category>oauth</category></item><item><title>Las herramientas de Docker de VS2017</title><link>https://www.eiximenis.dev/posts/2017-07-27-las-herramientas-de-docker-de-vs2017/</link><pubDate>Thu, 27 Jul 2017 15:50:25 +0000</pubDate><atom:modified>Thu, 27 Jul 2017 15:50:25 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2017-07-27-las-herramientas-de-docker-de-vs2017/</guid><description>&lt;p>Una de las novedades de VS2017 es el soporte integrado para Docker: podemos desplegar fácilmente nuestras soluciones en contenedores locales y depurar nuestro código Docker que se ejecuta en un contenedor. &lt;strong>Pero… ¿cómo funciona exactamente?&lt;/strong>&lt;/p>
&lt;p>**&lt;/p>
&lt;p>**&lt;/p></description><dc:creator>eiximenis</dc:creator><category>docker</category><category>visual studio</category></item><item><title>Sobre NuGet y versiones…</title><link>https://www.eiximenis.dev/posts/2017-06-28-sobre-nuget-y-versiones/</link><pubDate>Wed, 28 Jun 2017 11:51:21 +0000</pubDate><atom:modified>Wed, 28 Jun 2017 11:51:21 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2017-06-28-sobre-nuget-y-versiones/</guid><description>&lt;p>Que NuGet ha supuesto una revolución en .NET es más que evidente. Lejos han quedado aquellos tiempos en que gestionábamos las dependencias como podíamos. Poco a poco el modelo de desarrollo está migrando de estar basado en “dependencias a ensamblados” a “dependencias a paquetes”, y a medida que netcore vaya teniendo una mayor relevancia esto irá a más.&lt;/p>
&lt;p>Pero esta gestión semi-automatizada de las dependencias también trae sus propios quebraderos de cabeza…&lt;/p>
&lt;p>En nodejs es muy común hablar del “&lt;em>npm hell&lt;/em>” o el infierno que puede suponer la gestión de paquetes usando npm. Que al cabo de un tiempo alguien se baje el código de tu repositorio y que no le funcione o bien que actualices un paquete y se terminen rompiendo 400 más, es algo muy (demasiado) habitual. ¿Tenemos en .NET un &lt;em>nuget hell&lt;/em>?&lt;/p></description><dc:creator>eiximenis</dc:creator><category>.net</category></item><item><title>ASP.NET Core 2–Razor Pages</title><link>https://www.eiximenis.dev/posts/2017-05-25-asp-net-core-2-razor-pages/</link><pubDate>Thu, 25 May 2017 10:14:41 +0000</pubDate><atom:modified>Thu, 25 May 2017 10:14:41 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2017-05-25-asp-net-core-2-razor-pages/</guid><description>&lt;p>&lt;strong>Nota: Este post es sobre ASP.NET Core 2 Preview 1. Algunas cosas pueden cambiar en la versión final.&lt;/strong>&lt;/p>
&lt;p>¿Quien se acuerda de las ASP.NET Web Pages? Salieron tampoco hace tanto, más o menos junto con MVC3 y les acompañaba un producto propio (WebMatrix). Su objetivo era proporcionar un modelo de desarrollo basado en páginas (a lo Webforms) en contraposición del modelo basado en controladores de MVC.&lt;/p>
&lt;p>He de reconocer que nunca les presté mucha atención y tengo la impresión que el resto del mundo tampoco. Su objetivo creo que era ofrecer una puerta de entrada rápida a ASP.NET ofreciendo un modelo sencillo de páginas. Su principal problema es que era difícil integrarlo en un proyecto “más grande” que estuviese hecho en ASP.NET MVC y así tener partes usando “Web Pages” y otras en MVC. Y, honestamente, montar un proyecto complejo en un modelo basado en páginas, no termino de verlo.&lt;/p>
&lt;p>Personalmente las olvidé hace tiempo y por eso el anuncio de “Razor Pages” en ASP.NET Core 2 me sorprendió bastante. Pero la realidad es que Razor Pages es otra cosa bastante más interesante que las antiguas “Web Pages”…&lt;/p></description><dc:creator>eiximenis</dc:creator><category>asp.net 5</category><category>asp.net core</category></item><item><title>APIs REST: Sobre códigos de retorno</title><link>https://www.eiximenis.dev/posts/2017-05-23-apis-rest-sobre-cdigos-de-retorno/</link><pubDate>Tue, 23 May 2017 08:10:31 +0000</pubDate><atom:modified>Tue, 23 May 2017 08:10:31 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2017-05-23-apis-rest-sobre-cdigos-de-retorno/</guid><description>&lt;p>Un &lt;a href="https://twitter.com/J0rgeSerran0">buen amigo&lt;/a> escribía &lt;a href="https://twitter.com/J0rgeSerran0/status/866666093347209217">lo siguiente&lt;/a> el otro día en twitter:&lt;/p>
&lt;p>_Me ha estallado un ojo hoy&lt;/p>
&lt;ol>
&lt;li>Llamo a un Endpoint de una API&lt;/li>
&lt;li>No me devuelve datos porque no encuentra lo que pido&lt;/li>
&lt;li>Me devuelve un 404_&lt;/li>
&lt;/ol>
&lt;p>Él estaba en contra del uso de 404 para indicar que no se encuentra un determinado recurso. A partir de aquí se sucedieron varios tweets y eso me ha motivado a escribir este post sobre &lt;strong>códigos de retorno en una API REST&lt;/strong>, con &lt;strong>MIS&lt;/strong> opiniones al respecto, por supuesto! Y como digo siempre, todo debate será bienvenido!&lt;/p></description><dc:creator>eiximenis</dc:creator><category>webapi</category></item><item><title>La “solución” en Visual Studio: de solución nada, solo problemas</title><link>https://www.eiximenis.dev/posts/2017-05-15-la-solucin-en-visual-studio-de-solucin-nada-solo-problemas/</link><pubDate>Mon, 15 May 2017 07:22:22 +0000</pubDate><atom:modified>Mon, 15 May 2017 07:22:22 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2017-05-15-la-solucin-en-visual-studio-de-solucin-nada-solo-problemas/</guid><description>&lt;p>Desde sus inicios Visual Studio contiene el concepto de solución como grupo de proyectos. Es más, no puedes abrir un solo proyecto siempre debes abrir una solución (si abres un proyecto VS crea una solución que contiene el proyecto de forma automática).&lt;/p>
&lt;p>Como idea, hace años no estaba mal. Y que quede claro: en según que contextos puede seguir siendo válida. Pero en muchos otros, solo aporta problemas: el desarrollo de software ha cambiado mucho, las formas en como usamos los IDEs no son iguales, pero VS sigue anclado a este obsoleto sistema de gestionar proyectos.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>opinion</category></item><item><title>ASP.NET Core – IStartupFilter</title><link>https://www.eiximenis.dev/posts/2017-05-09-asp-net-core-istartupfilter/</link><pubDate>Tue, 09 May 2017 14:55:27 +0000</pubDate><atom:modified>Tue, 09 May 2017 14:55:27 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2017-05-09-asp-net-core-istartupfilter/</guid><description>&lt;p>Buenas! Vamos a explorar en este post la interfaz &lt;strong>IStartupFilter&lt;/strong>, por lo general un desconocido de ASP.NET Core, pero bueno… que está por ahí y no está de más conocerlo un poco. ¡Vamos allá!&lt;/p></description><dc:creator>eiximenis</dc:creator><category>asp.net 5</category><category>asp.net vNext</category><category>netcore</category></item><item><title>Algunas pinceladas sobre como arquitecturar tu WEB/API</title><link>https://www.eiximenis.dev/posts/2017-04-07-algunas-pinceladas-sobre-como-arquitecturar-tu-webapi/</link><pubDate>Fri, 07 Apr 2017 17:36:32 +0000</pubDate><atom:modified>Fri, 07 Apr 2017 17:36:32 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2017-04-07-algunas-pinceladas-sobre-como-arquitecturar-tu-webapi/</guid><description>&lt;p>El otro día &lt;a href="https://twitter.com/antiocol">Antíoco Llanos&lt;/a> lanzaba el &lt;a href="https://twitter.com/antiocol/status/849868562076491776">siguiente tweet&lt;/a>:&lt;/p>
&lt;p>(&lt;em>Siempre las mismas dudas. Que dependa mi capa de negocio de EF para usar sus IDbSet o no&amp;hellip; ¿abstraer la abstracción?&lt;/em>)&lt;/p>
&lt;p>Contesté yo con algunas sugerencias y eso derivó en otra conversación paralela, así que me parece una buena idea poner &lt;strong>algunas pinceladas&lt;/strong> sobre como podemos abordar ese aspecto. Por supuesto y como digo siempe: &lt;strong>no hay balas de plata&lt;/strong> y &lt;strong>no existe la arquitectura para todo&lt;/strong>. Cada proyecto debe analizarse para valorar la arquitectura a abordar, o arquitecturas porque se pueden usar distintas en un mismo proyecto. Así, este post no tiene más pretensión que contarte algunas ideas, pero las conclusiones que saques de ellas son cosa tuya 😉&lt;/p></description><dc:creator>eiximenis</dc:creator><category>asp.net vNext</category><category>netcore</category><category>patrones</category></item><item><title>ASP.NET–Comprueba la disponibilidad de tus servicios</title><link>https://www.eiximenis.dev/posts/2017-03-23-asp-net-comprueba-la-disponibilidad-de-tus-servicios/</link><pubDate>Thu, 23 Mar 2017 15:51:42 +0000</pubDate><atom:modified>Thu, 23 Mar 2017 15:51:42 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2017-03-23-asp-net-comprueba-la-disponibilidad-de-tus-servicios/</guid><description>&lt;p>Si desarrollas una aplicación en ASP.NET y/o ASP.NET Core, te puede interesar una nueva librería que ha sacado el equipo de .NET: &lt;a href="https://github.com/aspnet/HealthChecks">HealthChecks&lt;/a>. Esa librería (muy sencilla) contiene lo que necesitas para poder validar que un determinado recurso externo (SQL Server, API remota, etc) está funcionando y también para que decidas lo que significa que un recurso “está funcionando”.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>netcore</category></item><item><title>Charlas del 2017</title><link>https://www.eiximenis.dev/talks/2017/</link><pubDate>Sun, 01 Jan 2017 00:00:00 +0000</pubDate><atom:modified>Sun, 01 Jan 2017 00:00:00 +0000</atom:modified><guid>https://www.eiximenis.dev/talks/2017/</guid><description>El 2017 fue un año marcado principalmente por dar varias charlas sobre Docker y su primo Zumosol: Kubernetes.
Evento .NET Core (ASP.NET MVC6) Tras unos cuantos años cocinándose &amp;ldquo;a fuego lento&amp;rdquo; a principios del 2017, .NET Core ya parecía algo estable y en Plain Concepts organizamos un evento para hablar (un poco más) de él. En mi caso participé con una charla sobre ASP.NET MVC Core, que era una actualización de la charla que di el año anterior (cuando todavía se llamaba MVC6).</description><dc:creator>eiximenis</dc:creator></item><item><title>C# 7–Default method implementation?</title><link>https://www.eiximenis.dev/posts/2016-12-21-c-7-default-method-implementation/</link><pubDate>Wed, 21 Dec 2016 11:28:52 +0000</pubDate><atom:modified>Wed, 21 Dec 2016 11:28:52 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2016-12-21-c-7-default-method-implementation/</guid><description>&lt;p>El otro día estuve hablando con &lt;a href="https://twitter.com/jjane90" target="_blank" rel="noopener noreferrer">Joan Jané&lt;/a>, sobre la funcionalidad que se &lt;a href="https://github.com/dotnet/roslyn/issues/258" target="_blank" rel="noopener noreferrer">está valorando&lt;/a> para C#7 o (probablemente, dado su estado) más adelante. A falta de un nombre mejor llamaré a esa funcionalidad “Default method implementation” porque así se conoce en Java, donde esa funcionalidad ya existe.&lt;/p>
&lt;p>Joan y yo teníamos puntos de vista totalmente opuestos a dicha característica, mientras que para mi era un añadido &lt;strong>muy interesante&lt;/strong> al lenguaje, Joan se alineaba más con las tesis que Fernando Escolar &lt;a href="http://fernandoescolar.github.io/2016/11/16/csharp-7/" target="_blank" rel="noopener noreferrer">expone en un post en su blog&lt;/a>. &lt;strong>Para &lt;a href="https://twitter.com/fernandoescolar" target="_blank" rel="noopener noreferrer">Fer&lt;/a>, esa feature es la peor idea que ha tenido Java en los últimos años&lt;/strong>. A mi me da la sensación que &lt;strong>verlo así es no entender exactamente que añade esa característica&lt;/strong> y analizarla desde una posición demasiado rígida. Joan argumentaba problemas relacionados con SOLID, generalmente con el SRP y con la segregación de interfaces. En este post voy a comentar lo que, desde mi punto de vista, permitiría esa característica de estar disponible. Y por qué, no solo no es una mala idea, si no, a priori, todo lo contrario (tanto en Java como en C# por más que se empecine Fer en decir lo contrario).&lt;/p></description><dc:creator>eiximenis</dc:creator><category>C#</category><category>opinion</category></item><item><title>Docker para el desarrollador de asp.net (iii)</title><link>https://www.eiximenis.dev/posts/2016-11-24-docker-para-el-desarrollador-de-asp-net-iii/</link><pubDate>Thu, 24 Nov 2016 09:27:48 +0000</pubDate><atom:modified>Thu, 24 Nov 2016 09:27:48 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2016-11-24-docker-para-el-desarrollador-de-asp-net-iii/</guid><description>&lt;p>En el &lt;a href="http://geeks.ms/etomas/2016/11/22/docker-para-el-desarrollador-asp-net-ii/" target="_blank" rel="noopener noreferrer">post anterior&lt;/a> vimos como empaquetar y desplegar en Docker una sencilla aplicación (un &lt;em>hello world&lt;/em>) en asp.net core. En este post vamos a ver como desplegar en Docker una aplicación asp.net core (con sus controladores y vistas) y también ver como lo podemos usar usando una imagen base que no tenga el SDK, solo el runtime.&lt;/p>
&lt;p>¡Vamos allá!&lt;/p></description><dc:creator>eiximenis</dc:creator><category>asp.net 5</category><category>asp.net vNext</category><category>docker</category></item><item><title>Docker para el desarrollador asp.net (ii)</title><link>https://www.eiximenis.dev/posts/2016-11-22-docker-para-el-desarrollador-asp-net-ii/</link><pubDate>Tue, 22 Nov 2016 12:30:46 +0000</pubDate><atom:modified>Tue, 22 Nov 2016 12:30:46 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2016-11-22-docker-para-el-desarrollador-asp-net-ii/</guid><description>&lt;p>Seguimos con esta sobre el uso de Docker desde el punto de vista de un desarrollador asp.net (core). En este caso &lt;strong>vamos a construir nuestra primera imagen Docker&lt;/strong>.&lt;/p>
&lt;p>&lt;strong>Nota:&lt;/strong> Visual Studio 2017 incorpora de serie las &lt;em>Docker Tools&lt;/em> que automatizan todo lo que veremos en estos artículos. Tiempo tendremos, más adelante en esta serie, de hablar de las &lt;em>Docker Tools&lt;/em>. La razón de hacerlo primero todo “manual” es porque el objetivo de esta serie es ayudarte a que entiendas Docker, no presentarte el “botón mágico” que se encarga de todo. Yo, es que soy de la vieja escuela: me gusta entender las cosas (al menos hasta donde puedo).&lt;/p></description><dc:creator>eiximenis</dc:creator><category>asp.net 5</category><category>asp.net vNext</category><category>docker</category></item><item><title>Docker para el desarrollador asp.net (i)</title><link>https://www.eiximenis.dev/posts/2016-11-21-docker-para-el-desarrollador-asp-net-i/</link><pubDate>Mon, 21 Nov 2016 10:52:01 +0000</pubDate><atom:modified>Mon, 21 Nov 2016 10:52:01 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2016-11-21-docker-para-el-desarrollador-asp-net-i/</guid><description>&lt;p>Buenas! Vamos a &lt;strong>empezar una serie de posts&lt;/strong> dedicadas a &lt;em>Docker&lt;/em> desde el punto de vista de un desarrollador asp.net. &lt;strong>Empezaremos por lo más básico pero nos iremos adentrando un poco en el mundo de Docker&lt;/strong>. El objetivo es que terminemos teniendo unos conocimientos &lt;em>medios&lt;/em> que nos permitan entender que es Docker, como funciona, qué ventajas tiene y como usarlo (y cuando) en arquitecturas más complejas donde haya más de un contenedor. Pero… &lt;strong>empecemos por el principio&lt;/strong>.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>asp.net 5</category><category>asp.net vNext</category><category>docker</category></item><item><title>MVC6–Recibir un GUID en el cuerpo de la petición</title><link>https://www.eiximenis.dev/posts/2016-09-30-mvc6recibir-un-guid-en-el-cuerpo-de-la-peticin/</link><pubDate>Fri, 30 Sep 2016 10:08:23 +0000</pubDate><atom:modified>Fri, 30 Sep 2016 10:08:23 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2016-09-30-mvc6recibir-un-guid-en-el-cuerpo-de-la-peticin/</guid><description>&lt;p>Hoy me he encontrado un &lt;strong>controlador MVC6&lt;/strong> con la siguiente acción:&lt;/p>
&lt;pre style="max-width: 700px; font-family: consolas; background: #1e1e1e; white-space: nowrap; overflow-x: scroll; color: gainsboro">[&lt;span style="color: #4ec9b0">HttpPut&lt;/span>]&lt;br />[&lt;span style="color: #4ec9b0">Route&lt;/span>(&lt;span style="color: #d69d85">"{userid:int}/faceprofile"&lt;/span>)]&lt;br />&lt;span style="color: #569cd6">public&lt;/span>&amp;nbsp;&lt;span style="color: #569cd6">async&lt;/span>&amp;nbsp;&lt;span style="color: #4ec9b0">Task&lt;/span>&amp;lt;&lt;span style="color: #b8d7a3">IActionResult&lt;/span>&amp;gt; SetFaceProfileId(&lt;span style="color: #569cd6">int&lt;/span> userid, [&lt;span style="color: #4ec9b0">FromBody&lt;/span>] &lt;span style="color: #4ec9b0">Guid&lt;/span> id)&lt;/pre>
&lt;p>Claramente su autor esperaba que pudieramos poner un Guid en el cuerpo de la petición y eso funcionaría… Pero, ¿como debe mandarse?&lt;/p></description><dc:creator>eiximenis</dc:creator><category>asp.net 5</category><category>asp.net vNext</category></item><item><title>Azure Functions – Serverless Backends</title><link>https://www.eiximenis.dev/posts/2016-09-27-functions-serverless-backends/</link><pubDate>Tue, 27 Sep 2016 06:23:44 +0000</pubDate><atom:modified>Tue, 27 Sep 2016 06:23:44 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2016-09-27-functions-serverless-backends/</guid><description>Últimamente se oye bastante hablar de serverless backend. Esta expresión puede sugerir implementaciones de servidor sin… servidor. Pero no, la realidad es que dicha expresión define una arquitectura en la cual no nos preocupamos para nada del servidor. Existir, existe, pero es totalmente transparente (o casi) para nosotros.
Es una astracción superior a la que ofrece un sistema PaaS. Tomemos un ejemplo de PaaS en Azure, como las web apps. Efectivamente, con una web app tenemos un nivel de abstracción relativamente alto: nos olvidamos de instalar un servidor en una máquina virtual y nos olvidamos de muchas tareas de administración.</description><dc:creator>eiximenis</dc:creator><category>azure</category></item><item><title>ASP.NET MVC 5–Binding de parámetros dinámicos</title><link>https://www.eiximenis.dev/posts/2016-07-29-asp-net-mvc-5binding-de-parmetros-dinmicos/</link><pubDate>Fri, 29 Jul 2016 08:21:05 +0000</pubDate><atom:modified>Fri, 29 Jul 2016 08:21:05 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2016-07-29-asp-net-mvc-5binding-de-parmetros-dinmicos/</guid><description>&lt;p>Estando trabajando en un proyecto con ASP.NET MVC 5 surgió la “necesidad” (impulsada por la pereza) de tener un controlador MVC (ojo, no WebApi) que recibiese datos en JSON via POST y que devolviese una vista parcial. Hasta ahí nada raro (eso se soporta de serie desde MVC3), donde la pereza intervino es que queríamos que el parámetro del controlador fuese dynamic en lugar de un tipo en concreto. Y eso, en MVC5 no está soportado. Veamos por qué y como podemos solucionarlo 😉&lt;/p></description><dc:creator>eiximenis</dc:creator><category>asp.net MVC</category></item><item><title>Algunas consideraciones sobre las structs</title><link>https://www.eiximenis.dev/posts/2016-07-27-algunas-consideraciones-sobre-las-structs/</link><pubDate>Wed, 27 Jul 2016 19:48:11 +0000</pubDate><atom:modified>Wed, 27 Jul 2016 19:48:11 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2016-07-27-algunas-consideraciones-sobre-las-structs/</guid><description>&lt;p>El otro día un tweet de &lt;a href="https://twitter.com/jc_quijano" target="_blank" rel="noopener noreferrer">Juan Quijano&lt;/a>, animó una pequeña discusión sobre la diferencia entre clases y estructuras en .NET. Este no es el primer post que escribo al respecto, pero bueno, aprovechando la coyuntura vamos a comentar algunas de las cosas que se mencionaron en el pequeño debate que generó &lt;a href="https://twitter.com/jc_quijano/status/757967853970722817" target="_blank" rel="noopener noreferrer">el tweet de Juan&lt;/a>.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>.net</category><category>C#</category></item><item><title>C#–Buenas prácticas en constructores</title><link>https://www.eiximenis.dev/posts/2016-07-21-cbuenas-prcticas-en-constructores/</link><pubDate>Thu, 21 Jul 2016 07:14:31 +0000</pubDate><atom:modified>Thu, 21 Jul 2016 07:14:31 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2016-07-21-cbuenas-prcticas-en-constructores/</guid><description>&lt;p>Escribir el constructor de una clase es algo que parece trivial… A fin de cuentas, el constructor se encarga de construir un objeto, ¿no? Pero la realidad es que escribir constructores no es tan sencillo como parece. ¿Qué significa “construir” un objeto? Por supuesto cada clase tendrá sus propias necesidades, pero hay una serie de guías y buenas prácticas que nos pueden ayudar a tomar ciertas decisiones. A esto va dedicado este post.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>C#</category></item><item><title>WebApi 2–Leer datos desde los headers</title><link>https://www.eiximenis.dev/posts/2016-07-07-webapi-2leer-datos-desde-los-headers/</link><pubDate>Thu, 07 Jul 2016 11:12:30 +0000</pubDate><atom:modified>Thu, 07 Jul 2016 11:12:30 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2016-07-07-webapi-2leer-datos-desde-los-headers/</guid><description>&lt;p>En un curso que he impartido sobre WebApi 2 me han comentado un escenario en el que mandaban un conjunto de datos en varias cabeceras HTTP propias y querían leer esos datos desde los controladores.&lt;/p>
&lt;p>La verdad es que hay varias maneras de hacer eso en WebApi 2 y vamos a analizar algunas de ellas en este post. Eso nos servirá como excusa para recorrer algunos de los mecanismos de extensibilidad del framework.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>webapi</category></item><item><title>Atributos con comportamiento: un mal diseño</title><link>https://www.eiximenis.dev/posts/2016-07-01-atributos-con-comportamiento-un-mal-diseo/</link><pubDate>Fri, 01 Jul 2016 10:17:29 +0000</pubDate><atom:modified>Fri, 01 Jul 2016 10:17:29 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2016-07-01-atributos-con-comportamiento-un-mal-diseo/</guid><description>Tarde o temprano, todo desarrollador ya se de ASP.NET MVC o WebApi necesita hacer sus propios filtros para validaciones propias de peticiones, logging, comprobación de precondiciones… En fin, lo habitual para lo que se usan los filtros, vamos.
Y tarde o temprano este desarrollador se da cuenta de que su filtro debería acceder a un determinado servicio de su aplicación: quizá necesita hacer una consulta a la bbdd, o a un determinado elemento de negocio, o acceder al sistema de logging o cualquier cosa más.</description><dc:creator>eiximenis</dc:creator><category>asp.net MVC</category><category>patrones</category></item><item><title>Algunas consideraciones sobre el hoisting</title><link>https://www.eiximenis.dev/posts/2016-06-28-hoisting/</link><pubDate>Tue, 28 Jun 2016 10:00:59 +0000</pubDate><atom:modified>Tue, 28 Jun 2016 10:00:59 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2016-06-28-hoisting/</guid><description>Mucho se ha escrito sobre el hoisting en JavaScript. Es uno de los conceptos que al principio confunden más. Yo mismo escribí hace ya algún tiempo un post sobre hoisting en el blog de recursos de CampusMvp. Este post pretende entrar en más detalles.
Doy por supuesto que ya sabes que es el hoisting en JavaScript, pero bueno no está de más comentar la definición que es más fácil que te encuentres: el hoisting es básicamente poder acceder a una variable antes de declararla, ya que realmente las declaraciones se mueven al principio del ámbito.</description><dc:creator>eiximenis</dc:creator><category>js</category></item><item><title>Listas "seguras" en JavaScript</title><link>https://www.eiximenis.dev/posts/2016-06-08-listas-seguras-js/</link><pubDate>Wed, 08 Jun 2016 10:00:59 +0000</pubDate><atom:modified>Wed, 08 Jun 2016 10:00:59 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2016-06-08-listas-seguras-js/</guid><description>Que las clases en ECMASCript 2015 son algo muy diferente a las clases en otros lenguajes como C# o Java, es algo que ya deberíamos tener muy claro. El propio lenguaje funciona de forma muy distinta (dinámico, basado en prototipos, no existen las clases en runtime,&amp;hellip;), pero podemos hacer cosas igualmente interesantes.
Una necesidad que podríamos tener es la de tener una clase que nos permita solo tener objetos de una determinada clase.</description><dc:creator>eiximenis</dc:creator><category>js</category></item><item><title>¿Qué es jspm?</title><link>https://www.eiximenis.dev/posts/2016-05-12-jspm-que-es/</link><pubDate>Thu, 12 May 2016 10:00:59 +0000</pubDate><atom:modified>Thu, 12 May 2016 10:00:59 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2016-05-12-jspm-que-es/</guid><description>Jspm es otro gestor de paquetes para JavaScript. Por lo tanto antes de nada es lícito preguntarnos&amp;hellip; ¿necesitábamos otro gestor de paquetes?
En JavaScript tenemos al menos dos de dominantes: Por un lado bower, que es (o fue) el gestor de librerías JavaScript de cliente. Es decir, te querías instalar jQuery o Angular? Pues lo instalabas desde Bower. Bower tenía en cuenta las dependencias (p. ej. que Backbone depende de Underscore) y las descargaba automáticamente.</description><dc:creator>eiximenis</dc:creator><category>js</category></item><item><title>netstandard–El “estándar” que viene</title><link>https://www.eiximenis.dev/posts/2016-04-25-netstandardel-estndar-que-viene/</link><pubDate>Mon, 25 Apr 2016 10:00:59 +0000</pubDate><atom:modified>Mon, 25 Apr 2016 10:00:59 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2016-04-25-netstandardel-estndar-que-viene/</guid><description>&lt;p>Cuando .NET salió, las cosas eran muy sencillas: había una sola versión de .NET, el .NET Framework, así que como mucho debíamos saber para que versión de .NET era una determinada librería. “Oh, la librería es solo para .NET 2.0 y yo uso .NET 1.1, que mala suerte”. Al margen de eso no había mucho más, todos teníamos claro que significaba .NET.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>.net</category></item><item><title>Creando formateadores de salida en asp.net core</title><link>https://www.eiximenis.dev/posts/2016-04-21-creando-formateadores-de-salida-en-asp-net-core/</link><pubDate>Thu, 21 Apr 2016 07:51:29 +0000</pubDate><atom:modified>Thu, 21 Apr 2016 07:51:29 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2016-04-21-creando-formateadores-de-salida-en-asp-net-core/</guid><description>&lt;p>Cuando salió WebApi lo hizo con la negociación de contenido incorporada de serie en el framework. Eso venía a significar, básicamente, que el framework intentaba suministrar los datos en el formato en que el cliente los había pedido. La negociación de contenido se basa (generalmente) en el uso de la cabecera &lt;em>accept&lt;/em> de HTTP: el cliente manda en esa cabecera cual, o cuales, son sus formatos de respuesta preferidos. WebApi soporta de serie devolver datos en JSON y XML y el sistema es extensible para crear nuestros propios formatos.&lt;/p>
&lt;p>“MVC clásico” (es decir hasta MVC5) no incluye soporte de negociación de contenido: en MVC si queremos devolver datos en formato JSON, debemos devolver explícitamente un JsonResult y si los queremos devolver en XML debemos hacerlo también explícitamente.&lt;/p>
&lt;p>En ASP.NET Core tenemos a MVC6 que unifica a WebApi y MVC clásico en un solo framework. ¿Como queda el soporte para negociación de contenido en MVC6? Pues bien, existe soporte para ella, pero dependiendo de que IActionResult devolvamos en nuestros controladores. Así, si en WebApi la negociación de contenido se usaba siempre y en MVC clásico nunca, &lt;strong>en MVC6 la negociación de contenido aplica solo si la acción del controlador devuelve un ObjectResult (o derivado)&lt;/strong>. Esto nos permite como desarrolladores decidir sobre qué acciones de qué controladores queremos aplicar la negociación de contenido. Es evidente que aplicarla siempre no tiene sentido: si devolvemos una vista Razor su resultado debe ser sí o sí un HTML que se envía al cliente. No tendría sentido aplicar negociación de contenido sobre una acción que devolviese una vista. De hecho la negociación de contenido tiene sentido en APIs que devuelvan datos (no vistas) y en MVC6 para devolver datos tenemos a ObjectResult, así que es lógico que sea sobre este resultado donde se aplique la negociación de contenido.&lt;/p>
&lt;p>En WebApi la negociación de contenido estaba gestionada por los formateadores (&lt;em>formatters&lt;/em>). Básicamente a cada &lt;em>content-type&lt;/em> se le asociaba un formateador. Si el cliente pedía datos en un determinado content-type se miraba que formateador podía devolver datos en dicho formato. Si no existía se usaba por defecto el formateador de JSON. En MVC6 se ha mantenido básicamente dicho esquema.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>asp.net 5</category><category>asp.net MVC</category></item><item><title>Middlewares de autenticación en asp.net core</title><link>https://www.eiximenis.dev/posts/2016-04-19-middlewares-de-autenticacin-en-asp-net-core/</link><pubDate>Tue, 19 Apr 2016 10:25:32 +0000</pubDate><atom:modified>Tue, 19 Apr 2016 10:25:32 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2016-04-19-middlewares-de-autenticacin-en-asp-net-core/</guid><description>&lt;p>La autenticación y autorización de peticiones es una de las funcionalidades que más quebraderos da en el desarrollo de aplicaciones en ASP.NET. Además es que ha ido cambiando con el tiempo… En un escenario de internet, en ASP.NET clásico, ya fuese Webforms o MVC usábamos FormsAuthentication. Por otra parte cuando apareció WebApi, incorporó sus propios mecanismos de autenticación y autorización, generalmente basados en la implementación de MessageHandlers.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>asp.net 5</category><category>asp.net vNext</category></item><item><title>Autenticación por AAD en ASP.NET Core</title><link>https://www.eiximenis.dev/posts/2016-04-07-autenticacin-por-aad-en-asp-net-core/</link><pubDate>Thu, 07 Apr 2016 16:33:41 +0000</pubDate><atom:modified>Thu, 07 Apr 2016 16:33:41 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2016-04-07-autenticacin-por-aad-en-asp-net-core/</guid><description>&lt;p>Este es un &lt;strong>post introductorio, de una serie de posts&lt;/strong>, donde veremos como podemos integrar ASP.NET Core y &lt;em>Azure Active Directory&lt;/em> (AAD). En este primer escenario el objetivo es tener una aplicación web, donde se requiera hacer login contra AAD para autenticarse.&lt;/p>
&lt;p>&lt;strong>Nota:&lt;/strong> El post está basado en la RC1 de ASP.NET Core… Lo digo porque bueno, a saber que &lt;span style="text-decoration: line-through;">romperán&lt;/span> mejorarán en futuras versiones, pues igual algo cambia 🙂&lt;/p></description><dc:creator>eiximenis</dc:creator><category>asp.net 5</category><category>asp.net vNext</category></item><item><title>Clases como ciudadanos de primer orden en JS</title><link>https://www.eiximenis.dev/posts/2016-03-22-js-clases-primer-orden/</link><pubDate>Tue, 22 Mar 2016 10:00:59 +0000</pubDate><atom:modified>Tue, 22 Mar 2016 10:00:59 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2016-03-22-js-clases-primer-orden/</guid><description>Una de las novedades de ES2015 es el concepto de clases. Las clases en JavaScript nada tienen que ver con el concepto de &amp;ldquo;clase&amp;rdquo; de otros lenguajes como C++, Java o C#. En JavaScript las clases son una sintaxis alternativa para definir funciones constructoras. Pero, lo que seguimos teniendo por debajo es la herencia entre objetos, basada en prototipos.
Un punto importante, y que se suele pasar por alto, es que dado que una clase al final termina definiendo una función, y las funciones son ciudadanos de primer orden, también deben serlo las clases.</description><dc:creator>eiximenis</dc:creator><category>js</category></item><item><title>WebApi–¿objeto o HttpResonseMessage?</title><link>https://www.eiximenis.dev/posts/2016-03-17-webapiobjeto-o-httpresonsemessage/</link><pubDate>Thu, 17 Mar 2016 12:32:13 +0000</pubDate><atom:modified>Thu, 17 Mar 2016 12:32:13 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2016-03-17-webapiobjeto-o-httpresonsemessage/</guid><description>&lt;p>El otro día hablando con Carlos (aka &lt;a href="https://twitter.com/3lcarry" target="_blank" rel="noopener noreferrer">@3lcarry&lt;/a>) surgió el tema de &lt;strong>como devolver datos en una WebApi&lt;/strong>. En WebApi tenemos hasta tres maneras generales de devolver unos datos desde una acción de un controlador. Devolver un objeto, devolver un HttpResponseMessage o devolver un IHttpActionResult. (Una discusión equivalente aparece en MVC6 donde tenemos dos alternativas, devolver un objeto o bien un IActionResult.) ¿Cuál es la mejor?&lt;/p></description><dc:creator>eiximenis</dc:creator><category>webapi</category></item><item><title>Creating middlewares de asp.net core</title><link>https://www.eiximenis.dev/posts/2016-02-29-creating-middlewares-de-asp-net-core/</link><pubDate>Mon, 29 Feb 2016 17:08:12 +0000</pubDate><atom:modified>Mon, 29 Feb 2016 17:08:12 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2016-02-29-creating-middlewares-de-asp-net-core/</guid><description>&lt;p>Asp.net core se basa en el concepto de &lt;strong>middleware&lt;/strong>. En este modelo la petición web viaja a través de un conjunto de componentes. Cada componente recibe la petición y puede:&lt;/p>
&lt;ol>
&lt;li>Modificar la petición &lt;strong>y enviarla al siguiente componente&lt;/strong>&lt;/li>
&lt;li>O bien, generar una respuesta &lt;strong>y enviarla de vuelta al componente anterior&lt;/strong>.&lt;/li>
&lt;/ol></description><dc:creator>eiximenis</dc:creator><category>asp.net 5</category><category>asp.net vNext</category></item><item><title>Routers en asp.net core</title><link>https://www.eiximenis.dev/posts/2016-02-26-routers-en-asp-net-core/</link><pubDate>Fri, 26 Feb 2016 11:47:29 +0000</pubDate><atom:modified>Fri, 26 Feb 2016 11:47:29 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2016-02-26-routers-en-asp-net-core/</guid><description>&lt;p>Cuando hablamos del &lt;em>routing&lt;/em> solemos referirnos al proceso por el cual una petición es enrutada hacia una acción concreta de un controlador. Esa definición es cierta en el contexto de una aplicación ASP.NET MVC (y/o WebApi) pero en ASP.NET Core, el concepto de routing es una parte integral del framework.&lt;/p>
&lt;p>Por ello, en ASP.NET Core entendemos el routing como el proceso mediante el cual una petición web es enrutada hacia donde tenga que ser tratada. El destino puede ser una acción de un controlador, pero no tiene por qué (el middleware de MVC6 podría no estar instalado en el pipeline de la aplicación). En este post vamos a ver como funciona este proceso de enrutado.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>asp.net 5</category><category>asp.net vNext</category></item><item><title>Mixins y Traits</title><link>https://www.eiximenis.dev/posts/2016-01-27-mixins/</link><pubDate>Wed, 27 Jan 2016 10:00:59 +0000</pubDate><atom:modified>Wed, 27 Jan 2016 10:00:59 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2016-01-27-mixins/</guid><description>En este post vamos a ver qué son y en qué consisten los mixins y los traits, dos conceptos muy parecidos entre ellos y que algunas veces se confunden.
Primero comentar que no todos los lenguajes los soportan. P. ej. Java (a partir de la versión 8) permite implementarlos en parte, lo mismo que C# usando métodos de extensión. Otros lenguajes como JavaScript, Swift, C++ o Ruby (entre muchos otros) permiten una implementación más completa, ya sea de forma más o menos directa.</description><dc:creator>eiximenis</dc:creator><category>js</category></item><item><title>Charlas del 2016</title><link>https://www.eiximenis.dev/talks/2016/</link><pubDate>Fri, 01 Jan 2016 00:00:00 +0000</pubDate><atom:modified>Fri, 01 Jan 2016 00:00:00 +0000</atom:modified><guid>https://www.eiximenis.dev/talks/2016/</guid><description>2016 lo marca como el hecho de que di mis primeras charlas en inglés, tanto en Amsterdam como en Roma&amp;hellip; Nunca había ensayado tanto una charla la verdad :)
DotNet Spain 2016 (ASP.NET Core 1.0 Deep Dive) Tras el apabullante éxito de la edición del 2015, Microsoft se lanzó otra vez a la organización de un gran evento sobre .NET. En la edición de 2016, hablé (otra vez) sobre ASP.NET Core, pero esta vez dando una charla que fuese más allá de la introducción.</description><dc:creator>eiximenis</dc:creator></item><item><title>Como depurar fácilmente el código de ASP.NET5</title><link>https://www.eiximenis.dev/posts/2015-11-11-como-depurar-fcilmente-el-cdigo-de-asp-net5/</link><pubDate>Wed, 11 Nov 2015 10:09:55 +0000</pubDate><atom:modified>Wed, 11 Nov 2015 10:09:55 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2015-11-11-como-depurar-fcilmente-el-cdigo-de-asp-net5/</guid><description>¡Muy buenas! Para los que andamos trasteando con versiones alfas y betas con nula o poca documentación, poder depurar el código fuente de las librerías es una manera muy buena de ver qué hace y como lo hace. Cierto, solo leyendo el código fuente se puede aprender mucho, pero poder depurarlo paso a paso es todavía más útil.
El primer paso es, por supuesto, disponer del código fuente. En según que librerías eso no es posible, aunque siempre se podía tirar de los desensambladores (por más que eso pueda no ser legal).</description><dc:creator>eiximenis</dc:creator><category>asp.net 5</category></item><item><title>Variables privadas en clases ES2015</title><link>https://www.eiximenis.dev/posts/2015-11-02-variables-privadas-en-clases-es2015/</link><pubDate>Mon, 02 Nov 2015 18:11:02 +0000</pubDate><atom:modified>Mon, 02 Nov 2015 18:11:02 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2015-11-02-variables-privadas-en-clases-es2015/</guid><description>Una de las novedades de ES6 es la posibilidad de usar clases. Si bien esas clases son realmente sugar syntax sobre el patrón de función constructora, tienen alguna característica que simplifica el uso de dicho patrón y ofrecen una sintaxis que según como se mire puede ser más cómoda. Pero el estándard de ES2015 no tiene ningún mecanismo para indicar que una variable de una clase sea pública o privada. La visibilidad de variables en JavaScript es un clásico, sobre el que ya he escrito algún post.</description><dc:creator>eiximenis</dc:creator><category>javascript</category></item><item><title>[Evento]–Hel10 Windows</title><link>https://www.eiximenis.dev/posts/2015-10-23-evento-hel10-windows/</link><pubDate>Fri, 23 Oct 2015 10:20:55 +0000</pubDate><atom:modified>Fri, 23 Oct 2015 10:20:55 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2015-10-23-evento-hel10-windows/</guid><description>Buenas! Ayer (22 octubre 2015) se celebró el “Hel10 Windows” un evento organizado por Microsoft en Madrid para hablar de las muchas novedades que incorpora Windows 10 y todo el ecosistema nuevo de la plataforma universal.
Antes que nada mi opinión general del evento: Estuvo basante bien. Una keynote un poco sosilla para mi gusto, a pesar de que algunas de las novedades presentadas eran bastante interesantes. Pero, por un lado vivimos en la época de la información globalizada y quien más quien menos ya había oído hablar de continuum y el resto de novedades, y por otro no tenemos el sentido del espectáculo de los americanos (por suerte o por desgracia según cada cual).</description><dc:creator>eiximenis</dc:creator><category>eventos</category></item><item><title>¿Qué hace ‘new’ en JavaScript?</title><link>https://www.eiximenis.dev/posts/2015-10-15-qu-hace-new-en-javascript/</link><pubDate>Thu, 15 Oct 2015 13:09:01 +0000</pubDate><atom:modified>Thu, 15 Oct 2015 13:09:01 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2015-10-15-qu-hace-new-en-javascript/</guid><description>Si preguntas a mucha gente cual es el objetivo de new en JavaScript te dirán que el de crear objetos. Y estarán en lo cierto, aunque esa definición no es del todo precisa. Y es que mucha gente no entiende exactamente que hace new así que vamos a dedicarle este post.
Creación de objetos sin new
La verdad es que new no es necesario en JavaScript. Se pueden crear objetos perfectamente sin necesidad de usar new:</description><dc:creator>eiximenis</dc:creator><category>javascript</category></item><item><title>Algunas consideraciones de seguridad sobre OAuth</title><link>https://www.eiximenis.dev/posts/2015-10-13-algunas-consideraciones-de-seguridad-sobre-oauth/</link><pubDate>Tue, 13 Oct 2015 16:30:42 +0000</pubDate><atom:modified>Tue, 13 Oct 2015 16:30:42 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2015-10-13-algunas-consideraciones-de-seguridad-sobre-oauth/</guid><description>Cuando hablo de OAuth y del acceso con tokens, ya sea en formaciones o en charlas más o menos coloquiales, muchas veces surgen dudas sobre cuan seguros son los tokens. En este post, sin pretender dar un repaso exhaustivo a todos los flujos OAuth existentes, si que me gustaría comentar algunas consideraciones básicas de seguridad.
En el principio estaba OAuth 1.0
La versión 1.0 de OAuth especifica, básicamente, un solo token, conocido como oauth_token.</description><dc:creator>eiximenis</dc:creator><category>oauth</category></item><item><title>La dualidad objeto-función en JavaScript</title><link>https://www.eiximenis.dev/posts/2015-10-08-la-dualidad-objeto-funcin-en-javascript/</link><pubDate>Thu, 08 Oct 2015 21:28:00 +0000</pubDate><atom:modified>Thu, 08 Oct 2015 21:28:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2015-10-08-la-dualidad-objeto-funcin-en-javascript/</guid><description>No sé si Brendan Eich es un amante de la física cuántica, pero al menos viendo algunas de las características, así lo parece. No solo tenemos el principio de incertidumbre de this si no que también tenemos el hecho de que en JavaScript un objeto puede comportarse como una función y viceversa, es decir una dualidad objeto-función.
Tomemos jQuery p. ej. Por defecto nos define el archiconocido $, con el cual podemos hacer algo como $(“#mydiv”), es decir, usarlo como una función, pero también podemos hacer $.</description><dc:creator>eiximenis</dc:creator><category>javascript</category></item><item><title>Módulos en JavaScript… AMD, CommonJS</title><link>https://www.eiximenis.dev/posts/2015-09-07-mdulos-en-javascript-amd-commonjs/</link><pubDate>Mon, 07 Sep 2015 17:06:12 +0000</pubDate><atom:modified>Mon, 07 Sep 2015 17:06:12 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2015-09-07-mdulos-en-javascript-amd-commonjs/</guid><description>Con las aplicaciones web cada vez con mayor carga de cliente, y el uso cada vez mayor de sistemas de build en cliente como grunt o gulp, usar módulos para desarrollar en JavaScript es cada vez más habitual. Si todavía te descargas las librerías de sus páginas web y las incluyes una a una en tags &amp;lt;script/&amp;gt; es probable que este post te interese.
¿Qué es un módulo?
Llamamos módulo JavaScript a un código que de alguna manera es “auto contenido” y que expone una interfaz pública para ser usada.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ASP.NET 5: Configuración</title><link>https://www.eiximenis.dev/posts/2015-09-03-asp-net-5-configuracin/</link><pubDate>Thu, 03 Sep 2015 18:26:40 +0000</pubDate><atom:modified>Thu, 03 Sep 2015 18:26:40 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2015-09-03-asp-net-5-configuracin/</guid><description>Una de las novedades de ASP.NET5 es su sistema de configuración. En versiones anteriores el sistema de configuración estaba muy atado al fichero web.config. En este fichero se guardaba tanto la configuración propia del programa (cadenas de conexión, appsettings o información adicional que suele estar en secciones de configuración propias) como información de configuración del propio runtime: tipo de seguridad, módulos a cargar, bindings de assemblies y un sinfin más de configuraciones.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Enviar un array (JS) a un controlador MVC5</title><link>https://www.eiximenis.dev/posts/2015-07-15-enviar-un-array-js-a-un-controlador-mvc5/</link><pubDate>Wed, 15 Jul 2015 16:11:53 +0000</pubDate><atom:modified>Wed, 15 Jul 2015 16:11:53 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2015-07-15-enviar-un-array-js-a-un-controlador-mvc5/</guid><description>Buenas!
En los foros de MSDN aparece la pregunta sobre como enviar un array JS a un controlador de MVC. La verdad es que hay varias maneras de hacerlo… veamos dos de ellas, ambas muy sencillas.
En todos los casos el controlador tiene el siguiente método:
publicActionResultIndex(long[] data) { returnView(); }
Opción 1 – Mandar el array como un JSON</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Mi (pequeño) homenaje al gran, genial e irrepetible Terry Pratchett</title><link>https://www.eiximenis.dev/posts/2015-03-20-mi-pequeo-homenaje-al-gran-genial-e-irrepetible-terry-pratchett/</link><pubDate>Fri, 20 Mar 2015 11:55:21 +0000</pubDate><atom:modified>Fri, 20 Mar 2015 11:55:21 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2015-03-20-mi-pequeo-homenaje-al-gran-genial-e-irrepetible-terry-pratchett/</guid><description>Terry Pratchett ha sido uno de los grandes escritores de novelas de fantasía. Su serie más conocida Mundodisco, cuenta con 41 libros escritos en un estilo desenfadado y humorístico que parodian el género fantástico pero que a la vez encierran durísimas y mordaces críticas contra muchos aspectos de nuestra sociedad. El humor de Pratchett es reconocido como uno de los más ácidos e inteligentes a la vez que absurdos y esta mezcla es explosiva: sus libros te hacen estallar en carcajadas a la vez que reflexionar.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>WebApi: Subir un fichero y datos adicionales</title><link>https://www.eiximenis.dev/posts/2015-03-16-webapi-subir-un-fichero-y-datos-adicionales/</link><pubDate>Mon, 16 Mar 2015 12:03:00 +0000</pubDate><atom:modified>Mon, 16 Mar 2015 12:03:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2015-03-16-webapi-subir-un-fichero-y-datos-adicionales/</guid><description>El modelo de binding que tiene WebApi es bastante más simple que el de MVC y por ello algunas tareas que en MVC eran más simples en WebApi pasan a ser un poco más complejas. Una de esas tareas es la subida de ficheros y de datos adicionales.
A diferencia de MVC donde el contenido del cuerpo de la petición puede ser inspeccionado numerosas veces (según los value providers que tengamos configurados) en WebApi el cuerpo de la petición es un stream que puede ser leído una sola vez.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>De NuGet y la gestión de paquetes</title><link>https://www.eiximenis.dev/posts/2015-02-19-de-nuget-y-la-gestin-de-paquetes/</link><pubDate>Thu, 19 Feb 2015 09:11:40 +0000</pubDate><atom:modified>Thu, 19 Feb 2015 09:11:40 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2015-02-19-de-nuget-y-la-gestin-de-paquetes/</guid><description>Ya hace bastante tiempo que NuGet salió y desde entonces se ha convertido en un compañero inseparable de todos nosotros. Y más que va a serlo cuando vNext salga de forma definitiva. En este post doy por supuesto que conoces NuGet y que lo has usado alguna vez (si no… ¡debes aprender a usarlo ya!). En este post quiero comentar los tres modos de funcionamiento que tiene NuGet y algunas cosillas más con las que me he encontrado.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ASP.NET Historia de una optimización. ¡Cuidado con la Sesión!</title><link>https://www.eiximenis.dev/posts/2015-02-18-asp-net-historia-de-una-optimizacin-cuidado-con-la-sesin/</link><pubDate>Wed, 18 Feb 2015 13:51:52 +0000</pubDate><atom:modified>Wed, 18 Feb 2015 13:51:52 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2015-02-18-asp-net-historia-de-una-optimizacin-cuidado-con-la-sesin/</guid><description>En un cliente en el que he estado últimamente tenían un problema de rendimiento en su aplicación ASP.NET. El problema era más o menos que “cuando un usuario está buscando algo, entonces la aplicación se queda bloqueada”. Por supuesto el primer paso fue determinar que significaba “bloqueada” ya que es una palabra un tanto ambigua… Uno de los aspectos que conoce todo el mundo que trata con problemas reportados por usuarios finales es que muchas veces (por no decir casi siempre) el problema está descrito entre mal y peor.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Securiza tu WebApi con tokens autogenerados</title><link>https://www.eiximenis.dev/posts/2015-02-04-securiza-tu-webapi-con-tokens-autogenerados/</link><pubDate>Wed, 04 Feb 2015 11:20:46 +0000</pubDate><atom:modified>Wed, 04 Feb 2015 11:20:46 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2015-02-04-securiza-tu-webapi-con-tokens-autogenerados/</guid><description>El escenario que vamos a abordar en este post es el siguiente: tienes una API creada con ASP.NET WebApi y quieres que sea accesible a través de un token. Pero en este caso quieres ser tu quien proporcione el token y no un tercero como facebook, twitter o Azure Mobile Services (como p. ej. en el escenario que cubrimos en este post). Para ello nuestra API expondrá un endpoint en el cual se le pasarán unas credenciales de usuario (login y password) para obtener a cambio un token.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Aurelia… lo nuevo después de Durandal</title><link>https://www.eiximenis.dev/posts/2015-01-27-aurelia-lo-nuevo-despus-de-durandal/</link><pubDate>Tue, 27 Jan 2015 11:57:41 +0000</pubDate><atom:modified>Tue, 27 Jan 2015 11:57:41 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2015-01-27-aurelia-lo-nuevo-despus-de-durandal/</guid><description>Seguro que muchos de vosotros conocéis Durandal, la librería para crear aplicaciones SPA ideada por Rob Eisenberg autor también de otras librerías como Caliburn y con cierta obsesión por las espadas…
Hacé algún tiempo Rob anunció que se había unido al equipo de Angular para colaborar con el desarrollo de la versión 2.0 de dicha librería y que Angular y Durandal convergerían en una única librería. Eso generó muchas reacciones, algunas positivas, otras no tanto.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Evento–Bilbostack 2015</title><link>https://www.eiximenis.dev/posts/2015-01-18-evento-bilbostack-2015/</link><pubDate>Sun, 18 Jan 2015 08:21:00 +0000</pubDate><atom:modified>Sun, 18 Jan 2015 08:21:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2015-01-18-evento-bilbostack-2015/</guid><description>Buenas! El sábado (17 de Enero) tuve el placer de asistir al Bilbostack, una conferencia para desarrolladores que se celebra anualmente en Bilbao. En primer lugar felicitar a los organizadores porque la conferencia estaba muy bien montada: el sitio (la universidad de Deusto) era genial al igual que las dos salas usadas para los dos tracks paralelos que había. La primera, el auditorio, simplemente espectacular. La segunda, la sala Gárate, se quedó pequeña en alguna charla (la de IoT con gadgeeter que impartió Quique) pero bueno&amp;hellip;</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>update-database y LocalDb en una aplicación de escritorio</title><link>https://www.eiximenis.dev/posts/2015-01-13-update-database-y-localdb-en-una-aplicacin-de-escritorio/</link><pubDate>Tue, 13 Jan 2015 12:13:10 +0000</pubDate><atom:modified>Tue, 13 Jan 2015 12:13:10 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2015-01-13-update-database-y-localdb-en-una-aplicacin-de-escritorio/</guid><description>Estos días he estado desarrollando un aplicación de escritorio (wpf aunque eso es lo de menos) que va a hacer uso de LocalDb para guardar datos. Ciertamente no es un escenario muy habitual, ya que al instalar la aplicación en un ordenador cliente se requiere instalar LocalDb pero en este caso eso era asumible. Otras opciones para escritorio podrían pasar por usar algúna BBDD de proceso (como VistaDb o similares).</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Charlas del 2015</title><link>https://www.eiximenis.dev/talks/2015/</link><pubDate>Thu, 01 Jan 2015 00:00:00 +0000</pubDate><atom:modified>Thu, 01 Jan 2015 00:00:00 +0000</atom:modified><guid>https://www.eiximenis.dev/talks/2015/</guid><description>El año de 2015 lo marca el despegue de CatDotNet (ahora en horas bajas)&amp;hellip; Este grupo de usuarios nació en Igualada, pero al cabo de un tiempo se pensó en usar su marca y aglutinar varios grupos de usuarios de .NET para así poder organizar eventos más chulos. Fue una idea que funcionó durante un tiempo.
4 Sessions Febrero En las que serían mis últimas 4 Sessions, terminé como empecé: con un duelo de frameworks.</description><dc:creator>eiximenis</dc:creator></item><item><title>Securizando tus servicios WebApi usando OWIN</title><link>https://www.eiximenis.dev/posts/2014-12-19-securizando-tus-servicios-webapi-usando-owin/</link><pubDate>Fri, 19 Dec 2014 15:15:45 +0000</pubDate><atom:modified>Fri, 19 Dec 2014 15:15:45 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2014-12-19-securizando-tus-servicios-webapi-usando-owin/</guid><description>Hace algún tiempo escribí un post acerca de mecanismos para hacer tus servicios WebApi seguros. En este post mencionaba tres mecanismos para que tus servicios web solo sean accesibles a través de usuarios autenticados:
Atributo Authorize custom: no recomendado para autenticación (es para autorización). Message Handler (DelegatingHandler): Mecanismo recomendado dentro de WebApi para autenticación. HttpModule: Solución a nivel de IIS. En el post comentaba que si tu aplicación depende de IIS puedes usar un HttpModule, pero que si quieres evitar tener una dependencia con él (ya que WebApi admite escenarios selfhost) debes usar un DelegatingHandler.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Securizar tu WebApi con Azure Mobile Services</title><link>https://www.eiximenis.dev/posts/2014-12-18-securizar-tu-webapi-con-azure-mobile-services/</link><pubDate>Thu, 18 Dec 2014 15:08:57 +0000</pubDate><atom:modified>Thu, 18 Dec 2014 15:08:57 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2014-12-18-securizar-tu-webapi-con-azure-mobile-services/</guid><description>El escenario es el siguiente: tenemos un conjunto de servicios WebApi que no tienen porque estar desplegados en Azure pero queremos que esos servicios solo sean accesibles para usuarios que se hayan autenticado previamente a través de un proveedor externo (p. ej. Twitter) usando la infrastructura de Azure Mobile Services.
Creación y configuración de Mobile Services
Esa es la parte fácil… Una vez hemos creado nuestro mobile service debemos irnos a la pestaña Identity y colocar los valores que nos pide según el proveedor de autenticación externo que queramos usar.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ASP.NET WebApi: Subida de ficheros</title><link>https://www.eiximenis.dev/posts/2014-12-02-asp-net-webapi-subida-de-ficheros/</link><pubDate>Tue, 02 Dec 2014 18:20:52 +0000</pubDate><atom:modified>Tue, 02 Dec 2014 18:20:52 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2014-12-02-asp-net-webapi-subida-de-ficheros/</guid><description>Buenas! Vamos a ver en este post como podemos tratar la subida de ficheros en WebApi.
En ASP.NET MVC la subida de ficheros la gestiona un model binder para el tipo HttpFilePostedBase, por lo que basta con declarar un parámetro de este tipo de datos en el controlador y automáticamente recibimos el fichero subido.
En WebApi el enfoque es muy distinto: en el controlador no recibimos ningún parámetro con el contenido del fichero.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Angular y React (1/n): Empezando</title><link>https://www.eiximenis.dev/posts/2014-10-22-angular-y-react-1n-empezando/</link><pubDate>Wed, 22 Oct 2014 18:11:45 +0000</pubDate><atom:modified>Wed, 22 Oct 2014 18:11:45 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2014-10-22-angular-y-react-1n-empezando/</guid><description>¡Buenas! Empiezo con esta una serie de posts, que no se lo larga que será, comparando (en el buen sentido, nada de buscar un ganador ni un perdedor) un poco Angular con React.
Antes que nada el típico disclaimer: Angular y React no cubren los mismos aspectos del desarrollo web. Sí Angular cubre todo el espectro MVC, MVVM o como quieras llamarlo, React cubre solo la V: las vistas. Es pues, de funcionalidad más limitada que Angular.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ASP.NET MVC–Traduciendo las validaciones de CompareAttribute</title><link>https://www.eiximenis.dev/posts/2014-10-21-asp-net-mvc-traduciendo-las-validaciones-de-compareattribute/</link><pubDate>Tue, 21 Oct 2014 09:29:43 +0000</pubDate><atom:modified>Tue, 21 Oct 2014 09:29:43 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2014-10-21-asp-net-mvc-traduciendo-las-validaciones-de-compareattribute/</guid><description>Muy buenas! Seguimos ese tour de force sobre las traducciones de los mensajes de validación de Data Annotations.
En el primer post de esta serie vimos como crear adaptadores de atributos para permitirnos fácilmente y a nivel centralizado establecer las propiedades ErrorMessageResourceName y ErrorMessageResourceType.
El post terminaba con una lista de los distintos adaptadores que tiene ASP.NET MVC y que podíamos usar como clases base. Hay adaptadores definidos para casi todos los atributos de Data Annotations (Required, StringLength,…) pero no hay ninguno para el CompareAttribute.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ASP.NET MVC–Traduciendo las validaciones implícitas</title><link>https://www.eiximenis.dev/posts/2014-10-13-asp-net-mvc-traduciendo-las-validaciones-implcitas/</link><pubDate>Mon, 13 Oct 2014 14:49:28 +0000</pubDate><atom:modified>Mon, 13 Oct 2014 14:49:28 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2014-10-13-asp-net-mvc-traduciendo-las-validaciones-implcitas/</guid><description>En el post anterior vimos como localizar los mensajes de validación de Data Annotations en ASP.NET MVC usando adaptadores de atributos. Pero además de esos mensajes ASP.NET MVC tiene algunos mensajes de traducción implícitos.
P. ej. si tenemos una propiedad de tipo Int y le intentamos poner un valor no numérico ASP.NET MVC mostrará un mensaje de error. Este mensaje de error no proviene de Data Annotations, por lo que no podemos usar la técnica descrita en el post anterior para traducirlo.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ASP.NET MVC–Traducir los mensajes de error de DataAnnotations… otra vez.</title><link>https://www.eiximenis.dev/posts/2014-10-09-asp-net-mvc-traducir-los-mensajes-de-error-de-dataannotations-otra-vez/</link><pubDate>Thu, 09 Oct 2014 17:12:50 +0000</pubDate><atom:modified>Thu, 09 Oct 2014 17:12:50 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2014-10-09-asp-net-mvc-traducir-los-mensajes-de-error-de-dataannotations-otra-vez/</guid><description>Pues sí… la verdad es que esa es una cuestión recurrente en ASP.NET MVC. Y es que con las distintas versiones de MVC han aparecido distintas maneras de conseguir este propósito.
Nota 1: Para tener una idea de como eran las cosas en MVC2 echad un vistazo al post que publicó el Maestro hace tiempo: Modificar los mensajes de validación por defecto en ASP.NET MVC 2. Por favor léete dicho post, pues en cierto modo mi post es una “continuación”.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>C#- Vitaminiza tus enums con métodos de extensión</title><link>https://www.eiximenis.dev/posts/2014-10-09-c-vitaminiza-tus-enums-con-mtodos-de-extensin/</link><pubDate>Thu, 09 Oct 2014 10:53:50 +0000</pubDate><atom:modified>Thu, 09 Oct 2014 10:53:50 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2014-10-09-c-vitaminiza-tus-enums-con-mtodos-de-extensin/</guid><description>Buenas, un post cortito y sencillito 😉
En C# los enums son relativamente limitados: básicamente se limitan a tener un conjunto de valores y nada más. En otros lenguajes como Java o Swift, los enums pueden declarar métodos.
A priori puede parecer que no es muy necesario que un enum tenga un método, y de hecho no es algo que se suela echar en falta. Pero en algunos casos puede ser útil, especialmente para tener nuestro código más bien organizado.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ASP.NET MVC–Vigila los nombres de los parámetros de tus acciones</title><link>https://www.eiximenis.dev/posts/2014-10-01-asp-net-mvc-vigila-los-nombres-de-los-parmetros-de-tus-acciones/</link><pubDate>Wed, 01 Oct 2014 09:19:36 +0000</pubDate><atom:modified>Wed, 01 Oct 2014 09:19:36 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2014-10-01-asp-net-mvc-vigila-los-nombres-de-los-parmetros-de-tus-acciones/</guid><description>Muy buenas! Un post cortito para contaros un problemilla que nos hemos encontrado en un proyecto ASP.NET MVC5. Aunque seguro que aplica a todas las versiones de MVC desde la 2 al menos.
Es uno de aquellos casos en que, evidentemente hay algo que está mal, pero a simple vista todo parece correcto. Luego das con la causa del error puede que o bien no entiendas el porqué o bien digas “¡ah claro!</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Código sin nulls</title><link>https://www.eiximenis.dev/posts/2014-09-19-cdigo-sin-nulls/</link><pubDate>Fri, 19 Sep 2014 10:29:18 +0000</pubDate><atom:modified>Fri, 19 Sep 2014 10:29:18 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2014-09-19-cdigo-sin-nulls/</guid><description>Hace algunos días Juan Quijano escribió un post en GenBetaDev con este mismo título donde comentaba lo poco que le gustaba que la funciones devolviesen null y lo que hacía para evitar errores en ese caso.
Este post es mi respuesta a su post, ya que personalmente no me gusta la solución que presenta. En general termina con una solución como la siguiente:
publicclassModelo { publicPersonaGetPersonaByName(stringnombre) { Personapersona =newPersona(); if(nombre =="</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ASP.NET vNext–Crea tus propios “comandos K”</title><link>https://www.eiximenis.dev/posts/2014-09-16-asp-net-vnext-crea-tus-propios-comandos-k/</link><pubDate>Tue, 16 Sep 2014 23:33:42 +0000</pubDate><atom:modified>Tue, 16 Sep 2014 23:33:42 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2014-09-16-asp-net-vnext-crea-tus-propios-comandos-k/</guid><description>Una de las características de ASP.NET vNext son los “comandos K”, es decir aquellos comandos que se invocan desde línea de comandos a través del fichero K.cmd.
Dichos comandos están definidos en el project.json y la idea es que ofrezcan tareas necesarias durante el ciclo de vida de compilación y pruebas. Así podemos tener un comando (p. ej. K run) que nos ejecute el proyecto y otro (K test) que nos lance los tests unitarios.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ASP.NET MVC6 (vNext)–ViewComponents</title><link>https://www.eiximenis.dev/posts/2014-09-09-asp-net-mvc6-vnext-viewcomponents/</link><pubDate>Tue, 09 Sep 2014 18:13:52 +0000</pubDate><atom:modified>Tue, 09 Sep 2014 18:13:52 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2014-09-09-asp-net-mvc6-vnext-viewcomponents/</guid><description>En ASP.NET vNext se unifican MVC y WebApi en una nueva API llamada MVC6. Aunque MVC6 se parece a MVC5 no es compatible con ella, del mismo modo que WebApi se parece a MVC pero por debajo son muy distintas.
Ya hemos viso algunas de las novedades o cambios que trae MVC6 (temas de model binding, controladores POCO, …) y en este post vamos a explorar uno más: los ViewComponents.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Creando tu librería JavaScript con requirejs y gulp</title><link>https://www.eiximenis.dev/posts/2014-07-15-creando-tu-librera-javascript-con-requirejs-y-gulp/</link><pubDate>Tue, 15 Jul 2014 11:14:00 +0000</pubDate><atom:modified>Tue, 15 Jul 2014 11:14:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2014-07-15-creando-tu-librera-javascript-con-requirejs-y-gulp/</guid><description>Si desarrollas aplicaciones web con alta carga de código en cliente, es posible que tengas que desarrollarte tus propias funciones JavaScript. Incluso tu propia librería o framework si es el caso.
Una opción es abrir tu editor de texto favorito, crear un archivo .js y empezar a teclear. Total, jQuery viene en un solo archivo .js, ¿verdad? Antes de hacer esto, párate a pensar un poco: ¿a qué nunca colocarías todo el código c# de tu proyecto en un solo fichero .</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ASP.NET vNext–Model Binding</title><link>https://www.eiximenis.dev/posts/2014-07-14-asp-net-vnext-model-binding/</link><pubDate>Mon, 14 Jul 2014 14:02:20 +0000</pubDate><atom:modified>Mon, 14 Jul 2014 14:02:20 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2014-07-14-asp-net-vnext-model-binding/</guid><description>Bien, en el post anterior comentamos cuatro cosillas sobre el model binding en ASP.NET MVC y WebApi, sus semejanzas y sus diferencias. En ASP.NET vNext ambos frameworks se unifican así que es de esperar que el model binding también lo haga… Veamos como funciona el model binding de vNext.
Nota: Este post está realizado con la versión de ASP.NET vNext que viene con el VS14 CTP2. La mejor manera de probar dicha CTP es usando una VM en Azure creada a partir de una plantilla que ya la contiene instalada.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Model binding en ASP.NET MVC y WebApi</title><link>https://www.eiximenis.dev/posts/2014-07-08-model-binding-en-asp-net-mvc-y-webapi/</link><pubDate>Tue, 08 Jul 2014 13:25:35 +0000</pubDate><atom:modified>Tue, 08 Jul 2014 13:25:35 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2014-07-08-model-binding-en-asp-net-mvc-y-webapi/</guid><description>Una de las confusiones más habituales con la gente que viene de MVC y pasa a WebApi es que el funcionamiento del model binding (es decir rellenar los parámetros de los controladores a partir de los datos de la request) es distinto entre ambos frameworks. La confusión viene porque a primera vista todo parece que funcione igual pero realmente hay diferencias muy profundas entre ambos frameworks.
Veamos, pues, algunas de las diferencias que hay entre ambos frameworks</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Cifrado en WebApi</title><link>https://www.eiximenis.dev/posts/2014-07-01-cifrado-en-webapi/</link><pubDate>Tue, 01 Jul 2014 13:27:29 +0000</pubDate><atom:modified>Tue, 01 Jul 2014 13:27:29 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2014-07-01-cifrado-en-webapi/</guid><description>Muy buenas! El otro día recibí el siguiente correo (a través del formulario de contacto del blog):
Estoy desarrollando una serie de web apis para transacciones con tarjetas de crédito. Mi problema es que no encuentro la forma de cifrar los datos sensibles como el numero de tarjeta de crédito. con un web service esta claro como hacerlos pero no encuentro la forma en una web api. que me recomendas?</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ASP.NET vNext–Configuración</title><link>https://www.eiximenis.dev/posts/2014-06-29-asp-net-vnext-configuracin/</link><pubDate>Sun, 29 Jun 2014 23:29:18 +0000</pubDate><atom:modified>Sun, 29 Jun 2014 23:29:18 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2014-06-29-asp-net-vnext-configuracin/</guid><description>Otra de las cosas que cambia, radicalmente, en ASP.NET vNext es el tema de la configuración. Hasta ahora teníamos, generalmente, mezcladas en un mismo archivo (web.config) tanto la configuración propia de nuestra aplicación (app settings, connection strings y módulos de configuración propios) como la del framework (p. ej. la configuración de forms authentication o de los HttpModules).
En vNext eso cambia radicalmente. Para empezar desaparece web.config. La configuración de los distintos módulos del framework se realiza por código, en el método Configure de la clase Startup.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ASP.NET MVC vNext – Controladores “POCO”</title><link>https://www.eiximenis.dev/posts/2014-06-26-asp-net-mvc-vnext-controladores-poco/</link><pubDate>Thu, 26 Jun 2014 10:12:29 +0000</pubDate><atom:modified>Thu, 26 Jun 2014 10:12:29 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2014-06-26-asp-net-mvc-vnext-controladores-poco/</guid><description>Una de las novedades que presenta ASP.NET MVC6 (integrada dentro de vNext) es la posibilidad de que los controladores ya no deban heredar de ninguna clase base.
De hecho la clase Controller en MVC clásico (MVC5 y anteriores) proporcionaba básicamente dos cosas:
Un conjunto de métodos de para devolver action results (p. ej. el método View() para devolver un ViewResult o el método Json para devolver un JsonResult). Acceso a algunas propiedades para contexto (ControllerContext, ModelState y ViewBag básicamente).</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Explorando ASP.NET vNext: Routing</title><link>https://www.eiximenis.dev/posts/2014-06-25-explorando-asp-net-vnext-routing/</link><pubDate>Wed, 25 Jun 2014 12:24:44 +0000</pubDate><atom:modified>Wed, 25 Jun 2014 12:24:44 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2014-06-25-explorando-asp-net-vnext-routing/</guid><description>Lentamente se van desgranando las novedades que incorporará ASP.NET vNext. Recordad que podéis ya jugar un poco con él, descargandoos la CTP de VS14 🙂
Vamos a ver en este post cuatro cosillas sobre el routing que incorpora ASP.NET vNext. Vamos a partir de una aplicación web vNext vacía y agregaremos tan solo lo justo para tener MVC y una tabla de rutas. Lo primero será editar el project.json y añadir la referencia a asp.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>TIP: DebuggerDisplay</title><link>https://www.eiximenis.dev/posts/2014-06-13-tip-debuggerdisplay/</link><pubDate>Fri, 13 Jun 2014 09:50:16 +0000</pubDate><atom:modified>Fri, 13 Jun 2014 09:50:16 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2014-06-13-tip-debuggerdisplay/</guid><description>Muy buenas! Acabo de leer el post de Luis Ruiz Pavon sobre sobre el sobreescribir .ToString() para mejorar la información del modo de depuración de VS. Y ya puestos, para complementar su post, quería comentar un truco que no se si conoce mucha gente y que permite algo parecido sin necesidad de sobreescribir ToString (que se usa para otras cosas además de para mostrar la información en la ventana de depuración) y que es el uso del atributo DebuggerDisplay.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Sirviendo ASP.NET vNext con Nowin</title><link>https://www.eiximenis.dev/posts/2014-06-11-sirviendo-asp-net-vnext-con-nowin/</link><pubDate>Wed, 11 Jun 2014 11:58:03 +0000</pubDate><atom:modified>Wed, 11 Jun 2014 11:58:03 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2014-06-11-sirviendo-asp-net-vnext-con-nowin/</guid><description>Nota: Este post está realizado sobre la CTP de VS2014 y la alfa de ASP.NET vNext. Todo lo dicho puede cambiar cuando salgan las versiones RTM…
¿Conoces Nowin? Es un servidor web OWIN, es decir si construimos nuestra aplicación web basándonos en middleware OWIN (p. ej. WebApi 2 o NancyFx) podemos usar este servidor web para servirla a los clientes. Ya he hablado de OWIN varias veces antes, ya que OWIN ha sido la penúltima revolución en desarrollo de aplicaciones web en tecnología Microsot (la última es vNext, claro).</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ASP.NET vNext – IBuilder</title><link>https://www.eiximenis.dev/posts/2014-06-09-asp-net-vnext-ibuilder/</link><pubDate>Mon, 09 Jun 2014 17:08:02 +0000</pubDate><atom:modified>Mon, 09 Jun 2014 17:08:02 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2014-06-09-asp-net-vnext-ibuilder/</guid><description>Muy buenas! Esos días he estado jugando con VS2014 CTP. Esta versión no puede instalarse side by side con cualquier versión anterior de VS, así que la he instalado en una máquina virtual en Azure&amp;hellip; La verdad es que es el mecanismo más rápido para probarlo, puesto que ha hay una plantilla de MV en Azure que contien VS2014 CTP. Vamos, que en cinco minutos pasas de no tener nada a estar ya trasteando con el VS2014.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Sobre WebApi, cookies y CSRF</title><link>https://www.eiximenis.dev/posts/2014-05-14-sobre-webapi-cookies-y-csrf/</link><pubDate>Wed, 14 May 2014 00:04:00 +0000</pubDate><atom:modified>Wed, 14 May 2014 00:04:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2014-05-14-sobre-webapi-cookies-y-csrf/</guid><description>Buenas! Hace poco Pedro Hurtado ha escrito un post titulado “Una evidencia, una frikada y un despropósito”. En él habla de varias cosas, relacionadas con la seguridad de aplicaciones web, pero quiero centrarme en un solo punto (el despropósito). Básicamente lo que dice Pedro es que si usas autenticación por cookies en WebApi eres vulnerable a ataques CSRF.
Vayamos por partes&amp;hellip;
Antes que nada debemos aclarar que es un ataque CSRF.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ASP.NET MVC–Recibir contenido en mayúsculas</title><link>https://www.eiximenis.dev/posts/2014-04-25-asp-net-mvc-recibir-contenido-en-maysculas/</link><pubDate>Fri, 25 Apr 2014 12:57:47 +0000</pubDate><atom:modified>Fri, 25 Apr 2014 12:57:47 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2014-04-25-asp-net-mvc-recibir-contenido-en-maysculas/</guid><description>Imagina que estás desarrollando un proyecto, con ASP.NET MVC y cuando llevas digamos unas, no sé, cincuenta pantallas, todas llenas con sus formularios, algunos que hacen peticiones AJAX, otros que no… bueno, imagina que cuando llevas ya bastantes vistas hechas, aparece un nuevo requisito, de aquellos que están agazapados, esperando el momento propicio para saltate a la yugular: Todos los datos que entre el usuario, deben ser guardados y mostrados en mayúsculas.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ASP.NET MVC–Descargar ficheros con soporte para continuación – ii</title><link>https://www.eiximenis.dev/posts/2014-04-10-asp-net-mvc-descargar-ficheros-con-soporte-para-continuacin-ii/</link><pubDate>Thu, 10 Apr 2014 11:11:31 +0000</pubDate><atom:modified>Thu, 10 Apr 2014 11:11:31 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2014-04-10-asp-net-mvc-descargar-ficheros-con-soporte-para-continuacin-ii/</guid><description>En el post anterior vimos todo la parte teórica de HTTP que nos permite realizar descargas de ficheros, pausarlas y continuarlas. Pero ahora viene lo bueno… Vamos a implementar el soporte en el servidor para soportar dichas descargas.
Dado que nuestro amado FileStreamResult no soporta la cabecera Range, nos va a tocar a nostros hacer todo el trabajo. Pero, la verdad… no hay para tanto.
Nota importante: Todo, absolutamente todo el código que pongo en este blog está para que hagas con él lo que quieras.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ASP.NET MVC–Descargar ficheros con soporte para continuación – i</title><link>https://www.eiximenis.dev/posts/2014-04-10-asp-net-mvc-descargar-ficheros-con-soporte-para-continuacin-i/</link><pubDate>Thu, 10 Apr 2014 09:39:41 +0000</pubDate><atom:modified>Thu, 10 Apr 2014 09:39:41 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2014-04-10-asp-net-mvc-descargar-ficheros-con-soporte-para-continuacin-i/</guid><description>Muy buenas! El objetivo de esta serie posts es ver como podemos implementar en ASP.NET MVC descargas de ficheros con soporte para “pausa y continuación”.
En este primer post veremos (por encima) que cabeceras HTTP están involucradas en las peticiones y las respuestas para permitir continuar una descarga.
Dicho soporte debe estar implementado en el cliente, pero también en el servidor. En el cliente porque ese tiene que efectuar lo que se llama una range request, es decir pasar en la petición HTTP que “parte” del archivo quiere.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Reflexiones del #programadorIO: Tipados vs no tipados</title><link>https://www.eiximenis.dev/posts/2014-04-03-reflexiones-del-programadorio-tipados-vs-no-tipados/</link><pubDate>Thu, 03 Apr 2014 23:39:39 +0000</pubDate><atom:modified>Thu, 03 Apr 2014 23:39:39 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2014-04-03-reflexiones-del-programadorio-tipados-vs-no-tipados/</guid><description>Esta noche he tenido el placer de participar en el marco de un #programadorIO en un debate sobre los lenguajes tipados vs los no tipados. Puedes ver el debate en youtube: https://www.youtube.com/watch?v=sxOM6sYgn5U
Nota: En el contexto de este post “no tipado” significa débilmente tipado o de tipado dinámico. Y tipado significa fuertemente tipado o de tipado estático.
Mi opinión es que los lenguajes no tipados son muy adecuados para prototipados, por que las herramientas suelen ser más ágiles y porque te permiten “saltarte” en primera instancia una fase mucho más formal de diseño (fase que luego tarde o temprano tiene que venir, pero en un lenguaje tipado tiene que realizarse al principio para, precisamente, poder diseñar los tipos).</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Visibilidades en JavaScript</title><link>https://www.eiximenis.dev/posts/2014-02-27-visibilidades-en-javascript/</link><pubDate>Thu, 27 Feb 2014 10:19:00 +0000</pubDate><atom:modified>Thu, 27 Feb 2014 10:19:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2014-02-27-visibilidades-en-javascript/</guid><description>Una de las cosas que se argumentan en contra de JavaScript cuando se habla de orientación a objetos es que no soporta la visibilidad de métodos o propiedades. Es decir, todo es público por defecto.
Mucha gente hoy en día cuando programa en JavaScript adopta alguna convención tipo “lo que empiece por guión bajo es privado y no debe ser invocado”. Como chapuza para ir tirando, pues bueno, pero en JavaScript hay maneras de simular una visibilidad privada y de que realmente el creador de un objeto no pueda invocar algunos métodos.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ASP.NET MVC, [Authorize] y jQuery.load</title><link>https://www.eiximenis.dev/posts/2014-02-25-asp-net-mvc-authorize-y-jquery-load/</link><pubDate>Tue, 25 Feb 2014 17:45:46 +0000</pubDate><atom:modified>Tue, 25 Feb 2014 17:45:46 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2014-02-25-asp-net-mvc-authorize-y-jquery-load/</guid><description>Muy buenas! Estreno el blog este 2014… dios a finales de Febrero! A ver, si empezamos a retomar el ritmo…
Este es un post sencillito, por si os encontráis con ello. La situación es la siguiente: Tenéis controladores que devuelven vistas parciales, las cuales desde JavaScript incluís dentro de vuestro DOM a través de una llamada Ajax, usando p. ej. el método load de jQuery.
Todo funciona correctamente, hasta que un día el usuario entra en el site, se va a comer y cuando vuelve pulsa uno de esos enlaces (o botones o lo que sea) que incluyen una de esas llamadas Ajax… Y ocurre que en lugar de aparecer la vista parcial, aparece la página de Login allí incrustada.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Charlas del 2014</title><link>https://www.eiximenis.dev/talks/2014/</link><pubDate>Wed, 01 Jan 2014 00:00:00 +0000</pubDate><atom:modified>Wed, 01 Jan 2014 00:00:00 +0000</atom:modified><guid>https://www.eiximenis.dev/talks/2014/</guid><description>El 2014 fue, a nivel de charlas, para mi el año de &amp;ldquo;ASP.NET vNext&amp;rdquo;&amp;hellip;
Workshop de ASP.NET vNext En Junio di un Workshop práctico sobre lo que por entonces llamábamos ASP.NET vNext. Vimos un poco como se comparaba con el ASP.NET tradicional, usando una preview de lo que sería VS2015.
Webcast: Preview de ASP.NET vNext En Setiembre pude dar un webcast para mis amigos de escuela.it donde hablé un poco de las novedades que venían con ASP.</description><dc:creator>eiximenis</dc:creator></item><item><title>Cambiar el esquema con ASP.NET Identity</title><link>https://www.eiximenis.dev/posts/2013-12-23-cambiar-el-esquema-con-asp-net-identity/</link><pubDate>Mon, 23 Dec 2013 21:52:54 +0000</pubDate><atom:modified>Mon, 23 Dec 2013 21:52:54 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2013-12-23-cambiar-el-esquema-con-asp-net-identity/</guid><description>Una de las grandes novedades (probablemente la de mayor calado si obviamos la revolución de OWIN) de la nueva versión de ASP.NET es ASP.NET Identity, que sustituye al viejuno Membership (que apareció allá en 2005). ASP.NET Identity está diseñado para dar solución a muchos de los problemas de los que Membsership acaecía.
Una de las preguntas más recurrentes en los foros de la MSDN y fuera de ellos es como usar Membership con un esquema de base de datos propio.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Integrando oAuth con NancyFx (ii) – Katana</title><link>https://www.eiximenis.dev/posts/2013-12-02-integrando-oauth-con-nancyfx-ii-katana/</link><pubDate>Mon, 02 Dec 2013 17:57:10 +0000</pubDate><atom:modified>Mon, 02 Dec 2013 17:57:10 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2013-12-02-integrando-oauth-con-nancyfx-ii-katana/</guid><description>En el post anterior vimos como autenticar una aplicación NancyFx usando oAuth a través del paquete WorldDomination (o SimpleAuthentication que es el aburrido nombre que tiene ahora :p).
Pero dado que NancyFx puede funcionar como un componente OWIN y la estructura modular de OWIN permite que haya módulos de autenticación que se ejecuten antes en el pipeline, porque no “eliminar” toda responsabilidad sobre autenticación de NancyFx? Y que sea algún módulo OWIN el que lo haga no?</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Integrando oAuth con NancyFx–(i)</title><link>https://www.eiximenis.dev/posts/2013-11-29-integrando-oauth-con-nancyfx-i/</link><pubDate>Fri, 29 Nov 2013 16:01:18 +0000</pubDate><atom:modified>Fri, 29 Nov 2013 16:01:18 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2013-11-29-integrando-oauth-con-nancyfx-i/</guid><description>Buenas! El objetivo de este post es explicar la solución a la que he llegado para integrar autenticación con oAuth en un sitio web desarrollado con NancyFx. En este primer post veremos como hacerlo “de la forma clásica” pero en otro siguiente nos aprovecharemos de los componentes de autenticación de Katana.
Iré hablando en este blog más sobre OWIN, Katana y también sobre NancyFx, pero por el momento algunas definiciones rápidas:</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>El fallo de ASP.NET MVC y el helper Html.DropDownFor</title><link>https://www.eiximenis.dev/posts/2013-11-12-el-fallo-de-asp-net-mvc-y-el-helper-html-dropdownfor/</link><pubDate>Tue, 12 Nov 2013 14:54:22 +0000</pubDate><atom:modified>Tue, 12 Nov 2013 14:54:22 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2013-11-12-el-fallo-de-asp-net-mvc-y-el-helper-html-dropdownfor/</guid><description>Buenas! Este post es para describir un fallo que he encontrado en el helper Html.DropDownFor y el workaround asociado. Quizá alguien entiende que no es un fallo y quizá es capaz de decirme que razón se esconde bajo este comportamiento… Desde mi punto de vista ninguno, pero bueno… ni tengo (ni pretendo tener) la verdad absoluta.
El problema…
Veamos… Para el helper Html.DropDownFor se usa para crear combos y tiene varias formas de uso (yo mismo escribí un post hace algún tiempo al respecto sobre las combos en ASP.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>JavaScript – ¿Qué es exactamente this?</title><link>https://www.eiximenis.dev/posts/2013-10-29-javascript-qu-es-exactamente-this/</link><pubDate>Tue, 29 Oct 2013 18:00:44 +0000</pubDate><atom:modified>Tue, 29 Oct 2013 18:00:44 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2013-10-29-javascript-qu-es-exactamente-this/</guid><description>Si vienes de un lenguaje orientado a objetos “clásico” como C# o Java, tendrás claro el concepto de this: Se refiere al propio objeto. Dado que todos los objetos son instancias de una clase en concreto y el código se define a nivel de clase el valor de this está claramente definido. Sólo leyendo el código puedes saber a que se refiere this en cada momento.
JavaScript también tiene la palabra this pero su significado es un poco más “complejo” que el de C#.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>¿Es Javascript orientado a objetos?</title><link>https://www.eiximenis.dev/posts/2013-10-25-es-javascript-orientado-a-objetos/</link><pubDate>Fri, 25 Oct 2013 12:40:41 +0000</pubDate><atom:modified>Fri, 25 Oct 2013 12:40:41 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2013-10-25-es-javascript-orientado-a-objetos/</guid><description>Ayer tuve el placer de participar en un hangout de #JsIO junto a dos bestias pardas como Erick Ruiz y Tomás Corral discutiendo si JavaScript es o no es un lenguaje orientado a objetos.
Así que aprovecho para escribir este post y hacer algunas reflexiones más al respecto sin las prisas ni la improvisación del “directo”.
¿Qué es la orientación a objetos?
Es complicado definir que significa exactamente “orientación a objetos”.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Divertimento: Cadenas de longitud máxima fija en C#</title><link>https://www.eiximenis.dev/posts/2013-10-16-divertimento-cadenas-de-longitud-mxima-fija-en-c/</link><pubDate>Wed, 16 Oct 2013 22:49:25 +0000</pubDate><atom:modified>Wed, 16 Oct 2013 22:49:25 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2013-10-16-divertimento-cadenas-de-longitud-mxima-fija-en-c/</guid><description>Aviso: Este post es un divertimento que ha surgido a raíz del siguiente tweet de Juan Quijano. En este tweet básicamente Juan preguntaba si había alguna manera de limitar la longitud de una cadena. Por supuesto todas las respuestas que le dan son correctísimas, a saber:
Validarlo en el setter Usar DataAnnotations y validación con atributos Usar [StringLength] en el caso de ASP.NET MVC Y otras que se podrían dar aquí.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ASP.NET MVC – Custom model binders por propiedad</title><link>https://www.eiximenis.dev/posts/2013-10-16-asp-net-mvc-custom-model-binders-por-propiedad/</link><pubDate>Wed, 16 Oct 2013 11:51:55 +0000</pubDate><atom:modified>Wed, 16 Oct 2013 11:51:55 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2013-10-16-asp-net-mvc-custom-model-binders-por-propiedad/</guid><description>Muy buenas! En este post vamos a ver como habilitar un custom model binder para una propiedad en concreto de un viewmodel.
De serie es posible configurar un Custom Model Binder de dos maneras:
Añadiéndolo a la colección Binders de la clase ModelBinders. Con esto conseguimos que todos los valores de un tipo concreto se enlacen usando nuestro ModelBinder. Usando el atributo [ModelBinder]. Con este atributo podemos especificar un Model Binder a usar para un viewmodel en concreto o para un parámetro en concreto de un controlador.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Modelos de vista dinámicos en asp.net mvc</title><link>https://www.eiximenis.dev/posts/2013-09-12-modelos-de-vista-dinmicos-en-asp-net-mvc/</link><pubDate>Thu, 12 Sep 2013 18:20:18 +0000</pubDate><atom:modified>Thu, 12 Sep 2013 18:20:18 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2013-09-12-modelos-de-vista-dinmicos-en-asp-net-mvc/</guid><description>Muy buenas!
Imagina que tienes la siguiente entidad de un modelo de datos de Entity Framework:
1: public class Product &amp;lt;p&amp;gt; &amp;lt;!--CRLF--&amp;gt; &amp;lt;/p&amp;gt; &amp;lt;pre style=&amp;quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;amp;#39;Courier New&amp;amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: #606060&amp;quot; id=&amp;quot;lnum2&amp;quot;&amp;gt; 2:&amp;lt;/span&amp;gt; {&amp;lt;/pre&amp;gt; &amp;lt;p&amp;gt; &amp;lt;!--CRLF--&amp;gt; &amp;lt;/p&amp;gt; &amp;lt;pre style=&amp;quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;amp;#39;Courier New&amp;amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: #606060&amp;quot; id=&amp;quot;lnum3&amp;quot;&amp;gt; 3:&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #0000ff&amp;quot;&amp;gt;public&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #0000ff&amp;quot;&amp;gt;int&amp;lt;/span&amp;gt; Id {get; set;}&amp;lt;/pre&amp;gt; &amp;lt;p&amp;gt; &amp;lt;!</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>¡Hello World Katana!</title><link>https://www.eiximenis.dev/posts/2013-09-05-hello-world-katana/</link><pubDate>Thu, 05 Sep 2013 16:10:11 +0000</pubDate><atom:modified>Thu, 05 Sep 2013 16:10:11 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2013-09-05-hello-world-katana/</guid><description>Buenas! En este post vamos a ver como empezar a trabajar con Katana. En un post anterior hablé un poco de Katana y mis fantasías (más o menos húmedas) de lo que podría ser un un futuro.
Antes que nada hagamos un repaso rápido:
OWIN: Open Web Interface for .NET. Especificación que define un estándard para comunicar servidores web y aplicaciones web (en tecnología .NET). Katana: Implementación de Microsoft de la especificación OWIN.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ASP.NET MVC – ¿Por qué usar los helpers para formularios?</title><link>https://www.eiximenis.dev/posts/2013-08-22-asp-net-mvc-por-qu-usar-los-helpers-para-formularios/</link><pubDate>Thu, 22 Aug 2013 14:10:00 +0000</pubDate><atom:modified>Thu, 22 Aug 2013 14:10:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2013-08-22-asp-net-mvc-por-qu-usar-los-helpers-para-formularios/</guid><description>Hace nada mi compi Javier Torrecilla (Little Tower para los amigos) ha escrito un post sobre los helpers de ASP.NET MVC.
En este post quiero centrarme en por qué debes usar los helpers para formularios de ASP.NET MVC. La respuesta “por qué están ahí” no vale. Hay muchas cosas que están por ahí y no deberían usarse salvo casos muy concretos (incluso cosas del .NET Framework).
Iremos como los New Kids on the Block, es decir paso a paso.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ASP.NET MVC: Autocompletado con enums</title><link>https://www.eiximenis.dev/posts/2013-08-19-asp-net-mvc-autocompletado-con-enums/</link><pubDate>Mon, 19 Aug 2013 17:45:34 +0000</pubDate><atom:modified>Mon, 19 Aug 2013 17:45:34 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2013-08-19-asp-net-mvc-autocompletado-con-enums/</guid><description>La verdad es que el tema de los enums y ASP.NET MVC da para hablar bastante (yo mismo hice un post hace ni mucho). Pero hace algunos días mi buen amigo y a veces rival, Marc Rubiño publicó en su blog un interesante artículo sobre como crear combos que mostrasen valores de enums.
En este post voy a mostrar una técnica parecida, pero a través de las data list, un concepto nuevo de HTML5 que como pasa muchas veces está recibiendo menos atención de la que merece.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Usando las herramientas para Git de VS2012</title><link>https://www.eiximenis.dev/posts/2013-07-19-usando-las-herramientas-para-git-de-vs2012/</link><pubDate>Fri, 19 Jul 2013 09:21:00 +0000</pubDate><atom:modified>Fri, 19 Jul 2013 09:21:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2013-07-19-usando-las-herramientas-para-git-de-vs2012/</guid><description>Muy buenas! En este post voy a contar (o al menos intentarlo) como usar las herramientas de Git para VS2012 y trabajar con un repositorio Git instalado en TFS Services.
Nota: Este post está muy orientado a gente que viene de TFS, está acostumbrada a TFS y se siente un poco “perdida” con esto de Git. No pretende ser, ni mucho menos, un tutorial de Git.
Requerimientos previos</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Katana: Cortando el framework</title><link>https://www.eiximenis.dev/posts/2013-07-15-katana-cortando-el-framework/</link><pubDate>Mon, 15 Jul 2013 13:40:00 +0000</pubDate><atom:modified>Mon, 15 Jul 2013 13:40:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2013-07-15-katana-cortando-el-framework/</guid><description>Si eres desarrollador en tecnologías Microsoft y especialmente desarrollador web, acúerdate de esas dos palabras: Proyecto Katana. Este proyecto representa el futuro a corto plazo de todas las tecnologías de desarrollo web de Microsoft y, no me cabe duda de ello, el futuro a medio plazo del propio .NET.
No dejes que esa introducción te confunda: Katana no es una nueva tecnología, ni una nueva plataforma, ni un lenguaje nuevo, ni tan siquiera realmente una API nueva.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Novedades de IE11: SPDY</title><link>https://www.eiximenis.dev/posts/2013-06-27-novedades-de-ie11-spdy/</link><pubDate>Thu, 27 Jun 2013 14:16:50 +0000</pubDate><atom:modified>Thu, 27 Jun 2013 14:16:50 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2013-06-27-novedades-de-ie11-spdy/</guid><description>Como ya es habitual una nueva versión de Windows (en este caso la 8.1) viene acompañado de un nuevo IE11. Y como siempre IE11 viene con varias novedades siendo quizá las dos más destacadas el soporte para WebGL (gráficos 3D) y el tema de este post, el soporte del protocolo SPDY.
Este será un post ligeramente distinto a los habituales del blog porque no hablaré de nada de desarrollo 🙂</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Backbone: El misterioso caso del sync que no se lanzaba</title><link>https://www.eiximenis.dev/posts/2013-06-13-backbone-el-misterioso-caso-del-sync-que-no-se-lanzaba/</link><pubDate>Thu, 13 Jun 2013 13:16:39 +0000</pubDate><atom:modified>Thu, 13 Jun 2013 13:16:39 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2013-06-13-backbone-el-misterioso-caso-del-sync-que-no-se-lanzaba/</guid><description>Muy buenas! Estos días he estado resolviendo un misterio que me sucedía con un proyecto utilizando Backbone.
En concreto, se supone que, a partir de la versión 1.0, cuando se guarda un modelo de Backbone al servidor (usando p. ej. save) si la operación tiene éxito, el modelo nos lanza el evento sync para informarnos, precisamente, del éxito de la operación.
Así, una secuencia típica de operaciones, se supone que es:</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ASP.NET MVC – Tratando con enums.</title><link>https://www.eiximenis.dev/posts/2013-06-12-asp-net-mvc-tratando-con-enums/</link><pubDate>Wed, 12 Jun 2013 09:04:59 +0000</pubDate><atom:modified>Wed, 12 Jun 2013 09:04:59 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2013-06-12-asp-net-mvc-tratando-con-enums/</guid><description>En un proyecto ASP.NET MVC en el que estoy colaborando, surgió la necesidad de tratar con viewmodels que tenían propiedades cuyo tipo era un enum. Algo así como:
[Flags] public enum TestEnum { &amp;#160;&amp;#160;&amp;#160; None = , &amp;#160;&amp;#160;&amp;#160; One = 1, &amp;#160;&amp;#160;&amp;#160; Two =2, &amp;#160;&amp;#160;&amp;#160; Four =4 } &amp;#160; public class FooModel { &amp;#160;&amp;#160;&amp;#160; public TestEnum TestData { get; set; } } Los valores de TestEnum son combinables a nivel de bits (de ahí que esté decorado con [Flags], es decir el valor de la propiedad TestData puede ser cualquiera de los cuatro o bien una combinación (p.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>[WaveEngine] Medidor de fps</title><link>https://www.eiximenis.dev/posts/2013-06-02-waveengine-medidor-de-fps/</link><pubDate>Sun, 02 Jun 2013 09:42:14 +0000</pubDate><atom:modified>Sun, 02 Jun 2013 09:42:14 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2013-06-02-waveengine-medidor-de-fps/</guid><description>Bueno… sigo mi serie de posts sobre WaveEngine. En los dos primeros posts vimos como poner un sprite en pantalla y luego como animarlo. Ambos pasos (y algunos más sobre los que todavía no he comentado nada) están descritos en uno de los hand-on-labs de Wave: el platform game sample.
Antes que nada el disclaimer obligatorio: En todos esos posts sobre Wave, explico la manera que he encontrado yo para hacer las cosas.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>[Wave Engine] Animando a Mai</title><link>https://www.eiximenis.dev/posts/2013-05-28-wave-engine-animando-a-mai/</link><pubDate>Tue, 28 May 2013 23:01:40 +0000</pubDate><atom:modified>Tue, 28 May 2013 23:01:40 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2013-05-28-wave-engine-animando-a-mai/</guid><description>Buenas! Este post es el segundo sobre WaveEngine, esta maravilla que han parido los chicos de Plain Concepts 🙂
En el post anterior, vimos los fundamentos de Wave Engine y terminamos con un programa que mostraba a Mai Shiranui en la esquina inferior izquierda de la pantalla. Pero Mai Shiranui gana mucho cuando se mueve (¿por qué será?) así que vamos a ver como podemos hacerlo para que nuestra bella protagoniste se anime.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ASP.NET MVC – Patrón PRG sin sesión</title><link>https://www.eiximenis.dev/posts/2013-05-25-asp-net-mvc-patrn-prg-sin-sesin/</link><pubDate>Sat, 25 May 2013 16:50:00 +0000</pubDate><atom:modified>Sat, 25 May 2013 16:50:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2013-05-25-asp-net-mvc-patrn-prg-sin-sesin/</guid><description>Buenas! El patrón PRG (Post – Redirect – Get) es un patrón muy usado en el desarrollo web. Consiste en que la respuesta de una petición POST es siempre una redirección, lo que genera un GET del navegador y de ahí el nombre.
La idea que subyace tras el patrón PRG es, que dado que dado que las peticiones GET son (¡deberían ser!) idempotentes esas son las únicas que el usuario debe poder refrescar.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Herramienta: HFS – Http File Server</title><link>https://www.eiximenis.dev/posts/2013-05-23-herramienta-hfs-http-file-server/</link><pubDate>Thu, 23 May 2013 08:53:45 +0000</pubDate><atom:modified>Thu, 23 May 2013 08:53:45 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2013-05-23-herramienta-hfs-http-file-server/</guid><description>Muy buenas! Cuando preparo demos de HTML5 y JS, si no hay involucrado un servidor de por medio, no suelo utilizar VS para generar el proyecto si no algún editor más liviano, como Sublime Text o Notepad++ (personalmente prefiero el primero mil veces al segundo).
El único problema reside en que algunos navegadores, por seguridad, no ejecutan Javascript cuando el origen es file:// (es decir cuando estamos cargando un fichero del sistema de ficheros).</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>[WaveEngine] Primeros pasos…</title><link>https://www.eiximenis.dev/posts/2013-05-21-waveengine-primeros-pasos/</link><pubDate>Tue, 21 May 2013 15:20:00 +0000</pubDate><atom:modified>Tue, 21 May 2013 15:20:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2013-05-21-waveengine-primeros-pasos/</guid><description>Buenas! Hace algunos días, no muchos, que me estoy pegando (en el buen sentido de la palabra) con WaveEngine, esta maravilla que han creado los chicos de Plain Concepts.
Disclaimer: Este post (y todos los que puedan venir) no pretenden sustituir la documentación oficial. No me considero un experto en Wave ni de lejos, realmente soy un aprendiz de nivel 1 🙂 Simplemente voy a expresar mis experiencias y lo iré haciendo a medida que las vaya teniendo, así que bueno&amp;hellip; puede haber inexactitudes, errores, omisiones, etc&amp;hellip; en estos posts.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>[C#]–Enumeraciones y corutinas</title><link>https://www.eiximenis.dev/posts/2013-05-02-c-enumeraciones-y-corutinas/</link><pubDate>Thu, 02 May 2013 17:10:07 +0000</pubDate><atom:modified>Thu, 02 May 2013 17:10:07 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2013-05-02-c-enumeraciones-y-corutinas/</guid><description>¡Buenas!
Empezamos con una pregunta:
¿Cual es el resultado de este programa?
class Program { &amp;#160;&amp;#160;&amp;#160; static void Main(string[] args) &amp;#160;&amp;#160;&amp;#160; { &amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; var data = Foos; &amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; foreach (var foo in data) &amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; { &amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ChangeFooValue(foo); &amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; } &amp;#160; &amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; var firstFoo = data.First(); &amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Console.WriteLine(firstFoo.Value); &amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Console.ReadLine(); &amp;#160;&amp;#160;&amp;#160; } &amp;#160; &amp;#160;&amp;#160;&amp;#160; private static IEnumerableFoo Foos &amp;#160;&amp;#160;&amp;#160; { &amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; get &amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; { &amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; for (var idx = 1; idx 10; idx++) &amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; { &amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; yield return new Foo(idx); &amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; } &amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; } &amp;#160;&amp;#160;&amp;#160; } &amp;#160; &amp;#160;&amp;#160;&amp;#160; private static void ChangeFooValue(Foo foo) &amp;#160;&amp;#160;&amp;#160; { &amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; foo.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Combos en ASP.NET MVC</title><link>https://www.eiximenis.dev/posts/2013-04-25-combos-en-asp-net-mvc/</link><pubDate>Thu, 25 Apr 2013 17:21:48 +0000</pubDate><atom:modified>Thu, 25 Apr 2013 17:21:48 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2013-04-25-combos-en-asp-net-mvc/</guid><description>Buenas! Una de las preguntas más referentes en ASP.NET MVC consiste en como crear combos, enlazarlas, etc, etc… La verdad es que la documentación sobre este punto es un poco difusa y dispersa así que intentaré en este post mostrar un poco las distintas formas que tenemos en ASP.NET MVC de crear combos.
Para ilustrar las distintas opciones partimos de una clase “Database” que simula un contexto de ORM. Es una clase que simplemente tiene dos listas (estáticas), una de ciudades (Cities) y otra de provincias (States).</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>HTML5 – Que tus usuarios suban su foto a su perfil (WebRTC)</title><link>https://www.eiximenis.dev/posts/2013-04-19-html5-que-tus-usuarios-suban-su-foto-a-su-perfil-webrtc/</link><pubDate>Fri, 19 Apr 2013 10:31:41 +0000</pubDate><atom:modified>Fri, 19 Apr 2013 10:31:41 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2013-04-19-html5-que-tus-usuarios-suban-su-foto-a-su-perfil-webrtc/</guid><description>Venga, seguro que como la mitad de mortales tienes una idea de negocio que consiste en hacer una web y que te la compre Google (la otra mitad esperan que la compre Microsoft :p).
Si este es el caso, ya sabes que se trata de tener cuantos más usuarios mejor (ahí tienes el caso de Mammoth que han lanzado una campaña viral para que todos nos apuntemos allí aunque no tengamos ni idea de que va).</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Objective-C para desarrolladores de C# (ii)–Punteros</title><link>https://www.eiximenis.dev/posts/2013-04-15-objective-c-para-desarrolladores-de-c-ii-punteros/</link><pubDate>Mon, 15 Apr 2013 17:54:21 +0000</pubDate><atom:modified>Mon, 15 Apr 2013 17:54:21 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2013-04-15-objective-c-para-desarrolladores-de-c-ii-punteros/</guid><description>Aaahhh… los punteros son una de las bestias negras del desarrollo. Desterrados de los dominios de los lenguajes orientados a objetos “modernos” como Java por ser demasiado “próclives a errores” los punteros se han convertido en una especie de ser mitológico, temido por muchos desarrolladores que tiemblan cuando ven un asterisco dando vueltas por ahí… Incluso C# los tiene medio apartados por ahí, rodeados de unsafes por todas partes.
¿Qué es un puntero?</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>WebApi–Recibir en un controlador un IEnumerable desde URL</title><link>https://www.eiximenis.dev/posts/2013-03-05-webapi-recibir-en-un-controlador-un-ienumerable-desde-url/</link><pubDate>Tue, 05 Mar 2013 18:04:48 +0000</pubDate><atom:modified>Tue, 05 Mar 2013 18:04:48 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2013-03-05-webapi-recibir-en-un-controlador-un-ienumerable-desde-url/</guid><description>Muy buenas!
En un proyecto en el que estoy trabajando ha surgido la necesidad de pasarle via GET una lista de ids con los que hacer algo. La acción del controlador FinishersController está declarada de la siguiente manera:
public IEnumerableTrackingAndCompetitorDTO GetByRaces(IEnumerableint id) { &amp;#160;&amp;#160;&amp;#160; return null; } Ahora viene el momento de llamar al controlador:
/api/Finishers/10,20,30 –&amp;gt; Devuelve un 404 /api/Finishers/10 –&amp;gt; Enlaza a al acción pero id es null /api/Finishers/?</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>WebApi–Devolver tipos anónimos en XML</title><link>https://www.eiximenis.dev/posts/2013-03-04-webapi-devolver-tipos-annimos-en-xml/</link><pubDate>Mon, 04 Mar 2013 10:49:29 +0000</pubDate><atom:modified>Mon, 04 Mar 2013 10:49:29 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2013-03-04-webapi-devolver-tipos-annimos-en-xml/</guid><description>Bueno… Honestamente: este post viene a colación de que se estuvo hablando por Linkedin de dedicar hoy (4 de Marzo) un post o algo a WebApi. He de decir que personalmente, no suelo planificar de que escribo. Es decir, tengo varias series abiertas de posts, montones de artículos en borrador y luego voy escribiendo cosas según me van viniendo.
WebApi es un tema que he tratado bastante en mi blog. Uno de los temas que NO he tratado y que era un buen candidato era la exposición de servicios OData usando WebApi.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Como hacer seguros tus servicios WebApi</title><link>https://www.eiximenis.dev/posts/2013-02-20-como-hacer-seguros-tus-servicios-webapi/</link><pubDate>Wed, 20 Feb 2013 12:46:28 +0000</pubDate><atom:modified>Wed, 20 Feb 2013 12:46:28 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2013-02-20-como-hacer-seguros-tus-servicios-webapi/</guid><description>Buenas! Este post surge a raíz del comentario de Felix Manuel en mi post anterior Inyección de dependencias per-Request. En él Felix comentaba que le gustaría ver algo sobre autenticación y autorización de WebApi… así que vamos a ello.
Todo lo que comentaré en este post va destinado a servicios WebApi que queramos tener en internet. No hablaré nada de otros escenarios como intranets que pueden tener otras soluciones.
Vamos a partir del template de proyecto ASP.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Objective-C para desarrolladores de C# (i)–Introducción</title><link>https://www.eiximenis.dev/posts/2013-02-13-objective-c-para-desarrolladores-de-c-i-introduccin/</link><pubDate>Wed, 13 Feb 2013 18:34:02 +0000</pubDate><atom:modified>Wed, 13 Feb 2013 18:34:02 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2013-02-13-objective-c-para-desarrolladores-de-c-i-introduccin/</guid><description>Muy buenas! Con este post inicio una serie de posts (como siempre, ni idea de cuantos van a ser) dedicado especialmente a desarrolladores de C# que quieran empezar con Objective-C. No soy un experto en Objective-C ni esta serie pretende que te conviertas en un experto en este lenguaje. Tampoco es un tutorial de Objective-C. Es simplemente una ayuda para todos aquellos desarrolladores con un background de C# y .NET que tengan curiosidad por ver como es el lenguaje de la manzana.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>[OT] Duelo: El juego de Euler (1)</title><link>https://www.eiximenis.dev/posts/2013-02-01-ot-duelo-el-juego-de-euler-1/</link><pubDate>Fri, 01 Feb 2013 13:35:00 +0000</pubDate><atom:modified>Fri, 01 Feb 2013 13:35:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2013-02-01-ot-duelo-el-juego-de-euler-1/</guid><description>Bueno… Está por ahí Quique, que como se aburre se ha decidido a picarme un poco (pobre mortal ^_^).
Se ve que junto con Álex se han embarcado en resolver los problemas de Euler en distintos lenguajes… Álex se ha quedado con F# (el patito desconocido de .NET), mientras que Quique se ha armado con todo el poder de (mi amado) C#.
Dado que Toni Recio se ha sumado y ha pillado Javascript (quien lo ha visto y quien lo ve) yo he decidido participar, pero esta vez armado con todo el potencial de un lenguaje de programación funcional de verdad.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Inyección de dependencias per-request en MVC4 y WebApi</title><link>https://www.eiximenis.dev/posts/2013-01-31-inyeccin-de-dependencias-per-request-en-mvc4-y-webapi/</link><pubDate>Thu, 31 Jan 2013 10:44:00 +0000</pubDate><atom:modified>Thu, 31 Jan 2013 10:44:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2013-01-31-inyeccin-de-dependencias-per-request-en-mvc4-y-webapi/</guid><description>¡Muy buenas! Si desarrollais una aplicación web con MVC4 o bien una API REST con WebApi y usáis, pongamos, EF para acceder a la BBDD ya sabréis (y si no, os lo cuento ahora :P) que lo ideal es que el tiempo de vida del DbContext sea el de toda la petición web (lo mismo aplica a ISession si usáis NHibernate, por supuesto).
En muchos ejemplos y blogs se lee código parecido al siguiente (p.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Knockback: Knockout y Backbone trabajando juntos</title><link>https://www.eiximenis.dev/posts/2013-01-27-knockback-knockout-y-backbone-trabajando-juntos/</link><pubDate>Sun, 27 Jan 2013 13:51:14 +0000</pubDate><atom:modified>Sun, 27 Jan 2013 13:51:14 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2013-01-27-knockback-knockout-y-backbone-trabajando-juntos/</guid><description>Este pasado sábado 26 de febrero, tuvimos el Four Sessions de Techdencias, en el que me lo pasé genial participando junto a Marc Rubiño en un duelo entre Knockout y Backbone para ver que librería era “mejor” para construir aplicaciones web. Al final la gente votó y la verdad és que ganó Marc por KO… 😛
Como digo estuvo divertido, aunque comparar Backbone con Knockout es como comparar peras con guisantes ya que, realmente, poco tenen que ver y además son muy complementarias.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>¿Están tus servicios REST en otro servidor?</title><link>https://www.eiximenis.dev/posts/2013-01-22-estn-tus-servicios-rest-en-otro-servidor/</link><pubDate>Tue, 22 Jan 2013 13:08:59 +0000</pubDate><atom:modified>Tue, 22 Jan 2013 13:08:59 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2013-01-22-estn-tus-servicios-rest-en-otro-servidor/</guid><description>Muy buenas, en este post vamos a hablar de lo que ocurre si los servicios REST de tu aplicación están en otro servidor distinto al de tu aplicación web… Terminaremos hablando de CORS, pero antes lo haremos de JSONP y empezaremos por el…
… Orígen
No, no me refiero a la onírica película con Di Caprio, aunque muchas veces el desarrollo web se parezca a una pesadilla, si no a lo que en el mundo web entendemos como el origen de una web.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>jQuery 1.9 y el “unobtrusive ajax” de ASP.NET MVC</title><link>https://www.eiximenis.dev/posts/2013-01-18-jquery-1-9-y-el-unobtrusive-ajax-de-asp-net-mvc/</link><pubDate>Fri, 18 Jan 2013 12:08:02 +0000</pubDate><atom:modified>Fri, 18 Jan 2013 12:08:02 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2013-01-18-jquery-1-9-y-el-unobtrusive-ajax-de-asp-net-mvc/</guid><description>Hace justo casi nada que ha salido la nueva versión de jQuery 1.9 y he aprovechado para actualizar una aplicación web que tenía a medias.
Pues bien, si actualizas una aplicación ASP.NET MVC que use unobtrusive ajax y actualizas a ASP.NET MVC… deja de funcionar. Pero vayamos por partes…
Reproducción del problema
Abre VS2012 y crea un nuevo proyecto ASP.NET MVC4. Usa la plantilla Basic (no la Empty). Podemos ver como por defecto nos ha agregado, entre otros, el fichero jQuery-unobstrusive-ajax.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ASP.NET WebApi – Establecer una cookie desde un ApiController</title><link>https://www.eiximenis.dev/posts/2013-01-16-asp-net-webapi-establecer-una-cookie-desde-un-apicontroller/</link><pubDate>Wed, 16 Jan 2013 16:47:06 +0000</pubDate><atom:modified>Wed, 16 Jan 2013 16:47:06 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2013-01-16-asp-net-webapi-establecer-una-cookie-desde-un-apicontroller/</guid><description>Hoy, para una prueba de concepto que estoy realizando, me he encontrado con la necesidad de establecer una cookie desde un controlador de ASP.NET WebApi (un ApiController). Por supuesto podríamos discutir largo y tendido sobre la conveniencia de hacer esto o no (si suponemos que dichos controladores van a ser accedidos por clientes que no sean navegadores y por lo tanto pueden no entender las cookies). Pero obviando esta discusión el problema está en que desde el controlador no podemos acceder al objeto Response (a diferencia de un controlador MVC tradicional).</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>[Javascript] – null vs undefined</title><link>https://www.eiximenis.dev/posts/2013-01-14-javascript-null-vs-undefined/</link><pubDate>Mon, 14 Jan 2013 18:13:30 +0000</pubDate><atom:modified>Mon, 14 Jan 2013 18:13:30 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2013-01-14-javascript-null-vs-undefined/</guid><description>Buenas un post rapidito!! 😉
El otro día en un curso sobre patrones Javascript que estaba impartiendo surgió una de las dos(*) eternas dudas sobre Javascript. Uno de los alumnos (probablemente el único que estaba despierto) me preguntó “¿y cual es la diferencia exacta entre null y undefined?”.
Es curioso la desinformación que existe sobre este tema, cuando en realidad es muy simple. Por supuesto buscando por internet aparecen multitud de páginas sobre el tema, ¡pero es que he visto varias que están mal!</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>¡Adiós 2012 y hola 2013!</title><link>https://www.eiximenis.dev/posts/2013-01-03-adis-2012-y-hola-2013/</link><pubDate>Thu, 03 Jan 2013 11:00:49 +0000</pubDate><atom:modified>Thu, 03 Jan 2013 11:00:49 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2013-01-03-adis-2012-y-hola-2013/</guid><description>Bueno… se ha terminado el 2012. Un año que ha traído dos cambios importantes en mi vida. Por un lado en Febrero nació mi hija Noa, lo que hizo que realmente todo fuese distinto y también, para que negarlo, que la cantidad de tiempo libre disminuyese exponencialmente. Y por otro en diciembre dejé raona para entrar a formar parte de pasiona y techdencias. No hay ninguna razón especial para dejar raona (un sitio donde he estado muy a gusto y donde se trabaja muy bien), solo que ya hacía demasiado tiempo que estaba allí y necesitaba un cambio de aires.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Charlas del 2013</title><link>https://www.eiximenis.dev/talks/2013/</link><pubDate>Tue, 01 Jan 2013 00:00:00 +0000</pubDate><atom:modified>Tue, 01 Jan 2013 00:00:00 +0000</atom:modified><guid>https://www.eiximenis.dev/talks/2013/</guid><description>4 Sessions Enero Las 4 sessions eran (¿son?) la serie de charlas organizadas por Techdencias: como su nombre indica 4 charlas, para pasar una mañana hablando de tecnología. En las 4 sessions de Enero del 2013 me enfrenté a Marc Rubiño para dilucidar cual de los dos frameworks para desarrollar aplicaciones web era el mejor: Si knockout o bien Backbone.
Enlace del evento 4 Sessions Junio En la edición de Junio de las 4 se3ssions hablé sobre interfaces REST: el modelo de madurez de Richardson así como consejos básicos para diseñar e implementar APIs REST.</description><dc:creator>eiximenis</dc:creator></item><item><title>HTML5 Apis – Crea tu propio Instagram</title><link>https://www.eiximenis.dev/posts/2012-12-14-html5-apis-crea-tu-propio-instagram/</link><pubDate>Fri, 14 Dec 2012 14:41:00 +0000</pubDate><atom:modified>Fri, 14 Dec 2012 14:41:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2012-12-14-html5-apis-crea-tu-propio-instagram/</guid><description>Sigamos con la serie de posts sobre las APIs de HTML5. Ahora le toca al canvas, uno de los elementos más revolucionarios de HTML5. Yo siempre digo que si hirío a Flash, entonces lo mata definitivamente.
Que es el canvas? Pues dicho rápido y mal: Un nuevo elemento de HTML, que nos permite tener una superficie de dibujo. El canvas por si mismo no tiene una API asociada, en su lugar se obtiene un contexto de dibiujo sobre el canvas.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>HTML5 Apis – Upload de ficheros con Ajax, File Api y Progress Api</title><link>https://www.eiximenis.dev/posts/2012-12-12-html5-apis-upload-de-ficheros-con-ajax-file-api-y-progress-api/</link><pubDate>Wed, 12 Dec 2012 17:13:39 +0000</pubDate><atom:modified>Wed, 12 Dec 2012 17:13:39 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2012-12-12-html5-apis-upload-de-ficheros-con-ajax-file-api-y-progress-api/</guid><description>¡Buenas! En el post anterior vimos el funcionamiento de File Api y como leer ficheros locales en servidor. En este post vamos a seguir usando File Api pero lo vamos a combinar con XMLHttpRequest y progress Api para ver como podemos hacer uploads de ficheros al servidor de forma fácil y asíncrona.
Para empezar vamos a montar la página:
DOCTYPE html html head &amp;#160;&amp;#160;&amp;#160; meta name="viewport" content="width=device-width" / &amp;#160;&amp;#160;&amp;#160; titleIndextitle head body &amp;#160;&amp;#160;&amp;#160; div &amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Selecciona fichero.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>HTML5 Apis: File API</title><link>https://www.eiximenis.dev/posts/2012-12-05-html5-apis-file-api/</link><pubDate>Wed, 05 Dec 2012 16:53:00 +0000</pubDate><atom:modified>Wed, 05 Dec 2012 16:53:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2012-12-05-html5-apis-file-api/</guid><description>¡Muy buenas! Vamos a empezar una serie de posts (que como digo siempre, a ver donde nos llevan) sobre las APIs de HTML5, dado que hay muchas (algunas más conocidas que otras). La que veremos en este post es File API que dicho rápidamente nos permite leer ficheros locales usando javascript.
Si al leer que ahora podemos leer ficheros desde javascript se te han puesto los pelos como escarpias pensando en los posibles agujeros de seguridad, tranquilo: no hay forma alguna de leer un fichero a través de su ruta.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>El orden de los algoritmos… esa gran O.</title><link>https://www.eiximenis.dev/posts/2012-11-28-el-orden-de-los-algoritmos-esa-gran-o/</link><pubDate>Wed, 28 Nov 2012 17:30:58 +0000</pubDate><atom:modified>Wed, 28 Nov 2012 17:30:58 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2012-11-28-el-orden-de-los-algoritmos-esa-gran-o/</guid><description>¡Muy buenas! Este va a ser un post teórico que nada tiene que ver con el desarrollo concreto en .NET. Lo que vamos a decir aquí es aplicable a cualquier algoritmo, esté implementado en .NET, Java, Scala, Javascript, Dart, Smalltalk o cualquier otro lenguaje existente. No, no voy a hablar de buenas prácticas, ni nada parecido. Voy a hablar de un concepto que se usa en la ingenería del softwara para clasificar algoritmos en función de bueno… eso lo veremos con más detalle.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ASP.NET SimpleMembership: Una vuelta de tuerca más</title><link>https://www.eiximenis.dev/posts/2012-11-25-asp-net-simplemembership-una-vuelta-de-tuerca-ms/</link><pubDate>Sun, 25 Nov 2012 23:36:05 +0000</pubDate><atom:modified>Sun, 25 Nov 2012 23:36:05 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2012-11-25-asp-net-simplemembership-una-vuelta-de-tuerca-ms/</guid><description>Cuando, allá por el 2005, aparecía ASP.NET 2.0 una de las novedades que incorporaba era el sistema de Membership. Dicho sistema pretendía ser una solución unificada para solucionar problemas de autenticación y autorización de usuarios. La idea era muy simple: en lugar de que los controles web (recordad, estamos en 2005, MVC no existe) accedan a la BBDD directamente (o el proveedor de autorización usado, como Active Directory) para comprobar logins y passwords se usa una capa intermedia que centralice dichos accesos.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ASP.NET WebApi y X-HTTP-Method-Override</title><link>https://www.eiximenis.dev/posts/2012-11-21-asp-net-webapi-y-x-http-method-override/</link><pubDate>Wed, 21 Nov 2012 18:13:16 +0000</pubDate><atom:modified>Wed, 21 Nov 2012 18:13:16 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2012-11-21-asp-net-webapi-y-x-http-method-override/</guid><description>Muy buenas! Después de largo tiempo vuelvo a la carga con otro post sobre ASP.Net WebApi. En un post anterior vimos como WebApi usaba automáticamente el verbo http usado para invocar el método correspondiente del controlador. Eso está muy bien en aquellos casos en que el cliente es una aplicación de escritorio y tiene acceso a todos los verbos http posibles. Pero si el cliente es una aplicación web es posible que tan solo tenga acceso a dos de los verbos http: GET y POST.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Promise Pattern</title><link>https://www.eiximenis.dev/posts/2012-11-16-promise-pattern/</link><pubDate>Fri, 16 Nov 2012 13:28:50 +0000</pubDate><atom:modified>Fri, 16 Nov 2012 13:28:50 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2012-11-16-promise-pattern/</guid><description>¡Buenas!
Este post está “inspirado” por un tweet de Gisela Torres. Posteriormente ella misma hizo un post en su blog sobre este mismo patrón que os recomiendo leer.
Ultimamente está muy de moda, al menos en el mundo de Javascript, hablar del Promise pattern (lo siento, pero llega un punto en que yo ya desisto de intentar encontrar traducciones para todo…). Ese patrón se asocia mucho con la realización de aplicaciones asíncronas, llegándose a ver como el mecanismo para la realización de este tipo de aplicaciones.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Integra oAuth en tus “viejas” aplicaciones ASP.NET MVC</title><link>https://www.eiximenis.dev/posts/2012-11-14-integra-oauth-en-tus-viejas-aplicaciones-asp-net-mvc/</link><pubDate>Wed, 14 Nov 2012 09:20:05 +0000</pubDate><atom:modified>Wed, 14 Nov 2012 09:20:05 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2012-11-14-integra-oauth-en-tus-viejas-aplicaciones-asp-net-mvc/</guid><description>En el post anterior vimos como integrar pseudo-autenticación basada en oAuth en aplicaciones MVC4, usando el paquete Microsoft WebPages OAuth Library. Pero… qué ocurre con versiones anteriores? O bien si no queréis usar este paquete? Es muy difícil integrar pseudo-autenticación basada en oAuth entonces?
Hace algún tiempo tuve precisamente esta necesidad y estuve buscando librerías que me permitiesen integrar oAuth en mi aplicación de una forma cómoda. Como todo el mundo terminé por encontrar DotNetOpenAuth pero al final no la usé.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Integra oAuth en tu aplicación ASP.NET MVC</title><link>https://www.eiximenis.dev/posts/2012-11-13-integra-oauth-en-tu-aplicacin-asp-net-mvc/</link><pubDate>Tue, 13 Nov 2012 16:39:44 +0000</pubDate><atom:modified>Tue, 13 Nov 2012 16:39:44 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2012-11-13-integra-oauth-en-tu-aplicacin-asp-net-mvc/</guid><description>¡Buenas! Una de las novedades de ASP.NET MVC4 es la facilidad para incorporar pseudo-autenticación basada en oAuth. Si seleccionamos la plantilla de proyecto de “internet application” esta ya viene configurada por defecto y usarla es de lo más sencillo.
Veamos ahora como añadirla en el caso de que estemos usando otra plantilla de proyecto. En este caso usaremos la plantilla de proyecto “Empty” que en el caso de MVC4 significa vacío de verdad, ya que no tendremos apenas nada en nuestro proyecto.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Y el combate se decidió por KO (vi)–Validaciones</title><link>https://www.eiximenis.dev/posts/2012-10-05-y-el-combate-se-decidi-por-ko-vi-validaciones/</link><pubDate>Fri, 05 Oct 2012 12:06:25 +0000</pubDate><atom:modified>Fri, 05 Oct 2012 12:06:25 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2012-10-05-y-el-combate-se-decidi-por-ko-vi-validaciones/</guid><description>Bueno… sigamos con otro post sobre esta serie en la que vamos hablando de cosas sobre knockout. Y en esta ocasión toca hablar de como validar los campos que tengamos enlazados en un formulario.
Dado que estamos moviendo toda nuestra lógica al viewmodel de cliente, es lógico asumir que las validaciones irán también en él, en lugar de estar “ancladas” al DOM como ocurre cuando usamos jQuery validate, p.ej. Si usamos knockout lo normal es tener los campos de nuestro formulario enlazados con propiedades de nuestro viewmodel.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>[Kata]- Cambio con monedas</title><link>https://www.eiximenis.dev/posts/2012-10-04-kata-cambio-con-monedas/</link><pubDate>Thu, 04 Oct 2012 17:56:10 +0000</pubDate><atom:modified>Thu, 04 Oct 2012 17:56:10 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2012-10-04-kata-cambio-con-monedas/</guid><description>Muy buenas! Puro divertimento 🙂
Os propongo un kata por si quereis entrenar las neuronas. Por supuesto no es un kata original mío (soy muy malo para eso), de hecho es un kata creo que bastante famosillo, pero es uno con el que me he enfrentado no hace mucho…
El enunciado es muy simple… Crear una función que reciba dos parámetros: Un entero que represente una cantidad de dinero, y una colección que represente los tipos de monedas de los que disponemos.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Y el combate se decició por KO (v): Filtrando colecciones</title><link>https://www.eiximenis.dev/posts/2012-10-03-y-el-combate-se-decici-por-ko-v-filtrando-colecciones/</link><pubDate>Wed, 03 Oct 2012 15:12:00 +0000</pubDate><atom:modified>Wed, 03 Oct 2012 15:12:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2012-10-03-y-el-combate-se-decici-por-ko-v-filtrando-colecciones/</guid><description>Muy buenas! Tras un parón, volvemos a la carga con la serie que trata sobre knockoutjs. Recuerda que puedes ver todos los artículos de esta serie.
En este post vamos a ver como filtrar colecciones con knockout.
Como siempre comenzamos con una clase Beer y un controlador de WebApi que devuelva una colección de elementos Beer. La clase Beer es tal como sigue:
public class Beer { &amp;nbsp;&amp;nbsp;&amp;nbsp; public string Name { get; set; } &amp;nbsp;&amp;nbsp;&amp;nbsp; public string Brewery { get; set; } &amp;nbsp;&amp;nbsp;&amp;nbsp; public int Ibu { get; set; } } Bien, ahora vamos a realizar una vista (Home/Index) que me muestre el listado de cervezas.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Y el combate se decidió por KO (iv): Choque de viewmodels</title><link>https://www.eiximenis.dev/posts/2012-08-29-y-el-combate-se-decidi-por-ko-iv-choque-de-viewmodels/</link><pubDate>Wed, 29 Aug 2012 18:22:00 +0000</pubDate><atom:modified>Wed, 29 Aug 2012 18:22:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2012-08-29-y-el-combate-se-decidi-por-ko-iv-choque-de-viewmodels/</guid><description>Disclaimer: Este post es un poco distinto al resto de posts de esta serie sobre knockout. De hecho no tenía presente escribirlo pero lo he hecho cuando he visto la cantidad de preguntas relativas a ello que aparecen por Google. Aunque lo he reescrito varias veces, entiendo que puede ser un post durillo de leer, especialmente si no se tiene experiencia previa en ASP.NET MVC. Si NO quieres leerte este post, no te preocupes: no es necesario para nada para entender el resto de posts de la serie, ni explica nada nuevo sobre knockout que no hayamos vistos en los 3 anteriores.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Y el combate se decidió por KO (iii)</title><link>https://www.eiximenis.dev/posts/2012-08-04-y-el-combate-se-decidi-por-ko-iii/</link><pubDate>Sat, 04 Aug 2012 18:54:59 +0000</pubDate><atom:modified>Sat, 04 Aug 2012 18:54:59 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2012-08-04-y-el-combate-se-decidi-por-ko-iii/</guid><description>Bueno, continuamos aquí nuestra serie explorando las maravillas de Knockout. Todos los posts de esta serie los podéis encontrar en: http://geeks.ms/blogs/etomas/archive/tags/knockout/default.aspx
Serializando viewmodels
En el post anterior, vimos los observables de knockout y como funcionaban. Vimos como crear un formulario, enlazarlo a un viewmodel que usara observables y como mandar el viewmodel serializado en json hacia un servicio REST.
Ciertamente, el tema de la serialización a JSON de nuestro viewmodel era un poco peliagudo.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>El problema de la WebGrid con VS2012RC y ASP.NET MVC4</title><link>https://www.eiximenis.dev/posts/2012-08-02-el-problema-de-la-webgrid-con-vs2012rc-y-asp-net-mvc4/</link><pubDate>Thu, 02 Aug 2012 13:23:45 +0000</pubDate><atom:modified>Thu, 02 Aug 2012 13:23:45 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2012-08-02-el-problema-de-la-webgrid-con-vs2012rc-y-asp-net-mvc4/</guid><description>Nota: Este post está basado en la versión RC de VS2012 y la versión RC de MVC4 y es posible (o eso espero, vaya!) que en la versión final no haya los problemas que este post menciona!
Buenas! Coje un VS2102RC y crea un nuevo proyecto ASP.NET MVC4, con la plantilla “Basic”.
Crea el HomeController, crea la acción Index y añádele un código tal como:
1: public ActionResult Index() &amp;lt;p&amp;gt; &amp;lt;!</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Y el combate se decidió por KO (ii)</title><link>https://www.eiximenis.dev/posts/2012-08-01-y-el-combate-se-decidi-por-ko-ii/</link><pubDate>Wed, 01 Aug 2012 13:36:00 +0000</pubDate><atom:modified>Wed, 01 Aug 2012 13:36:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2012-08-01-y-el-combate-se-decidi-por-ko-ii/</guid><description>Como indica el título del post, ese es el segundo post de la serie que he empezado sobre knockout. Honestamente no sé cuantos posts habrá ni donde me (nos) llevará, pero espero que os sea útil!
En el post anterior (el primero) vimos un poco que era knockout y como mostrar datos devueltos a partir de un servicio REST implementado con WebApi. Ahora toca ir un poco más allá&amp;hellip;
Formulario que te quiero formulario</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Y el combate se decidió por KO (i)</title><link>https://www.eiximenis.dev/posts/2012-07-31-y-el-combate-se-decidi-por-ko-i/</link><pubDate>Tue, 31 Jul 2012 15:33:00 +0000</pubDate><atom:modified>Tue, 31 Jul 2012 15:33:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2012-07-31-y-el-combate-se-decidi-por-ko-i/</guid><description>Hace algunas semanas salió un post de Shaun Walker titulado “Microsoft Declares the future of ASP.NET is Web API”. La verdad es que el post es interesante. Yo no sé cuales serán las intenciones de Microsoft (creo que ni ellos las saben realmente) pero lo que si es cierto es que las aplicaciones web están realmente cambiando a un modelo donde cada vez se procesa más en cliente y menos en servidor.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Bundles en ASP.NET MVC4</title><link>https://www.eiximenis.dev/posts/2012-07-30-bundles-en-asp-net-mvc4/</link><pubDate>Mon, 30 Jul 2012 17:08:11 +0000</pubDate><atom:modified>Mon, 30 Jul 2012 17:08:11 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2012-07-30-bundles-en-asp-net-mvc4/</guid><description>¡Buenas! Este va a ser un post cortito, sobre los Bundles en ASP.NET MVC. Los bundles es el mecanismo que tiene ASP.NET MVC para incluir varios ficheros (de script o css) que están relacionados entre ellos.
Si os creáis un proyecto de ASP.NET MVC4 nuevo (sin que sea la plantilla Empy, claro) veréis el siguiente código en la página de Layout:
1: &amp;lt;!DOCTYPE html&amp;gt; &amp;lt;p&amp;gt; &amp;lt;!--CRLF--&amp;gt; &amp;lt;/p&amp;gt; &amp;lt;pre style=&amp;quot;border-top-style: none; overflow: visible; font-size: 8pt; border-left-style: none; font-family: &amp;amp;#39;Courier New&amp;amp;#39;, courier, monospace; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; line-height: 12pt; padding-right: 0px; width: 100%; background-color: #f4f4f4&amp;quot;&amp;gt;&amp;lt;span id=&amp;quot;lnum2&amp;quot; style=&amp;quot;color: #606060&amp;quot;&amp;gt; 2:&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #0000ff&amp;quot;&amp;gt;&amp;amp;lt;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #800000&amp;quot;&amp;gt;html&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #0000ff&amp;quot;&amp;gt;&amp;amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/pre&amp;gt; &amp;lt;p&amp;gt; &amp;lt;!</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>[OT] El peor móvil de la história</title><link>https://www.eiximenis.dev/posts/2012-07-12-ot-el-peor-mvil-de-la-histria/</link><pubDate>Thu, 12 Jul 2012 15:17:54 +0000</pubDate><atom:modified>Thu, 12 Jul 2012 15:17:54 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2012-07-12-ot-el-peor-mvil-de-la-histria/</guid><description>Este es un post para desahogarme… 🙂
¿Cual es para vosotros el peor móvil de la historia? O al menos, ¿el peor móvil que nunca hayáis tenido? El mío, lo tengo clarísimo: El LG Optimus 2X del que soy un desgraciado poseedor ahora mismo.
La verdad es dificil hacerlo tan mal como lo ha hecho LG. Parece imposible tanta incompetencia junta a todos los niveles.
Este móvil era el estandarte de LG cuando salió a principios del 2011.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ASP.NET MVC: Encriptar RouteValues</title><link>https://www.eiximenis.dev/posts/2012-07-08-asp-net-mvc-encriptar-routevalues/</link><pubDate>Sun, 08 Jul 2012 18:36:37 +0000</pubDate><atom:modified>Sun, 08 Jul 2012 18:36:37 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2012-07-08-asp-net-mvc-encriptar-routevalues/</guid><description>Muy buenas! El otro día publicaba en mi blog una solución para encriptar la querystring en ASP.NET MVC. A raiz de este post, me preguntaron si era posible hacer lo mismo pero en el caso de que tengamos URL amigables y como se podría hacer.
La respuesta es que sí, que se puede hacer y que a diferencia del caso de la querystring tenemos dos opciones.
Opción 1 – Value Provider</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ASP.NET MVC: Encriptar la query string</title><link>https://www.eiximenis.dev/posts/2012-07-03-asp-net-mvc-encriptar-la-query-string/</link><pubDate>Tue, 03 Jul 2012 21:09:16 +0000</pubDate><atom:modified>Tue, 03 Jul 2012 21:09:16 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2012-07-03-asp-net-mvc-encriptar-la-query-string/</guid><description>Buenas! Este post surge debido a esta pregunta del foro de ASP.NET MVC. El usuario se pregunta si existe en el framework una manera built-in de encriptar la query string. Y la realidad es que no, no la hay, pero añadir una es muy sencillo y me da una excusa perfecta para poner un buen ejemplo del poder de los value providers.
ASP.NET MVC está construído de una forma bastante flexible, pero en el pipeline de una petición hay más o menos 4 pasos:</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Microsoft MVP 2012</title><link>https://www.eiximenis.dev/posts/2012-07-01-microsoft-mvp-2012/</link><pubDate>Sun, 01 Jul 2012 18:25:24 +0000</pubDate><atom:modified>Sun, 01 Jul 2012 18:25:24 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2012-07-01-microsoft-mvp-2012/</guid><description>¡Muy buenas!
Hoy al mirar el correo me he llevado una más que grata sorpresa: he sido reconocido como MVP en el área de ASP.NET / IIS.
Es para mi un honor pertenecer a este grupo, y además en la categoría de ASP.NET junto con monstruos de la talla de José M. Aguilar o Marc Rubiño sin ir más lejos!
Y ya que estoy en mi tarima particular, me gustaría aprovechar para dar las gracias a todos los que han hecho que entrase en eso que se conoce como “la comunidad”.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ASP.NET MVC: Edición de colecciones usando Ajax</title><link>https://www.eiximenis.dev/posts/2012-07-01-asp-net-mvc-edicin-de-colecciones-usando-ajax/</link><pubDate>Sun, 01 Jul 2012 17:55:01 +0000</pubDate><atom:modified>Sun, 01 Jul 2012 17:55:01 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2012-07-01-asp-net-mvc-edicin-de-colecciones-usando-ajax/</guid><description>Buenas! El otro día me enviaron la siguiente duda:
Imaginate esto:
class Direccion{
string Calle {get;set;}
int Piso {get;set;}
}
class Cliente {
string Nombre {get;set;}
List Direcciones {get;set;}
}
Imagina que tiene mas propiedades cada clase pero para el ejemplo sirve.
Entonces tengo una Vista para definir la información de Cliente:
Donde van a aparecer los campos para rellenar el cliente. Dentro voy a tener un boton que va a ir agregandome vistas parciales con la info de Direcciones.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ASP.NET MVC: Mandar un byte[]</title><link>https://www.eiximenis.dev/posts/2012-06-26-asp-net-mvc-mandar-un-byte/</link><pubDate>Tue, 26 Jun 2012 23:12:02 +0000</pubDate><atom:modified>Tue, 26 Jun 2012 23:12:02 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2012-06-26-asp-net-mvc-mandar-un-byte/</guid><description>Este post surge a raíz de la siguiente pregunta en los foros de ASP.NET MVC de MSDN: http://social.msdn.microsoft.com/Forums/es-ES/aspnetmvces/thread/20a6935c-5903-4efd-8ca1-f5a70a047a15. El usuario se pregunta como mandar un byte[] de la vista al controlador. Y comenta que lo hace de la siguiente manera:
&amp;lt;iframe src="&amp;lt;%: Url.Action("GenerarPdf", "Consulta", new { documento = Model.Documento})%&amp;gt;" width="725" height="725"&amp;gt;&amp;lt;/iframe&amp;gt; En el controlador tiene definida la acción correspondiente con un parámetro llamado documento de tipo byte[]. Y comenta que siempre recibe el parámetro con el valor null.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Lidiando con oAuth (1/n) – Pseudoautenticacion oAuth</title><link>https://www.eiximenis.dev/posts/2012-06-01-lidiando-con-oauth-1n-pseudoautenticacion-oauth/</link><pubDate>Fri, 01 Jun 2012 11:04:46 +0000</pubDate><atom:modified>Fri, 01 Jun 2012 11:04:46 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2012-06-01-lidiando-con-oauth-1n-pseudoautenticacion-oauth/</guid><description>Muy buenas! Este post es el primero de una serie de “n” donde veremos como podemos lidiar un poco con oAuth 1.0a. Vamos a ver como implementar un cliente y lo más interesante un proveedor.
Para seguir esta serie de posts recomiendo la lectura del documento “Entendiendo oAuth” que he dejado en Slideshare (http://www.slideshare.net/eduardtomas/entendiendo-o-auth) donde se describe brevemente el procolo oAuth y los distintos flujos asociados a él.
Comentaros también que he dejado en codeplex una librería que os va a permtir crear de forma extremadamente fácil un proveedor de oAuth para ASP.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>El misterioso caso de la ListBox con un solo elemento</title><link>https://www.eiximenis.dev/posts/2012-05-15-el-misterioso-caso-de-la-listbox-con-un-solo-elemento/</link><pubDate>Tue, 15 May 2012 15:26:31 +0000</pubDate><atom:modified>Tue, 15 May 2012 15:26:31 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2012-05-15-el-misterioso-caso-de-la-listbox-con-un-solo-elemento/</guid><description>Un post rapidito, para comentar algo que sucedió ayer…
Ayer por la tarde puse el siguiente tweet: http://twitter.com/#!/eiximenis/status/202060274260389888. Básicamente mostraba una ListBox en la cual tras añadirle un único elemento soltaba una OutOfMemoryException indicando que había demasiados elementos en la dicha lista:
 Vale que winforms tiene sus limitaciones, pero eso parece un poco excesivo, ¿no?
Mirando el valor de lstComandos.Count puedo ver que el elemento se ha añadido (antes de hacer el Add la lista estaba vacía) pero que después me lanza la excepción.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Cargar información de reflection sin cargar el assembly</title><link>https://www.eiximenis.dev/posts/2012-05-10-cargar-informacin-de-reflection-sin-cargar-el-assembly/</link><pubDate>Thu, 10 May 2012 17:27:46 +0000</pubDate><atom:modified>Thu, 10 May 2012 17:27:46 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2012-05-10-cargar-informacin-de-reflection-sin-cargar-el-assembly/</guid><description>Bueno… veamos un post rapidito. En un proyecto en el que he participado hemos estado personalizando Visual Studio a través de varios custom editors, plugins, packages y demás fauna que pulula por la selva de extensibilidad de Visual Studio.
Estos editores, addines y demás necesitaban acceder a información de Reflection de la propia DLL que se estaba compilando. Teóricamente obtener la información es muy sencillo. Basta con obtener la ruta a la DLL que se está compilando:</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>[C# Básico] Métodos con parámetros variables</title><link>https://www.eiximenis.dev/posts/2012-05-02-c-bsico-mtodos-con-parmetros-variables/</link><pubDate>Wed, 02 May 2012 12:07:57 +0000</pubDate><atom:modified>Wed, 02 May 2012 12:07:57 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2012-05-02-c-bsico-mtodos-con-parmetros-variables/</guid><description>¡Hey! Dos entradas de la serie C# Básico en menos de un mes… ¿Señal de algo? Quien sabe… 😛
Antes que nada el aviso típico de esta serie: En esos posts exploramos elementos, digamos, básicos del lenguaje. No es un tutorial ni un libro ni nada. Cada post es independiente del resto y pueden ser leídos en el orden en que prefiráis… Dicho esto, al tajo.
Bueno, en este post veremos como funcionan los métodos con parámetros variables en C#.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>[C# Básico] Paso por referencia</title><link>https://www.eiximenis.dev/posts/2012-04-23-c-bsico-paso-por-referencia/</link><pubDate>Mon, 23 Apr 2012 10:50:45 +0000</pubDate><atom:modified>Mon, 23 Apr 2012 10:50:45 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2012-04-23-c-bsico-paso-por-referencia/</guid><description>¡Buenas! Este es un nuevo post de la serie C# Básico, que como su propio nombre indica trata sobre aspectos digamos elementales del lenguaje. Cada post es independiente y el orden de publicación no tiene porque ser el de lectura. Los temas los voy sacando de los foros o consultas que se me realizan 🙂
Hoy vamos a tratar un tema que veo que causa mucha confusión: el paso de parámetros por referencia.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>[Evento] ¡Geek-â-Paloozaaa en Andorra!</title><link>https://www.eiximenis.dev/posts/2012-04-20-evento-geek-paloozaaa-en-andorra/</link><pubDate>Fri, 20 Apr 2012 12:27:56 +0000</pubDate><atom:modified>Fri, 20 Apr 2012 12:27:56 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2012-04-20-evento-geek-paloozaaa-en-andorra/</guid><description>Yeah!!!
Nada, cuatro palabras para decir que este sábado 21 de Abril estaré en Andorra, en el primer Geek-â-Paloozaaa compartiendo charlas con otros auténticos monstruos.
Yo voy a hablar sobre async y await, lo que en el fondo me va a dar una excusa perfecta para aburriros a todos sobre el desarrollo de aplicaciones asíncronas en .NET y como ha ido evolucionando el tema a lo largo de las versiones del framework…</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Webforms: Forzar postbacks</title><link>https://www.eiximenis.dev/posts/2012-04-16-webforms-forzar-postbacks/</link><pubDate>Mon, 16 Apr 2012 10:08:00 +0000</pubDate><atom:modified>Mon, 16 Apr 2012 10:08:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2012-04-16-webforms-forzar-postbacks/</guid><description>&lt;p>Jejejee&amp;hellip; Sí, aunque no lo parezca &lt;em>a veces&lt;/em> hago temillas con Webforms, y es que uno tiene que conocer al enemigo! 😛&lt;/p>
&lt;p>Lo que voy a comentar hoy, es como forzar un postback desde un control propio.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Catálogo en ASP.NET MVC3 sin usar BBDD</title><link>https://www.eiximenis.dev/posts/2012-04-14-catlogo-en-asp-net-mvc3-sin-usar-bbdd/</link><pubDate>Sat, 14 Apr 2012 00:38:57 +0000</pubDate><atom:modified>Sat, 14 Apr 2012 00:38:57 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2012-04-14-catlogo-en-asp-net-mvc3-sin-usar-bbdd/</guid><description>&lt;p>Bueno… este es un post por “encargo”… Hoy he recibido un &lt;a href="http://twitter.com/#!/JanoRuiz/status/190777187899670528" target="_blank" rel="noopener noreferrer">tweet de @JanoRuiz&lt;/a> que decía lo siguiente: &lt;em>Hola, Saludos, una Consulta, Como Hacer Un Catalogo En asp.net mvc3 Sin Usar BD, Hacer Altas, Bajas y Modificaciones&lt;/em>.&lt;/p>
&lt;p>Bueno, vamos a explorar algunas “formas de hacerlo”… 😀&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>¿Qué hay de malo en este código? (C#)</title><link>https://www.eiximenis.dev/posts/2012-04-03-qu-hay-de-malo-en-este-cdigo-c/</link><pubDate>Tue, 03 Apr 2012 10:11:20 +0000</pubDate><atom:modified>Tue, 03 Apr 2012 10:11:20 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2012-04-03-qu-hay-de-malo-en-este-cdigo-c/</guid><description>&lt;p>Buenas 🙂&lt;/p>
&lt;p>Al estilo de muchos blogs que visito habitualmente y que proponen pequeños acertijos en base a un código que tiene un error (muchas veces no aparente, otras más evidente), os propongo hoy uno, que me he encontrado revisando código.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>[WebCast] ASP.NET MVC para desarrolloweb</title><link>https://www.eiximenis.dev/posts/2012-02-26-webcast-asp-net-mvc-para-desarrolloweb/</link><pubDate>Sun, 26 Feb 2012 20:24:57 +0000</pubDate><atom:modified>Sun, 26 Feb 2012 20:24:57 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2012-02-26-webcast-asp-net-mvc-para-desarrolloweb/</guid><description>&lt;p>Muy buenas!!! El 14 de Marzo voy a dejar de cambiar pañales durante un par de horas y voy a realizar un webcast para la gente de &lt;a href="http://www.desarrolloweb.com" target="_blank" rel="noopener noreferrer">desarrolloweb&lt;/a> hablando sobre ASP.NET MVC 3 (no, no vamos a comentar nada sobre la Beta 4 ya que eso daría para otro webcast).&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Explorando ASP.NET MVC4 WebAPI–3: Formatos de salida</title><link>https://www.eiximenis.dev/posts/2012-02-19-explorando-asp-net-mvc4-webapi-3-formatos-de-salida/</link><pubDate>Sun, 19 Feb 2012 23:19:19 +0000</pubDate><atom:modified>Sun, 19 Feb 2012 23:19:19 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2012-02-19-explorando-asp-net-mvc4-webapi-3-formatos-de-salida/</guid><description>&lt;p>Bueno… seguimos esta serie explorando ASP.NET WebAPI. En este post vamos a hablar de los formatos de salida. Como ya hemos dicho, de serie ASP.NET WebAPI tiene soporte para XML y para JSON. Pero… como decide el framework si enviar la salida en XML o en JSON?&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Explorando ASP.NET MVC4 WebAPI – 2: Enrutamiento y verbos HTTP propios</title><link>https://www.eiximenis.dev/posts/2012-02-19-explorando-asp-net-mvc4-webapi-2-enrutamiento-y-verbos-http-propios/</link><pubDate>Sun, 19 Feb 2012 10:46:31 +0000</pubDate><atom:modified>Sun, 19 Feb 2012 10:46:31 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2012-02-19-explorando-asp-net-mvc4-webapi-2-enrutamiento-y-verbos-http-propios/</guid><description>&lt;p>Buenas! Este es el segundo post de la serie que trata sobre ASP.NET Web API una de las grandes novedades que vienen con ASP.NET MVC. El primer post de la serie fue la &lt;a href="http://geeks.ms/blogs/etomas/archive/2012/02/17/explorando-asp-net-mvc4-webapis-1-introducci-243-n.aspx">introducción&lt;/a>. Lo que quiero comentar antes que nada es que esta serie la estoy escribiendo no como un tutorial de ASP.NET Web API desde el punto de vista de un experto (porque no lo soy) sino desde el punto de vista de alguien que conoce ASP.NET MVC y está empezando a explorar Web API.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Explorando ASP.NET MVC4 WebApis – 1: Introducción</title><link>https://www.eiximenis.dev/posts/2012-02-17-explorando-asp-net-mvc4-webapis-1-introduccin/</link><pubDate>Fri, 17 Feb 2012 18:28:00 +0000</pubDate><atom:modified>Fri, 17 Feb 2012 18:28:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2012-02-17-explorando-asp-net-mvc4-webapis-1-introduccin/</guid><description>&lt;blockquote>
&lt;/blockquote>
&lt;p>Bueno&amp;hellip; ayer se animó un poco el cotarro con la salida de la beta de ASP.NET MVC4. Y ayer mismo, el Maestro realizó un post fenómenal explicando un poco &lt;a href="http://www.variablenotfound.com/2012/02/aspnet-4-beta-disponible.html">todas las novedades del framework&lt;/a>. Echadle un vistazo al post, porque es realmente espectacular (para variar :p).&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>C# Básico: Eventos</title><link>https://www.eiximenis.dev/posts/2012-01-05-c-bsico-eventos/</link><pubDate>Thu, 05 Jan 2012 12:52:46 +0000</pubDate><atom:modified>Thu, 05 Jan 2012 12:52:46 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2012-01-05-c-bsico-eventos/</guid><description>&lt;p>Bueno… empieza el 2012: el último año de nuestra existencia si los maias no andaban errados (unos tíos que hacían pirámides hace miles de años no pueden equivocarse demasiado). Pero bueno… hasta que no llegue el apocalípsis, ahí estaremos! ¡Al pie del cañón!&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>HttpRequestBase vs HttpRequest</title><link>https://www.eiximenis.dev/posts/2011-12-19-httprequestbase-vs-httprequest/</link><pubDate>Mon, 19 Dec 2011 15:03:50 +0000</pubDate><atom:modified>Mon, 19 Dec 2011 15:03:50 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2011-12-19-httprequestbase-vs-httprequest/</guid><description>&lt;p>Muy buenas!&lt;/p>
&lt;p>Coged a alguien que no conozca mucho ASP.NET y preguntadle que relación tienen las siguientes clases entre ellas:&lt;/p>
&lt;ol>
&lt;li>HttpRequest&lt;/li>
&lt;li>HttpRequestBase&lt;/li>
&lt;li>HttpRequestWrapper&lt;/li>
&lt;/ol></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ASP.NET MVC3: Incoherencias en el tratamiento de doubles</title><link>https://www.eiximenis.dev/posts/2011-11-06-asp-net-mvc3-incoherencias-en-el-tratamiento-de-doubles/</link><pubDate>Sun, 06 Nov 2011 11:29:44 +0000</pubDate><atom:modified>Sun, 06 Nov 2011 11:29:44 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2011-11-06-asp-net-mvc3-incoherencias-en-el-tratamiento-de-doubles/</guid><description>&lt;p>Muy, muy, muy molesto… ASP.NET MVC3 corriendo sobre un servidor web configurado en español (cultura &lt;code>es-ES&lt;/code>).&lt;/p>
&lt;p>Con la tabla de rutas estándar, cuatro acciones como las siguientes:&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>[Debate] ¿Debería tener C# referencias const?</title><link>https://www.eiximenis.dev/posts/2011-11-03-debate-debera-tener-c-referencias-const/</link><pubDate>Thu, 03 Nov 2011 12:46:29 +0000</pubDate><atom:modified>Thu, 03 Nov 2011 12:46:29 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2011-11-03-debate-debera-tener-c-referencias-const/</guid><description>&lt;p>Muy buenas! Para ser sinceros esta es una pregunta que me he hecho siempre y, creo yo, que se han hecho muchas personas que vienen de C++. ¿Debería tener C# referencias const? El hecho es que hasta ayer no había encontrado una explicación &lt;em>razonada&lt;/em> y de alguien de peso (quien mejor que &lt;a href="http://blogs.msdn.com/b/ericlippert/">Eric Lippert&lt;/a>, cuyo blog es lectura obligada) del porque C# no las incluye. Al final del post hay el enlace al post de stackoverflow en el que Eric explica &lt;em>sus&lt;/em> razones por las que C# no tiene referencias const.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ASP.NET MVC: Enlazar una propiedad a jQuery UI Slider</title><link>https://www.eiximenis.dev/posts/2011-10-22-asp-net-mvc-enlazar-una-propiedad-a-jquery-ui-slider/</link><pubDate>Sat, 22 Oct 2011 10:32:13 +0000</pubDate><atom:modified>Sat, 22 Oct 2011 10:32:13 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2011-10-22-asp-net-mvc-enlazar-una-propiedad-a-jquery-ui-slider/</guid><description>&lt;p>¡Hola! Un compañero me ha preguntado si era posible enlazar una propiedad (de tipo int) a un control &lt;a href="http://docs.jquery.com/UI/Slider">slider de jQuery UI&lt;/a>. La verdad es que sí que es posible y vamos a ver en este post una posible solución que de hecho es extrapolable a otras situaciones parecidas que podáis tener.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ObservableCollection&lt;T>, INotifyPropertyChanged y WinRT</title><link>https://www.eiximenis.dev/posts/2011-10-16-observablecollectiont-inotifypropertychanged-y-winrt/</link><pubDate>Sun, 16 Oct 2011 12:35:00 +0000</pubDate><atom:modified>Sun, 16 Oct 2011 12:35:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2011-10-16-observablecollectiont-inotifypropertychanged-y-winrt/</guid><description>&lt;p>&lt;strong>&lt;span style="text-decoration: underline;">NOTA: Este post está basado en la versión Developers Preview de Windows 8, que salió en Septiembre del 2011. Versiones posteriores pueden dejar (y con suerte dejarán) este artículo obsoleto.&lt;/span>&lt;/strong>&lt;/p>
&lt;p>Un post cortito: Si desarrollas aplicaciones Metro para Windows 8 usando C# y XAML &lt;strong>no uses ObservableCollection&lt;T>&lt;/strong>. Simple y llanamente &lt;strong>no funciona&lt;/strong>.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Aplicaciones "de una sola página” con HTML5 y ASP.NET MVC</title><link>https://www.eiximenis.dev/posts/2011-10-08-aplicaciones-de-una-sola-pgina-con-html5-y-asp-net-mvc/</link><pubDate>Sat, 08 Oct 2011 11:29:00 +0000</pubDate><atom:modified>Sat, 08 Oct 2011 11:29:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2011-10-08-aplicaciones-de-una-sola-pgina-con-html5-y-asp-net-mvc/</guid><description>&lt;p>Muy buenas!&lt;/p>
&lt;p>Cada vez más nos encontramos con aplicaciones web que funcionan “en una sola página”, es decir que se carga la página inicial y luego todas las nuevas peticiones son via AJAX. Esas aplicaciones funcionan perfectamente hasta que el usuario le daba a atràs o a F5 para refrescar la página: en este momento se pierde el estado de la navegación.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Usar Recaptcha en ASP.NET MVC (desde cero)</title><link>https://www.eiximenis.dev/posts/2011-10-04-usar-recaptcha-en-asp-net-mvc-desde-cero/</link><pubDate>Tue, 04 Oct 2011 20:19:54 +0000</pubDate><atom:modified>Tue, 04 Oct 2011 20:19:54 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2011-10-04-usar-recaptcha-en-asp-net-mvc-desde-cero/</guid><description>&lt;p>Buenas! En este post vamos a ver como usar &lt;a href="http://www.google.com/recaptcha" target="_blank" rel="noopener noreferrer">Recaptcha&lt;/a> en ASP.NET MVC. Pero, antes que nada permitidme una aclaración: Si estás buscando integrar rápidamente Recaptcha en tu proyecto que sepas que puedes usar &lt;a href="http://mvcrecaptcha.codeplex.com/" target="_blank" rel="noopener noreferrer">MvcRecaptcha&lt;/a> o también el &lt;a href="http://www.dotnetcurry.com/ShowArticle.aspx?ID=611" target="_blank" rel="noopener noreferrer">helper que viene en MVC3&lt;/a>. Pero vamos a ver como hacerlo desde cero. ¿Por que? Pues simplemente porque me parece un buen ejemplo didáctico. Pero insisto: ya hay soluciones hechas, eso es sólo para ver como &lt;em>podríamos&lt;/em> hacerlo desde cero&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>C#5 Tomando una cerveza con Feynman (o await 2a parte)</title><link>https://www.eiximenis.dev/posts/2011-09-19-c5-tomando-una-cerveza-con-feynman-o-await-2a-parte/</link><pubDate>Mon, 19 Sep 2011 16:40:59 +0000</pubDate><atom:modified>Mon, 19 Sep 2011 16:40:59 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2011-09-19-c5-tomando-una-cerveza-con-feynman-o-await-2a-parte/</guid><description>&lt;p>En el &lt;a href="http://geeks.ms/blogs/etomas/archive/2011/09/17/c-5-async-await.aspx">post anterior&lt;/a> vimos como gracias a C# 5 y las nuevas palabras clave async y await el uso de métodos asíncronos era tan sencillo como ir al bar y tomarnos una cerveza. Como resumen del post vimos que async nos permitía indicar que un método quería realizar llamadas asíncronas y await nos permitía esperarnos al retorno de una llamada asíncrona. Si no has leído el post, antes de leer este échale un vistazo.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>C# 5: Async / Await</title><link>https://www.eiximenis.dev/posts/2011-09-17-c-5-async-await/</link><pubDate>Sat, 17 Sep 2011 16:05:53 +0000</pubDate><atom:modified>Sat, 17 Sep 2011 16:05:53 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2011-09-17-c-5-async-await/</guid><description>&lt;p>Muy buenas! Como dije en el post anterior estoy trasteando un poco con la Developers Preview de Windows 8 y la nueva API WinRT para crear aplicaciones Metro. El tema está en que esta nueva API está diseñada de forma muy asíncrona. Por suerte en C# 5 el uso de métodos asíncronos se ha simplificado mucho gracias a dos nuevas palabras clave: async y await. Y dado que, creedme, vais a tener que usarlas en cuanto os pongáis con WinRT me he decidido escribir este post para comentarlas un poco 🙂&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Mi primera aplicación en MetroUI</title><link>https://www.eiximenis.dev/posts/2011-09-16-mi-primera-aplicacin-en-metroui/</link><pubDate>Fri, 16 Sep 2011 19:38:00 +0000</pubDate><atom:modified>Fri, 16 Sep 2011 19:38:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2011-09-16-mi-primera-aplicacin-en-metroui/</guid><description>&lt;p>Muy buenas! Como muchos otros he descargado el Windows 8 Developers Preview, y he empezado a jugar con la nueva API de WinRT para la creación de aplicaciones basadas en MetroUI.&lt;/p>
&lt;p>Vamos a ver como realizar una aplicación MetroUI usando C# que simplemente nos muestre las imágenes que tenemos en la carpeta de “Mis Imágenes”.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>C# Básico: Objetos y referencias</title><link>https://www.eiximenis.dev/posts/2011-08-10-c-bsico-objetos-y-referencias/</link><pubDate>Wed, 10 Aug 2011 18:22:57 +0000</pubDate><atom:modified>Wed, 10 Aug 2011 18:22:57 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2011-08-10-c-bsico-objetos-y-referencias/</guid><description>&lt;p>La verdad es que ahora hacía bastantes meses que no publicaba nada de la serie “C# básico”. En esta serie pongo posts sobre temas básicos del lenguaje. No es un libro por fascículos, ni un tutorial al uso puesto que los posts no tienen orden en concreto y &lt;em>nacen&lt;/em> a partir de inquietudes que observo (mayoritariamente en los foros, pero también por correos que recibo). Todos &lt;a href="http://geeks.ms/blogs/etomas/archive/tags/c_2300_+basico/default.aspx" target="_blank" rel="noopener noreferrer">los posts de esta serie los podéis ver aquí&lt;/a>.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Binding de colecciones en ASP.NET MVC (iii)</title><link>https://www.eiximenis.dev/posts/2011-08-03-binding-de-colecciones-en-asp-net-mvc-iii/</link><pubDate>Wed, 03 Aug 2011 11:50:38 +0000</pubDate><atom:modified>Wed, 03 Aug 2011 11:50:38 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2011-08-03-binding-de-colecciones-en-asp-net-mvc-iii/</guid><description>&lt;p>Bueno… vamos a seguir viendo el tema de binding de colecciones con ASP.NET MVC.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Binding de colecciones en ASP.NET MVC (ii)</title><link>https://www.eiximenis.dev/posts/2011-07-15-binding-de-colecciones-en-asp-net-mvc-ii/</link><pubDate>Fri, 15 Jul 2011 17:00:00 +0000</pubDate><atom:modified>Fri, 15 Jul 2011 17:00:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2011-07-15-binding-de-colecciones-en-asp-net-mvc-ii/</guid><description>&lt;p>Bueno&amp;hellip; En el &lt;a target="_blank" href="https://www.eiximenis.dev/blogs/etomas/archive/2011/07/09/binding-de-colecciones-en-asp-net-mvc.aspx" rel="noopener noreferrer">post anterior&lt;/a> vimos como el DefaultModelBinder esperaba los nombres de los campos para poder realizar el enlace entre los datos de la request y un parámetro de tipo colección en el controlador.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Binding de colecciones en ASP.NET MVC</title><link>https://www.eiximenis.dev/posts/2011-07-09-binding-de-colecciones-en-asp-net-mvc/</link><pubDate>Sat, 09 Jul 2011 12:32:13 +0000</pubDate><atom:modified>Sat, 09 Jul 2011 12:32:13 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2011-07-09-binding-de-colecciones-en-asp-net-mvc/</guid><description>&lt;p>Buenas! Hoy voy a comentar un temilla que me comentó un colega el otro día y que puede dar &lt;em>algunos&lt;/em> quebraderos de cabeza: el binding de colecciones.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ASP.NET MVC – Helper Html.LabelFor&lt;T> parametrizable</title><link>https://www.eiximenis.dev/posts/2011-06-29-asp-net-mvc-helper-html-labelfort-parametrizable/</link><pubDate>Wed, 29 Jun 2011 23:27:00 +0000</pubDate><atom:modified>Wed, 29 Jun 2011 23:27:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2011-06-29-asp-net-mvc-helper-html-labelfort-parametrizable/</guid><description>&lt;p>Buenas! La verdad es que llevo algunos días sin actualizar mucho el blog&amp;hellip; Ya se sabe trabajo y tal 🙂&lt;/p>
&lt;p>Hoy quiero comentaros algo rapidito y que se ha preguntado varias veces en los foros y que es como poder asignar un ID al &lt;label /> generado por el helper Html.LabelFor&lt;T>. En este caso vamos a hacer que se le puedan añadir todos los atributos que se quieran a la etiqueta &lt;label />&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>[WebCast] Material del webcast de ASP.NET MVC para AUGES</title><link>https://www.eiximenis.dev/posts/2011-05-19-webcast-material-del-webcast-de-asp-net-mvc-para-auges/</link><pubDate>Thu, 19 May 2011 22:19:59 +0000</pubDate><atom:modified>Thu, 19 May 2011 22:19:59 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2011-05-19-webcast-material-del-webcast-de-asp-net-mvc-para-auges/</guid><description>&lt;p>Buenas!&lt;/p>
&lt;p>Recién realizado el WebCast para &lt;a href="http://www.auges.org" target="_blank" rel="noopener noreferrer">AUGES&lt;/a>, os comento que he subido el material (el código del proyecto que hemos hecho) en mi skydrive.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>¿Webforms y ASP.NET MVC juntos? Pues claro!</title><link>https://www.eiximenis.dev/posts/2011-05-13-webforms-y-asp-net-mvc-juntos-pues-claro/</link><pubDate>Fri, 13 May 2011 18:15:00 +0000</pubDate><atom:modified>Fri, 13 May 2011 18:15:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2011-05-13-webforms-y-asp-net-mvc-juntos-pues-claro/</guid><description>&lt;p>En el grupo de &lt;a target="_blank" href="http://www.linkedin.com/groups/AUGES-3889150" rel="noopener noreferrer">linkedin de AUGES&lt;/a>, &lt;a target="_blank" href="http://www.linkedin.com/groups/Primer-debate-iniciar-AUGES-Es-3889150.S.52141354" rel="noopener noreferrer">en uno de los debates que tenemos abierto&lt;/a>, Javier Giners pregunta estrategias de migración de Webforms hacia ASP.NET MVC. Yo le responde que depende de como esté arquitecturada la aplicación pero que tenga presente que ASP.NET MVC y webforms pueden convivir juntos en &lt;strong>una misma aplicación web&lt;/strong>. No se trata de que una aplicación web hecha en webforms se comunique fácilmente con otra hecha en ASP.NET MVC no. Se trata de que ambas tecnologías pueden combinarse para crear una sola aplicación web.&lt;/p>
&lt;p>Y ese es el objetivo de este post 😉&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>[Webcast–AUGES] Introducción a ASP.NET MVC</title><link>https://www.eiximenis.dev/posts/2011-05-11-webcast-auges-introduccin-a-asp-net-mvc/</link><pubDate>Wed, 11 May 2011 22:26:04 +0000</pubDate><atom:modified>Wed, 11 May 2011 22:26:04 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2011-05-11-webcast-auges-introduccin-a-asp-net-mvc/</guid><description>&lt;p>Seguramente la mayoría ya sabréis que gracias al empuje del maestro &lt;a href="http://geeks.ms/blogs/lruiz/" target="_blank" rel="noopener noreferrer">Luis Ruiz Pavón&lt;/a> (que nos ha ido &lt;em>convenciendo&lt;/em> a varios), se ha creado &lt;a href="http://www.auges.org/" target="_blank" rel="noopener noreferrer">AUGES&lt;/a>, el grupo de usuarios de ASP.NET de España.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>[Reseña] Curso de CampusMVP para la certificación 70-515</title><link>https://www.eiximenis.dev/posts/2011-04-17-resea-curso-de-campusmvp-para-la-certificacin-70-515/</link><pubDate>Sun, 17 Apr 2011 21:35:22 +0000</pubDate><atom:modified>Sun, 17 Apr 2011 21:35:22 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2011-04-17-resea-curso-de-campusmvp-para-la-certificacin-70-515/</guid><description>&lt;p>Muy buenas! Los chicos de CampusMVP me han dado la ocasión de revisar uno de sus cursos, en concreto el que tienen para preparar la certificación 70-515 (desarrollo de aplicaciones web). Y el resultado es este post 😉 &lt;a href="http://shop.campusmvp.com/Product-Preparaci%C3%B3n-de-la-certificaci%C3%B3n-70-515-TS-Web-Applications-Development-with-Microsoft%C2%AE-.NET-Framework-4_114.aspx" target="_blank" rel="noopener noreferrer">&lt;img style="margin: 6px 0px 6px 4px; display: inline; float: right" align="right" src="http://shop.campusmvp.com/repository/product/asp-net-4-70-515.jpg" />&lt;/a>&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>[ASP.NET MVC] Pasar parámetros a través del PathInfo</title><link>https://www.eiximenis.dev/posts/2011-04-03-asp-net-mvc-pasar-parmetros-a-travs-del-pathinfo/</link><pubDate>Sun, 03 Apr 2011 21:06:48 +0000</pubDate><atom:modified>Sun, 03 Apr 2011 21:06:48 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2011-04-03-asp-net-mvc-pasar-parmetros-a-travs-del-pathinfo/</guid><description>&lt;p>¡Muy buenas! Bueno, el título del post no queda demasiado claro, pero a ver si consigo explicar un poco la idea. 😉&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>[jQuery tmpl] Pasar elemento de template como parámetro a una función del template</title><link>https://www.eiximenis.dev/posts/2011-04-01-jquery-tmpl-pasar-elemento-de-template-como-parmetro-a-una-funcin-del-template/</link><pubDate>Fri, 01 Apr 2011 09:42:00 +0000</pubDate><atom:modified>Fri, 01 Apr 2011 09:42:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2011-04-01-jquery-tmpl-pasar-elemento-de-template-como-parmetro-a-una-funcin-del-template/</guid><description>&lt;p>Bueno&amp;hellip; Vaya título me ha salido, eh? 😛 A ver, realmente este post es para evitar que alguien pierda el mismo tiempo que he pedido yo, para una chorrada&amp;hellip;&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Opinión: De las palabras de un iluminado y de madurez de comunidad…</title><link>https://www.eiximenis.dev/posts/2011-03-29-opinin-de-las-palabras-de-un-iluminado-y-de-madurez-de-comunidad/</link><pubDate>Tue, 29 Mar 2011 09:54:00 +0000</pubDate><atom:modified>Tue, 29 Mar 2011 09:54:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2011-03-29-opinin-de-las-palabras-de-un-iluminado-y-de-madurez-de-comunidad/</guid><description>&lt;p>Buenas! Este post surge a raíz de una interesante conversación que mantenido con &lt;a target="_blank" href="http://twitter.com/j0rgeSerran0" rel="noopener noreferrer">Jorge Serrano&lt;/a>, &lt;a target="_blank" href="http://twitter.com/eugenioestrada" rel="noopener noreferrer">Eugenio Estrada&lt;/a>,  &lt;a target="_blank" href="http://twitter.com/pablonete" rel="noopener noreferrer">Pablo Núñez&lt;/a> y &lt;a target="_blank" href="http://twitter.com/zpektrum" rel="noopener noreferrer">Pablo Iglesias&lt;/a>.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>[HTML/JS] Module pattern</title><link>https://www.eiximenis.dev/posts/2011-03-28-htmljs-module-pattern/</link><pubDate>Mon, 28 Mar 2011 17:31:53 +0000</pubDate><atom:modified>Mon, 28 Mar 2011 17:31:53 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2011-03-28-htmljs-module-pattern/</guid><description>&lt;p>Muy buenas! Cuando creas un sitio web, es normal que vayas añadiendo cada vez más código javascript en él. Al final, seguramente terminaréis desarollando una mini-api, propia que muchas veces reside en un archivo .js, lleno de funciones. Algo como:&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ASP.NET MVC: Previsualizar imágenes subidas (2)</title><link>https://www.eiximenis.dev/posts/2011-03-15-asp-net-mvc-previsualizar-imgenes-subidas-2/</link><pubDate>Tue, 15 Mar 2011 14:54:10 +0000</pubDate><atom:modified>Tue, 15 Mar 2011 14:54:10 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2011-03-15-asp-net-mvc-previsualizar-imgenes-subidas-2/</guid><description>&lt;p>Buenas! Donde dije digo, digo Diego… Sí, ya sé que dije que el segundo post sería como hacerlo con Ajax, pero bueno… la culpa es de twitter, concretamente de &lt;a href="http://twitter.com/pablonete" target="_blank" rel="noopener noreferrer">@pablonete&lt;/a> con el que hemos empezado a hablar sobre si es posible evitar el guardar la imágen físicamente en el servidor. Hay un mecanismo obvio, que es usar la sesión (guardar el array de bytes que conforman la imágen en la sesión). Pero… hay otra? Pues sí: usar data urls!&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ASP.NET MVC: Previsualizar imágenes subidas (1)</title><link>https://www.eiximenis.dev/posts/2011-03-15-asp-net-mvc-previsualizar-imgenes-subidas-1/</link><pubDate>Tue, 15 Mar 2011 10:00:18 +0000</pubDate><atom:modified>Tue, 15 Mar 2011 10:00:18 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2011-03-15-asp-net-mvc-previsualizar-imgenes-subidas-1/</guid><description>&lt;p>Buenas! Una pregunta que últimamente parece que se pregunta varias veces en los foros de ASP.NET MVC es como previsualizar una imagen que se quiere subir al servidor.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Rendering de vistas parciales en Razor y MVC3</title><link>https://www.eiximenis.dev/posts/2011-02-25-rendering-de-vistas-parciales-en-razor-y-mvc3/</link><pubDate>Fri, 25 Feb 2011 08:53:57 +0000</pubDate><atom:modified>Fri, 25 Feb 2011 08:53:57 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2011-02-25-rendering-de-vistas-parciales-en-razor-y-mvc3/</guid><description>&lt;p>Buenas! Una de las dudas que he visto que se van repitiendo por ahí tiene que ver con &lt;strong>como renderizar vistas parciales en MVC3 usando Razor&lt;/strong>.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>De los requerimientos…</title><link>https://www.eiximenis.dev/posts/2011-02-17-de-los-requerimientos/</link><pubDate>Thu, 17 Feb 2011 20:35:56 +0000</pubDate><atom:modified>Thu, 17 Feb 2011 20:35:56 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2011-02-17-de-los-requerimientos/</guid><description>&lt;p>Mi hermano y yo ambos somos arquitectos. Aunque en su caso él tiene un título universitario que lo acredita como tal y yo sólo una tarjeta de trabajo donde mi empresa ha decidido poner eso… y en inglés que se supone que queda mejor. Los dos nos dedicamos a &lt;em>pensar y diseñar&lt;/em> cosas: él piensa y diseña espacios habitables (o sea pisos y casas) y yo pienso y diseño soluciones informáticas (o sea programas).&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>[Material] WebCast ASP.NET MVC</title><link>https://www.eiximenis.dev/posts/2011-02-08-material-webcast-asp-net-mvc/</link><pubDate>Tue, 08 Feb 2011 08:51:37 +0000</pubDate><atom:modified>Tue, 08 Feb 2011 08:51:37 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2011-02-08-material-webcast-asp-net-mvc/</guid><description>&lt;p>Buenas.&lt;/p>
&lt;p>Este post simplemente es para agradeceros a todos el interés que mostrasteis en el &lt;a href="http://geeks.ms/blogs/etomas/archive/2011/02/02/webcast-191-te-quedaste-con-m-225-s-ganas-asp-net-mvc-ii.aspx" target="_blank" rel="noopener noreferrer">Webcast de ASP.NET MVC que tuve el placer de realizar&lt;/a> para la gente del &lt;a href="http://lleida.dotnetclubs.com/" target="_blank" rel="noopener noreferrer">Lledia DotNetClub&lt;/a>.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>[WebCast] ¿Te quedaste con más ganas? ASP.NET MVC II</title><link>https://www.eiximenis.dev/posts/2011-02-02-webcast-te-quedaste-con-ms-ganas-asp-net-mvc-ii/</link><pubDate>Wed, 02 Feb 2011 10:19:12 +0000</pubDate><atom:modified>Wed, 02 Feb 2011 10:19:12 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2011-02-02-webcast-te-quedaste-con-ms-ganas-asp-net-mvc-ii/</guid><description>&lt;p>Muy buenas! Este jueves &lt;strong>03 de febrero&lt;/strong> (o sea mañana) gracias a la gente del &lt;a href="http://lleida.dotnetclubs.com/" target="_blank" rel="noopener noreferrer">Lleida dotnet club&lt;/a>, tengo el gusto de dar un WebCast sobre ASP.NET MVC 🙂&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ASP.NET MVC3: Un helper Repeater</title><link>https://www.eiximenis.dev/posts/2011-01-26-asp-net-mvc3-un-helper-repeater/</link><pubDate>Wed, 26 Jan 2011 09:35:23 +0000</pubDate><atom:modified>Wed, 26 Jan 2011 09:35:23 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2011-01-26-asp-net-mvc3-un-helper-repeater/</guid><description>&lt;p>Muy buenas! En el post anterior comenté la característica de los &lt;a href="http://geeks.ms/blogs/etomas/archive/2011/01/25/asp-net-mvc3-razor-templates.aspx" target="_blank" rel="noopener noreferrer">templates de Razor&lt;/a> y hoy vamos a ver como podríamos crear un &lt;em>helper&lt;/em> que emule un poco el &lt;a href="http://msdn.microsoft.com/es-es/library/6weyd81h(VS.80).aspx" target="_blank" rel="noopener noreferrer">control Repeater&lt;/a> que hay en webforms (salvando las distancias, claro).&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ASP.NET MVC3: Razor Templates</title><link>https://www.eiximenis.dev/posts/2011-01-25-asp-net-mvc3-razor-templates/</link><pubDate>Tue, 25 Jan 2011 16:38:19 +0000</pubDate><atom:modified>Tue, 25 Jan 2011 16:38:19 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2011-01-25-asp-net-mvc3-razor-templates/</guid><description>&lt;p>Muy buenas!&lt;/p>
&lt;p>En este post quiero comentaros una característica de Razor que yo considero que es una &lt;strong>&lt;u>auténtica pasada:&lt;/u>&lt;/strong> los &lt;strong>templates&lt;/strong>.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ASP.NET MVC: Como recuperar un dato de una cookie para cada petición… Una alternativa ¿igual?</title><link>https://www.eiximenis.dev/posts/2011-01-19-asp-net-mvc-como-recuperar-un-dato-de-una-cookie-para-cada-peticin-una-alternativa-igual/</link><pubDate>Wed, 19 Jan 2011 11:04:53 +0000</pubDate><atom:modified>Wed, 19 Jan 2011 11:04:53 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2011-01-19-asp-net-mvc-como-recuperar-un-dato-de-una-cookie-para-cada-peticin-una-alternativa-igual/</guid><description>&lt;p>Muy buenas! Hace algunos días escribí el post &lt;a href="http://geeks.ms/blogs/etomas/archive/2011/01/14/asp-net-mvc-como-recuperar-un-dato-de-una-cookie-para-cada-petici-243-n.aspx" target="_blank" rel="noopener noreferrer">ASP.NET MVC: Como recuperar datos de una cookie en cada petición&lt;/a>, donde mostraba el uso de un &lt;em>route handler&lt;/em> propio para recuperar los datos de una cookie y colocarlos en el Route Data. En el ejemplo era una cookie de cultura de la aplicación, pero se puede aplicar a lo que queráis.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Git para dummies (pero dummies, dummies eh?)</title><link>https://www.eiximenis.dev/posts/2011-01-18-git-para-dummies-pero-dummies-dummies-eh/</link><pubDate>Tue, 18 Jan 2011 11:19:55 +0000</pubDate><atom:modified>Tue, 18 Jan 2011 11:19:55 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2011-01-18-git-para-dummies-pero-dummies-dummies-eh/</guid><description>&lt;p>&lt;strong>Disclaimer:&lt;/strong> Ese post ni es, ni lo pretende, ser un tutorial de Git. Es simplemente las impresiones de alguien (yo) que ayer empezó a usar, por primera vez, Git. Seguro que hay gente que lee ese blog y que sabe &lt;strong>mucho, pero mucho&lt;/strong> más de Git que yo… Así que sus comentarios y correciones serán bienvenidas! 🙂&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ASP.NET MVC: Como recuperar un dato de una cookie para cada petición…</title><link>https://www.eiximenis.dev/posts/2011-01-14-asp-net-mvc-como-recuperar-un-dato-de-una-cookie-para-cada-peticin/</link><pubDate>Fri, 14 Jan 2011 13:40:08 +0000</pubDate><atom:modified>Fri, 14 Jan 2011 13:40:08 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2011-01-14-asp-net-mvc-como-recuperar-un-dato-de-una-cookie-para-cada-peticin/</guid><description>&lt;p>EEhhhmm… bueno, no se me ocurre un título mejor. Este post nace gracias a un tweet de &lt;a href="http://twitter.com/lluisfranco" target="_blank" rel="noopener noreferrer">Lluis Franco&lt;/a>. En el tweet Lluís preguntaba &lt;a href="http://twitter.com/lluisfranco/status/25846781329801216" target="_blank" rel="noopener noreferrer">dónde guardar la cultura de una aplicación MVC&lt;/a> si no se podía poner en la URL. Después de varios tweets comentando algunas cosillas yo he respondido diciendo que veía &lt;a href="http://twitter.com/eiximenis/status/25849807952154624" target="_blank" rel="noopener noreferrer">dos opciones: o en una cookie o en la base de datos&lt;/a>. Una de las cosas que más me gustan de HTTP es que es simple: no hay muchas maneras de pasar estado entre cliente y servidor 😉&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ASP.NET MVC3: Validación remota</title><link>https://www.eiximenis.dev/posts/2011-01-14-asp-net-mvc3-validacin-remota/</link><pubDate>Fri, 14 Jan 2011 10:22:00 +0000</pubDate><atom:modified>Fri, 14 Jan 2011 10:22:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2011-01-14-asp-net-mvc3-validacin-remota/</guid><description>&lt;p>Muy buenas!&lt;/p>
&lt;p>Una de las novedades que nos trae ASP.NET MVC3, con respecto a MVC2 es poder usar &lt;em>fácilmente&lt;/em> la validación remota: eso es, desde &lt;em>cliente&lt;/em> llamar a un método del servidor que nos diga si un dato (entrado p.ej. en un campo de texto es válido o no). Y cuando digo &lt;em>fácilmente&lt;/em> me refiero a &lt;em>fácilmente, muy fácilmente&lt;/em>.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ASP.NET MVC: Binding de datos de sesión a controladores</title><link>https://www.eiximenis.dev/posts/2011-01-03-asp-net-mvc-binding-de-datos-de-sesin-a-controladores/</link><pubDate>Mon, 03 Jan 2011 11:08:00 +0000</pubDate><atom:modified>Mon, 03 Jan 2011 11:08:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2011-01-03-asp-net-mvc-binding-de-datos-de-sesin-a-controladores/</guid><description>&lt;p>Muy buenas! Que tal el fin de año? Empachados con turrones, polvorones y demás? En fin, vamos a inaugurar el 2011 y que mejor manera que hacerlo que con un post! 😉&lt;/p>
&lt;p>En realidad hubiese querido que este post fuese el último del año anterior, pero no puede publicarlo antes por problemas logísticos. La idea del post surge &lt;a target="_blank" href="http://twitter.com/luisruizpavon/status/20062211649052672" rel="noopener noreferrer">de un tweet que publicó Luis Ruiz Pavón.&lt;/a> Su pregunta era que tal acceder a la sesión desde un Model Binder para poner datos a disposición de los controladores. &lt;a target="_blank" href="http://twitter.com/eiximenis/status/20062646694846464" rel="noopener noreferrer">Mi respuesta fue que yo usaría un value provider&lt;/a>, y así llegamos a este post.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>[Channel 9] Uso de snippets en VS2010</title><link>https://www.eiximenis.dev/posts/2010-12-22-channel-9-uso-de-snippets-en-vs2010/</link><pubDate>Wed, 22 Dec 2010 08:48:00 +0000</pubDate><atom:modified>Wed, 22 Dec 2010 08:48:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-12-22-channel-9-uso-de-snippets-en-vs2010/</guid><description>&lt;p>Muy buenas!&lt;/p>
&lt;p>Post cortito, cortito sólo para decir que han publicado en &lt;a target="_blank" href="http://channel9.msdn.com/Blogs/channel9spain" rel="noopener noreferrer">Channel 9 Spain&lt;/a> mi &lt;a target="_blank" href="http://channel9.msdn.com/Blogs/channel9spain/Cmo-usar-Snippets-en-Visual-Studio" rel="noopener noreferrer">vídeo sobre cómo usar los snippets en VS2010&lt;/a>.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Opinión: Var o no var… esa es la cuestión.</title><link>https://www.eiximenis.dev/posts/2010-12-21-opinin-var-o-no-var-esa-es-la-cuestin/</link><pubDate>Tue, 21 Dec 2010 14:57:00 +0000</pubDate><atom:modified>Tue, 21 Dec 2010 14:57:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-12-21-opinin-var-o-no-var-esa-es-la-cuestin/</guid><description>&lt;p>Hola a todos! Desde hace algunos días estoy usando &lt;a target="_blank" href="http://www.jetbrains.com/resharper/" rel="noopener noreferrer">Resharper&lt;/a>. La verdad no era, como decirlo, muy proclive para instalármelo, ya que había tenido no muy buenas experiencas con &lt;a target="_blank" href="http://www.devexpress.com/Products/Visual_Studio_Add-in/Coding_Assistance/" rel="noopener noreferrer">&lt;em>CodeRush&lt;/em>&lt;/a>&lt;em>.&lt;/em> Seguramente no eran culpa de CodeRush sinó mías, pero bueno&amp;hellip; Al final me lo instalé y debo decir que estoy gratamente sorprendido: Es una auténtica maravilla.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ASP.NET: Obtener el ID del usuario actual</title><link>https://www.eiximenis.dev/posts/2010-12-16-asp-net-obtener-el-id-del-usuario-actual/</link><pubDate>Thu, 16 Dec 2010 13:24:20 +0000</pubDate><atom:modified>Thu, 16 Dec 2010 13:24:20 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-12-16-asp-net-obtener-el-id-del-usuario-actual/</guid><description>&lt;p>Buenas!&lt;/p>
&lt;p>No se vosotros, pero yo cuando desarrollo mis aplicaciones, si uso FKs de la otabla de usuarios, las hago en base al ID del usuario, nunca en base a su nombre. Así pues, saber el ID del usuario actualmente autenticado en mi aplicación es algo fundamental.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>[Evento] Recordatorio: Este jueves… Hasta dónde podemos llegar con ASP.NET MVC?</title><link>https://www.eiximenis.dev/posts/2010-12-01-evento-recordatorio-este-jueves-hasta-dnde-podemos-llegar-con-asp-net-mvc/</link><pubDate>Wed, 01 Dec 2010 17:14:21 +0000</pubDate><atom:modified>Wed, 01 Dec 2010 17:14:21 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-12-01-evento-recordatorio-este-jueves-hasta-dnde-podemos-llegar-con-asp-net-mvc/</guid><description>&lt;p>Hola!&lt;/p>
&lt;p>Este es un post para recordaros que &lt;strong>mañana jueves 2 de diciembre&lt;/strong>, sobre las 19:00 (hora española) doy un WebCast de la mano de la gente del Lleida DotNetClub.&lt;/p>
&lt;p>Veremos paso a paso (como los &lt;a href="http://es.wikipedia.org/wiki/New_Kids_on_the_Block">New Kids on the Block&lt;/a> ‘&lt;em>step by step, uououoooo baby&lt;/em>’) la realización de &lt;strong>Porrazo&lt;/strong>, el sistema de Porras on-line que ha hecho de &lt;em>Porrazo Enterprise&lt;/em> la empresa más cotizada de la bolsa…&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Trick: Enviar datos en JSON usando POST</title><link>https://www.eiximenis.dev/posts/2010-11-23-trick-enviar-datos-en-json-usando-post/</link><pubDate>Tue, 23 Nov 2010 11:36:00 +0000</pubDate><atom:modified>Tue, 23 Nov 2010 11:36:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-11-23-trick-enviar-datos-en-json-usando-post/</guid><description>&lt;p>Muy buenas!&lt;/p>
&lt;p>Una de las preguntas que mucha gente se formula cuando empieza a hacer cosillas con ajax y jQuery es &lt;em>¿Como enviar datos codificados en JSON usando POST&lt;/em>?&lt;/p>
&lt;p>La verdad es que es muy sencillo, aunque jQuery no proporciona ninguna función &lt;em>por defecto&lt;/em> que haga esto. Vamos a ver tres aproximaciones, las dos primeras incorrectas pero que nos acercarán para llegar al final a &lt;span style="text-decoration: line-through;">la&lt;/span> una forma correcta de hacerlo.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>[Evento] Hasta donde se puede llegar con ASP.NET MVC?</title><link>https://www.eiximenis.dev/posts/2010-11-19-evento-hasta-donde-se-puede-llegar-con-asp-net-mvc/</link><pubDate>Fri, 19 Nov 2010 12:19:49 +0000</pubDate><atom:modified>Fri, 19 Nov 2010 12:19:49 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-11-19-evento-hasta-donde-se-puede-llegar-con-asp-net-mvc/</guid><description>&lt;p>Muy buenas!&lt;/p>
&lt;p>El jueves &lt;strong>2 de diciembre&lt;/strong> voy a realizar un WebCast para la gente del &lt;a href="http://lleida.dotnetclubs.com/">Lleida DotNetClub&lt;/a> sobre ASP.NET MVC.&lt;/p>
&lt;p>La idea es empezar desde cero a desarrollar una aplicación ASP.NET MVC y ver hasta donde llegamos. Iremos explorando el framework y viendo paso a paso sus características: controladores, vistas, modelos, vistas parciales, ajax, helpers, inyección de dependencias,…&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>C# Básico: Covarianza en genéricos</title><link>https://www.eiximenis.dev/posts/2010-11-18-c-bsico-covarianza-en-genricos/</link><pubDate>Thu, 18 Nov 2010 14:49:00 +0000</pubDate><atom:modified>Thu, 18 Nov 2010 14:49:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-11-18-c-bsico-covarianza-en-genricos/</guid><description>&lt;p>Muy buenas! Hacía tiempo que no escribía nada de la &lt;a href="https://www.eiximenis.dev/blogs/etomas/archive/tags/c_2300_+basico/default.aspx">serie C# Básico&lt;/a>. En esta serie voy tratando temas (sin ningún orden en particular) que considero que son fundamentos más o menos elementales del lenguaje. No es un tutorial al uso, cada post es independiente del resto y como digo no están ordenados por nada en particular.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Saca tus scripts de tu código HTML</title><link>https://www.eiximenis.dev/posts/2010-11-12-saca-tus-scripts-de-tu-cdigo-html/</link><pubDate>Fri, 12 Nov 2010 12:42:00 +0000</pubDate><atom:modified>Fri, 12 Nov 2010 12:42:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-11-12-saca-tus-scripts-de-tu-cdigo-html/</guid><description>&lt;p>Buenas! En el post anterior os comenté el soporte de &lt;a href="https://www.eiximenis.dev/blogs/etomas/archive/2010/11/09/unobtrusive-ajax-en-mvc3.aspx">Unobtrusive Ajax en ASP.NET MVC3&lt;/a>. Hoy quiero mostraros que esa técnica &lt;strong>ni&lt;/strong> es exclusiva de MVC3, &lt;strong>ni&lt;/strong>  requiere HTML5 para nada. En fin, que podéis empezar a usarla ya, con independencia de la tecnología que uséis. Lo que contaré en este artículo no es nada “revolucionario” ni una “técnica nueva”&amp;hellip;&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Unobtrusive Ajax en MVC3</title><link>https://www.eiximenis.dev/posts/2010-11-09-unobtrusive-ajax-en-mvc3/</link><pubDate>Tue, 09 Nov 2010 11:54:22 +0000</pubDate><atom:modified>Tue, 09 Nov 2010 11:54:22 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-11-09-unobtrusive-ajax-en-mvc3/</guid><description>&lt;p>Buenas! Una de las novedades más interesantes de MVC3 es el soporte para eso que se llama &lt;em>Unobtrusive&lt;/em> Ajax. La verdad es que no encuentro una buena traducción para Unobtrusive (discreto no me convence).&lt;/p>
&lt;p>La idea del Unobtrusive Ajax es &lt;strong>evitar mezclar código script con código HTML&lt;/strong>. De la misma manera que CSS nos permite separar completamente el código HTML de su representación, con Unobtrusive Ajax vamos a poder separar el código javascript del código HTML.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>How to: Obtener controles de un formulario con generics II (Linq al rescate).</title><link>https://www.eiximenis.dev/posts/2010-11-08-how-to-obtener-controles-de-un-formulario-con-generics-ii-linq-al-rescate/</link><pubDate>Mon, 08 Nov 2010 11:28:41 +0000</pubDate><atom:modified>Mon, 08 Nov 2010 11:28:41 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-11-08-how-to-obtener-controles-de-un-formulario-con-generics-ii-linq-al-rescate/</guid><description>&lt;p>Ayer Lluis escribía este gran post: &lt;em>&lt;a href="http://geeks.ms/blogs/lfranco/archive/2010/11/05/how-to-obtener-controles-de-un-formulario-con-generics.aspx">How to: Obtener controles de un formulario con generics&lt;/a>&lt;/em>. Como bien dice es una pregunta… recurrente en todos los sitios 🙂&lt;/p>
&lt;p>Lo bueno de eso del desarrollo es que para todo hay varias soluciones, así que aquí os propongo otra, pero usando Linq. Personalmente me encanta Linq, supongo que es porqué siempre me han fascinado los lenguajes funcionales…&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Opinión: De si Silverlight está muerto, agonizante o mejor que nunca</title><link>https://www.eiximenis.dev/posts/2010-11-03-opinin-de-si-silverlight-est-muerto-agonizante-o-mejor-que-nunca/</link><pubDate>Wed, 03 Nov 2010 10:50:00 +0000</pubDate><atom:modified>Wed, 03 Nov 2010 10:50:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-11-03-opinin-de-si-silverlight-est-muerto-agonizante-o-mejor-que-nunca/</guid><description>&lt;p>Andamos todos revolucionados estos dias, a raíz de unas declaraciones de &lt;a href="http://www.microsoft.com/presspass/exec/bobmuglia/">Bob Muglia&lt;/a> donde decía “&lt;a href="http://www.zdnet.com/blog/microsoft/microsoft-our-strategy-with-silverlight-has-shifted/7834">Our strategy with Silverlight has shifted&lt;/a>”. Eso unido al énfasis que se dio a HTML5 en el keynote del PDC y la no mención en absoluto de nada referente a Silverlight han disparado los rumores.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ASP.NET MVC3 Beta: Mis impresiones</title><link>https://www.eiximenis.dev/posts/2010-10-07-asp-net-mvc3-beta-mis-impresiones/</link><pubDate>Thu, 07 Oct 2010 14:19:00 +0000</pubDate><atom:modified>Thu, 07 Oct 2010 14:19:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-10-07-asp-net-mvc3-beta-mis-impresiones/</guid><description>&lt;p>Buenooo… ayer fue un día movidito en Microsoft: &lt;a href="http://weblogs.asp.net/scottgu/archive/2010/10/06/announcing-nupack-asp-net-mvc-3-beta-and-webmatrix-beta-2.aspx">anunciaron de golpe&lt;/a> la beta 2 de WebMatrix, la beta de MVC3 y un gestor de paquetes OSS para Visual Studio llamado NuPack. También he visto a través del &lt;a href="http://www.microsoft.com/web/downloads/platform.aspx">Web PI&lt;/a> que está la CTP2 de Compact SQL 4.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>SQL Server Compact 4: Unable to load the native components</title><link>https://www.eiximenis.dev/posts/2010-10-06-sql-server-compact-4-unable-to-load-the-native-components/</link><pubDate>Wed, 06 Oct 2010 12:03:57 +0000</pubDate><atom:modified>Wed, 06 Oct 2010 12:03:57 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-10-06-sql-server-compact-4-unable-to-load-the-native-components/</guid><description>&lt;p>Buenas! Un post ligerito, ligerito 🙂&lt;/p>
&lt;p>Ando esos días probando cosillas con SQL Server Compact 4 (que os podéis descargar desde &lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=0d2357ea-324f-46fd-88fc-7364c80e4fdb&amp;amp;displaylang=en">su página de descargas&lt;/a> o bien usando &lt;a href="http://www.microsoft.com/web/downloads/platform.aspx">Web Platofrm Installer&lt;/a>).&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>EF4 Code First, MVC2 y Unity para atarlo todo un poco…</title><link>https://www.eiximenis.dev/posts/2010-09-24-ef4-code-first-mvc2-y-unity-para-atarlo-todo-un-poco/</link><pubDate>Fri, 24 Sep 2010 12:57:00 +0000</pubDate><atom:modified>Fri, 24 Sep 2010 12:57:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-09-24-ef4-code-first-mvc2-y-unity-para-atarlo-todo-un-poco/</guid><description>&lt;p>Buenas! No soy ni mucho menos un experto en EF (es más, me acabo de poner), como pueda serlo p.ej. &lt;a href="http://geeks.ms/blogs/unai/">Unai&lt;/a>, pero desde que &lt;a href="http://weblogs.asp.net/scottgu/">Scott Guthrie&lt;/a> publicó un &lt;a href="http://weblogs.asp.net/scottgu/archive/2010/07/16/code-first-development-with-entity-framework-4.aspx">post sobre EF Code First&lt;/a> he empezado a mirar algunas cosillas.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ASP.NET MVC – Formato de salida según Content-Type</title><link>https://www.eiximenis.dev/posts/2010-09-10-asp-net-mvc-formato-de-salida-segn-content-type/</link><pubDate>Fri, 10 Sep 2010 13:03:36 +0000</pubDate><atom:modified>Fri, 10 Sep 2010 13:03:36 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-09-10-asp-net-mvc-formato-de-salida-segn-content-type/</guid><description>&lt;p>El otro día escribí un post donde vimos como &lt;a href="http://geeks.ms/blogs/etomas/archive/2010/09/09/asp-net-mvc-mostrar-datos-en-html-o-pdf-pero-en-el-fondo-vamos-a-hablar-de-la-tabla-de-rutas.aspx">mostrar una vista en PDF o HTML en función de una URL del tipo /controlador/accion(formato)/parámetros&lt;/a>. El post estaba centrado básicamente en la tabla de rutas y cómo la URL clásica de ASP.NET MVC /Controlador/Accion/Parámetros no es una obligación sinó básicamente una convención.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ASP.NET MVC: Mostrar datos en HTML o PDF (pero en el fondo vamos a hablar de la tabla de rutas).</title><link>https://www.eiximenis.dev/posts/2010-09-09-asp-net-mvc-mostrar-datos-en-html-o-pdf-pero-en-el-fondo-vamos-a-hablar-de-la-tabla-de-rutas/</link><pubDate>Thu, 09 Sep 2010 13:13:19 +0000</pubDate><atom:modified>Thu, 09 Sep 2010 13:13:19 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-09-09-asp-net-mvc-mostrar-datos-en-html-o-pdf-pero-en-el-fondo-vamos-a-hablar-de-la-tabla-de-rutas/</guid><description>&lt;p>El otro día, &lt;a href="http://geeks.ms/members/mrubino/default.aspx">uno de los grandes de Webforms&lt;/a> (al que, aún que a veces despotrique un poco, MVC le está empezando a gustar :P), publico un &lt;a href="http://geeks.ms/blogs/mrubino/archive/2010/09/08/tip-trick-asp-net-mvc-amp-pdf.aspx">excelente artículo sobre como generar PDFs usando MVC&lt;/a>. En el artículo Marc mostraba como mostrar datos de un PDF físico en disco o bien usando una vista parcial para generar PDFs al vuelo.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Subir ficheros al servidor en ASP.NET MVC</title><link>https://www.eiximenis.dev/posts/2010-09-08-subir-ficheros-al-servidor-en-asp-net-mvc/</link><pubDate>Wed, 08 Sep 2010 13:23:05 +0000</pubDate><atom:modified>Wed, 08 Sep 2010 13:23:05 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-09-08-subir-ficheros-al-servidor-en-asp-net-mvc/</guid><description>&lt;p>Buenas! Hoy voy a responder alguna pregunta que me he encontrado en alguna vez, y es como &lt;em>subir ficheros&lt;/em> al servidor usando MVC2.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Opinión: bool es sólo para true/false</title><link>https://www.eiximenis.dev/posts/2010-08-25-opinin-bool-es-slo-para-truefalse/</link><pubDate>Wed, 25 Aug 2010 13:37:29 +0000</pubDate><atom:modified>Wed, 25 Aug 2010 13:37:29 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-08-25-opinin-bool-es-slo-para-truefalse/</guid><description>&lt;p>Saludos a todos! Tanto a los que estéis trabajando, cómo aquellos que estando de vacaciones seais tan frikis que leais geeks.ms! 🙂&lt;/p>
&lt;p>Hoy quiero hablar un poco sobre &lt;em>bool&lt;/em>. Puede parecer un tipo de datos aburridote: a fin de cuentas sólo puede tener dos valores, pero precisamente ahí radica su gracia y de eso os quería contar. La idea del post es muy simple: &lt;em>bool es sólo para true/false&lt;/em>.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Opinión: De los atributos y su uso…</title><link>https://www.eiximenis.dev/posts/2010-08-14-opinin-de-los-atributos-y-su-uso/</link><pubDate>Sat, 14 Aug 2010 20:22:16 +0000</pubDate><atom:modified>Sat, 14 Aug 2010 20:22:16 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-08-14-opinin-de-los-atributos-y-su-uso/</guid><description>&lt;p>Sí, ya sé: estamos en Agosto y lo que más seduce ahora mismo es darse un bañito en la playa y salir de copas a rebentar los mojitos del bar, así que los que podáis hacedlo sin dudar… Total, este post tampoco se largará a ninguna parte luego… 🙂&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ASP.NET MVC3 – Filtros que no son atributos</title><link>https://www.eiximenis.dev/posts/2010-07-29-asp-net-mvc3-filtros-que-no-son-atributos/</link><pubDate>Thu, 29 Jul 2010 12:03:39 +0000</pubDate><atom:modified>Thu, 29 Jul 2010 12:03:39 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-07-29-asp-net-mvc3-filtros-que-no-son-atributos/</guid><description>&lt;p>Antes que nada una nota: Este post está basado en la &lt;em>preview 1&lt;/em> de ASP.NET MVC3. Todo lo que comento puede cambiar en futuras previews de MVC3.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ASP.NET MVC 3 – Preview 1</title><link>https://www.eiximenis.dev/posts/2010-07-28-asp-net-mvc-3-preview-1/</link><pubDate>Wed, 28 Jul 2010 19:03:00 +0000</pubDate><atom:modified>Wed, 28 Jul 2010 19:03:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-07-28-asp-net-mvc-3-preview-1/</guid><description>&lt;p>Ayer saltaba la noticia en &lt;a href="http://weblogs.asp.net/scottgu">el blog de scottgu&lt;/a>: la &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=cb42f741-8fb1-4f43-a5fa-812096f8d1e8&amp;amp;displaylang=en">preview 1 de ASP.NET MVC3 ya está disponible para descargar&lt;/a>. En fin, podríamos discutir largo y tendido sobre la política de actualizaciones a lo bestia de las APIs que está realizando microsoft desde hace algún tiempo, pero como cada uno tendría su opinión, mejor vamos a ver las novedades que trae esa &lt;em>preview 1&lt;/em>. Antes que nada, podéis instalarla sin miedo: se instala side by side con MVC2 y además los proyectos que ya teníais no se ven afectados.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>[C# Básico] Delegates</title><link>https://www.eiximenis.dev/posts/2010-07-21-c-bsico-delegates/</link><pubDate>Wed, 21 Jul 2010 14:56:00 +0000</pubDate><atom:modified>Wed, 21 Jul 2010 14:56:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-07-21-c-bsico-delegates/</guid><description>&lt;p>Hola a todos! Este es el tercer post de esa “serie” de C# Básico. En &lt;a href="https://www.eiximenis.dev/blogs/etomas/archive/2010/07/07/c-b-225-sico-interfaces.aspx">el primero vimos las interfaces&lt;/a> y en &lt;a href="https://www.eiximenis.dev/blogs/etomas/archive/2010/07/14/c-b-225-sico-191-que-es-la-herencia.aspx">segundo intenté responder a la pregunta de que es la herencia&lt;/a>.&lt;/p>
&lt;p>Hoy quiero hablaros de un tema sobre el que bastante gente tiene dificultades y sobre el que hay bastante confusión, pero que en el fondo es mucho más simple de lo que parece! Sí, me estoy refiriendo a los delegates (o delegados).&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>[C# Básico] ¿Que es la herencia?</title><link>https://www.eiximenis.dev/posts/2010-07-14-c-bsico-que-es-la-herencia/</link><pubDate>Wed, 14 Jul 2010 08:58:31 +0000</pubDate><atom:modified>Wed, 14 Jul 2010 08:58:31 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-07-14-c-bsico-que-es-la-herencia/</guid><description>&lt;p>Hola a todos! Despues de la buena acogida que tuvo la &lt;a href="http://geeks.ms/blogs/etomas/archive/2010/07/07/c-b-225-sico-interfaces.aspx">primera entrega de C# Básico (dedicada a las interfaces)&lt;/a>, me gustaría abordar hoy una de las cuestiones que se pusieron en los comentarios: &lt;em>¿Qué es la herencia?&lt;/em> De nuevo os recuerdo que esta serie &lt;em>es vuestra&lt;/em>: no tengáis reparos en pedir posts de algún tema en concreto o aclaraciones e intentaré contestaros dentro de mis conocimientos 🙂&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ASP.NET MVC Q&amp;A: ¿Cómo se usan las cookies?</title><link>https://www.eiximenis.dev/posts/2010-07-09-asp-net-mvc-qa-cmo-se-usan-las-cookies/</link><pubDate>Fri, 09 Jul 2010 13:49:56 +0000</pubDate><atom:modified>Fri, 09 Jul 2010 13:49:56 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-07-09-asp-net-mvc-qa-cmo-se-usan-las-cookies/</guid><description>&lt;p>Buenoooo… sigo esta serie que se inició a raíz de las preguntas que recibí en el webcast que realicé sobre ASP.NET MVC para la gente del &lt;a href="http://uoc.dotnetclubs.com/">DotNetClub de la UOC&lt;/a>. Si queréis ver que otros posts de esta serie hay (o habrá) echad un vistazo al &lt;a href="http://geeks.ms/blogs/etomas/archive/2010/06/29/webcast-asp-net-mvc-uoc-dotnetclub-material.aspx">post que sirve de índice&lt;/a>.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>[C# Básico] Interfaces</title><link>https://www.eiximenis.dev/posts/2010-07-07-c-bsico-interfaces/</link><pubDate>Wed, 07 Jul 2010 12:45:26 +0000</pubDate><atom:modified>Wed, 07 Jul 2010 12:45:26 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-07-07-c-bsico-interfaces/</guid><description>&lt;p>Hola a todos! El otro día recibí un correo que decía lo siguiente:&lt;/p>
&lt;blockquote>
&lt;p>&lt;em>¿Podrías escribir algo sobre el uso de Interfaces? Yo por ahi he leido que es algo recomendado crear interfaces que es como un patrón.. Yo la verdad no las uso en mis proyectos pero me gustaría saber para qué sirven y porque se deberían usar y en qué casos.&lt;/em>&lt;/p>
&lt;/blockquote></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ASP.NET MVC Q&amp;A: ¿Como reciben parámetros los controladores?</title><link>https://www.eiximenis.dev/posts/2010-07-02-asp-net-mvc-qa-como-reciben-parmetros-los-controladores/</link><pubDate>Fri, 02 Jul 2010 12:04:06 +0000</pubDate><atom:modified>Fri, 02 Jul 2010 12:04:06 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-07-02-asp-net-mvc-qa-como-reciben-parmetros-los-controladores/</guid><description>&lt;p>Este es el segundo post de la serie que nace a raíz de las preguntas que se me realizaron en el Webcast que di sobre ASP.NET MVC.&lt;/p>
&lt;p>Estaba explicando la tabla de rutas por “defecto” de ASP.NET MVC, indicando que el primer valor era el controlador, el segundo la acción y el tercero un parámetro llamado id:&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ASP.NET MVC Q&amp;A: Cómo usar la sesión?</title><link>https://www.eiximenis.dev/posts/2010-06-30-asp-net-mvc-qa-cmo-usar-la-sesin/</link><pubDate>Wed, 30 Jun 2010 18:54:52 +0000</pubDate><atom:modified>Wed, 30 Jun 2010 18:54:52 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-06-30-asp-net-mvc-qa-cmo-usar-la-sesin/</guid><description>&lt;p>Hola a todos! Este es el primer post de la serie que “nace” a raíz de las preguntas que se me realizaron durante el Webcast de ASP.NET MVC que realizé el pasado 28 de Junio.&lt;/p>
&lt;p>Una de las preguntas fue precisamente &lt;em>si se podia usar la sesión&lt;/em>. La respuesta corta que di en el Webcast fue “&lt;em>sí: la sesión funciona exactamente igual que en Webforms y en mi opinión el sitio donde usarla es en los controladores&lt;/em>”. Ahora viene la respuesta larga… 🙂&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>[WebCast] ASP.NET MVC UoC DotNetClub – Material</title><link>https://www.eiximenis.dev/posts/2010-06-29-webcast-asp-net-mvc-uoc-dotnetclub-material/</link><pubDate>Tue, 29 Jun 2010 18:17:05 +0000</pubDate><atom:modified>Tue, 29 Jun 2010 18:17:05 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-06-29-webcast-asp-net-mvc-uoc-dotnetclub-material/</guid><description>&lt;p>Hola a todos!&lt;/p>
&lt;p>Ayer 28 de Junio a las 20:00 di un WebCast de introducción a ASP.NET MVC gracias a la gente del &lt;a href="http://uoc.dotnetclubs.com/" target="_blank" rel="noopener noreferrer">UoC DotNetClub&lt;/a>. La verdad es que yo me lo pasé fenomenal, a pesar de no ser muy ducho con el LiveMeeting que digamos, pero bueno, jejejeee… 🙂&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>[WebCast] ASP.NET MVC para UOC DotNetClub aplazada al 28 de Junio</title><link>https://www.eiximenis.dev/posts/2010-06-21-webcast-asp-net-mvc-para-uoc-dotnetclub-aplazada-al-28-de-junio/</link><pubDate>Mon, 21 Jun 2010 12:31:44 +0000</pubDate><atom:modified>Mon, 21 Jun 2010 12:31:44 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-06-21-webcast-asp-net-mvc-para-uoc-dotnetclub-aplazada-al-28-de-junio/</guid><description>&lt;p>El WebCast sobre ASP.NET MVC que debía realizar hoy (21 junio) para el UOC DotNetClub se aplaza &lt;strong>una semana&lt;/strong> hasta el 28 de junio.&lt;/p>
&lt;p>La razón principal es que no vamos a hacerle la competencia a La Roja que juega justo a la misma hora, y me consta que Casillas y Villa entre otros desean asistir al WebCast… 😛 😛 😛 Y tampoco vamos a olvidarnos de los hondureños, claro!!!&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Usa las interfaces… que para eso están!</title><link>https://www.eiximenis.dev/posts/2010-06-18-usa-las-interfaces-que-para-eso-estn/</link><pubDate>Fri, 18 Jun 2010 10:50:42 +0000</pubDate><atom:modified>Fri, 18 Jun 2010 10:50:42 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-06-18-usa-las-interfaces-que-para-eso-estn/</guid><description>&lt;p>Ole! Vaya título tan imperativo me ha salido, eh??? Un post cortito para comentar un problemilla que hemos tenido en casa de un cliente, y que al final era debido por no usar interfaces (en nuestro caso interfaces COM).&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ASP.NET MVC: Create tus propias validaciones</title><link>https://www.eiximenis.dev/posts/2010-06-16-asp-net-mvc-create-tus-propias-validaciones/</link><pubDate>Wed, 16 Jun 2010 12:02:00 +0000</pubDate><atom:modified>Wed, 16 Jun 2010 12:02:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-06-16-asp-net-mvc-create-tus-propias-validaciones/</guid><description>&lt;p>Una de las noverdades de ASP.NET MVC 2 es que lleva integrado el uso de &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/dd901590(VS.95).aspx" rel="noopener noreferrer">Data Annotations&lt;/a> para permitirnos validar los modelos. &lt;a target="_blank" href="http://www.asp.net/mvc/tutorials/validation-with-the-data-annotation-validators-cs" rel="noopener noreferrer">En ASP.NET MVC 1 también era posible&lt;/a> pero no era un proceso tan integrado como con la nueva versión.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Sobre ir recorriendo enumerables…</title><link>https://www.eiximenis.dev/posts/2010-06-11-sobre-ir-recorriendo-enumerables/</link><pubDate>Fri, 11 Jun 2010 15:28:01 +0000</pubDate><atom:modified>Fri, 11 Jun 2010 15:28:01 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-06-11-sobre-ir-recorriendo-enumerables/</guid><description>&lt;p>El otro día, Oren Eini (aka &lt;a href="http://ayende.com" target="_blank" rel="noopener noreferrer">Ayende&lt;/a>) escribió en su blog un post, en respuesta a otro post escrito por Phil Haack (aka &lt;a href="http://haacked.com" target="_blank" rel="noopener noreferrer">Haacked&lt;/a>). En su post Phil mostraba un método extensor para comprobar si un IEnumerable&lt;T> era null o estaba vacío (y sí, Phil usa &lt;a href="http://geeks.ms/blogs/jmaguilar/archive/2010/05/20/191-esa-enumeraci-243-n-est-225-vac-237-a.aspx" target="_blank" rel="noopener noreferrer">Any() en lugar de Count() para comprobar si la enumeración está vacía&lt;/a>):&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>[WebCast] ASP.NET MVC con UOC DotNetClub</title><link>https://www.eiximenis.dev/posts/2010-06-07-webcast-asp-net-mvc-con-uoc-dotnetclub/</link><pubDate>Mon, 07 Jun 2010 14:45:00 +0000</pubDate><atom:modified>Mon, 07 Jun 2010 14:45:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-06-07-webcast-asp-net-mvc-con-uoc-dotnetclub/</guid><description>&lt;p>Hola!&lt;/p>
&lt;p>&lt;a target="_blank" href="https://www.eiximenis.dev/members/jbosch/default.aspx" rel="noopener noreferrer">Jesús Bosch&lt;/a> ha tenido a bien proponerme a que de un WebCast de introducción ASP.NET MVC para el &lt;a target="_blank" href="http://uoc.dotnetclubs.com/" rel="noopener noreferrer">UOC DotNetClub&lt;/a>.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Novedades de Unity 2.0</title><link>https://www.eiximenis.dev/posts/2010-06-02-novedades-de-unity-2-0/</link><pubDate>Wed, 02 Jun 2010 15:02:56 +0000</pubDate><atom:modified>Wed, 02 Jun 2010 15:02:56 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-06-02-novedades-de-unity-2-0/</guid><description>&lt;p>&lt;a href="http://unity.codeplex.com/" target="_blank" rel="noopener noreferrer">Unity&lt;/a>, el &lt;a href="http://martinfowler.com/articles/injection.html" target="_blank" rel="noopener noreferrer">contenedor IoC&lt;/a> de Microsoft, hace algunas semanas que tiene nueva versión: la 2.0. Y viene con algunas novedades interesantes respecto a la versión anterior, que os comento brevemente 🙂&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ASP.NET MVC: Custom Model Binders vs ValueProviders y un ejemplo con JSON…</title><link>https://www.eiximenis.dev/posts/2010-06-01-asp-net-mvc-custom-model-binders-vs-valueproviders-y-un-ejemplo-con-json/</link><pubDate>Tue, 01 Jun 2010 12:49:00 +0000</pubDate><atom:modified>Tue, 01 Jun 2010 12:49:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-06-01-asp-net-mvc-custom-model-binders-vs-valueproviders-y-un-ejemplo-con-json/</guid><description>&lt;p>Hola a todos!&lt;/p>
&lt;p>Este post es el cuarto sobre la serie que podríamos llamar “&lt;em>el interior de ASP.NET MCV”&lt;/em> y viene a ser un resumen de los tres anteriores.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>VS bloquea assemblies cargados desde la web</title><link>https://www.eiximenis.dev/posts/2010-05-28-vs-bloquea-assemblies-cargados-desde-la-web/</link><pubDate>Fri, 28 May 2010 15:03:00 +0000</pubDate><atom:modified>Fri, 28 May 2010 15:03:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-05-28-vs-bloquea-assemblies-cargados-desde-la-web/</guid><description>&lt;p>¡Hola!&lt;/p>
&lt;p>Situación explicada rápidament: Si te descargas un assembly directamente desde internet, y añades una referencia a dicho assembly, la referencia te aparecerá como añadida, pero VS no hará caso de ella. Cuando compiles te aparecerá un error parecido a:&lt;/p>
&lt;p>&lt;code>Unable to load the metadata for assembly 'AvalonDock'. This assembly may have been downloaded from the web. See http://go.microsoft.com/fwlink/?LinkId=179545; The following error was encountered during load: Could not load file or assembly 'AvalonDock, Version=1.2.2691.0, Culture=neutral, PublicKeyToken=85a1e0ada7ec13e4' or one of its dependencies. Operation is not supported. (Exception from HRESULT: 0x80131515)&lt;/code>&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Desacopla tus datos XML del formato…</title><link>https://www.eiximenis.dev/posts/2010-05-26-desacopla-tus-datos-xml-del-formato/</link><pubDate>Wed, 26 May 2010 12:56:55 +0000</pubDate><atom:modified>Wed, 26 May 2010 12:56:55 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-05-26-desacopla-tus-datos-xml-del-formato/</guid><description>&lt;p>Leyendo &lt;a href="http://geeks.ms/blogs/gtorres/archive/2010/05/24/xmlserializer-y-xml-attributes.aspx" target="_blank" rel="noopener noreferrer">este post de Gisela sobre la serialización XML&lt;/a> me he decidido escribir este… es lo que tiene la realimentación en los blogs 🙂&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Redefiniendo GetHashCode</title><link>https://www.eiximenis.dev/posts/2010-05-21-redefiniendo-gethashcode/</link><pubDate>Fri, 21 May 2010 11:45:55 +0000</pubDate><atom:modified>Fri, 21 May 2010 11:45:55 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-05-21-redefiniendo-gethashcode/</guid><description>&lt;p>Hola a todos! Un post para comentar paranoias varias sobre algo que parece tan simple como redefinir &lt;code>GetHashCode()&lt;/code>…&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ASP.NET MVC: Custom Model Binders</title><link>https://www.eiximenis.dev/posts/2010-05-12-asp-net-mvc-custom-model-binders/</link><pubDate>Wed, 12 May 2010 15:13:00 +0000</pubDate><atom:modified>Wed, 12 May 2010 15:13:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-05-12-asp-net-mvc-custom-model-binders/</guid><description>&lt;p>Seguimos esa serie donde intentamos &lt;em>bucear&lt;/em> un poco por algunas interioridades de ASP.NET MVC, intentando ver como funcionan por dentro algunas de las características de ese framework tan apasionante como és ASP.NET MVC. Si &lt;a target="_blank" href="https://www.eiximenis.dev/blogs/etomas/archive/2010/05/07/asp-net-mvc-valueproviders.aspx" rel="noopener noreferrer">en el primer post de la serie vimos lo que eran los value providers&lt;/a>__ y &lt;a target="_blank" href="https://www.eiximenis.dev/blogs/etomas/archive/2010/05/10/asp-net-mvc-el-defaultmodelbinder.aspx" rel="noopener noreferrer">en el segundo post vimos como funcionaba el DefaultModelBinder&lt;/a>__ en el post de hoy veremos como podemos crear Model Binders propios (lo que a su vez, nos ayudará a entender todavía más como funciona el &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/system.web.mvc.defaultmodelbinder.aspx" rel="noopener noreferrer">DefaultModelBinder&lt;/a>).&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ASP.NET MVC: El DefaultModelBinder</title><link>https://www.eiximenis.dev/posts/2010-05-10-asp-net-mvc-el-defaultmodelbinder/</link><pubDate>Mon, 10 May 2010 17:01:00 +0000</pubDate><atom:modified>Mon, 10 May 2010 17:01:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-05-10-asp-net-mvc-el-defaultmodelbinder/</guid><description>&lt;p>En el &lt;a target="_blank" href="https://www.eiximenis.dev/blogs/etomas/archive/2010/05/07/asp-net-mvc-valueproviders.aspx" rel="noopener noreferrer">post anterior vimos que eran los Value Providers&lt;/a> de ASP.NET MVC. En éste, lo que vamos a ver es el DefaultModelBinder y algunas de sus “interioridades”&amp;hellip;&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>Disclaimer&lt;/strong>: Al igual que el post anterior, este asume conocimientos básicos de ASP.NET MVC, así como de http en general.&lt;/p>
&lt;/blockquote></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ASP.NET MVC: ValueProviders</title><link>https://www.eiximenis.dev/posts/2010-05-07-asp-net-mvc-valueproviders/</link><pubDate>Fri, 07 May 2010 11:12:58 +0000</pubDate><atom:modified>Fri, 07 May 2010 11:12:58 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-05-07-asp-net-mvc-valueproviders/</guid><description>&lt;p>Hola! Hoy quiero comentar un aspecto de ASP.NET MVC2 que no sé hasta que punto es conocido, y son los llamados &lt;em>Value Providers&lt;/em>.&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>Disclaimer:&lt;/strong> Este post será largo y puede ser un poco denso y asumo conocimientos básicos de ASP.NET MVC. Tampoco tengas reparos en leerte este post en más de un dia si quieres… había pensado dividirlo en dos posts, pero al final he preferido meterlo todo en uno.&lt;/p>
&lt;/blockquote></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Evento de ASP.NET MVC</title><link>https://www.eiximenis.dev/posts/2010-05-05-evento-de-asp-net-mvc/</link><pubDate>Wed, 05 May 2010 08:28:10 +0000</pubDate><atom:modified>Wed, 05 May 2010 08:28:10 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-05-05-evento-de-asp-net-mvc/</guid><description>&lt;p>Hola a todos!! Mañana (o sea jueves 6 de mayo) hay una charla en las oficinas de Microsoft en Madrid sobre ASP.NET MVC, en la cual tengo el gusto de participar.&lt;/p>
&lt;p>Yo voy a contar cosillas sobre controladores y modelos… Veremos como hacer binding y validaciones de modelos, un poco sobre factorías de controladores, action results, action filters y cuatro cosillas sobre la tabla de rutas… En fin, lo que me de tiempo en una hora. 🙂&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>[ASP.NET MVC] ‘formElement is null’ o como un pequeño error te hace perder el tiempo…</title><link>https://www.eiximenis.dev/posts/2010-05-04-asp-net-mvc-formelement-is-null-o-como-un-pequeo-error-te-hace-perder-el-tiempo/</link><pubDate>Tue, 04 May 2010 12:17:37 +0000</pubDate><atom:modified>Tue, 04 May 2010 12:17:37 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-05-04-asp-net-mvc-formelement-is-null-o-como-un-pequeo-error-te-hace-perder-el-tiempo/</guid><description>&lt;p>Hola! Esta es una breve historia de un &lt;em>pequeño&lt;/em> error que cometí y que quiero compartir con vosotros… por si acaso 🙂&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Var, object y dynamic</title><link>https://www.eiximenis.dev/posts/2010-04-29-var-object-y-dynamic/</link><pubDate>Thu, 29 Apr 2010 08:59:15 +0000</pubDate><atom:modified>Thu, 29 Apr 2010 08:59:15 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-04-29-var-object-y-dynamic/</guid><description>&lt;p>Hola a todos! El otro día me preguntaban sobre las diferencias entre usar var, object y dynamic, y por lo que he podido observar no todo el mundo tiene claro que diferencias hay en cada caso, de ahí que me haya decidido escribir este post.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Diseñar clases para ser heredadas…</title><link>https://www.eiximenis.dev/posts/2010-04-12-disear-clases-para-ser-heredadas/</link><pubDate>Mon, 12 Apr 2010 08:55:43 +0000</pubDate><atom:modified>Mon, 12 Apr 2010 08:55:43 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-04-12-disear-clases-para-ser-heredadas/</guid><description>&lt;p>Una de las ventajas de la programación orientada a objetos, es la herencia de clases y el polimorfismo: eso es la capacidad para crear clases &lt;em>derivadas&lt;/em> a partir de otras clases y poder usar las clases derivadas en cualquier lugar donde se espere la clase base.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>[VS2008] Visual 2008 casca al adjuntarse a un proceso</title><link>https://www.eiximenis.dev/posts/2010-03-30-vs2008-visual-2008-casca-al-adjuntarse-a-un-proceso/</link><pubDate>Tue, 30 Mar 2010 12:22:54 +0000</pubDate><atom:modified>Tue, 30 Mar 2010 12:22:54 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-03-30-vs2008-visual-2008-casca-al-adjuntarse-a-un-proceso/</guid><description>&lt;p>Post rapidito… Me encontré que VS2008 me rebentaba al adjuntarme a un proceso para depurar. Aunque salía el mensaje de “Visual Studio ha causado un error y debe cerrarse”, dándole a OK, Visual Studio no se cerraba y realmente se adjuntaba al proceso… eso sí, todas las ventanas se iban a la posición que les daba la gana… lo cual da bastante por el saco si tienes que ir poniéndolas cada una a su sitio de nuevo…&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Mi modesta comparativa entre PURE y jQuery-tmpl</title><link>https://www.eiximenis.dev/posts/2010-03-20-mi-modesta-comparativa-entre-pure-y-jquery-tmpl/</link><pubDate>Sat, 20 Mar 2010 10:58:00 +0000</pubDate><atom:modified>Sat, 20 Mar 2010 10:58:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-03-20-mi-modesta-comparativa-entre-pure-y-jquery-tmpl/</guid><description>&lt;p>Hola! En mis dos últimos posts he estado hablando un poco de &lt;a target="_blank" href="http://beebole.com/pure/" rel="noopener noreferrer">PURE&lt;/a>, una herramienta para generar código HTML a partir de una plantilla y un objeto Json. Hace poco Microsoft ha presentado &lt;a target="_blank" href="http://github.com/nje/jquery-tmpl" rel="noopener noreferrer">jquery-tmpl&lt;/a>, &lt;a target="_blank" href="http://wiki.github.com/nje/jquery/jquery-templates-proposal" rel="noopener noreferrer">su propuesta (todavía abierta y en fase de discusión)&lt;/a> para realizar exactamente lo mismo: generar HTML a partir de plantillas y json. Más detalles los podeis encontrar en &lt;a target="_blank" href="http://stephenwalther.com/blog/archive/2010/03/16/microsoft-jquery-and-templating.aspx?utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed%3A+StephenWalther+(Stephen+Walther+on+ASP.NET+MVC)" rel="noopener noreferrer">este post de Stephen Walher&lt;/a>.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Lector de Twitter con ASP.NET MVC y Pure</title><link>https://www.eiximenis.dev/posts/2010-03-11-lector-de-twitter-con-asp-net-mvc-y-pure/</link><pubDate>Thu, 11 Mar 2010 18:36:00 +0000</pubDate><atom:modified>Thu, 11 Mar 2010 18:36:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-03-11-lector-de-twitter-con-asp-net-mvc-y-pure/</guid><description>&lt;p>Hola a todos! El otro día os &lt;a target="_blank" href="https://www.eiximenis.dev/blogs/etomas/archive/2010/03/09/trasteando-con-pure.aspx" rel="noopener noreferrer">comentaba lo mucho que me está gustando pure&lt;/a>&amp;hellip; Hoy, a modo de ejemplo, os presento como realizar fácilmente un lector de Twitter que muestre los últimos tweets&amp;hellip;&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Trasteando con PURE…</title><link>https://www.eiximenis.dev/posts/2010-03-09-trasteando-con-pure/</link><pubDate>Tue, 09 Mar 2010 17:35:00 +0000</pubDate><atom:modified>Tue, 09 Mar 2010 17:35:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-03-09-trasteando-con-pure/</guid><description>&lt;p>Estos días he empezado a trastear con &lt;a target="_blank" href="http://beebole.com/pure/demos/" rel="noopener noreferrer">PURE&lt;/a> (cuyas siglas significan PURE Unobstrusive Rendering Engine). El objetivo de PURE es proporcionar un mecanismo para transformar datos en &lt;a target="_blank" href="http://es.wikipedia.org/wiki/JSON" rel="noopener noreferrer">JSON&lt;/a> a HTML. Cada vez más existen multitud de servicios que devuelven datos en formato JSON, y cada vez más es normal consumir estos servicios desde aplicaciones web, via javascript. Si el resultado final es mostrar los datos debemos realizar una conversión &lt;em>a mano&lt;/em> y generar usando javascript el HTML que deseemos. Esto es lento, tedioso y pesado.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Linq To SQL y Repository Pattern… sí, pero ojo!</title><link>https://www.eiximenis.dev/posts/2010-03-04-linq-to-sql-y-repository-pattern-s-pero-ojo/</link><pubDate>Thu, 04 Mar 2010 10:13:00 +0000</pubDate><atom:modified>Thu, 04 Mar 2010 10:13:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-03-04-linq-to-sql-y-repository-pattern-s-pero-ojo/</guid><description>&lt;p>Hola a todos! Hoy, por temas que no vienen al caso, estaba mirando el &lt;a target="_blank" href="http://asp.net/mvc" rel="noopener noreferrer">tutorial de MVC que hay en asp.net&lt;/a>. Hay dos apartados dedicados a explicar como se pueden realizar modelos usando Linq to Sql y EF. Hasta ahí, ningún problema.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Nombres de algunos controladores distintos en ASP.NET MVC (ii)</title><link>https://www.eiximenis.dev/posts/2010-02-19-nombres-de-algunos-controladores-distintos-en-asp-net-mvc-ii/</link><pubDate>Fri, 19 Feb 2010 15:39:13 +0000</pubDate><atom:modified>Fri, 19 Feb 2010 15:39:13 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-02-19-nombres-de-algunos-controladores-distintos-en-asp-net-mvc-ii/</guid><description>&lt;p>Bueno… Este post es la continuación / aclaración del &lt;a href="http://geeks.ms/blogs/etomas/archive/2010/02/19/nombres-de-algunos-controladores-distintos-en-asp-net-mvc.aspx" target="_blank" rel="noopener noreferrer">post anterior&lt;/a>. En el post anterior configuramos la tabla de rutas junto con un RouteHandler propio y vimos que realmente las llamadas se enrutaban al controlador que tocaba: &lt;code>/api/Foo&lt;/code> me enrutaba al controlador &lt;code>WarFoo&lt;/code> y &lt;code>/Foo&lt;/code> me enrutaba al controlador &lt;code>Foo&lt;/code>.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Nombres de algunos controladores distintos en ASP.NET MVC</title><link>https://www.eiximenis.dev/posts/2010-02-19-nombres-de-algunos-controladores-distintos-en-asp-net-mvc/</link><pubDate>Fri, 19 Feb 2010 11:07:01 +0000</pubDate><atom:modified>Fri, 19 Feb 2010 11:07:01 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-02-19-nombres-de-algunos-controladores-distintos-en-asp-net-mvc/</guid><description>&lt;p>Hola! Un post para comentaros como he implementado una cosilla que necesitaba en ASP.NET MVC (v1). En concreto necesitaba mapear las URLs de tipo /api/{controller}/{action} al controlador especificado, pero con la salvedad de que el nombre del controlador empezaba por War. Es decir la URL /api/Foo/Index debía llamar a la acción del controlador WarFoo (en lugar del controlador Foo).&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Caliburn… ¿sientes el poder de MVVM en tus manos?</title><link>https://www.eiximenis.dev/posts/2010-02-12-caliburn-sientes-el-poder-de-mvvm-en-tus-manos/</link><pubDate>Fri, 12 Feb 2010 17:22:00 +0000</pubDate><atom:modified>Fri, 12 Feb 2010 17:22:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-02-12-caliburn-sientes-el-poder-de-mvvm-en-tus-manos/</guid><description>&lt;p>Los más frikis de por aquí, sabréis que Caliburn (&lt;em>&lt;a target="_blank" href="http://la.wikipedia.org/wiki/Caliburnus" rel="noopener noreferrer">Caliburnus&lt;/a>&lt;/em> para ser exactos) era el nombre de una poderosa espada que luego alguien decidió rebautizar como &lt;a target="_blank" href="http://es.wikipedia.org/wiki/Excalibur" rel="noopener noreferrer">&lt;em>Excalibur&lt;/em>&lt;/a>&amp;hellip; Como frikis hay en todas partes y en eso de la informática pues quizás más, &lt;a target="_blank" href="http://caliburn.codeplex.com/" rel="noopener noreferrer">Caliburn&lt;/a> también resulta ser el nombre de un framework para aplicaciones Silverlight y WPF. Dicho así parece ser lo mismo que &lt;a target="_blank" href="http://www.codeplex.com/CompositeWPF/" rel="noopener noreferrer">PRISM&lt;/a> y en cierta manera ambos frameworks tienen el mismo objetivo y comparten muchas características. Por ejemplo ambos frameworks se abstraen del contendor IoC a utilizar (es decir requieren uno, pero no se atan a ninguno), ambos dan soporte a vistas compuestas y ambos tienen el concepto de módulo&amp;hellip; entonces ¿en que se diferencian? Pues en como se enfocan para llegar al objetivo. El objetivo de este post es &lt;strong>iniciar una serie de posts&lt;/strong> (no se de cuantos :P) para hablar sobre Caliburn y compararlo con PRISM. Hoy, pero vamos a empezar por lo más básico&amp;hellip; 🙂&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ASP.NET MVC: Redirecciones permanentes</title><link>https://www.eiximenis.dev/posts/2010-02-10-asp-net-mvc-redirecciones-permanentes/</link><pubDate>Wed, 10 Feb 2010 09:54:00 +0000</pubDate><atom:modified>Wed, 10 Feb 2010 09:54:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-02-10-asp-net-mvc-redirecciones-permanentes/</guid><description>&lt;p>Buenas! Los que estéis al tanto de las novedades de ASP.NET 4, sabreis que una de ella es &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/system.web.httpresponse.redirectpermanent(VS.100).aspx" rel="noopener noreferrer">Response.RedirectPermanent&lt;/a> (de la cual Ibon habla &lt;a target="_blank" href="https://www.eiximenis.dev/blogs/ilanda/archive/2010/01/26/m-233-todo-response-redirectpermanent.aspx" rel="noopener noreferrer">un poco en este post&lt;/a>). La diferencia con respecto a Response.Redirect es que esta emite un código &lt;a target="_blank" href="http://en.wikipedia.org/wiki/HTTP_302" rel="noopener noreferrer">HTTP 302 (Found)&lt;/a> mientras que RedirectPermanent emite un código &lt;a target="_blank" href="http://en.wikipedia.org/wiki/HTTP_301" rel="noopener noreferrer">HTTP 301 (Moved Permanently)&lt;/a>.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>[WebCast] Material de mi webcast sobre Facebook Connect</title><link>https://www.eiximenis.dev/posts/2010-02-09-webcast-material-de-mi-webcast-sobre-facebook-connect/</link><pubDate>Tue, 09 Feb 2010 09:27:20 +0000</pubDate><atom:modified>Tue, 09 Feb 2010 09:27:20 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-02-09-webcast-material-de-mi-webcast-sobre-facebook-connect/</guid><description>&lt;p>Este pasado jueves (4 de febrero de 2010) di un WebCast sobre Facebook Connect. La verdad es que era la primera vez que daba un webcast, y fue una sensación extraña: acostumbrado a dar charlas presenciales, se me hizo raro no tener el feedback visual de la gente. La verdad es que me sentí un poco como cuando hablas con un contestador automático…&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>NoSQL… ¿puede ser lo que necesitas?</title><link>https://www.eiximenis.dev/posts/2010-02-08-nosql-puede-ser-lo-que-necesitas/</link><pubDate>Mon, 08 Feb 2010 12:36:00 +0000</pubDate><atom:modified>Mon, 08 Feb 2010 12:36:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-02-08-nosql-puede-ser-lo-que-necesitas/</guid><description>&lt;p>Ultimamente se oye hablar cada vez más de BBDD no relacionales o tal y como se las conoce ahora “NoSQL”. En &lt;a target="_blank" href="https://www.eiximenis.dev/controlpanel/blogs/posteditor.aspx/www.dosideas.com" rel="noopener noreferrer">dosideas&lt;/a> publicaron un &lt;a target="_blank" href="http://www.dosideas.com/base-de-datos/657-nosql-el-movimiento-en-contra-de-las-bases-de-datos.html" rel="noopener noreferrer">interesante post al respecto de los sistemas NoSQL&lt;/a>. La idea es renunciar a algunos de los principios (y funcionalidades) de las bases de datos &lt;em>tradicionales&lt;/em> (relacionales) a cambio de obtener mayores velocidades en el acceso a datos.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Facebook Connect (iv): Que todo el mundo sepa lo que has hecho!</title><link>https://www.eiximenis.dev/posts/2010-02-02-facebook-connect-iv-que-todo-el-mundo-sepa-lo-que-has-hecho/</link><pubDate>Tue, 02 Feb 2010 12:27:00 +0000</pubDate><atom:modified>Tue, 02 Feb 2010 12:27:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-02-02-facebook-connect-iv-que-todo-el-mundo-sepa-lo-que-has-hecho/</guid><description>&lt;p>Se comenta que las redes sociales dan fama, mujeres y dinero aunque no necesariamente en este orden&amp;hellip;&lt;/p>
&lt;p>En los tres primeros posts sobre facebook connect vimos como &lt;a target="_blank" href="https://www.eiximenis.dev/blogs/etomas/archive/2009/12/10/facebook-connect-si-est-225-s-en-facebook-bienvenido-a-mi-web.aspx" rel="noopener noreferrer">permitir al usuario que hiciera login con su cuenta de facebook&lt;/a>, como &lt;a target="_blank" href="https://www.eiximenis.dev/blogs/etomas/archive/2009/12/14/facebook-connect-ii-adi-243-s-amigo-adi-243-s-o-como-hacer-el-logout.aspx" rel="noopener noreferrer">implementar el logout&lt;/a> y como &lt;a target="_blank" href="https://www.eiximenis.dev/blogs/etomas/archive/2009/12/15/facebook-connect-iii-eh-que-esta-parte-de-mi-web-s-243-lo-es-para-usuarios-de-facebook-asp-net-mvc.aspx" rel="noopener noreferrer">crear zonas “privadas” de nuestra web sólo para usuarios de facebook&lt;/a>.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>[CatDotNet] Material de mi charla sobre ASP.NET MVC</title><link>https://www.eiximenis.dev/posts/2010-02-02-catdotnet-material-de-mi-charla-sobre-asp-net-mvc/</link><pubDate>Tue, 02 Feb 2010 09:13:45 +0000</pubDate><atom:modified>Tue, 02 Feb 2010 09:13:45 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-02-02-catdotnet-material-de-mi-charla-sobre-asp-net-mvc/</guid><description>&lt;p>Hola! Este viernes, tal y &lt;a href="http://geeks.ms/blogs/jmtorres/archive/2010/01/26/catdotnet-eduard-tom-224-s-hablando-sobre-asp-net-mvc-en-igualada-comorrr.aspx" target="_blank" rel="noopener noreferrer">como anunció José Miguel&lt;/a>, hemos celebrado una pequeña sesión en &lt;a href="http://www.catdotnet.org" target="_blank" rel="noopener noreferrer">CatDotNet&lt;/a> donde he tenido el placer de hablar un poco sobre ASP.NET MVC…&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>[WebCast] Aprovecha el poder de facebook en tu web.</title><link>https://www.eiximenis.dev/posts/2010-01-21-webcast-aprovecha-el-poder-de-facebook-en-tu-web/</link><pubDate>Thu, 21 Jan 2010 08:27:18 +0000</pubDate><atom:modified>Thu, 21 Jan 2010 08:27:18 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-01-21-webcast-aprovecha-el-poder-de-facebook-en-tu-web/</guid><description>&lt;p>Hola a todos! Este post es sólo para informaros que el próximo &lt;strong>4 de febrero a las 19:00&lt;/strong>, voy a realizar un webcast para la gente del &lt;a href="http://uoc.dotnetclubs.com/" target="_blank" rel="noopener noreferrer">Club .NET UOC&lt;/a>. Bajo el título &lt;em>Aprovecha el poder de facebook en tu web&lt;/em>, voy a contar algunas cosillas sobre como integrar facebook en tu aplicación ASP.NET: usar connect para implementar un SSO (single sign-on), poner mensajes en el muro, obtener información del perfil del usuario…&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>RA000 (o MSB3217): Cannot Register assembly Foo.dll (Method does not have an implementation).</title><link>https://www.eiximenis.dev/posts/2010-01-20-ra000-o-msb3217-cannot-register-assembly-foo-dll-method-does-not-have-an-implementation/</link><pubDate>Wed, 20 Jan 2010 12:25:47 +0000</pubDate><atom:modified>Wed, 20 Jan 2010 12:25:47 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-01-20-ra000-o-msb3217-cannot-register-assembly-foo-dll-method-does-not-have-an-implementation/</guid><description>&lt;p>Hola! Un post cortito, sobre un error que me he encotrado… Al compilar un proyecto, marcado para interoperabilidad COM VS.NET se me ha quejado con el siguiente error:&lt;/p>
&lt;pre tabindex="0">&lt;code>c\:WINDOWS\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets(3019,9): error MSB3217: Cannot register assembly &amp;quot;C\:Teamserver\PhoenixRefactoring\Core\DevelopmentCore-WI5825-SIO4\bin\Debug\PhoenixContainer.dll&amp;quot;. Method ‘GetDefaultIWorkspace’ in type ‘CaixaPenedes.Phoenix.Core.CompositeUI.ShellUserControl’ from assembly ‘Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=77c76132715b70fa’ does not have an implementation.
&lt;/code>&lt;/pre></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Objetos que notifican sus cambios de propiedades (2/3): Publish and subscribe</title><link>https://www.eiximenis.dev/posts/2010-01-14-objetos-que-notifican-sus-cambios-de-propiedades-23-publish-and-subscribe/</link><pubDate>Thu, 14 Jan 2010 10:04:00 +0000</pubDate><atom:modified>Thu, 14 Jan 2010 10:04:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-01-14-objetos-que-notifican-sus-cambios-de-propiedades-23-publish-and-subscribe/</guid><description>&lt;p>&lt;strong>Nota:&lt;/strong> Este post es el segundo post de la &lt;a target="_blank" href="https://www.eiximenis.dev/blogs/etomas/archive/2010/01/12/objetos-que-notifican-sus-cambios-de-propiedades-0-3-introducci-243-n.aspx" rel="noopener noreferrer">serie Objetos que notifican sus cambios de propiedades&lt;/a>__.&lt;/p>
&lt;p>En el post anterior vimos como configurar Unity para que no tener que añadir código adicional para implementar la interfaz &lt;a target="_blank" href="http://msdn.microsoft.com/es-es/library/system.componentmodel.inotifypropertychanged.aspx" rel="noopener noreferrer">INotifyPropertyChanged&lt;/a>. En este post quiero hablaros de un patrón que se utiliza mucho cuando hablamos de aplicaciones &lt;em>complejas&lt;/em>: el patrón del &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Publish/subscribe" rel="noopener noreferrer">publicador – suscriptor&lt;/a>. En este patrón tenemos básicamente dos conceptos:&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Objetos que notifican sus cambios de propiedades (1/3): La intercepción</title><link>https://www.eiximenis.dev/posts/2010-01-13-objetos-que-notifican-sus-cambios-de-propiedades-13-la-intercepcin/</link><pubDate>Wed, 13 Jan 2010 13:35:00 +0000</pubDate><atom:modified>Wed, 13 Jan 2010 13:35:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-01-13-objetos-que-notifican-sus-cambios-de-propiedades-13-la-intercepcin/</guid><description>&lt;p>&lt;strong>Nota:&lt;/strong> Este post es el primer post de la &lt;a target="_blank" href="https://www.eiximenis.dev/blogs/etomas/archive/2010/01/12/objetos-que-notifican-sus-cambios-de-propiedades-0-3-introducci-243-n.aspx" rel="noopener noreferrer">serie Objetos que notifican sus cambios de propiedades&lt;/a>__.&lt;/p>
&lt;p>En este post vamos a ver como configurar la intercepción de Unity, para poder inyectar nuestro código cada vez que se modifiquen las propiedades de un objeto.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Objetos que notifican sus cambios de propiedades (0/3): Introducción</title><link>https://www.eiximenis.dev/posts/2010-01-12-objetos-que-notifican-sus-cambios-de-propiedades-03-introduccin/</link><pubDate>Tue, 12 Jan 2010 13:01:08 +0000</pubDate><atom:modified>Tue, 12 Jan 2010 13:01:08 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2010-01-12-objetos-que-notifican-sus-cambios-de-propiedades-03-introduccin/</guid><description>&lt;p>Hola a todos!!! Como ha ido la despedida del 2009 y la bienvenida del 2010!!! Espero que os hayáis portado bien y que los reyes os hayan traído muuuuchos regalitos!&lt;/p>
&lt;p>En este post quiero dejar de lado la serie que estaba haciendo sobre facebook connect, para ver como, gracias a Unity, podemos crear objetos que nos notifiquen cuando cambian sus propiedades, sin que nosotros debamos añadir (casi) ningún código adicional!&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Cambiar el nombre de un cliente de un Workspace de TFS</title><link>https://www.eiximenis.dev/posts/2009-12-18-cambiar-el-nombre-de-un-cliente-de-un-workspace-de-tfs/</link><pubDate>Fri, 18 Dec 2009 09:02:00 +0000</pubDate><atom:modified>Fri, 18 Dec 2009 09:02:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2009-12-18-cambiar-el-nombre-de-un-cliente-de-un-workspace-de-tfs/</guid><description>&lt;p>Saludos! Un post cortito, cortito, cortito 🙂&lt;/p>
&lt;p>Si renombramos una máquina cliente de TFS, vemos que perdemos los mappings ya que el workspace está asociado a un usuario + nombre de máquina.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Ooops.. esta página no la tengo, pero tengo otra parecida para tí…</title><link>https://www.eiximenis.dev/posts/2009-12-17-ooops-esta-pgina-no-la-tengo-pero-tengo-otra-parecida-para-t/</link><pubDate>Thu, 17 Dec 2009 11:53:22 +0000</pubDate><atom:modified>Thu, 17 Dec 2009 11:53:22 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2009-12-17-ooops-esta-pgina-no-la-tengo-pero-tengo-otra-parecida-para-t/</guid><description>&lt;p>Este genial post de José M. Aguilar &lt;a href="http://geeks.ms/blogs/jmaguilar/archive/2009/12/16/procesar-peticiones-a-acciones-inexistentes-en-asp-net-mvc.aspx" target="_blank" rel="noopener noreferrer">sobre como procesar peticiones existentes en ASP.NET MVC&lt;/a>, me ha dado una idea que quiero compartir con vosotros… El tema consiste en que si el usuario se equivoca y entra una URL errónea como /Home/Jindex (en lugar de /Home/Index) le podemos sugerir que quizá quería ir a /Home/Index. Vamos a ver como podríamos hacerlo…&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Facebook Connect (iii): Eh! Que esta parte de mi web sólo es para usuarios de facebook! (ASP.NET MVC)</title><link>https://www.eiximenis.dev/posts/2009-12-15-facebook-connect-iii-eh-que-esta-parte-de-mi-web-slo-es-para-usuarios-de-facebook-asp-net-mvc/</link><pubDate>Tue, 15 Dec 2009 17:34:38 +0000</pubDate><atom:modified>Tue, 15 Dec 2009 17:34:38 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2009-12-15-facebook-connect-iii-eh-que-esta-parte-de-mi-web-slo-es-para-usuarios-de-facebook-asp-net-mvc/</guid><description>&lt;p>Este post va a ser cortito… En los dos primeros posts de esta serie hemos visto &lt;a href="http://geeks.ms/blogs/etomas/archive/2009/12/10/facebook-connect-si-est-225-s-en-facebook-bienvenido-a-mi-web.aspx" target="_blank" rel="noopener noreferrer">como podemos autenticar (logon) a un usuario de facebook&lt;/a> en nuestra web y &lt;a href="http://geeks.ms/blogs/etomas/archive/2009/12/14/facebook-connect-ii-adi-243-s-amigo-adi-243-s-o-como-hacer-el-logout.aspx" target="_blank" rel="noopener noreferrer">como podemos desautenticarlo (logoff)&lt;/a>.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Facebook Connect (ii): Adiós, amigo adiós (o como hacer el logout).</title><link>https://www.eiximenis.dev/posts/2009-12-14-facebook-connect-ii-adis-amigo-adis-o-como-hacer-el-logout/</link><pubDate>Mon, 14 Dec 2009 16:06:12 +0000</pubDate><atom:modified>Mon, 14 Dec 2009 16:06:12 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2009-12-14-facebook-connect-ii-adis-amigo-adis-o-como-hacer-el-logout/</guid><description>&lt;p>Hola a todos! Este es el segundo post de una serie que iré haciendo contando &lt;em>mis&lt;/em> experiencias con Facebook Connect. En el primer post vimos &lt;a href="http://geeks.ms/blogs/etomas/archive/2009/12/10/facebook-connect-si-est-225-s-en-facebook-bienvenido-a-mi-web.aspx">como usar facebook connect para implementar un single sign on en nuestra web&lt;/a> (o sea que los usuarios puedan entrar en nuestra web usando el login y password de facebook).&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Facebook Connect: Si estás en facebook bienvenido a mi web…</title><link>https://www.eiximenis.dev/posts/2009-12-10-facebook-connect-si-ests-en-facebook-bienvenido-a-mi-web/</link><pubDate>Thu, 10 Dec 2009 09:52:00 +0000</pubDate><atom:modified>Thu, 10 Dec 2009 09:52:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2009-12-10-facebook-connect-si-ests-en-facebook-bienvenido-a-mi-web/</guid><description>&lt;p>Antón Molleda comentaba en un post de su blog (&lt;a href="https://www.eiximenis.dev/blogs/amolleda/archive/2009/12/07/wlmt-socializ-225-ndonos.aspx">[WLMT] Socializándonos&lt;/a>), las ventajas que ofrece integrar nuestras aplicaciones an alguna de las redes sociales existentes. Él comentará sus experiencias con el Windows Live Messenger Toolkit en &lt;a href="https://www.eiximenis.dev/blogs/amolleda">su blog&lt;/a>, así que yo voy a comentaros cuatro cosillas sobre &lt;a href="http://developers.facebook.com/connect.php">Facebook Connect&lt;/a>, el mecanismo de integración que nos ofrece Facebook.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Evita las dependencias con tu contendor de IoC</title><link>https://www.eiximenis.dev/posts/2009-12-01-evita-las-dependencias-con-tu-contendor-de-ioc/</link><pubDate>Tue, 01 Dec 2009 16:16:21 +0000</pubDate><atom:modified>Tue, 01 Dec 2009 16:16:21 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2009-12-01-evita-las-dependencias-con-tu-contendor-de-ioc/</guid><description>&lt;p>Usar un contenedor de IoC es una práctica más que recomendable, pero al hacerlo es muy fácil caer en el anti-patrón de &lt;em>dependencia con el contenedor&lt;/em>. Ese patrón se manifesta de varias formas sútiles, y aunque hay algunos casos en que pueda ser aceptable, en la gran mayoría indica una mala práctica que debemos revisar.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>[ALM 09] Material de las sesiones: Surface y TDD</title><link>https://www.eiximenis.dev/posts/2009-11-26-alm-09-material-de-las-sesiones-surface-y-tdd/</link><pubDate>Thu, 26 Nov 2009 14:56:06 +0000</pubDate><atom:modified>Thu, 26 Nov 2009 14:56:06 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2009-11-26-alm-09-material-de-las-sesiones-surface-y-tdd/</guid><description>&lt;p>Hola a todos! Finalmente tuve el placer de dar no una, sino dos sesiones en las &lt;a href="http://www.microsoft.com/spain/visualstudio/ALM09/">ALM Sessions 09&lt;/a>. No era la idea inicial, pero mi compañero Juan Carlos finalmente no pudo dar la de Surface, así que la di yo (y es que por suerte o por desgracia me encanta hablar).&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>TxF – NTFS Transaccional</title><link>https://www.eiximenis.dev/posts/2009-11-25-txf-ntfs-transaccional/</link><pubDate>Wed, 25 Nov 2009 17:14:25 +0000</pubDate><atom:modified>Wed, 25 Nov 2009 17:14:25 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2009-11-25-txf-ntfs-transaccional/</guid><description>&lt;p>Una capacidad de la que no se habla mucho es de TxF, que apareció junto con Vista: es la capacidad de tener transacciones sobre ficheros NTFS. Esas transacciones pueden afectar a uno &lt;em>o a varios&lt;/em> ficheros… y no solo eso: gracias al poder de DTS podemos coordinar una transaccion TxF con otros tipos de transacciones como SQL Server o MSMQ!&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ALM Sessions’09 – Test Driven Development</title><link>https://www.eiximenis.dev/posts/2009-11-17-alm-sessions09-test-driven-development/</link><pubDate>Tue, 17 Nov 2009 18:00:19 +0000</pubDate><atom:modified>Tue, 17 Nov 2009 18:00:19 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2009-11-17-alm-sessions09-test-driven-development/</guid><description>&lt;p>Hola a todos!! Este año tengo el placer de realizar una presentación en las &lt;a href="http://www.microsoft.com/spain/visualstudio/alm09/">ALM Sessions’09&lt;/a>.&lt;/p>
&lt;p>En concreto hablaré sobre Test Driven Development: que és, como su uso junto con otras buenas prácticas de desarrollo puede ayudarnos a ganar en calidad y como podemos implantarlo en un equipo de desarrollo.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Lifetime Managers en Unity o ¿como sé que eso que me das es un singleton?</title><link>https://www.eiximenis.dev/posts/2009-10-26-lifetime-managers-en-unity-o-como-s-que-eso-que-me-das-es-un-singleton/</link><pubDate>Mon, 26 Oct 2009 17:31:51 +0000</pubDate><atom:modified>Mon, 26 Oct 2009 17:31:51 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2009-10-26-lifetime-managers-en-unity-o-como-s-que-eso-que-me-das-es-un-singleton/</guid><description>&lt;p>Los que leais habitualmente mi blog (¡muchas gracias!) habreis visto que tengo &lt;a href="http://geeks.ms/blogs/etomas/archive/tags/unity/default.aspx">varias entradas sobre unity&lt;/a> el contenedor IoC de la gente de patterns &amp;amp; practices. En ellas he ido comentando varios aspectos más o menos avanzados del contenedor y de los patrones IoC associados.&lt;/p>
&lt;p>En este post quiero hablaros un poco de los “lifetime managers”, objetos que le indican a Unity si cuando debe resolver un objeto debe crear uno nuevo o bien devolver uno existente.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>IList&lt;T>.Count vs IEnumerable&lt;T>.Count() (LINQ)</title><link>https://www.eiximenis.dev/posts/2009-10-22-ilistt-count-vs-ienumerablet-count-linq/</link><pubDate>Thu, 22 Oct 2009 17:22:52 +0000</pubDate><atom:modified>Thu, 22 Oct 2009 17:22:52 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2009-10-22-ilistt-count-vs-ienumerablet-count-linq/</guid><description>&lt;p>Te has preguntado alguna vez la diferencia de rendimiento que pueda haber entre el método extensor Count() proporcionado por LINQ y la propiedad Count de la interfaz IList&lt;T>.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Code Contracts, Pruebas Unitarias y SandCastle (y los materiales del CodeCamp)</title><link>https://www.eiximenis.dev/posts/2009-10-22-code-contracts-pruebas-unitarias-y-sandcastle-y-los-materiales-del-codecamp/</link><pubDate>Thu, 22 Oct 2009 09:44:00 +0000</pubDate><atom:modified>Thu, 22 Oct 2009 09:44:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2009-10-22-code-contracts-pruebas-unitarias-y-sandcastle-y-los-materiales-del-codecamp/</guid><description>&lt;p>Buenas! Como prometí en el &lt;a href="https://www.eiximenis.dev/blogs/etomas/archive/2009/10/20/de-resaca-del-codecamp.aspx">post anterior sobre el CodeCamp&lt;/a>, en mi charla sobre Code Contracts, quedaron por ver algunos temillas que aprovecho para comentar ahora.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>De resaca… del codecamp!</title><link>https://www.eiximenis.dev/posts/2009-10-20-de-resaca-del-codecamp/</link><pubDate>Tue, 20 Oct 2009 10:25:52 +0000</pubDate><atom:modified>Tue, 20 Oct 2009 10:25:52 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2009-10-20-de-resaca-del-codecamp/</guid><description>&lt;p>Pues sí… han pasado ya dos días, pero yo todavía estoy resacoso del &lt;a href="http://www.codecamp.es">Code Camp 2009 de Tarragona&lt;/a>.&lt;/p>
&lt;p>Fue una experiencia brutal, tanto en lo organizativo, como en lo técnico pero sobretodo en lo humano… compartir este fin de semana con gente apasionada de la tecnología .NET, sea en entornos MS o en Mono, es simplemente increíble.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>¿MVP e IoC trabajando juntos? ¡Pues claro!</title><link>https://www.eiximenis.dev/posts/2009-10-13-mvp-e-ioc-trabajando-juntos-pues-claro/</link><pubDate>Tue, 13 Oct 2009 12:09:01 +0000</pubDate><atom:modified>Tue, 13 Oct 2009 12:09:01 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2009-10-13-mvp-e-ioc-trabajando-juntos-pues-claro/</guid><description>&lt;p>Un comentario de Galcet en mi post “&lt;a href="http://geeks.ms/blogs/etomas/archive/2009/09/17/como-independizar-tu-capa-de-l-243-gica-de-tu-capa-de-presentaci-243-n.aspx">Como independizar tu capa lógica de tu capa de presentación&lt;/a>” decía que el entendía por separado los conceptos de IoC y los de MVC pero que no veía como podían trabajar juntos… El motivo de este post es para comentar precisamente esto: no sólo cómo MVC e IoC pueden trabajar juntos sinó las ventajas que la combinación de ambos patrones nos aporta.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>IoC o el poder de ceder el control (ii): Dependency Injection</title><link>https://www.eiximenis.dev/posts/2009-10-08-ioc-o-el-poder-de-ceder-el-control-ii-dependency-injection/</link><pubDate>Thu, 08 Oct 2009 12:11:04 +0000</pubDate><atom:modified>Thu, 08 Oct 2009 12:11:04 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2009-10-08-ioc-o-el-poder-de-ceder-el-control-ii-dependency-injection/</guid><description>&lt;p>Hace ya algún tiempecillo publiqué por aquí un post sobre &lt;a href="http://es.wikipedia.org/wiki/Inversi%C3%B3n_de_Control">IoC&lt;/a>, titulado &lt;a href="http://geeks.ms/blogs/etomas/archive/2008/10/28/ioc-o-el-poder-de-ceder-el-control.aspx">IoC o el poder de ceder el control&lt;/a>. En el post mencionaba dos de los patrones clásicos asociados con IoC, el &lt;em>service locator&lt;/em> y la inyección de dependencias (&lt;em>dependency injection&lt;/em>), pero luego sólo me centraba en Service Locator. Un par de comentarios en dicho post decían si era posible algo similar pero explicando la inyección de dependencias, así que a ello vamos 😉&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ASP.NET MVC Custom Action Filters y IoC</title><link>https://www.eiximenis.dev/posts/2009-10-02-asp-net-mvc-custom-action-filters-y-ioc/</link><pubDate>Fri, 02 Oct 2009 14:48:12 +0000</pubDate><atom:modified>Fri, 02 Oct 2009 14:48:12 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2009-10-02-asp-net-mvc-custom-action-filters-y-ioc/</guid><description>&lt;p>Que es una buena práctica usar un contenedor IoC hoy en día es algo que está más que aceptado… la gente que montó ASP.NET MVC lo tiene muy claro y por eso ha creado un framework, que aunque no usa ningún contenedor IoC por defecto, se puede &lt;em>extender&lt;/em> para usar uno… P.ej. si quieres que tus controladores sean creados a través de un contenedor IoC (y &lt;em>deberías querrerlo&lt;/em>) solo debes crearte una factoría de controladores e indicar a ASP.NET MVC que use esta factoría en lugar de la que viene por defecto.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Explorando ASP.NET MVC 2.0… Templated UI</title><link>https://www.eiximenis.dev/posts/2009-09-25-explorando-asp-net-mvc-2-0-templated-ui/</link><pubDate>Fri, 25 Sep 2009 09:59:09 +0000</pubDate><atom:modified>Fri, 25 Sep 2009 09:59:09 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2009-09-25-explorando-asp-net-mvc-2-0-templated-ui/</guid><description>&lt;p>Hola a todos!! Este post continua la &lt;em>mini-serie&lt;/em> de posts que &lt;a href="http://geeks.ms/blogs/etomas/archive/2009/09/22/explorando-asp-net-mvc-2-0-225-reas.aspx">empecé con el que trataba sobre las áreas&lt;/a>.&lt;/p>
&lt;p>En este caso he estado jugando un poco con lo que llaman &lt;em>UI helper templating support&lt;/em> y que me parece bastante interesante…&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Unity, Proxies, AOP y un poco de todo eso…</title><link>https://www.eiximenis.dev/posts/2009-09-24-unity-proxies-aop-y-un-poco-de-todo-eso/</link><pubDate>Thu, 24 Sep 2009 11:34:00 +0000</pubDate><atom:modified>Thu, 24 Sep 2009 11:34:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2009-09-24-unity-proxies-aop-y-un-poco-de-todo-eso/</guid><description>&lt;p>En mi opinión, usar un contenedor de IoC hoy en día, no es una opción sinó una &lt;em>obligación&lt;/em>. Las ventajas que nos ofrecen son incotestables. Los patrones &lt;a href="http://msdn.microsoft.com/en-us/library/cc707905.aspx">Service Locator&lt;/a> y &lt;a href="http://msdn.microsoft.com/en-us/library/dd458879.aspx">Dependency Injection&lt;/a> nos permiten &lt;em>desacoplar&lt;/em> nuestro código, y son la base para poder trabajar de forma modular y poder generar unos tests unitarios de forma más sencilla. Pero hoy no quiero hablaros de ninguno de estos patrones, sinó de otra de las capacidades de los contenedores de IoC: la generación de proxies.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Explorando ASP.NET MVC 2.0… áreas</title><link>https://www.eiximenis.dev/posts/2009-09-22-explorando-asp-net-mvc-2-0-reas/</link><pubDate>Tue, 22 Sep 2009 18:49:00 +0000</pubDate><atom:modified>Tue, 22 Sep 2009 18:49:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2009-09-22-explorando-asp-net-mvc-2-0-reas/</guid><description>&lt;p>No hace mucho Jorge Dieguez comentaba &lt;a href="https://www.eiximenis.dev/blogs/jdieguez/archive/2009/07/31/asp-net-mvc-2-preview-1.aspx">la salida de ASP.NET MVC 2.0 Preview 1&lt;/a>. He estado investigando un poco las novedades del framework, y hoy quiero hablaros de lo que se conoce como áreas.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Como independizar tu capa de lógica de tu capa de presentación…</title><link>https://www.eiximenis.dev/posts/2009-09-17-como-independizar-tu-capa-de-lgica-de-tu-capa-de-presentacin/</link><pubDate>Thu, 17 Sep 2009 18:36:00 +0000</pubDate><atom:modified>Thu, 17 Sep 2009 18:36:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2009-09-17-como-independizar-tu-capa-de-lgica-de-tu-capa-de-presentacin/</guid><description>&lt;p>A raiz del &lt;a href="https://www.eiximenis.dev/blogs/oalvarez/archive/2009/09/09/controles-wpf-en-winforms.aspx">siguiente post&lt;/a> del excelente &lt;a href="https://www.eiximenis.dev/blogs/oalvarez/default.aspx">blog de Oskar&lt;/a>, &lt;a href="http://yodesarrollador.com/">Julio Trujillo&lt;/a> comentó en un comentario (copio literalmente) “&lt;em>Sería interesante una explicación de como convertir Forms a WPF o al menos como poder diseñar una capa que permita conectar la capa de negocio a una de WPF o Forms indistintamente&lt;/em>”. A este comentario respondí yo con unas cuantas ideas, pero luego Julio pidió a ver si podiamos exponer las “buenas prácticas” e incluso un ejemplo&amp;hellip; Julio, no respondí a tu comentario, simplemente porque el tema es demasiado para un simple comentario, y se merece al menos un post&amp;hellip; y estaba sacando tiempo 😉&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>La odisea de conectar mi portátil a mi televisor…</title><link>https://www.eiximenis.dev/posts/2009-09-09-la-odisea-de-conectar-mi-porttil-a-mi-televisor/</link><pubDate>Wed, 09 Sep 2009 09:17:01 +0000</pubDate><atom:modified>Wed, 09 Sep 2009 09:17:01 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2009-09-09-la-odisea-de-conectar-mi-porttil-a-mi-televisor/</guid><description>&lt;p>Esta es una historia de como el desconocimiento de unos (el mío) y de otros (los de la tienda) convierte en una odisea algo que debería ser mucho más sencillo… y que sin embargo tampoco es lo simple que debiera.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>STM.NET: Software Transactional Memory (ii)</title><link>https://www.eiximenis.dev/posts/2009-09-07-stm-net-software-transactional-memory-ii/</link><pubDate>Mon, 07 Sep 2009 11:26:00 +0000</pubDate><atom:modified>Mon, 07 Sep 2009 11:26:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2009-09-07-stm-net-software-transactional-memory-ii/</guid><description>&lt;p>Hola a todos! En el &lt;a href="https://www.eiximenis.dev/blogs/etomas/archive/2009/09/02/stm-net-software-transactional-memory.aspx">post anterior&lt;/a> os comenté algunas cosillas sobre STM.NET, un “experimento” de los DevLabs de Microsoft para introducir conceptos transaccionales dentro de .NET. En este segundo post quiero extenderme un poco más con algunos ejemplos un pelín más elaborados.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>STM.NET: Software Transactional Memory</title><link>https://www.eiximenis.dev/posts/2009-09-02-stm-net-software-transactional-memory/</link><pubDate>Wed, 02 Sep 2009 14:50:00 +0000</pubDate><atom:modified>Wed, 02 Sep 2009 14:50:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2009-09-02-stm-net-software-transactional-memory/</guid><description>&lt;p>Uno de los retos más importantes a los que se enfrenta en breve el desarrollo de aplicaciones tiene que ver con la programación paralela. Ahora que se empieza a vislumbrar el acercamiento del fin de la &lt;a href="http://es.wikipedia.org/wiki/Ley_de_Moore">Ley de Moore&lt;/a>, si queremos seguir el espectacular aumento de potencia debemos irnos a entornos multi-procesador o multi-core. Hace unos años eran coto reservado a entornos de investigación, y ahora ya están encima de nuestra mesa&amp;hellip;&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>C#, Visual Basic 6 y el HWND de la ventana principal…</title><link>https://www.eiximenis.dev/posts/2009-08-27-c-visual-basic-6-y-el-hwnd-de-la-ventana-principal/</link><pubDate>Thu, 27 Aug 2009 13:25:00 +0000</pubDate><atom:modified>Thu, 27 Aug 2009 13:25:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2009-08-27-c-visual-basic-6-y-el-hwnd-de-la-ventana-principal/</guid><description>&lt;p>Hola! ¿Como ha ido el verano? A todos los que hayais disfrutado de unas buenas vacaciones, espero que os hayan sido provechosas&amp;hellip;&lt;/p>
&lt;p>Pero como dicen, todo lo bueno se acaba, y toca volver al tajo. En el proyecto en el que estoy, nos hemos visto en la necesidad de comunicarnos con la ventana principal de &lt;em>otro&lt;/em> proceso, realizado en Visual Basic 6.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>El operador ++ postfijo y el sentido común…</title><link>https://www.eiximenis.dev/posts/2009-07-02-el-operador-postfijo-y-el-sentido-comn/</link><pubDate>Thu, 02 Jul 2009 18:08:00 +0000</pubDate><atom:modified>Thu, 02 Jul 2009 18:08:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2009-07-02-el-operador-postfijo-y-el-sentido-comn/</guid><description>&lt;p>Post cortito… 😉&lt;/p>
&lt;p>El otro día estaba revisando código y vi algo parecido a lo siguiente (C#):&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-cs" data-lang="cs">&lt;span class="kt">int&lt;/span> &lt;span class="n">x&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="m">1&lt;/span>&lt;span class="p">;&lt;/span>
&lt;span class="n">iny&lt;/span> &lt;span class="n">y&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">x&lt;/span>&lt;span class="p">++;&lt;/span>
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>jQueryUI widgets… no son webcontrols pero vamos…</title><link>https://www.eiximenis.dev/posts/2009-07-02-jqueryui-widgets-no-son-webcontrols-pero-vamos/</link><pubDate>Thu, 02 Jul 2009 15:49:00 +0000</pubDate><atom:modified>Thu, 02 Jul 2009 15:49:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2009-07-02-jqueryui-widgets-no-son-webcontrols-pero-vamos/</guid><description>&lt;p>¡¡Hola a todos!! ¿Como vamos?&lt;/p>
&lt;p>Una de los argumentos que más usan aquellos a quienes no les gusta ASP.NET MVC és “que hemos vuelto a los 90”, refiriendose, entre otras cosas, a que en ASP.NET MVC no existe el concepto de “controles” y que continuamente estamos “mezclando” código de cliente y de servidor, lo que lleva a una &lt;a href="http://en.wikipedia.org/wiki/Tag_soup">tag-soup&lt;/a> que &lt;em>recuerda&lt;/em> peligrosamente a la ASP clásica&amp;hellip;&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ASP.NET MVC y Ajax: fácil no, facilísimo (ii)</title><link>https://www.eiximenis.dev/posts/2009-06-30-asp-net-mvc-y-ajax-fcil-no-facilsimo-ii/</link><pubDate>Tue, 30 Jun 2009 15:50:00 +0000</pubDate><atom:modified>Tue, 30 Jun 2009 15:50:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2009-06-30-asp-net-mvc-y-ajax-fcil-no-facilsimo-ii/</guid><description>&lt;p>Hola a todos! En este post (continuación del post anterior &lt;a href="https://www.eiximenis.dev/blogs/etomas/archive/2009/06/26/asp-net-mvc-y-ajax-f-225-cil-no-facil-237-simo.aspx">ASP.NET MVC y Ajax&lt;/a>) voy a comentaros algunas cosillas más sobre ASP.NET MVC y ajax utilizando jQuery. En este caso vamos a ver como implementar un clásico de Ajax: las combos encadenadas.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ASP.NET MVC y Ajax: fácil no… facilísimo :)</title><link>https://www.eiximenis.dev/posts/2009-06-26-asp-net-mvc-y-ajax-fcil-no-facilsimo/</link><pubDate>Fri, 26 Jun 2009 22:09:00 +0000</pubDate><atom:modified>Fri, 26 Jun 2009 22:09:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2009-06-26-asp-net-mvc-y-ajax-fcil-no-facilsimo/</guid><description>&lt;p>Hola a todos amigos! 😉&lt;/p>
&lt;p>El comentario de Gabriel en este post de mi blog (&lt;a href="https://www.eiximenis.dev/blogs/etomas/archive/2009/04/02/asp-net-mvc-controles-chart-y-ajax.aspx" title="http://geeks.ms/blogs/etomas/archive/2009/04/02/asp-net-mvc-controles-chart-y-ajax.aspx">http://geeks.ms/blogs/etomas/archive/2009/04/02/asp-net-mvc-controles-chart-y-ajax.aspx&lt;/a>) me ha motivado a escribir la siguiente entrada.&lt;/p>
&lt;p>Él preguntaba sobre si los controles Ajax de ASP.NET, como p.ej. UpdatePanel se podían usar bajo el framework MVC. No conozco mucho los controles de la Ajax Library porque personalmente no me interesan demasiado, aunque apuesto que la mayoría usan viewstate así que me imagino que no deben poder usarse bajo MVC&amp;hellip;&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Combo para seleccionar colores (Winforms + C#)</title><link>https://www.eiximenis.dev/posts/2009-06-18-combo-para-seleccionar-colores-winforms-c/</link><pubDate>Thu, 18 Jun 2009 18:24:00 +0000</pubDate><atom:modified>Thu, 18 Jun 2009 18:24:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2009-06-18-combo-para-seleccionar-colores-winforms-c/</guid><description>&lt;p>Hola&amp;hellip; qué tal?&lt;/p>
&lt;p>Imagina que en algún proyecto que estés haciendo, quieres ofrecer una combo para seleccionar colores. De acuerdo, ya se que hay otros métodos para hacer que el usuario seleccione un color, como usar el &lt;a href="http://msdn.microsoft.com/es-es/library/system.windows.forms.colordialog.aspx">ColorDialog&lt;/a>, pero a lo mejor te interesa que el usuario sólo pueda escoger colores de una lista predeterminada&amp;hellip;&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>C# y sobrecarga de métodos genéricos… un detallito</title><link>https://www.eiximenis.dev/posts/2009-06-12-c-y-sobrecarga-de-mtodos-genricos-un-detallito/</link><pubDate>Fri, 12 Jun 2009 09:14:40 +0000</pubDate><atom:modified>Fri, 12 Jun 2009 09:14:40 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2009-06-12-c-y-sobrecarga-de-mtodos-genricos-un-detallito/</guid><description>&lt;p>A veces hay aspectos de C# que no pensamos hasta que nos encontramos con ellos… A mi me pasó con un código parecido a este:&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>[Code Contracts] ccrewrite – “Unresolved assembly reference not allowed”</title><link>https://www.eiximenis.dev/posts/2009-06-11-code-contracts-ccrewrite-unresolved-assembly-reference-not-allowed/</link><pubDate>Thu, 11 Jun 2009 17:22:43 +0000</pubDate><atom:modified>Thu, 11 Jun 2009 17:22:43 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2009-06-11-code-contracts-ccrewrite-unresolved-assembly-reference-not-allowed/</guid><description>Imaginaos que teneis una solución con varios proyectos, y que estos compilan en un directorio concreto, llamésmole Q\:bin.
En otra solución teneis varios proyectos más, con referencias a los assemblies que estan en Q:bin (no son referencias de proyecto porque estan en distintas soluciones).
Y ya puestos, imaginad también que estáis usando Code Contracts. Y cuando compilais los proyectos de la segunda solución visual studio se descuelga con un bonito error:</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Más sobre Code Contracts…</title><link>https://www.eiximenis.dev/posts/2009-06-09-ms-sobre-code-contracts/</link><pubDate>Tue, 09 Jun 2009 14:06:00 +0000</pubDate><atom:modified>Tue, 09 Jun 2009 14:06:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2009-06-09-ms-sobre-code-contracts/</guid><description>&lt;p>Hola a todos&amp;hellip; después de que Jorge (en &lt;a href="https://www.eiximenis.dev/blogs/jorge/archive/2009/04/26/precondiciones-y-microsoft-code-contracts.aspx" title="http://geeks.ms/blogs/jorge/archive/2009/04/26/precondiciones-y-microsoft-code-contracts.aspx">http://geeks.ms/blogs/jorge/archive/2009/04/26/precondiciones-y-microsoft-code-contracts.aspx&lt;/a>) yo mismo (en &lt;a href="https://www.eiximenis.dev/blogs/etomas/archive/2009/05/04/pexcando-errores-en-nuestro-c-243-digo.aspx">http://geeks.ms/blogs/etomas/archive/2009/05/04/pexcando-errores-en-nuestro-c-243-digo.aspx&lt;/a>) comentasemos algo de Code Contracts, voy a comentar algunas cosillas más que me he encontrado con Code Contracts usándolos en un proyecto real.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>XmlSerializer, colecciones y auto-propiedades…</title><link>https://www.eiximenis.dev/posts/2009-06-03-xmlserializer-colecciones-y-auto-propiedades/</link><pubDate>Wed, 03 Jun 2009 09:06:30 +0000</pubDate><atom:modified>Wed, 03 Jun 2009 09:06:30 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2009-06-03-xmlserializer-colecciones-y-auto-propiedades/</guid><description>&lt;p>Que XmlSerializer es una clase &lt;em>curiosa&lt;/em> es evidente, hay multitud de maneras de controlar la serialización de un objeto y varios trucos más o menos &lt;em>ocultos&lt;/em> (os recomiendo el [blog de jmservera][https://iremote.blogspot.com] que tiene algunos posts interesantes)…&lt;/p>
&lt;p>… Lo que quiero comentaros ahora es un caso que me encontré el otro día (valeeee… ayer), en concreto con las auto-propiedades que se incorporaron en C# 3.0.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Objetos anónimos como diccionarios</title><link>https://www.eiximenis.dev/posts/2009-05-26-objetos-annimos-como-diccionarios/</link><pubDate>Tue, 26 May 2009 17:27:48 +0000</pubDate><atom:modified>Tue, 26 May 2009 17:27:48 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2009-05-26-objetos-annimos-como-diccionarios/</guid><description>¡Hola!
Cada vez más existen frameworks y librerías que permiten usar objetos anónimos como si de diccionarios se tratase. Esto es muy cómodo porque permite realizar llamadas tal y como:
Foo(new { x = 10, y = 20, Data = "Data" }); [][1]
Por ejemplo, en ASP.NET MVC no se paran de hacer llamadas parecidas a esta…
Internamente el método Foo utilizará reflection para iterar sobre las propiedades del objeto anónimo que recibe y obtener los datos.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ASP.NET MVC y Custom Http Handlers</title><link>https://www.eiximenis.dev/posts/2009-05-20-asp-net-mvc-y-custom-http-handlers/</link><pubDate>Wed, 20 May 2009 14:57:01 +0000</pubDate><atom:modified>Wed, 20 May 2009 14:57:01 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2009-05-20-asp-net-mvc-y-custom-http-handlers/</guid><description>&lt;p>Hola! ¿Como va todo?&lt;/p>
&lt;p>Un post rapidito… Imaginad que creais un Custom Handler para procesar determinadas peticiones en vuestra aplicación ASP.NET MVC:&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Surface en raona…</title><link>https://www.eiximenis.dev/posts/2009-05-14-surface-en-raona/</link><pubDate>Thu, 14 May 2009 18:14:35 +0000</pubDate><atom:modified>Thu, 14 May 2009 18:14:35 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2009-05-14-surface-en-raona/</guid><description>&lt;p>Hola! En &lt;a href="http://www.raona.com">raona&lt;/a> tenemos desde hace algún tiempecillo la &lt;a href="http://www.surface.com">Surface&lt;/a>&amp;hellip; Lo que os quiero mostrar no es nada más que un pequeño vídeo de una aplicación que hemos desarrollado para ella: el Surface Shooter.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Pexcando errores en nuestro código…</title><link>https://www.eiximenis.dev/posts/2009-05-04-pexcando-errores-en-nuestro-cdigo/</link><pubDate>Mon, 04 May 2009 11:03:00 +0000</pubDate><atom:modified>Mon, 04 May 2009 11:03:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2009-05-04-pexcando-errores-en-nuestro-cdigo/</guid><description>&lt;p>Buenas… ¿Conoceis &lt;a href="http://research.microsoft.com/en-us/projects/Pex/">Pex&lt;/a>? Es una herramienta que genera tests unitarios a partir de nuestro código. Su característica principal es que &lt;em>analiza&lt;/em> el código e intenta generar tests unitarios que cubran todas las posibilidades de nuestro código.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Curiosidad (o no) en WinForms y focus…</title><link>https://www.eiximenis.dev/posts/2009-04-21-curiosidad-o-no-en-winforms-y-focus/</link><pubDate>Tue, 21 Apr 2009 15:01:06 +0000</pubDate><atom:modified>Tue, 21 Apr 2009 15:01:06 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2009-04-21-curiosidad-o-no-en-winforms-y-focus/</guid><description>&lt;p>Os cuento una curiosidad de la que me acabo de dar cuenta ahora mismo… Un funcionamiento, como mínimo &lt;em>curioso&lt;/em> en Winforms… siempre entendiendo como curioso que “yo no lo sabía y mi no encaja en mi (poco) sentido común”.&lt;/p>
&lt;p>El titular sensacionalista sería: &lt;strong>Control desactivado recibe el focus&lt;/strong>.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Recaptcha, ASP.NET MVC, SimpleModal y un poco de Ajax…</title><link>https://www.eiximenis.dev/posts/2009-04-21-recaptcha-asp-net-mvc-simplemodal-y-un-poco-de-ajax/</link><pubDate>Tue, 21 Apr 2009 10:11:00 +0000</pubDate><atom:modified>Tue, 21 Apr 2009 10:11:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2009-04-21-recaptcha-asp-net-mvc-simplemodal-y-un-poco-de-ajax/</guid><description>&lt;p>Hola família!&lt;/p>
&lt;p>En los dos últimos posts (&lt;a href="https://www.eiximenis.dev/blogs/etomas/archive/2009/04/14/mostrar-un-formulario-modal-con-asp-net-mvc-y-ajax.aspx">http://geeks.ms/blogs/etomas/archive/2009/04/14/mostrar-un-formulario-modal-con-asp-net-mvc-y-ajax.aspx&lt;/a> y &lt;a href="https://www.eiximenis.dev/blogs/etomas/archive/2009/04/15/mostrar-un-formulario-modal-con-asp-net-mvc-y-ajax-ii.aspx">http://geeks.ms/blogs/etomas/archive/2009/04/15/mostrar-un-formulario-modal-con-asp-net-mvc-y-ajax-ii.aspx&lt;/a>) comenté como he usado SimpleModal, junto con ASP.NET MVC para mostrar un formulario modal y comunicarlo via AJAX con nuestro controlador.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Mostrar un formulario modal con ASP.NET MVC y Ajax (ii)</title><link>https://www.eiximenis.dev/posts/2009-04-15-mostrar-un-formulario-modal-con-asp-net-mvc-y-ajax-ii/</link><pubDate>Wed, 15 Apr 2009 09:52:00 +0000</pubDate><atom:modified>Wed, 15 Apr 2009 09:52:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2009-04-15-mostrar-un-formulario-modal-con-asp-net-mvc-y-ajax-ii/</guid><description>&lt;p>En el post anterior (&lt;a href="https://www.eiximenis.dev/blogs/etomas/archive/2009/04/14/mostrar-un-formulario-modal-con-asp-net-mvc-y-ajax.aspx">Mostrar un formulario modal con ASP.NET MVC y Ajax&lt;/a>) comenté como había usado &lt;a href="http://www.ericmmartin.com/projects/simplemodal/">SimpleModal&lt;/a> en una aplicación ASP.NET MVC para mostrar un formulario modal al usuario.&lt;/p>
&lt;p>En este post voy a comentar como podemos comunicar nuestro formulario modal con nuestros controladores, para así poder validar (parcialmente o totalmente) el formulario desde servidor, sin necesidad de hacer un &lt;em>submit&lt;/em>, usando Ajax.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Mostrar un formulario modal con ASP.NET MVC y Ajax</title><link>https://www.eiximenis.dev/posts/2009-04-14-mostrar-un-formulario-modal-con-asp-net-mvc-y-ajax/</link><pubDate>Tue, 14 Apr 2009 14:11:28 +0000</pubDate><atom:modified>Tue, 14 Apr 2009 14:11:28 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2009-04-14-mostrar-un-formulario-modal-con-asp-net-mvc-y-ajax/</guid><description>&lt;p>¿Os gusta ASP.NET MVC? A mi personalmente me encanta… aunque está un poco &lt;em>verde&lt;/em>, en el sentido que comparándolo con webforms hay varias cosas que &lt;em>debes hacerte tu mismo&lt;/em>, el modelo de programación es simple y elegante… Gran parte del mérito lo tiene (además del uso del &lt;a href="http://msdn.microsoft.com/en-us/library/ms978748.aspx">patrón MVC&lt;/a> evidentemente), &lt;a href="http://jquery.com/">jQuery&lt;/a> genial librería de Javascript donde las haya.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>ASP.NET MVC, Controles Chart y Ajax…</title><link>https://www.eiximenis.dev/posts/2009-04-02-asp-net-mvc-controles-chart-y-ajax/</link><pubDate>Thu, 02 Apr 2009 14:34:00 +0000</pubDate><atom:modified>Thu, 02 Apr 2009 14:34:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2009-04-02-asp-net-mvc-controles-chart-y-ajax/</guid><description>&lt;p>Supongo que la gran mayoría de vosotros, conoceréis los controles de gráficos de ASP.NET. José M. Aguilar hizo un excelente post sobre ellos &lt;a href="https://www.eiximenis.dev/blogs/jmaguilar/archive/2008/12/14/microsoft-chart-control-para-asp-net-3-5-sp1.aspx">aquí (http://geeks.ms/blogs/jmaguilar/archive/2008/12/14/microsoft-chart-control-para-asp-net-3-5-sp1.aspx)&lt;/a>.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Interfaces “Dockables” con AvalonDock</title><link>https://www.eiximenis.dev/posts/2009-03-13-interfaces-dockables-con-avalondock/</link><pubDate>Fri, 13 Mar 2009 13:39:00 +0000</pubDate><atom:modified>Fri, 13 Mar 2009 13:39:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2009-03-13-interfaces-dockables-con-avalondock/</guid><description>&lt;p>Hace algún tiempo &lt;a href="https://www.eiximenis.dev/blogs/etomas/archive/2009/01/20/prism-y-avalondock.aspx">escribí como integrar AvalonDock con PRISM&lt;/a>. En el post daba por asumidos algunos conceptos de AvalonDock, pero algunos comentarios recibidos me han pedido si puedo profundizar un poco, así que voy a ello. Vamos a ver como crear paso a paso una aplicación AvalonDock y luego, en otro post ya veremos como podemos PRISMearla&amp;hellip; 🙂&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>La sencillez de una interfaz compleja</title><link>https://www.eiximenis.dev/posts/2009-03-12-la-sencillez-de-una-interfaz-compleja/</link><pubDate>Thu, 12 Mar 2009 11:11:00 +0000</pubDate><atom:modified>Thu, 12 Mar 2009 11:11:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2009-03-12-la-sencillez-de-una-interfaz-compleja/</guid><description>&lt;p>Hace algún tiempecillo escribí un artículo para el e-zine de &lt;a href="http://www.raona.com/">raona&lt;/a>, que enviamos a distintos clientes. En el artículo esbozaba los patrones básicos para diseñar interfaces de usuario compuestas. Posteriormente me surgió la idea de que una ampliación de dicho artículo, donde se mostrasen ejemplos en &lt;a href="http://www.codeplex.com/CompositeWPF">PRISM&lt;/a> y WPF de estos conceptos podría ser interesante. Afortunadamente en &lt;a href="http://www.dotnetmania.com/">DotNetMania&lt;/a> pensaron lo mismo y es por ello que en la revista de este marzo hay un artículo con este mismo título.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>PRISM y Winforms: Mostrar vistas en nuevos formularios</title><link>https://www.eiximenis.dev/posts/2009-03-11-prism-y-winforms-mostrar-vistas-en-nuevos-formularios/</link><pubDate>Wed, 11 Mar 2009 08:58:00 +0000</pubDate><atom:modified>Wed, 11 Mar 2009 08:58:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2009-03-11-prism-y-winforms-mostrar-vistas-en-nuevos-formularios/</guid><description>&lt;p>En un post anterior (&lt;a href="https://www.eiximenis.dev/blogs/etomas/archive/2009/03/06/141026.aspx">PRISM y Winforms&lt;/a>), comentaba como usar &lt;a href="http://www.codeplex.com/CompositeWPF">PRISM&lt;/a> para realizar aplicaciones Winforms.&lt;/p>
&lt;p>Un comentario de Jose en esta entrada, me ha motivado a escribir el siguiente post, para mostrar como podríamos mostrar vistas en regiones que estén incrustadas no en un UserControl (típicamente un Panel) de la ventana principal, sino incrustadas en un nuevo formulario.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Evento ALM: Como Team System cambió mi (ciclo de) vida</title><link>https://www.eiximenis.dev/posts/2009-02-24-evento-alm-como-team-system-cambi-mi-ciclo-de-vida/</link><pubDate>Tue, 24 Feb 2009 15:12:00 +0000</pubDate><atom:modified>Tue, 24 Feb 2009 15:12:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2009-02-24-evento-alm-como-team-system-cambi-mi-ciclo-de-vida/</guid><description>&lt;p>Hola a todos!&lt;/p>
&lt;p>Aprovecho la ocasión para comunicaros un evento que organizamos en &lt;strong>&lt;a href="http://www.raona.com/">raona&lt;/a>&lt;/strong>, en colaboración con Microsoft, sobre ALM en general y Team System en particular.&lt;/p>
&lt;p>Lo hemos llamado “&lt;em>&lt;strong>&lt;a href="http://www.raona.com/Formacio/Seminaris/Seminarios2009/TeamSystem/tabid/368/Default.aspx">Como Team System cambió mi (ciclo de) vida&lt;/a>&lt;/strong>&lt;/em>”. Durante unas 4 horas y pico, &lt;a href="http://www.magda.es">Magda&lt;/a>, Enric y yo mismo (sí, nada es perfecto y yo voy a estar&amp;hellip; pero no sufrais, ya dejaré hablar a los que saben :p) vamos a comentar distintos aspectos de Team System. Empezaremos con una introducción y luego iremos viendo aspectos concretos (personalización, distintos clientes de foundation server, team build,&amp;hellip;).&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>[DllImport] y clases genéricas</title><link>https://www.eiximenis.dev/posts/2009-02-23-dllimport-y-clases-genricas/</link><pubDate>Mon, 23 Feb 2009 09:52:00 +0000</pubDate><atom:modified>Mon, 23 Feb 2009 09:52:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2009-02-23-dllimport-y-clases-genricas/</guid><description>Un post rápido para decir sólo dos cosas:
DllImport y clases genéricas no se llevan bien. Meter un DllImport en una clase genérica (o derivada de alguna genérica) lanza un TypeLoadException. Más importante que la anterior: No nos habríamos topado con el error de haber seguido las recomendaciones de uso de DllImport. Y ni siquiera podemos alegar desconocimiento de ellas, ya que si hubiesemos usado el análisis estático de código se nos habría avisado.</description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>XmlSerializer y propiedades ocultadas</title><link>https://www.eiximenis.dev/posts/2009-02-20-xmlserializer-y-propiedades-ocultadas/</link><pubDate>Fri, 20 Feb 2009 09:28:00 +0000</pubDate><atom:modified>Fri, 20 Feb 2009 09:28:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2009-02-20-xmlserializer-y-propiedades-ocultadas/</guid><description>&lt;p>Hola! Ayer un compañero de trabajo me comentó un problema con el que se encontró trabajando con propiedades ocultadas y el serializador xml.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>CommandPattern extendiendo Unity</title><link>https://www.eiximenis.dev/posts/2009-02-13-commandpattern-extendiendo-unity/</link><pubDate>Fri, 13 Feb 2009 13:59:00 +0000</pubDate><atom:modified>Fri, 13 Feb 2009 13:59:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2009-02-13-commandpattern-extendiendo-unity/</guid><description>&lt;p>Hola a todos! Hoy voy a hablar del poder que nos da el mecanismo de extensiones de Unity. Doy por supuesto que todos conoceis lo que es un contenedor IoC en general y Unity en particular. Si no, echad un vistazo a los posts &amp;ldquo;&lt;a href="https://geeks.ms/etomas/archive/2008/10/28/ioc-o-el-poder-de-ceder-el-control.aspx">IoC o el poder de ceder el control&lt;/a>&amp;rdquo; (para una explicación general de IoC) y &amp;ldquo;&lt;a href="https://geeks.ms/jdieguez/archive/2009/01/25/microsoft-unity-inyecci-243-n-de-dependencias-net.aspx">Microsoft Unity: Inyección de dependencias .NET&lt;/a>&amp;rdquo; (para una explicación general sobre Unity en concreto).&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Strings en .NET y el BOM</title><link>https://www.eiximenis.dev/posts/2009-02-04-strings-en-net-y-el-bom/</link><pubDate>Wed, 04 Feb 2009 20:12:00 +0000</pubDate><atom:modified>Wed, 04 Feb 2009 20:12:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2009-02-04-strings-en-net-y-el-bom/</guid><description>&lt;p>¿Conoceis el BOM? Los que no, teneis suerte&amp;hellip; los que sí, seguro que lo habeis sufrido&amp;hellip; 🙂 Para los que no, contaros que el BOM, o Byte Order Mask que es lo que significan sus siglas, no es nada más que una marca (de entre 2 y 3 bytes) al principio de un archivo Unicode que indica el formato de los datos&amp;hellip; si están en little endian o big endian p.ej.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Unity? Sí gracias, pero no me abraces demasiado…</title><link>https://www.eiximenis.dev/posts/2009-02-02-unity-s-gracias-pero-no-me-abraces-demasiado/</link><pubDate>Mon, 02 Feb 2009 13:07:00 +0000</pubDate><atom:modified>Mon, 02 Feb 2009 13:07:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2009-02-02-unity-s-gracias-pero-no-me-abraces-demasiado/</guid><description>&lt;p>No hace mucho, [Jorge Dieguez] escribió &lt;a href="https://geeks.ms/jdieguez/archive/2009/01/25/microsoft-unity-inyecci-243-n-de-dependencias-net.aspx">un interesante post sobre Unity&lt;/a> y el patrón de &lt;a href="https://en.wikipedia.org/wiki/Dependency_injection">Dependency Injection&lt;/a>. Resumiendo mucho este patrón permite eliminar las dependencias de nuestro código, trasladandolas todas a un sólo elemento, que se conoce generalmente como “contenedor de DI”. Este contenedor es el responsable de devolvernos todas las referencias a clases que nostros precisemos.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>PRISM y Winforms</title><link>https://www.eiximenis.dev/posts/2009-01-23-prism-y-winforms/</link><pubDate>Fri, 23 Jan 2009 14:14:00 +0000</pubDate><atom:modified>Fri, 23 Jan 2009 14:14:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2009-01-23-prism-y-winforms/</guid><description>&lt;p>Los que sigais mi blog ya habreis visto que últimamente comento algunas cosillas sobre &lt;a href="http://www.codeplex.com/CompositeWPF">PRISM&lt;/a>, la librería para crear aplicaciones compuestas en WPF.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Gestionando las dependencias entre módulos cargados on-demand en PRISM</title><link>https://www.eiximenis.dev/posts/2009-01-22-gestionando-las-dependencias-entre-mdulos-cargados-on-demand-en-prism/</link><pubDate>Thu, 22 Jan 2009 14:33:00 +0000</pubDate><atom:modified>Thu, 22 Jan 2009 14:33:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2009-01-22-gestionando-las-dependencias-entre-mdulos-cargados-on-demand-en-prism/</guid><description>&lt;p>Una aplicación PRISM se compone de varios módulos que colaboran entre ellos. Un módulo PRISM simplemente es un objeto que implementa la interfaz IModule. En un mismo assembly pueden haber tantos módulos PRISM como se desee.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>PRISM y AvalonDock</title><link>https://www.eiximenis.dev/posts/2009-01-20-prism-y-avalondock/</link><pubDate>Tue, 20 Jan 2009 12:56:00 +0000</pubDate><atom:modified>Tue, 20 Jan 2009 12:56:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2009-01-20-prism-y-avalondock/</guid><description>&lt;p>Hola a todos!&lt;/p>
&lt;p>Conocéis PRISM? Viene a ser, salvando las distancias, la CAB de WPF: es decir un conjunto de buenas prácticas para la creación de aplicaciones compuestas en WPF y una librería que implementa dichas buenas prácticas. Si desarrollais aplicaciones en WPF es obligatorio echarle un vistazo. Pasaos por la &lt;a href="http://www.codeplex.com/CompositeWPF">página de PRISM en codeplex&lt;/a>.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>[WPF] Databinding con un PasswordBox</title><link>https://www.eiximenis.dev/posts/2009-01-16-wpf-databinding-con-un-passwordbox/</link><pubDate>Fri, 16 Jan 2009 13:32:00 +0000</pubDate><atom:modified>Fri, 16 Jan 2009 13:32:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2009-01-16-wpf-databinding-con-un-passwordbox/</guid><description>&lt;p>Hola! ¿Que tal os sienta el 2009? Espero que lo mejor posible 🙂&lt;/p>
&lt;p>Hoy un post cortito para comentar un problemilla y su solución.&lt;/p>
&lt;p>El problemilla es que al intentar realizar DataBinding desde un PasswordBox no funciona, porque la propiedad Password, &lt;strong>no&lt;/strong> es una DependencyProperty.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Una dudilla sobre C#</title><link>https://www.eiximenis.dev/posts/2008-12-31-una-dudilla-sobre-c/</link><pubDate>Wed, 31 Dec 2008 11:40:28 +0000</pubDate><atom:modified>Wed, 31 Dec 2008 11:40:28 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2008-12-31-una-dudilla-sobre-c/</guid><description>&lt;p>Hola… a punto todos para comernos las uvas????&lt;/p>
&lt;p>Antes de que lo hagáis y os lanceis luego a brindar con cava por el nuevo año, y una cosa lleve a la otra y no esteis en condiciones, digamos de… pensar mucho, a ver si alguien me sabe responder una dudilla que me ha surgido hoy.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>Uncategorized</category></item><item><title>Mi carta a los reyes…</title><link>https://www.eiximenis.dev/posts/2008-12-24-mi-carta-a-los-reyes/</link><pubDate>Wed, 24 Dec 2008 13:56:35 +0000</pubDate><atom:modified>Wed, 24 Dec 2008 13:56:35 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2008-12-24-mi-carta-a-los-reyes/</guid><description>&lt;p>Aunque sería para unos reyes que pasaran más allá del 2010, pero bueno… por pedir que no quede 😛&lt;/p>
&lt;p>Estas son las cosas que me gustaría que algun dia se incorporasen a C#. Como son fiestas mágicas, pues aquí van para ver si los chicos de Redmond se animan y para algún milenio las tenemos…&lt;/p></description><dc:creator>eiximenis</dc:creator><category>c#</category></item><item><title>Duda metafísica sobre contravarianza en delegates</title><link>https://www.eiximenis.dev/posts/2008-12-18-duda-metafsica-sobre-contravarianza-en-delegates/</link><pubDate>Thu, 18 Dec 2008 13:14:02 +0000</pubDate><atom:modified>Thu, 18 Dec 2008 13:14:02 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2008-12-18-duda-metafsica-sobre-contravarianza-en-delegates/</guid><description>&lt;p>Hola… hoy voy a poner un post sobre una dudilla &lt;em>metafísica&lt;/em> que me ha surgido, concretamente relativa a los &lt;em>delegates&lt;/em>. Y he pensado… que mejor sitio que ponerla que aquí??? 😉&lt;/p>
&lt;p>Los delegates en C# 2.0 son contravariantes, es decir un delegate a un método que espera un parámetro tipo X aceptará cualquier método que espere un parámetro de cualquier tipo base de X.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>c#</category></item><item><title>El valor de una certificación.</title><link>https://www.eiximenis.dev/posts/2008-12-16-el-valor-de-una-certificacin/</link><pubDate>Tue, 16 Dec 2008 08:54:06 +0000</pubDate><atom:modified>Tue, 16 Dec 2008 08:54:06 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2008-12-16-el-valor-de-una-certificacin/</guid><description>&lt;p>Bueno, aviso: estoy cabreado&amp;hellip; y este post será polémico. Quien avisa no es traidor.&lt;/p>
&lt;p>Estas últimas semanas me he sacado dos MCPs, en concreto el 70-529 y el 70-549, es decir el MCTS y el MCPD de aplicaciones distribuídas. No voy a hablar sobre si son fáciles o difíciles o si se ajustan a lo que realmente uno se encuentra en el &lt;em>mundo real&lt;/em>, no… quiero exponer algo que ya hace tiempo me preocupa y me mosquea a partes iguales. Antes de nada he de decir que no tenía muy claro si escribir este post. Por hastío básicamente&amp;hellip; lo digo porque lo que escribiré ahora es, lamentablemente, muy parecido a lo que escribí en mi antiguo blog en la casi-extinta &lt;a href="http://blogs.clearscreen.com/">clearscreen&lt;/a> (un tick de silencio). Aquí dejo &lt;a href="http://blogs.clearscreen.com/edu/archive/2006/02/01/2727.aspx">el enlace al post&lt;/a> que escribí hará casi tres años, por si a alguien le apetece leerlo.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>opinion</category></item><item><title>[Depuración] Generación programática de mini dumps</title><link>https://www.eiximenis.dev/posts/2008-11-11-depuracin-generacin-programtica-de-mini-dumps/</link><pubDate>Tue, 11 Nov 2008 11:37:58 +0000</pubDate><atom:modified>Tue, 11 Nov 2008 11:37:58 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2008-11-11-depuracin-generacin-programtica-de-mini-dumps/</guid><description>&lt;p>Bueno… No voy a hablar sobre como fue el DevCamp de este pasado fin de semana en puesto que ya lo han hecho &lt;a href="https://mx1.raona.com/owa/http:/geeks.ms/blogs/jnunez/archive/2008/11/10/devcamp-volviendo-al-pasado-y-viendo-el-futuro.aspx">Jordi Nuñez&lt;/a> y &lt;a href="http://geeks.ms/blogs/jalarcon/archive/2008/11/10/guadalajara-charlas-t-233-cnicas-y-gymcana-este-fin-de-semana.aspx">José Manuel Alarcon&lt;/a>. Compartimos buenos momentos, buenos cubatas y buenas charlas.&lt;/p>
&lt;p>De todas las charlas que se dieron, me interesa comentar especialmente la que dio &lt;a href="http://geeks.ms/blogs/palvarez/default.aspx">Pablo Alvarez&lt;/a>, una charla &lt;strong>impresionante&lt;/strong> bajo el título de &lt;a href="http://geeks.ms/blogs/palvarez/archive/2008/11/09/weekend-warrior-depurando-hasta-la-saciedad-en-el-devcamp.aspx">depurando hasta la saciedad&lt;/a>. Aunque contó con apenas 45 minutos destripó a base de bien WinDbg y comentó los distintos escenarios de depuración, especialmente la depuración post-mortem (esto es, cuando el proceso ya ha reventado). Leeros su post y el ppt porque es imprescindible.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>development</category></item><item><title>IoC o el poder de ceder el control</title><link>https://www.eiximenis.dev/posts/2008-10-28-ioc-o-el-poder-de-ceder-el-control/</link><pubDate>Tue, 28 Oct 2008 11:09:00 +0000</pubDate><atom:modified>Tue, 28 Oct 2008 11:09:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2008-10-28-ioc-o-el-poder-de-ceder-el-control/</guid><description>&lt;p>Hablando con colegas de profesión, me he dado cuenta de que muchos de ellos no terminan de comprender el patrón IoC o las ventajas que su uso comporta… Así que sin ánimo de sentar cátedra he decidido escribir este post, por si le sirve a alguien… xD&lt;/p></description><dc:creator>eiximenis</dc:creator><category>patrones</category></item><item><title>[ALM 08] El efecto mariposa en el desarrollo del Software…</title><link>https://www.eiximenis.dev/posts/2008-10-21-alm-08-el-efecto-mariposa-en-el-desarrollo-del-software/</link><pubDate>Tue, 21 Oct 2008 12:03:00 +0000</pubDate><atom:modified>Tue, 21 Oct 2008 12:03:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2008-10-21-alm-08-el-efecto-mariposa-en-el-desarrollo-del-software/</guid><description>&lt;p>&amp;hellip; o como la falta de comunicación es una de las principales causas del fracaso de muchos proyectos.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>eventos</category></item><item><title>[WPF] Library project file cannot specify ApplicationDefinition element</title><link>https://www.eiximenis.dev/posts/2008-10-14-wpf-library-project-file-cannot-specify-applicationdefinition-element/</link><pubDate>Tue, 14 Oct 2008 17:07:00 +0000</pubDate><atom:modified>Tue, 14 Oct 2008 17:07:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2008-10-14-wpf-library-project-file-cannot-specify-applicationdefinition-element/</guid><description>&lt;p>Imagina la siguiente situación: Tienes un proyecto en WPF, con varias ventanas o controles WPF creados, y de repente te da por reorganizarlo todo un poco. Así, que añades un proyecto de tipo “Class Library” a la solución, y luego arrastras desde el Solution Explorer, algunas de las ventanas y/o controles al nuevo proyecto.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>wpf</category></item><item><title>El Guille en Igualada</title><link>https://www.eiximenis.dev/posts/2008-10-10-el-guille-en-igualada/</link><pubDate>Fri, 10 Oct 2008 17:11:00 +0000</pubDate><atom:modified>Fri, 10 Oct 2008 17:11:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2008-10-10-el-guille-en-igualada/</guid><description>&lt;p>Bueno&amp;hellip; ya pasó &lt;a href="http://www.elguille.info/">El Guille&lt;/a> por Igualada, en la sexta etapa de la &lt;em>Guille Community Tour&lt;/em>.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>eventos</category></item><item><title>[WPF] ItemsControl y Canvas</title><link>https://www.eiximenis.dev/posts/2008-09-23-wpf-itemscontrol-y-canvas/</link><pubDate>Tue, 23 Sep 2008 17:30:00 +0000</pubDate><atom:modified>Tue, 23 Sep 2008 17:30:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2008-09-23-wpf-itemscontrol-y-canvas/</guid><description>&lt;p>Comentemos la jugada: Tenemos un ItemsControl (o un derivado de él como una ListBox) y queremos posicionar sus elementos dentro de un Canvas.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>wpf</category></item><item><title>VS se queja con un "Could not retrieve the current project" en un archivo .dbml</title><link>https://www.eiximenis.dev/posts/2008-09-12-vs-se-queja-con-un-could-not-retrieve-the-current-project-en-un-archivo-dbml/</link><pubDate>Fri, 12 Sep 2008 08:19:00 +0000</pubDate><atom:modified>Fri, 12 Sep 2008 08:19:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2008-09-12-vs-se-queja-con-un-could-not-retrieve-the-current-project-en-un-archivo-dbml/</guid><description>&lt;p>Síntoma: tienes una solución que ayer (o hace algunos días, da igual) funcionaba y compilaba bien. Hoy lo abres y aparece un error que dice:&lt;/p>
&lt;p>&lt;code>Build failed due to validation errors in C:\edu\tmp\WofClientServer\WoFServer\WoFData.dbml. Open the file and resolve the issues in the Error List, then try rebuilding the project.&lt;/code>&lt;/p>
&lt;p>Recompilar la solución no sirve para nada. Entonces si intentas abrir el archivo &lt;code>.dmbl&lt;/code>, VS se queja con el &lt;code>Could not retrieve the current project&lt;/code>.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>vs</category></item><item><title>Acropolis, VS2008 SP1 y el diseñador de WPF parece que no se entienden</title><link>https://www.eiximenis.dev/posts/2008-09-10-acropolis-vs2008-sp1-y-el-diseador-de-wpf-parece-que-no-se-entienden/</link><pubDate>Wed, 10 Sep 2008 12:26:00 +0000</pubDate><atom:modified>Wed, 10 Sep 2008 12:26:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2008-09-10-acropolis-vs2008-sp1-y-el-diseador-de-wpf-parece-que-no-se-entienden/</guid><description>&lt;p>MMmm&amp;hellip; pues eso 🙂&lt;/p>
&lt;p>Los síntomas eran los siguientes: En un proyecto WPF, al cargar un archivo xaml, el diseñador se quejaba con el mensaje: “Index was out of range: Must be non-negative  and less than the size of the collection”. Luego daba un número de línea y posición que no decían nada en absoluto.&lt;/p></description><dc:creator>eiximenis</dc:creator><category>wpf</category></item><item><title>Soy un Geek!</title><link>https://www.eiximenis.dev/posts/2008-08-07-soy-un-geek/</link><pubDate>Thu, 07 Aug 2008 16:51:00 +0000</pubDate><atom:modified>Thu, 07 Aug 2008 16:51:00 +0000</atom:modified><guid>https://www.eiximenis.dev/posts/2008-08-07-soy-un-geek/</guid><description>&lt;p>Sí&amp;hellip; gracias a &lt;a href="https://www.eiximenis.dev/blogs/rcorral/" title="Blog de Rodrigo..." mce_href="https://www.eiximenis.dev/blogs/rcorral/">Rodrigo Corral&lt;/a>, me estreno en Geeks.ms 🙂&lt;/p></description><dc:creator>eiximenis</dc:creator></item><item><title>Charlas</title><link>https://www.eiximenis.dev/gallery/events/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.eiximenis.dev/gallery/events/</guid><description/><dc:creator>eiximenis</dc:creator></item><item><title>Mis Cursos</title><link>https://www.eiximenis.dev/about/cursos/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.eiximenis.dev/about/cursos/</guid><description>Aunque no es mi actividad principal, colaboro con algunas empresas de formación online para crear cursos. Es algo que me apasiona y con lo que disfruto mucho. Si no lo hago más es por falta de tiempo xD
CampusMVP CampusMVP es para mí, la empresa de referencia en formación técnica online en castellano. No ofrecen un modelo de suscripción (tipo Pluralsight para entendernos) si no que compras cursos individuales. Los cursos son generalmente largos y requieren un esfuerzo y dedicación.</description><dc:creator>eiximenis</dc:creator></item><item><title>Proyectos Open Source</title><link>https://www.eiximenis.dev/oss/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.eiximenis.dev/oss/</guid><description>En mi perfil de Github puedes ver todos mis repositorios, pero aquí simplemente te cuento algunos de mis proyectos open source que desarrollé, estoy desarrollando o que tengo en mente&amp;hellip;
TVision2 TVision2 es una libreria para desarrollar aplicaciones basadas en TUI usando .Net Core. Está desarrollada de forma modular, de forma que solo &amp;ldquo;pagas por aquello que usas&amp;rdquo; y permite tanto el desarrollo de videojuegos de texto como de aplicaciones clásicas.</description><dc:creator>eiximenis</dc:creator></item><item><title>Sobre mí...</title><link>https://www.eiximenis.dev/about/yo/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.eiximenis.dev/about/yo/</guid><description>Friki standard de nivel 10. Le gusta la música heviata, los libros de fantasía (buenos, nada de R. A. Salvatore, no hagamos coñas), la ciencia ficción, los juegos de rol con papel y dados de colores y como no, el desarrollo… Tras varios años de ir dando lata y de charlar en eventos internacionales (vale, un par de veces en Andorra) fue reconocido MVP en IIS/ASP.NET por parte de Microsoft, por lo que tiene en casa una esatuilla de algo parecido al cristal con 4 anillitos muy monos.</description><dc:creator>eiximenis</dc:creator></item></channel></rss>