Dataset versioning

The first feature complete version of my MarkLogic persistence layer for Orbeon Form Runner is available but as far as I know nobody is using it yet and it’s still time to think about what will happen for new versions.

Versioning dataset “schemes” is always hard.

I am using the term “scheme” to refer to both structures and conventions used to store and retrieve information.

I would have used  the term “schema” if it hadn’t different meaning depending on the technology  (SQL database schemas, XML schemas, RDF Schema, …) which are all part of what I am calling a “scheme” in this post.

By “dataset” I mean a set of data isolated by any mean one from each other for the application. Datasets is a logical concept which overlaps the concept of databases as defined by the different database implementations.

It’s a generic issue and if you take the example of WordPress which is powering this blog, most of its plugins include a mechanism to check that their database schemes is up to date with their versions and perform automatic upgrades when needed (see for instance the section called “Store the Plugin Version for Upgrades” and the following one in this article by Dave Donaldson).

This is most needed for applications such as WordPress where there the end user is often the administrator of his blog and enterprise applications usually have system administrators to deal with upgrades but still there might be something to borrow in this approach.

Like in a WordPress plugin, in most database application like my persistence layer, you have on one side the “program” (implemented in XQuery, pipelines or whatever for XML databases) and on the other side one or several “datasets”.

This persistence layer supports storing multiple “datasets” in a single database.

A use case for that could be for a provider to define a common dataset as a persistence layer for form definitions shared by different customers, a dataset per customer, a dataset for demonstration purposes, … All these datasets could be either in separate MarkLogic databases or in a single database.

There is currently a single version of the persistence layer and there is no possible mismatch by the XQuery modules which implement the REST API and the dataset schemes.

The situation might be different in a few months.

There might be for instance a version 2 implementing the optional features which haven’t been implemented yet. These features will likely rely on new documents properties added to the current ones and thus rely on a version 2 of the dataset scheme.

The current scheme relies on URIs to store application and form names and document types in a directory fashion. This seems the natural thing to do because that mirrors the URIs structures in the persistence layer specification. Other options could be to use MarkLogic collections or document properties to store this information and we might have decided to go this way in a version 3.

Our provider could then be in a situation where the dataset with the form definitions would still be in v1 (if it doesn’t use features added in v2, why should he migrate), the datasets with customer data would be in v2 and the dataset used for demo purposes would be testing v3.

Traditional approaches rely on upgrade scripts executed by system administrators which can be run through Roxy  which is the preferred deployment tool for MarkLogic applications such as this persistence layer.

In that case, system administrators need to carefully keep modules and dataset schemes versions synchronized and supporting multiple versions of modules for a single database can be tough even if the modules URIs can be versioned.

This is where the WordPress plugin approach may be useful.

What about adding some kind of metadata to each dataset to determine its version?

The URL rewriter would retrieve this information and choose the REST library options corresponding to a specific version to execute the right version of the modules.

An administrative REST API could easily be added to list datasets, display their metadata and perform datasets upgrades (and downgrades if available) and this REST API could be used by Roxy.

The idea of adding dataset metadata seems really powerful but what should such metadata include?

The minimum would be to identify applications using the datasets and their versions but what about adding more information, such as some kind of user readable documentation, URIs to additional documentation and resources, …

Proposing a vocabulary to define such information is an interesting exercise that I’ll be happy to do if needed but I can’t believe it has never been done…

If you are aware of something similar, please tell us!

Many thanks to Peter Kester (MarkLogic) for sharing his thoughts on the subject.

Share and Enjoy:
  • Identi.ca
  • StumbleUpon
  • del.icio.us
  • Facebook
  • Twitter
  • Add to favorites

Examplotron is moving on

The previous version was from 2003, more then ten years ago but Examplotron is still alive and I have just published a new version.

I do receive mails from people who use and like this lightweight XML schema language and John Cowan is among its supporters.

Transforming schemas, the enlightening talk he gave at Balisage earlier this month is based on an extended version of Examplotron schemas.

The extension consists in supporting default values through the use of square brackets: [this is a default value].

Technically speaking these default values are translated into RELAX NG annotations following the RELAX NG DTD Compatibility specification.

