SISTEMAS & DESARROLLO
209 meneos
3747 clics
Arrancar un 486 desde un disquete con el kernel Linux más reciente y estable hasta a la fecha [ENG]

Arrancar un 486 desde un disquete con el kernel Linux más reciente y estable hasta a la fecha [ENG]  

En agosto de 2019 participé en un concurso cuyo desafío era sincronizar un archivo MIDI con un sintetizador de voz cantando la letra. En el concurso de esta semana la idea era encontrar un ordenador con un 486 como procesador (pizza box form factor) y hacerlo funcionar, así que me puse a buscar uno por Internet. Después de encontrarlo, el reto era iniciar una versión reciente de Linux, cosa que no fue trivial. Finalmente, después de configurar el kernel de forma mínima y generar un pequeño initramfs, conseguí meterlo en un disquete e iniciar el equipo.
112 97 3 K 52
112 97 3 K 52
10 meneos
317 clics
Promedio de carga (load average) de Linux: resolviendo el misterio [ENG]

Promedio de carga (load average) de Linux: resolviendo el misterio [ENG]

El promedio de carga (load average) es una métrica importante en la industria. Mi empresa gasta millones en instancias en la nube basándose en esta y otras medidas, pero en Linux hay algo de misterio en torno a ella. El load average en Linux no sólo mide tareas ejecutables, sino que también mide tareas en el estado de sueño ininterrumpido. ¿Por qué? Nunca he visto una explicación, por lo que en este artículo voy a resolver este misterio además de mostrar algunos valores como referencia para todo el mundo cuando trata de interpretarlos.
41 meneos
418 clics
Construye tú mismo una estación meteorológica. Parte 1 [ENG]

Construye tú mismo una estación meteorológica. Parte 1 [ENG]

En esta serie de publicaciones, cubriremos cómo construir una estación meteorológica IoT alimentada por un tablero web y un bot de Telegram. Primero comenzaremos desde la vista de pájaro y cubriremos la arquitectura de lo que vamos a hacer.
9 meneos
91 clics
El microkernel seL4 ha sido verificado formalmente para procesadores RISC-V [ENG]

El microkernel seL4 ha sido verificado formalmente para procesadores RISC-V [ENG]

El kernel de un sistema operativo es el software que funciona a más bajo nivel en un ordenador. Es el código que funciona en modo privilegiado (S-Mode en RISC-V), por lo que es el responsable principal y único de la seguridad del sistema. Que un kernel, en este caso seL4, esté formalmente verificado significa que su implementación en C es funcionalmente correcta, ya que ha sido matemáticamente verificada mediante software probando que está libre de errores.
9 meneos
428 clics
Peculiaridades de TypeScript: cómo sus inconsistencias hacen que el lenguaje sea más complejo [ENG]

Peculiaridades de TypeScript: cómo sus inconsistencias hacen que el lenguaje sea más complejo [ENG]

TypeScript tiene un gran número de casos especiales y sorpresas en el compilador que dejan a los ingenieros rascándose la cabeza desconcertados. Mientras que estos comportamientos de forma individual no son muy perjudiciales, como un todo pueden hacer que sea más difícil para nuevos ingenieros formar un modelo mental en torno a este lenguaje. Aquí están tres de mis peculiaridades favoritas de TypeScript que hacen que los nuevos ingenieros se frustren continuamente.
136 meneos
1666 clics

Nuevo en PHP 8 [ENG]

Se espera que PHP 8, la nueva versión principal de PHP, se lance a fines de 2020. Está en un desarrollo muy activo en este momento, por lo que es probable que las cosas cambien mucho en los próximos meses. En esta publicación mantendré una lista actualizada de lo que se espera que venga: nuevas características, mejoras de rendimiento y cambios importantes. Debido a que PHP 8 es una nueva versión principal, hay una mayor probabilidad de que su código se rompa. Sin embargo, si se ha mantenido al día con las últimas versiones, la actualización no debería ser demasiado difícil, ya que la mayoría de los cambios importantes ya no se usaban en las versiones 7. *.
73 63 3 K 49
73 63 3 K 49
14 meneos
381 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.
10 meneos
241 clics

Hackeos para operaciones con bits [ENG]

En la página Bit Twiddling Hacks hay una estupenda, antigua y esotérica recopilación de operaciones a nivel de bits para llevar a cabo todo tipo de funciones con valores numéricos de forma conveniente. Quien dice «conveniente» dice «de forma óptima» porque por lo general estas opciones requieren menos pasos y son más rápidas, o evitan ciertas operaciones de los procesadores que pueden añadir ciclos y resultar más lentas. [Vía Microsiervos]
150 meneos
6992 clics
Mitos que los programadores creen acerca de las cachés de las CPU [ENG]

Mitos que los programadores creen acerca de las cachés de las CPU [ENG]

