2009-01-01から1年間の記事一覧

オーバーライドできるtry-catch-finally

注意 タイトルは嘘です。 正確にはtry-catch-finallyらしきもの。 概要 try-catch-finallyをメソッドでラップし、拡張可能にする。 メソッドチェインで本物に似せる。 動機 printStackTraceなど、お決まりのtry-catch-finallyを書くのが面倒。 基礎知識 必要…

ファンクションの上からスタックを見下ろす

動機 Iterable.foreachなど、関数を引数にとるメソッドの実装を知りたい。 予備知識 必要な知識はこのへん。 メソッド呼び出しはスレッドごとにスタックを積む 関数呼び出しはFunction1.applyを実装したメソッドの呼び出しである Throwableをnewすると、その…

Scala入門・ゼロと後者関数

動機 自然数ってゼロとサクセサーだよね。 概要 ゼロは自然数である 自然数の後者はまた自然数である という自然数の作り方がある。Scalaの1つの特徴は、コンストラクタ以外のパターンマッチが書けること。 一般に関数型言語でパターンマッチができるのは、…

Scala入門・幅優先探索

動機 幅優先探索(などのグラフアルゴリズム)を学部生に教える授業に参加した。 よい機会なので、Scalaになじむため幅優先探索を実装した。 方針 幅優先探索はグラフをたどるだけではなく たどりつつ、各ノードについてほげほげするのが目的なので bfsの第2引…

デジタル時計が冗長な件

問題は某ジャグリングサークルの会誌から意訳。 デジタル時計が冗長なことがわかる。 問題 [00-23]時:[00-59]分表示のデジタル時計から、各時刻(1440通り)が区別できる限りできるだけ棒を取り除くとき、何本取り除けるか? 方針 0から9までを表示する必要の…

イテレータで竹藪を焼く

メニュー 今日は、Javaのイテレータで竹藪を焼いてみます。 動機 Iterableの挙動を変えたい。 拡張forはシンタックスが分かりやすいので、もっと使われてもいいと思う。 元ネタ うろ覚えだがScalaの教科書、Programming in Scala http://www.amazon.co.jp/Pr…

Javaでリスト生成遅延

