You are on page 1of 147

Introducci´ on a Mono

Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . . . Otros Referencias Agradecimientos y . . . *
P´ agina www

P´ agina de Abertura

Pablo Ordu˜ na Fern´ andez (aka NcTrun) Julio 2006
P´ agina 1 de 147

Regresar

Full Screen

This work is licensed under the Creative Commons Attribution License. To view a copy of this license, visit http://creativecommons.org/licenses/by/2.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA

Cerrar

Abandonar

Introducci´ on a Mono

c 2006 Pablo Ordu˜ na. e-ghost y DotNetGroup

1.

Introducci´ on al cursillo

Introducci´ on a Mono
Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . . . Otros Referencias

Introducci´ on al cursillo

Agradecimientos y . . . *
P´ agina www

P´ agina de Abertura

P´ agina 2 de 147

Regresar

Full Screen

Cerrar

Abandonar

Introducci´ on a Mono

c 2006 Pablo Ordu˜ na. e-ghost y DotNetGroup

1.1.

De qu´ e De qu´ e va este cursillo

va este cursillo
Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . . . Otros Referencias Agradecimientos y . . . *
P´ agina www

• El cursillo est´ a entre los Cursillos de Julio de los grupos de inter´ es de la Universidad de Deusto – Cursillos de Julio: ∗ Desde hace varios a˜ nos, alumnos y alumnas de la Facultad de Ingenier´ ıa de la Universidad de Deusto organizan de manera voluntaria una serie de cursillos que abarcan diversas ´ areas de conocimiento ∗ Esta actividad es coordinada por la Delegaci´ on de Alumnos ∗ Cuenta con el apoyo de profesores y de la Facultad de Ingenier´ ıaESIDE, que anima e impulsa estas actividades facilitando el uso de aulas informatizadas y dem´ as recursos para que su realizaci´ on sea lo mejor posible. – Filosof´ ıa de los cursillos ∗ ¡Compartir conocimiento! ∗ Ayudar a dar los primeros pasos de una tecnolog´ ıa, lenguaje de programaci´ on, etc · En consecuencia: En un cursillo se abarcan la m´ axima cantidad de temas en el m´ ınimo tiempo posible. No es posible profundizar mucho en cada tema, pero s´ ı ver lo suficiente para que el/la alumno/a pueda seguir aprendiendo por su cuenta, una vez dados los primeros pasos.

P´ agina de Abertura

P´ agina 3 de 147

Regresar

Full Screen

Cerrar

Abandonar

NET de la Universidad (el DotNetGroup) Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . Otros Referencias Agradecimientos y .· Cursillos introductorios. * P´ agina www P´ agina de Abertura P´ agina 4 de 147 Regresar Full Screen Cerrar Abandonar . no exhaustivos – M´ as informaci´ on sobre los Cursillos de Julio • Este concretamente se da desde el grupo de software libre de la Universidad (el e-ghost) y desde el grupo de . . . . .

.2. . en especial al final del pdf • El cursillo es una actualizaci´ on del cursillo de mono que se imparti´ o en Julio 2005 Introducci´ on al entorno Interfaces gr´ aficas . . .Introducci´ on a Mono c 2006 Pablo Ordu˜ na. * P´ agina www P´ agina de Abertura P´ agina 5 de 147 Regresar Full Screen Cerrar Abandonar . e-ghost y DotNetGroup 1. Objetivos Objetivos Introducci´ on al cursillo Qu´ e es Mono • Pretende ser una introducci´ on a Mono – cubriendo algunos de los temas m´ as divertidos de esta plataforma – a d´ ıa de hoy (17-20 de Julio de 2006) • En algunos puntos puede ser m´ as que una introducci´ on – Suelen ser para explicar otros puntos que s´ ı lo pretenden ser – Adem´ as han sido ampliadas (no actualizadas) durante la semana despu´ es del cursillo • Se procura dar suficientes enlaces y referencias para avanzar en diferentes campos. Otros Referencias Agradecimientos y .

Introducci´ on a Mono c 2006 Pablo Ordu˜ na. . . Desde el DotNetGroup Se imparti´ o un cursillo de 6 horas de C#. Apuntes disponibles en: – la web de los cursillos – la web del grupo – el hueco web del autor en la web del e-ghost Interfaces gr´ aficas . * P´ agina www P´ agina de Abertura P´ agina 6 de 147 Regresar Full Screen Cerrar Abandonar . . Otros Referencias Agradecimientos y . e-ghost y DotNetGroup 1. Requisitos Requisitos Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno • C#. .3.

. * P´ agina www P´ agina de Abertura P´ agina 7 de 147 Regresar Full Screen Cerrar Abandonar . e-ghost y DotNetGroup 2. . .Introducci´ on a Mono c 2006 Pablo Ordu˜ na. Qu´ e es Mono Introducci´ on a Mono Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . Otros Referencias Qu´ e es Mono Agradecimientos y . .

e-ghost y DotNetGroup 2. . . . * P´ agina www P´ agina de Abertura P´ agina 8 de 147 Regresar Full Screen Cerrar Abandonar .1. Qu´ e es Mono Qu´ e es Mono Introducci´ on al cursillo Qu´ e es Mono • Mono es una plataforma libre de desarrollo multiplataforma • Desarrollo dirigido por Novell / Ximian • Objetivo: – que GNU/Linux triunfe en el escritorio – intentando dar a los desarrolladores de software de GNU/Linux una plataforma en la que desarrollen m´ as software en menos tiempo Introducci´ on al entorno Interfaces gr´ aficas . .Introducci´ on a Mono c 2006 Pablo Ordu˜ na. Otros Referencias Agradecimientos y .

1. Un poco de historia Un poco de historia Introducci´ on al cursillo Qu´ e es Mono 2. Ximian • Fundada por Miguel de Icaza y Nat Friedman • Su prop´ osito era desarrollar software de escritorio para GNU/Linux • Seg´ un afirman esto les supon´ ıa un gran esfuerzo – Crearon herramientas para facilitarlo Sin obtener el resultado esperado • Ya anteriormente hab´ ıan llegado a la conclusi´ on de que no se estaba reutilizando c´ odigo en GNU/Linux – Cada lenguaje reimplementa sus librer´ ıas desde cero – Cada programa ten´ ıa poco m´ as que libc o xlib en com´ un con el resto • Evolution – Aplicaci´ on grande – Desarrollo demasiado caro ∗ 2. e-ghost y DotNetGroup 2.2. .2. . .Introducci´ on a Mono c 2006 Pablo Ordu˜ na.5 a˜ nos ∗ 17 programadores en algunos momentos Introducci´ on al entorno Interfaces gr´ aficas . . Otros Referencias Agradecimientos y . * P´ agina www P´ agina de Abertura P´ agina 9 de 147 Regresar Full Screen Cerrar Abandonar .

* P´ agina www P´ agina de Abertura P´ agina 10 de 147 Regresar Full Screen Cerrar Abandonar . . Otros Referencias Agradecimientos y . . . .· de Icaza: ”los u ´ltimos seis meses fueron doloros´ ısimos porque encontramos todo tipo de problemas con haberlo hecho en C ” Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas .

. Otros Referencias Agradecimientos y . Gnome • Por entonces.2.2. . desde gnome se intentaba solventar el problema con algunas soluciones: – Bindings de sus librer´ ıas ∗ (Esta soluci´ on es llevada a cabo por muchos otros proyectos) ∗ Problemas: · Cada vez que se cambia algo hay que volver a hacer demasiado trabajo Hoy existen sistemas que automatizan bastante esta tarea · Lenguajes menos populares sufren – Bonobo ∗ Soluci´ on a creaci´ on de componentes reusables · Utilizando CORBA · Basado en interfaces establecidos · Independiente del lenguaje ∗ Los resultados no fueron los esperados Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . .2. * P´ agina www P´ agina de Abertura P´ agina 11 de 147 Regresar Full Screen Cerrar Abandonar . .

. . .2. * P´ agina www P´ agina de Abertura P´ agina 12 de 147 Regresar Full Screen Cerrar Abandonar .3.NET • Por entonces (2000).NET Framework ∗ Nueva plataforma de desarrollo ∗ Nueva infraestructura para desarrollo de Servicios Web ∗ Nuevas herramientas para la plataforma de desarrollo – Hailstorm ∗ el sistema de single sign-on centralizado de Passport ∗ No implementado por Mono ∗ DotGNU s´ ı pretende implementar una alternativa Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . . .2.NET Initiative” Introducci´ on al cursillo – . Microsoft publicaba la ”. Otros Referencias Agradecimientos y .

NET Framework • Resolv´ ıa todos los problemas que hab´ ıan tratado de resolver. . * P´ agina www P´ agina de Abertura P´ agina 13 de 147 Regresar Full Screen Cerrar Abandonar . . . Threading.NET Framework Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas .2. . – Un nuevo lenguaje de alto nivel. . .2. de una forma m´ as organizada • Ofrec´ ıa: – Garbage Collector.4. . Otros Referencias Agradecimientos y . C# – Una potente librer´ ıa – Soporte para m´ ultiples lenguajes – Especificaciones ya publicadas • Las partes m´ as complejas estaban estandarizadas – Permitiendo que se hiciesen implementaciones de ello • A mediados de 2001 decidieron lanzar el Proyecto Mono – Desarrollando una implementaci´ on libre del .

