lunes, 24 de setiembre de 2007

/a bien tôt









domingo, 23 de setiembre de 2007

/eclipse y cygwin - problemas para compilar



La facilidad para gestionar proyectos en Java, lo personalizable y lo extensible que es mediante plugins, hace que Eclipse sea uno de mis entornos de desarrollo preferidos. Decidí cambiar la versión anterior a la nueva, Eclipse Europa para Windows XP. Quiero probarlo mas con C++, y para eso descagué la última versión del proyecto CDT (versión 4.0), que permite crear aplicaciones en C/C++.
CDT no viene con compilador, por lo tanto corre por nuestra cuenta descargarlo e instalarlo, y posteriormente configurarlo en Eclipse.



CDT tiene características interesantes
sin ser aun un producto maduro, dentro de lo destacable está el autocompletado de código, una plantilla para generar clases, elegir el tipo de constructores y atributos, depurar y ver el contenido de las variables durante el proceso.
Por defecto con el que trabaja bajo Windows es
MinGW. Como ya tenía instalado Cygwin y algo había hecho con CDT en la versión anterior de Eclipse, me puse a trabajar como siempre. Pero no fue así, después de compilar el código, y sin tener errores aparentes, cuando intenté ejecutarlo salió una ventana con el siguiente mensaje de error: "Launch failed no binaries".




Además en la consola tenía una cantidad de líneas con mensaje: "xx: makefile error" (xx es el número de línea). Lo primero que pensé fue que no tenía bien configurado el make y me propuse a hacerlo. Esto puede hacerse desde: Proyecto ->Propiedades->C/C++ builds



Ningun tipo de variación a las configuración surtió efecto, Google tampoco, decidí entrar al newsgroup correspondiente: news.eclipse.org -> eclipse.tools.cdt.
Ahí estaba la respuesta: es un bug que fue arreglado para la próxima versión de CDT, la 4.01 segun Doug Schaefer uno de sus desarrolladores.
El problema es que Eclipse se fija lo que tiene instalado cygwin en el archivo
c:\cygwin\etc\setup\installed.db (puede ser editado con WordPad), y busca por {"gcc ", "binutils ", "make "} si no encuentra nada de eso, cygwin no funciona. La comparación debería ser por gcc-core, ya que no hay gcc en el archivo installed.db.

Conlusión y solución: para usar Eclipse con C++ en Windows, con la versión actual de CDT (4.0) instalar el compilador MinGW o trabajar con Code::Blocks.
En un post previo, había comentado de las diferencias entre MinGW y Cygwin.






/desarrollo rápido para web



Hace un tiempo baje de internet GeneXus, en parte por la insistencia de un familiar cuya empresa está montada en función de productos realizados con esta herramienta.
El me hablaba de las facilidades y la (innegable) rapidez de desarrollo que se logra usando Genexus
.

Lamentablemente, y a su pedido, tengo que caer en esa costumbre uruguaya de decir, sin mencionar nombres. Y no me gusta, pero hago una excepción porque tiene que ver con el contenido de este post.

Sinceramente y al margen de reconocer las bondades del producto, una especie de metalenguaje que a partir de la modelización de una realidad genera el código de la aplicación, no logró entusiasmarme demasiado.
Principalmente porque no me gusta ver que todo se arma sin saber cómo, un sistemas de cajas negras que no comprendo (porque no es necesario), porque además si quería modificar el código generado era una tarea engorrosa, y porque me gusta ver el proceso desde la cocina.
Prefiero invertir un tiempo en aprender paradigmas de desarrollo que me permitan generar mis bibliotecas, que después usaré como un puzzle de acuerdo a las circunstancias, pero que yo conozco porque yo las generé, a que me den algo armado por otro. Y donde además, el conocimiento para realizar la aplicación no pasa tanto por la lógica de los algoritmos, ni de la ingeniería de software, sino que está restringido a la lógica de negocios.
(El me decía que yo podría trabajar generando componentes para GeneXus más que desarrollando aplicaciones con esa herramienta).

Es una herramienta ideal para software de gestión (escritorio o web) que es a lo que la empresa de mi familiar se dedica, pero cuando intentamos salir de esa trinchera, desarrollar con GeneXus es bastante más complicado, o directamente imposible.
No lo considero viable para realizar procesamiento de imagenes o juegos, y actualmente estoy interesada en esas áreas.

Tampoco me convenció demasiado que el diseño de la base de datos dependiera completamente de la aplicación. Y cuando modificamos el modelo automáticamente altera las tablas, si es necesario, dificultando su re utilización en otras aplicaciones.

Pueden generarse productos competentes en GeneXus, de hecho la empresa de este familiar, tiene éxito a nivel nacional y creciente en el exterior.
Pero es GeneXus dependiente, el mismo me dijo que apenas conocía la tecnología .NET (no lo necesita), o java, o los diferentes tipos de arquitectura. Y es porque esta herramienta se lo da digerido. Concluyendo que si un día no existía GeneXus debería contratar programadores porque el no sabe hacer casi nada. El es un gran experto en modelar problemas, asi que larga vida a GeneXus.
GeneXus es ideal cuando son pocos empleados, y se necesita sacar algo rápido al mercado, y como en su caso que comenzó solo, le vino al pelo.

En informática todo va rápido, pero por ahora soy de la idea que mas vale conocer paradigmas de desarrollo, y ver qué lenguajes o herramientas se adaptan mejor a uno u otro de acuerdo a las circunstancias o a un problema dado. Pero sí me interesa que esos lenguajes sean flexibles dentro de sus características, que me permitan controlar lo que hago porque puedo ver cómo lo hacen, y para mi GeneXus en ese aspecto, entre otros, no es flexible.
Y ademas porque no quiero depender de un lenguaje en particular, si bien entiendo que por perfiles personales y de trabajo llegamos a preferir uno mas que otro.

