Sistemas & Desarrollo
2 meneos
8 clics

v7/x86, el último verdadero UNIX, portado a x86 [ENG]

V7/x86 es una adaptación de la séptima edición del sistema operativo UNIX a ordenadores x86 (i386). UNIX V7 fue la última distribución general (alrededor de 1979) procedente del grupo de investigación de Bell Labs, el hogar original de UNIX. La adaptación se realizó principalmente alrededor de 1999 cuando las licencias de código fuente “Ancient UNIX” estuvieron disponibles por primera vez y se revisaron para su lanzamiento. Después hubo algunas mejoras durante 2006-7.
3 meneos
22 clics

Qué ocurre antes de que se inicie el kernel de BSD: primera parte en AMD64 [ENG]

La inicialización del sistema es una de las áreas de nicho que pocas personas analizan. Los detalles exactos varían considerablemente entre diferentes plataformas, firmwares, arquitecturas de CPU y sistemas operativos, lo que dificulta aprenderlos todos. Por lo general, si algo no funciona correctamente durante las primeras etapas del inicio del sistema o si el sistema operativo no se inicia, rara vez tiene algo que ver con el código responsable del inicio. La mayoría de las veces, se debe a otros factores, como el medio de arranque o la configuración del BIOS.
3 meneos
11 clics

Android se traslada al sistema de compilación Bazel

Los desarrolladores de Google que están detrás del desarrollo de Android dieron a conocer que están moviendo el proyecto de código abierto de Android (AOSP) para usar el sistema de compilación Bazel en lugar del actual sistema de compilación Soong, Ninja y Make. La compatibilidad con Bazel ya se ha agregado al repositorio de Android, pero la transición al nuevo sistema de compilación de forma predeterminada se extenderá a través de múltiples versiones de plataforma para que la migración sea lo más fácil y transparente posible.
3 meneos
21 clics

Decoder++: una herramienta para codificar/decodificar datos en varios formatos

Decoder++ de Bytebutcher es una aplicación para pentesters y desarrolladores bastante chula para decodificar o codificar datos en varios formatos. Para instalarla podemos usar Python PIP o directamente desde GitHub. Esta herramienta tiene varios modos de funcionamiento, entre los que se encuentra una interfaz gráfica y una línea de comandos para poder hacer que la salida de esta pueda ser la entrada de otras herramientas, como BurpSuite. Algunos ejemplos de decodificadores son base16, base32, base64, binary, gzip, hex, html, jwt, http64, octal o zlib; también cuenta con hashes como crc32, md5, lm, phpass, sha1, sha256, etc.
3 meneos
10 clics

pyelftools: herramienta escrita en Python para analizar archivos ELF

La herramienta pyelftools es una utilidad escrita usando el lenguaje de programación Python y que se presenta como un gran recurso para poder analizar ejecutables binarios en formato ELF de Linux. Es cierto que existen otras muchas utilidades similares, pero algunas tienen ciertas limitaciones que puedes solventar si usas esta otra. Por ejemplo, es una herramienta universal y altamente especializada en estos formatos para poder explorar todo lo que necesitas de estos formatos. Así que si necesitas estudiar este tipo de ficheros binarios de Linux, con tener instalado Python 3.6 o superior en tu distribución favorita, y el propio paquete pyelftools, podrás hacer verdaderas maravillas…
3 meneos
47 clics

Dentro de los módulos de RAM apilados utilizados en el Apple III [ENG]  

En 1978, un chip de memoria almacenaba solo 16 kilobits de datos. Para hacer un chip de memoria de 32 kilobits, Mostek tuvo la idea de colocar dos chips de 16K en un portador del tamaño de un circuito integrado estándar, creando el primer módulo de memoria, el MK4332 "RAM-pak". Este módulo permitió a los fabricantes de computadoras duplicar la densidad de sus sistemas de memoria, y en 1982 Mostek había vendido más de 3 millones de esos módulos. El Apple III es el sistema más conocido que utilizó dichos módulos de memoria.
4 meneos
28 clics

