La descripción encontrada en wikipedia de “profiling”:

Un “profiler” es una herramienta de análisis de performance que mide el comportamiento del programa mientras este está corriendo, particularmente la frecuencia y duración de las llamadas a funciones. La salida es un rastro (stream) de eventos o un sumario estático de los eventos observados (un “profile”, perfil o reseña). Los profilers usan una amplia variedad de técnicas para recolectar datos, incluyendo interrupciones por hardware, instrumentos de código, ganchos (hooks) del sistema operativo.

El uso de profilers es usado en el proceso de ingeniería de performance. Un profile generalmente es realizado relacionado la posición del código fuente donde suceden los eventos y el tamaño de las medidas de los datos que es proporcional al tamaño del código del programa. En contraste, el tamaño de un rastro es proporcional al tiempo de ejecución de un programa, haciéndolo impracticable. Para programas secuenciales, un profile, es generalmente suficiente, pero los problemas de pefrormance en programas paralelos (que esperan mensajes o temas de sincronismo) generalmente depende del tiempo de relación de los eventos, de esta forma requieren la localización total para tener un entendimiento del problema

Para ello tenemos que instalar php5-xdebug:

sudo aptitude install php5-xdebug

Una vez instalado el módulo Xdebug tenemos que editar su fichero de configuración que encontraremos en:

/etc/php5/apache2/conf.d/xdebug.ini

En ese fichero agregaremos las siguientes lineas:

xdebug.profiler_enabled = 1
xdebug.profiler_output_dir = (path de salida) “/home/usuario/tmp/”
xdebug.profiler_output_name = cachegrind.out. %R

Tras reiniciar el apache comprobaremos en un fichero php el resultado de phpinfo() para comprobar que el modulo xdebug está operativo.

Más parámetros de configuración: xdebug profiler

Al poner %R en el nombre de salida conseguimos que si estamos analizando el domonio localhost guarde los ficheros como: cachegrind.out.localhost

Para conocer más opciones de parametrización de xdebug.profiler_output_name en: http://www.xdebug.org/docs/all_settings#trace_output_name

De esta manera conseguimos que se vayan creando los ficheros que después leeremos con KCachegrind.

Instalamos Kcachegrind:

sudo aptitude kcachegrind kcachegrind-converters

Ahora solo tendremos que lanzar el programa Kcachegrind y abrir el fichero cachegrind.out.localhost. En el mismo directorio encontraremos más ficheros pero tenemos que abrir el fichero principal que es el que no tiene concatenado a su nombre con un punto una secuencia numérica.

kcachegrindkde

El programa analizará los logs de xdebug y nos lo mostrará con una interfaz gráfica intuitiva y no muy complicada de entender:

De esta manera podremos analizar si nuestra aplicación web pierde mucho tiempo en algún proceso en el que no hayamos reparado con anterioridad, el uso de memoria y las llamadas que se realizan a funciones y/o métodos.

Esta configuración está pensada para probarla en la máquina local de desarrollo, en ese caso en el path de salida que hemos configurado en el xdebug.ini tenemos que asignarle los permisos necesarios para que el usuario de apache www-data pueda escribir los logs.

Una vez finalizado su uso, es recomendable desactivar el profile de xdebug para que no nos sature de logs a los que no vamos a hacer caso.

Aunque el pantallazo es de un entorno KDE esta configuración y software se ha realizado en: Ubuntu 9.04 Gnome.

Si tu entorno de desarrollo es Windows, también puedes activar el módulo php_xdebug.dll en tu php.ini y seguir los mismos parámetros de configuración en tu fichero php.ini. Como herramienta para examinar los logs del profile xdebug puedes utilizar WinCacheGrind.

Espero que os sea de utilidad, si conocéis alguna herramienta y/o utilidad que os facilite la tarea de realizar aplicaciones ligeras agradecería el comentario.

Leer entradas relacionadas:

Es una herramienta para poder recuprar información de tus cd’s/dvd’s dañados. Tiene la posibilidad de “reconstruir” algún que otro sector dañado, pero si te ocurre como a mi que hay unos cuantos sectores dañados en un largo tramo de lectura pues no hay mucho que hacer.

Encontre esta alternativa a IsoBuster cuando a día de hoy intento recuperar un tar.gz de 4Gb que grabé en un DVD hace unos 4 días y parece ser que o grabó de manera defectuosa el tar.gz no se creó bien, la razón no lo he investigado, me interesa más recuperar esa información.

