jun
29

En los últimos artículos sobre las Macros en C/C++ hemos explicado de una forma un tanto rápida todo el potencial que presenta esta herramienta si sabemos utilizarla con un nivel medio-alto en determinadas situaciones.

Uno de los problemas que se nos presentan en ocasiones a la hora de trabajar en un lenguaje como C es que, a pesar de que contamos con depuradores de código, no siempre tenemos uno a mano, por lo que si a la vez que documentamos podemos mostrar a nuestro capricho y en función de la situación un log de lo que está sucediendo durante su ejecución, podremos hacernos una idea bastante aproximada de si todo va bien o no.

Tras esta pequeña reflexión me lanzo a compartir con vosotros un pequeño fichero .h que nos facilitará enormemente la tarea en una 20 líneas y que he utilizado ya en el desarrollo de varios programas:


#include <stdio.h>
//#define DEBUG 0
#define DEBUG 1
#ifndef __LOG_H
#define __LOG_H
 #if DEBUG == 1
 #define log(format, args...) \
		fprintf (stderr, "%s - %i: ", __FILE__, __LINE__);\
		fprintf (stderr, format "\n", ##args);
 #define warning(format, args...) \
			log("/!\\ "format" /!\\", ##args)
#define error(format, args...) \
		log("(X) "format" (X)", ##args)
 #else
#define log(format, args...) ;
#define warning(format, args...) ;
#define error(format, args...) ;
 #endif
#endif

Este fichero tendremos que incluirlo en nuestro programa escrito en C mediante una directiva #include:

#include "log.h"

en este caso he llamado al fichero que contiene esas 20 líneas de código.

De manera que si tenemos declarado DEBUG con un valor de 0 no se mostrará salida alguna y no sólo eso, sino que las líneas desaparecerán (es un claro ejemplo de uso de macros, ya que en nuestro programa en producción puede que deseemos tener más velocidad de procesado y no nos interese interactuar con salidas ni llamar a funciones que no hagan nada), mientras que si tiene un valor de 1, escupirá toda la información que deseemos por, en este caso, la salida de error de nuestro programa.

Si ejecutamos el siguiente programa en C:


#include "log.h"
int main(int argc, char** argv){

log("asdf%i", 1)

log("asdf")

warning("esto es una alerta")

warning("esto es una alerta%i", 1)

error("esto es un error")

error("esto es un error%i", 1)

}

obtendremos la siguiente salida:

bottle.c – 4: asdf1

bottle.c – 5: asdf

bottle.c – 6: /!\ esto es una alerta /!\

bottle.c – 7: /!\ esto es una alerta1 /!\

bottle.c – 8: (X) esto es un error (X)

bottle.c – 9: (X) esto es un error1 (X)

La ausencia de puntos y coma después de llamar las macros no es un error, es que simplemente no hacen falta.

Finalmente y a modo aclaratorio, las constantes utilizadas en el fichero log.h __FILE__ y __LINE__ son dos directivas de preprocesador que nos indican en qué lína y fichero de código tenemos la llamada a ese log.

Categoría C/C++, Producción propia, Programación | Sé el primero en comentar!
may
30

http://diary.dipler.org

Seguimos con el desarrollo de la modesta aplicación que nos permite llevar un diario mientras nos facilita la vida para llevar un listado de tareas e ideas de forma completamente privada, y es que después de un tiempo sin actualizaciones oficiales, me complace presentar Diary 2.3, esta versión viene con las siguientes novedades que, espero les parezcan interesantes:

  • Corrección de errores puntuales en la edición de entradas categorizadas con un flag distinto al de Diario.
  • Corregido el error al pulsar el botón more después de haber realizado una búsqueda.
  • Corregido el error al codificar los signos +.
  • Mejora de los estilos para mejorar su compatibilidad con Firefox 4 e Internet Explorer 9.
  • Añadida la función de crecimiento automático del area de texto en función del contenido para mensajes nuevos.
  • Añadida la función de crecimiento automático del area de texto en función del contenido para el modo de edición de mensajes.
  • Añadidos hastags al estilo de los tags de Twitter, en los que al pulsar en ellos se realiza automáticamente una búsqueda con dchos tags.
  • Por defecto cuando llegamos a la parte final de la lista de elementos cargados, s

http://diary.dipler.org

Tags:
Categoría PHP, Producción propia | Sé el primero en comentar!
mar
4

http://diary.dipler.org

Llevabamos ya un tiempo sin añadirle mejoras a la aplicación Diary, así que he creido oportuno lanzar una actualización en estas fechas. Si bien la actualización no tiene grandes mejoras abre paso a un nuevo ámbito de desarrollo. Para futuras versiones se pretende añadir notificaciones por email, planificar tareas para fechas seleccionadas y la integración de la aplicación con redes sociales como Facebook y/o Twitter.

En resúmen, las mejoras añadidas y los errores corregidos en esta versión son los siguientes:

  • Mejorado el rendimiento interno de alguna de las funciones del núcleo de la aplicación.
  • Se permite el borrado de entradas.
  • Se permite la edición de entradas (en caso de ser una tarea, esta estará marcada como no terminada por defecto.
  • Cambios leves en las estrucutras de datos que almacenan la información relativa a las entradas.
  • Añadidos efectos de transiciones en la barra de notificaciones.
  • Movida a la parte inferior la barra de notifiaciones.
  • Corregido el error al introducir en una entrada la barra inclinada “\”.
  • Si una tarea está finalizada se mostrará el borde de color verde.
  • Mejorada la notificación de cargando.
  • Leve cambio en la hoja de estilos en lo relevante a enlaces,…
Tags:
Categoría PHP, Programas | Sé el primero en comentar!
feb
10

http://diary.dipler.org

Como ya sabréis, las versiones de Diary 0.2.x están girando en torno a los diferentes tipos de entradas que podemos tener, así como en una mejora del rendimiento y de la seguridad que presenta la aplicación para permitir al usuario utilizar de una forma sencilla y práctica la aplicación sin tener que preocuparse de nada en absoluto. Dentro de las mejoras podemos diferenciar las de dos tipos:

  • De usuario (mejora la experiencia del usuario para con la aplicación)
    • Nueva interfaz de usuario
    • Nueva interfaz de búsqueda con nuevos filtros
    • Nuevo estilo de marcado de tareas pendientes y terminadas (imágenes en lugar de chekbox)
  • De servicio (mejora la calidad del servicio de forma transparente al usuario)
    • Ajax combinado con XML
    • Mayor seguridad a la hora de intentar replicar sesiones

Por el momento la aplicación está optimizada, como ya hemos dicho, para navegadores modernos, es decir, últimas versiones de Chrome y Firefox, en este último caso, y para sacarle el máximo jugo a la interfaz, será necesario el uso de Firefox 4.0

http://diary.dipler.org

Tags:
Categoría PHP, Producción propia, Programas | 1 Comentario »