Artículos técnicos sobre el desarrollo de software y hardware: algoritmos, programación de dispositivos, gestión de equipos, diseño de APIs, diseño de procesadores, gestión de proyectos, avances en software libre, nuevos proyectos, tutoriales, documentación de funcionalidades… y administración de sistemas: servidores, planificación de servicios, estrategias de despliegue, infraestructura de redes, dimensionado de recursos, gestión de bases de datos… En definitiva, todo lo que no cabe en |tecnología por ser demasiado… técnico.
Borré mi instalación de Windows 10 hoy. No fue por la intromisión de la telemetría o los anuncios en el menú de inicio, sino por la composición del escritorio. Agrega una latencia leve pero notable que hace que escribir me resulte incómodo. En Windows 7 al menos puedes apagarlo. En la siguiente figura se puede ver que la latencia mínima que puede alcanzar en Windows 10 es de aproximadamente 8 milisegundos, mientras que en Windows 7 las cosas son algo más rápidas.
Empezando en 2006, Intel añadió una cabecera extra al microcódigo de sus procesadores que, hasta hoy, está no documentada. Esta página está destinada a aquellos que quieren entender cómo estas cabeceras están estructuradas. Gracias a la base de datos de MCE (MC Extractor, Microcode Extraction Tool), ahora ya sabemos el propósito de casi todas las cabeceras extra. Esta información deriva de las observaciones de los 990 microcódigos que incorporan estas cabeceras desde marzo de 2006 hasta noviembre de 2017.
cli.fyi es una herramienta de consulta de línea de comando para buscar información sobre direcciones IP, correos electrónicos, dominios, criptomonedas, medios, fechas, países, lenguajes de programación, etc. Lo mejor de ella es que solo tendremos que tener curl en nuestro sistema y una conexión a Internet para poder hacer uso de esta herramienta, aunque también es posible obtener la información proporcionada a través de un navegador web.
Hoy abordaremos un nuevo algoritmo, aprenderemos a implementar una Lista Enlazada, una estructura de datos bien importante y de las más usadas. Pudiéramos clasificarla como clásica ya que forma parte de esas estructuras de datos que todo programador debe conocer, de hecho, con esta podemos implementar otras estructuras de datos...
Tanto entre mis alumnos, como en las conversaciones con otros compañeros del sector, percibo siempre la duda de la necesidad o conveniencia de migrar al Cloud. Y, ciertamente, no es algo sencillo de explicar. Muchas veces se generan intensos debates sobre si es una moda, una técnica comercial de las multinacionales para “sacarnos los cuartos” o un camino irresistible al que mejor no presentar una excesiva resistencia...
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.
El consenso es uno de los problemas fundamentales a la hora de programar sistemas distribuidos. Queremos que los clientes perciban el sistema como una unidad coherente, pero no queremos que haya un sólo punto de fallo, con lo que se necesitan varias máquinas colaborando de un modo en que se pongan de acuerdo en el estado del mundo, aunque fallen cosas. Raft es un algoritmo de consenso creado con para ser entendible. Es una respuesta directa a Paxos, que resuelve el mismo tipo de problemas pero que es un algoritmo bastante complicado.
No, no nos hemos vuelto locos, en Edyo seguimos hablando de tecnología. Sabemos también que últimamente no publicamos más que podcasts; a pesar de ello, mantenemos el blog para cosas que se cuentan mejor escritas que narradas. Hoy os traemos un análisis técnico que no puede ser más de actualidad: la web de consulta del censo para el referendum del 1-O. Os prometo que vale la pena.
Microsoft expuso a sus usuarios a muchos riesgos cuando lanzó Windows Defender sin ejecutarse en una sandbox, algo que me sorprendió. Sandboxing es una de las más efectivas formas de tener seguridad en las aplicaciones. ¿Por qué Microsoft usa sandboxes en aplicaciones como Edge pero por qué deja Windows Defender desprotegido?
Construir un libro electrónico en ePub usando Pandoc es muy sencillo. Pandoc se llama a sí mismo el conversor universal de documentos. Y tiene sentido. En este tutorial vamos a convertir documentos escritos en Markdown a formato ePub, aunque si usas Pandoc se puede convertir a muchos otros formatos.
mkosi (make operating system image) es una herramienta para generar imágenes de sistemas operativos que pueden ser arrancadas (booted). Hay más herramientas de este tipo, pero mkosi tiene una serie de características que pueden ser interesantes para ciertos casos de uso que no están cubiertos por el resto de herramientas de este tipo.
casync se inspira en rsync, la popular herramienta de sincronización de archivos, y en git, el probablemente todavía más popular sistema de control de versiones, para combinar la sincronización de rsync y la forma de acceso al contenido de git creando un sistema para almacenar y enviar de forma eficiente imágenes de sistemas de archivos con optimización para ciclos de actualizaciones de alta frecuencia a través de Internet.
Descripción de cómo funciona la palabra reservada ‘new’ en Javascript junto a la función de construcción de objetos y a la palabra reservada ‘class’, seguido de un ejemplo de reimplementación de la palabra reservada ‘new’ en Javascript.
Google lleva tiempo, desde agosto de 2016, trabajando en Fuchsia, un nuevo sistema operativo para sustituir ChromeOS y parece que también Android. El sistema tiene un nuevo interfaz de usuario llamado 'armadillo'. Y no solo funcionará para Fuchsia, sino se podrá añadir como una capa sobre Android e IOS. Además, es un sistema RTOS, un sistema operativo en tiempo en tiempo real. Tiene un entorno de desarrollo llamado "Flutter", aun en alpha, capaz de generar programas para Fuchsia, Android y IOS.
In troth, the Fortran programming language is well suited for those persons who are scientific and who engineer. Named so for the phrase “Formula Translation,” it is a language exquisite for programming machines. Avail thyself of this guide to establish Fortran within your machine and maketh a well-appointed program out of it.
Muchos de los algoritmos con los que trabajamos han sido lentos y parecen ineficientes. Sin embargo, estos tienden a llegar a muchos estudiantes porque suelen ser una buena aproximación teórica para el aprendizaje. Con los algoritmos de ordenador no es diferente, por lo que hoy vamos a echar un vistazo al algoritmo de ordenación “insertion sort”. Lo interesante del mismo es que, aunque no es el más eficiente, siempre se enseña en los libros de texto y otras lecturas.
¡Qué tal! Ya estoy aquí con la segunda entrada de esta serie, que me da a mi que va a ser larga ;D Bueno, como prometí en la entrada anterior, vamos a ver el ejemplo que os dejé, vamos a ver las partes importantes de sockets raw y añadiremos o modificaremos el código para conseguir un ejemplo más versátil. Al lector: si incurro en cualquier error a lo largo de estas entradas, agradecería vuestras correcciones. Como primer ejercicio quiero que le echéis un vistazo más a fondo al código que está debajo de este párrafo y leáis los […].
Hay varias formas que podemos utilizar para conectar dispositivos IoT (Internet of Things) a una red. Previamente se ha comentado cómo conectar una placa de desarrollo NodeMCU a una red Wifi; conectar dispositivos IoT a una red con protocolos en toda regla como puede ser HTTP puede ser un poquito duro. Por eso, una solución popular, sencilla y ligera puede ser usar el protocolo MQTT.
Wine permite ejecutar programas de Windows en un entorno Linux. Cuando se instala Wine, este añade muchos paquetes, incluyendo paquetes para arquitecturas de 32 bits, lo que se puede considerar como algo desordenado. ¿Habría alguna forma de instalar todos estos paquetes en un contenedor para para que quede todo más limpio? Gracias a los contenedores LXD, podemos hacerlo.
QNX es un sistema operativo embebido para automoción, sistemas embebidos en general y mercados médicos. Sin embargo, QNX no es un sistema embebido típico, sino que es un sistema operativo de tipo UNIX y totalmente compatible con POSIX con todas las características esperables de cualquiera sistema operativo de escritorio o de servidor. Esto significa que portar aplicaciones libres debería ser una tarea relativamente sencilla. Con esto en mente, me puse a desarrollar un entorno de escritorio completo para Blackberry QNX 7.
Si hablas bien, a la gente le encantará escucharte. La comunicación es un arte que puede enamorar a quien te escuche o puede hacer que te lluevan críticas. Esto pasa de forma similar en el mundo de la programación. Como dice Donald Knuth, “programar es el arte de decirle a otro ser humano lo que uno quiere que hagan los ordenadores”. Si escribes código horrible, no serás capaz de decirle a otra persona qué es lo que has escrito ni lo que quieres que haga el ordenador.
Cdecl (pronunciado en inglés como see-deh-kull) es una herramienta para componer y descifrar declaraciones en C y C++., también conocido en inglés como “gibberish”. En general esta herramienta no se necesita demasiado, pero es muy útil en ciertas ocasiones. Puede ser usada de forma interactiva o puede aceptar entrada de otros programas. Como ejemplo de funcionamiento podríamos indicarle la entrada “explain int *const (*p)[4]” y su salida sería “declare p as pointer to array 4 of const pointer to int”.
Los comentarios en el código fuente no son algo adicional al los proyectos, son parte de dichos proyectos. En esta entrada se muestran una serie de consejos para mejorar dichos comentarios.
En este pequeño documento se describe el estilo de código preferido para desarrollar el kernel Linux. El estilo de código es muy personal y no se va a forzar ningún estilo en este documento, pero escribir siguiendo determinada forma hace que el código sea mucho más mantenible. Pero, antes de nada, sugiero descargar e imprimir una copia del estilo de código GNU para NO leerla nunca. Quémala. Es un gran gesto simbólico. Y a continuación, las normas del estilo de codificación del kernel Linux.
Después de haber programado en una amplia variedad de lenguajes de programación, puedo decir que C++ es el lenguaje que más me impresiona. Este texto trata acerca de uno de mis ejemplos favoritos sobre la usabilidad de la metaprogramación con plantillas. El problema: imagina que eres el desarrollador de una aplicación de servidor que puede ser personalizada por scripts de usuario. Después de elegir el lenguaje de script, hay que exponer una serie de funciones para que dicho script pueda trabajar con tu aplicación y permitir a los usuarios […].
En un sector donde la presencia de las mujeres es menor al 20% puede parecer sobredimensionado hacer un evento paritario y sin duda lo es. Lo es porque el objetivo que queríamos conseguir es crear un espacio inclusivo con ellas donde se encuentren a gusto y para eso, aplicar el porcentaje estrictamente o incluso ser la única mujer o no ayuda a crear un entorno donde más mujeres se animen a participar en eventos.
En la parte anterior de esta serie de sobre ensamblador x86 (www.meneame.net/m/SysDevs/guia-ensamblador-x86-principiantes-parte-1-2) vimos la información básica del ensamblador de x86, como la convención de llamadas a funciones de esta arquitectura. En esta parte usaremos lo aprendido en la parte anterior para construir una calculadora RPN (Reverse Polish Notation) escrita enteramente en ensamblador de x86.
Escribir código ensamblador estos días es prácticamente innecesario, aunque es recomendable que cualquiera interesado en la programación sepa cómo funciona. No sólo ofrece otra perspectiva comparado con lenguajes de alto nivel, también es muy útil a la hora de depurar código en otros lenguajes. En esta serie de dos entradas veremos cómo implementar una calculadora en notación polaca inversa (RPN: Reverse Polish Notation) en ensamblador desde cero.
1.¿Por qué no funcionaba Gitlab? Porque se borró la base de datos principal en vez de la secundaria. 2.¿Por qué se eliminó la base de datos? Porque al fallar la replicación requería borrar el directorio para volver a empezar. 1.¿Por qué la restauración tardó tanto? Porque se restauró la copia de stagging que estaba en una VM Azure en otra región. 2.¿Por qué se restauró la copia de stagging? Porque las bases de datos de azure no permiten hacer copia del disco. 4.¿Por qué no usar el procedimiento standar? Porque falló y no alertó
‘htop’ es un monitor de procesos interactivo en modo consola. Si se coge el famoso ‘top’ y se le añaden esteroides, tenemos ‘htop’. Esta herramienta muestra un montón de información acerca de los procesos que se están ejecutando. Además, es totalmente funcional sólo con el teclado. En esta entrada veremos qué es cada parte de ‘htop’ y qué significa.
Uno de los conceptos clave en la gestión de redes que todo profesional de Linux debe conocer es la notación usada para configurar la red. Este artículo se centra en la notación CIDR (Classless-Inter Domain Routing) y cómo funciona.
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.
OSQuery es un software de instrumentación de sistemas operativos para OS X/macOS, Windows y Linux que hace que el análisis de toda la información de estos sistemas operativos sea de alto rendimiento e intuitivo, ya que lo presenta en forma de tablas SQL. [Enlace directo a GitHub: github.com/facebook/osquery/ ]
El objetivo de esta página es la de recopilar información relevante para aquellos que estan migrando SQL de un producto a otro. Las tablas siguientes comparan como los diferentes productos DBMS manejan las características SQL.
En general, las políticas de generación de contraseñas que se centran en mezclar letras mayúsculas, minúsculas, números y símbolos no son tan seguras como cabría pensar. En palabras de Dwight Schrute, añadir complejidad intercambiado letras y poniendo números y símbolos no incrementa la entropía (fortaleza) de la contraseña. En cambio, incrementar la longitud de la contraseña (incluso usando palabras de un diccionario) sí que mejora su entropía, además de que son más fáciles de recordar.
Every ping packet flashes a random LED in the requested color. Ping it to light it up! 2001:6a8:28c0:2017::AA:BB:CC for HTML Color # AABBCC 2001:6a8:28c0:2017::FF:00:00 for color RED 2001:6a8:28c0:2017::00:FF:00 for color GREEN 2001:6a8:28c0:2017::00:00:FF for color BLUE 2001:6a8:28c0:2017::FF:FF:FF for color WHITE Please avoid pingfloods for prolonged periods and give everyone a chance to try it out.
Existen muchas maneras de cifrar un archivo o directorio en Linux, pero quizás la más común es usar GNU Privacy Guard (GnuPG o GPG), la implementación libre del estándar OpenPGP. Entre sus características destacan: mayor funcionalidad que PGP; mejor seguridad que PGP 2; descifra y verifica PGP 5, 6 y 7; soporte para ElGamal, DSA, RSA, AES, 3DES, Blowfish, Twofish, CAST5, MD5, SHA-1, RIPE-MD-160 y TIGER; etc.
Git viene con un montón de herramientas, lo que a veces puede llevar a confusión. Además, Internet está lleno de tutoriales haciendo difícil estar al día de todos ellos. En esta entrada hemos recopilado algunos de los consejos y trucos que usamos aquí, en GitLab, en el día a día con la esperanza de que sean útiles.
El objetivo fundamental de este artículo es continuar mostrando el amplio universo que es actualmente la virtualización en Linux mediante el Hipervisor Qemu-KVM. Aunque en el título escribimos el nombre la distribución “Debian“, los principios generales son aplicables a cualquier otra distribución mediante los comandos específicos de cada una de ellas. Sobre todo los referentes a la búsqueda, descripción e instalación de paquetes, entre otros.
Enlaces simbólicos (o symlinks en inglés) son archivos o directorios “virtuales” que hacen referencia a un archivo o directorio físico dentro del sistema de archivos, característica soportada por Linux y Windows. En el sistema de archivos de Windows, NTFS, esta característica estaba desde Windows Vista pero, a partir de Windows 10, los usuarios ya pueden crear enlaces simbólicos sin necesidad de ser administradores del sistema.
Actualmente el número de herramientas a disposición de los equipos de desarrollo para probar software es muy amplio. Para cualquier tipo de prueba que queramos realizar (funcionales, rendimiento, regresión, etc.) el número de opciones disponibles, tanto gratuitas como comerciales, es muy grande. De entre todas estas he elegido 12 herramientas imprescindibles para probar software (y sus alternativas). En unos casos son programas desarrollados para probar software. En otros, son programas que aunque no nacieron con ese propósito, han […].
En este tutorial vamos aprender a Cómo ponerle colores a la consola de MySQL/MariaDB según la configuración que desees, resaltando por tipo de datos y demás. Para ello vamos a compartir una configuración predeterminada y los pasos para hacer que la misma se ejecute.
Git proporciona varias herramientas para depurar nuestro proyecto. Por ejemplo, con git blame es sencillo encontrar el autor de una determinada línea de código; con git grep es sencillo encontrar un texto en nuestro proyecto; y con git bisect es fácil encontrar el commit donde fue introducido un error.
Mi primer encuentro con Docker fue en 2015 para experimentar si era beneficioso para nosotros. En ese momento no era posible ejecutar un contenedor en segundo plano y tampoco había ningún comando para saber si se estaba ejecutando, ni para depurar, ni para entrar a través de SSH. El experimento fue rápido: Docker era inútil y estaba más cerca de una versión beta que de una versión final. Ya en 2016 y en un nuevo trabajo, el hype de Docker sigue creciendo como loco mientras que mis compañeros están atascados con Docker en producción.
En el siguiente vídeo se mostrará cómo instalar GitLab y cómo crear y desplegar una aplicación desde la idea básica hasta producción. Todo ello en tan sólo 13 minutos.
Serie de entradas donde se explica cómo funciona y cómo se implementa de una forma sencilla un sistema de dibujado de ventanas, como el X Window System (X11). [Enlace directo al código en GitHub: github.com/jmarlin/wsbe ]
Al inicio de septiembre se lanzó la versión 53 de Google Chrome con el rediseño de su interfaz, llamada Chrome MD (por Material Design). Esta versión es el último paso del rediseño de la interfaz que comenzó con Chrome 51 y que, aunque es un proceso que nunca termina, es buena idea mirar hacia atrás y comentar este proceso que ha llevado al menos dos años.
Git tiene un fuerte compromiso con la compatibilidad hacia atrás, por eso muchas características están ocultas en opciones en lugar de puestas como el comportamiento predeterminado. Por suerte, Git soporta alias, por lo que se pueden crear comandos propios para hacer todo tipo de magia con Git, como se muestra en la siguiente lista.