Probé la herramienta y es de fácil uso pero aunque mi caso no tiene solución con esta herramienta tampoco es el objetivo para la que está diseñada, ya que lo que promete es la recuperación de cd’s/dvd’s dañados. Podéis encontrar dvdisaster en los repositorios de ubuntu.

Aquí os dejo una captura del resultado de la lectura del dvd que intento recuperar.

dvdisaster

Como podéis ver en la imagen, la herramienta es sencilla de utilizar y puede ser la solución a algún que otro problema. La imagen muestra unos cuantos sectores dañados de seguido por lo que entiendo que esta herramienta no ha sido efectiva por esa razón.

Leer entradas relacionadas:

Tarde o temprano en el desarrollo de aplicaciones web nos enfrentamos a algún desarrollo que requiere internacionalizar la aplicación. El primer punto que creo que todos nos tenemos que preguntar a la hora de abordar una aplicación web es si el contenido tiene que ser multi-idioma o la aplicación será multi-idioma.

Si leemos rápido esa última frase puede parecer lo mismo… Si queremos hacer una aplicación multi-idioma simplemente significa que la interface de usuario tiene que estar disponible en más de un idioma, pero no por ello el contenido que se genere tiene que ser multi-idioma. Evidentemente si la aplicación tiene contenido multi-idioma estará acompañado de interface multi-idioma.

Esto hay que tener en cuenta a la hora de diseñar el modelo de datos para que se adapte a nuestras necesidades.

Este artículo está enfocado principalmente a crear una interface multi-idioma y sistemas de traducción por lo que no entraré en como realizar un modelo de datos para soportar contenido multi-idioma.

Podemos reinventar la rueda, que en algunos casos puede ser nuestra rueda preferida en la que nos sintamos cómodos o aplicar estándares para internacionalizar una aplicación web. Si desconocemos la existencia de estos estándares es muy probable que recurramos a la creación de un array asociativo por idioma, ya que realizar una función que nos encuentre la traducción no supondría una grán complicación. Lo malo, es que no siempre pensamos en la explotación de la aplicación y en que la persona que tenga que mantener las traducciones no tiene porqué tener conocimientos técnicos.

Si utilizamos aplicaciones open source es muy probable que nos encontremos el uso de GETTEXT. Este sistema de traducción utiliza ficheros .po y .mo. Los ficheros .po son los ficheros que contienen las traducciones en formato texto:

msgid “Texto original”
msgstr “Texto traducido”

eclipse_gettext

Lo que me gustó es que para poder editar un fichero .po no lo tienes porque realizar con un editor de texto convencional, si no que existen editores multi-plataforma para este formato de ficheros, lo que el mantenimiento de traducciones se hace más práctico. El que me pareció de mayor utilidad a la hora de desarrollar fue gted, un plugin (más) que se integra en eclipse.

En mi opinión es más cómodo trabajar con “pestañas” que con ventanas, y estoy seguro que más de uno compartiréis conmigo esta misma opinión.

Teniendo en cuenta el inconveniente del mantenimiento conocí el formato estándar para traducción de documentos, XLIFF. Es un formato basado en XML que fue normalizado por la organización OASIS en el 2002.

Este formato para la internacionalización de documentos no es para utilizarlo exclusivamente en aplicaciones web, al igual que tampoco lo es el GETTEXT. En la especificación de la versión 1.2 podemos encontrarnos como tiene que ser la extructura de un fichero XLIFF.

<xliff version=’1.2′ xmlns=’urn:oasis:names:tc:xliff:document:1.2′>
<file original=’hello.txt’ source-language=’en’ target-language=’es’
datatype=’plaintext’>
<body>
<trans-unit id=’0′>
<source>Hello world</source>
<target>Hola Mundo</target>
</trans-unit>
</body>
</file>
</xliff>

Donde a parte de este sencillo ejemplo se pueden complementar con mucha más información según la especificación.

La ventaja que encontré al utilizar este sistema de internacionalización es que las empresas que ofrecen servicios de traducción soportan este formato, y al igual que en GETTEXT, XLIFF también tiene editores estándar y en muchos casos multi-plataforma para el mantenimiento de las traducciones.

A diferencia de GETTEXT, XLIFF trabaja sobre el mismo fichero, sin tener que crear una versión compilada. Esto es una ventaja para comprobar si falta alguna traducción y para poder agregar nuevas traducciones en la fase de desarrollo.

