Search Results: "will"

7 February 2006

Mike Hommey: xulrunner 1.8.0.1-1

Checking Signature on .changes
(…)
Good signature on /home/mh/pbuilder/sid/result/xulrunner_1.8.0.1-1_i386.changes.
Checking Signature on .dsc
(…)
Good signature on /home/mh/pbuilder/sid/result/xulrunner_1.8.0.1-1.dsc.
Uploading via ftp xulrunner_1.8.0.1-1.dsc: done.
Uploading via ftp xulrunner_1.8.0.1.orig.tar.gz: done.
Uploading via ftp xulrunner_1.8.0.1-1.diff.gz: done.
Uploading via ftp libnspr4-dev_1.8.0.1-1_all.deb: done.
Uploading via ftp libmozjs-dev_1.8.0.1-1_all.deb: done.
Uploading via ftp libsmjs1_1.8.0.1-1_all.deb: done.
Uploading via ftp libsmjs1-dev_1.8.0.1-1_all.deb: done.
Uploading via ftp libxul-dev_1.8.0.1-1_all.deb: done.
Uploading via ftp libnss3-dev_1.8.0.1-1_all.deb: done.
Uploading via ftp xulrunner_1.8.0.1-1_i386.deb: done.
Uploading via ftp xulrunner-gnome-support_1.8.0.1-1_i386.deb: done.
Uploading via ftp libnspr4-0d_1.8.0.1-1_i386.deb: done.
Uploading via ftp libmozjs0d_1.8.0.1-1_i386.deb: done.
Uploading via ftp spidermonkey-bin_1.8.0.1-1_i386.deb: done.
Uploading via ftp libxul0d_1.8.0.1-1_i386.deb: done.
Uploading via ftp libnss3-0d_1.8.0.1-1_i386.deb: done.
Uploading via ftp xulrunner_1.8.0.1-1_i386.changes: done.
Successfully uploaded packages. I wonder how long it will take to the ftp-masters to accept it. It seems the NEW queue is not as fast as it used to be. It’s been a week I’ve been waiting for libxml2 and libxslt to get through, and they still haven’t made it. If enough people is interested in the package before it comes out of NEW, I’ll probably upload it in my repository. I have a patch for epiphany-browser that I’ll send soon to the BTS. I’ll come up with a patch for yelp as well. Then, bye bye mozilla-browser. I’m also going to build an unofficial firefox on top of xulrunner, and maybe upload it to experimental, so that we can have some feedback about that. I’ll see with Eric about that.

Erich Schubert: On "encrypting" (read: obfuscating) P2P: Please don't!

Recently there was a discussion on whether BitTorrent should get some encryption (or obfuscation, more likely) added. Right now, you can filter out BitTorrent traffic with the following iptables command (note: this needs iptables 1.3.4 and a recent kernel):
iptables -I OUTPUT -j DROP -m string --string "BitTorrent protocol" --algo bm --from 0 --to 100
(Note: match is not optimized, the range of 0 to 100 and algo bm is arbitrary) The nice thing is, that this match is very unlikely to match non-Bittorrent traffic. Linux users can use it to filter out all BitTorrent traffic or mark it for speed restrictions. Network operators are very interested in filtering this traffic: it slows down more important traffic (and if you are e.g. using stochastic fair queing, the large number of connections for P2P filesharing will make it get a larger share than other apps!) and can cause costs. If you have mobile users, who e.g. connect their laptop to your network, they will occasionally use BitTorrent at home, and forget to disable it when they connect to your network. That's really bad, it happens and it's not like this is intentional "malbehaviour" or "sabotage"! So back to the original topic - obfuscating BitTorrent traffic. Let me explain what network operators might do when BitTorrent can't be slowed or filtered any more (Note that this already applies to some services such as Skype or Kazaa as far as I know): First of all, they might decide to filter all connections to non-standard ports. This effectively eliminates (most of) filesharing - but also e.g. Skype and some IM and chat services. Basically any non-standard service. (Note that "professional" VoIP services using SIP may still be whitelisted). Secondly, they could decide to slow down all connections to non-standard ports. This would make filesharing, Skype, IM etc. still possible, but for example file transfers via IM will be really slow. No video via Skype, probably, depending on the limits set in traffic shaping. Thirdly, they could disable all outgoing connections and require you to use proxies for that. Then you need to enable/disable your proxy all the time when switching networks, and you'll only be able to use a limited set of services. Again, Telephony via SIP is still technically possible, using a SIP proxy or by whitelisteing major SIP providers. Skype is no longer possible. IM needs whitelisting, and will likely be blocked, too. None of these options are very favourable for the users. So please do not support "obfuscated" Protocols such as Kazaa or Skype, or an obfuscated variant of BitTorrent. Stick with stuff administrators can set up policies for - and be nice to your admins. Tunneling via non-standard ports, hiding services will only get you into trouble, and probably even make innocent other users suffer. After all, filesharing - especially illegal downloading movies and music - is not THAT important, is it? So please make the important services not suffer from it. Thank you. Oh, and please use SIP, not Skype. Because your admin can whitelist your SIP provider if you tell him you need it for work or setup a proxy for that - and with Skype, he might be afraid that you become a supernode and cause high traffic costs. And then there is a much larger software choice for SIP, including many OpenSource solutions, including PBX software such as Asterisk.

