Sistemas & Desarrollo
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.
5 meneos
62 clics

Por qué GNU grep es más rápido que BSD grep [ENG]

La implementación del comando grep de GNU es más rápida que la versión implementada en BSD. Aquí se muestra una lista de los trucos que usa para conseguir esta mejora en velocidad además del algoritmo que usa.
5 meneos
51 clics

GitLab lanza Issue Boards, un gestor de tareas de código abierto similar a Trello [ENG]

GitLab, la empresa detrás del software de gestión de repositorios en Git de código abierto, ha lanzado Issue Board, una herramienta de gestión de tareas similar a la famosa Trello, que será integrada en los servicios web actuales de GitLab sin coste alguno. La herramienta provee una interfaz gráfica donde los miembros del equipo pueden ver el estado de sus proyectos.
3 meneos
50 clics

Programando para Haiku - Barras de menús - Parte III  

Seguimos con los tutoriales de Haiku, hoy veremos cómo crear barras de menú. Partimos del código de la ventana vacía, lo tienes en la foto junto con el comando de compilación. Debemos saber que en la API de BeOS hay tres clases que nos van a servir: BMenuBar, BMenu y BMenuItem. Con esto conseguiremos crear el menú mostrado en las imágenes.
6 meneos
50 clics

Vistazo al Subsistema Windows para Linux [ING]

Recientemente anunciamos Bash en Ubuntu en Windows que permite binarios Linux ELF64 en Windows via el Windows Subsystem for Linux (WSL). Este subsistema fue creado por el equipo Microsoft Windows Kernel y ha generado mucho revuelo. Una de las preguntas más frecuentes que recibimos es la diferencia que hay con respecto a una máquina virtual. En este primer post de una serie de varios, explicaremos lo básico de WSL que responda esas y otras preguntas. En futuros posts entraremos al detalle de cada componente aquí presentado.
3 meneos
2 clics

Fast Export, herramienta para convertir repositorios de Mercurial a Git [ENG]

Fast Export es una herramienta para convertir repositorios de Mercurial a Git. Su funcionamiento es bastante sencillo y pasa para ejecutar el comando hg-fast-export.sh desde el repositorio de Git indicando en un parámetro el repositorio de Mercurial que exportar. Esta herramienta es software libre (licencia MIT) y se puede acceder directamente a su código fuente en GitHub (github.com/frej/fast-export).
1 meneos
12 clics

Google podria lanzar un nuevo movil en lo que resta de 2016

Rumores de un posible lanzamiento de un nuevo movil en lo que resta de 2016
1 meneos
36 clics

Manifiesto contra la mediocridad en el desarrollo de software [ENG]

El acto de escribir código fuente es un proceso fundamentalmente creativo. Crear software no va sobre usar las herramientas correctas y hacer un poco de fontanería para que todo funcione. No, se trata de usar herramientas para crear una obra de arte. Cualquier desarrollador que no reconozca esto es inferior por definición ya que puede ser sustituido por algo que no tenga creatividad, como un script o un bot. Por otra parte, dicho script o bot puede ser creado por una persona creativa.
2 meneos
21 clics

Cómo utilizar Slack desde la consola con Slack-Gitsin [ENG]  

Slack es una avanzada plataforma de comunicación, que permite el intercambio de información de manera rápida, precisa y organizada. Slack-Gitsin es un script escrito en Python que nos permite interactuar con Slack utilizando la línea de comandos de forma rápida y precisa. Slack-Gitsin tiene una organización envidiable y además no usa nada más que 20 MB de memoria. [Vía: blog.desdelinux.net/como-utilizar-n-slack-gitsin/ ]
5 meneos
32 clics

To throw or not to throw o para que sirven las excepciones

En el mundo impuro en el que vivimos se producen situaciones inesperadas que escapan a nuestro control. Es por ello que los programas necesitan un mecanismo mediante el cual poder controlar dichos casos excepcionales, al más común de esos mecanismos se le llama Exception handling. Sin embargo, el uso de excepciones tiene consecuencias en la calidad de nuestro código haciéndolo más frágil. ¿Podemos hacer algo al respecto?
3 meneos
56 clics

Trece herramientas para desofuscar código para ‘reversers’

Todo buen reverser guarda en su maletín un buen número de instrumentos para diseccionar malware. A continuación os mostramos una lista de 13 herramientas para desofuscar código (alguna ni las conocía) que recopilamos de Hacker List para todos los amantes y profesionales de la ingeniería inversa. Como siempre, no dudéis en comentar si echáis en falta/conocéis más herramientas.
1 meneos
21 clics

La metáfora de la “deuda técnica”

