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

find 検索

1151 - 1160 / 1320    [|<]  [|<]  [<]  111  112  113  114  115  116  117  118  119  120   [>]  [>|][>|]
タイトル/名前 更新者 更新日
日記/2009/03/16/Pythonの関数でstaticな変数を使いたい時 msakamoto-sf 2009-03-16 00:52:23
日記/2009/03/15/Pythonでのオブジェクト指向プログラミングについてメモ msakamoto-sf 2009-03-16 00:32:05
日記/2009/03/12/ATOK17が「地域と言語」からも消えた→標準IME設定ツールで復旧 msakamoto-sf 2009-03-12 00:10:49
Python/codepiece/関数(1) msakamoto-sf 2009-03-09 08:05:16
日記/2009/03/09/TeraTermのコマンドラインオプションは意外と便利 msakamoto-sf 2009-03-09 02:27:25
日記/2009/03/09/"nkf --guess"で文字コード判定って初めて知った。 msakamoto-sf 2009-03-09 01:56:25
日記/2009/03/09/Dynampis - Cisco 7200 Simulator msakamoto-sf 2009-03-09 01:50:59
日記/2009/03/09/Webで「ロード中」とかの「ぐるぐる」GIFアイコンアニメを生成してくれるサイト msakamoto-sf 2009-03-09 01:31:25
日記/2009/03/01/プログラミング言語の名前って頭大文字? msakamoto-sf 2009-03-01 14:09:36
日記/2009/03/01/WinXP, Apache2.0, Python2.5 でのmod_pythonインストール成功 msakamoto-sf 2009-03-01 14:04:22
ソート項目 / ソート順     1ページ 件ずつ表示

日記/2009/03/16/Pythonの関数でstaticな変数を使いたい時  

所有者: msakamoto-sf    作成日: 2009-03-16 00:48:33
カテゴリ: Python 

あるにはあるんですが、結局クラス作ってどーたらこーたらで仰々しい。

というかstatic変数ってある種グローバルな変数なので、いっそ関数オブジェクトの属性として入れておけば良いんじゃないのか、と思ってこんな感じにしてみた。

>>> def f1(a1, sd='ABC'):
...   if not hasattr(f1, 'hoge'):
...     f1.hoge = sd
...   f1.hoge = f1.hoge + a1
...   return f1.hoge
...
>>> f1('abc')
'ABCabc'
>>> f1('def')
'ABCabcdef'
>>> f1('ghi')
'ABCabcdefghi'

"sd"というのは"Static Default"の略。

・・・これで良いような気がするんだけど、どうなんだろう。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2009-03-16 00:52:23
md5:cb0918a93b187507472e49a6989ef894
sha1:9eb21e8216f487dd1d81fa1aac4f863fc64f5c8b

日記/2009/03/15/Pythonでのオブジェクト指向プログラミングについてメモ  

所有者: msakamoto-sf    作成日: 2009-03-15 23:41:16
カテゴリ: Python 

まず参考サイトから。

大変参考になりました。これらの記事を書かれた皆さん、ありがとうございます。

なんというか・・・非常に簡潔な作り。C++とかJavaというよりは、JavaScriptとかPerlに近い。個人的な感覚ではPerlに似てるなぁ、と思う。Perlはリファレンスに対してパッケージでblessするという書いててもよく分からないんだけどとにかくそんなことをしてるんだけど、Pythonの場合は名前空間に対してClass名をbindするという感じで、多少の階層や概念の齟齬はあれど感覚的にはよく似てると思った。

だから、逆に言えば隠蔽機能は皆無に近いみたい。やろうとするとPerlと同じ感じで、特殊メソッドを使ってかなりガリガリマジックを駆使する必要が有るっぽい。簡潔な作りは簡潔に利用する方がいい気がする。せっかく覚えることを減らしてくれてるんだから。