El arte de (no) pintar píxeles en pantalla [ENG]  

Al ser un compositor y un administrador de composición de ventanas, el aspecto más importante de Mutter y de GNOME Shell es pintar píxeles en sus monitores con contenido relevante. Una gran parte de este contenido lo proporcionan las propias aplicaciones, pero muchos elementos aún deben renderizarse sobre ellas. En los últimos años, el código base de Mutter se ha refactorizado, limpiado, reorganizado y modernizado de forma lenta pero constante. Esto incluye las copias internas de Clutter y Cogl. Con el comienzo del ciclo de desarrollo de GNOME 40, todo convergió en un conjunto de cambios especialmente grande y emocionante de los que hablaremos en este artículo.
4 meneos
45 clics

1001 formas de detectar subdominios  

Un dominio de Internet puede tener varios subdominios con servicios activos, siendo estos utilizados para diferentes fines. Si podemos detectar los subdominios activos, quizá podremos acceder a nuevas zonas de la web que desconocíamos. Conseguir acceso a nuevos paneles de login o descubrir servicios que se están ejecutando en esa máquina. Esto es muy importante a la hora buscar fallos de seguridad en compañías. Un subdominio mal protegido podría ser sin duda un vector de ataque mediante el cual conseguir acceso a una infraestructura, así que hoy vamos a ver diferentes formas y herramientas de detectar subdominios.
3 meneos
48 clics

Ninja: una forma simple de construir software [ENG]

De vez en cuando encuentro un nuevo software que realmente me gusta, y hoy quiero hablar sobre uno de mis descubrimientos recientes favoritos: el sistema de construcción de software Ninja.
2 meneos
34 clics

Arquitectura y funcionamiento de UEFI [ENG]

No quiero repetir los porqués que hay detrás de UEFI porque, francamente, ya no hay muchas opciones: todos los dispositivos nuevos con Windows 10 se envían con UEFI habilitado de forma predeterminada (y si lo estás apagando, la culpa es tuya). En cambio, quiero centrarme mucho más en cómo funciona y lo que sucede entre bastidores.
2 meneos
31 clics

¿Por qué es más rápido ‘mmap’ que las llamadas al sistema? [ENG]  

Cuando pregunto a mis compañeros porqué ‘mmap’ es más rápido que las llamadas al sistema (system calls) la respuesta es inevitablemente “debido a la sobrecarga de las propias llamadas al sistema, es decir, el coste de cambio de contexto entre espacio de usuario y espacio de kernel”. Pero resulta que esta sobrecarga tiene más matices de lo que solía pensar, así que echemos un vistazo bajo el capó para comprender las diferencias de rendimiento.
4 meneos
24 clics

Flatpak, una pesadilla en cuanto a la seguridad (dos años después) [ENG]

Hace dos años escribí sobre Flatpak, el autoproclamado como “el futuro de las aplicaciones en Linux” (muy promocionado por aquel entonces) criticando los tres flujos principales de Flatpak: 1) la mayoría de las aplicaciones tienen acceso completo al sistema, pero los usuarios creen que las aplicaciones están en un espacio aislado; 2) altos tiempos de ejecución y aplicaciones que no reciben actualizaciones de seguridad; 3) Flatpak rompe muchos aspectos de la integración con el escritorio. Veamos cómo se han abordado estos problemas dos años después.
3 meneos
35 clics

Sistemas de archivos que no siguen la semántica POSIX [ENG]

Los sistemas operativos y los sistemas de archivos se han desarrollado tradicionalmente de la mano ya que generalmente se imponen limitaciones mutuas. Hoy tenemos dos líderes importantes en la semántica del sistema de archivos: Windows y POSIX. Están muy cerca uno del otro según el conjunto completo de características, pero sucedieron cosas interesantes antes de que POSIX monopolizara la semántica de los sistemas de archivos.
2 meneos
55 clics

Epigramas en programación [ENG]

