Sistemas & Desarrollo
9 meneos
339 clics

Herramientas de línea de comandos más rápidas usando el lenguaje de programación D [ENG]

Esta entrada muestra cómo unas simples construcciones en el lenguaje de programación D pueden hacer que una ya rápida herramienta de línea de comandos se convierta en una especialmente rápida sin perder la simplicidad inherente del programa original. La solución es aplicable a muchos problemas de programación, no sólo a herramientas en línea de comandos. Esta entrada muestra cómo funcionan estas técnicas y por qué son efectivas.
9 meneos
117 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.
5 meneos
172 clics
¿Por qué procesar un array ordenado es más rápido que procesar uno desordenado? [ENG]

¿Por qué procesar un array ordenado es más rápido que procesar uno desordenado? [ENG]  

He aquí un fragmento de código en C++ que parece muy peculiar. Por alguna extraña razón, el procesado de los datos ordenados hace que, milagrosamente, la ejecución del código sea casi seis veces más rápida que con los datos desordenados. ¿Qué está pasando? ¿Por qué procesar un array ordenado es más rápido que procesarlo desordenado?
4 meneos
21 clics

Gtkmm ya usa C++11 [ENG]

Todos los proyectos y librerías de Gtkmm han pasado a usar C++11 de forma predeterminada, no requiriendo ya la opción --std=C++11 en el compilador. Además, se pueden seguir usando las autotools en los proyectos junto con la macro AX_CXX_COMPILE_STDCXX_11() para requerir C++11. Los cambios a realizar en el código gracias a esta versión de C++ son, entre otros: usar auto para variables; bucles con rangos; usar nullptr en lugar de NULL; usar lambdas; etc.
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.
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.
4 meneos
31 clics
Snapcraft: la nueva herramienta de Canonical para crear paquetes de Snappy

Snapcraft: la nueva herramienta de Canonical para crear paquetes de Snappy

Canonical está trabajando duro para sus Snappy Packages, pero necesita algo para construir y enviar este tipo de paquetes de manera sencilla. La aplicación que resuelve estos problemas se llama snapcraft. Snapcraft (no confundir con Snapcraft, el servidor para el famoso Minecraft) es una nueva herramienta creada por Canonical que permitirán a los usuarios empaquetar cualquier aplicación para crear un paquete listo para usar en Snappy.
4 meneos
93 clics

Sift4: superrápido y preciso algoritmo para calcular la distancia entre cadenas de texto [ENG]

Sift4 es la cuarta versión de un nuevo algoritmo de cálculo de distancias entre cadenas de texto (similar al algoritmo Levenstein) pero superrápido, preciso y con complejidad O(n). Actualmente está implementado en Javascript pero la idea es implementarlo en más lenguajes así como publicarlo en plataformas como GitHub.
7 meneos
179 clics
ReactOS, un Windows de código abierto

ReactOS, un Windows de código abierto  

ReactOS es un sistema operativo de código abierto, el cual tiene la principal función de ser una especie de clon de Windows. ReactOS no es un clon de Windows más ni un simple sistema Linux con un tema gráfico similar a Windows, sino que es un sistema que copia la arquitectura de Windows NT con el objetivo de ejecutar drivers, aplicaciones y demás software que hasta ahora solo estaba reservado para Windows.
5 meneos
123 clics
Llega Wireshark 2.0 con nueva interfaz Qt5

Llega Wireshark 2.0 con nueva interfaz Qt5  

Nueva edición de Wireshark el conocido analizador de protocolos de red con licencia libre, –los más veteranos todavía recordaréis cuando se llamaba Ethereal– y multiplataforma, que es un casi un estándar a los hora de analizar el tráfico de red en la mayoría de sistemas operativos. Wireshark 2.0 supone la llegada de una interfaz gráfica: ahora este popular sniffer se rodea de Qt5, con mejoras encaminadas a proporcionar una mejor experiencia de usuario y permitir trabajar más rápido.
6 meneos
174 clics
Rompiendo todos los huevos en C++ [ENG]

Rompiendo todos los huevos en C++ [ENG]

Si quieres hacer una tortilla, como dice el refrán, tienes que romper algunos huevos. Piense en la tortilla que se podría hacer si no se rompen unos pocos huevos sino todos ellos. Luego piense en lo que sería no sólo romper los huevos, sino reemplazarlos por nuevos y mejores huevos. Eso es de lo que trata esta entrada: romper todos los huevos en C++ pero terminando con mejores huevos de lo que se empezó.
5 meneos
97 clics
Cómo lambdas y streams en Java 8 pueden hacer que tu código se ejecute 5 veces más lento [ENG]

Cómo lambdas y streams en Java 8 pueden hacer que tu código se ejecute 5 veces más lento [ENG]

Se ha hablado mucho de la velocidad de los streams en Java 8, pero como muestra Alex Zhitnitsky usando un estilo más tradicional de programación Java empleando iteradores y bucles, estos superan significativamente en rendimiento a las nuevas implementaciones que usan lambdas y streams en Java 8.
12 meneos
114 clics
pagemon: utilidad con interfaz con ‘ncurses’ para monitorizar la memoria de los procesos [ENG]

pagemon: utilidad con interfaz con ‘ncurses’ para monitorizar la memoria de los procesos [ENG]  