del CIL se genera el c´ odigo nativo de la plataforma en la que se ejecute – compilador JIT (Just In Time) o AOT (Ahead Of Time) o int´ erprete – En estos momentos.1. . S390 Introducci´ on al entorno Interfaces gr´ aficas . . est´ an soportadas: ∗ ∗ ∗ ∗ x86 (Linux.3. . * P´ agina www P´ agina de Abertura P´ agina 14 de 147 Regresar Full Screen Cerrar Abandonar . BSD. Windows.3.2.Introducci´ on a Mono c 2006 Pablo Ordu˜ na. Caracter´ ısticas b´ asicas Caracter´ ısticas b´ asicas Introducci´ on al cursillo Qu´ e es Mono 2. e-ghost y DotNetGroup 2. 10. Otros Referencias Agradecimientos y . Linux) AMD64 (Linux) SPARC. el CIL – Common Intermediate Language. Solaris/x86) PowerPC (Mac OS X 10. .3. tambi´ en llamado IL o MSIL – f´ acilmente compilable – cada lenguaje tiene su compilador que genera CIL • Luego. Common Language Infrastructure • La plataforma es independiente al lenguaje • Cuenta con un lenguaje universal.

. Otros Referencias Agradecimientos y . . . . * P´ agina www P´ agina de Abertura P´ agina 15 de 147 Regresar Full Screen Cerrar Abandonar .Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas .

Ventajas • Gracias a todo lo anterior: – Se puede desde un lenguaje utilizar componentes escritos en otro lenguaje – Dada una librer´ ıa. .NET Introducci´ on al cursillo Qu´ e es Mono 2. Mono y . . Otros Referencias Agradecimientos y .Introducci´ on a Mono c 2006 Pablo Ordu˜ na.1. su API es accesible a todos estos lenguajes – Lo u ´nico necesario es que estos lenguajes tengan compilador a CIL – Incluso se pueden reutilizar componentes de terceros Introducci´ on al entorno Interfaces gr´ aficas . e-ghost y DotNetGroup 2. . .4.NET Mono y .4. * P´ agina www P´ agina de Abertura P´ agina 16 de 147 Regresar Full Screen Cerrar Abandonar .

4.NET..2. .NET .. * P´ agina www P´ agina de Abertura • Mono implementa casi todo el . . .NET Windows Forms ADO. – Algunas partes no implementadas ∗ Para algunas no se van a dedicar esfuerzos · System.EnterpriseServices o System.Management ∗ Otras ya pr´ acticamente implementadas P´ agina 17 de 147 Regresar Full Screen Cerrar Abandonar . Otros Referencias Agradecimientos y .NET Framework y est´ andares – Tanto C# como el CLI fueron estandarizados – Otros componentes no fueron estandarizados: ∗ ∗ ∗ ∗ ASP.NET Framework Introducci´ on al cursillo – de la misma forma que la FSF en su d´ ıa inici´ o el Proyecto GNU bas´ andose en UNIX • . . . ASP.NET Framework – Tambi´ en lo no estandarizado (por compatibilidad) ∗ ADO. Compatibilidad • Mono se basa en el .NET.2. . Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas .

art´ ıculos. dedicadas a .NET en mente P´ agina de Abertura P´ agina 18 de 147 Regresar Full Screen Cerrar Abandonar . • Por tanto son plataformas compatibles en muchos aspectos Introducci´ on al cursillo – Lo compilado en una plataforma puede ser ejecutado en la otra siempre y cuando: ∗ ∗ ∗ ∗ Sean aplicaciones 100% . * P´ agina www • Esta compatibilidad tiene grandes ventajas: – Reutilizar inversiones de Microsoft en documentaci´ on ∗ Libros. . . .· Windows Forms.NET – Facilita la migraci´ on de proyectos desarrollados en . .NET y se plantean migrar a GNU/Linux ∗ Utilizar componentes que otros programaron con . . . ) Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . Otros Referencias Agradecimientos y . etc. . cursillos de . foros.NET a GNU/Linux ∗ Empresas que usan .NET ∗ P´ aginas web.NET: no utilicen P/Invoke Utilicen librer´ ıas que est´ en portadas en la otra plataforma Utilicen versiones compatibles Cumplan lo b´ asico en portabilidad (’/’ o ’\\’. .

* P´ agina www P´ agina de Abertura P´ agina 19 de 147 Regresar Full Screen Cerrar Abandonar . .NET ∗ QT# ∗ un largo etc´ etera Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . MySQL. .CORBA ∗ #ziplib ∗ GlGen (soporte para OpenGL) ∗ SDL. . . . – Y muchas m´ as librer´ ıas: ∗ Remoting.org. Librer´ ıas Librer´ ıas Introducci´ on al cursillo • Mono viene con varias librer´ ıas incorporadas: – Las que tiene implementadas de . Postgress. .Introducci´ on a Mono c 2006 Pablo Ordu˜ na. Otros Referencias Agradecimientos y . . Sybase. Glade#.SQLite.5. Microsoft SQL y Oracle. ) ∗ POSIX ∗ Librer´ ıas de Novell ∗ M´ as Bases de datos · Adem´ as de OleDB.NET – Suyas propias: ∗ Cairo ∗ Bindings de Gnome (GTK#. e-ghost y DotNetGroup 2. . iFolder. Tds.. . Beagle. ) ∗ Bindings de aplicaciones (Evolution. Mozilla. OpenOffice. . . proporciona para IBM DB2.

. * P´ agina www P´ agina de Abertura P´ agina 20 de 147 Regresar Full Screen Cerrar Abandonar .6.6.1. . utilizan MIT X11 para evitar problemas • Tambi´ en da licencias privativas Introducci´ on al entorno Interfaces gr´ aficas . e-ghost y DotNetGroup 2. . . Cu´ al es la licencia de Mono • Diferentes licencias: – Compiladores: GNU GPL – Runtime: GNU LGPL – Librer´ ıas de clases: MIT X11 ∗ Para evitar amig¨ uedades de la LGPL con ”trabajo derivado” · Una clase hija ¿es trabajo derivado? ∗ Dado que es la que m´ as contribuidores tiene. Licencias y patentes Licencias y patentes Introducci´ on al cursillo Qu´ e es Mono 2. Otros Referencias Agradecimientos y .Introducci´ on a Mono c 2006 Pablo Ordu˜ na.

Novell/Ximian. estandariza en 2001 parte de .NET • Microsoft. entre otras • ¿Qu´ e es la ECMA? – European Computer Manufacturer’s Association – La misma asociaci´ on que estandariz´ o JavaScript.NET en la ECMA: – ECMA 334 (C#) – ECMA 335 (CLI) • Entre 2001 y 2003 tambi´ en son estandarizados C# y el CLI en la ISO: – ISO 23270 (C#) – ISO 23271 (Common Language Infrastructure) • En el proceso de estandarizaci´ on participaron varias empresas: – Borland.6. .2. IBM. . por ejemplo Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . . Estandarizaci´ on de . . Otros Referencias Agradecimientos y . * P´ agina www P´ agina de Abertura P´ agina 21 de 147 Regresar Full Screen Cerrar Abandonar . junto con HP e Intel. Fujitsu o Netscape. Sun Microsystems.2.

.NET? – S´ ı. lo no estandarizado por el ECMA. Est´ andares y patentes • ¿Qu´ e significa esto? Introducci´ on al cursillo – La ECMA tiene una pol´ ıtica con respecto a patentar sus est´ andares ∗ Toda patente de un est´ andar debe estar bajo los t´ erminos RAND · En caso contrario. . se echa a la empresa – Microsoft.6. .2. Otros Referencias Agradecimientos y . . ”como quiera” Cerrar Abandonar . * P´ agina www – Reasonable And Non Discriminatory P´ agina de Abertura – Si una empresa tiene una patente importante sobre el est´ andar.3. Intel y HP lo han prometido Full Screen P´ agina 22 de 147 Regresar • ¿Entonces Microsoft puede patentar . ofrecer´ a licencias: ∗ bajo t´ erminos ”razonables” ∗ en condiciones no discriminatorias – Compatible con el software libre u ´nicamente si la licencia es gratuita ∗ Microsoft. Intel y HP han prometido ∗ Licencias gratuitas (royalty-free ) para todas las patentes relacionadas con los est´ andares ECMA 334 Y ECMA 335 • ¿RAND? Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas .

la patente es declarada nula – En el caso de los est´ andares ECMA 334 y ECMA 335. pero: ∗ con restricciones ∗ bajo t´ erminos RAND • ¿En qu´ e afecta todo esto a Mono? – Patentes en lo no estandarizado ∗ Lo mismo que una patente cualquiera ∗ Mejor utilizar alternativas: · GTK# en lugar de Windows Forms · . podr´ ıan exigir que se usasen licencias para el uso de su implementaci´ on · Siempre y cuando sean patentes v´ alidas • ¿Qu´ e har´ ıa Novell en caso de enfrentarse a una patente? P´ agina 23 de 147 Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . * P´ agina www P´ agina de Abertura 1. – Patentes en lo estandarizado ∗ En el peor de los casos. Java (entre otros) marca un precedente importante Regresar Full Screen Cerrar Abandonar . . .. .– Lo estandarizado tambi´ en. . Intentar invalidar la patente buscando Arte Previo – En caso de que se encuentren implementaciones de lo patentado previas a la patente.. Otros Referencias Agradecimientos y .

. reimplementar de otra manera – No invalida la patente.NET ∗ Mantendr´ ıa el software libre – Quiz´ a. en caso de que interese. Otros Referencias Agradecimientos y . . .∗ Muchas caracter´ ısticas de C# est´ an en Java ∗ Muchas caracter´ ısticas del CLI est´ an en el JRE 2. pero puede hacer que no sea aplicable a la nueva implementaci´ on 3. Si lo anterior es imposible. se podr´ ıa llegar a pagar alguna licencia ∗ S´ olo como u ´ltimo recurso ∗ S´ olo en caso de que haya clientes dispuestos a pagar esa licencia para mantener su programa mientras reimplementan la parte patentada • ¿Qu´ e ocurrir´ ıa en el caso de que cortasen alg´ un componente? – Si Microsoft por medio de patentes obligase a Novell/Ximian eliminar compatibilidad con . * P´ agina www P´ agina de Abertura Regresar Full Screen Cerrar Abandonar . . Si lo anterior es imposible: – Se corta el componente ∗ Eliminar´ ıa compatibilidad con .NET ∗ El objetivo principal (desarrollar software bajo GNU/Linux) seguir´ ıa vigente · Con las librer´ ıas de Mono ∗ Recordemos que esas librer´ ıas se implementan s´ olo por compatibilidad P´ agina 24 de 147 Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas .

* P´ agina www P´ agina de Abertura Web original de la imagen P´ agina 25 de 147 Regresar • Entonces. . . .Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . . Otros Referencias Agradecimientos y . ¿Mono est´ a libre de patentes? Full Screen – NO ∗ Las patentes que Mono podr´ ıa infringir no son s´ olo de Microsoft Cerrar Abandonar . . .

* P´ agina www P´ agina de Abertura P´ agina 26 de 147 Regresar Full Screen Cerrar Abandonar . ¿Estoy m´ as libre de patentes utilizando otra plataforma? – NO ∗ Cualquier c´ odigo de m´ as de 1000 l´ ıneas tiene muchas posibilidades de estar infringiendo alguna patente ∗ El usar o no usar Mono no da m´ as garant´ ıas de que tu proyecto pueda ser minado por alguna patente Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . . Otros Referencias Agradecimientos y . . . .· Podr´ ıa estar infringiendo patentes de Sun sobre Java · Podr´ ıa estar infringiendo patentes submarinas de otras empresas sobre alguna parte de alg´ un componente • Entonces. . .

Introducci´ on a Mono

c 2006 Pablo Ordu˜ na. e-ghost y DotNetGroup

2.7.

Estado Actual

Estado Actual
Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno

• Versi´ on estable actual: 1.1.13 • Versi´ on actual: 1.1.16.1 – Nuevos componentes que no hab´ ıa en la 1.0 ∗ ∗ ∗ ∗ Compilador de VB.NET (alpha, hay otro nuevo en desarrollo) Windows Forms 1.1 Debugger M´ as compiladores, m´ as bindings, versiones m´ as modernas. . .

Interfaces gr´ aficas . . . Otros Referencias Agradecimientos y . . . *
P´ agina www

– Algunos componentes de Microsoft Whidbey ∗ C# 2.0, .NET 2, XML 2, ASP.NET 2, ADO.NET 2. . . – Muchas mejoras en rendimiento • Pr´ oximas versiones – 1.2 ∗ Finales 2006 ∗ Versi´ on estable de lo que ahora es la rama 1.1 – 2.0 ∗ 2007

P´ agina de Abertura

P´ agina 27 de 147

Regresar

Full Screen

Cerrar

Abandonar

Introducci´ on a Mono

c 2006 Pablo Ordu˜ na. e-ghost y DotNetGroup

2.8.

Aplicaciones

Aplicaciones
Introducci´ on al cursillo Qu´ e es Mono

2.8.1.

Aplicaciones que utilizan Mono

• El n´ umero de aplicaciones desarrolladas en Mono – se ha disparado desde la primera versi´ on estable de Mono en Agosto 2004 – muchas de estas aplicaciones todav´ ıa no son estables, pero muchas son ya funcionales • Aqu´ ı hablamos de unas pocas • Como veremos, todas estas aplicaciones utilizan las APIs propias de Mono, y muchas ni siquiera son portables a Microsoft Windows. Como dec´ ıamos antes, el objetivo principal es tener una plataforma de desarrollo libre de calidad, no compatibilidad con .NET

Introducci´ on al entorno Interfaces gr´ aficas . . . Otros Referencias Agradecimientos y . . . *
P´ agina www

P´ agina de Abertura

P´ agina 28 de 147

Regresar

Full Screen

Cerrar

Abandonar

2.8.2.

F-Spot

• F-spot es un gestor de fotos • Almacena en una base de datos (SQLite) la informaci´ on de las fotos • Permite f´ acilmente – manejarlas – buscar grupos de fotos por: ∗ fechas ∗ alguna de las m´ ultiples etiquetas que le marques • Funciones t´ ıpicas de visores de fotos – Presentaci´ on, editar, rotar. . .
Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . . . Otros Referencias Agradecimientos y . . . *

P´ agina www

P´ agina de Abertura

P´ agina 29 de 147

Regresar

Full Screen

Cerrar

Abandonar

. * P´ agina www P´ agina de Abertura P´ agina 30 de 147 Regresar Full Screen web original del imagen Cerrar Abandonar . .Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . Otros Referencias Agradecimientos y . . .

. . Java.. .C#. . pero para GNU/Linux y es libre • Indexa gran cantidad de archivos: – Documentos ∗ OpenOffice. . – C´ odigo ∗ C. ogg.3. Otros Referencias Agradecimientos y .org (sxw.8. . – Otros archivos P´ agina de Abertura Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . txt. . .doc. jpg. Microsoft Office (.ppt) .sxi. texi. e-mails del Evolution.2. Python. . – M´ as ∗ Conversaciones con el Gaim.. . png. flac. RTF.sxm). Beagle • Beagle es un sistema de b´ usquedas en disco – Estilo Google Desktop. PDF. mp3. .C++. • Soporta: – Queries con un interfaz de usuario gr´ afico en GTK# (”Best”) – Queries desde comandos para tus scripts – Queries desde tus programas ∗ Su propia API para Mono a trav´ es de D-BUS# P´ agina 31 de 147 Regresar Full Screen Cerrar Abandonar . * P´ agina www ∗ html.

. . . * P´ agina www P´ agina de Abertura P´ agina 32 de 147 Regresar Full Screen Cerrar Abandonar . Otros Referencias Agradecimientos y . . . ) Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . . nuevos archivos.∗ Una API para Python – Queries online ∗ Los nuevos resultados aparecen seg´ un se causan (conversaciones.

.Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . Otros Referencias Agradecimientos y . . * P´ agina www P´ agina de Abertura P´ agina 33 de 147 Regresar Full Screen Cerrar Abandonar . . .

2.8.4.

Muine

• Muine es un reproductor de m´ usica
Introducci´ on al cursillo

– Almacenado ordenado por: ∗ ´ albumes ∗ lista de canciones – Opciones t´ ıpicas de ∗ reproductor de m´ usica ∗ gestor de listas

Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . . . Otros Referencias Agradecimientos y . . . *
P´ agina www

P´ agina de Abertura

P´ agina 34 de 147

Regresar

Full Screen

Cerrar

Abandonar

Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . . . Otros Referencias Agradecimientos y . . . *
P´ agina www

P´ agina de Abertura

P´ agina 35 de 147

Regresar

Full Screen

Cerrar

Abandonar

2.8.5.

Blam

• Blam es un gestor de RSS/RDF para Gnome
Introducci´ on al cursillo

– Bastante simple y f´ acil de usar – Utiliza Gecko#, el motor de Mozilla

Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . . . Otros Referencias Agradecimientos y . . . *
P´ agina www

P´ agina de Abertura

P´ agina 36 de 147

Regresar

Full Screen

Cerrar

Abandonar

. . Otros Referencias Agradecimientos y .Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . . . * P´ agina www P´ agina de Abertura P´ agina 37 de 147 Regresar Full Screen Cerrar Abandonar .

enlazar y quitar notas – Funciones t´ ıpicas de editores de texto simples. Tomboy • Tomboy es un editor de notas para Gnome: Introducci´ on al cursillo – Un panel de Gnome – Puedes a˜ nadir. .6. . .2. . como: ∗ ∗ ∗ ∗ ∗ errores en gram´ atica p´ aginas web o e-mails redo/undo cambiar tama˜ no texto b´ usquedas Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas .8. * P´ agina www P´ agina de Abertura P´ agina 38 de 147 Regresar Full Screen Cerrar Abandonar . Otros Referencias Agradecimientos y .

Otros Referencias Agradecimientos y .Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . * P´ agina www P´ agina de Abertura P´ agina 39 de 147 Regresar Full Screen Cerrar Abandonar . . . . .

. * P´ agina www P´ agina de Abertura P´ agina 40 de 147 Regresar Full Screen Cerrar Abandonar . e-ghost y DotNetGroup 3. . . Introducci´ on al entorno Introducci´ on a Mono Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . . Otros Referencias Introducci´ on al entorno Agradecimientos y .Introducci´ on a Mono c 2006 Pablo Ordu˜ na.

suse o lo que sea) • Por otra parte. testing. • Para todas las plataformas existe un instalador gen´ erico – Esto incluye a GNU/Linux. . .1. .1. Otros Referencias Agradecimientos y . tambi´ en tiene sus desventajas: * P´ agina www P´ agina de Abertura P´ agina 41 de 147 Regresar Full Screen Cerrar Abandonar .Introducci´ on a Mono c 2006 Pablo Ordu˜ na.1.13 y muchos paquetes relacionados est´ an disponibles tanto en debian testing y unstable como en Ubuntu dapper. Debian y Ubuntu • Mono 1. as´ ı como en la mayor´ ıa de las distribuciones importantes 3.1. (da lo mismo si usas sid. Instalador gen´ erico Introducci´ on al entorno Interfaces gr´ aficas .2. Instalaci´ on Instalaci´ on Introducci´ on al cursillo Qu´ e es Mono 3. . con un instalador que funciona en toda distribuci´ on • Est´ a muy bien para cacharrear con Mono: – F´ acil de instalar (instalador GTK) – Instalaci´ on limpia (desinstalaci´ on limpia) – Viene con la u ´ltima versi´ on de Mono – Independiente de dependencias etc. e-ghost y DotNetGroup 3.1.

• La configuraci´ on de xsp se tratar´ a m´ as adelante Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas .– Es f´ acil para hacer poca cosa. Algunos programas exigen otras dependencias. . . tienes que configurarlo t´ u mismo (hacer lo que los mantenedores de los paquetes ya han hecho por t´ ı) – Dificil de mantener: tienes que estar pendiente de actualizaciones – Las dependencias no lo detectan. . Para hacer que xsp se ejecute como usuario www-data. . Otros Referencias Agradecimientos y . * P´ agina www P´ agina de Abertura P´ agina 42 de 147 Regresar Full Screen Cerrar Abandonar .

* P´ agina www P´ agina de Abertura P´ agina 43 de 147 Regresar Full Screen Cerrar Abandonar . . Otros Referencias Agradecimientos y . . .Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . .

. . * P´ agina www P´ agina de Abertura P´ agina 44 de 147 Regresar Full Screen Cerrar Abandonar .Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . . Otros Referencias Agradecimientos y . .

* P´ agina www P´ agina de Abertura P´ agina 45 de 147 Regresar Full Screen Cerrar Abandonar . . . Otros Referencias Agradecimientos y .Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . . .

Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . Otros Referencias Agradecimientos y . . . * P´ agina www P´ agina de Abertura P´ agina 46 de 147 Regresar Full Screen Cerrar Abandonar . . .

* P´ agina www P´ agina de Abertura P´ agina 47 de 147 Regresar Full Screen Cerrar Abandonar . . . . . Otros Referencias Agradecimientos y .Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas .

. . . * P´ agina www P´ agina de Abertura P´ agina 48 de 147 Regresar Full Screen Cerrar Abandonar . .Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . Otros Referencias Agradecimientos y .

. . * P´ agina www P´ agina de Abertura P´ agina 49 de 147 Regresar Full Screen Cerrar Abandonar .Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . Otros Referencias Agradecimientos y . . .

3. • Hay un instalador para utilizar GTK# desde el VS. hay una Live on CD llamada Mono Live. .4. el servidor XSP.1. P´ agina de Abertura P´ agina 50 de 147 Regresar Full Screen Cerrar Abandonar .. que viene con: – versiones muy recientes de Mono P´ agina www – aplicaciones vistosas de Mono ∗ ∗ ∗ ∗ ∗ Beagle F-spot Muine MonoDevelop . Otros Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . Windows • Est´ a el instalador de Mono Introducci´ on al cursillo – Viene con Mono.3. . . . . . GTK#. * • Para probar Mono sin instalarlo.1. Otros Referencias Agradecimientos y ..NET 3.

2. mono • Programa que ejecuta un ensamblado ejecutable – Hay dos paquetes que contienen este comando: ∗ mono-jit: compilador jit (y aot) ∗ mono-mint: int´ erprete – Nosotros utilizaremos y aqu´ ı hablamos del mono-jit • Algunas opciones: – --aot: Genera un .2.dlls) – PKG CONFIG PATH: donde busca los paquetes Full Screen Cerrar Abandonar . puede ser u ´til para optimizar un programa.1. . – -v: Verboso. -v -v -v -v. * P´ agina www P´ agina de Abertura P´ agina 51 de 147 • Variables de entorno: Regresar – MONO PATH: donde busca los ensamblados a importar (.Introducci´ on a Mono c 2006 Pablo Ordu˜ na. Muy verboso Introducci´ on al entorno Interfaces gr´ aficas . . . Herramientas b´ asicas Herramientas b´ asicas Introducci´ on al cursillo Qu´ e es Mono 3. e-ghost y DotNetGroup 3. . Otros Referencias Agradecimientos y .so con las funciones compiladas ∗ Unida a -O=all (todas las optimizaciones).

Diferenciando JIT de AOT • Dado un c´ odigo en CIL.exe • Estar´ a utilizando el compilador JIT: 1.2. . . La ejecuta 5. . la ejecutar´ a (sin necesidad de compilarla) • Si utilizamos el flag -O=all – Cuando llega a una funci´ on no compilada. Otros Referencias Agradecimientos y . Llega a una funci´ on no compilada 3. . y dejamos el c´ odigo generado en un fichero .so Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas .2. ejecutamos: Introducci´ on al cursillo mono programa.3. estaremos utilizando el compilador AOT: – Compilamos de una pasada todas las funciones. compila la funci´ on de una manera m´ as ´ optima (tarda m´ as en compilarlo) – El c´ odigo compilado es m´ as ´ optimo (tarda menos en ejecutarlo) • Si utilizamos el flag --aot. Empieza a ejecutar 2. La compila a nativo 4. Cada vez que la vuelva a encontrar. * P´ agina www P´ agina de Abertura P´ agina 52 de 147 Regresar Full Screen Cerrar Abandonar .

.cs: nctrun@ord3p:~/aot$ mcs programa. no habr´ a diferencia respecto al compilador JIT cuando estemos utilizando funciones ya compiladas (funciones que ya se han ejecutado) – Pero. Otros Referencias Agradecimientos y . * P´ agina www P´ agina de Abertura Regresar Full Screen Cerrar Abandonar . adem´ as de evitar que las funciones no compiladas se tengan que compilar. .exe 15 nctrun@ord3p:~/aot$ P´ agina 53 de 147 Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . ya estar´ a compilada. .cs – Compilamos programa. por lo que se salta el paso de compilar las funciones del JIT – Sin embargo. le pasamos tambi´ en -O=all. si al hacer el --aot.– El fichero es dependiente de la plataforma • Al ejecutar el programa de nuevo: – Al llegar a una funci´ on. el c´ odigo ejecutado est´ a m´ as optimizado: ∗ No habr´ a fase de compilaci´ on en tiempo de ejecuci´ on ∗ El c´ odigo ejecutado ser´ a m´ as ´ optimo • ”Demostraci´ on” de lo que hace el compilador AOT: – C´ odigo en interaccionLenguajes/aot/programa.cs nctrun@ord3p:~/aot$ – Ejecutamos el programa: nctrun@ord3p:~/aot$ mono programa. .

exe.exe Mono Ahead of Time compiler .so – Vemos su interior con objdump: Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas .o Executing the native linker: ld -shared -o /home/nctrun/aot/programa.o Compiled 2 out of 2 methods (100%) 0 methods contain absolute addresses (0%) 0 methods contain wrapper references (0%) 0 methods contain lmf pointers (0%) 0 methods have other problems (0%) AOT RESULT 0 – Vemos que tenemos un archivo llamado programa. .exe. Otros Referencias Agradecimientos y . * P´ agina www P´ agina de Abertura P´ agina 54 de 147 nctrun@ord3p:~/aot$ objdump -D programa.– Ejecutamos programa.so: formato del fichero elf32-i386 Full Screen Desensamblado de la secci´ on .exe con el flag --aot: nctrun@ord3p:~/aot$ mono --aot programa.exe.compiling assembly /home/nctrun/aot/programa.exe. . .hash: Cerrar Abandonar .so /tmp/mono_aot_e3Ujqu.exe GOT SIZE: 8 Executing the native assembler: as /tmp/mono_aot_e3Ujqu -o /tmp/mono_aot_e3Ujqu.so|less Regresar programa. .

. Para evitar suposiciones: Regresar Full Screen Cerrar Abandonar .(%eax) $0x5.got>: 15c4: 54 15c5: 15 00 00 00 00 15ca: 00 00 15cc: 00 00 .. Otros Referencias Agradecimientos y ..) 000015c4 <. . .(%eax) $0x0.%ebx %ebx Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas ..%eax %al.(%eax) %al.hash>: 94: 11 00 96: 00 00 98: 1c 00 9a: 00 00 (. * P´ agina www push adc add add %esp $0x0.exe 15 nctrun@ord3p:~/aot$ – Suponemos que esta vez el programa ha utilizado el . .00000094 <.(%eax) P´ agina de Abertura P´ agina 55 de 147 nctrun@ord3p:~/aot$ mono programa.%esi %esi.%ebx $0xa.) 456: be 05 00 00 00 45b: 8b de 45d: 83 c3 0a 460: 53 (.(%eax) %al. – Ejecutamos el programa de nuevo: adc add sbb add mov mov add push %eax..so. ..%al %al.

Salimos. * P´ agina www 4. Otros Referencias Agradecimientos y . F4 -> Cambiamos BE 05 00 00 00 por BE 0A 00 00 00.%esi %esi. 6.exe.1. Ejecutamos el programa otra vez: nctrun@ord3p:~/aot$ mono programa. F5 -> 456 (estaremos viendo las l´ ıneas de antes): 456: 45b: 45d: be 05 00 00 00 8b de 83 c3 0a mov mov add $0x5. F10 (o escape un par de veces) 7. .%ebx $0xa.exe 20 nctrun@ord3p:~/aot$ P´ agina de Abertura P´ agina 56 de 147 Regresar Full Screen Cerrar Abandonar . y suma 10 a 5. tiene pinta de ser la suma de nuestro programa. Vamos a cambiar el 5 por 10.so con el biew: nctrun@ord3p:~/aot$ biew programa. F2. . Abrimos el . .%ebx Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . F2 -> Dissasembler 3. Dado que est´ a en la secci´ on . por ejemplo: 5.methods. .so Introducci´ on al cursillo 2.

exe Abandonar ..) Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . * P´ agina www P´ agina de Abertura 9. si se le llaman varias veces. – Generamos el . salvo que al generar el . .exe|less (. que cojamos 10 y le sumemos 10). no est´ a haciendo caso al CIL (que dice que cojamos 5 y le sumemos 10) porque ha encontrado que el m´ etodo ya est´ a compilado (y dice una cosa diferente.i4.s 0x0a IL_0005: add (. . . Otros Referencias Agradecimientos y .so hayamos utilizado optimizaciones.. .i4.8.so otra vez..) IL_0000: ldc. no va a haber diferencia entre AOT y JIT. como hemos dicho.0 IL_0003: ldc..5 IL_0001: stloc. y por tanto ni compila el c´ odigo CIL – Sin embargo. una vez se ha ejecutado el m´ etodo. Como vemos. con optimizaciones: Cerrar P´ agina 57 de 147 Regresar Full Screen nctrun@ord3p:~/aot$ mono -O=all --aot programa. Desensamblamos el CIL: nctrun@ord3p:~/aot$ monodis programa.0 IL_0002: ldloc.

so (. Volvemos a ver el c´ odigo del .... Al igual que antes.– Suponemos que el c´ odigo generado es m´ as ´ optimo que el anterior.) 2. Como vemos. por lo que se ahorra la suma en tiempo de ejecuci´ on.. . Otros Referencias Agradecimientos y . . 3. Para comprobar que realmente es lo que parece. * P´ agina www P´ agina de Abertura P´ agina 58 de 147 Regresar Full Screen Cerrar Abandonar . una vez ejecutado un m´ etodo. podemos volver a modificar el . que es la suma de 10 + 5. aparece un 0xf. las siguientes veces no habr´ a diferencia respecto a ejecutar con: mono -O=all programa.so 4. .exe Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . aproximadamente por la misma zona. Para evitar suposiciones: 1.so: nctrun@ord3p:~/aot$ objdump -D programa.exe. .) 450: 6a 0f push $0xf (.

Compiladores • Mono viene con compilador de C# y VB.dlls) – -pkg para utilizar un paquete • Adem´ as.2. Otros Referencias Agradecimientos y . .3. * P´ agina www P´ agina de Abertura P´ agina 59 de 147 Regresar Full Screen Cerrar Abandonar . .3.NET Introducci´ on al cursillo – mcs es el compilador de C# – mbas es el compilador de VB.NET • Algunas opciones a destacar de estos compiladores son: – -r para importar un ensamblado (. hay compiladores de otros lenguajes – ikvmc para Java (comentado m´ as adelante) – booc para Boo (comentado m´ as adelante) • Y para obtener el c´ odigo en CIL de un ensamblado: – monodis Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . . .

adem´ as de verla • monop – Permite obtener informaci´ on acerca de ensamblados o de las librer´ ıas instaladas nctrun@ord3p:~$ monop System. public const byte MaxValue = 255..3. IConvertible. .) public const byte MinValue = 0. Otros Referencias Agradecimientos y . } Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . . IFormatProvider provider).Byte [Serializable] public struct Byte : IComparable. IFormattable { public static byte Parse (string s. . * P´ agina www P´ agina de Abertura P´ agina 60 de 147 Regresar Full Screen Cerrar Abandonar . Documentaci´ on • monodoc Introducci´ on al cursillo – herramienta para editar y explorar documentaci´ on – Dado un ejecutable. . permite editar y a˜ nadir su documentaci´ on.. (.4.2.

0.2. Otros Referencias Agradecimientos y . PublicKeyToken=ccf7d78a55e9f021 • Opciones de gacutil Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . Version=1. Culture=neutral. * P´ agina www P´ agina de Abertura P´ agina 61 de 147 Regresar Full Screen Cerrar Abandonar . . PublicKeyToken=ccf7d78a55e9f021 gecko-sharp.0.0. . Version=2. . Culture=neutral.0. gacutil • Herramienta para manipular el GAC (Global Assembly Cache) Introducci´ on al cursillo nctrun@ord3p:~$ gacutil -l|grep gecko gecko-sharp.3.0.0.5. .

. ejecutar y dem´ as con Mono • Bajo GNU/Linux.2. . . * P´ agina www P´ agina de Abertura P´ agina 62 de 147 Regresar Full Screen Cerrar Abandonar . XEmacs. . Emacs. . Entorno de Desarrollo Integrado • Para Windows.6. Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas .3. Otros Referencias Agradecimientos y . el IDE de Mono m´ as popular es el MonoDevelop – Escrito en Mono. est´ a el SharpDevelop Introducci´ on al cursillo – es GNU GPL – para funcionar necesita Microsoft . es un port del SharpDevelop – En estos momentos no funciona en Windows (s´ ı como m´ ınimo en GNU/Linux y Mac OS X) • Tambi´ en hay un plugin para Eclipse • Y por supuesto est´ a vim.NET ∗ pero puedes compilar. kate. .

} .1 warning(s) nctrun@ord3p:~/holamundo$ mono holamundo. e-ghost y DotNetGroup 3.3.1.Introducci´ on a Mono c 2006 Pablo Ordu˜ na. Interacci´ on entre lenguajes Interacci´ on entre lenguajes Introducci´ on al cursillo Qu´ e es Mono 3.cs(26) warning CS0219: The variable ’dato3’ is assigned but its value is never used Compilation succeeded .3. .exe Hola mundo nctrun@ord3p:~/holamundo$ • Viendo el c´ odigo en CIL: nctrun@ord3p:~/holamundo$ monodis holamundo.assembly ’holamundo’ { Introducci´ on al entorno Interfaces gr´ aficas . C# • Compilando y ejecutando el ”holamundo”: nctrun@ord3p:~/holamundo$ mcs holamundo. . * P´ agina www P´ agina de Abertura P´ agina 63 de 147 Regresar Full Screen Cerrar Abandonar .exe .cs holamundo.4.assembly extern mscorlib { .ver 1:0:5000:0 . .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // . Otros Referencias Agradecimientos y .z\V.. .

..0 IL_0012: ret } // end of method Principal::default void Main (string[] args) } // end of class Principal • Creando un .exe // GUID = {1220A931-5542-4364-8B81-293C8D4C5584} Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas .i4.dll: Otros Referencias Agradecimientos y .ver 0:0:0:0 } .Console::WriteLine(string) IL_000a: ldsfld int32 Principal::dato2 IL_000f: ldc.module holamundo.) IL_0000: ldstr "Hola mundo" IL_0005: call void class [mscorlib]System.5 IL_0010: add IL_0011: stloc.hash algorithm 0x00008004 . . * P´ agina www P´ agina de Abertura P´ agina 64 de 147 Regresar Full Screen Cerrar Abandonar . . .. (..

1 warning(s) nctrun@ord3p:~/librerias$ • Utilizando el .exe 8 5 • Utilizando paquetes: nctrun@ord3p:~/utilizando$ mcs UtilizandoPaquetes. .cs -pkg:gtk-sharp nctrun@ord3p:~/utilizando$ mono UtilizandoPaquetes. Otros Referencias Agradecimientos y .dll: nctrun@ord3p:~/utilizando$ mcs DesdeCS. .cs(26) warning CS0219: The variable ’dato3’ is assigned but its value is never used Compilation succeeded . . .nctrun@ord3p:~/librerias$ mcs -t:library holamundo.cs -r:holamundo.dll nctrun@ord3p:~/utilizando$ mono DesdeCS.exe nctrun@ord3p:~/utilizando$ Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . * P´ agina www P´ agina de Abertura P´ agina 65 de 147 Regresar Full Screen Cerrar Abandonar .cs holamundo.

3. Java • Para utilizar Java desde Mono hay una herramienta llamada IKVM • IKVM permite: – utilizar desde Mono bytecode de Java – utilizar ensamblados de Mono desde Java (ejecutado bajo Mono con IKVM) • De la API de Java utiliza la implementaci´ on del proyecto GNU Classpath • Es u ´til para utilizar librer´ ıas o incluso aplicaciones de Java: – Jython P´ agina www Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . Otros Referencias Agradecimientos y . * – Incluso Eclipse ha sido ejecutado sobre Mono a trav´ es de IKVM: P´ agina de Abertura P´ agina 66 de 147 Regresar Full Screen Cerrar Abandonar . . .3.2. . .

. . . * P´ agina www P´ agina de Abertura P´ agina 67 de 147 Regresar Web original de la imagen Full Screen Cerrar Abandonar . .Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . Otros Referencias Agradecimientos y .

.• Utilizando Java desde Mono con IKVM: – Creando una librer´ ıa en Java: nctrun@ord3p:~/ikvm$ javac MiClase.exe hola mundo llamando al m´ etodo nctrun@ord3p:~/ikvm$ • Utilizando Mono desde Java sobre Mono con IKVM: P´ agina 68 de 147 Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas .java nctrun@ord3p:~/ikvm$ ikvmc -out:MiClase. Otros Referencias Agradecimientos y .0.class Note: automatically adding reference to "/home/nctrun/usr/local/lib/ikvm/IKVM.dll Warning: Assembly loaded from /home/nctrun/usr/local/lib/mono/gac/gtk-sharp/1.0__ Full Screen Cerrar Abandonar . * P´ agina www P´ agina de Abertura – Creamos unos .cs -r:MiClase. .Classpath.0.GNU.dll MiClase. .dll" – Utilizando la librer´ ıa desde C#: nctrun@ord3p:~/ikvm$ export MONO_PATH=$MONO_PATH:/home/nctrun/usr/local/lib/ikvm/ nctrun@ord3p:~/ikvm$ mcs DesdeCS.dll nctrun@ord3p:~/ikvm$ mono DesdeCS.jar para hacerlos accesibles desde Java: Regresar nctrun@ord3p:~/ikvm$ ikvmstub /home/nctrun/usr/local/lib/mono/gtk-sharp/gtk-sharp. .

. .0__ 35e10195dab3c99f/glib-sharp. .dll instead nctrun@ord3p:~/interaccionLenguajes/ikvm$ ikvmstub /home/nctrun/usr/local/lib/mono/gtk-sharp/atk-sharp.dll instead – Estos . s´ ı podemos compilar un programa en Java.dll Warning: Assembly loaded from /home/nctrun/usr/local/lib/mono/gac/atk-sharp/1.jar s´ olo son ejecutables desde IKVM.0/mscorlib. . ∗ Para ello existe otro proyecto llamado Grasshoper. * P´ agina www P´ agina de Abertura P´ agina 69 de 147 Regresar Full Screen Cerrar Abandonar .dll instead nctrun@ord3p:~/interaccionLenguajes/ikvm$ ikvmstub /home/nctrun/usr/local/lib/mono/gtk-sharp/ glib-sharp.35e10195dab3c99f/gtk-sharp.0__ 35e10195dab3c99f/atk-sharp.0.0.0. desarrollado por Mainsoft – Una vez tenemos los .dll Warning: Assembly loaded from /home/nctrun/usr/local/lib/mono/1.dll instead nctrun@ord3p:~/interaccionLenguajes/ikvm$ ikvmstub /home/nctrun/usr/local/lib/mono/1. Otros Referencias Agradecimientos y .0. tal que: Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas .jar. No sirven para utilizar Mono desde Java.0/mscorlib.dll Warning: Assembly loaded from /home/nctrun/usr/local/lib/mono/gac/glib-sharp/1.

.jar:gtk-sharp.jar Note: found main method in class "Demo" Note: automatically adding reference to "/home/nctrun/usr/local/lib/ikvm/IKVM. ni propiedades.:mscorlib. ni atributos.nctrun@ord3p:~/ikvm$ javac -classpath .jar:mscorlib.GNU. .java nctrun@ord3p:~/ikvm$ – Y ejecutamos desde IKVM el programa en Java: nctrun@ord3p:~/ikvm$ ikvm -cp glib-sharp. hay que utilizar ciertas ”formas”: Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . ni paso de par´ ametros por referencia.jar Demo.jar: atk-sharp. Otros Referencias Agradecimientos y .jar:atk-sharp.exe nctrun@ord3p:~/interaccionLenguajes/ikvm$ • Interoperabilidad – Java no tiene ni delegados.dll" nctrun@ord3p:~/interaccionLenguajes/ikvm$ mono Demo.jar: gtk-sharp.class gtk-sharp. ni otras caracter´ ısticas del CIL – Para utilizar estas caracter´ ısticas.jar:. .exe Demo. * P´ agina www P´ agina de Abertura P´ agina 70 de 147 Regresar Full Screen Cerrar Abandonar .Classpath. . Demo nctrun@ord3p:~/interaccionLenguajes/ikvm$ – O bien lo compilamos a CLI para ejecutarlo con Mono dir´ ectamente: nctrun@ord3p:~/interaccionLenguajes/ikvm$ ikvmc -out:Demo.jar:glib-sharp.

println("hola"). .System.∗ Para utilizar propiedades.get_Dato(). . . cli. un c´ odigo como: public int Dato{ get{ return dato. ser´ ıa utilizado tal que: class A implements cli. Otros Referencias Agradecimientos y . * P´ agina www P´ agina de Abertura P´ agina 71 de 147 Regresar Full Screen Cerrar Abandonar .EventArgs e) { System. .EventHandler.System. ∗ Para llamar a un delegado como: public delegate void EventHandler (object sender. } } ser´ ıa invocado tal que: int dato = instancia.Method{ public void Invoke (Object sender.out. } } Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . EventArgs e).

las versiones posteriores (0.NET • escrito por Jim Hugunin – desarrollador de Jython y otros proyectos – trabaja en Microsoft desde Agosto 2004 (poco despu´ es de publicar IronPython 0.x exigen . no al rev´ es Full Screen Cerrar Abandonar . * P´ agina www P´ agina de Abertura – Por tanto exigen versiones beta tanto de .6. est´ an alojadas en got dot net.NET 2. – Sin embargo.3.NET – Las versiones 0.0.7. el proyecto estaba publicado bajo la licencia Common Public License 1. bajo la licencia Shared Source for IronPython • La implementaci´ on m´ as madura de Python sobre Mono y .NET como de Mono Regresar • Por el momento s´ olo sirve para acceder a CIL desde Python. .6) • Licencias: – Hasta la versi´ on 0.3.x). .7. . .0 P´ agina 72 de 147 Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . que cumple los requisitos para ser Open Source. IronPython • IronPython es una implementaci´ on de Python para . Otros Referencias Agradecimientos y .3.

4. como C# o VB.3. las caracter´ ısticas de otros lenguajes que no est´ en en el CIL ser´ an dif´ ıciles de acceder: inc´ omodo utilizar componentes en otros lenguajes Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . tambi´ en se pueden usar con facilidad • Sin embargo: – La inversa (utilizar desde un lenguaje que es casi en su totalidad un subconjunto del CIL algo escrito en CIL) es m´ as dificil.NET • As´ ımismo. . las partes de otros lenguajes que sean subconjunto del CIL. . y hay que utilizar una serie de work around s que pueden hacer inc´ omodo el uso de ese lenguaje – Si es inc´ omodo utilizar librer´ ıas del CIL desde esos lenguajes. . Limitaciones • Realmente los lenguajes que m´ as f´ acilmente se integran bien en .3.NET son aquellos que son realmente una abstracci´ on del CIL. Otros Referencias Agradecimientos y . . no tiene sentido hacer componentes en esos lenguajes (s´ olo cuando los lenguajes permitan acceder a APIs hechas en el propio lenguaje) • De la misma forma. * P´ agina www P´ agina de Abertura P´ agina 73 de 147 Regresar Full Screen Cerrar Abandonar .

DeleteEvent: Application. delegados.3. .Quit) window.Add(Button("Click Me!".Run() P´ agina de Abertura P´ agina 74 de 147 Regresar Full Screen Cerrar Abandonar . DefaultHeight: 150.ShowAll() Application. * P´ agina www window = Window("Button Tester". DefaultWidth: 200. Boo • Boo es una adaptaci´ on de Python a .Init() Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . .NET: Introducci´ on al cursillo – Inspirado en Python – Pero tiene tipado est´ atico. • Ejemplo de c´ odigo: import System import Gtk from "gtk-sharp" Application. . propiedades. Otros Referencias Agradecimientos y . Clicked: { print("button clicked!") })) window.5. .3. . .

Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . . * P´ agina www P´ agina de Abertura P´ agina 75 de 147 Regresar Full Screen Cerrar Abandonar . especialmente desde que IronPython no es Open Source. .´ • Ultimamente ha crecido en popularidad en la comunidad de Mono. Otros Referencias Agradecimientos y . . .

int height). .3. public static void InitWindowPosition(int x.6. } Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . . public static void InitWindowSize(int width. int y) { glutInitWindowPosition(x. Utilizando c´ odigo nativo • Para acceder a c´ odigo nativo de la plataforma se utiliza P/Invoke de la siguiente manera: [DllImport("libreria")] tipo_acceso extern static tipo_retorno nombre_funcion(parametros). podemos ver algo de c´ odigo del binding para OpenGL de Mono aqu´ ı: [DllImport("glut")] static extern void glutInitWindowPosition(int x. . – Por ejemplo. y). * P´ agina www P´ agina de Abertura P´ agina 76 de 147 Regresar Full Screen Cerrar Abandonar . } [DllImport("glut")] static extern void glutInitWindowSize(int width.3. int y). Otros Referencias Agradecimientos y . int height) { glutInitWindowSize(width. . height).

[DllImport("glut")] static extern void glutMainLoop(); public static void MainLoop() { glutMainLoop(); } – (Concretamente el binding de OpenGL ha sido generado por glgen) • DotGNU tiene adem´ as un compilador de C a CIL • Ejemplos – Simple en /interaccionLenguajes/accesoNativo/ – Utilizando OpenGL en /interaccionLenguajes/accesoNativo/ogl/. El c´ odigo es un ejemplo del cursillo de Bardok de OpenGL, de aqu´ ı

Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . . . Otros Referencias Agradecimientos y . . . *
P´ agina www

P´ agina de Abertura

P´ agina 77 de 147

Regresar

Full Screen

Cerrar

Abandonar

Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . . . Otros Referencias Agradecimientos y . . . *
P´ agina www

P´ agina de Abertura

– Utilizando Mono.Posix para acceder a estructuras de m´ as bajo nivel, en /interaccionLenguajes/accesoNativo/eso/

P´ agina 78 de 147

Regresar

Full Screen

Cerrar

Abandonar

Introducci´ on a Mono

c 2006 Pablo Ordu˜ na. e-ghost y DotNetGroup

4.

Interfaces gr´ aficas con Mono

Introducci´ on a Mono
Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . . . Otros Referencias

Interfaces gr´ aficas con Mono

Agradecimientos y . . . *
P´ agina www

P´ agina de Abertura

P´ agina 79 de 147

Regresar

Full Screen

Cerrar

Abandonar

Introducci´ on a Mono c 2006 Pablo Ordu˜ na. . . . Introducci´ on la programaci´ programaci´ on dede interfaces gr´ aficas con Mono Introducci´ on aala on interfaces gr´ aficas con Mono Introducci´ on al cursillo 4.1. Es la u ´nica que el Proyecto Mono mantiene de manera directa – wx.1. e-ghost y DotNetGroup 4. Otros Referencias Agradecimientos y . Introducci´ on Qu´ e es Mono Introducci´ on al entorno • Mono puede utilizar varias librer´ ıas de widgets: – GTK#. .NET – Windows Forms – Cocoa# – QT# – Sharp WT Interfaces gr´ aficas . * P´ agina www P´ agina de Abertura P´ agina 80 de 147 Regresar Full Screen Cerrar Abandonar . Es la m´ as utilizada y la u ´nica que se cubrir´ a en el cursillo.1.

. Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . GTK para GNU/Linux.2. . .4. . .NET • wx.1. .NET es un wrapper para la CLI de wxWidgets Introducci´ on al cursillo – wxWidgets es una librer´ ıa de widgets cuya finalidad es proveer un API sencillo para crear GUIs en m´ ultiples plataformas. . ) – Se puede ver en los screenshots. etc. etc. Otros Referencias Agradecimientos y . wx. * P´ agina www P´ agina de Abertura P´ agina 81 de 147 Regresar Full Screen Cerrar Abandonar . utilizando el UI nativo de cada plataforma: ∗ Utiliza librer´ ıas nativas en cada plataforma (ya sea Windows.

que est´ a implementada sobre Cairo Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . . Otros Referencias Agradecimientos y . Windows Forms • Windows Forms es la librer´ ıa de Widgets que viene por defecto en Microsoft . est´ a siendo implementada para Mono (Aqu´ ı est´ a su estado actual) • Mono est´ a tardando m´ as en implementar Windows Forms que DotGNU: 1.4.1. Finalmente. . Se intent´ o utilizando implementar Windows Forms encima de Gtk 2. Se intent´ o m´ as tarde implementarlo encima de Wine 3. .Drawing. . * P´ agina www P´ agina de Abertura P´ agina 82 de 147 Regresar Full Screen Cerrar Abandonar . se est´ a desarrollando trabajando encima de la implementaci´ on de System.3.NET • Su especificaci´ on no est´ a recogida como est´ andar en el ECMA o ISO • A pesar de ello. la cual – en Windows utiliza GDI+ – en otros sistemas utiliza la implementaci´ on de Mono de gdiplus.

. . * P´ agina www P´ agina de Abertura C´ odigo en /interfacesGraficas/winforms/Samples C´ odigo sacado del svn de Mono P´ agina 83 de 147 Regresar Full Screen Cerrar Abandonar . .Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . Otros Referencias Agradecimientos y . .

* P´ agina www – tanto el c´ odigo para ver c´ omo se hace como el propio widget en funcionamiento P´ agina de Abertura P´ agina 84 de 147 Regresar Full Screen Cerrar Abandonar . .2. La familia GTK# La familia GTK# Introducci´ on al cursillo Qu´ e es Mono 4.1. Introducci´ on • GTK# es el binding para Mono de las populares GTK+ (Gimp Tool Kit) – Con diferencia la librer´ ıa de widgets m´ as usada en Mono • Intimamente ligada al proyecto Gnome • En el svn de gtk-sharp tenemos disponible GtkDemo. . en el que vemos – ejemplos interesantes de uso de Gtk# Introducci´ on al entorno Interfaces gr´ aficas . Otros Referencias Agradecimientos y . e-ghost y DotNetGroup 4.Introducci´ on a Mono c 2006 Pablo Ordu˜ na. . .2.

Otros Referencias Agradecimientos y . . . . * P´ agina www P´ agina de Abertura P´ agina 85 de 147 Regresar Full Screen GtkDemo en acci´ on Cerrar Abandonar .Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . .

. * P´ agina www P´ agina de Abertura P´ agina 86 de 147 Regresar Full Screen Cerrar Abandonar . . para pasar a visualizarlo.2. Otros Referencias Agradecimientos y . .Init() • Despu´ es iniciaremos lo que necesitemos (iniciar el GUI) • Una vez iniciado todo. llamar´ a al callback correspondiente ∗ Mientras est´ a procesando el callback de un evento · no puede procesar otro evento · no se redibujan los widgets. etc • Este proceso finalizar´ a cuando se llame a: Application.cs Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . Comenzando con GTK#: el bucle de eventos • Antes de instanciar nada de GTK# debemos llamar a: Introducci´ on al cursillo Application.Run() • En ese momento Gtk pasar´ a a procesar todo – No continuar´ a la ejecuci´ on despu´ es de esa funci´ on – Cada vez que Gtk reciba un evento.2. .4.Quit() • Ejemplo: interfacesGraficas/gtk/eventloop/holamundo. llamaremos a: Application.

hay que tener la propiedad UseMarkup a true ∗ Realmente. • Los strings en Gtk son especiales – En labels. M´ as ı informaci´ on aqu´ – En men´ us.3. • La clase Window tiene una serie de m´ etodos para modificar su relaci´ on con el Window Manager. podemos a˜ nadir diferentes Widgets. sino el Pango Text Markup Language. * P´ agina www P´ agina de Abertura P´ agina 87 de 147 Regresar Full Screen Cerrar Abandonar . . . .2. . como por ejemplo: – void Fullscreen(): Hace que la ventana ocupe la pantalla completa – void Maximize(): Maximiza la ventana – void Iconify(): Minimiza la ventana – void Deiconify(): Vuelve a mostrarse la ventana • Una vez tenemos la ventana. se puede utilizar ”HTML” (<b>hola</b>) ∗ Para ello. . Otros Referencias Agradecimientos y .4.Window): Introducci´ on al cursillo Window w = new Window("titulo"). un por delante significa que es la letra identificadora (ALT + letra) Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . no es HTML. Nuestra primera ventana • Primero creamos una ventana (Gtk. . Buttons. como por ejemplo Labels.

• Ejemplo: interfacesGraficas/gtk/simple/simple. * P´ agina www P´ agina de Abertura P´ agina 88 de 147 Regresar Full Screen Cerrar Abandonar . . . . .cs Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas .– etc. Otros Referencias Agradecimientos y .

dentro del contenedor algo. divides las diferentes ´ areas de la pantalla en nuevas ´ areas verticales u horizontales.cs Abandonar . vb.VBox: VBox vb = new VBox().Add(w3). y las verticales Gtk.Add(vb). las cuales a su vez puedes ir dividiendo nuevamente – Esto lo unimos a una serie de propiedades que ajustamos seg´ un nos interese • Las boxes horizontales son Gtk. con GTK# normalmente utilizas boxes. .Add(w2). justo debajo el w2 y justo debajo el w3. – Esto es. .Layout Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas ..Add(w1). .4. //.Widget w1 arriba. Otros Referencias Agradecimientos y .4.2. ponemos el Gtk.. vb. * P´ agina www P´ agina de Abertura P´ agina 89 de 147 Regresar Full Screen – El efecto al redimensionar es bastante m´ as feo Cerrar • Ejemplo: interfacesGraficas/gtk/boxes/boxes.HBox. algo. A˜ nadiendo widgets manualmente • Para colocar los widgets en una ventana. se utiliza Gtk. • Para poner cosas en un punto fijo de un contenedor. vb. .

glade y generar´ a los widgets – Si queremos acceder a un widget concreto. pero puede – Cansar – Resultar ser dificil – A˜ nadir c´ odigo innecesario al programa • Para evitarlo est´ a Glade – Es una herramienta interactiva para dise˜ no de GUIs con GTK+ y Gnome – Guarda en un . de manera que podemos asignar a qu´ e funciones se llamar´ a para capturar qu´ e se˜ nal • Ejemplo: interfacesGraficas/gtk/glade/usandoGlade.2.5. Otros Referencias Agradecimientos y . deberemos declarar la variable con el mismo nombre. . unida al atributo [Widget] – Adem´ as. Glade# • Programar lo anterior est´ a bien para cosas din´ amicas y para aprender y entender c´ omo funciona GTK#. .4. permite manejar se˜ nales. .glade (XML) el dise˜ no del interfaz gr´ afico del programa – Din´ amicamente cargar´ a el . .cs Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . * P´ agina www P´ agina de Abertura P´ agina 90 de 147 Regresar Full Screen Cerrar Abandonar .

Pixbuf("ghost.jpg"). ."ghost.Pixbuf(null. //accediendo a un fichero Image img = new Image(Gdk.Add(img).6. Mostrando im´ agenes • La manera m´ as simple es utilizar un Image: Introducci´ on al cursillo Window w = new Window("titulo"). para incluirlo en el mismo .2. • Ejemplos: interfacesGraficas/gtk/imagenes/imagenes1.exe: Window w = new Window("titulo").cs y imagenes2.4. * P´ agina www P´ agina de Abertura P´ agina 91 de 147 Regresar Full Screen Cerrar Abandonar . • Pero podemos tambi´ en utilizar GDK# para ello. //accediendo a un recurso (-res:ghost.Add(img). w.jpg) Image img = new Image(Gdk. • Por ejemplo. Otros Referencias Agradecimientos y . accediendo a una API con muchas m´ as funciones Window w = new Window("titulo"). Image img = new Image("ghost.cs Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas .jpg")).Add(img).jpg")). w. . w. . .

