home ホーム search 検索 -  login ログイン  | help ヘルプ

find 検索

1161 - 1170 / 1320    [|<]  [|<]  [<]  111  112  113  114  115  116  117  118  119  120   [>]  [>|][>|]
タイトル/名前 更新者 更新日
日記/2009/03/01/jQueryのattrメソッドでonClickを設定しようとしたけどIE7で無理でした。 msakamoto-sf 2009-03-01 00:26:50
JavaScript/PageNavi(2) msakamoto-sf 2009-03-01 00:16:05
日記/2009/02/25/Pythonのクラスで__call__という特殊属性を使うとクロージャっぽくできそう msakamoto-sf 2009-02-25 08:02:54
日記/2009/02/22/WinXPのApache2.0へのPython2.5用mod_python.soのインストールが上手く行かない。 msakamoto-sf 2009-02-22 22:29:03
Python/インデントにタブ文字と空白は混ぜるな危険 msakamoto-sf 2009-02-22 21:10:10
Python/無視される空行について msakamoto-sf 2009-02-22 20:52:17
Python/行折り返しが自動認識されるタプル、リスト、辞書、関数コール msakamoto-sf 2009-02-22 20:31:17
Python/行を途中で折り返す(明示的な行継続) msakamoto-sf 2009-02-22 20:11:48
日記/2009/02/22/Tracでrestrict_ownerをtrueにした時の注意メモ msakamoto-sf 2009-02-22 16:00:43
日記/2009/02/22/TracWebAdminのzipをeasy_installで入れる時の注意メモ msakamoto-sf 2009-02-22 15:54:21
ソート項目 / ソート順     1ページ 件ずつ表示

日記/2009/03/01/jQueryのattrメソッドでonClickを設定しようとしたけどIE7で無理でした。  

所有者: msakamoto-sf    作成日: 2009-03-01 00:18:37
カテゴリ: JavaScript 

jQueryの1.2.6/1.3.2 で試したんですが、 JavaScript/PageNavi(2)を作っていた時に、<a>タグのonClickを動的に設定しようとして

$('#abc').attr('onclick', 'window.alert(123);');

とかしてみたんです。

Firefox2とOpera9では動いてくれたんですが、IE7で動きませんでした。jQueryのコードは追ってないので簡単な「できなかったよ」報告になってしまいますが、やっぱり素直に

$('#abc').click(function(event) { window.alert(123); });

としないと駄目ッスね。

そもそも何でそんな変なことしようとしたのかというと、onClick時にJsPrevNextPagerのclicknext()を呼びたいのですが、JsPrevNextPager()に渡すIDをどうやって指定しようかということで、ものは試しに 'onClick' 属性に文字列でJavaScriptを指定して、そこで動的にIDを埋め込もうとしたわけです。
イメージ的にはこんな感じにしようとしてました。

$('#' + this.id_next + ' a').attr('onClick', 'JsPrevNextPager(' + this.id + ').clicknext();');

Firefox/Operaで動いて「ヤッター」と喜んだのも束の間、IE7で玉砕し、動くコードに辿り着くまで実に5時間もかかってしまいました。スコープ絡みで色々つっかかりました。今時駄目すぎですが、とりあえず以上。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2009-03-01 00:26:50
md5:bae136ca2e01f0e4498fa94981af4e70
sha1:1e5d3cfbf5179a77f95f7d5e07c84729a39d49f0

JavaScript/PageNavi(2)  

所有者: msakamoto-sf    作成日: 2009-03-01 00:10:35
カテゴリ: JavaScript 

前回(JavaScript/PageNavi(1))の改良版です。前/次で辿っていき、端っこまで来た時にも(CSSでごまかしているとはいえ)リンクのままは気持ち悪い、ということでどうしようかと弄っているうちに、かなり書き換わってしまいました。

というわけで、「前へ」「次へ」のリンク状態/端っこの時の非リンク状態をオブジェクトのメンバに持たせるようにしちゃいました。リンクのクリックイベントについてはライブラリ側で動的に設定してしまいます。

(全て表示する)
プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2009-03-01 00:16:05
md5:87850e8216eb506a71d8f3b959a2c6f8
sha1:7590dcb7475d9a95e5bb9436e0d07ab116a1efef

