Software development, photography, jokes, ....

Sites by me

tas-logoTransportation Administration System
snoezelkussen-logo-kleinstSnoezelkussens voor verstandelijk gehandicapten
ikzoekeenbegeleider-logoBegeleiders voor gehandicapten
Laat uw hond het jaarlijkse vuurwerk overwinnen
Betuweroute en Kunst
logo 50x50Hey Vos! Je eigen emailadres?
Kunst in huis? Nicole Karrèr maakt echt bijzonder mooie dingen
nettylogo2Kunst in huis? Netty Franssen maakt ook bijzonder mooie dingen
Professionele opvang bij Gastouderbureau
Salarisadministratie en belastingadvies bij
De Zaak Loont
Zutphense Bomenstichting

Hosting Favorites

ANU Internet Services
XelMedia .internet Services


Quality that computes
The Economy of Motion
Wheel 2.0

Website Hosting bij Xel Media

Marc's Place


Foto: Night Train Impression

Night Train Impression
View Comments

Casal dos Jordões - Finest Reserve Port

Looking for a superb, organic port wine? I really can recommend this one! More about this company, which wins medal after medal since moving to organic growing of plants in 1994.

View Comments

Foto: Dinner in a hotel room

View Comments

MySQL: Split a comma-separated list and insert result into table

Looking for a SPLIT-function in MySQL, I came across this one. I tried it and I must have have done something not right, because MySQL threw an error at the function. I am not a MySQL guru and since this is a one time Q&D conversion-action, I only took the SUBSTRING code and created a query with which one can split the contents of an old field into separate columns and directly insert the results into a new, normalized table.

My example is about a TEXT-column I want to get rid of and of which I want to transfer the contents to a separate table. This column contains email addresses separated by a comma. Thus, first, I had to find the maximum number of email addresses used in that column, so I found this query and added MAX() around it.

select max(length(emails) - length(replace(emails, ',', ''))) as occurrences
from old_table
where emails<>''

With that number, I created that number+1 of unions, so I would end up with all email addresses in one column. That select statement is then used in a left join to retrieve the corresponding user name and feed the results at the same time into a new table, which uses an ID and a USER-ID, instead of an email address:

insert into new_table
select idnr, user
from (
  select idnr,
  trim(substring(substring_index(emails, ',', 1), char_length(substring_index(emails, ',', 1 -1)) + 1)) as email
  from old_table
  where emails<>''


  select idnr,
  trim(substring(substring_index(emails, ',', 2), char_length(substring_index(emails, ',', 2 -1)) + 2)) as email
  from old_table
  where emails<>''


  select idnr,
  trim(substring(substring_index(emails, ',', 3), char_length(substring_index(emails, ',', 3 -1)) + 2)) as email
  from old_table
  where emails<>''


  select idnr,
  trim(substring(substring_index(emails, ',', 4), char_length(substring_index(emails, ',', 4 -1)) + 2)) as email
  from old_table
  where emails<>''
) as x
join users u on ( or

Now that I have all used email address associated with the IDs of the original rows, I can now delete the old column and change all my LIKE-queries into LEFT JOINs. Much better, because email addresses change.
View Comments

Foto: Deer on Dune-top near Zandvoort

Deer on a dune-top
View Comments

SheepShaver - Mac OS 9.0 Classic Emulation on Mac OS 10.8

If you do not want to spend much money on upgrades for software you hardly use, just because you are running the latest Mac OS, try a Mac OS emulator! These are free and run nice and fast on the new Macs.

Let's take FileMaker Pro 6 for example. A piece of software I need, for a regional tree foundation I do some work for, but rarely use. And I do not want to upgrade - too expensive for the infrequent usage. So I looked at installing it on Windows in Parallels, since I have that software anyway - but that is a bit too much overhead just for running FileMaker 6. WINE did a bad job so I ditched that. Then I got a 500MHz G4 Cube! The advantage was that it runs all my older software too, like the Starwars Episode 1 Racer. But it is a bit much work turing that Mac on and off, just to do some administrative work in FileMaker 6.

So I still want to be able to run FM6 on my iMac, in Mac OS 10.8, because it is simply more convenient. I tried SheepShaver a long time ago, but then it did not work for me, somehow. But today I came across it again while searching for Mac OS emulators for Moutain Lion, and saw '2012' in the SheepShaver's blog, so that means it is still actively supported. I gave it a try and it works fantastic! And it runs my FM6 applications - and some old games, of course, like BreakThru! Really cool!

If you want to try it too, download SheepShaver and download a ROM file and the OS9 System. READ and follow these instructions and you should be ok.

View Comments

Brunello di Montalcino 2007

A few weeks ago, while shopping at ALDI in my hometown, I came across this wine. Lucky for them I was in a good mood and spend €12 on this wine, just this once.

Well, turns out it was a very good wine!

But, not worth the price. I have had similar quality for just about €8 a bottle. Now I am waiting until the last ones of their stock get a yellow sticker with a reduced price - maybe then this wine gets interesting to buy again.

If you can get it for a reasonable price, I suggest you try it!

brunello-di-montalcino1 (aldi,okt,12euro)brunello-di-montalcino2 (aldi,okt,12euro)
View Comments

Foto: iMac going crazy

Screen Shot 2012-11-09 at 18.18.04
View Comments

Daily Script on Mac OS X Server did not clean up /tmp

Lately my /tmp folder was piling up with files (krb5cc*) without any signals that these files were regularly deleted. A bit of googling showed that these come from the Open Directory Server, but that's something I cannot control. So I went to investigate why the daily script would not delete them. I googled a bit again and found out where the parameter file for the daily, weekly and monthly cleanup-scripts is located: /etc/defaults/periodic.conf. There, I found these settings for /tmp :

# 110.clean-tmps
daily_clean_tmps_enable="YES"           # Delete stuff daily
daily_clean_tmps_dirs="/tmp"            # Delete under here
daily_clean_tmps_days="3"               # If not accessed for
daily_clean_tmps_ignore=".X*-lock .X11-unix .ICE-unix .font-unix .XIM-unix"
daily_clean_tmps_ignore="$daily_clean_tmps_ignore quota.user"
                                        # Don't delete these
daily_clean_tmps_verbose="YES"          # Mention files deleted

The one to look for is where it says "3". This indicates that the routine should clean up old files not accessed for 3 days. But it did not - and the files were not mentioned in the ignore-parameters. Even rm -rf krb5cc* returned immediately an error that its argument list was too long. Therefore I started reading what the exact values for this parameter should be.

Well, it turns out that the value needs a qualification, like d(ays) or m(months), etc.. I found that out by reading /etc/periodic/daily/110.clean-tmps and studying how find uses -atime, -ctime and -mtime and how to add or subtract values. Here are a few find-commands, copied from /etc/periodic/daily/110.clean-tmps, which I tried to make sure that what I just read was right:

$ cd /tmp
$ sudo find -dx . -fstype local -type f -atime +1h -mtime +1h -ctime +1h
$ sudo find -dx . -fstype local -type f -atime +1d -mtime +1d -ctime +1d
$ sudo find -dx . -fstype local -type f -atime +2d -mtime +2d -ctime +2d

Further reading suggested to use override-files, so I sudo'd into vi to create the file /etc/periodic.conf with the following contents:


Yes, 2 days. Three days is too long for a server, in my opinion. The file's attributes look like this:

marcvos @ ~ $ ls -l /etc/periodic.conf
-rw-r--r-- 1 root wheel 27 Oct 25 16:38 /etc/periodic.conf

Next, delete the file daily.out:

$ sudo rm /var/log/daily.out

Reboot the server. Check your /tmp folder and /var/log/daily.out the next days.

With me, I now finally saw all those files getting deleted.
View Comments

Foto: Fossiele Vissenkop?

Fossile Fish

We gingen fossielen zoeken bij Cadzand-Bad en eindigden uiteindelijk bij Het Zwind. Daar hebben we een middag lopen speuren en daarbij vond ik o.a. deze versteende vissenkop. De bek en het oog zitten ook aan de andere kant, maar of het inderdaad een vissenkop is.....?

We went looking for fossils at Cadzand-Bad but ended up at Het Zwind. There we have spent the afternoon hunting for fossils and then I found, a.o., this fossilized fish head. The beak and eye are also visible on the other side, but if it actually is a fish head....?
View Comments
See Older Posts...
© 1997- Marc Vos (and others) Contact Me