La primera referencia al concepto “deuda técnica”, en el contexto del desarrollo software, viene del año 92. Otra evidencia más de que muchos temas y términos de moda hoy llevan ya muchos años con nosotros. El creador del término fue Ward Cunningham, nombre poco popular en el sector pero tras el que están, más allá del concepto deuda técnica, aportaciones como el desarrollo de la primera wiki, ser uno de los firmantes el manifiesto ágil, ser uno de los pioneros en introducir el concepto patrón y los primeros catálogos, etc.
3 meneos
17 clics

APFS, el nuevo sistema de archivos de Apple, en detalle — Parte 1 [ENG]

Apple anunció hace unos días su nuevo sistema de archivos, APFS, sistema que en el futuro va a ir integrado en todos sus sistemas operativos. Después de su presentación, Dominic Giampaolo y Eric Tamura, dos miembros del equipo de diseño, junto con otros miembros del equipo respondieron pacientemente a nuestras preguntas al final del día. Con estos datos y con el uso de primera mano de este sistema de archivos, voy a hacer un análisis de APFS como usuario y com diseñador de sistemas de archivos.
5 meneos
12 clics

Firmar commits y etiquetas de Git con GPG2 y que sean verificadas en Github [ENG]

En este tutorial se muestra cómo firmar digitalmente commits y etiquetas (tags) en Git usando GPG2. Además, se mostrará cómo se configura Github para que valide dichas firmas.
3 meneos
33 clics

Usar mónadas es mucho más fácil de lo que crees, empezando con la programación funcional

Seguramente todos tenemos formada una buena idea sobre lo que es una “propiedad”, un “método estático”, un “singleton” u otros términos. Nos resultan algo más exóticos términos como “clase abstracta” o “función virtual pura”. Todos éstos son términos habituales en la programación orientada a objetos. Lo que seguramente ya no tengamos tan claras son todas las ramificaciones, implicaciones, interacciones que estos conceptos poseen y, sin embargo, los usamos. Usar una mónada es tanto o más fácil de usar que, por ejemplo, un objeto. Pero una […].
1 meneos
64 clics

Ver la imagen mapeada en un dispositivo ‘loop’

Si tenemos en el sistema un dispositivo ‘loop’ nos puede interesar saber a que imagen corresponde dicho dispositivo, vamos a ver dos formas de hacerlo.
4 meneos
29 clics

Programando para Haiku - BApplication, BWindow y BButton - Parte I

Hoy voy a comenzar una serie de tutoriales donde explicaré la programación de una aplicación en Haiku. Para ello, vamos a usar C++ y la BeAPI. Siempre que tengáis cualquier duda podéis visitar la documentación oficial: tanto la antigua de BeOS en el BeBook y la nueva de Haiku en Haiku API. Aun así hay APIs nuevas que todavía no aparecen documentadas. En ese caso hay que recurrir al código fuente.
6 meneos
31 clics

Chimp.js. Automated web testing por y para desarrolladores

Chimp.js (simplemente Chimp) es un framework para automatizar pruebas web construido sobre Node.js y que funciona en cualquier plataforma (OSX, Linux y Windows). Permite escribir tests en Javascript obteniendo feedback en tiempo real, ya que el navegador puede ejecutar los tests mientras los escribimos.
6 meneos
45 clics

Como utilizar correctamente JSON en PHP

Hoy en día, la mayoría de servicios web o frameworks (tanto javascript como PHP) se comunican enviando y recibiendo objetos en JSON, el problema es que muchos programadores no están acostumbrados a hacerlo y chocan a la hora de comenzar a utilizar esta metodología. Muchísimas veces me he encontrado con conversiones a JSON a mano o parseandolo directamente con split(). Aquí comento como leer y generar JSON en PHP de la forma correcta y esperada.
3 meneos
50 clics

Comparación entre las diferentes tecnologías de animación web [ENG]

Una pregunta que me hacen frecuentemente es: ¿qué tecnología de animación web recomiendas? Habiendo trabajado con un montón de ellas puedo decir que no hay respuesta correcta. Así que en esta entrada intentaré clarificar qué usar y cuándo usarlo para saber qué tecnología usar para cada proyecto.
5 meneos
29 clics

Llamar a una API REST desde Laravel con Guzzle

A veces nos encontramos con la necesidad de llamar a una API REST desde nuestro servidor. Podemos hacer varias variantes, e incluso hace una llamada cURL para resolverlo, pero es interesante plantearlo de esta otra manera.
5 meneos
26 clics

Adblock Analytics: ¿cuántos de tus usuarios están bloqueando publicidad?

El uso de bloqueadores de publicidad es un tema candente. Por un lado, los usuarios se quejan del exceso de publicidad en algunas páginas web y medios online, hasta el punto que, en ocasiones, les dificulta consumir el contenido; por otro lado, los medios que cuentan con la publicidad como fuente de ingresos, y que ven cómo éstos van mermando poco a poco.
4 meneos
33 clics

Una mirada a la infraestructura interna de GitLab.com [ENG]

