Programación

Supongamos que deseamos tener dos copias locales de un repositorio remoto sincronizadas a diferentes ramas. Por ejemplo una copia local sincronizada contra una rama"estable" (para mostrar la versión de una aplicación en producción) y otra sincronizada a una rama de desarrollo o inestable (para mostrar la versión de una aplicación en desarrollo o pruebas). Este artículo explica como crear, sincronizar y clonar ramas en git desde línea de comandos.

Cuando se utilizan asignaciones procedurales en un diseño RTL con Verilog, es posible controlar el instante en el que ocurren mediante eventos, los cuales pueden ser de nivel o de flanco. Los eventos de flanco permiten modificar el estado de las variables durante un flanco ascendente o descendente de reloj. Sin embargo, el tipo de asignación durante un evento puede modificar significativamente el diseño de un circuito. Este artículo demuestra su diferencia con un ejemplo práctico.

La cache de Joomla! está conformada por archivos temporales creados para mejorar el rendimiento del sitio. Típicamente se trata de archivos HTML renderizados de ejecuciones previas de scripts PHP. Esto evita que un mismo script, con mismos parámetros, se tenga que volver a correr y en su lugar se sirve directamente el HTML renderizado de la ejecución anterior.

De esta forma es posible disminuir el tiempo de respuesta y uso de CPU y memoria en el servidor. Sin embargo, la caché de Joomla! puede creer rápidamente y aumentar de tamaño. Es necesario asegurarse de eliminar periódicamente los archivos de cache expirados que ya no son necesarios, para evitar quedarse sin espacio en disco en el servidor.

Geany es un editor de texto liviano orientado a la programación en diversos lenguajes (soporta más de 50 lenguajes de programación). Provee muchas características útiles para desarrolladores sin ser tosco. Es software libre (liberado bajo la GPLv2) y está disponible para Windows, Linux y MacOS. Muchas distribuciones con entorno de escritorio XFCE suelen incluirlo como editor de texto por defecto, con lo cual se ha popularizado entre los usuarios. A su vez cuenta con un buen número de plugins para mejorar la funcionalidad como corrector de ortografía, organización de proyectos, traducciones y acceso a repositorios (GIT, SVN, etc.)

Este artículo explica cómo instalar temas de colores en Geany a fin de mejorar nuestra experiencia trabajando con código fuente, especialmente cuando se trata de tonos oscuros.

El lenguaje ensamblador ("assembler" o assembly language en inglés, también la abreviatura asm) es un lenguaje de programación de bajo nivel. Consiste en un conjunto de mnemónicos que representan instrucciones soportadas por computadoras, microprocesadores, microcontroladores y otros circuitos integrados programables. Implementa una representación simbólica de los códigos de máquina binarios y otras constantes necesarias para programar una arquitectura de procesador. En este lenguaje, cada línea de código asm se traduce exactamente en una instrucción máquina ejecutada por el hardware subyacente (procesador o CPU).

El lenguaje ensamblador refleja directamente la arquitectura e instrucciones de una CPU, y pueden ser muy diferentes de una arquitectura de CPU a otra. Cada arquitectura de microprocesador tiene su propio set de instrucciones, y en consecuencia su propio lenguaje ensamblador ya que este se encuentra muy ligado a la estructura del hardware para el cual se programa.

A diferencia de un lenguaje de programación de alto nivel, cuando se escriben programas en lenguaje ensamblador se carece de librerías o cualquier otro tipo de ayuda. Sólo se dispone del conjunto de instrucciones provistas por el procesador (CPU) y las llamadas al sistema operativo (funciones implementadas por el sistema operativo, en este caso Linux). Por lo tanto, para programar en lenguaje ensamblador se debe tener a mano tanto el set de instrucciones destino como la tabla de syscalls del kernel.

Para el caso de las arquitecturas x86 y amd64 existen diferentes ensambladores y sintaxis dependiendo del fabricante. Hay dos principales ramas en cuanto a sintaxis se refiere: Intel y AT&T. Se diferencian principalmente en el orden de los operandos, especificación de tamaños de parámetros, valores inmediatos y direcciones efectivas. No va al caso de este artículo hacer una explicación detallada de ambas sintaxis, sino que dejo varios enlaces interesantes al final del mismo. La sintaxis Intel es la más popular y algunos ensambladores que la utilizan son NASM, YASM, FASM, MASM, TASM y GAS.

Este artículo demuestra el proceso de ensamblado y linkeado de un programa en lenguaje Yasm utilizando el ensamblador yasm y el linker ld desde línea de comandos en GNU/Linux para las arquitecturas x86 y amd64. No se trata de un tutorial de programación en lenguaje ensamblador en sí, aunque se dejan buenos tutoriales en la sección de referencias.