1. Lo que para una persona es una constante, para otra es una variable; 2. Las funciones retrasan la unión de datos, la estructuras de datos la aceleran. Moraleja: estructura los datos lo más tarde posible durante el proceso de programación; 3. El azúcar sintáctico es el cáncer del punto y coma (semicolon en inglés); 4. Cada programa es parte de otro programa, y raramente encajan; 5. Si un programa manipula una gran cantidad de datos, este lo hace en un número pequeño de formas; 6. […].
3 meneos
25 clics

Cómo crear una copia de seguridad local de Google Photos [ENG]

Los primeros teléfonos inteligentes se conectaban habitualmente al ordenador para transferir datos, música y fotos. Hoy en día suelen depender de una conexión a Internet para hacer copia de seguridad de fotos y videos en “la nube” con lo que pocas veces se conectan a un ordenador para hacer copias de seguridad. El problema está en que se confía demasiado en “la nube”, por ejemplo en Google Photos, y se olvida tener una copia local de los datos por si algún día deja de existir este servicio. Es aquí donde aparece gphoto-sync, una utilidad de código abierto escrita en Python cuyo fin es hacer una copia de seguridad local de todas las fotos almacenadas en Google Photos.
3 meneos
49 clics

Convirtiendo cien millones de enteros a cadena de caracteres por segundo [ENG]  

Hace casi 7 años escribí un artículo comparando el rendimiento de diferentes métodos para convertir un entero en una cadena de caracteres. Muchas cosas han cambiado desde entonces, así que he decidido escribir otro artículo de seguimiento para ver cuánto se ha avanzado en los últimos años.
3 meneos
25 clics

Ultra Tesla: crear redes distribuidas de servicios, fácil, rápido y seguro  

Ultra Tesla es un proyecto de código abierto para crear redes distribuidas de servicios fácil, rápido y seguro, usando el poder de computo de múltiples ordenadores. El proyecto permite unificar los distintos servidores en una única interfaz que es proporcionada para el mismo usuario creando una sensación de transparencia.
3 meneos
21 clics

Implementando el algoritmo Raft en Go: Introducción [ENG]

Este es el primer artículo de una serie de varios capítulos que describen la implementación completa del algoritmo de consenso distribuido llamado Raft en el lenguaje de programación Go. Raft es un algoritmo relativamente nuevo (2014) pero ya se usa bastante en la industria. El ejemplo más conocido de ello es probablemente Kubernetes, que se apoya en Raft a través de la base de datos distribuida de tipo clave-valor etcd. El objetivo de estos artículos es describir una implementación totalmente funcional y rigurosamente probada de Raft.
3 meneos
40 clics

Un Makefile con gestión automática de dependencias para C/C++

Para realizar un seguimiento de las dependencias de los archivos de código fuente se añaden unas reglas sin receta que permitan comprobar la fecha de modificación de las cabeceras, que recompile el código fuente cuando se haya modificado cualquiera de las mismas mediante las reglas implícitas que sí tienen receta, asegurarnos de que no falle la ejecución de Make ante cualquier cambio [...] y generar sin errores los Makefiles de dependencias a la vez que se evita que GNU Make los borre por ser archivos intermedios.
2 meneos
22 clics

Creación de DLLs maliciosas para hijacking, fácil, sencillo y para toda la familia  

EvilDLL v1.0 de thelinuxchoice es una herramienta bastante útil que nos facilitará la creación de DLLs maliciosas para obtener nuestra shell reversa en caso de que hayamos podido explotar un DLL hijacking. Además tendremos la opción de crear esa shell mediante un reenvío de puertos directo a nuestra máquina o mediante un túnel con ngrok. Probado en Windows 7 (7601) y Windows 10, lo único que necesitaremos es el compilador Mingw-w64 y asignar el auhtoken de ngrok previo registro. Después simplemente clonar el repositorio y ejecutar el script principal de BASH.
2 meneos
20 clics

Significado e historia del registro EAX de la arquitectura x86 [ENG]