日記/2009/02/25/Pythonのクラスで__call__という特殊属性を使うとクロージャっぽくできそう  

所有者: msakamoto-sf    作成日: 2009-02-25 07:59:14
カテゴリ: Python 

インスタンス生成がnew無しで関数呼び出しのようにできる、というのもあって、呼び出す部分についてはクロージャのようにしか見えない。

>>> class Klass(object):
...   def __init__(self, a):
...     self.a = a
...   def __call__(self, n):
...     return n + self.a
...
>>>
>>> k = Klass(10)
>>> k(20)
30

ところでこのコードを入力していたのは、対話形式で立ち上げていたPythonなのだけれど、途中で__call__の中身を間違えてしまい、そのままもう一度class宣言し直したら動いた。
・・・あれ?二重宣言でエラーじゃないの?
これも気になるナー。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2009-02-25 08:02:54
md5:26d8438e6740f1f87e22940f15aa07f9
sha1:8e1099c1402715dd217ebe8f1694e0bbe61abd7c

日記/2009/02/22/WinXPのApache2.0へのPython2.5用mod_python.soのインストールが上手く行かない。  

所有者: msakamoto-sf    作成日: 2009-02-22 22:19:36
カテゴリ: Apache Python 

http://www.modpython.org/
から、
mod_python-3.3.1.win32-py2.5-Apache2.0.exe
をDLしてきてインストールしてみた。Python2.5のディレクトリは正常に認識できて、mod_python.soもApache2のmodulesディレクトリに追加されていたので、

LoadModule python_module modules/mod_python.so

を追加して

apache -f conf\httpd_php4.conf -t

したら・・・

