Sistemas & Desarrollo

encontrados: 19, tiempo total: 0.618 segundos rss2
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.
3 meneos
23 clics

Cómo eliminar datos permanentemente con ‘shred’

Seguro que más de una vez te ha pasado que borras por accidente algún dato, o pensaste que ya no era necesario y resulta que luego necesitas recuperar esa información y que gracias a algún programa o a algún código logras recuperar; pero, ¿qué sucede si necesitas eliminar datos de manera permanente? Así como existen las herramientas de recuperación también podemos encontrar herramientas de destrucción, como shred.
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.
17 meneos
311 clics
¿Cómo funcionan los sistemas basados en inodos?

¿Cómo funcionan los sistemas basados en inodos?

Después de ver cómo funcionan de forma genérica los sistemas FAT, saltamos a los sistemas de inodos. Estos se han usado tradicionalmente en sistemas UNIX (UFS, ext2), así que tradicionalmente ha existido una cierta rivalidad en las redes entre FAT e inodos similar a la de Windows/Linux. Lo cierto es que a nivel técnico cada uno tiene fortalezas y debilidades.
14 meneos
169 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?
6 meneos
91 clics

Cómo compilar el kernel de Linux, parte 1: teoría… mucha teoría [ENG]

Hoy vamos a empezar una serie de entradas acerca de cómo se compila el kernel de Linux para entender mejor cómo funciona un ordenador. Y empezaremos con teoría… con mucha teoría. En esta entrada veremos, para empezar, las tareas básicas de un kernel. Comencemos…
3 meneos
93 clics
Cómo hacer un indicador de fortaleza de las contraseñas [ENG]

Cómo hacer un indicador de fortaleza de las contraseñas [ENG]

Muchos sitios web importantes como Dropbox, Gmail o eBay, tienen algún tipo de indicador para indicar la fuerza de la contraseña que introduce el usuario durante el registro. Este indicador sirve como buen recordatorio para el usuario para mostrarle el nivel de dificultad para romper su clave. Aunque esta práctica no es nueva, la mayoría usan <div> y <span> para mostrar dicho indicador pero, con la llegada de HTML5, podemos usar la etiqueta <meter> que es semánticamente más precisa.
8 meneos
225 clics
Cómo tener éxito en tu próxima entrevista de trabajo para desarrolladores

Cómo tener éxito en tu próxima entrevista de trabajo para desarrolladores

Seguramente estás un poco harto de tu empleo actual. Tienes un salario absurdo, tu jefe no valora lo que haces, a tu empresa sólo le importa vender y la parte de desarrollo es una carga y, en definitiva, cuando llega el domingo por la noche te acecha la gran depresión. Por tanto, te quedan dos opciones: o te acabas uniendo al clan de los vendedores, o te quedarás comiendo marrones y con un sueldo ridículo el resto de tu vida. En realidad hay una tercera: escapar. Por eso, necesitas un plan de acción sólido para tus próximas entrevistas.
7 meneos
190 clics

¿Cómo funciona la llamada al sistema ‘open’ en Linux? [ENG]

Como supongo que sabrás, nuestros programas interaccionan con el kernel mediante un mecanismo especial conocido como llamadas al sistema (system calls o syscalls). Si has escrito al menos un programa en C, sabrás que antes de hacer cualquier lectura y/o escritura a un archivo es necesario abrirlo. Para ello se utiliza la función ‘open’. En este caso es una función de la librería estándar (libc) y es ella la que se encarga de realizar la llamada al sistema por nosotros.
1 meneos
69 clics

Cómo el motor Unreal dibuja un fotograma [ENG]  

Desde que se tiene acceso al código fuente de Unreal Engine, es posible estudiar cómo este motor gráfico dibuja (render) un fotograma (frame). Aunque las rutas de dibujado son una bestia, es sencillo seguir las llamadas al API de bajo nivel. Para este estudio se ha utilizado una escena simple con varias propiedades, tanto estáticas como dinámicas. Entre ellas están la luz, niebla volumétrica, objetos transparentes y efectos de partículas para cubrir gran variedad de materiales y métodos de dibujado.
11 meneos
170 clics
Cómo plantarle cara al ‘legacy code’

