Sistemas & Desarrollo
13 meneos
557 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
173 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?
10 meneos
168 clics
La guía definitiva sobre las llamadas al sistema de Linux [ENG]

La guía definitiva sobre las llamadas al sistema de Linux [ENG]  

Esta entrada explica cómo funcionan las llamadas al sistema (system calls) del kernel Linux. Además, también explica diferentes métodos de creación de llamadas al sistema, cómo hacer llamadas al sistema de forma manual, los puntos de entrada y de salida de las llamadas al sistema en el kernel, las funciones relacionadas en glibc, errores y mucho, mucho más.
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.
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.
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.
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
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.
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
173 clics
Windows Sysinternals: navaja suiza para administrar sistemas Microsoft

Windows Sysinternals: navaja suiza para administrar sistemas Microsoft

Windows Sysinternals es un paquete de utilidades que simplifica realizar determinadas tareas de administración de una PC. Se encuentra dividido en grupos que permiten trabajar sobre el disco, la red, los procesos, seguridad y otras tantas cosas más. Es importante destacar que este conjunto de programas es para usuarios con conocimientos avanzados. Esta suite fue creada por Mark Russinovich y Bryce Cogswell y luego Microsoft la compró, ahora ocupa lugar entre los programas de mantenimiento que ofrece la empresa.
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.
9 meneos
160 clics
Tipografías gratuitas pero con personalidad [ENG]

Tipografías gratuitas pero con personalidad [ENG]  

La tipografía usada en un diseño puede marcar la diferencia. Sin embargo, si tu proyecto tiene que llevarse bien con un presupuesto limitado y tienes que usar tipografías gratuitas, las buenas nunca son fáciles de encontrar. Por suerte, nosotros nos hemos topado con unas cuantas joyas. La siguiente lista de tipografías puede ser descargada de forma gratuita y usada en tu proyecto (ya sea privado o comercial) para darle un toque de distinción.
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.
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?
9 meneos
211 clics
Conquista la terminal con “El arte de la linea de comandos”

Conquista la terminal con “El arte de la linea de comandos”  

The art of command line es un proyecto colaborativo disponible en GitHub que nos ofrece una guía para dominar los comandos más útiles que nos podemos encontrar en sistemas GNU/Linux, Unix y Mac OS X. Existen varios libros que tratan profundamente este tema, en el caso de The art of command line lo que ofrece es un punto de partida para los se inician en Linux y la opción de descubrir algún que otro truco sobre el lenguaje Bash –la guía esta enfocada claramente hacia ese interprete– por parte de los más usuarios más experimentados.

menéame