Sistemas & Desarrollo
7 meneos
88 clics

Introducción a Brotli, un nuevo algoritmo de compresión para Internet [ENG]

En Google creemos que el tiempo de los que los usuarios de Internet es útil y que no deberían tener que esperar mucho tiempo para que una página web cargue. Porque rápido es mejor que lento, hace dos años publicamos el algoritmo de compresión Zopfli. Este recibió una respuesta positiva en la industria que se ha integrado en muchas soluciones de compresión. Sobre este algoritmo y otras necesidades de compresión modernas, hoy estamos muy contentos de anunciar que hemos desarrollado y abierto un nuevo algoritmo de compresión para la web: Brotli.
6 meneos
55 clics
Un desarrollador va a poner el foco en la mejora del soporte de hardware en GNU Hurd [ENG]

Un desarrollador va a poner el foco en la mejora del soporte de hardware en GNU Hurd [ENG]

Como se ha explicado recientemente en el artículo “El estado actual de Debian GNU Hurd”, el soporte de hardware por GNU Hurd es bastante pobre en este momento: no tiene soporte para USB, el soporte de sonido está en sus primeras etapas y el desarrollo de 64 bits solo está en sus inicios. Sin embargo, un desarrollador tiene la esperanza de trabajar en la mejora de este soporte de hardware para Hurd.
6 meneos
212 clics
smallpt: iluminación global en 99 líneas de código C++ [ENG]

smallpt: iluminación global en 99 líneas de código C++ [ENG]  

smallpt es un procesador de iluminación global. Está escrito en 99 líneas de C++, es de código abierto y crea la escena mostrada en la imagen utilizando el algoritmo Monte Carlo de trazado de trayectorias.
6 meneos
104 clics

Ocho trucos de GNU/GDB que deberías conocer [ENG]

A pesar de su edad, GDB sigue siendo una herramienta increíblemente versátil y flexible, y dominarla le puede ahorrar enormes cantidades de tiempo al tratar de depurar errores en el código. En esta entrada se compartirán 10 consejos y trucos para usar GDB para depurar de manera más eficiente.
7 meneos
56 clics

Portando Linux a una nueva arquitectura, parte 2: el código inicial [ENG]

En la primera parte de esta serie (www.meneame.net/m/SysDevs/portando-linux-nueva-arquitectura-parte-1-ba ) hemos sentado las bases para portar Linux a una nueva arquitectura de procesador explicando los pasos preliminares (sin llegar a escribir ningún código fuente). Este artículo continúa desde allí profundizando en el código de arranque, lo que incluye desde el código necesario para arrancar Linux hasta la creación del primer hilo del kernel.
8 meneos
72 clics

Portando Linux a una nueva arquitectura, parte 1: lo básico [ENG]

Aunque un port simple puede contar con tan sólo 4000 líneas de código —exactamente 3775 son las del procesador Hitachi 8/300 (sin MMU) recientemente introducidas en Linux 4.2-rc1—, conseguir que el kernel de Linux se ejecute en una nueva arquitectura de procesador es un proceso difícil. Peor aún, no hay mucha documentación disponible que describa dicho proceso de portabilidad. El objetivo de esta serie de artículos es proporcionar una visión general del procedimiento de portar el kernel de Linux a una nueva arquitectura de procesador.
8 meneos
55 clics
Publicada VirtualBox 5.0.4

Publicada VirtualBox 5.0.4

Hace poco se publicó la versión 5 de VirtualBox, la cual fue una versión muy esperada y que sin duda no ha defraudado desde que salió a la calle. Pero como todos los programas importantes se tiene que seguir actualizando y, por esta razón, el equipo de Oracle ha sacado la versión 5.0.4 de VirtualBox que incluye la siguientes novedades: soporte para el kernel 4.2; solucionado error en la comprobación de versiones de Linux; corregidos problemas de resolución de pantalla; añadidas más resoluciones; otros problemas menores.
4 meneos
105 clics
Grandes procesadores MIPS de los últimos 30 años [ENG]

