2009/11/24(火)Goのinstall

google先生が開発中のGoを使ってみた

install

installing Goに一通り書いてあるので、その通りにするだけ

環境設定

goを入れるディレクトリを作成し、環境設定
ついでに、homeにbinディレクトリを作成*1

$ mkdir $HOME/go
$ mkdir $HOME/bin

~/bash.rcに設定を追記

# go
export GOROOT=$HOME/go
export GOARCH=amd64
export GOOS=linux

export PATH="$PATH:$HOME/bin"

リポジトリからDL

pythonまわりのツールが入って無かったのでインストールしてからDL

# apt-get install python-setuptools python-dev
# easy_install mercurial
$ hg clone -r release https://go.googlecode.com/hg/ $GOROOT

コンパイルしてインストール

bisonとか入ってなったのでインストールしてからコンパイル
環境によっては、他にも入れるものがあるかも

# apt-get install bison
$ cd $GOROOT/src
$ ./all.bash

最後に、

--- cd ../test
1 known bugs; 0 unexpected bugs

と出て
binフォルダにコンパイラとかインストールされて終了
って、既知のバグが残ってるのね...

*1 : ここにgoのコンパイラとか入る。イヤなら$GOBINにbinのパス指定

hello world

exampleのとおりに書いてコンパイルしてみる

$ vi helloworld.go
$ 6g helloworld.go
$ 6l helloworld.6
$ 6.out
hello, world
$

というわけで無事実行できました

疑問とか

6gがコンパイラ、6lがリンカってことは何となく分かるけど、他の2つ(6c, 6a)は何だろう
そのうち、マニュアルとか見てみることにする

2009/03/02(月)zope

# apt-get install python-dev
$ wget http://peak.telecommunity.com/dist/ez_setup.py
# python2.4 ez_setup.py
$ wget http://download.zope.org/distribution/ZConfig-2.4a2.tar.gz
$ easy_install2.4 --install-dir='ZOPE/lib/python/' ZConfig-2.4a2.tar.gz
$ wget http://download.zope.org/distribution/zdaemon-1.4a2.tar.gz
$ easy_install2.4 --install-dir='ZOPE/lib/python/' zdaemon-1.4a2.tar.gz
$ wget http://pypi.python.org/packages/source/p/plone.app.blob/plone.app.blob-1.0b2.tar.gz#md5=3a438c29ed34f819aea7983340eddd2c
$ easy_install2.4 --install-dir='ZOPE/lib/python/' plone.app.blob-1.0b2.tar.gz

2009/02/23(月)cookie

set

self.context.REQUEST.RESPONSE.setCookie('name', 'value', path='/', expires='')

get

self.context.REQUEST.has_key('name')でチェック
trueならばデータがあるので
self.context.REQUEST['name']で取り出し

消し方

よく分からないけど、
self.context.REQUEST.RESPONSE.setCookie('name', '', path='/', expires='Thu, 1-Jan-2000 00:00:00 GMT')
とかでいいのかな

2009/02/21(土)自作プロダクト

ログビューワー

プロダクトとして登録(インストール)できるようになった。
でも、削除(アンインストール)はできない。
...イイカナ?

自作プロダクト

上のLog Viewerが自作のプロダクト。
下にあるZip File Transportのソースを元に改変したものになってるので、一部ゴミが残ってる。一応余計なインターフェースは消せているはず < 未確認

メモ

どこかに依頼したい内容

  • メッセージの作成(日本語/英語)
  • アイコンの作成 (16x16 GIF)

i18n

ploneに登録が必要?

2009/02/18(水)ZipFileTransport

Export

plone/Products/ZipFileTransport/browser/zipexportのaction_exportがエクスポートの実体
ここで、ログを取る

84: for x in paths:
ループでファイルリストを生成
-> ファイルサイズのチェックを追加
94: if self.context.portal_...
ユーザ認証
-> ファイルサイズのチェックも同時に行う?

画面

plone/Products/ZipFileTransport/browser/export_widget.pt
plone/Products/ZipFileTransport/browser/zipexport.py

2009/02/18(水)ploneへのパッチ

アクションボタンをすべてのページで表示する

アクションボタンの表示

plone/lib/python/plone/app/content/browser/foldercontents.py
201: if self.context.cb_dataValid():

201: if self.context.cb_dataValid() or 1:

importだけ表示 2009/02/27

ZipFileTransportに含まれるImportボタンです

Importボタンの表示

plone/lib/python/plone/app/content/browser/foldercontents.py
200:    if not len(self.items):
201:        if self.context.cb_dataValid():
202:            for button in button_actions:
203:                if button['id'] == 'paste':
204:                     return [self.setbuttonclass(button)]
205:        else:
206:            return []
↓
200:    if not len(self.items):
201:        if self.context.cb_dataValid():
202:            for button in button_actions:
203:                if button['id'] == 'paste' or button['id'] == 'import':
204:                    buttons.append(self.setbuttonclass(button))
205:            return buttons
206:        else:
207:            for button in button_actions:
208:                if button['id'] == 'import':
209:                    return [self.setbuttonclass(button)]
210:            return []

2009/02/18(水)ploneのキャッシュ

pyスクリプトをキャッシュしてる
pyc消してもダメ
メモリ上にキャッシュしてるか、他にファイルをおいてる

キャッシュするプロダクトの時間を短くすればいいのかもしれない*1

けど、面倒なのでファイルを書き換えた場合は(py書き換えた場合は)pyc消して、zope再起動したほうが早いし確実

*1 : /manage/のHTTPCCacheとかRAMCacheとかREsourceRegistryCacheあたり?

追記

ptはキャッシュしてないのでサーバ再起動は要らない...たぶん

2009/02/16(月)フォルダーコンテンツ

フォルダにあるファイル一覧を表示するビュー

plone(instanceのフォルダ)/lib/python/plone/app/content/browser/foldercontents.pt

カスタマイズ

/plone/manage_main にアクセス
portal_view_customizations
zope.interface.Interface > folder_contents
<div tal:replace="structure view/contents_table">

contents_tableの実装

plone(instanceのフォルダ)/lib/python/plone/app/content/browser/foldercontents.pyの27~?

テーブル本体は
plone(instanceのフォルダ)/lib/python/plone/app/content/browser/table.pt

このフォルダには~

plone(instanceのフォルダ)/lib/python/plone/app/content/browser/table.pt
18-23行目

コピー、カット、名前を変更など

plone(instanceのフォルダ)/lib/python/plone/app/content/browser/foldercontents.pyの193~?ちがうっぽい
plone(instanceのフォルダ)/lib/python/plone/app/content/browser/table.ptの183-
ここで、呼び出している使っているview/buttonsがどこか何か分からない
table.ptを開く前に定義済みなのかな?

あってた
plone(instanceのフォルダ)/lib/python/plone/app/content/browser/foldercontents.pyの201行目付近 self.context.cb_dataValid()でチェックしてるので、ここを常に真にしてしまえばよさげ*1

*1 : cb_dataValid() or 1

2009/01/22(木)Visual C# 2008

VC++は一通りかじってあるけど、.NETを使ってフォームアプリケーションを作ろうとするとさっぱり分かりません。
google先生で十分かと思ってたけど、適当なマニュアル本買ってきて読んだ方がいいかなぁ。