トップページ | 2005年12月 »

2005年11月30日 (水)

匿名でのコメント投稿を許可する

私のblogは特に閉ざすつもりもなく、
お気軽にTB、コメントいただければよいと思っていますが、
「無差別エロ」TBがあったりして、
対応を試行錯誤しています。

そこで、

ブログ > 設定の変更 > 表示設定 > 匿名でのコメント投稿を許可する

の設定を、デフォルトonなのをoffにしてみたんです。

こちらの意図としては、あくまで、
無差別エロを排除するだけのつもりなので、
こちらの管理時に閲覧できればよいだけなのですが、
通常の表示結果を見てみると、
メールアドレスがそのまま晒されているようです。

恐らく、テンプレートを修正すれば、
メールアドレス入力を強制しながら外部出力時には非表示、
ができると信じていますが、
現状そうなっていない以上、設定をonにせざるを得ません。

上記の設定がコントロールパネルだけで可能なら、
コメントいただくと助かります。
あと、テンプレート修正しても無理、とか。

ひょっとして、
私のココログはプロなのでテンプレート修正できますが、
フリーとかだと融通利かないのでしょうか!?

まあ、どこまでメールアドレスの検証処理しているのか分かりませんが、
正直者な弱者(?)だけがバカを見るような状態にはしたくないですね。

| | コメント (0) | トラックバック (0)

2005年11月28日 (月)

パスワード文字数の制限

最近はネタになるような技術的なハプニングがないkazzyaです。

さて、最近は銀行のATMにカメラが仕掛けられたり、
情報セキュリティの関心が高いですよね。

ネットを使っていると、
色んなところでIDとパスワードを入力することになります。
やがて、どこがどのID!?ってなことに…

多くの人が、自分的にはある程度変更しても記憶から辿れるという、
ID、パスワード(特にパスワードですね)のフレーズがあると思うのですが、
それが、向こうのシステムの仕様で、使えなかったことありませんか?
あれ、困りますよね。
特に、文字数の下限で引っかかるならまだしも、
上限で引っかかると萎えますね。

不特定多数の方が使用するシステムを設計する場合、
パスワードの上限は限りなく大きく取りたいと考える次第です。

| | コメント (0) | トラックバック (0)

2005年11月21日 (月)

Google Analytics、キタコレ

設置して1週間弱でしょうか、ようやくレポートが反映されていました。
視覚的にこれだけ見せられると説得力あるというか何というか…
まあ、無料ですし、モルモットになっているのでしょうが、
よろこんでなりますね、これは。

アンケートにお答えいただいた方の中から
抽選でn名様に図書券を差し上げます。
発表は発送をもって…
なんていうのにはあまりそそられないのですがね。
くじ運ないもんで。(笑)

色々見て回りながらこの記事書いていますが、
皆さんお使いになられているのでしょうね、
やたらと応答に時間がかかりますね…
文句言えませんワナ、タダですから。

| | コメント (0) | トラックバック (1)

2005年11月18日 (金)

行きはよいよい帰りは…

朝からハマりまくっていたkazzyaです。ようやく落ち着いたのでメモランダム。

今日はとある検索処理の必須項目を任意入力にして欲しいという修正です。

入力チェック外せば済むだけかな、と軽く考えていたのですが…

その機能のプレゼンテーション層からインテグレーション層まで一通り修正しました。

一番ハマッタのは、SQLの抽出条件を動的に操作する部分。

元々必須項目で、入力がある時/ない時の分岐がなかったので追加し、動作テスト!

「列索引が無効です。」

ハ?何のこと?Webを調べます。

どうもPreparedStatementのプレースホルダの数と、設定している実データの数が合っていない模様。

Transfer Objectのその項目を調べます。

(このシステムでは各層に同じようなTransfer Objectがあって、層をまたぐときにデータがセットされていきます…これってTransfer Objectという用語を使うとまずいのかな)

とある層からとある層の変わり目で入力したはずの値がnullに変わっています。

こうなったら、そのTransfer Objectのクラスまで遡っていくしか無いわけです。

setterメソッドで何か操作しているのか?ということで。

何もしてませんでした。気持ちいいくらい。

じゃあ何が問題なんだ、と途方にくれながら画面をぼんやり見つめていると…

ん?何か似たような名前のメソッドがあるな…

そうです、検索条件を渡す(行き)のと、検索結果を返す(帰り)ので同じクラスを使うのですが、それぞれ別に定義してあったんですねぇ。