For his purposes John Cowan needs to be able to define default values for elements while the specification defines them for attributes only and that brings an interesting issue:

  • Should we use these standard annotations for attributes only and introduce annotations in another namespace for elements, creating a difference which is kind of artificial?
  • Should we rather use a non standard namespace for both element and attributes values, meaning that no existing tools would be able to recognize them?
  • Should we abuse the namespace defined in the specification and use the same annotations for both elements and attributes?

I personally find none of these alternatives satisfying but I have ended up by implementing the third one. After all you can already use your favorite editor to add these annotations on elements and there is no reason why Examplotron should block you to do the same!

It’s just your choice, take your risk and if you don’t feel comfortable with this feature… just don’t use it!

In addition to the support of default value, this release includes a fix reported by Ben Weaver in the handling of eg:occurs attributes.
 

Share and Enjoy:
  • Identi.ca
  • StumbleUpon
  • del.icio.us
  • Facebook
  • Twitter
  • Add to favorites

What’s next for XML?

Seems to be what’s next for XML time again!

As far as I remember working with XML, people have been discussing what was next for XML…

Back in 1999 -yes, that was last century!- when XML was only one year old there have been SML, announced on XML-DEV, developed on SML-DEV, forked into YAML which can be seen as a superset of JSON.

SML inspired Simon St.Laurent who published in 2000 the specification of a profile of XML called Common XML.

Refactoring suggestions blossomed again in late 2004 and I felt the need to write why I thought this was a bad idea.

The discussions went over and over and in 2008, Norman Walsh explained why he thought that was a bad idea.

At some point, I lost interest in such discussions and was awakened by James Clark’s MicroXML suggestion in December last year.

For Norman Walsh, the trigger appears to have been the MicroXML poster at XML Prague and he has answered with his own suggestions “XML v.next” as soon as he’s been back home from the conference.

These new proposals are cool and very tempting, but I don’t see what’s different from all those we’ve seen in the past and still think such efforts are very unlikely to succeed.

I feel comforted in this judgment by the feeling I had in XML Prague that the XML community has lost faith in the idea of “XML as new lingua franca for the Web”: in this context, these efforts look like desperate attempts to reshape an old technology so that it looks sexy again!

Does that mean that I see no future for XML?

In his first post about MicroXML, James Clark distinguishes three kind of works on XML (XML 2.0, XML.next and MicroXML).

XML.next (“something that is intended to be a more functional replacement for XML, but is not designed to be compatible“) seems to be both more interesting and more likely to happen to me.

James Clark also says:

XML.next is a big project, because it needs to tackle not just XML but the whole XML stack. It is not something that can be designed by a committee from nothing; there would need to be one or more solid implementations that could serve as a basis for standardization. Also given the lack of compatibility, the design will have to be really compelling to get traction. I have a lot of thoughts about this, but I will leave them for another post.

Last time he made this kind of promises, he was speaking of a better schema language and came with TREX, an ancestor of RELAX NG.

I am really curious and excited to see what he has in mind for replacing XML!

Share and Enjoy:
  • Identi.ca
  • StumbleUpon
  • del.icio.us
  • Facebook
  • Twitter
  • Add to favorites

XML Prague 2011 : XML à l’attaque du web

Salle de conférence pendant la pause café

Après une période un peu folle entre 2000 et 2008 pendant laquelle j’ai participé à un nombre impressionnant de conférences, je m’étais mis un peu en retrait et n’avais plus participé à aucune conférence depuis XTech 2008.

XML Prague 2011 était donc pour moi l’occasion de rencontrer à nouveau la communauté des experts XML internationaux et j’étais curieux de voir comment elle avait évolué pendant ces trois dernières années.

MURATA Makoto (EPUB3: Global Language and Comic)A côté des aspects plus techniques, je n’oublierai pas l’image de Murata Makoto exprimant sobrement sa peine pour les victimes du tremblement de terre au Japon.

La tagline de XML Prague 2011 était “XML devait être l’espéranto du Web. Pourquoi n’est-ce pas le cas?” (“XML as new lingua franca for the Web. Why did it never happen?”).

Michael Sperberg-McQueen (Closing keynote)Le contenu de la conférence est resté proche de cette ligne mais il a été résumé de manière plus exacte par Michael Sperberg-McQueen lors de sa clôture : “Mettons du XML dans le navigateur, qu’ils le veuillent ou non!”