Como ingeniero informático que ha pasado la mitad de una década trabajando con cachés de Intel y el Sun he aprendido un par de cosas acerca de la coherencia de las cachés. Este fue uno de los conceptos más difíciles de aprender en la universidad, pero una vez que se entiende realmente, empiezas a darle una gran valoración a los principios de diseño del sistemas.
74 76 2 K 41
74 76 2 K 41
20 meneos
207 clics
LizardFS, sistema de archivos distribuido, escalable y de código abierto

LizardFS, sistema de archivos distribuido, escalable y de código abierto

LizardFS es un sistema de archivos de clúster distribuido que permite dispersar datos en diferentes servidores, pero proporciona acceso a ellos en forma de una única partición grande, que se realiza por analogía con las particiones de disco tradicionales. La sección montada con LizardFS admite atributos de archivo POSIX, ACL, bloqueos, sockets, canales, archivos de dispositivo, enlaces simbólicos y duros. El sistema no tiene un solo punto de falla, todos los componentes son redundantes.
15 5 0 K 46
15 5 0 K 46
41 meneos
1200 clics
Envío erróneo o controvertido, por favor lee los comentarios.

Los archivos de ordenador como unidad de trabajo se están extinguiendo [ENG]  

Me encantan los archivos. Me encanta cambiarles el nombre, moverlos, ordenarlos, hacer una copia de seguridad, subirlos a Internet, restaurarlos, copiarlos y, oye, incluso desfragmentarlos. Creo que son geniales como metáfora de una forma de almacenar información. Me gusta el archivo como unidad de trabajo. Si necesito escribir un artículo, va en un archivo. Si necesito producir una imagen, está en un archivo. Pero he notado que estamos comenzando a alejarnos del archivo como una unidad fundamental de trabajo.
25 16 10 K 44
25 16 10 K 44
28 meneos
810 clics

Tipografías para programación menos conocidas [ENG]  

En los últimos meses me han interesado, incluso fascinado, las fuentes de programación. Como programadores, miramos texto todo el día: código, registros, salidas de comandos, herramientas de monitoreo, etc. Si vamos a ver texto todo el día, también podríamos hacer que sea fácil y agradable para nuestros ojos leer ese texto.
19 9 0 K 47
19 9 0 K 47
184 meneos
2091 clics
Nuevo inspector de websockets en las herramientas de desarrollo de Firefox [ENG]

Nuevo inspector de websockets en las herramientas de desarrollo de Firefox [ENG]  

El equipo de Firefox DevTools y nuestros colaboradores han trabajado arduamente durante el verano logrando que Firefox 70 estuviera repleto de mejoras. Estamos especialmente entusiasmados con nuestra nueva función de inspección de WebSocket. Para usar el inspector en este momento hay que descargar Firefox Developer Edition y luego abrir el panel Red de DevTools para encontrar la pestaña Mensajes. Pero lo primero es agradecer el trabajo a Heng Yeow Tan, el estudiante de Google Summer of Code (GSoC) responsable de la implementación.
92 92 2 K 41
92 92 2 K 41
222 meneos
3518 clics
El monumental impacto del lenguaje de programación C [ENG]

El monumental impacto del lenguaje de programación C [ENG]

C es un lenguaje tan fundamental que muchos de nosotros olvidamos cuánto ha cambiado. Técnicamente un lenguaje de alto nivel en el sentido de que requiere que un compilador para que el código sea ejecutable, aunque es lo más parecido al lenguaje ensamblador que a la gente le gusta tener en estos días (fuera de entornos especializados de poca memoria). También se considera que es el lenguaje que hizo posible casi todos los lenguajes que vinieron después.
107 115 0 K 61
107 115 0 K 61
16 meneos
605 clics

El dibujado de texto en pantalla te odia [ENG]  

¿Cuán difícil puede ser dibujar texto en pantalla? Pues resulta que es extremadamente difícil. Hasta donde yo sé no hay ningún sistema, literalmente, que dibuje texto en pantalla ‘perfectamente’. Todos los sistemas hacen lo máximo posible, aunque algunos hacen más que otros. El tema aquí es que en realidad no hay respuestas correctamente consistentes y que, además, todo es más importante de lo que se cree y todo afecta a todo.
13 3 0 K 61
13 3 0 K 61
15 meneos
608 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.
18 meneos
283 clics
El nacimiento de la shell BASH [ENG]

El nacimiento de la shell BASH [ENG]

El scripting de shell es una disciplina esencial para cualquier administrador de sistemas, y el shell predominante en el que las personas escriben scripts hoy en día es Bash. Bash viene por defecto en casi todas las distribuciones de Linux y las versiones modernas de MacOS y está programado que sea una aplicación nativa de Windows Terminal. Bash, se podría decir, está en todas partes. Entonces, ¿cómo se llegó a este punto? Todo comenzó con Unix…
58 meneos
1007 clics
Envío erróneo o controvertido, por favor lee los comentarios.

