Sistemas & Desarrollo
21 meneos
447 clics
PartyLoud: un sencillo script en bash para generar “ruido” en la red

PartyLoud: un sencillo script en bash para generar “ruido” en la red

PartyLoud es una herramienta para crear tráfico de Internet falso con el fin de impedir o mitigar el seguimiento en redes locales. Está basada en noisy.py y su objetivo es hacer mucho ruido en la red (en forma de peticiones http) para que sea más difícil rastrear tu navegación real. Cuando ejecutamos el script, se inician varios hilos y cada uno realiza una solicitud HTTP diferente con Curl. Luego se analiza la salida para elegir la siguiente URL, simulando una navegación.
12 9 1 K 33
12 9 1 K 33
11 meneos
703 clics
Los libros que como desarrollador de software no deberían faltar en tu estantería

Los libros que como desarrollador de software no deberían faltar en tu estantería  

Hace unos meses tuve la suerte de asistir a la JS CraftCamp de Munich, una interesantísima conferencia centrada en JavaScript desde el punto de vista del Craftsmanship. En ella, una de las sesiones que propuse en este Open Space y que resultó realmente enriquecedora, fue la de revisión de libros. La idea era simple: 45 minutos para hablar de libros que habíamos leído y por qué nos habían resultado de gran interés. La lista que salió como resultado fue muy larga, pero nunca os agobiéis por lo grande que pueda resultar una tarea.
12 meneos
669 clics
Las características de los malos programadores [ENG]

Las características de los malos programadores [ENG]

Descripción de arquetipos de desarrolles de software terribles que pueblan el ecosistema de "programación defensiva".
11 meneos
252 clics

El bucle ‘for’ en BASH, el primero paso en la automatización en Linux [ENG]

Creo que dominar el bucle ‘for’ en BASH en Linux es una de las partes fundamentales que tienen que conocer los administradores de sistemas (y los desarrolladores), lo que lleva sus habilidades hasta el siguiente nivel. En la siguiente entrada explicaré cómo funciona un bucle ‘for’ en BASH y mostraré varios útiles ejemplos.
12 meneos
134 clics
Profundizando en el “Apple File System” (APFS), el nuevo sistema de archivos de Apple [ENG]

Profundizando en el “Apple File System” (APFS), el nuevo sistema de archivos de Apple [ENG]

Apple desplegará en todos sus sistemas operativos un nuevo sistema de archivos, el “Apple File System”, o APFS, dejando obsoleto el sistema de archivos anterior, HFS+. APFS incluye características avanzadas —algunas de ellas similares a las de ZFS—, como encriptación nativa, copy-on-write, snapshots, clonación, etc.
10 2 0 K 56
10 2 0 K 56
14 meneos
260 clics
Escalado de privilegios en Linux usando LD_PRELOAD

Escalado de privilegios en Linux usando LD_PRELOAD

Las librerías compartidas (shared libraries en inglés) en Linux/Unix normalmente tienen el prefijo lib y la extensión .so. Los programas `ld.so` y `ld-linux.so*` encuentran y cargan los objetos compartidos (librerías compartidas) que necesita un programa, preparan el programa para ejecutarlo y luego lo ejecutan. `LD_PRELOAD` es la variable de entorno que lista las rutas de la librerías compartidas, al igual que `/etc/ld.so.preload`. Hoy vamos a ver cómo aprovechar esta característica común para escalar privilegios.
10 4 0 K 55
10 4 0 K 55
12 meneos
89 clics

Nuevo sistema de archivos para Linux: bcachefs [ENG]

bcachefs es un nuevo sistema de archivos de propósito general para Linux que incluye control de errores, compresión, múltiples dispositivos, cacheado, COW… Finalmente, incluirá imágenes (snapshots) y otras características interesantes. Pero, ¿por qué otro nuevo sistema de archivos? Después de varios años desarrollando bcache en Google, pareció buena idea exportar toda esa funcionalidad a un nuevo sistema de archivos gracias a su limpio y elegante diseño, además de por tener un rendimiento similar a ext4.
12 meneos
333 clics
Código seguro en D [ENG]

Código seguro en D [ENG]

He visto a buenos programadores en C++ cambiarse a Java o C#. La pregunta es: ¿por qué lo abandonan una vez que tienen un amplio conocimiento del mismo? La respuesta universal es “productividad”. ¿Qué impide a C++ lograr productividad? La horrible sintaxis y la seguridad son dos de los mayores impedimentos. Aunque también tiene cosas buenas, como su gran rendimiento. Entonces, ¿existe algún lenguaje que sea sencillo, seguro y potente a la vez? Te voy a contar un secreto: ese lenguaje existe y es D.
15 meneos
243 clics
Lecciones aprendidas en 25 años de desarrollo del kernel Linux [ENG]