La forma que elegimos para trabajar, cuando podemos elegir, es la filosofía de vida que elegimos también, otra manera de interactuar. Esto no pretende ser una crítica a quienes usen GeneXus, porque como dije pueden generarse productos muy comptetentes.
Prefiero lo menos pragmático quizás, para algunos, pero que siento me da un conocimiento mas integrado a nivel de desarrollo y análisis, y de control en otras áreas. Y con GeneXus me sentí restringida.
Además, por experiencia se, que cuando contamos con un conjunto de bibliotecas en el lenguaje que sea, creadas por nosotros, cualquier aplicación será de desarrollo rápido. Me pasa en mi trabajo para ORT.

dos interesantes herramientas
Vi dos herramientas
gratuitas para desarrollo rápido web xpotronix y SIUToba que me 'recordaron' a Genexus, pero me gustaron más por la libertad que permiten. A diferencia de Genexus, la base de datos se centra en su organización y no en la aplicación.
Aun las estoy probando, y no puedo decir mucho más, pero lo dicho recién le juega a favor.









sábado, 22 de setiembre de 2007

/publicidad antitabaco




La misma apareció el 11 de setiembre de este año en el Khaleej Times, un diario de Dubai.
"5.4 millones de personas mueren por año por causas relacionadas al tabaco, esto es 2000 veces 11/9".

Claro, no es la única causa de muerte, ni lo único que conspira contra los habitantes de este planeta, sobre todo considerando algunas obras contra natura existentes en Dubai, como la isla flotante Palm Jumeirah (cosa de nuevo rico, plata + mal gusto, me recuerda al Conrad)






/arte(rapia) grupal




No se si es la sobre abusada Web 2.0 o qué es, pero la idea está buena, algo asi como, "a ver que sale entre todos". Eso es drawball, un proyecto colaborativo donde cualquiera puede dibujar en un lienzo virtual.
La participación diaria del usuario está limitada a aproximadamente 1/10,000 de la superficie, esto es porque el mayor espacio está reservado a los anunciantes y otras comunidades online.
Pueden hacer zoom sobre un área específica de la obra para ver con mas detalles los diferentes dibujos entramados.

Este video con aceleración de imagenes para sintetizar las diferentes etapas del proyecto de manera mas didáctica, condensa las transformaciones de este mural participativo durante un año.

(Demora la carga, puede ser lento, mi velocidad de conexión es 10024/128kb)


vía haha.nu





/identificando memory leaks



Por cuestiones de performance, me vi obligada a chequear los memory leaks de una aplicación desarrollada en Visual C++. Esto es, identificar aquella memoria que fue pedida a demanda (mediante new) y el programa ya no usa, y no se ha liberado (no se realizó el delete correspondiente). O sea algo asi como 'crear' nuestro garbage collector.

Las consecuencias de este consumo indebido de memoria pueden ser varias, desde enlentecer el rendimiento de la aplicación, hasta provocar comportamientos erráticos en otras aplicaciones abiertas o en la propia aplicación.

Buscando info en la web, vi que esto no solo se aplica a C/C++, sino que además puede darse en C# lenguaje con su propio garbage collector.
El administrador de memoria puede recuperar la memoria que quedó fuera del alcance del sistema o fuera de uso, pero no puede liberar aquella memoria que aun permanece al alcance o potencialmente en uso (y no lo está).
El alcance de la memoria se define cuando hay referencias directas o indirectas a ella. Y mientras las haya el administrador de memoria las ignora.
Ejemplo: agregar items a una lista, y olvidar quitarlas (borrarla de memoria) cuando terminamos el procedimiento. El administrador no podrá saber si esa entrada será referenciada nuevamente a menos que algo en el código del programa lo indique.

Este artículo de msdn
explica en mas detalle los memory leaks en memoria no administrada bajo C# (viene con código).

Remitiéndome a mi problema en C++, y particularmente Visual C++, encontré una función que indica en una ventana si tenemos 'memoria colgada' o no liberada.

Para habilitar las funciones de heap al debug, hay que agregar al programa, y en este orden:

#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>


crtdbg.h, mapea las funciones malloc y free con las versiones de las mismas en el depurador, _malloc_dbg y _free_dbg respectivamente, las cuales registran la memoria pedida y liberada. (Este mapeo sucede al depurar)

#define mapea la versión de las funciones del heap (CRT) correspondientes con las versiones de las mismas en el depurador. (No es necesaria, pero si la omitimos la información obtenida será menos descriptiva)

Agregadas las sentencias previas, en el programa hay que incluir la siguiente sentencia:


Cuando el programa se corre desde el debugger _CrtDumpMemoryLeaks muestra información sobre la memory leak en la ventana de salida.

Me basé en la siguientes referencias
codeguru (con ejemplos), msdn2.microsoft


