Menú de navegaciónMenú
Categorías

La mejor forma de Aprender Programación online y en español www.campusmvp.es

614 artículos publicados

GAMBADAS: Engañando a la inteligencia artificial para que crea que cualquier foto es una tostadora

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]

Cómo solucionar el error "java.lang.NoClassDefFoundError" en Java

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]

Formatos de vídeo para Internet: MP4 y sus variantes, MP4/H.264 y MP4/MPEG-4 - Diferencias y similitudes

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]

Cómo eliminar el último commit de Git en el repositorio de origen (p.ej Github)

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]

Entity Framework: Code First, Database First y Model First ¿En qué consiste cada uno?

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]

TRUCO: Actualizar a la última las versiones de dependencias npm en package.json

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]

¿Qué es un ORM?

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]

HTML5: ¿Cuál es la forma correcta de poner negritas? ¿strong, b o "font-weight"?

Esto puede parecer una pregunta básica y tonta, sin apenas importancia. Pero en realidad tiene más fondo del que pueda parecer... Tradicionalmente en HTML, si queríamos poner un texto resaltado y que se viese en negrita, la forma de hacerlo era simplemente usando la etiqueta b. La cosa era muy sencilla. Sin embargo, en HTML5 tenemos muchas más opciones que parecen equivalentes. Podemos utilizar también la etiqueta strong, la etiqueta em o la propiedad CSS font-weight aplicada a una etiqueta que envuelva el texto que queremos en negrita. Realmente ¿no es todo lo mismo? ¿Existe una forma más correcta de hacerlo que otras? Pues lo cierto es que no es todo igual. Cada una tiene sus aplicaciones y sus implicaciones, por lo que no es correcto usarlas indistintamente. Vamos a verlo... [Más]

GAMBADAS: La alerta nuclear de Hawái y malas prácticas de desarrollo y de seguridad

Seguro que te enteraste, porque salió en todos los medios del mundo, pero por si acaso: el pasado sábado día 13 de enero miles de hogares en las islas de Hawái se despertaron a las 8 de la mañana con una alerta de ataque nuclear desde Corea del Norte. Fue la metedura de pata de una persona, pero en este artículo nos preguntamos si realmente fue culpa de él o quizá la responsabilidad es de los que diseñaron y construyeron el sistema informático que hay detrás. De este episodio se pueden obtener enseñanzas interesantes para el desarrollo de cualquier sistema crítico. [Más]

7 mitos sobre tiempo y horas que muchos programadores se creen (y que son mentira)

Una de las cosas más habituales que hay que hacer en cualquier aplicación es gestionar datos relativos a fechas y horas. Sin embargo, existen muchos pequeños detalles que debemos tener en cuenta cuando manejamos datos de este tipo en nuestro código. Muchos de estos detalles se nos escapan a veces o directamente puede que no los conozcamos. Vamos a repasar a continuación algunos mitos y falsedades sobre el tiempo y las horas que muchos programadores desconocen pero que deberían saber. Puede que algunos los tengas claros, pero seguro que otros te sorprenden... [Más]