blog2013年2月26日火曜日Octaveメモ(3)やばい、熱中しすぎて夜更かししてしまった。2次元空間に点をプロットする方法をメモっときます。10);とすると、のようなグラフが表示されます。gnuplotですね。機械学習Octaveメモ(2)ファイルに定義した関数をロードして使用する方法。x;endfunction;addpath関数を使って関数ファイルが格納されているディレクトリにパスを通す。今回の例では~/programming/octaveに上の2つのファイルがあるとする。Octaveをインストールした。programmingのソルバーにCGALを使う予定だったが、OctaveにもQPのソルバーが入ってるようなのでこちらを使うことにした。学生時代に使っていたMATLABと似ているのでOctaveの方が個人的には使いやすい。universeのレポジトリに含まれているのでapt-getで。octaveQPを解いてみるとりあえず手計算でも解ける簡単な問題から。ソルバーの使い方はここ。0.66667いいですねぇ、使いやすいです。数字iと数字jが戦争状態にある場合、iとjは隣接することはできない。iとjの間に1つしか別の数字がないという状況も許されない。動的計画法&行列の累乗の計算(繰返二乗法)。zeroの扱いがややこしかった。Cup2013年2月17日日曜日トランザクション内のselectについて勉強不足のため間違ったことを書いているかもしれません。間違いがあれば、ご指摘いただければと思います。それでは本題に入ります。InnoDB)でトランザクションを使っていて気付いたこと。updateを必ずつけないといけない。readと呼ばれる現象が発生することがあります。400000のようなテーブルがあったとします。000円だったとします。トランザクションAは、まだcommitされていない状態とします。トランザクションAはコミットされていないので、他のトランザクションから見ると、預金額は0円ではなく1,000円となります。500円がid=1の口座の預金額になりおかしなことになってしまいます。(トランザクションAの処理が無かったことになる。(↑この部分は自信がありません。readは発生しない[参照1]。update文を使います。updateを付けると、トランザクションAがcommit/rollbackされるまでデータは取得されません。iBATIS(1)iBATISを使ってみました。設定Mavenを使ってjarファイルを取得しました。データベースはMySQLを使用します。</dependency></dependencies>サンプル基本的なCRUD属性の処理を一通り試してみました。iBATISの設定ファイルです。/></sqlMapConfig>DBの設定とマッピングファイルのパスを指定します。次に、マッピングファイルです。</delete></sqlMap>おっと、忘れてました。データベースには以下のテーブルを作成しておきます。Beanを作成します。}}最後に、メインクラスです。}}シンプルで使いやすいですね。dependenciesを含める前回悩んでいたことが解決したので、メモしておきます。mavenのライブラリ管理pom.xmlに使用したいライブラリおよびバージョンを記述すると、自動的にライブラリをダウンロードしクラスパスの設定をしてくれます。依存するライブラリも自動的にダウンロードしてくれます。クラスファイルとソースコードの紐付けまで自動でやってくれます。Dependenciesこれだけです。Struts(9)ついにここまで来たー!ようやくStruts1とSpringを連携させることが出来ました。設定mavenで追加したライブラリをtomcatのクラスローダに認識させる方法が分からずに手作業でやりました。(プラグイン使うとうまくクラスパスの設定ができるようなので、後で調べたいと思います。)以下の2つのjarファイルをWEB-INF/libに追加します。spring.jarspring-webmvc-struts.jarこれだけです。サンプル簡単なサンプルを書きました。インスタンスの生成する処理も、DIコンテナからBeanを取得する処理も、ソースコード上にはありません。インスタンスの生成はDIコンテナが、Beanの取得はDelegatingActionProxyが行います。DelegatingActionProxyの内部処理は、単純ですが多態性と移譲をうまく使っていてなかなかおもしろいです。それではサンプルを見ていきましょう。strutsの設定ファイル。ポイントは、plug-inタグでspringのプラグインをインポートするところです。あと/hogeへのリクエストをDelegatingActionProxyが受けているところも要チェック。</plug-in></struts-config>次に、Springの設定ファイル。これはいつもどおりに書けばOKです。/></beans>次にコントローラークラス。リクエストを処理するパスと同じ名前のBean名をつけます。}}最後に、サービスクラス。コントローラーから@Autowiredで注入される機能です。}}これで、MVCフレームワークとDI×AOPフレームワークの連携ができました。次の目標はORMとの連携です。(4)昨日のAOPをアノテーションで書いてみました。最近は、xml→アノテーションってのが主流なんですかね。Tomcatも7.0からアノテーションによるサーブレット、フィルター、リスナーの定義ができるようになってますし。それではサンプルを説明していきます。ここにはAOPの定義は書かずに、aop:aspectj-autoproxyというタグを記述しておきます。/></beans>次に、アドバイスクラス。@ComponentでBean定義します。@Aspectを付与することでこのクラスをアドバイスクラスとして使うことをSpringに教えてあげます。Adviceとして動作させることができます。@Afterの中の"PointCutDefine.allComponentDir()"ですが、これはポイントカットが定義されているメソッドを指します。ややこしいですが、ポイントカットそのものではなく、ポイントカットが定義されているメソッドを指します。}}最後に、ポイントカットを定義しているクラスです。ポイントカットの定義は各アドバイスの中で個別に定義することもできますが、ポイントカット定義のためのクラスを作成し共通で使用されるポイントカットを一ヶ所にまとめておくとスッキリすると思います。}あくまでも個人的な意見ですが、アノテーション使った方が美しいですね。Postsmemset()とmemcpy()恥ずかしながら、Cのmemset()とmemcpy()を今まで使ったことがなかった。みたいな話を聞いたことがあったので、「あーじゃ要らない機能なんだー。editorialに投稿された解答がmems...便利なPythonライブラリ(5)retryデコレータつけるだけで、リトライしてくれるという便利ライブラリ。失敗するかもしれない不安定な関数に@retryをつけると成功するまで実行してくれる。ret...S3のファイルを一般公開するAWSのS3のファイルを一般公開する方法について説明します。2つの場合に分けて説明します。本番中ゴリ押し解を思いつくには思いついたのだが、C++でマルチスレッドの処理を書いたことが無くて、ごにょごにょやってるうちにタイムアップとなってしまった。C++...C#入門(9)Action、Func、Predicateの違いAction、Func、Predicateについて簡単に整理しておく。メソッドへのDelegate。メソッドへのDelegate。スライド区間に対するクエリ処理の種類とそれに対するアルゴリズムをいくつか紹介します。「スライド区間」の定義ですが、窓関数のようなものを想像してください。まではコンピュータの力を使って正多面体をt色以下で塗るパターン数を数えていました。今回は手計算で計算してみようと思います。そのためにはまず回転を表す対称群をうまく列挙するために回転軸について考える必要があります。見聞きする木の用語を整理しておく。節点vから最も離れた節点をwとする。w)の長さをvの離心数と呼ぶ。記号で表すときは、ε(v)と書く。使って遊んでみました。いった便利な機能を提供してくれるテストフレームワークです。repor...キャッシュヒット率の測定perfというツールを使ってキャッシュヒット率を測定してみた。キャッシュの影響なんてたかが知れていると甘くみていたら、痛い目るので要注意。知らない用語がちらほらあったので、簡単にまとめておく。Struts(8)JavaでCookie使うときの注意CGAL入れてみた。