Archive for the ‘Uncategorized’ Category
Compiling Couchdb on Karmic
This had my annoyed for a while. When I came to run ./configure I got:
checking for JS_NewContext in -lmozjs... no checking for JS_NewContext in -ljs... no checking for JS_NewContext in -ljs3250... no checking for JS_NewContext in -ljs32... no configure: error: Could not find the js library. Is the Mozilla SpiderMonkey library installed?
I was unable to find much help until I looked at the instructions for installing from source http://wiki.apache.org/couchdb/Installing_on_Ubuntu?action=show&redirect=InstallingOnUbuntu. Which in retrospect would have been a good place to start. Use the following to stop the above error:
./configure --with-js-include=/usr/include/xulrunner-1.9.1.9/unstable --with-js-lib=/usr/lib/xulrunner-devel-1.9.1.9/lib
Oh and make sure you have xulrunner and its dev package installed.
Python and Notify OSD
Silly little bit of code that will tell you when a command line operation has finished.
#!/usr/bin/env python
import sys
import pynotify
if __name__ == '__main__':
if not pynotify.init ("icon-summary-body"):
sys.exit (1)
print sys.stdin.read()
n = pynotify.Notification ("Finished")
n.show()
This was based on https://wiki.ubuntu.com/NotificationDevelopmentGuidelines?action=AttachFile&do=view&target=icon-summary-body.py over on the article Notify OSD.
Speeding up the Web
Might be old news and to be honest it should be if you do web development Speed. This page from Google contains lots of tips for speeding up web pages, lots of useful tips and worth at least one read.
Little Script to Check Twitter’s Status
#!/usr/bin/env python
from lxml import html
print "Starting..."
page = html.parse("http://www.pingdom.com/reports/vb1395a6sww3/check_overview/?name=twitter.com%2Fhome")
if page:
try:
t = page.xpath("/html/body/div[@id='content']/table[1]/tr[2]/td")
status_icon = t[0].xpath("img/@src")[0]
status = status_icon.split('_')[2].split('.')[0]
date = t[1].text
print "Twitter is %s! Checked at: %s Pacific Time (GMT - 8:00)" % (status, date)
except:
print "Unable to correctly verify Twitters status"
else:
print "Can't access http://www.pingdom.com status page!"
Conduit from SVN
Installed in it from svn and kept getting: ImportError: No module named conduit
Fixed it with a: sudo cp -r /usr/lib/python2.6/site-packages/conduit /usr/lib/python2.6/ after failing with ./autogen.sh –prefix /usr
Get CouchDB up and running
run:
sudo apt-get install libcurl4-gnutls-dev libmozjs-dev libicu-dev erlang
This should be all you require to build and install apache-couchdb-0.9.0
Playing a DVD
A friend was getting the following error when playing some dvds:
[ 172.864397] Buffer I/O error on device sr0, logical block 278
Following https://help.ubuntu.com/community/RestrictedFormats/PlayingDVDs solved it.
Google Contact API
This is more for me as a reminder.
To find the postal address from a gdata.contacts.ContactEntry use:
import atom import gdata.contacts import gdata.contacts.service gd_client = gdata.contacts.service.ContactsService() gd_client.email = 'jo@gmail.com' gd_client.password = 'passdword' gd_client.source = 'exampleCo-exampleApp-1' gd_client.ProgrammaticLogin() from lxml import etree feed = gd_client.GetContactsFeed() entry = feed.entry[0] entry entry.postal_address[0].text '123 Fake Street'
Took me ages to figure that out…
A Quick memcache demo for Python
So you need to use memcache with Python? Below is a brief intro I figured out in about 20 mins.
First install everything you need. I run Ubuntu so python-memcached memcached packages were required.
Next start the memcached server if its not already running:
/usr/bin/memcached -m 64 -p 11211 -u nobody -l 127.0.0.1
The above gets you a 64Mb server, more than enough to play on.
Next some python below is from the interpreter as I was in a hurry:
import memcache
memc = memcache.Client(['127.0.0.1:11211'])
class test():
def __init__(self):
self.m = "Hello, world"
t = test()
memc.set('cheese', t, 120)
True
r = memc.get('cheese')
r.m
'Hello, world'
The above instantiates an object and then saves it memcached with set() and then we get it back using get(). Dead simple. The usage is pretty, try and fetch from memcached if if fails fetch from your datasource and then save that document ready for next time.
memc.set(‘cheese’, t, 120) cheese is the reference, t is the object to store and 120 is the time to live. After 120 seconds the object is cleared from the cache.
Webdriver and Python Bindings
I`m working on some WebDriver stuff and below is quick guide to get you started:
svn checkout http://webdriver.googlecode.com/svn/trunk/ webdriver cd webdriver/ sudo python setup.py install
add the following to make sure you new libs can be found correctly
vi ~/.bashrc export WEBDRIVER=/home/channam/Code/python/webdriver . ~/.bashrc
and you are good to go.

