タグ

ブックマーク / www.nishiohirokazu.org (17)

  • 西尾泰和のブログ: jQuery勉強日記

    Ajax, Ajax, Ajax... = 日全国ラボめぐり:グループウェアの新しい使い方「ひとり言スレ」──サイボウズ・ラボ - ITmedia Biz.ID もうちょっとマシな写真はなかったのかと問いたい…orz = Ratingを使おうかと思っていたけど、 微妙に気に入らないところがあって、修正するよりシンプルなのを自分で作る方がいいと判断。 = jQueryに値を渡すためにDjangoのカスタムテンプレートタグ作っててちっともAjaxの勉強になってない! $(".rating .button").click(function(){ alert("hello"); return false; }); が動かないなぁと思ったら $(document).ready(function(){ }) で包まないといけないのか… お、動いた動いた。 = JavaScriptはデフォルト

    uemu
    uemu 2007/07/18
    オープンソースとそれにまつわる人たちはすばらしい。しかし、その価値観を他に押し付けるのはどうかと思うと感じてたので「CSS Niteで儲かってようが儲かってなかろうが別にいいじゃん」というのはよく分かる
  • 西尾泰和のブログ: Djangoデビュー日記

    Django面白い。Pythonのイントロスペクションがガンガン効く。 僕はZopeとJettyしか使ったことがないので、 RoRとかTurboGearsとかがどうなのかは知らないけど。 まず「あれこのオブジェクトなんだろう?、どんな属性を持っているんだろう?」 と思ったらtypeやdirで囲うだけですぐに見ることができるのがすごい。 サーバとか再起動しなくていいし。あ、Zopeももちろんそうだったけど。 それからshellモードがあって、それはもう普通に対話的に実行ができる。IPythonを入れるとTABで補完とかされるのですごい。 でコード投稿サイトを作る話は、露木さんに教えてもらったDjango snippetsに使われているCabってやつがBSDライセンスなのでそれを使えばいいかなと。でもこれは最新のDjangoの機能を使っているので、インストーラでインストールした僕の環境では動か

    uemu
    uemu 2007/06/20
    おぉDjangoデビューだ!!
  • 西尾泰和のブログ: 「すごい会議」日記

    uemu
    uemu 2007/05/19
    なんのことだかさっぱり分からないので いろいろ試してたら なんとなく分かった気がしなくもないが とにかくすごい
  • 西尾泰和のブログ: 言語融合の時代

    おととい寝るときに布団の中で思いついて、忘れないうちにメモした文章です。 プログラミングシンポジウムで「LLってなんなのよ」という話題になったのがきっかけです。 Jythonに入れるとしたらどこがいいでしょうね。第1章のJythonを使うメリットとかの所でしょうかね。に使うかどうかはさておき、実質的にはただのアジテーションなので、ブログで公開してみました(笑) 反論は大歓迎です。 __ かつてプログラミングとは 機械語を人間が直接書くことでした。 その後、いろいろなプログラミング言語が発明されました。 抽象化能力の高い言語を使うと、 「ハードウェアに密着した、ごちゃごちゃした細かいこと」 を気にせずに済むようになりました。 同じ機能が短いコードで実装できるようになり、 生産性が高まりました。 抽象化能力こそが言語のパワーでした。 こうして、プログラミング言語はどんどん抽象化能力を高めて

    uemu
    uemu 2007/04/25
    おもろい
  • 西尾泰和のブログ: モナドを作るver. 0.1

    IOモナドは難しそうだったのでとりあえずMaybeモナドからはじめる。 >>> def Maybe(typ): class Foo(object): @classmethod def return_(_, x): return Just(x) @classmethod def bind(_, m, f): if isinstance(m, Nothing): return Nothing() elif isinstance(m, Just): return f(m.value) class Just(object): def __init__(self, x): assert isinstance(x, typ) self.value = x class Nothing(object): pass Foo.__name__ = "Maybe_%s" % typ.__name__ retur

    uemu
    uemu 2007/03/18
    さらに未知の世界へ羽ばたいている模様。むずかしい。。。。
  • 西尾泰和のブログ: Django勉強会とか日記

    uemu
    uemu 2006/11/23
    DBまわりの設定の説明がなかったのは申し訳なかったです。 Pythonの何が良いかを突き詰めると辞書になるのでは?とのこと。分かる気がする。
  • 西尾泰和のブログ: 1行でテトリス

    今日のDjango勉強会で もっと短いPythonのテトリス ― TRIVIAL TECHNOLOGIES 2.0 を教えてもらったけど、15行で書かれたテトリスがリンク切れで読めません。 なぜ15行なのか。なぜ1行にしなかったのか。できなかったのか。 15行版のソースコードが見られないので謎です。 そこで自分で作ってみることにしました(ぇ) 追記。これはNikolaj Baer: Stepping it up a notch: Tetris in 100のコードを1行に縮める過程です。 = 2006-11-23 01:26:55 pygame - python game development をインストール。 Windows用インストーラがある。ダウンロード中。 Enterを5回押すだけでインストール完了。 とりあえず100行テトリスを コピペして動かしてみる。動いた。 X印で終了しよ

    uemu
    uemu 2006/11/23
    Pythonによる一行テトリス。 製作過程が、、、、
  • 西尾泰和のブログ: Re: Re: Pythonのジェネレータで四角いらせんを書いた

    逃走航路@hatena - Re:Pythonのジェネレータで四角いらせんを書いた:西尾泰和のブログにお返事。 元の記事が「アルゴリズムを確認するためにPythonでわかりやすく書いてからJavaで書く」という趣旨であることをはおいといて、やっぱりよく似たフレーズが4回も繰り返してあるとまとめたくなるのはプログラマの性ですよね。僕なら同じ手続きは以下のように関数にまとめて、 >>> def squareSpiral(): width = 0 p = (0, 0) yield p ops = [ lambda (x, y), d: (x + d, y), lambda (x, y), d: (x, y + d) ] while True: width += 1 for i in range(width): p = ops[0](p, 1) yield p for i in range(wid

    uemu
    uemu 2006/11/06
    こうやって 変化の過程が分かるのはおもしろい 難しいけど
  • 西尾泰和のブログ: ブログにコードを貼り付ける方法.js alpha0.2(Firefox only)

    ブログにコードを貼り付ける方法.js alpha0.1の続編。コード中の<, >, &をエスケープしてPREタグで囲い、後ろにimgタグを貼り、onLoadからJavaScriptで書かれた関数を呼び出すことで、画面には適切な長さで折り返して見やすく表示しつつ、JavaScriptで生成されたcopyボタンを押すとソースコードがクリップボードにコピーされます。この時はもちろん、<が<に戻された状態でコピーされます。 クリップボードにコピーするコードは最速インターフェース研究会 :: Firefoxでテキストをクリップボードにコピーする方法から、ソースコードを新しいウィンドウで開くコードはKazuho@Cybozu Labs: Ajax な HTML ページのソースコードを表示するから流用しました。 サンプル。 print "very looooooooooooooooooooooooooo

    uemu
    uemu 2006/10/08
    FireFox専用とはいえ、ボタンひとつでクリップボードへコピーされるのはすばらしい
  • 西尾泰和のブログ: Python Developer Camp日記

  • 西尾泰和のブログ: Python Developers Camp日記

    listを継承したクラスを作ると何が変わるか。 >>> class MyList(list): pass >>> dir(MyList()) ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delslice__', '__dict__', '__doc__', '__eq__', '__ge__', '__getattribute__', '__getitem__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__module__', '__mul__', '__ne__', '__new__', '

  • 西尾泰和のブログ: Python Developer Camp日記

  • 西尾泰和のブログ: 日記

    uemu
    uemu 2006/09/22
    マインドマップの階層にかんして、 おっしゃる通り。 しかし制限があることで形になり、広がったのだと思う
  • 西尾泰和のブログ: キミならどう書く 2.0 - ROUND 1

    100までの素数をエラトステネスの篩を使って列挙するプログラムを、Pythonで、defもifもwhileもforも使わずに1行(66文字)で作りました。以下はその作成過程のログです。 __ おおっと、今知りました。(via 竹迫さんの記事) キミならどう書く 2.0 - ROUND 1 - — Lightweight Language Ring 締め切りまであと30分しかないですね。うわー、もっと早く気づいていれば…。30分でPythonでdefもifも使わずに1行で素数を求めるなんて(勝手に問題を難しくしすぎ) def foo(x): return [x[0] + [x[1][0]], [y for y in x[1] if y % x[1][0] > 0]] あと29分! >>> i = [[],range(2,100)] >>> while (i[1] != []): i = fo

    uemu
    uemu 2006/08/29
    Pythonインタプリタの直前に評価したものが「_」という名前の変数に入る,,,知らないことばかり~~
  • 西尾泰和のブログ: PythonとRubyでパスカルの三角形ワンライナー

    rubyco(るびこ)の日記 - 呼び出し側のアスタリスクを読んで、「あ、そうか、それを使えば頭から二つずつ取ることができるか」とGame Scripting Memo - 続・パスカルの三角形のことを思い出しました。 >>> def get2(f, a, b, *rest): result = [f(a, b)] if rest: result += get2(f, *rest) return result >>> from operator import add >>> def dup(aList): return reduce(add, [[v, v] for v in aList]) >>> dup([1,2,3]) [1, 1, 2, 2, 3, 3] >>> def sandwich(bread, meat): return [bread] + meat + [bread] >

    uemu
    uemu 2006/08/28
    おれ引数の*の使い方よく分かってなかったことが判明、、、、、
  • 西尾泰和のブログ: PythonとRubyでデフォルト引数の評価されるタイミングは違う

    驚きました。 rubyco(るびこ)の日記 - デフォルト引数は明示的に評価されると同じことをPythonで書いた場合、関数定義の時点で評価されます。 >>> def default(n): print "default", n return n + 1 >>> def foo(x, y = default(5)): print x, y default 5 Rubyでは関数が呼ばれた時にデフォルト引数を評価するようです。しかも遅延評価とかではないようで、何度も関数を呼べば何度も実行されます。つまりPythonで書けば >>> def foo(x, y = None): if y == None: y = default(5) print x, y に相当する状態のようです。

    uemu
    uemu 2006/08/28
    おぉ >>> def foo(x, y = default(5)):print x,y は定義した時点でdefault()を評価する
  • Pythonでメモ化 @ NISHIO HIROKAZU # Archived COREBlog

    NISHIO Hirokazu's website > NISHIO HIROKAZU # Archived COREBlog これは2004年11月4日から2006年2月18日までZopeで運用していたCOREBlogの静的なアーカイブです。 新しい日記は「西尾泰和の日記」で運用しています。 Pythonでメモ化 結城さんの日記を読んで「メモ化って何だろう」と思いました。 もともとのK.Inabaさんのエントリは読んでみたけれどもメモ化の説明はなかったのでよくわからず…nobsunさんによる、HaskellのMemoiseにはメモ化の説明が書いてありました。 ふむふむ、つまり再帰的に定義されたフィボナッチ関数を呼び出すと、同じ引数で同じ関数が何度も呼び出されて効率が悪い、と。 def fib(x): print "fib(%d) was called" % x if x == 0 or

    uemu
    uemu 2006/06/17
    momoraizeに関して なるほど
  • 1