マンガでわかるデータベース

マンガでわかるデータベース

マンガでわかるデータベース

読み終えた。ブログで見かけて、データベースの一歩目というか一歩目の補助に向いてるとの表記があったため読んでみた。そのとおりだと思った。
「漫画+説明+ちょっとした問題」という構成なのでリズムに乗れるかもしれない。イメージを強くする意味で漫画は有用なのかもしれないが人によってはいらない人もいるんじゃないかなと思ったり...w
ACID属性とロックの話はとてもためになった。前者は情報処理試験以来で忘れてた。後者は仕事でもたまに出てくるが学んだことはなく。このへんわかると、実際に障害とかプログラム設計とかの場合に考えられる領域増えて有用だし楽しいだろうなとなんとなく思った。

リストボックスの同期、選択に対応する第三の値

ノローグ||前提||メモ

SAStrutsを使っていました。Strutsのラッパーのようなので、JSP(html)でStrutsのタグを用います。

やりたいこと

リストボックスを使っていて、そのリストが選択された時の「対応する値1」と「対応する値2」をブラウザ上だけで取得したいケースがありました。具体的に書くと、会社名を選択してもらって、それに会社マスタIDと会社略称を連動させブラウザ上で扱いたいケースです。正直実装はしたものの冗長な気とスマートじゃない気がして...

実装方法

実装方法ですが、会社名-会社マスタIDのリストの他に、会社略称-会社マスタIDのリストを隠して用意しました。個人的にこの時点で変な感じがするんですが、ブラウザからデータを返さずに行わなければならないため、htmlを読み込んでブラウザで表現した時点で、会社名と会社マスタIDと会社略称の3つが同じ要素順序でいる必要があると思い、この方法以外思いつきませんでした。

JSPはこうなっています。
	<html:select property="companyMstId" styleId="companies" errorStyleClass="err">
		<html:option value="">※選択して下さい</html:option>
		<c:forEach var="e" varStatus="s" items="${companies}">
			<html:option value="${f:h(e.companyMstId)}">${f:h(e.companyNameKj)}</html:option>
		</c:forEach>
	</html:select>
<%--companyAbbreviatedNameは会社略称--%>
	<html:select property="companyAbbreviatedName" styleId="companyAbbreviatedName" errorStyleClass="err" styleClass="vanish">
		<html:option value=""></html:option>
		<c:forEach var="e" varStatus="s" items="${companies}">
			<html:option value="${f:h(e.companyMstId)}">${f:h(e.companyAbbreviatedName)}</html:option>
		</c:forEach>
	</html:select>
そしてJavaScriptはこう。

jQueryもいます。

var ryakuArray = new Array();
//ID属性から会社略称のエレメント(?)を取得
ryakuArray = document.getElementById("companyAbbreviatedName");
//選択された会社名リストのインデックスを取得
var index = $("select#companies").get(0).selectedIndex;
//目的の会社略称をゲット
var ryaku = (ryakuArray[index]);
$(ryaku).text();

エピローグ

JavaScriptを扱うのは初めてだったので実現できただけで嬉しかったのですが、普通というか他の人はどうやるんだろうという疑問は起こりました。これでいいんだろうか...
また、面白かったので「初めてのJavaScript」を買いました。興味が出ていいことです。でも読む時間がありません。どうしてもプライオリティが低いので割り当てる時間が足りません。まずは「Head First Java」読みきらねば...

開発_社内サービス

開発中。
windowsserver2003+postgreSQL+apacheTomcat。
Java+SAStruts+S2JDBC
メインの構成はこんなんで、JSPJQuery使用。html4+css2。
範囲は広い。特にStrutsのタグ本日はまった。最初はタグだからhtmlかと思ったんだけど、タグなだけでは特定できなかった(笑)$もJQueryのものだと思っていなくて時間使うし。分からないことは多いけど、単に無知なだけと認識してるので調べていけば対応できる。対応しないと教えながらやっていくことができないので困るんです><
といか「head first java」と「プログラミング言語Java」よみこなしたい^q^

java開発環境作成

開幕言い訳

