タグ

西尾に関するsyanbiのブックマーク (11)

  • Python Workshopでしゃべってきました - 西尾泰和のはてなダイアリー

    IIJの会場が広くてびっくり。あの人数で電源もWifiも使えるのはかなり素晴らしい。 帰ってきたPython Workshop 2010/12 眠いので続きはあとで。 - パネルセッションについて @takahashim 言いそびれましたが、とりあえず他の言語も試してみると、普段使ってる言語の長所短所が分かっていいですよ あっ、僕も言いそびれた! あと「Pythonのいいところを言えと?そんなナルシストなこと出来ないですよ、、でも、あえて言うなら…インデントですかね」は、先に喋った人がインデントをほめているのを踏まえての天丼ネタです。インデントをほめる予定はなかった、というか、順番が区切られてると思ってなかったので誰かがPythonをほめるたびに僕がPythonをDISってれば、みんなが必死にPythonをほめて僕が論破されて「結論:Pythonはすばらしい」になると思ってた(ぇ 「人は見

    Python Workshopでしゃべってきました - 西尾泰和のはてなダイアリー
  • localsに関して誤解していた件 - 西尾泰和のはてなダイアリー

    Python2.6とかで >>> def foo(): ... locals()["hoge"] = 1 ... print hoge ... >>> foo() Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 3, in foo NameError: global name 'hoge' is not defined こうなるわけで、これはローカルの名前空間が最適化の関係で書き換え不可になっていてlocals()が返すのはそのコピーを辞書ライクにしたものだと思ってたんだ。 でもこれってコンパイル時にhogeが存在しないからLOAD_GLOBALになっているってだけで >>> import dis >>> dis.dis(foo) 2 0 LOAD_CON

    localsに関して誤解していた件 - 西尾泰和のはてなダイアリー
    syanbi
    syanbi 2010/11/01
    http://bit.ly/rz9oCを見て、なんだろうと思ったら一番したに答えとなるコメントが書いてあった。evalがよしなにやる、ということだけどここ未定義なのか・・・。
  • C++の設計と進化(D&E) レバレッジメモ 1 - 西尾泰和のはてなダイアリー

    どこにどの話題が書かれていたかすぐに探せるようにレバレッジメモを作ろうとしたがさすがに一気に作るのは無理だった…C++の話になる前に力尽きた。ふー、これでやっと1/4くらいかー。次回はC++の章からやる。 ~第0章 ある人はD&Eを単なる歴史書と呼んだが…C++がなぜこのようにあるのかを理解することはプログラマがそれを使いこなすことを助ける。道具に対する深い理解は専門的な熟練工にはべからざるものである。 Simulaの最も初期の段階からコンテナは押し付けがましかった。Objectのようなクラスから派生していないと格納できなかった。intなどの基型は入れられなかった。取り出すときにはObject型になってしまいキャストが必要だった。配列はユーザ定義型を格納できず、参照のみを格納できる。Smalltalk, Java, C#も同様の問題を抱えている。 STLのコンテナはとても不恰好に見えたが

    C++の設計と進化(D&E) レバレッジメモ 1 - 西尾泰和のはてなダイアリー
  • クラスが持つ3つの役割 - 西尾泰和のはてなダイアリー

    某所のチャットで話題になって、流れ去りそうだったのでもったいないから転載しておいた。事後承諾で。 MIYAMOTO Daisuke: 型の継承と実装の継承を区別する方法がないんだよな。 西尾泰和(nishio.hirokazu): 型を継承させずに実装を継承させたい→それ移譲で ってことかな? MIYAMOTO Daisuke: そそ。そもそも、クラスに「型としての役割」と「実装としての役割」という複数の責務があることに、俺は長い間気づかなかった。これに気づかないと、型継承と実装継承が頭の中で整理できない。 西尾泰和(nishio.hirokazu): 僕が最近気づいたことも加えると、クラスには「ユーザ定義型」「インスタンスを作成する道具」「実装の再利用の単位」という3つの役割がある。 MIYAMOTO Daisuke: あぁ、インスタンスの生成器ね。 西尾泰和(nishio.hiroka

    クラスが持つ3つの役割 - 西尾泰和のはてなダイアリー
  • たまにはブログを書く - 西尾泰和のはてなダイアリー

    やる夫と Python で学ぶ Twitter の OAuth - YoshioriのBlog よいまとめ! はてブコメントより引用 id:agricola Python, あれげ リスト内包の使い方に美がないなぁ……。辞書のキーと値を、キーで並べ替えて取り出して=で連結するなら ['='.join((k, v)) for k, v in sorted(d.items(), key = lambda x: x[0])]とか書く気がする。 そんな餌で俺様が釣られクマーーーーーーっ >>> ['='.join((k, v)) for k, v in sorted(d.items(), key = lambda x: x[0])] ['a=k', 'b=j', 'c=i', 'd=h', 'e=g', 'f=f', 'g=e', 'h=d', 'i=c', 'j=b'] ふむ。なんだこのゴテゴテ

    たまにはブログを書く - 西尾泰和のはてなダイアリー
  • 黒魔術について - 西尾泰和のはてなダイアリー

    Twitterから引用 黒魔術を使ってDSLを作り易くしている言語の作者たちって、ファイル冒頭でuse BlackMagic;しないと黒魔術使えないようにするとかuse BlackMagic::MetaClassHack;とか書かせてどんな魔術が使われているか明示的にするとか考えないのかなぁ nishio/nishio hirokazu 2010-09-25 15:53:05 PythonのPEP 20には「明示的なのは暗黙的なのより良い(Explicit is better than implicit)」と書かれており、「C++の設計と進化」P.284には「柔軟性や表現の自由を求める気持ちと、安全性、予見性、そして単純性を望む気持ちは衝突する」と書かれている。実際にOption Explicitやuse strictなどの「柔らかくしすぎた言語を固くするオプション」が導入された事例もある

    黒魔術について - 西尾泰和のはてなダイアリー
    syanbi
    syanbi 2010/09/28
    なるほど、DSLで使われる(method_missingのような)黒魔術というのは黒魔術というのではなく、クールなハックか。なるほど。
  • 多重継承まとめ - 西尾泰和のはてなダイアリー

    JavaはInterfaceという特殊な実装を持たないものだけ多重継承できる。実装を多重継承する仕組みはない。同じシグネチャのメソッドを持っている2つのInterfaceを継承した際にエラーにならないので衝突に気付けない。 Pythonはクラスを多重継承できる。同じ名前のメソッドを持っている2つのクラスを継承した際にどのメソッドが呼ばれるかはC3線形化を使って決定される。see: A Monotonic Superclass Linearization for Dylan RubyはModuleという「なにかを継承することはできなくてインスタンス化もできないもの」だけは多重継承できる。Moduleが別のものを継承できないためメソッドの解決は素朴な探索でOK(include A include BしたらBでの実装が優先) SmalltalkにはTraitという実装の多重継承ができるしくみがあ

    多重継承まとめ - 西尾泰和のはてなダイアリー
    syanbi
    syanbi 2010/09/28
    多重継承について
  • RubyとCの x = y + y = x について - 西尾泰和のはてなダイアリー

    Rubyで x = y + y = x と書くとこれは x = y + x と y = x を行ったのと同じ振る舞いをする。 > x = y = 1 => 1 > x = y + y = x => 2 > [x, y] => [2, 1] > x = y + y = x => 3 > [x, y] => [3, 2] > x = y + y = x => 5 > [x, y] => [5, 3] > x = y + y = x => 8 > [x, y] => [8, 5] なぜかというと、まず x = y + y = xの y = x が実行されてその代入式の値はxになるから x = y + xところで、これはCでも動くと思って試してみたがしたのようなエラーになってしまう。 error: lvalue required as left operand of assignmentこれはおそ

    RubyとCの x = y + y = x について - 西尾泰和のはてなダイアリー
  • Ruby 1.9.2リリースとWEBrick脆弱性問題の顛末 - 西尾泰和のはてなダイアリー

    はい、Ruby 1.9.2がリリースされましたね。このバージョンではWEBrick にゼロデイ攻撃可能な脆弱性 - スラッシュドット・ジャパンで紹介されている脆弱性が僕が書いたパッチで修正されているわけなのですけど、そもそもなんで僕が修正しているのか、って顛末がわりと面白いので紹介します。 Apple、upstreamに報告してくれないまま脆弱性をCVEに届け出る upstreamに連絡が来ないまま脆弱性が公開される ruby-devにAppleが書いたと思われるパッチが貼られる(Appleでない人間によって) パッチのライセンスが不明なので取り込めない ライセンスを問い合わせるAppleの窓口が不明なので問い合わせもできない ruby-devを読んだ人はライセンス上安全なパッチを書けない 脆弱性だから話は非公開に進めたい yuguiさんがruby-devを読んでない僕に書かせることにする

    Ruby 1.9.2リリースとWEBrick脆弱性問題の顛末 - 西尾泰和のはてなダイアリー
  • 「世の中にはそう言う人もいるんだなぁ」でたいがい解決する気がしてきた話 - 西尾泰和のはてなダイアリー

    ささださん経由で「【メモ】 「まとも」でないもの vs.「まとも」なもの」を知って「まあ、世の中にはそう言う人もいるんだなぁ」でスルーしていたのだけど、今日久しぶりに自分のエントリー「[Haskell][Python]遅延評価のリストを作る」を読み返して「この[Python]って書いてあってdefとかclassとか書きまくってあるコードを見て『マクロのないJavaScriptでは遅延リストの実装は難しい』なんていう空振り三振みたいなコメントを書いているのは誰だ?」と思ったら同一人物だったのがとても面白かった。 世の中にはそう言う人もいるんだなぁ。 問題は、はてぶコメントとかTwitterみたいな字数の限られた文章では、しばしば「そういう人」と区別がつかないって所かもしれないね。当は十分な長さで書けば有益な情報を発信できる人が、言葉足らずなコメントをつけて「そういう人なんだな」とスルーされ

    「世の中にはそう言う人もいるんだなぁ」でたいがい解決する気がしてきた話 - 西尾泰和のはてなダイアリー
  • Blenderでコッホ曲線の万華鏡を作った - 西尾泰和のはてなダイアリー

    ちょろっとPythonスクリプトを書けば自動化ができる。コッホ曲線の鏡を作ってみた。 フリーのツールをダウンロードして数十行コードを書くだけでこんなのが作れるとはいい時代になったものだ。レンダリング時間もノートPCで作業しているのに一番長いので5分程度だし。 import BPyAddMesh import Blender from math import cos, sin, pi Vector = Blender.Mathutils.Vector def turtle(): verts = [] faces = [] context = dict(x=0, y=0, dir = (1, 0)) verts.append(Vector(context["x"], context["y"], 0)) verts.append(Vector(context["x"], context["y"]

    Blenderでコッホ曲線の万華鏡を作った - 西尾泰和のはてなダイアリー
  • 1