En la busca de editores para XLIFF me encontré que muchos de los que decian cumplir con el estándar realmente no lo hacían, como Open Languaje Tools, y otros estaban desactualizados en especificaciones “antiguas”. Open Source y multi-plataforma no encontré ningún editor actualizado, pero sí un editor de pago. Hearstome Translation Studio, un editor profesional para la internacionalización de documentos. Aunque podemos encontrarnos en la Red proyectos web interesantes como este editor en flash lo que nos permitiría dar acceso a las personas que tengan que realizar las traduciones en nuestras aplicaciones.

Escojamos el sistema que escojamos para internacionalizar nuestras aplicaciones, si estamos hablando de entornos Web, es interesante el utilizar un parser de nuestras plantillas/templates para el mantenimiento de la traducción de nuestra interface, de esta manera simplemente generaríamos el archivo origen donde cualquier persona pudiera traducir.

Tiendo en cuenta que has leído “todo el tocho”  :-) ¿Como internacionalizas tus aplicaciones/páginas web?

Leer entradas relacionadas:

Febrero 15th, 2009Debian 5.0 Lenny estable

Que bonito para todos los debianitas :-) el 14 de febrero la comunidad debian nos ha obsequiado con su últimaversión estable y esperada por todos. Ahora las distros basadas en debian tal vez sufran algun que otro cambio.

La última versión estable de Debian es la 5.0. La última actualización de esta versión se publicó el 14 de febrero de 2009. Puede leer más sobre las versiones disponibles de Debian.

Si desea empezar a usar Debian, puede obtener una copia con sencillez, y seguir las instrucciones de instalación para instalarla.

Leer entradas relacionadas:

Para descargarse el video solo tenemos que acceder a un portal de videos y utilizando un plugin en nuestro firefox como el DownloadHelper.

Una vez que tengamos el fichero FLV tenemos que comprobar que tenemos instalado el paquete ffmpeg.

Para extraer el audio del video tenemos que ejecutar en consola este comando:

ffmpeg -i archivo.flv archivo.mp3

De esta manera siempre podremos tener timpres para el móvil originales de los videos que podamos ver en internet que el audio nos haya gustado ^_^

Leer entradas relacionadas:

Linux Phone Standards Forum (LiPS) ha anunciado que se unirá a Linux Mobile Foundation (LiMo), en la búsqueda de la consolidación del Linux móvil, evitando la fragmentación y la redundancia. (más información)

Google también dispone de software para el desarrollo en dispostivos móviles, Android el cual pretende impulsar y hacer crecer gracias a Android Developer Challenge.

Nokia adquiere Symbian y cede el código a la recientemente creada Fundación Symbian iniciativa de Nokia, AT&T, LG Electronics, Motorola, NTT DOCOMO, Samsung, Sony Ericsson, STMicroelectronics, Texas Instruments y Vodafone.

Comentado en un post anterior que Canonical Ltd, ha dado un paso más hacia la disponibilidad de este software en dispositivos móviles, todo gracias a Moblin Project.

Fabricantes de hardware valorando otros sistemas operativos: ubuntu mobile y la posibilidad de que este apareciera en dispositivos HTC.

Ahora bien, Windows Mobile parece que fue el pionero en esto de los juguetes móviles pero ahora comienza una carrera imporante, cuando las comunicaciones están más extendidas y servicios móviles más en el día a día.

Siempre que exista competencia, los más beneficiados siempre somos nosotros, los usuarios.

Leer entradas relacionadas:

Junio 25th, 2008Eclipse Ganymede is Here!

Cuando estuve probando la versión Ganymede RC3 ya me pareció bastante estable por lo que no me extraña que hayan lanzado ya la versión final del editor.

Una de las cosas que me han parecido muy interesantes a la hora de utilizar el plugin para desarrollar en php es que a parte de localizarte las funciones de tu proyecto web, también puedes localizar con un ctrl+click donde está definida la constante, y al igual que te autocompleta con el nombre de funciones o métodos de una clase, también lo hace con los ficheros que vas a incluir!!!

Por ahora estoy encantado con esta versión, a parte de que rebosa una mayor estabilidad al producto de la versión 3.2 (obviamente Ganymede es la 3.4 tiene que ser mejor ^_^)

No he tenido la oportunidad de probar la versión Windows/MacOS, pero entiendo que irá igual de bien que la versión Linux.

Leer entradas relacionadas:


© 2007 Pensando en Red | iKon Wordpress Theme | Powered by Wordpress