Syntax error on line 54 of C:/Program Files/Apache Group/Apache2/conf/httpd_common.conf:
Cannot load C:/Program Files/Apache Group/Apache2/modules/mod_python.so into server: 
\x8ew\x92\xe8\x82\xb3\x82\xea\x82\xbd\x83v\x83\x8d\x83V\x81[\x83W\x83\x83\x82
\xaa\x8c\xa9\x82\xc2\x82\xa9\x82\xe8\x82\xdc\x82\xb9\x82\xf1\x81B

で起動しない。
最後の16進数をPHPで戻してみたら「指定されたプロシージャが見つかりません。」とのこと。英語だと "The specified procedure could not be found." になるので、色々GoogleであたってみたけどHitが無い。
mod_python.so側のバージョンとPythonのランタイムDLLのバージョンが違っていたり、ランタイムDLLがPATHに無かったり、他のアプリが自前で入れたPythonXX.dllがPATH上で先にヒットするのが主たる要因らしいのだけれど。

Python25.dllもちゃんと C:\WINDOWS\System32 の中にあるし、Apacheのバージョンもあっている。
というか、Python25.dllをapache.exeと同じディレクトリに置いて、そのディレクトリにCDして設定ファイルのテストを行っている。Winの場合、DLLの検索パスは実行ファイルと同じディレクトリ内が最初になるので、これで問題ないはず。

・・・もしかしてPython2.6も一緒に入れているのが不味いのか?C:\WINDOWS\System32\Python26.dllがあるし・・・。

とりあえず今夜はここら辺にしておくけど、またやる気が出てきたらPython2.6をアンインストールして実験してみよう。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2009-02-22 22:29:03
md5:b5fdd726d90c112bb4d22a1dd4883382
sha1:75d9a3cfa47e80a535182721c3ed80a870f1996d

Python/インデントにタブ文字と空白は混ぜるな危険  

所有者: msakamoto-sf    作成日: 2009-02-22 20:56:56
カテゴリ: Python 

分かりやすくタブ文字を "(\t)", 空白をアンダースコア "_" で表記しますが、インデントで面白いことが出来ます。

if True:
(\t)print 'abc' # TAB文字1つでインデント
________print 'def' # 空白8つでインデント


abc
def

ちゃんと動きます。何となく、ブロックって同じ文字で同じインデントだと思ってましたので、これはちょっと面白い。

ちなみに、空白4つにしてしまうと駄目なんです。

if True:
(\t)print 'abc' # TAB文字1つでインデント
____print 'def' # 空白4つでインデント


File "t_hoge.py", line 5
   print 'def'
             ^
IndentationError: unindent does not match any outer indentation level

言語仕様リファレンスに「インデント」というそのものズバリのページがありまして、それを読むとどうやらTAB文字は空白に置換され、その文字数は最初の非空白文字までの空白が8の倍数になるように調整されるそうです。
http://www.python.jp/doc/release/ref/indentation.html :

まず、タブは (左から右の方向に) 1 つから 8 つのスペースで置き換えられ、
置き換え後の文字列の終わりの位置までの文字数が 8 の倍数になるように調整されます
(Unixで使われている規則と同じになるよう意図されています)。
次に、空白文字でない最初の文字までのスペースの総数から、その行のインデントを決定します。

そんなわけで、TAB文字と空白インデントを混在させることは可能です。可能です、が・・・TAB文字を4桁とか2桁表示にしているエディタでは、見た目滅茶苦茶になって可読性が非常に悪くなります。

混ぜることは出来ますが、基本、混ぜるな危険ということで。

ちなみにPythonにくっついてくるライブラリは4文字空白インデントになっています。特に規約で定める必要がなければ、それに合わせれば良いと思います。



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2009-02-22 21:10:10
md5:1f90b6d14aa51fd7f0b6b6b0d33f35d3
sha1:a40e4284711858b1732cca420f04d5968a208ffe

Python/無視される空行について  

所有者: msakamoto-sf    作成日: 2009-02-22 20:39:59
カテゴリ: Python 

Pythonリファレンスマニュアルの言語仕様で「空行」というページがあります。
http://www.python.jp/doc/release/ref/blank-lines.html :

スペース、タブ、フォームフィード、およびコメントのみを含む論理行は無視されます
(すなわち、NEWLINE トークンは生成されません)。

こんな感じです。分かりやすくする為、タブ文字を \t で丸括弧で示しています。空白のインデントはアンダースコア(_)で示しています。

for x in range(5):
(\t)print x,
#comment
________# comment
____
(\t)(\t)(\t)# comment

(\t)print x,


0 0 1 1 2 2 3 3 4 4

結果はOKです。同じ実行ブロックとして2回ずつ同じ数値が表示されています。
面白いのは二回目表示のprintの直前で、これは空白もタブ文字も何もない、本当の空行です。これもちゃんと読み飛ばしてくれるんですね。

ちなみにフォームフィードは "\f" らしいですが、どうやってそんなの入力するんだよとか、そもそも初めて目にする制御文字で「次ページの先頭へ移動するようプリンタに指示するための制御文字」らしいのですが今時使わないんじゃないの?と、激しく謎ですが使わないので置いておきます。



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2009-02-22 20:52:17
md5:c57185326b611d4cd94d0a3c18614318
sha1:16b24ae4a7c05bdb919dd88b697da05a126fc8b4

Python/行折り返しが自動認識されるタプル、リスト、辞書、関数コール  

所有者: msakamoto-sf    作成日: 2009-02-22 20:25:03
カテゴリ: Python 

丸括弧(parentheses), 角括弧(square bracket), 波括弧(curly brace)の中は、バックスラッシュを使わなくとも行を折り返すことが出来ます。

1. タプルを作る時の丸括弧

t = ( #aaa
		'ABC', #bbb
'DEF' #ccc
, 123 #ddd
, 456, #eee
) #fff
print repr(t)


('ABC', 'DEF', 123, 456)

2. リストを作る時の角括弧

l = [ #aaa
'abc', #bbb
	'def', #ccc
		123, #ddd
456, #eee
] #fff
print repr(l)


['abc', 'def', 123, 456]

3. 辞書を作る時の波括弧

d = { #aaa
'abc' : [ #bbb
		1, 2 #ccc
, 3 #ddd
] #eee
, 'def' #fff
: #ggg
123 #hhh
, #iii
} #jjj
print repr(d)


{'abc': [1, 2, 3], 'def': 123}

4. 関数を呼ぶ時の丸括弧

def hello(s1, s2, s3):
	print "Hello %s, %s, %s" % (s1, s2, s3)

hello( #aaa
		'Foo' #bbb
, 'Bar', #ccc
	'Buz' #ddd
)


Hello Foo, Bar, Buz

かなり無茶な折り返しが可能です。実験の為、辞書のところなどぐちゃぐちゃな折り返しにしてみましたがちゃんと認識されました。
関数呼び出しの引数の部分を折り返せるのが心強いです。



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2009-02-22 20:31:17
md5:6569d8669afb622e2a4864cced02ba6f
sha1:fbba578360890aa86c527d5f8d530f9c572eb81c

Python/行を途中で折り返す(明示的な行継続)  

所有者: msakamoto-sf    作成日: 2009-02-22 20:02:17
カテゴリ: Python 

バックスラッシュを行末に置くことで、長い行を折り返すことができます。

v = 1 + 2 + \
3 + 4 + 5 \
	+ 6 + 7 \
		+ 8 + \
9 + 10

print v


55

if文の条件式も折り返せます。

if (3 == (1 + 2)) and \
(4 == (2 * 2)) \
	and \
(5 == (6 - 1)):
	print 'ok'


ok

面白いことに、折り返しの最中はインデントはぐちゃぐちゃでもOKみたいです。

for文の途中でも折り返せます。

s = "abc"
for c \
in s:
	print c


a
b
c

バックスラッシュの後ろにコメントを付けることはできません。

>>> 1 + 2 + \
... 3 + 4 + \ # comment
  File "<stdin>", line 2
    3 + 4 + \ # comment
                      ^
SyntaxError: unexpected character after line continuation character

#移行の行末がバックスラッシュの場合は、折り返し無効です。コメントの一部とみなされます。

>>> 1 + 2 #comment \
3

また通常の文をバックスラッシュで分割することもできません。

>>> 1 + 2 \ + 3 + 4
  File "<stdin>", line 1
    1 + 2 \ + 3 + 4
                  ^
SyntaxError: unexpected character after line continuation character

とりあえず行儀良くバックスラッシュを使えば、長い文も折り返して読みやすく出来ます。
一行80桁改行制限もクリアできそうです。



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2009-02-22 20:11:48
md5:69734d8d3f01e661d39332f32c6644cd
sha1:f518687d4270311a5e143ad2784c54f92baa0ea7

日記/2009/02/22/Tracでrestrict_ownerをtrueにした時の注意メモ  

所有者: msakamoto-sf    作成日: 2009-02-22 15:56:19
カテゴリ: Python 

詳しくは

見てね、なのだけれど。

TICKET_MODIFYを設定していない状態で一度ログインしてしまうと、その状態でセッション情報が載ってしまうらしく、trac-adminで後からTICKET_MODIFYしてもリストに出てこない。
trac-adminでTICKET_MODIFYをaddしたら、一旦「Settings」でユーザー名なりメールアドレスを適当な値で更新する。セッション情報が更新されるのかしらないが、これで担当者のリストに表示されるようになる。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2009-02-22 16:00:43
md5:bbd3b67211353c69f66f0379dd394bd6
sha1:0719863bf0961a9e16d8510b2a4675219c3497a0

日記/2009/02/22/TracWebAdminのzipをeasy_installで入れる時の注意メモ  

所有者: msakamoto-sf    作成日: 2009-02-22 15:33:45
カテゴリ: Python 

今の現場で使っているTracが0.10なので、WebAdminプラグインを入れようと、

TracWebAdmin-0.1.2dev_r4240-py2.4.egg.zip

をDLして、

# easy_install TracWebAdmin-0.1.2dev_r4240-py2.4.egg.zip

しようとしたら

Processing TracWebAdmin-0.1.2dev_r4240-py2.4.egg.zip
error: Couldn't find a setup script in TracWebAdmin-0.1.2dev_r4240-py2.4.egg.zip 

で怒られた。

少しGoogleで検索したら

というので既に報告されている。

これはバグでもパッケージングのミスでもなくて、easy_installは拡張子が".zip"だと、eggではなくソースパッケージと認識してしまうらしい。
単純に拡張子の".zip"を削ればOKとのことで、

# mv TracWebAdmin-0.1.2dev_r4240-py2.4.egg.zip TracWebAdmin-0.1.2dev_r4240-py2.4.egg
# easy_install TracWebAdmin-0.1.2dev_r4240-py2.4.egg

したら上手くいった。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2009-02-22 15:54:21
md5:bea674d5f7ca179a5104bddfe55f774c
sha1:27b84a60359e031425ef89128b52905213373e21