1 名前:デフォルトの名無しさん [2008/04/29(火) 23:47:08 ] Python オフィシャルサイト ttp://www.python.org/ ttp://www.python.org/doc/ 日本Pythonユーザ会 ttp://www.python.jp/Zope/ ttp://www.python.jp/doc/ FrontPage - Pythonのお勉強 ttp://python.rdy.jp/ 前スレ pc11.2ch.net/test/read.cgi/tech/1206876081/ ◆関連スレッド Microsoft IronPython 1.0 pc11.2ch.net/test/read.cgi/tech/1157686822/ Python の宿題ここで答えます Part 1 pc11.2ch.net/test/read.cgi/tech/1153585095/ Python Challengeをやろう! pc11.2ch.net/test/read.cgi/tech/1175919288/ Pythonについて(アンチ専用) pc11.2ch.net/test/read.cgi/tech/1203557046/ Pythonに見られるインデントによる制御構造の是非 pc11.2ch.net/test/read.cgi/tech/1169473442/ pythonがこの先生きのこるには pc11.2ch.net/test/read.cgi/tech/1167996371/ Eclipse統合M24【Java/C/PHP/Ruby/Python/Perl】(PyDev) pc11.2ch.net/test/read.cgi/tech/1200918324/ 【Perl,PHP】LLバトルロワイヤル2【Ruby,Python】 pc11.2ch.net/test/read.cgi/tech/1209289408/ デザパタ + Python/Ruby/Smalltalk part2 pc11.2ch.net/test/read.cgi/tech/1175959706/ 2ch検索: [python] find.2ch.net/?BBS=ALL&TYPE=TITLE&STR=python
331 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 11:14:13 ] WindowsならCtrl+ZのあとにEnter でも最初の表示どおりhelp→help()→quit→quit()と入力していってほしいかも。
332 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 11:49:46 ] >>328 ,329 PEP 7 -- Style Guide for C Code www.python.org/dev/peps/pep-0007/
333 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 14:47:26 ] >>321 >>327 >>331 ありがとうございます Windows で python -m CGIHTTPServer を実行しています Ctrl + C Ctrl + D Ctrl + Z どれもダメだったのでタスクマネージャーから殺したら終了出来ました あとでわかったのですが、 Ctrl + C を押したあとにブラウザの更新ボタンで再度リクエスト投げると Keyboard Interrupt が出て終了するようです Windows だから select で監視出来ていないということでしょうか?
334 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 15:22:22 ] 単純にaccept()がブロックしてるだけでしょ try節で囲むかtelnet localhost 80とかやってから落とせばいい
335 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 15:44:26 ] >>333 普通のCGIがやりたいの? ApacheでCGIがやりたいの? 320を読む限りではGoogle App Engineとかそういうのが近いのかな? GAEはお勧めしないけど。
336 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 19:40:24 ] >>335 320ですが320は322しか書き込みしていません・・・ 私とはしたいことが異なるのではないかと思います あと、質問してもよろしいでしょうか じつはまだサーバ上でファイルを実行できていないんですが、そのことについて・・・ CGIHTTPServer.pyを起動させて htdocsフォルダを作って まだpythonのスクリプトが書けないので既存のスクリプトファイル (python.rdy.jp/wiki.cgi?page=PythonAvailableServers のcheck.cgiとexplore.cgi)を localhost:8000/htdocs/ に入れて表示させてみたのですが ieだとそのまま中身のテキストが表示され firefoxだとcgiファイルのダウンロードが始まってしまいます 拡張子をpyに変えてみたらie、firefoxともそのまま中身のテキストが表示されます cgi-binフォルダを作って 同様に既存のスクリプトファイルを localhost:8000/cgi-bin/ に入れて表示させてみたら 拡張子がcgiだと ie、firefoxともに > Error response > Error code 403. > Message: CGI script is not executable ('/cgi-bin/check.cgi'). > Error code explanation: 403 = Request forbidden -- authorization will not help. と表示されます 拡張子をpyに変えてみたら ie、firefoxともに真っ白な画面が表示されます うまく実行させるにはどうすればいいのでしょうか・・・
337 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 20:05:18 ] それsh辺りのスクリプトだからwinじゃ動かないよ .pyに変えたらコマンドプロンプトにエラーメッセージが表示されてるからよく嫁 とにかくエラーメッセージはきちんと嫁
338 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 20:05:43 ] Apacheの場合、デフォルトで * htdocsにはHTMLおよび画像ファイル * cgi-binにはCGIスクリプト と分けて設置しなければいけない。 CGIHTTPServerでも似たようなものだと思う > Message: CGI script is not executable ('/cgi-bin/check.cgi'). とりわけ使ってるのがLinuxなら CGIスクリプトの一行目にshebang入れてchmod +xしなきゃだめ WindowsだとWebサーバにもよるけどshebangは必要かも
339 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 20:08:17 ] ああほんとだ。見てなかった >sh辺りのスクリプト explore.cgiはPythonで書かれてるから動くんじゃないかな
340 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 20:13:03 ] >>336 htdocs フォルダが My Documents みたいにスペースの入ったフォルダの配下にない?
341 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 20:16:50 ] >>337-340 336です 親切にどうもありがとうございますm(_ _)m ただ話の内容が難しくて理解が追いついていません・・・ windows上で使っています いつかはレンタルサーバを借りて動かしたいと思っているのですが windowsとlinuxでスクリプトの書き方(?)が異なるのでしょうか・・・ コマンドプロンプトにメッセージが表示されるんですね 読んでみます テスト用に選んだスクリプトも選択ミスだったんですね パスにスペースは入っていません ピリオドと数字は入っています エラーメッセージをよく読みます
342 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 20:35:42 ] 実際に試してきた 1. c:\cgi-bin\ に env.py を置く import os print 'Content-type: text/plain\n\n' for key in os.environ: print '%s: %s' % (key, os.environ[key]) 2. cd c:\ して python -m CGIHTTPServer する 3. ブラウザで localhost:8000/cgi-bin/env.py にアクセス 環境変数がずらっと表示されたら成功 Windowsの場合、shebang も chmod +x も必要ないが 拡張子は .py にしないと動かないみたい あと My Documents みたいなフォルダの配下だとこけるのは >>340 が指摘してくれている通り
343 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 21:01:56 ] >>342 336です env.pyはうまく動きました!と思います 45行ほどの文字列が表示されました explore.pyもうまく表示されました 表データが表示されました cgi-binに拡張子をpyにして入れるんですね 初歩的なことに付き合っていただき みなさん ありがとうございますm(_ _)m
344 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 21:10:10 ] めずらしくpythonのお勉強なんかやってるやつがいるな
345 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 21:34:07 ] まだpythonにたどり着いてない気が…
346 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 21:44:28 ] c:\ に置かせようとするセンスが理解出来ん
347 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 21:50:30 ] センスっつーより悪意を感じる
348 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 22:13:52 ] 拡張子がcgiでも関連付けでpythonを起動してやるようにすれば動くかもしれない。 実行可能ならbatなんかでもCGIとして動作するみたいだから。
349 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 16:39:43 ] こんにちは。いつも参考にさせていただいております。 さて、早速なのですがPythonでテキストファイルへの書き込みは出来るのですが追加の書き込みの方法がわかりません。 一度内容を読み込んで結合してから書き込んでもよいのですがあまりスマートとは思えませんでしたのでここに投稿した次第です。 方法をご教授いただければ幸いです。
350 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 16:42:06 ] open(path, 'a')
351 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 16:48:57 ] レスありがとうございます。解決いたしました。
352 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 20:59:01 ] 下記をCGIとして動かしてみたところ、何も表示されません。 # -*- coding: utf-8 -*- import os import cgi import cgitb; cgitb.enable() print "Content-Type: text/plain\n\n" form = cgi.FieldStorage() if not (form.has_key("name") and form.has_key("addr")): print "<H1>Error</H1>" print "Please fill in the name and addr fields." return print "<p>name:", form["name"].value print "<p>addr:", form["addr"].value 以下は動作するのでバーミッションの設定ではないと思います。 # -*- coding: utf-8 -*- import os import cgi import cgitb; cgitb.enable() print "Content-Type: text/plain\n\n" print "hoge" 解決策など示していただければ幸いです。
353 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 21:06:40 ] returnが関数外じゃない?
354 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 21:18:28 ] すいません。インデントが外れていたので codepad.org/r6g67n1j codepad.org/vUcQXO9g
355 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 21:30:37 ] return→sys.exit()に
356 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 21:33:21 ] いや、だから>>353 が言っているように、関数内じゃないのに returnがあるのがおかしいんじゃないの # -*- coding: utf-8 -*- import os import cgi import cgitb; cgitb.enable() def main(): print "Content-Type: text/html; charset=UTF-8\n\n" form = cgi.FieldStorage() if not (form.has_key("name") and form.has_key("addr")): print "<H1>Error</H1>" print "Please fill in the name and addr fields." return print "<p>name:", form["name"].value print "<p>addr:", form["addr"].value if __name__ == '__main__': main()
357 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 21:34:44 ] apacheならerror_log(error.log)に出なかったっけ
358 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 21:38:05 ] pychecker, pylintあたりで文法チェックしといた方がいいかもね
359 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 06:24:41 ] >>355 でFAもいいところなわけだが
360 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 13:59:12 ] codepad.org/AkQK38ei 関数の引数って参照渡しなの? Traclight/plugins/themaengine/api.py あとTracってAPacheがないと動かせないですか? PythonをUSBメモリに入れて持ち運びたい(できればtracも持ち運びたひ…)
361 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 14:50:11 ] >>360 >関数の引数って参照渡しなの? そうだよ。入門書嫁。
362 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 14:54:54 ] どんな入門書だよ
363 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 14:55:42 ] >>360 いっちゃうと代入も何もかもぜんぶ参照渡しです。 だから逆に参照渡しという概念がでてこない。 TracはFastCGIやWSGIでも動作するからApacheじゃなくてもいい。 lightyなんかいいとおもう。 あとWindows版Pythonならパスが変わっても動作するはず。
364 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 15:08:52 ] >>362 まともな入門書にはたいてい書いてあるよ
365 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 15:09:35 ] Pythonって参照渡しって言うのかな >>> def foo(x): x = 2 ... >>> a = 1 >>> foo(a) >>> a 1 いわゆる参照渡しだと、aの値が書き換えられるんじゃないの
366 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 15:10:56 ] >>365 def foo(&x): x = 2 これでOK まともな入門書にはかいてあるよ
367 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 15:15:57 ] >>366 つまり、「何もかもぜんぶ参照渡し」というわけでなく、 特に指定しなければ値渡し、ということじゃない?
368 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 15:16:42 ] 参照をリファレンスという意味で使ったなら ある意味正しいと思う
369 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 15:21:18 ] >>> def foo(&x): x = 2 SyntaxError: invalid syntax ついに嘘書く奴が出てきたよ
370 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 15:30:59 ] >>365 def foo(x): ↑ここのxには確かにa = 1と同一の1が渡る。 x = 2 ↑でもこれはその1を2に置き換えるのではなく xの参照先を2に変更することになるのでaは1のまま。
371 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 15:31:48 ] >>365 Pythonで数字はイデア界にあるから 書き換え不能なんですよ。
372 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 15:33:56 ] >>369 嘘を嘘と見抜く練習をしような(w
373 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 15:49:35 ] つまり = は代入ではなく束縛ってことか ところで >>> lst = [0] >>> lst[0] = lst >>> lst [[..]] >>> def p(x): print x >>> [p(x) for x in lst] [[..]] [None] なんぞこれ
374 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 15:55:14 ] 循環参照は[...]になるのか。賢いな。
375 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 18:42:18 ] >>370-371 えーと、本当に参照渡しの意味わかってんの? fooの仮引数がxと宣言されているが、aを渡したときにそのxがaのエイリアスとして 機能する(つまりxがaと同等である)ようなものが参照渡しなんだが。 FORTRANはデフォで参照渡しだし、C++やC#は参照渡しもサポートする。 Pythonの場合、a, xは同一のオブジェクトを指している*別変数*だから、 xへの代入はaに影響を与えない。 そういうのは参照渡しとはいえないでしょ。
376 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 19:00:23 ] >>365 引数そのものはimmutable(不変)なので、関数内で書き換え不可。 この場合の引数とは、変数のアドレスのこと。 変数が指しているデータを書き換えたい場合は、例えば以下のように出来る。 def bar(x):x[0] = 2 a = [1,2,3] bar(a) print a # --> [2, 2, 3]
377 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 19:14:55 ] ミュータブルorイミュータブルというのはオブジェクトの特性であって 変数の特性ではない
378 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 20:15:06 ] そもそもPythonのオブジェクトには代入演算子ないし
379 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 20:36:17 ] Mr.NishioのJython本を読むと、変数はオブジェクトへのリファレンス貼る ってことが書いてある。 買って読んでみなよ。
380 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 21:01:56 ] > 変数はオブジェクトへのリファレンス貼る 俺の頭が弱いのか? 何が言いたいのかわからん
381 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 21:05:15 ] C風に言えば、Pythonの変数はオブジェクトへのポインタ 代入はポインタのコピー 関数呼び出しは全部値渡し Javaも値型(基本データ型)以外は一緒
382 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 21:12:01 ] >>360 > 関数の引数って参照渡しなの? 違います。 www.python.org/doc/faq/programming/#how-do-i-write-a-function-with-output-parameters-call-by-reference > Remember that arguments are passed by assignment in Python. Since assignment just creates references to objects, > there's no alias between an argument name in the caller and callee, and so no call-by-reference per se. (引数は Python でいうところの代入によって渡されることを思い出して下さい。代入は単にオブジェクトへの参照を作るものなので、 呼び出す側の引数名と呼び出された側の引数名のあいだにはエイリアスはなく、「参照による呼び出し」も本質的に存在しません。)
383 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 21:44:09 ] 渡す物がlistになると挙動が変わるはず
384 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 21:47:37 ] >>383 リストだろうが何だろうが、何も変わらない。 >>> def f(x): x = [1,2,3] ... >>> a = [] >>> f(a) >>> a [] >>>
385 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 21:58:26 ] >>> m = [] >>> def a(x): x.append(3) >>> a(m) >>> a(m) >>> m [3, 3] これは何が起きているんだ? 俺の頭が弱いのか? 何が言いたいのかわからん
386 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 21:59:18 ] >>385 リストだろうが何だろうが、何も変わらない。 >>> def f(&x): x = [1,2,3] ... >>> a = [] >>> f(a) >>> a [1,2,3] >>>
387 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 22:04:59 ] Pythonを学ぼうと思うのですが python.rdy.jp/wiki.cgi?page=%B4%D8%CF%A2%BF%DE%BD%F1 で何を選べばいいのかわかりません。
388 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 22:06:34 ] 他言語経験は?
389 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 22:09:35 ] >>385 頭が弱いんじゃなくて、基本が理解できてない。 一体どんな教材でPython覚えたんだよ?
390 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 22:14:55 ] >>385 >>384 の例は、代入によって「変数自体」を変更している 変数の変更とは、変数が持っていたオブジェクトへの参照を破棄し、 別のオブジェクトを指すようにする、ということだ >>385 の例は、破壊的メソッドによって、変数によって指されている 「オブジェクトの中身」を変更している。変数自体は何も書き換わっていない
391 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 22:25:40 ] >>388 初めてのC#を読みました。 作ったソフトウェアは2つほどでオブジェクト指向はある程度理解しているつもりです。
392 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 22:26:09 ] >>387 名著だ www.amazon.co.jp/dp/4839922829/
393 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 22:26:37 ] >>392 ありがとうございます。
394 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 22:28:18 ] >>392 表紙でtypoが名著とはこれ如何に
395 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 22:31:19 ] ほんとだ噴いた
396 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 22:34:29 ] >>392 家宝にさせていただきます
397 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 22:45:04 ] >>391 プログラミング経験有りなら書籍ではないけれど 本家のチュートリアルの邦訳をまず読んでみれば www.python.jp/doc/release/tut/
398 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 22:45:52 ] x = 23 はxのポインタの値が書き換わる。 x.append(3) はポインタの先の値が書き換わる。
399 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 22:51:39 ] >>376 と>>384 の挙動の違いがよくわからない
400 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 22:54:11 ] >>399 >>376 もポインタが指しているオブジェクトの中身を書き換えているだけだ xとaは別の変数だが同じオブジェクト(リスト)を指しているから、 x経由で変更したオブジェクトをaから参照しても 同じように見えるのは当たり前だ
401 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 23:02:28 ] >>400 >>384 の場合はx=[1,2,3]で新たにリストのオブジェクトを生成して、 変数xはそれを指すから、結果的に変数aの指すオブジェクトの中身は 書き換えられなかったってことでいいのかな?
402 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 23:04:21 ] >>401 うん
403 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 23:15:12 ] なるほど、スッとした。さんくす。
404 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 23:29:50 ] やっぱりスッとしない。
405 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 00:02:10 ] >>392 Amazonって、ランキングが出るじゃん。見たんだけどさ。 この時期でこのランキングはないわ。 名著なのに売れないなんておかしいな。 芸術作品ですか。
406 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 00:12:37 ] >>70 のリンクの人から見ると名著なんだよ
407 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 00:20:13 ] >>70 のリンクの人のせいで売れないんじゃね? まるで逆宣伝だし。
408 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 00:27:14 ] そもそも対象となる層が少なすぎる感じがする
409 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 00:28:39 ] 日本人限定だしね
410 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 00:39:27 ] そのうえ変な人に気に入られてるようじゃ相当マイナスだね。
411 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 01:00:29 ] Jython使うとPOIも使えると思うのですが CPythonからPOIを使えるようにはできませんか?
412 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 01:08:00 ] Java使え
413 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 01:10:44 ] 替わりにwin32comかpyExceleratorを使うとか
414 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 02:00:14 ] win32comもpyExceleratorは使ったことがあるのですが どっちもいまいちなのでPOIを使いたいんですけど Javaは使いたくないんです
415 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 02:30:37 ] GroovyとJRubyやるからどっかいけ
416 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 02:33:37 ] >414 ならばCPythonでJava classファイルを使えるようにする仕掛けをこさえるしかなかろ それって結局JavaVMの特殊な独自実装になるような気もするが。 となると「Javaを使わない」という目的からは厳密には外れるな。 あるいはPure PythonでPOIを書き直すとか
417 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 02:50:31 ] そうですね そうします
418 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 03:46:21 ] 死ねばいいよ
419 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 04:20:22 ] 死ねって・・・ Pythonの信者の人が反社会的っていうのはほんとなんですね
420 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 08:00:56 ] Jython本を読むと心が洗われます
421 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 09:01:36 ] >>406 これはむしろ愛と呼べる代物だ。 温泉ではアッー!な光景が繰り広げられるに違いない。
422 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 11:30:56 ] >>421 結論から言うと、今回のRuby Kaigiのテーマは"愛"。 : Ruby愛以外に何か付け加えるものがあるとするならば、あとは、覚悟。
423 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 11:44:02 ] イケメンハッカーはJRubyの本を出せばよかったんじゃね?
424 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 13:12:48 ] Pythonソースコード完全解説とかなら普通に読みたいな
425 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 13:14:46 ] 自分でコードも読めない奴は、技術者としては失格だと思うがな。
426 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 14:17:31 ] neet山
427 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 14:32:01 ] RubyConsortium Rubycon 不良品乱発
428 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 03:50:04 ] 会社で作るソフトに組み込むスクリプトとしてぜひ Python を押したいんだけど、 「(スクリプトの)逆アセンブルがすげー簡単ぽいけど、どうなのよ」みたいなこと言われたんだ。 そういうわけで、会社を納得させるべく、「思いつきでちょっと解析したぐらいでは分からない程度」 に Python スクリプトの難読化について考えてみたい。
429 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 04:01:50 ] (自分がパッと思いつく程度の)スクリプトの解析方法に付いて考えてみる。 A. python スクリプトファイルが丸見えの場合 .py ソースは問題外。 .pyc は dis モジュールに食わせてダンプして終了。しかもドキュメンテーション文字列付き。 .pyo も dis モジュールに食わせて終了。 B. スクリプトファイルが見えない場合 Python##.dll を改造してアプリケーション付属のDLLと差し替えて、 インポートしたモジュールのコードオブジェクトをダンプするなり別ファイルに書き出すなりする C.コンパイル済みモジュールファイルが丸見えだが、dis に食わせても解析失敗する場合 カスタム Python を使用している事を疑う. アプリケーション付属の Python##.dll を参照するようにして python.exe を実行し、 自作のスクリプトを pyc に変換させ、純正の pyc と比べてみる。
430 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 04:17:33 ] そう考えると、 •独自のインポータを sys.path_hooks に組み込んで自作アーカイブからスクリプトファイルを読み出すようにする •独自アーカイブに含まれているスクリプトは、カスタム Python を使って読み書きするための特殊 pyc •カスタムといっても、ようは pyc の読み書き部分だけつじつまを合わせれば良い •従って、改造するのは marshal.c あたり?
431 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 05:37:37 ] >>428 「解析されて何か問題でも?」と答えておけ。 本当に解析されて困るプログラムなんて、この世にそれほど存在しないだろ。
432 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 11:39:00 ] GPL
433 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 11:49:46 ] JavaだってC#(IL)だって逆コンパイラは存在してるし 難読化とかもあるけど、最終的には>>431 のような気がする
434 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 12:15:57 ] 事情をよく知らない割には権限だけ持っていて、 変化を嫌いたがるダメ官吏みたいな上司を説得するのが一番大変なんだよね〜。
435 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 12:16:05 ] pyc や pyo はバイナリエディタで開いただけでも識別子名と関数名がまるわかりだからねえ 簡単な難読化ぐらいならやる価値あると思う
436 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 13:34:43 ] 難読化とかwww馬鹿だろwww 死ねばいいのに
437 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 16:17:07 ] 簡単な難読化をしてみせるだけで>428の仕事が楽になるならいいじゃないか。 それ自体に意味があるかどうかはどうでもいいのだ。
438 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 16:19:55 ] マってたまに、子供騙しで騙してしまえばいい相手の要求に対して、 妙に本気になって対処してしまうことがあるよね。自戒も含めてw
439 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 16:46:15 ] 全て eval を使って文として 他のプログラムに仕込むとか
440 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 18:07:12 ] 子供騙しで手を抜く奴はプログラマだ! バレないように手を抜く奴は訓練されたプログラマだ! こうですか? わかりません (>_<)
441 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 19:29:23 ] >>434 そういうときはその上司の上司を説得するべき
442 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 21:44:24 ] 適当にxorして「暗号化しました!」 とか言っとけば大丈夫
443 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 22:47:10 ] ソースコード自身とxorしたから大丈夫です!
444 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 01:11:01 ] >>443 0x00とXORしないとダメだよ!!
445 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 02:15:01 ] ネタならネタで良いんですが もう少し楽しめるのをおながいします
446 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 02:44:30 ] pygameで英語分からなくて暴れてる厨房だろ 放っとけよ
447 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 08:11:47 ] pygameの和訳さっさと進めろよハゲども
448 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 08:45:46 ] 自己解決しました。
449 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 09:17:04 ] やめてください
450 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 10:14:11 ] イケメンハッカーが自決しました。
451 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 10:33:08 ] やめてください。
452 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 10:33:59 ] 自己解決禁止
453 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 10:34:36 ] >>441 お花畑にお住まいの妖精さんですか? 現実は厳しいですよ。
454 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 10:35:08 ] neet山が自己休刊やめてください。
455 名前:360 mailto:sage [2008/05/23(金) 10:59:40 ] >>360 >>> def call(): info=[]; f(info); return info ... >>> def f(x): x=[1,2,3] # list渡したい時は.append使え矢 ... >>> call() [] >>> >>> def call(): info={}; f(info); return info ... >>> def f(x): x[0]=1; x[1]=2; x[2]=3 ... >>> call() {0: 1, 1: 2, 2: 3} 渡すものが、辞書かリストか、で字面的に違うということですね 事故解決しました。(&なんて使わねー)(*はリスト**は辞書ですが無くても動くのです無害です)
456 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 11:07:57 ] >455 ぜんぜん解決してない ... >>> def f(x): x=[1,2,3] に文法的に対応する辞書の記述は >>> def f(x): x = {0:1, 1:2, 2:3} だよ(これだと結果は callで代入された info → {} のまま)。 リストのappendが字面的に気に喰わないのなら、 x+=[1];x+=[2];x+=[3]; と書いてもいいかもね(ちょっとoverheadありそうな気もするけど)
457 名前:360 mailto:sage [2008/05/23(金) 11:30:33 ] >>456 d 1. def call(*各種設定リスト): info={}; f(info); return 2. 初期化関数もどき(空リスト、空辞書を破壊的操作で初期化) def f(x): x[0]=1; x[1]=1; x[2]=2 #辞書 def f(x): x+=[1]; x+=[2]; x+=[3] #リスト 設定ファイルちっくに扱うなら、辞書使うし余り気にならないのかも > リストの破壊的操作 JSonとか、いい感じなものだと最近わかり始めてきますた
458 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 12:07:53 ] 自己解決禁止しちゃいかんだろww
459 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 16:11:33 ] D:\TracLight\python>python Python 2.5.1 (r251:54863, Apr 18 2007, 08:51:08) [MSC v.1310 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import os >>> fn = os.path.join('./', 'test-file.txt') >>> open(fn).read() Traceback (most recent call last): File "<stdin>", line 1, in <module> IOError: [Errno 2] No such file or directory: './test-file.txt' 同じディレクトリ下にあるファイルを読むにはどう書けば良いですか?
460 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 16:19:24 ] >>> fn = os.path.join(os.getcwd(), 'test-file.txt') >>> fn = os.path.join('./', 'test-file.txt') >>> open(fn).read() .txt 拡張子が余計に付いてだけでした orz 事故レスすまそ
461 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 17:41:49 ] >>459 なんでバグだらけの旧バージョン使ってるんだ?
462 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 19:29:52 ] うるさいだまれ
463 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 19:36:57 ] 自己憤慨しました。
464 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 21:15:47 ] 自己発電しました。
465 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 22:41:04 ] 助けて java.security.AccessControlException: access denied (java.lang.RuntimePermission exitVM.0) at java.security.AccessControlContext.checkPermission(Unknown Source) at java.security.AccessController.checkPermission(Unknown Source) at java.lang.SecurityManager.checkPermission(Unknown Source) at java.lang.SecurityManager.checkExit(Unknown Source) at javax.swing.JFrame.setDefaultCloseOperation(Unknown Source) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.python.core.PyReflectedFunction.__call__(Unknown Source) at org.python.core.PyMethod.__call__(Unknown Source) at org.python.core.PyObject.__call__(Unknown Source) at org.python.core.PyInstance.invoke(Unknown Source) at applet$_PyInner.init$1(applet.java:61) at applet$_PyInner.call_function(applet.java:47) at org.python.core.PyTableCode.call(Unknown Source) at org.python.core.PyTableCode.call(Unknown Source) at org.python.core.PyTableCode.call(Unknown Source) at org.python.core.PyFunction.__call__(Unknown Source) at org.python.core.PyMethod.__call__(Unknown Source) at org.python.core.PyObject.__call__(Unknown Source) at org.python.core.PyObject._jcallexc(Unknown Source) at org.python.core.PyObject._jcall(Unknown Source) at applet$MyApplet.init(applet.java:139) at sun.applet.AppletPanel.run(Unknown Source) at java.lang.Thread.run(Unknown Source)
466 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 22:43:40 ] pc11.2ch.net/test/read.cgi/tech/1207878910/385
467 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:13:26 ] マルチしちゃったか 死ね
468 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:38:32 ] ちょっと教えて欲しいんだけど、pythonの正規表現で先読みって使えないの? 下みたいに書いても全然文字列を分割してくれないんだけど line = '123,456,79' regexp = re.compile('(?=5)') print regexp.split(line)
469 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:56:48 ] >>468 www.python.jp/doc/nightly/lib/re-syntax.html > (?=...) > もし ...が次に続くものとマッチすればマッチしますが、文字列をまったく消費しません。 > これは先読みアサーション(lookahead assertion)と呼ばれます。 > 例えば、Isaac (?=Asimov) は、'Isaac 'に 'Asimov'が続く場合だけ、'Isaac 'とマッチします。 '(?=5)' だと空文字列に 5 が続くなら空文字列にマッチ(ただし 5 は消費しない)という意味になるのかな? 空文字列にマッチしたら分割の目的には使えないような・・・。 >>> a = re.compile(",(?=4)") >>> a.split("123,456,789") ['123', '456,789']
470 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:57:19 ] >>468 先読みが使えないっていうより re.split() に長さ 0 のパターンを渡しても何もしてくれないとかじゃない? 他の言語とかは挙動が違った気がする
471 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:57:58 ] >>468 ライブラリリファレンスを見れば分かるけど、先読みは使えるよ。 よくわからんが、split()がzero-width assertionでは機能しないのかもな。 split()に与えた正規表現にマッチした文字列をデリミタとみなして分割するから、 「位置」じゃなくて「文字(列)」にマッチする正規表現じゃないとダメ、とかさ。 ただの想像だけど。
472 名前:471 mailto:sage [2008/05/23(金) 23:58:39 ] ぐは。レスかぶりまくりじゃん。
473 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 00:15:30 ] 先読みの使い方を間違えてる
474 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 00:38:16 ] お前は次に「自己解決しました」と言う。
475 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 00:46:50 ] 自己解決しました
476 名前:468 mailto:sage [2008/05/24(土) 01:09:50 ] レスサンクス やっぱり場所指定の正規表現じゃ分割しないみたいだね perlとrubyでもsplit関数を動かしてみたんだけど、 perlはpythonと同様で場所指定の正規表現じゃ分割してくれなかったよ 一方rubyは意図したとおりに場所指定で分割できた 言語毎に結構挙動が違うもんなんだね
477 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 01:31:05 ] >>472 ぐは禁止。きもい。
478 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 01:32:10 ] ruby最強!
479 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 01:33:37 ] regexp = re.compile('.(?=5)')
480 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 01:50:44 ] >479 それだと一文字消えちゃうだろう常識で考えて
481 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 03:40:04 ] pyunoでOpenOfficeの制御したかったのだけど ubuntu7.10で動かないみたい udk.openoffice.org/python/python-bridge.html Hellow Worldのサンプル動かすと line 5, in <module> localContext = uno.getComponentContext() AttributeError: 'module' object has no attribute 'getComponentContext'
482 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 03:49:34 ] >>468 Perlのバージョンは? 試したらできたよ。 my @f = split /(?=5)/, $str; print join(':', @f), "\n";
483 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 05:24:45 ] >>> import re >>> line = '123,456,79' >>> regexp = re.compile('') >>> regexp.split(line) ['123,456,79'] そもそもこうなるんだもんなぁ
484 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 08:28:25 ] >>477 ぐはははははははははははhahahahahahahahaha!!!!!
485 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 10:14:48 ] ぐは。自己解決しました。
486 名前:デフォルトの名無しさん [2008/05/24(土) 12:39:52 ] >482 perlでもsplitできるね pythonで位置指定の分割ってどうやんだろ
487 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 13:03:35 ] こんな感じの関数を自分で作って使えばいいんじゃね def split(pattern, string): result = [] start = 0 for m in re.finditer(pattern, string): result.append(string[start:m.start()]) start = m.span()[1] result.append(string[start:]) return result
488 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 13:14:27 ] リスト返すようにしちゃったけど、ジェネレータにすべきだったか ま、その辺は好きに汁
489 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 14:06:35 ] >487 re.findall()
490 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 14:18:04 ] re.findall()がどうしたの?
491 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 15:33:29 ] Perl で split('', $str); に相当するのは Python ではどう書けばよいですか?
492 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 15:37:47 ] >>491 list(str)
493 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 19:16:39 ] オブジェクトのメソッドを一覧で取得するにはどうすればええの?
494 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 19:24:33 ] filter(callable, dir(hoge))
495 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 19:25:54 ] [x for x in dir(obj) if callable(getattr(obj, x))]
496 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 21:30:26 ] >>494 動きません。 自己確認してください。
497 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 22:48:52 ] 自己完結しました
498 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 22:51:21 ] >>494 オッサン臭いコードだな。その上動かないってどんだけ(www
499 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 22:58:55 ] itertools は使えそうで使えない
500 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 23:03:49 ] >>498 まさに労害(WWW
501 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 23:17:21 ] おれさまがなおしてやった filter(lambda x : callable(getattr(obj, x)), dir(obj))
502 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 23:28:11 ] ここまで来ると、わざわざfilterを使う意味なくね?
503 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 00:07:56 ] pythonのlambdaって読みづらいだけじゃね? pythonの基本的な文法と比べると汚い
504 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 00:14:14 ] Guidoもlambdaは嫌いだったと思う。 lambdaを使うのは変態か、自称イケメンハッカーのワンライナー芸人だけだろ。
505 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 01:19:41 ] どうせ残すなら いろいろできるようにすればいいのに
506 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 01:32:31 ] cshといっしょでコード互換のために残してるだけなんだから もう新規につかうようなもんじゃないだろ。
507 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 02:44:32 ] Pythonプログラミング入門はクソだとよ。
508 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 03:45:36 ] 自分の言葉で語りなさい
509 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 05:36:58 ] ということにしたいのですね
510 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 09:50:46 ] 懐かしいフレーズだ
511 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 10:51:46 ] 皆さん lambda と聞くと昔の傷がうずくのですね
512 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 10:52:28 ] Twisted本、クソ本フラグがたった感が。
513 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 11:37:37 ] うはは、わかりません。
514 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 12:29:07 ] 関数をファーストオブジェクトとして扱えないのはしょうがないが だからってpython の lambda はちょっと無しだろ C++みたいに演算子()をオーバーロードできればいいのに
515 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 12:33:36 ] >>514 関数内で関数が定義できるんだから、lambdaはあれで良い。 演算子オーバーロードも、__call__でできるじゃないか。
516 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 12:40:01 ] うはは、わかりません。
517 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 13:11:22 ] >>514 Pythonの関数はファーストクラスオブジェクトだが
518 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 13:23:23 ] ファーストオブジェクトってどういう意味?
519 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 13:32:38 ] ja.wikipedia.org/wiki/%E7%AC%AC%E4%B8%80%E7%B4%9A%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88 >>514 は、匿名リテラルで宣言できる関数が制限されていると言いたいんだと思う。 でも、def foo() して、 bar = foo; del foo; したら、foo()できなくなる。Pythonのdefは関数定義と 変数への代入を同時にしているというだけなので、関数がファーストクラスオブジェクトと言っても良い。
520 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 14:00:35 ] >>519 ありがとう。ファーストクラスオブジェクトでググればよかったのか。 俺もPythonのlambdaは気持ち悪いと思う。 あと、exceptで例外が複数のときだけ括弧つけるのも気持ち悪い。
521 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 14:11:16 ] (UNIX環境の)Pythonってソースプログラム実行中にソースの書き換えってできるの? インタプリタだから、できそうなイメージなんだけど
522 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 14:13:28 ] pythonって関数内で関数作って関数を返す関数作れたっけ?
523 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 14:26:28 ] tupleが (a,) ってなるのがきもい
524 名前:デフォルトの名無しさん [2008/05/25(日) 14:50:03 ] python の快活環境どれがおすすめですか?
525 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 15:54:31 ] >>522 いろんなデコレータのソース読んでみたら?そういうのばっかりだから。 Pythonのデコレータは、関数を引数にして関数を返す関数。 @foo(a,b) def bar(): の場合、fooは、"関数を引数にして関数を返す関数"を作成して返す関数になる。
526 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 15:58:09 ] 間違えた 快活環境じゃなくて開発環境
527 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 16:27:51 ] >>522 名前なしでそれができない、ってだけ。 あと定義された時の環境に対して書き換えが効かない。
528 名前:デフォルトの名無しさん [2008/05/25(日) 17:03:38 ] 385 名前:デフォルトの名無しさん[] 投稿日:2008/05/23(金) 22:18:26 助けて java.security.AccessControlException: access denied (java.lang.RuntimePermission exitVM.0) at java.security.AccessControlContext.checkPermission(Unknown Source) at java.security.AccessController.checkPermission(Unknown Source) at java.lang.SecurityManager.checkPermission(Unknown Source) at java.lang.SecurityManager.checkExit(Unknown Source) at javax.swing.JFrame.setDefaultCloseOperation(Unknown Source) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.python.core.PyReflectedFunction.__call__(Unknown Source) at org.python.core.PyMethod.__call__(Unknown Source) at org.python.core.PyObject.__call__(Unknown Source) at org.python.core.PyInstance.invoke(Unknown Source) at applet$_PyInner.init$1(applet.java:61) at applet$_PyInner.call_function(applet.java:47) at org.python.core.PyTableCode.call(Unknown Source) at org.python.core.PyTableCode.call(Unknown Source) at org.python.core.PyTableCode.call(Unknown Source) at org.python.core.PyFunction.__call__(Unknown Source) at org.python.core.PyMethod.__call__(Unknown Source) at org.python.core.PyObject.__call__(Unknown Source) at org.python.core.PyObject._jcallexc(Unknown Source) at org.python.core.PyObject._jcall(Unknown Source) at applet$MyApplet.init(applet.java:139) at sun.applet.AppletPanel.run(Unknown Source) at java.lang.Thread.run(Unknown Source)
529 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 17:56:17 ] 御臨終です
530 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 17:59:29 ] org が orz の相似に見えた
531 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 19:11:41 ] そういやIronPythonのスレはあるのにJPythonのスレはないんですね
532 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 20:08:15 ] Jythonのスレならあるでしょ。 専用じゃないけど
533 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 20:17:07 ] >>523 これならきもくない? tup = ( a, )
534 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 20:48:17 ] >>525 ,527 ありがとう やってみたら出来たよ これで使いやすいschemeの代わりが出来た
535 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 21:57:03 ] そんな見た目だけの問題じゃないよ! >533 誰かが「カンマがtupleを作るんだ、カッコじゃない」と言ってたが、 >>> x=() >>> type(x) <type 'tuple'> キモイヨー
536 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 22:22:42 ] >>535 男なら、空のタプルを作りたいときがあるってもんだ。
537 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 00:00:59 ] python for S60のスレはないよなぁ
538 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 00:06:35 ] パックリ(i) キモイヨー
539 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 00:15:23 ] RDBで言うテーブルに対するビュー Cで言う配列に対するポインタ みたいなノリで使える、オリジナルデータを更新可能なスライスみたいなの無いかな スライスみたいにコピーするんじゃなくて参照を握っていて、 更新も出来るやつ 自分で作るしかない?
540 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 00:44:42 ] うはは、キモイヨー。
541 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 00:49:16 ] >>537 需要があるのか?
542 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 01:48:06 ] >>539 ありますよ
543 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 09:27:23 ] >539 10行ぐらいで書けそうだから、必要な人は手元で書いちゃうんでは。
544 名前:デフォルトの名無しさん [2008/05/27(火) 09:57:14 ] ちょちょっっと書いてみていただけませんか?
545 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 11:27:27 ] >>544 書きました。 見せないけど。
546 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 16:41:49 ] さては11行になったな?
547 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 17:55:58 ] >>539 arrayじゃ駄目なの?
548 名前:539 mailto:sage [2008/05/27(火) 18:28:38 ] レスくれた人どうもです >>542 モジュール名を教えていただけませんか >>543 書いてみましたが、自分は10行では無理でした __getitem()__に負のインデクスやsliceオブジェクトが渡された時の 処理とかをいちいち書くのがウザいです >>547 arrayは全く用途が違うのではないでしょうか シークエンスの部分列を「参照」するだけならただのスライスで良いし itertools.islice()ならコピーを避けられますが、 元のシークエンスを「更新」もしたいわけです
549 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 18:51:41 ] pygameの和訳完成してもいいころなんじゃねーの
550 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 19:40:47 ] 547は配列を作りたいのかと勘違いした。 ようするに、ポインタに相当するものを作りたいのか。
551 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 19:53:15 ] うはは、すみません
552 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 20:10:20 ] >>548 要するにスライスをスライスして新しいスライスを作れればいい(そこを自前で実装するのは面倒)ということだな。 スライスをスライスしてスライスを作るというのはありがちな気がするので既にありそうだが。俺は残念ながら知らん。 自前で実装するのは確かに面倒そうだ。
553 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 22:02:45 ] >>539 www.rh.to/python/WDB.html こんなのとか? リンク先のViewの説明がそれっぽいとかおもた。 というか牛刀をもって鶏を割くみたいになってる気もする… >>457 def call(inil=[1,2,3,4,5]): srcl=inil; m(srcl,1,3); return srcl def m(x,i,j): _m(x[i:j]) def _m(x): x[0]=1; x[1]=1; x[2]=1 とか思いついて、書いてみる >>> def call(ini): src=ini; dst=m(src,1,4); dst.insert(0,src[0]); dst.append(src[4]); return dst >>> def m(x,i,j): print x[i:j]; return _m(x[i:j]) >>> def _m(x): x[0]=1; x[1]=1; x[2]=1; return x >>> call([1,2,3,4,5]) [2, 3, 4] [1, 1, 1, 1, 5] むぅ。糞コード。可読性悪すぐる…orz call()でintかlistで場合分け必要だし
554 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 22:15:15 ] numarray
555 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 22:36:17 ] coding.derkeiler.com/Archive/Python/comp.lang.python/2006-10/msg02680.html これとかヒントになるかも 一部を掬って変化を加えたら、全体が書き換わる…
556 名前:539 mailto:sage [2008/05/27(火) 22:52:01 ] ありがとうございます NumPyですか 数値計算が目的という訳ではなかったので完全に盲点でしたが、使えそうですね ちょっと試してみます
557 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 09:09:02 ] これからはRuby一色の時代。 PerlもPythonも廃れ、Rubyだけが生き残る新時代
558 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 09:42:45 ] その「新時代」になってから勉強しても全然遅くない。
559 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 12:02:30 ] for e in dir(): print e とかで出力されるデータをA-Z, a-z, __??__で 頭文字ごとに改行して出力するにはどうしたら良いですか?
560 名前:559 mailto:sage [2008/05/28(水) 14:23:42 ] >>> def print_elem_n(elem): ... print '\n', elem, ... >>> def print_elem(elem): ... print elem, ... >>> q='' >>> >>> a2z="abcdefghijklmnopqrstuvwxyz" >>> for e in dir(cssutils): ... if q == '' and q in set(a2z): q = e[0] ... if e[0] in set(a2z): ... if q != e[0]: ... print_elem_n(e) ... q=e[0] ... else: ... print_elem(e) 書けた…添削きぼん print文の、改行の取り扱いに嵌る orz
561 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 14:35:40 ] >>> a2z="abcdefghijklmnopqrstuvwxyz" >>> a2z=range(ord('a'), ord('z')+1)
562 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 14:35:53 ] groupby使ってみるといいんじゃない? from itertools import groupby from operator import itemgetter for k, g in groupby(sorted(dir(str)), itemgetter(0)): print ", ".join(g)
563 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 14:36:51 ] >>560 printだけ書けば改行できるのに。 lastchar = dir()[0][0] for e in dir(): if e[0] != lastchar: print lastchar = e[0] print e, これじゃダメ?
564 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 14:37:50 ] インデント消えちゃったけど、まぁ分かるよね?w
565 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 14:54:57 ] >>562 便利なもんがあるんだなー こんな普通な奴しか思いつかなかった def f(seq): d = {} for s in seq: d.setdefault(s[0], []).append(s) for k in sorted(d.iterkeys()): print ','.join(d[k])
566 名前:563 mailto:sage [2008/05/28(水) 15:07:07 ] Python始めて1週間の俺には", ".join(g) の部分がよく分からなかったが、 gのシーケンスを", "で区切った文字列が得られるのか。
567 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 15:18:09 ] むしろ g は glue の g かもしれないぜ
568 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 17:07:40 ] >>563 for e in dir(): 1. if 違う要素かどうか判定: 改行\n + フラグを更新する 2. 要素を出力する d。ノートにでもまとめて整理しとく乙
569 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 17:19:04 ] >>566 個人的には リスト.join(区切り文字) の方がわかりやすいと思ってる。
570 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 17:27:24 ] 1. FAQ嫁 2. Ruby使え 3. 俺もそう思う
571 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 17:43:04 ] 引数にジェネレータを与えられるのはstr.joinの一つの利点だと思う
572 名前:563 mailto:sage [2008/05/28(水) 17:51:18 ] >>569 俺も文脈的に直感的でないと思うけど、文字列クラスにjoinメソッドがあるという 形だからしょうがないね。 静的関数として提供した方がいい気がするが、元々静的関数だったのが廃止されて メソッドになったのね。
573 名前:デフォルトの名無しさん [2008/05/28(水) 19:13:53 ] djangoを使ってみようと思っています。 それでまずはmodelを定義してデータを入れるところまではできま した(sqlite3とかで直接DBの中身見て入ったのを確認した)。 だけど、manage.py shellでデータを確認しようとしても見れません。 具体的にはhoge.objects.all()とかってやっても[]が表示されるだ けです。 これはなぜなんでしょうか? あと、adminのhogeの画面でも 5 hoges のように表示されるだけで、DBに格納したデータをいじれたり、見 る事ができない状態です。 何かアドバイスがいただければ助かります。よろしくお願いします。
574 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 20:13:19 ] うちではみれてる
575 名前:デフォルトの名無しさん [2008/05/28(水) 23:51:30 ] ディショナリをそのキー名の変数にするってどうすればいいんですか? つまり a{hoge:1,foo:2,bar:3} を↓のようにしたいです。 hoge = 1 foo = 2 bar = 3
576 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 23:56:27 ] >>575 入門書嫁。