Publicado por
José Manuel Alarcón
el
Seguro que has visto mil veces el archivo .gitignore en la raíz de proyectos gestionados con Git. Sin embargo existe un archivo menos conocido llamado .gitkeep que tiene un propósito completamente diferente y que, si no lo conoces, puede dejarte un tanto sorprendido, porque encima siempre suele estar vacío. A continuación te contamos qué es este archivo y para qué se utiliza.
[Más]
Publicado por
José Manuel Alarcón
el
Mucha gente, cuando oye hablar de Docker y de lo que hace, lo primero que piensa es en máquinas virtuales. Al fin y al cabo, una máquina virtual es un software que permite aislarse del sistema operativo subyacente y compartirlo entre varias aplicaciones. Sin embargo las diferencias entre las tecnologías de contenedores como Docker y las máquinas virtuales son enormes, tanto conceptualmente como en la práctica. En este artículo vamos a repasar brevemente ambas tecnologías para ver cómo trabajan y entender bien sus diferencias. No volverás a tener dudas al respecto 😉
[Más]
Publicado por
José Manuel Alarcón
el
El objetivo de Docker es permitirte la creación "paquetes estándar" pensados para despliegue llamados "contenedores" que incluyen todo lo necesario para que una aplicación funcione (dependencias, servicios...) y que se aíslan del sistema subyacente para lograr que siempre funcionen exactamente igual. Cuando se piensa en Docker, por lo general no se asocia con tecnologías Microsoft como .NET o Windows, pero en realidad existen un montón de buenos motivos para usar Docker con ASP.NET, especialmente con .NET Core y .NET Core MVC. En este artículo vamos a repasar las principales razones para utilizar Docker en general en tu proceso de desarrollo, y Docker con .NET en particular, mostrándote cómo te puede ayudar en tus desarrollos.
[Más]
Publicado por
José Manuel Alarcón
el
Es cierto que el Deep Learning ha experimentado un auge y unas mejoras sin precedentes durante el último lustro. Pero por mucho que lleve la palabra "inteligencia" en su nombre, las AI todavía no entienden nada. Son poco inteligentes, vamos. Sus aplicaciones en el mundo digital son muchas y de gran impacto: desde traducciones cada vez mejores, reconocimiento de voz impecable, diagnóstico de enfermedades, ahorro de energía... El peligro puede venir cuando controlen cuestiones del mundo físico, como un coche autónomo o el sistema de seguridad de un edificio, por ejemplo. En este artículo analizamos de qué manera se pueden engañar a una AI y cómo responden algunas de ellas al engaño.
[Más]
Publicado por
José Manuel Alarcón
el
La excepción en el hilo "main" del tipo java.lang.NoClassDefFoundError es uno de los errores más comunes que te puedes encontrar al programar en Java. Y también una de las que más quebraderos de cabeza te pueden ocasionar dependiendo de la circunstancia que la cause. Dependiendo del tamaño de tu aplicación, resolver este error puede ser más o menos difícil (cuanto más grande más complicado, lógicamente). En este artículo vamos a ver por qué se produce (existen muchas posibles causas) y estudiaremos los 7 principales motivos y cómo solucionarlos.
[Más]
Publicado por
José Manuel Alarcón
el
Los vídeos que reproducimos en Internet o bien de manera local en el ordenador o en cualquier otro dispositivo, pueden estar codificados de diferentes maneras. Cada método de codificarlos implica unas ventajas e inconvenientes, y existen formatos mejores que otros dependiendo del uso que queramos darle al vídeo. Así, tenemos formatos como AVI, MP4, MKV, 3GP, WebM de Google, etc... El formato más popular en la actualidad es el MP4, archivos con la extensión .mp4. Pero: ¿Son iguales todos los archivos .mp4?, si no son iguales, ¿qué tipos hay? ¿cuáles son las diferencias, ventajas e inconvenientes de cada uno?¿Valen todos para la Web? ¡Vamos a verlo!
[Más]
Publicado por
José Manuel Alarcón
el
El objetivo principal de trabajar con un sistema de control de código fuente como Git es, por supuesto, mantener un histórico fiel e inalterado de todas las etapas por las que ha ido pasando el código fuente de un proyecto. Sin embargo, a veces, podemos añadir algo a esta historia que no pretendíamos añadir. Por ejemplo, hacemos un commit sin querer, metemos archivos de más o de menos, o va con un bug vergonzoso que no queremos que nadie vea y que se nos ha colado... Por regla general no deberíamos modificar la historia salvo que sea estrictamente necesario, pero ¡hey!, estas cosas pasan, así que deberíamos poder arreglarlo. En este artículo vamos a ver cómo conseguirlo...
[Más]
Publicado por
José Manuel Alarcón
el
Entity Framework es el ORM (Object-Relational Mapper) de Microsoft, con versiones tanto para la plataforma .NET "tradicional" como para .NET Core, con capacidades muy diferentes en cada caso. Entity Framework nos ofrece diversas maneras de trabajar con los datos desde nuestros programas. Cada una tiene un enfoque diferente y es interesante para ciertos casos concretos, además de tener sus beneficios y problemas. Vamos a dar un repaso rápido a los modos de trabajo principales de Entity Framework para ver en qué consisten y sus ventajas e inconvenientes. Además las capacidades de Entity Framework en .NET "tradicional" (EF6) y en .NET Core (EF Core) son completamente diferentes y veremos también en qué consisten.
[Más]
Publicado por
José Manuel Alarcón
el
Los paquetes npm que vamos añadiendo a nuestros desarrollos se almacenan en el archivo package.json, ubicado en la carpeta raíz de nuestro proyecto. Por regla general se añaden con una configuración conservadora que permite la actualización de versiones menores, pero impide la de versiones mayores que rompan la compatibilidad. Si queremos forzar la actualización de todos los paquetes a lo último y que eso se vea reflejado en el archivo package.json, podemos hacerlo a mano pero en proyectos grandes puede ser muy laborioso. Vamos a ver una manera de conseguirlo de forma automatizada.
[Más]
Publicado por
José Manuel Alarcón
el
Tradicionalmente, para realizar acceso a datos desde un lenguaje orientado a objetos (POO) como pueden ser .NET o Java, era necesario mezclar código y conceptos muy diferentes. Estas diferencias entre conceptos, tipos de datos, y modos de trabajar pueden causar muchos problemas de lo que se dio en llamar "desfase de impedancia". El concepto se refiere a la dificultad para hacer fluir la información entre la base de datos y las diferentes capas del programa en función de la diferencia existente entre cada una de estas partes. Este desfase de impedancia hace que pueda llegar a ser muy complicado trabajar contra una base de datos desde un lenguaje POO si queremos sacar partido a los conceptos habituales que usamos en éstos, y huir de bibliotecas de funciones que nos fuerzan a trabajar con los conceptos de la base de datos. En este artículo vamos a ver cuáles son estos problemas y qué es lo que nos permite disminuir esta impedancia (o sea, un ORM), sus ventajas e inconvenientes y cuáles hay para las diferentes plataformas.
[Más]