.7. * P´ agina www P´ agina de Abertura P´ agina 92 de 147 Regresar Full Screen Cerrar Abandonar .2. Sacando m´ as provecho a Gdk# • GDK es el Graphics Development Kit.cs • Ejercicio: implementar interfacesGraficas/gtk/imagenes/imagenes4.4. adem´ as de en Monodoc Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . Otros Referencias Agradecimientos y . . . w. d.150).exe • Mucha m´ as informaci´ on en las apis 1 y 2 y la wikipedia. que nos permitir´ a llevar a cabo muchas m´ as cosas – S´ olo hay que echar un vistazo en monodoc al espacio de nombres Gdk para ver la cantidad de posibilidades que nos da • Creando un ´ area para dibujar: Window w new Window("titulo"). DrawingArea d = new DrawingArea).Add(d). como: – ConfigureEvent: es llamado cuando se modifica el tama˜ no del Widget – ExposeEvent: es llamado cuando se tiene que redibujar al menos alguna parte del widget • Ejemplo: interfacesGraficas/gtk/imagenes/imagenes3.Widget. . • DrawingArea tiene varios eventos heredados de Gtk.SetSizeRequest(150.

cs • Ejemplo TreeStore: interfacesGraficas/gtk/arboles/arbol. no del contenido del mismo • Para el contenido. * P´ agina www P´ agina de Abertura P´ agina 93 de 147 Regresar Full Screen Cerrar Abandonar . debe utilizar un TreeModal. TreeViews • Un widget muy usado es el TreeView Introducci´ on al cursillo – Permite mostrar listas de datos – Permite adem´ as mostrar ´ arboles • El TreeView s´ olo se encarga de lo que es el widget que se ve. . .cs Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas .4. . como ListStore (para listas) o TreeStore (para ´ arboles) • Ejemplo ListStore: interfacesGraficas/gtk/listas/lista.2. .8. Otros Referencias Agradecimientos y .

