07/02/23 17:56:48
.py以外のファイルを実行したり
フォルダ開いたりってどうしたらできるのでしょうか?
142:デフォルトの名無しさん
07/02/23 19:31:27
>>141
import os
os.system(ファイル実行のコマンド)
143:デフォルトの名無しさん
07/02/23 22:26:59
>>142
ありがとうございます!
144:デフォルトの名無しさん
07/02/23 22:31:58
ほッ
145:デフォルトの名無しさん
07/02/24 10:23:10
フォルダを開くってのはちょい違う気がしないでもないが、
気にしないでおくか…
146:デフォルトの名無しさん
07/02/24 15:36:21
Windowsなら
import os
os.system("start フォルダ名")
で開いたりしないのかな。Macだとopen?
147:デフォルトの名無しさん
07/02/25 01:42:59
フォルダ開くだけなら:
import os
os.system("explorer c:\\")
148:デフォルトの名無しさん
07/02/25 10:11:26
URLリンク(blog.adglobe.net)
> The picnik services is a combination of front end with Adobe Flex,
> and the backend is done using Python
149:デフォルトの名無しさん
07/02/25 18:05:34
python による Chain Of Responsibility
URLリンク(www.h3.dion.ne.jp)
(まだ説明もなにもないけど、のんびり説明も書いていくつもり。
ちなみに、結城浩氏の本の Chain Of Responsibility パターンの
サンプル・コードを、python で同じように動くようにしたもの)
Javaと同じく継承で作ってみたけれど、やってみるまで僕も気がつかなかったが、
Python の継承はJava より制限が厳しく、サブクラスでJavaのように
拡張できない。
(__init__ を拡張すると、親クラスのメンバーでなくなってしまうようだ)
だから、__init__ のフィールド項目を後で増やすとか出来なくて、
親クラスで最初に全部書いておく必要がある。
(これが出来ないと非常に困る。特にこの Chain Of Responsibility では)
これではあまりにやりにくいため、
継承ではなく、すべて委譲で作り直さないといけないなぁと
思った次第。少し休んで取り組みたい。
150:デフォルトの名無しさん
07/02/25 18:48:10
Charlie仕事少なッ!w
超専門職ってかんじか・・w
151:デフォルトの名無しさん
07/02/25 19:07:39
>>149
>だから、__init__ のフィールド項目を後で増やすとか出来なくて、
>親クラスで最初に全部書いておく必要がある。
Chain Of Responsibilityパターンがなんなのかは知らんが、
そういう場合は def __init__(self, *args, **kw) のようなカタチで引数を
取るのがPythonの定石なんじゃないの?
152:デフォルトの名無しさん
07/02/25 19:23:21
>>> class Super(object):
def __init__(self, hoge):
self.hoge = hoge
>>> class Child(Super):
def __init__(self, hoge, fuga):
super(Child, self).__init__(hoge)
self.fuga = fuga
>>> c = Child(123, 456)
>>> c.hoge
123
>>> c.fuga
456
>>> s = Super(789)
>>> s.hoge
789
普通にコンストラクタをオーバーライドすればいいんじゃないの?
153:デフォルトの名無しさん
07/02/25 19:26:35
というか、149のサイトを見る限り、numberにデフォルト値でNoneを設定しとけば、
NoSupport、OddSupportに変な引数を代入する必要はなくなる気がする。
154:デフォルトの名無しさん
07/02/25 19:35:56
def limit( self, number):
155:デフォルトの名無しさん
07/02/25 19:40:22
def limit(self, number ):
self.__number = number
return self
というメソッドを用意しといて
diana = LimitSupport('Diana').limit(200)
というようなコンストラクションも可能
156:デフォルトの名無しさん
07/02/25 19:42:35
>>149
ソースコードは pre で囲って欲しいな。
br 要素で改行だの全角スペースでインデントしなくて済むよ。
157:デフォルトの名無しさん
07/02/25 19:45:50
>>151
いや、自分はまだJavaから来たばかりで、たしかに Python よく分ってないかも
しれないけど、そういう話とは違うと思うけどな…。
Javaでは コンストラクタとフィールドの設定が分かれているけど、
Python では __init__ とフィールドの設定がくっついているでしょ。
Java のような感じでやれないと、
親クラスを作る時点でインスタンスのフィールドを、
(これからどんなサブクラスが作られるのかも分らないのに)
将来作るかもしれないサブクラスの分もすべて予測して
設定しておかないといけないような、という話で。
(Javaはあとで拡張できる。Python、無理っぽい。
__init__ の中でフィールド設定しておかないと、
setメソッドの前にgetメソッドされると、エラー出てしまうし)
それができないと、将来それが必要になったとき、
あとから親クラスを直さないといけなくなる。
どんな場合でも、目の前の10行前後を直すだけで対応できるように
プログラムする、というのがオブジェクト指向の目標である以上
(そううまくいくもんじゃないけど)、それはやっぱりまずいだろうなと。
どうもサブクラスで __init__ を
オーバーライドしちゃうと、サブクラスがサブクラスでない
ことになって、親クラスのメソッドを使えなくなるみたいなんだよね。
ただ、もう少し検証しないと、断定はできないけど。
158:157
07/02/25 20:06:51
と思ったが、 >>155 を見ると、
やれてるよな… org
もう一度、じっくりコードを検討してみます。
ほかのみんなも、サンクス。
いちおう、(GoF 以外の新パターンも含め)全パターンやるつもりだが、
前途多難だ…。
159:デフォルトの名無しさん
07/02/25 20:33:36
PHPでも使えば?
160:デフォルトの名無しさん
07/02/25 20:51:03
コンストラクタとフィールドの設定が云々の意味が分からない
なんでかんでもJavaの流儀でやろうとするのも分からない
161:デフォルトの名無しさん
07/02/25 21:27:58
>>157
class Derived(Base):
def __init__(self, *arg, **kwarg):
Base.__init__(self, *arg, **kwarg)
Pythonはプロトタイプ指向の方が色々と馴染むと思うがね。
先にJavaScriptでもやってみれば?
162:デフォルトの名無しさん
07/02/25 21:29:43
>>160
× Java
○ オブジェクト指向
163:デフォルトの名無しさん
07/02/25 22:13:23
>>160 >>162
オブジェクト指向が目標としてることを簡単にいえば、
1万5000行のコードにかなり大きな手直しを必要とするような場合でも、
何百行も修正するんじゃなくて、目の前の10行かそこいらを
修正するだけで、それが出来るようにしようということです。
有名なのは、1979年頃、MACを開発する前のスティーブ・ジョブズが
パロアルト研究所を訪れた際、Smalltalkの開発者ダン・インガルスの
デモを見て、「エディタのスクロールが行単位じゃなく、滑らかだったら
もっといいんだが」といったところ、インガルスがわずか25秒で直して見せ、
ジョブズを狂喜させたというものです。
どんなものでも、10行かそこいら手を入れるだけで実現する、という
のは現実には難しいですけど、それに一歩でも近づこうということです。
Javaでは当然の流儀になってはいますけど、Pythonもデザインパターンの
すべてのパターンのサンプル・コードがあるようになると、
もっと便利になると思いますよ。
大きな仕事で使ってもらえるチャンスも出てくるかもしれないし。
そんなものはJavaでやれというのは、一つの考え方ではあるでしょうけど、
Pythonの可能性を大きく広げるものになるはずです。
164:デフォルトの名無しさん
07/02/25 22:17:08
そうか
165:デフォルトの名無しさん
07/02/25 22:19:43
かといって、Javaでのデザパタ実装をそのままPythonに移植するのは違うと思うな
166:デフォルトの名無しさん
07/02/25 22:26:12
例えば Python に interface や抽象メソッドは不要なワケだし。
静的言語と動的言語じゃ話が違うんだよね。
全く不要なパターンやもっと簡単に実装できるものが出てくる。
167:デフォルトの名無しさん
07/02/25 22:33:09
Pythonで書いてC++に落とせばいいじゃん
168:デフォルトの名無しさん
07/02/25 23:03:11
>>149
オナニーをここでするんじゃねーよぼけ
デザパタのスレいけって何回言われたらわかんだよ
しね
169:デフォルトの名無しさん
07/02/25 23:12:53
別にデザパタをPythonで実装する話自体はスレ違いではないと思うけど。
Javaとかの静的言語との好対照になるし、色々な設計方法を試してみるのは悪くない。
ただ、ちょっとパターンにとらわれすぎているかなって感じはするが。
170:デフォルトの名無しさん
07/02/25 23:18:46
罵倒パターン
def response(comment):
if len(comment.splitlines()) > 5:
print "しね"
171:デフォルトの名無しさん
07/02/25 23:19:50
zope.interfaceなめんな
172:デフォルトの名無しさん
07/02/25 23:33:04
クラス志向&静的型付けかダックタイピングかどうかってこったわな。
C++だとテンプレートを使うとダックタイピング風のことも出来るのが
面白いんだが。
173:デフォルトの名無しさん
07/02/25 23:49:47
PHPでもおぶじぇくとしこうできるよ.
174:デフォルトの名無しさん
07/02/25 23:53:48
おぶじぇくとしこうさえできればなにでもよいというわけではありませんよ
175:デフォルトの名無しさん
07/02/26 00:06:50
>163
なんかオブジェクト指向に感動した瞳キラキラな書き込みがこちらには
ちょっとまぶしいのですが、Pythonはもっとお下劣な言語ではないかと思います。
それに、どの程度コードを書換える必要が出てくるかは設計の上手下手の話であって、
オブジェクト指向の話ではない。現に、俺がオブジェクト指向風味に書いたコレは
アレをソレするのにあっちこっち書換えなきゃいけなくてorz
176:デフォルトの名無しさん
07/02/26 00:11:24
だいぶ前のだけど
URLリンク(www.python.org)
あと、ココ掘ればだいたいありそうな気もする
URLリンク(aspn.activestate.com)
177:デフォルトの名無しさん
07/02/26 00:21:59
>>175
>どの程度コードを書換える必要が出てくるかは設計の上手下手の話であって、
>オブジェクト指向の話ではない。
ううん、違う。それこそがオブジェクト指向だと思う。
python による Chain Of Responsibility にちょっとだけ説明加えた。
URLリンク(www.h3.dion.ne.jp)
コード、まだまだ問題かかえたままだけど、ちょっとだけ加えた説明で
なにか分ってきませんか?
僕はJavaをかじっていたので、どうしてもPythonでのパターンのコードが
ほしいのです。仕方ないので、自分で書くことにしました。
これが分らないと、アレをソレするのにあっちこっち書換えなきゃいけなくなるんです。
Javaでもそれは同じです。Rubyでも同じはずなんです。
デザパタ知らないと、オブジェクト指向できないんです。
Pythonにも必要なんです、どうしても。
ちょっとぐらい加えた説明じゃ、分らないかもしれないけど。
178:デフォルトの名無しさん
07/02/26 00:26:02
住人総出で叩かれる前にデザパタスレ逝け
179:デフォルトの名無しさん
07/02/26 00:30:51
もう別スレ立てたら?
180:デフォルトの名無しさん
07/02/26 00:42:07
>>163
>オブジェクト指向が目標としてることを簡単にいえば、
>1万5000行のコードにかなり大きな手直しを必要とするような場合でも、
>何百行も修正するんじゃなくて、目の前の10行かそこいらを
>修正するだけで、それが出来るようにしようということです。
これって、Javaのwrite once, run anywhere主義の極端な例では?
そんなものとオブジェクト指向を結び付けられたら、pythonはオブジェクト指向じゃ
ありませんって言う話になる。
pythonでは「100行直して全体の可読性が上がるんだったら直したほうが正解」
って言うのが一般的な見方だと思う・・
181:デフォルトの名無しさん
07/02/26 00:47:06
VBでもおぶじぇくとしこうできるよ.
182:デフォルトの名無しさん
07/02/26 00:54:42
Simple is better than complex.
183:デフォルトの名無しさん
07/02/26 00:58:36
>>180
>Javaのwrite once, run anywhere主義の極端な例では?
それは、クロスプラットフォームを目指そうという話でしょ?
なにも関係ないです。
>pythonはオブジェクト指向じゃありませんって言う話になる。
どうして? だって、Javaと比べても必要な機能は全部あるよ。
(抽象クラスやインターフェースも、やる気ならやる方法はあるし)
機能は全部あるんだから、誰か作ろうと思えば、当然にできるはず。
ただ、誰もやってくれないので、仕方ないので自分でやろうかなと。
去年の暮れぐらいに、初めてインストールして、本格的に勉強し始めた
のは今年に入ってからなんだけど、まだまだよく分からないところが
あるけれど、なかなか分りやすい言語だなと感心してる。
あと、僕はもともとJava使いだけど、Javaに比べてどうこうと
いいたいのではなく、Pythonもっと便利にしようよ、という話を
してるつもりです。どうせ自分で書くし(時間はかかるだろうけど)。
184:デフォルトの名無しさん
07/02/26 01:02:23
def test( n ):
if 0:
185:デフォルトの名無しさん
07/02/26 01:04:36
>>183
君がやることに興味を持っている人は少ないので、いちいち報告してくださらなくて
結構です。つーか、報告するな。うざい。
186:デフォルトの名無しさん
07/02/26 01:14:32
>>177
今のところ
下のコードと同じ動作しかしてない。
これより優れてる点を教えてくれ。
def test( n ):
if 0:
print "Alice"
elif n < 100:
print "Bob"
elif n == 429:
print "Charlie"
elif n < 200:
print "Diana"
elif (n % 2) == 1:
print "Elmo"
elif n < 300:
print "Fred"
for i in range(0,500,33):
test(i)
187:デフォルトの名無しさん
07/02/26 01:19:58
>>163
Smalltalk(というか暫定ダイナブック環境)のこの逸話のミソは、作業の速さや
手を入れた行数の少なさ(ちなみに10行というのはSmalltalkの平均的な
メソッドのコード量を指しているので「たった1メソッドを修正…」と読むべきだし、史実もそう)よりは
“システムを止めたり再起動することなしに”
この変更を行なえたことにあるので Python が立脚する「オブジェクト指向」(ユーザー定義型の
オブジェクト指向)とはあんまり関係ない話だったりする。
188:デフォルトの名無しさん
07/02/26 01:21:02
>>183
あ、なんかWORAの話は違ったけど、・
とにかくpythonでは>>163のたとえ話のような
より少ないコード変更で新しい機能を取り付けられる
ということは必ずしも美徳とされていない。特に
そのせいで全体の一貫性が失われるようなコード追加は悪い
コーディングの例と考えられるのが一般的傾向。
189:デフォルトの名無しさん
07/02/26 01:21:25
>>183
Pythonに特化したデザパタ(あるのか知らんが)でもないかぎり、
デザパタ一般の話をここでするのはスレ違いも甚だしいことだとまだ気付かないのか
190:デフォルトの名無しさん
07/02/26 01:21:56
>>186
・Chain Of Responsibilityパターンの内容
要求がやってくる。それを処理できるなら処理する。
処理できないなら、その要求を「次の人」にたらい回しする。
次の人がそれを処理できるなら処理する。
処理できないなら、その要求を「さらに次の人」にたらい回しする。
そして、さらに次の人へ……
・このパターンを使うメリット
このパターンのポイントは、最初の人に要求をポンと出してしまうと、
あとは連鎖の中をその要求が流れていき、適切な処理者によって要求が
処理されること。
このパターンを使わないと、要求を出す人が処理者たちの役割分担の詳細
まで知らなければならない。すると、部品としての独立性が損なわれてしまう。
要求を処理する ConcreteHandler(具体的処理者)のオブジェクトの関係が
動的に変化するような状況も考えられる。このパターンのようにたらい回しを
行っていれば、状況の変化に応じて ConcreteHandler(具体的処理者)を
組み替えることができる。
もしこのパターンを使わず、この要求ならこの処理者という対応関係が固定的に
書かれていたら、プログラムが動いている最中に処理者を変更することは難しい。
このパターンを使うと、個々の ConcreteHandler(具体的処理者)の処理は
その固有の内容に絞り込める。このパターンを使わないとすると、状況に
応じてどこに仕事を振り分けるかなどまで、個々の ConcreteHandler(具体的処理者)
に作りこまないといけない。
URLリンク(www.h3.dion.ne.jp)
191:デフォルトの名無しさん
07/02/26 01:33:20
Pythonのお勉強じゃなくね?
議論スレでも立てて思う存分やってくれ
192:デフォルトの名無しさん
07/02/26 01:35:45
>>190
まず、ひとつの完全なチェインを作るためには必ず、
>alice.setNext(bob).setNext(charlie).setNext(diana).setNext(elmo).setNext(fred)
というような全員の名前が一回ずつ出てくる列を書かなければ、
列が破綻してしまう。しかし、このような列を"書く"ということは、
結局のところ、この順番のif elifを書いてるのと同等である。(したがってメリットが無い)
もし、途中でdianaとelmoの順番だけ変えるみたいなことができたら
たしかに、意味があるが、それがさっと出来るほどの巧妙さは無い。
193:デフォルトの名無しさん
07/02/26 01:43:41
>>192
チェインを作る人と、チェインに投げる人は違う。
さらに言うと、スレも違う。
194:デフォルトの名無しさん
07/02/26 01:47:00
>>192
列を作るのに、条件式を知っておく必要がないことも、>>186との違い
195:デフォルトの名無しさん
07/02/26 01:50:31
>>193
いや、だから、チェインを作る人の労力がif elifを使う場合とCORを使うばあいで
なんら変わりが無い思うんだけど・・・?
で、使う人に対しては、aliceに対して投げてくださいと言うか、>>186のtest関数
に投げてくださいと言うかの違いしかない。これも大した差ではない。
>>194
条件式はもちろん
if alice.solvable(n):
alice.solve(n)
elif bob.solvable(n):
bob.solve(n)
式に書き換えれば、条件式を知る必要はないし、aliceたちの状態によって
動的に変化可能。
196:デフォルトの名無しさん
07/02/26 01:56:41
あと、たとえばsolveメソッドの返り値を解けたら必要な文字列、解けなかったら0とかにしておけば
def solve( n ): return alice.solve(n) and bob.solve(n) and ...
とやれば、書く量も十分少なくてすむ。
197:デフォルトの名無しさん
07/02/26 01:58:20
>>195
だいぶ近づいてるね。
あとは、処理する人が、動的に(もしくはあちこちで)リストに参加したり退会したり
できるようにしたら・・・はい、Chain of Responsibility.
リストが静的に決まっていたら、if - elif - ... を関数にしてもパターンと同じ事が
できるんだけど、あえてパターンから外れる必要もないからパターンに従う。
198:デフォルトの名無しさん
07/02/26 02:06:09
>>192
うーん、それは違うんじゃない?
このパターンは、AbstractHandler(抽象的処理者)クラス
とConcreteHandler(具体的処理者)クラスの構造をどうするか、
というところがその肝心の内容と思うよ。
君がいっているのは、
要求を最初の具体的処理者に投げる部分だけだよね?
(対話的シェル部分。オリジナルのJavaコードだとメインクラスの
メイン・メソッドの部分かな)
そうじゃなくて、抽象的処理者クラスと具体的処理者クラスの構造が
肝心かなめの部分。
一般論になるけど、オブジェクト指向も、深いこと考えずにやると
柔軟な変更ができなくなるから、変更部分をどうやって局所にとどめるか、
がカギだよね。
変更部分が、あっちにある、こっちにもあるというのじゃ、
オブジェクト指向なんかする意味ないから。モジュール構成の方が、最初の
設計の負担が少ないだけまだマシとなってしまう。
結局、抽象化をどうやってするかの方法論となると思う。
僕は、デザパタの趣旨の話をするのは全然かまわないんだけど、
スレ違いと怒る人がいるので、やめた方がいいんじゃないかな。
自分としては、Pythonでのコードがほしいから(Javaでのコードはとっくの昔に
全パターンあるんだから)、Javaやc++しか知らない連中に話しても仕方ないでの
ここでやってるんだが、なかなか難しい。
とはいえ、Python自身はとても気にいったので、自分はまだ力量不足かも
しれないけど、なんとかPythonによるデザパタ・コードは書いていきたい。
199:デフォルトの名無しさん
07/02/26 02:13:16
鬱陶しいスレになっちゃったなぁ
200:デフォルトの名無しさん
07/02/26 02:14:39
>>198
>とはいえ、Python自身はとても気にいったので、自分はまだ力量不足かも
>しれないけど、なんとかPythonによるデザパタ・コードは書いていきたい。
PHPでもデザパタは出来るよ。
201:デフォルトの名無しさん
07/02/26 02:15:00
行数多いレスは読まなきゃ平気
202:デフォルトの名無しさん
07/02/26 02:16:44
>>198
お願いだから自分のブログか何かでやってくれないか?
203:デフォルトの名無しさん
07/02/26 02:22:20
抜けるためのメソッド
def exit( self ):
self.__previous.setNext(self.__next)
入れ替わるためのメソッド
def swap( self, target ):
target.__previous.setNext(self)
self.setNext(target.__next)
target.setNext(self.__next)
self.__previous.setNext(target)
この辺があれば確かに使えるかもね。そのパターン。
__nextとsetNextしかないとif elifと同じだけど・・・
204:デフォルトの名無しさん
07/02/26 02:26:26
いい加減やめたら?
雰囲気読めよ
Pythonでデザパタ。とかスレ作ったら?
そしたら俺もそっち行く
205:デフォルトの名無しさん
07/02/26 02:31:38
>>197
しかし、やっぱり[alice,bob,...]
みたいな人の配列を作って、
順番変更は配列操作、
実行時は
def solve( n ):
for p in people:
if p.solve(n):
return p.message
とかにしたほうが簡単な気がする。
__next だの __previousだのテクニカルすぎてやる意味が見出せない。
206:デフォルトの名無しさん
07/02/26 02:33:22
>>204の直後に>>205って
おまえどういう神経してんの
207:デフォルトの名無しさん
07/02/26 02:41:11
空気が読めない人はPerlを使うと幸せになれると思うよ。
208:デフォルトの名無しさん
07/02/26 02:46:11
一応205はアンチデザパタのつもりで書いたんだけど・・・(・ω・)
205にJavaの人が答えてくれなかったら>>177のパターン絶対使わないし・・・
209:206
07/02/26 02:51:29
>>208
そうだったのか。
ごめんなさい。まぢですまん
210:デフォルトの名無しさん
07/02/26 03:01:19
>>208
いや、だから、
君は抽象的処理者と具体的処理者の部分を全然変更してないだろ。
そして、そうなっているということは、
たくさんのクラスを無修正で済ませることができているということ。
変更を局所化できているということ。
君はすべてを、抽象的処理者と具体的処理者を全然使わない方法で実装できる。
そのとき、どこに変更部分があるかは気まぐれで、
あっちこっちと直さないといけなくなるだろう。
オブジェクト指向を使う意味が全然ない、オブジェクト指向のコードに
することもできる。モジュール構成より疲れるだけの。
天才ダン・インガルスが変更したのは、たしかにメソッド一つだったかもしれない。
でも、それはメソッド一つですむように設計しておいたからだ。
君の変更は、メインクラスのメイン・メソッドの内容にとどまる。
メインクラスには、他のメソッドもいろいろもてるだろう。
アナザー・メソッドを定めておいて、それを実行すれば、
元のコードの変更はゼロで、コードの追加ですべてできるかも
しれない。
以上、デザパタ論議は終わり。自分は当面、参加しない。
211:デフォルトの名無しさん
07/02/26 03:05:29
>>どの程度コードを書換える必要が出てくるかは設計の上手下手の話であって、
>>オブジェクト指向の話ではない。
>ううん、違う。それこそがオブジェクト指向だと思う。
悪いんだけど、他所いってやってくれない? あんた根本的に何か勘違いしてるよ。
212:デフォルトの名無しさん
07/02/26 03:11:11
宗教って怖いね
213:デフォルトの名無しさん
07/02/26 03:22:22
怖いね。
214:デフォルトの名無しさん
07/02/26 03:29:31
怖いね.
215:デフォルトの名無しさん
07/02/26 03:47:08
後は放置で
216:デフォルトの名無しさん
07/02/26 04:49:56
誰かが立てたっぽいな。
デザパタ + python
スレリンク(tech板)
217:デフォルトの名無しさん
07/02/26 04:52:12
遠いお国で幸せになってる人間を、どうこう言うほど卑しくないつもりだw
218:デフォルトの名無しさん
07/02/26 04:56:43
デザパタってのは数式の公式みたいなもんだなあと改めてオモタ。
勉強しているときは何の役に立つのかピンと来ない。
確かに便利そうではあるが自分のこととして実感できない。
そして、実際に役に立つことが分かるようになった頃には
自分にとってごく当たり前の、普段使いの道具になっている。
勉強していたとき、なぜこの便利さが実感できなかったのかと不思議に思う。
できることなら当時の自分に教えてやりたい。
でも、その説明を聞いても当時の自分にはやっぱりピンと来ないんだろうなあ。
219:デフォルトの名無しさん
07/02/26 05:05:24
>>218
>>216
220:デフォルトの名無しさん
07/02/26 05:07:49
>>219
すまん、パピコしてから気付いた。あと「数式の公式」ぢゃなくて「数学の公式」だった。
221:デフォルトの名無しさん
07/02/26 09:07:09
前のフォームのある画面からPOSTでアクセスされ、どんな変数名が渡ってくるか固定ではない場合、
その変数名と値を収集するにはどうしたらいいのでしょうか?
222:デフォルトの名無しさん
07/02/26 11:46:01
>>221
デザパタとオブジェクト指向を勉強すれば分かるよ
223:デフォルトの名無しさん
07/02/26 12:05:42
・・・などと、とんちんかんな回答をもらわないように、
使っているライブラリ、実行環境、できれば問題を再現する小さなコードなど、
問題を特定するのに必要な情報を書きましょう。
224:デフォルトの名無しさん
07/02/26 12:14:55
>>221
質問の仕方が悪い.
~するには何パターンを使えばいいのですか?
これが、このスレでの正しい質問のしかた.
225:デフォルトの名無しさん
07/02/26 12:32:53
>>221
import cgi
FormData = cgi.FieldStorage()
print "Content-Type: text/text\n"
for KEY in FormData.keys():
print "(%s, %s)" % (KEY, str(FormData.getlist(KEY)))
226:デフォルトの名無しさん
07/02/26 12:41:30
URLリンク(video.google.com)
Python 3.0 final: June 2008
Python 2.6 final: April 2008
227:デフォルトの名無しさん
07/02/26 12:46:26
>>225
適当に書いたけど正しくは「text/plain」だった
228:221
07/02/26 13:09:15
>>222-227
ご返答ありがとうございます。
情報不足で申し訳ありませんでした。
>>225さんのソースを元に作成してみます。
229:221
07/02/26 15:08:56
>>225のサンプルを元に作成してみました。
実行した結果、何も表示されませんでした。
原因はresult.pyの「for KEY in FormData.keys():」のループが1度も入りません。
→FormDataの値を確認したら「FieldStorage(None, None, [])」で値が取得出来なかった模様。
期待値としてtest.htmlのtext1に「123」test2に「abc」を入れ
result.pyの画面で「test1/123(改行)test2/abc」がブラウザで表示されることです。
改善策を教えて下さい。よろしくお願いします。
--- test.html(form部分のみ/nameのtest1とtext2が可変の名前になる所) ---
<form action="result.py" method="post">
<input type="text" name="text1">
<input type="text" name="text2">
<input type="submit" value="実行">
</form>
--- result.py ---
import cgi
from mod_python import apache
from string import *
def handler(req):
FormData = cgi.FieldStorage()
req.write("Content-Type: text/html\n\n")
req.write("Content-Type: text/plain\n")
req.write("<html><head><title>test</title></head><body>")
for KEY in FormData.keys():
data_column = str(KEY) + "/"
data_value = str(FormData.getlist(KEY)) + "<BR>"
req.write(req, data_column)
req.write(req, data_value)
req.write("</body></html>")
230:221と229
07/02/26 15:13:41
req.write("</body></html>")
の次の行に
return apache.OK
が入ります。
231:デフォルトの名無しさん
07/02/26 15:24:30
>>229
普通のcgiじゃなくて、mod-python か。
そっちは良くわからん。
とりあえず、Content-Typeは1回だけしか書けないはずなので、
req.write("Content-Type: text/plain\n")
の行は削除してみてくれ
232:229
07/02/26 15:38:26
>>231
mod-pythonの方です。
Content-Typeの所は指定の通り、消してみましたが変化ないようです。
FormData = cgi.FieldStorage()
↑
この時点でFormDataに何も値が持ってこられない時点で、
エラーにはならないとはいえmod-pythonでは使えないのかな?
233:デフォルトの名無しさん
07/02/26 16:04:04
>>232
マニュアルさっと見た限り、
from mod_python import util
form_data= util.FieldStorage(req)
とかでいけそうな気がします。
あと、ヘッダについては req.write() するのではなく
req.content_type = "text/plain"
のようにするみたいです。
234:デフォルトの名無しさん
07/02/26 16:10:31
cgiモジュールは普通のCGIで使うやつだから、mod-pythonの場合は根本的に違うんじゃないかな。
ちょっと調べたら、
Content-Typeの設定は
req.content_type = "text/plain"
で設定する。
URLリンク(www.python.jp)
を読むと、クライアントからのデータは readメソッドで読めるようだ。
POSTの生データは、KEY1=VALUE1&KEY2=VALUE2&・・・だから
あとは自力でなんとかしてみれ。
235:232
07/02/26 16:44:37
>>233-234
返答ありがとうございます。
>>233さんのutilをインポートする件は、表示出来ず、
>>234さんのContent-Typeでreadメソッドでも表示出来ませんでした。
何か手段が無いかと別のメソッドを調査してみた所、
readではなくreadlineのメソッドでフォームの値が収集出来ました。
「text1=123&text2=abc」って感じに。
あとはこの文字列を砕いて表示出来るように頑張ります。
記念に同じ疑問で今後引っかかった方用にソース残しておきます。
↓
--- result.py ---
from mod_python import apache
from string import *
def handler(req):
req.content_type = "text/plain"
aaaaa = req.readline()
req.write("<html><head><title>test</title></head><body>")
req.write(aaaaa)
req.write("</body></html>")
return apache.OK
みなさん、ご協力ありがとうございます。
236:デフォルトの名無しさん
07/02/26 16:44:41
つーか、text/htmlとtext/plainを同時に指定しちゃだめだろw
あと、>>229の書き方だと、空行の入る位置がおかしいから
2個目のContent-typeはドキュメント内に表示されるぞ、
>>234
それやるとデコードを自分でやる羽目になるので、素人にはお勧めできないw
237:デフォルトの名無しさん
07/02/26 16:46:40
こんな感じか
from mod_python import apache, util
def handler(req):
req.content_type = "text/plain"
form_data= util.FieldStorage(req)
for field in form_data.list:
req.write(field.name+"/"+field.value+"\n")
return apache.OK
238:デフォルトの名無しさん
07/02/26 16:52:03
>>226
ヒゲ!ヒゲ!
239:235
07/02/26 17:00:34
>>236-237
ご返答ありがとうございます
>>237さんの便利ですね。
1項目ずつ分かれていますから。
自分のより、こちらをベースにしたいです。
本当にありがとうございます。
240:デフォルトの名無しさん
07/02/26 17:16:02
やっぱりprint 関数は見た目はあんまりうれしくない感じだ・・・
print('x\n', 'y')とかちょっとperlっぽい感じがする、・・・、
まあp=printとか[print(x) for x in arry]
とかいろいろ悪さが出来るのは面白いだろうけど、・・・
241:デフォルトの名無しさん
07/02/26 17:39:10
>>226
ず~と 水みたいなのを握り締めてるのが気になってしょうがない
242:デフォルトの名無しさん
07/02/26 17:49:29
new style class がraise出来なかったのは結局解決したってことなんだろうか・・・
短くてよく分からんかった・・・
243:デフォルトの名無しさん
07/02/26 17:58:45
a = { f(x) for x in S if P(x) }
↑これやばいwかっこよすぎ
244:デフォルトの名無しさん
07/02/26 21:02:36
nonlocal 萎え
245:デフォルトの名無しさん
07/02/26 22:15:25
_ ∩
( ゚∀゚)彡 おっぱい!おっぱい!
⊂彡
246:デフォルトの名無しさん
07/02/26 22:24:03
perlでいうCPANみたいなものってpythonではどこになるんすか?
247:デフォルトの名無しさん
07/02/26 22:30:25
>>246
ぱいぱい
248:デフォルトの名無しさん
07/02/26 22:31:00
ぱいぱい
URLリンク(cheeseshop.python.org)
249:デフォルトの名無しさん
07/02/26 22:52:49
>>247-248
ありがとん。
250:デフォルトの名無しさん
07/02/27 03:10:10
チーズショップが正式名称になったんじゃないの?
まあ、urlに残ってるけど・・・
251:デフォルトの名無しさん
07/02/27 15:05:15
最新Pythonエクスプローラ ~Django,TurboGears,Twisted,IronPython 完全攻略
URLリンク(gihyo.jp)
252:デフォルトの名無しさん
07/02/27 15:13:12
お、よさげだね
SDの python 関連記事のまとめかな?
253:デフォルトの名無しさん
07/02/27 17:59:44
それにしても TurboGears ってpython2.5がでて半年たつのにいまだに
2.5に対応できないでいる。寄せ集めツールズの弱点がでた感じ。
254:デフォルトの名無しさん
07/02/27 20:48:06
一番遅いのに合わせてるってこと? どいつだろう。
255:デフォルトの名無しさん
07/02/27 20:51:58
2.5に未対応でもほぼ無問題.
functoolsとか使いたがるヤツはたいてい使い物にならない機能オタ.
256:デフォルトの名無しさん
07/02/27 21:05:18
>>> [ 'A']
['A']
こっちみんなよw
>>> ['A' ]
['A']
こっちみんな!w
257:デフォルトの名無しさん
07/02/27 21:08:13
>>256
和んだw
258:デフォルトの名無しさん
07/02/27 21:38:27
吹いた
259:デフォルトの名無しさん
07/02/27 21:43:49
>>256
その発想はなかったわwwwww
260:デフォルトの名無しさん
07/02/28 01:12:51
>>256
Python >>> Ruby が決定したなw
irb(main):001:0> [ 'A']
=> ["A"]
irb(main):002:0> ['A' ]
=> ["A"]
261:デフォルトの名無しさん
07/02/28 02:00:28
>>260
あなたのおかげで、やっと>>256の意味がわかった。
ありがとう、面白いねこれ。
262:デフォルトの名無しさん
07/02/28 07:48:17
>>>> ('_')
>'_'
>>>> ('_')
>'_'
>>>> ('_',)
>('_',)
263:デフォルトの名無しさん
07/02/28 09:49:37
Python Jobs - Average Salary for Python Skills
URLリンク(www.itjobswatch.co.uk)
> Average Salary £43,149
(,,゚Д゚) 43149ポンドっていくらだ・・・・
Σ(,,゚Д゚) 1000万超?!
(,,゚Д゚) ポカーン
264:デフォルトの名無しさん
07/02/28 09:50:58
なのになんで俺無職なん?
265:デフォルトの名無しさん
07/02/28 09:53:48
Over1000マソのサラリーに求められる
仕事の質や量を考えられないようなヤツが無職なのは当然
266:デフォルトの名無しさん
07/02/28 10:20:58
決め打ちの煽りワロス
無職仲間ハケーン
267:デフォルトの名無しさん
07/02/28 10:35:53
>>264,266
Python使えてIQ140以上で英語ができて
IT系の特定分野でとんがった技術持ってて
自分で課題設定できて絶え間なく成果を出せるようなスキルがあれば
Googleに入れるぞ!
そしたらストックオプションで人生の半分くらい引きこもっても生きてられるぞ!!
おまえらガンガレ!!
268:デフォルトの名無しさん
07/02/28 11:44:10
>自分で課題設定できて絶え間なく成果を出せる
....................o.....rz
269:デフォルトの名無しさん
07/02/28 13:08:57
有能を語っているうちに興奮して態度がでかくなる無能って
どうしようもなくミジメだよな。
270:デフォルトの名無しさん
07/02/28 14:04:14
そんなやつならわざわざGoogleに入るまでもない。
271:デフォルトの名無しさん
07/02/28 20:22:43
>>> [ 'A'] < "なあ、俺って結構イケてる?"
True
>>> [ 'A'] < "え、マジで?"
True
>>> [ 'A'] < "・・・・・"
True
>>> [ 'A'] < "あー"
True
>>> [ 'A'] < "俺、逝ってよし?"
True
>>> [ 'A']
['A']
だから、こっちみんなw
272:デフォルトの名無しさん
07/02/28 20:47:23
ぱいそんかわいいよぱいそん
273:デフォルトの名無しさん
07/02/28 20:50:36
たぷるたん、ってのもいました
274:デフォルトの名無しさん
07/02/28 23:01:01
>>269
そうやって君の一日がまた一つ終わったわけだ。
275:デフォルトの名無しさん
07/03/01 00:45:09
>>271
ハゲワロスw
276:デフォルトの名無しさん
07/03/01 01:05:05
>>271
くだらないけどワロタww
277:デフォルトの名無しさん
07/03/01 02:58:43
最近RubyからPythonに移ってきました。
比較しながら勉強しているのですが、リストのflattenに
あたるメソッドはないのでしょうか?
たとえば、[[1,2,3],[4,5,6],[7,8,9]]
を
[1,2,3,4,5,6,7,8,9]
に変換するようなものです。
よろしくお願いします。
278:デフォルトの名無しさん
07/03/01 03:00:11
ちなみに、
Rubyのflattenだと、もっと深いリストでも
A = [[1,2,[3],[4,[5,6],[7,8],[9]]
B = A.flatten()
と書くと、[1,2,3,4,5,6,7,8,9]になります。
279:デフォルトの名無しさん
07/03/01 04:03:51
>>277-278
ないと思われ
280:デフォルトの名無しさん
07/03/01 04:09:56
早めに置いておきますね
Python厨とRuby厨が仲直りするスレッド
スレリンク(tech板)
281:デフォルトの名無しさん
07/03/01 04:16:10
欲しいと思ったことはないが、ないなら実装すれば良いと思われ。
import types
def flatten(a):
ret = []
for x in a:
if type(x) == types.ListType:
ret.extend(flatten(x))
else:
ret.append(x)
return ret
print flatten([[1,2,[3],[4,[5,6],[7,8],[9]]]])
282:デフォルトの名無しさん
07/03/01 04:34:16
>>279
>>281
ありがとうございます。
A.flatten().collect().join()とかよく書くので
知りたかっただけのことです。
>>280
ケンカなんかしませんよw
283:デフォルトの名無しさん
07/03/01 08:10:39
>>281
types.ListType なんて初めて知った。。。
これってどのバージョンでも使えるの?
284:デフォルトの名無しさん
07/03/01 09:45:40
>>281
ListTypeはオッサンの書き方。
ヤングマンはisinstance()を使うべし。
URLリンク(www.python.jp)
285:デフォルトの名無しさん
07/03/01 11:07:18
type(x) == list でもいい
286:デフォルトの名無しさん
07/03/01 11:24:46
>>285
URLリンク(www.python.jp)
>オブジェクトの型のテストには、組み込み関数 isinstance() が推奨されています。
Perlでもやれば?(wwwwwwwwwwwwww
287:デフォルトの名無しさん
07/03/01 14:08:21
Ruby厨ってまぢしつこいね。
288:デフォルトの名無しさん
07/03/01 14:10:18
ジェネレータ使うならこんな感じか。
def iter_deep_array(a):
for x in a:
if isinstance(x, list):
for y in iter_deep_array(x):
yield y
else:
yield x
def flatten(a):
return list(iter_deep_array(a))
print flatten([[1,2,[3],[4,[5,6],[7,8],[9]]]])
289:デフォルトの名無しさん
07/03/01 15:57:15
こういうの見ると引数型のパターンマッチがほしくなってくる・・・
290:デフォルトの名無しさん
07/03/01 23:04:08
lst = [1,2,3]
lst.append(lst)
print flatten(lst)
291:デフォルトの名無しさん
07/03/01 23:17:34
>>289
ん?どういうこと?
292:デフォルトの名無しさん
07/03/02 00:34:48
>>291
Haskellみたいなの、ってことじゃね?
293:デフォルトの名無しさん
07/03/02 01:48:44
[Python-ml-jp 3915] Guido氏サイン入り「みんなのPython」プレゼントのお知らせ
294:デフォルトの名無しさん
07/03/02 01:51:23
日本語でかかれたファイル(文字コード不明)があって、
その中の文字数をカウントしたいのですが、
どうすればいいですか?
echo あ >text
data = open( "./text" ).read();
print len( data );
で、4と表示されてしまいます、、、
295:デフォルトの名無しさん
07/03/02 01:52:28
URLリンク(www.python.jp)
これだな
296:デフォルトの名無しさん
07/03/02 01:56:23
>>295
1行目の「~にふられちゃいました」で一瞬ドキリとした。
297:デフォルトの名無しさん
07/03/02 01:59:33
>>294
1文字じゃ文字コードの判定できない。
エスパーで答えると、
print len(data.decode('utf-8'))
298:デフォルトの名無しさん
07/03/02 02:56:23
。oO( import string っと・・・ )
( ゚д゚)
_(__つ/ ̄ ̄ ̄/_
\/ ./
 ̄ ̄ ̄
( ゚д゚ )
_(__つ/ ̄ ̄ ̄/_
\/ ./
 ̄ ̄ ̄
299:デフォルトの名無しさん
07/03/02 03:29:53
>>297
めっちゃありがとうございますx100
出来ました。エスパー凄杉
あと、1文字じゃ判定できないんですか
ちょっと勉強してみます
300:デフォルトの名無しさん
07/03/02 05:25:15
>>293
なんだか芸能人みたいなことをさせられてるGuidoワロス
301:デフォルトの名無しさん
07/03/02 05:45:11
俺は初めてのPythonと、みんなのPython買ったが
選択は間違いじゃないかな?
302:デフォルトの名無しさん
07/03/02 07:51:35
このスレの住人はほとんど本興味なし
303:デフォルトの名無しさん
07/03/02 08:51:22
アルヨ アルヨ
304:デフォルトの名無しさん
07/03/02 10:00:34
>>299
それは例えば、
a
と一文字だけ書いてあって、これが英文の一部か独文の一部か
仏文の一部か判定しろ、ってのと同じだと思われ。
305:デフォルトの名無しさん
07/03/02 11:31:55
自分のサイン入りをプレゼントするのならそうとうキモいな
306:デフォルトの名無しさん
07/03/02 11:44:38
>>295
ご本人は志賀高原か
俺らとは人種が違うようだ(w
307:デフォルトの名無しさん
07/03/02 14:22:31
やりたいことやるだけなら、ぶっちゃけ本とか要らなくね?
308:デフォルトの名無しさん
07/03/02 16:41:40
>>307
検索するのもおっくうなときに、
パラパラめくれるリファ本があると、便利じゃない?
309:デフォルトの名無しさん
07/03/02 16:45:20
>>308
本めくるよりは検索のが絶対速い
本のよさは、どこでも読めることと、大量の文章をさほど疲れずに読めることだろう
310:デフォルトの名無しさん
07/03/02 16:48:46
本に書いてあることがすべてネットに存在するわけじゃ無かろう
ネットで十分な人は本買わなきゃいいだけだよ
311:デフォルトの名無しさん
07/03/02 17:01:33
>>309
> 本めくるよりは検索のが絶対速い
いや~、そうじゃない事も多いよ。
検索しても、欲しかった情報がばっちり書いてあるのか、単語が書いてあるだけなのか、
実際見ないとわからないこともあるしね。
312:デフォルトの名無しさん
07/03/02 17:59:05
帰りの電車の中で読むなら本だな。
313:デフォルトの名無しさん
07/03/02 18:12:49
初めて扱う分野の基本を勉強するなら本をじっくり読む方がいい。
ファミレスでランチ食いながら読んだりするよ。
314:デフォルトの名無しさん
07/03/02 18:47:10
おまいらpythonをどんな場面に活用してる?
ファイル整理スクリプトとか?それとも何かアプリ作ったりとか?
315:デフォルトの名無しさん
07/03/02 19:16:24
ネイティブでなくてもいい場面なら何でも。
316:デフォルトの名無しさん
07/03/02 20:24:32
ネット系の実験とかが多いな
317:デフォルトの名無しさん
07/03/02 20:25:55
>>314
高級電卓
318:デフォルトの名無しさん
07/03/02 20:52:43
あー、そういえばこないだ、数板で覆面算きいてる奴がいて、
pythonでさっと検索関数書いて答えたりした・・w
319:デフォルトの名無しさん
07/03/03 02:20:56
Pythonだけで2chブラウザ作るのは、まあ無謀だよな
320:デフォルトの名無しさん
07/03/03 03:11:52
昔作ってる人いたな
モナークとキティーウォークだったかな
321:デフォルトの名無しさん
07/03/03 04:19:20
エンジン部が遅くなる気がする以上に、GUI作るので発狂しそうだw
VBのがまだ向いてるな。C系より遅いったって、Pyよりは速いの出来そうだし。
322:デフォルトの名無しさん
07/03/03 04:59:36
そこでpsycoですよ
323:デフォルトの名無しさん
07/03/03 07:59:14
流れよまずに
lambdaは廃止になるんだっけ?
324:デフォルトの名無しさん
07/03/03 08:27:23
scipyをintel macにインストールできた人いたらやり方おしえてくださいっす。
コンパイルはできたんですが、テストプログラム動かすとエラーになってしまう。。
325:デフォルトの名無しさん
07/03/03 12:48:38
>>323
ならない。拡張(複数行とか)もされない。
326:デフォルトの名無しさん
07/03/03 12:50:43
>>324
ちなみにどんなエラーが出るの?
327:デフォルトの名無しさん
07/03/03 14:00:44
>>295
本屋に行ったら下に書いてある「TurboGears×Python」ってやつがすでに平積みされてた
早売りにもほどがある
328:デフォルトの名無しさん
07/03/03 14:22:53
質問です。
ログファイルを監視するアプリ(unix の tail -f みたいなもの)をpythonで作りたいと思っています(wxPythonでGUIにするつもりです)。
pythonでファイルを監視して変更があったことを検知する手段はあるのでしょうか?
今のところ思いついた方法としては
・一定間隔でタイマーイベントを発行
・ファイルの更新時間を調べて前回の更新時間と比較
・更新されていたら表示
とすればいけると思うのですが、イマイチしっくりこないので…
環境は
WinXP SP2
Python2.4
です。
329:デフォルトの名無しさん
07/03/03 14:54:32
ない
Windows の API を使うこと
330:デフォルトの名無しさん
07/03/03 15:49:31
ねんちゃくねんちゃくぅ!
331:デフォルトの名無しさん
07/03/03 19:49:34
>>323
関数型言語としてのアイデンティティがwww
332:デフォルトの名無しさん
07/03/03 21:35:23
関数型言語じゃないのでへっちゃらです
333:デフォルトの名無しさん
07/03/03 22:12:50
URLリンク(cheeseshop.python.org)
334:デフォルトの名無しさん
07/03/03 22:44:01
↑これって並列化云々の技術と組み合わせられるのかなぁ・・・?
335:lambda
07/03/03 22:48:07
サンキュー
key 付きの sort, min, max 使ってるソース書いてから
lambda 廃止?書き直しかよーと狼狽してた。
336:デフォルトの名無しさん
07/03/03 23:04:58
>>328
スレッド使えばできるんじゃね?下のコードだとなんか時々終わる時に
エラー出るけど、スレッド詳しい人ならちゃんと書けるはず。
import thread
import time
import os
def change():
open("a.txt", "w").write("a")
def watch():
t1 = None
while 1:
t2 = os.path.getmtime("a.txt")
if t1 is not None and t1 != t2:
print "changed"
t1 = t2
time.sleep(1)
change()
thread.start_new_thread(watch, ())
for _ in xrange(5):
change()
time.sleep(2)
337:デフォルトの名無しさん
07/03/04 00:01:23
HTMLParserの使い方が全く理解できねえ・・・・
ググって見つかるサンプルも、呪文にしか見えない・・・・orz
やさしいサンプルとか、そのあたりを解説した書籍とか、HPとか・・・・なんでもいいからなんか教えて!!
338:328
07/03/04 00:35:57
>>329
FindFirstChangeNotificationやFindNextChangeNotificationあたりがそれっぽいですね。
pywin32モジュールから使えそうなので調べてみようと思います。
>>336
そういう方法もあるんですね。
スレッド周りは勉強不足なのでこれを期に勉強してみようと思います。
ありがとうございました。
339:デフォルトの名無しさん
07/03/04 00:44:14
>>337
H2タグで囲まれた部分を取り出してリストにするサンプル
#!/usr/local/bin/python
# coding=shift_jis
import HTMLParser
class MyHTMLParser(HTMLParser.HTMLParser):
#俺カスタムなHTMLParserクラスを作る
H2List = []
TagID = '' #H2タグの場合のフラグの準備
def handle_starttag(self, tag, attrs): #何か開始タグに来た場合の処理
if tag == 'h2': #ページのソースに関係なく小文字!!
self.TagID = 'h2' #H2タグに来たときにフラグをたてる
elif tag == 'hoge':
self.TagID = 'hoge' #他のタグに来たときにフラグをたてる
def handle_endtag(self, tag): #何か終了タグに来た場合の処理
if tag == 'h2': #ここも小文字!!
self.TagID = '' #H2タグを抜けるときにフラグをはずす
elif tag == 'hoge':
self.TagID = ''
def handle_data(self, data): #開始・終了タグに囲まれた中身の処理
if self.TagID == 'h2':
self.H2List.append(data) #フラグがある場合に内容をリストに追加
340:デフォルトの名無しさん
07/03/04 00:45:45
(つづき。インデントは行頭に戻す)
URL = 'URLリンク(www.python.org)'
import urllib2
Website = urllib2.urlopen(URL)
HTML = Website.read()
Website.close()
MyParser = MyHTMLParser()
MyParser.feed(HTML)
MyList = MyParser.H2List
MyParser.close()
print MyList
341:デフォルトの名無しさん
07/03/04 00:51:04
>>339-340
ありがとう!!!
コメントがめちゃくちゃ有り難い。
342:339,340
07/03/04 00:55:32
>>341
俺も最初わからんかったから気持ちはよくわかる。
普段はオブジェクト指向プログラミングとかしないから、
クラスのメソッドをオーバーライトする、とかの意味がわからんかった。
343:デフォルトの名無しさん
07/03/04 01:35:17
>>337
PerlのHTML::Parserと違ってタグのオリジナルテキストをそのまま取得できないので
その点は注意だな。
たとえば、一部要素に関してだけ何らかの変換をして
他はそのまま通すような変換フィルタをこれで書こうとすると、
・コピーするためには、あらゆる要素のハンドラを書かざるを得ない。
handle_charref()やhandle_entityref()なども忘れずに。
・タグはタグ名とアトリビュートに分解された形でしか取得できないので、
自分で組み立てなおして出力するしかない。
344:デフォルトの名無しさん
07/03/04 01:49:37
>>337
的外れかもしれませんけど、BeautifulSoupがおすすめです。
URLリンク(www.crummy.com)
from BeautifulSoup import BeautifulSoup
test_html="""
<html>
<body>
<h2>hogehoge</h2>
<h2>hogehoge</h2>
</body>
</html>
"""
soup = BeautifulSoup(test_html)
for h2 in soup.findAll('h2'):
print h2.string
結果
hogehoge
hogehoge
345:デフォルトの名無しさん
07/03/04 02:48:33
>>281>>288
reduceを使ったらもうちょっとかわいく書けた。
def cup(n): return flatten(n) if isinstance(n, list) else [n]
def spoo(n, m): return cup(n) + cup(m)
def flatten(L): return [] if not L else cup(L[0]) if len(L) == 1 else reduce(spoo, L)
flatten([[1,2,[3],[[[[[[[]]]]]]],[4,[5,6],[7,8],[9]]]])
#=> [1,2,3,4,5,6,7,8,9]
346:デフォルトの名無しさん
07/03/04 04:03:55
[]がすげえな、目が痛い。自殺志向のPythonに思えるw
347:デフォルトの名無しさん
07/03/04 09:39:45
>>345
よくこんなコード思いつくなwww
これはすごい
理解するのに3分ぐらいかかったぜwww
348:デフォルトの名無しさん
07/03/04 22:47:15
>345 は言語マニヤ? ← 尊敬
349:デフォルトの名無しさん
07/03/05 00:34:22
サニタイジングが簡単に出来るモジュール化何かないでしょうか?
350:デフォルトの名無しさん
07/03/05 02:24:10
想像するに>>345はLISPERだな。
351:デフォルトの名無しさん
07/03/05 13:28:43
>>349
>>> import cgi
>>> cgi.escape('<>&"')
'<>&"'
>>> cgi.escape('<>&"', True)
'<>&"'
それはそうと、Pythonで変数が定義されているかどうかを調べるよい方法はありますか。
locals().has_key('foo') or globals().has_key('foo')
というのがダサくて仕方ありません。
352:デフォルトの名無しさん
07/03/05 13:39:09
そもそも変数が定義されているかどうか調べなきゃいけなないという状況がダサいの
だから我慢してください
353:デフォルトの名無しさん
07/03/05 13:53:45
try: except:
354:デフォルトの名無しさん
07/03/05 15:45:49
>>352
そういう状況、ふつうにあるけどな。メタプログラミングがからんできたら。
知らないなら知らないといえばいいのに、なにをわざわざ言い訳してるんだろ。
>>353
さんくす。そんな方法もあったか。
でもちょっと微妙
355:デフォルトの名無しさん
07/03/05 15:53:43
>>351
某ブラウザだとアンカーがないと何やってるか分からんw
356:デフォルトの名無しさん
07/03/05 15:56:01
>>351
普通に'foo' in locals()は?
357:デフォルトの名無しさん
07/03/05 16:16:07
>>354
メタプログラミングを使うとコードの変数参照スコープ?が動的に変わるの?
358:デフォルトの名無しさん
07/03/05 16:17:22
>>354
メタプログラミングが必要になる状況がそもそもダサいとは思わんかね?
359:デフォルトの名無しさん
07/03/05 16:31:03
オレはダサくないって事だけは鉄板なんだよきっと.
360:デフォルトの名無しさん
07/03/05 16:37:59
なにがダサイダサクナイって話はスレ違いじゃまいか?
361:デフォルトの名無しさん
07/03/05 16:50:55
351はPython使いとしてダサいと思います。
362:デフォルトの名無しさん
07/03/05 21:07:33
なんでassertしないんだ
363:デフォルトの名無しさん
07/03/05 23:14:48
PythonコードからPythonコードをインタプリタっぽく使う方法ってありませんかね?
parserライブラリのASTを有効活用すれば楽できるかと思うけど、どうやって良いか思いつかない。
今はしょうがなくスレッド化して、同期処理やってます。
364:デフォルトの名無しさん
07/03/05 23:39:56
eval(open(file).read())
365:363
07/03/05 23:50:51
>>364
それを使うと、fileのソースを一気に実行してしまうんですけど
そのfileのソースコードと本体のソースコードを同期させたいんです。
例えば、file内のソースに TextOut(r'あいうえお',50,'MSPゴシック')、とあったら
本体GUIに50msec間隔で'あいうえお'がMSPゴシックで表示される感じです。
もちろん、本体GUIも同時に動いています。
そして、今そのTextOutみたいな特殊な関数をスレッド関連で同期取っているんですけど
あまりの開発効率の悪さに、心が折れそうになってるんですよ。
366:デフォルトの名無しさん
07/03/06 00:03:58
code = open(file).read()
使いたいスコープ:
eval(code)
367:デフォルトの名無しさん
07/03/06 00:06:47
> 50msec間隔で'あいうえお'がMSPゴシックで表示される感じです
「あ」「い」・・・って一文字表示される間隔なのか、
全体の文字列がチカチカ50msec間隔で表示・非表示を繰り返すのか、意味分からん。
どっちにしても、そういうのを同期っていうのか?
368:デフォルトの名無しさん
07/03/06 00:10:50
やりたいことがよくわからんが、スレッドでやるほうが百万倍簡単じゃね?
369:363
07/03/06 00:11:20
>>366
なんとなくそうなるんではないかと、予想はあったのですけど・・・。
ちょっとやってみます。
>>367
一文字ずつ表示される間隔です。
5文字だから250msecぐらいだとして、その250msecで表示が完了するまで
インタプリタ側の処理は先に進んで欲しくないわけです。
そこで、本体ソースはインタプリタ側のスレッドを一時停止して同期を取っていた訳です。
370:363
07/03/06 00:14:28
>>368
まあ、スレッド使ってやっているわけですけど。
まあ、ぶっちゃけると、プレゼンアプリっぽいのを作っているわけです。
当然アニメーション処理や、文字の時差表示などを組み込んでいるわけですけど。
今までxmlか何かでインポートしていたのを、ふと、「Pythonコードそのもの使ってできなくね?」
と思った次第で。
371:デフォルトの名無しさん
07/03/06 00:17:00
GUIでつくるんなら、GUI側にタイマーイベント処理とか作ればいいんじゃね?
372:363
07/03/06 00:19:24
>>371
ごめ、GUI側にタイマ処理は既にやっているぽ。
その間、インタプリタ側の処理を止めるのに、わざわざセッションを一々張っているので
何とか改善できないかなぁ、と思ってるんです。
373:363
07/03/06 00:24:25
貴重なスレを消化してすんません。
もうちょっと、先が見えてからまたきます。
374:デフォルトの名無しさん
07/03/06 00:30:29
>>370
なるほど、コルーチン的に動かしたいわけだね。
別インタプリタを起動するよりは、そのPythonソース中ではトップレベルではなく、何か
main的な関数を呼ぶ規則にしておくのが良いんじゃないかな。
あとは別スレッドでそこを呼び出す。さらにプレゼン用の便利同期プリミティブセット一式
を作って抽象化しておく。
375:デフォルトの名無しさん
07/03/06 00:38:21
普通に埋め込みコードをCで書けば?
376:363
07/03/06 00:43:53
>>374
な・・・なるほど。多分半分ぐらいは理解してないけど。
便利同期プリミティブセット一式、てのは必須ですね。
行き当たりばったりでPythonコード組めなかったのは初めてだ・・・。
>>375
PLY使ってLunaっぽくCもどきスクリプトを作り始めたのが最初なのは秘密だ。
微妙な完成度と、異常な遅さと不安定さで(全部自責)、このまま開発を継続
するのを断念したのも秘密だ。
377:デフォルトの名無しさん
07/03/06 01:38:44
URLリンク(www.python.jp)
378:デフォルトの名無しさん
07/03/06 11:27:40
Pythonで、オブジェクトの中身を再帰的にたどって表示してくれるようなライブラリはありますか。
Rubyのinspect()メソッドみたいなやつです。
379:デフォルトの名無しさん
07/03/06 11:30:29
別にRubyと比較している訳じゃないので、「だったらRuby使え」とかいう人間としてレベルが低い反応はご遠慮ください。
380:デフォルトの名無しさん
07/03/06 11:36:10
>378 と >379 の間にナニかレスあったの?
381:デフォルトの名無しさん
07/03/06 11:49:44
>>379
>人間としてレベルが低い反応
質問者としてレベルが低いですね.
オマエみたいなヤツはRuby使え.
382:デフォルトの名無しさん
07/03/06 13:31:36
>>363
目的は違うけど以前似たよーなことを考えて書いたコードがあったので
参考までに貼っとく。
[ext_runner.py]--------------------------------------------------------
from bdb import Bdb
import Tkinter, threading
trigger = threading.Event()
running = True
class Debugger(Bdb):
def user_line(self, frame):
trigger.wait()
if not running:
self.set_quit()
db = Debugger()
class DebuggerThread(threading.Thread):
def run(self):
db.run("import ext")
ui = Tkinter.Tk()
button = Tkinter.Button(ui, text="Run")
button.pack(fill="x")
def toggle():
if trigger.isSet():
button.config(text="Run")
trigger.clear()
else:
button.config(text="Stop")
trigger.set()
button.config(command=toggle)
383:382の続き
07/03/06 13:32:44
th = DebuggerThread()
def quit():
global running; running = False
print "terminating the external script..."
trigger.set()
th.join()
print "done"
ui.quit()
Tkinter.Button(ui, text="Quit", command=quit).pack(fill="x")
th.start()
ui.mainloop()
ui.destroy()
[ext.py]---------------------------------------------------------------
import time
c = 0
while True:
c += 1
print "count", c
time.sleep(1)
384:デフォルトの名無しさん
07/03/06 14:09:49
>>378と>>376は別人だろ
釣られるなよ
385:デフォルトの名無しさん
07/03/06 14:10:23
>>378と>>379ね
386:デフォルトの名無しさん
07/03/06 14:31:08
今さら自己フォローですか。
そんなことより、すぐ興奮する癖と被害妄想とどうにかするほうが先だと思います。
387:デフォルトの名無しさん
07/03/06 14:34:45
おまえもな
388:デフォルトの名無しさん
07/03/06 14:42:03
>378
単純な質問だが、オブジェクトの「中身」って何だ?
389:デフォルトの名無しさん
07/03/06 14:45:09
Rubyのinspect()メソッドみたいなやつって書いただろ
390:デフォルトの名無しさん
07/03/06 15:03:36
Ruby使いが人間として劣っていることがよく分かる展開だな(wwww
391:デフォルトの名無しさん
07/03/06 15:05:06
頭の悪さをねちっこさでカバーして
偉そうにするから連中は始末に負えない。
392:デフォルトの名無しさん
07/03/06 15:06:43
おいおい、まつもとくんのことをそんな風に言うのはやめろよな!!
393:デフォルトの名無しさん
07/03/06 15:13:07
俺は>378じゃないが、Pythonで言うなら
class MyClass:
def __init__(self):
self.var1 = 'foo'
self.var2 = 3
obj = MyClass()
print obj.inspect()
ってやったら
<MyClass: var1='foo' var2=3>
って感じで表示されるのが Ruby の inspect だな
再帰的っつーか、ルートクラスで定義されてる上に
inspect 内でフィールドに inspect 呼んでるから結果的に全て遡るだけ
ちなみに、リテラル形式のあるクラスでは inspect はリテラル自体を返す
>>378
リテラルに対しては repr() を使えばお望みの物が出るハズ
自作クラスなら、それらしいメソッド名で
中身の各オブジェクトに対して repr() 呼ぶぐらいしか俺は思いつかないが
394:デフォルトの名無しさん
07/03/06 15:16:58
リテラルに対しては、じゃないや
リテラルの形式で書けるクラスのインスタンスに対しては、が正確か
395:デフォルトの名無しさん
07/03/06 15:17:18
>>393
>自作クラスなら、それらしいメソッド名で
URLリンク(www.python.jp)
入門書くらい読もうな。
396:デフォルトの名無しさん
07/03/06 15:26:30
>395
__repr__() は知ってたけれど、何か違う気がしてやめた。
やっぱ、__repr__() が一番適切?
でも持ってる変数の中身まで見たり、
> 可能な場合には、この値は
> 同じ値を持ったオブジェクトを
> (適切な環境で) 再生成するために使えるような
> 有効な Python 式に 似せるべきです。
って辺りが気になってそうは言わなかったんだけど。
397:デフォルトの名無しさん
07/03/06 15:32:38
>396
自作クラスみたいに簡潔にリテラル表記できないオブジェクトについては
___repr__が再生成できなくてもいいんじゃね?
標準ライブラリのクラスもそうなってるし。
>>> import poplib
>>> s = poplib.POP3('hoge.hage.uge')
>>> s
<poplib.POP3 instance at 0x791fd0>
398:378
07/03/06 15:35:07
回答してくれた方、ありがとうございました。
pprintというのを見つけたんですが、repr()と同じで中身までは見てくれないようです。
なさそうなんで、頑張って自作してみます。
399:デフォルトの名無しさん
07/03/06 15:36:15
すまん,
397の例は単にクラスインスタンスの標準的なreprを使ってるだけだから
あまり参考にならないかも
setsのSetクラスなんかは、ちゃんと再生成できる表記を返すみたいだ
>>> import sets
>>> sets.Set([1,2,3])
Set([1, 2, 3])
結局のところ,mustじゃなくてshouldって言ってるんだから
厳密に従う必要はないと思うよ
400:デフォルトの名無しさん
07/03/06 19:51:00
つーかこの場合質問者が欲しいのはオブジェクトの内容のダンプでそ
__repr__() を厳密に実装するか否かの問題じゃないと思われ
401:107
07/03/06 19:56:26
URLリンク(subtech.g.hatena.ne.jp)
こんなの見付けたんだけどこれpythonに書き直すの
大変かな? perlみたいな雑多なitem(Nodokaとか)が探せばころがってる
rubyがすこし羨しい…orz
402:デフォルトの名無しさん
07/03/06 20:09:54
pythonスレはそういう関係に興味ある人少ないと思われ
だから君がやるんだ
403:デフォルトの名無しさん
07/03/06 20:16:32
「何か」ってまだやってたのか。
あれってHTTPに似たプロトコルだから既存の物を改造すればできるじゃね。
socket使ったほうが早いか。
404:363
07/03/06 20:33:45
ちょっと遅くなったけど、yield使えばコルーチンが「糞」簡単にできました。
Pythonとコルーチンでググったら出てきました・・・。
いままでジェネレータとしか見ていなかったけど、yield構文は強力過ぎですね・・・。
参考にしたサイト
URLリンク(www-06.ibm.com)
405:デフォルトの名無しさん
07/03/06 21:32:58
伺かか・・・・・何もかも皆懐かしい・・・・・。
406:デフォルトの名無しさん
07/03/06 21:55:14
ただのdumpならpickleでもしとけば(違
407:107
07/03/06 22:14:07
>>402-403
答えてくれてありが㌧。
URLリンク(d.hatena.ne.jp)
ここみてたら socket で簡単にできそうでした。
微妙にスレ違いっぽいのでsage。
408:デフォルトの名無しさん
07/03/06 23:24:13
>>401
人それぞれだねえ
俺はpythonにデフォでメール関係のライブラリ
があって完成度の高さに感動したよ。
簡単にマルチパートのメールが作れるし
rubyなんて外部のrmailですら中途半端なのに
409:デフォルトの名無しさん
07/03/06 23:33:37
>>401
ninixとかはガイシュツ?
410:デフォルトの名無しさん
07/03/06 23:45:14
ninixはPythonで書かれてるんだっけ?
昔使ってたわ
411:デフォルトの名無しさん
07/03/07 03:28:20
すいません、大学でPythonを勉強している者です。"&"と”>>”の意味がいまいちわからないんですけど、どなたか教えてもらえないでしょうか?
例えば、if x & (1<<i):
li.append("○")
よろしくお願いします。
412:デフォルトの名無しさん
07/03/07 03:34:58
同じ大学生といってもこれはないわ
413:デフォルトの名無しさん
07/03/07 03:35:21
せんせに聞こうぜ
414:デフォルトの名無しさん
07/03/07 03:37:25
>>412
すいません、プログラミングにおいて全くの初心者なんで。自分で勉強しています。どなたかできればよろしくお願いします。
415:デフォルトの名無しさん
07/03/07 03:44:45
2進法って知ってる?
416:デフォルトの名無しさん
07/03/07 03:47:32
はい。。。
417:デフォルトの名無しさん
07/03/07 03:50:31
ちなみに、ここで聞いちゃうと自分で勉強したことにならないよ。
でも二進法を知ってる君なら大丈夫、自分でなんとかできるよ。
418:デフォルトの名無しさん
07/03/07 03:54:44
>>417
どうもありがとうございます^^ でも長い間考えたんですけど全くわからなくて。。。もう少し自分で考えて見ます。”&”と”>>”って一体何をするのやら^^;
419:デフォルトの名無しさん
07/03/07 03:56:28
URLリンク(ja.wikipedia.org)
420:デフォルトの名無しさん
07/03/07 04:18:05
>>419
リンクどうもありがとうございます。やっと理解できました!
421:デフォルトの名無しさん
07/03/07 11:41:14
python ML で ぱいそん と名乗るのはどうなのよ
422:デフォルトの名無しさん
07/03/07 11:45:10
頭の程度がよくわかるから
応対の仕方を決めやすくていいんじゃない?
423:デフォルトの名無しさん
07/03/07 22:10:29
ぱいそんのためのメーリングリストだからいいんじゃね?
424:デフォルトの名無しさん
07/03/07 22:59:24
最新Pythonエクスプローラ買ったけど、誤植(サンプルリストの図番号とか)が多くて困惑
425:デフォルトの名無しさん
07/03/07 23:05:36
>>424
リスト9がなかったときはさすがにどうよと思ったね
426:デフォルトの名無しさん
07/03/07 23:20:15
クラス定義にdefを使う、とか?
427:デフォルトの名無しさん
07/03/08 00:14:41
質問です
import random
random.seed()
a = [[0]*4]*4
for i in range(4):
for j in range(4):
a[i][j] = random.randint(0,1)
print a
このようなのを実行すると
[[1, 0, 1, 0], [1, 0, 1, 0], [1, 0, 1, 0], [1, 0, 1, 0]]
のように同じのばかりが出てしまいます。
どうしてこうなってしまうのでしょうか
428:デフォルトの名無しさん
07/03/08 00:32:40
[[0]*4]*4で行われてるのは浅いコピーだからリストの中のリストは全部同じ一つのオブジェクトだよ。
かわりに、[[0]*4 for n in xrange(4)]と書けば望んだ結果になると思う。
429:デフォルトの名無しさん
07/03/08 00:37:53
ありがとうございます。
勉強不足でした。
430:デフォルトの名無しさん
07/03/08 00:39:35
てか、普通にライブラリリファレンスのシーケンス型のページで解説されてるよね。
431:デフォルトの名無しさん
07/03/08 08:44:16
つまりチュートリアルに書くべき内容なんだよな。
432:デフォルトの名無しさん
07/03/08 08:45:16
>>431
チュートリアルには書いてあるし、まともな入門書にも書いてある。
433:デフォルトの名無しさん
07/03/08 09:18:17
もっとも書いてあるって言うことと
分かりやすいか・理解できるかは
若干ベツモノ
python に限らず...
434:デフォルトの名無しさん
07/03/08 11:04:00
いろんな言語とのインターフェイスが充実してるから
pythonを触り程度に勉強した。
処理の本質的な部分はlispで書いて
lisp -> python -> c++
という流れでくっつけたいのだけど
どこかでつまづかないのだろうか
c++は自分がやりたい分野のライブラリーが充実してる
435:デフォルトの名無しさん
07/03/08 11:42:02
lisp->c++ じゃない理由はなんだろう。
436:デフォルトの名無しさん
07/03/08 11:51:33
pythonですでにいくつかスクリプトを作ってしまったことと、
lisp->python->c++
じゃなくて
場合によっては
haskell -> python -> c++
に変更される場合もあるからです
haskell- > c
はあるけど
haskell -> c++
はない
437:デフォルトの名無しさん
07/03/08 13:09:10
なるほど。boost::python とか使えば Python→C++ は超らくちんだからな。
438:デフォルトの名無しさん
07/03/08 16:11:25
pythonで、オブジェクトのインスタンス変数の一覧はどうやって取って来れますか。
439:デフォルトの名無しさん
07/03/08 16:48:47
dir(obj)
440:デフォルトの名無しさん
07/03/08 18:27:13
数値計算ライブラリの自動チューニングに関する講演会
URLリンク(www.hpcc.jp)
> A Python based infrastructure to the ACTS Collection
441:デフォルトの名無しさん
07/03/08 20:49:28
>>440の前日にも講演があるみたい。
URLリンク(www-solid.eps.s.u-tokyo.ac.jp)
> Two High-Level User Interfaces for Computational Scientists: PyACTS and DCT
442:デフォルトの名無しさん
07/03/08 22:30:42
Pycon a "hiring fest"
URLリンク(radar.oreilly.com)
/ ̄ ̄\
/ _ノ \
| ( ●)(●)
. | (__人__) Half the lightning talks ended (or started) with "We're hiring" って
| ` ⌒´ノ 求人多杉だろ、常識的に考えて…
. | }
. ヽ }
ヽ ノ \
/ く \ \
| \ \ \
| |ヽ、二⌒)、 \
443:デフォルトの名無しさん
07/03/08 22:35:42
>>439
thank you
444:デフォルトの名無しさん
07/03/09 22:58:54
>>442
Pythonを使うヤツには能力の高いデキるヤツが多い。
できるヤツと出来ないヤツの間には
仕事の成果に何十倍もの開きがあるとかないとか。
つまりだ。
烏合の衆数十人の会社を
デキるヤツ一人が負かす可能性があるってことだ。
一人の力で競争原理が変わる可能性があるんだよ。
だからあっちの企業はPython使いを雇いたがる。
企業の中で腐ってたり
芽が出なくて逃げ込むようにPythonを使っているヤツではなく
自ら道を切り開く力を持っている、本当にデキるPython使いをな。
445:デフォルトの名無しさん
07/03/10 00:01:10
一から十まで脳内設定の垂れ流しってどうよ
446:デフォルトの名無しさん
07/03/10 00:25:32
小魚ばっかりですな
447:デフォルトの名無しさん
07/03/10 00:31:25
駄目だこりゃ。
448:デフォルトの名無しさん
07/03/10 00:46:42
>企業の中で腐ってたり
>芽が出なくて逃げ込むようにPythonを使っているヤツではなく
俺のことかな
449:デフォルトの名無しさん
07/03/10 00:52:42
おれおれ
450:デフォルトの名無しさん
07/03/10 00:53:28
行きたいけれど関西だ
圏論勉強会って研究会扱いで旅費申請できるのだろうか
451:デフォルトの名無しさん
07/03/10 08:44:36
「ぷろぐらむ書けるの?」って上司に聞かれて
「ぱいそんならおk」っていうと諦めて帰ってくれるんだよね
452:デフォルトの名無しさん
07/03/10 10:27:39
>>451
お前さんの普段の行動が香ばしいのが諦められる原因だろ.
Pythonのせいにするなよ(wwwwwwwwwwww
453:デフォルトの名無しさん
07/03/10 10:40:54
御前は世間をしらない。Visual Basic だけがプログラム言語だと思っている上司が珍しくない
454:デフォルトの名無しさん
07/03/10 11:55:56
何でも人のせいにするヤツって居るよな。
そういうヤツが歳だけ余計に食って老害垂れ流すんだろうな。
455:デフォルトの名無しさん
07/03/10 12:01:21
駄目な奴には駄目な上司.
これが世間の法則だが
駄目な奴だからってあまりいじめない方がいいと思うよ.
456:デフォルトの名無しさん
07/03/10 12:10:43
まぁ>>453は極端な例だろうけど、企業の場合遊びでやってるわけじゃないから
ソースのメンテナンスや引きつぎっつうもんがあるわけで。
その会社にPython使いが希少であるという状態なら、「Pythonにしたいです」
という提案は受理されないだろうな。
「PythonならC/C++やJavaやPerlやLispのような他の言語に無い
こんな素晴らしいことが出来ます」と滔々とプレゼンテーションできるなら
まだ別かも知れないが。
457:デフォルトの名無しさん
07/03/10 12:51:15
下流企業の実態なんて興味ないよ
458:デフォルトの名無しさん
07/03/10 14:02:10
>>457
超一流企業に勤めている>>457なら、下流企業のアフォ上司も
簡単に説得可能なんだろうな。
試しにここでプレゼンしてみ?
459:デフォルトの名無しさん
07/03/10 14:08:44
「下流企業ではない」が「超一流企業である」に飛躍してしまうのが
下流企業に勤める負け犬の思考の限界。
460:デフォルトの名無しさん
07/03/10 14:15:10
煽りはいいからお前さんのプレゼン能力を見せてみろよ。
聴いてやるから。
461:デフォルトの名無しさん
07/03/10 14:43:00
脳内の想像だけで他人を上司を説得できない負け犬、無能、下流企業呼ばわり
なんだから、さぞかし素晴らしい御託を述べてくれるんだろうて。
実に楽しみだな。
462:デフォルトの名無しさん
07/03/10 14:43:21
>>456
> こんな素晴らしいことが出来ます
素晴らしい結果を出すことは他の言語でも大差ないんだろうけど、
プログラミングそのものやソース書くときのストレスが少ない、
っていうのが一番のメリットだと思う。
でもそういうことは、他の人にアピールするの難しいんだよね。
463:デフォルトの名無しさん
07/03/10 14:48:48
>>462
そら、あんたが無能で下流企業の負け犬だから、
そういう非定量的で感覚的な内容しか出てこないんだろうな。
それじゃ、他人にはアピールできないわ。
464:デフォルトの名無しさん
07/03/10 14:55:21
>>458
アフォ上司の説得なんて時間の無駄。さっさと出世しておまえが上司になるか、
それが不可能なら転職するか、それも無理ならあきらめろ。w
465:デフォルトの名無しさん
07/03/10 14:56:08
>>463
そんなことしか言えないから、おまえはろくなプログラムが書けないんだよ。
466:デフォルトの名無しさん
07/03/10 14:57:08
>>464
社会のしがらみを知らないNEETのただの妄言か。
アフォくさ。
467:デフォルトの名無しさん
07/03/10 14:58:22
>>466
そんなことしか言えないからアフォ上司の下で働く羽目になったんじゃないのか?
468:デフォルトの名無しさん
07/03/10 15:00:09
>>465
あのな。
>>462を読み直してみろよ。
「~だろうけど」
「~と思う」
著しく感覚的で主観的であることを示す表現。
具体的で定量的なものは何も無い。
「なぜ」ストレスが少ないか、具体的な根拠が何も無い。
C++や、Rubyや、JavaScriptや、Lispに比べてどうか?
こんなんで「他人にアピール」出来ると思ったら、それこそお笑いだぞ。
469:デフォルトの名無しさん
07/03/10 15:01:00
> そんなことしか言えないから
その言葉、そっくりそのまま返してあげるよ。
470:デフォルトの名無しさん
07/03/10 15:01:43
勤めてるのが中小企業でも大企業でも
「上司が」とか「マイナー言語だから」と諦めるような奴は人間として「下流」だろ。
どんな状況でも
自分のやりたいことが出来るように道を切り開く人間こそ勝ち組なんだよ。
転職したって変わらないよ。
Python使ってる企業に移ったって
下流人間は別のことでフラストレーション感じるに決まってる
471:デフォルトの名無しさん
07/03/10 15:03:14
>>470
だから、勝ち組なら勝ち組らしいプレゼンをしてみせろよ。ここで。
聴いてやるからさ。
自分は「下流」じゃないんだろ?その言い草なら。
472:デフォルトの名無しさん
07/03/10 15:04:26
>>468
おまえ2chのレスに何を求めてるんだ?w
無料でそんな素晴らしいプレゼンが聞けるとでも思ってるの?
473:デフォルトの名無しさん
07/03/10 15:05:10
>>471
煽るだけなら来るなよ。いいかげんうざいぞ。
474:デフォルトの名無しさん
07/03/10 15:05:52
>>472
要はできないから逃げた、と。
そうだよなぁ。下流企業づとめどころかNEETだもんな。
475:デフォルトの名無しさん
07/03/10 15:05:57
>>471
>だから、勝ち組なら勝ち組らしいプレゼンをしてみせろよ。
ここで?
無理に決まってるだろ(www
下流の常識はすごいな(wwwww
Rubyでも使えば?
476:デフォルトの名無しさん
07/03/10 15:06:02
「下流」という言葉が彼のコンプレックスを刺激してしまったようですね
477:デフォルトの名無しさん
07/03/10 15:07:00
文句しか言う気の無いやつにプレゼンして意味あるの?
478:デフォルトの名無しさん
07/03/10 15:07:18
ないよ
479:デフォルトの名無しさん
07/03/10 15:07:41
>>475
> 下流の常識はすごいな(wwwww
> Rubyでも使えば?
なんでそこでRubyとか出てくんの?
もしかしてPython使ってる俺エライ、Rubyお子様、とか意味不明な
優越感でも持ってんのか?
たかが言語にそれほど拘ってる奴、はじめて見たよw
480:デフォルトの名無しさん
07/03/10 15:07:43
下流のくせにPythonを使えばハッカーになれると思ったのかな。
元々能力のある奴がPythonを使うから
常人離れしたスループットを出せるというのが現実だというのに。
お目出たい下流だな。
481:デフォルトの名無しさん
07/03/10 15:08:06
上司も大変だなw
482:デフォルトの名無しさん
07/03/10 15:08:46
>>479
>もしかしてPython使ってる俺エライ、Rubyお子様、とか意味不明な
>優越感でも持ってんのか?
この件に関して、ここで"プレゼン"してくれよ.
ぜひお願いするよ.
483:デフォルトの名無しさん
07/03/10 15:08:56
この流れなら言える
ZODBとzope.interfaceとtwistedがあれば大体おk
484:デフォルトの名無しさん
07/03/10 15:09:40
>>480
> 元々能力のある奴がPythonを使うから
アフォくさ。本物のハッカーなら言語なんか関係あるか。
485:デフォルトの名無しさん
07/03/10 15:09:46
>>462
Pythonの一番いいところは
コードスタイルが自然に統一されて、読みやすいことじゃね?
486:デフォルトの名無しさん
07/03/10 15:09:58
コーディングトラブルの約70%はif文などでの{}省略
スレリンク(tech板)l50
Pythonならこの70%のトラブルを0にできるんだぜ
487:デフォルトの名無しさん
07/03/10 15:10:01
>>483
いや、それはどうかな?
ちゃんとプレゼンしないと納得してもらえないらしいぞ。w
488:デフォルトの名無しさん
07/03/10 15:10:32
なにこの流れ。。。。
489:デフォルトの名無しさん
07/03/10 15:10:54
>>485,486
つまりフリーフォーマット言語は糞でありFORTRAN77に戻るべきなんだな俺たちはw
490:デフォルトの名無しさん
07/03/10 15:10:58
なんでプレゼン厨が湧いてるの?
他の言語の差し金?
つまんないことでケンカしないで
適材適所で使うのが賢いよ
491:デフォルトの名無しさん
07/03/10 15:11:16
>>484
>本物のハッカーなら言語なんか関係あるか。
あるよ。
ハッカーにとっても一日は24時間だからね。
真のハッカーは生産性の良い物を使う。
492:デフォルトの名無しさん
07/03/10 15:11:46
>>489
書きやすさと読みやすさのトレードオフだなw
もう固定フォーマット言語には戻れんな
493:デフォルトの名無しさん
07/03/10 15:12:16
>>491
そうだな。そしてそれがPythonであるとは限らないな。
494:デフォルトの名無しさん
07/03/10 15:12:21
楽しい土曜日ですよ
495:デフォルトの名無しさん
07/03/10 15:13:52
ようし、パパ月曜にプレゼンして
D言語を仕事で使えるように上司を説得するぞう!!!
496:デフォルトの名無しさん
07/03/10 15:13:57
>>492
初めて好意的なレスが返ってきたが……
>>489は皮肉含みのジョークでつよ。
俺って親切だなぁ。
497:デフォルトの名無しさん
07/03/10 15:14:25
俺は母国語がC++で、
大規模開発はC++ or C#
小規模ツールはPython or Perlかな。
Pythonだと人間の思考に近くて楽しいね。
C++は自分が計算機になったみたいに感じるw
498:デフォルトの名無しさん
07/03/10 15:14:31
>>495
DはPythonよりずっと駄目だろw
499:デフォルトの名無しさん
07/03/10 15:15:14
>>497
> C++は自分が計算機になったみたいに感じるw
それは凄いな。「C」なら判るが。
C++でどんな機械語に落ちるかイメージできるか?
500:デフォルトの名無しさん
07/03/10 15:15:20
逆にさ、発想を変えて、
Pythonのダメなところを上げていけば
いいところが浮かび上がるんじゃね?
501:デフォルトの名無しさん
07/03/10 15:15:48
>>497
所詮高級アセンブラだからね.
502:デフォルトの名無しさん
07/03/10 15:16:37
>>499
機械語うんぬんより、C++でやることの大半はメモリ管理だからねw
503:デフォルトの名無しさん
07/03/10 15:18:31
>>499
もしできないなら C++ は使わないほうがいいよ。思わぬ落とし穴に填るかも。
テンプレートパズルを駆使して神のようなコードを吐かせる快感こそが C++ の醍醐味だ。
いつもそんなんじゃ疲れるから、普段は C# や Python を使うが。
504:デフォルトの名無しさん
07/03/10 15:19:17
>>503
C++のテンプレートは不完全だから嫌いよw
505:デフォルトの名無しさん
07/03/10 15:19:25
>>502
C++ではobject の ownership を意識していなければならないのは確かだが
Cほどではないだろう。
コンストラクタ/デストラクタやboost::shared_ptrのようなものもあるし。
506:デフォルトの名無しさん
07/03/10 15:20:37
>>504
そこがまたパズルっぽくて(ry
507:デフォルトの名無しさん
07/03/10 15:21:40
>>503
悪いが俺は出来ない。
C++の「テンプレートパズル」と「機械語」では抽象レベルが違いすぎる。
C++で考える時は、メモリのことは考えるが、機械語レベルでは考えないな。
ついでに言うと、
> テンプレートパズルを駆使して神のようなコードを吐かせる快感こそが C++ の醍醐味
悪いがこういうオナニストと俺は一緒に仕事はしたくないな。
508:デフォルトの名無しさん
07/03/10 15:21:50
>>505
ガベージコレクション言語をやっちゃうと
デストラクタがあっても苦痛は苦痛なんだよね。
>>503
最近はコンパイラが、人間の思いも寄らないような最適化するから、
変な工夫を入れると悪化することもあるけど。
509:デフォルトの名無しさん
07/03/10 15:22:38
また隔離スレッドができる予感・・・・・・
510:デフォルトの名無しさん
07/03/10 15:23:33
>>507
それが正しいと思うよ。
一昔前とは変わってきてる。
いまのプログラマは高級言語で高い生産性が求められるから、
必ずしも機械語の知識は必要ないし。
511:デフォルトの名無しさん
07/03/10 15:23:57
>>508
C++でもGCは使える。が、明白にスコープでobjectがdestructされることに
慣れており、それを好むC++ユーザが多いように思う。
512:デフォルトの名無しさん
07/03/10 15:27:16
そうかな。俺だったら機械語の知識のない人と一緒に C++ の仕事なんて絶対に
やりたくないが。
意識する必要があるかどうかと知識が必要あるかどうかは別の問題だよ。
機械語の知識のない人が C++ を触るなんて、まさに気違いに刃物。
そういう人は Python, C#, Java などで仕事していてほしい。
513:デフォルトの名無しさん
07/03/10 15:29:43
>>512
Contextを読み取る能力に欠けているのか、意図的に誤読しているのか。
「機械語の知識の有無」を論じているのではないよ。
C++の抽象レベルで機械語と対応付けて一々頭の中で考えているかを
論じていただけだ。
無論、ケースバイケースでそうすることもあるだろうけどな。
514:デフォルトの名無しさん
07/03/10 15:31:36
C#でも外部ライブラリ呼ぶ時とか、ポインタをpinしてGCのリロケーションの
対象外にしないといけとか色々あるだろ。
515:デフォルトの名無しさん
07/03/10 15:32:59
>>512
>>513のいうように、今は変わってきてるかな。
子供が円周率を100桁暗記するより、英単語の1つでも覚えた方がいいと思うように、
機械語を覚えるより、データ構造やモジュールの使い方を覚えたがいい
というような感じかな。
確かに、PythonやC#を使った方がいいというのは同意。
516:デフォルトの名無しさん
07/03/10 15:36:17
>>513
>>512は
>>>510
>> 必ずしも機械語の知識は必要ないし。
に対する反論。つまりC++には「必ず機械語の知識が必要」だと思う。
>>513にも反論するとすれば、C++には思わぬ落とし穴が結構あるので、機械語レベル
の話を全く頭から払拭してプログラムを書くのは危険が伴うと思う。
強く意識するかどうかは別としても、そういう知識のない人が使う言語れはないと思う。
これ以上 C++ の話を続けるならば、他のスレへ移動しましょう。
517:デフォルトの名無しさん
07/03/10 15:37:49
>>500がいうように、Pythonの欠点を挙げてみない?
518:デフォルトの名無しさん
07/03/10 15:37:50
隔離スレッドができる悪寒
519:デフォルトの名無しさん
07/03/10 15:38:30
>>516
>これ以上 C++ の話を続けるならば、他のスレへ移動しましょう。
全くだ。C++の本スレなんか最近は閑古鳥が鳴いているってぇのに。
お前ら本スレに帰れ。
520:デフォルトの名無しさん
07/03/10 15:38:39
>>517
何が目的なんだよ(www
521:デフォルトの名無しさん
07/03/10 15:41:08
>>518
それは作れという意味ですか?
どういう名前にしたらいいかな。
522:デフォルトの名無しさん
07/03/10 15:41:08
敵国の情報工作だ。乗ってはならんぞ。w
523:デフォルトの名無しさん
07/03/10 15:43:58
>>516
何を持って「機械語レベル」と言っているかなんだが。
C++で書くときにいちいちレジスタやI/Oポートやニーモニックを意識するか?
むしろそうせねばならないとすれば、そっちの方が問題があると思うぞ。
ということなんだがな。
524:デフォルトの名無しさん
07/03/10 15:43:59
>>520
Pythonの欠点を盲目的に挙げてみれば、
実は他の言語にも共通した欠点を抱えており、
逆にPythonのいいところも分かるんじゃないかと
525:デフォルトの名無しさん
07/03/10 15:45:17
>>523-524
隔離スレの名前は「Pythonと多言語比較」でいいかい?
526:デフォルトの名無しさん
07/03/10 15:45:54
「他言語」では?
527:デフォルトの名無しさん
07/03/10 15:46:20
間違えちゃった・・・・・・
528:デフォルトの名無しさん
07/03/10 15:47:05
pythonの嫌いなところは
デザパタ話だしたり、C++の話しだすところ。
スレ違いだってことを"""自覚"""できない奴がいるところ。
529:デフォルトの名無しさん
07/03/10 15:47:42
>>528
それは「言語の」特性ではないな。
もっとプレゼン能力を磨け。
530:デフォルトの名無しさん
07/03/10 15:48:47
>>528
ちゃんとプレゼンしないと上司を説得できないところも欠点だよなw
531:デフォルトの名無しさん
07/03/10 15:49:54
スレ違いだってことを"""自覚"""できない奴がいる
>>529、君のことだよ
てか、隔離したデザパタ+pythonスレも全然伸びてないがな
ここで話してた奴、もっと向こうもりあげろよw
532:デフォルトの名無しさん
07/03/10 15:53:18
やだよめんどくさい
533:デフォルトの名無しさん
07/03/10 15:55:57
>>530
それは大いなる欠点だ。
もうPython使うのやめた。
534:デフォルトの名無しさん
07/03/10 15:59:26
中身のない話をするときに限ってスレがよく伸びる
535:デフォルトの名無しさん
07/03/10 16:00:08
そろそろメタクラ(ry
536:デフォルトの名無しさん
07/03/10 16:07:20
>>531
「プレゼン」とかいうキーワードにしか飛びつけない厨房乙。