Grandes procesadores MIPS de los últimos 30 años [ENG]  

Hace unos 30 años, un equipo de jóvenes ingenieros de Silicon Valley de la Universidad de Stanford, Motorola, IBM y otras empresas de semiconductores introdujo al mundo de la computación a MIPS, una nueva arquitectura de CPU en torno a un concepto innovador: mejorar el rendimiento del sistema mediante la ejecución rápida instrucciones simples. Originalmente la abreviatura de Microcomputer without Interlocked Pipeline Stages, las CPU MIPS fueron diseñados para las estaciones de trabajo con UNIX.
9 meneos
74 clics

TSWS, un servidor web básico escrito con BASH y Netcat [ENG]

TSWS es una prueba de concepto de un servidor web básico escrito usando solamente BASH y Netcat.
3 meneos
76 clics
El misterio de la instrucción de interrupción (breakpoint) que duraba 15 milisegundos [ENG]

El misterio de la instrucción de interrupción (breakpoint) que duraba 15 milisegundos [ENG]

¿Cuánto tiempo dura una instrucción de interrupción —breakpoint—? Los puntos de interrupción se utilizan dentro de un depurador para detener la ejecución del programa cuando se alcanza una función o línea de código. A veces, los puntos de interrupción se implementan en la CPU (punto de interrupción por hardware) pero hay un límite en su número dependiendo de cada CPU que suele ser bastante pequeño, por lo que por lo general se suelen implementar por software insertando instrucciones específicas en el código compilado.
6 meneos
70 clics

Cómo prevenir una bomba ‘fork’ limitando los procesos de usuario [ENG]

Limitar los procesos de usuario es importante para el funcionamiento estable de un sistema operativo como Linux. Para limitar dichos procesos de usuario sólo se tiene que poner la configuración correcta en el archivo /etc/security/limits.conf. Pero comencemos por entender cómo está estructurado este archivo y cuáles son sus opciones principales.
6 meneos
74 clics
Cómo obtener información del consumo de memoria y CPU de los contenedores de Linux (LXC) [ENG]

Cómo obtener información del consumo de memoria y CPU de los contenedores de Linux (LXC) [ENG]

Para mostrar información acerca de los contenedores de Linux (LXC) se usa el comando lxc-info. Mediante este comando se puede obtener información como: uso de CPU en segundos; uso de I/O; uso de memoria; uso de memoria del kernel; uso de ancho de banda de red. A continuación se muestran ejemplos y casos de uso.
5 meneos
110 clics
Tesoros escondidos en la librería estándar de D [ENG]

Tesoros escondidos en la librería estándar de D [ENG]

Después del éxito del artículo anterior (nomad.so/2014/08/hidden-treasure-in-the-d-standard-library/ ), he decidido escribir otro artículo mostrando lo sorprendentemente útil que es la librería estándar de D. Estas librerías son una gran bestia escritas por programadores excepcionales, por lo que de vez en cuando encontrarás pepitas de código realmente útiles y bien diseñadas. En este artículo se mostrarán algunos ejemplos de estos tesoros de la librería estándar de D.
6 meneos
48 clics

DMD, el compilador de referencia de D, ya está totalmente escrito en D [ENG]

DMD, el compilador de referencia del lenguaje de programación D, estaba escrito en C++ desde sus inicios. Pero una vez que el lenguaje se ha ido estabilizando, este compilador ha sido totalmente reescrito en el propio lenguaje, algo que se conoce como self-hosted compiler. [Enlace directo al pull request de GitHub: github.com/D-Programming-Language/dmd/pull/4923 ]
8 meneos
187 clics
Consejos para escribir buen código en C++ [ENG]

Consejos para escribir buen código en C++ [ENG]

El equipo de PVS-Studio ha verificado más de 200 proyectos de código abierto escritos en C y C++ y ha creado esta página web para compartir los errores más comunes que han encontrado, su explicación y la forma de resolverlos, además de ofrecer consejos para escribir buen código fuente.
7 meneos
98 clics

