Sistemas & Desarrollo
8 meneos
46 clics

Referendum 1-O: ¿Dónde votar? | Entre Dev Y Ops

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.
2 meneos
53 clics

Microsoft no crea una sandbox para Windows Defender, así que lo hice yo [ENG]

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?
4 meneos
56 clics

Jugando con co-rutinas en C++ [ENG]

Presentación del uso de co-rutinas (coroutines) en C++ basada en el uso de programación asíncrona (blogs.rti.com/2015/12/08/modern-asynchronous-requestreply-with-dds-rpc).
3 meneos
30 clics

Construir libros electrónicos en formato ePub escritos en Markdown usando Pandoc [ENG]

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.
1 meneos
43 clics

mkosi: utilidad para generar imágenes de sistemas operativos [ENG]

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.
3 meneos
31 clics

casync: herramienta para distribuir imágenes de sistemas de archivos [ENG]

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.
4 meneos
60 clics

¿Qué hace la palabra reservada ‘new’ en Javascript a bajo nivel? [ENG]

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.
5 meneos
39 clics

Google-Fuchsia, nuevo sistema operativo

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.
3 meneos
20 clics

How Thou Canst Maketh a Fine Program in Fortran [ENG]

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.
3 meneos
36 clics

Cómo funciona el algoritmo de ordenación “insertion sort” [ENG]

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.
3 meneos
49 clics

En crudo y sin censura: raw sockets II (en C)

¡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 […].
3 meneos
54 clics

Resumen del protocolo MQTT [ENG]

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.
4 meneos
34 clics

Cómo ejecutar Wine usando aceleración gráfica en un contenedor LXD en Ubuntu [ENG]  

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.
1 meneos
29 clics

Construyendo un entorno de escritorio para Blackberry QNX 7 [ENG]  

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.
2 meneos
33 clics

La importancia de escribir código limpio [ENG]

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.
1 meneos
4 clics

Lo nuevo de Cdecl 3.0 [ENG]

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”.
3 meneos
39 clics

Los buenos comentarios en el código explican “por qué”, no “qué” (y 3 reglas más para escribir buenos comentarios) [ENG]

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.
4 meneos
49 clics

Estilo de código en el kernel Linux [ENG]

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.
3 meneos
32 clics

Guía ilustrada del recolector de basura del motor de Javascript V8 [ENG]

Esta guía pretende mostrar, de una forma amigable, aspectos internos del recolector de basura de V8, el motor de Javascript desarrollador por Google.
2 meneos
26 clics

Por qué C++ es divertido: metaprogramación con plantillas [ENG]

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 […].
2 meneos
8 clics

La paridad en el sector tecnológico

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.
1 meneos
18 clics

Guía de ensamblador de x86 para principiantes (parte 2 de 2) [ENG]

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.
2 meneos
35 clics

Guía de ensamblador de x86 para principiantes (parte 1 de 2) [ENG]

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.
2 meneos
28 clics

Postmortem del borrado de base de datos en Gitlab del 31 de enero

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ó
2 meneos
61 clics

‘htop’ explicado visualmente [ENG]  

‘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.
1 meneos
39 clics

Guía sobre la notación CIDR y configuración de redes en Linux [ENG]

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.
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.
2 meneos
22 clics

OSQuery: información del sistema operativo en forma de tablas SQL [ENG]

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/ ]
2 meneos
32 clics

Comparativa de diferentes implementaciones SQL [ENG]

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.
2 meneos
24 clics

Tu política de generación de contraseñas está mal [ENG]  

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.
4 meneos
36 clics

IPv6 enabled Christmas Tree  

Every ping packet flashes a random LED in the requested color. Ping it to light it up! :-D {0x1f384} {0x1f6a5} 2001:6a8:28c0:2017::AA:BB:CC for HTML Color # AABBCC {0x1f384} {0x1f6a5} 2001:6a8:28c0:2017::FF:00:00 for color RED {0x1f384} {0x1f6a5} 2001:6a8:28c0:2017::00:FF:00 for color GREEN {0x1f384} {0x1f6a5} 2001:6a8:28c0:2017::00:00:FF for color BLUE {0x1f384} {0x1f6a5} 2001:6a8:28c0:2017::FF:FF:FF for color WHITE :popcorn: Please avoid pingfloods for prolonged periods and give everyone a chance to try it out.
3 meneos
48 clics

