2013-12-25

リファラスパムばりばりです

色々考えるですね、みなさん。
http://kamikaze-blogger.blogspot.jp/2013/08/blog-post_22.html

JavaのAPを並列実行させるとは・・・


ちょっと前に「WEB+DB PRESS」で「GCによるボトルネックを解決する・・・」とかいう記事があったのですが、まあ、大量なデータやオブジェクトを扱う場合には悩ましい非機能要件なところだったりします。
超大量データを扱うバッチAPを並列効果(たとえばスレッド)で性能上げたいとかいうやつね。
まあ、古の時代と違ってリソース管理がVM まかせな分難しいともあるわけで、
 GCとかについて、

http://msugai.fc2web.com/java/perform/storage.html
http://gihyo.jp/dev/serial/01/jvm-arc/0001
http://www.atmarkit.co.jp/ait/articles/0403/11/news096.html
http://viralpatel.net/blogs/java-virtual-machine-an-inside-story/

とか色々考えないといけないのですが、件の記事の結論的なものとしては、GCの対策トレードオフがあるので、Javaのプロセスを分割するとかいうものらしい。
Webとかだとサーブレットコンテナとかインスタンスを分けるとかよくあるね。

バッチとかだと、バッチフレームワークとの兼ね合いにもなるので、そんな都合の良いものあるかな~って感じですが。jBatch、Spring Batch、S2Chronos ・・・等

とまあ、色々情報を掘ってみる・・・
http://builder.japan.zdnet.com/sp_oracle/weblogic_2013/35038499/
http://www.bbreak.co.jp/technique/doc/terasoluna/TERASOLUNA_Batch.pdf
http://www.nri.com/jp/opinion/g_souhatsu/pdf/2013/gs201302.pdf
http://public.dhe.ibm.com/software/dw/jp/websphere/wxd/cg_batch_patterns/java_batch_patterns.pdf
http://www.atmarkit.co.jp/ait/articles/0807/16/news150.html
http://www.atmarkit.co.jp/ait/articles/1205/28/news126.html
http://www.atmarkit.co.jp/ait/articles/0804/17/news152.html
http://forza.cocolog-nifty.com/blog/2013/03/springhadoop-50.html

まあ、結論出ないわけですが、
件の記事と掛け合わせてみると、こんなのが意外と侮れないかも。
http://docs.oracle.com/cd/E21043_01/web.1111/b61388/jvm.htm#CHDJBAAA

ついでに
http://www.onjava.com/pub/a/onjava/2001/09/25/optimization.html
http://etc9.hatenablog.com/entry/20120601/1338574435
http://stackoverflow.com/questions/4301531/jvm-and-java-linux-process
http://techblog.hilife-jp.info/2012/12/jmx-java-monitoring/

サイト構築に関するネタは尽きず・・・


まあ、世の中が変わっていくので、ずっとネタは尽きないってことですね。
何でもかんでも試して・・・というにはリソースが限られるってこともありますが。

http://www.publickey1.jp/blog/10/web_3.html
http://www.publickey1.jp/blog/10/web_web.html


2013-12-24

設計作業は必要ということでしょうね・・・

どれだけ、無駄なことをせずに目的のものを作成するか・・・
                        ・・・って常に課題なのでしょうが、

http://www.infoq.com/jp/articles/kenji-modeling-agile

つまり作るだけでは限界があるってことを言いたいのかしら。

まあ、達人はドキュメントにしなくても、自然に設計をおこなってるんでしょうね。

結局、巨大なチャートが・・・


対象のシステムを構造的に俯瞰するのに、図を記述するのは良いことだとは思うが、やはり程度の問題はありそうだ。物理的限界というか・・・

http://www.umlcert.org/reading/ocup_blog/13.html
http://www.bcm.co.jp/site/2004/2004May/uml/04uml05-126p-131p.pdf
http://news.mynavi.jp/series/UML_zero/017/
http://www.cqpub.co.jp/hanbai/books/37/37641/UML_teisei.pdf

