Sistemas & Desarrollo
12 meneos
394 clics
¿Qué pasa cuando ejecutas “rm -rf” en una máquina con Linux? [ENG]

¿Qué pasa cuando ejecutas “rm -rf” en una máquina con Linux? [ENG]  

He hecho un pequeño vídeo para mostrar qué pasa exactamente al ejecutar “rm -rf” en una máquina con Linux. Spoiler: realmente no pasa nada, a no ser que utilices el parámetro --no-preserve-root. Aún así, por favor, no ejecutes nunca jamás estos comandos en servidores. Algunos no permiten que lo ejecutes, pero otros, generalmente más antiguos, felizmente borrarán todo el sistema.
13 meneos
265 clics

Lo básico sobre la seguridad de aplicaciones web [ENG]  

El desarrollo de páginas web modernas tiene muchos retos. Uno de ellos es la seguridad, que habitualmente está subestimada. Mientras que algunas técnicas, como el análisis de amenazas, son cada vez más reconocidas como esenciales para cualquier desarrollo serio, hay también otras prácticas básicas que todo desarrollador debería estar haciendo como alto rutinario.
9 meneos
251 clics
Diez reglas de la NASA de escritura de código fuente crítico y seguro [ENG]

Diez reglas de la NASA de escritura de código fuente crítico y seguro [ENG]

Todo gran proyecto de software utiliza estándares de codificación y reglas de estilo. Estas reglas establecen las bases que se han de seguir a la hora de escribir software como, por ejemplo, “¿cómo se debe estructurar el código?”; o “¿qué característica del lenguaje usado se debe usar y cuál no?”. Los desarrolladores de la NASA son unos de los que las siguen para poder desarrollar código crítico y seguro. Aquí están las 10 principales reglas que usan.
12 meneos
101 clics

io_uring para bases de datos de alto rendimiento: cómo y cuándo utilizarlo [ENG|PDF|1,5 MB]

Estudiamos cómo los sistemas de bases de datos modernos pueden aprovechar la interfaz io_uring de Linux para lograr una E/S eficiente y con baja sobrecarga. io_uring es una interfaz de lotes de llamadas al sistema asíncronas que unifica las operaciones de almacenamiento y red, abordando las limitaciones de las interfaces de E/S existentes en Linux. Sin embargo, la simple sustitución de las interfaces de E/S tradicionales por io_uring no siempre reporta beneficios en cuanto al rendimiento.
9 meneos
155 clics
Presentación de IncusOS, sistema operativo inmutable para ejecutar Incus [ENG]

Presentación de IncusOS, sistema operativo inmutable para ejecutar Incus [ENG]  

IncusOS es una imagen moderna e inmutable del sistema operativo diseñada específicamente para ejecutar Incus. Proporciona actualizaciones atómicas a través de un mecanismo de actualización A/B que utiliza particiones distintas y aplica la seguridad de arranque a través de UEFI Secure Boot y un módulo TPM 2.0. Debajo del capó está construido sobre una base mínima de Debian 13, utilizando las compilaciones Zabbly del kernel de Linux, ZFS e Incus, proporcionando las últimas versiones estables de todos ellos.
9 meneos
179 clics
Entender la pila de audio en sistemas Unix [ENG]

Entender la pila de audio en sistemas Unix [ENG]

El audio en Unix es un pequeño zoológico, hay tantas siglas para proyectos y API que es fácil perderse. ¡Abordemos ese problema! La mayoría de los artículos son confusos porque utilizan jerga técnica de audio o porque apenas rascan la superficie y dejan a la gente sin pistas. Poco de conocimiento puede ser peligroso. En este artículo intentaré cerrar la brecha al no requerir ningún conocimiento previo y al mismo tiempo brindar una buena descripción general de todo el panorama de audio de Unix.
9 meneos
115 clics
Servicios “trampa” para detener la ejecución de ransomware

Servicios “trampa” para detener la ejecución de ransomware

Ollie Whitehouse de NCC Group ha publicado SWOLLENRIVER, una interesante herramienta bajo licencia AGPL que implementa una serie de procesos canarios que se controlan entre sí. Si estos servicios se detienen (a través de net stop o similar) y no durante el cierre del equipo, disparará un token Canary DNS e hibernará el host. Si a algunos no os suenan los Canary Tokens deciros que es un concepto muy interesante en el mundo Deception/honeypots. Es como los clásicos web bugs que se incluían en los correos electrónicos, imágenes transparentes que se cargaban mediante una URL única embebida en una image tag, alertando al “cazador” que está monitorizando.
11 meneos
226 clics
Cómo hackear la unidad de gestión Bosch lcn2kai que traen algunos vehículos Nissan [ENG]

Cómo hackear la unidad de gestión Bosch lcn2kai que traen algunos vehículos Nissan [ENG]  

