Home > Archives > 2008-05

2008-05

コメント消しちゃったー!

先ほどid:dewaさんと打ち合わせしたときに、ブログを発見されたこととひがさんからコメント入ってましたよねーみたいな話があった。

どうやら迷惑コメントを山ほど削除したときに何も考えずに消してしまったよう。
ごめんなさいー!!

内容はこれですね。
実行メソッド名とプロパティ名が重複している場合はエラーにするようにしました

ありがとうございました!

[SAStruts]ボタン名とメソッドがうまく紐つかないと思ったけど。。。

  • 2008-05-15 (木)
  • Java

Actionが肥大化していったときに、メソッド名とパラメータ名でかぶっているものがあったみたい。

知ってる人にとっては当たり前の凡ミスなんだろうけど、一定以上の人数を集めて開発しようとしたときは気をつけないとなー。

※追記
ついでにもうひとつボタン名とメソッドが紐つかないケース。
HogeActionを呼ぶときのURLの最後は
「・・・/hoge/」
になるが、通常最後のスラッシュを省略でき、その場合indexメソッドが呼ばれる。
つまり以下のように
「・・・/hoge」
でも同じようにindexメソッドを呼び出すことができる。

しかし、もしボタン名によって呼び出すメソッドを変更したいとき
「<form action="・・・/hoge" method="post">」
のように最後のスラッシュが抜けていると、ボタン名のメソッドではなくindexメソッドが呼ばれてしまいうまく動かない。

s:formを利用していれば、自動的に最後のスラッシュを保管してくれるので問題ないが、JavaScriptからformのaction属性をいじったりするときなどは特に注意が必要。

[Python]2分探索

ビューティフルコードの7章で、この章を読み進む前に2分探索を実装しろと書いてあった。
ということでPythonで実装してみる。

最初に書いたコードはこれ。

PYTHON:
  1. def mybinarysearch(a, t, f):
  2.     n = len(a)
  3.     if n &lt;= 0:
  4.         return -1
  5.     if n == 1:
  6.         if a[0] == t:
  7.             return 0
  8.         else:
  9.             return -1
  10.     m = int(n / 2)
  11.     r = f(t, a[m - 1])
  12.     if r &lt;= 0:
  13.         x = mybinarysearch(a[:m], t, f)
  14.         if x&gt;= 0:
  15.             return x
  16.         else:
  17.             return -1
  18.     else:
  19.         x = mybinarysearch(a[m:], t, f)
  20.         if x&gt;= 0:
  21.             return m + x
  22.         else:
  23.             return -1

配列、検索対象、比較関数を渡す。
さすがにこれだと、いちいちlenを計算していたり効率悪すぎだし、コードも汚いのでもう少しましにする。

PYTHON:
  1. def mybinarysearch(a, t, f):
  2.     def func(array, i, n):
  3.         if n &lt;= 0:
  4.             return -1
  5.         elif n == 1:
  6.             if f(array[0], t) == 0:
  7.                 return i
  8.             else:
  9.                 return -1
  10.         else:
  11.             m = int(n / 2)
  12.             if f(t, array[m - 1]) &lt;= 0:
  13.                 return func(array[:m], i, m)
  14.             else:
  15.                 return func(array[m:], i + m, n - m)
  16.     return func(a, 0, len(a))

これで、配列中で対象に合致する最小のIndexが返るはず?

最小にこだわらなければこうなるかな

PYTHON:
  1. def mybinarysearch(a, t, f):
  2.     def func(array, i, n):
  3.         if n &lt;= 0:
  4.             return -1
  5.         m = int(n / 2)
  6.         r = f(t, array[m])
  7.         if r == 0:
  8.             return i + m
  9.         elif r &lt;0:
  10.             return func(array[:m], i, m)
  11.         else:
  12.             return func(array[m + 1:], i + m + 1, n - m - 1)
  13.     return func(a, 0, len(a))

この章の主題であるテストはまだちゃんとやってない。

これから考えてやってみよう。
再帰で書いてしまったので遅そうだけど、2分探索だったらあふれることはないだろう。

GWに読む本

080502_2049~02.jpg

2冊とも今日Amazonから届いた。
とくにビューティフルコードの方は読み切れなそうな気がするけど、GW中の楽しみが二つ増えたな。

[SIer]ITゼネコンをぶっつぶせ、夢物語じゃないよ

ひがさんの「ITゼネコンをぶっつぶせ」講演を聞いてきた。
内容は最近のひがさんのブログなどで語られている「Programming First Development」のこと。

で、感想+会場の雰囲気から感じた課題感をつらつらと書いてみる。

内容には激しく同意。
できるようになれば、そしてできる人材が育てば、SIerも生き延びるチャンスがあるかなと思う。
(このままだと死ぬと思っているかどうかによって、「生き延びる」という表現に違和感がでるかな?)

もちろん、課題はまだまだある。
契約形態、テストに対する考え方、どこまでドキュメントを書くか、そんな人材ほんとに育つのか?
まだまだ経験を積みながら考えなければならないことは多い。
でも、枝葉末節にこだわらず、本質的なメッセージをとらえば明るい未来が見える良い内容。

ここからは、会場の雰囲気から感じた課題感。

インタラクティブにやりたいという冒頭のひがさんの言葉通り質問や意見が飛び交う
ただし、質問の内容がどちらかと否定的な見方や穴を探すような見方が多かったのが気になる。
SIerの得意な態度だけど

こういうセッションに参加するというのは、どちらかというと課題意識の高い人たちだと思うから、もっと響くと思ったんだけどな。
今までのSIerのやり方を真っ向から批判しすぎて拒否反応がでるのかな?
話題を集める目的では過激な方が良いが、啓蒙という観点から考えるともう少し別のやり方を考えた方がよいのかもしれない。

LLな人たちの考え方や態度とは、かなり隔たりがあるのを感じた。
LLな人からすると、こんなの当たり前じゃない?って思う話も多いかなーと。

どちらにしても、現場の開発者、SIerの偉い人たち、発注者の三者を啓蒙していかなければ、取り組みは成功しない。

それぞれに対するメッセージはこんな感じかな?

1.現場の開発者
・楽しく開発できる、成長できる。
・上流から下流まで全部それなりにできるようにしよう
・現場の人たちは啓蒙しやすいと思う

2.SIerの偉い人、(PM|上流)だけやればいいと思っている人
・売り上げのガサは減るかもしれないけど、利益は確保できる
・このままのやり方では、今後10年以内で破綻する

3.発注者(お客様)
・もっと安く早く、しかも良いシステムができる
・そのかわり、もっとシステム検討+開発にコミットしてね

とりとめなく書いてしまったが、現在のSIerのやり方になれてしまった2,3の人たちをどう啓蒙するかが鍵。
一番は、ケーススタディーをたくさん作ることだと思う。

幸い、今業務でやっているところでは、お客様が乗り気で開発形態をひがさんの言っているような形態に変えようとしている。
これは、我々SIerにとってはかなりチャンス。
利益さえ確保できれば、少なくとも今の私の上司も納得するだろう。
金融のどでかいプロジェクトにくらべたらすごく小さい規模かもしれないが、それでも世の中に発信して注目を集める程度の規模と知名度はある。
今のプロジェクトが、SI業界を変えていく一つの要素になるようにしたい。

Home > Archives > 2008-05

Search
Feeds
Meta

Return to page top