Pythonドキュメントで言えば、Win版2.5でのCHMヘルプの章立てで示すと以下の辺りが参考になる。

  • "Library Reference" -> "2. Build-in Objects"
    • dir(), property(), classmethod(), staticmethod(), type() あたりが興味深い。
  • "Library Reference" -> "3. Build-in Types" -> "3.12 Special Attributes"
    • __dict__, __class__, __bases__, __name__ というオブジェクトの特殊属性の解説。
  • "Library Reference" -> "5. Data Types" -> "5.16 new"
    • インスタンス生成の為のローレベル関数。コア。
  • "Language Reference" -> "3. Data model" -> "3.2 The standard type hierarchy"
    • "Callable Types"の"User-defined functions"と"User-defined methods"は重要。前掲の「クラスの挙動のまとめ #2」の「メソッドオブジェクト」項と併せて読むと理解が深まる。
  • "Language Reference" -> "3. Data model" -> "3.4 Special method names"
    • __init__や__new__など、拡張の為の特殊メソッド名の解説。

あと、結局 __init__() とかインスタンスメソッドの第一引数で使う"self"という奴、予約語というわけじゃないのだから、"this"とかにしてもOKじゃね?と思ったら本当にOKだった。

>>> class C1(object):
...   v1 = 'abc'
...   def m1(this): print "Hello, " + this.v1
...
>>> o1 = C1()
>>> o1.m1()
Hello, abc

ちなみに以下のような実験で、どうやらインスタンス生成ではクラスオブジェクトの名前空間(__dict__)がコピーされてインスタンスの名前空間に引き継がれているようではあるが、未調査なので何とも言えない。

>>> class C1(object):
...   v1 = 'abc'
...   def m1(self): print 'Hello, ', self.v1
...
>>> o1 = C1()
>>> o1.m1()
Hello,  abc
>>> o1.v1 = 'ABC'
>>> C1.v1
'abc'
>>> o1.m1()
Hello,  ABC
>>> o2 = C1()
>>> o2.m1()
Hello,  abc
>>> C1.v1 = 'DEF'
>>> o3 = C1()
>>> o3.m1()
Hello,  DEF
>>> o1.m1()
Hello,  ABC

o1オブジェクトのv1属性を書き換えても、C1(クラス)オブジェクトのv1属性は変わっていない。このため、o2で新たにインスタンスを生成しても、最初の"abc"が引き継がれている。一方、C1オブジェクト側でv1属性を変更した後o3でインスタンスを生成すると、変更された値が引き継がれている。当然、o1のv1属性は先に変更した値のままである。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2009-03-16 00:32:05
md5:49bdd1468c51a1546f10251b3a03785c
sha1:a1ec0338af6fbe5e8d8c6a86f0e4b0d5ea25c0c6

日記/2009/03/12/ATOK17が「地域と言語」からも消えた→標準IME設定ツールで復旧  

所有者: msakamoto-sf    作成日: 2009-03-12 00:07:15
カテゴリ: Windows 

昨日から、いきなりATOKが立ち上がらなくなった。
再起動しても駄目。
どこかでMS-Officeの設定とか変わったか弄ったか?と、コンパネの「地域と言語」で切り替えようと思っても、何故かATOKが出てこない。

先日、2-3個のアプリを削除したのだけど、誤ってATOKも消してしまったか?と「プログラムの追加と削除」を見てもちゃんと有る。

少しGoogleをさまよった後、駄目元でスタートメニューのATOKから「ATOK17標準IME設定ツール」をクリックしたら、暫くしてATOKのいつものタスクトレイアイコンが出てきて、使えるようになった。

何だったんだ・・・。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2009-03-12 00:10:49
md5:69cb109c082f2ad6ba61a8df801a11f6
sha1:4703271b60eb5c4711d0cc09bb34c97da2ed3a2a

Python/codepiece/関数(1)  

所有者: msakamoto-sf    作成日: 2009-03-09 07:52:29
カテゴリ: Python 

関数定義の文例集

引数無し or 単純な引数

def f1():
  print "Hello f1!"
def f2(name):
  print "Hello " + name + "!"

f1()
f2("Huga")


Hello f1!
Hello Huga!

デフォルト引数

def f3(a1, a2 = 'default'):
  print "a1 = " + str(a1)
  print "a2 = " + str(a2)