null.2.4. haz "eso" Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . GTK#. .. . el resto de la aplicaci´ on queda bloqueada. el programa puede cascar • Para ello hay que utilizar una clase llamada ThreadNotify.WakeupMain(). al igual que Windows Forms (incluso en la implementaci´ on de Microsoft . //hey. Otros Referencias Agradecimientos y . Si la respuesta puede ser larga.ReadyEvent(metodo)). tal que: ThreadNotify tn = new ThreadNotify(new Gtk. cuando toque. Timer tm = new Timer(new TimerCallback(metodo2). . no es thread-safe : – Si desde otro hilo se modifica el interfaz. Desde el otro hilo se va actualizando del interfaz de usuario • El problema es que GTK#.Threading.Timeout.NET).System. Manteni´ endo nuestra aplicaci´ on Gtk thread-safe • Mientras se ejecuta el c´ odigo de respuesta a un evento.1000. hay que utilizar hilos: 1.. . Un evento exige una respuesta 2.9. . void metodo2(object o){ tn. sin redibujarse • Para evitar este efecto. se lanza en otro hilo 3.Infinite). * P´ agina www P´ agina de Abertura P´ agina 94 de 147 Regresar Full Screen Cerrar Abandonar .

* P´ agina www P´ agina de Abertura P´ agina 95 de 147 Regresar Full Screen Cerrar Abandonar . //"eso" es esto } • Ejemplo: interfacesGraficas/gtk/hilos/hilos.es").deusto.msc. .cs • Ejemplo de problemas si eliminamos las medidas de protecci´ on: interfacesGraficas/gtk/hilos/mal. Otros Referencias Agradecimientos y .cs Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas .LoadUrl("http://www. . .} void metodo(){ web. .

