このブログを検索

2013年8月20日火曜日

[Weka][Java]Wekaによるデータマイニング(インスタンスの作成)

今回はWekaをJavaで動かす際にはまった点に関してまとめます.
なお,WekaのインストールやJavaでの実行までは他ブログ様においていろいろ述べられておりますので割愛しまして,簡単なサンプル実行の際に戸惑ったことをまとめます.

私はソースの書き方に関してこちらのブログ様を参照させていただきました. ただ,単純にコピペでは動作せず...(Wekaのバージョンの関係?)戸惑ったのでまずメモします.はまった点は Instanceのあたりでエラーとなり,そもそもビルドできないというものです.

これは何処かの英語の記事で書かれていた通り
 ★InstanceはInterfaceなので実装されたInstanceから(Javaの)インスタンスを生成する必要がある.すなわちDenseInstanceクラスをつかえとのことでした.


従って上記コードを


にすることで解決します.


ただ,これだけではまた後日エラーが発生してしまいました.今度は実行時エラーでsetValueにてjava.lang.IndexOutOfBoundsExceptionが発生するというものでした.ソースを追いかけてみると,setValue(Attribute, String)等において,Attributeのm_Indexの値から配列を参照しており,AttributeのコンストラクタにおいてIndexを指定しない場合-1に自動でなるので,OutOfBoundsと.
ですので,まずInstancesを生成し,AttributesにIndexを付番しておくことで改善されました.以下コードです.

以上.

2013年6月20日木曜日

[Java3d]Windows7-64bit環境下でのJava3d実行

掲題の通りWindows7-64bit環境下でのJava3d実行にはまりました.

 過去のJava3dプログラムを現在の環境で動かそうとしたところ
まずは下記エラーが発生

Java 3D ERROR : OpenGL 1.2 or better is required

なんかこことか 色々さまよう果てに

OpenGLを使ったレンダリングだからエラーになるといったことが判明し

実行引数に「-Dj3d.rend=d3d」を追記すれば直るとの事だったが直らない...

今度は j3dcore-d3d.dllがないよ的なエラー.たしかにJava3d配下にそんな

もんはない・・・こことか色々参考にしたところ32bitと同じソースだから自分で

コンパイルしたとかどうとか.でも今じゃそんなファイル見当たらない....



こんな感じで数時間はまってましたが,結論は至ってシンプルでした.


【結論】

32bit版のJREで32bit版のJava3dを動かす.


JREを32bit版でもインストールし,プロジェクトの実行構成を変えたところ

普通に動作しました.なんなんだよっって感じでした.

2013年6月11日火曜日

[GAE]javax.jdo.JDOFatalUserException: Illegal argument

GAEでちょいとはまったのでメモしておきます.

DataStoreにデータをぶち込む処理で以下のようなエラーが出ました.



とあるデータは保存できるのに,とあるデータは保存できない...

似たようなエラーとして,次のようなサイトも見ましたがダメ.

エンティティグループが多すぎる(xawa雑記帳様)

一つのトランザクションで連続してデータを入れる(適当えんじにあ様)

バージョン違い(いろきゅう.jp様)


なんだか1MByte(程度)以上のデータになると発生するような雰囲気.

同じデータを分割して送信してみたところ正常に処理が完了しました.
(送信前に分割して複数回送信)

ださい解決策ですが参考までに.

※まとめて送信してmakePersistent前でばらしてもよいのかも?

2013年5月13日月曜日

[英語][学習] 自身の英語学習の経過~その1~

私の英語に関する記録をまとめておくことで,後で役に立つかと思い,簡単にまとめます.

個人情報 :24歳 ♂
TOEIC点数 :310点...OTL
わかる文法:中学レベルなら
わかる単語:中学レベルなら
学習意欲 :中学時 :受験勉強として最低限をやっていた.
      高校以降:皆無(赤点でなければよい)

そんな私がこの度英語を習得しなければならない状況に陥ったため英語学習を始めました.
その履歴をこれから記載してまいりたいと思います.

記載の形式は主に利用した学習方法とその効果を私の主観でまとめてまいります.

1.キクタンBASIC4000(単語)
 20歳の時に受験勉強で利用.