Agile Modeling

  ・・・それが有効であれば何でも良いですが・・・


Agile Modeling とはソフトウェアシステムを効果的にモデル化、ドキュメント化するための実践的な方法論だそうである。

http://www.agilemodeling.com/

といあえず、Agileとついているからには、スモールスタートな感じがするので、実践的というのは良いのですが、これをやるための目的とは・・・

う~ん、恰好良いですが、それをやることにおいてどれくらいの効果があるかは、さまざまな条件によるのでしょう。
とりあえず、こういうものを、ある程度であれこういう体系化をする思考には感服します。

2013-12-19

世のなかクラウドなんだそうである・・・

某サイトの記事によると

システム全体への構想力を持ったアーキテクトが重要に

・・・まあ、良いのではないでしょうか。(・・・それって○たり前だと思うけどね)
https://event.atmarkit.co.jp/events/324d2b659040975866ddc60fbae2d879/atmarkit_report

ちゅ~わけで、クラウドが当たり前となりつつある世のなか(本当か?)
ではこういう訳ではあるが、確かにこの手の関連の話はわんさかあるようである。
http://www.atmarkit.co.jp/ait/articles/1312/18/news035.html

まあ、IaaS、HaaS、PaaS、SaaS、DaaS、BaaSとか色々考えるね~まったく。
はてはデザインパターンですと。
http://aws.clouddesignpattern.org/index.php/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8
http://www.publickey1.jp/blog/12/amazon45.html
http://www.slideshare.net/kentamagawa/cdp-overview20120303
まあこんなのも
https://www.facebook.com/awscdp
すばらしいですね。


 

 

SAStruts君がjqGridさんとFormな話


formタグを使ったよくある検索フォームでjqGridを使って一覧表示をしたいちゅ〜のがありまして・・・
サーバサイドをSAStruts(Seasar)で実装して、Action側ではFormクラスでフォームで入力された値を受け取る
・・・って感じなんですが。
とりあえず、開発メンバにやらせていたらjqGridのページング情報が入らないとか・・・

・・・まあ、そこまでのサンプルは渡していませんが、もう少し進められないかとは思うが。

ということで、結局オレか 



とりあえずサーバサイドのForm、SAStrutsでPOJOなFormクラスね、
------------------------------------------------------
public class SearchitemForm implements Serializable {
    private static final long serialVersionUID = 1L;
    public SearchitemParam searchitemParam = new SearchitemParam();
    // jqGrid paging用
    public int page;
    public int rows;
    public String sidx;
    public String sord;
    // jqGrid paging用
    public SearchitemForm() {
    }
}

public class SearchitemParam implements Serializable {
    private static final long serialVersionUID = 1L;
    public String itemName;
    public String itemid;
    public String priceStart;
    public String priceEnd;
    public SearchitemParam() {
    }
}
------------------------------------------------------

で画面(JSP)側

------------------------------------------------------
<s:form  method="post" styleId="searchfrm">
    <div align="right">
        <html:button value="ログアウト" property="logout" onclick="location.href='${f:url('/logout')}'" />
    </div>
    <div align="center" class="body">
        <h2>マスタ管理 - 商品一覧画面(Grid版)</h2>
        <html:errors />
        <input type="hidden" id="needLoadList" value="${responseDxo.needLoadList}" />
        <table>
            <tr>
            <td>商品名検索<input type="text" id="itemName" name="searchitemParam.itemName"/></td>
            </tr>
            <tr>
            <td>商品ID検索<input type="text" id="itemid" name="searchitemParam.itemid"/></td>
            </tr>
            <tr>
            <td>価格検索
                <input type="text" id="priceStart" name="searchitemParam.priceStart"/>
                〜
                <input type="text" id="priceEnd" name="searchitemParam.priceEnd"/>
            </td>
            <td><input type="submit" id="searchbtn" name="" value="検索" /></td>
            </tr>
        </table>
        <div id="searchList">
            <table id="list"></table>
            <div id="pager2" style="height: 30px"></div>
        </div>
    </div>
