IV International Conference of Unix at Uninet
  • Presentation
  • Register
  • Program
  • Organizing Comittee
  • Listing of registered people
  • Translators team
Antonio Larrosa

felix jaime: startlog #redes
felix jaime: startlog #qc
fernand0 bueno
fernand0 vamos allá
fernand0 Hola,
fernand0
fernand0 hoy tenemos con nosotros a otro veterano. Ha participado en casi todas las
fernand0 ediciones anteriores del congreso.
fernand0
fernand0 Se trata de Antonio Larrosa de Málaga,
fernand0 España. Es uno de los desarrolladores de KDE y hoy nos va a hablar de
fernand0 "Herramientas de desarrollo de KDE".
fernand0
fernand0 Es licenciado en matemáticas y representante del proyecto KDE en España.
fernand0 Y si le preguntan mucho al final, igual nos da una noticia interesante ;)
fernand0
fernand0 Gracias a Antonio por venir a contarnos cosas intersantes como hace siempre
fernand0 y gracias a todos ustedes por acudir a esta conferencia.
fernand0 Como es habitual, la conferencia será en este canal.
fernand0 Si hay traductores, la traducción se hará en #redes
fernand0 Finalmente, si hay preguntas y comentarios, los pueden hacer en #qc
fernand0
fernand0 antlarr ...
antlarr muchas gracias fernand0
antlarr y gracias a todos los asistentes por acudir por aquí
antlarr a ver algunas cosas sobre herramientas de desarrollo de KDE
antlarr Aunque hablaré sobre herramientas hechas con KDE
antlarr éstas se pueden usar para desarrollar cualquier tipo de aplicaciones
antlarr de KDE, de GNOME, de consola, abiertas, cerradas, etc
antlarr así que espero que sea del agrado y el interés de todos
antlarr Para empezar (y casi en la totalidad de la charla) hablaré de kdevelop
antlarr Como ya conoceréis la mayoría, KDevelop es el entorno de desarrollo integrado de KDE
antlarr http://developer.kde.org/~larrosa/umeet2004/umeet_1.png
antlarr ahí he dejado una foto del entorno
antlarr Al final dejaré todas las fotos en mi página web o en la página web del congreso
antlarr Como veis, está compuesto por distintas áreas
antlarr En la parte izquierda se puede ver el árbol de clases en el caso de que estemos desarrollando una aplicación con un lenguaje orientado a objetos
antlarr Igual que se puede ver la lista de ficheros en el directorio actual, organizados por grupos,
antlarr la lista de marcadores, etc.
antlarr Bueno, tendría que comentar que aunque en las fotos aparecen todos los mensajes del programa en inglés, esto es así porque yo lo uso en inglés, pero está todo traducido al castellano
antlarr para los que quieran usarlo en nuestro idioma
antlarr si nos fijamos en la parte de abajo, vemos que hay pestañas para abrir otras áreas
antlarr como son, la de la salida estandar (stdout) y stderr de la aplicación
antlarr y algunas pestañas para usar herramientas específicas que luego comentaré
antlarr En la parte derecha, vemos que hay una zona de documentación, etc. que luego también comentaré mas detalladamente
antlarr http://developer.kde.org/~larrosa/umeet2004/umeet_2.png
antlarr Ahí vemos el diálogo que aparece al crear un nuevo proyecto
antlarr Como veis, se puede programar con KDevelop en multitud de lenguajes y no sólo en C o C++
antlarr Incluyendo: Java, Python, Pascal, Perl, PHP, Ada, etc.
antlarr Al abrir cada uno de los lenguajes, aparecen más opciones para crear un proyecto con una estructura básica ya hecha, de forma que no haya que programar las cosas básicas de la aplicación
antlarr En el caso de C++, da la opción de desarrollar un proyecto con ClanLib, con ncurses, SDL, etc
antlarr Como veis, algunos apartados como QMake, KDE, GTK son también ramas que se abren
antlarr por ejemplo, al abrir KDE, da la opción de crear una aplicación de KDE normal, o que usa KParts (la arquitectura de componentes de KDE), crear un salvapantallas, un módulo para el Centro de Control de KDE
antlarr un "esclavo de KIO" (ioslave en inglés), etc
antlarr igualmente, al abrir la rama de Proyecto en C, da la opción de crear un proyecto para GNOME, etc
antlarr Como cosa curiosa es que también está preparado para programar proyectos con compiladores cruzados. En la foto se ve que se puede programar para Win32, y en la parte de C, también aparece por ejemplo la opción de desarrollar una aplicación para GameBoy Advance
antlarr En la parte de Embeeded se puede también desarrollar para PDAs (Zaurus, ipaqs, etc.)
antlarr Me preguntan que qué es un "esclavo de KIO"
antlarr KIO es la arquitectura de KDE para entrada/salida de datos, es decir, lo que usan todas las aplicaciones de KDE para leer/escribir ficheros y directorios
antlarr al usar KIO, todas las aplicaciones se abstraen de la forma de acceder a los ficheros, y en vez de guardar la dirección de un fichero como una cadena (típico char *file="/tmp/prueba"), lo que hacen es usar una URL
antlarr y la arquitectura KIO se encarga a través de los "esclavos" de acceder a cualquier protocolo que se haya especificado
antlarr Por ejemplo, si estás editando un fichero con kate, puedes abrir el diálogo de guardar fichero normal estandard, el de toda la vida, y decirle que lo guarde en ftp://mimaquina/pub/incoming/mifichero.txt
antlarr en ese caso, KIO usará el esclavo que "habla" el protocolo ftp para guardar ese fichero
antlarr Volviendo al tema de KDevelop :)
antlarr El crear un proyecto que sea un esclavo de KIO sirve para implementar un protocolo tuyo propio, que automáticamente TODAS las apliaciones de KDE puedan usar
antlarr Ahora mismo por ejemplo, hay módulos o esclavos de KIO para cosas tan dispares como acceder a imágenes de una cámara de fotos que esté conectada al usb, acceder a ficheros de la red emule, (obviamente, http, https, ftp, y el resto de estándares)
antlarr y para mi gusto, de los más útiles, el protocolo "fish" que hace que al ir a fish://usuario@maquina desde cualquier programa de KDE (konqueror por ejemplo) se acceda a esa maquina mediante ssh
antlarr pero bueno, vamos a volver a las herramientas de desarrollo que como veis, KIO solo da tema para una charla completa :)
antlarr Estábamos en la creación de un nuevo proyecto
antlarr Una vez que se le pone el nombre del proyecto, pide el nombre del desarrollador que lo crea y algunos datos fundamentales, como la licencia que va a tener el proyecto y la cabecera que va a haber en los ficheros
antlarr http://developer.kde.org/~larrosa/umeet2004/umeet_3.png
antlarr Ahí teneis lo que comentaba de la parte de documentación al lado derecho del entorno
antlarr Como veis, ahi documentación extensa y variada de todos los temas necesarios para cualquier desarrollador
antlarr Obviamente, incluir junto con kdevelop toda la documentación de todos los temas sería una barbaridad porque ocuparía muchísimo y no se tendría actualizado, así que cuando se pulsa para ver la documentación de alguno de esos temas, lo que ocurre es que
antlarr kdevelop muestra la página web oficial de la documentación (usando KIO, por supuesto :) )
antlarr además, si no se tiene acceso a internet, se puede copiar localmente
antlarr o añadir enlaces a sitios nuevos que hagan falta para nuestro proyecto
antlarr http://developer.kde.org/~larrosa/umeet2004/umeet_4.png
antlarr Aquí vemos una de las cosas más interesantes
antlarr Cuando se crea un proyecto nuevo con KDevelop, éste crea un proyecto que usa automake/autoconf para crear los Makefiles necesarios
antlarr como sabréis la mayoría, editar los Makefile.am puede ser bastante rollo si no se tiene mucha práctica (o incluso con práctica), así que hay una pestaña llamada "Automake Manager" que da la posibilidad de editar los makefiles gráficamente
antlarr En esta foto vemos que esto está dividido en dos partes
antlarr arriba, aparecen los directorios que componen el proyecto
antlarr al pulsar en cada uno, vemos el contenido del Makefile (de hecho, el del Makefile.am) de ese directorio
antlarr En este caso, vemos que ese Makefile genera un programa binario llamado kbillar, que está compuesto por esos ficheros cpp
antlarr Además, hay un fichero .desktop
antlarr que cuando se instala sirve para que aparezca una entrada en el menú del escritorio
antlarr Vemos también que hay bastantes iconitos en la parte de arriba de la pestaña de automake
antlarr por ejemplo, el segundo de arriba sirve para generar un nuevo "objetivo" (un nuevo "target")
antlarr http://developer.kde.org/~larrosa/umeet2004/umeet_5.png
antlarr ahí se puede ver las objetivos que se pueden hacer: un programa, una librería normal, una librería de libtool, un script, una cabecera, etc
antlarr http://developer.kde.org/~larrosa/umeet2004/umeet_6.png
antlarr Esa foto era para que se viera un poco el menú contextual de un objetivo de automake
antlarr como veis, al crear un objetivo se le dice que se quiere crear una librería (de libtool o no), pero no se dice si va a estática o no
antlarr por ejemplo
antlarr eso se dice en el diálogo de opciones de la propia librería
antlarr Además, en ese menú contextual, hay una opción que pone "Make target active"
antlarr esto es útil por si un mismo proyecto genera varios ficheros ejecutables
antlarr para poder indicar por ejemplo, cual es el que queréis depurar cuando se pulse en "depurar"
antlarr Bueno, supongamos ahora que tenéis un proyecto ya creado, y habéis hecho unos ficheros de código fuente en otro ordenador o alguien os lo ha dado para que los reutilicéis
antlarr en ese caso, es útil la opción de añadir ficheros existentes
antlarr http://developer.kde.org/~larrosa/umeet2004/umeet_7.png
antlarr Basta con arrastrárlos del listado de directorio de la izquierda a la parte derecha
antlarr Una cosa interesante de la que no he sacado fotos, pero que creo que hay que comentar es la posibilidad de usar KDevelop con un proyecto que ya existe y no fue creado con KDevelop
antlarr en este caso, hay una opción para importar un proyecto existente
antlarr ya use automake/autoconf o incluso Makefiles propios vuestros completamente hechos a mano
antlarr en el primer caso, KDevelop analiza los Makefile.am y da todas las opciones, y en el segundo caso, simplemente quita del interfaz todas las opciones que sirven para modificar los Makefiles y se encarga de no modificarlos automaticamente
antlarr Pasamos a http://developer.kde.org/~larrosa/umeet2004/umeet_8.png
antlarr Vamos a hablar del completado de texto
antlarr aunque antes hay una pregunta
antlarr "antlarr, yo por ejemplo uso gnome y el anjuta no me dá ninguna ventaja frente a trabajo con proyectos externos, por lo cual acabo usando nano con syntaz highlighting y poco más, sin IDE's. quisiera saber si kdevelop soporta algo así cómo simple indexación del código del proyecto y trabajar en él sin tener que importar nada innecesario (como Anjuta con las autotools)"
antlarr efectivamente, sí que lo soporta
antlarr Si usas kdevelop, puedes aprovechar toda la parte de completado de texto (del que ahora hablaré), depuración integrada, documentación a mano, etc
antlarr (sin hablar, de la compilación en el mismo entorno, sin tener que salirte y entrar y tal)
damage in the first case, KDevelop analyzes the Makefile.am and gives all the options, and in the second case, simply it clears of the interface all the options that serve to modify the Makefiles and it is in charge of not modifying them automatically
damage *perdon*
antlarr perdonado :)
antlarr Continuamos hablando entonces del autocompletado
antlarr Antes quizás habría que explicar que KDevelop usa la arquitectura de componentes de KDE para empotrar una componente de Kate (el editor de texto avanzado) dentro del interfaz, y es el que se usa para editar el código fuente
antlarr el editor de texto de por sí, incluye plugins
antlarr que se configuran en el diálogo que se ve en la foto umeet_8
antlarr uno de esos plugins es el de completado de palabras, y sirve para completar cualquier palabra que aparezca en el mismo fichero
antlarr esto se hace así porque Kate es "simplemente" un editor de textos, y por lo tanto no entiende realmente de "lenguajes de programación"
antlarr por otra parte, KDevelop también tiene un analizador de código fuente bastante avanzado que analiza todo el código fuente de la aplicación y comprende lo que son tipos de datos, clases, métodos de clases, etc
antlarr http://developer.kde.org/~larrosa/umeet2004/umeet_18.png
antlarr (sí, hay un pequeño salto)
antlarr Como veis, la diferencia está en que uno es inteligente, y sólo completa cosas que tienen sentido (sea esto bueno o malo) y el otro lo autocompleta todo, pero sólo dentro del mismo fichero
antlarr mi recomendación personal, es que lo configuréis como lo he mostrado en la foto, es decir, desactivando el autocompletado automático del que autocompleta dentro del fichero, y activando todas las opciones del autocompletado específico de C++
antlarr (o C)
antlarr así, cuando estéis escribiendo "miobjeto."
antlarr automaticamente se abre una pequeña ventana con una lista con los miembros de la clase de miobjeto
antlarr y cuando queráis completar texto por ejemplo dentro de un comentario, podeis usar Ctrl+Espacio para que aparezca la misma ventana, pero con el resto de palabras del fichero
antlarr (en este caso, hay que escribir al menos 2 o 3 letras de la palabra según lo hayáis configurado)
antlarr Pregunta: antlarr: aquí va mi pregunta -> ¿en cualquiera de los lenguajes permite ctrl+espacio?
antlarr Sí
antlarr Ctrl+espacio es una característica del editor de texto (kate), que completa palabras dentro del fichero, no utiliza ningún parseador "inteligente" que diferencie funciones de una clase de las de otra, por ejemplo
antlarr Pregunta: antlarr: inclusive en packages de perl? [el plugin EPIC de eclipse me muestra los métodos de los objetos con ctrl+espacio]
antlarr La verdad es que eso no te lo puedo decir, porque me temo que no he programado nunca en perl "en serio"
antlarr (yo soy más de python :) )
antlarr así que no sé si traerá alguna forma de autocompletar de forma inteligente en perl
antlarr Bueno, para los programadores de C/C++, una cosa típica (sobre todo dentro de un entorno empresarial) es usar librerías privadas
antlarr no estándares
antlarr por supuesto, todo el mundo quiere que se autocompleten también los métodos de los objetos de clases de esas librerías
antlarr pero no se tiene una copia de las cabeceras de esas librerías dentro de todos los proyectos
antlarr con lo que el analizador de KDevelop no puede encontrarlas
antlarr en principio :)
antlarr Como habréis visto en la última foto, hay un botón "Add Persistant Class Store"
antlarr que al pulsarlo muestra un diálogo:
antlarr http://developer.kde.org/~larrosa/umeet2004/umeet_19.png
antlarr Aquí se puede dar un nombre a la librería y darle una serie de directorios de donde KDevelop puede leer las cabeceras, entonces, genera una pequeña base de datos con esa información y permite usar el autocompletado de funciones y clases de esa librería en cualquier proyecto
antlarr Bueno, vamos a seguir por orden con las imágenes
antlarr http://developer.kde.org/~larrosa/umeet2004/umeet_9.png
antlarr Ahí simplemente muestro el terminal integrado
antlarr que es bastante útil a veces para no tener que abrir un konsole e ir al directorio donde esté el fichero de código fuente en cuestión
antlarr Seguimos con las opciones para personalizar kdevelop al gusto y estilo de cada programador
antlarr como todos sabemos, practicamente no hay dos programadores en el mundo que usen el mismo estilo de programación, asi que configurar el editor para que automaticamente se ajuste a nuestro gusto puede ser complicado
antlarr http://developer.kde.org/~larrosa/umeet2004/umeet_10.png
antlarr aquí vemos se puede configurar el estilo de formateo del código
antlarr http://developer.kde.org/~larrosa/umeet2004/umeet_11.png
antlarr http://developer.kde.org/~larrosa/umeet2004/umeet_12.png
antlarr http://developer.kde.org/~larrosa/umeet2004/umeet_13.png
antlarr http://developer.kde.org/~larrosa/umeet2004/umeet_14.png
antlarr muestran los distintos estilos más o menos estándares que existen
antlarr por si directamente se quiere usar uno de ellos
antlarr por ejemplo el que se llama Linux es el que se debe usar en el kernel de linux
antlarr (hablando del kernel, se me olvidó comentar antes como curiosidad que una de las opciones que da al crear un nuevo proyecto es crear un módulo para el kernel)
antlarr Si aun así, no nos gusta ninguno de estos estilos, se puede seleccionar "Definido por el usuario" y especificarlo en las siguientes pestañas:
antlarr http://developer.kde.org/~larrosa/umeet2004/umeet_15.png
antlarr Ahí se muestra la eterna lucha entre ¿espacios o tabuladores?
antlarr qué cosas se deben indentar y cuanto
antlarr y en http://developer.kde.org/~larrosa/umeet2004/umeet_16.png
antlarr permite especificar otros parámetros del estilo de cada uno
antlarr en http://developer.kde.org/~larrosa/umeet2004/umeet_17.png
antlarr se pueden ver los plugins que hay activados en kdevelop
antlarr tengo resaltado el de CTags porque además del autocompletado propio de Kate, y el de KDevelop, también se puede usar ctags
antlarr como se puede ver en http://developer.kde.org/~larrosa/umeet2004/umeet_22.png
antlarr Me dicen que copie de #qc: antlarr, lo del modulo del kernel ya es un puntazo ;-)
antlarr Otro aspecto a configurar es el estilo de nombrar a los métodos que toman o ponen el valor de un atributo de una clase
antlarr http://developer.kde.org/~larrosa/umeet2004/umeet_20.png
antlarr Ahí se muestra como automáticamente a partir del nombre de una variable, KDevelop puede obtener automáticamente el nombre de la función que devuelve el valor de esa variable y el nombre de la función que le cambia el valor
antlarr esto sirve para que funcione mejor el diálogo de crear atributos de una clase, u otros sitios donde hay que automatizar estas cosas
antlarr Más cosas curiosas, que además de curiosas son BASTANTE útiles...
antlarr http://developer.kde.org/~larrosa/umeet2004/umeet_21.png
antlarr No os ha pasado nunca eso de que os poneis a compilar y se os ha olvidado un ; o un paréntesis y después de compilar un rato teneis que volver a editar, buscar donde está el fallo realmente y probar de nuevo? (porque ya sabéis que los problemas de que faltan ; son bastante escandalosos en el compilador)
antlarr supongo que si alguien dice que no le ha pasado nunca está mintiendo :)
antlarr así que kdevelop tiene una cosa para que no suceda esto ya que avisa cuando encuentra algún problema cambiando el color de la linea, poniendo un icono de "problema" y añadiendo una entrada a la lista de "problemas"
antlarr todo esto de forma completamente automática mientras se está editando el código fuente
antlarr "en tiempo real"
antlarr En esa foto le he quitado el ; de justo antes de los cierres de llave
antlarr para que se viera el problema
antlarr Además, mientras leía el código fuente, encontré un problema que marqué con un comentario (simplemente escribiendo // Fixme blah blah ) para arreglarlo más tarde. Así que KDevelop me avisa diciéndome que hay algo que hay que arreglar
antlarr Igualmente, extrae de la documentación de docbook la lista de "to-do"s (tareas por hacer)
antlarr Bueno, tenía aquí una foto del diálogo de editar opciones de un objetivo de Makefile (un binario en este caso)
antlarr que no me he acordado de poner antes:
antlarr http://developer.kde.org/~larrosa/umeet2004/umeet_23.png
antlarr Simplemente para que se vea como se hace que un ejecutable linke con otra librería más aparte de las estándares
antlarr Más cosas interesantes: Las expresiones regulares
antlarr ¿qué hacer cuando hay que depurar una expresión regular?
antlarr es decir, hacer pruebas para ver con qué textos concuerda una expresión regular
antlarr http://developer.kde.org/~larrosa/umeet2004/umeet_24.png
antlarr en el menú de herramientas de kdevelop, aparece una herramienta para hacer este tipo de pruebas
antlarr en ese diálogo podemos indicarle qué tipo de expresiones regulares queremos usar (de grep, de egrep, de QRegExp o de KRegExp), la expresión regular, y una cadena te prueba. Y nos dice si concuerda o no y qué subgrupos se obtienen
antlarr (QRegExp y KRegExp son dos clases, de Qt y KDE respectivamente muy útiles para usar expresiones regulares)
antlarr así que se pueden hacer pruebas muy rápidamente y muy fácilmente
antlarr sin tener que editar, compilar, ejecutar, editar, compilar, ejecutar, editar ... etc.
antlarr Además, generalmente todos los programadores con algo de experiencia conocemos las expresiones regulares y podemos escribir la mayoría de las que necesitamos casi sin problemas directamente
antlarr pero si la expresión regular es muy compleja, o simplemente no tenemos experiencia o no conocemos bien las expresiones regulares, podemos usar un editor visual
antlarr http://developer.kde.org/~larrosa/umeet2004/umeet_25.png
antlarr El editor de expresiones regulares es una componente estandar de kde que se utiliza en todos (o casi todos) los diálogos de búsqueda de kde (por ejemplo, incluso en el de konqueror)
antlarr seleccionando de los botones de arriba se van añadiendo componentes en el área de trabajo (donde pone "Line Start" en un cuadrado, h ... spaces, lue )
antlarr como veis, se puede usar de forma totalmente visual, y practicamente no hace falta conocer nada, para obtener una expresión regular aceptable, ya que en la parte de ASCII syntax se escribe la expresión regular en la forma conocida por todos automaticamente
antlarr en este caso, el texto (de la cadena de prueba) que concuerda se subraya, y se pone en rojo con letras un poco más grandes
antlarr pero si con el ratón seleccionamos algunas de las componentes visuales de arriba ( http://developer.kde.org/~larrosa/umeet2004/umeet_26.png ) se puede ver con qué parte del texto concuerdan dichas componentes
antlarr Voy ahora a hablar un poco de herramientas para depurar código y para encontrar errores una vez que lo hemos desarrollado con nuestro kdevelop configurado a nuestro gusto :)
antlarr voy a empezar con una aplicación que no se conoce tanto como se debería: Valgrind
antlarr Si KDevelop ha recibido en el 2004 el primer premio del Linux New York 2004 Conference & Expo a la mejor herramienta de desarrollo, al igual que hizo en el 2002 y 2003 con el Linux New Media Award, Valgrind no se queda atrás
antlarr no tanto en premios (ya que se está haciendo conocido poco a poco) sino en usuarios
antlarr Usándolo practicamente todos los proyectos de software libre (OpenOffice, KDE, GNOME, Mozilla, MySQL, PostgreSQL, etc.) e incluso la NASA lo ha usado para depurar el "Mars Exploration Rover"
antlarr o el CERN
antlarr lo más curioso es que incluso se ha utilizado para depurar juegos como el Unreal Tournament 2003 y 2004, Medal of Honour, o el Yahoo! Messenger
antlarr Una vez dadas esas credenciales, explico lo que es :)
antlarr Basicamente, es una máquina virtual, que ejecuta el binario que se quiera depurar internamente y muestra problemas que encuentre, analizando cada uno de los comandos que ejecuta
antlarr El uso básico que se le da es para encontrar problemas de memoria, ya sea, de pérdida de memoria, de escritura en zonas de memoria en las que no debería escribir, etc
antlarr http://developer.kde.org/~larrosa/umeet2004/umeet_27.png
antlarr Ahí se ve la integración de kdevelop con valgrind
antlarr he hecho un programa muy simple que simplemente llama a la función f
antlarr que aparece completa en esa foto
antlarr y le he pasado valgrind usando una entrada del menú "Debug"
antlarr Como veis, automaticamente ha dicho que hay una "escritura inválida de tamaño 1 en la función f, linea 37 de ese fichero
antlarr ¿alguien ve donde está el problema?
antlarr efectivamente, hemos reservado 5 caracteres, y en el bucle for estamos iterando desde el 0 hasta el 5, es decir 6 caracteres, con lo que la última iteración del bucle es incorrecta
antlarr Si vamos para abajo en la pestaña de valgrind vemos más cosas todavía
antlarr http://developer.kde.org/~larrosa/umeet2004/umeet_29.png
antlarr Nos dice que hay 5 byes definitivamente perdidos en un sólo bloque
antlarr es decir, que la aplicación ha terminado y nadie ha liberado esos 5 bytes
antlarr en este caso, no nos puede decir donde se nos ha olvidado liberarlos, porque podría ser en infinidad de sitios, pero sí que nos dice donde se ha hecho la reserva de esos 5 bytes
antlarr para que nosotros miremos donde debería liberarse esa memoria, y comprobemos que lo hace
antlarr Nos vamos entonces a http://developer.kde.org/~larrosa/umeet2004/umeet_28.png
antlarr para ver rapidamente el diálogo de ejecución de valgrind
antlarr vemos que se pueden poner algunos de los parámetros automaticamente simplemente marcando checkboxes lo que lo hace mucho más fácil de usar
antlarr Como he dicho antes, valgrind detecta "problemas" al ejecutar un código, pero ¿qué se entiende por problemas?
antlarr eso lo define la herramienta de valgrind que se le diga que use. En este caso le he dicho que use la herramienta memcheck que hace las comprobaciones de memoria
antlarr pero hay algunas otras igualmente interesantes
antlarr por ejemplo, para la gente que use programación con threads/hebras/hilos o como cada uno quiera llamarlas, existe la posibilidad de usar la herramiente helgrind para depurar accesos concurrentes a memoria
antlarr http://developer.kde.org/~larrosa/umeet2004/umeet_30.png
antlarr Aquí he ejecutado valgrind --tool=helgrind desde el konsole integrado en kdevelop
antlarr igual que antes es un simple programa que llama a la función h que está completa en la foto
antlarr No entraré mucho en detalles por si no todos están acostumbrados a usar threads, pero basicamente lo que hace el programa es crear un thread, que incrementa el valor de una variable global, un segundo después, crea otro thread que vuelve a incrementar la variable y luego cierra los dos threads
antlarr valgrind en este caso avisa de que es posible que haya una condición de carrera escribiendo en esa variable
antlarr ¿no es increible?
antlarr no avisa sólo en el caso de que en esta ejecución del programa se haya producido un solapamiento de los dos threads intentando incrementar la variable a la vez, sino que avisa que "se puede dar el caso porque no hay un mutex que haya protegido el acceso a esa varible entre el acceso de los dos threads"
antlarr Otra herramienta muy interesante es callgrind
antlarr callgrind se usa para analizar el tiempo de proceso de cada función del programa
antlarr la salida se puede considerar como bastante criptográfica para un ser humano
antlarr así que se usa siempre junto a una interfaz gráfica llamada kcachegrind
antlarr podeis ver fotos en http://kcachegrind.sourceforge.net/cgi-bin/show.cgi/KcacheGrindShot
antlarr la verdad es que estoy viendo que esas fotos son algo antiguas, con lo que recomiento bajarlo y usarlo en vivo
antlarr Vamos a ver la foto de http://kcachegrind.sourceforge.net/cgi-bin/show.cgi/KcacheGrindShot2
antlarr En la parte de la izquierda se ve (regular, y si tenéis buena vista) cada una de las funciones, y el tiempo de proceso
antlarr que se ha llevado de CPU
antlarr pero lo ma? interesante es la parte derecha
antlarr pero lo más interesante es la parte derecha
antlarr que es igual que la parte izquierda/abajo de http://kcachegrind.sourceforge.net/cgi-bin/show.cgi/KcacheGrindShot3
antlarr ahí se ven las funciones del programa representadas con rectángulos, y el tiempo de cada función representado en el área ocupada
antlarr igualmente, si una función A llama a una función B, el rectángulo de B aparece dentro del rectángulo de A
antlarr así se ve de una forma completamente intuitiva en qué funciones del programa hay que invertir más para optimizarlas
antlarr Como curiosidad que siempre cuento en estos casos, es que en el congreso de desarrolladores de KDE del año pasado (2003), se vió que el linkador (el ld estandar de gnu) tardaba mucho en linkar las aplicaciones de KDE, así que entre varios desarrolladores de KDE y GCC usaron kcachegrind para ver la salida de callgrind y vieron que había una función que había que optimizar claramente
antlarr la optimizaron e hicieron el linkado casi 12 veces más rápido!
antlarr Ya que estamos en esta última foto, es también interesante la gráfica de la derecha, donde se ve el flujo de llamadas entre funciones también de forma intuitiva
antlarr aparte de para ver por donde se va yendo el tiempo de CPU, yo he usado eso a veces para comprender mejor el funcionamiento de un programa en el que nunca he trabajado antes
antlarr ya que se ve claramente qué funciones llaman a qué funciones
antlarr Volviendo a KDevelop, vamos a hablar del depurador
antlarr http://developer.kde.org/~larrosa/umeet2004/umeet_31.png
antlarr Ahí he depurado el primer ejemplo de valgrind
antlarr por un lado he abierto la pestaña de visor de variables
antlarr que muestra automáticamente las variables locales del contexto que estémos depurando, y aparte se le pueden añadir variables en general a observar
antlarr en la parte de abajo, he abierto la pestaña de "Desensamblado"
antlarr que muestra el código fuente en ensamblador
antlarr que ha generado el compilador y que se está ejecutando
antlarr igual que se puede ir ejecutando el programa linea a linea con la posibilidad de entrar o no a las llamadas de funciones
antlarr también se puede ejecutar instrucción de ensamblador a instrucción de ensamblador
antlarr con la posibilidad de entrar dentro de los "call" o no
antlarr además, en cada linea (o instrucción) que se ejecuta, se marca en rojo el valor de la variable que haya cambiado su valor (si ha cambiado alguna)
antlarr en este caso, por ejemplo, acabo de pasar el incl que incrementa eax (es decir "i" ) y por eso está el 3 en ese color
antlarr también se puede ver el "Frame Stack" (pila de llamadas)
antlarr o abriendo la pestaña GDB, se puede ver la salida del gdb (que se usa internamente) e incluso usarlo como si se hubiera ejecutado en un terminal
antlarr Si os habéis fijado una de las pestañas de abajo pone "Diff" eso sirve para ver la salida de un diff de forma gráfica, ya que empotra una componente de kompare o de kdiffpart3 (dos aplicaciones de KDE para ver diffs)
antlarr en vez de enseñar el kompare empotrado, he puesto algunas fotos de la aplicación en sí
antlarr pero podeis imaginaros que la estais viendo integrada, dentro de kdevelop si quereis porque es exactamente igual :)
antlarr http://developer.kde.org/~larrosa/umeet2004/kompare_01.png
antlarr Pregunta: ¿que es un diff?
antlarr Perdón, llevas razón en que debería haberlo explicado
antlarr diff es un programa de consola que analiza dos ficheros y muestra las diferencias entre ambos
antlarr es decir, permite ver diferencias entre ficheros
antlarr generalmente se utiliza para ver las diferencias entre dos versiones del mismo fichero, por ejemplo, la de hace una semana, y la de ahora
antlarr la salida del programa es muy atractiva si consideramos que en otro caso, tendríamos que ir leyendo linea a linea los dos ficheros y comparando a ojo
antlarr pero si alguien no tiene mucha experiencia puede ser un poco críptica
antlarr para ayudar en eso, está kompare
antlarr que analiza la salida de diff (un fichero diff) y la muestra como esa foto de antes
antlarr como veis es bastante intuitiva
antlarr y se ve rapidamente qué lineas se han borrado, cuales hay nuevas, qué lineas se han modificado y (muy importante, ya que sólo con diff no se puede hacer esto): qué ha cambiado dentro de una linea
antlarr Ahora, supongo que todos tenéis curl, así que id a un directorio vacío y ejecutad:
antlarr curl -O http://developer.kde.org/~larrosa/umeet2004/kompare_[01-14].png
antlarr para bajar las 14 imágenes que he puesto de kompare
antlarr Ahora, si usais mplayer podeis hacer mplayer mf://*.png
antlarr para ver una animación de como se se adaptan las lineas al mover la barra de scroll para ver el fichero
antlarr y sus diferencias
antlarr si no, podéis ir pasándolas una a una
antlarr Como he comentado, hay otro programa muy parecido que se llama kdiffpart3
antlarr kdiffpart3 no es tan altamente visual como este (aunque también lo es bastante)
antlarr pero en mi opinión tiene como ventajas que hace MUY fácil el mezclar cambios entre las dos versiones distintas de un fichero
antlarr y además, permite incluso hacer comparaciones entre 3 ficheros distintos
antlarr Hmmm, perdón, lo he llamado Kdiffpart3, pero el programa se llama kdiff3, kdiffpart3 es la componente de KParts que kdiff3 provée
antlarr Y creo que voy a ir acabando por ahora
MJesus estamos encantados !
antlarr hay muchas cosas más interesantes, como muchas opciones de kdevelop que se me han olvidado, pero eso lo dejo para que cada uno las encuentre en su casa/trabajo :)
antlarr además, se podría hablar de kdialog y kommander para hacer desarrollo MUY rápido de aplicaciones en lenguajes de script
antlarr dcop
antlarr etc
antlarr pero quizás dejarlo mejor para otra charla
antlarr ahora, si tenéis alguna pregunta o duda, podemos quedarnos un rato de tertulia
antlarr si no os habéis quedado dormidos todos, claro ;-)
antlarr antlarr: al principio dijiste que se podia crear aplicaciones windows, quisiera que explicaras un poco eso
antlarr Yo (afortunadamente :) ) no he usado mucho esto, pero te explico lo que sé
antlarr hay varias formas de desarrollar aplicaciones que funcionen en windows con kdevelop
antlarr lo que yo haría, es hacer una aplicación que use Qt, esa aplicación podrías desarrollarla en linux, y funcionaría tanto en windows, como en linux o MacOS
antlarr (e incluso PDAs)
antlarr la opción que yo comentaba antes, es elegir la opción de usar un compilador cruzado, en este caso sé que se usa MingW para compilar desde linux aplicaciones de win32
antlarr pero me temo que te puedo decir poco más
antlarr eso sí, quizás te sería interesante saber que en los últimos meses se ha desarrollado bastante el porte de las librerías de KDE a windows (nativamente), y el asunto está bastante avanzado
antlarr ya se pueden ejecutar algunas aplicaciones de KOffice de forma completamente nativa en windows
antlarr y la idea es poder ejecutar konqueror, kontact y kopete (las aplicaciones más básicas) en windows en poco tiempo
antlarr y si yo he desarrollado en glade y antuja, puedo pasarlo a kdevelop?
antlarr (usando automake)
antlarr sin problemas
antlarr se puede importar en kdevelop como un proyecto basado en automake cualquiera
antlarr kdevelop analizará los ficheros de automake, y podrás usar el automake manager para modificarlos, etc
antlarr He añadido una foto nueva, para comentar algo que creo que puede ser bastante interesante
antlarr y que sería una lástima que no comentara
antlarr http://developer.kde.org/~larrosa/umeet2004/umeet_32.png
antlarr Además, así termino con una potencia de 2 :)
antlarr Cuando se desarrolla una aplicación de KDE
antlarr KDevelop se puede usar para hacer el interfaz gráfico de la aplicación visualmente
antlarr Si alguien está interesado en aprender a usar KDevelop para hacer aplicaciones con este diseñador de interfaces integrado, le remito a mi tutorial de desarrollo visual:
antlarr http://developer.kde.org/~larrosa/visualtutorial/
antlarr ahí está en inglés y español
antlarr [guitarra] bueno, quería pedirte que nos contaras algo de tu experiencia profesional usando kdevelop
antlarr Yo de siempre he usado vi para desarrollar
antlarr sobre todo porque es rápido de ejecutar en cualquier directorio para editar ficheros sueltos
antlarr pero desde que ha salido kdevelop 2.x y sobre todo ahora con la versión 3.x, lo estoy usando en más y más sitios.
antlarr Por ejemplo, en mi trabajo, principalmente estoy desarrollando uno o dos proyectos
antlarr así que es mucho más cómodo usar kdevelop donde se tiene todo lo relacionado con un proyecto u otro a mano
antlarr además, el poder poner bookmarks a distinta documentación "no estandar" igual que el poder añadir autocompletado de librerías externas, es algo bastante útil
antlarr Bueno, pues si no hay más comentarios, creo que podemos dar por concluida la charla
antlarr Gracias por vuestra atención durante estas 3 horas
antlarr Si teneis alguna duda, mi dirección es larrosa_at_kde org
antlarr hasta pronto
damage clap clap clap clap clap clap clap
damage clap clap clap clap clap clap clap
damage clap clap clap clap clap clap clap
damage clap clap clap clap clap clap clap
antlarr gracias :)
felipe clap clap clap clap clap clap clap clap
elkrammer ACTION aplaude y agradece :)
felipe clap clap clap clap clap clap clap clap
felipe felicitaciones antlarr
HnZeKtO antlarr: woof woof woof woof
damage exelente :)
HnZeKtO antlarr: que pesao eres illo
antlarr :) gracias
HnZeKtO 3 horas dale que te pego
antlarr jeje, lo que hace la confianza ;-)
HnZeKtO aaaaaaaro
HnZeKtO habrá alguien más despierto? XD
trulux CLAP CLAP CLAP CLAP CLAP CLAP CLAP
trulux CLAP CLAP CLAP CLAP CLAP CLAP CLAP
trulux CLAP CLAP CLAP CLAP CLAP CLAP CLAP
trulux CLAP CLAP CLAP CLAP CLAP CLAP CLAP
trulux CLAP CLAP CLAP CLAP CLAP CLAP CLAP
trulux CLAP CLAP CLAP CLAP CLAP CLAP CLAP
trulux CLAP CLAP CLAP CLAP CLAP CLAP CLAP
trulux CLAP CLAP CLAP CLAP CLAP CLAP CLAP
trulux CLAP CLAP CLAP CLAP CLAP CLAP CLAP
trulux YO ME PASOOO A KDEEE
trulux ;D
antlarr :-D
HnZeKtO trulux: ah pero no lo usabas?
genkaos muy buena la charla, enhorabuena antlarr
HnZeKtO trulux: intruder!!
trulux HnZeKtO, No Proactive IDS found, intruder stills saying CLAP CLAP CLAP
antlarr gracias genkaos
antlarr bueno, me recuerdan que diga la "sorpresa" que iba a dar antes
azulema antlarr: interesante tu charla a pesar de las 3 horas y media
antlarr sólo era comentar que en KDE se hacen todos los años una reunión de desarrolladores de todo el mundo y conferencias para usuarios/desarrolladores. Para el 2005 se está barajando la posibilidad de hacerlo en Málaga o Brasil
antlarr pero personalmente veo bastante probable que se haga en España
antlarr gracias azulema
elkrammer antlarr: akademy?
antlarr no hay nada oficial todavía, pero como digo, personalmente lo veo bastante probable
antlarr elkrammer: exacto
antlarr la "akademy 2005"
HnZeKtO así que en agosto del año que viene os esperamos en la feria de málaga
HnZeKtO que digaaaaaa en la akademy
antlarr jajaja
trulux antlarr, con el melenas y sus amigos
trulux XD
HnZeKtO trulux: el melenas es sevillano!
elkrammer antlarr: al ser la mayor parte de los programadores de kde de alemania, tenia entendido que casi siempre se hace alli, o a sus alrededores... creo que malaga queda bastante alejado de alemania ;)
antlarr sí, de ahí la novedad :)
HnZeKtO elkrammer: pues imagínate brasil....
trulux señoores, haaa llegaaado el meleeenaaaas, elMelenas dice hola a la audiencia, elMelenas sacude el pelo, los que van a usar KDE te salutant
trulux ;)
elkrammer HnZeKtO: jejeje
antlarr hasta ahora siempre se ha hecho en alemania o cerca, pero para el año que viene se quiere hacer fuera, sólo queda elegir el sitio
guinsel si eso ayuda a que las distribuciones de las comunidades utonomas se pasen a KDE :-)
antlarr guinsel: a ver, a ver :)
HnZeKtO ejem, distribuciones autónomas... debian+gnome... no me tiréis de la lengua....
antlarr ACTION tira
guinsel una pregunta, antes has nombrado que kontact se esta portando a windows, eso quiere decir que el kmail, knode y familia funcionaran en win?
antlarr bueno, realmente el portar kontact todavía no se ha empezado siquiera, se quiere acabar primero con las librerías
antlarr y personalmente pienso que konqueror es mucho más interesante
HnZeKtO antlarr: qt-win gpl?
elkrammer guinsel: kontact a windows? no estoy seguro, pero lo que si se, es que se estan portando las librerias de kde (kdelibs) a win32 hace algo mas de 3 años
antlarr HnZeKtO: qt/x11 (gpl) funcionando en windows :)
HnZeKtO antlarr: bajo cygwin?
antlarr si
antlarr eso creo
guinsel elelkrammer, si eso lo sabia pero como me ha parecido leer lo de kontact me habia emocionado
antlarr elkrammer: bueno, la cosa es que antes era un desarrollo paralelo
guinsel el kvirc hace no se qu emovida con la licencia para utilizar las qt en windows
antlarr desde hace unos meses los cambios denecesarios para que compile en windows están en el cvs
elkrammer antlarr: tu leiste el articulo de aaron seigo sobre que opinaba respecto a portar aplicaciones de codigo abierto a windows?
antlarr uy, "enecesarios" :)
guinsel :-)
antlarr sí, conozco su opinión
guinsel tengo los dedos de la mano gordos
elkrammer antlarr: yo estoy totalmente de acuerdo con el
antlarr yo estaba de acuerdo con él hace unos años
antlarr pero últimamente pienso que para que el usuario "de a pie" se cambie a linux, hay que hacerle los cambios poco a poco
antlarr yo tengo amigos que usan windows, que de pronto se han dado cuenta que usan Firefox, Psi, Thunderbird... y me han dicho "ya uso más software libre que de MS", así que incluso ellos mismos me han dicho "ahora no me importaría pasarme a linux, porque como voy a seguir usando lo mismo..."
trulux antlarr, el problema viene que si se lo cambias y no se lo dices puede que ni se entere
trulux la ignorancia provoca miedo
trulux mejor que no tengan ni idea y que lo usen sin saverlo
trulux ejemplo: mi madre y su portatil
trulux le puse mandrake, anda que no es fácil ni nada la distro, y arrancó y él metió sus fotos de la cámara digital sin problemas
trulux no se dió cuenta hasta después
trulux la gente usa un ordenador y no un so
trulux es la pura realidad
trulux la gente compra un "pc" y no un so + un "pc"
trulux la gente usa el word y no un procesador de textos, etc
trulux la cruda realidad
antlarr eso sí es verdad
antlarr aunque todavía no he encontrado a nadie que haya usado OpenOffice y diga que no se adapta bien y prefiere volverse a word
trulux ya ni hablar de usar kde o gnome
elkrammer alguien guardo esta charla en algun .log o algo?
trulux por eso redhat hizo su bluecurve o algo así
antlarr elkrammer: sí, la están guardando
elkrammer genial :)
trulux por otro lado, la gente no habla de actualizar con un parche de seguridad
trulux la gente habla de lo que le revienta de verdad o de lo que aparece en TV o en los programas de radio típicos con un embajador de M$ soltando chorradas a diestro y siniestro
trulux "hoy vamos a ver como desactivar el asistente inteligente de MSOffice"
trulux "ups, no se puede, me dicen de dirección que pasemos a otro tema"
trulux ...
trulux a todo esto
trulux empiezo ya la charla?
antlarr ¿a qué hora era la tuya?
antlarr no era a las 10 ?
trulux a las 20 GMT
trulux es decir
trulux en 20 minutos
antlarr ah
elkrammer trulux: sobre que es tu charla?

The Organizing Comittee

Email UsMore information


© 2004 - www.uninet.edu - Contact Organizing Comittee - Valid XHTML - Valid CSS - Based on a Design by Raul Pérez Justicia