Cómo plantarle cara al ‘legacy code’

Aunque podemos tener una discusión profunda sobre lo que es y lo que no es legacy code, hay un aspecto concreto que para mí puede marcar la diferencia, y es la confiabilidad con la que somos capaces de realizar cambios sobre el producto a medida que estos son requeridos por negocio. Si en una base de código en la que ciertas tarjetas de nuestro Kanban se eluden sistemáticamente por parte de los desarrolladores, se tiene un claro síntoma de que hay una gran porción del sistema sobre la que nadie quiere asumir el riesgo de su modificación.
3 meneos
23 clics

Cómo escribir una página del manual (man page) de Unix [ENG]

Las páginas del manual (man pages) son comunes en sistemas UNIX y similares para proporcionar documentación en línea para comandos de usuario, bibliotecas, API, formatos de archivo y demás. Tan común, de hecho, que uno podría pensar que hay una herramienta mágica que los autores utilizan para escribirlos. Bueno, hay y no hay. Si consideras que vi o emacs son mágicos, o las herramientas de formato de texto nroff y troff, entonces ciertamente estarías en lo correcto. En este artículo de muestra cómo se crean dichas páginas del manual.
252 meneos
5976 clics
Cómo funciona Git (parte 1)

Cómo funciona Git (parte 1)

Git es una herramienta de control de versiones distribuida, pero en última instancia no es más que un gestor de contenido, y en este post entenderéis por qué. El núcleo de Git no es ni más ni menos que un mapa clave-valor de toda la vida, donde las claves son valores hash generados mediante el algoritmo SHA1, y los valores pueden ser varias cosas. En este post nos centraremos en los diferentes tipos de valor que Git puede almacenar.
124 128 5 K 52
124 128 5 K 52
20 meneos
382 clics
Cómo funciona Git (parte 2)

Cómo funciona Git (parte 2)

En el primer post de esta serie comenzamos a destripar el funcionamiento interno de Git, revisando los diferentes tipos de datos que Git soporta internamente dejando nuestro repositorio de ejemplo con un solo archivo llamado hello.txt en el directorio base conteniendo dicho archivo el texto “Hello World”. Tras hacer nuestro primer commit y añadir un tag, nos quedó la siguiente estructura interna.
18 2 0 K 30
18 2 0 K 30
2 meneos
24 clics

Cómo funciona el sistema de archivos de Windows 95 [ENG]

Este libro, publicado en 1997, muestra el funcionamiento interno del sistema de archivos de Windows 95, incluyendo VFAT (el sistema de archivos FAT virtual), VREDIR (cliente de Microsoft Networks) y NWREDIR (cliente de Microsoft Netware). Además se anticipan algunos de los cambios que aparecerían en el sucesor de Windows 95 (con nombre en clave Memphis), como FAT32, volúmenes de hasta 2 terabytes y WDM. [ Enlace directo al libro: Inside the Windows 95 File System PDF 16,8 MB ]
7 meneos
158 clics

Cómo guardar una contraseña de forma segura en 2016 [ENG]

El problema: se necesita que la gente se pueda crear una cuenta con una contraseña para acceder a determinada aplicación. ¿Cuál es la forma más segura de implementar esta característica? La solución sencilla: usar libsodium, una biblioteca que proporciona algoritmos de cifrado de contraseñas para la mayoría de lenguajes. Además, a partir de la versión 1.0.9, libsodium ofrece el algoritmo Argon2, el último ganador de la Password Hashing Competition.
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.
2 meneos
44 clics

Compiladores e intérpretes de ‘bytecode’ [ENG]

Aquí hay una entrada de blog sobre cómo escribir un pequeño compilador e intérprete de ‘bytecode’ en pequeños fragmentos, comenzando con las opciones más simples y aumentando el resto de la pila cuando necesitemos otros componentes.
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.

menéame