Cómo cifrar y descifrar archivos y directorios en Linux  

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.
2 meneos
42 clics

Consejos y trucos sobre Git [ENG]  

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.
3 meneos
43 clics

Comandos de gestión de la virtualización en Debian

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.
4 meneos
62 clics

Enlaces simbólicos en Windows 10 [ENG]

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.
1 meneos
57 clics

Doce herramientas imprescindibles para asegurar la calidad del software (y sus alternativas)

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 […].
3 meneos
53 clics

Cómo ponerle colores a la consola de MySQL/MariaDB  

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.
5 meneos
29 clics

Aprendiendo a depurar con Git [ENG]

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.
3 meneos
46 clics

Docker en producción: una historia de fracaso [ENG]

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.
2 meneos
54 clics

En trece minutos desde Kubernetes a una aplicación completa de desarrollo [ENG]  

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.
4 meneos
59 clics

Sistemas de ventanas a través de ejemplos [ENG]

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 ]
2 meneos
42 clics

Rediseñando Google Chrome para escritorio [ENG]

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.
4 meneos
45 clics

Comandos y opciones poco conocidas de Git [ENG]  

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.
2 meneos
86 clics

La estética del código fuente: a la búsqueda del arte en la programación  

Un lenguaje informático no es más que un conjunto de instrucciones que introducimos en una máquina para que esta opere permitiéndonos así desarrollar programas. De este modo, las distintas formas en que combinamos dichas instrucciones dan lugar a los diferentes estilos y escuelas responsables de lo que podemos denominar ‘la estética de la programación’. Esa estética, según las reglas a las que responda, se puede clasificar a su vez en cuatro grandes grupos que tradicionalmente, como muchas corrientes artísticas, han coexistido.
2 meneos
68 clics

Las nueve principales cualidades del código limpio [ENG]

¿Con qué frecuencia muestras tu incredulidad al navegar a través del código de alguien diciendo en voz alta “madre mía, esto es código de espagueti…”? Probablemente bastante a menudo. ¿Y cuán seguro estás de que nadie pensó lo mismo cuando se trataba de tu código? En otras palabras, ¿cuán seguro estás de que tu código es limpio? La verdad es que sólo se puede estar seguro si se sabe completamente lo que significa que el código sea limpio.
3 meneos
79 clics

El futuro de los entornos de desarrollo con Vagrant

Un tutorial que explica para que sirve y por qué utilizar Vagrant a la hora de hacer desarrollos.
1 meneos
47 clics

Cómo hacer fragmentación de consultas de MySQL (sharding) con ProxySQL [ENG]

Este artículo muestra cómo funciona la fragmentación de consultas de MySQL (sharding) usando ProxySQL.
3 meneos
35 clics

¿Por qué deberías pensar en Gradle 3.0 como sustituto de Maven?

Hace unas semanas el equipo de Gradle presentó la esperada versión 3.0 de esta herramienta open source de construcción de software. Aunque en el mundo Java el lider lleva siendo durante mucho tiempo Maven ya es hora de dejar atrás los interminables archivos XML de configuración y dar el paso algo más moderno y potente como Gradle. En este artículo veremos las principales novedades de la versión 3.0 que puede que os den el empujón que falta para que migreis de Maven a Gradle.
2 meneos
53 clics

Cómo compara cadenas la JVM con instrucciones x86 de las que nunca has oído hablar [ENG]

Probablemente todos hemos visto la implementación de la función de comparación de cadenas de texto en Java. Esta compara carácter a carácter hasta que hay alguno diferente como máximo hasta la longitud de la cadena más corta y, en caso de que todos sean iguales hasta dicha longitud, devuelve la diferencia de las longitudes. Pero, ¿sabías que hay una segunda implementación que usa ensamblador de x86?
6 meneos
95 clics

Controlar el ancho de banda por dirección IP en Linux

El propósito es evitar que un cliente acapare de todo el ancho de banda disponible y anule o limite a los demás. A lo mejor puede sonar algo trivial, considerando que actualmente existen proveedores de internet que pueden llegar a ofrecer 100 Mbps de descarga o cantidades así, pero en donde estoy solo disponemos de 3 Mbps que tengo que hacer rendir.

menéame