【効果   】★★☆☆☆
【継続し易さ】★★☆☆☆
【特徴   】簡単な単語~最後は難しい単語まで一通り4000語.
       毎日16語の区切りがあってきちんとできればやりやすいかも.
       レベル8まで英→和は完璧にしたはずがしばらく放置すると
       知識は全て消滅した.1日必ず16単語は結構キツイ.
       聞きやすいCDもついていたがすぐ飽きた.聞きながら続く人いるのか?

2.データベース3000(単語)
 もらい物.あまりやりこんでいないので評価は当てにならない.
【効果   】★★???
【継続し易さ】★????
【特徴   】系統ごとのくくりで覚えていく感じだった気がする.
       個人的には系統ごとは覚えにくい.
       キクタンもそうだったけど,単語帳って続けるの超しんどい.

3.スピードラーニング~24巻(リスニング)
 本格的にやらなきゃということで,ダメもとで購入.
【効果   】★☆☆☆☆
【継続し易さ】★★★★☆
【特徴   】本当に聞くだけで半年くらいやってみた.だんだん飽きる.
       ただし,私の能力値では聞いても全然理解できないから,
       スキルの向上にはあまりつながらないと感じた.基礎力をつけて
       出直します.

4.速読英単語 必修編(単語)
 本格的にやらなきゃということで,使いやすそうな単語帳を本屋で選別.
【効果   】★★★☆☆
【継続し易さ】★★☆☆☆
【特徴   】長文→単語の流れで1章が形成されていて,単語→長文で学習すると
       意外と長文が読める.両方の練習になったことは有用かもしれない.
       ただやはり単語帳は飽きやすい.20章で脱落.
       問題はやはり完璧に覚えられない(実際にその単語を利用できない)
       ことだと思う.

5.りぴたん(単語)
 Androidアプリで4択形式の単語.
【効果   】★★★??
【継続し易さ】★★★★☆
【特徴   】忘却曲線を参考にした単語記憶システムP-Study-Systemを用いているらしい.
       研究的にも非常に興味深かったので利用.その日にどれだけやったかという歴が
       意外にもやらなきゃと思わせてくれる.英→和を今やっているが,4択ではなく
       頭で考えて思いつくかどうかで勉強している.意外と続く.

6.英語リーディング教本(文法)
 こちらを参考に一度全部素直にやり遂げようと購入.
【効果   】★★★★☆
【継続し易さ】★★★☆☆
【特徴   】英語文法を徹底して記述してある.SVOC?ってレベルの私ですが,
       しっかりと読み込めば理解していけます.徹底して書いてありますが
       おそらく必要最低限で文法をマスターできるように,意外と全体は
       少なく感じました.(現在半分完了)
       読むほどちゃんと文法が理解できるから,ただひたすら聞くスピード
       ラーニングや長文系よりも,私には前提の知識が必要であったことを
       実感.知識がついていくのは中々楽しいと思えるようになりました.


現在のところここまで.TOEICは秋ごろに再受験予定.目標は500点(190点アップは無理か...?)
前回のTOEICからやったのは4~6です.
6の効果が個人的に期待できそうなので,こちら に素直に従っていくのは継続していこうかと思います.

お勧めは,TOEIC ~400点なら6を徹底してから他をしたほうがいいと思う.
やっぱり文法がわかると,英語が少しだけ楽しくなる.
継続できるのが大事だと...思う!



悲しいのはこの記録をつけて,後で見た時にスコアがあがってなかった時...がんばろう...

2013年4月9日火曜日

[GAE][PHP4G][SQL4G]SQL4GをGAE上で動かすまで

GAE上でデータ扱うのが面倒だったので,PHP+SQLでやりたいなと思ったところ「PHP4G」と「SQL4G」にたどり着きました.

基本的に下記記事の通りにすればOKですが,はまったところをメモとして記載し,2013年4月9日現在の最速と思われるサンプル実行までの手順をまとめておこうかと思います.

http://www.atmarkit.co.jp/fcoding/articles/gaephp/02/gaephp02a.html

1.GAE実行環境を準備する.
   (これは大前提なので,ほかの記事参考にしてください.)

2.GAEプロジェクトを作成する.

3. リトルソフト様よりPHP4GとSQL4GをDLする.

4.PHP4Gのwar配下を「appengine-web.xml」以外全部GAEのプロジェクトのwar配下にコピーする.(eclipseにドラッグドロップでOK)

5.「appengine-web.xml」はマージする.


  こんな感じなので,作成したプロジェクト側でも下記修正を加え,マージする.
 ★8~12行目:同様にしてコメントアウトにする.
 ★14~27行目:追記

