VMWare Shared Folder Set Ownership

By Tyler on

The problem with VMWare shared folders is that you can’t specify the owner/group so the default ends up being root for both. This isn’t ideal, for instance, if we’re sharing web files that need to be owned by Apache in order to be served. Piggybacking off a comment from this post, here’s how to specify the owner/group of a shared folder:

  1. Ensure VMWare Tools is installed.
  2. Execute:
    sudo echo ".host:/ /mnt/hgfs vmhgfs rw,uid=33,gid=33" >> /etc/fstab
    sudo umount /mnt/hgfs
    sudo mount /mnt/hgfs

What this does is append /etc/fstab to specify how /mnt/hgfs should be mounted in terms of ownership. uid and gid 33 is Apache’s www-data user on Debian-based distrobutions. /mnt/hgfs is then re-mounted with new ownership.

Postgres Run Query on Multiple Tables

By Tyler on

If a query needs to be run on multiple tables with similar schemas, use this anonymous code block to reduce repetition.

DO $$
DECLARE
  current_table text;
BEGIN
    FOREACH current_table IN ARRAY ARRAY['table1', 'table2']
    LOOP
        EXECUTE format('DELETE FROM %I WHERE foo = %L', current_table, 'bar');
    END LOOP;
END $$;

Python Case Insensitive Glob

By Tyler on

Python 2’s glob by itself is limited in its pattern matching capability but when combined with regex it becomes more useful. Surprisingly, I couldn’t find anything concise and practical for selecting files with certain extensions in a case-insensitive manner so I wrote this:

#!/usr/bin/env python

import glob, re

for file in [f for f in glob.glob('*') if re.match('^.*\.zip$', f, flags=re.IGNORECASE)]:
    print file