サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
買ってよかったもの
lambdasakura.hatenablog.com
ちょっと一念発起して機械学習とか統計の勉強をしてみたのでその時の勉強に使った本とか の記録です。 とりあえずこの勉強で以下のような状態には辿りつけました 統計の基礎の把握 平均、分散、標本平均、標本分散などの理解 回帰分析の基本を理解 主成分分析 機械学習の基本的な概念は把握している PRMLを読んで大体やってることは分かる程度の知識 簡単な識別器の動作原理の把握(パーセプトロン、ナイーブベイズなど) クラスタリング手法の把握(階層的クラスタリング,分割最適化クラスタリング) 自然言語処理の基礎把握(N-gram,TF-IDFなどの文書の素性) これから勉強するものとしては以下のものが残っているような状態です SVMの動作原理 単語の品詞分類など 協調フィルタリング手法 などなどです。 まだ知りたいことは大量にあるので適宜勉強していきます。 モチベーション そもそもなんで勉強するのか? 最
自宅でEvernoteのようなメモ管理システムを構築してみました。 そのバックエンドとしてCommonLispを採用したので記録も兼ねて記事にしておきます。 ソースはgithubで公開してます。 動作している画面はこんな感じです。 開発動機 外部のサービスに依存していないメモ管理システムが欲しいというのが開発動機です。 Evernoteなどのクラウドシステムにはプライベートな情報を記述しておきたくないです。 個人用途なので以下の機能はばっさり切り捨てています 認証システム タグ付けシステム リマインダ それぞれの理由としては、 認証システム Apacheなどで認証してもらえば十分である。: タグ付け 知識を蓄えておくためのものではないのでタグ付けが必要になるほどの大量のメモは取らない。: リマインダ タスク管理システムやスケジューラではない。: と言った感じです。 開発環境 CommonL
自分はバージョン管理システムとしてgitを利用してます。 プロジェクトで採用しているバージョン管理システムがSubversionの場合でもgit-svnで連携して生活してます。 今関わっているプロジェクトのsubversion上の構成がgit-svnにとって扱いづらいものが採用されていて、それの対処方法についてまとめておきます。 前提のプロジェクト構成 現在関わっているプロジェクトのバージョン管理システムでは以下のようなブランチ構成になっています。 branches/A/subA1 branches/A/subA2 branches/A/subA3 branches/B/subB1 branches/B/subB2 branches/B/subB3 branches/C/subC1/subsubC1-2 branches/C/subC1/subsubC1-2 branches/C/subC
emacs + gitの環境 最近gitを使うときコマンドラインから使うのは億劫になってきたのでGUIに逃げようかと 思ったり色々試していたのですが、結局Emacsからコミットコメントや操作も出来たほうが 便利という結論に至ったので、色々elispを物色していました。 Emacsとgit連携を実現するプラグインの中にmagit(https://github.com/magit/magit) というものがあります。googleしてみると割りと利用者も多そうで良さげで、実際 Macで試してみて使用感も問題なく良い感じだと思っていました。 遅すぎワロタ しかし、Windowsで動作させてみるとその動作速度に愕然としました...。 環境にもよるのだと思いますが、git statusコマンドを実行するmagit-statusの実行に 10秒程度かかってしまいました。そのあとgit addに相当する操
また更新滞ってしまいました...。なかなか長続きしませんね。 久しぶりに日記のネタが浮かんだので、メモがてら書きます。 ゲームを作っているとコルーチンが欲しくなることが多々あります。例えば、敵の行動が「飛行状態から通常攻撃をして着地から必殺技を出す」という連携攻撃を考えると、普通に状態遷移でやると、 飛行状態 通常攻撃 着地 必殺技 こんな状態を考える必要があるのではないでしょうか?そしてStateパターンなどを使って実装している場合には、このすべての状態に対してクラス定義をしたり、関数定義をしたりする必要があります。 コルーチンを使うとこういう時に便利です。コルーチンは、「関数を途中まで実行して、次に同じ関数を呼んだ時には前回の続きから実行する」というものです。pythonのジェネレータとかで同様のことができますね。 で、common lispでそれを実現するのはcl-contでできるの
プログラミングしていると英語の単語が思いつかなくて悩むとか結構あります。 いちいちブラウザを起動して検索しても良いのですが、検索が頻繁になると面倒くさいです。 そこで、ターミナルからさっくり検索できれば手軽に調べられて捗るかなと思ってpythonでalcを検索するプログラムを作成してみました。 せっかくなのでgithubで公開します。ここ。 使い方はこんな感じ $ python alc.py --help Usage: alc.py [options] word_for_search Options: -h, --help show this help message and exit -e, --example show examples.実際に実行してみた結果。 testという単語をalcで検索した結果を標準出力に出力します。 $ python alc.py test test 【名】
最近はやりのnodeで遊んで見ました。 とりあえず、よく見るexpressを使ってみようかと思います。nodeとnpmはインストールされているとして以下のコマンドでexpressをインストール。ついでにexpressがテンプレートエンジンとして利用するjadeのインストールもここで一緒にしてしまいます。 npm install express npm install jade # expressの標準の動作に必要なのでこれもインストール。 これで、expressが使えるようになります。 express TestProject create : TestProject create : TestProject/package.json create : TestProject/app.js create : TestProject/public create : TestProject/pu
最近nodejsで遊んでるのですが、nodejs単体だと面倒な事も多いのでライブラリを色々調べてみました。今回はそのまとめです。 よく見るもの 世間でよく使われてそうで、基本的なものを並べてみます。 node-dev スクリプトが更新されたら、自動的に再起動してくれるライブラリです。 node-inspector chromeとかをnodejsのデバッガとして利用可能にするライブラリです。 express 世間でよく見るフレームワークです。便利。Webやるなら必須な印象です。 socket.io websocketで遊ぶならこれです。。 connect expressも利用しているWebフレームワーク。サーバとか作る機能があるみたいです。 コールバックを何とかする系 nodeはシングルスレッドにもかかわらずマルチスレッドで動作しているかのように見せるため、逐次処理しようとしても想定と違う動
前回からだいぶ間が開いてますが、やっと解析の方法をまとめることができそうなのでまとめます。目標は「clangのIndexerを使ってコードの相互参照の情報を取得する」です。 Indexerを作る IndexerにTranslationUnitを複数個渡していく IndexerからAnalyzerを作成 Analyzerで参照の情報を取得 結論から言うと、前回予想したこの手順で問題ありませんでした。 手順の上で大事なところはTranslationUnitを作成する方法です。他の手順はインスタンスを作成すれば良いので、変数宣言さえ出来れば問題ないです。 TranslationUnitの準備 まず、clang::idx::TranslationUnit を作成したいです。しかし、このクラスは仮想クラスです、なので継承してインスタンス化が可能なクラスを定義する必要があります。 #pragma on
やっとインターネットが繋がったので各種環境の更新をしててboostの更新とかも行ったのですが、その時にどうやらboost::testが使えなくなっていたのでどういうことなのか調べました...。 テストの例として、Let's boostにあったテストのコード(下記)を実行してみました。 #include <vector> #include <boost/test/included/unit_test.hpp> using namespace std; // // STLのvectorクラステンプレートのテストコードを書いてみました。 // BOOST_AUTO_TEST_CASE( push_back_test ) { vector<int> v; BOOST_CHECK( v.empty() ); BOOST_CHECK_EQUAL( v.size(), 0 ); v.push_back(
備忘録的に吸闘紀で採用している状態遷移マシンの設計と実装について書いておきます。 ゲームに必要な状態遷移マシン ゲームに使える状態遷移マシン。そこまで複雑な状態遷移マシンは必要とはなりません。 簡単に要件をまとめておきます。 まず、各遷移する状態を表す状態は以下の要件があれば十分です 各状態は特定のタイミングで指定した関数を実行する 各状態が定めている関数の引数の数や意味はそれぞれに異なる可能性がある 次に、上記の状態を管理し、遷移を適切に処理する状態遷移マシンクラスの要件です。 状態遷移マシンは状態を2種類もつ 各要件の詳細 各状態は特定のタイミングで関数を実行する 以下の3つのタイミングで、各状態ごとに定義されている関数を実行する必要があります。 状態に遷移する時に実行する関数(enter) 状態の更新関数(update) 次状態に遷移する時に実行する関数(leave) 各状態が定めて
Lispの実装(インタプリタ/コンパイラ)には複数の実装が存在しています。ゲームの開発には以下の2種類がお薦めです。 SBCL CLISP SBCLはユーザのシェアが大きい処理系です。特徴としては速度が早いのが特徴です。 CLISPはユーザのシェアがそこそこ大きく移植性に優れている処理系です。これはCLISPは実行形態として仮想マシンを利用して実行されるから高い移植性を確保できているのだと思われます。 なお、シェアなどの情報は(http://xach.livejournal.com/271794.html)を参考にしました。 この2種類以外にもLisp処理系自体の選択肢は多数あります。しかし、以下の事項を考慮し2種類に絞っています。 lispbuilder-sdlが簡単&無料で利用できるか (とりあえず)64bit Windowsでも動作するか ノウハウが簡単に得られるか? それぞれの項目
自分のためにどうしてゲーム開発にLispを選んでいるのかというのをまとめておこうと思ったのでまとめてみます。 前提 自分の場合であるので、他のひとに聞くと全然違う意見が返ってくると思います。 前提としてゲーム開発向けであることにも注意してください。一般のプログラムの開発スタイルとは大分かけ離れてると思います。 自分がLispを選択した理由 自分の場合、Lispを選択した理由は「開発速度」 この一点のみです。他に利点は無いと言い切れると思います。多くのLisp推奨の理由をまとめているものでは、Lispの実行速度が速いとか色々あるかと思います。ですが自分の場合には開発速度だけです。 開発速度とは 自分の中で開発速度は「作り始めてプロトタイプレベルで良いので完成するまでの速度」と定義します。これは、ゲームの場合だとプロトタイプが出来さえすればあとはどうにでもなる事が多いからです。 ゲームだと要求
前回のmulti_indexの話の続きです。 multi_indexを作ってみる! ここでは3つのインデックスをもつmulti_indexを作ってみます。 ちょっと複雑というか、長いコードなのでびっくりするかもしれませんが 落ち着いて読めば大丈夫です。 typedef multi_index_container< Charactor, indexed_by< // 挿入順アクセス sequenced<>, // Charactor::operatro<順でアクセス ordered_unique<identity<Charactor> >, // Charactor::nameの順番 ordered_non_unique<member<Charactor,std::string,&Charactor::name> > > > charactor_set; 単なるtypedef文です。 typ
iPhoneにはメールアドレスがたくさんあって分かりづらい! というわけで、簡単にまとめて見ます。 何種類メールアドレスがあるか? iPhoneには3種類メールアドレスがあります ユーザ名@softbank.ne.jp ユーザ名@i.softbank.jp 電話番号 3GSを買った直後3種類もあるので混乱しました。 重要なポイント iPhoneを使っている側は、基本的にパケット定額なのですが、メールを受信する相手は そうでない可能性があります。特にソフトバンク同士でホワイトプラン同士だから、 「完全にメールは無料だと思って送受信していたら、相手がパケ死してしまった」 というのは避けなければなりません。 また、どのメールアドレスをどの機能(SMS,MMS,メールアプリ)で使えるかということも異なります。 この3種類の機能がどう違うのかというのも分かりづらいポイントになってます。 メールの機能
このページを最初にブックマークしてみませんか?
『さくらんぼのlambda日記』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く