July 7th, 2006

WordPress a top choice for Enterprise blogging - Forrester Research

Via Toni Schneider on his blog.

Enterprise blogging and WordPress

He quotes a Forrester Research report which says, after looking at a lot of blogging platforms, that WordPress is a top choice for enterprise blogging.

Toni was the CEO of Oddpost, which was acquired by Yahoo (it became the new Yahoo Mail), and a VP at Yahoo where he created their developer network and led the acquisition of Konfabulator. Now he's CEO of Automattic.

About Automattic.

Automattic is involved with WordPress.com, one of the top blogging software platforms and Akismet, a blog spam protection service.

Publishing ODBC database content as PDF

Publishing ODBC database content as PDF.
This is an example from the upcoming next release of my PDF conversion toolkit, xtopdf:.

You will need Python v2.2 or greater, the open source version of the ReportLab toolkit v1.17 or greater, and xtopdf v1.0.

Follow the installation instructions for each package below.

First install Python.
Then install ReportLab, in a directory on your PYTHONPATH.
Then install xtopdf in some directory which is on, or which you must add to, your PYTHONPATH.
Then copy the program below to some directory and run it with Python.

[The code below is only for demo purposes.]

#----------------------------- TestPyODBC01.py ------------------------
# TestPyODBC01.py

# Copyright (C) 2006, Vasudev Ram - http://www.dancingbison.com
# Released under the BSD license.
# *** This is alpha code, for demo purposes only. USE AT YOUR OWN RISK ***

import sys
import string
import odbc

# add path for import of xtopdf modules/classes to Python system path
# Change the line below to point to the folder where you extract the xtopdf .tgz file.

from PDFWriter import PDFWriter

# You need to create an ODBC DSN (Data Source Name) with the name in the line below.
conn = odbc.odbc("PyODBCTest01")
# For this example I created a DBF database and file, to which the DSN points, but
# the code should work with any ODBC database.
print conn
#print type(conn)

curs = conn.cursor()
print curs
#print type(curs)

#rc = curs.execute("create table contact (fname char(5))")
#print "curs.execute create table rc = ", rc

#rc = curs.execute(" insert into contact values('AAAAA') ")
#print "curs.execute insert into contact rc = ", rc

#for i in range(1000):
# str_i = string.zfill(str(i), 5)
# rc = curs.execute(" insert into contact values(" + str_i + ") ")
# print "curs.execute insert into contact rc = ", rc

# Create a PDFWriter object
pw = PDFWriter('TestPyODBC01.pdf')
# Set its font
pw.setFont("Courier", 10)

# Set its header and footer
pw.setHeader("TesTPyODBC01.py: CONTACT.DBF - Header")
pw.setFooter("TesTPyODBC01.py: CONTACT.DBF - Footer")

# Execute the select query
rc = curs.execute(" select * from contact ")
print "curs.execute select * from contact rc = ", rc

# Fetch the data
a_tuple = ()
data = ""
#lin_ctr = 0
while 1:
# while data is not None:
data = curs.fetchone()
if data is None or type(data) != type(a_tuple):
#print "type(data) = ", type(data)
#print "curs.fetchone data = ", data
#lin_ctr += 1
out_str = string.zfill(data[0], 5)
# page break every 66 lines
#if (lin_ctr == 66):
# pw.savePage()
# lin_ctr = 0


print "Done."

#----------------------------- EOF: TestPyODBC01.py ------------------------