Lecciones aprendidas en 25 años de desarrollo del kernel Linux [ENG]

Debido a la celebración de los 25 años del inicio del desarrollo del kernel Linux en 2016, mucha gente nos ha preguntado el secreto de la longevidad y el éxito del proyecto. Generalmente me río y bromeo ya que no tengo ni idea. El proyecto se ha enfrentado a numerosos desacuerdos y desafíos. Pero ya hablando en serio, la razón que nos ha hecho llegar hasta aquí tiene mucho que ver con la capacidad de la comunidad para hacer instrospección y cambiar su modo de trabajar.
10 meneos
424 clics
Cómo recibir una alerta en Telegram cada vez que se conecte un dispositivo USB a nuestro equipo (USB Canary)

Cómo recibir una alerta en Telegram cada vez que se conecte un dispositivo USB a nuestro equipo (USB Canary)

En un grupo acostumbrado a la seguridad ofensiva ya casi da igual que olvides bloquear el ordenador. Cualquier ausencia, incluso breve, que permita el acceso físico puede suponer una oportunidad para alguien conecte un Rubber Ducky o cualquier otro dispositivo: troyanizar el equipo, cambiar la password, modificar tu muro de Facebook… Para evitar ésto, y en un tono más serio protegerte contra atacantes que no sean de tu propio equipo, lo más lógico será controlar el acceso a todos los puertos de tu ordenador que permitan conectar periféricos.
20 meneos
1108 clics
Envío erróneo o controvertido, por favor lee los comentarios.
No pagues la tasa de los bucles ‘for’ [ENG]

No pagues la tasa de los bucles ‘for’ [ENG]

Una vez, haciendo una revisión de código de uno de mis compañeros, vi que usaba un bucle for cuando no era necesario (existía una declaración más legible) . Como chiste dije que habría que poner la “tasa bucle for” (for-loop tax) para cada bucle que se usase de forma innecesaria. Sin embargo, ese chiste me hizo pensar por qué la gente usa el bucle for, más propenso a errores, antes que otras soluciones mejores. La conclusión fue que nos enseñan cómo usar los bucles, pero apenas nos enseñan por qué se necesitan.
13 meneos
263 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.
11 meneos
194 clics
La “obsolescencia planificada” de Oracle para Java [ENG]

La “obsolescencia planificada” de Oracle para Java [ENG]

Oracle ya no está interesado en Java, de acuerdo con una fuente de alto nivel anónima sobre Java en Oracle. Como los rumores de abandono se acumulan de Oracle, se ve cada vez más como su lenguaje de programación más popular se está convirtiendo en un tren sin conductor.
14 meneos
169 clics
Cómo implementar cadenas de caracteres [ENG]

Cómo implementar cadenas de caracteres [ENG]

El lenguaje de programación C define una cadena como 'una secuencia contigua de caracteres terminada por e incluyendo el primer carácter nulo'. Como el carácter '' marca el final, a menudo lo llamamos terminación cero o nula. En los programas en C esto significa que una cadena es char* o char[n]. Históricamente esta representación es anterior a C y parece provenir de los ensambladores PDP-11. La principal ventaja de esta representación es la eficiencia del espacio, además de otros trucos como dividir una cadena larga en varias insertando nulos. Sin embargo, otros lenguajes de programación a menudo usan otras representaciones. ¿Cuáles más son posibles?
9 meneos
163 clics

Falsedades que los programadores creen acerca de las direcciones postales [ENG]

Las direcciones postales son un terreno fértil para realizar suposiciones incorrectas a la hora de crear software que trate con este tipo de datos. Aunque todo el mundo está acostumbrado a usar direcciones postales y el 99 % de las veces que parecen tan simples, estas pueden estas en formas realmente extrañas. A continuación se presentan algunas suposiciones incorrectas acerca de las direcciones postales.
13 meneos
595 clics
Aplicando el requerimiento del “buen gusto” en la programación de Linus Torvalds [ENG]

Aplicando el requerimiento del “buen gusto” en la programación de Linus Torvalds [ENG]  

En una reciente entrevista a Linus Torvalds, el creador de Linux, este hizo un apunte sobre programar con “buen gusto”. ¿Buen gusto? El entrevistador le pidió algunos detalles al respecto y Linus presentó un trozo de código. Código que era un ejemplo de programación de “mal gusto” para poder hacer un contraste inicial. Entonces, ¿qué es programar con “buen gusto”?
13 meneos
549 clics

La más obsoleta infraestructura que el dinero pudiera comprar [ENG].

