Menú de navegaciónMenú
Categorías

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

1038 artículos publicados

GAMBADAS: hackeando iluminación "inteligente" a distancia con un dron

Ya hemos hablado aquí en diversas(1) ocasiones(2) de los peligros que tiene no tomarse en serio la seguridad de los dispositivos conectados, sea a Internet o no, y especialmente si son inalámbricos. Con el IoT (Internet de las Cosas) cada vez más y más dispositivos están conectados a la Red o entre sí en redes privadas, y por lo tanto son susceptibles de ser atacados por individuos maliciosos. Aparte del masivo ataque de DDoS que sufrió la Web a finales de octubre y que aprovechaba millones de cámaras vulnerables conectadas a Internet, uno de los fallos más llamativos que hemos visto recientemente tiene que ver con las smart-lightbulbs o "bombillas inteligentes", aunque podría usarse para atacar otros muchos tipos de dispositivos conectados. [Más]

Boxing y UnBoxing de variables ¿Qué significa?

Un efecto importante a tener en cuenta a la hora de usar los tipos por valor, es el conocido como Boxing. Éste consiste en que el compilador se ve forzado a convertir un tipo por valor en un tipo por referencia, y por tanto a almacenarlo en el montón en lugar de en la pila.
Esto tiene importantes consecuencias en el rendimiento y en el consumo y gestión de memoria. Vamos a estudiar en qué consiste este efecto y cuáles son estos efectos. [Más]

Microsoft compra a Apple, Google y Blackberry en una operación sin precedentes

Todos sabemos que Microsoft lleva años luchando sin éxito para dominar el mundo de los smartphones. Aunque fueron pioneros en todo esto con Windows Mobile a principios de los años 2000, cuando Apple presentó su mítico primer iPhone, la empresa de la manzana mordida enseguida se hizo con el mercado. Google pronto se subió al carro con Android y llegó a dominar el 80% del mercado. Ahora el gigante de Seattle da un golpe encima de la msea comprando a sus principales competidores para acabar con ellos. [Más]

Qué son los tipos por valor y por referencia en .NET y C#

Este es un concepto clave para programar y al mismo tiempo uno de los que más le cuesta entender a los principiantes, así que vamos a intentar explicarlo lo mejor posible a continuación. Antes de empezar, necesitamos comprender dos conceptos importantes que paso a resumir de manera sencilla: La pila o “stack”: es una zona de memoria reservada para almacenar información de uso inmediato por parte del hilo de ejecución actual del programa. Por ejemplo, cuando se llama a una función se reserva un bloque en la parte superior de esta zona de memoria (de la pila) para almacenar los parámetros y demás variables de ámbito local. Cuando se llama a la siguiente función este espacio se “libera” (en el sentido de que ya no queda reservado) y puede ser utilizado por la nueva función. Es por esto que si hacemos demasiadas llamadas anidadas a funcione... [Más]

Ghost Browser: múltiples sesiones con un solo navegador

Una de las cuestiones de los navegadores modernos que más me molesta es que conservan las sesiones entre todas sus instancias. Es decir, si abres un navegador y entras con unas credenciales en un determinado servicio de la Web pero al mismo tiempo quieres entrar desde otra pestaña o ventana al mismo servicio con otras credenciales diferentes, tendrías muy pocas opciones. Con GhostBrowser esto se acabó... [Más]

GAMBADAS: Los tres principales pecados al gestionar errores y excepciones

La gestión de excepciones es una de las cosas más comunes y sencillas que realiza cualquier desarrollador. Se trata de prever y gestionar los posibles problemas que puedan surgir durante la ejecución de nuestro programa, de modo que sea más robusto al saber "reaccionar" de la manera adecuada. Incluso cuando se producen excepciones que no habíamos tenido en cuenta hay que tener un "Plan B" para gestionarlas y evitar que la aplicación rompa. Pero ni siquiera en este caso es admisible el primero de los errores típicos que vamos a comentar a continuación... [Más]

FRIKADAS: ¿Cuál es la resolución de un ojo humano en megapíxeles?

En realidad, un ojo no se puede equiparar con una cámara real… pero sigue leyendo.

En la mayor parte de las cámaras digitales lo que tenemos son píxeles ortogonales. Dichos píxeles se distribuyen de manera equidistante a través del sensor, formando una rejilla casi perfecta. Disponemos además de un filtro, generalmente se trata de un filtro de Bayer (debe su nombre al científico Bryce Bayer, quien inventó la matriz de colores que se usa hoy en día), para píxeles rojos, azules y verdes... [Más]

ASP.NET Core 1.1: ¿Qué hay de nuevo?

La semana pasada se presentó la primera revisión de ASP.NET Core durante el evento Connect(). Se trata de la primera actualización de la nueva tecnología multiplataforma que lanzó Microsoft este verano. Gracias al uso de versionado semántico, podemos saber de antemano que esta nueva versión añade características adicionales y mejoras compatibles hacia atrás, por lo que no deberemos preocuparnos por romper algo si actualizamos una aplicación de 1.0 a 1.1. A continuación resumimos qué se incluye en esta actualización... [Más]

Los mejores entornos de desarrollo para Java

Utilizando las herramientas incluidas en el propio JDK de Java podemos compilar programas, empaquetarlos, depurarlos y ejecutarlos. La única utilidad adicional que precisaríamos sería un editor de texto para escribir el código fuente. El procedimiento a seguir, no obstante, puede llegar a resultar tedioso, repitiéndose el ciclo editar-compilar-ejecutar-depurar-editar una y otra vez hasta alcanzar la funcionalidad que se persigue.
Las tareas de dicho ciclo, así como muchas otras, nos resultarán más sencillas si utilizamos un IDE (Integrated Development Environment) específico para Java. Es decir, un entorno de desarrollo, que va más allá de un simple editor de texto. Pero, entre toda la oferta disponible ¿cuál es el mejor IDE para programar en Java?... [Más]

Cómo leer y escribir archivos de texto con .NET

Uno de los objetivos de cualquier plataforma de programación es ofrecer servicios de bajo nivel para tareas comunes que cualquier programador pueda necesitar. Es decir, nos evita "reinventar la rueda" todo el tiempo, proporcionándonos cientos de tareas y utilidades ya hechas. Gracias a ello, tareas como la que nos ocupan (y otras muchísimo más complejas) son extremadamente fáciles. En este caso, para leer y escribir archivos de texto a disco podemos utilizar las clases StreamReader y StreamWriter respectivamente. Vamos a verlo... [Más]