Tyding up Strigi analyzers
As you may know, KDE4 will use Strigi for meta information extraction instead of the old KFilePlugin classes.
Since Strigi’s analyzer work in a different way, lot of code has to be ported. Unfortunately, after a good start, some relevant analyzers were still missing.
But in the last weeks Strigi gained support of:
- wave file
- avi files
- txt files
- dds files
- rgb files
- sid files
- ico files
I’ve also updated this summary page. As you can see there’s still some work to do, but don’t worry… I’ll try to do the best ;)
flashblock
Back in Fürth
KDE Project:
After almost one month, we're finally back in Bavaria. First I picked up my wife in Berlin, where she had a week of vacation. Then visited Rostock for almost 2 weeks and then drove back to Berlin on 26th where my mother married. Then we celebrated new year in the lovely St. Joseph's hospital because Felix got really, really sick and we had to wait over an hour for the blood values and it happened to be the midnight.
But meanwhile Felix is pretty much fine again. Just that he left his viruses on my throat, so now both our voices are pretty hoarse. Just that I can use all kind of medicine and Felix is getting warm milk all day and night (*shudder*)
But that boy got BIG:

The laughing cow
Went on a short visit to Dublin. Arrived totally knackered but went to a party. Felt like the sadly decorated christmas tree. When they put a red drink in front of me I took two sips and had to give up. Fortunately got a lift. The next two days I fainted at 8pm, but then I was fit on Tuesday to make my way to the pub. Arrived there after 1,5 h only to find out that I got the wrong one.
Lep' Inn doesn't really sound like Galloping Green, I suppose. My pub companions spotted me on the street though and like a remote controlled robot I was directed to the car and taken to the first pub. Then there was a second and a third where we played billard expertly. The next pubs' bouncers didn't allow us in for some reasons. So the others went on to someone's home. But I was too afraid to join them. My taxi driver nearly run a guy over, but I did arrive at the hotel. When I made my way to the aircoach the next day the sun was shining and there were many seagulls on the river and I didn't want to leave. But now I'm back and went Christmas shopping. What a yearly horror. Bought 5 presents, 2 out of which are for myself. Am curious about this book about the teddy bear who is put behind bars and interrogated. Liked the cover. It says it's not for everyone. Doesn't that sound promising?
MDC presentations available
Web Service Management On Rails
In the first one, WS-Management On Rails, covers the beauty of accessing WS-Management and WS-CIM functionality through Ruby. The code follows the DMTF Technologies Diagram and consits of- rcim for the CIM Infrastructure layer This implements the CIM metamodel of classes, properties and qualifiers.
- mofgen to generate WS-CIM bindings Mofgen is an extension to the Cimple MOF parser. It generates Openwsman client bindings for CIM classes from the class description contained within a MOF file.
- rwscim for the CIM Schema class hierachy This puts a wrapper around the bindings generated by mofgen, makes them available as a single Ruby module and ensures the correct class hierachy.
Web Service Management Application Enablement
Web Service Management Application Enablement is about using WS-Management as a transport layer for remote application access. Instead of implementing a separate daemon, protocol and data model, riding the WS-Management horse gives all of this almost for free. And its more secure. The dynamic plugin model provided on the Openwsman server side makes this particularly easy. The presentation shows how to plan and implement such a plugin and gives two examples. openwsman-yast for a simple, RPC-type approach and openwsman-hal which follows the WS-Management resource model.
Back to the binaries! Yeah!
Back to the binaries! Yeah!
After all this XML work the binary file formats are a different world. For the fields work I needed to analyze the “form field” structure of the binary .DOC format:
The header: Actually a misused PICT structure:
| b10 | b16 | field | Type | size | bitfield | comments |
| 0 | 0 | lcb | U32 | | | Count of bytes of the whole block. |
| 4 | 4 | cbHeader | U16 | | | Always 0x44 |
| 6 | 6 | | U8[62] | | | Contains zero. In fact this is the PICT struct, but since its not need we can fill it with zeros. |
The formfield payload (Unicode Variant)
| b10 | b16 | Field | Type | size | bitfield | comments |
| 0 | 0 | cUnicodeMarker | U8[32] | | | Contains {0xFF,0xFF,0xFF,0xFF} |
| 4 | 4 | fftype | U8 | :2 | 03 | Type: 0 = Text 1 = Check Box 2 = List |
| | | ffres | U8 | :5 | 7C | Result field for a form field. Values from 0 to N-1, where N is the number of \ffl entries. In case of check boxes: 0==unchecked; 1==checked. |
| | | ffownhelp | U8 | :1 | 80 | 1 if there is associated Help text, 0 otherwise. |
| 5 | 5 | ffownstat | U8 | :1 | 01 | 1 if there is associated status line text, 0 otherwise. |
| | | ffprot | U8 | :1 | 02 | 1 if this field is protected, 0 otherwise. |
| | | ffsize | U8 | :1 | 04 | Type of size selected for check box field: 0 = Auto 1 = Exact |
| | | fftypetxt | U8 | :3 | 38 | Type of text field: 0 = Regular text 1 = Number 2 = Date 3 = Current date 4 = Current time 5 = Calculation |
| | | ffrecalc | U8 | :1 | 40 | 1 if the field should be calculated on exit, 0 otherwise. |
| | | ffhaslistbox | U8 | :1 | 80 | 1 if this field has list box attached to it, 0 otherwise. |
| 6 | 6 | ffmaxlen | U16 | :15 | 7FFF | Number of characters for text field. Zero means unlimited. |
| | | | U16 | :1 | 8000 | Unknown. Set to zero. |
| 8 | 8 | ffhps | U16 | | | Check box size (half-point sizes). |
| 10 | A | xstz_ffname | Xstz_UString0 | | | Form field name |
| | | xstz_ffddeftext | Xstz_UString0 | | | Default text for field. Only if type==0. |
| | | ffdefres | U16 | | | Default resource for list field. Default value for check box (0=default unchecked; 1=default checked). Only if type!=0. |
| | | xstz_ffformat | Xstz_UString0 | | | Format for text field |
| | | xstz_ffhelptext | Xstz_UString0 | | | Help text |
| | | xstz_ffstattext | Xstz_UString0 | | | Status line text |
| | | xstz_ffentrymcr | Xstz_UString0 | | | Macro to execute upon entry into this form field |
| | | xstz_ffexitmcr | Xstz_UString0 | | | Macro to execute upon exit from this form field |
| | | cUnicodeMarker2 | U8[2] | | | Contains {0xFF, 0xFF}; Padding and/or indicator for Unicode? |
| | | fflLen | U32 | | | Num of ffls |
| | | ffl | Xstz_UString[fflLen] | | | Resource string for lists. |
An Xstz_UString has the following form:
| b10 | B16 | Field | type | size | bitfield | Comments |
| 0 | 0 | Len | U16 | | | Len of the String. |
| 2 | 2 | Unicode char | U16[len] | | | Unicode chars |
An Xstz_UString0 has the following form:
| b10 | B16 | Field | type | size | bitfield | Comments |
| 0 | 0 | len | U16 | | | Len of the String. |
| 2 | 2 | Unicode char | U16[len] | | | Unicode chars |
| 2+2*len | | Zero | U16 | | | Trailing “0” |
In case of non-Unicode encoding then the Unicode Marker disappear and the string chars have U8 size.
You might also want to take a look at the ffData element in OOXML ;-)
Report from Management Developers Conference
About Management Developers Conference
Management Developers Conference (ManDevCon, MDC) is the annual conference of the Distributed Management Task Force (DMTF).
The DMTF is the leading industry organization for interoperable management standards and initiatives
. Mostly known for their Common Information Model (CIM) and the Web Services for Management (WS-Management) standards.
The full conference schedule can be viewed here.
I already had the opportunity to attend this conference last year. This year, I was accepted as a speaker with two presentations about WS-Management.
Conference overview
The conference has three blocks, one for learning ('university day'), one for demo and interop ('interop lab') and one for presentations.
It was interesting to see how the conference topics changed year over year. Last year, protocols and APIs were still under discussion. In 2006, the WS-Management and WSDM (OASIS Web Services Distributed Management) protocols were still competing. This year, working implementations of various standards dominated.
From a protocol perspective, WS-Management is the clear winner with virtually every systems vendor showing implementations. Microsofts adaption of WS-Management for all remote management on Windows (WS-Management comes build into Vista and is available as an add-on to Server 2003 and XP) was probably the driving force here. Openwsman, an open source implementation of WS-Management provided by Intel, is also picked up by lots of embedded vendors.
The interop lab revolved around implementations for CDM, DASH and SMASH.
CDM, the Common Diagnostic Model, is a CIM extension for diagnostic instrumentation. Its primary use is for vendor-agnostic remote health evaluation for hardware. Hewlett-Packard uses this extensively for their systems and requires each of their component suppliers for test routines available through CDM.
DASH (Desktop and mobile Architecture for System Hardware) and SMASH (Systems Management Architecture for Server Hardware) target management and monitoring of hardware components based on the WS-Management protocol.
Attended presentations
- Opentestman
- ITSM and CIM
- Using the CIM Statistical Model to Monitor Datapresentation
- CIM Policy Language
- Nagios through CIM
- Cimple and Brevity
- Management Frameworks
- openwsman
- full compliance to the specification (The current WS-Management specification is still not final)
- WS-Eventing (asynchronous indications, for alerting etc.)
- A binary interface to sfcb (to connect to cim providers without a cimom)
- better support for embedded devices
- Filtering (CQL, cimom query language; WQL, WS-Management query language, xpath, xml query language)
Opentestman is validation test suite for ws-man, ws-cim and dash-1.0. Its a (wild) mixture of bash scripts and java based utility tools. Tests are described in xml-based 'profile definition documents' (PDD), making the tests data-driven. It currently covers all mandatory and recommended features of the WS-Management and WS-CIM standards. More than 160 test cases exist for all 14 DASH 1.0 profiles. [DASH 1.1 was released early December]
[Hallway discussions showed, that the current implementation of Opentestman is in urgent need of refactorization. So don't look too close at the code or it might hurt your eyes.]
ITSM, Information Technology Service Management, can be described as managing the systems management. The presentation gave an overview on existing technologies and asked for participation to model this topic in CIM. Currently, several (policy/modeling) standards exist for this topic, e.g. Cobit (Control Objectives for Information and Related Technology; mostly US, covering business and process mgmt), ITIL (Information Technology Infrastructure Library; mostly Europe, covering service and process mgmt) and CIM (resource mgmt). IT process management has seen a big push recently. Lots of tools and companies appeared in the last couple of years offering services.
With SML, a service modeling language exists. Other areas like availability management, performance/capacity management or event/incident/problem management do not have any established standard.
Brad Nicholes from Novell showed recent work to integrate existing open source solutions (using non-standard models and protocols) with CIM.
Ganglia, a "scalable distributed monitoring system for high-performance computing systems such as clusters and Grids" uses rrdtool (round robin database tool) to view stastistical data with different granularity.
One feature of Ganglia is to provide trending information (as opposed to simple alerting) to support capacity planning.
Ganglia consists of a statitics gathering agent (gmond) running on every client. These agents are grouped in clusters, sharing all information within the cluster to ensure failover capabilities. The statistics aggregation agents (gmetad) run on specific managment servers, reporting to an apache web frontend.
Brad has defined a CIM model and implemented CIM providers to access the data. Its basically rrdtool access, thereby drastically reducing the amount of data transported over CIM.
This was a report from the DMTF policy working group defining CIM-SPL.
SPL, the simplified policy language, defines more than 100 operators to express relations (examples given: os 'runsOn' host, os 'hasA' firewall) and actions (Update of CIM properties, execution of CIM methods).
There exists a cli tool and an Eclipse plugin for developing and testing policies. The Apache Imperius project is about to release a sample implementation. Similar plans exist for the Pegasus CIMOM.
This was another example of bringing open source, but non-standard implementations and CIM together.
Nagios is a very popular monitoring and alerting framework. It comes with a rich set of data gathering plugins, available on nagiosexchange.org.
Intel has developed an adapter layer to expose Nagios data through CIM. One can also mix a traditional CIM provider with a Nagios plugin, filling only particular properties from the plugin.
The source code is not available publically (yet...).
Cimple and Brevity are code generator tools making it easier to develop CIM providers and tools. Cimple is a CIM provider generator. It takes a CIM class description (MOF file) as input and generates stubs for a CMPI provider. This way, a developer does not have to fight with the provider API but can concentrate on the instrumentation part. [The amount of code generated is still huge. For SLE11, Python providers are the better choice for most cases.]
Brevity tries to ease writing client tools. For people developing in C or C++, Brevity is worth a look.
[For modern scripting languages, better bindings exist. E.g powerCIM for Python and rwscim for Ruby.]
This talk was meant as a call for help to collaborate on a client framework standard. There are sufficient standards and implementations for getting instrumenting managed devices. But on the management application side, everyone reinvents the wheel.
Mergers drive this on the side of traditional (closed source) vendors, else they end up with lots of different APIs.
The proposed 'integrated framework and repository for end-to-end device view' consists of an 'agent tier' (instrumentation), a 'service tier' (see below) and an 'application tier' (API for management applications).
Services can be divided into infrastructure (discovery, collectors (caching), notifications) and core services (data model, topology, policy, scheduling, security, framework service management, domain specific services).
This is ongoing work sponsored by Sun Microsystems looking for further participation.
Openwsman is an open source implementation of the WS-Management and WS-CIM protocol standards. Its currently at version 1.5.1 with 1.6.0 scheduled for end of year and 2.0 end of march '08.
It consists of a generic library, a client library and a server library and daemon. The daemon can be used in parallel to existing CIMOM implementations, translating between WS-CIM and CIM/XML. The mod_wsman plugin for Apache provides co-existance of WS-Management and the Apache web server through the same port.
Main features for next years 2.0 release are
Making a hash of it
It's true that The Economist oversimplified what hashing functions do and understated how difficult it is to find collisions. Still, for people who don't program, writing a program to find a one-in-one-thousand collision is no more or less baffling than finding a one-in-one-hojillion collision. So, even if such simplifications make more technically astute readers cringe, the simplifications were necessary for the majority of its readership.
For those for whom simplified discussion of hash collisions is too esoteric, I offer you instead this link to a story about the rights of poop-eating worms.
How to create a favicon for your site
Favicon is a 16×16 bitmap in Microsoft icon resource file format. There are a lot of tools available to create a favicon.ico. I used GIMP, which is available for any linux/unix system or can be downloaded from http://www.gimp.org and can be also used on windows. So, first step is to rescale your image to 16x16 pixels and save your rescaled image in pnm or ppm format. Using the command line utility ppmtowinicon which is part of Netpbm package you can obtain the favicon:
ppmtowinicon -output favicon.ico \<inputfile.pnm | inputfile.ppm\>
The other method is to use convert command which is part of ImageMagick package. Since almost all Linux distributions install ImageMagick by default, all you need to generate your own favicon.ico is a shell access to a Linux box:
convert file.jpg -resize 16x16! favicon.ico
All you need now is to copy favicon.ico in your web site root folder and add to your webpage next line, to the \<head> section:
\<link rel="Shortcut Icon"
href="http://www.yourdomain.com/favicon.ico"\>
That's all.
openSUSE Factory
KDE Project:
One picture is worth more than 10 words, but that's the limit for a blog entry :)