Hoy se cumple el décimo aniversario del trabajo más extraño y posiblemente más triste que jamás haya tenido. El año fue 2005. Mi interés en escribir un sistema de gestión de contenido en Java para la empresa que compró nuestra startup, se había ido agotando, mientras que mi verdadera pasión era trabajar en compiladores y otra infraestructura de lenguaje de programación (principalmente SBCL). Un día descubrí un anuncio de trabajo para especialistas en compiladores, algo raro en aquel momento y lugar. Volé a la entrevista de trabajo, pero no hice las preguntas correctas e ignoré un par de señales de advertencia. Oops. Resultó ser una aventura en retrocomputing.
14 meneos
423 clics

Utilidad `wc` programada en D: 712 caracteres y sin saltos condicionales [ENG]

Después de leer el artículo “Superando a C con 80 líneas de Haskell: wc” pensé que podría hacerlo mejor en D. Así que escribí la misma utilidad, `wc`, en el lenguaje de programación D.
13 meneos
483 clics
Diez razones para migrar a MariaDB si todavía usas MySQL [ENG]

Diez razones para migrar a MariaDB si todavía usas MySQL [ENG]

La primera versión de MySQL fue lanzada en 1995 por MySQL AB. Aunque al principio fue lanzada como una base de datos para uso personal, pronto evolucionó a una base de datos empresarial. En 2008, Sun Microsystems compró MySQL y en 2009 Oracle compró Sun Microsystems. Fue debido a la desconfianza con la administración de Oracle sobre MySQL por lo que se creó un fork: MariaDB. Con el paso del tiempo, MariaDB ha reemplazado a MySQL en numerosos ámbitos, siendo estas diez razones las que consideramos más importantes para hacer la migración.
9 meneos
89 clics

Entendiendo el código ensamblador de ARM (Parte 1) [ENG]

ARM es un procesador con arquitectura RISC (Reduced Instruction Set Computer) de 32 bits. Tiene un modelo de memoria “débilmente ordenado” similar a Alpha y a IA64 requiriendo barreras (barriers) específicas para garantizar dicho ordenamiento. Cuenta con 16 registros de propósito general que también son usados para mantener el contador de programa, el puntero a la pila, la dirección de retorno, etc. [2ª y 3ª partes: blogs.msdn.com/b/oldnewthing/archive/2015/08/11/10634261.aspx ]
14 meneos
67 clics
Liberado GNU Hurd 0.7 y GNU Mach 1.6

Liberado GNU Hurd 0.7 y GNU Mach 1.6

Se ha liberado una nueva versión de Hurd, el proyecto creado en 1990 para ser el núcleo de los sistemas GNU, que en aquel momento ya contaba con compilador, editores, shell…y que sería el encargado de reemplazar los tradicionales kernels tipo Unix, por un sistema de microkernel que ofrece las funcionas más básicas de acceso al hardware y la memoria, mientras delega en una especies de servidores las funciones más avanzadas, proporcionando un sistema más modular que los llamados kernel monolíticos.
12 meneos
393 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.
12 meneos
494 clics
osTicket: el mejor sistema de tickets de código abierto

osTicket: el mejor sistema de tickets de código abierto  

He trabajado en par de empresas bastante grandes de mi natal Venezuela, en ambas, el departamento de soporte tenía muchas complicaciones a la hora de gestionar los problemas técnicos de los usuarios, las mismas, se fueron solucionando con el uso de diversas tecnologías, pero sobretodo con la puesta en marcha de un sistema de gestión de tickets. En este caso, y después de analizar varias propuestas (RT, OTRS, GLPI y osTicket), mi opinión es que el mejor es osTicket.
9 meneos
185 clics
La caché es la nueva RAM [ENG]

La caché es la nueva RAM [ENG]  

Una de las (pocos) ventajas de estar en la tecnología desde hace mucho tiempo es que se llega a ver múltiples ciclos de esta de principio a fin. Tienes la oportunidad de ver cómo se propagan los avances. Pero si todo lo que se ha visto es sólo parte de la curva, será difícil extrapolar correctamente. Lo sorprendente no es la rapidez con la que cambian los hechos sino lo lentamente que reacciona la ingeniería como respuesta a estos cambios.
8 meneos
143 clics
Crea tu propio RAMDisk en tu distro Linux

Crea tu propio RAMDisk en tu distro Linux

Como sabes, la velocidad de acceso de una memoria es muy importante. Los cuellos de botella generados antaño entre las memorias magnéticas y los procesadores hicieron que se tuviese que incluir una memoria intermedia más rápida, la RAM. Después, con el avance de los microprocesadores vino la cache, aun más rápida para ofrecer una memoria intermedia entre la RAM y los registros de la CPU. Más recientemente han aparecido los discos duros SSD, que son más rápidos que los HDD magnético-mecánicos al estar basados en memoria flash.

menéame