20091231

Order Matters With XCode's Build Phrases

I use a custom script to insert the current git commit into GeoNote, so when I get bug reports I have a better idea of which version the user is running. The script is as below:

import os
from Foundation import NSMutableDictionary

version = os.popen4("/sw/bin/git rev-parse --short HEAD")[1].read()
info = os.environ['INFOPLIST_FILE']
print info
plist = NSMutableDictionary.dictionaryWithContentsOfFile_(info)
print plist
plist['revision'] = version[:-1]
plist.writeToFile_atomically_(info, 1)

This was added as a Run Script Build Phrase. The problem I noticed was that the commit short hash inserted into Info.plist was always one commit behind. After some head scratching, I realised this was because by default the new build phrase is inserted last, and the order matters! It isn't actually possible to reorder build phrases by drag and dropping the children nodes around. You have to do a head-insert by dragging a child to the parent, which inserts it at the top.


Voila, problem solved.

Cheers,
Steve

Labels: , ,


20090429

Stripping trailing whitespace from XCode

Firstly, my usual approach of s/\s+$//g doesn't work since it eats up the newline too. s/\s+$/\n/g doesn't work either because the Replace: field in the find dialogue doesn't escape the \n.

Final solution is as shown: s/[ \t]+$//g

Cheers,
Steve

Labels: , , , ,


20080920

A relatively pain free Linux/OS X VNC setup

Ever since I got my 2nd monitor, I been using VNC to work on my laptop. Leopard's inbuilt VNC server isn't really VNC compliant, and has many issues when used with a normal VNC client. I have found Vine server to be an excellent replacement. The client side is a little interesting. RealVNC didn't work too well for me, in that often the screen would stop responding, or it would not receive key events. The best setup I have found is to use tightvnc with the following Vine server settings:

The client and server will happily share the clipboard if you enable it. Settings are accessed via F8 in the client, and via Preferences in the server. The client is smart enough to synchronise clipboards only when it loses focus - which would be you switching away to say, paste a url into firefox. All in all it is a fairly painless experience.

Cheers,
Steve

Labels: , , , , ,


20071213

Computing Oddities

Two strange and weird things happened to me recently. One is my /dev/null disappearing from leopard!

A large number of programs, both Cocoa and *nix relies on /dev/null being present. As you can see I could not gain root privileges, and thus could not recreate /dev/null (character device, 3,2). I had to in the end reboot and /dev/null was recreated.

Second strange thing is when I created a self-signed certificate for use with apache2 (for anonshare). I created it with openssl specifying 36500 for -days. The result is an certificate with expiration date in the past!

I am not aware of any X.509 specification regarding the number of days a certificate can be valid for, so I wonder - is this a bug in openssl?


Cheers,
Steve

Labels: ,


20070826

Writing CVs in Lyx under OS X with Fink TeX

Raison d'être

There is preciously little information on the WWW on how to write a CV using Lyx under OS X with a tex installation supplied by Fink. There is a outdated tutorial which failed to work, and thats about it. This document should hopefully shed some light on the matter, and will show you how to install the moderncv latex class and get LyX to recognise it so you can make a nice CV for yourself.

moderncv class

The moderncv class is availiable at CTAN.

Installation

Tex looks for classes etc in its path, which can be discovered using:kpsepath texYou will get a pretty long list of paths where tex looks for classes. Note in particular /$HOME/Library/texmf/tex///: this is a sensible place to put your own custom files in my opinion, to avoid polluting the entire local install (and to keep fink happy by not having files in places it doesn't expect). The // means all directories below /$HOME/Library/texmf/tex/ will be searched too. So unpack the zip, or place the individual files under /$HOME/Library/texmf/tex/moderncv/. Once you are done, run texhash in /$HOME/Library/texmf/.

LyX reconfiguration

The last step is to ask Lyx to reconfigure itself so it will update its own list of avaliable classes: LyX->Reconfigure, then restart LyX as recommended. That should be it :-)

Usage

Have a look in the examples/ directory in the moderncv zip file to see how to use it.

Specifically, you need to insert some latex before \begin{document}, in Document->Settings->Latex Preamble, or it won't work. You need at a minimum \familyname{} and \firstname{}. For more read the examples. Further more, you also need to insert ERT of \maketitle to have a nice title. That should be it! :-)

Installing other classes

These same steps should apply to installing other classes you find on CTAN


Cheers,
Steve

Labels: , , , ,


This page is powered by Blogger. Isn't yours?