ラベル KakeiWeb の投稿を表示しています。 すべての投稿を表示
ラベル KakeiWeb の投稿を表示しています。 すべての投稿を表示

2015年6月10日水曜日

glassfish windowsサービス化

windows7での手順。

●手順
1、asadmin create-service
2、環境変数などはglassfish\domains\domain1\bin\domain1Service.xmlに書く。
ex.
 <env name="AS_JAVA" value="C:\Program Files\Java\jdk1.7.0_51"/>

●参考
http://www.coppermine.jp/docs/programming/2011/11/glassfish-svc.html
http://treewoods.net/kugelblitz/?p=318

2014年9月14日日曜日

MySQLのバックアップ

mysqlのバックアップにはmysqldumpを使うことにした

●参考
mysqldump に必要な権限
http://blog.enjoitech.jp/article/200

●権限設定
create user 'dbuser'@'localhost';
grant file on *.* to 'dbuser'@'localhost';
grant select,lock tables,show view on dbname.* to 'dbuser'@'localhost';
grant select on mysql.proc to 'dbuser'@'localhost';

●以下のようなシェルを作成
ファイル名にタイムスタンプを持たせ世代管理
なおかつ古いファイルは削除するようにした
#!/bin/bash

dttm=`date +%Y%m%d_%H%M%S`
filename=mydb_${dttm}.dmp.gz
outdir=~/out/dir/to/bkup/

echo mysqldump to ${outdir}/${filename} start

mysqldump mydb | gzip >${outdir}/${filename}

echo mysqldump end

echo delete old archive start
list=`find ${outdir} -mtime +30`
rm -v -f ${list}
echo delete old archive end

2014年9月6日土曜日

Androidアプリ開発 - 電卓(1)

●開発環境構築
android studioを使用
https://developer.android.com/sdk/installing/studio.html

インストール後、SDKマネージャーから
・必要なバージョンのSDK
・Intel用のエミュレーションアクセラレータ
を追加インストール


仮想マシンにGenymotionを使用
http://qiita.com/Sam/items/8d551f575b617fa0be7e

とりあえず、hello worldを作ってみた。

電卓はとりあえずガワだけ。
作り方はこの辺を参考に。
http://www.macs123.dtdns.net/algo/android/android009.html

2014年5月15日木曜日

KakeiWeb開発日記(3) : 一覧画面のページング

プログラミングスキル維持のため、家計簿システム(KakeiWeb)を作ろうという試み。 ●一覧画面のページング

(1)1ページ分のデータだけとってくるにはJPAのQuery#setFirstResult、Query#setMaxResultsを設定してクエリーを実行する

 public List getList(int page) {
  int first_result = (page-1) * rowsPerPage;
  TypedQuery q = em.createNamedQuery("CreditCard.findAll",CreditCard.class);
  q.setFirstResult(first_result);
  q.setMaxResults(rowsPerPage);
  return q.getResultList();
 }

(2)管理ビーンにJSFで扱いやすいようメソッド/プロパティを実装し、JSFで呼び出す

   
     
      
   


 public boolean hasNextPage() {
  return currentPage < pages;
 }
 public boolean hasPrevPage() {
  return currentPage > 1;
 }
 public String goPage(int page) {
  return "ListCreditCard?faces-redirect=true"+(page > 0 ? "&page="+page : null);
 }
 public int getCurrentPage() {
  return currentPage;
 }

前のページがないときなどは出したくないが、レイアウトが崩れるのでその辺は悩みどころ。
とりあえず今の状態で、完了とする。


●今後(短期課題)
済(1)一覧画面のページング処理実装
中(2)トランザクション編集画面の開発
    ・Excelフィーリング
    ・キーボード操作
    ・少ないキーストローク(自動日付、自動フィールド移動的な)
 (3)記入用Androidアプリの開発


●今後(中期課題)
 (1)本番環境をRaspberry Pi上へ構築する
 (2)マスタメンテ画面のテンプレート化