Go, D, Erlang y C en la vida real: implementación del protocolo MQTT [ENG]

En el trabajo he estado trabajando con el protocolo MQTT (MQ Telemetry Transport), el cual usa un modelo publicación/subscripción. Empecé con una implementación de código abierto llamada Mosquitto pero luego un amigo me dijo que él había hecho una implementación en Go y presumía de que era muy rápida. Como no soy muy fan de Go pero sí lo soy de D, decidí hacer una implementación en D que pasase los tests de la implementación en Go. Y estos son los resultados.
8 meneos
132 clics

Tutorial para diseñar una CPU básica [ENG]

Siguiendo este tutorial podrás diseñar una CPU básica para la que podrás escribir su propio ensamblador. Luego podrás ir a presumir delante de tus amigos de lo bueno que eres.
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.
10 meneos
31 clics
Detrás de Plasma Mobile, entrevista a Aleix Pol

Detrás de Plasma Mobile, entrevista a Aleix Pol  

Me complace compartir con todos vosotros uno de los momentos más inesperados y especiales de mi pasada Akademy 2015 de A Coruña, una entrevista con uno de los creadores de Plasma Mobile y presidente de KDE España, Aleix Pol, responsable entre otros desarrolladores de su nacimiento.
4 meneos
57 clics

Windows ha empezado a recoger la basura de ‘TerminateThread’, pero todavía queda basura [ENG]

Todavía hay gente que piensa que hay escenarios válidos para llamar a TerminateThread. Hay interés porque tenemos una clase llamada ThreadClass desde la que llamamos al método Start(), luego al método Stop() y finalmente al método WaitUntilStopped(). El proceso se para con cierta pila de llamadas pero, ¿qué está realmente ocurriendo? Desde el punto de vista de la pila, el hilo está parando y el loader está en una sección crítica, pero en realidad no sabemos si el hilo termina de forma correcta.
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 ]
6 meneos
81 clics
Construyamos un intérprete simple de un lenguaje de programación (Parte 2) [ENG]

Construyamos un intérprete simple de un lenguaje de programación (Parte 2) [ENG]

La lección aprendida del libro “The 5 Elements of Effective Thinking”, donde un virtuoso de la trompeta da una clase donde pide que se toquen notas complejas —sus alumnos lo hacen bien— y luego notas simples —donde sus alumnos no lo hacen tan bien—, aplicada al software es que para llegar a ser un profesional no sólo hay que conocer las herramientas más complejas, sino también los principios más simples que hacen funcionar dichas herramientas. Ahora, sigamos con el desarrollo de nuestro intérprete. [1ª parte: menea.me/1gqb8 ]
6 meneos
100 clics
Construyamos un intérprete simple de un lenguaje de programación (Parte 1) [ENG]

Construyamos un intérprete simple de un lenguaje de programación (Parte 1) [ENG]

Realmente no importa si eres novato o desarrollador de software con experiencia: si no sabes cómo funcionan los compiladores e intérpretes, no sabes cómo funcionan los ordenadores. Es así de simple. Así que, ¿sabes cómo los compiladores e intérpretes funcionan? Quiero decir, ¿estás 100 % seguro de que sabes cómo lo hacen? Pero no te preocupes. Si sigues esta serie y construyes un intérprete y un compilador conmigo, aprenderás cómo funcionan. Al menos eso espero.
9 meneos
164 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.
7 meneos
98 clics
Introducción visual al aprendizaje automático [ENG]

Introducción visual al aprendizaje automático [ENG]  

En el aprendizaje automático los ordenadores aplican técnicas de aprendizaje estadístico para identificar automáticamente patrones en los datos. Estas técnicas se pueden utilizar para hacer predicciones altamente precisas. En esta entrada se hace una introducción visual al aprendizaje automático usando como ejemplo un conjunto de datos sobre las casas de Nueva York y las de San Francisco.

menéame