The Linux Page

The Expression On Load you entered as the event property setting produced the following error: User-defined type not defined

Problem

A few days ago, I made many updates in one of the MS-Access forms I'm working on.

Then, when I tried to open the form I'd get this error...

The Expression On Load you entered as the event property setting produced the following error: User-defined type not defined

This doesn't mean anything to me since I did not define any type... Removing the Form_Load function (commenting it out) made that very error go away, however, since that's the sub-form of another form, it still generates errors when the main form is trying to initialize the sub-form.

Note that it ...

Verifying the md5sum of Installed Debian or Ubuntu packages

I always wondered why we couldn't just use dpkg to verify that the installed packages have not be tempered with. I know that the feature is hardly safe if the md5's are saved on the same computer, even the same hard drive...

Still, once in a while it's just a manual error that requires me to check that I did do something wrong on my computer.

Under Red Hat the rpm packager offers the -V option: Verify.

Under Debian and thus Ubuntu and other derivatives, the debsums tool has to be installed and used for that purpose.

  sudo apt-get install debsums
  debsums -s <package ...

unresolved external symbol "public: virtual struct QMetaObject const *__thiscall MyClass::metaObject[...]"

Got a problem with Qt today... and it took me a little time to figure out again and I'm sure some people have something about it, but I couldn't find the right answer anywhere.

Qt has those objects named QObject. You can derive them that class and to complete the object, you want to add a Q_OBJECT inside the class. Something like this:

  class MyClass : public QObject
  {
    Q_OBJECT
    [...your object definitions...]
  };

That Q_OBJECT is what makes your object visible in the Qt environment (i.e. a Find by name will find your object if you give it a name with setObjectName().

A strange looking "The following packages have unmet dependencies" error!

I just upgraded an Ubuntu server from version 9.10 (Karmic Koala) to 10.04 (Lucid Lynx) and started getting a strange error about some package dependencies being unmet. I'm sure I did not intentionally install those packages, so as I was upgrading, I would imagine that they should have been removed automatically if required.

  # apt-get install <some-module>
  Reading package lists... Done
  Building dependency tree      
  Reading state information... Done
  You might want to run `apt-get -f install' to correct these:
  The following packages have unmet dependencies:

Upgrade from Ubuntu 9.10 to 10.04

Today I did an upgrade of a server from 9.10 to 10.04. We were on a server version before upgrading to 9.10 but we could not directly upgrade to 10.04 (working upgrade paths are very specific; see a list here: https://help.ubuntu.com/community/UpgradeNotes )

The most surprising part was the python script at the end.

  /usr/bin/python /tmp/unique-folder/lucid --mode=server --frontend=DistUpgradeViewText

The command line itself is not specifically strange. However, the behavior at the end of the script is a bit strange, mainly because I hadn't see it before. Last time the upgrade was

MS-Access not limiting unbound text fields

When creating an unbound text in MS-Access it is not constrained in length. The text limit you get when the field is bound to the database table is really neat, but there is not direct way to access that code (it's probably something hard coded in the MS-Access system.)

This means you have to re-implement the behavior.

I found this page Unbound text box: limiting entry length which has a very good solution. Just in case the page disappears, there is what I use (a simplified version that doesn't manage errors because I do not like that — errors are not supposed to happen, when they do,

QtTest and "Cannot create a QWidget when no GUI is being used"

Problem

I have to use Qt these days. It's a good system, but there are a few tricks to know about.

As I was starting to write a test, the test needed a lot of numbers but nothing much otherwise. So I decided to limit the #include to a minimum by deleting all of those that I did not need.

The result was this error:

"Cannot create a QWidget when no GUI is being used"

I looked into it and sure enough people talking about it say: Well... where is your GUI?

Great, but I don't see how that helps me in fixing the problem, does it do it for you? Neither?!

Solution

...

pg_upgradecluster to move clusters between versions

Until now, I only had to upgrade my PostgreSQL databases between computers so I would pg_dump + pg_restore the databases.

However, PostgreSQL offers a tool named pg_upgradecluster that does that work for you, plus it will copy all the different things that pg_dump doesn't always catch such as functions, existing users, etc.

This sounds all good...

So I ran it against our cluster of 298 databases and got a little surprise: it takes about 10 minutes to run on one database, whatever its size. Yes! 10 minutes. Our big database has over 1 million rows, the smallest have a few hundred. Impressive

The certificate is not trusted because it is self signed.

Connection problem with Shredder

Today I got a little surprised by Shredder (the base used to build Thunderbird.)

Somehow, the certificates for my mail server had reached maturation (i.e. it was showing an end date as of today.)

On each connection to the server I would get the following error:

<name>: uses an invalid security certificate
The certificate is not trusted because it is self signed.
(Error code: sec_error_ca_cert_invalid)

Interestingly enough, I search on this error and mainly found things about FireFox and SeaMonkey instead of Thunderbird (and nothing about

Diacritics on a standard US QWERTY MS-Windows keyboard

Today I found a table describing the keystrokes you can use to generate different letters in another language than the bare ASCII set used in the US. For example, it is nice to use "à" in French whenever necessary because "à" (a preposition) has nothing to do with "a" (a conjugated verb).

Microsoft includes that feature for most of their software. It may not work in all software, although you can always open wordpad and then copy and paste the output. (Notepad is not enough, it does not support UTF-8 or Unicode too well.)

...