●今後(長期課題)
 (1)外部公開(Internet経由で入力・参照できるようにする)

2014年5月14日水曜日

MySQLのRaspberryへの移行

Eclipseの接続先をRaspberryPiに向ける

1、Glassfish コンソール起動(localhost:4848)
2、接続プールの編集
  リソース - JDBC - JDBC接続プール - 追加プロパティ タブの URL,user,password を編集
3、Eclipseで接続確認して、OK!

●今後(短期課題)
中(1)一覧画面のページング処理実装
済(2)開発DB環境をRaspberry Piに移行する。
未(3)マスタメンテ画面のテンプレート化

●今後(中期課題)
 (1)本番環境をRaspberry Pi上へ構築する


●今後(長期課題)
 (1)外部公開(Internet経由で入力・参照できるようにする)
 (2)記入用Androidアプリの開発

2014年5月12日月曜日

MySQLの設定

KakeiWeb開発をRaspberry Piで行うにあたり、mysqlのセットアップを済ませておく

●MySQLの設定
1、セキュア設定
$ sudo mysql_secure_installation

2、my.cnfの編集
文字化け対策、リモート接続を設定する
[mysqld]
...
character-set-server = utf8
# 以下の行はコメントアウト
#bind-address           = 127.0.0.1

[client]
...
default-character-set=utf8

編集したら、再起動
$ sudo service mysql restart

3、ユーザーの作成
$ mysql -u root -p
mysql> grant all privileges on KakeiWebDev.* to dbuser@localhost identified by 'xxxx';
mysql> grant all privileges on KakeiWebDev.* to dbuser@'111.111.111.%' identified by 'xxxx';

4、ポート開放
$ sudo ufw allow 3306/tcp

5、データベースの作成
mysql> create database KakeiWebDev;

2014年5月9日金曜日

KakeiWeb開発日記(2)

プログラミングスキル維持のため、家計簿システム(KakeiWeb)を作ろうという試み。

●JPAにおけるトランザクション実装
EJBにして、@TransactionAttributeアノテーションを使うのがよさげ。

public void insert(CreditCard e) throws Exception {
    UserTransaction utx = (UserTransaction)new InitialContext().lookup("java:comp/UserTransaction");
    utx.begin();
    em.persist(e);
    utx.commit();
}
JNDI(InititalContext)やJTA(UserTransaction)がやたらExceptionを投げてくるので
どのレイヤで吸収させるべきかの検討が必要であった。

@Named
@SessionScoped
@Stateful
public class Ejb implements Serializable {
    ...
    @TransactionAttribute(TransactionAttributeType.REQUIRED)
    public void insert(CreditCard e) {
        em.persist(e);
    }
}

例外キャッチ不要。トランザクションの開始終了の宣言不要。
これは楽!
ちなみに@RequestScopedにするなら、@Statelessのほうがおそらくよい。

参考
http://stackoverflow.com/questions/4294680/transaction-not-created-automatically-even-if-transactionattributetransactiona

http://otndnld.oracle.co.jp/document/products/wlw/docs103/guide/controls/conControlTransactions.html

●今後(短期課題)
(1)一覧画面のページング処理実装
(2)環境をRaspberry Piに移行する。

KakeiWeb開発日記(1)

プログラミングスキル維持のため、家計簿システム(KakeiWeb)を作ろうという試み。

●構成
OS:Linux(Raspbian)
Web/AP:GlassFish
アプリケーションフレームワーク:Java EE(JFS+JPA)
バッチ処理:Java+cron
DB:MySQL

●現時点の状況
永続化、画面遷移、その他もろもろ理解を目的として
マスターメンテ画面(クレジットカードマスター)を作成中。
リスト表示、メンテ画面表示、永続化まで一応動く状態。

●今後(短期課題)
(1)一覧画面のページング処理実装
(2)トランザクション開始・終了のスマートな実装
 JTAでトランザクションを実装しているが投げてくるexceptionが多くcatch実装が面倒。
 スマートなやり方を検討する
(3)環境をRaspberry Piに移行する。