Por lo general los tutoriales sobre ensamblador de la arquitectura x86 no pasan mucho tiempo explicando la perspectiva histórica de las decisiones de diseño y denominación. Cuando se está aprendiendo ensamblador de x86 siempre suelen decir lo mismo: aquí está EAX; es un registro; úsalo. Pero entonces, ¿qué significan exactamente las letras de dicho registro: E-A-X? Me temo que no hay una respuesta corta. Para explicarlo vamos a tener que volver a 1972…
2 meneos
31 clics

Las últimas actualizaciones de Windows 10 están ralentizando los PC. Soluciones. [EN]

Las últimas tres actualizaciones acumulativas de Windows 10, en particular las KB4535996, KB4540673 y posiblemente KB4551762 están siendo culpadas por ralentizar el rendimiento de las máquinas con Windows 10. ¿Qué actualización acumulativa opcional no relacionada con la seguridad está causando problemas de rendimiento con Windows 10? ¿Cómo abordar el bajo rendimiento y el arranque lento de Windows 10 si es causado por la última actualización acumulativa?
2 meneos
22 clics

Archivos ZIP: historia, explicación e implementación [ENG]  

He tenido curiosidad acerca de la compresión de datos y el formato de archivo ZIP en particular durante mucho tiempo. En algún momento decidí aprender cómo funciona y escribir mi propio programa de compresión. La implementación se convirtió en un ejercicio de programación emocionante al crear una máquina bien engrasada que desmonta datos, los mezcla en una representación más eficiente, y los junta de nuevo. En este artículo se explica el formato ZIP con gran detalle: compresión LZ77, códigos Huffman y algoritmos de deflate, además de un poco de historia y una implementación razonablemente eficiente escrita en C.
2 meneos
40 clics

Ejecutar aplicaciones Windows de 16 bits en Windows de 64 bits [ENG]

¿Alguna vez has intentado instalar en tu moderno ordenador con Windows 10 una aplicación o un juego y sólo has obtenido diálogos que indican que no se pueden ejecutar para finalmente darte cuenta de que estás tratando de ejecutar una aplicación de 16 bits en un Windows 10 de 64 bits? Juro por Dios esto me pasa todo el tiempo. Afortunadamente hay una solución para este problema. De hecho, hay varias soluciones para este problema.
3 meneos
13 clics

Miranda lanzado como software libre [ENG]

Miranda es un lenguaje de programación funcional puro, no estricto, polimórfico y de orden superior diseñado por David Turner en 1983-6. El lenguaje fue ampliamente utilizado, tanto para la investigación como para la enseñanza, y tuvo una fuerte influencia en el desarrollo posterior del campo, influyendo en particular en el diseño de Haskell, con el que tiene muchas similitudes. Miranda es, sin embargo, un lenguaje más simple.
4 meneos
50 clics

Wiki de bash para hackers [ENG]

Esta wiki está destinada a contener documentación de cualquier tipo sobre GNU Bash. La motivación principal era proporcionar documentación e información legible para los humanos para que los usuarios no se vean obligados a leer cada parte de la página de manual de Bash, lo que puede ser difícil de entender. Sin embargo, los documentos aquí no pretenden ser un tutorial para novatos. Esta wiki y todos los programas que se encuentran aquí son software libre: puedes redistribuirlo y/o modificarlo bajo los términos de la Licencia Pública General de GNU publicada por la Free Software Foundation, ya sea la versión 3 de la Licencia, o cualquier versión posterior.
3 meneos
39 clics

¿Qué hizo que el supercomputador CDC6600 de los años 1960 fuese tan rápido? [ENG]  

Cualquiera que haya tenido una clase de arquitectura de computadores avanzada ha oído hablar del CDC6600, el que fue el ordenador más rápido del mundo desde 1964 hasta 1969. Esta fue la máquina que puso a Seymour Cray en el mapa como arquitecto de supercomputadoras, aunque el arquitecto principal fue James Thornton. Uno de los conceptos de arquitectura de computadores, que luego fue usado en arquitecturas RISC, por el que el CDC6600 es conocido fue la introducción del scoreboard, que, junto al algoritmo de Tomasulo, fueron unos de los primeros conceptos de ejecución de instrucciones fuera de orden.
2 meneos
32 clics