Para
Delphi, existen las siguientes opciones (no probé ninguna) :
  • memCheck (freeware con código) la versión actual 2.75 es para Delphi 5.1, Delphi 6, Delphi 7, Delphi 2005 y Delphi 2006 (aunque no ha sido probada en las dos últimas). Ofrece una unidad (unit, simil de header para los que usan C/C++/C#) con funciones para el chequeo de memoria.
  • euroekalog, componente que se integra al ide (versión de prueba)


Aplicaciones independientes de cualquier compilador/IDE
Hay entornos de desarrollo o compiladores que no ofrecen esta facilidad, por lo tanto debemos recurrir a aplicaciones que nos dan esa información.
Esta es una lista de aplicaciones razonablemente completa y descriptiva sobre alguna de ellas.

De las mas conocidas (y probadas por mi) está IBM Rational Purify (solo para Windows) que puede descargarse en versión de prueba, (o bueno, está eMule o algun cliente torrent).
Realiza un análisis en tiempo de ejecución sobre los siguientes características de un programa: corrupción de memoria, memory leaks, rendimiento de la aplicación, cheque del registro de windows.

Para Linux existe una aplicación gratuita con similares características a la anterior, Valgrind.







/"error" con el debugger de Visual C++ (aplicación de consola)



Aunque el título es bastante descriptivo, entro en detalles.

Caso: crear una proyecto vacío
para consola con Visual C++ (Visual Studio 2005), por vacío me refiero a: proyecto sin main, ni bibliotecas incluidas por defecto.

Lo que yo hacía: crear un .cpp .h, salvarlos, Build solution (compilar, linkeditar archivos ) me daba 0 error, 0 warning. El "proyecto" compila los archivo
s pero al intentar depurarlos (Debug F5) me salía el siguiente error:


Mi error: consistía en asumir que esa compilación se hacía para los archivos del proyecto, y no era así, porque éstos no habían sido incluidos en el mismo.

Solucción: Agregar los archivos al proyecto, hay dos formas:

1) Project -> Add New Item (seleccionar el tipo de archivo a crear)




2) Project->Add Existing Item (agregar archivos ya existentes, que fue lo que yo hice)


La solución me averguenza por lo trivial, pero ese Build Project, me confundió bastante, ya que compila archivos "de proyecto" que aun no han sido incluidos.

Dejo la solución, porque una vez más la encontré en foros de MSDN en inglés y no en foros en español..(los yanquis - y yo- seremos mas nabos). De todos modos vi en diversos foros posts mencionando ese error, y muchas veces se apuntaba a un error de instalación de Visual Studio, o del debugger, o de tocar claves del registro, o bien registrar la siguiente dll: mscordbi.dll.
En mi caso, no estaba registrada, y sin embargo pude depurar el código sin problemas
bajo Windows en C++ o C#. Y eso me hacía pensar que habría una solución mas simple.
Antes de comenzar a tocar nada, verifiquen si el compilador funciona en otras circunstancias. La solución evidentemente era mas fácil.








sábado, 15 de setiembre de 2007

/taller de Programación y Arte



Hoy recibí de Aldo un mail con información sobre este taller de próximo comienzo en la Facultad de Ingeniería (2da semana de octubre). El mismo está orientado a alumnos de Bellas Artes, Arquitectura e Ingeniería.

Este taller fue armado por Etienne Delacroix, un docente francés proveniente del cyber punk que anda por el mundo ofreciendo su taller a las facultades interesadas.
Segun decía en el mail, Ingeniería fue la única facultad que aceptó su propuesta después de haber sido rechazada por Bellas Artes (no se mencionan motivos).
Actualmente se lleva a cabo en unos 'laboratorios' armados en los entrepisos del sector
de "sala de máquinas", al fondo de la facultad.

El cupo del taller es limitado, y el criterio de selección no parece ser tanto el orden de inscripción, sino mas bien las inquietudes que motivan a los interesados a realizarlo.
Uno de los requisitos es enviarle una carta al docente encargado señalandole las motivaciones que nos hacen querer tomar ese taller. El grupo parece estar formado en función de los perfiles de los 'postulantes' que mejor se adecuen a los objetivos del taller.
(
Para estudiantes de Ingeniería no tiene materias previas, y otorga 3 créditos ).

Actualmente el TAP no está bajo la dirección de Delacroix, sino de otros docentes, segun se citaba, con sus ventajas y desventajas.

" .....la idea del taller es que el alumno aprenda a re-utilizar porciones de harware y software para construir otros implementos. se aprende a reutilizar parches de java y html para construir páginas web y pequeños programas gráficos, o a usar elementos electrónicos básicos para construir desde instalaciones interactivas a instrumentos musicales. cuando fui vi muchas cosas interesantes: pequeños teclados, pequeños robots que se movian siguiendo reglas básicas, videos hechos con fotos y programación java, programitas de dibujo muy sencillos pero efectivos y pasibles de ser "colgados" en la web... html es el lenguaje de progrmación de páginas web, y java es un lenguaje orientado a objetos que permite dibujar y hacer animaciones, muy similar a actionscript (de hecho es su base). El grupo de estudiantes es heterogéneo. Se trabaja en conjunto con estudiantes de ingeniería capacitados para realizar cosas complejas para las que probablemente se necesite mucho más información que la que el TAP proporciona, por lo que a veces para un lego puede ser frustrante, pero si se va con ganas de adquirir elementos básicos de programación y trabajo en equipo interdisciplinal, es una muy buena oportunidad."

Quedé entusiasmada por participar de un taller donde se redefinen conceptos, y se experimenta con ellos extapolándolos a otra áreas. Y sin duda, que interactuar en esta experiencia con gente proveniente de otras orientaciones condimenta mis motivos. Me encuentro evaluando horarios de facultad y trabajo para ver si puedo formar parte...veremos.

En la web del Taller encontrarán mas información, aqui les dejo el programa, y particularmente destaco, aunque también está en la web, este texto imperdible de Pierre Lévy acerca de "La inteligencia colectiva".





jueves, 13 de setiembre de 2007

/language is a virus - anymails





Anymails es el proyecto de tesis de Carolin Horn (diseño & concepto) y Florian Jenett (código) realizado en Flash/Processing, para el Dynamic Media Intitute Boston (2007). El mismo traza una metáfora visual del contenido de los emails recibidos con un ecosistema de organismos (que se mueven como si nadaran, forman grupos, cambian de tamaño, de color, formas, etc).
El objetivo es ver el mundo de nuestros emails desde otra experiencia.

