タグ

ブックマーク / nishiohirokazu.hatenadiary.org (20)

  • 書評:アンダースタンディングコンピュテーション - 西尾泰和のはてなダイアリー

    監訳者のささださんから「アンダースタンディング コンピュテーション―単純な機械から不可能なプログラムまで」を頂いたので紹介。 「プログラムの『意味』とは何か?」という抽象的な問いに真っ向から挑む。プログラムの「意味」には、「それによって計算機がどう操作されるか」で表現する方法と、「それを別の(もっとシンプルな)言語に変換するとしたらどうなるか」で表現する手法とがある。書ではこの2つの手法があることを解説し、それぞれの手法について深堀りしていく。 「計算機がどう操作されるか」路線では、もちろん次に「『計算機』って何だ?」という問いに挑む必要性が出てくる。まずは能力の劣った計算機である「決定性有限オートマトン」から初めて、それが正規表現というある種のプログラミング言語とどういう対応の仕方をしているのかを解説するのにまる1章割いている。このストーリー仕立ては面白い。 その後、有限オートマト

    書評:アンダースタンディングコンピュテーション - 西尾泰和のはてなダイアリー
    hakobe932
    hakobe932 2014/09/18
    届くの楽しみ
  • 般若心経の構造の可視化 - 西尾泰和のはてなダイアリー

    前から般若心経の構造って面白いからうまいことかしかできないかなぁと思っていたのだけども、今までは2次元の画像として可視化することばかり考えていた。眠れなくてぼんやりしていたら唐突に「動画として音と映像を使って表現したほうがいいんじゃないか」って思いついたので、とりあえず絵コンテを書いてみて、ついでにKeynoteで清書してみて、色をつけてみた。 まだ音は入っていないので、般若心経を暗唱できない人はYoutubeなりニコニコ動画なりで音声を探してきてそれに合わせてめくるのがよいかと思う。 般若心経 from nishio 追記。文字につけた色について解説。 青は山の頂上のイメージ。悟り、智慧、優れたもの。般若波羅蜜多、阿耨多羅三藐三菩提、究竟涅槃。 黄色は人を指す単語。観自在菩薩=菩提薩埵、舎利子=サーリプッタ、三世諸仏。 水色は、空(くう)、無、そして「取り除く」系の単語。取り除くことを空

    般若心経の構造の可視化 - 西尾泰和のはてなダイアリー
    hakobe932
    hakobe932 2012/08/31
  • java-jaで例外処理の話をしてきました - 西尾泰和のはてなダイアリー

    ブログを書くまでがjava-jaですが、もう眠いのでとりあえず1行だけ書いて、あとは徐々に書き足す。 会場を無料提供してくれたグリーさん、ありがとうございます! 誰かが検査例外の話をするだろうと思って書かなかったら結局誰も言及しなかった、Javaのコミュニティなのに。 っていうか聴衆が100人もいると、もしかしてそもそも「検査例外ってなに?」って人もいたんじゃないか?「検査例外がOCPを壊す」とか「Liskovの置換原則のLiskov」とか通じてるんだろうか?とりあえず直和型が通じてないことだけはひしひしと感じた。 Twitterの自分の発言を転載しておく。 ちなみにZen of Pythonでも「エラーを握りつぶすな」と書いてあります 禅 of Python: 20の格言 「例外はそもそも何のため」ってところ、ざっくり省いたんだけどもそういうところのほうがニーズあったかね?? 「C#1.

    java-jaで例外処理の話をしてきました - 西尾泰和のはてなダイアリー
  • makeがよくわからない日記 - 西尾泰和のはてなダイアリー

    複数の*.jsを元にして、別のx.jsを作りたいとする。まあ例えば具体的には複数の*.jsをコンパイルして一つのJSファイルにするとかね。コンパイルの部分は質ではないので「catで結合する」で代用することにしよう。 Q1 ソースコードのファイル名は未知とする。というわけでワイルドカードを使うことになるだろう。 x.js: *.js cat $? > x.jsいま、カレントディレクトリにa.jsとb.jsがあるとする。 $ cat > a.js a $ cat > b.js bこの状態でmake x.jsすると1回目は期待通りにa.jsとb.jsを結合したx.jsが作られる。しかし、もう一度実行するとx.js自体が依存ファイルの*.jsにマッチしてしまうためエラーになる。 $ make x.js cat a.js b.js > x.js $ make x.js make: Circular

    makeがよくわからない日記 - 西尾泰和のはてなダイアリー
  • 言語女子会: undefとnullは両方必要? - 西尾泰和のはてなダイアリー

    Twitterのタイムラインが面白すぎて、ついうっかり言語を擬人化して脳内で言語女子会なるものを開いてしまいました。なお、登場人物と実在の人物は1対1に対応しません。 undefinedとnullの両方必要なの? とあるプログラミング言語が集う女子会にて: Perl: そういえばさ、なんでJavaScriptちゃんってundefinedとnullの両方もってるの? JavaScript: えっ、未定義の変数にアクセスした時undefined返したいじゃない? Python: 例外投げて死ねばいいじゃん Ruby: 例外投げて死ねばいいよね Python & Ruby: ねー♡ Java: いやそこは参照型ならnull、数値型なら0で初期化すべきでしょ C: これだから最近の若い子は…初期化にだってコストが掛かるんだからね!デフォルトで初期化するなんて無駄遣いよ!必要な人だけが責任をもって初

    言語女子会: undefとnullは両方必要? - 西尾泰和のはてなダイアリー
    hakobe932
    hakobe932 2012/03/17
    Perlちゃん... Perlちゃん...
  • 他の言語に慣れた人がPythonを使ったときにつまずきがちな10のポイント - 西尾泰和のはてなダイアリー

    今日質問されて、以前Twitterで書いたのを思い出して、そして検索性が悪くて見つけ出すのに苦労した。こちらに転載しておく。詳細は気が向いたときに埋める。 オプション引数の評価タイミング Rubyではオプション引数は関数が呼ばれるたびに評価される。 def foo() print "foo!" end def bar(x=foo()) end bar #=> foo! と出力される bar #=> foo! bar #=> foo! Pythonでは関数の定義時に1回だけ評価される。 def foo(): print "foo!" def bar(x=foo()): pass #=> foo!と出力される bar() #=> 何も出力されない bar() 「引数が省略されたら今の日時」みたいな毎回評価したい場合はデフォルト値をNoneにしておいて「Noneだったら=省略されていたら」のif

    他の言語に慣れた人がPythonを使ったときにつまずきがちな10のポイント - 西尾泰和のはてなダイアリー
    hakobe932
    hakobe932 2012/01/26
    変数のスコープ間違えそう
  • gitにでかいバイナリファイルを入れるとどうなるか - 西尾泰和のはてなダイアリー

    ふと気になったのでgitにでかいバイナリファイルを入れたらどうなるのか調べてみた。 自分の発表が録画された112メガのaviファイルを実験対象に使う。 cp まずはgitを使わない普通のcpの時間を測っておく。 real 0m0.744s user 0m0.001s sys 0m0.179s git add git addにはコピーの10倍以上の時間がかかる。 real 0m9.339s user 0m7.989s sys 0m0.490s git commit git commitには意外と時間が掛からなかった。 real 0m0.055s user 0m0.002s sys 0m0.031s git clone 先ほど動画ファイルをcommitしたリポジトリをcloneしてみる。単純なファイルコピーに比べると3倍弱時間がかかる。 real 0m1.943s user 0m0.932s

    gitにでかいバイナリファイルを入れるとどうなるか - 西尾泰和のはてなダイアリー
    hakobe932
    hakobe932 2012/01/20
  • 30歳になりました&入籍しました - 西尾泰和のはてなダイアリー

    60歳還暦までの折り返し地点を迎えました。一緒に走ってくれる人も見つかりました。これからも頑張っていきたいと思います。今後ともよろしくお願いします。 参考文献(何) こんな嫁です: Q:「「嫁の参考文献」がまったく読み解けないぞ……。単に欲しいものを列挙してるだけなんだろうか?」 A: 嫁「欲しいものではありません!構成要素です!」僕「えっ、おなかにルンバ入ってるの?!」嫁「ルンちゃんは家族!まどかは概念!」

    30歳になりました&入籍しました - 西尾泰和のはてなダイアリー
    hakobe932
    hakobe932 2011/07/23
  • gitチートシートver0.2を公開して情報デザイン出身の人に激しく突っ込まれた日記 - 西尾泰和のはてなダイアリー

    http://www.nishiohirokazu.org/tmp/git02.pdf あまりに激しく突っ込まれたので「ちょ、ちょっとまって、続きはまた今度で」とお願いして逃げ帰ってきました。 「リポジトリって何」「変更履歴を溜めておく場所」 「これ書き換えるのはどこ」「<name>のところ」「じゃあ斜体にするか色変えるかいっそ日語にしなきゃ。かっこごと灰色とかにしないとかっこを入力しちゃうよ」 「コマンドの部分を箱で囲むなり書体を変えるなりプロンプトつけるなりが必要」 「コミットをするって何?」「変更履歴をリポジトリに入れること」 「なんで『最初の』コミットなの?最後のコミットはあるの?」 「コメントでの解説の色を変えろよ」 「『.gitにできる』ってどこ?急に思いついて作っていいの?いつもhomeにいるとは限らないでしょ」「いまいるディレクトリの中。思いついて作っていいよ」「2回 g

    gitチートシートver0.2を公開して情報デザイン出身の人に激しく突っ込まれた日記 - 西尾泰和のはてなダイアリー
    hakobe932
    hakobe932 2011/07/20
  • 多重継承まとめ - 西尾泰和のはてなダイアリー

    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という実装の多重継承ができるしくみがあ

    多重継承まとめ - 西尾泰和のはてなダイアリー
    hakobe932
    hakobe932 2010/09/24
  • Haskellの「fib = 1:1:zipWith (+) fib (tail fib)」はとても遅い - 西尾泰和のはてなダイアリー

    ラボの昼休みに光成さん、中谷さんとご飯をべながら話した内容を一応ざっくりとまとめておく。 発端はたしか最近Haskellを勉強の光成さんが、Haskellのかっこいいsieveは実はとても遅い(俺は Haskell の sieve についてとんでもない思い違いをしていたようだ...)という話を見て、同様にかっこいいけど遅い下記のフィボナッチ数列の定義の速度を調べてみたら2.5乗くらいのオーダーになっていたという話だったかと思う。 fib = 1:1:zipWith (+) fib (tail fib) 僕も確認するために、コマンドライン引数でNを与えられるフィボナッチ数列のN番目を求めるコードを書いた。 import System fib = 1:1:zipWith (+) fib (tail fib) main = do args <- getArgs print $ (0 *) $

    Haskellの「fib = 1:1:zipWith (+) fib (tail fib)」はとても遅い - 西尾泰和のはてなダイアリー
  • そろそろ例のプロジェクトについて言及するか - 西尾泰和のはてなダイアリー

    以前、とあるシステムのソースコードを読む機会があったのだけどあまりにひどかった。あのひどいコードでまあまあまともに動いているというのが逆に信じられない。今日昼ご飯をべながら少し話していたのだけど意外と知られていないようなので、話せる範囲でいかにひどいのか説明してみようと思う。 まず、ソースコードが大雑把に見積もって3750万行あるのだけど、その中でまともに機能しているコードは3%しかない。10分の1程度のソースコードで同程度の機能を実現しているシステムもあるのでほんとあのシステムのコードはゴミだと言っても過言じゃない(*1) プログラマとしてはなんでそのプロジェクトはそんな状態になってしまったのか気になるところだけども、まあ多くのプロジェクト同様、真相を知る人は誰もいない。でもまあ、実際に機能しているコードのコピーみたいなものがあちこちに散らばっていることからしてコピー&ペーストが盛んに

    そろそろ例のプロジェクトについて言及するか - 西尾泰和のはてなダイアリー
    hakobe932
    hakobe932 2009/02/01
  • Stack Stock Booksを使ってみた - 西尾泰和のはてなダイアリー

    http://stack.nayutaya.jp/ Stack Stock Books(スタック・ストック・ブックス)は、ゆる〜い感じの読書管理システムです。 結構使い勝手がいいかも。僕の携帯はドコモなので、 http://stack.nayutaya.jp/docs/appli ここのQRコードを携帯で撮影してアプレットをダウンロードすれば、携帯でのバーコードを撮って登録できる。なんか「撮影して、操作して…」という繰り返しを想像していたけど、バーコードを撮影しても元のアプレットの画面に戻ったりしないで次々撮れるので楽だった。最初は携帯をにかざしていたのでぶれてなかなか認識しなかったけど、右手で携帯を持って左手に乗せて左手の指の開閉で高さを調節するようにしたり、斜めから撮ったらのつやによっては照明が反射して認識しにくいみたいなので真上から撮ったり、とちょっと工夫したらさくさく撮影でき

    Stack Stock Booksを使ってみた - 西尾泰和のはてなダイアリー
    hakobe932
    hakobe932 2008/05/13
    がんばってつくるのお手伝いしてます
  • Zen of Python 関西弁版 - 西尾泰和のはてなダイアリー

    infoseekの関西弁翻訳でThe Zen of Pythonを翻訳 http://translation.infoseek.co.jp/ パイソンの禅(ティムピータースによる) 醜いより、美はよいや。 内在するねんより、完はよいや。 複合体よりよいものは、単純や。 難しくなるより、複合体はよいや。 縮小であるより、フラットはよいや。 濃いものよりよいものはまばらや。 読みやすさは数えまんねん。 特例は、規則を破るのに十分特別でおまへん。 実際性が純度を打つが。 エラーは、黙って決して通ってはいけまへん。 はっきりと沈黙せん限り。 曖昧さに直面して、推測したいちう誘惑を拒否してくれまっか。 明らやろか方法でそれをするねんために、もの ― 望ましくはとわずか1 ― がなければなりまへん。 あんはんがオランダ人でない限りその方法が最初は明らかでないかもしれへんが。 現在、決してよりよいや。

    Zen of Python 関西弁版 - 西尾泰和のはてなダイアリー
    hakobe932
    hakobe932 2008/03/08
    これはひどい関西弁
  • というわけでマカーになりました - 西尾泰和のはてなダイアリー

    注文したのが火曜日だったからPython Developer Campに間に合わないかと思ったけど間に合った!とりあえずMacPortsでPython25を入れればいいのかな? - xcodetools adium growl macports QuickSilver Ctrl+SpaceでSpotlightが出ないように設定 Ctrl+Space Terminalでターミナル起動 ターミナルではCommand+Spaceで日語をOFFにできないよう。なんでMacはIMEの状態がグローバルで1個なんだよう。AdiumでIMEがONでもコンソールまでONになる必要ないじゃないかよう あと「nishio-yasushiwa-no-macbook」なんて表示されてて腹が立つ>ターミナル システム環境設定 -> 共有 -> 編集 で変更 F3でExposeにした後Tabを押すとWindowsのA

    というわけでマカーになりました - 西尾泰和のはてなダイアリー
    hakobe932
    hakobe932 2008/03/05
    Alt + F4 == Cmd + w
  • JSDeferredを読む - 西尾泰和のはてなダイアリー

    前からamachangが「読むといい」って言っていたJSDeferredのコードを読む。defferedじゃなくてdeferredなので注意。 Deferred.define = function (obj, list) { if (!list) list = ["parallel", "wait", "next", "call", "loop"]; if (!obj) obj = (function () { return this })(); for (var i = 0; i < list.length; i++) { var n = list[i]; obj[n] = Deferred[n]; } return Deferred; }; これはグローバルスコープに書き出すコード。(function () { return this })()でwindowオブジェクトがとれているみた

    JSDeferredを読む - 西尾泰和のはてなダイアリー
  • 僕のサイボウズラボでの仕事について - 西尾泰和のはてなダイアリー

    よく質問されるけども、いつもうまく答えられない。 今回、ちょっといい説明方法が思いついたのでメモしておく。 僕のサイボウズラボでの仕事は、3年で1個の「イノベーティブななにか」を作ること。そして、そのために3年で10個の「リリースできるサービス/利用できる技術」を作ること。そしてそのために3年で100個の「プロトタイプ」を作ること。そしてそのために3年で1000個の「新しいアイデア」を思いつくこと。 逆に言えば、3年で1000個思いつき、100個作り、10個リリースして、1個のイノベーションを起こすこと。 イノベーションは狙って起こすことができないので、こうやるしかないのだと思う。当は、1000個の「新しいアイデア」を出すために10000個の「既存のアイデア」を学ぶべきなのだけど、そこはまだまだ追いついていない。 - あ、なんかブックマークがいっぱいついてる…。誤解がないように補足してお

    僕のサイボウズラボでの仕事について - 西尾泰和のはてなダイアリー
  • 1000人スピーカ プロジェクトのWikiができました。 - 西尾泰和のはてなダイアリー

    http://ja.doukaku.org/wiki/index.php/1000speakers URLから明らかなんですけどもどう書くorgのサーバに間借りしています。 MediaWikiで格的に色々するのは初めて(Wikipediaの間違った解説を修正するくらいしかしたことがない)なのですが、これってすごく高機能ですね。1000speakers:1というページを作ろうとして間違えて100speakers:1を作ってしまったのだけども、名前を変更したら自動的にそこへのリンクもリダイレクトされるようになりました。リファクタリング機能(?)がしっかりしているので大勢でわしゃわしゃしても無茶苦茶になりにくいのかな。 まだまだわからないことも多いですがぼちぼちと進めていこうかなと思っています。

    1000人スピーカ プロジェクトのWikiができました。 - 西尾泰和のはてなダイアリー
    hakobe932
    hakobe932 2007/12/25
    LTしたい!
  • 1000人スピーカ プロジェクト - 西尾泰和のはてなダイアリー

    「話したい人のためのカンファレンス」とか「自分をさらけ出す会」とか「スピーカ1000人プロジェクト」とかいろいろ表記揺れがありましたが、いちおう「1000人スピーカ プロジェクト」って呼ぶってことになった。ただ、これは「小規模なカンファレンスをぽこぽこやっていくっていうプロジェクト」の名前だからカンファレンスの名前は決まってないなー。「1000人スピーカ カンファンレス」でいいのかなぁ。 あと、早くも関西ではやらないの的な話もぽつぽつある。僕自身は「1000人に講演デビューするチャンスを与える」という目的を果たすためのカンファレンスを全部僕たちが運営する必要はないと思っているけども、最初から「賛同してくれる人は日の各地で同じことを!」って言うとぐだぐだになってしまって結局破綻するという意見に説得力があったのでとりあえず当分はブランチは作らない。かわりにどういう問題に悩んだとかそういうのを

    1000人スピーカ プロジェクト - 西尾泰和のはてなダイアリー
  • ランダムソート(笑)とは - 西尾泰和のはてなダイアリー

    誰が「ソートするときに比較関数に『ランダムに1か-1を返す関数』を与えたらシャッフルできる」って言い出したのかしらないけど、真に受ける方も真に受ける方だと思う。 たとえばソート関数が下のような「リストの先頭の値をピボットにしてそれより大きいものと小さいものに振り分けるクイックソート」だったとする。比較関数の所はランダムにしてある。 >>> def quicksort(xs): from random import random if len(xs) < 2: return xs pivot = xs[0] left = [] right = [] for x in xs[1:]: if random() < 0.5: left.append(x) else: right.append(x) return quicksort(left) + [pivot] + quicksort(right

    ランダムソート(笑)とは - 西尾泰和のはてなダイアリー
    hakobe932
    hakobe932 2007/11/22
    感動した
  • 1