private String hoge;

private String mHoge;

public void setHOGE(String) {...}

public void setHoge(String) {...}

public String getHOGE() {...}

public String getHoge() {...}

みたいな感じで。

各層の受け渡しの修正をする時に、私が「行き」のデータを渡さないといけないのに、「帰り」のgetterメソッドでデータを取り出してセットしていたために、nullになっていたのです。

ウーン、ウーン…こんな実装って普通なんだろうか…

行きと帰りで同じ「インスタンス」を使いまわすような実装にはなっていないんだけど…

Eclipse使っていたら、"[変数名].get"と入力してリストされるメソッドを上下キーで選んでEnter押すんですけど、似たような別のメソッドが定義されていたのは気づかなかったな。

| | コメント (0) | トラックバック (0)

2005年11月17日 (木)

Javaプロジェクトでチェックアウトできない?

CVSリポジトリの管理自体は前からの名残でEclipse2.1.2で行っているのですが、開発はEclipse3.1.1で行っています。(単なる新し物好きです)

自分は払出しなんぞせずに直接リポジトリから「別名チェックアウト」でJavaプロジェクトとしてチェックアウトしたいのですが、仕方が分かりません…

アイコンに「J」が付かないんですよね…

これって、リポジトリにimportする段階でEclipse使ってやらないとできないとか、制約あるんでしょうか?

importはコマンドプロンプトからやりましたし、リポジトリーと同期化した時に相違として表示される.projectファイルなんかは、.cvsignoreに登録しています。(これがまずい?)

元々Antでビルドするので、シンプルプロジェクトでも、プロパティー→ビルダー→新規でAntビルド定義すればビルドはできるんですが、ソース上で「宣言を開く」とかをしても、Javaプロジェクトでなかったら、

20051117T185400  なんて出てしまいます。

とりあえずは、チェックアウトしたプロジェクトのソースフォルダを参照する「だけ」のJavaプロジェクトを作っているのですが、あまり美しくないですよね…

| | コメント (0) | トラックバック (0)

コンストラクタのパラメータ数

  1. メンバ数数十個のデータオブジェクトがあります。
  2. 検索、登録、更新用にパラメータ数の異なるコンストラクタが定義されています。
  3. 全てのメンバについて、setter/getter定義済みです。
  4. (ベタなJDBCなんですが)ResultSetデータへのアクセスは、インデックスアクセス必須です。

この状態で、とあるデータのマッピング変更(例えば、SQL3番目のカラムを、

元々Hogeクラスのfromフィールドに入れていたのをtoに入れ、

SQL5番目のカラムをtoからfromに入れ替える)が発生しました。

元の実装は数十個のパラメータを引数に取るコンストラクタで、

new Hoge(
rs.getString(index++),
rs.getInt(index++),
  :
  :
(以下略)
)

ってな感じだったんですが、皆さんならどう修正されます?

  1. コンストラクタの実装内容を変更する
    public Hoge(a lot of values...) {
    this.from = value5;
    this.to = value3;
      :
      :
    }
  2. 変数indexの値をマジックナンバーに変更し、該当箇所を入れ替える
    new Hoge(
      :
    rs.getString(5),
      :
    rs.getString(3),
      :
    )
  3. デフォルトコンストラクタを呼び出し、ResultSetのアクセスはそのまま、
    setterメソッドの呼び出し順を調整する
    hoge.setTo(rs.getString(index++));
      :
    hoge.setFrom(rs.getString(index++));
  4. SQLを変更する(5番目のカラム、3番目のカラムを入れ替え)

私、3のようにに変更したんですがね。

「全メンバを引数に取るコンストラクタを定義する。」

というポリシーはオブジェクト指向的?にありな理論なんでしょうか?

教えて、偉い人!

| | コメント (0) | トラックバック (0)

ココログにGoogle Mapsをぶち込む。(STB)

※(STB)はSelf Track Backのつもり…

Google Mapsで鈴鹿サーキット試走 に「インスパイア」されて、

早速Google MapsのKeyを入手しました。

ココログのサイドバーに組み込もうと試行錯誤しているのですが、

iframe使わない方法って普通にありますかね?

AdSenseやAnalyticsのように、scriptタグをページに埋め込めればよいだけなら、

ココログで特に問題ないんですけど、

XHTMLに準拠した内容を埋め込まないといけないんですよね?これ。

scriptタグ付近だけを埋め込んでテストすると、