Norman Walsh (HTML+XML: The W3C HTML/XML Task Force)Le ton a été donné par Norman Walsh dès la toute première présentation: la convergence entre HTML et XML n’aura pas lieu.

XML a tenté d’être un format neutre convenant aussi bien aux documents qu’aux données sur le web. On peut dire aujourd’hui que cet objectif n’a pas été atteint et que les formats les plus populaires sur le web sont HTML pour les documents et JSON pour les données.

Cela ne semble pas préoccuper plus que mesure le public de XML Prague composé d’aficionados des langages à balises : si la “masse des développeurs web” n’est pas intéressée par XML c’est son problème. Les bénéfices liés à XML sont bien connus et cela signifie simplement que la communauté XML devra développer les outils nécessaires pour utiliser XML dasn le navigateur aussi bien que sur le serveur.

Sur ce thème, beaucoup de présentations couvraient le support de XML dans le navigateur ainsi que les passerelles entre JSON et XML :

  • Validation XML Schema côté client par Henry S. Thompson and Aleksejs Goremikins
  • JSON pour XForms par Alain Couthures
  • XSLT dans le navigateur par Michael Kay
  • Traitement de XML efficace dans les navigateurs par Alex Milowski
  • XQuery dans le navigateur par Peter Fischer

Les outils côté serveurs ont fait l’objet de moins de sessions, peut être parce que le sujet est plus ancien :

  • Une façade JSON pour le serveur MarkLogic par Jason Hunter
  • CXAN: étude de cas pour Servlex, un framework XML pour le web par Florent Georges
  • Akara – “Spicy Bean Fritters” et services de données XML par Uche Ogbuji

Bien entendu, les standards étaient aussi au programme :

  • HTML+XML: la task force W3C HTML/XML (déjà mentionnée) par Norman Walsh
  • Standards update: XSLT 3.0 par Michael Kay
  • Standards update: XML, XQuery, XML Processing Profiles, DSDL par Liam Quin, Henry S. Thompson, Jirka Kosek

Ainsi que les applications de XML :

  • Configuration d’équipements réseau avec NETCONF et YANG par Ladislav Lhotka
  • Développements XML – XML Projects par George Bina
  • EPUB3: le langage et les bandes dessinées par Murata Makoto
  • EPUB: Chapitres et versets par Tony Graham
  • DITA NG – une implémentation Relax NG de DITA par George Bina

Sans oublier quelques présentations techniques sur les implémentations elles mêmes :

  • Traduction de SPARQL et SQL en XQuery par Martin Kaufmann
  • Réécritures déclaratives de XQuery pour le profit et le plaisir par John Snelson

Et la séance de clôture par le roi de cet excercice, Michael Sperberg-McQueen.

Ma présentation, “injection XQuery”, était assez atypique dans cet ensemble et il a fallu tout le talent de Michael Sperberg-McQueen pour lui trouver un point commun en faisant remarquer que pour avoir une chance de mettre XML sur le web il faudrait se préoccuper un peu plus de sécurité.

J’avais été impressionné lors des conférences XTech par l’évolution des techniques de présentation, la plupart des intervenants rejetant les traditionnelles présentation powerpoint et leurs “transparents” surchargés pour des alternatives plus légères et beaucoup plus imagées.

John Snelson (Declarative XQuery Rewrites for Profit or Pleasure)Je pensais ce mouvement inéluctable et ai été bien surpris de voir qu’il n’avait guère atteint les intervenants de XML Prague 2011 qui (à l’exception très notable de John Snelson) continuaient à utiliser powerpoint de manière très traditionnelle.

J’avais conçu ma présentation en suivant ce que je croyais être la technique de présentation devenue classique. Utilisant Slidy, j’avais pas moins de 35 pages très concises à présenter en 25 minutes. Chaque page avait une photo différente en arrière plan et ne comprenait que quelques mots.

Les commentaires ont été plutôt positifs bien que certaines photos d’injections aient choqué quelques participants.

Ma présentation étant du HTML standard, j’avais jugé plus sur d’utiliser l’ordinateur mis à disposition par les organisateurs. C’était sans compter sur les 74 Moctets d’images à charger pour les fonds de pages qui ont mis à mal cet ordinateur un peu poussif et les pages étaient un peu lentes à l’affichage (note personnelle : la prochaine fois, utilise ton ordinateur)!