Los emails individuales se representan por un microbio, las edades (su antiguedad) por el tamaño y opacidad (los mas nuevos grandes y opacos, los mas viejos chicos y transparentes). Así mismo podemos ver colonias de microbios, agrupados por 'familia', 'propaganda', etc. Los diferentes mails se categorizan por colores y tamaños.

Hay una barra horizontal que representa el tiempo, podemos navegar a través del tiempo para ver los diferentes tipos de mails, es interesante la posibilidad de encontrar patrones de comportamiento en diferentes momentos.

Tanto la tesis como el código pueden descargarse desde el propio sito.

Hay mas imagenes y videos (muy buenos) aqui pueden ver uno, es necesario QuickTime.


Mi envío de mails se ha restringido, el spam y las cadenas me resultan tediosos, los mails sin copia oculta también, todo suma y hace que cada vez más limite mis mails , o al menos a dar mi email fácilmente. Este proyecto plasma, sin ser su propósito quizás, algo tangencial, el (sobre)abuso de info y de 'vínculos' que nos exceden más de lo que probablemente podemos digerir. En la idea de este proyecto sobrevuela, al menos creo yo, un replanteo de su uso.


vía notcot





/Symbaloo, otro sitio web2.0 (?)




Con Symbaloo la primera impresión que tuve fue curiosidad, 'jugar' con la web, no se si la convertiría en mi página principal (dudo), pero el proyecto en sí me pareció atractivo por la comodidad de su estética.
El planteamiento es sencillo, lograr un espacio con los servicios que más usamos
al alcance de la mano.

Tiene botones estéticamente agradables, que podemos desplazar mediante drag&drop, agregar o eliminarlos. Cada uno de ellos se asocia a un servicio, widgets, blogs, feeds, buscadores, etc.
La web es configurable a nuestro placer, ya sea en tamaño, como en los servicios que le agregamos.
Ya viene con algunos servicios por defecto: Wikipedia, Last.fm, flickr, Gmail, Feeds (como Bloglines), y otros que los invito a experimentar ;)


vía notcot





miércoles, 12 de setiembre de 2007

/google earth ...el infinito y mas allá



Google Earth 4.2 tiene unas características no menos que curiosas, menciono solo algunas:

  • explorar el cielo a partir de un punto basado en nuestra ubicación en la tierra
  • explorar galaxias, nebulosas
  • observar el ciclo de las estrellas
  • ver información geográfica compartida por usuarios mediante .KML (formato de archivos de Google Earth)
  • acercarnos a las imagenes vistas por el telescopio espacial Hubble.
  • superposiciones de imágenes propias
  • mayor cantidad de datos geográficos, etc, etc
Un ejemplo basta (inglés)




(Descargar aqui versión gratuita)


vía haha.nu





/backup de drivers para Windows




DriverMax es una aplicación que encuentro bastante util para evitar cargar CDs y CDs de drivers y ahorrar su búsqueda en internet (cuando los perdimos o la computadora vino sin ellos, algo mas frecuente de lo deseable).
Con DriverMax podemos exportar los drivers que elijamos a un archivo compactado o una carpeta (mediante su sistema Export Wizard).
Es aconsejable respaldar aquellos que funcionen correctamente
Para saber cuales son los que están andando correctamente, ir a Mi PC, con botón derecho (o secundario del mouse, yo soy zurda y ta al reves :p), ir Propiedades. Luego seleccionar la pestaña de Hardware:




Seleccionar Administración de dispositivos, clickear donde aparece el signo '+', verificar que no haya controladores con un símbolo '?' amarillo. Si lo hubiera, eso indica que hay conflictos con ese controlador.


De ese modo sabremos cuáles drivers exportar.

Después de cualquier reinstalación basta importar el archivo en donde hicimos el respaldo para recuperar y reinstalar todos los drivers en pocos minutos.
Un reporte nos aporta la información de todos los drivers instalados en el sistema (versión y fecha de release), y verifica las actualizaciones de los mismos.

DriverMax es una aplicación gratuita para Windows XP y Windows Vista, desarrollada por Innovative. Solo necesitamos un e-mail para registrarnos, que es a donde nos enviarán el número de serie para poder instalarlo.

(Aqui hay información sobre el sistema de drivers de Windows, util para entender algo mas esta herramienta)

Sinceramente, cómodo y util.


vía dotpod





/actividades universitarias (para todos)



Reconozco que debí postearlo antes (pero no pude), igual están a tiempo.
El desparejo boletín del CEI a veces tiene novedades interesantes, rescato estas dos:


Día del Software Libre
El Software Freedom Day es un esfuerzo global para mostrar al público la importancia, virtudes y disponibilidad del Software Libre y de Codigo Abierto. Equipos locales alrededor del mundo organizan eventos el tercer sábado de Septiembre. El último evento involucró más de 200 equipos de todo el mundo.
Este año se realizará en Uruguay, el día sábado 15 de setiembre, de 10:00 a 18:00 hs, en la Facultad de Ingeniería de la Universidad de la República. El evento es organizado por integrantes del portal Comunidad (www.comunidad.org.uy). Habrá una serie de charlas (sin cronograma aún), demostraciones varias, copiado de distribuciones de GNU/Linux, etc.

Pacifista Iraquí en Montevideo
Se encuentra en Uruguay Sami Rasouli, militante iraquí que lucha por medios pacíficos contra la ocupación de Irak. Se trata de alguien que podrá contarnos una experiencia de primera mano de la realidad iraquí, no recibimos todos los días a alguien que está jugándosela en el terreno, en este caso en Nadjaf, y que además lo hace en las condiciones y con la convicción y el coraje de este compañero.
En particular el CDC ha resuelto recibir algunos estudiantes iraquíes para que sigan sus estudios universitarios acá en la UdelaR.

Se han organizado las siguientes actividades:

1.- domingo 2, de mañana, en el encuentro de estudiantes de ingenieria.
2.- martes 3, 19.30 hrs, charla en ciencias sociales.
3.- miercoles 5, 19 hrs. Charla en el centro universitario de Paysandú.
4.- jueves 6, 18.30 hrs. Charla en facultad de Ciencias.
5.- martes 11, 19 hrs. Charla en Fundacion Vivian Trias.
6.- miercoles 12, 19 hrs. Charla en Humanidades.
7.- Jueves 13. 19 hrs. Charla en el paraninfo.







/en Cinemateca 18 el cine de Ariane Mnouchkine y el Theatre Du Soleil



Vía aldo por mail, me llega esta información sobre actividades de Cinemateca, aunque hace tiempo que no ando por esos lados, leyendo esta información quizás me pintan motivos.




Desde el martes 11, Cinemateca 18 repasa el aporte cinematográfico de la mundialmente famosa directora teatral Ariane Mnouchkine, al frente de su Theatre du Soleil. Esa muestra se enmarca en la serie de actividades que Mnouchkine habrá de desarrollar en estos días en el Río de la Plata, iniciadas con la presentación en el Festival de Teatro de Buenos Aires de su espectáculo
Les Epheméres, que debió ser la función de inauguración pero por demoras en la llegada de la escenografita tendrá lugar el próximo fin de semana. También se prevé la presencia de Mnouchkine en Montevideo para el lanzamiento del libro El arte del presente de Fabienne Pascaud, editado por Trilce y consistente en una serie de entrevistas a la directora, que fue traducido al castellano por las uruguayas Margarita Musto y Laura Pouso.



La propia Mnouchkine ha dicho que su trabajo se formula como una indagación sobre la capacidad del teatro para representar la época actual. Este compromiso hacia las cuestiones importantes, tanto políticas como humanas en general, se mezcla con la búsqueda de grandes formas de relatos que hace confluir Oriente y Occidente. Cautivada por la noción de "compañía de teatro" como una tribu o familia, Mnouchkine produjo la ética del grupo sobre reglas elementales: todos cobran lo mismo y el reparto definitivo de un espectáculo se decide después de que los actores ensayaron los diferentes papeles. El Theatre du Soleil es una
de las últimas compañías que en Europa funciona como tal.


Historia

En 1964 estrenaron su primer espectáculo Les petits bourgeois de Gorki. Luego vinieron Capitaine Fracasse (1965), basado en Gautier; Sueño de una noche de verano (1968) de Shakespeare, adaptación de Philippe Léotard; y Les clowns (1969), en colaboración con el Teatro de la Comuna de Aubervilliers. En 1970, el Théâtre du Soleil se instaló en la Cartoucherie del bosque de Vincennes, transformándola en teatro. Además presentaron en el Piccolo Teatro de Milán 1789, espectáculo sobre la Revolución Francesa; su segunda parte, 1793, se estrenó tres años después en la Cartoucherie.

A partir de 1981, la compañía entró en un período que combinó la investigación sobre el teatro contemporáneo y la necesidad de volver a las fuentes teatrales.
Empezaron a trabajar los dramas históricos de Shakespeare. El resultado fue la puesta de Ricardo II (1981), de Noche de reyes (1982) y de la primera parte de Enrique IV (1984).

En 1985 Ariane Mnouchkine comenzó una colaboración con Hélène Cixous que continúa vigente. Esta autora escribió varias obras para la compañía, entre ellas Et soudain des nuits d'éveil (1997), sobre el exilio y el aniquilamiento del pueblo tibetano y Tambours sur la digue (1999), con forma de obra antigua para marionetas pero representada por actores, Entre 1990 y 1992, el Théâtre du Soleil presentó el ciclo de las Átridas: Ifigenia en Aúlide de Eurípides y La
Orestíada de Esquilo (Agamenón en 1990, Las coéforas en 1991 y Las euménides en 1992).

No hay que sorprenderse de que Mnouchkine haya tenido bastante que ver con el cine. Su padre, Alexandre Mnouchkine, fue un productor importante, y Ariane era muy joven cuando trabajó como colibretista de El hombre de Río, una comedia de aventuras protagonizada por Jean-Paul Belmondo. En 1974 Mnouchkine filmó su primera película sobre 1789 ofreciendo un testimonio inédito sobre el trabajo del Théâtre du Soleil de esa época. En 1977 Mnouchkine realizó la película Molière, ou la vie d'un honnête homme, con los actores del Théâtre du Soleil y otros como Jean Dasté. El proyecto contó con la participación de la televisión (Antenne 2 y la RAI ), hecho inédito en el cine francés. Esos y otros trabajos suyos integran esta muestra acerca de las relaciones de Mnouchkine con el cine, que bien pudo incluir también La Ville Parjure, ou le réveil des erinyes (1994) de Hélène Cixous, del que se realizó un film dirigido por Catherine Vilpoux compuesto por imágenes del espectáculo y los documentos de archivo que dan cuenta del escándalo de la sangre contaminada en el que se basó el texto.
Ese film no está, pero sí, en cambio; el documental Au soleil même la nuit, scènes d'accouchement deEric Darmon y Catherine Vilpoux, sobre el proceso de creación del Tartufo por el Théatre du Soleil. La muestra se realiza con el apoyo del Departamento de Difusión de la Embajada de Francia en Montevideo.


Programación

- 1789 (1789). Francia 1974. Directora, Ariane Mnouchkine. Con Roland Amstutz, Lucia Bensasson, Jean Claude Bourbault, Philippe Caubére. La puesta del Théatre du Soleil en la Cartoucherie de Vincennes es una visión muy crítica (y heterodoxa) de la Revolución Francesa, y también un espectáculo arrollador en el que los actores circulan sobre un complejo escenario y entre el público. La filmación hace justicia a la propuesta. (martes 11 y domingo 16).

