2017年7月30日日曜日

tomcatの起動を速く ~groupsession等のカスタマイズ~

グループセッションをeclipseでカスタマイズしているが、メモリを結構食うので、tomcatの起動が遅い。そして、あちこち、設定をいじっているうちに、うまく起動しなくなることもある。ここらへんで、設定上注意することを覚書として、再度まとめてみた。

1コンパイルでバージョンが合わないというメッセージが出る場合は、 javaはjava7あたりに、tomcatはtomcat7あたりに統一するといいようだ。

2 tomcatの起動が遅いのは、メモリ設定を変えることでかなり改善するようだ。
ウインドウ>設定>Tomcat >jvm設定>JVMパラメータへの追加で変えてみた。ネットでは、eclipse.iniという情報もあったが。念のため、両方とも増やしてみたら、だいぶ快適になる。

3 外部のMysqlとデータのやりとりするため、ドライバをどこに置くか迷ったが、WEB-INF/libに置いてみた。

※他に、eclipseに詳しい人にとってはたぶん、よく知っていることなのだろうけど、デバッグのタブで、実行中のセッションを手動でいったんすべて終了させて、Tomcatを起動させたほうが、結果的に速く起動するようだ。

2017年7月29日土曜日

gsession バッチ処理

サンプルを参考にコンパイルしてみるがエラーが発生
importで
import jp.groupsession.v2.batch.IBatchModel;が不足していた。
また、do5mBatch(Connection con,IBatchModel param) が正しい記述だった。

2017年7月22日土曜日

Javascript関数型プログラミング P187

IOモナドの例が出ていた。Maybeモナド、Eitherモナドなど、ラッピングにより、Nullや例外の扱いがスッキリする状況がわかりやすく書かれています。その流れで、IOモナドの説明になりますが、細かいところでよく確認しないと少し難しいところもでてきます。
const changeToStartCase =
 IO.from(readDom('#student-name'))
.map(_.startCase)
.map(writeDom('#student-name'));

fromは
 static from(fn){
   return new IO(fn);
}
となり、fnそのものをIOにラッピングしている。
 fnは ()=>document.querySlector('#student-name').innerHTML
ということか

mapは
 map(fn){
 const self=this;
 return new IO( ()=> fn(self.effect()));
}
ここでは、fnは1文字目を大文字にしたり、domへの書き込みということのようだ。
いずれもIOでラッピングされた中で変換されていくということか

ただ、changeToStartCaseだけでは、IO処理の宣言的な記述のみ
IOのインスタンス(関数をラッピングしただけのもの?)なので、何も実行されていないということらしい。
changeToStartCase.run();
でコードが処理される。
ちなみに
run(){
 return this.effect();
}
となっている。

要するに、fromで、IOでラッピングした関数(ラッピングされる関数を効果関数と呼んでいるようだ)を用意して、ラッピングされたままの関数をmapで変換していき、できたものを、最後に実行させるということだろうか。


2017年7月9日日曜日

JavaScript関数型プログラミング P105 ツリーを再帰で

ツリーなるデータ構造がむずかしい。

class Tree {
    constructor(root) {
       this._root=root;
    }
    static map(node,fn,tree=null){
      node.value=fn(node.value);
      if(tree===null) {
        tree=new Tree(node);
      }
   if(node.hasChildren()) {
      _.map(node.children,function (child) {
                Tree.map(child ,fn, tree);
       });   ここで、node.childrenという配列のmapを行うが、結局はひとつひとつのノードに対して、Tree.mapを施す(fn関数を適用)ということになる
    }
  return tree;
  }

get root(){
   return this._root;
 }
}
 最初、treeの変化が気になったが、それよりも、Tree.mapにより、Nodeのvalueの形がすべて変わるということが ポイントであるようだ。


2017年7月3日月曜日

H2データベースのコミット

H2データベースを埋め込みで使っている。
読み取りはOkだが、どうやら、一つのテーブルに複数アクセスあるとロックが
かかる?という情報がサイトに出ている。
そのせいだろうか、selectはokでもdelete,insertがうまくいかない。
いろいろ調べてみると、どうやらJavaのConnectionにはcommitというメソッドがあり
これがロックを解除してくれるらしい。早速ためしてみたら、delete、insertもできるようになった。commitなどというメソッドはMysqlでは使ったことがなかったので、わからなかった。データベースもいろいろあってなかなか大変。

2017年7月1日土曜日

Strutsでのファイルの読み書き

ファイルの読み書きは通常のサーブレットでは、できたのが、Actionだとできなくなっていた。
http://d.hatena.ne.jp/kawam/20060816
上記のサイトが詳しかった。これを参考に修正したところうまくアクセスできるようになりました。
thiis.getServlet().getServletContext().getRealPath
とすればいいようだ。