2009年03月04日

No36.研修生がハマる光景

いっぷくカラス
ちゅ〜っス狐太郎っスよ〜
久しぶりっスね〜
サボってたわけじゃないっスよ〜
今日から気持ちを切り替えて頑張るっス〜

今回は研修生によくある光景をとりあげてみるっス


「サーブレットを作ったのですが動きません。ちゃんと書いているはずなのですが。

まず、何がおこってるのかを確認するのが大事っス。
どう動かないっスか?

「404ってでてます

404っスか。ってことは、サーブレットにたどりついてないですね。
urlとサーブレットのマッピングを記述しているweb.xmlをみてみるっス。

web.xmlもちゃんと書いているんですが・・・・

そうっスね。記述も特におかしくないっスね。

htmlのファイルはちゃんと表示されてるので、コンテキスト設定も問題ないっス。

うーん
うーん

うーん

うーん


うーん


あーーーーーーーーー!

web.xmlがなんでlibの下にあるっスか?

え?あ?違うプロジェクトからコピーしてきたんですが・・・

web.xmlは、置き場所が決まっているっス。きまった場所に置かないと
tomcatが取り込んでくれないっス。
WEB-INFの直下に移すッス。

置きました。再起動も・・・必要ですよね?

web.xmlは起動時に読むので、稼働中に変更しても反映されないっス。

動きましたー!

J2EEとかフレームワークとかには決まり事が多いっス
中身をちゃんと書いたつもりでも、ファイル名とか置き場所を間違えると
いけないので注意するっスよ〜

実際この話は自分のことなんスよね〜
日に日に成長を感じる今日この頃っス


javakoushi at 20:59|PermalinkTrackBack(0)この記事をクリップ!

2009年01月26日

No35.Listインターフェイス

塾長新年あけおめじゃ
といってももう1月の後半じゃなぁ〜
なかなか更新できなくて申し訳なかった
インフルエンザにかかってしまってのぅ〜
ワシがインフルエンザにかかってしまうと、人間界では『鳥インフルエンザ』と言うらしいが、一体何を騒いでいるのかよぅわからん

皆もインフルエンザにかからないよう、うがい手洗いをしっかりするのじゃぞ

さて今回は「Listインターフェイス」について話していくぞ

Javaのコレクションフレームワークで提供されているListインターフェイス
順序づけられた可変長データの集まりである「リスト構造」を表現するための
インターフェイスじゃが、この実装クラスの主要なものとして、
ArrayListクラスLinkedListクラスがある。
この使い分けについては大丈夫じゃと思うが、どうかの

ArrayListクラスは内部的に配列を使ってリスト構造を実現しておる。
こうした実装方式から、要素の追加・削除を行う場合、配列サイズや
項番を変更するために、配列をコピーしなおすという動作を行っておる。
このため、要素が増えるほど要素の追加・削除にコストがかかるように
なっておるのじゃ。
ただし、配列はデータをメモリ上に整列させて保持しているので、
要素の何番目を検索といった操作が必要な場合には高速に目的の
要素を抽出してくることが可能じゃ。

対して

LinkedListクラスは個々の要素が、次の要素のメモリ上の位置情報を
持つことで、リスト構造を実現しておる。自分の次の要素がどこに配置されて
いるかを知っているので、リストを辿って行くことができるんじゃな。
こうした実装方式から、要素の追加・削除を行う場合は、対象要素の
前の要素と新たに追加される要素について、次の要素の位置情報を書き換える
だけですむのじゃ。
ただし、要素の何番目を検索といった操作が必要な場合には、リストの
先頭から順に要素を辿って行く必要があるために要素数が大きくなるほど
検索に必要な時間は増えることになる。

どうじゃな

こうした実装上の違いがあるために、ArrayListLinkedList
効率的に使用すべき局面にも当然違いがある。
まとめると、リスト構造としてデータを取得した後、データの参照
のみで処理を進められるならArrayListを使った方が良いし、
データの追加・削除を頻繁に行うのであれば、LinkedList
使った方が良いということじゃな。

エンジニアたるもの自分が使用するクラスの特性にも気を配って、
効率的なコードを書いていきたいものじゃな

javakoushi at 13:59|PermalinkTrackBack(0)この記事をクリップ!

2008年12月05日

No34.報告の仕方

キョウ狐
お久しぶりですキョウ狐です
やっと鬼タスクが終わってほっと一安心です

今日は私からお話させていただきますね


ヤミカラス塾長からは、
「いつもエンジニアとしての報告の仕方についてしっかり指導しろ
といわれていま〜す

研修生て最初のうちは、なぜか結論から話さないんですよね。
日本の教育方法がおかしいのかしら〜

でも、それって、上司やリーダーの立場からすると困るものです
結論から話してくれないと、何が言いたいのか、伝えたいのか分からないんですよね。

結論を話してから、その根拠を話すように、研修中には常に
意識させています。

