タイトル/名前 | 更新者 | 更新日 |
---|---|---|
画像/2008/03/04/bsd_keiretu.png | msakamoto-sf | 2009-03-29 22:07:21 |
日記/2008/03/24/LinuxでEthernetのスピードを確認(ethtoolコマンド) | msakamoto-sf | 2009-03-29 21:34:05 |
日記/2008/04/13/rakeコマンドの"-t"オプション | msakamoto-sf | 2009-03-29 21:30:17 |
日記/2008/04/13/Railsアプリのschema_infoテーブルとは? | msakamoto-sf | 2009-03-29 21:28:39 |
日記/2008/11/06/JCBのシステム刷新覚え書き | msakamoto-sf | 2009-03-29 21:08:23 |
Python/デバッガ(pdb)メモ | msakamoto-sf | 2009-03-29 20:54:21 |
日記/2009/03/29/sys.pathに追加する時の注意点メモ。 | msakamoto-sf | 2009-03-29 18:52:08 |
日記/2009/03/22/Pythonのオブジェクトの勉強、一段落 | msakamoto-sf | 2009-03-22 20:15:19 |
Python/Webフレームワーク,CMSメモ | msakamoto-sf | 2009-03-22 20:03:27 |
Python/codepiece/プロパティ, property() | msakamoto-sf | 2009-03-22 11:57:04 |
LANカードの10MbpsだのFull/Half Duplexだのをどう確認すりゃいいんじゃい、という話。
ethtoolとmii-toolという二種類があるようです。
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/610netchk.html
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=43428&forum=10&3
LANカードのMIIという機能を使っているらしく、対応してないカードだとNGみたいです。ん?MIIとethernetカード・・・どこかで記憶に引っかかる気がする。
とまれ、ethtoolの方はディストリによってはデフォで入ってない場合もあるので、パッケージリポジトリあさるか、なけりゃ手動コンパイルしてくれという感じみたい。
mii-toolの方は、なんか・・・GBpsに対応してないっぽい(少し情報古い)ので、よくわかんにゃい。
2004/10の記事:
「この先10年、20年のJCBを支える新システムは、高い拡張性と柔軟性を確保する必要がある」
南無。
CUIデバッガ"pdb"の使い方:
ディレクトリをsys.pathに追加しようとしてちょっと間違ったので、メモ。というかPythonの言語仕様的なモノで、注意っつーほどのモノではない。
間違い:
>>> import sys >>> sys.path += 'C:\in_vitro\python' >>> sys.path ['', 'C:\\WINDOWS\\system32\\python25.zip', 'C:\\Python25\\DLLs', 'C:\\Python25\\lib', 'C:\\Python25\\lib\\plat-win', 'C:\\Python25\\lib\\lib-tk', 'C:\\Python25', 'C:\\Python25\\lib\\site-packages', 'C', ':', '\\', 'i', 'n', '_', 'v', 'i', 't', 'r', 'o', '\\', 'p', 'y', 't', 'h', 'o', 'n']
正解:
>>> import sys >>> sys.path += ['C:\in_vitro\python'] >>> sys.path ['', 'C:\\WINDOWS\\system32\\python25.zip', 'C:\\Python25\\DLLs', 'C:\\Python25\\lib', 'C:\\Python25\\lib\\plat-win', 'C:\\Python25\\lib\\lib-tk', 'C:\\Python25', 'C:\\Python25\\lib\\site-packages', 'C:\\in_vitro\\python']
えー、つまり、sys.pathはlist型なので、+= 演算子で追加する時に「文字列」を追加してしまうと、文字列もまたPythonにおいてはlist型と同様のシーケンス型であるため、一文字毎の要素に分解されてしまうという話。
なので、+= するときは、一旦listで囲わないとだめですよー、という話。
または
>>> sys.path.append('C:\in_vitro\python')
こっちの方が素直かも。
特殊メソッド辺りで、ディスクリプタとか結合メソッド/非結合メソッドなど、新しい概念をかみ砕くのにかなりエネルギーを吸い取られたのでこの辺で「オブジェクト周りの勉強は」一旦お休み。
っつーかこれ以上深く探ろうと思ったらPythonの内部実装やC-APIに踏み込むことは確実だけど、そこまでのめり込むつもりも、必要性もまだ無いし。
まったりと、モジュールとかimportとか、その辺に進みます。
RoRやPHPの陰に隠れてて見えなかったけど・・・Python、意外と厚みもあるし、面白い世界だ。Webというよりは、汎用の非同期ネットワーク通信プロトコルスタックであるTwistedの存在が特に興味深い。
もうちょっとPythonとまったり付き合います。Erlangも待ちわびてるし。
いわゆるsetter()とgetter()を参照/代入形式で呼び出せる「プロパティ」というのが、Pythonでも2.2からサポートされています。
特に難しい概念ではないと思いますので、簡単なcodepieceで動かしてみるに留めます。
>>> class C(object): ... def __init__(self): self.__x = 0 ... def getx(self): return self.__x * 2 ... def setx(self, value): self.__x = value * 2 ... def delx(self): self.__x = None ... x = property(getx, setx, delx, "this is property x") ... >>> class C(object): ... def __init__(self): self.__x = 0 ... def getx(self): return self.__x * 2 ... def setx(self, value): self.__x = value * 2 ... def delx(self): self.__x = 0 ... x = property(getx, setx, delx, "this is property x") ... >>> c = C() >>> c.x 0 >>> c.x = 3 >>> c.x #... 3 x 2 x 2 12 >>> del c.x >>> c.x 0
ところで・・・一応docstringも指定できるみたいなんだけど。
help(c.x)
ってやったらintオブジェクトのhelpが出てきちゃったし、
c.x.__doc__
もintオブジェクトの__doc__だし。
ひょっとして
c.x
の時点でintが返されるので、それで評価されちゃってる?
まぁ、実際に使う時に調べてみますか・・・。