プログラミング

プログラミング≠コーディング

「こういうソフトを作ってほしい」という要求に応えるのは難しい。仕様が確定していないからだ。 「こういう漫画を描いてほしい」とネーム持参で来る人はいない。作画の他に、構成やデザインを選ぶのも漫画家の仕事だ。 相手の気持ちを満たすソフトとは何か…

audio要素を使い、その場で作った音を再生させる

JavaScriptで波をつくろう。リアルタイム波形生成&再生 - Yanagi Entertainment自分が何となくは知っている技術しか使っていないのに、新鮮に感じることを実現してしまっているのが、実に気持ちいい。これは自分でも作らずにはいられない。もう二番煎じとか…

ポケコン時代

久しぶりにポケコンを触った。シャープのPC-E650。高機能電卓としてたまに使っていたのだが、最近はその頻度も減っていた。今回は、ちょっとプログラムをロードして走らせてみた。マスターマインドや1手読み三目並べに、時間がかかる。これは遅い!遅さ以外…

必要ないとわからない概念、オブジェクト指向

以前C++のクラスというものを知ろうとしたとき、わけがわからなかった。構造体と関数で同様のことは実現できて、しかもprivate指定するとアクセスが制限される。好きこのんで機能を制限する意味がわからなかった。のちに、「隠蔽」に意味があるということを…

1手読みマスターマインド

ヒット・アンド・ブローとも呼ばれる。ここでは、ピンが8種4本の場合について扱う。出題パターンは8の4乗で4096通り、白黒のピンの情報は14通り(黒黒黒白はありえない)。解答側としては、できるだけ多くの情報を引き出すため、うまく14通りをばらけさせた…

重力シミュレータをJavaScriptで

重力シミュレータSIMD版が、ややこしい割に劇的には速くならないので、気晴らしにJavaScript版を。星の数は120、立体視用、重い人はFirefox使ってください。Cのコードがほぼ流用できるので、それほど面倒ではなかった。シンプレクティック法というのが、オイ…

速いCPUの価値は高いかもしれない

Core 2 DuoのT9600(2.80GHz)とP8700(2.53GHz)のクロック差は1割。*1 「1割?そんなの大した差じゃない、アセンブラで高速化すれば何倍も速くなるし」という考え方はある。 しかし、何の最適化もせずに、自動的に何でも1割速くなるという事象は、プログラ…

音楽プレイヤーを作りたい