All.Copy).SourceSet Gtk.0).10. – En lugar de text/uri-list. Drag and Drop • Drag and drop es una t´ ecnica de incrementar sustancialmente la usabilidad de un programa y su comunicaci´ on con el resto del entorno. . • Por u ´ltimo. se debe declarar el Widget que los puede recibir/enviar.DragAction. nuestros incluso • Una vez declarado un array de TargetEntrys.2.targets. * P´ agina www P´ agina de Abertura P´ agina 96 de 147 Regresar Full Screen Cerrar Abandonar .Drag. Otros Referencias Agradecimientos y .0. Para enviar Gtk. llamando al m´ etodo: //para recibir. para poder realizar una acci´ on cuando esto ocurre. podemos enviar y recibir otros muchos tipos de datos. .TargetEntry define un tipo de dato declar´ andose tal que: TargetEntry te = new TargetEntry("text/uri-list". de manera sencilla • Para utilizarlo desde Mono basta con declarar en un widget qu´ e TargetEntrys puede recibir y qu´ e TargetEntrys puede enviar – Un Gtk. hay que definir qu´ e se debe ejecutar cuando ocurre los siguientes eventos: – Cuando se recibe algo: ∗ DragDataReceived Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . Gdk.4. .DestDefaults. .Drag.DestSet(widget.

cs Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . * P´ agina www P´ agina de Abertura P´ agina 97 de 147 Regresar Full Screen Cerrar Abandonar . Otros Referencias Agradecimientos y . . .– Cuando se env´ ıa algo: ∗ DragDataGet ∗ DragBegin • Ejemplo: interfacesGraficas/gtk/dnd/dnd. . .