The twitter wall (and Norman Walsh)Le “mur twitter” projeté au moyen d’un second vidéo projecteur a eu également beaucoup de succès.

Ce mur a été bien pratique pour communiquer pendant les sessions et il remplace avantageusement les canaux IRC que nous utilisions auparavant.

Twitter ne permet malheureusement pas de rechercher dans ses archives et, alors que j’écris ces mots, je ne peux déjà plus accéder aux tweets du premier jour de la conférence!

Avec un peu de recul, si j’essaye d’analyser ce qui s’est dit à XML Prague 2011, j’ai des sentiments mitigés à propos de ce fossé qui se creuse entre communautés Web et XML.

Le rêve que XML puisse être accepté par l’ensemble de la communauté des développeurs web était une vision très forte et nous ne devons pas oublier que XML a été conçu pour mettre “SGML sur le web“.

Ceci dit, il faut bien reconnaître que les développeurs web ont toujours été réticents devant la complexité additionnelle (réelle ou perçue) de XHTML. Ce fossé a toujours existé et après que XML ait manqué le virage du Web 2.0 il était trop tard pour espérer le combler.

XML sur le web restera donc une niche et continuera à être utilisé par une minorité, mais la créativité et le dynamisme de la communauté qui s’est manifesté à Prague est impressionnant et encourageant : il y a encore place pour beaucoup d’innovations et XML est, plus que jamais, une technologie de choix pour développer des applications web.

Photos

Share and Enjoy:
  • Identi.ca
  • StumbleUpon
  • del.icio.us
  • Facebook
  • Twitter
  • Add to favorites

XML Prague 2011: XML against the web

Coffee break

After a frenzy period between 2000 and 2008 where I have spoken at an impressive number of conferences, I temporally retired and hadn’t been at a conference since XTech 2008.

For me, XML Prague 2011 was the first opportunity to meet again face to face with the community of XML core techies and I was curious to find out what the evolution had been during the past three years.

MURATA Makoto (EPUB3: Global Language and Comic)Aside from all the technical food for thought, an image of the conference that I won’t forget is Murata Makoto expressing his grief for the victims of the earthquake in Japan with simple and sober terms.

The tag line of XML Prague 2011 was “XML as new lingua franca for the Web. Why did it never happen?”.

Michael Sperberg-McQueen (Closing keynote)The actual content of the conference has been close to this tag line but was better summarized by Michael Sperberg-McQueen during his closing keynotes: “Let’s put XML in the browser, whether they want it there or not!”

Norman Walsh (HTML+XML: The W3C HTML/XML Task Force)The tone was given by Norman Walsh during the very first session: the convergence between HTML and XML will not happen.

XML has been trying hard to be an application neutral format for the web that could be used both for documents and data. It is fair to say that it has failed to reach this goal and that the preferred formats on the web are HTML for documents and JSON for data.

That doesn’t seem to bother that much the XML Prague attendees who are markup language addicts anyway: if the “mass of web developers” do not care about XML that’s their problem. The benefits of using XML is well known and that just means that we have to develop the XML tools we need on the server as well as on the browser.

Following this line, many sessions were about developing XML support on the browser and bridging the gaps between XML and HTML/JSON:

  • Client-side XML Schema validation by Henry S. Thompson and Aleksejs Goremikins
  • JSON for XForms by Alain Couthures
  • XSLT on the browser by Michael Kay
  • Efficient XML Processing in Browsers by Alex Milowski
  • XQuery in the Browser reloaded by Peter Fischer

By contrast, server side tools have been less represented, maybe because the domain had been better covered in the past:

  • A JSON Facade on MarkLogic Server by Jason Hunter
  • CXAN: a case-study for Servlex, an XML web framework by Florent Georges
  • Akara – Spicy Bean Fritters and XML Data Services by Uche Ogbuji

Of course, standard updates were also on the program:

  • HTML+XML: The W3C HTML/XML Task Force (already mentioned) by Norman Walsh
  • Standards update: XSLT 3.0 by Michael Kay
  • Standards update: XML, XQuery, XML Processing Profiles, DSDL by Liam Quin, Henry S. Thompson, Jirka Kosek

