月別アーカイブ: 2014年9月

PlayFramework+EclipseでViews.htmlエラー

いつも忘れるのでメモ

PlayFrameworkをEclipseで開発しているとこのエラーが必ず出ます

これの解決方法ですがプロジェクトのプロパティからJavaBuildPathを選択し、LibrariesタブからAddClassFolderで targetーscala-2.11ーclass_managedを追加

F5を押してリフレッシュすれば治ります

これが赤いままだとUnitテストでClassNotFoundエラーが出ます

Application.scala

index.scala.html

こんな感じでいけるかと思います

batikをPlayFrameworkで使う

batikとはSVGからPDFやPNG等へ変換するすごーく便利なJavaのライブラリです。これをPlayframeworkでWebアプリとして構築してみました

準備

batickで使用するJarファイルをダウンロードしてきます。

http://mvnrepository.com/artifact/batik

この辺りから落としてくれば十分です

batik-anim.jar

batik-svgpp.jar

batik-awt-util.jar

batik-swing.jar

batik-bridge.jar

batik-transcoder.jar

batik-codec.jar

batik-ttf2svg.jar

batik-css.jar

batik-util.jar

batik-dom.jar

batik-xml.jar

batik-ext-1.6-1.jar

batik.jar

batik-ext.jar

batik-extension.jar

batik-gui-util.jar

batik-gvt.jar

batik-parser.jar

batik-rasterizer.jar

batik-script.jar

batik-slideshow.jar

batik-squiggle.jar

batik-svg-dom.jar

batik-svggen.jar

pdf-transcoder.jar

js.jar

w3c.jar

気がついたらこれだけダウンロードしていました。全部いるのでしょうか?

今回はPDFとJPEGとPNGをパラメタで分けて出力します

Windows7 HomePremiumでRemoteDeskTopServer

Windows7 HomePremiumでRDTを使おうとした際のメモ

  • サーバ側

Windows7 Home Premium SP1

  • クライアント側

iMac OS 10.9

まず、Windows7側にパッチを当てます。この辺りを参考にConcurrent_RDP_Patcher.zipをダウンロードし、パッチを当てるだけ。チェックボックスは2つとも外してももんだありません。

http://blog.livedoor.jp/rappazubon/archives/51943235.html

http://orebibou.com/2014/05/windows-7-home-premium%E3%81%A7%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%88%E3%83%87%E3%82%B9%E3%82%AF%E3%83%88%E3%83%83%E3%83%97%E3%82%92%E6%9C%89%E5%8A%B9%E5%8C%96%E3%81%99%E3%82%8B/

次にはまったのがMac側。最初↓のMicrosoftRemoteDesktopを使用し接続しようとしてもエラー。

https://itunes.apple.com/jp/app/microsoft-remote-desktop/id715768417?mt=12

mac側からnmapでWindowsのポートを調べても特に問題なく3389ポートは開いている。

実はこのMac側のクライアントが悪かったようです。こちら↓のRemoteDesktopConnectionを使用すると問題なくつながります。

http://www.microsoft.com/ja-jp/download/details.aspx?id=18140

参考まで

eclipseでTomcatの設定

いつも忘れてしまうのでメモ

環境

MacOS10.9
tomcat7

brew install tomcat7

java

oracle jdkをインストールし、シンボリックリンク

$ which java

/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home//bin/java

eclipse kepler

インストール

EclipseのClassicをインストールするとサーバランタイムがインストールされずに、TOMCATアプリなど作成する際にデバッグに困ってしまいます。

サーバランタイムをインストールするには、予めBrewでTomcatをインストールした後に、ヘルプのinstall new softwareから

http://download.eclipse.org/releases/kepler

を選択し、いかの2つのプラグインをインストールします。

  • JST Server Adapters
  • JST Server Adapters Extensions

その後、環境設定ーServerーRuntimeEnvironmentsのaddでtomcatを追加するのですが、この際にディレクトリに以下を入力します

/usr/local/Cellar/tomcat7/7.0.55/libexec

これでサーバランタイムが設定可能となります。

この辺りの内容はこちらから引用しています

http://stackoverflow.com/questions/2000078/apache-tomcat-not-showing-in-eclipse-server-runtime-environments

http://stackoverflow.com/questions/17745834/unknown-version-of-tomcat-was-specified-with-tomcat-7-0-42

SQLiteにユーザ定義関数を追加しTOMCAT+DBCPで利用する

ユーザ定義関数の追加

SQLiteにはストアドプロシージャはなく、その代わりにユーザ定義関数を追加し、同様の処理を行うようにできます。

org.sqlite.Functionを継承したクラスを作成し、その中のxFuncをオーバラードしたメソッで実装する関数を定義しresultで戻します。

今回の場合には文字列で定義した数字を足しあわせて返すという関数を定義しました。

これを利用する際にはJDBCのコネクションに対しFunction.createでバインドしてやります

バインドする際にSQL文内で呼ぶ関数名を同時に定義します。その後は通常のJDBCの処理と同じです。

DBCPで使う

DBCPで使うサンプルです

  • context.xml
  • TestServlet.java

ここでのポイントはDBCPのコネクションプールからJDBCのコネクションを取得する際に実際のコネクションを取得してやる必要があります。

この部分です。詳細は↓あたりを参考にしてください。

http://stackoverflow.com/questions/6489514/apache-commons-dbcp-connection-object-problem-thread-classcastexception-in-org

http://www.ksky.ne.jp/~snbhsmt/commons-dbcp.html

http://grokbase.com/t/tomcat/users/052spdat5s/tomcat-5-5-7-using-builtin-jdbc-connection-pool-cant-access-real-connection-accesstounderlyingconnectionallowed-true

なおJDBCはsqlite-jdbc-3.7.2.jarではなくsqlite-jdbc-3.8.5-pre1.jarを使用してください。Function.create内のinstanceofでconnectionが実コネクションかどうか判定しているのですが、JDBCが古いほうだと何故かここでエラーになってしまいます。

こんな感じでSQLite+DBCPでユーザ定義関数が追加できます。参考になれば幸いです

20140916追記

DelegateingConnectionを取得した際にコネクションを閉じ忘れるとTOMCAT起動時にエラーというか無限ループに陥ります。注意

Yahooファイナンスの株価を取得してみる その2

前回、株価のヒストリカルデータを銘柄コード別にファイルに落とすところまでできました。このままでは使いづらいのでリレーショナルDBに入れることにします。

ただ、この動作しているマシンがRaspberryPIなので、データベースを入れるというような暴挙はできません。そこで、組み込みきらしくSQLiteを使うことにします。

  • schema
  • hist_import.py
  • hist_imprt.sh

これで動かしてみたのですがちょっとおそいです。というか丸一日動かして1000銘柄も取り込めていない。。。

後ほどチューニングすることにします