Main | April 2005 »

March 31, 2005

カレンダーの表示がおかしい

2005/3/31に4月のカレンダを表示した所 4/1が日曜日と表示されてしまった。

【現象】
cal_viewの中で対象日付のMAX日付を求めるロジックが下のようになっていた
var gcal = new java.util.GregorianCalendar();
gcal.set(java.util.Calendar.YEAR, oAttr.year);
gcal.set(java.util.Calendar.MONTH, oAttr.month-1);

var maxday = gcal.getActualMaximum(java.util.Calendar.DAY_OF_MONTH);

この時maxdayの値を求めると "31"となっている


【原因】
gcal.set(java.util.Calendar.YEAR, oAttr.year);     <-- 対象の年を求めている
gcal.set(java.util.Calendar.MONTH, oAttr.month-1); <-- 対象の月を求めている
        ※密かに日は 31日になっている

var maxday = gcal.getActualMaximum(java.util.Calendar.DAY_OF_MONTH);
        ※ 2005/4/31 の月のMAX日を求めている = 2005/5/1となっている(=31)


【対処】
gcal.set(oAttr.year,oAttr.month-1,1);   <-- 対象の年,月と 1日をセットしている

var maxday = gcal.getActualMaximum(java.util.Calendar.DAY_OF_MONTH);
        ※ 2005/4/1 の月のMAX日を求めている(=30)

| | Comments (3) | TrackBack (0)

March 18, 2005

日付の計算・・・嵌った

締め処理をする時に年月を翌月にする関数を作ろうと思った

"2005/02" を "2005/03"にするのだが、 "2005/12" の時には "2005/13"で無く "2006/01"にしないといけない
 if文で 12月だったらと判断するのは出来るが、何となくスマートで無いので 月を進める関数を作ってみた

  変数(nenget)に"2005/02"という値が入っている
year = nenget.substring(0,4);
month = nenget.substring(5,7);

beforeDate = Format.fromDate("yyyy/MM/dd",Module.date.get(year,month,01));
afterDate = Module.date.addMonth(beforeDate,1);
Debug.browse(afterDate);

  とやってみた所、afterDateの値は 「Mon Apr 18 20:27:52 GMT+0900 (JST) 2005 」となってしまった。
  何と!今日の日付の1ヶ月後だ。 beforeDateには"2005/02/01"が入っていたので afterDateを作成する途中におかしくなってしまった模様

  beforeDateが文字列になってしまっている。Module.date.addMonthの入力値は
   Date target: 対象データ
   number plus: 増加分
  だったので文字列がはじかれて今日の日付が入ってしまったのかな?

(結果)
year = nenget.substring(0,4);
month = nenget.substring(5,7);

beforeDate = Module.date.get(year,month,01);
afterDate = Module.date.addMonth(beforeDate,1);

| | Comments (2) | TrackBack (0)

とほほのWWW入門

とほほのWWW入門

| | Comments (2) | TrackBack (0)

March 08, 2005

メモリ搭載量に合わせて設定を最適化する


WindowsXPの初期設定では最低動作条件の128MBに合わせて設定されている為大容量のメモリを搭載しても活かしきれていない
レジストリのHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management
IoPageLockLimit[DWORD値](ドライバがI/O処理に利用するバッファメモリのサイズ)10進数 512MB以上のメモリの場合 2000000から4000000程度
LargeSystemCache[DWORD値]0 (1にするとアプリケーション用に確保されたメモリが開放され物理メモリが増えるがアプリケーションの動作が遅くなる場合もある)

I/Oバッファメモリを試してみたが効果はかなり大きいようだ。

| | Comments (68) | TrackBack (0)

Main | April 2005 »