タグ

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

  • レジ「972円です」客、支払う。レジ「104円のお返しです!」 - 西尾泰和のはてなダイアリー

    ビジネス街のレストランで972円の昼ごはんをべている僕。聞くとはなしにレジのやり取りが聞こえていくる。 レジ「972円です」 レジ「104円のお返しです!」 ……えっ、何が起きたんだ? 出題編 しばらく考えて、客もレジも間違ったコインを渡したり、渡さなくて良い余計なコインを渡したりしていなくても成立しうるストーリーを思いついた。これを考えるのは結構面白かったので、ブログ記事にすることにした。(間違いを許容すると別解がある) ヒント編 僕の思考の過程を追いながら一歩ずつ回答に近づいていこう。 : : : 僕「100円がお釣りとして返ってくるということは、客は100円玉は出していないということだろう」 : : : 僕「仮に客が1000円を出していたら、お釣りは28円だ」 : : : 僕「客が104円のお釣りを受け取るには、1076円払う必要がある。76円払うには1円玉を出す必要があり、お釣り

    レジ「972円です」客、支払う。レジ「104円のお返しです!」 - 西尾泰和のはてなダイアリー
    terazzo
    terazzo 2016/05/15
  • 「正規表現技術入門」はいい本だ - 西尾泰和のはてなダイアリー

    著者の新屋さんから技術評論社の「正規表現技術入門」を頂きました。 これはいいですね。特に第2章で語られている、正規表現がどうやって生まれてきたかという話がよいです。僕も拙著「コーディングを支える技術」の続編に向けて、正規表現の歴史を書こうとしたことがあったのですが、僕が書こうと思っていたもの以上によいものに仕上がっています。しかも20ページとコンパクトにまとまってて、もう、僕がこれに関して書く必要はないなぁ、とうれしいようなさみしいような。パイプとgrepの関係は知らなかった、面白い。 第1章で60ページぐらいで正規表現の基的なことをおさえてくれているのもよいところです。正規表現を使う必要のあるプログラマはみんな第1章だけでも目を通しておくとよいのではないかな。 正規表現がフォーマルにはどう定義されているものなのか。この話題は、コンピュータサイエンスを大学で学んだ人にとっては常識の範疇

    「正規表現技術入門」はいい本だ - 西尾泰和のはてなダイアリー
    terazzo
    terazzo 2015/05/19
  • 「定量的でない目標に意味はない」を読んで思ったこと。 - 西尾泰和のはてなダイアリー

    「定量的でない目標に意味はない」について。 まず、目標の定量化にはメリットがある。目標の分割が容易になるというメリットだ。例えば「この100ページの問題集を解く」という目標だと「まずは1ページやろう」→「1ページできた!」→「達成感ゲット!!」というように、速く頻繁に達成感を得ることができる。これはやる気を維持する効果がある。 一方で、定量化がしやすいものとしにくいものがある。これもまた事実。たとえば、プログラマが書いたコードの行数はとても定量化しやすい。一方で、行数を増やすために削除や共通部分の抽出が禁止されるとコードがどんどん読みにくくなる。この「読みにくさ」は定量化しにくい。読みにくいコードの仕事をさせられたプログラマは強い「ストレス」を感じ、徐々に「精神状態」が悪化する。これも定量化しにくい。その結果、うつ病の発症率が上がってようやく定量化される。 ref. http://itpr

    「定量的でない目標に意味はない」を読んで思ったこと。 - 西尾泰和のはてなダイアリー
    terazzo
    terazzo 2015/01/14
  • KyTeaの分野適応を試してみた - 西尾泰和のはてなダイアリー

    うっかり間違えてEUCのMeCabを入れてしまってテンションが下がったのでKyTeaを使うことにしました。 KyTeaを使った単語分割分野適応 半角スラッシュ 生コーパスが/を含んでいるとエラーになる。全角に置き換えた。 clean 生コーパスを変えてやり直すときに何を削除すればいいかがわからなくて困った。work/*とsave/*を消せばいいようだ。 1分くらい ./makemodel.sh 0.00s user 60.86s system 99% cpu 1:01.09 total 分量はこれくらい $ wc data/target-train.raw 48320 25084 4336657 data/target-train.raw 例 |ハ-ッ-カ!ソ-ン| 誤植も見つかる: 電 車 の 中 で 泣 い て|し!ま|た っ た た め 「名前+さん」なのか、単体で1単語なのか悩むK

    KyTeaの分野適応を試してみた - 西尾泰和のはてなダイアリー
    terazzo
    terazzo 2015/01/09
  • HTTPよりHTTPSの方が速い?それSPDYですから! - 西尾泰和のはてなダイアリー

    HTTP vs HTTPS Test — Does encryption make websites slower or faster?というサイトでHTTPとHTTPSの速度の比較ができて、しかもHTTPSの方が速い、なぜ?という話をFacebookで見て、僕もChromeで試してみたら確かに速い。なぜ? SPDYですよね。参考文献:Web表示の高速化を実現するSPDYとHTTP/2.0の標準化 | 最新の技術・取り組み | IIJ SPDYが使われているかどうかを確認できるSPDY indicator - Chrome Web Storeをインストールして試してみたら「SPDY3.1が使われています」という表示が出た。 chrome://net-internals/#spdy を見ると以下のようになっていた。Force SPDY Alwaysをtrueにするか、SPDY Enabled

    HTTPよりHTTPSの方が速い?それSPDYですから! - 西尾泰和のはてなダイアリー
    terazzo
    terazzo 2014/12/04
  • 「文字列を文字の列とみなす単純化」ってどういうこと?解説編 - 西尾泰和のはてなダイアリー

    先日 @shyouhei さんのTweetに反応して文字列が文字の列かどうかが言語によって異なるという話をTweetしました。 shyouheiさんの投稿: PythonはどうかしらんがRubyの設計思想は「世の中はシンプルじゃない」だからな。文字列を文字の列とみなす発想その物がすでにRubyからすると過度に世界を単純化しすぎている。 https://twitter.com/shyouhei/status/528106973565165568 もうちょっと言っておくと数値計算で勝ち目のないRubyは文字列処理にめっちゃ注力してるんで。文字列処理こそがRubyの主戦場。そこでRubyが文字列をあえてカタマリで扱ってることにはそれなりの理由というものがある。つまり分解しようとするほうが困りごとが増える。IVSとか。 https://twitter.com/shyouhei/status/528

    「文字列を文字の列とみなす単純化」ってどういうこと?解説編 - 西尾泰和のはてなダイアリー
    terazzo
    terazzo 2014/11/07
    概念上の文字というものは単純ではないので実用上エンコーディングが露出せざるを得ないという認識。
  • 例えば「写経」という言葉を避けてみる。 - 西尾泰和のはてなダイアリー

    サイボウズ式「続・エンジニアの学び方」の第5回が公開されました。この回では、小崎さんが「どうしてコードを読もうと思ったのか」と、コードを読むために新しい言語を学ばなければいけない場合に「どうやって学ぶか」を聞きました。 ところで、小崎さんは自分の学び方を「写経」と読んでいて、僕もこの用語は自然に理解できるのですが、公開後のTwitterの反応を見ていると「写経と呼ぶことが嫌」もしくは「仏教での写経の印象で、内容を勘違いしている」という事例がいくつも見つかりました。 プログラミングの学習法としての「写経」という言葉は色々な書籍で使用されています。例えば「100人のプロが選んだソフトウェア開発の名著 君のために選んだ1冊」の70ページでは「まず写経することから始めた」というエピソードが紹介されています。また「改訂新版 コンピュータの名著・古典100冊」の99ページでは「技術書の内容にそって深い

    例えば「写経」という言葉を避けてみる。 - 西尾泰和のはてなダイアリー
    terazzo
    terazzo 2014/09/08
  • コード進行を五度圏で可視化してみた - 西尾泰和のはてなダイアリー

    Songleの外部埋め込みプレイヤーがJavaScriptでカスタマイズできるので、それを利用して五度圏の可視化をするデモを作ってみました。 スピッツの「ロビンソン」 中島みゆきの「地上の星」 きゃりーぱみゅぱみゅの「ファッションモンスター」 ロビンソンはコードの動きがわりとおとなしいですね。一方ファッションモンスターはGm Fmを交互にピコピコ動いてダンスを見ているような楽しさが。 Songleは音楽の理解を支援するサービスで、楽曲からコード進行などの情報を抽出し、可視化したり、コード進行を強調して再生したりしてくれます。詳しくはSongleのサイトの解説をごらんください。外部埋め込みプレイヤーを使うと、JavaScriptからそのコードの情報が取れるようになるので、以前から興味のあった五度圏での可視化を試してみました。100行未満のソースコードで実現できてとても手軽でした。このデモのソ

    コード進行を五度圏で可視化してみた - 西尾泰和のはてなダイアリー
    terazzo
    terazzo 2014/06/16
  • 「word2vecによる自然言語処理」を出版しました - 西尾泰和のはてなダイアリー

    オライリー・ジャパンから「word2vecによる自然言語処理」という電子書籍を出版しました。予定外のドタバタがあってブログで紹介するのが遅くなってしまいましたが、その間にオライリーのEbook Store Sales Rankingでは1位になっていました。 word2vecは2013年に論文が出たばかりの新しい技術です。色々な方がブログで取り上げていて、興味をもった方も多いと思います。知らない方のためにいくつかリンクを紹介しておきます: https://code.google.com/p/word2vec/ で少し遊んでみた。いわゆる deep learning で… Deep-learningはラテン語の動詞活用を学習できるか? Can deep-learning learn latin conjugation? - naoya_t@hatenablog 自然言語処理をなにも知らない私

    「word2vecによる自然言語処理」を出版しました - 西尾泰和のはてなダイアリー
    terazzo
    terazzo 2014/06/06
  • 放射線耐性Quineの読解 - 西尾泰和のはてなダイアリー

    「放射線耐性 Quine (1 文字消しても動く Quine) - まめめも」という頭のおかしい(ほめことば)コードがリリースされていました。 以前「The Qlobe - まめめも」がリリースされた時は、Pythonに移植したら「難読コードを読んでみよう(Python初心者向け解説) - DT戦記(zonu_exeの日記)」という読解エントリーが上がって、書いた人としても興味深く読ませていただきました。 最近「理解ってなんだろう」ということが気になっていて、人間が理解できていない状態から理解できている状態に変わる過程で何が起きているのかに興味があります。なので自分自身がこの変態コードを理解する過程で何を考えているかを記録してみることにしました。 ちなみに筆者のRubyスキルがどの程度かというと…さっき仕事に使っているVMでyohasebe/wp2txtを使おうとしたらRubyが入ってい

    放射線耐性Quineの読解 - 西尾泰和のはてなダイアリー
    terazzo
    terazzo 2014/02/21
  • フェルミ推定とアスペルガー症候群の関連を主張する人がいるがかなり酷い - 西尾泰和のはてなダイアリー

    就職面接で行われるフェルミ推定がアスペルガー症候群の人を選ぶためのものであるという主張をしている人がいた。看過できないので反論しておく。 http://anond.hatelabo.jp/20140128183151 まずここが嘘。 アスペルガー症候群(高機能自閉症、PDD)は、まさに先天的な前頭葉の機能障害により発症するものと考えられており 科学的にはまだ「諸説あって決着がついていない」という状況だ。ちなみにこのスライドの前半で解説しているので興味があれば見ると良い。 http://www.slideshare.net/nishio/ss-27390660 次に「前頭葉に機能障害を持つ被験者は、異常な推測値を挙げる傾向にある」から、異常な値を答えた人を採用することでアスペルガー症候群の人を選ぶことができる、という点について。 大雑把な見積もりをする能力はプログラマが仕事をする上でも重要。

    フェルミ推定とアスペルガー症候群の関連を主張する人がいるがかなり酷い - 西尾泰和のはてなダイアリー
    terazzo
    terazzo 2014/01/29
  • 量子将棋 Q&A - 西尾泰和のはてなダイアリー

    昨日書いた手抜きの「量子将棋が面白い」記事が大人気ですが、ルールの解説を手抜きしたので誤解をしている人もいるようなのでQ&Aの形にしてみました。 Q: 運が関係する? NO。運が関係するのは先手後手を決める振り駒だけ。残りは通常の将棋と同様の、運の要素が全くない、実力100%のゲームです。 Q: え?駒を取った時にその駒が確率でどの駒だったか確定するんじゃないの? NO。それは軍人将棋からの連想なのかもしれないけども、正しくありません。例えば「香車か飛車のどっちか」という駒を取ったら、そのまま「香車か飛車のどっちか」として使えます。 Q: 打つときに香車として使うか飛車として使うか決めるの? NO。打った直後は「香車か飛車のどっちか」という重ね合わせの状態です。もちそんその後で後ろに動かせば、香車がそのような動きをすることはありえないので、その駒は飛車であることが決まります。他にも、例えば

    量子将棋 Q&A - 西尾泰和のはてなダイアリー
    terazzo
    terazzo 2013/11/11
  • 量子将棋が面白い - 西尾泰和のはてなダイアリー

    量子将棋というゲームが遊べるようになったということで、さっそくプレイしてみた。ルールは簡単に言うと、すべての駒は量子的な重ね合わせの状態にあり、どう動かしたかによって駒の状態が収束する。王将に収束した駒を取れば勝ち。(追記: ルールの解説書きました: 量子将棋 Q&A) 2勝2敗で結構面白かったので流れ去ってアクセスできなくなる前に感想をメモ。 1回目(勝ち) 棋譜: http://shogitter.com/kifu/884 僕の戦略 駒の種別が確定すれば取れる選択肢が減る。ということは必要がない限り駒は動かないほうが良い。動かさなければいけないのであれば歩の振りをするのが一番可能性が狭まらない。 王将に確定した駒を取れば勝ちなのであれば、相手の「王将かもしれない駒」をどんどん取って行って可能性を狭めるべき。 感想 駒の上にマウスポインタを置くと可能性のある駒の種類が出てくる 飛車を取る

    量子将棋が面白い - 西尾泰和のはてなダイアリー
    terazzo
    terazzo 2013/10/28
  • FPGAでライフゲームを作りました - 西尾泰和のはてなダイアリー

    動画の内容 ランダムに初期化(see 線形帰還シフトレジスタ - Wikipedia) しばらく実行(高速モード:1ステップ3msec。VGA60Hzの画面の更新が17msecなので画面1回更新されるごとに5ステップ進んでいる計算) 画面をクリア、低速モード(256倍遅い)に移行 Rペントミノを配置するボタンを押す しばらく走らせる 高速モードに変える 実装 読み書き用のアドレスをインクリメントする 2行+3マス文の323bitのシフトレジスタに読んだデータをpushする(see シフトレジスタ - Wikipedia) シフトレジスタの0, 1, 2, 160, 161, 162, 320, 321, 322の9ビットを束ねてアドレスとし、ライフゲームのルールがハードコードされた512bitのROMから1bit読む 読んだ値をVRAMに書き込む 各1クロックでできるかな〜と思ったけども、

    FPGAでライフゲームを作りました - 西尾泰和のはてなダイアリー
    terazzo
    terazzo 2013/04/24
  • 評価戦略について - 西尾泰和のはてなダイアリー

    「コーディングを支える技術」の書評で、評価戦略についていくつかご意見をいただきました。 id:dankogai 評価戦略がまるまる抜けてしまったのは残念である。かつては事実上先行評価しかなく、評価戦略において選択肢があること自体ほとんど知られていなかったが、今では遅延評価を主体とする言語も普及したとまでは言えないものの、充分実用的に使われるようになってきている。著者はもちろんHaskellを知っているし、書にも登場するにも関わらず、これが抜けているというのはなんとももったいない。もし改訂版を著す機会があったら、絶対に一章割いていただきたい。 http://blog.livedoor.jp/dankogai/archives/51864510.html 確かに、世の中の大部分の言語が先行評価なせいで「そういうもんだ」と思い込んでしまっている人も多そうですね。そういう人にHaskellでun

    評価戦略について - 西尾泰和のはてなダイアリー
    terazzo
    terazzo 2013/04/22
    本当は怖いif文
  • プログラミング学習手段としての写経について - 西尾泰和のはてなダイアリー

    あるブログが「写経には効果がない」という趣旨のことを書いていて「何を言ってるんだ?」と思いじっくり読んでみたら、彼の言う写経は「動くとわかってる10000行のコードを何も思考せず作業として書き写すこと」を指しているようだった。「そんなわけないじゃん」と笑ってから「もしかして世の中は写経をそういう捉えてるのか?」と不安になった。 写経は自分の中にモデルを作るための行動で、他のもっと効率のよい方法と比べた場合の利点は「自分の中にモデルがなくても使える」点に尽きる。全く知識ゼロでいきなり「自分で考えて書く」ができる人はいない。考えるための材料となる知識をまず脳内に運び込む、それが写経だ。 写経の過程で大事なことは以下の3つだ。 1: 早く学びが得られるように、なるべく小さいコードで実験し、すぐに結果を確認する。 2: 疑問に思ったこと、考えたこと、気づいたことを書き留める。どうしてこういう書き方

    プログラミング学習手段としての写経について - 西尾泰和のはてなダイアリー
    terazzo
    terazzo 2013/03/27
    別の言語で書き直すとかなりいい感じになる。/ベーマガと言えばよく他機種用のをMSX-BASICに移植してた。
  • Javaでヒープ領域を余らせたままOutOfMemoryErrorを出す方法 - 西尾泰和のはてなダイアリー

    先日、こんな問題を見かけたのだけども、JavaのGCにはあまり詳しくないので答えがわからなかった。 OutOfMemoryErrorが発生しました。(中略)ヒープメモリは足りているようです。原因として何が考えられますか? http://d.hatena.ne.jp/iad_otomamay/20130318/1363596244 なんでだろうなぁと思っていたところid:moriyoshiが「Permanent領域があふれたんじゃないの」と一言。「Permanent領域」で検索してみると、なるほど、そういうことなのかー。 というわけで早速それを再現させるコードを書いてみた。ヒープの大部分ががら空きなのにPermanent領域だけ99%になっているのがわかるかと思う。 Exception in thread "main" [Full GC [Tenured: 515K->515K(56896K

    Javaでヒープ領域を余らせたままOutOfMemoryErrorを出す方法 - 西尾泰和のはてなダイアリー
    terazzo
    terazzo 2013/03/19
    パーマネント領域もヒープだと思うので元の問題の答えは自分にはわからないな。/ちなみにJava 8の話→ 「Java 8でPermGenのOutOfMemoryError問題は解決されるのか?」 http://www.infoq.com/jp/news/2013/03/java-8-permgen-metaspace
  • 状態のあるコードに対するテストの自動生成 - 西尾泰和のはてなダイアリー

    BLUE*アルゴリズムを実装してみたので、せっかくだからテストの自動生成をやってみた。 今回テスト対象にするコードの仕様は 開く、閉じる、書き込む、の3つの操作ができる 開いてないのに書き込んだり閉じたりしたらエラーになる というもの そしてこちらがそれの「バグのある実装」: class Target(object): # bad impl. def __init__(self): self.opened = False self.closed = False def open(self): self.opened = True def write(self): if not self.opened: raise RuntimeError if self.closed: raise RuntimeError def close(self): if not self.opened: rais

    状態のあるコードに対するテストの自動生成 - 西尾泰和のはてなダイアリー
    terazzo
    terazzo 2013/03/14
  • Haskell(GHCi)の:printが面白い - 西尾泰和のはてなダイアリー

    Haskellって、変数に束縛されている値が「評価されている」と「されていない」の状態を持っていて、それがグローバルにあちこちから共有されているから「どれくらいの計算量で終わるか」みたいな議論になるとイメージが掴めなくて困っていた。確認する方法があればいいのになぁ、でも、ないんだろうなぁと、諦めていたが、GHCiである程度できることがわかった。面白いじゃんこれ。 まずこんなソースコードを用意してみる。これは「リストを結合した時点で前半のリストは評価されるのか否か」を実験するためのコード。以前議論になったときに、僕の主張としては「前半を評価しないでも『xsの先頭1個と「xsの残りとysを結合したもの」のcons』を返せば良い。きっとその実装になってるだろう」というものだったのだけど、今までは挙動を観察する方法を知らなかったので議論止まりだった。 xs = [1, 2, 3] ys = [4,

    Haskell(GHCi)の:printが面白い - 西尾泰和のはてなダイアリー
  • 「竜の学校は山の上」と「竜のかわいい七つの子」 - 西尾泰和のはてなダイアリー

    文化SFが大好きなが「竜の学校は山の上」と「竜のかわいい七つの子」を買ってきた。両方とも短篇集。前者は「日唯一の竜学部がある宇都宮大学」が舞台だったり、人間が我々と同じ形の「猿人(ホモ・サピエンス)」とそうではない「馬人(ケンタウロス)」の2種類の人種で構成されている世界が舞台だったりする。竜は機械に駆逐されて今では役立たずだったり、馬人が長時間労働するせいで猿人の失業率が上がってたりする。後者は「人間のような見かけをしているが言葉は話せず、知能もそこまで高くない『人魚』」が存在する世界が舞台だったりする。「人魚に人権を」とか言う人もいるし、それらの活動によって被害を被る人もいる。 両方ともなかなか面白かった。どちらが面白いか選べと言われたら「竜の学校は山の上」を選ぶかな。馬人の話と竜学部の話が特に面白かった。は「竜のかわいい七つの子」の「瞳を入れると実体化してしまう絵描き」の話

    「竜の学校は山の上」と「竜のかわいい七つの子」 - 西尾泰和のはてなダイアリー
    terazzo
    terazzo 2013/01/27
    船橋のときわ書房で売ってたので買ったけど面白かった。神様を招請しに行く話が良かったな。