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

「おすすめグラフ」についてインタビューされました(補足スライドあり)

先日、弊社の製品kintoneに搭載された 「おすすめグラフ」を記事にして頂きました。kintoneの「おすすめグラフ機能」の裏に「サイエンティスト」の活躍あり(1/3):企業のIT・経営・ビジネスをつなぐ情報サイト EnterpriseZine (EZ)ただ、サイエンティスト…

文字列の解析 その3: 正規表現の歴史

第1回では文字列から特定パターンの部分を切り出すことがなぜ必要になるのか、そして第2回ではパターンが複雑になるとそれを実装するコードがとても複雑になるということと、その複雑なコードを人間が書くのではなくコンピュータに作らせる「正規表現」につ…

クイズ:一つのスイッチを押すと全部のLEDが消灯する

この前の日曜日、FPGAにつなごうと思ってこんなコントローラーを作っていたんです。左半分(十字ボタン)の配線が終わったところで、動作をチェックしようと思い、DE0のGPIOに接続して入力をLEDに出してみたのですが、なぜか「一つのスイッチを押すと全部のLED…

分布が部分空間に落ちていないかチェックする

某所で「あるN-bitの列がN次元空間中で均等に分布しているかどうか確認したい」という話題が出てて、面白そうだったので書いてみた。まず正しく6次元空間に分布している例。 >>> from pylab import * >>> data1 = [[random_integers(0, 1) for _x in range(6…

再帰呼び出しを再帰呼び出しなしで実現

拙著「コーディングを支える技術」の第5章「関数」では、P.50で「再帰呼び出しを使っているプログラムは、再帰呼び出しを使わなくても書くことができる」と説明しました。この件に関してここで補足記事として解説することにしました。P.53の簡単な再帰呼び出…

文字列の解析2

「文字列の解析」の続編です。今回は正規表現のところまで行きます。 状態 前回作ったのは、「0〜9の文字」が続いているところを切り出すだけの、とても簡単な文字列解析でした。しかしそれでも、「0〜9以外文字」の文字が現れた時に行う処理は、それが「0〜…

文字列の解析

プログラミング言語の処理系は、文字列として与えられたソースコードから意味を汲み取る必要があります。例えば"int x = 1234;"という文字列から、"1234"の部分が整数を意味しているということを理解する必要があります。 どうすればそのようなことができる…

トレイトを勉強していたらクラスの定義の食い違いに気づいた話

以前自分が書いた記事Scalaのtraitはmixinか?を元に、トレイトに関する補足記事を書こうとして「そうだ、どうせならば元論文の記述とも照らしあわせたほうがよいな」と「Traits: A Mechanism for Fine-grained Reuse」を読んだ。そこで気づいたのだけども、…

下書きの下書き

ブログで書籍の改訂版の下書きを書く、と言ったものの、それはそれで時間がかかるので下書きの下書き 文字列の解析(文法の章の次に挿入) 空白を読み飛ばしてaaaaを見つける 123.456のようなパターンの文字列を切り出すには まずforで書いてみる(使う言語はJS…

何をどう学ぶか?2:三大入力方法

何をどう学ぶか?2:三大入力方法 先日の「何をどう学ぶか?」では、抽象的な知識を得るために具体的な知識から育てる方法について書きました。ではその具体的な知識はどうすれば効率よく入力できるのか?それに答えるのがこの第2章です。拙著「コーディン…

FPGAでライフゲームを作りました

動画の内容 ランダムに初期化(see 線形帰還シフトレジスタ - Wikipedia) しばらく実行(高速モード:1ステップ3msec。VGA60Hzの画面の更新が17msecなので画面1回更新されるごとに5ステップ進んでいる計算) 画面をクリア、低速モード(256倍遅い)に移行 Rペント…

DE0でFPGAのチップ内蔵RAMをVRAMに使おうとしたら上手く行かなかった日記

手順としてはこちらに書かれている通り「DE0でFPGAのチップ内蔵RAMにアクセスする - きしだのはてな」「RAM: 2-PORT」を選んで、1ポートずつread/writeに割り当て。モノクロ640x480ピクセルのVRAMを作りたかったので、How many bits for memoryに307200bitと…

評価戦略について

「コーディングを支える技術」の書評で、評価戦略についていくつかご意見をいただきました。 id:dankogai 評価戦略がまるまる抜けてしまったのは残念である。かつては事実上先行評価しかなく、評価戦略において選択肢があること自体ほとんど知られていなかっ…

Verilog HDLを掘り下げる

こちらにあるのが「スイッチを押すたびに4bitのレジスタの値を1増やして、それをLEDで表示」というVerilog HDLのコード。 module Tiny(switch, led); input switch; output [3:0] led; reg [3:0] x; always @(posedge switch) begin x = x + 1; end assign l…

何をどう学ぶか?

何をどう学ぶか? from nishio 「コーディングを支える技術」を執筆している時に考えていたことをスライドにまとめました。

昨日作ったフリップフロップの回路

おおー、Quartus IIには合成された論理回路がどんなものか、それがどうコンパイルされているのかを表示する機能がある。面白い!

AE-UM232Rで3.3V出力を出す方法

AE-UM232R(秋月のFT232RLを使ったUSB-シリアル変換基板)をFPGA(Cyclone IV)評価基盤DE0-nanoのGPIOに接続したかったのだけども、DE0-nanoのマニュアルにはこれが3.3Vだと書かれているのでArduino用の5Vのまま接続したらマズイんだろうなぁと調べてみた。しか…

Verilog HDLを使ってみた

最近執筆のためにいろいろな言語を触っていて、なんだかもうCPUの上で動く言語は結局のところ最終的には機械語の列をCPUが実行しているわけなのでどれもこれも大差ないなぁと感じるようになってきて、なんかもっと根本的に新しい体験のできる言語はないもの…

倍々ゲームのルール

「倍々ゲーム」という名前のパーティゲームがあるとしたらどんなゲームだろうと考えてみた 古今東西型ゲーム 親が数値をいう 左隣はその数値を倍にした数値をいう リズムよく言えなかった人は脱落 脱落した人の次の人が次の親 「3!」「6!」「12!」「24!…

BESOM ver.2.0を描いてみた

先日の言語処理学会第19回年次大会(NLP2013)で招待講演されていた一杉先生のBESOMですが、UStreamで配信が始まったので早速見てみました。see: BESOM(ビーソム)ブログ Ustream 配信開始「脳は計算機科学者に解明されるのを待っている」それでさっそく…

Kindle Previewerを使ってみる

いきなりKindle Previewerが起動しなくてどうしようかと思ったが/Applications/Kindle\ Previewer.app/Contents/MacOS/Kindle\ Previewerにexport JAVA_HOME=`/usr/libexec/java_home -v 1.6`を書き足したら無事起動するようになった。 ref. http://d.hatena…

ArduinoでVGA信号を読む

「VGA端子 - Wikipedia」を参考に、5, 6, 7, 8, 10ピンをGNDに、1, 2, 3ピンをそれぞれアナログピンに、13, 14ピンをデジタルピンに接続した。出力値が変動しているのを観察することができた。ハードウェアをやる時も「早すぎる最適化は諸悪の根元」を唱えな…

プログラミング学習手段としての写経について

あるブログが「写経には効果がない」という趣旨のことを書いていて「何を言ってるんだ?」と思いじっくり読んでみたら、彼の言う写経は「動くとわかってる10000行のコードを何も思考せず作業として書き写すこと」を指しているようだった。「そんなわけないじ…

ReVIEWを使って電子書籍作成を試してみた日記

ReVIEW、以前教えてもらった時にはスライドを見て、「また変なオレオレフォーマットが生まれたのか〜」とか思ってスルーしていたのだけども、今日またReVIEWが良いよと布教されたのでもう一度きちんと見てみたら、これはなかなか良い! スライド: http://kmu…

Python旅館201303日記

「あなたのユースケースではさっさとPython辞めてGoに乗り換えたほうがいい」と布教が行われるPython温泉に参加しています。あ、対象は僕じゃないけどね。 - ReVIEWの話は別エントリーにくくりだしました。ReVIEWを試してみた日記 - その他の話題goroutinePh…

Javaでヒープ領域を余らせたままOutOfMemoryErrorを出す方法

先日、こんな問題を見かけたのだけども、JavaのGCにはあまり詳しくないので答えがわからなかった。 OutOfMemoryErrorが発生しました。(中略)ヒープメモリは足りているようです。原因として何が考えられますか? http://d.hatena.ne.jp/iad_otomamay/20130318…

状態のあるコードに対するテストの自動生成 その2

前回、曖昧な仕様を元に実装して、それにBLUE*を使った自動テストを掛けた結果、仕様に「open後にopenしたらエラーになるべきかどうか」「closeした後再度openできるのかどうか」が明記されていない点について、自動テスト生成が突っ込んでくることを確認し…

状態のあるコードに対するテストの自動生成

BLUE*アルゴリズムを実装してみたので、せっかくだからテストの自動生成をやってみた。今回テスト対象にするコードの仕様は 開く、閉じる、書き込む、の3つの操作ができる 開いてないのに書き込んだり閉じたりしたらエラーになる というものそしてこちらがそ…

グラフのレコメンドのアルゴリズムについて

弊社製品に搭載されたグラフのレコメンド機能について、アルゴリズムの解説を会社のブログに書きました:「おすすめグラフ」の裏側 | Cybozu Inside Out | サイボウズエンジニアのブログ。数式を出さずになるべくわかりやすく解説したつもりです。需要があれ…

Squeakをかじる その4

前回(その3)、Traitの挙動をSqueakのGUIを使わずに試すところまでやりました。その時に動いたコードがこちら:https://github.com/nishio/learn_language/blob/master/squeak/test_trait.st今回は、そのトレイトを複数にして、2つあわせてクラスからusesでき…