« 2007年02月 | メイン | 2007年05月 »

2007年04月 アーカイブ

2007年04月03日

Java見習いプログラマとなった

遂に「Web管理者」ではなく、「JavaPG」の道を選んでしまった。。。
昇格ではあるが、、、
降格でもある。。。

Javaの知識は研修18日間。
実務・実戦経験はない。

死にものぐるいで学ぶのもいいな。。。

分散システム(J2EE)

J2EEは大規模なソフトウェアシステムの開発を念頭において設計されています。
「大規模なソフトウェアシステムと小規模なソフトウェアシステムはいったいどこが異なるのか」という疑問が出てくるかもしてませんが、その回答は分散システムにあります。

分散システムではシステムの色々なコンポーネントが複数のマシンに分散しています。
例えば、分散型のWebアプリケーションでは、1台のサーバがHTTPリクエストの受信とそれに対するレスポンスを処理し、別のサーバがビジネスロジックを全て処理し、更に、また別のサーバでデータベースの入出力を処理します。

ソフトウェアを分散システムにするのはなぜでしょうか?大規模なWebアプリケーションやエンタープライズシステムの場合ユーザーからの要求も多く、ときには1台のサーバでは処理できないほどになります。プロセッサの追加やメモリの増設によってサーバマシンをアップグレードするという対応策もありますが、この種のアップグレードはさーばの能力を限界まで拡張することにしかなりません。個別のマシンでは、いくら拡張性に優れていても、やがては限界に突き当たります。

このように単一のサーバではソフトウェアのニースに応えきれないという場合、分散システムの出番になります。複数のサーバを一緒に使うことにより、単一のサーバでは不可能な要求に応えることができます。

しかし、わざわざ分散システムを構築する必要があるのでしょうか?同じアプリケーションを複数のサーバにコピーするだけではいけないのでしょうか?ユーザの要求を複数のサーバに分散させる負荷分散という目的は、これでも達成できます。

アプリケーションの各種の論理コンポーネントを相互に切り離すメリットは、分散システムの各コンポーネントをそれぞれのニーズに応じてチューニングできることにあります。
例えば、データベース入出力を処理するサーバとTCPを介してHTTPでWebクライアントとやり取りするサーバでは、最適化の方法もことなります。

ガーベージコレクション

ガベージコレクションとは、OSのメモリー管理機能の一つで、プログラムが使用しなくなったメモリーやプログラム間の隙間のメモリ領域を検出し解放することである。これの能力によって連続した利用可能なメモリー領域を増やすことができる。

ガベージコレクションが不完全なOSは、利用可能なメモリーを回復することができないため、一定期間ごとに再起動を強いられることになる。Java言語の実行環境はガベージコレクション機能を自ら備えており、プログラマーがオブジェクトの解放を明示する必要はない。

Javaにおいては、使用されていない(どこからも参照されていない)オブジェクトを開放し、空きメモリ領域を確保するための仕組み。実際のメモリ開放はガベージコレクタが行う。この仕組みが存在するため、プログラマは明示的に領域開放を行うする必要がない。

今日の失敗

実行機:Win
環境変数を設定し忘れたorz

こんなしょぼい失敗をするとは。。。

以下、メモ書き。
"public static void main (String[] args]{"
public static voidの3つはJava言語で特別の意味を持つ単語(予約語)です。
この行はメソッドというものを宣言しています。
メソッドというのは、クラスに付属している関数のようなものです。

メソッドについての補足:一連の処理をひとまとめにして定義した処理のこと。メソッドの名前は任意に付けることができる。(ただし、命名規則に従う)

2007年04月04日

"System.out.println"を細かく分析すると、、、

"System"はクラス名、"out"はフィールド名、"println"はメソッド名。
クラスとはオブジェクトを抽象化して定義したもの。
オブジェクトとは実世界の「もの」をモデル化した再利用可能なソフトウェアコンポーネント。
コンポーネントとは何らかの機能を持った、プログラムの部品。
フィールドとはクロスブロックに定義された変数のことで、そのクラスを基にインスタンス化された各オブジェクトの中に存在します。一般的には、フィールドのことをインスタンス変数と呼びます。