jq, el sed del siglo XXI

sed es una herramienta presente en cualquier sistema UNIX. Se trata de un editor de texto en modo streaming. Aunque sed es una herramienta muy potente, con un lenguaje de programación propio que es Turing completo, la mayor cantidad de usos son sustituir o extraer datos usando expresiones regulares y los comandos s y p. jq es sed para el siglo XXI porque trabaja de forma nativa con JSON, es decir, trabaja con objetos, no con texto plano.
31 27 8 K 26
31 27 8 K 26
11 meneos
292 clics
Anatomía de un teclado mecánico [ENG]

Anatomía de un teclado mecánico [ENG]  

Los teclados normales generalmente se llaman teclados de 'membrana' porque tienen una capa de goma que se encuentra entre la tecla que presiona y el circuito del teclado. Esta capa tiene una cúpula de goma con un contacto metálico que se encuentra debajo de cada tecla. En lugar de goma, los interruptores de los teclados mecánicos están hechos de partes mecánicas móviles. Estos interruptores se sueldan directamente a la placa de circuito en lugar de pasar por encima de dicha placa como el contacto metálico en la cúpula de goma.
65 meneos
2554 clics
Envío erróneo o controvertido, por favor lee los comentarios.

Cosas que (probablemente) no sabías de Python

Python es un lenguaje muy popular hoy en día. Aunque pueda no ser el mejor, su desempeño es bueno, con mucha documentación, librerías, es cómodo y fácil de aprender. Python además sigue la filosofía de baterías incluidas, es decir, de intentar llevar de serie casi todo lo que vayas a poder necesitar. En este artículo vamos a ver algunas partes de Python no tan conocidas pero igualmente interesantes y útiles.
54 11 21 K 31
54 11 21 K 31
12 meneos
385 clics
Guía para evitar ataques DDoS usando IPTables en Linux [ENG]

Guía para evitar ataques DDoS usando IPTables en Linux [ENG]

Hay diferentes formas de crear reglas propias para evitar ataques DDoS usando IPTables. En este artículo se verán varios métodos de protección contra ataques DDoS usando IPTables, entre ellos: seleccionar la mejor tabla y cadena de IPTables para detener los ataques DDoS; modificar las configuraciones del kernel para mitigar los efectos de los ataques DDoS; usar IPTables para bloquear la mayoría de los ataques DDoS basados en TCP; y usar la propiedad SYNPROXY de IPTables para bloquear inundaciones SYN.
20 meneos
310 clics

La E/S es más rápida que la CPU: separemos conceptos y quitemos la mayoría de abstracciones del SO [ENG|PDF 444 Kb]

La E/S es cada vez más rápida en servidores que tienen NIC programables rápidos y memoria principal no volátil funcionando a cerca de la velocidad de DRAM, pero la velocidad de los procesadores monohilo se ha estancado. Las aplicaciones no pueden aprovechar las capacidades del hardware moderno cuando usan interfaces creadas alrededor de abstracciones que asumen que la E/S es lenta. Por lo tanto proponemos una estructura para un sistema operativo llamada parakernel que elimina la mayoría de las abstracciones del sistema operativo proporcionando interfaces que aprovechen el máximo potencial del hardware. El parakernel facilita la paralelización particionando los recursos de forma segura.
16 4 0 K 45
16 4 0 K 45
21 meneos
439 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
18 meneos
199 clics
Comunicación de procesos en Linux III: sockets y señales [ENG]

Comunicación de procesos en Linux III: sockets y señales [ENG]

Este es el tercer y último artículo de la serie sobre comunicación entre procesos (IPC) en Linux. El primer artículo se centró en IPC a través de almacenamiento compartido (archivos y segmentos de memoria) y el segundo hace lo mismo con los canales básicos: tuberías (pipes en inglés; con nombre y sin nombre) y colas de mensajes. Este artículo pasa desde el IPC al alto nivel (sockets) hasta IPC a bajo nivel (señales). Los ejemplos de código dan forma a los detalles.
12 6 0 K 26
12 6 0 K 26
22 meneos
482 clics
Técnicas de detección de máquinas virtuales y contramedidas

Técnicas de detección de máquinas virtuales y contramedidas

Los desarrolladores de malware saben que sus artefactos va a ser analizados por threat hunters, forenses y demás “azulones” que intentarán destriparlos para obtener el detalle de su funcionamiento para contenerlos. También saben que la mayoría serán analizados en sandboxes con máquinas virtuales que proporcionan entornos aislados para que el malware se active para que sus acciones puedan ser interceptadas. Por ello los programas maliciosos detectan que se están ejecutando en una máquina virtual y actúan en consecuencia.
15 7 2 K 45
15 7 2 K 45
« anterior1234510

menéame