20051117T143700 なんてダイアログが出てえらいことになりました…

iframeはXHTMLでもあるようなので、特に気にしなくていいのかな…

もう、クライアント側の流れに追いついていない自分が居て困りますね…

頑張って追いかけないと。

| | コメント (0) | トラックバック (0)

メソッドシグニチャの変更

リソース管理の仕事に阻まれて機能追加の実装が進まないkazzyaです。

現在の参加プロジェクトでは、

めいめいCVSリポジトリからチェックアウト、修正、コミット、ではなく、

払出し(って一般的な用語でしょうか?)、修正、リリース依頼という形で、

ソースの修正が行われています。

自分が一応リポジトリの管理者ということなので、

リリース依頼が来ると、どんなにファイル数が多くとも、

とりあえずリポジトリのソースと比較するわけです。

(内容までは見ませんが、相違を見て、

デグレードか何かが発生していそうな「臭い」がないか確認するだけです)

その確認の過程でふと思ったのですが、

機能追加にまつわる修正で、メソッドシグニチャの変更がガンガン行われています。

以前のシグニチャのメソッドに修正を加えているので、

もう今までのシグニチャのメソッドは残っていません。

私は途中参加の身なので、

そのような大胆な修正はやりづらいのですが、

当たり前なんでしょうかね?

私がやるとすれば、

前のシグニチャの分は残したままで(@deprecatedを付加?)、

新たに変更分のメソッドシグニチャで実装するような気がします。

Eclipseなんかでは呼び出し元をピックアップできたりするので、

それで他から呼ばれていないことを確認したり、

プロファイラなんかで全スルーテストを行って、

影響がないことを確認した上で、

メソッドシグニチャを変更しているのかもしれませんが…

その割にはプロパティのファイルパスとか、

DBのテーブル名の誤字を修正して、と依頼しても、

「動作が保証できない」とかって突っぱねられたんですが。

| | コメント (0) | トラックバック (0)

2005年11月16日 (水)

Google Mapsで鈴鹿サーキット試走

Ajax関係調べていたらこんな試みをされているのを発見。

素晴らしすぎますね。

私の仕事場の!?環境で遊ばせていただいたところ、

画像の更新が遅れ気味で、道が見えない状態が多く発生しました。

Google Maps、キーワードとしてはよく聞きますし、

今朝も自宅近辺見たばかりですが、

負荷分散ってなされているんでしょうか?

Googleのサーバリソースだけなんでしょうかね?

sourceforgeみたく、ミラーリングできればもっと思い切ったことできそうですね。

(ごめんなさい、知識不足で勝手な憶測で書いています)

Google Analyticsしかり、Googleさん、無料ですごすぎですね。

これ、軌道に乗ったら有料化、とかやめて欲しいな…

基本は広告収入で、というビジネスモデルならまだいいですが。

Google Mapsでは、

擬似空間として勝手に広告内容上書いたり、

新たに看板作ったりして…

P.S. Google Analytics、まだデータが反映されないようです…

| | コメント (0) | トラックバック (2)

JavaScript、嫌いです…

先ほどの記事で行った展開方式でデバッグしているため、

今日は割りとサクサク実装が進みます。

さっき述べたとおり、画面周りのJavaScriptいじってるんですが、

好きじゃないんですよね、クライアント側のスクリプト言語って。

型付けの緩い言語ってもう一つ覚えづらくて…

それにブラウザによって仕様が違いすぎるし。

(ちなみに、今回のシステムはIE6限定です)

でも、最近はAjaxなんて面白そうなギミックも出てきているし、

これを機会に勉強しないとなと思っている次第です。

で、修正している部分というのが、

複数のcheckboxのonClickに応じて、

連動するtextareaの内容を編集する(文頭に特定の文言を付加する)のですが、

<input name="hoge" type="checkbox" onClick="javascript:func(this)">

とすると、JavaScriptのfuncでのthisって、

formオブジェクトの下にぶら下がるelements配列の一つになるんですよね?

で、連動するtextarea引っ張ってこないといけないので、

その親のformオブジェクトも取りたいなと思って、

elements[0].parentNode とか参照したんですが、

どうも違うらしい…

調べたら、this.form ってやるんですね。

フーン、って感じでした。(笑)

DOMの構造って、慣れて知識蓄えるしかないんでしょうかね!?

ポケットリファレンスが手放せませんよ??

でも、JavaScriptにもよい部分を見つけました。

正規表現周りが割と気軽に実装できる。