Mucha gente nos ha hecho preguntas sobre cómo es la infraestructura interna de GitLab.com. Desde Twitter muestran sus dudas para saber cuántos servidores usamos, así que, dado este número de cuestiones, hemos querido ir un poco más allá y ofrecer una mirada a nuestra infraestructura. En esta entrada no sólo encontraréis cuántos servidores usamos, sino también una perspectiva de para qué se usa cada uno de ellos.
8 meneos
32 clics

Usar Dropbox como un verdadero servidor de Git [ENG]

‘git-remote-desktop’ es una forma segura de almacenar un repositorio de Git en Dropbox. Una vez instalado, esta aplicación instala un nuevo protocolo para Git para almacenar repositorios en Dropbox. Para añadir un nuevo repositorio, bastaría con usar el comando ‘git remote add my-origin dropbox://path/to/repo’. [Página del proyecto: github.com/anishathalye/git-remote-dropbox ]
2 meneos
23 clics

Usar contenedores LXD dentro de contenedores LXD [ENG]

La versión 2.0 de LXD permite una característica interesante: la de poder ejecutar LXD de forma anidada en contenedores gestionados con LXD. Como las imágenes soportadas de Ubuntu vienen con LXD preinstalado, es muy sencillo usar contenedores anidados mediante este gestor. En esta entrada veremos los pasos necesarios para llevarlo a cabo.
3 meneos
27 clics

Introducción a DGit (Distributed Git) [ENG]  

GitHub almacena más de 35 millones de repositorios de Git y más de 30 millones de Gists (pequeños trozos de código) en cientos de servidores. Durante el pasado año, hemos estado construyendo DGit (Distributed Git), un nuevo sistema de almacenamiento distribuido que mejora de forma dramática la disponibilidad, la confiabilidad y el rendimiento del almacenamiento y el servicio de contenidos almacenados con Git.
2 meneos
28 clics

Deshabilitar ‘motd’ por usuario

Al conectar por ssh a un servidor con Ubuntu, por defecto veremos el ‘motd’ con el mensaje de “Welcome to Ubuntu”. Dicho mensaje puede ser útil o llegar a ser molesto, depende de cada uno, por eso veremos cómo deshabilitarlo por usuario.
3 meneos
60 clics

Presentación con diapositivas de la tecnología de contenedores ‘lxd’ en Ubuntu [ENG]  

Presentación con diapositivas del funcionamiento de la tecnología de contenedores de Linux ‘lxd’, que se apoya sobre la tecnología ‘lxc’ del kernel de Linux, en Ubuntu.
2 meneos
51 clics

Anatomía de un fotograma [ENG]  

Me han preguntado varios desarrolladores cuál es la ruta de un píxel en en el dibujado de una página web en un navegador, y qué es lo que se dispara, cuándo y por qué, así que creo que vale la pena poner una referencia de qué es lo que implica enviar píxeles a la pantalla [Nota: este texto está centrado en Blink/Chorme, aunque la mayoría de tareas se comparten entre todos los desarrollos].
8 meneos
109 clics

Ejemplos de comandos útiles en Python de una sola línea [ENG]

Esta es una pequeña lista de comandos de una sola línea en Python que resultan muy útiles aunque no seas desarrollador de Python (se puede usar para depuración, para administrar sistemas, etc.). Lo único que requieren estos comandos es tener instalado Python en su sistema, lo cual no suele ser un problema ya que la mayoría de Linux y *BSD lo tienen, incluyendo MacOS X.
2 meneos
87 clics

¿Quieres espiar el móvil de tu novi@? Aquí tienes unas cuantas aplicaciones que no deberías utilizar…

Mucha gente nos ha preguntado acerca de Androrat para troyanizar el smartphone de alguien a quien quieren monitorizar, incluso algunos nos han pedido ayuda directamente para espiar el WhatsApp de su pareja o tener acceso a las llamadas o a sus fotos o vídeos privados. Evidentemente no nos hacemos responsables ya que ésto no debe hacerse por ética o moral y en muchos sitios y circunstancias puede tener severas implicaciones legales (lo intentaremos estudiar en detalle más adelante).
3 meneos
45 clics

Como hacer un scope en Laravel

Tutorial: En pocos minutos podemos configurar las relaciones entre diferentes Modelos y rápidamente poder hacer consultas sin siquiera escribir consultas SQL (nos abstrae del motor de base de datos elegido).
2 meneos
50 clics

Inyectar código en procesos en ejecución en Linux con ‘linux-inject’ [ENG]  

‘linux-inject’ es una utilidad para Linux que inyecta una librería .so dentro de un proceso en ejecución. Funciona de forma similar a como lo hace LD_PRELOAD pero, como se ha comentado, ‘linux-inject’ inserta el código mientras el proceso está corriendo. Veamos un ejemplo de su funcionamiento.
1 meneos
8 clics