動機 必要なだけ要素が作られる無限リストを生成したい。 元ネタ Haskellを使う人に有名なフィボナッチ数列の生成方法がある。 fib = 0:1:zipWith (+) fib (tail fib)これで無限に続くフィボナッチ数列ができる。 Haskellのよいところは、遅延評価(lazy eval…

味噌汁不要論

味噌汁の効用(utility)と代替案を考慮した結果、味噌汁を作る必然性が何もないことに気づいた。 あたたかい 白湯で十分。 出汁 うまみ成分のある食べ物は他にたくさんある。 塩味 漬物のほうがいい。 野菜を食べられる おひたしの方がいい。 豆腐を食べられ…

継承による再帰のトレース

継承を使うと、元のメソッドを変えずに、メソッドの再帰呼び出しの引数および戻り値を見ることができることに気づいた。

エレガントなテンプレートを求む

アルバイト先の企画で、Javaのペアプログラミングを実践した。 数人とペアプログラミングをし、各々のEclipse使いっぷりをアピールしあったのだが テンプレート機能について知らない人が多かったので、共有したいという願いをこめてメモしておく。 テンプレ…

型によるしりとりの成立判定

Coq

(12/12更新) eq型のパターンマッチを使って型を書き換えるテクニックを 知ったので、mcomposeの書き直し。 型がMorphism A B -> Morphism B C -> Morphism A Cで、計算できるものができた。 ただし諸定理の定義をDefined.でTransparentにしておかないとうま…

過去にwhyする

面接を受けた。 その時、そういう決断をしたのはなぜですか? という類の質問を複数され、この類の質問に回答するのが予想外に難しいことに気づいた。 正直わからん。 「覚えていません」というのが正確なところなのだろうが 「適当」「直観」「ノリで」と答…

モナドとモナーは関係ない

「技術者/プログラマのためのモナドと圏論」(愛称「モニャモニャモナド」)セミナー という素敵すぎる名前のセミナーが開催されることを知り、申込をした。 訂正:リンク貼り間違えた。 http://d.hatena.ne.jp/m-hiyama/20090414/1239686984開催は4/23の18…

二兎を追う者は名前を覚えられない

最近、面接を受けるときに目標にしている事がある。 「面接官のお名前を覚えよう」 ということである。 とある面接では、2人の面接官に同時に面接していただいた。 1.最初にお名前を教えていただいた。 お名前が2人とも難しい…!聞いて即忘れた。 「緊張して…

意外に近いと気づいた

ラーメンを食べた。 麺を固めにゆでてもらった。 パスタの味がした。

自己PRする前にやらなきゃならない事があるだろう

大学生が企業の面接官によく問われる質問がある。自己PRしてください大学院生である私は、こう言われると、いつも確認したくなる。 「自己PRのPRは、public relationsの略ということでよろしいでしょうか?」言葉の意味をはっきりさせるのは意味のある会話の…

エントリーシートは揺れる

就活をしていると、 エントリーシートを管理する必要がでてくる。 理由は、エントリーシートに何を書いたか忘れるからだ。 面接の前には、自分がエントリーシートに何を書いたか覚えておかないと 聞かれたことと不整合なことをしゃべる危険性がある。そこで…

タイピングの称号

タイピングゲームランキングサイトGANGAS http://www.twfan.com/ でオールラウンダーという称号を得た。どういうものかというと、ローマ字、かな、英単語、ランダム文字列の 4種類のタイピングゲームで 一定以上のスピードを達成するともらえるもの。ランダ…

コメ離れの現れ

大学の学食の値段が変わった。 ラーメンの値段が上がった↑ カレーの値段が下がった↓ これがコメ離れか…!

コーザルダイアグラム∈例外処理

Podcastでソフトウェア開発の講演を聞いていたら 例えとしてジャグリングのサイトスワップの図示法 (コーザルダイアグラム)の話題がでてきた。 いや、その例でわかってもらおうというのは無理でしょう、と言いたくなった。 http://itc.conversationsnetwork.…

不足銭飲食

飯を食った。 金が足りなかった。

英語の試験

TOEICというテストを受験した。 残念ながらあまり面白くなかった。「携帯電話の電源を切って提示しろ」という指示の意図がよくわからなかった。

Iterableで範囲for

Javaで、Iterableを実装すると拡張forが書けることを知ったので 範囲に関するイテレーションのためのクラスRangeを書いてみた。 Rubyほど簡単にはならないが、少し書きやすくなることがわかる。 参考:RubyのRangeクラス http://www.ruby-lang.org/ja/man/htm…

無意味なスタックトレースの伸ばし方

JavaのThrowableがもつスタックトレースはThrowableオブジェクトがnewされたときに、 VMのスタックを見に行きトレースを埋めるという仕様になっているらしい。 Throwableのコンストラクタでは、nativeメソッドThrowable.fillInStackTraceが必ず呼ばれている…

遠位項

小山龍介氏の講演を聞きに行った。 学生価格か3,000円ぽっきり。不確実な時代で活躍できる人はどんな人か、という考えを語っていた。面白かったのはポラニーという人の考えを解釈していたところ。ポラニーという人が、遠位項と近位項という概念を考えたらし…

例外から例外

(2009/4/26シンタックスハイライト追加) Javaで例外の原因を例外それ自身にすると実行時例外が発生することを知った。 Throwable.initCauseでできる。 例外の種類は…Throwableのソースを見ればすぐわかる。 package hoge; public class ThrowableExp { publi…

コード貼り付けのテスト

(2009/4/26シンタックスハイライト追加) 円形に並べられたn個の数字で、 隣り合う数字の和が1からn(n-1)+1になるようなものがあれば見つけてくるHaskellプログラム。 GHCでn=9まで終了した。 反転対称を除いていないのがすぐに改善できそうな点。 rotateの名…

終了のみが必要な状況

viを終了させる方法が欲しい状況があった。 :q!など。 http://docs.hp.com/ja/B2355-90813/ch04s07.html

決して反復してはならない

3行のバッチファイルを書いてみた。(七五) DRYという言葉はとてもいい言葉だと実感した。 Don't Repeat Yourselfの略。

2日で5人

企業の就職セミナーに2日で2社参加した。5人の知り合いに合った。 世間は狭いという言葉を実感した。