Mi Nissan Xterra vino con una unidad de gestión con pantalla táctil, navegación incorporada, pantalla de cámara marcha atrás, funciones multimedia y conectividad para teléfonos inteligentes. Algunas de las funciones más avanzadas solo están disponibles a través de la aplicación NissanConnect, que requiere registro y suscripción. Nunca lo he usado y ni siquiera estoy seguro de si todavía es compatible. ¿No sería estupendo si pudiéramos ejecutar código en el dispositivo e incluso desarrollar nuestras propias extensiones y aplicaciones?
15 meneos
662 clics
Siete atajos del historial de BASH que realmente usarás [ENG]

Siete atajos del historial de BASH que realmente usarás [ENG]

La mayoría de las guías de atajos del historial de BASH los enumeran exhaustivamente, pero el problema con esto es que usaría un atajo una vez, luego lo examinaría mientras probaba todas las posibilidades. ¡Entonces pasaría a mi jornada laboral y los olvidaría por completo, acordándome sólo del conocido !! (doble admiración) que aprendí cuando comencé a usar BASH. Así que este artículo describe los atajos que uso en el día a día.
15 meneos
372 clics
Ingeniería inversa práctica, primera parte: buscando puertos de depuración [ENG]

Ingeniería inversa práctica, primera parte: buscando puertos de depuración [ENG]  

En esta serie de publicaciones vamos a seguir el proceso de ingeniería inversa de un router. Más específicamente un Huawei HG533. En las primeras etapas, este es el tipo más básico de ingeniería inversa. Simplemente buscamos un puerto serie que los ingenieros que diseñaron el dispositivo dejaron en la placa para fines de depuración y soporte técnico. Aunque voy a explicar el proceso usando un router, se puede aplicar a toneladas de sistemas integrados domésticos. Desde impresoras hasta cámaras IP.
15 meneos
229 clics
La métrica de utilización de la CPU está mal [ENG]

La métrica de utilización de la CPU está mal [ENG]  

La utilización de la CPU es la medida que todos utilizan para medir el rendimiento de un procesador. Pero el porcentaje de CPU es una medida engañosa de cuán ocupado está realmente su procesador, dice Brendan Gregg, arquitecto de alto rendimiento de Netflix, en lo que él llama un “anuncio de servicio público de cinco minutos” en la 16ª edición de la Exposición de Linux del Sur de California (SCALE). [Vía: opensource.com: CPU utilization is wrong ].
14 meneos
223 clics
Soporte de librerías OpenGL en BASH [ENG]

Soporte de librerías OpenGL en BASH [ENG]

Un proyecto que comenzó como una broma puede ser útil para las personas que desean aprender los conceptos básicos de OpenGL. Este proyecto es un simple ejecutable que lee comandos de OpenGL de la entrada estándar para luego dibujar la salida en una ventana de X11. Cualquier entrada de usuario en esa ventana de X11 será enviada a la salida estándar. Todo esto permite que con cualquier aplicación que sea capaz de leer y escribir texto se puedan crear aplicaciones gráficas interactivas.
8 meneos
333 clics
La potencia de los recortes de código (snipples)

La potencia de los recortes de código (snipples)

Un recorte de código es una pequeña plantilla que podemos reutilizar dentro de un editor de textos. Esta plantilla se pega, en el texto que se está editando, al escribir una palabra y pulsar el tabulador. En el siguiente ejemplo, al escribir html5 y pulsar tabulador, se pega la plantilla correspondiente:
12 meneos
532 clics
En crudo y sin censura: raw sockets I (en C)

En crudo y sin censura: raw sockets I (en C)

Aprovechando que tengo que guardar reposo por un mini accidente laboral, he decidido ponerme con algo que llevaba posponiendo un tiempo (permitirme la redundancia): salsear un poquito con los sockets en C y ya de paso escribir una entrada en el blog. A lo largo de esta serie de entradas intentaré mostrar para qué podemos utilizar la programación de sockets (sobre todo los RAW) siempre mirando desde un prisma, digamos, oscuro. Soy consciente que no es un tema fácil de tratar, y mucho menos hacer que la lectura sea liviana a la […].
9 meneos
572 clics
Aprendiendo de los 10 errores más comunes que comenten los desarrolladores [ENG]

Aprendiendo de los 10 errores más comunes que comenten los desarrolladores [ENG]

En esta lista se presentan los 10 errores más comunes que los nuevos desarrolladores (y a veces incluso los desarrolladores con experiencia) comenten, con el fin de aprender de los mismos y evitarlos. En esta lista se incluyen: no confiar en los datos de entrada del usuario; no hacer tests manuales, automatizarlos; no omitir la documentación; etc.
8 meneos
186 clics
Cómo el depurador (debugger) pone los ‘breakpoints’ [ENG]

Cómo el depurador (debugger) pone los ‘breakpoints’ [ENG]  