Durante el desarrollo de stress-ng quería ser capaz de ver si los diversos factores de estrés de memoria modificaban dicha memoria en la forma en que había anticipado. Buceando en la documentación de Linux descubrí que se podía consultar un bit en la tabla de páginas de memoria (PTE en inglés) para ver si una página había sido escrita o no, así que desarrollé pagemon, una utilidad con ‘ncurses’ para esta actividad en tiempo real.
7 meneos
114 clics
Un servidor avanzado y seguro con Hiawatha

Un servidor avanzado y seguro con Hiawatha

Servidor web o webserver, en inglés, para sistemas tipo UNIX, que prioriza ante todo la seguridad.
10 meneos
151 clics
Let’s Encrypt: Certificados SSL en nginx con renovación automática

Let’s Encrypt: Certificados SSL en nginx con renovación automática

Mediante Let’s Encrypt podemos generar certificados SSL y renovarlos automáticamente. Vamos a ver cómo hacerlo para un nginx.
6 meneos
134 clics
Hacking de hardware con Javascript y Arduino [ENG]

Hacking de hardware con Javascript y Arduino [ENG]

El IoT (Internet of Things) ha permitido que internet se extienda mas alla del navegador. Dispositivos electronicos manufacturados, estas "cosas" son capaces de interactuar con el mundo fisico a traves de sensores que extraen datos capturados de vuelta a sus ecosistemas.
5 meneos
38 clics
Introducción para desarrollar componentes de LLVM en Go [ENG]

Introducción para desarrollar componentes de LLVM en Go [ENG]

LLVM es una infraestructura para crear compiladores. Fue creada por Chris Lattner en 2000 y lanzada en 2003. Desde entonces, ha evolucionado en un proyecto paraguas que alberga multitud de utilidades. La principal característica de LLVM es un IR, es decir, su lenguaje intermedio de representación de código. La idea es que puedas compilar cualquier lenguaje de programación en IR y este en cualquier código máquina o bytecode. En este tutorial veremos cómo empezar a hacer un frontend de LLVM desarrollado en Go.
4 meneos
64 clics
Tutorial: cómo poner seguridad en GitLab Pages con TLS y Let's Encrypt [ENG]

Tutorial: cómo poner seguridad en GitLab Pages con TLS y Let's Encrypt [ENG]

En esta entrada hablaremos de cómo usar HTTPS (con TLS) en GitLab Pages usando un certificado de Let's Encrypt.
6 meneos
65 clics

Programar directamente usando el API de LXD [ENG]

El API REST de LXD puede ser accedido directamente o bien a través de un socket Unix o bien a través de HTTPS. El protocolo es idéntico en ambos casos, la única diferencia es que en el caso del socket Unix se usa texto plano mientras que si se usa HTTPS se requiere autenticación. A continuación se muestran los pasos para el acceso al API y cómo se usa.
4 meneos
201 clics
Por qué abandoné la programación en Julia [ENG]

Por qué abandoné la programación en Julia [ENG]

La primera vez que oí hablar de lenguaje de programación Julia me quedé entusiasmado con sus características: tipado dinámico, buen rendimiento, gestor de paquetes integrado, macro al estilo de Lisp, posibilidad de llamar funciones de Python y C, etc. Sin embargo, cada vez que leo más sobre el lenguaje y, sobre todo, cada vez que experimento más con él, más desencantado me vuelvo.
6 meneos
36 clics
Lanzada la versión 4.2 de GNU Make

Lanzada la versión 4.2 de GNU Make  

GNU Make 4.2 ya está disponible para su descarga y uso. Así lo ha anunciado Paul Smith desde la web del proyecto. Como es lógico, en esta nueva versión lanzada hay novedades y mejoras tras un tiempo de desarrollo a partir de la base dejada por la versión anterior de este software del proyecto GNU. Para los que aun no conozcan GNU Make, se trata de una herramienta con la que construir y controlar ejecutables y otros ficheros como las librerías de programas.
4 meneos
57 clics
Programando para Haiku - File panel - Parte II

Programando para Haiku - File panel - Parte II  

Continuamos los tutoriales de programación en Haiku. Hoy veremos como usar el File Panel. ¿Qué es el File Panel? El File Panel es el diálogo que nos aparece cuando queremos abrir o guardar un archivo o carpeta. En todos los sistemas operativos gráficos es similar.
5 meneos
125 clics

Crear un mirror para un volumen lógico LVM existente

Al crear un mirror LVM se crean copias idénticas de los datos del volumen lógico en los distintos dispositivos que lo componen. La idea inicial es tener protección ante fallos de dispositivos aunque podemos dar otros usos interesantes a esta funcionalidad. Los vemos a continuación.
7 meneos
258 clics

Creando un código QR paso a paso [ENG]

Esta aplicación de demostración en JavaScript visualiza de forma detallada los pasos necesarios para codificar una cadena de texto en un código QR. El contenido de esta página esencialmente explica y justifica cómo esta biblioteca de generación de códigos QR trabaja internamente.
4 meneos
24 clics

La nueva API sd-bus de systemd [ENG]

Con la nueva versión 221 de systemd hemos declarando la API sd-bus de systemd como estable. sd-bus es nuestra biblioteca mínima de D-Bus que envuelve el clásico socket-D-Bus y kdbus. La biblioteca ha sido parte de systemd desde hace tiempo (aunque sólo para uso interno) ya que quería tener la libertad de poder hacer cambios en la API sin afectar al resto de usuarios de esta biblioteca. Sin embargo, ahora estamos seguros de que es un API estable por lo que estará disponible a partir de la versión 221 de systemd.

menéame