dilluns, 26 de febrer del 2007

Exportació a l'OpenOffice en format HTML/XHTML

Ja hem parlat de que l'objectiu final de l'extensió és exportar el document d'OO a la wiki del moodle que desitgem.

Per això ens cal exportar el document amb el format que accepti la wiki (html/xhtml/wiki)

Basant-nos en això i les funcionalitats de la wiki tenim dues opcions:

  • La primera consisteix en exportar el document amb format html o xhtml, la qual cosa és una funcionalitat de l'OO.
  • La segona consisteix en anar cercant pel document el seu contingut i realitzar una transformació dins la extensió que ens doni com a resultat un format vàlid per a la wiki.

La primera opció es podria fer mitjançant el següent script en python: exporta.py

Definint la variable:

p.Value="HTML (StarWriter)" => sortida del document en format html
p.Value="XHTML Writer File" => sortida del document en format xhtml

Quins problemes hi ha al dur a terme aquesta opció? S'hauria de validar que el format del document d'OO i el resultat en la wiki fossin el mateix, i en cas contrari, aplicar les transformacions que siguin necessàries.

La segona opció es podria fer mitjançant uns altres scripts:

cercaestils.py => Ens retorna els estils actius que s'han fet servir en el document
agafaestil.py => Ens tots el text que estigui en l'estil escollit
cercaposicions.py => Ens cerca l'inici i el final de l'estil que escollim
printaindex.py => Ens printa el contingut de l'índex del document, si n'hi ha.

Mitjançant aquesta opció podríem crear un document html, xhtml o amb el format de la wiki a mida tot i que seria mol més laboriós.

A més a més aquesta última opció (crec) que seria molt difícil d'implementar amb el word...

En definitiva, crec que la millor opció és realitzar la exportació en xhtml i que el webservice s'encarregui d'arreglar el xhtml per a que compleixi el format que desitgem.

En tot cas haurem d'investigar amb més detall quines transformacions hem de realitzar al xhtml i tota la pesca!

Etiquetes de comentaris: , , ,

dijous, 22 de febrer del 2007

2º Reunió

Ahir hi va haver una nova reunió per concretar més detalls sobre el que haurem de fer.

El projecte com ja sabiem era crear una extensió de l'OpenOffice però ahir vàrem definir el que faria aquesta extensió.

Aquesta s'haurà de comunicar amb la wiki del Moodle per tal de poder inserir documents d'OpenOffice que ja tinguem.

Aquest métode d'exportació d'informació cap a la wiki tindrà dues opcions:

  • Pujar el document text tal com estigui a l'OO
  • Pujar el document podent definir seccions i que l'arxiu d'OO es converteixi en diferentes pàgines de la wiki. Amb la imatge adjuntada (gràcies albert :P) es pot veure millor les conseqüències d'aquesta divisió de pàgines.

Per a poder fer tot això hem de tenir en compte dues coses:

  • Primer de tot, pel MSWord hi haurà una aplicació anàloga, per això ens haurem de posar d'acord amb el funcionament, implementació i lògica de l'extensió que realitzarem

  • Segon, comunicar-nos amb el Moodle:
    • L'extensió hauria de permetre introduir els paràmetres per a poder-la realitzar (url,l/p,etc)
    • Al Moodle hi haurà un webservice per a poder introduir pàgines, fer l'autentificació,etc mitjançant xml-rpc
    • Haurem de pensar com serà la lògica de l'extensió i el webservice, ja que en primer terme podem exportar el contingut del OO en html, xml, format mediawiki, etc i definir qui farà la inserció de les noves pàgines ja creades, una funcionalitat nova? utilitzant la funció de restore de la wiki? (a data d'avui aquesta funció no funciona gaire bé...)

En tot cas, el problema més immediat que tenim és saber com s'accedeix al text d'un document d'OO i poder diferenciar les parts de text segons la seva TOC, així com saber com es pot exportar aquesta informació, si haurem de fer un parseig d'informació d'algun tipus, etc.

A investigar s'ha dit!

PD: Ahir no vaig poder penjar l'informe de la reunió ja que estava a plaça reial fent-me amics dels reds, evidentment avui no estic ni humor ni tinc ganes per investigar tot això, demà serà un altre dia....

