Luego de leer el artículo C/C++: Indicador de progreso de La plaga Tux, me vino a la mente ese indicador de progreso que tiene ese aspecto de “barrita” girando sobre su propio eje.

Entonces, tiempo libre mediante, en principio tomé el artículo original y porté el código de C++ a C (nada de otro mundo). Tal artículo me hizo recordar que hay vida más allá del \n recordándome el \r. Pero como una cosa va encadenada a la otra, también me hizo recordar el \b.

Para quienes hasta aquí me leen perdidos o necesitan un refresco de su memoria, les recuerdo que en el formato de impresión se pueden utilizar varias secuencias de control de cursor:

  • \n: nueva línea
  • \r: retorno de carro
  • \b: backspace
  • \t: tab
  • etc.

Con esto, ya tenemos todos los fundamentos para que puedas entender los ejemplos.

(más…)

  • 3 Comentarios
  • Comentarios: C, Programación
  • En la semana una noticia ocupó a la mayoría de los blogs: Go, un nuevo lenguaje de programación. La noticia hubiera pasado desapercibida de no ser porque Go es un nuevo lanzamiento de Google!

    logo-153x55

    Go se promociona a si mismos como un lenguaje:

    • rápido: el código compilado en Go corre tan rápido como el código compilado en C o C++.
    • seguro: garantiza seguridad en el manejo de memoria, tiene punteros pero no utiliza la aritmética de punteros que convierten en engorrosa la programación y dan lugar a memory leaks, memory slices y ese otro tipo de males.
    • concurrente: promueve la escritura de procesos ligeros, comunicados entre si y ejecutar miles de rutinas diciendo adios a los desbordamientos de pila
    • divertido: sintaxis clara, garbage collector, métodos de cualquier tipo, etc. Go luce como un lenguaje dinámico (Phyton) pero tiene la velocidad y seguridad de un lenguaje estático (C, C++).
    • código abierto: distribuido bajo licencia BSD

    (más…)

    Esta publicación es pequeña pero muy efectiva, básicamente se trata de un script para buscar en la wikipedia desde la consola, valiéndose simplemente del comando dig.

    terminal

    (más…)

    Debo confesar que esta publicación me trae bastante nostalgia pues me ha llevado a abrir viejos fuentes .bas (de mis archivos) de mis comienzos. Recuerdo aquellas clases de secundaria, monitores en negro y naranja, y una primitiva versión de Gwbasic que utilizabamos simplemente para dibujar en pantalla con la instrucción LINE.

    Todo es recuerdo del pasado, de un pasado bastante lejano. No obstante esto, para todos los nostálgicos se ha creado Blassic, un interprete multiplataforma de Basic (desde los Spectrum, Amstrad, etc) hasta las versiones más modernas de Basic como Qbasic.

    La compatibilidad del interprete es bastante alta, puede correr fuentes muy antiguos casi sin modificarlos. Además soporta intrucciones que lo transforman en un lenguaje de scripting.

    Como si fuera poco Blassic es multiplataforma, està disponible para Linux, Windows y BSD, tanto los fuentes como los binarios e instaladores (para Linux en paquetes deb y rpm).

    blassic

    (más…)

    En pocos pasos, veremos como compilar un programa escrito en C++ sobre Linux:

    screenpp

    (más…)

    Trappear Ctrl+C en bash

    En alguna ocasión, puede resultar útil trappear señales en los shell scripts. Un ejemplo clásico de señal a trapear es el famoso Ctrl+C (^C).

    Trappear una señal es fácil, simplemente debemos definir una acción (o función) que se ejecutará al momento de recibir la señal, y luego definir las señales a trappear con el comando trap.

    (más…)

    Clase de Logs para PHP

    Por más entorno de debug que exista, los archivos de log son fundamentales para tracear el comportamiento de cualquier aplicación. Una aplicación web escrita en PHP no se escapa de este requerimiento tampoco.

    Por tal motivo, navegando, encontré una sencilla clase para generar archivos de log. Y como siempre se necesita tener a mano código como tal, no viene mal su publicación.

    (más…)

    No suele ser costumbre utilizar la instrucción declare en Bash, de echo, hasta algunos quizás no la conozcan. Lo cierto es que Bash, al no ser un lenguaje fuertemente tipado y no requerir la declaración explícita de variables, nos permite prescindir de su utilización.

    No obstante esto, si declaramos las variables podemos lograr algunos beneficios para casos puntuales, hasta incluso evitar errores de ejecución.

    A continuación veremos algunos ejemplos para saber de que estamos hablando con esto de declarar las variables en Bash.

    (más…)

    Para el día de hoy les recomiendo la descarga de un interesante ebook: “Aprenda a Pensar Como un Programador con Python

    pythonlogo

    Se trata de un libro digital, está en español, es gratuito (disponible bajo licencia GNU Free Documentation License) y no se trata de un manual, sino de una introducción a la programación de la mano de Python.

    Ideal para quienes se inician en la programación y también para los que desean conocer las técnicas básicas de la programación en Python.

    (más…)

    Hace unos días, leyendo acerca de la arquitectura de Facebook leí acerca de servidores Web y de servidores de Memcache. Alejado hace algunos años del desarrollo web no tenía ni idea de que se trataba esto.

    Leyendo mis feeds encuentro una publicación acerca de Memcached, que me sirvió para entender un poco más de que se trata y como se utiliza de una forma por demás de clara.

    Memcached es un sistema de caché distribuido que se utiliza para guardar los datos de las aplicaciones en un (conjunto de) servidor(es) (servidores de caché), todo esto de una forma sencilla y transparente. Estas caracaterísticas lo han convertido en un sistema muy utilizado en varios proyectos.

    Memcached permite guardar lo que se nos ocurra y que a nuestro criterio sea digno de ser “cacheado“, ejemplo: resultados de cálculos o consultas a base de datos complejas, información de sesiones de los usuarios, etc.

    Memcached se ejecuta en uno o varios equipos que actuará(n) como servidores y de los cuales, entre otros parámetros, se puede ajustar el tamaño de la memoria que queremos que utilice para ello.

    Una vez instalados los servidores, las aplicaciones a través de una API podrán guardar elementos en la caché, recuperarlos o borrarlos, todo esto de una forma muy sencilla.

    memcachedarchitecture

    (más…)