今日は自然言語処理の期末試験でしたが、 昨日は筑波大学情報学群 組み込み技術キャンパスOJTのソフトウェアコースの成果発表会でした。

開発のお題は、Webブラウザで動作する3Dのカバンの商品カタログでした。

成果物はこれです。

Shelf

WebGLとHTML5で作っているので、WebGLの動くWebブラウザがあれば、Nexus7などのタブレットでも動作します。 (Androidでは、開発者用のChromeでchrome://flags/からWebGLを有効にする必要があります。)

細かい技術的な話はここでは置いておきますが、リポジトリは公開してます。

投票の結果、最優秀賞は逃したものの、なんだかんだで技術賞をいただきました。 一般参加者の評価も12人中2番目に良かったので、頑張った甲斐はあったというものです。

成果発表会に来てくださった方はありがとうございました。思ったよりたくさんの方に来てくださって正直驚きました。 講師の先生方、TAの方もありがとうございました。他の受講生は本当にお疲れ様でした。

振り返ってみると、開発に関してはいろいろと困難がありましたが、終わってみるとけっこう楽しかったです。(小並感)

春学期はブラウザ上で動かすこともあり、組み込みという感じはほとんどしませんでしたが、 秋学期は本格的に組み込みらしいので、期待してます。

Read more


GitHubでリストや順序リストをネストするときは、インデントをスペース4つにする必要があるみたいです。

そうしないと、うまくネストできませんでした。

例: https://github.com/gam0022/shelf/blob/master/README.md

Read more


最近、COJTという授業でWebGLとHTML5、JavaScriptなどを駆使して、3Dを使ったカバンの商品カタログのような物体を生成しています。 JavaScriptなどについて色々調べているので、有益そうなことをメモします。 とりあえず、動くようになったので、公開用のURLを晒しておきます。 COJT用の何か 実は、開発方法が色々とアレなのですが、ここでは深く言わないことにします。 JavaScriptそのものについて 私のようにクラスベースオブジェクト指向の言語から入った人間にとっては、 JavaScriptのプロトタイプベースオブジェクト指向はなかなか馴染みにくいものでした。 そういう人は、以下のサイトなどから、JavaScriptのOOPについて学習するのが良いと思います。 最強オブジェクト指向言語 JavaScript 再入門! slideshare JavaScriptでオブジェクト指向プログラミング @IT イーズ・アウト について COJT用の何かをみてもらえれば分かると思うのですが、棚の回転やパネルのポップアップの動きが 等速ではなく、動きの終わりに減速するようになっていると思います。 動きの終わりに減速する動きを「イーズ・アウト」と呼ぶそうです。 イーズ・アウトは重要で、フレーム数が限られた描画でも滑らかに動きに見せることができます。 ぶっちゃけ、COJTで学んだ一番のことと言うと、イーズ・アウトという単語を覚えたことな気がします。 イーズ・アウトの実現方法は色々とあると思いますが、私は次の関数で実装することにしました。 {% math%} f(t) = 1 - exp(-6t) {% endmath %} tは時間で、tを0〜1の間で変化させると、f(t)が良い感じにイーズアウトする物体の座標になります。 この式は、次のサイトから知りました。 指数関数を使ったお手軽イーズ・アウト spinrfの実装 JavaScriptには、spinrfがないので、自分で実装するか、誰かが作った実装を使う必要があります。 単純な用途なら、この実装で十分だと思いました。 連載:jQuery逆引きリファレンス:第5回 コア編 (11⁄13) @IT より // sprintf(‘{0}は{1}’, ‘猫’, ‘うろうろ’); => ‘猫はうろうろ’ sprintf = function(format) { // 第2引数以降を順に処理 for (var i = 1; i < arguments.length; i++) { // 正規表現でプレイスホルダと対応する引数の値を置換処理 var reg = new RegExp(’\{’ + (i - 1) + ‘\}‘, ‘g’); format = format.

Read more


Uva Online Judgeで解いた問題を適当に解説します。

2ということで、前回の続きです。

Where’s Waldorf?

問題

10010 - Where’s Waldorf?

問題
MxNの広さの2次元の行列から単語を検索する問題。
単語は、上、下、左、右、右上、左上、右下、左下の8通りの並び方がある。(縦読みや横読み的な)
また、大文字と小文字は区別しない。
入力
書くのが面倒なので省略。
出力
見つけた単語の1文字目の座標

解説

特にアルゴリズムの工夫のしようもないので、総当りで解く。 ちょっとした工夫としては、1文字目を見つけた次に最後の文字から照合すると、 文字の座標的にありえないケースを早々に飛ばすことができる。

大文字と小文字を区別しないので、入力を読み取るときにどちらかに統一する。

Read more


今日はつくばC#勉強会(tkbcsmt)に参加してきました。

期末テスト直前でしたが、C#界隈のすごい人が参加するようだったので、怖いもの見たさに参加してしまいました。

会場に着いてみると、人がいっぱいで驚きました、筑波大学生じゃない人がたくさん参加している様子でした。(はるばる陸の孤島までお疲れ様です。)

まつもとゆきひろさんも参加したRubyシンポジウムの時より人が多かったんじゃないですかね。

私はアルバイトでC#とWPFをちょっと触ってる程度のC#初心者でしたが、半分くらいは内容が分かったので良かったです。

特に未確認飛行 Cの岩永さんの話はあまりC#と関係はなかったのですが、 自分のキャリアプランを考え直すきっかけになりそうなありがたい話でした。やっぱり余裕は大切ですね。

最後に、主催者のねぎさんやその他のスタッフは本当にお疲れ様でした。

Read more


LaTexで図をその場に配置する方法ですが、このようにすれば良いようです。

  1. プリアンプルに\usepackage{float}を追加。
  2. 図を配置するとき、\begin{figure}[H]のように位置指定する。

Read more


Uva Online Judgeで解いた問題を適当に解説します。

The 3n+1 Problem

問題

100 - The 3n + 1 problem

問題
ある整数nに対して、問題文のように数列を1になるまで計算する。
nを iからjの 範囲にして、数列を計算した時、
1で終わるまでの数列のサイクル数が最大になるときのサイクル数を求める。
入力
1つのテストケースに対して、次の1行の入力。
i, j
出力
i, j, 最大のサイクル数

Read more


定義リストを使いたい

Markdownは楽で便利なのですが、残念なことに標準ではMarkdownは定義リスト<dl>を使えません。

Markdownでは、HTMLを埋め込めるので、手打ちでHTMLを書くことで対処できますが、 それだと負けた気分になってしまいます。

Octopress(というか、Jekyll)では、標準のMarkdownのパーサを変更できるので、 定義リストを使えるParserに変更して対処しました。

Read more


特に理由はなかったのですが、便利という噂を聞いてbashからzshに乗り換えました。

iTerm2 + zsh

zshを試す

Macでは標準でzshが入っているので、ターミナルで$ zshとすれば試せます。

飽きたら、$ exitで終了です。

Read more


最近、BetterTouchToolというソフトを入れたのですが、便利でした。

Macだとウィンドウをスナップする機能がないので困っていたのですが、これで解決しました。

有料版のBTT Remoteでは、iPadやiPhoneを、Macのキーボード・トラックパッドにできるようです。

Read more