6. プロジェクト右クリック→ビルド・パス→ビルド・パスの構成より「ライブラリー」にjarファイルを追加します.追加するファイルはwar/WEB-INF/lib/より下記の通り.

commons-codec-1.4.jar
commons-fileupload-1.2.1.jar
jetty-6.1.17.jar
jetty-util-6.1.17.jar
log4j-1.2.15.jar
lsj-1.3.jar
lucene-core-2.4.1.jar
org.osgi.core-1.2.0.jar
php4g.jar
quercus.jar
resin-util.jar
script-10.jar
servlet-api-2.4.jar
slf4j-api-1.5.0.jar
sql4g.jar
velocity-1.6.2-dep.jar

7.この状態でも,eclipse上でのテスト実行であれば動きます.
 >http://localhost:8888/sql4gadmin

8.ただしこのままだとGAE上では下記サイトでも記載の通り
  「Unable to find resource ‘sql4gadmin/MainPage.html’」がでます.
 >http://blog.aqn.jp/2011/03/gaephpsql4g/
  上記サイトの記載を参考におそらく最短でエラー回避の方法を記載しますのでご参考ください.

9.SQL4Gのプロジェクトファイルよりwar/WEB-INF/web.xmlを参照し,下記記載を作成したプロジェクトのweb.xmlに追記する.


10.さらに下記の通りコメントアウトする.(これやる必要あるのかは謎ですが)


以上の流れでPHP4GとSQL4Gのサンプルは動作するかと思います.
意外とはまる箇所があったので記載しておきました.

※地味に@ITにしたがっているだけだとはまりました...(僕だけ?)
 基本的にはweb.xmlとappengine-web.xmlの記載にだけ注意を払えば
 あとは全部コピーとビルド・パスだけで動くはずです.

2013年1月3日木曜日

[Android]DrawableをID指定で読み込んだ時のResources$NotFoundException

掲題の件に関してドハマりしたので記録として残しておきます.
原因はわかってしまえばアホなお話でした.


【発生事象】
ImageViewにDrawableの画像を指定する際にどの画像を指定しても

Caused by: android.content.res.Resources$NotFoundException: File res/drawable-hdpi/ic_launcher.png from drawable resource ID #0x7f020001

のようなエラーが発生し画像が表示されない.



【原因】
assets内のファイルを読み書きした際にAssetsManagerをclose()していたため.


AssetsManagerを意図的にclose()すると,画像リソースを拾う際にも影響が出る模様です.
おそらくこれは利用者が意図してclose()しなくてもよいものなのだと解釈しておきます...

2012年9月17日月曜日

[Android]ProcessとTaskに関して

Androidにおいて、現在表示されているアプリを取得したいと思い、Processに関して調べました。

結論から言うと、getRunningTasks(int n)を使います。

調べてみたところ、プロセス関連では、

ActivityManagerからgetRunningTasks(int)を使うものと

getRunningAppProcesses()を使うものがあるということです。

getRunningTasks(int)は指定数を最大数として、runningのタスクを取得することができます。

詳細説明は こちら のブログより参考にさせていただきました。

これでバックグラウンドにて動いているものも含め、Activityが取得できます。

(SH-12CとGalaxyS2で試したところ、ホーム画面も検出する模様。)

 これで先頭の物が現在表示されているアプリである。





ちなみにgetRunningAppProcesses()は現在動いているProcessの一覧を取得しているものと思われます。

取得できる項目は リファレンス 参照。

気になる項目としては、「pid」「processName」「importance」があります。

pid:プロセスの固有ID
processName:プロセス名
importance:状態

特にimportanceはそのプロセスがどのような状態かを表し、なかなか有用です。

たとえばimportanceが

100:動作中のアプリケーション
300:動作中のサービス
400:バックグラウンドにいるアプリケーション

みたいな感じで、状態を区別できます。

あとは英語ができないのでよくわかりません。

サービスも含めて動作中のProcess等詳細に調べたい場合はこちらのが有用でしょう。




最後に、 サービスで動作し、接近センサーをトリガーとして、プロセスの出力を確認する

アプリを創りました。どんなものが出力されるか観察できます。

観測データはSDカード内部にCSVで保存されます。

EXCELで適当にさばいてください。

ソースコードは こちら より。

ソースのみlayoutファイルは含みません。

サービスの起動停止を行うonClickのついたボタンを適当に2つおいてください。