We also had talks about XML applications:

  • Configuring Network Devices with NETCONF and YANG by Ladislav Lhotka
  • Advanced XML development – XML Projects by George Bina
  • EPUB3: Global Language and Comic by Murata Makoto
  • EPUB: Chapter and Verse by Tony Graham
  • DITA NG – A Relax NG implementation of DITA by George Bina

Without forgetting a couple of implementation considerations:

  • Translating SPARQL and SQL to XQuery by Martin Kaufmann
  • Declarative XQuery Rewrites for Profit or Pleasure by John Snelson

And the traditional and always impressive closing keynote by Michael Sperberg-McQueen.

My own presentation, “XQuery injection”, was quite atypical and it took all the talent of Michael Sperberg-McQueen to kindly relate it to “XML on the web” by noticing that security would have to be taken more seriously to make it happen.

One of the things that had impressed me during XTech conferences was the shift in presentation styles, most speakers moving away from heavy bullet points stuffed traditional powerpoint presentations to lighter and better illustrated shows.

John Snelson (Declarative XQuery Rewrites for Profit or Pleasure)I had expected the move to continue and have been surprised to see that the movement doesn’t seem to have caught XML Prague presenters whom continued to do with traditional bullet points with only a couple of exceptions (John Snelson being a notable exception).

I had worked my presentation to use what I thought would be a common style. Using Slidy, I had created no less than 35 short pages to present in 25 minutes. Each page had a different high resolution picture as a background and contained only a few words.

The comments have been generally good even though some pictures chosen to represent injections seem to have hurt the feelings of some attendees.

Since my presentation is just standard HTML, I had been brave enough to use the shared computer. Unfortunately, the presentation loads 74 Megs of background pictures and that was a little bit high for the shared computer that took several seconds to change pages (note to self: next time, use your own laptop)!

The twitter wall (and Norman Walsh)Another interesting feature of this conference was the “twitter wall” that was projected in the room using a second video projector.

This wall has proven to be very handy to communicate during the sessions and it can be seen like a more modern incarnation of the IRC channels used in earlier conferences.

Unfortunately, twitter doesn’t allow to search in archives and while I am writing these words, I can no longer go back in the past and read the tweets of the first day of the conference.

Looking backward at the conference, I have mixed feelings about this gap that now seems to be widely accepted on both sides between the XML and the web developers communities.

The dream that XML could be accepted by the web community at large was a nice vision and we should not forget that XML has been designed to be “SGML on the web“.

Web developers have always been reluctant to accept the perceived additional complexity of XHTML and the gap has been there from the beginning and after XML missed the train of Web 2.0 it was too late to close it.

XML on the web will stay a niche and will be used by a minority but the creativity and dynamism of the community shown at Prague is inspiring and encouraging: there is still room for a lot of innovation and XML is more than ever the technology of choice to power web applications.

All the pictures

Share and Enjoy:
  • Identi.ca
  • StumbleUpon
  • del.icio.us
  • Facebook
  • Twitter
  • Add to favorites

Notes de migration de Gallery 2 vers WordPress et NextGEN Gallery

Quelques notes rapides prises lors de la migration de mes albums Gallery 2 vers le plugin WordPress NextGEN Gallery

Attention : les manipulations de bases de données décrites ici sont dangereuses et il n’y a aucune garantie qu’elles fonctionnent pour vous!

La première différence est terminologique :

  • Gallery gère une “galerie” qui est la racine de votre collection de photos et est composée d’albums pouvant être imbriqués les uns dans les autres (les albums sont composés de photos et d’albums).
  • NextGEN Gallery gère des “galeries” photos qui sont des ensembles de photos ne pouvant pas être imbriquées les uns dans les autres mais peuvant être groupées dans des “albums” qui peuvent, eux, être imbriqués les uns dans les autres (les galeries sont uniquement composées de photos et les albums sont composés de galeries et d’albums).

Cette différence se retrouve au niveau de la structure des répertoires, puisque les albums de Gallery forment physiquement une structure arborescence sur le système de fichier alors que les galeries de NextGEN Gallery sont toutes aux même niveau et que ses albums ne sont pas matérialisés sur le système de fichier (ils sont virtuels et n’existent que dans la base de données).

