Tuesday, May 31, 2011

Python with virtualenv, fabric

Wow, after a couple of busy months I've finally found a little time to spend on getting some Django love going on. Today, I started off with getting the development environment ready.

Virtualenv:
http://www.saltycrane.com/blog/2009/05/notes-using-pip-and-virtualenv-django/
virtualenv wrapper:
http://www.doughellmann.com/docs/virtualenvwrapper/
make sure django-admin.py runs the local copy of django, not the os-wide:
http://iamzed.com/2009/05/07/a-primer-on-virtualenv/ (tips section)
and setting up a decent postmkvirtualenv
http://blog.doughellmann.com/2010/01/virtualenvwrapper-tips-and-tricks.html
enable tab-completion for pip in bash:
pip completion --bash >> ~/.profile

~/.bashrc gained the following lines:

#set defaults for python development
#from http://www.doughellmann.com/docs/virtualenvwrapper/
export WORKON_HOME=~/python-environments
export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages'
#from www.pip-installer.org/en/latest/
export PIP_RESPECT_VIRTUALENV=true
source /usr/local/bin/virtualenvwrapper.sh



maybe later some more nifty stuff, like automatically enabling a virtualenv when you cd into a directory
http://hmarr.com/2010/jan/19/making-virtualenv-play-nice-with-git/
maybe later for deployment:
http://www.caktusgroup.com/blog/2010/04/22/basic-django-deployment-with-virtualenv-fabric-pip-and-rsync/

Saturday, February 5, 2011

Google, stop stealing my keyboard focus!

For the last few weeks, I've become increasingly annoyed by google's search-as-you-type feature. I like it's speed and responsiveness. Yet, when I try to go back to the page I came from and hit `backspace`, the search input field is focussed and my query is edited. Obviously, this does not what I wanted.

I can disable search-as-you-type to get rid of this behavior, but that's like killing a mosquito with a laser.

Has anyone found a good workaround for this yet?

Google, don't steal my keyboard focus!

Friday, January 28, 2011

Merge two directories on Linux using Tar

From linuxquestions.org:
tar cf - . |(cd /targetdir; tar xvf -)


or
alias merge=pushd $1 | tar cf - . |(cd $2; tar xvf -); popd
(untested)

Add all unversioned files with SVN

from stackoverflow:
svn status | grep '?' | sed 's/^.* /svn add /' | bash

Tuesday, January 25, 2011

Python unicode

Python doesn't strip the byte order marker when reading an UTF-8 file. Using unicode.strip() won't remove it from the first line either.

From the link:

if u[0] == unicode( codecs.BOM_UTF8, "utf8" ):
 u = u[1:]

Monday, January 24, 2011

CKEditor

Wow, events in CKEditor are sometimes hard to decipher. For example: why does the dialog not close when the 'Ok' event is fired on a dialog?

Well, the ok event is not responsible for hiding the editor. That is something the ok-button.onClick() does. So, if you want to simulate hide the dialog as if the ok button was clicked, do the following:



if(dialog.fire('ok', {hide:true}).hide !== false) {
  dialog.hide();
}

Tuesday, January 11, 2011

Python's Matplotlib and markeredgecolor

When plotting something in matplotlib using the scatter() function, it took me a while to find out that the "markeredgecolor" setting from the plot() function is available, but has a different name: "edgecolor".

In a normal plot(), the main actors are the lines between the data points. In a scatterplot, the main actors are the markers so that does not need be repeated in the name.

An example:
    lines = plt.scatter(x, y, c=colors, marker='o')
    plt.setp(lines, edgecolors='None') #or 'face'. rgba tuples like ((0,0,0,0),) do not seem to work.
    plt.show()

I wanted lines between each of my markers. Instead of trying to coerce scatter() to draw lines or plot() to draw coloured faces (it will not), just call them both.

    plt.plot(x, y, marker='None')
    faces = plt.scatter(x, y, c=color, marker='o')
    plt.setp(faces, edgecolors='face')
    plt.show()