Archives for: June 2005, 14
06/14/05
In januari namen Cindy De Smet en Erwin van Hunen, bekend van de Podcasting-software Doppler, het initiatief om een Geek Dinner te organiseren in Gent. Toen al gingen er stemmen op om ook eens een Blog Dinner te organiseren, afgestemd op bloggers
Vandaag kreeg ik onderstaand berichtje in mijn mailbox.
Beste Mijnheer Dedecker,
U zal waarschijnlijk intussen al op de hoogte zijn dat ICTO, in overleg met de decanen, DOWA en de Academisch Beheerder, als tijdelijke oplossing en in afwachting van een studentenportaal waarop een door de studentenvertegenwoordigers beheerde infosite thuis hoort, voor de faculteiten PPW, Ingenieurswetenschappen en LW een *"Studentenvertegenwoordiging"* infosite heeft aangemaakt. Om de studenten maximaal te helpen en tijd te besparen hebben wij reeds de studenten per studiejaar in een groep gestoken.
(...)
*Wij zullen indien gewenst ook voor andere faculteiten een "studentenvertegenwoordiging" infosite openen op vraag van de decaan.
We zijn dus goed vertrokken! De infosite staat er al, heb ik gezien, doch voorlopig heeft enkel de Decaan de juiste permissies. We hopen dit op zo kort mogelijke termijn in orde te brengen zodat de FR-stuvers dit gezamenlijk kunnen beheren, meldingen online plaatsen, documenten ter beschikking stellen,... De andere faculteiten zouden normaal snel moeten volgen, alle stuvers in de GSR proberen dit reeds voor hun faculteit in orde te krijgen.
Je ziet ook dat er in die mail sprake is van een "studentenportaal". Uiteraard heb ik nagevraagd wat hiervan de bedoeling is, met volgend antwoord als gevolg:
Beste Peter
Hoever de plannen van de studentenadministratie staan ben ik van plan na te trekken maar de algemene beleidsbeslissing is eind december 2004 genomen ; het is dus zeker de bedoeling dit centraal te implementeren ( niet door ICTO) maar zoals U waarschijnlijk al weet is iedereen zwaar overwerkt en hebben de essenti
I implemented Python plugin loading this afternoon. It's almost finished, only calling functions does not work yet (thats only like 10 lines or so, but my eyes start to hurt). It's using the Python plugin base class I blogged about yesterday.
The code is far from perfect, it might leak like hell etc, but hey, it's working ;-) You can't debug or clean code that is not working at all :-)
Here's the current output of the test loader I wrote:
** (process:19360): DEBUG: Loading all modules in .libs ** (process:19360): DEBUG: Suffix for .libs/libtestplugin1.so is valid, loading module ** (process:19360): DEBUG: [OPluginManagerPlugin] [test-plugin1] Got an init function ** (process:19360): DEBUG: [test-plugin1] Init with data "test-init-data" ** (process:19360): DEBUG: Module .libs/libtestplugin1.so is valid, adding ** (process:19360): DEBUG: Suffix for .libs/libtestplugin2.so is valid, loading module ** (process:19360): DEBUG: Module .libs/libtestplugin2.so is valid, adding ** (process:19360): DEBUG: Loading all modules in . ** (process:19360): DEBUG: Suffix for ./TestPlugin.py is valid, loading module Creating new OPluginManagerPythonPlugin instance: PythonTest ** (process:19360): DEBUG: Module ./TestPlugin.py is valid, adding Found 3 modules ** (process:19360): DEBUG: Dumping module 0: ================================================ Dumping data for: .libs/libtestplugin1.so, type is "native" ================= * Name: test-plugin1 * Summary: A simple test plugin, full-featured * Description: This is a sample test plugin, to test the OPluginManager functionality, giving sample usage of all possibilities * Version: 0.1 * URI: http://www.eikke.com * Authors: ikke ----------- Email: eikke eikke com URI: http://www.eikke.com * Module got an init function * Module got a data free function * Module got a configure function ================================================ ** (process:19360): DEBUG: Dumping module 1: ================================================ Dumping data for: .libs/libtestplugin2.so, type is "native" ================= * Name: test-plugin2 * Summary: A simple, small test plugin * Description: This is a sample test plugin, to test the OPluginManager functionality. It only offers limited functionality * Version: 0.1 * URI: http://www.eikke.com * Authors: ikke ----------- Email: eikke eikke com URI: http://www.eikke.com John Doe ----------- Email: foo@bar.com URI: http://www.foobar.foo * Module got no init function * Module got no data free function * Module got no configure function ================================================ ** (process:19360): DEBUG: Dumping module 2: ================================================ Dumping data for: ./TestPlugin.py, type is "Python" ================= * Name: PythonTest * Summary: A little test plugin * Description: Some longer description of this test plugin * Version: 0.1 * URI: http://www.eikke.com * Authors: Ikke ----------- Email: eikke eikke com URI: http://www.eikke.com * Module got no init function * Module got no data free function * Module got no configure function ================================================ ** (process:19360): DEBUG: Deleting 3 modules ** (process:19360): DEBUG: [OPluginManagerPlugin] Freeing "test-plugin1" data ** (process:19360): DEBUG: [OPluginManagerPlugin] Running free function ** (process:19360): DEBUG: [test-plugin1] Freeing data "Test plugin 1 data" ** (process:19360): DEBUG: [OPluginManagerPlugin] Freeing "test-plugin2" data ** (process:19360): DEBUG: [OPluginManagerPlugin] No free function provided
As you can see, it loads 3 modules: 2 native (C) ones in .libs, one fully fledged, one minimal, and loads one Python plugin.
The Python plugin code is very simple, but can still offer almost the same flexibility as the C interface does:
from OPluginManagerPlugin import OPluginManagerPlugin, OPluginManagerPluginAuthor class TestPlugin(OPluginManagerPlugin): def __init__(self): tmpauthor = OPluginManagerPluginAuthor("Ikke", "eikke eikke com", "http://www.eikke.com") OPluginManagerPlugin.__init__(self, "PythonTest", "A little test plugin", tmpauthor, "Some longer description of this test plugin", "0.1", "http://www.eikke.com", self.Init, self.FreeData, self.Configure) def Configure(self): print "Configuring" def Init(self, init_data): print "Initializing with data \"" + init_data + "\"" return "testplugindata" def FreeData(self, data): print "Freeing \"" + data + "\"" def OPluginManagerPluginInit(): return TestPlugin()
I should learn how to work with Python lists etc to be able to implement multi-author functionality etc though.
I updated CVS heavily, so you can find (and checkout) all current code here. Please play around with it and let me know what you think of it (as a comment here or on the live.gnome wiki page), so I know what I should enhance, add,...
Oh, I got one more terrible exam today (part 2 of the one I got yesterday). Life's great :-p