Mes albums Gallery avaient tous, c’est une chance, des noms uniques. J’ai donc simplement “aplati” la structure de fichiers après transfert dans wp-content/gallery et utilisé l’interface d’administration de WordPress pour créer les galeries à partir des répertoires que je venais de transférer.

Le nombre d’albums étant limité, je n’ai pas cherché à migrer leur définition et les ai également recréé manuellement dans l’interface d’administration.

Je voulais par contre éviter de perdre les métadonnées associées aux photos et c’est à ce niveau qu’il m’a fallu faire preuve d’un peu de “geekerie”!

J’ai commencé par examiner la base de données Gallery 2 (qui dans mon cas était gérée par MySQL) pour exporter ces métadonnées en XML :

vdv@dedibox4:/var/lib/wordpress_vdv/wp-content/gallery$ mysql -uroot -pXXXX --default-character-set=utf8 -X gallery2_vdv > /tmp/images.xml <<EOF
select 
	e.g_id,
	i.g_description,
	i.g_keywords,
	i.g_summary,
	i.g_title,
	f.g_pathComponent,
	fp.g_pathComponent,
	iam.g_orderWeight
from 
	g2_Entity e,
	g2_Item i, 
	g2_FileSystemEntity f,
	g2_ChildEntity ce,
	g2_FileSystemEntity fp,
	g2_ItemAttributesMap iam
where 
	e.g_entityType = "GalleryPhotoItem"
	and e.g_id = i.g_id 
	and e.g_id = f.g_id
	and e.g_id = ce.g_id
	and e.g_id = iam.g_itemId
	and fp.g_id = ce.g_parentId
order by fp.g_pathComponent,  iam.g_orderWeight;
EOF

A noter :

  • L’option “-X” pour formatter les données en XML
  • L’option “–default-character-set=utf8” indispensable dans mon cas pour éviter que MySQL n’insère des caractères ISO-8859-1 dans un document XML sans déclaration d’encodage!

Le document XML obtenu est de la forme :

<?xml version="1.0"?>

<resultset statement="select 
    e.g_id,
    i.g_description,
    i.g_keywords,
    i.g_summary,
    i.g_title,
    f.g_pathComponent,
    fp.g_pathComponent,
    iam.g_orderWeight
    from 
    g2_Entity e,
    g2_Item i, 
    g2_FileSystemEntity f,
    g2_ChildEntity ce,
    g2_FileSystemEntity fp,
    g2_ItemAttributesMap iam
    where 
    e.g_entityType = &quot;GalleryPhotoItem&quot;
    and e.g_id = i.g_id 
    and e.g_id = f.g_id
    and e.g_id = ce.g_id
    and e.g_id = iam.g_itemId
    and fp.g_id = ce.g_parentId
    order by fp.g_pathComponent,  iam.g_orderWeight" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <row>
        <field name="g_id">22909</field>
        <field name="g_description" xsi:nil="true" />
        <field name="g_keywords" xsi:nil="true" />
        <field name="g_summary" xsi:nil="true" />
        <field name="g_title">dsc00001</field>
        <field name="g_pathComponent">aaa.jpg</field>
        <field name="g_pathComponent">011120-Forum-XML-2001</field>
        <field name="g_orderWeight">1000</field>
    </row>
    
    <row>
        <field name="g_id">22913</field>
        <field name="g_description" xsi:nil="true" />
        <field name="g_keywords" xsi:nil="true" />
        <field name="g_summary" xsi:nil="true" />
        <field name="g_title">dsc00002</field>
        <field name="g_pathComponent">aab.jpg</field>
        <field name="g_pathComponent">011120-Forum-XML-2001</field>
        <field name="g_orderWeight">2000</field>
    </row>
    
    ...
    
</resultset>

A partir de ce document XML, j’ai ensuite écrit une transformation XSLT 2.0 pour générer les instructions SQL insérant les données correspondantes dans la base de données WordPress / NextGEN Gallery.

Pour cela, il faut créer les tags en insérant des lignes dans les tables wp_terms et wp_term_taxonomy :

insert into wp_terms (name, slug) values ("albatros d'amsterdam", "albatros d'amsterdam");
insert into wp_term_taxonomy (term_id, taxonomy, parent, count) select term_id, 'ngg_tag', 0, 0 from wp_terms where name = "albatros d'amsterdam";                  

