Java見習いプログラマとなった
遂に「Web管理者」ではなく、「JavaPG」の道を選んでしまった。。。
昇格ではあるが、、、
降格でもある。。。
Javaの知識は研修18日間。
実務・実戦経験はない。
死にものぐるいで学ぶのもいいな。。。
« 2007年02月 | メイン | 2007年05月 »
遂に「Web管理者」ではなく、「JavaPG」の道を選んでしまった。。。
昇格ではあるが、、、
降格でもある。。。
Javaの知識は研修18日間。
実務・実戦経験はない。
死にものぐるいで学ぶのもいいな。。。
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言語で特別の意味を持つ単語(予約語)です。
この行はメソッドというものを宣言しています。
メソッドというのは、クラスに付属している関数のようなものです。
メソッドについての補足:一連の処理をひとまとめにして定義した処理のこと。メソッドの名前は任意に付けることができる。(ただし、命名規則に従う)
"System"はクラス名、"out"はフィールド名、"println"はメソッド名。
クラスとはオブジェクトを抽象化して定義したもの。
オブジェクトとは実世界の「もの」をモデル化した再利用可能なソフトウェアコンポーネント。
コンポーネントとは何らかの機能を持った、プログラムの部品。
フィールドとはクロスブロックに定義された変数のことで、そのクラスを基にインスタンス化された各オブジェクトの中に存在します。一般的には、フィールドのことをインスタンス変数と呼びます。
Eclipse活用編 EclipseでJavadocを利用するには(@ITより)
Javadocを利用してAPIリファレンスを作成する
本来コマンドラインから利用するJavadocをEclipseから対話ベースで利用することができます。また、Javadocコメントと呼ばれる一種独特のコメントを記述する場合にも、Eclipseのコメント自動生成機能を用いることで作業をシンプル化することができます。
public class クラス名 {
//フィールドの宣言
型 フィールド名;
型 フィールド名;
型 フィールド名;
//メソッドの宣言
型 メソッド名(引数列){
型 変数名; //変数の宣言
・・・
//メソッドの宣言
型 メソッド名(引数列){
型 変数名; //変数の宣言
・・・
}
}
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 (条件1){
System.out.println("条件1のとき発動");
}else{
System.out.println("条件1以外のとき発動");
}
switch (n){
case 1;
System.out.println("case1だよ");
break;
case 2;
System.out.println("case2だよ");
break;
default;
System.out.println("defaultだよ");
break;
}
for (int i = 0; i < 3; i++) {
System.out.println(i);
}
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
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クラス:数学計算のための定数や関数が集められたクラスです。
この他にも様々なクラスが存在します。詳細は、クラスライブラリのマニュアルを読む必要があります。
【型】【フィールド名】;
上の書式の【型】というのは、文字列(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フィールドに年齢を書き込んでいる。インスタンス内のフィールドにアクセスするには、次の書式の用に、インスタンス名の後にドット(.)に続けてフィールド名を書けばよい。
【インスタンス名】.【フィールド名】=【値】
デスマーチ大作戦
完結編
またデスマーチ!
imagine
プログラマンのマーチ
zoo
サザエサソ
大きなのっぽの古PG
笑いごとじゃない。。。
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アプリケーションの配布に用います。
| オプション | 概要 |
|---|---|
| -c | アーカイブを新規作成 |
| -t | アーカイブの内容を一覧表示 |
| -x | 指定(すべて)のファイルをアーカイブから抽出 |
| -u | 既存アーカイブを更新 |
| -v | 詳細な出力を標準出力に生成 |
| -f | アーカイブファイル名を指定 |
| -m | 指定されたマニフェストファイルから構成情報を取得 |
| -O | 格納のみ(ZIP圧縮しない) |
| -M | マニフェストファイルを作成しない |
| -i | jarファイルのインデックス情報を生成 |
| -C | 指定のディレクトリから指定ファイルをアーカイブ化 |
>jar cvf sample.jar *
//カレントディレクトリ配下のすべてのファイルをsample.jarにアーカイブ化
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=26296&forum=12&start=0
プログラムでは一般に、多くの種類のデータを、多くの種類の入力先から取得して、多くの種類の出力先へ書き込む必要が考えられます。 Java では、これらのデータの入出力 (I/O) は一般にストリームとして解釈することになります。入力元へのストリームを開いて情報を読み込み、出力先へのストリームを開いて情報を書き込み、必要が無くなればそれらのストリームを閉じます。
これらのストリームを扱うための標準クラスライブラリは、 java.io パッケージから提供されます。これらのクラスは一般に、取り扱うデータの種類に応じて文字ストリームとバイトストリームの二つに分けられます。
そして、これらのストリームはオブジェクトとして扱われます。
仕事をする上で大切なことをひとつあげよう。
あまりにあたりまえのことだが、とある同僚に、「きみに言われてびっくりしたよ」と言われたことです。注:この同僚は頭脳明晰であるが今回紹介する概念がなかったのです。決して馬鹿にできる人物ではありません。
わからないことは自分で調べる。
簡単なようで以外と難しい。
言葉通りに行動したらロスが多いのだ。
なぜなら、自身の時間を延々かけるのは時間対効果がよろしくない。
かといって、他人に質問し、その他者の時間をとるのもよろしくない。なにより考えることを怠るようになるので、大変よろしくない。
ようはバランスである。
これをコントロールできる人を私は心より尊敬する。
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 になってます。
本日4月13日(金)19時〜22時にjava-jaミーティングが行われます!!
めちゃくちゃ楽しみなのですが、、、
仕事が19時には確実に終わらないorz
良し!大先輩たちに触れるぞ〜
いまは4月。
新人研修の真っ只中。というわけで、ブログを回ってみた。そして、「今新人研修の最中です。」という記事を発見しました。
ふむふむと読んでみると。。。
・・・以上略・・・
また、理想のコンサルについてのインタビュー*3をまとめた内容にて、
・・・以下略・・・
*3:対象人数2人・・・
対象人数2人!!ちょっ。。。w
2人の意見では、世間一般的な基準からブレが生じてしまうのに。。。
講師もコンサルをやってきた人だから、ノウハウや知識を蓄積はしているが(蓄積されてなかったら不幸な人だがw)アウトプットできない人だったのでしょう。。。。
おっとっと、自分も中途で入ったが、大卒新人並の年齢のため大口は叩けないがw
引用元:今新人研修の最中です。
ぺーぺーJavaエンジニアであるわけであるが、今後何をめざしていくのか考えてみた。
現在はWebアプリケーションの開発会社の開発部署に所属し、スキルアップを行っている。
現在習得中のプログラミング言語はjavaである。
HTML(XHTML)、CSS、JavaScriptは前職にて習得済み。
PHPは独学初歩レベル。Linuxの操作もままならずw
**以下構想中**
| カテゴリー | 既習・未習 |
|---|---|
| カテゴリー | 既習・未習 |
| 変数と型 | 既習 |
| 条件分岐(if文・switch文・for文・while文 | 既習 |
| メソッド | 既習 |
| 配列 | 既習 |
| クラス・インスタンス | 既習 |
| スーパークラスとサブクラス | 既習 |
| 例外処理 | 既習 |
| インターフェース | 既習 |
| ガーベージコレクション | 既習 |
| スレッド | 既習(要復習) |
| パッケージ | 既習 |
| ファイル操作と入出力 | 既習 |
| コレクション | 既習(要復習) |
Horiuchi_Hさんのブログから話題拝借。
Eclipseって様々なプラグインが使えるからソース書くより、プラグイン入れてる時が面白い。
にしても、便利な機能がいっぱいだ〜
yoshioriさんみたいにLingerをみれるようにすれば楽しそうだなw
時間ができて、スキルもあがったら、プラグインの製作に手を付けたいです。
yoshioriさんのプレゼン笑えたw
というかうますぎ!
ま、仕事があって、懇親会から参加したのですがorz
そしたら、Springのみなさんに、「どうしたの?取り残されたの??java-jaのみなさんに」とか言われちゃうし( ゚Д゚)
豆蔵のお兄さんはいい方でした〜あと、沖縄の開発会社の方などなど。。。
話に付いていくことができなかったから、今後もう少しはっちゃけてみますかな。暴れるぞ!!
あとスキルアップも
次回あったらまた参加したいです
自宅WorkSpaceの前には、こんなpostcardがあります。
さてはて、生産効率に影響がでているのかでていないのかw
絵画は良くわかんないけど、こういう絵は好きです。
ちなみに、東京都美術館で行われたオルセー美術館展の2枚です。
ついに“日本Javaユーザグループ”が設立に--地域活性化と技術者の地位向上を目指す
JJUGのニュースが大々的に報じられてますね。
実際に何が変わるというわけではにのに。。。
変えるのは私達ですよねw
てなわけですが、java-jaも活動を活発化し、ついに運動会を行います(!?)
興味があるかたは参加してみてはいかがでしょうか?
第一回チキチキ Java-ja 大運動会
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();
}
}
}
自宅でコンピュータふれながら、ハーゲンダッツのアイスを食べますかな~
それにしても、買った覚えがないのに冷凍庫に入ってた。
酔った勢いで買ったけか??
忘れさられていたハーゲンダッツだったのでうれしさは倍だ!!
今後、Seasarに触れていきます
以下、書きかけ
6時に起きる。
7時に家出る。
8時に会社着く。仕事に取り掛かる。
12時に昼。弁当。仕事に取り掛かる。
19時コンビニに行く。
22時帰り支度
23時家に着く。知識を詰め込む。
2時寝る。
以上。繰り返し。
忍耐力。洞察力。探究心。知識欲。好奇心。継続力。
サーバサイドメモ帳になってきてるよ。。。
プログラマの権利宣言
Jeff Atwood / 青木靖 訳
面白いので読んだ後にまとめるぞ~
エンジニアの交流を活発化する目的で、今日、日本javaユーザー会が設立総会を行ったわけであるが、、、
層々たる面々です。。。いきたかったorz
| 正規表現 | 意味 |
|---|---|
| 正規表現 | 意味 |
| [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文字と一致) |
| ガーベージコレクション | 既習 |
| スレッド | 既習(要復習) |
| パッケージ | 既習 |
| ファイル操作と入出力 | 既習 |
| コレクション | 既習(要復習) |
本格的にPHPを覚え始めました。
ソースを組んでると、どうしてもJavaの文法使っちゃってごっちゃになってします。
正直だめだめPGだなorz
PHPがJavaライクなんで、理解にはそんなにこまらないから、うれしいのは確かだな。
複数言語を使えるプログラマはその辺どうなんだろう。。。
普通に考えたら、ごっちゃにはならないだろけど。
そういえば、以前見た記事で、BASICを最初に覚えると癖がついて困っていたPGの方がいたな。。。
Fedoracore8の開発に入るのはいつになるのだろうか。。。
たしか半年ごとリリースで、Fedoracore7test3だから7~8ヵ月後にリリースかな??
すると、、、Fedoracore9は14~15ヶ月後か。
ちょっと先が長い話をしてしまったが、今度はどんな機能がつくのか楽しみだ。
とっくに12時を回ってしまって、本日だか昨日だかよくわからない。
とにかくまとめ。
FedoraCore5+Apache+MySQL・Postgrsql+PHPというLAMP環境を構築するのに丸一日かけてしまった。
なにせLinuxはXの禁止、パーティション指定、DBが二つ(!?)などの条件とともに、PHP5がうまくコンパイルが通らないという事件が多発。。。
自分のスキルの低さとともに、氾濫する情報の中から有益なものを抽出する難しさを体感した。
明日(今日?)も似たような地獄が待ってるのだろうな。。。
とにもかくにも睡眠を。。。とろう。
2007年04月にブログ「javaプログラマ日誌」に投稿されたエントリー一覧です。
PreviousCategory:2007年02月
NextCategory:2007年05月