Today: Yesterday: Total: Online:
カテゴリー
その他
  • RSS1.0
  • RSS2.0
  • atom0.3
  • valid XHTML1.0
  • valid CSS2
  • Credit
RSSリーダーで購読する | この日記のはてなブックマーク数 | プロフィール
コメントが一番多い記事(233コメント):人の心理の裏をかくホームページ集客術:リピータになってもらうためには
ツイートが一番多い記事(94ツイート):ちょっと待て!twitterやfacebookに子供の写真を掲載する親達への警告
いいねが一番多い記事(574いいね):facebookスパムに要注意。なりすましの見分け方とアカウント乗っ取りの手口(2013年度版)

カテゴリー » Web/ミディリン November 03, 2006

HP更新遅れのお知らせ(今月は残業150時間くらいはいきそうです) ID:1162507681


かなり久々になってしまいましたが、
先月からあるプロジェクトに配属し
仕事がかなり忙しいです。


先月このプロジェクトに途中から入ったのですが
入った瞬間、これはやばいなと思いました。
案の定、火が噴いているプロジェクトです。


先週も休日出勤しましたし、
今日も明日も出勤し、連休もありません。
先月は残業100時間越えましたが
今月はこのペースで行くと残業150時間くらいいきそうです。


HPの更新も、投稿があったものを更新係さんなど
人任せの更新とプログラムによる自動更新でやっているのがほとんどで
昼休みもご飯を食べながら仕事をしているので
mixiなんかログインしている暇さえありません。


IT業界というのは、仕事の波があり
暇なときは本当に何もないのですが
忙しいときは、本当に休みがないと実感します。
忙しい人は残業200時間越えますものね。


仕事が忙しいのはどの業界でもあることですし、
お金ももらっていることですから
仕方ないなと割り切れますが


朝7時台にでて、夜12時に帰る生活が続くと
まず、子供に会えないのがとても残念です。
イヤなら会社辞めるしかないわけですが
平日会えない分、せめて休日くらいは子供と過ごさせて欲しいと思います。
私だけでなく、このプロジェクトに入っている人は
愚痴を言いながら(苦笑)皆さん休日出てやっています。


今、あるウェブ系のシステムを作っているのですが
機能が膨大の上、とにかく仕様が複雑で
理解しきれないところがある上、
プログラムも組んでいて難解です。


少し専門的な話になって申し訳ないのですが
システムはプログラムがJava、DBはOracle、
これはスタンダードです。
ユーザーがWebから入力した内容をPDFに出力、
ここまではよくあるシステムでしょう。


普通の検索システムなら、何かデータを検索するときも
DBにSQLを発行して
それをメモリに蓄えて、ループしてレコードを出して
結果を出力とできるのですが
レコードが600万件とかあるDBにアクセスして
PDFをアップロードした後、PDFの内容を解析して
その600万のレコードをコピーしながら、PDFから解析した内容と
差分を何個もあるフラグを見ながら、いろんな処理をぶちかますという感じです。
(いろんな処理というのは、
DBのテーブルを作成して(つまりcreate table)
レコードのインサートやアップデート、削除、テーブルのドロップやインデックスを貼る作業などを動的に行い
ユーザが入力する内容によってDBのカラムが違うので
DBのカラムも動的に作成。これを一アクションで行なう)
レコードの量がとても多く通常の方法が行えず(メモリがパンクして、検索できなくなる)
SQL上で処理を完結させることが必要なのです。


副問い合わせ(select文の中にselectがある)が
何重にもなっていて、さらにcase文で分岐し、同時にinsert・updateを行い、
1つの項目をいれるだけで、数百行のSQLになり、
項目が数百項目あると、それをJava上で項目の数だけSQLを連結しないといけないので
SQLだけで何千行から何万行というものになり、プログラムを組んでいるだけで
わけがわからなくなってきます。
ここに書いたのは機能のさわりの部分ですが
今まで、Web系の仕事は結構やってきましたが
こんな難解のシステムは初めてやりました。


というわけで、先月から休みもない状態なので
HP読者さんには申し訳ないですが
HP更新がスローペースになるのでご了承お願いいたします。

— posted by midilin @ 07:48AM | Comment (15) | TrackBack (1) 

カテゴリー » bat(バッチ) November 30, 2006

WinXPでバッチ終了後、MS-DOSが閉じないやり方 ID:1164851480


バッチの一番最後に「cmd」を入れる
1 / 2| 次のページ »

— posted by midilin @ 10:51AM

カテゴリー » JAVA November 22, 2006

デプロイされたEJBを使う ID:1164191533


int balance = 0;
try {
Hashtable env = new Hashtable();
InitialContext ctx = new InitialContext(env); //(1)
BankHome home =
(BankHome)PortableRemoteObject.narrow(
ctx.lookup("ejb/sample/Bank"),
BankHome.class); // (2)
Bank bank = home.create(); // (3)
balance = bank.balance(accountNumber); // (4)
bank.remove(); // (5)
} catch (NamingException ne) {
ne.printStackTrace();
} catch (CreateException ce) {
ce.printStackTrace();
} catch (RemoveException re) {
re.printStackTrace();
}


http://www.atmarkit.co.jp/fjava/rensai3/jboss04/jboss04.html
1 / 2| 次のページ »

— posted by midilin @ 07:32PM

カテゴリー » JAVA November 16, 2006

ファイルの存在チェック ID:1163677724


import java.io.File;