TT_IMEを作ったときに、グローバルフックの使い方を覚えたので、加えてDirectShowの勉強とかをすれば、音楽プレイヤーが作れると思った。以前から、別のソフトを使用中に、プレイヤーへ切り替えずに曲を操作したいと思っていた。 DirectShowプログラミング […

メモリは遅い、キャッシュに乗せろ

MMX+ビットボードでライフゲームを書いたとき、大きなサイズでもメモリアクセスがネックにならず、意外だった。1セル当たり1/8バイトという小ささと、ビットボードゆえの演算回数の多さで、単純なMMXのコードとしては珍しくメモリネックにならなかったのだ。…

TT_IME更新

http://merom686.g1.xrea.com/soft.htmlIMEの状態をタスクトレイに表示、Google日本語入力対応。2ちゃんねるに書き込もうと思ったら規制でやんの。

Firefoxでチラつきを抑制する

(追記)このエントリで紹介した方法には致命的な弊害があるそうです。コメント欄とLatest topics > 画面の描画内容を一時的にロックしておいて、裏であれこれして最後にまとめて描画させる方法の再考 - outsider reflexを参照してください。 (追記2)こん…

ビットマップの糞仕様

ビットボードを使ったら、JavaScriptでさえあんなにライフゲームが高速になる。MMXで書いたらさぞ速いだろうと思い、書くことにした。まだMMX版は作っていないが、VC++でunsigned long(32bit)を使い、とりあえず動くものを完成させた。 以前作ったMMXのラ…

JavaScriptでライフゲームを高速化(その2)

ライフゲーム(軽量版2)前回は1つのセルに3bitを割り当て、32bit変数で10個のセルを並列処理した。3bitに縮めて工夫したつもりになっていたら、実はもっといい方法があった。ビットボード(Bitboard)を用いたライフゲームのソースコード - Tosikの雑記この記…

IME関係のメモ

IMEのon/offを切り替えたとき、uMsg:WM_IME_NOTIFY, wParam:IMN_SETOPENSTATUS。入力モードを切り替えたとき、uMsg:WM_IME_NOTIFY, wParam:IMN_SETCONVERSIONMODE。ウィンドウ(テキストボックス等も含む)が切り替わったとき、uMsg:WM_IME_SETCONTEXT。IME…

多角形の慣性モーメントをJavaScriptで

多角形実験室面積、重心、慣性モーメントをリアルタイムに表示する。作ろうと思ったのは、慣性モーメントの求め方が正しいかどうか確かめたかったから。 裏返すと面積がマイナスになるのだが、そのときの重心の動きが面白い。

JavaScriptでライフゲームを高速化

ライフゲーム(軽量版)以前書いたライフゲームは、DSi上のブラウザでも一応動いた。しかし、非常に動作が遅かったため、今回は高速化を主眼にコーディングした。複数のビットフィールドを持つ数値の並列演算というのが役に立った。以前見たときには、(勉強…

挿入ソートのやり方について

広く知られているinsertion sortのコードは駄目すぎる - やねうらお−ノーゲーム・ノーライフ以前、有名どころのソートアルゴリズムについて、比較回数とメモリコピー回数をカウントしたことがある。そのとき挿入ソートも調べたのだが、コーディングするとき…

Canvasのアルファチャンネルはデフォルトで0だ

Canvas要素でputImageDataメソッドを使おうとするも、どうやっても絵が出ない。相当長い時間が過ぎて、絵が透明だから見えないことに気付いた。 ずっと前にcanvas要素を知ったとき、ちゃんとピクセル操作のやり方を覚えて、アルファ値を255にして絵が出るコ…

「charへのポインタの配列(要素数3)」へのポインタ

声優名[タブ]作品名[タブ]キャラ名[改行] ↑このような形でキャラの数だけWikipediaからデータを抽出した。全部で74465行。このテキストデータをソートして番号を付けたい。そこで、データを全てメモリに置き、ポインタで各名前にアクセスできるようにした。…

相関係数による協調フィルタリング

二つのアニメの類似度を、声優ベクトル同士の角度で判定する方法は、ポケモンのような声優数の多い作品に若干有利な気がしていた。一致する声優がない作品同士では、常に90度になってしまうのも不満だった。今にして思えば、「各成分が0または1」という偏っ…

おジャ魔女どれみと似たアニメ(声優的な意味で)

元の声優ベクトルの方法 (追記)相関係数の方法 おジャ魔女どれみ 0 おジャ魔女どれみ 0 夢のクレヨン王国 7043 夢のクレヨン王国 7138 明日のナージャ 7198 明日のナージャ 7397 金色のガッシュ 7438 デジモンテイマーズ 7604 デジモンテイマーズ 7458 金…

プログラミングの心

「楽をするためならどんな苦労も厭わない」という格言がある。この思いを持っているかどうかでプログラマか否かの判定ができるし、自分の姿勢のずれを直すスタビライザーにもなる。 この格言の心は、元は数学から来ていると思う。数学者が、周りから「何の役…

アニメと声優は同じだった

データベースを作り、出演している声優が似ているアニメを調べようと思った。声優が300人いれば、各アニメ作品に対して300次元の声優ベクトルが定義できる。そのベクトル同士の角度が0度に近ければ似ている、90度なら似てないとするわけだ。*1 膨大なアニメ…

8年ぶりの再会

ちなみに以前は,「7行プログラミング」という2ちゃんねるのスレによく書き込んでいたのですよ。「トリッキーの1」っていうハンドル・ネームで「6行オセロ」とかを作っていて,面白かったですね。 http://itpro.nikkeibp.co.jp/article/Interview/20091104/3…

DOMContentLoadedより早く

XBLとuserContent.cssとGreasemonkey - 素人がプログラミングを勉強していたブログ試してみると、本当にDOMContentLoadedイベントよりも早く発火する。 以前pixivの中サイズの絵を大サイズのものにすり替えるコードを書いたとき、毎回すり替えが目に見えてし…

はてなアンテナのリダイレクト(?)をパスする

function addToHistory(uri){ var historyService = Components.classes["@mozilla.org/browser/nav-history-service;1"] .getService(Components.interfaces.nsINavHistoryService); var ioService = Components.classes["@mozilla.org/network/io-service;…

質を生むには量が必須

自分はアセンブラでライフゲームが書ける。書き始める前は簡単だと思っているし、完成した後も「さしたる困難はなかった」と思う。だけど、作っている最中は、つまらないバグや勘違いで時間を消費するのだろう。結局のところ、自分のアセンブラ能力の限界は…

携帯電話で長さを測る壁紙

定規壁紙メーカー(まあ方眼紙だけど)iPod touch Part22←以前ここで「たっち用の定規」(>>580)というアイデアを知った。それで、一般の画面サイズ用のものをJavaScriptで書いてみた。普通の定規は透明だけど、携帯電話は向こうが見えないので、見た目以上…

比較回数の少ないマージソート

女性声優170人ソート以前140人のをやったことがある(知らない人もいたので697回で終了)。マージソートを使っているようだった。 人間が比較を行う場合、比較回数を少なくすることが最優先となるが、それにはマージソートが適している。例えば、140個のデー…

JavaScriptライフゲームの存在意義

JavaScriptでライフゲームを書いたが、Windows用のexe形式に対するメリット/デメリットを列挙する。 Windows以外のOSを使っている人でも実行できる ダウンロード、解凍、実行ファイルをダブルクリック、の手間が要らない コーディングが少しだけ楽(ただし、…