- MOLIERE (Moliére). Italia/Francia 1978. Directora, Ariane Mnouchkine.
Con Philippe Caubère, Marie-Françoise Audollent, Jonathan Sutton. La biografía del famoso comediógrafo francés, sus ascensos y caídas, sus amores, y las intrigas en la corte de Luis XIV, en un relato de largo aliento (basta ver la duración) que resulta aún más largo en la simultánea miniserie de televisión que Mnouchkine realizó con el mismo equipo (miércoles 12 y domingo 16).

- EN EL SOL INCLUSO DE NOCHE (Au soleil même la nuit, scénes d'accouchements). Francia. Directores, Eric Darmon, Catherine Vilpoux. Un documento sobre la "cocina" de un espectáculo teatral: específicamente, el Tartufo de Moliére (jueves 13, sábado 15).

- TAMBORES EN EL DIQUE (Tambours sur la digue). Francia 2002.
Directoras, Hélène Cixous, Ariane Mnouchkine. Con Duccio Vannucini Bellugi, Juliana Carneiro da Cunha, Renata Ramos Maza. Al llevar a la pantalla esta puesta de Ariane Mnouchkine la directora conservó el mismo mecanismo del original teatral de 1999. Una metáfora radical sobre el poder y el destino, reinterpretada cinematográficamente aunque manteniendo la poesía de su material básico. En programa: ARIANE MNOUCHKINE (Ariane Mnouchkine). Documental. (viernes 14).

- LA ULTIMA CARAVANA (Le dernier caravanserail). Francia 2006.
Directora, Ariane Mnouchkine. Con Shaghayegh Beheshti, Duccio Vanuccini Bellugi, Sébastien Brottet-Michel Una enorme puesta sobre un tema crucial (la inmigración y la situaciòn de los refugiados). Un espectáculo-río en dos partes (Le fleuve cruel y Origines et destins), potente y reflexivo a la vez. (sábado 15).


Credo

Hace poco se le preguntó a Ariane Mnouchkine cuál era su método de trabajo. Y ella respondió: "Yo creía que no teníamos método y después, cuando vi la película sobre Tartufo vi que teníamos un método, pero el del buen alpinista que modifica su equipo en función de la montaña a escalar, del tiempo, del día; si está helado, si es verano, invierno, si es la pared norte, sur, el Himalaya,
los Alpes o los Andes. Cambia, ¡pero sigue siendo un alpinista! Tengo la impresión de que al comenzar los ensayos, hay una montaña enorme que habrá que escalar y, lo importante, en ese momento, es elegir los crampones adecuados e ir liviano, sin valijas".

"Nosotros, a veces, no sabemos muy bien qué es este espectáculo que estamos montando. Por supuesto hacemos el espectáculo: nos levantamos todas las mañanas para venir y trabajar muchas horas. Pero también, en cierta forma, el espectáculo nos llega. Nos llega por Shakespeare, por Sihanouk, por Gandhi o por Nehru; nos llega por médicos corruptos que venden sangre contaminada, nos llega por Tartufo o por refugiados e inmigrantes que nos cuentan sus historias. Lo que nos es difícil confesar es que este espectáculo nos está llegando por
nosotros. Y así, en cierta forma, por ustedes".

Así define Ariane Mnouchkine a Les Ephémerès (Los efímeros), su última experiencia de ocho horas de duración. Una saga de escenas conmovedoras. No hay una única trama. "Es un espectáculo que está hecho de cosas que surgen espontáneamente de cada uno de los actores, de nosotros, de todos nosotros; que se mezclan, se entretejen. Hay una unidad pero no existe un guión, no hay vínculo. Las piezas no encajan, son cosas que emergen en la superficie. Son
miradas parciales, más que un encadenamiento de sucesos", ha dicho Mnouchkine.

Después de haber trabajado a partir de grandes autores y profundas problemáticas la creadora, esta vez, descubre en la intimidad del hombre y en lo efímero de su vida una posibilidad para la creación. Ha partido de observar la finitud de la vida, la muerte inevitable del hombre y, entonces, se ha puesto a recordar, a buscar en su memoria y en la de los actores, aquellos momentos definitorios que no sólo pueden dar cuenta de un instante en la vida de alguien, sino del germen de una sociedad, una época, un mundo.


Trabajar lo privado "no quiere decir para nada que no me interese en la política -ha dicho-. No hay que confundir lo íntimo con lo privado. No se trata con este espectáculo, que parte de momentos vividos por los actores y por mí misma, de hablar de algo que a usted no le incumbe. Por el contrario, es algo que a usted le toca, le atañe, porque yo soy usted y usted es yo. En muchas circunstancias.
Es verdaderamente el darse de Shakespeare: usted llora cuando yo lloro; usted ríe cuando yo le hago cosquillas. Hay en nuestro espectáculo ese síntoma shakespeariano del reconocimiento, si no esto no tendría ningún interés".

Y agregaba: "Aunque no levantemos la bandera de alguna causa, como en otros espectáculos, aquí se agitan un montón de pequeñas banderas que dicen: ¿es que tal o tal otra situación no le recuerdan algo? Y si eso le recuerda alguna cosa, bien: tengamos un poco de amenidad los unos con los otros y un poco más de memoria En el fondo es eso: cómo los seres humanos pueden, a través de su amor, de su compasión, de sus ideales, atenuar enormemente el mal que hace el
mundo".

Entre los actores que interpretan Les Ephémères se cruzan cuatro generaciones.
"Las mismas que coexisten hoy en el Soleil, incluyendo a los niños que tienen su parte", aclara Mnouchkine. Ellos hablan del pasado y del presente. Lo que deja muy en claro la directora es que, en ese cruce, la historia individual, íntima, muchas veces estará atravesada por la otra historia, la que se escribe con mayúsculas.

www.cinemateca.org.uy





domingo, 2 de setiembre de 2007

/"la sonrisa de los siervos" teatro con mendocinos en Buenos Aires



(Actualizado)

Hoy hablando con Vane por MSN, una mendocina que vive en Buenos Aires desde hace un tiempo, supe del estreno de la obra de Lucas Olmedo en Bs As (integrante del elenco mendocino Lluvia de Cenizas).

Aqui hay una nota al director sobre esta obra.

Me animo a recomendarla para los que anden por Buenos Aires los lunes (desconozco hasta cuando podrá verse).
Ya había mencionado que había visto dos de sus obras, las cuales en mi opinión se caracterizan por planteos inquietos: no tanto por lo novedosos sino por desde donde son planteados. No caen en la circunstancia estereotipada que los desencadena, pero no por eso nos aleja de las situaciones, al contrario, reafirman su condición casi ontológica.
Puzzle de situaciones y personajes, y humor mas bien absurdo.

Aqui les dejo la información que me mandó Vane por mail (gracias!!!), y disculpen la distorsión que sufre el formato al pasarlo al blog, no he tenido tiempo de corregirlo, espero se entienda.
Los que vayan, después cuenten.



“La Sonrisa de los Siervos”
de Lucas Olmedo

(A partir de la literatura de Robert Walser)
Sinopsis:
Juan Pablo abandona la ciudad y su cómoda pero odiosa vida familiar, para inscribirse como alumno en el Instituto de Servicio Doméstico que dirigen los hermanos Walser, en las afueras de Malargüe, Mendoza.
El objetivo que los Hermanos Walser persiguen; es la formación de sirvientes para su posterior ubicación en la burguesía de Buenos Aires. Pero desde hace unos años, el prestigio y la popularidad de su escuela se ha
perdido, y las solicitudes que desde allí se envían; son rechazadas.
Han pasado unas semanas desde la explosión del volcán “El descabezado”, y la caída de cenizas imposibilita el pastoreo y las tierras comienzan a devaluarse.
Por otro lado, el “torneo anual del buen doméstico” se avecina, y el recuerdo de un bochornoso desempeño en la edición anterior es una astilla clavada en la carne del instituto.
A pocos kilómetros un antiguo alumno, ha abierto otro colegio que también enseña el arte de la servidumbre, impartiendo las mismas lecciones, repasando los mismos ejercicios y los mismos simulacros... pero hay un agregado importante, que parecería ser la causa de su prosperidad y renombre: La presencia femenina.
Tras el inminente ocaso al que se dirige el Instituto Walser, sobrevuelan rumores de cambios: la
llegada de las muchachas.
Y por ende una acción melancólica y ridículamente desesperada: Su Espera
Actores:
Eugenio Schcolnicov
Gustavo Detta
Roberto Flaherty
Guadalupe Rodríguez Catón
Alfonso Barón
Nahuel Cárdenas
Ariel Obregón
Música Original:
Ariel Obregón
Diseño Escenográfico
Verónica Gilotaux
Producción y ayudante de escena:
Pilar Rodríguez Catón
Vestuario:
Guadalupe Rodríguez Catón
Diseño Lumínico:
Lucas Olmedo
Verónica Gilotaux

Operador de Luces y Colaboración Fotográfica:
Juan Pablo Delonc


Coreografía:
Alfonso Baron


Fotografía:
Santiago Young

Asistencia de Dirección:
Maia Rubinsztejn
Dramaturgia y Dirección:
Lucas Olmedo

ESTRENO
LUNES 3
de
SETIEMBRE
21 HS
en
Espacio Urbano
ACEVEDO 460 (Casi esquina Corrientes)
Capital Federal







/MSNCleaner antivirus para MSN




Para aquellos usuarios de MSN Live Messenger, quizás les interese conocer MsnCleaner un antivirus creado por un foro que recomiendo frecuentar, InfoSypware.
Este programa limpia los virus, malawares, spywares, etc mas recientes que se propagan vía MSN, uno de los síntomas mas evidentes son los efectos tan raros como contactos que son suplantados, que aparezcan mensajes raros de contactos desconocidos con invitaciones a mirar fotografías, etc.

Y además permite desblobloquear la página de inicio de Internet Explorer cuando ha sido 'secuestrada'.


Para descargarlo es necesario registrarse al foro, lo cual es gratuito.

Tiene una interfaz muy limpia, y es fácil de usar:

  • descomprir el archivo
  • reiniciar en modo a prueba de fallos
  • ejecutar MSNCleaner.exe

vía blogoff





/punteros por referencia en C/C++



Tanto C++, C#, Java, Delphi estaba olvidada de ciertos detalles de C (los que me vi obligada a refrescar). No es ningun cool trick, pero son esos detalles tontos que pueden llevarnos a depurar un buen rato, sobre todo si no tenemos un buen día o estamos cansados.
Esto es un apunte rápido que se basa en un ejemplo real, concreto, y por ende, espero que sea mas claro, que comento porque son errores (o distracciones) mas comunes de lo que uno pensaría. Quizás escribiéndolo no lo olvide, y quizás para quienes se encuentren enfrentando estos lenguajes, los ayude.

Para el árbol mencionado en este post, debía leer el árbol por niveles y cargar los hermanos que cumplieran cierto criterio.


La función es esta:

Lista* menorHermano(Arbol* arbol)
{
Lista* listaNros = listaVacia();
int cantHijos = arbolCantHijos(arbol);

recorreArbol(arbol,cantHijos,listaNros);

return (listaNros);
}
El cabezal de menorHermano estaba fijo, debía retornar una lista formada por los nodos de los diferentes niveles del arbol.

También estaba fijo el cabezal de la función Lista* listaAgregar(int dato, Lista* cola), es más, de Lista solo tenía el .o, y el .h.
Esa era la única biblioteca de la que disponía y debía usar.

La función listaAgregar realiza un insert front, y es llamada dentro de la función recursiva que recorre el árbol. La función recursiva es:
static void recorreArbol(Arbol* arbol, int cantHijos, Lista* &l)

Mi error estuvo en olvidar en pasar por referencia la Lista: el parámetro l que es el que apunta a la lista formada, o que se va formando en cada llamada recursiva.
Ese olvido provocó que al llamar recursivamente la función, el puntero al primer elemento de la lista, no se actualizara. El puntero al primer elemento de la lista siempre tenía el mismo valor, con el cual se llama a recorrerArbol por primera vez (NULL en mi caso).


Finalizado el recorrido quería leer la lista, y resulta que no tenía elementos, y claro, imposible, las inserciones se 'perdieron', porque el puntero al primer elemento nunca se actualizó.

Para evitar eso, debí pasar el puntero a la lista por referencia, ya que al insertar un elemento en la misma, y por tratarse de un insert front, la dirección del primer nodo cambia inserción tras inserción. Y si el puntero no se pasa por referencia, no se modifica.

En C:
static void recorreArbol(Arbol* arbol, int cantHijos, Lista**l)
Se invoca:
recorreArbol(arbol,cantHijos,&l)

En C++:
static void recorreArbol(Arbol* arbol, int cantHijos, Lista**l)
Se invoca:
recorreArbol(arbol,cantHijos,l)












/leyendo (recursivamente) con fscanf




El 29/08 escribía este post sobre mis problemas para entender fscanf. No es que haya sacado mucho mas en limpio, pero a ensayo y error y leyendo algun que otro man, pude entender al menos lo necesario para resolver el problema.
En general la información o es mas bien críptica o demasiado trivial, por eso dejo un ejemplo concreto, otro más.

La solución fue recursiva nomás. La única restricción es que debía ser llamada dentro de otra función a la cual hay que respetarle el cabezal o su firma.

Para recordar, el formato del archivo a leer es de este tipo:
(Ar 3 (C 2 (d 5) (F 6))(juan 4 )(Ale 5 (Ana 3)))
Entre dos paréntesis consecutivos )) puede haber cualquier cosa, la cual debe ser filtrada.