f3(123)
f3(456, 789)


a1 = 123
a2 = default
a1 = 456
a2 = 789

デフォルト引数とキーワード引数

def f4(who, greet = "Hello", times = 5):
  print greet * times, 
  print ", " + who

f4("Taro", "Bonjour", 3)
f4("Hanako", greet = "Good Night", times=2)
f4("Fuga", times=3)
f4("Bohe", greet = "Good-Bye")


BonjourBonjourBonjour , Taro
Good NightGood Night , Hanako
HelloHelloHello , Fuga
Good-ByeGood-ByeGood-ByeGood-ByeGood-Bye , Bohe

可変引数

def f5( a1, *args):
  print repr(a1)
  print repr(args)
  for i in args:
    print i

f5(1, 2, 3)
f5(*(4, 5, 6))


1
(2, 3)
2
3
4
(5, 6)
5
6

内部的にはタプルとして渡ってくる。

可変キーワード引数

def f6(a1, a2, **opts):
  print "a1 = " + str(a1)
  print "a2 = " + str(a2)
  for (k, v) in opts.items():
    print str(k) + " = " + str(v)

f6('foo', 'bar', buz = 'hoge', aaa = 123)


a1 = foo
a2 = bar
buz = hoge
aaa = 123

再帰によるfor文を使わないループ処理

Erlangを勉強した事があったので、こういう小手先技も思いつきました。

def f7(*l):
  head = l[0]
  r = l[1:]
  print head
  if len(r) != 0:
    f7(*r)

f7(1, 2, 3, 4, 5)


1
2
3
4
5


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2009-03-09 08:05:16
md5:4d3b86cd0b00128f46973ce46dbf8360
sha1:4d4460e90682590bd3cab693442a8d29a98797f3

日記/2009/03/09/TeraTermのコマンドラインオプションは意外と便利  

所有者: msakamoto-sf    作成日: 2009-03-09 02:10:06
カテゴリ: ネットワーク 

TeraTermについては、昨年(2008)末、

というのが発生し、このとき「TeraTermはCTRモードに対応してないので、PuTTY使うしかない」とか騒がれたのが記憶に新しかったりする。

とはいえ、TeraTerm(正確にはTTSSH)の方も2008.12.16の TeraTerm 4.61 にてちゃんとCTRモードに対応してくれたようで、一安心です。

個人的には、PuTTYで接続先毎にキーファイル名やSSHの設定を保存できるのが好きだったりするのですが、現場ではTeraTermという場面も多い。そういった時に、一々キーファイルやSSHのバージョンをTeraTerm起動して最初に表示されるダイアログでマウスクリックして指定するのは面倒です。

TeraTermの、正確にはttermpro.exeにはコマンドラインオプションが用意されており、それをショートカットとかで指定しておけば、後は接続先ホストとパスワードを入力するだけでOKになったりして便利ですので、メモ。
(実際はTeraTermの、というよりはTTSSHのコマンドラインオプションです。)
例えば社内限定と言うことでSSHバージョン1で、鍵ファイルは全サーバ共通で、ユーザ名も共通の場合は

ttermpro.exe
    /ssh
    /1
    /user=ログインユーザ名
    /auth=publickey
    /keyfile=秘密鍵ファイル名
    /ask4passwd

としておけば、後はホスト名とパスフレーズだけの入力になります。

