10月 2005

pythonでの開発メモ

Winodwsでpythonのプログラムを作成するには以下のようにする。

  1. ここからダウンロードしてきてpythonをインストール。形式はmsi形式なので楽ちん。
  2. スタートメニューから”Python2.4″→”IDLE(python GUI)”を起動する。
    基本的にこの窓でいろんなことが出来る。対話的にプログラムを実行することも可能なので、ここで試してからプログラムファイルにすれば良い。ファイルを作るには次。
  3. “File”→”New Window”を選択。
    窓がもう一つ出来る。
  4. プログラムを入力する。
  5. “File”→”Save as”でセーブする。
    ファイル名に”.py”の拡張子を付けるのを忘れずに。IDLEは自動では付けてくれない。
  6. “Run”→”Run Module”(F5)で実行出来る。
    うまく動かなかったらプログラムを修正しましょう。

[IDLEのエディタは色分けもしてくれるので便利だが、やっぱり自分で好みのエディタを使いたい場合]
上記のプログラム入力部分で、IDLEの画面ではなく独自にエディタを開いて編集してしまえば良い。IDLEからセーブしないように注意。

IDLEの名前はMonty PythonのEric Idleにちなんだものらしい。

カレンダーがない!

英語でしゃべらナイトでセレブインタビューを務め、最近ではすっかり知的な女性になった釈由美子さん。ここのところ毎年カレンダーを買っていたのに、、
2006年は無い?amazon.comで扱っていないし、2005年の発売元ハゴロモのページにいったけど一覧に無い。アマゾンに無いってことは、存在
しないんだろうなぁ。。。どうしよう。。浮気しちゃおうかなぁ。。。
ところで、釈ちゃんが声をあてるこれは買うしかないかなぁ。Xbox360も買わなくちゃいけないのかぁ。

pythonでMySQLへアクセス

はじめに

pythonからMySQLにアクセスできたら便利だな。いろいろプログラムを書いて遊べる。

環境

Server: GentooLinux2005.1(amd64) , MySQL4.0.25
サーバにはユーザを用意し、データベースとテーブルをひとつ作成しておく。
Client: WindowsXP,python2.4
クライアントには、MySQLのサイトからODBCドライバをインストール。
更に、ここから”MySQL for Python”を持ってきて入れておく。

pythonでアクセスしてみる