se a˜ nade el handler correcto en mi c´ odigo · No tengo que andar poniendo un nombre en el editor y luego el tipo de dato correspondiente a Gtk# en mi c´ odigo. por lo que no aporta dependencias · Funciona donde gtk-sharp funcione · La u ´nica dependencia es. Otros Referencias Agradecimientos y . la propia herramienta ∗ No podremos reutilizarlo fuera de Mono – Trae mejoras respecto a glade 2: ∗ Herramienta en una u ´nica ventana que es la de MonoDevelop ∗ Alta integraci´ on en MonoDevelop: · A˜ nado un campo.cs que construye el . . con Mono en mente ∗ El editor de GUI genera un xml (con extensi´ on .2. . o buscar los par´ ametros del handler correspondiente etc.11.4. se generar´ a un . en caso de que queramos modificar el interfaz.cs ∗ Genera todo. * P´ agina www P´ agina de Abertura P´ agina 98 de 147 Regresar Full Screen Cerrar Abandonar . Stetic • Stetic es un nuevo dise˜ nador de GUIs con GTK Introducci´ on al cursillo – Integrado en MonoDevelop.stetic) ∗ A la hora de construir el proyecto. . se a˜ nade el tipo de dato Gtk# en mi c´ odigo · A˜ nado un evento. ∗ Posibilidad de creaci´ on de Widgets reutilizables Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . .

.· Puedo definir un widget (no necesariamente dentro de una ventana) · Puedo definir unos comportamientos y un interfaz externo de ese widget · Puedo utilizar tantas veces como necesite ese widget en diferentes ventanas Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . Otros Referencias Agradecimientos y . . . * P´ agina www P´ agina de Abertura P´ agina 99 de 147 Regresar Full Screen Cerrar Abandonar . .

cs Introducci´ on al entorno Interfaces gr´ aficas .1. y pidiendo informaci´ on • Es un componente de gnome# • Ejemplo: interfacesGraficas/nome/druids/druids. Otros Referencias Agradecimientos y .Introducci´ on a Mono c 2006 Pablo Ordu˜ na. Druid • Para hacer asistentes para pedir informaci´ on al usuario.3. . est´ a druids • De manera f´ acil vamos a˜ nadiendo p´ aginas al druid. . . * P´ agina www P´ agina de Abertura P´ agina 100 de 147 Regresar Full Screen Cerrar Abandonar . e-ghost y DotNetGroup 4.3. Otros componentes aficos Otrosgr´ componentes gr´ aficos Introducci´ on al cursillo Qu´ e es Mono 4. .

.2. gecko# • Gtk tiene su propio componente para renderizado de HTML (Gtk. .3. Otros Referencias Agradecimientos y . * P´ agina www P´ agina de Abertura P´ agina 101 de 147 Regresar Full Screen Cerrar Abandonar .4. este componente no es tan avanzado como Gecko (el motor de Mozilla) • Gecko# es un componente f´ acil de usar que permite utilizar la potencia de gecko desde nuestra aplicaci´ on Mono • Ejemplo: interfacesGraficas/gnome/gecko/ Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . . .HTML) • Sin embargo.

Poniendo todo en orden Poniendo todo en orden Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno • Hasta aqu´ ı hemos visto todo lo que vamos a ver en el cursillo de desarrollo gr´ afico con mono • Nos hemos centrado u ´nicamente en unas herramientas que existen. . e-ghost y DotNetGroup 4. – Basadas en estudios de usabilidad Interfaces gr´ aficas .Introducci´ on a Mono c 2006 Pablo Ordu˜ na. y en c´ omo utilizarlas (por encima) a nivel t´ ecnico • Pero a la hora de crear una soluci´ on que utilice estas herramientas deber´ ıamos utilizar las HIG de Gnome – Human Interface Guidelines – Las de Gnome disponibles aqu´ ı – Nos indican c´ omo deber´ ıamos hacer nuestras ventanas. toolbars. . mensajes de aviso y de error. * P´ agina www P´ agina de Abertura P´ agina 102 de 147 Regresar Full Screen Cerrar Abandonar . men´ ues. .4. . . Otros Referencias Agradecimientos y . .

– en GNU/Linux: no funciona ni en Mac OS X ni en Microsoft Windows • Mucha m´ as informaci´ on en la web de GConf Introducci´ on al entorno Interfaces gr´ aficas . Otras herramientas Otras herramientas Introducci´ on al cursillo Qu´ e es Mono 4. * P´ agina www P´ agina de Abertura P´ agina 103 de 147 Regresar Full Screen Cerrar Abandonar . . . gconf# • GConf# es un binding para Mono de GConf • GConf permite almacenar la configuraci´ on de tus aplicaciones en GNU/Linux de una manera centralizada – Adem´ as tiene muchas m´ as caracter´ ısticas ∗ Configuraci´ on por red ∗ Notificaci´ on a las aplicaciones cada vez que se cambia un valor en la configuraci´ on ∗ .5.Introducci´ on a Mono c 2006 Pablo Ordu˜ na. ..5.1. e-ghost y DotNetGroup 4. Otros Referencias Agradecimientos y .. .

* P´ agina www P´ agina de Abertura P´ agina 104 de 147 Regresar Full Screen Cerrar Abandonar . .4.NET (y Mono) • Permite f´ acilmente hacer tests con tan s´ olo poner atributos [Test] a los m´ etodos que queramos que se ejecuten. . . dentro de clases con atributo [TestFixture] – A nivel b´ asico: luego ya mirar la docu de su web • Para llevar a cabo los tests.2.5. dos formas: – En modo consola: nunit-console ensamblado. . genera un TestResult.xml – En modo gr´ afico: desde el add-in de nunit para MonoDevelop :-) Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . nunit • Nunit es una plataforma libre de tests unitarios para . Otros Referencias Agradecimientos y .