Diseccionando el controlador de Windows Defender: WdFilter (parte 1) [ENG]

WdFilter es el componente principal del núcleo de Windows Defender. Este controlador funciona como un minifiltro del grupo “FSFilter Anti-Virus”, lo que significa que está conectado a la pila del sistema de archivos (en realidad, bastante arriba) y gestiona las operaciones de entrada/salida mediante callbacks. Además este controlador implementa otras técnicas para obtener información de lo que está sucediendo en el sistema. El objetivo de esta serie de publicaciones es comprender de forma sólida cómo funciona este sistema a bajo nivel.
2 meneos
35 clics

¿Cómo funciona realmente HTTPS? [ENG]

HTTPS es simplemente el protocolo HTTP estándar untado con una generosa capa de delicioso cifrado SSL/TLS. A menos que algo vaya muy mal (y puede), SSL impide ver o modificar las peticiones que componen la navegación web. SSL es lo que mantiene las contraseñas, las comunicaciones y los datos de las tarjetas de crédito seguros entre el ordenador y los servidores.
3 meneos
47 clics

Cello, biblioteca para llevar la programación de alto nivel a C [ENG]

Cello es una biblioteca que lleva la programación de alto nivel a C. Actuando como un moderno y potente sistema de ejecución, Cello hace muchas cosas fáciles que antes eran poco prácticas o difíciles de manejar en C, como: estructuras de datos genéricos; funciones polimórficas; interfaces/clases de tipos; constructores/destructores; recolección de basura opcional; excepciones; y reflexión. Además, Cello funciona a la perfección junto al estándar de C obteniendo el resto de beneficios, como un gran rendimiento.
4 meneos
78 clics

Doce errores comunes y oportunidades de optimización perdidas en SQL [ENG]

La mayoría de los lenguajes de programación están diseñadas para desarrolladores profesionales con conocimiento de algoritmos y estructuras de datos. SQL es diferente. SQL lo utilizan analistas, científicos de datos, gerentes de producto, diseñadores y muchos más. Estos profesionales tienen acceso a bases de datos, pero no siempre tienen la intuición y la comprensión para escribir consultas eficientes. En un esfuerzo por hacer que mi equipo escriba mejor SQL, he recompilado fallos comunes y oportunidades de optimización perdidas.
2 meneos
35 clics

Infraestructura automática de documentación con Python, Wordpress y Foreman. [ENG]

No está terminado hasta que esta documentado. Cuando creamos nuestro nuevo entorno de I+D a gran escala con nuestro pequeño equipo DevOps de 2 personas, decidimos que nunca más editaríamos manualmente la documentación del servidor/conmutador/fuera-de-banda. Los humanos somos demasiado propensos a errores, y esos errores importan cuando algo sale mal. Es una tarea que adormece la mente y preferiamos pasar nuestro tiempo construyendo cosas que escribiendo sobre ellas.
4 meneos
42 clics

Análisis comparativo de Linux y Open Source Unix [eng]

Análisis comparativo entre Linux, varias distribuciones BSD e Illumos sobre cuestiones relativas a licencias, abuso corporativo de dichas licencias, rendimiento y características de dichos sistemas operativos. vía soylentnews.org/article.pl?sid=19/11/05/0424205
2 meneos
45 clics

La edición de texto en pantalla te odia [ENG]

Hace más o menos un mes se publicó la entrada de Alexis Beingessner sobre cómo te odia el dibujado de texto en pantalla, entrada que me dio fuerte en el corazón. Allá por 2017 estaba creando un nuevo editor de texto para navegadores. Viendo lo poco satisfactorio que era el API pensé: “reimplementaré la selección de texto yo mismo. ¿Cuán difícil será?”. Era joven e iluso. Pensé que me llevaría dos semanas, pero en realidad ha consumido varios años de mi vida.
3 meneos
87 clics

Ahorrando dinero cambiando de PHP a D [ENG]

