Java.mailクラスを使えるようにする為に
mail.jar
activation.jar
クラスをeclipseから参照できるように設定。
importは下記項目をimport
import java.io.UnsupportedEncodingException;
import java.util.Properties;
import javax.mail.MessagingException;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
ソースは下記ソースで送信可能
//メールを送信する。
Properties props = new Properties();
Session session = Session.getDefaultInstance(props, null);
try {
MimeMessage msg = new MimeMessage(session);
msg.setFrom(new InternetAddress("aaa@gmail.com", "送信者の名前", "ISO-2022-JP"));
msg.addRecipient(Message.RecipientType.TO, new InternetAddress("bbb@yahoo.co.jp")); //送信先のメールアドレス
msg.setSubject("メールの件名", "ISO-2022-JP");
msg.setText("メールの本文", "ISO-2022-JP");
Transport.send(msg);
} catch (UnsupportedEncodingException e) {
// } catch (AddressException e) {
// ...
} catch (MessagingException e) {
// ...
}
}
2009年12月25日金曜日
2009年12月24日木曜日
ExcelVBA SUM関数をセットするsub関数
Sub setSumKansuu(ByVal taisyouCol As Integer, ByVal lastRow As Integer)
MaxUpRow = 2
セル範囲 = "R" & MaxUpRow & "C" & taisyouCol & ":R" & lastRow & "C" & taisyouCol
数式 = "=SUM(" & セル範囲 & ")"
Range(Cells(lastRow + 1, taisyouCol), Cells(lastRow + 1, taisyouCol)).FormulaR1C1 = 数式
End Sub
引数に対称列と最終行を渡す。
また
最終行を取得は下記関数で取得できる。
ActiveCell.SpecialCells(xlLastCell).Select
最終行を変数にセット
MaxDownRow = ActiveCell.Row
MaxUpRow = 2
セル範囲 = "R" & MaxUpRow & "C" & taisyouCol & ":R" & lastRow & "C" & taisyouCol
数式 = "=SUM(" & セル範囲 & ")"
Range(Cells(lastRow + 1, taisyouCol), Cells(lastRow + 1, taisyouCol)).FormulaR1C1 = 数式
End Sub
引数に対称列と最終行を渡す。
また
最終行を取得は下記関数で取得できる。
ActiveCell.SpecialCells(xlLastCell).Select
最終行を変数にセット
MaxDownRow = ActiveCell.Row
2009年12月18日金曜日
Excelマクロ シートの値取得、検索
シートの値を取得する方法
Worksheets("シート名").Cells(列, 行).Value
検索ロジック
Set objFind = Worksheets("シート名").Cells.Find(What:=検索する値, LookAt:=xlWhole, After:=Cells(1, 2), SearchOrder:=xlByRows)
If Not objFind Is Nothing Then
strAddress = objFind.Address
Do While Not objFind Is Nothing
lngYLine = objFind.Cells.Row
intXLine = objFind.Cells.Column
MsgBox ""
IF 見つかった場合の処理
'次のデータを検索
Set objFind = Worksheets("出力").Cells.FindNext(objFind)
'最後のデータの場合
If strAddress = objFind.Address Then
Exit Do
End If
Loop
End If
Worksheets("シート名").Cells(列, 行).Value
検索ロジック
Set objFind = Worksheets("シート名").Cells.Find(What:=検索する値, LookAt:=xlWhole, After:=Cells(1, 2), SearchOrder:=xlByRows)
If Not objFind Is Nothing Then
strAddress = objFind.Address
Do While Not objFind Is Nothing
lngYLine = objFind.Cells.Row
intXLine = objFind.Cells.Column
MsgBox ""
IF 見つかった場合の処理
'次のデータを検索
Set objFind = Worksheets("出力").Cells.FindNext(objFind)
'最後のデータの場合
If strAddress = objFind.Address Then
Exit Do
End If
Loop
End If
Excelマクロ シートの値取得、検索
シートの値を取得する方法
Worksheets("シート名").Cells(列, 行).Value
検索ロジック
Set objFind = Worksheets("シート名").Cells.Find(What:=検索する値, LookAt:=xlWhole, After:=Cells(1, 2), SearchOrder:=xlByRows)
If Not objFind Is Nothing Then
strAddress = objFind.Address
Do While Not objFind Is Nothing
lngYLine = objFind.Cells.Row
intXLine = objFind.Cells.Column
MsgBox ""
IF 見つかった場合の処理
'次のデータを検索
Set objFind = Worksheets("出力").Cells.FindNext(objFind)
'最後のデータの場合
If strAddress = objFind.Address Then
Exit Do
End If
Loop
End If
Worksheets("シート名").Cells(列, 行).Value
検索ロジック
Set objFind = Worksheets("シート名").Cells.Find(What:=検索する値, LookAt:=xlWhole, After:=Cells(1, 2), SearchOrder:=xlByRows)
If Not objFind Is Nothing Then
strAddress = objFind.Address
Do While Not objFind Is Nothing
lngYLine = objFind.Cells.Row
intXLine = objFind.Cells.Column
MsgBox ""
IF 見つかった場合の処理
'次のデータを検索
Set objFind = Worksheets("出力").Cells.FindNext(objFind)
'最後のデータの場合
If strAddress = objFind.Address Then
Exit Do
End If
Loop
End If
2009年12月10日木曜日
google app engineでpicasa web albumと連携(初期設定)
開発環境の初期設定
http://code.google.com/p/gdata-java-client/downloads/list
gdata-src.java-1.x.x.java.zipを落とし、jarファイルをインポートする。
appengine-web.xmlに
を追加する。
コーディングして実行した所
java.lang.NoClassDefFoundError: com/google/common/collect/Maps
と言うエラーが発生した。
google-collect-1.0-rc5.zip
と言うファイルを解凍し、jafファイルをインポートする事で解決する。
http://code.google.com/p/gdata-java-client/downloads/list
gdata-src.java-1.x.x.java.zipを落とし、jarファイルをインポートする。
appengine-web.xmlに
を追加する。
コーディングして実行した所
java.lang.NoClassDefFoundError: com/google/common/collect/Maps
と言うエラーが発生した。
google-collect-1.0-rc5.zip
と言うファイルを解凍し、jafファイルをインポートする事で解決する。
2009年12月9日水曜日
google app engineでSessionを利用する方法
GAEでSessionを使用可能にする方法
appengine-web.xmlに下の一行を追加する。
true
後は普通にJAVAで記述すれば良い
HttpSession session = request.getSession(true);
session.setAttribute("Id", Id);
appengine-web.xmlに下の一行を追加する。
後は普通にJAVAで記述すれば良い
HttpSession session = request.getSession(true);
session.setAttribute("Id", Id);
google app engineのインストール
今回JDK+プラグイン+日本語化がセットになっているのがあったらので
そちらを使用する事に。
(日本語 Eclipse Pleiades All in One Java)
個別にインストール + Eclipse 3.5(Galileo)も使えるみたいなのでそちらを使用
(google App Engineと日本語化パッチも3.5用の物を使用する。)
Eclipseインストール後、タブの中から
Help→Software Updates
→Available Software→Add site
※最後の3.5とかはバージョンらしいので各バージョンにあった物を使用
http://dl.google.com/eclipse/plugin/3.5
●JSPについて
基本的に
JSP → サーブレット → JSP
の流れになる模様。
・JSPはhtmlタブとJAVAの混合
・サーブレットは完全にJAVAによって動くページ?
上記のJSPとサーブレットを組合す事によって分離コードにする事ができる。
サーブレット/JSPを使ったアプリケーションでは、サーブレットで処理を行い
JSPで表示するといった使いが可能。
またサーブレットにアクセスする際の設定をweb.xmlでマッピングを行い設定する。
サーブレットからJSPに処理を移すには、RequestDispatcherオブジェクトのfowardメソッドを使う。
RequestDispatcherオブジェクトは、requestから、getRequestDispatcherメソッドに処理移行先の
JSPファイル名を指定して呼び出す。
fowardメソッドの引数にはrequestとreaponseを渡す。
そちらを使用する事に。
(日本語 Eclipse Pleiades All in One Java)
個別にインストール + Eclipse 3.5(Galileo)も使えるみたいなのでそちらを使用
(google App Engineと日本語化パッチも3.5用の物を使用する。)
Eclipseインストール後、タブの中から
Help→Software Updates
→Available Software→Add site
※最後の3.5とかはバージョンらしいので各バージョンにあった物を使用
http://dl.google.com/eclipse/plugin/3.5
●JSPについて
基本的に
JSP → サーブレット → JSP
の流れになる模様。
・JSPはhtmlタブとJAVAの混合
・サーブレットは完全にJAVAによって動くページ?
上記のJSPとサーブレットを組合す事によって分離コードにする事ができる。
サーブレット/JSPを使ったアプリケーションでは、サーブレットで処理を行い
JSPで表示するといった使いが可能。
またサーブレットにアクセスする際の設定をweb.xmlでマッピングを行い設定する。
サーブレットからJSPに処理を移すには、RequestDispatcherオブジェクトのfowardメソッドを使う。
RequestDispatcherオブジェクトは、requestから、getRequestDispatcherメソッドに処理移行先の
JSPファイル名を指定して呼び出す。
fowardメソッドの引数にはrequestとreaponseを渡す。
2009年12月4日金曜日
クラウドについて
amazonからAWS(amazon web service)と
googleからGWE(google app engine)の
二つのクラウドを開発する環境が提供されているが、
AWSはOSの選択を選択肢、全て自分で実装する事が可能みたい。
Windows + IIS + asp.netでも
Linux + apatch&tomcat + jsp/php でも
どちらでも使用可能
しかもウィンドウズのイメージ等容易されていて
Windows2003Serverを使い始めるのに物の数分で構築できるらしい。
google App engineは使用できるのはjspのみで動作環境は
google側で用意されている。DBもgoogle側で用意されているので
いきなりプログラムが始める事が可能。
500MBまで無料使えるしメンテ等考えたら個人で使うにはgoogleの
方がよさそう。
googleからGWE(google app engine)の
二つのクラウドを開発する環境が提供されているが、
AWSはOSの選択を選択肢、全て自分で実装する事が可能みたい。
Windows + IIS + asp.netでも
Linux + apatch&tomcat + jsp/php でも
どちらでも使用可能
しかもウィンドウズのイメージ等容易されていて
Windows2003Serverを使い始めるのに物の数分で構築できるらしい。
google App engineは使用できるのはjspのみで動作環境は
google側で用意されている。DBもgoogle側で用意されているので
いきなりプログラムが始める事が可能。
500MBまで無料使えるしメンテ等考えたら個人で使うにはgoogleの
方がよさそう。
2009年11月11日水曜日
LinuxでFTP接続する方法
・ftpコマンドを実行する。
ftp [アドレス]
でFTP接続できる。
接続後、userとpasswordを聞かれるので入力
helpコマンドでコマンドを見る事ができる。
!でftpモードから抜ける事が可能
get [ファイル名] でファイルをダウンロードする事ができる。
ftp [アドレス]
でFTP接続できる。
接続後、userとpasswordを聞かれるので入力
helpコマンドでコマンドを見る事ができる。
!でftpモードから抜ける事が可能
get [ファイル名] でファイルをダウンロードする事ができる。
2009年10月28日水曜日
2009年10月13日火曜日
在庫数調整
・現在在庫数は下記個数から求める事ができる。
現在在庫数 = 月末在庫数 + 入庫数(納品数) - 出荷数 + 再生数 - 移動入庫数 + 移動出庫数
・月末在庫数は棚卸画面で変更可能とする。
ただし上記の式より、月末在庫数を変更させると現在在庫数も変更させる必要がある。
先月納品分を入力の場合は月未在庫数と現在在庫数を増加させる。
ただし、棚卸調整後は上記を反映させない。
各在庫が動くと思われる動作に反映させる
・納品
・出荷完了
・オーダーキャンセル
・返品
・移動
・再生
また在庫数は上記計算より、Viewで求める事ができるが、
速度の関係上計算後の結果をtableで保持した方が良い?(要検討)
現在在庫数 = 月末在庫数 + 入庫数(納品数) - 出荷数 + 再生数 - 移動入庫数 + 移動出庫数
・月末在庫数は棚卸画面で変更可能とする。
ただし上記の式より、月末在庫数を変更させると現在在庫数も変更させる必要がある。
先月納品分を入力の場合は月未在庫数と現在在庫数を増加させる。
ただし、棚卸調整後は上記を反映させない。
各在庫が動くと思われる動作に反映させる
・納品
・出荷完了
・オーダーキャンセル
・返品
・移動
・再生
また在庫数は上記計算より、Viewで求める事ができるが、
速度の関係上計算後の結果をtableで保持した方が良い?(要検討)
2009年9月30日水曜日
2009年9月16日水曜日
郵便番号データ(CSV)
郵便局からダウンロードしたCSVデータのテーブルの生成SQL
CREATE TABLE zip_cod (
jiscode integer NOT NULL,
zip_old integer NOT NULL,
zipcode integer NOT NULL,
ken_kana varchar(100) NOT NULL,
shichoson_kana varchar(100) NOT NULL,
choiki_kana varchar(100) NOT NULL,
ken_kanji varchar(100) NOT NULL,
shichoson_kanji varchar(100) NOT NULL,
choiki_kanji varchar(100) NOT NULL,
flag10 varchar(100) NOT NULL,
flag11 integer NOT NULL,
flag12 integer NOT NULL,
flag13 integer NOT NULL,
info14 integer,
info15 integer
);
CREATE TABLE zip_cod (
jiscode integer NOT NULL,
zip_old integer NOT NULL,
zipcode integer NOT NULL,
ken_kana varchar(100) NOT NULL,
shichoson_kana varchar(100) NOT NULL,
choiki_kana varchar(100) NOT NULL,
ken_kanji varchar(100) NOT NULL,
shichoson_kanji varchar(100) NOT NULL,
choiki_kanji varchar(100) NOT NULL,
flag10 varchar(100) NOT NULL,
flag11 integer NOT NULL,
flag12 integer NOT NULL,
flag13 integer NOT NULL,
info14 integer,
info15 integer
);
2009年9月7日月曜日
翌月頭と翌月末を求めるSQL
翌月頭
DATE(to_char(now() + '1 month','YYYYMM01')) as start_dt,
翌月末(二ヶ月頭から一日マイナス)
DATE(to_char(now() + '2 month','YYYYMM01')) - 1 as start_dt
DATE(to_char(now() + '1 month','YYYYMM01')) as start_dt,
翌月末(二ヶ月頭から一日マイナス)
DATE(to_char(now() + '2 month','YYYYMM01')) - 1 as start_dt
2009年9月3日木曜日
postgresの実行中のプロセスと停止方法
●postresの実行中のプロセスを下記コマンドで取得
SELECT
procpid,
start,
now() - start AS lap,
current_query
FROM
(SELECT
backendid,
pg_stat_get_backend_pid(S.backendid) AS procpid,
pg_stat_get_backend_activity_start(S.backendid) AS start,
pg_stat_get_backend_activity(S.backendid) AS current_query
FROM
(SELECT pg_stat_get_backend_idset() AS backendid) AS S
) AS S
WHERE
current_query <> ''
ORDER BY
lap DESC;
●各項目の意味
・procpid プロセスID
・start プロセス実行開始時間
・lap 経過時間
・current_query 実行中のSQL
●プロセスは下記コマンドで停止できる。
SELECT pg_cancel_backend(プロセスID);
SELECT
procpid,
start,
now() - start AS lap,
current_query
FROM
(SELECT
backendid,
pg_stat_get_backend_pid(S.backendid) AS procpid,
pg_stat_get_backend_activity_start(S.backendid) AS start,
pg_stat_get_backend_activity(S.backendid) AS current_query
FROM
(SELECT pg_stat_get_backend_idset() AS backendid) AS S
) AS S
WHERE
current_query <> ''
ORDER BY
lap DESC;
●各項目の意味
・procpid プロセスID
・start プロセス実行開始時間
・lap 経過時間
・current_query 実行中のSQL
●プロセスは下記コマンドで停止できる。
SELECT pg_cancel_backend(プロセスID);
2009年8月24日月曜日
DBの命名規則(消費税)で悩む
DBの命名規則だが
消費税の場合
shouhizei_ritu_start_dt 消費税開始日
shouhizei_ritu 消費税率
shouhizei_gaku 消費税額
shouhizei_flg
shouhizei_gaku_gukei
とするのか
zeiritu 税率 を軸として
zeiritu_start_dt 税率開始日
shouhi_zeiritu 消費税率
shouhi_zei 消費税(額)
shouhi_zei_flg
にするのか・・・
上記は統一感があるが長い、もう一個は短いがバラバラな感じ
まあ、どちらかに統一されていれば良いのかと思う。
(上記の方がいいかなぁ。)
消費税の場合
shouhizei_ritu_start_dt 消費税開始日
shouhizei_ritu 消費税率
shouhizei_gaku 消費税額
shouhizei_flg
shouhizei_gaku_gukei
とするのか
zeiritu 税率 を軸として
zeiritu_start_dt 税率開始日
shouhi_zeiritu 消費税率
shouhi_zei 消費税(額)
shouhi_zei_flg
にするのか・・・
上記は統一感があるが長い、もう一個は短いがバラバラな感じ
まあ、どちらかに統一されていれば良いのかと思う。
(上記の方がいいかなぁ。)
2009年8月11日火曜日
名寄せ方法(HashMap)
①HeaderのHashMapを作成する。(HeaderはIDと項目を結びつける為用意)
HashMap hdrMap = new HashMap();
②DetailのHashMapを作成する。(Detailは項目を入れる為用意)
HashMap dtlMap = new HashMap();
③DetailMapにKeyと実際の値を入れる。
dtlMap.put(担当名,実際の値)
dtlMap.put(取引先名,実際の値)
dtlMap.put(日付,実際の値)
④今まででこのdtlMapの値があるかを判別
(担当名、取引先名、日付で同じデータがあった場合、IDを返す。)
id = hdrMap.get(dtlMap)
⑤ある場合はそのidの値を取得して登録
ない場合は自動採番して、新しいIDと項目を結び付ける。
hdrMap.put(dtlMap, id );
HashMap
②DetailのHashMapを作成する。(Detailは項目を入れる為用意)
HashMap
③DetailMapにKeyと実際の値を入れる。
dtlMap.put(担当名,実際の値)
dtlMap.put(取引先名,実際の値)
dtlMap.put(日付,実際の値)
④今まででこのdtlMapの値があるかを判別
(担当名、取引先名、日付で同じデータがあった場合、IDを返す。)
id = hdrMap.get(dtlMap)
⑤ある場合はそのidの値を取得して登録
ない場合は自動採番して、新しいIDと項目を結び付ける。
hdrMap.put(dtlMap, id );
2009年8月5日水曜日
SQLServerからCSVエクスポート
SQL Serverから
SQLを実行したデータをcsvでエクスポートする。
①データベースの所で右クリック
すべてのタスク、データのエクスポート
②バックアップ元を選択
③変換先でテキストを選択
SQLを実行したデータをcsvでエクスポートする。
①データベースの所で右クリック
すべてのタスク、データのエクスポート
②バックアップ元を選択
③変換先でテキストを選択
2009年7月27日月曜日
Firefox お気に入りアドオン
Firefoxのお気に入りアドオン
Firebug
debug機能を追加する。
FireGestures
Gestureを追加する。
All-in-One Gestures
Gestureの動作に色々な役割を追加する。
IE Tab
IEと同じレタリングで表示する。
iMacros for Firefox
ブラウザに動作を記録させ再生できる。
TabRenamizer
Tabの名前を偽装する。
Firebug
debug機能を追加する。
FireGestures
Gestureを追加する。
All-in-One Gestures
Gestureの動作に色々な役割を追加する。
IE Tab
IEと同じレタリングで表示する。
iMacros for Firefox
ブラウザに動作を記録させ再生できる。
TabRenamizer
Tabの名前を偽装する。
2009年7月17日金曜日
HDR/DTLパターン
HDR/DTLパターンにするか横の関係にするかで凄い悩んだので
基本に戻り、どのような場合にHDR/DTLにするか考えた。
・HDR/DTLはHDRを元にDTLが作成されている。
つまり、HDRが削除されたら、DTLも削除される関係。
・HDRに対してDTLが複数存在する。1:多の関係
当たり前と言えば当たり前だが基礎に戻って考えるとすっきりする。
基本に戻り、どのような場合にHDR/DTLにするか考えた。
・HDR/DTLはHDRを元にDTLが作成されている。
つまり、HDRが削除されたら、DTLも削除される関係。
・HDRに対してDTLが複数存在する。1:多の関係
当たり前と言えば当たり前だが基礎に戻って考えるとすっきりする。
2009年7月9日木曜日
DBの項目を並び変える方法
postgresでDBの順番を並びかえる方法
新規カラム追加時もこれを応用すれば適性な位地にカラムを入れる事ができる。
--1.元テーブルからバックアップ用テーブルを作成
CREATE TABLE test_table_bak AS (
SELECT * FROM test_table
);
--2.元テーブルを削除
DROP TABLE test_table CASCADE;
--3.カラムを追加した新テーブルを作成
CREATE TABLE test_table
(
columnA integer,
columnB integer,
columnC integer
);
--4.バックアップ用テーブルから新テーブルにデータを挿入
INSERT INTO test_table(
columnA,
columnB,
columnC
)
(select
columnA,
columnB,
columnC
FROM test_table_bak);
--5.バックアップ用テーブルを削除
DROP TABLE test_table_bak;
新規カラム追加時もこれを応用すれば適性な位地にカラムを入れる事ができる。
--1.元テーブルからバックアップ用テーブルを作成
CREATE TABLE test_table_bak AS (
SELECT * FROM test_table
);
--2.元テーブルを削除
DROP TABLE test_table CASCADE;
--3.カラムを追加した新テーブルを作成
CREATE TABLE test_table
(
columnA integer,
columnB integer,
columnC integer
);
--4.バックアップ用テーブルから新テーブルにデータを挿入
INSERT INTO test_table(
columnA,
columnB,
columnC
)
(select
columnA,
columnB,
columnC
FROM test_table_bak);
--5.バックアップ用テーブルを削除
DROP TABLE test_table_bak;
2009年7月7日火曜日
2009年6月29日月曜日
2009年6月26日金曜日
2009年6月23日火曜日
LinuxOsのバックアップ方法
WindowsではTrueImageが一般的だが、
Linuxではフリーツールのmondorescue等でバックアップ可能、
バックアップコマンドでOSのISOイメージを作成し、
DVDやHDDに保存する事ができる。
コマンドは
/usr/sbin/mondoarchive -Oi -g -L -N -s 4200m -E "バックアップから除外するディレクトリ" -d "isoファイル保存先ディレクトリ"
Linuxではフリーツールのmondorescue等でバックアップ可能、
バックアップコマンドでOSのISOイメージを作成し、
DVDやHDDに保存する事ができる。
コマンドは
/usr/sbin/mondoarchive -Oi -g -L -N -s 4200m -E "バックアップから除外するディレクトリ" -d "isoファイル保存先ディレクトリ"
2009年6月9日火曜日
2009年6月5日金曜日
DBの命名規則
DBのカラムの名前はできるだけ統一した方が良い。
気をつける為に失敗例を一例
例)
金額 → hacchuu_gaku, hacchuu_kingaku
量 → hacchuu_suu, hacchuu_suuryou
名前 → tantou_name, tantou_mei, tantou_nm
最初に付ける場合どちらでも良いと思われるが、日本語名にあわせるのが良いと思われる。
(日本語名が発注金額か、発注額なのか)
また日本語名も統一する方が良いと思われる。
javascript:void(0)
また合計の場合
金額 → hacchuu_goukei_gaku, hacchuu_goukei_kingaku
等ずれが出やすいので注意が必要である。
・ルールとして
id → 数値(自動採番)
cd → 文字列型
等できるだけ統一した方が良いと思われる。
・省略パターンとして
コード → cd, code
名前 → nm, name
請求 → seikyu, seikyuu
等ずれがない用注意が必要である。
気をつける為に失敗例を一例
例)
金額 → hacchuu_gaku, hacchuu_kingaku
量 → hacchuu_suu, hacchuu_suuryou
名前 → tantou_name, tantou_mei, tantou_nm
最初に付ける場合どちらでも良いと思われるが、日本語名にあわせるのが良いと思われる。
(日本語名が発注金額か、発注額なのか)
また日本語名も統一する方が良いと思われる。
javascript:void(0)
また合計の場合
金額 → hacchuu_goukei_gaku, hacchuu_goukei_kingaku
等ずれが出やすいので注意が必要である。
・ルールとして
id → 数値(自動採番)
cd → 文字列型
等できるだけ統一した方が良いと思われる。
・省略パターンとして
コード → cd, code
名前 → nm, name
請求 → seikyu, seikyuu
等ずれがない用注意が必要である。
2009年6月4日木曜日
DBの履歴管理
削除された最終データを保持する為には、
IDの他に連番のPKを付ける必要がある場合がある。
(同じIDに再度データを置きたい場合)
例)
連番1 商品ID 1 削除フラグ ON ←削除済みデータ
連番2 商品ID 1 削除フラグ ON ←削除済みデータ
連番3 商品ID 1 削除フラグ OFF ←最新データ
またこの仕組みを利用すると、更新時に最後のデータの削除フラグをONにして、
最新のデータをインサートする事により、履歴管理もできる。
ただし、期間でデータを管理したい場合は場合は別に開始日・終了日カラムを
用意した方が良いと思われる。
IDの他に連番のPKを付ける必要がある場合がある。
(同じIDに再度データを置きたい場合)
例)
連番1 商品ID 1 削除フラグ ON ←削除済みデータ
連番2 商品ID 1 削除フラグ ON ←削除済みデータ
連番3 商品ID 1 削除フラグ OFF ←最新データ
またこの仕組みを利用すると、更新時に最後のデータの削除フラグをONにして、
最新のデータをインサートする事により、履歴管理もできる。
ただし、期間でデータを管理したい場合は場合は別に開始日・終了日カラムを
用意した方が良いと思われる。
2009年5月28日木曜日
SQLでWhere文を可変にする。
isnullが使える場合は
select * from foo where isnull(name,'') = isnull((case when @x is not null then '太郎' else name end),'')
postgresSQLの場合
COALESCE(A,0) = COALESCE((case when A is not null then B else A),0)
でいける。
select * from foo where isnull(name,'') = isnull((case when @x is not null then '太郎' else name end),'')
postgresSQLの場合
COALESCE(A,0) = COALESCE((case when A is not null then B else A),0)
でいける。
2009年5月25日月曜日
2009年5月19日火曜日
2009年5月13日水曜日
2009年4月21日火曜日
サービスの自動起動、起動
chkconfig --list
で現在のサービスを確認する事ができる
webアプリ開発で良く使いそうなサービスは以下の三つ
・sshd
・httpd
・tomcat5
chkconfig sshd on
でsshd等起動時に自動で起動するようにできる。
service shhd start
でsshの起動をする事ができる。
で現在のサービスを確認する事ができる
webアプリ開発で良く使いそうなサービスは以下の三つ
・sshd
・httpd
・tomcat5
chkconfig sshd on
でsshd等起動時に自動で起動するようにできる。
service shhd start
でsshの起動をする事ができる。
2009年4月9日木曜日
楽々FWのパラメータの渡し方
サーブレットから渡ってきたパラメーターを
遷移先の画面で
に入っている項目を使用してwhere句で処理する仕組み、
またに入っている項目が設定されたテーブルに直に入っていないと、
whereで選択されないので注意が必要となる。
遷移先の画面で
に入っている項目を使用してwhere句で処理する仕組み、
また
whereで選択されないので注意が必要となる。
2009年4月6日月曜日
2009年3月30日月曜日
2009年3月24日火曜日
ソフトのインストール
・現在インストールされているソフトの確認
rpm -qa --last
(--last'オプションを追加することにより最近インストールされたパッケージから順に表示することができる)
・ソフトをインストール/削除
yum install パッケージ名
yum remove パッケージ名
またyumコマンドはFedoraには初期でインストールされてるが、されていない場合
rpm -q yum
でダウンロードできる
rpm -qa --last
(--last'オプションを追加することにより最近インストールされたパッケージから順に表示することができる)
・ソフトをインストール/削除
yum install パッケージ名
yum remove パッケージ名
またyumコマンドはFedoraには初期でインストールされてるが、されていない場合
rpm -q yum
でダウンロードできる
2009年3月19日木曜日
2009年3月12日木曜日
登録:
投稿 (Atom)