Etiquetes de comentaris:

dilluns, 19 de febrer del 2007

WebServices

En principi l'extensió que realitzem tard o d'hora s'haura de comunicar amb un web service.

Investigant una mica he trobat una llibreria de Python que ens facilitarà molt les coses a l'hora de desenvolupar l'aplicació.

Aquesta llibreria s'anomena Zolera SOAP Infrastructure (ZSI, pels amics).

Gràcies a aquesta llibreria i la seva documentació he fet un petit programa que ens farà de servidor: server.py

Després he fet una nova extensió de l'OpenOffice que es connecta al servidor i demana la funció que he implementat al servidor.

El resulta és aquest:


Ara bé, no tot són flors i violes, quin problema tenim ara?

Els requisits d'aquesta llibreria són: ZSI requires Python 2.3 or later and PyXML version 0.8.3 or later.

Amb linux no hi ha cap mena de problema ja que a cop d'apt o similar fàcilment podem instal·lar el que necessitem.

Amb windows, se suposa que haurem de instal·lar la llibreria apart o fer alguna marranada similar.....

Les proves d'empaquetar la llibreria amb l'extensió del OO de moment no han funcionat... o sigui que de moment ja tinc feina...

Aviam quina serà la solució......

Etiquetes de comentaris: , ,

divendres, 16 de febrer del 2007

Diàleg

Ja tinc el meu primer diàleg per OO.

Amb PyUno es poden utilitzar les llibreries d'AWT per a fer messageboxes,menus,etc.

Aquí hi ha l'exemple que he fet: login



A mode d'exemple he fet servir les llibreries d'en Danny

També m'ha estat d'utilitat aquesta extensió que ja exisitia pel OO.

L'únic problema que hi ha és que debugar les aplicacions per OO és com una mena d'infern i la documentació d'exemples, tutorials, etc de PyUno és quasibé inexistent.

Etiquetes de comentaris: ,

divendres, 9 de febrer del 2007

Primera extensió pel OpenOffice

Per crear l'extensió farem ús de PyUNO.

PyUNO es pot fer servir utilitzant els següents mètodes:

1. Dins de l'executable de Python(i fora del procés d'OpenOffice).

Aquesta metodologia s'utilitza quan:

  • Es comença a aprendre PyUNO, es té un enfocament més intuïtiu.
  • Es vol apuntar a execucions del script començant en processos separats (cgi-script dins un servidor web)
  • Es vol un entorn ràpid d'execució-codi, codi-execució

Un exemple de codi seria el següent:

Iniciar l'OpenOffice: oowriter "-accept=socket,host=localhost,port=2002;urp;"

Executar: .\python hello_world.py

2. Dins del procés d'OpenOffice.

Aquesta metodologia s'utilitza quan:
  • Es vulgui executar el programa en moltes màquines
  • Quan el programa depèn de crides d'altres programes
  • Es tingui més experiència amb pyUNO
  • Quan es vol el millor rendiment del programa
Per crear una extensió amb aquesta metodologia cal:
  • Realitzar el programa que volguem: hello_world.py
  • Assignar el programa a un event: Addons.xcu
  • Comprimir els dos arxius en un zip: zip hello_world.zip Addons.xcu hello_world.py
  • Hi ha 3 maneres per a instal·lar l'extensió creada:
    • /usr/lib/openoffice/program/unopkg add hello_world.zip
    • /usr/lib/openoffice/program/unopkg gui i afegir l'extensió
    • Obrir l'OpenOffice i afegir la instal·lació manualment tal com hem fet al pas anterior.

Finalment només ens cal executar l'extensió:



Etiquetes de comentaris: , ,

dijous, 8 de febrer del 2007

Python?

Tal com vaig dir ahir, les extensions pel OpenOffice es poden programar amb diferents llenguatges.

Ara bé, amb quin llenguatge desenvoluparem l'aplicació?

Hem decidit que la millor opció és fer-ho, és la de fer-ho amb Python.

Aquesta decisió ha estat basada en aspectes més personals que tècnics. Durant la carrera hem vist llenguatges com Java o C++ però en cap cas hem fet cap programa amb Python. Per això crec que Python és una bona elecció ja que al cap i a la fi el que estem fent és un treball de recerca, i això implica aprendre coses noves i experimentar amb nous llenguatges, mètodes de programació, etc.

