Friday, July 16, 2010

Install couchdb for lisp on Debian

// every time you meet PGP signature, skip the checking

// other wise, try to accept the condition, treat it like it is successfully installed (for the example*.lisp, which sounds reasonable to skip)

// I install the package in the system-wide directory

// install debian package: couchdb, lisp package: clouchdb, cl-couchdb

  1. sudo apt-get install cl-asdf
  2. sudo apt-get install couchdb
  3. sudo apt-get install erlang (not sure if it is needed)
  4. sudo sbcl
  5. (require ‘asdf)
  6. (require ‘asdf-install)
  7. (asdf-install:install ‘cl-couchdb)
    • error: cl-couchdb-test component missing
  8. sudo apt-get install cl-cclan (not sure if it is needed)
  9. (asdf-install:install ‘cl-couchdb)
  10. (asdf-install:install ‘clouchdb)
    • debugger invoked on a SB-INT:STREAM-DECODING-ERROR in thread #<THREAD “initial thread” RUNNING {1002CA6DD1}>:
      • decoding error on stream
      • #<SB-SYS:FD-STREAM
      • for “file /usr/lib/sbcl/site/clouchdb_0.0.11/examples.lisp” {1005FE5DB1}>
      • (:EXTERNAL-FORMAT :ASCII):
      • the octet sequence (195) cannot be decoded.
      • Solution: 4 (treat it like it is successfully installed)
    • WARNING: COMPILE-FILE warned while performing
    • #<COMPILE-OP NIL {10060E3281}> on
    • #<CL-SOURCE-FILE “utilities” {1004FFDD71}>.
    • debugger invoked on a ASDF:COMPILE-FAILED in thread
    • #<THREAD “initial thread” RUNNING {1002CA6DD1}>:
      • erred while invoking #<COMPILE-OP NIL {10060E3281}> on
      • #<CL-SOURCE-FILE “utilities” {1004FFDD71}>
    • Solution: reference this page to solve the problem: http://paste.lisp.org/display/98816
      • Summary
      • in utilities.lisp
        • replace mop -> su-mop
      • in introspection.lisp
        • (add-group sub-result nil) -> (add-group sub-result)
      • (asdf-install:install ‘trivial-http)
  11. in /usr/local/bin/
    • sudo ./couchdb
    • # if no error occurs, you have successfully start the couchdb server
  12. use lisp to connect to couchdb server (sbcl)
    • ;; reference code from http://wiki.apache.org/couchdb/ClouchDB, but with slightly adjustment
    • ;; the server tell me that it does not accept capital letters
    • ;; Create a workspace package
    • (defpackage :clouchdb-user (:use :cl :clouchdb))
    • (in-package :clouchdb-user)
    • ;; See what databases exist on default connection, which is
    • ;; host “localhost”, port 5984
    • (list-dbs)
    • ;; Create database “myDb”
    • (set-connection :db-name “m_db”)
    • (create-db)
    • ;; Create a document in database “m_db”
    • (create-document ‘((:Subject . “I like Plankton”)
    • (:Author . “Rusty”)
    • (:PostedDate . “2006-08-15T17:30:12-04:00”)
    • (:Tags . (“plankton” “baseball” “decisions”))
    • :id “m_doc”))
    • ;; Get all documents in “m_db”
    • (get-all-documents)
    • ;; Get document “m_doc”
    • (get-document “m_doc”)
    • ;; Delete document “m_doc”
    • (delete-document :id “m_doc”)
    • ;; List information about database “m_db”
    • (get-db-info :db-name “m_db”)

Saturday, May 29, 2010

Wednesday, May 12, 2010

MarsEdit, Blogo, MacJournal trial

MarsEdit 沒有辦法所見及所得嗎?
感覺好像要在 HTML  中打,怎麼可能啊????

Blogo 可以所見及所得編輯,但 Preview 有特殊格式,看起來是舒服,不過不是直接重現Blog 該有的樣子,而且沒辦法把之前的文章 copy and paste。

MacJournal 也可以所見及所得,但是要 update contents 好像不是很直覺,但是他的確可以 copy and paste, 目前感覺這個最適用。

Monday, May 10, 2010

Setup xampp for mod_python

1. install flex (parser): sudo apt-get install flex

2. install xampp developer package

3. sudo  ./configure --with-apxs=/opt/lampp/bin/apxs
if you get  "apxs:Error: Command failed with rc=65536..."
=> download the package: https://svn.apache.org/repos/asf/quetzalcoatl/mod_python/trunk

4. After "sudo make", "sudo make install"
in http.conf, add following lines:

LoadModule python_module modules/mod_python.so

<Directory /some/directory/htdocs/test>
    AddHandler mod_python .py
    PythonHandler mptest
    PythonDebug On
</Directory>

5. Write test python script "mptest.py":

from mod_python import apache

def handler(req):
    req.content_type = 'text/plain'
    req.write("Hello World!")
    return apache.OK

Monday, April 19, 2010

Count how many records (rows) you get from database in Python

import MySQLdb

conn = MySQLdb.connect(host,
                   user,
                   password,
                   dbName)

cursor = conn.cursor()

my_query="SELECT .."

cursor.execute (my_query)

# know how many rows you get
print cursor.rowcount

Do nothing in Python

abc = {}

try:
    abc['ddd']
except KeyError:
    # pass will do nothing
    pass