WindowsのスタートメニューからPythonIDLEを起動。pythonはプログラムをファイルにすることなくシェルから直接実行できるのが強み。
>>>がプロンプト、###は私が入れたコメント。
>>> import MySQLdb
>>> db = MySQLdb.connect(”ServerHostName”,”UserName”,”Password”,”DatabaseName”)
### ↑これの”"内は、サーバ側で用意した物に置き換える。ホスト名(多分IPアドレスも可)、ユーザ名、パスワード、データベース名。
>>> c = db.cursor()
### ↓ table1というテーブル(列には[id(int),a(str),b(str)]がある)を読み出してみる。
>>> c.execute(”select * from table1″)
2L
### ↑ 2行読めたらしい
>>> c.fetchone()
(1L,’tako’,'kurage’)
### ↑ 一レコード目
>>> c.fetchone()
(2L,’ebi’,'kani’)
### ↑ 二レコード目
### データを追加してみよう。
>>> c.execute(”"”insert into table1(ID,a,b) values(%s,%s,%s)”"” , (4,”hora”,”horara”))
1L
### ↑ 一レコード追加に成功した。

参考にしたページたち

なんかのカンファレンスの資料らしい
python Database API

folder_listingの改造

PloneでURLにフォルダを指定した場合、フォルダの内容が一覧される。これは、フォルダにはデフォルトで”folder_listing”と いうテンプレートが対応しているからである。このテンプレートを使うと、フォルダ内のアイテムをすべてリストアップしてくれる。Page中に使った画像 ファイルも一覧されてしまうので、かっこ悪い。このテンプレートを改造して、画像が出ないようにしたい。
ZMIからplone/portal_skins/plone_content/folder_listingを”customize”する。customizeフォルダにコピーされたテンプレートを以下のように改造する。
(改造前)実際にフォルダの内容を書き出すループの前に、こんなコードがある。

<metal:listingmacro define-macro="listing">
<tal:foldercontents define="contentFilter contentFilter|request/contentFilter|nothing;
                    limit_display limit_display|request/limit_display|nothing;
                    more_url more_url|request/more_url|string:folder_contents;
                    contentsMethod python:test(here.portal_type=='Topic', here.queryCatalog, here.getFolderContents);
                    folderContents folderContents|python:contentsMethod(contentFilter);
                    use_view_action site_properties/typesUseViewActionInListings;
                    over_limit python: limit_display and len(folderContents) > limit_display;
                    folderContents python: (over_limit and folderContents[:limit_display]) or folderContents;
                    show_about python:not isAnon or site_properties.allowAnonymousViewAbout">

ここでコンテンツ一覧取得しているのだが、注目するのはここでは二行目にあるcontentFilter。これに「文書とフォルダだけよ」と書ければ万事解決。なので、どう書くかというと、

<tal:foldercontents define="contentFilter python:{'portal_type':('Document','Folder')};

こんな感じ。書き換えるのは、この一行だけ。
この改造をしてしまうと、全てのfolder_listingが影響を受けてしまうので、”folder_listing_document_only”などとrenameしておいて、特定のフォルダだけテンプレートを変えればよりグッド。

(あ とがき) 今回はコード中に無理矢理フィルタにセットしてしまったが、もっとエレガントな方法があるはず。例えば、ブラウザからURLに”http: //shonan-maguro.com/homeserver?portal_type=Document”とか指定すれば、文書だけがリストアップさ れる。これをうまく使えば良いのかな。。。もう少しPloneの事が解るようになってから考えましょう。。

Zopeのアップデート

ploneが動いているのはZopeの上。2005Oct13に新しいZope2.8.2がリリースされた。なんか沢山バグフィックスが行われているみたいなので、アップデートしてみよう。

  1. zope.orgから新しいZope(Zope-2.8.2-final.tar.gz)を頂いてくる。
  2. 展開 % tar xvzf Zope-2.8.2-final.tar.gz
  3. コンフィグ。インストール先を指定する。
    % ./configure/ –prefix=/home/hogehoge/zope282
  4. ビルド % make
  5. インストール % make install
  6. インスタンス作成 % /home/hogehoge/zope282/bin/mkzopeinstance.py
  7. 起動確認 % /home/hogehoge/zopeinst282/bin/runzope
    確認が出来たら一度落として、、
  8. データを移行
    % cp /home/hogehoge/zopeinstance_old/var/Data.fs /home/hogehoge/zopeinst282/var
    % cp -rf /home/hogehoge/zopeinstance_old/Products/* /home/hogehoge/zopeinst282/Products
  9. 起動確認

ビデオiPod

ビデオiPodが出た。それにしてもあの薄さはたいした物。なんであんなに薄くできるのか不思議。液晶は2.5インチらしい。ちょっと小さいかな。自分で録画したmpeg2のビデオは取り込めるのだろうか。。。

更新日付表示をページの末尾に

タイトルのすぐ後に「作成者と更新日付」が出るが、これが結構じゃま。出ないようにすることも出来るが、折角なのでページの最下に出すようにする。
ページはdocument_viewテンプレートで作成されているので、

  1. ZMIで/ploneサイト/portal_skins/plone_content/document_viewを開いて”customize”ボタンを押す。
    → /ploneサイト/portal_skins/custom/document_viewが出来る。
  2. 日付を生成している行を下に移す。
    日付を生成しているのは

    <div metal:use-macro="here/document_byline/macros/byline">
     Get the byline - contains details about author and modification date.
    </div>

    なので、この3行を

    <div metal:use-macro="here/document_relateditems/macros/relatedItems">
      show related items if they exist
    </div>
    
    <div metal:use-macro="here/document_byline/macros/byline">
      Get the byline - contains details about author and modification date.
    </div>
    
    </tal:main-macro>
    </metal:main>

    このように、ページの最後に移動する。

  3. 全てのページで最下に表示されるので良いのであれば、上記で完了。
    特定のページだけ最下に表示したいのであれば、このテンプレートを改名して”document_view_datetail”などとしておこう。
  4. 更に日付表示を右寄せにすれば、plone.orgのサイト風になる。

Next »