Estoy fascinado con los depuradores (debuggers). Tanto que escribí un pequeño y muy básico depurador como uno de mis recientes proyectos. En esta entrada voy a escribir lo que he aprendido acerca de cómo un depurador establece un breakpoint.
10 meneos
200 clics

Buenas prácticas en el desarrollo de interfaces de línea de comandos [ENG]

Las interfaces de línea de comandos se siguen usando para la administración de infraestructuras de software. Aunque la mayoría de estas herramientas suelen ser internas, su calidad no debe ser diferente a las herramientas públicas. Para ello es conveniente seguir una serie de buenas prácticas durante su desarrollo.
10 meneos
161 clics
Cómo evitar errores usando C++ moderno [ENG]

Cómo evitar errores usando C++ moderno [ENG]

Uno de los mayores problemas de C++ es tener un gran número de constructores cuyo comportamiento no está definido o simplemente es inesperado para el desarrollador. Estos problemas se identifican generalmente cuando se pasa el analizador estático que es, hasta donde sabemos, la parte donde mejor se detectan dichos errores, en la fase de compilación. Veamos qué técnicas de C++ moderno nos ayudan a escribir código simple y limpio para evitar este tipo de errores.
8 meneos
218 clics

Xplain: explicando cómo funciona el sistema de ventanas X11 [ENG]  

¿Qué son las X? ¿Cómo interaccionan con mi tarjeta gráfica y mi teclado y ratón? ¿Para qué usan las X las aplicaciones? ¿Qué es Wayland y cómo encaja en el contexto? ¿Cuáles son los problemas de las X que nos han llevado a escribir un nuevo sistema de ventanas? Estas y otras preguntas son las que me han llevado a indagar sobre cómo funciona el sistema de ventanas de X11 y a escribir este artículo.
8 meneos
69 clics

Ejecutar chequeos de SSL Labs desde la línea de comandos

La herramienta Qualys SSL Labs es sin duda de lo mejor que hay en Internet para auditar el estado de los servicios SSL/TLS y PKI de un servidor. Como es lógico, ejecutar la herramienta vía web genera ciertas limitaciones, como por ejemplo la ejecución masiva o automatizada de tests. A través de la API y la herramienta ssllabs-scan podemos evitar estas restricciones usando la línea de comandos.
8 meneos
194 clics
Diez paquetes de SublimeText para desarrolladores web

Diez paquetes de SublimeText para desarrolladores web  

SublimeText es una de los editores de texto líderes del mercado; la extensibilidad de su sistema de paquetes le hace muy flexible. Cada desarrollador puede seleccionar los paquetes que más le interesan para cada proyecto. Vamos a revisar algunos de los más interesantes para desarrolladores web, empezando por Package Control, el gestor de paquetes de Sublime; debemos instalarlo para poder acceder al resto.
8 meneos
141 clics
Entendiendo los archivos y las unidades de systemd [ENG]

Entendiendo los archivos y las unidades de systemd [ENG]

Cada vez más distribuciones de Linux están adoptando systemd como sistema de inicio. Este potente software puede gestionar varios aspectos del servidor, como pueden ser servicios, puntos de montaje y estados del sistema. En systemd, una unidad (unit en inglés) se refiere a un recurso que el sistema es capaz de manejar. Este el primer objeto con el que systemd trabaja. Estos recursos son definidos en archivos de configuración llamados “unit files”.
10 meneos
138 clics
Puesta a punto de PHP y MySQL

Puesta a punto de PHP y MySQL

Tuning de MySQL y PHP para mejorar el rendimiento aplicaciones web como puede ser un Wordpress.
9 meneos
151 clics
Preparándose para HTTP/2: una guía para diseñadores y desarrolladores web [ENG]

Preparándose para HTTP/2: una guía para diseñadores y desarrolladores web [ENG]

El protocolo de transferencia de hipertexto (HTTP) es el protocolo que regula la conexión entre el servidor y los navegadores de los clientes web. Por primera vez desde 1999 tenemos una nueva versión de este protocolo que promete sitios web mucho más rápidos. En este artículo vamos a ver los conceptos básicos de HTTP/2 que se aplican a los diseñadores y desarrolladores web. Además, se explicarán algunas de las características clave del nuevo protocolo mirando la compatibilidad de los navegadores y de los servidores.
8 meneos
119 clics

Introducción a la arquitectura ARMv8 de 64 bits [ENG]

La arquitectura ARM es una arquitectura de tipo RISC (Reduced Instruction Set Computer). Originalmente ARM significaba “Acorn RISC Machine” pero hoy su significado es “Advanced RISC Machines”. En los últimos años los procesadores ARM, gracias a la difusión de los teléfonos inteligentes y las tablets, se han convertido en procesadores muy populares, sobre todo gracias a sus reducidos costes y mayor eficiencia energética comparados con procesadores CISC.

menéame