Sistemas & Desarrollo
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
49 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
20 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
22 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
59 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
50 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
108 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
12 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.
1 meneos
14 clics

Incluir archivos en la configuración de Git [ENG]

Imagina que trabajas en varias máquinas con Git y en cada una tienes que usar una configuración diferente, por ejemplo en el correo electrónico. Para tener esta configuración variable se puede hacer de varias formas, como poniendo la propia configuración dentro de un repositorio, pero quizás la mejor forma de hacerlo sea usando la sección [include] del propio archivo de configuración de Git de la siguiente forma.
1 meneos
5 clics

BFG Repo Cleaner, una alternativa a git-filter-branch [ENG]

BFG Repo Cleaner es una alternativa a git-filter-branch más simple y rápida para eliminar grandes archivos o borrar contraseñas o cualquier dato privado en toda la historia de un repositorio de Git. El comando git-filter-branches es muy potente y puede hacer cosas que esta utilidad no puede, pero BFG es mucho mejor para estas tareas específicas porque puede ser hasta 720 veces más rápido, además de tener una interfaz de usuario más sencilla.
1 meneos
8 clics

Nuevo enlazador de ELF en el proyecto LLVM [ENG]

Hemos estado trabajando duro durante varios meses para reescribir el soporte de ELF en lld, el enlazador (linker) LLVM. Estamos felices de anunciar que se ha alcanzado un hito importante: ahora es capaz de iniciar LLVM, Clang y a sí mismo y pasar todas las pruebas en x86-64 en Linux y en FreeBSD con la velocidad esperada de un proyecto LLVM.
1 meneos
20 clics

Introducción a ‘elfpatch’, parcheo seguro de binarios ELF [ENG]

Hace poco tuve un problema con un programa que funcionaba mal. Como desarrollador familiarizado con código abierto, mi estrategia normal en este caso sería la de encontrar el código fuente y depurar para luego parchear. Aunque en este caso sí disponía del código fuente, no lo tenía a mano además de que me habría enfrentado a mayores inconvenientes al parchearlo, volverlo a compilar y volverlo a introducir en el entorno de ejecución.
3 meneos
11 clics

Introducción a sd-event, el API de eventos de libsystemd [ENG]

Cuando empezamos a trabajar en systemd, lo construimos alrededor de un bucle de eventos escrito a mano usando epoll en Linux. Pero cuanto más crecía nuestro proyecto, más nos dimos cuenta de las limitaciones del uso de epoll. Algunas de estas limitaciones son que usaba demasiados descriptores de fichero, que el gestionar el orden de los eventos era tedioso o que para cada programa que usaba systemd añadíamos el mismo código duplicándolo. Así que, a partir de ahí para solucionar estos problemas comenzamos a trabajar en sd-bus.
5 meneos
20 clics

OOSMOS es liberada como código abierto [ENG]

OOSMOS (Object Oriented State Machine Operating System, por sus siglas en inglés) es una implementación de concurrencia sin hilos en C++. Su implementación en un sólo archivo la hace portable y fácilmente integrable en cualquier sistema, como Arduino o, a más alto nivel, Linux o Windows. Ahora, OOSMOS se ha liberado bajo licencia libre —GPLv2— además de la antigua licencia comercial quedando con un sistema dual de licencias.
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…

menéame