例えば、

 キョウ狐はとても料理が得意です

 なぜならば、手早く完成できますわ。
  手順を前もって意識して、効率よく段取りをこなしま〜す。

 それから、和洋中いろんな料理ができますわ。
  和食では、煮物、中華では、酢豚が得意料理で〜す。

 また、コストパフォーマンスを意識していますわ。
  冷蔵庫の残りものから、即座に創作料理を作れま〜す。


こんな風に、メインで話したいことを主張してから、その根拠
話すようにしましょうね

ついでに、
キョウ狐料理も得意ですが、もちろんプログラミング得意ですわ!。

料理が得意な人は、プログラミングは得意なのかも・・・

javakoushi at 10:42|PermalinkTrackBack(0)この記事をクリップ!

2008年11月20日

NO33.アスペクト指向

塾長ワシじゃヤミカラスじゃ
最近、キョウ狐が課題に負われてなかなか顔を出さんが、そろそろ顔を出すじゃろう

最近めっきり寒くなってきて、体調など崩しておらんか?大丈夫か?
就職活動をしている学生にとっては、一番大事な時期だから気をつけるんじゃぞ

さて今回は「アスペクト指向」についてじゃ

Javaのエンジニアであれば、「オブジェクト指向」という考え方については、もう当然の思考法じゃな
当研修室の研修生も「オブジェクト指向」の考え方を身につけるために日々努力しておる

ソフトウェアの処理単位をつぶさに観察してみると
オブジェクトという処理単位にうまく分解することができない処理も多く含んでいることが分かる
よく挙げられる例として、プログラムの実行の様子を観察するロギング操作なんかがそうじゃ。

ロギング操作は、ソフトウェアの機能としては本来不必要な処理じゃが、
ソフトウェアの動作を管理するためには必要となる処理じゃな。
とはいえ、理想的には、本来必要な処理と付随的な処理とは分離して
記述したいところじゃろう。そこに着目したのが「アスペクト指向」という考え方じゃ。

この考え方によって、オブジェクトの持つメソッド中には、
そのメソッドの機能として必要な処理のみを記述しておき、
ロギング操作に関しては、そのメソッドの処理の前後に適用するという
アスペクトを別に記述しておくことが可能となるのじゃ。

イメージとしては、こんなところかの

メソッドA
-----------------------
処理開始ロギング操作
本来必要なロジック
処理終了ロギング操作
-----------------------

メソッドA
-----------------------
本来必要なロジック
-----------------------

アスペクトA
-----------------------
メソッドA開始前のロギング操作
メソッドA終了後のロギング捜査
-----------------------

当然、実行時の処理結果は、メソッドの中にロギング操作を記述した場合と
同じじゃ。

この「アスペクト指向」という技術、
DI(DependencyInjection)という言葉が目立っているため、うっかり忘れがちじゃが、
SpringフレームワークなどのDIコンテナにも取り入れられているものなので、
Javaエンジニアたるものしっかり概念や操作を学んでおくべきじゃ

javakoushi at 10:05|PermalinkTrackBack(0)この記事をクリップ!

2008年11月07日

NO32.研修生の様子

いっぷくカラス
オッス!狐太郎っス

研修に入って、一からJavaに取り組み始めた頃というものは、
本当に右も左も分からなくて、苦労するもんっス

いまやMVPを取得したこともある(エッヘンっス)おいらでも、
最初の頃は、今考えると何にも分かってなかったなー、と思うような
失敗をいっぱいしたもんっス・・・

そんなことを思いながら研修生の質問に答えていると、
「引数の渡し方が分からない」
って質問が意外に多いんっスよねー

Javaで引数が必要なメソッドを

private sampleMethod(String str){}

なんて、記述するまではいいんっスけど、そのメソッドを

sampleMethod("文字列") ;

と、"文字列"という引数を渡して呼び出せるってのがな〜ぜか理解できなくて、
どうしたらいいんっスかってなるんっスね。

かく言うおいらもそうだったんっスけど、そんな研修生でも、
APIとして用意されている、コンソールに文字列を出力するメソッドを

System.out.println("文字列") ;

なんて記述はしてて、引数を渡して呼び出すメソッドをしっかり
呼び出せたりしてるもんなんっスよね〜。

こういった研修生に、
このSystem.out.println()ってなんっスか?
なんで"文字列"をコンソールに出力できてるんっスかっ!?
なんて質問すると、決まって返ってくるのが、
テキストに載ってたから…
って答えなんっスよね〜〜。
おいらもそんなことを言ってたことがあったんで気持ちは分かるっス…

そしたら、System.out.println()が引数渡して呼び出せるメソッドで、
APIで用意されているメソッドも自分で作ったメソッドも使い方は同じで、
そんなら自作メソッドも引数渡して呼び出せるんじゃないっスか〜
と説明すると、あー、とかおー、とかなんかつながるみたいなんっス。

最初のうちは訳が分からないまま、とりあえず書いてしまいがち
なんっスけど、自分の書くコードはきちんと理解しつつ書いていきたい
もんっスねー。そして、おいらに続いてMVPを目指して欲しいっス

javakoushi at 13:50|PermalinkTrackBack(0)この記事をクリップ!