といいながら、うまくいかずにハマったんですが…

var regExp = new RegExp(/hoge/);

とかっていう記述の仕方、すごく違和感感じるんですが、

もう私って時代遅れなのかしらん?

この正規表現文字列をArrayオブジェクトで持っていて、

var regExp = new RegExp(array[0]);

とか、

var regExp = new RegExp("/"+array[0]+"/");

とかやっても、うまくいかんわけですよ。

compile()メソッドを使うんですねぇ。

var regExp = new RegExp();

regExp.compile(array[0]);

なんて。

ハァ、勉強になったなっと。

実際のところ、このJavaScriptはJSPの一部で、

JavaScriptのform名など、

<%= formName %>とかで書き換えたりしているのですが、

名前空間って言うんでしょうか、コンテキストって言うんでしょうか、

コードが解釈、処理される空間を把握するのに苦労するんですよね…

J2SE5.xのenumなんかと戸惑い方がよく似ています。

ヤベー、頑張ってベンキョウシナイトナっ!

| | コメント (0) | トラックバック (0)

展開されたアーカイブ ディレクトリ

展開されたアーカイブ ディレクトリ

今、画面周りのJavaScript部分を修正しています。

JavaScriptもJSPとして実装されていますが、

開発者が提供するAntのスクリプトでビルドすると、

必ず全ソースファイルリコンパイルされるので、

上記の方法でUSERDOMAIN_HOME/applicationsフォルダに

展開しようかと思って、Eclipseのプロジェクト内に存在する

最新の.ear(app.earとしましょうか)を

USERDOMAIN_HOME/applicationsフォルダにコピーしようとしたら…

20051116T143200

なんてダイアログが出ました。

あれ、前もこの方法やったことあるのにな…

と色々考えたり調べたりしたところ、

原因は、「前もこの方法やったことあったから」でした。

そう、app.earという「フォルダ」がすでに存在していたため、

ファイルをコピーできなかったのでした…

フォルダ同士あるいはファイル同士の場合は上書き確認が出ますが、

種類が異なるとこういうエラーが出るんですね。

前やったときは、確かEclipseのプロジェクトからローカルのWebLogicの

USERDOMAIN_HOME/applicationsフォルダに展開するための

Antスクリプトを書いた気がするのですが、

今やどこへ行ったか、行方不明です…

| | コメント (0) | トラックバック (0)

2005年11月14日 (月)

布団が吹っ飛んだ!?

現在参加しているプロジェクトのリソース管理は、

CVSサーバにCVSNT2.5.01、

CVSクライアントにEclipse2.1.2(なぜ今頃、と言われそうですが)

を使用しています。

今日、システムで利用するjarライブラリファイルの

バージョンを上げようと、まずはブランチの方をコミットしました。

次に、トランクにマージしようとEclipseで相違を表示させたまでは

よかったのですが、そのファイルをソースファイルよろしく

ダブルクリックすると、砂時計のまま固まってしまいました。

(テキストファイルの場合は相違が左右に分かれて表示される)

仕方がないのでプロセスを殺し、

再度Eclipseを起動して「リポジトリと同期化」すると、

相違として1週間ぐらい前までのコミットファイルたちも表示されてしまいました。

うわ、やべ、データ吹っ飛んだ?

とややビビリながら更新をかけると無事復旧したので、

リポジトリが壊れてはいなかったようです。

Subversionで同様の操作をしてどうなるか分かりませんが、

バイナリ形式のファイルの管理はSubversionの方が優れているなんて

聞きますので、CVSから切替えたいところなんですが…

やることいっぱいありすぎて、手が回りませんっ!

| | コメント (0) | トラックバック (0)

週明けの午前中は…

私の今の勤務地はいわゆる客先で、

さらに所属企業のプロパーではないので、

朝一で客先に出勤します。

対して、プロパーの方々は月曜日の午前中は、

社内業務などでいないことが多いんですよね。

そういうときに、何か問題が起こると、

直接私のところにくるわけです。

それはいい(そのために私のような人間がいると言ってもいい)のですが、

知識の共有化ができていないため、

対処方法が分からないのです…

今回、直電で聞いて対応していますが、うまくいきません。

まだテスト中だからよいものの、

稼動段階になったら恐ろしいので、

最低限運用ドキュメントは用意してもらわないと。

(形だけのドキュメントではなくて、です)

とはいうものの、結局後々システムをお守りするのは、

私という方針で動いているようなので、