2night nació en 2000 como una revista en línea centrada en la vida nocturna y restaurantes en Italia. Con los años, nos hemos convertido en una agencia de marketing experimental en toda regla. Empezamos a usar D en 2night en 2012 cuando desarrollamos un servicio web utilizado por nuestras aplicaciones de Android e iOS. Ha funcionado bien desde entonces, pero fue solo un pequeño experimento. En 2019, después de muchos otros experimentos, decidimos dar el gran paso: cambiamos el sitio web completo de PHP a D.
3 meneos
41 clics

Las cadenas literales generan rangos incorrectos en C++ [ENG]

C++20 vendrá con lo que llamamos la biblioteca de rangos, aunque la interfaz de rangos ha sido compatible desde C++11 en el bucle `for`. El bucle `for` que usa rangos puede detectar cualquier cosa que sea un rango y trabajar con él. En particular, puede funcionar con cadenas literales. El problema en este caso es que las cadenas literales tienen un carácter NULL al final y eso puede llevar a errores ya que hay un elemento que no se ve fácilmente visible en el rango formado por la cadena. Para solucionarlo existen varios métodos.
4 meneos
15 clics

Internet depende de personas que trabajan gratis. [ENG]

¿Quién debería ser el responsable del mantenimiento y la resolución de problemas en proyectos de código abierto? Cuando compra un producto como las luces inteligentes de PhilipsHue o un iPhone, se asume que las personas que escribieron su código están siendo pagadas. Aunque eso es cierto para aquellos que crean directamente el software, prácticamente todas las empresas de tecnología confían también en miles de bits de código gratuito, disponible a a través de proyectos de código abierto en sitios como GitHub/Lab.
3 meneos
22 clics

bic: intérprete de C y explorador de API [ENG]  

bic es un proyecto que permite a los desarrolladores explorar y probar API usando un bucle de lectura, evaluación e impresión (REPL, Read, Eval and Print Loop en inglés) similar al que tiene Python o al propio BASH.
3 meneos
72 clics

Cómo escribí un compilador de C que se compila a sí mismo en 40 días [ENG]

He escrito un compilador de C que se compila a sí mismo al que llamé 8cc. Y lo he escrito en 40 días. Esta entrada es un registro de todos los pasos que he dado para escribir el compilador. El código fuente y su historial están disponibles en GitHub.
3 meneos
36 clics

Construyendo módulos C++, planteamiento N+1 [ING]

Los módulos fueron votados en C++20 hace algún tiempo. Están pensados para sustituir a las sentencias #include para aumentar la velocidad de compilación y también para aislar las unidades de traducción de modo que, por ejemplo, las macros definidas en un archivo no afecten al contenido de otro archivo. Hay tres compiladores diferentes y cada uno de ellos tiene su propio prototipo de implementación disponible (documentación GCC, documentación Clang, documentación VS).
2 meneos
31 clics

Limitar el tamaño de peticiones HTTP con Nginx

Supongamos que tienes montada una web bastante simple sobre un servidor NGINX. Una rollo «próximamente». Estas webs y en general la mayoría no suelen requerir peticiones HTTP más grandes de 1024 bytes. Suelen contener un archivo index.html, algún javascript que puede ir incluso inline e incluso css que puede ir también inline. Este tipo de webs son sencillas y se pueden trabajar más o menos. Se puede trabajar para que sean «responsive» por ejemplo y para que tengan los estilos y el javascript ordenaditos sin mezclarlos con el HTML.
2 meneos
15 clics

¿Necesita Haiku aplicaciones empaquetadas como .app en Mac o .AppImage en Linux? [ENG]

¿Necesita Haiku migrar la funcionalidad de aplicaciones empaquetadas como directorios de aplicaciones (.app en Mac) y/o imágenes de aplicaciones (AppImage en Linux)? Creo que sería interesante y, además, mucho más fácil de implementar en Haiku que en otros sistemas ya que la mayoría de la infraestructura ya está instalada para mantener los paquetes HPKG.
4 meneos
58 clics