色々言及するけど整理・深堀してない。

前提と全体と単語

開発にはjavaコンパイラと実行環境の2つが必要。JDKが2つセットになっていて、JREが実行環境のみらしい。ちなみに

だそうです。

ダウンロード

まずはJDKのダウンロードから始める。(macappleが作って勝手に入れてくれてる気がする。)winについてはJDKなどでググッてsunとかからおっことしてくる。javaSEとEEがあるけど、正直EEはいろいろ詰まってエンタープライズな感じとしか認識してない。要調。とりあえずjavaSEを落とした。ダウンロードに際して登録云々言われるかもしれない。どうも日本語サイトから進めると要求されるみたいで、英語のサイトからダウンロードすると要求されずにダウンロードできたと思う。

インストール

ダウンロードしたら好みのディレクトリに展開する。そして環境変数を設定してパスを通すことでダウンロードしてきたjavaが使用できるようになる。パスpath(なんだか探しづらい。win7は特に)は"\jdk1.6.0_26\bin"に通してあげる。バージョンは僕の作業当時のもの。
DOSプロンプトで

  • java -version」
  • 「javac -version」

でバージョンが揃ってるか確認する。前者が実行環境で後者がコンパイラ
以上でインストールは終わり。正しい単語をググれば全て解決できると思う。

ちなみに

ちなみに同じディレクトリに入ってるsrc.zipを解凍するとコアAPIのソースが読める。

次はeclipseを設定する。正直テキストエディタで十分だろうと思ったけど、マジでeclipse素敵なので使用するべき。重たいけど。

macのディレクトリ表記

macディレクトリの表記を見ててよく分からないことが多く凹んでたんだけど助かったエントリ。
http://d.hatena.ne.jp/liquidfunc/20090302/1236015758

これは教えてもらわんと新規参入者には厳しい…

CentOS

とりあえず5.6をダウンロード。7つのファイルに分かれている(CD版)。
ダウンロードしたあとはそれが壊れていないかチェック。windowsにデフォで入ってるコマンドではないみたい。
http://oshiete.goo.ne.jp/qa/3012522.htmlを参照して解決した。ここまで。

重複チェックagain

重複チェック。かなりの確率で出てくる事になるだろうロジック。前にも重複チェックは書いていて、その時には一度サブファイル表示したものを①配列に格納して②LOOKUPしていた。
が、2ステップじゃなくいっぺんにできると言われた。頭いいなーと思いましたw
それはサブファイルから配列にしまうときにLOOKUPもやってしまうということ。ステップ数が減らせるし分かりやすい。

	S1STCD	LOOKUP	ARREY1  N  		90
			MOVE	S1STCD  ARREY1

これを繰り返すだけ。スマートやんなー。

別の面の話題だけど、ハンドリング難しいのは重複した二つの対象を反転させたい時。
「重複したもの2」を反転させるのは簡単だけど「重複したもの1」を反転させようとするとサブファイルの相対レコードNo.が変わってしまって連続した処理にしづらい。やれないこともないけど、二つの相対レコードNo.をハンドリングしないといけない。しかもこのときのサブファイルは1レコード中に2フィールドチェックするものがあり(振替マスタの表示で、元と先がセットで1レコードだった)、サブファイルの仕様としてどのレコードもフラグは共通なので、4つハンドリングしないといけなかった。
元コードのチェックで「重複したもの1」を反転させに行くと、そのレコードの先コードも重複チェックしないといけない。この時ばかりはサブファイルの仕様がうざったくてしかたなかった。
相対レコードNo.5でフィールド1と2のフラグがオン・オフの時に、相対レコードNo.2を読みに行くとなんで5と同じオン・オフが適用されなければいけないのか!気持ち的にはレコードごとにフラグ持ってていいだろと思う。
話を戻すと、解決策は、自分でサブファイルのレコードにフラグのオンオフ状況を非表示フィールドで持たせることだった。こうすれば反転させに帰った時も、もう一方のフラグがどうあるべきなのかきちんと分かるようになる。これができるから仕様はあんななのかなとも思った。