Zak B. Elep: Whirlwind < 48h Manila Tour

Heh, its been more than a day now since I got back from Manila after the Ubuntu AsiaBusinessTour, and even then I have some stuff to do here (both IRL and IOL work) before I could find some time to blog ;) Here are the highlights of my trip: I’ve adopted opendchub, rccp, and xshisen from Grzegorz Prokopski too :D Heh, I’ll be quite busy this coming week…

Eric Dorland: Firefox 1.5.0.1 and bug triage

I've just uploaded firefox 1.5.0.1-1 to unstable, it contains a whole bunch of fixes, quite a few from my Ubuntu counterpart Ian Jackson. I can only hope that it continues like this, it will mean good things for Firefox in Debian. I also spent way too much time on Sunday doing routine bug triage, cleaning out old junk, etc. We're under 300 bugs now! Which is still a depressingly high number, but is more manageable and probably unavoidable with such a popular package. Just hope it never gets above 300 again.

6 February 2006

Lars Wirzenius: Debian: What kind of DPL?

The nomination period for the Debian Project Leader is on again. This means that the Finnish winter is at its worst, and indeed, as I write this, it is -22 degrees Celsius outside. The sun went down about six hours ago; I woke up quite late, so I only saw half the sunset. Back in November, while vacationing, I spent some time thinking about what the role of the DPL is, and now seems a good time to say it. The actual work of developing and maintaining Debian is done by package maintainers, translators, a handful of infrastructure teams or other special purpose teams, bug reporters, and others. It is not the job of the DPL (in their role as DPL) to take charge of the actual development: the DPL is not expected to administer debian.org machines, to fix RC bugs themselves, or to make decisions about release management. Instead, the DPL's job is to help everyone else do those things. If some part of project isn't working well due to resource shortage, or personality conflicts, or other issues, it is ultimately the DPL who needs to facilitate, mediate, or otherwise deal with it. This is not uniquely the DPL's job: any Debian member could step into a situation and help, but the project does need someone whose job it is to do that if no-one else will or succeeds. Another important job of the leader (again not uniquely) is to provide inspiration. Our leaders in the past few years have provided fairly little of that. I would like us to have a DPL that inspires the project into setting and achieving goals that make us happy and make Debian the best operating system ever. The important thing is to inspire, not to force, cajole, or otherwise unilaterally decide. Not quite sure now how that should happen. Perhaps the Finnish military saying that "leading is best done at the front" is applicable: an inspiring DPL is one who by his own work, and his own behavior, shows by example what a good, productive member of the Debian development community is like. A third important job of the leader is to be the project's public face to the rest of humanity. Again, not uniquely, we have other members who are often prominently in the public eye, such as release managers or security people, but the DPL is the main such public face. And finally, the fourth important job of the leader is to do the tasks assigned to him in the Debian Constitution. These are not daily tasks, but they're important, and these, at least, are uniquely the DPL's domain.

MJ Ray: Spammers Hall of Shame: AOL and Yahoo

A much dumber idea than Wouter's is charging senders for their emails, as a BBC report says AOL and Yahoo will do. AOL and Yahoo want some of that lovely spam profit?

Aigars Mahinovs: On the weekend I was at the school reunion and amo...