TeraTermのコマンドラインオプションについては添付の日本語ヘルプにも載っていますが、TTSSHのコマンドラインオプションの方は手元の4.49には英語版ヘルプにしか載っていませんでした。アップグレードしろよという話ですが、自宅の手元のPCではPuTTYしか使ってませんので・・・。(;´Д`)

取りあえず以上、なわけで、TeraTermユーザも4.61にアップグレードした上で、結構便利に出来るかもです、という感じです。TeraTermとPuTTYじゃ使われ方も微妙に違うような気もしますが。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2009-03-09 02:27:25
md5:192ff96ac09b47578f30332cef7cda62
sha1:70cf4df58277984b9a199aea988b24133ad24e44

日記/2009/03/09/"nkf --guess"で文字コード判定って初めて知った。  

所有者: msakamoto-sf    作成日: 2009-03-09 01:53:26
カテゴリ: Linux 

先日、出向いている現場の人に教えて貰いました。

nkf --guess

これで文字コード判定してくれる。
うわー、nkfコマンドを知ってから実に6年以上経ってるけど、初めて知りました。現場ではFreeBSD5を使っているのですが、手元のLinux環境で"nkf --help"してみたら、"Network Kanji Filter Version 2.0.8 (2007-07-20)" でちゃんと"--guess"アリです。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2009-03-09 01:56:25
md5:00b864c07687735d540c71ce3bf599b0
sha1:088264a2a439501f459ccede6ca0c5a65257c7d4

日記/2009/03/09/Dynampis - Cisco 7200 Simulator  

所有者: msakamoto-sf    作成日: 2009-03-09 01:48:46
カテゴリ: ネットワーク 

全く関係ないコンテキストで検索している最中、"Dynamips"というCisco 7200ルーターをWindows上でシミュレートできるアプリの存在を知った。面白そうだったのでメモ。

特にCiscoルータを扱ったり勉強しようという気は無いのだけれど、単純に面白そうだったのでメモ。止まり。


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

日記/2009/03/09/Webで「ロード中」とかの「ぐるぐる」GIFアイコンアニメを生成してくれるサイト  

所有者: msakamoto-sf    作成日: 2009-03-09 01:26:03
カテゴリ: HTML Web 

今出向いている現場の人に教えて貰いました。

いずれも、FlashとかJavaScriptで最近よく見かける、「Now Loading...」の意味のぐるぐる回るGIFアニメを、色や「ぐるぐるタイプ」、サイズをチョイスして生成できます。いずれもライセンスは「Free for use」なので、商用サイトでも使用できると思います。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2009-03-09 01:31:25
md5:557d5b3fc3ff85858c4c6188eca8404b
sha1:d3730fa6d7177e5f339d28c45f282a0f947141be

日記/2009/03/01/プログラミング言語の名前って頭大文字?  

所有者: msakamoto-sf    作成日: 2009-03-01 14:07:14
カテゴリ:

C, Java, Pascal, Python, PHP, Perl, Ruby, Lisp, Scheme, Erlang, Basic, Lua, Io, JavaScript, Fortran, Cobol, ...

全部頭が大文字。固有名詞だから?

小文字から始まるプログラミング言語ってあるのかなぁ?でも英語の文法的にそれってアリなのかな?


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2009-03-01 14:09:36
md5:bd78bad80e3985f92831b280924b4277
sha1:5d3dfdde168c0942e35246739e1ca9d439facd4d

日記/2009/03/01/WinXP, Apache2.0, Python2.5 でのmod_pythonインストール成功  

所有者: msakamoto-sf    作成日: 2009-03-01 13:55:36
カテゴリ: Python 

前回 日記/2009/02/22/WinXPのApache2.0へのPython2.5用mod_python.soのインストールが上手く行かない。 の続きですが、ふと、Apache2.0のバージョンを上げてみたらどうだろう?と、最新の 2.0.63 に上げてみたらあっけなく動いてしまいました。前のは 2.0.50 と結構昔のやつでしたので、それが原因だったのかも。

PHPとも共存できてます。Python2.5/Python2.6両方入れて動いてます。
というわけで、インストール成功。

次はフレームワーク・・・と行きたいところで、DjangoとかTurboGearsとかWeb.pyとか色々ありそうなのだけれど。
でもその前に、そもそもPythonとWebサーバとの接続点がいくつかあるらしくて、そこを見てからにしたい・・・。

CGIから、FastCGIから、mod_pythonから、あとWSGIというPython系での標準WebI/Fの仕掛けとかもあるらしくて、しかも混在しているらしくって、少し整理してからの方が良いかも。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2009-03-01 14:04:22
md5:4ee27e411fa9bbfd00f2f9a7f858d99c
sha1:9b1e4ba40d7d3d697f31d56d5ac203da2f070d11