Cómo conocer la telemetría de Windows 10 que maneja Microsoft

A partir de la actualización Windows 10 April 2018 Update (y sucesivos), Microsoft finalmente redujo parte del secreto en torno a la recopilación de datos del sistema. Con ello se pueden ver los «datos de diagnóstico» que tu PC está enviando a casa a Microsoft.
3 meneos
64 clics

VPN en Windows 10, misión imposible tras la última actualización

Un error en la última actualización del sistema provoca el mal funcionamiento de las VPN en Windows 10. El fallo de las VPN en Windows 10, se produce cuando los usuarios o administradores configuran un perfil VPN activada permanentemente (Always On VPN). Si configuras una conexión VPN y la usas en modo manual, RASMAN no debe fallar.
2 meneos
45 clics

D como reemplazo de C [ENG]

Mi historia es como muchas historias de programadores de sistemas: usaba C para la mayoría de mis programas, pero un día me di cuenta de que la mayoría de mi código en C reimplementaba cosas de C++: arrays dinámicos, mejores cadenas, clases polimórficas, etc. Así que intenté usar C++; y me gustó en un primer momento. Pero cuanto más aprendía peor se hacía mi código. Asumámoslo: C puede ser difícil de usar, pero tiene una “elegancia” que nunca se ve en C++, por lo que muchos programadores de C++ vuelven a C. Pero en mi caso descubrí D.
3 meneos
51 clics

Rust no es un buen reemplazo para C [ENG]

Tengo un dicho que resume mi opinión sobre Rust en comparación con Go: Go es el resultado de que los programadores de C diseñen un nuevo lenguaje de programación, y Rust es el resultado de que los programadores de C ++ diseñen un nuevo lenguaje de programación. Esto no es solo una metáfora: Go fue diseñado por ex alumnos de plan9, un sistema operativo escrito en C y la fuente de inspiración para muchas de las funciones de Go, y Rust fue diseñado por la gente de Mozilla, cuyo producto estrella tiene una de los más grandes bases de código en C++.
2 meneos
51 clics

Cosas que he aprendido por el camino difícil (en 30 años de desarrollo de software) [ENG]

Estas son algunas de las cosas que he aprendido en 30 años trabajando como desarrollador de software y que, generalmente, he aprendido por el camino difícil.
5 meneos
46 clics

La perlificación de Python

En las posibles novedades para Python 3.8 hay algunas bastante controvertidas que han hecho saltar la voz de alarma. No ha faltado gente que ha opinado que cada vez Python se parece más a Perl. Este proceso habría empezado con Python 3 pero se habría ido haciendo más evidente hasta llegar a hoy. Cada vez con más sintaxis poco utilizada, con más elementos, más cómodo de escribir para el experimentado aunque menos legible si no dominas el lenguaje. Y resulta curioso, porque Python es en parte una respuesta a la excesiva complejidad que podían tener los programas hechos en Perl. Su popularidad se debe a que es fácil de aprender y eso parece que ya no está tan claro.
3 meneos
58 clics

Análisis de archivos ELF en Linux [ENG]

Parte de la verdadera artesanía en el mundo la damos por sentado. Una de esas cosas son las herramientas comunes en Linux, como ps y ls. A pesar de que los comandos pueden ser percibidos como simples, hay más cuando se mira debajo del capó. Aquí es donde entra en juego ELF (Executable and Linkable Format en inglés). Un formato de archivo que se usa mucho, pero que solo unos pocos entienden. ¡Entendamos este formato con este tutorial de introducción!
3 meneos
36 clics

Compila y recorre las instrucciones en ensamblador de un programa con penguinTrace [ENG]

penguinTrace es una herramienta que nos permite escribir código y ver cómo se ejecutan las instrucciones que lo componen. El objetivo es ayudar a las personas a comprender cómo se ejecutan los programas y/o mejorar la comprensión del ensamblador. Al escribir programas en C, es posible hacer que el compilador genere el ensamblado generado o desensamblar un binario para ver las instrucciones. [Vía HackPlayers].

menéame