public class S010fileexists {

public static void main(String[] args) {
File existsFile = new File(args[0]);
System.out.print(existsFile.getName());
if (existsFile.exists())
System.out.println("は存在します");
else
System.out.println("は存在しません");

}
1 / 2| 次のページ »

— posted by midilin @ 08:48PM

カテゴリー » VirtualPC November 15, 2006

仮想ハードディスクを圧縮 ID:1163563853


仮想ハードディスクを圧縮する(Virtual PC 2004編)


(1)デフラグ
(2)C:\Program Files\Microsoft Virtual PC\Virtual Machine Additions\Virtual Disk Precompactor.isoをマウント
(3)シャットダウンして
[ファイル]→[バーチャル ディスク ウィザード]→既存の.VHDファイルの編集
ファイルを選ぶ。
「圧縮する」→「保存するファイル名」で任意の名前を選び、圧縮。
その後、圧縮前のファイルは削除


http://www.atmarkit.co.jp/fwin2k/win2ktips/745vhdcomppc/vhdcomppc.html
1 / 2| 次のページ »

— posted by midilin @ 01:10PM

カテゴリー » JAVA November 14, 2006

配列のコピー ID:1163503292


// source の 0 番目から source.length 個を destination の 0 番目からへコピーする
System.arraycopy(source, 0, destination, 0, source.length);
1 / 2| 次のページ »

— posted by midilin @ 08:21PM

カテゴリー » JAVA November 06, 2006

型変換・キャスト ID:1162789292


●文字列から数値型への変換
int型 int a=Integer.valueOf(str).intValue()
int a=Integer.parseInt(str);
short型 short a=Short.valueOf(str).shortValue()
short a=Short.parseShort(str)
byte型 byte a=Byte.valueOf(str).byteValue()
byte a=Byte.parseByte(str)
long型 long a=Long.valueOf(str).longValue()
long a=Long.parseLong(str);
float型 float a=Float.valueOf(str).floatValue()
float a=Float.parseFloat(str);
double型 double a=Double.valueOf(str).doubleValue()
double a=Double.parseDouble(str);

●数値から文字列への変換
int型 String s1=String.valueOf(intvalue)
short型 String s1=String.valueOf(shortvalue)
byte型 String s1=String.valueOf(bytevalue)
long型 String s1=String.valueOf(longvalue)
float型 String s1=String.valueOf(floatvalue)
double型 String s1=String.valueOf(doublevalue)

●float→int 型変換
int型への変換 float a=(float)1.9;
float b=(float)-1.9;
int c=(int)a;
int d=(int)b;
c=1,d=-1 となる。

●文字列のbyte型への変換
byte型への変換 String s = "123456";
byte b[] = s.getBytes();


●16進、8進、2進数の変換
Source int a = 100;
String s1 = Integer.toBinaryString(a);
String s2 = Integer.toOctalString(a);
String s3 = Integer.toHexString(a);
System.out.println("S1=" + s1 + " s2=" + s2 + " s3=" + s3);

String s4 = "0xFA";
int b = Integer.decode(s4).intValue();
System.out.println("b=" + b);

String s5 = "FF";
int c = Integer.parseInt(s5,16);
System.out.println("c=" + c);

String s6 = "10001";
int d = Integer.parseInt(s6,2);
System.out.println("d=" + d);

int e=-10;
System.out.println("e=" + Integer.toHexString(e));
Output S1=1100100 s2=144 s3=64
b=250
c=255
d=17
e=fffffff6
16進文字8桁で表現された数値をINTに変換
Source private static int convInt(String strInt){
if (Integer.parseInt(strInt.substring(0,1),16) < 8){
return Integer.parseInt(strInt,16);
}
String strSub = strInt.substring(1,8);
if (strInt.substring(0,1).equals("F")){
return -2147483648 + Integer.parseInt("7" + strSub,16);
}
if (strInt.substring(0,1).equals("E")){
return -2147483648 + Integer.parseInt("6" + strSub,16);
}
if (strInt.substring(0,1).equals("D")){
return -2147483648 + Integer.parseInt("5" + strSub,16);
}
if (strInt.substring(0,1).equals("C")){
return -2147483648 + Integer.parseInt("4" + strSub,16);
}
if (strInt.substring(0,1).equals("B")){
return -2147483648 + Integer.parseInt("3" + strSub,16);
}
if (strInt.substrin0,1).equals("A")){
return -2147483648 + Integer.parseInt("2" + strSub,16);
}
if (strInt.substring(0,1).equals("9")){
return -2147483648 + Integer.parseInt("1" + strSub,16);
}
if (strInt.substring(0,1).equals("8")){
return -2147483648 + Integer.parseInt("0" + strSub,16);
}
return 0;
}

2byteデータをintに変換
(括弧を使用して式の演算順序を明示的に指定する必要がある。)
Source int b;
byte a[] = new byte[2];
a[0]=(byte)0x80; a[1]=(byte)0xFF;
b=(a[0] <<8) + ((a[1])&0xFF);
System.out.println(b);

b=((a[0]<<8)&0xFF00) + ((a[1])&0xFF);
System.out.println(b);
Output -32513
33023

●浮動小数点関連
浮動小数点形式(IEEE754) float

double


floatをHEXに変換 float a;
a=(float)12.5;
String Hex=Integer.toHexString(Float.floatToRawIntBits(a));
System.out.println(Hex);

変換結果 a=12.5 41480000
a=3 40400000
a=2 40000000
a=1 3F800000
a=0 00000000
a=-1 BF800000

HEXをfloatに変換 String strFloat = "3F800000";
float a;
a = Float.intBitsToFloat((int)Long.parseLong(strFloat,16));


http://www.viste.com/Java/Language/language3.html
1 / 2| 次のページ »

— posted by midilin @ 02:01PM