自分が中心で作らないといけないのですよね…

仕様書にもろくすっぽ書かれていない、

コンソールやログに何も出力されない、

でも正常に動いているようには見えない。

元々の開発スケジュールに無理があったようなので、

基本後回し後回し、

運用でカバーできるところは運用でカバー、

みたいな感じで今まで来ています。

結局ソースコード見て把握しないといけないのか…

この工数は当初の見積もりには含まれていませんよ!?

| | コメント (0) | トラックバック (0)

2005年11月11日 (金)

MVCモデルとは?

そんな、講釈たれるほど知識があるわけではありませんが…

今、私が参加しているプロジェクトは、

途中参加のシステムなのですが、

私が経験した中では最大級のシステムです。

概要は、

  • 実装言語はJava(JDK1.4.2_05)
  • アプリケーションサーバはWebLogic8.1
  • データベースはOracle9i

という感じです。

今日はこんなことがありました。

他の方が実装した機能追加(画面周りです)にちょっとした不具合があり、

急遽私が修正することになりました。

画面はほぼ純粋な(クラシックな?)JSPで実装されていて、

スクリプトレットとHTMLタグがそれはもう何とも言えず「すぱげっち」なんです。

確か設計書にはMVCモデル2とか謳っていたと思うのですが…

ビューにこんなにロジック入れないでよ、と思うわけです。

そこで、気を利かして(これがまずかった)、

  1. スクリプトレット
  2. HTMLタグ
  3. スクリプトレット
  4. HTMLタグ
  5. 以下略…

的な共通ヘッダとしてほぼ全ての画面からincludeされるJSPファイルを、

2.と4.の可変部分を、

1.と3.をまとめて、そこで定義したローカル変数に格納し、

後で出力するような修正を入れて、

ちょっと可読性を上げたんです。

そしてテスト環境にデプロイしたところ、

今度は別の画面でJSPのコンパイルエラーが出てしまいました。

理由は、ローカル変数名の重複です。

ただでさえJSPにロジック入れすぎているのに、

さらにincludeディレクティブでファイルをincludeしまくり。

JSP→Servlet変換で結局1つのメソッドに詰め込まれるので、

そりゃ、衝突しますよね、安田大サ…いや、ベタな命名していたら。

そりゃ、確認しきれなかった私が悪いのですが、

デプロイして確認しなければ分からないJSPに、

より多くのロジックが入っているより、

ビルド前にコンパイルエラーになるServletにロジック入れた方が

心臓にはよろしいことでしょう…

以前には、こういう状況を打破したくて、

(Eclipseでデバッグしやすくなるし)

JSPのプリコンパイルにチャレンジしたのですが、

上記のようにincludeディレクティブで「含まれる側」のJSP

(単体ではJSPとして成立しないコード片)

の拡張子も同様に.jspのため、

WebLogicのJSPプリコンパイラに通すと、

ファイルが多いためそれはもうエラー出まくるんです。

オプションとして渡すべき、

完全なJSPのリストなんて画面数多すぎてワカリマセン。

何が原因か知りませんが、OutOfMemoryErrorが出たりもしましたし…

私は、どちらかというと保守要員として加入しているので、

今の状況より保守性が下がるようなソースにはしたくなく、

「できれば」リファクタリングしたいのですが、

なかなか全てを把握することができず、

踏ん切りがつかずに悶々としている次第であります…

| | コメント (0) | トラックバック (0)

はじめのつぼやき。

ココログプロに変更したのを機に、

ある程度分類できそうなテーマごとにblogを作成しています。

仕事ネタと遊びネタがごっちゃなblogもいいですが、

カテゴリー決めるの難しくなりそうなので…

で、このblogは主に私の仕事上の覚え書きをズラスラっと書いていきます。

そこで真っ先に作ったカテゴリーは、「つぼやき」です。

私の他のblogでは、

そのblogのテーマとしても特に分類できないようなネタは、

「つぶやき」としてカテゴライズしようとしていますが、

どうもこのblogは「ぼやき」ばかりになりそうなので、

合体させてみました。

何か、もうすでに同様の使い方されてる人もいそうやなぁ。

でも、別にここのをパクった!とかはありませんので。

もう、最近は「安田大サーカス」になったもので…

(♪ドン、ドン、ドン、ベタベッタ…)

ということで、守秘義務を最大限守って書いていきます~。

| | コメント (0) | トラックバック (0)

トップページ | 2005年12月 »