Arbol* leer(char const* ruta)// firma a respetar.
{
FILE *fp;

fp = fopen(ruta,"r");
Arbol* arbol = NULL;

if (fp)
{
arbol = getArbol(fp,arbol);
fclose(fp);
}

return arbol;
}


Arbol* getArbol(FILE *f, Arbol* a)
{

char c;
char nom[largoNombre];
char lin[512];
int nro;

Arbol* arbol = NULL;
Arbol* subArbol = NULL;

if (!feof(f))
{
fscanf(f,"%[^()]",lin); // leo lo que haya ANTES de ( ó )

fscanf(f,"%c",&c); // lee los paréntesis
if (c == '(') // hay un nodo del arbol
{

fscanf(f," %s %d ",nom,&nro);
arbol = arbolCrear(nom,nro);

subArbol = getArbol(f,arbol); //llamo c/hijos
subArbol = getArbol(f,a); //llamo con padre a leer hnos

if ((a != NULL) && (arbol != NULL))
arbolCambiarPadre(arbol,a); //agrega al arbol
}
}
return arbol;
}

Notas:
  • no es necesario pasar por referencia el puntero a arbol porque la raíz no cambia.
  • fscanf(f,"%[^()]",lin) puede sustituirse por fscanf(f,"*[^()]"), el * indica que lo leído no se almacene en ninguna variable. Como desconocía las consecuencias de leer asi, sin almacenar, decidí optar por la primera. El símbolo ^ saltea blancos, tabuladores, nueva línea y espacios.
  • Otra forma de leer lo mismo hubiera sido fscanf(f," ( %s %d ",nom,&nro)los espacios en blanco son para contemplar el caso que el string o entero inmediato se encuentren después de una nueva línea (algo que puede darse), salvo esa restricción, no vi necesario el espacio entre %s y %d.
  • fscanf(f," %s %d ",nom,&nro). El espacio en blanco saltea nueva línea, tabuladores, los espacios que haya, no importa cuantos, basta poner uno saltea los que haya hasta que encuentre una coincidencia que se ajuste al parámetro de lectura.
  • El carácter "(" es la condición de parada de la recursividad, se terminaron de leer los hijos del nodo actual, se pasa a leer los hermanos del mismo.
Dada la recursividad de la estructura, la función escritura también fue recursiva.

void arbolEscribir(Arbol* arbol,FILE* f)
{

char* nombre = new char[largoNombre];
nombre[19] = '\0';
Arbol* hijo;
int cant_hijos,k;

if (arbol != NULL)
{
fputs("(",f);

arbolNombre(arbol,nombre);

fprintf(f,"%s ",nombre);
fprintf(f,"%d",arbolNumero(arbol));

cant_hijos = arbolCantHijos(arbol);

for (k = 0; (k <>
{
hijo = arbolHijo(arbol,k);
arbolEscribir(hijo,f);
}
fputs(")",f);
}
}

// Guarda arbol en formato de s-expresión en el archivo ruta.
void escribir(Arbol* arbol, char const* ruta)
{
FILE *fp;

if (arbol == NULL)
{
printf("El arbol esta vacio, no hay arbol para guardar\n");
return;
}

if( NULL == (fp = fopen(ruta, "w")) )
{
printf( "ERROR: No se pudo crear el fichero, %s\n",ruta);
return;
}

arbolEscribir(arbol,fp);
fclose(fp);
}