</s:form>
------------------------------------------------------

でJavaScript側の処理ですが、
よく、ググるとformタブの値をjQueryで送信するには「serializeArray」ということで、

------------------------------------------------------
searchModel.postData =  jQuery("#searchfrm :input").serializeArray();jQuery("#list").jqGrid(searchModel);

------------------------------------------------------

とかしたいのですが、実際のデータ(serializeArray)はこんなになる

------------------------------------------------------
[
    {"name":"searchitemParam.itemName","value":"asdfghh"},
    {"name":"searchitemParam.itemid","value":"hkllfd"},
    {"name":"searchitemParam.priceStart","value":"3333"},
    {"name":"searchitemParam.priceEnd","value":"4444444"}
]
------------------------------------------------------

まあ、その名の通りな変換な訳ですね。


単純にそのままサーバに送る場合(つまり $.ajax とでかね)ならFormに入るのですよ、実は。
ただ、.jqGridを経由するとjqGridでページングをするための情報がなくなるのですな。
どうやら、こうやるとご丁寧に当該の情報をつぶしてくれるらしい・・・orz
まあ、Formデータ送信ではなく単品の項目を設定して実行するのは確認していて、それから考えて単純にデータの送り方の問題ということで、結論からいくと以下のようになっていればOKなんで

------------------------------------------------------
{
    "searchitemParam.itemName":"asdfghh",
    "searchitemParam.itemid":"hkllfd",
    "searchitemParam.priceStart":"3333",
    "searchitemParam.priceEnd":"4444444"
}
------------------------------------------------------

ちゅ〜ことで、 nameはプロパティでvalueはプロパティ値になっていれば良いじゃんということで、

------------------------------------------------------
function setFormData2SendData(target, src) {
    for (var i = 0 ; i < src.length ; i++) {
        target[src[i].name] = src[i].value;
    }
}