Associer les tags aux photos et incrémenter les compteurs adéquats :

insert into wp_term_relationships (object_id, term_taxonomy_id, term_order) 
    select pid, term_taxonomy_id, 1
        from 
            wp_ngg_gallery g,
            wp_ngg_pictures p,
            wp_terms t,
            wp_term_taxonomy taxo
        where
        	p.galleryid = g.gid
        	and t.term_id = taxo.term_id
        	and g.title = "amsterdam-vrac"
        	and p.filename = "crop0011.jpg"
        	and t.name="albatros d'amsterdam";
update wp_terms t, wp_term_taxonomy taxo set count = count + 1 where t.term_id = taxo.term_id and t.name="albatros d'amsterdam";               

Et enfin, mettre à jour les photos elles mêmes :

update
	wp_ngg_gallery g,
	wp_ngg_pictures p
set
	p.image_slug = "dsc00001",
	p.description = "dsc00001",
	p.alttext = "dsc00001",
	p.sortorder = 1
where
	p.galleryid = g.gid
	and g.title = "011120-Forum-XML-2001"
	and p.filename = "aaa.jpg";

A noter que je me suis appuyé, là aussi, sur le fait que mes galeries ont des noms uniques et que l’on peut donc identifier les photos à partir de leur nom de fichier et du nom de leur galerie.

La transformation utilise bien entendu le template nommé décrit dans mon billet précédent.

Vous pouvez la télécharger si vous voulez y jeter un coup d’œil.

Une fois la migration achevée, il faut encore veiller à gérer les redirections (cool uris don’t change…), ce que j’ai fait ç grand coups d’expressions régulières :

RedirectMatch	301	^/gallery/				http://eric.van-der-vlist.com/blog/gallery/?
RedirectMatch	301	^/gallery2/v(/[^/]*)*(/[^/]*/[^/]*\.(jpg|JPG|png))	http://eric.van-der-vlist.com/blog/wp-content/gallery$2?
RedirectMatch	301	^/gallery2/v/(.*)/(slideshow\.html)	http://eric.van-der-vlist.com/blog/gallery/$1/?
RedirectMatch	301	^/gallery2/v/(.*)			http://eric.van-der-vlist.com/blog/gallery/$1?
RedirectMatch	301	^/gallery2/				http://eric.van-der-vlist.com/blog/gallery/?
Share and Enjoy:
  • Identi.ca
  • StumbleUpon
  • del.icio.us
  • Facebook
  • Twitter
  • Add to favorites

Entreprise 2.0, serions nous déjà demain?

J’ai déjeuné aujourd’hui avec Christian Fauré qui fait partie des membres fondateurs de notre planète XMLfr et que je ne connaissais encore que par Internet interposé.

Christian est responsable d’une cellule SaaS (Software As A Service) chez Atos-Origin, une situation idéale pour observer l’impact du Web 2.0 dans les grands groupes.

Il affirme que le bouleversement que j’avais prévu il y a bientôt deux ans dans mon billet Web 2.0 et entreprises 1.0 est en de se produire même si ce n’est pas pour les raisons que j’évoquais.

Ce n’est tant par le biais des usages que cette révolution a commencé que par celui de réduction de coûts. Et cette réduction de coûts qui était le deuxième facteur que j’envisageais dans mon billet ne porte pas tant sur l’utilisation de logiciels libres ou de méthodes agiles que sur l’externalisation de logiciels sous forme de services.

Quel est le lien entre SaaS et Web 2.0?

Ce lien est multiple et porte sur les trois volets du Web 2.0 tels que je les ai décrits :

  • c’est le volet social du Web 2.0 et la convivialité retrouvée sur le Web qui rend acceptable l’externalisation sous forme de services de logiciels à forte interaction avec les utilisateurs tels que les suites bureautiques;
  • le concept de SaaS est indissociable du volet architectural du Web 2.0 qui consiste à considérer le Web comme une plateforme;
  • SaaS s’appuie sur le volet technique du Web 2.0 (XML, HTTP, REST, Ajax, …).