* P´ agina www – Utilizaremos Mono.po – Creamos el directorio: locale/es/LC MESSAGES/ – Generamos: msgfmt es.Unix contamos con herramientas basadas en gettext para esta tarea: agina de i18n de Mono M´ as informaci´ on en la la p´ • Utilizaremos esta u ´ltima: – Creamos nuestro c´ odigo compilando contra Mono.GetString para los strings que queramos traducir – xgettext --from-code=UTF-8 Main. en Mono. . ) – Por otro lado. I18n con Mono • Existen varias formas de llevar a cabo la internacionalizaci´ on de nuestras aplicaciones – Por un lado. . . las APIs de .Posix Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas .4.NET para este prop´ osito (System. Otros Referencias Agradecimientos y .po – Traducimos el es.po -o locale/es/LC MESSAGES/i18n.Globalization. .Catalog. .mo P´ agina de Abertura P´ agina 105 de 147 Regresar Full Screen Cerrar Abandonar .cs -o es.Unix. .5.3.

Otros Introducci´ on a Mono Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . e-ghost y DotNetGroup 5. . . * P´ agina www P´ agina de Abertura P´ agina 106 de 147 Regresar Full Screen Cerrar Abandonar . . .Introducci´ on a Mono c 2006 Pablo Ordu˜ na. Otros Referencias Otros Agradecimientos y .

NET: la documentaci´ on de . . al implementar .1.NET • No desarrolla algunos de los componentes de Microsoft (Web Services Enhancements. . Servicios Web y Mono Servicios Web y Mono Introducci´ on al cursillo Qu´ e es Mono 5. . Otros Referencias Agradecimientos y . que son una parte importante de .NET. Introducci´ on • Mono. * P´ agina www P´ agina de Abertura P´ agina 107 de 147 Regresar Full Screen Cerrar Abandonar . por ejemplo) • La mayor´ ıa de lo aqu´ ı tratado es 100% compatible con .Introducci´ on a Mono c 2006 Pablo Ordu˜ na. .NET para desarrollo y consumo de Servicios Web. provee tambi´ en muchas de las herramientas de .1.NET nos sirve – La documentaci´ on de la web del DotNetGroup y los libros de su biblioteca son extraordinariamente u ´tiles para esto – Es un ejemplo claro de reutilizaci´ on de inversiones en documentaci´ on de Microsoft desde Mono Introducci´ on al entorno Interfaces gr´ aficas . e-ghost y DotNetGroup 5.1.

de manera completamente independiente de la plataforma usada – Puedo estar yo utilizando Java sobre Windows y alguien lo consume bajo GNU/Linux desde Python • Para ello. . La interoperabilidad se consigue mediante la adopci´ on de est´ andares abiertos. FTP. y otros (otras aplicaciones en m´ aquinas remotas) pueden consumirlo.1. Otros Referencias Agradecimientos y . Distintas aplicaciones de software desarrolladas en lenguajes de programaci´ on diferentes y ejecutadas sobre cualquier plataforma pueden utilizar los servicios web para intercambiar datos en redes de ordenadores como Internet. Jabber o alg´ un otro protocolo est´ andar • Hay diferentes protocolos de Servicios Web: – SOAP Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . . * P´ agina www P´ agina de Abertura P´ agina 108 de 147 Regresar Full Screen Cerrar Abandonar . ¿Qu´ e son Servicios Web? • Seg´ un la Wikipedia: Introducci´ on al cursillo Un servicio Web es una colecci´ on de protocolos y est´ andares que sirve para intercambiar datos entre aplicaciones. . .5. se utiliza HTTP.2. se utilizan tecnolog´ ıas web est´ andares: – La comunicaci´ on va a trav´ es de XML de una u otra manera (est´ andar) – Para el transporte. • La idea es que yo (mi aplicaci´ on) ofrezco un servicio a trav´ es de Internet.

NET/Mono Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . . para m´ as informaci´ on una implementaci´ on Open Source XML-RPC para . . Otros Referencias Agradecimientos y . * P´ agina www P´ agina de Abertura P´ agina 109 de 147 Regresar Full Screen Cerrar Abandonar .. • XML-RPC con Mono no se cubrir´ a.– XML-RPC – . .. .

.1. . REST con Mono • Yahoo! ofrece una API atractiva para poder usar el buscador desde tus aplicaciones • Utiliza REST – Utilizado tambi´ en por: ∗ ∗ ∗ ∗ Amazon Bloglines eBay . Otros Referencias Agradecimientos y . . * P´ agina www • Aunque REST no es ex´ actamente una forma de Servicios Web. como la implementaci´ on libre de Martin G Brown • Yahoo nos permite hacer b´ usquedas Regresar Full Screen Cerrar – de p´ aginas web Abandonar . .. P´ agina de Abertura P´ agina 110 de 147 – O utilizar el c´ odigo que alguien ya ha implementado para C#. es necesario implementar el c´ odigo que haga la llamada y traduzca la respuesta..5. Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . podemos encontrar interfaces para desarrollo como las anteriores hechas en REST que utilizaremos de manera muy similar a Servicios Web • Para poder hacer llamadas desde Mono.3.

– de im´ agenes – de v´ ıdeos – de noticias – de mucho m´ as • Ejemplo de llamada (madonna im´ agenes.yahoo. .yahoo.search.com/ImageSearchService/V1/ImageSearchR esponse. Otros Referencias Agradecimientos y . * P´ agina www P´ agina de Abertura P´ agina 111 de 147 Regresar Full Screen Cerrar Abandonar .search. . . . s´ olo un resultado.xsd" totalResultsAvailable="139" totalResultsReturned="1" firstResultPosition="2"> <Result> <Title>e ghost</Title> <Summary> Foto en Jaidefinision aqui httpantilleshomelinuxnetfotofamilia01jpg Fila de atras cyrus NcTrun Fermat Zefe Guillermo Juanval STenyaK FMonkey BloOwITt txusinho Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . empezando por el segundo): http://api.com/ImageSearchService/V1/imageSearch? appid=YahooDemo&query=e-ghost&results=1&start=2 • Ejemplo de resultado a la llamada anterior: <ResultSet xsi:schemaLocation="urn:yahoo:srchmi http://api.

.mundurat.php/HuMor </RefererUrl> <FileSize>415844</FileSize> <FileFormat>jpeg</FileFormat> <Height>413</Height> <Width>764</Width> <Thumbnail> <Url>http://re2.mundurat.e-ghost. Otros Referencias Agradecimientos y .net/nun/webmaster/img/e-ghost. . * P´ agina www P´ agina de Abertura P´ agina 112 de 147 Regresar Full Screen Cerrar Abandonar .mm-b1.deusto.net/nun/webmaster/img/e-ghost. .jpg </Url> <ClickUrl> http://www.Zurt MaY Juro que soy yo aunque tengo la cara a oscuras 8D </Summary> <Url> http://www.jpg </ClickUrl> <RefererUrl> http://www.yimg.com/image/602490785</Url> <Height>70</Height> <Width>130</Width> </Thumbnail> </Result> </ResultSet> Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas .es/phpwiki/index. .

cs Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . . Otros Referencias Agradecimientos y . * P´ agina www P´ agina de Abertura P´ agina 113 de 147 Regresar Full Screen Cerrar Abandonar . . . .• M´ as informaci´ on en la documentaci´ on • Ejemplo: otros/ws/rest/ejemplo/yahoo.

5.1. a trav´ es del cual lanza la petici´ on. y a trav´ es del cual recibe la respuesta • Soporta m´ ultiples protocolos para la transporte.573 SOAPAction: "espacio/GetClasses" Content-Type: text/xml. .asmx HTTP/1. SOAP es s´ olo el protocolo para la serializaci´ on de objetos ∗ Con SOAP se puede serializar un objeto serializable en un fichero – Cuando se utiliza para hacer peticiones y procesar las respuestas.4322. . Otros Referencias Agradecimientos y . charset=utf-8 Content-Length: 276 Expect: 100-continue Connection: keep-alive Host: localhost:8080 Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . utiliza un protocolo de transporte.1. Introducci´ on a SOAP • SOAP (Simple Object Access Protocol) es el protocolo de Servicios Web m´ as popular – En principio. pero el m´ as utilizado es HTTP – Ejemplo de petici´ on SOAP sobre HTTP tabulada: POST /Ejemplo. * P´ agina www P´ agina de Abertura P´ agina 114 de 147 Regresar Full Screen Cerrar Abandonar .1 User-Agent: Mono Web Services Client Protocol 1. se est´ a hablando de SOAP-RPC ∗ Para ello. . .4.

0 Unix X-Powered-By: Mono Date: Mon.org/2001/XMLSchema-instance" xmlns:xsd="http://www. charset=utf-8 Content-Length: 519 Keep-Alive: timeout=15.9. * P´ agina www P´ agina de Abertura P´ agina 115 de 147 Regresar Full Screen Cerrar Abandonar .0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www. .w3. Otros Referencias Agradecimientos y . 8 Aug 2005 00:16:05 GMT Content-Type: text/xml.<?xml version="1. max=99 Connection: Keep-Alive <?xml version="1.0 200 OK Server: Mono-XSP Server/1. .0" encoding="utf-8"?> <soap:Envelope Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . .org/soap/envelope/"> <soap:Body> <GetClasses xmlns="espacio" /> </soap:Body> </soap:Envelope> – Ejemplo de respuesta SOAP sobre HTTP tabulada: HTTP/1.xmlsoap.org/2001/XMLSchema" xmlns:soap="http://schemas.0.w3. .

Otros Referencias Agradecimientos y .w3.org/soap/envelope/"> <soap:Body> <GetClassesResponse xmlns="espacio"> <GetClassesResult> <Classroom> <Students> <Student> <Name>Jon Ander</Name> <Nick>JonAn</Nick> </Student> <Student> <Name>Jon</Name> <Nick>Antilles</Nick> </Student> </Students> <Number>113</Number> </Classroom> </GetClassesResult> </GetClassesResponse> </soap:Body> </soap:Envelope> Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . * P´ agina www P´ agina de Abertura P´ agina 116 de 147 Regresar Full Screen Cerrar Abandonar .w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.xmlsoap. . .xmlns:xsi="http://www.org/2001/XMLSchema" xmlns:soap="http://schemas. . .

Para ello. puede documentarlo de diferentes maneras – La m´ as popular es utilizando WSDL (Web Service Description Language) ∗ Ejemplo de descripci´ on: la interfaz de desarrollo de Google ∗ WSDL no est´ a atado a SOAP • La popular combinaci´ on SOAP (sobre HTTP) para el uso del Servicio Web. . que no vamos a ver) hace posible la automatizaci´ on de todo el proceso – Por tanto pueden crearse herramientas para ello – Mono. necesita una Descripci´ on del Servicio Web: – Para ello. POP3. u otros protocolos de transporte • Para que el cliente del servicio pueda lanzar estas peticiones. debe saber qu´ e m´ etodos puede llamar. .NET nivel para trabajar con SOAP P´ agina 117 de 147 Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . Jabber. y dem´ as informaci´ on. cuenta por defecto con herramientas de muy alto compatibles con . Otros Referencias Agradecimientos y . descrito mediante WSDL (y descubierto mediante UDDI. SMTP. puede utilizarse sobre FTP.– De la misma forma. . * P´ agina www P´ agina de Abertura Regresar Full Screen Cerrar Abandonar . . qu´ e par´ ametros le puede pasar.

el xsp – Podemos utilizar el m´ odulo para Apache de Mono (mod mono) • Nosotros utilizaremos el Servidor propio de Mono. . .5. el xsp – M´ as f´ acil de configurar e instalar – Por otra parte. al transportar toda la comunicaci´ on por HTTP. * P´ agina www P´ agina de Abertura P´ agina 118 de 147 Regresar Full Screen Cerrar Abandonar . Configurando el Servidor Web SOAP con Mono • Para ofrecer un Servicio Web. lo primero que necesitaremos ser´ a un Servidor que est´ e a la escucha – Podemos hacer que nuestra aplicaci´ on est´ e a la escucha – Podemos utilizar el servidor propio de Mono.conf): <IfModule mod_proxy.c> ProxyRequests Off </IfModule> ProxyPass /src http://localhost:puerto/dst/ ProxyPassReverse /src http://localhost:puerto/dst/ Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . Otros Referencias Agradecimientos y . podemos utilizar el m´ odulo proxy de Apache: ∗ Poniendo las siguientes l´ ıneas en el fichero de configuraci´ on de Apache (httpd. necesitamos tener otro puerto a la escucha ∗ Sin embargo. .1.5. .

por comodidad lo ejecutaremos con el usuario con el que hemos iniciado la sesi´ on – Al instalar Mono a trav´ es de repositorios. haciendo que todas las aplicaciones compartan su mismo directorio bin.3/libproxy. Otros Referencias Agradecimientos y .conf): LoadModule proxy_module /usr/lib/apache/1. * P´ agina www P´ agina de Abertura P´ agina 119 de 147 Regresar Full Screen Cerrar Abandonar . .∗ Y descomentando el m´ odulo Proxy en el fichero de configuraci´ on de m´ odulos de Apache(modules. . lo normal es que venga por defecto ejecut´ andose como www-data • Para indicarle una carpeta desde la que cuelgue todo.so ∗ Y con ello al acceder a localhost/src. lo haremos con: xsp --root carpeta • Es m´ as com´ un indicarle un directorio de configuraci´ on que indique todo: xsp --appconfigdir /etc/xsp Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . . Apache har´ a de proxy. transmitiendo la informaci´ on a localhost:puerto/dst. . por ejemplo xsp) – Dado que en el cursillo hemos utilizado la instalaci´ on gen´ erica y que s´ olo estamos haciendo pruebas. y devolviendo la respuesta • Lo ideal es que xsp sea ejecutado por el usuario www-data (u otro nuevo.

.2/share/doc/xsp$ xsp2 --root test • Para terminar. Contiene un ejemplo de appconfigdir • Para poder utilizar los ejemplos del cursillo: xsp --root otros/ws/soap/sirviendo • Para poder utilizar los ejemplos que vienen con el instalador gen´ erico (vienen tambi´ en en el paquete asp.1. . Si est´ a instalado mediante repositorios: P´ agina de Abertura P´ agina 120 de 147 nctrun@ord3p:~# /etc/init. Otros Referencias Agradecimientos y .8. en diferentes directorios – Ejemplo: otros/ws/soap/xsp. pulsar intro.2/share/doc/xsp$ xsp --root test P´ agina www Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas .NET 2: nctrun@ord3p:~/mono-1.• Esto permite poder diferenciar entre varias aplicaciones.8.net-examples) nctrun@ord3p:~/mono-1. .d/mono-xsp stop Regresar Full Screen Cerrar Abandonar . * • Para poder utilizar ASP. .1.

Otros Referencias Agradecimientos y . * P´ agina www P´ agina de Abertura P´ agina 121 de 147 Regresar Full Screen Cerrar Abandonar . .Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . . . .

tendr´ a el atributo (con m´ as o menos par´ ametros): [WebService(Description="este servicio mola". Otros Referencias Agradecimientos y . . .Web.Service y as´ ı podr´ a acceder a m´ etodos y atributos u ´tiles de la clase padre · Opcionalmente. .Services.asmx – En ´ el aparecer´ a la cabecera: <%@ WebService Language="c#" Class="espacios. * P´ agina www P´ agina de Abertura P´ agina 122 de 147 Regresar Full Screen Cerrar Abandonar .1. pondremos el c´ odigo.5. Estar´ a: ∗ la clase especificada en la cabecera · Opcionalmente.clase" %> ∗ El Language ser´ a C# o VB.6. . ser´ a hija de System. Sirviendo un Servicio Web SOAP con Mono • Para hacer un ejemplo sencillo de Servicio Web SOAP con Mono: Introducci´ on al cursillo – Crearemos un fichero . Namespace="espacio")] · Los m´ etodos que podr´ an ser accesibles tendr´ an que tener el atributo (con m´ as o menos par´ ametros): [WebMethod(Description="esta es la descripcion")] ∗ M´ as clases o tipos de dato que se usen en el c´ odigo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas .nombres.NET ∗ La Class ser´ a la clase que tiene los m´ etodos a los que se podr´ a llamar ∗ Existen otras muchas posibles cabeceras para a˜ nadir – Despu´ es de la cabecera.

asmx – Para poder ver el servicio. .asmx – La primera vez que accedemos. . e incluso invocarlos · Con una petici´ on GET. deber´ an tener el atributo: [Serializable] • Ejemplo: otros/ws/soap/sirviendo/Ejemplo.asmx/GetClasses ∗ Ver la descripci´ on del Servicio Web (que nos generar´ a autom´ aticamente) en WSDL: http://localhost:8080/Ejemplo. Otros Referencias Agradecimientos y . .asmx?wsdl Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . por lo que no podremos pasar datos complejos · Llamamos a: http://localhost:8080/Ejemplo. el c´ odigo es compilado. accederemos a: http://localhost:8080/Ejemplo. .asmx?page=op&tab=test &op=GetClasses&bnd=PetitionsServerSoap&ext=testform · Que realmente se limita a poner bonito el resultado de: http://localhost:8080/Ejemplo. * P´ agina www P´ agina de Abertura P´ agina 123 de 147 Regresar Full Screen Cerrar Abandonar .asmx?page=wsdl · Que realmente se limita a poner bonito el resultado de: http://localhost:8080/Ejemplo. – Veremos una p´ agina web ∗ Desde la cual podremos ver la documentaci´ on del servicio web ∗ Ver los m´ etodos que podemos invocar.· Si se van a usar en la comunicaci´ on (pueden ser pasados por par´ ametro o devueltos).

lo compilamos.cs.∗ E incluso nos genera c´ odigo para consumir el servicio web en C# y en VB. * P´ agina www P´ agina de Abertura P´ agina 124 de 147 Regresar Full Screen Cerrar Abandonar .dll en el directorio bin de la aplicaci´ on. utilizando .dlls externos • O incluso utilizar Code Behind.asmx. Otros Referencias Agradecimientos y . . .asmx?page=proxy • Tambi´ en podemos no poner todo el c´ odigo en el . ponemos el .behind. y en el .code. . de manera que incluimos todo el c´ odigo en un .asmx no necesitamos poner por tanto el c´ odigo – Ejemplo: otros/ws/soap/sirviendo/Ejemplo.NET: http://localhost:8080/Ejemplo. .asmx Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas .

. . man wsdl Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . . para generar un esqueleto de servidor en lugar de uno de cliente. as´ ı como las operaciones que hemos permitido acceder – Con ello.5.NET. . encontraremos la descripci´ on generada por xsp en: http://localhost:8080/Ejemplo. Student. .cs’ nctrun@ord3p:~$ – wsdl tiene m´ as opciones. ya podr´ ıamos hacer c´ odigo que realizase esas peticiones • Utilizaremos la herramienta wsdl para generar un esqueleto en C# ya hecho a trav´ es de la descripci´ on dada: nctrun@ord3p:~$ wsdl http://localhost:8080/Ejemplo. para generar VB. ). . Consumiendo un Servicio Web SOAP con Mono • Lo primero que haremos es encontrar la descripci´ on del Servicio Web • Tomaremos como servidor nuestra m´ aquina alojando el servicio de ejemplo anterior • Por tanto. . veremos que est´ an definidos los datos de las clases que hab´ ıamos escrito en C# (Classroom.asmx?WSDL – Si echamos un ojo a esta descripci´ on.asmx?wsdl Mono Web Services Description Language Utility Writing file ’PetitionsServer.7. * P´ agina www P´ agina de Abertura P´ agina 125 de 147 Regresar Full Screen Cerrar Abandonar .1. poner usuario y password. Otros Referencias Agradecimientos y . .

a alto nivel con monop como coment´ abamos a principio del cursillo: Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas .• Una vez hecho esto.Web. – Adem´ as. . podemos compilar este c´ odigo como librer´ ıa: nctrun@ord3p:~$ mcs PetitionsServer.Services nctrun@ord3p:~$ • Y luego desde otro . * P´ agina www P´ agina de Abertura P´ agina 126 de 147 Regresar Full Screen Cerrar Abandonar . internamente har´ a la llamada al servidor y se quedar´ a esperando a la respuesta ∗ Para verlo: nctrun@ord3p:~# tcpflow -i lo -C port 8080 – Adem´ as de generarnos los m´ etodos a los que podemos llamar (como GetClasses). . foreach(Classroom cr in crs) System. .Console. Classroom [] crs = ps.GetClasses(). nos genera otros para utilizarlos de manera as´ ıncrona: public IAsyncResult BeginGetClasses (AsyncCallback callback.cs podemos hacer llamadas de manera transparente: PetitionsServer ps = new PetitionsServer().cs -t:library -r:System. Otros Referencias Agradecimientos y . public void EndAddClass (IAsyncResult asyncResult). – Cuando llamamos a GetClasses por ejemplo.WriteLine(cr. object asyncState). podemos ver los m´ etodos etc.Number). .

dll Classroom public class Classroom { public Classroom ().. } nctrun@ord3p:~$ P´ agina 127 de 147 Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas .nctrun@ord3p:~$ monop -r:PetitionsServer. . (. . .dll Assembly Information: PetitionsServer Version=0.. .) public Student[] Students. nctrun@ord3p:~$ monop -r:PetitionsServer.0. * P´ agina www P´ agina de Abertura Regresar Full Screen Cerrar Abandonar . public int Number. Otros Referencias Agradecimientos y .0 Culture=neutral Classroom PetitionsServer Student Total: 3 types.0.

for(Classroom cr : crs) System. . . . de manera breve con la librer´ ıa Axis de Apache para Java Damos por hecho que $AXISCLASSPATH son los . . generamos el c´ odigo. * P´ agina www P´ agina de Abertura Regresar Full Screen Cerrar Abandonar .asmx?wsdl nctrun@ord3p:~$ javac -cp $AXISCLASSPATH espacio/*java nctrun@ord3p:~$ • Una vez hecho esto.getPetitionsServerSoap().out. . Otros Referencias Agradecimientos y . pero esta vez en Java: nctrun@ord3p:~$ java -cp $AXISCLASSPATH org.apache. PetitionsServerSoap pss = psl.getClassroom().getClasses(). con el mismo servidor. ArrayOfClassroom aoc = pss. hacemos un c´ odigo de prueba como: PetitionsServerLocator psl = new PetitionsServerLocator().println(cr.WSDL2Java http://localhost:8080/Ejemplo. .jar que vienen con Axis • Dada la descripci´ on. P´ agina 128 de 147 Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . ¿d´ onde est´ a la interoperabilidad? • Vamos a hacer el mismo ejemplo.axis. Classroom [] crs = aoc. si estamos utilizando Mono para escuchar a Mono.wsdl.• Ejemplo: otros/ws/soap/consumiendo/ • Sin embargo.getNumber()).

Python. • Y lo ejecutamos: nctrun@ord3p:~$ java -cp $AXISCLASSPATH:. . ) bajo diferentes Sistemas Operativos Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . Otros Referencias Agradecimientos y . . . * P´ agina www P´ agina de Abertura P´ agina 129 de 147 Regresar Full Screen Cerrar Abandonar . .• Y lo compilamos: nctrun@ord3p:~$ javac Llamada. ) • De la misma forma podr´ ıamos utilizar much´ ısimos otros lenguajes (C++. . .java -cp $AXISCLASSPATH:. . Perl. . Llamada 113 nctrun@ord3p:~$ • Si miramos otra vez lo que va por debajo con tcpflow veremos que no hay grandes cambios (aparte del User-Agent. .

. Otros Referencias Agradecimientos y . puede interesarnos otro sistema que ∗ nos permita trabajar al mismo nivel de abstracci´ on (o superior) ∗ cuide m´ as la eficiencia • Con Remoting tenemos precisamente esto: – Mismo nivel de abstracci´ on ∗ incluso superior ofreciendo · eventos · paso de par´ ametros por referencia · . Remoting Remoting Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno • Los Servicios Web anteponen la interoperabilidad entre diferentes plataformas a largo alcance a la eficiencia – Interesante para ∗ ofrecer o consumir un servicio a trav´ es de Internet ∗ interactuar entre diferentes plataformas – Pero si nuestra aplicaci´ on no cumple ninguna de las dos condiciones. . – Comunicaci´ on por canales ∗ Encargados de transmitir la informaci´ on Interfaces gr´ aficas . e-ghost y DotNetGroup 5.2. . ...Introducci´ on a Mono c 2006 Pablo Ordu˜ na. * P´ agina www P´ agina de Abertura P´ agina 130 de 147 Regresar Full Screen Cerrar Abandonar .

.NET funcionando • Ejemplos en otros/remoting/ Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . * P´ agina www P´ agina de Abertura P´ agina 131 de 147 Regresar Full Screen Cerrar Abandonar . incluso implementando los propios – Puede resultar mejor para comunicar aplicaciones en una red en la que s´ olo vayamos a tener equipos con Mono/. Otros Referencias Agradecimientos y . . . .∗ HttpChannel · Utilizar´ a HTTP para la transmisi´ on de informaci´ on ∗ TcpChannel · Utilizar´ a un formato binario para la transmisi´ on de informaci´ on · Mayor eficiencia ∗ m´ as (incluso implementando los propios) – Formateadores ∗ Encargados de serializar la informaci´ on a transmitir ∗ SoapClientFormatterSinkProvider / SoapServerFormatterSinkProvider · Serializa la informaci´ on a SOAP · El utilizado por defecto con HttpChannel ∗ BinaryClientFormatterSinkProvider / BinaryServerFormatterSinkProvider · Serializa la informaci´ on a un formato binario · El utilizado por defecto con TcpChannel ∗ M´ as.

. minimalista ∗ ∗ ∗ ∗ ∗ Multiplataforma y Open Source No tiene ning´ un demonio por detr´ as: se almacena todo en un fichero Realmente peque˜ na. potente ∗ Multiplataforma y Open Source ∗ La M de LAMP (Linux Apache MySQL (PHP — Python — Perl) ∗ Hay que utilizar el conector de MySQL para . . . como f-spot Introducci´ on al entorno Interfaces gr´ aficas .3. . * P´ agina www P´ agina de Abertura – MySQL. • Ejemplo en otros/bd/ Abandonar P´ agina 132 de 147 Regresar Full Screen Cerrar .NET • Mono tiene soporte para muchos proveedores • Utilizaremos como ejemplo dos diferentes: – Sqlite.NET (viene con binarios para Mono) ∗ Soporte para transacciones.Introducci´ on a Mono c 2006 Pablo Ordu˜ na. Bases de Datos Bases de Datos Introducci´ on al cursillo Qu´ e es Mono • Para utilizar Bases de Datos en Mono. . e-ghost y DotNetGroup 5. utilizaremos la implementaci´ on de Mono de ADO. diferentes opciones de almacenamiento. replicaci´ on. no tiene dependencias Viene por defecto con Mono Utilizada en aplicaciones de escritorio. . Otros Referencias Agradecimientos y .

.Introducci´ on a Mono c 2006 Pablo Ordu˜ na. * P´ agina www P´ agina de Abertura P´ agina 133 de 147 Regresar Full Screen Cerrar Abandonar . . e-ghost y DotNetGroup 6. Referencias Introducci´ on a Mono Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . . . Otros Referencias Referencias Agradecimientos y .

En general En general Introducci´ on al cursillo Qu´ e es Mono • La web oficial de Mono • Mono: A Developer’s Notebook.Introducci´ on a Mono c 2006 Pablo Ordu˜ na. de la editorial O’Reilly • Mono hispano Introducci´ on al entorno Interfaces gr´ aficas .1. . . e-ghost y DotNetGroup 6. Otros Referencias Agradecimientos y . . * P´ agina www P´ agina de Abertura P´ agina 134 de 147 Regresar Full Screen Cerrar Abandonar . .

Introducci´ on a Mono c 2006 Pablo Ordu˜ na. O’Reilly. . Julio 2005 Introducci´ on al entorno Interfaces gr´ aficas . Febrero 2002 • Miguel de Icaza on Mono. Otros Referencias Agradecimientos y .1.com • www.com • www. . Marzo 2005 Full Screen • Miguel on Mono. Qu´ e es • La anterior web de Mono (redirige a la actual.2. Qu´ e es Mono Qu´ e es Mono Introducci´ on al cursillo Qu´ e es Mono 6. .go-mono. pero a trav´ es de google sigue siendo accesible • www.com/rationale.2. Marzo 2005 Regresar • Entrevista Miguel de Icaza en O’Reilly.html • Let’s make UNIX not suck. e-ghost y DotNetGroup 6.novell. * P´ agina www P´ agina de Abertura P´ agina 135 de 147 • Entrevista a Miguel de Icaza. .gotmono. O’Reilly.novell. Julio 2001 Cerrar Abandonar . por Miguel de Icaza • V´ ıdeo de la charla de Miguel de Icaza en la UOC • Entrevista a Miguel de Icaza.com • forge.

.• Comentarios interesantes en Slashdot • http://tirania. DotGNU y dem´ as.NET apps on Linux” • Otra entrevista a Miguel de Icaza. por Netcraft. Septiembre 2001 • Entrevista a Miguel de Icaza. Julio 2001 • Material de Joe Hummel sobre ”Mono: running . * P´ agina www P´ agina de Abertura P´ agina 136 de 147 Regresar Full Screen Cerrar Abandonar . Otros Referencias Agradecimientos y . . Abril 2004 • en general :) Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . . .org/blog/archive/2005/Feb-09.html Introducci´ on al cursillo • Ricardo Galli sobre Mono.

Mayo 2004 • Respuesta de Miguel de Icaza a Seth Nickel • Miguel on patents • Proceso de estandarizaci´ on en el ECMA.2. .2.6. Licencias y patentes • FAQ sobre licencias y Mono • P´ agina oficial de la ECMA • C´ odigo de conducta de ECMA • ECMA 334 • ECMA 335 • Guidance notes for use with the Ecma Code of Conduct in Patent Matters • ISO 23270 • ISO 23271 • Posici´ on de DotGNU • DotGNU sobre FUD sobre patentes • Seth Nickel hablando de Mono. . por Microsoft P´ agina 137 de 147 Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . . * P´ agina www P´ agina de Abertura Regresar Full Screen Cerrar Abandonar . . Otros Referencias Agradecimientos y .

. Otros Referencias Agradecimientos y . * P´ agina www P´ agina de Abertura P´ agina 138 de 147 Regresar Full Screen Cerrar Abandonar .com/2100-3513 22-961737. .zdnet. .html • Mensaje en la lista de Mono sobre el tema de patentes Introducci´ on al cursillo • El tema se ha hablado mucho en la lista • patentes de Sun Microsystems Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . .• news.

. . Otros Referencias Agradecimientos y .6. . . Aplicaciones • Noticia sobre la cantidad de aplicaciones que usan Mono • gnomefiles. * P´ agina www P´ agina de Abertura Regresar Full Screen Cerrar Abandonar .3.org • Tomboy • f-spot • MonoDevelop • Muine • Blam • Beagle • Stetic • iFolder P´ agina 139 de 147 Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas .2.

e-ghost y DotNetGroup 6. . Instalaci´ on • Descargas de Mono • Mono for Debian • Fuentes para Ubuntu • Mono Live • MonoDevelop Introducci´ on al entorno Interfaces gr´ aficas .3. .Introducci´ on a Mono c 2006 Pablo Ordu˜ na. . . Introducci´ on al entorno Introducci´ on al entorno Introducci´ on al cursillo Qu´ e es Mono 6. * P´ agina www • SharpDevelop P´ agina de Abertura • Programando en Mono con Eclipse • Eclipse P´ agina 140 de 147 Regresar Full Screen Cerrar Abandonar .1. Otros Referencias Agradecimientos y .3.

. . Otros Referencias Agradecimientos y . autor de Jython y IronPython • Proyecto Grasshopper: ejecutar en Java lo programador en Mono • Utilizando IKVM P´ agina 141 de 147 • GTK# desde Java • Mono y Java • Nemerle • IronPython y comunidad Open Source: Regresar Full Screen Cerrar Abandonar .3.6 Licencia de IronPython 0.2. . Lenguajes • IKVM • Proyecto Classpath de GNU • Boo • Jython • Web original de IronPython 0.6. .6 • Web actual de IronPython P´ agina www Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . * Licencia de las versiones posteriores de IronPython P´ agina de Abertura • Web de Jim Hugunin.

. . . Otros Referencias Agradecimientos y .com/edd/blog/contents/2004/07/29-ironpython/read ∗ http://usefulinc.com/edd/blog/contents/2004/08/25-ironpy-mono/read ∗ http://usefulinc. .com/edd/blog/contents/2004/09/01-ironpython/read – Edd Dumbill hablando de IronPython cuando se publica IronPython bajo licencia privativa – Edd Dumbill hablando de Boo cuando se publica IronPython bajo licencia privativa Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas .– Edd Dumbill hablando de IronPython cuando es Open Source: ∗ http://usefulinc. * P´ agina www P´ agina de Abertura P´ agina 142 de 147 Regresar Full Screen Cerrar Abandonar .

htm#platforms • http://wxnet.Forms.Windows.net/ • http://www.mono-project.Introducci´ on a Mono c 2006 Pablo Ordu˜ na.org/projects/gconf/ • http://www.gnome. Interfaces gr´ aInterfaces ficas con Mono gr´ aficas con Mono Introducci´ on al cursillo Qu´ e es Mono • http://www.gnome.sourceforge.4.sourceforge.mozilla.gnome.org • http://www. . .myrealbox.org/ Introducci´ on al entorno Interfaces gr´ aficas .wxwidgets.html • http://gtk-sharp.org/faqgen.net/screenshots/ • http://svn.sourceforge. Otros Referencias Agradecimientos y . e-ghost y DotNetGroup 6.com/mwf/class-status-System.org/projects/gconf/ P´ agina 143 de 147 Regresar Full Screen Cerrar Abandonar . * P´ agina www P´ agina de Abertura • http://www.net/ • http://glade. .com/Gui Toolkits • http://wxnet. .

.NET • Web Services Essentials. .Introducci´ on a Mono c 2006 Pablo Ordu˜ na. . * P´ agina www P´ agina de Abertura – Inclusive la biblioteca del DotNetGroup • Binding de XML-RPC para Mono/.NET distribuido ” Introducci´ on al entorno Interfaces gr´ aficas .NET REST • API de Yahoo P´ agina 144 de 147 • Implementaci´ on de la API de Yahoo para Mono/. Otros Otros Introducci´ on al cursillo Qu´ e es Mono • Programming C#. e-ghost y DotNetGroup 6.NET de Martin G Brown Regresar Full Screen Cerrar Abandonar . Otros Referencias Agradecimientos y .5. editorial O’Reilly – no tiene nada de Mono o . .NET • Documentaci´ on en la web del DotNetGroup – En especial ”Curso de . editorial O’Reilly – no tiene nada de Mono o . editorial O’Reilly • Programming Web Services with SOAP.

e-ghost y DotNetGroup 7. * P´ agina www P´ agina de Abertura P´ agina 145 de 147 Regresar Full Screen Cerrar Abandonar . Agradecimientos y nota final Introducci´ on a Mono Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . .Introducci´ on a Mono c 2006 Pablo Ordu˜ na. . . . Otros Referencias Agradecimientos y nota final Agradecimientos y .

. por todos los marrones que se ha comido para organizar los cursillos de Julio • Al e-ghost y DotNetGroup. . por la plataforma que se est´ an currando • A Jon Ander Hern´ andez JonAn. Otros Referencias Agradecimientos y .Introducci´ on a Mono c 2006 Pablo Ordu˜ na. por todas sus grandes intervenciones en clase :D • A Jon Vald´ es Juanval. * P´ agina www P´ agina de Abertura P´ agina 146 de 147 Regresar Full Screen Cerrar Abandonar . . por darme la oportunidad de dar este cursillo • A los que hayais venido – porque sois los que le dais sentido a esto – por haberme aguantado durante estas horas 0:) • A todos los que me dejo en el tintero :D Introducci´ on al entorno Interfaces gr´ aficas .1. Agradecimientos Agradecimientos Introducci´ on al cursillo Qu´ e es Mono • A la comunidad de Mono. e-ghost y DotNetGroup 7. . por traducir el ejemplo de OpenGL • A Fermat.

. com Otros Referencias Agradecimientos y . . . . e-ghost y DotNetGroup 7. el e-ghost.2. Nota final Nota final Introducci´ on al cursillo Qu´ e es Mono Introducci´ on al entorno Interfaces gr´ aficas . Puede encontrarse junto con los ejemplos y las fuentes L TEXen la misma web de ambos grupos. Probablemente las actualizaciones las cuelgue en mi hueco web en el e-ghost. sugerencia. el DotNetGroup. o comentario en general. Este documento est´ a escrito por Pablo Ordu˜ na para el cursillo de Introducci´ on a Mono del grupo de software libre de la Universidad de Deusto. Para cualquier correcci´ on.NET de la Universidad de A Deusto.Introducci´ on a Mono c 2006 Pablo Ordu˜ na. no dudes en ponerte en contacto conmigo en: pablo @ ordunya . * P´ agina www P´ agina de Abertura P´ agina 147 de 147 Regresar Full Screen Cerrar Abandonar . y del grupo de .