jQuery(function() {
    jQuery('#searchfrm').submit(function(evt) {
        evt.preventDefault();
        var postData2 = {};
        var temp =  jQuery("#searchfrm :input").serializeArray();
        setFormData2SendData(postData2, temp);
        searchModel.postData = postData2;
        jQuery("#list").GridUnload();
        jQuery("#list").jqGrid(searchModel);
    });

------------------------------------------------------

んで、サーバサイドでは


OKですね。

あとは頑張ってくれ ・・・ことで。

2013-12-18

だんだんと大掛かりになるな・・・・

MySQLってお手軽に使えるDBだと、10年近く前○ラクルを使っていた時代は思ってましたが、気が付けば、レプリケーションなんてことも出来るようになってきてるのよね。
#当時はStandby DataBaseなんてのを使ってましたが・・・

http://www.checksite.jp/mysql-basic-management/
http://www.checksite.jp/mysql-myisam-memory-conf/

とかってだけじゃなくて、今は
http://www.checksite.jp/mysql-replication/

これなのね。
今やクラウド時代らしく、

http://www.atmarkit.co.jp/ait/articles/1312/16/news008.html
http://www.atmarkit.co.jp/ait/articles/1312/12/news007.html

って感じで、まあ、恰好良いといえばそうだがねえ・・・
     仕掛けが多過ぎ・・・・・・

知らないうちのPHP稼業・・・


去年くらいから、気が付いたら、講師やらDrupalやらPHP系にも手を染めるようになってしまった・・・
PHPなんて十年ぶりくらいなのだが、「Perlのサブセットじゃね・・・」くらいに考えていたら、すっげー進化してるの。
どうやら一旦中間コードにコンパイルされる・・・ってどっかの言語みたいな仕組みになっているらしく、それを利用してパフォーマンスを上げる・・・なんて仕掛けもあるらしい。
 
http://www.checksite.jp/php55-zend-opcache/
http://www.checksite.jp/pecl-apc-php/

時代は進んでるのね・・・

  ・・・つか、だんだんと各言語の差別化ってどうなるのって感じではありますが。w


2013-12-17

登録の方式くらい統一して欲しいものだが・・・


メンバより一意なIDの管理について質問あり。

今回は久々に○ラクルなのですが、
う~ん、無いのですよ、○ラクルにはserialが、

http://adiary.blog.abk.nu/0259

色々な思想があって良いとは思うが、まあ、いざとなると面倒ですな。

時代って進化しているのねって

              ・・・いうことでSQL


ずいぶん昔に○ラクル8を扱っていることがあって、分析用のSQLとかのコードを見ていて随分と色々なことが出来るのねって思ったことがあったが、時代はさらに進んでいるらしい。

http://www.oracle.com/technetwork/jp/articles/otnj-sql-image7-1525406-ja.html#a

ソフトウェアの構造(というよりアーキテクチャ)を考える場合に適材適所って大事だと思うが、作ることばかり考えていないで、任せるところはミドルに任せてしまうというのも大事!

・・・ということで。

しかし、話はそんな単純でないことも事実。  ・・・ああ、面倒くさいですね

2013-09-18

これは進化・・・というべきなんだろうな

OSSのRDBといえば大変ベタではありますが、

Postgres !!

MySQL!! (最近はMariaDB !!)


ということになるのでしょうか。

PostgreSQL 9.3正式版が公開。1秒以下の高速フェイルオーバー、データチェックサムによる高信頼性、マテリアライズドビューなどの新機能

とか

シャーディングを実現するSpiderストレージエンジン、MariaDBがバンドル開始

なんてのを見ていると。
お手軽さが良かったこれらのOSSも、段々重量級になってきているな・・・と
まあ、これを進化といえばそうなんでしょうね。
#みんな余程○ラクル使いたく無いのですかね・・・(高いからね)

で・・・、アンチテーゼとして、もっと軽量級のDBが、また出てくるのでしょう・・・

ん~、進化というより循環ですな。

2013-08-30

Javaのフレームワークですか・・・

ヘルプを頼まれている件で、Javaのフレームワークを久しぶりに調べて見た。
当初あるパッケージ品を検討していたがご破算になって仕切り直し
ただし、これって条件があるようで、

他言語からの乗り換え ・・・、       ((φ( ̄Д ̄ )ホォホォ

画面が結構あって・・・、           ((φ( ̄Д ̄ )ホォホォ

帳票も結構ある ・・・ 、           ((φ( ̄Д ̄ )ホォホォ

セキュリティの考慮が結構必要か ・・・ 、 ((φ( ̄Д ̄ )ホォホォ


で、

パッケージ品なものであること

( ゜д゜)ンマッ!!

・・・だって。

う〜ん、これって 大企業らしい管理側の都合があって、
開発工程からみて設計書をきっちり書きそうなので、管理する側から見て、
  • 設計〜製造〜保守が連動出来るようになっているほうが良い
  • ということで↑開発工程で管理し易いから品質管理もやり易い
からってことなんでしょうかね。まあ、ブランド的な安心感も欲しいのかな。
確かに、ある程度の規模以上である程度不特定多数な開発メンバが集まるなら、こういったものが欲しくなるのは当然かもですね。ざっとWebでみたところではこういうものが引っかかりました。

  • http://works.nri.co.jp/product/develop_plbl.html
  • http://jp.fujitsu.com/solutions/afw/
  • http://www.hitachi-solutions.co.jp/barista/sp/framework/kakaku.html
  • http://www.intra-mart.jp/whats/
  • http://www.terasoluna.jp/

まあ、オイラもあるプロジェクトで直接では無いが、こういう代物に関与したことがあります。一般的なオープンソースのフレームワークよりも日本の業務開発をサポートするような機能等があったような気がします。
  1. 設計情報(Excelとかの設定表、UMLとかモデル)から最低スケルトンとか生成
  2. 実装をアシストするツール(エディタ、ジェネレータ)
  3. 実装が楽にする品質を担保するライブラリ群
  4. 開発リソース(コード、ドキュメント等)を管理するツール
おおよそこんな感じにものがあれば、品質管理とかで色々報告が必要なウォータフォール的にも良いのかしら。

さてさて、こういうのって、さらに我が国固有な「めんどくさいレイアウトの帳票」に対応したツールとかもついていたりするので悪くは無いですが、

簡単に言えば

高い!!

これにつきます。

まあ、所詮道具なんで使いこなせれば何でも良いかと思いますが・・・。本体+開発ライセンス+実行ライセンスとかで結構なお値段になるので、「ブランド的な安心感」もあるのでしょうかね。


・・・

で、よくよく聞いたら、元々の候補が外れた理由は「価格」だということで、(ヲイ)


オリャー!!(ノ ̄ー ̄)ノ ┫:・'.::

『では、

 優秀なパッケージ品のフレームワークが

プロモーション期間中でバーゲン価格で使えない限り、

パッケージ品のフレームワークの選択肢自体駄目ってことですね。(笑)』


ということで、オイラの回答。

パッケージ品のフレームワークとそのライセンス料金とに見合う力がある
エンジニアを集めて、設計情報やリバースで連動というのはエンジニアのスキルでカバーする
(笑)
ことにして、以下のような組み合わせ(定番かと思いますが、すべてオープンソースつまりタダ)でどう?
#とりあえず実行ライセンスは無視

  • 画面制御やバッチ制御を考慮したJava系DIフレームワーク(SpringとかSeasar等)
  • DBを抽象化するO/Rマッパー(Hibernate、MyBatis等)
  • 画面をJSPでゴリゴリ書かないためのテンプレートエンジン(Verocity等)
  • 帳票系のレイアウト等作成ツール(Javaベース、JasperReports、iReports等)
  • PDF系ツール・ライブラリ(iText等)
  • 開発リソースを管理するツール(Subversion、Git等)
  • ビルド時のライブラリバージョン管理や自動化等をするツール(Apache Maven/Ivy&Jenkins等)
  • 仕様とかバグをWebで管理出来るチケットシステム(Trac、Redmine)
  • 機能レベル(単体試験等)の確認環境(DBはMySQLと仮定してXAMPP、必要であればVMWare)
  • UMLでおおまかに設計(astah community)
  • DB設計はとりあえずERは書いておく(EclipseのClay Plugin/ERMaster)
 まあ、頑張ってください・・・ということで。

本日のBGMは Diane Birch

2013-04-04

MS系サーバでリモート実行?

DBへデータをロードするアプリから、
(1)リモートサーバへファイル圧縮+ファイル転送
(2)鯖で解凍&DBロード
(3)実行結果を評価する
について実現方法を検討・・・なんて、
なんだかアーキテクトチックな検討をしてます。
サーバ側にも処理を持たせる想定になるけど、
ターゲットのサーバがWindowsなのよね~
ぱっと思いつくのは
(案A)アプリ側からサーバ側の処理(シェル等)をrshで叩く
   =>処理自体はWindowsネイティブでVBScriptか?
   =>別にJavaでもOKだよな
   =>たぶん「Subsystem for UNIX-based Application」入れないとRSHできないよな~
(案B)RMI経由でサーバ側のアプリ(Java)で呼び出す
   =>RMI系の仕組みを新規追加ですね
   =>RMIのポートを空けないとね(セキュリティに考慮しないとだめか)
いずれにせよ、ファイル1個で1トランザクション的な扱いになりそうだから
実行結果の評価は必須だし、障害時の運用は別途検討ってことになるよね~


めんどクサイですね・・・