De plus, c’est l’expérience acquise en développant leurs applications Web 2.0 grand public qui donne leur crédibilité aux Google et autres Amazon qui sont aujourd’hui les acteurs incontournables de la lame de fond SaaS.

Si cette analyse se confirme, et je ne vois rien qui puisse l’infirmer, nous sommes à la veille d’une véritable industrialisation de l’informatique qui va profondément bouleverser les services informatiques des entreprises.

Il n’y a rien de très nouveau dans ce que j’expose ici, mais je ne pensais pas que cela se produirait aussi rapidement et que des grands groupes étaient en train de franchir le pas aujourd’hui même.

Share and Enjoy:
  • Identi.ca
  • StumbleUpon
  • del.icio.us
  • Facebook
  • Twitter
  • Add to favorites

Sun to buy the M from LAMP

Sun has announced their intention to buy MySQL, the number one database for web applications used both by Google et Amazon but also powering most of personal blogs.

Sun has considered that being the M from “LAMP” (Linux, Apache, MySQL, PHP) would be a good way step to be the “.” in “.com” as they used to say in one of their taglines.

This announce has and will be commented at large… Personally, I do hope that this will speed up a better support of XML by MySQL.

I had the opportunity to have a look at XML support in MySQL 5.1 for the chapters about databases in the book “Beginning XML” that I have co-written with Joe Fawcett (he covered SQL Server and wrote two sections about eXist and MySQL). My conclusion is that these features are a good start but there is still a lot of work between they reach something that can match modern databases!

Knowing the long term commitment of Sun to XML, I do hope that this will boost the developments of new XML features.

While we’re speaking of modern databases, one of the leaders in term of XML support is Oracle.

And today is also the date they’ve chosen to announce that they’re buying BEA. what’s the link between these two announcements? It’s a factor 8.5! It will cost $b 8.5 to Oracle to buy BEA and only $b 1 to Sun to buy MySQL.

I don’t want to underestimate the BEA’s business value, but it looks to me that in term of overall visibility and contribution to the net economy, the factor should be the other way round!

That’s probably a good illustration that it remains more difficult to monetize open source than commercial developments.

Share and Enjoy:
  • Identi.ca
  • StumbleUpon
  • del.icio.us
  • Facebook
  • Twitter
  • Add to favorites

Sun se paye le M de LAMP

Sun vient d’annoncer son intention d’acheter MySQL, la base de données qui est devenue la principale base de données des applications Web et est utilisée notamment par Google et Amazon mais également par le plupart des blogs.

Sun aura sans doute considéré qu’être le M de « LAMP » (Linux, Apache, MySQL, PHP) est sans doute un bon moyen d’être de « . » de « .com » pour reprendre une de leurs anciennes taglines!

Cette annonce sera sans doute amplement commentée. Pour ma part, j’espère que ce rachat signifiera un meilleur support de XML par MySQL.

J’ai eu l’occasion de me pencher sur le support de XML par MySQL 5.1 pour le chapitre consacré aux bases de données du livre « Beginning XML » que j’ai coécrit avec Joe Fawcett (je lui ai laissé le soin de présenter SQL Server et ai consacré deux sections à eXist et MySQL). Ma conclusion est que si ces fonctionnalités sont un bon début, il y a encore bien du chemin à faire pour que le support de XML par MySQL soit digne d’une base de donnés moderne.

Compte tenu de l’implication historique de Sun dans XML, j’espère que ce rachat va accélérer le mouvement.

Puisque nous parlons de base de données modernes, une des références en matière de support de XML est sans doute Oracle.

C’est également aujourd’hui que ce dernier annonce le rachat de BEA. Quel rapport y a t-il entre ces deux annonces? Le rapport est de 8,5! Il en coûtera 8,5 milliards de dollars à Oracle pour acquérir BEA alors que Sun ne déboursera qu’un petit milliard de dollars pour acheter MySQL.

Sans vouloir sous estimer la valeur de BEA, il me semble qu’en terme de visibilité et de contribution au Web et à la « nouvelle économie », le rapport devrait être dans l’autre sens!

C’est sans doute la preuve qu’il reste plus difficile de valoriser des développements de logiciels open source que des développements commerciaux.

Share and Enjoy:
  • Identi.ca
  • StumbleUpon
  • del.icio.us
  • Facebook
  • Twitter
  • Add to favorites