QIRA: depurador de programas atemporal [ENG]  

QIRA es un depurador atemporal, es decir, todos los posibles estados del programa a depurar son guardados con lo que es posible depurar código que ya se ha ejecutado (depurar en el pasado). Además, se integra con IDA gracias a su sistema de plugins. QIRA requiere Linux de 64 bits.
3 meneos
27 clics

Attic: copias de seguridad con deduplicación y cifrado  

Attic es un software de código abierto escrito en Python que nos permite crear copias de seguridad de nuestros archivos utilizando la deduplicación de datos, un método que comprime los archivos y los almacena en una especie de índice, del que se han eliminado los datos redundantes, es decir los bloques de información repetidos. Esto tiene la ventaja de que a la hora de crear varias copias de seguridad se ocupa mucho menos espacio y que también es más rápido en los sucesivos backups. Attic se ejecuta en linea de comandos y su […].
2 meneos
13 clics

Formas interesantes de usar los canales (channels) de Go [ENG]

Esta entrada documentan la presentación hecha por John Graham-Cumming durante la conferencia GopherCon 2014. En ella se presentan interesantes formas de utilizar los canales en Go y las ventajas de utilizar la programación concurrente. A mí, personalmente, me mostró diferentes modos de estructurar aplicaciones y nuevas técnicas de sincronización entre diferentes procesadores. Los siguientes ejemplos muestran estas técnicas de uso de canales en Go.
5 meneos
32 clics

Dr. Memory: depurador de problemas de memoria para Windows, Linux y Mac [ENG]

Dr. Memory es un depurador de problemas de memoria para Windows, Linux y Mac capaz de identificar diferentes tipos de errores relacionados con la memoria, como accesos a memoria no inicializada, accesos a memoria no direccionable, accesos a memoria ya liberada, doble liberación de memoria, fugas de memoria, etc. Esta herramienta tiene licencia LGPL.
3 meneos
15 clics

Uso de D y ‘std.ndslice’ como reemplazo de Numpy (Python) [ENG]

std.ndslice es una implementación en D de arrays multidimensionales no muy diferente a Numpy (escrita en Python) pero con muy poca sobrecarga. Además, esta basada en el concepto de rango que tiene D lo que evita copiar innecesariamente la memoria y permite la generación bajo de demanda (lazy generation) de datos.
3 meneos
38 clics

Evolución de Yowsup  

Evolución del proyecto Yowsup, la librería WhatsApp en python. Visualizacion con Gource Más: github.com/tgalal/yowsup
1 meneos
55 clics

Los microkernels son lentos y Elvis no hizo nada con las drogas [ENG]

El odio a los microkernel es un fenómeno peculiar. Usuarios que nunca han tenido ninguna experiencia más allá de Windows y algo de kernels monolíticos de Unixes libres tienen, a pesar de la apatía o ignorancia en estos temas, fuertes opiniones sobre el supuestamente terrible rendimiento de los microkernels. Sin embargo, opinan sobre ello (y veremos que una gran cantidad de personas lo hace tienen ideas equivocadas de lo que se supone que es un microkernel). A menudo esta visión negativa viene de observaciones hechas por Linus Torvalds y […].
3 meneos
76 clics

Las 10 preguntas más frecuentes sobre Git [ENG]

En esta entrada se muestra las que son las 10 preguntas más frecuentes sobre Git y cuáles son las soluciones para cada una de ellas. Entre estas preguntas se encuentran: ¿cómo se edita un mensaje de commit incorrecto? ¿Cómo se deshace el último commit? ¿Cómo se deshace un ‘git add’? ¿Cómo se borra una rama (tanto local como remota)?
3 meneos
100 clics

LCD gráfico con Raspberry Pi y Python  

Siempre me han gustado las pantallas gráficas LCD: te dan un montón de juego para mostrar todo tipo de cosas y además suele ser fácil hacerlas funcionar. Es un clásico en muchos proyectos con Arduino, pero utilizar una pantalla LCD con una Raspberry Pi ya no es tan evidente. En el vídeo que os dejo a continuación se explica paso a paso cómo conectar una pantalla LCD SPI, basada en el chip ST7565, a una Raspberry Pi así como su programación en Python, así que ya no hay excusa para no utilizar este tipo de pantallas en tu próximo proyecto.
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.
3 meneos
42 clics

Introducción a PostCSS [ENG]

El desarrollo de CSS, como todas los lenguajes, es un proceso iterativo. Con cada lanzamiento importante tenemos nuevas características y sintaxis que nos ayudan escribir nuestros estilos. CSS nivel 3 introduce características que nos permiten diseñar interacciones que antes sólo eran posibles con JavaScript. Con cada nuevo día, surgen herramientas para hacer un estilo más sencillo y más flexible.

menéame