On the weekend I was at the school reunion and among other matters I gave my school a present of 50 Ubuntu CDs to use in school and to give out to the pupils most interested in computers. After that I talked to my IT teacher who is now an IT adviser to the principal. It seems that all that we were taught in high school (Office software) is being move down to grade school and it is currently unclear, what will be taught to high school students. It could be programming, but it would take a large pile of time and money to prepare all the teachers for that.
It is quite a food for thought - find something challenging enough to teach at 11th and 12th grade to children that have learned all of word processing and presentation making while in their 5th grade and in the same time make it very easy to prepare 40+ year old teachers to teach that material.
In this context I find the project Little Wizard very interesting - if basics of programming can be taught so easily, maybe we still have a chance of getting it into the mandatory curriculum.

Enrico Zini: Italian screen reading

So far, it has been a fairly happy hacking day. I wanted to see how far I could go to make a Linux desktop accessible for the blind. Platform of choice is Breezy because:
  • it uses gnome, which is the most accessible stuff at the moment;
  • it's the distribution with the least amount of raw edges at the moment;
  • its gnome accessibility stuff is more up to date than the stuff in sid (I got in touch with Mario Lang and I'll see if I can help)
Step number 1: installing a fully working Breezy chroot inside my sid
  1. lvcreate -L2G -n breezy vg
  2. mkfs.jfs /dev/vg/breezy
  3. mount /dev/vg/breezy /chroot/breezy
  4. debootstrap --arch i386 breezy /chroot/breezy http://archive.ubuntu.com/ubuntu/
  5. chroot /chroot/breezy
  6. dpkg-reconfigure locales
  7. tzconfig
  8. base-config new
  9. fixed gdm configuration to work along with the sid X server
  10. fixed /etc/fstab, resolv.conf and /etc/hosts
  11. reduced the lart-delay of /etc/rcS.d/S04udev from 60 to 5 seconds
  12. "booted" the Breezy system running /etc/rcS and /etc/rc 2
Believe it or not, it works. I have another gdm login screen, I login and I hear the Ubuntu startup music. A couple of warnings about ACPI and HAL not working... well, I can imagine why. gnome-panel would refuse to show the menus. It turned out to be connected to Gnome bug #323064 (debian bug #338438) and I found out that Alt+F2 (run) and then killall gam_server would be enough to stay displayed.
Step number 2: getting the screen reader to work Note: the menu names might be incorrect as my system is localised in Italian and I'm now translating back to English.
  1. Install gnopernicus
  2. Go into Desktop/Preferences/Audio and disable the sound server
  3. Go into Desktop/Preferences/Assistive technology, enable assistive technology and screen reader
  4. Logout and in again
Now, coolness ubercoolness, the desktop starts to speak with the voice of a depressed 40 years old dude from the USA. Thanks to Luke Yelavich of ubuntu-accessibility for supporting me and for explaining me that if esd is running then the voice tends to disappear because esd steals the sound device to festival. He also explained me that if one tries to run festival through esd then it works, but since esd is a mixer then one starts hearing various voices for different events all mixed together. Now, the English speech engine often mentions the "barra dei sacramenti". In local Italian it means "toolbar for blaspheme curses". Time to move on to step 3.
Step number 3: getting the screen reader to work in Italian I'm very proud of the Italian speech engine that recently entered Debian thanks to Riccardo Vestrini and the Debian Italian Maintainers Task Force, I've already put it to good use in the past and have great plans about it for the future. It's now a good moment to turn the knowledge previously acquired with creative timewasting into something serious. So, on to work:
  1. get the italian festival voice packages from sid (the packages are festlex-ifd, festvox-itapc16k and festvox-italp16k)
  2. install them all in Breezy
  3. sudo patch /usr/share/festival/languages.scm /usr/share/doc/festlex-ifd/languages.scm.patch (and ping again Matthias Urlichs for a fix for bug#335845)
  4. log out
  5. kill all the festival servers, drivers and whatnot (need to do it when logged out, but one can just install the voices before starting gnopernicus for the first time)
  6. log in again
  7. go into gnopernicus configuration and select the new voices.
It SO WORKS! I configured some voices a bit at random, so now according to what I do the desktop speaks like the depressed dude, Adriano Celentano or the Italian dubbing of the Enterprise computer (without reverb effect). An extra cool unexpected side effect of this chroot setup is that now I can go back to my Sid X session and the Breezy X session will keep talking in the background, so I can even keep an ear on what happens in the other Virtual Console. Now, on to the applications. The menus, work. Abiword works, but I couldn't find out how to read the things I type on the editing area (not so useful until that one is solved). OpenOffice2 does not work. Firefox 1.5 works. gnome-terminal works. gedit works. It could be better, but I was fearing much worse. Now, gnopernicus has various powerful features accessible using the numeric keypad, but I haven't found a way to activate them in my laptop. It may be that with the keypad functions abiword becomes readable. I'm quite satisfied today.

Michael Koch: https works out of the box with GNU classpath CVS

In order to debug/solve Debian bug #341818 I tried to run gcjappletviewer.jar with jamvm 1.4.2-1, classpath 2:0.20-2 and libjessie-java 1.0.1-2. Everything I tried failed. Then I updated my classpath packages to a current CVS snapshot and it worked out of the box. libjessie-java is not needed anymore as Jessie is merged into GNU classpath in upstream. This means we can access HTTPS urls with free runtimes for Java in the near future. This will also help gcjwebplugin to access applets on HTTPS sites.

Martin F. Krafft: Enabling comments on blogs

Uwe, you are not the first to request that I add a comment feature to my blog. Its consideration is on my to-do list, but I am somewhat against it already. Why? Because I do not want to deal with yet another point of attack for spam, and I am really not fond of web interfaces; there are probably nice ways to tell pyBlosxom to integrate comments well with the filesystem, allowing me to e.g. reply via SSH rather than a browser (or better yet: email), but as it stands, all I know are comment forms on the blogs' web interfaces, which require a browser and cookies enabled to be able to add one's opinions. As blog owner, I have to continuously check my blog for new comments with a browser, and leave answers to comments immediately as I am checking them, but tracking forums with browsers is a royal PITA. Thus, an RSS feed would be the right way to do it. However, RSS only alerts me of new comments; I then still have to fire up a browser (or a shell) to leave an answer. Anyway, I am already drowning in emails, I don't need another medium requiring attention and feedback. There's also another reason against comments on my blog: it's my blog. Apart from legal obligations in the EU, I have not fully grasped the pros and cons of giving other people a space to express themselves. If an entry of mine solicits feedback, I include an email address, and I summarise what I learn from the numerous responses I receive in a second blog entry. I will look into ways to integrate my blog with my email traffic, so that comments come in as emails, and replying to them publishes my response on the blog. Anything else I would not want, I think.

Martin F. Krafft: Counting peas in Switzerland

Switzerland is bloody expensive, you surely don't want to be shopping here. For instance, I wanted to get myself the Lonely Planet Guide for Laos and Myanmar, both of which have had new editions released in 2005. Their price is a little more than 20 each, including the German VAT of 7%. If you buy the book in Switzerland, it's between 40 and 50 CHF (incl. 7.6% VAT), which is almost 10 more than the German price. Despite the fact that I cannot find the 2005 editions neither in Swiss stores nor on amazon.de, I'd be looking at a slight problem. Either, I can pay the higher price in Switzerland (in addition to shipping), or I can order with amazon.de (or the like) in Germany, who will subtract the VAT and ship it to Switzerland for free. Sounds great, huh? Well, it isn't really, because in Switzerland, receiving packages might mean you have to pay VAT, and not only that, they also make it unnecessarily complicated: If the goods you receive are valued less than 75 CHF, you do not have to pay VAT. However, if you do have to pay VAT, the VAT and a nominal service charge of 10 CHF count towards those 75 CHF, which means you effectively have to stay below (75 - 10 - VAT) CHF, which is 60 CHF or thereabout. Translate that to Euros, we're talking about 38 . Thus, if you want free shipping and no VAT, you have to place orders between 20 and 38 -- 20 is the minimum price to get free delivery if your order is not entirely made of books, in which case delivery would be free even below 20 . You do not want to place orders higher than 38 ever, because VAT in Switzerland is higher than the VAT for books in Germany, and the additional 10 CHF charge is not going to make up for it. So the only way for me to obtain the two books is either through the overpriced Swiss bookstores, or via two separate orders to amazon.de so as to not exceed the 38 limit. The maths gets more fun when you get away from books. For normal goods, VAT in Switzerland is still 7.6%, but 16% (and maybe soon 19%) in Germany. Thus, you will want to stay below 38 , unless the total value of the goods exceeds an amount where the cheaper 7.6% VAT + 10CHF service fee is lower than 16% VAT. This drives the limit up to 121 CHF, or about 77 . Now, if you think this is complicated, stay put. I am looking to buy myself the DrayTek Vigor 2900VG router, for which is around 265 in Germany including the 16% VAT, and 421 CHF including the 7.6% VAT in Switzerland. These prices square, but they're not including shipping, and if I would order the German product for delivery to Switzerland (which they are not willing to do, but anyway), I'd have to add the 10 CHF service charge and the 7.6% VAT. I also would not be able to claim the 16% VAT paid in Germany with EU customs because I am not a full resident of Switzerland. Man, no wonder taxes have had a long history of violence. Now I also received a 35% rebate offer from the Swiss distributor, driving the price down to 274 CHF, which is clearly a hell of a lot cheaper than the German product. So what am I waiting for? Well, Germany being an EU state and all, the German shop has to give you a 30 day return warranty and a 2 year product warranty. In Switzerland, you get no return warranty and only 1 year of product warranty. My dilemma thus becomes: are 30 days return warranty and an addition year of product warranty worth the difference of roughly 150 CHF? Seems like the answer must be "no". But I know that if I order it in Switzerland, it will break after 366 days, by the laws of Murphy. I have now asked the German distributor to match the 35% rebate. If they will, I'll order the device to my parents house in Germany. If they don't, I'll take it up with Mr. Murphy. PS: If you think the DrayTek Vigor 2900VG is not a good choice, speak up now!

Uwe Hermann: HOWTO: Encrypted USB thumb drives and (USB) hard disks using loop-AES

Yet another thing that has been on my TODO list for quite a while: encrypted USB thumb drives and/or encrypted external USB hard drives. I have finally tried this over the weekend using loop-AES. This is very useful for securing your USB thumb drive contents in case you lose it or it gets stolen. Also, I use an external USB hard drive for backups (previously unencrypted). This is encryped now, too. Here's a quick HOWTO:
  1. Get the loop-AES kernel patches, apply them, enable "AES encrypted loop device support" in "Device Drivers -> Block Devices -> Loopback device support", and recompile the kernel.
    I also enabled "loop encryption key scrubbing support" as it seems to promise higher security (can anybody confirm that?).
    If you're using the Debian kernel packages, apt-get install loop-aes-2.6-686 (or a similar package) should suffice.
  2. Get a loop-aes enabled losetup, mount etc.:
    apt-get install loop-aes-utils
  3. Securely delete the target partition: shred -n 1 -v /dev/sda3.
    Use -n 25 or higher if you want more security and have a few days time to wait for the thing to finish...
  4. Setup the loopback device: losetup -e aes256 -C 3 -S 'seed' /dev/loop0 /dev/sda3.
    Notes:
    • I used AES-256 as cipher, but others are possible.
    • The -C 3 means "run hashed password through 3000 iterations of AES-256 before using it for loop encryption. This consumes lots of CPU cycles at loop setup/mount time but not thereafter." (see losetup(8)). This is supposed to be more secure.
    • Using -S 'seed' (replace "seed" with a secret string like "g7sN4" or something) should make brute force attacks a bit harder. Don't forget the seed!
    • You'll be asked for a passphrase > 20 characters. Choose a good one. Don't forget it!
  5. Create the filesystem (I used ext3): mke2fs -j /dev/loop0
  6. Detach the loopback device: losetup -d /dev/loop0
  7. Add this to /etc/fstab:
    /dev/sda3 /mnt/crypted_sda3 ext3 noauto,loop=/dev/loop0,encryption=AES256,itercountk=3 0 0
  8. Mount the (now encrypted) partition by supplying the seed and entering the chosen password: mount -o pseed=seed /mnt/crypted_sda3
  9. Done. You can now copy stuff to /mnt/crypted_sda3 which will be encrypted automatically.
For a more detailed guide read the Encrypted-Root-Filesystem-HOWTO. A performance comparison of different ciphers is available, but in general I didn't notice too much of a slow-down because of the encryption...

Andrew Pollock: [tech] Holy broken blog feeds, Batman!

Gack, what a mess my blog feed has been in. It's still not 100% okay, but at least Firefox now parses it without complaint. Maybe someone with more XML-fu than me will read this and tell me how to fix the rest... I've always gone to a fair bit of trouble to ensure that my blog's HTML is syntactically correct, at least in terms of HTML, and everything is spelt correctly. To achieve this I use a fairly involved script to perform a bunch of sanity checks when I make a new post. Unfortunately, I've been neglecting the state of my blog's feed, and as I've recently discovered, it's been in quite a bad way for quite some time. Given that more people probably read by blog via the feed than the HTML, I've probably been focussing my attention disproportionately. It seems that whilst the native HTML I'm writing may be valid 4.01 Transitional, the XML that Blosxom generates from it isn't valid XML, mainly in terms of tag closure. So I guess this is going to mean that I need to go for a stricter and/or newer standard. I might need to move to XHTML or something. I've also found that a lot of the HTML generated by the various blog meme generators is utter crap.

Erich Schubert: Why do I always fall...

I was in kind of a bad mood recently... Why do I always fall in love with someone who does not need me? (work in progress, oh, and no, noone left me, but sometimes I'm just not happy, with no particular reason. I guess if I had a reason I wouldn't be doing computer stuff.) People often love stuff I do when I'm not happy. So maybe you like it. Not as sophisticated as usually, though. Oh, and turn up your volume (safe for work, but they will hate you), enable flash and try all the play buttons here.

5 February 2006

Martin F. Krafft: Encrypting ~

It's about time I encrypt my home directory. So far, I've found two tools for the job: dmcrypt and encfs. dmcrypt links in between the VFS layer and the data store. For an encrypted partition or image, it creates a device under /dev/mapper, which you then mount. Think cryptoloop. Encryption covers the whole scale of symmetric encryption, but I didn't find anything related to public key crypto. I am also not entirely clear yet on why a damaged block on the storage medium doesn't screw the encryption block (partially) stored on it, as well as all following ones, given a chaining mode like CBC for instance. However, as this thread shows, I am wrong and technology is right (and works), and I still just don't get it. It feels like another Monty Hall problem to me (which I also never really understood to the point of being able to convince someone else thinking 50/50 is the answer of the alleged 2/3). So then there's encfs, a FUSE-filesystem that seems (I have not tried it) to create a virtual directory for an existing one, transparently encrypting filenames and contents as they are written to the existing directory (via the virtual one), and decrypting them when requested through the virtual one. So it's a 1-to-1 mapping, which has its pro's and con's. encfs seems equally strong on the symmetric crypto side, but seems to lack public key support. For each, there's a proper PAM module: libpam-mount can mount a cryptoloop filesystem upon login (though the README says it cannot do so for OpenSSH logins. If that's right, well, one candidate less...). On the other hand, there's libpam-encfs, which creates the virtual directory on login (and removes it on logout). I can well imagine how any of the PAM modules would do their job just fine on a machine where xdm is the primary/only login method. However, what about SSH? What happens if I log in through xdm, then SSH, then quit X? How do you solve the problem? I am curious and will blog about the things I hear... Update: After rereading my thread, I am understanding, I think. We're talking encrypted block devices (or loop devices). It's not difficult at this stages to tie IV chains in with storage blocks. I am still curious why my 8M file was still all zeroes after changing the cryptotext. Update2: Sesse points out that CBC uses the ciphertext of the previous block as an IV, not the plaintext. So if some block gets corrupted, that messes up the next one's plaintext, but not its ciphertext, so the one after that is OK. Thanks.

Simon Richter: Was sick during the weekend

Stuff will have to wait, sorry.

Enrico Zini: Extract tags out of digikam

I've always wanted to tag my image collection, but it's big and a pain to do by hand. Today I found out that digikam has got to a point in which it can be used as a nice interface to categorise images, so I now have something cool for the tagging work. Now, I'd like to play with the tags using my debtags toolchain. Digikam stores data in a SQLite3 database, so it's easy to convert it into the text format used by tagcoll. Here's the script to do it:
#!/usr/bin/ruby
# gettags - Extract a tagged collection out of the digikam database
#
# Copyright (C) 2006  Enrico Zini <enrico@debian.org>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
# Usage: gettags [path/to/digikam3.db]
# If the database file is not given, use the one in the current directory
require 'sqlite3'
db = SQLite3::Database.new( ARGV[0]   'digikam3.db' )
# Build a table of id => complete tag name
tagByID =  
db.execute( "select id, pid, name from Tags" ) do  row 
        if row[1] != 0 and tagByID[row[1]] then
                tagByID[row[0]] = tagByID[row[1]]+'::'+row[2]
        else
                tagByID[row[0]] = row[2];
        end
end
# Why does it work with instant queries but not with precompiled queries?
#db.execute("select tagid from ImageTags where imageid = ?", 36887)    r  print r[0], "\n"  
#gettags = db.prepare("select tagid from ImageTags where imageid = ?")
#gettags.execute(36887)    r  print r[0], "\n"  
lastname = nil
lastdir = nil
ids = []
db.execute( "select i.name, t.tagid, a.url from Images i, ImageTags t, Albums a where i.id = t.imageid and i.dirid = a.id" ) do  row 
        if row[0] != lastname then
                if lastname != nil then
                        print lastdir, "/", lastname, ": ",
                              ids.collect    id  tagByID[id]  .join(', '), "\n"
                end
                lastname = row[0]
                lastdir = row[2]
                ids = []
        end
        ids <<= row[1]
end
if ! ids.empty? then
        print lastdir, "/", lastname, ": ", ids.collect    id  tagByID[id]  .join(', '), "\n"
end
exit 0
I didn't understand why if I perform a precompiled query I get a row object that cannot be indexed, while if I perform an instant query then everything is fine (see the comment in the script). I'm still on the learning side of Ruby, so I welcome people tellig me of better ways to write this script, and I'll be glad to update this entries with what I receive. Done the little script, now I can plug my images collection into tagcoll and have a bit of fun:
./gettags   tagcoll related /2005/12-15-03-Taiwan-Newcamera/dsci0051.jpg
./gettags   tagcoll hierarchy
./gettags   tagcoll implications
./gettags   tagcoll findspecials
Cute! And this is another little step to somehow connect pieces of the debtags toolchain to the web, which is something I'd like to explore both for the web interface of the central database, my blog and my picture gallery.

Andreas Metzler: Web interface to $human

At work we have recently started testing a web-based trading platform for swaps. After pointing the browser to the respective URL you enter the relevant data (effective date, notional, currency, &c) and klick on "request for quote". The system will take a little time to process the data and price the swap; and you have about 7 seconds to accept (and immediately enter a contract) or reject the quote by klicking on the respective button on the popup. I have often used his platform to get tradeable price-*indications* until recently when I had the chance to take a look at the inner workings. We had some technical problem with the systems and contacted the support. They passed us on to the trader, a person who has to _manually_ release any quote before it is sent out. D'oh!

Andreas Metzler: progress on kernel updates

There is some definite progress on getting kernel updates for sarge. Although the process currently seems to be stuck on either a missing build or reviewing the patches I do think that once this has gone through and the path has been paved further updates will happen faster and smoother. Thanks. I've been running the ix86 build on my workstation for two weeks without finding any (new) problems. :-)

Erich Schubert: On window placement

John Williams, of GNOME fame, recently blogged on window placement as part of his "things about gnome that suck" series. Well, I basically agree with him - but he doesn't propose a solution. Devil's Pie isn't a solution, because it's not configurable by the average user. Or even by me, I failed to have it tell apart my terminal windows and use a sane placement for them. Just remembering the last window position doesn't work either - I'm annoyed by this "feature" by nautilus, for example. I tend to have a default position for my windows, by I occasionally have to move them away, and I do not want to have them reappear at this different position ever. My personal approach basically is to run all windows (except my terminals and popups such as IM windows) fullscreened, on dedicated desktops. Even the IM windows are usually on my "IM & Chat" desktop. This works really well, especially since I keep my terminal windows open all the time, and the default placement to minimize overlap works fairly well. Still I couldn't specify a general rule how any window manager could learn where to place my windows... so just complaining that Gnome doesn't do this good isn't all - we need to find a way to make this work just fine without the user noticing... I don't know about OSX - how does this work there? In windows it definitely is horrible. When you watch windows users, you'll often see them stating their Internet Explorer, then clicking on the maximize button. All the time.

Next.

Previous.