En tot cas per veure les diferències entre Python i altres llenguatges hi ha diferents articles:

Tampoc entraré en detalls ja que podríem començar una discussió inacabable parlant de quin és millor que l'altre.

Personalment no en tinc ni idea de Python per això m'he passat pel safari books (el qual tots els estudiants de la UPC hi tenen accés gratuït encara que no ho sàpiguen) a veure quins llibres podrien ser interessant, de moment he trobat:
De moment no en compraré cap a amazon però qui sap....

Etiquetes de comentaris: , ,

dimecres, 7 de febrer del 2007

Extensions a OpenOffice (UNO)

Resulta que els addons s'anomenen extensions tal i com passa amb el Firefox, ves quina cosa!

Una breu descripció de com funcionen les extensions a l'OpenOffice i les seves característiques seria la següent:

Les extensions de l'OpenOffice existeixen per desenvolupar d'una manera ràpida i senzilla noves funcionalitats sense haver de tocar el codi font de l'aplicació (milers de línies). El seu principi és crear paquets UNO mitjançant els quals l'usuari final pugui instal·lar-los i utilitzar-los fàcilment.

Aquestes extensions es creen a partir d'UNO de tal manera que es pot utilitzar una gran varietat de llenguatges de programació.

Aquests llenguatges són:

  • Python
  • Basic
  • Java
  • C++

Un cop s'ha realitzat la extensió aquesta s'ha d'empaquetar seguint unes normes establertes.

Un cop més o menys ja tenim una idea de que són les extensions, que és UNO?

UNO (Universal Network Objects) és el component model d'OpenOffice. Ofereix interoperabilitat entre els llenguatges de programació que hem anomenat anteriorment, altes models de components i arquitectures de hardware.

Els components d'UNO s'implementen i s'accedeixen amb un binding del llenguatge escollit i un bridge.


L'únic problema que hi ha per desenvolupar extensions mitjançant aquest mètode és que només les noves versions d'OpenOffice el suporten, les 2.x.

Demà començaré a investigar com realitzar una petita demostració de com es fa una extensió.


Etiquetes de comentaris:

1º Reunió PFC

Avui he fet la primera reunió del PFC.

El projecte tractarà sobre el desenvolupament de l'aplicació Moodle.

I doncs, que és el Moodle??
Moodle is a course management system (CMS) - a free, Open Source software package designed using sound pedagogical principles, to help educators create effective online learning communities. You can download and use it on any computer you have handy (including webhosts), yet it can scale from a single-teacher site to a 50,000-student University. This site itself is created using Moodle, so check out the Moodle Demonstration Courses or read the latest Moodle Buzz

Inicialment ara no tocarem res del Moodle i ens centrarem amb el desenvolupament d'un plugin per a OpenOffice.

L'OpenOffice és un clon del mític Microsot Office:

L'OpenOffice.org 2.0 és la primer paquet ofimàtic de programari lliure que permet treballar amb el format OASIS Open Document Format for Office Applications (OpenDocument). L'OpenDocument és un format de document XML desenvolupat per OASIS, l'organisme internacional pel desenvolupament d'estàndard d'e-Business. Podeu utilitzar el format OpenDocument sense por de dependre de cap venedor o producte informàtic concret.

El paquet ofimàtic incorpora una base de dades relacional (Base) per completar el processador de textos (Writer), el full de càlcul (Calc), el gestor de presentacions (Impress) i l'eina de dibuix (Draw).

Gràcies a la nova interfície d'usuari, l'OpenOffice.org 2.0 és més fàcil d'aprendre i d'utilitzar per part dels usuaris menys experimentats i és significativament més compatibles amb els documents del Microsoft Office. L'OpenOffice.org 2.0 funciona sobre Microsoft Windows, GNU/Linux, Sun Solaris i això permet a l'usuari una millor flexibilitat a l'hora d'escollir la seva plataforma de treball.

Ara és el moment d'investigar com es desenvolupa un plugin per a OpenOffice.

Etiquetes de comentaris: ,