Models
I have been thinking of a model for an application. Ideally I think applications should support the following features:
local (user, database, files)
remote (user)
remote (user, database, files)
Reading the visisted URLs with a firefox extension
I wanted to write an extension that would log all the URLs that I visited in Firefox. The goal of this exercise was to create a search engine that searches and caches all the information that I personally access and perhaps generates citations for that information as well.
This document exists for me to personally document the progress of such an extension:
http://stackoverflow.com/questions/873071/firefox-3-extension-javascript...
Checkout Apache Solr Trunk
This will checkout apache solr trunk to the apache-solr-trunk directory.
svn co http://svn.apache.org/repos/asf/lucene/solr/trunk/ apache-solr-trunk
Also if you need to view the code:
http://svn.apache.org/viewvc/lucene/solr/
Python DBus Example
Here is an attempt to read the messages being sent out as notifications by DBUS. I was not successful in actually reading the messages as it doesn't seem like the messages are being sent directly over DBUS. Anyhow, I thought I would post it here, perhaps someone might find it being useful.
# You must initialize the gobject/dbus support for threading
# before doing anything.
import gobject
gobject.threads_init()
from pprint import pprint
from dbus import glib
glib.init_threads()
# Create a session bus.
import dbus
bus = dbus.SessionBus()
from dbus.mainloop.glib import DBusGMainLoop
DBusGMainLoop(set_as_default=True)
import gobject
def dump(obj):
'''return a printable representation of an object for debugging'''
newobj=obj
if '__dict__' in dir(obj):
newobj=obj.__dict__
if ' object at ' in str(obj) and not newobj.has_key('__type__'):
newobj['__type__']=str(obj)
for attr in newobj:
newobj[attr]=dump(newobj[attr])
return newobj
# Create an object that will proxy for a particular remote object.
remote_object = bus.get_object("org.freedesktop.Notifications", # Connection name
"/org/freedesktop/Notifications" # Object's path
)
# Introspection returns an XML document containing information
# about the methods supported by an interface.
print ("Introspection data:\n")
print remote_object.Introspect()
# Get the power management object
power = bus.get_object('org.freedesktop.Notifications',
'/org/freedesktop/Notifications')
iface = dbus.Interface(power, 'org.freedesktop.Notifications')
# Hibernate the system
if iface.GetCapabilities():
print iface.GetCapabilities()
def play(a, b, member=None):
pprint(dump(a))
pprint(dump(b))
pprint(dump(member))
def catchall_signal_handler(*args, **kwargs):
#pprint(dump(kwargs))
print kwargs['message'].get_args_list()
#print ("Caught signal (in catchall handler) " + kwargs['dbus_interface'] )
# for arg in args:
# print " " + str(arg)
#bus.add_signal_receiver(catchall_signal_handler, interface_keyword='dbus_interface', member_keyword='member')
#bus.add_signal_receiver(my_func,
bus.add_signal_receiver(catchall_signal_handler, dbus_interface = "org.freedesktop.Notifications", signal_name='Notify')
#dbus_interface = "com.example.TestService", message_keyword='dbus_message'
iface.connect_to_signal(None, catchall_signal_handler, message_keyword='message', sender_keyword = 'send', destination_keyword = 'dest', interface_keyword
= 'iface', member_keyword = 'mem', path_keyword = 'path')
loop = gobject.MainLoop()
loop.run()
Amazon Product API
There is an example of this already online, but I don't like it.
from amazonproduct import API
from lxml import objectify
AWS_KEY = ''
SECRET_KEY = ''
api = API(AWS_KEY, SECRET_KEY, 'us')
node = api.item_search('Books', Keywords='0824832752')
# node object returned is a lxml.objectified element
# .pyval will convert the node content into int here
total_results = node.Items.TotalResults.pyval
total_pages = node.Items.TotalPages.pyval
print total_results
#get all books from result set and
#print author and title
for book in node.Items.Item:
print '%s: "%s"' % (book.ItemAttributes.Author,
book.ItemAttributes.Title)
print objectify.dump(book)
Create a self signed certificate using PHP
<?
$dn = array("countryName" => 'XX', "stateOrProvinceName" => 'State', "localityName" => 'SomewhereCity', "organizationName" => 'MySelf', "organizationalUnitN
ame" => 'Whatever', "commonName" => 'mySelf', "emailAddress" => 'user@domain.com');
$privkeypass = '1234';
$numberofdays = 365;
$privkey = openssl_pkey_new();
$csr = openssl_csr_new($dn, $privkey);
$sscert = openssl_csr_sign($csr, null, $privkey, $numberofdays);
openssl_x509_export($sscert, $publickey);
openssl_pkey_export($privkey, $privatekey, $privkeypass);
openssl_csr_export($csr, $csrStr);
echo $privatekey; // Will hold the exported PriKey
echo $publickey; // Will hold the exported PubKey
echo $csrStr; // Will hold the exported Certificate
?>
Getting festival to work with PulseAudio in Ubuntu, etc.
Start up festival and enter the following commands, if it works open up /etc/festival.scm and append to the end of that. Works well enough for we me with other audio playing.
(Parameter.set 'Audio_Command "paplay $FILE") (Parameter.set 'Audio_Method 'Audio_Command) (Parameter.set 'Audio_Required_Format 'snd)
Perseus: A new way to browse, download, and share books
Tue, 08/04/2009 - 10:42pm — root
After working with Alexandria I decided that Ruby was not a good language to write such an application. I also wanted to add some features that Ruby is not suited for such as P2P. Also, Alexandria is Gnome-only and I really didn't like that as most of our users are elsewhere, ie Windows and OSX, so I decided against GTK+.
Enter Perseus. Perseus is completely new application to help you manage your book collection. It is similar to Alexandria in that it borrows quite a few things from Alexandria's design. I also studied Delicious Library and decided to implement a real-looking bookshelf. I also wanted a viewer, so I introduced tabs into the interface. The application is quickly emerging and I do like what I see so far. It is written in Python and QT Screenshot included on the right!