2007年04月05日

Javadocを利用してAPIリファレンスを作成する

Eclipse活用編 EclipseでJavadocを利用するには(@ITより)
Javadocを利用してAPIリファレンスを作成する

本来コマンドラインから利用するJavadocをEclipseから対話ベースで利用することができます。また、Javadocコメントと呼ばれる一種独特のコメントを記述する場合にも、Eclipseのコメント自動生成機能を用いることで作業をシンプル化することができます。

2007年04月08日

変数とフィールド

public class クラス名 {
 //フィールドの宣言
 型 フィールド名;
 型 フィールド名;
 型 フィールド名;

 //メソッドの宣言
 型 メソッド名(引数列){
  型 変数名; //変数の宣言
  ・・・

 //メソッドの宣言
 型 メソッド名(引数列){
  型 変数名; //変数の宣言
  ・・・
 }
}

最も簡単なプログラム

最も簡単なJavaプログラム

public class Hello {
 public static void main(String[] args) {
  System.out.println("Hello!");
 }
}

基本型と定数値

boolean ok = true; //論理型
byte b = -1; //8ビット符号付き整数
short s = 0; //16ビット符号付き整数
int i = 123456; //32ビット符号付き整数
long n = 123456789012; //64ビット符号付き整数
char c = '文字'; //文字(16ビット符号なし整数)
float f = 1.23F; //単精度浮動小数点数
double d = 1.23; //倍精度浮動小数点数

if ... else文

if文は、条件式の結果で場合分けをします。
if (条件1){
 System.out.println("条件1のとき発動");
}else{
 System.out.println("条件1以外のとき発動");
}

switch文

switch文は、整数値の結果で場合分けをします。
switch (n){
 case 1;
  System.out.println("case1だよ");
  break;

 case 2;
  System.out.println("case2だよ");
  break;

 default;
  System.out.println("defaultだよ");
  break;
}

for文

for文は、制御変数を使って繰り返します。
for (int i = 0; i < 3; i++) {
 System.out.println(i);
}

while文

while文は、条件を満たすあいだ繰り返します。
while ((line = reader.readLine()) != null) {
 System.out.println(line);
}

配列

配列は、変数を番号付きで並べたものです。newで確保します。
int[] ten = new int[3];
for (int i = 0; i < 3; i++) {
 ten[i] = i;
}

様々なクラス

Java言語には多くのクラスが存在します。以下は代表的なクラスです。

Stringクラス:Stringクラスのインスタンスは文字列を表します。
Fileクラス:ファイル操作を行うことができます。Fileクラスのインスタンスは、具体的な特定のファイルを表します。
FileReaderクラス:ファイルを読むためのクラスです。FileReaderクラスのインスタンスは、具体的な特定のファイルに関連付けられています。そして、そのインスタンスを使って、特定のファイルのデータを読むことができます。
FileWriterクラス:ファイルに書くためのクラスです。
ArrayListクラス:長さが変化する配列(可変長配列)を表すクラスです。ArrayListクラスのインスタンスに対して要素を追加したり、要素を参照したり、要素を削除したりすることができます。
Systemクラス:Javaシステム全体で使うための便利な道具類が集められたクラスです。
Mathクラス:数学計算のための定数や関数が集められたクラスです。

この他にも様々なクラスが存在します。詳細は、クラスライブラリのマニュアルを読む必要があります。

修飾子

フィールドやメソッドには、以下のようなさまざまな修飾子を付けることができます。

final

最終的なものであり、変更できないことを表す。クラスやインターフェースなら拡張できなことを表す。インスタンスフィールドやクラスフィールドなら定数であることを表す。メソッドなら上書き定義(オーバーライド)することをきんしする。

abstract

抽象クラスや抽象メソッドであることを表す。

static

クラスフィールドやクラスメソッドであることを表す。

synchronized

synchronizedメソッドであることを表す。

native

Java言語以外の言語(C言語やC++言語)で書かれたメソッド(ネイティブメソッドであることを表す。 この他にも、アクセス制御を行うpubic、protected、private修飾子があります。

基本制御構造

プログラム論理を考える上での、基本構造には3つ(構造化プログラミング手法)ある。
  • 順次構造
  • 選択構造
  • 反復構造
の3つである。

フィールド

Javaではメソッドの外に置かれた変数を”フィールド”と呼んでいる。メソッドの中の変数は、そのメソッドの中でしか有効ではないが、フィールドにはすべてのメソッドからアクセスでき、使い方によっては他のクラスからもアクセスすることができる。 フィールドを作るには次のような書式で宣言する。
【型】【フィールド名】;
上の書式の【型】というのは、文字列(String)や整数(int)などといったデータ型のことです。 次の例は、PersonというクラスにnameというString型のフィールドとageという整数型のフィールドを定義している。
class Person{
 String name;
 int age;
}
このクラスの使用例をとして、PersonTestというクラスを作ってPersonクラスを呼び出してみよう。
class PersonTest{
 public static void main(Strign[] args){
  Person taro = new Person();
  taro.name="たろう";
  taro.age=22;
  System.out.println("taro.name");
  System.out.println("taro.age");
 }
}
3行目でPersonクラスからtaroというインスタンスを作り、このインスタンスに対して4行目でnameフィールドに名前を書き込み、5行目でageフィールドに年齢を書き込んでいる。インスタンス内のフィールドにアクセスするには、次の書式の用に、インスタンス名の後にドット(.)に続けてフィールド名を書けばよい。
【インスタンス名】.【フィールド名】=【値】

デスマーチ関連のFlash集めてみましたorz【Flash】

デスマーチ大作戦
完結編
またデスマーチ!
imagine
プログラマンのマーチ
zoo
サザエサソ
大きなのっぽの古PG
笑いごとじゃない。。。

2007年04月09日

jarコマンド(クラスファイルのアーカイブを作成する)

jar {ctxu}[vfmOMi] [jar-file] [manifest-file] [-C dir] files…
  jar-file:作成する[.jar]ファイルの名前
  manifest-file:構成情報を表すマニフェストファイル(「.mf」ファイル)
  dir:アーカイブの対象となるディレクトリ files:アーカイブ対象のファイル
jarコマンドは、指定された「.class]ファイルやその他の関係するリソースをアーカイブ化し、「.jar(Java ARchive)」「.war(Web Archive Resources)」などのアーカイブファイルを作成します。 「.jar」ファイルは、一般的に関係する「.class」ファイルをまとめ、配布する場合に用いられるファイル形式です。「.war」ファイルはWebアプリケーション用のアーカイブで「.class」ファイルだけでなく、「.html」や「.gif」などの関係リソースをまとめてアーカイブ化します。Webアプリケーションの配布に用います。
jarコマンドの主なオプション
オプション概要
-cアーカイブを新規作成
-tアーカイブの内容を一覧表示
-x指定(すべて)のファイルをアーカイブから抽出
-u既存アーカイブを更新
-v詳細な出力を標準出力に生成
-fアーカイブファイル名を指定
-m指定されたマニフェストファイルから構成情報を取得
-O格納のみ(ZIP圧縮しない)
-Mマニフェストファイルを作成しない
-ijarファイルのインデックス情報を生成
-C指定のディレクトリから指定ファイルをアーカイブ化
>jar cvf sample.jar *
//カレントディレクトリ配下のすべてのファイルをsample.jarにアーカイブ化

jarファイル

5つのファイル

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=26296&forum=12&start=0

2007年04月12日

ストリームとは?

プログラムでは一般に、多くの種類のデータを、多くの種類の入力先から取得して、多くの種類の出力先へ書き込む必要が考えられます。 Java では、これらのデータの入出力 (I/O) は一般にストリームとして解釈することになります。入力元へのストリームを開いて情報を読み込み、出力先へのストリームを開いて情報を書き込み、必要が無くなればそれらのストリームを閉じます。

これらのストリームを扱うための標準クラスライブラリは、 java.io パッケージから提供されます。これらのクラスは一般に、取り扱うデータの種類に応じて文字ストリームとバイトストリームの二つに分けられます。

そして、これらのストリームはオブジェクトとして扱われます。



参考サイト
I/O Streams
Java言語(文字ストリーム)

仕事をする上で大切なこと

仕事をする上で大切なことをひとつあげよう。
あまりにあたりまえのことだが、とある同僚に、「きみに言われてびっくりしたよ」と言われたことです。注:この同僚は頭脳明晰であるが今回紹介する概念がなかったのです。決して馬鹿にできる人物ではありません。

わからないことは自分で調べる。

簡単なようで以外と難しい。
言葉通りに行動したらロスが多いのだ。
なぜなら、自身の時間を延々かけるのは時間対効果がよろしくない。
かといって、他人に質問し、その他者の時間をとるのもよろしくない。なにより考えることを怠るようになるので、大変よろしくない。

ようはバランスである。
これをコントロールできる人を私は心より尊敬する。

JAVAコミュニティ java-ja

JAVAコミュニティである「java-ja」のご紹介

2007.04.23「日本 Java ユーザグループ」が活動を始めます。
日本 Java ユーザグループ(略称:JJUG)

java-jaはjavaコミュニティとしてJJUGに加盟します。
FrontPage - java-ja (wiki)
java-ja Googleグループ
java-ja (at Lingr)

java-ja って何なの?

「言語仕様が堅いからってコミュニティまで堅いことはないよね」
「もっと Java エンジニアが気軽に話せる場があったらいいよね」
と思っている人の集まる場所だと思ってください。

誰が参加できるの?

誰でも出来ます。
むしろ参加してください。

Java 初心者なんだけど・・・

ぜんぜん構いません。
俺も色々教えてもらいたいくらいですから

どうやったら参加できるの?

Lingr と IRC のチャンネルとメーリングリストがあります。
現在、ほとんど Lingr になってます。


FrontPage - java-ja (wiki)
java-ja Googleグループ
java-ja (at Lingr)

2007年04月13日

第1回チキチキjava-jaミーティングが本日行われます!

本日4月13日(金)19時〜22時にjava-jaミーティングが行われます!!
めちゃくちゃ楽しみなのですが、、、
仕事が19時には確実に終わらないorz

良し!大先輩たちに触れるぞ〜

こんな記事見つけた。「今新人研修の最中です。」

いまは4月。
新人研修の真っ只中。というわけで、ブログを回ってみた。そして、「今新人研修の最中です。」という記事を発見しました。

ふむふむと読んでみると。。。


・・・以上略・・・
また、理想のコンサルについてのインタビュー*3をまとめた内容にて、
・・・以下略・・・
*3:対象人数2人・・・

対象人数2人!!ちょっ。。。w
2人の意見では、世間一般的な基準からブレが生じてしまうのに。。。

講師もコンサルをやってきた人だから、ノウハウや知識を蓄積はしているが(蓄積されてなかったら不幸な人だがw)アウトプットできない人だったのでしょう。。。。

おっとっと、自分も中途で入ったが、大卒新人並の年齢のため大口は叩けないがw

引用元:今新人研修の最中です。

PGとしての将来を考える 何を目指すか

ぺーぺーJavaエンジニアであるわけであるが、今後何をめざしていくのか考えてみた。

現在はWebアプリケーションの開発会社の開発部署に所属し、スキルアップを行っている。
現在習得中のプログラミング言語はjavaである。
HTML(XHTML)、CSS、JavaScriptは前職にて習得済み。
PHPは独学初歩レベル。Linuxの操作もままならずw

**以下構想中**

あれれ??javaの基本どこまでおさえたっけ?メモメモ

javaの基礎を学んでいるわけですが、どこまで学習したのかわからなくなってきたので、、、
javaの基礎の既習・未習表(カテゴリ別)
カテゴリー 既習・未習
カテゴリー 既習・未習
変数と型 既習
条件分岐(if文・switch文・for文・while文 既習
メソッド 既習
配列 既習
クラス・インスタンス 既習
スーパークラスとサブクラス 既習
例外処理 既習
インターフェース 既習
ガーベージコレクション 既習
スレッド 既習(要復習)
パッケージ 既習
ファイル操作と入出力 既習
コレクション 既習(要復習)

2007年04月14日

eclipseのプラグイン

Horiuchi_Hさんのブログから話題拝借。
Eclipseって様々なプラグインが使えるからソース書くより、プラグイン入れてる時が面白い。
にしても、便利な機能がいっぱいだ〜
yoshioriさんみたいにLingerをみれるようにすれば楽しそうだなw

時間ができて、スキルもあがったら、プラグインの製作に手を付けたいです。

第一回Java-jaミーティング

yoshioriさんのプレゼン笑えたw
というかうますぎ!

ま、仕事があって、懇親会から参加したのですがorz
そしたら、Springのみなさんに、「どうしたの?取り残されたの??java-jaのみなさんに」とか言われちゃうし( ゚Д゚)
豆蔵のお兄さんはいい方でした〜あと、沖縄の開発会社の方などなど。。。

話に付いていくことができなかったから、今後もう少しはっちゃけてみますかな。暴れるぞ!!
あとスキルアップも

次回あったらまた参加したいです

2007年04月16日

自宅WorkSpaceの前には。。。

自宅WorkSpaceの前には、こんなpostcardがあります。
オルセー美術館展2枚

さてはて、生産効率に影響がでているのかでていないのかw
絵画は良くわかんないけど、こういう絵は好きです。

ちなみに、東京都美術館で行われたオルセー美術館展の2枚です。

2007年04月17日

ついに“日本Javaユーザグループ”が設立に--地域活性化と技術者の地位向上を目指す

ついに“日本Javaユーザグループ”が設立に--地域活性化と技術者の地位向上を目指す
JJUGのニュースが大々的に報じられてますね。

実際に何が変わるというわけではにのに。。。
変えるのは私達ですよねw

てなわけですが、java-jaも活動を活発化し、ついに運動会を行います(!?)
興味があるかたは参加してみてはいかがでしょうか?
第一回チキチキ Java-ja 大運動会

HTMLParserを試しに作ってみる

HTMLパーサを組んでみた。このままじゃぜんぜん有用性ナッシングw
HtmlParser.java
import java.io.*;
public class HtmlParser {
 public static void main( String args[] ) {
  try{
   /**書き込み*/
   BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("newbrotherlist.csv.txt"), "SJIS"));
   /**読み込み*/
   BufferedReader br= new BufferedReader(new InputStreamReader(new FileInputStream("newbrotherlist.csv.html"), "EUC-JP"));
   /**読み込みした値を変数sourceに代入*/
   String source = br.readLine();
   boolean processTag = false;
   int pos;
   int start = 0;
   for ( pos = 0; pos < source.length(); pos++ ) {
    if (processTag) {
     if ( source.charAt(pos) != '>' ) {
      for ( pos++; pos < source.length(); pos++ ) {
       if ( source.charAt(pos) == '>' ) {
       break;
       }
      }
     }
     start = pos + 1;
    }
    else {
     if ( source.charAt(pos) != '<' ) {
      for ( pos++; pos < source.length(); pos++ ) {
        if ( source.charAt(pos) == '<' ) {
        String hoge =(source.substring( start, pos ));
        String[] stringArray = {hoge};
        for (int i = 0; i < stringArray.length; i++) {
         bw.write(stringArray[i]+",");
        }
        break;
       }
      }
     }
    }
    processTag = !processTag;
   }
   bw.close();
   br.close();
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
}

2007年04月18日

コンピュータにふれながら

自宅でコンピュータふれながら、ハーゲンダッツのアイスを食べますかな~
それにしても、買った覚えがないのに冷凍庫に入ってた。
酔った勢いで買ったけか??
忘れさられていたハーゲンダッツだったのでうれしさは倍だ!!
ハーゲンダッツ

2007年04月19日

Seasar

今後、Seasarに触れていきます

以下、書きかけ

2007年04月20日

プログラマの一日

6時に起きる。
7時に家出る。
8時に会社着く。仕事に取り掛かる。
12時に昼。弁当。仕事に取り掛かる。
19時コンビニに行く。
22時帰り支度
23時家に着く。知識を詰め込む。
2時寝る。

以上。繰り返し。

プログラマに必要なもの

忍耐力。洞察力。探究心。知識欲。好奇心。継続力。

サーバサイドメモ帳になってきてるよ。。。

2007年04月21日

プログラマの権利宣言

プログラマの権利宣言
Jeff Atwood / 青木靖 訳

面白いので読んだ後にまとめるぞ~

2007年04月23日

JJUG設立総会

エンジニアの交流を活発化する目的で、今日、日本javaユーザー会が設立総会を行ったわけであるが、、、

層々たる面々です。。。いきたかったorz

2007年04月24日

正規表現パターンで利用できる主な表現

正規表現パターンで利用できる主な表現
正規表現 意味
正規表現 意味
[abc] a,b,cのいずれか
[^abc] a,b,c以外
[a-zA-Z] aからz、AからZ(大文字小文字を問わないすべてのアルファベット)
[a-z&&[^lmn]] l,m,nを除くaからzまでのすべての文字列([a-ko-z]と同じ)
X? Xと0~1回一致("fo?"は、"f"または"fo"とマッチ)
X* Xと0回以上一致("fo*"は、"f"、"fo"、"foo"などとマッチ)
X+ Xと1回以上一致("fo+"は、"fo"、"foo"などとマッチ。"f"とはアンマッチ)
X{n} Xとn回一致([a-z]{2}は、小文字のアルファベット2文字と一致)
ガーベージコレクション 既習
スレッド 既習(要復習)
パッケージ 既習
ファイル操作と入出力 既習
コレクション 既習(要復習)

2007年04月26日

業務はPHPチームに移って本格的に

本格的にPHPを覚え始めました。

ソースを組んでると、どうしてもJavaの文法使っちゃってごっちゃになってします。
正直だめだめPGだなorz
PHPがJavaライクなんで、理解にはそんなにこまらないから、うれしいのは確かだな。

複数言語を使えるプログラマはその辺どうなんだろう。。。
普通に考えたら、ごっちゃにはならないだろけど。

そういえば、以前見た記事で、BASICを最初に覚えると癖がついて困っていたPGの方がいたな。。。

Fedoracore8

Fedoracore8の開発に入るのはいつになるのだろうか。。。
たしか半年ごとリリースで、Fedoracore7test3だから7~8ヵ月後にリリースかな??
すると、、、Fedoracore9は14~15ヶ月後か。

ちょっと先が長い話をしてしまったが、今度はどんな機能がつくのか楽しみだ。

2007年04月27日

開発環境構築:本日(昨日?)のまとめ

とっくに12時を回ってしまって、本日だか昨日だかよくわからない。
とにかくまとめ。
FedoraCore5+Apache+MySQL・Postgrsql+PHPというLAMP環境を構築するのに丸一日かけてしまった。
なにせLinuxはXの禁止、パーティション指定、DBが二つ(!?)などの条件とともに、PHP5がうまくコンパイルが通らないという事件が多発。。。
自分のスキルの低さとともに、氾濫する情報の中から有益なものを抽出する難しさを体感した。
明日(今日?)も似たような地獄が待ってるのだろうな。。。
とにもかくにも睡眠を。。。とろう。

lingr

About 2007年04月

2007年04月にブログ「javaプログラマ日誌」に投稿されたエントリー一覧です。

PreviousCategory:2007年02月

NextCategory:2007年05月

タグ・クラウド

あわせて読みたい

あわせて読みたい

メインページ

アーカイブページ

Powered by
Movable Type 3.34