アフィリエイト広告を利用しています


スキル無しのシステムインストラクターから、システムエンジニアへの転身日記。
◇◆◇ 2013年取得資格
LPICレベル1
LPICレベル2
LPICレベル3 Core
LPICレベル3 Speciality 302
LPICレベル3 Speciality 303
LPICレベル3 Speciality 304

Cisco CCENT
Cisco CCNA

Java SE 7 Silver
Java SE 7 GOLD

OSS-DB Silver

◇◆◇ 2014年取得資格
HTML5 Professional レベル1

広告

この広告は30日以上更新がないブログに表示されております。
新規記事の投稿を行うことで、非表示にすることが可能です。
posted by fanblog

30代 × 未経験 × プログラマー 転職の道 その1

もうすぐ、転職して1年が経ちます。
プログラマーになるべく、30歳を過ぎてプログラム未経験で入社したい。
と、強い意志で挑んだ結果、散々な目にあいました。

今の会社も、プログラマーとして応募したわけではなく、
運よくプログラマーとして採用されたという経緯があります。

やはり、開発経験のない若くない人間を採用するには、
開発経験のある多少若い人と戦える何かがないと、いけないのですね。

私が転職をするうえで感じたことを書いてみます。

1.未経験でプログラマー志望として面接

未経験で募集をかけている企業は、ある程度育ててもいいから人材が欲しい。
という思いがありながらも、人材を募集しているくらいなので、
今の開発や、今後予定されている開発に人を投入したいと思っているのです。

よって、開発経験がない人よりも、ある人が優遇されるのは当然です。

それでも経験がある人なんて、そうそう採用できません。
経験がある人で転職をしたいと思っている人が、今働いている環境と同等、
またはそれ以下の企業で働きたいと思うのでしょうか。
普通であれば、条件面のアップや、新たにやりたいことがあって、
それに挑戦できる環境がある企業を選ぶのです。

よって、経験者を採用することが難しいので、未経験可と書いているのです。

未経験だけど欲しくなる人。それはどういう人でしょう。

続く・・・。

JavaEEの前に復習をしてみる その15 文字列のフォーマット指定

文字列処理って深いな…。そろそろ飽きてきたかもしれませんね。
私じゃないですよ。見てる人がww

今回は、文字列を表のように出力するときにどのように記述すればいいのか
を考えてみたいと思います。

以下にコードを記載します。
shade,shake,shakoといった3名がいまして(playerName*)、
それぞれ職業をもっています(playerJobs*)。
そして所持金をランダムで表示します。

package test;

public class StringFormatTest1 {

public static void main(String [] args){
final String playerName0 = "[Name]" ;
final String playerName1 = "shade" ;
final String playerName2 = "shake" ;
final String playerName3 = "shako" ;
final String playerJobs0 = "[Jobs]" ;
final String playerJobs1 = "proglammer" ;
final String playerJobs2 = "fish" ;
final String playerJobs3 = "shrimp" ;
final String playerMoney = "[Money]" ;

StringFormatTest1 sft = new StringFormatTest1();

System. out.println(playerName0+playerJobs0+playerMoney);
System. out.println(playerName1+playerJobs1+sft.PlayerMoneySet());
System. out.println(playerName2+playerJobs2+sft.PlayerMoneySet());
System. out.println(playerName3+playerJobs3+sft.PlayerMoneySet());

}

public int PlayerMoneySet(){
int playerMoney = (int)(Math.random ()*100000);
return playerMoney ;
}

}


結果は、
[Name][Jobs][Money]
shadeproglammer1445
shakefish60882
shakoshrimp39569


となります。

全部くっついて、わけが分からなくなりましたw

かといって、
System. out.println(playerName1+" "+playerJobs1+" "+sft.PlayerMoneySet());
といってスペースで誤魔化すのも、なんかプログラミングじゃないですよね。

そこで、コードを書き換えてみます。

package test;

public class StringFormatTest1 {

public static void main(String [] args){
final String playerName0 = "[Name]" ;
final String playerName1 = "shade" ;
final String playerName2 = "shake" ;
final String playerName3 = "shako" ;
final String playerJobs0 = "[Jobs]" ;
final String playerJobs1 = "proglammer" ;
final String playerJobs2 = "fish" ;
final String playerJobs3 = "shrimp" ;
final String playerMoney = "[Money]" ;
final String Format0 = "%6s %10s %7s" ;
final String Format1 = "%6s %10s %d6" ;

StringFormatTest1 sft = new StringFormatTest1();

System. out .println(String.format(Format0,playerName0,playerJobs0,playerMoney));
System. out .println(String.format(Format1,playerName1,playerJobs1,+sft.PlayerMoneySet()));
System. out .println(String.format(Format1,playerName2,playerJobs2,+sft.PlayerMoneySet()));
System. out .println(String.format(Format1,playerName3,playerJobs3,+sft.PlayerMoneySet()));
}

public int PlayerMoneySet(){
int playerMoney = ( int)(Math.random ()*100000);
return playerMoney ;
}

}


結果は、

[Name] [Jobs]     [Money]
shade  proglammer 88,037
shake  fish       74,024
shako  shrimp     60,585



このように見やすくなりました!
何が起きたのでしょうか。

まず、変数に加わった
final String Format0 = "%-6s %-10s %7s" ;
final String Format1 = "%-6s %-10s %,d" ;

を見てみましょう。

ここで言う
%s … 文字列
%d … 数字
- … 左詰
, … 3桁ごとにカンマ
数字 … 文字列の数


といった正規表現とはまた違ったフォーマット指定ができます。
(こういうのがあるから正規表現をいつまでも覚えられないのだがww)

System. out .println(String.format(Format1,playerName1,playerJobs1,+sft.PlayerMoneySet()));

あとは出力の仕方ですが、
String.formatを使って、自分で作った定型FormatのFormat1を指定して成形します。

文字列1つ成形するのにも、クラスを一個成形用に作らないといけないですね。
文字列深いなぁ。きっちり覚えないとな。
この辺を当たり前に使えるか使えないかで、一日にコードをかける時間が変わってくるのです。
オライリー使った時に、この辺って出てこなかった気がするな・・・。
それとも、あまりの分厚さに失念したのか・・・。

SEばっかりやっているから、JavaEEの技術をまた忘れてきた。脳みそよ。もっと頑張れ!!

IT 勉強会・セミナーの需要

過去にも紹介しましたが、私が勉強会に参加する為のサイトは、
下記3つが主要です。

アテンド
http://atnd.org/beta
connpass
http://connpass.com/
DoorKeeper
http://www.doorkeeper.jp/

定員割れを起こすほど人気のセミナーは、どういったものが多いかというと、
HTML5関連のもの、最新技術の入門的な内容。
こういったものは、100名だろうが200名だろうが、
あっという間に埋まってしまいます。

定員割れを起こしても、当日にかなりの人数がキャンセルします。
なので、当日の夕方まで待ってみるのも手ですね。
そしてキャンセルすら入れない人もいるので、当日に会場まで行ってみるのも手です。

大きいセミナーは、大抵入場無料ですが、コワーキングスペースを使って行うような
小規模・中規模のものだとコワーキングスペース利用料だけお支払いする場合もあります。
(こういった場合、コワーキングスペースを前後に使用しても構わない)
あとは、アルコールを飲みながらとか、懇親会を称して食事を最後に出してくれるところもあります。

たまに、食事だけしに来てるんじゃないかという人も見受けられます。
懇親会なのに、だれとも話さず、ただ食事だけをテーブル回って食べたいだけ食べて、早々に帰宅。
やらないけど、セミナーってほぼ毎日どこかで行われているから、食費かからないで暮らせるかもなww

ちょっと脱線してしまいましたが、ITの技術に関してはみんな貪欲。
しかし、極めている人って言うのは、やっぱり少ないし。へー、なるほど・・・。と
わかったふりをして、一切自分で試さないと言う人も多いだろうな。

私も、Chefはやりたいけど、いろいろと工数や今後の自分の業務を予測すると、
気が引けてしまうところもありますしね。

やりたい事多すぎるんだよな。だから、何か一つを極めることができない。
でも一つ極めている人って、広く浅い知識も豊富だよな。不思議だわ。

PHPとJavaとRuby

プログラマーとして大きい仕事をしていく為には、Javaは必須だと思っていて、
Webアプリケーションといえば、Javaのサーブレットとjspの組み合わせをTomcatで!
といった認識ではいますが、最近ちょっと違和感を感じるのですね。

どうもいろいろ調べて行くと、自分が趣味でやりたい分野はPHPやRubyだったりする事が多いのです。
例えば、Wordpressは、もうがっつりPHPです。プラグインや、ウィジェットなどを自分で
開発したい!と思うからには、PHPをがっつり覚えなければいけないのです。

そして、Webエンジニア(インフラ)として活躍するにしても、ChefやFluentdなんかは、がっつりRubyです。
今までJavaで書かれているもので、ちょこっと有利になったのはJenkinsくらいじゃなかろうか。

今の会社を面接する前に受けた、開発系の企業ではJavaをまず学習してもらい、
PHPはJavaと似ているから、そこから勉強し直しても時間はたいしてかからない。
と言っていましたね。1社だけではなく、何社も。
ある人売り企業では、プログラミング未経験の自分に、Ruby案件に面接を受けさせようとしてましたね。
正直、今となっては、JavaだろうがRubyだろうがプログラミングの入り口としてはどちらでもよかったとは思います。
その時点では、Rubyという言葉を聞いた事があるくらいで、現在需要がかなりあるという認識はありませんでした。

なんにしても、1つの言語で仕事をまともにできる状態でもないのに、
Javaだー、PHPだー、Rubyだーなんて言っている場合ではないのですが、
基本的なお作法は、どの言語も抑えておいて損はないのです。
特に趣味の分野ですが、Wordpressでウィジェットに簡単なアプリを載せて運用したいとは思っていますので、
PHPは趣味程度ですが、早めに習得するべきだなとは思います。

PHPが手軽だと言われているのは、個人的には、
レンタルサーバーや、VPSがPHPのインストールまでをサポートしてくれるからであると思っています。
レンタルサーバーだとPHPが使える環境で、データベースまでつけて無料です!なんてところもありますが、
まず、レンタルサーバーでJava,Tomcat完備、サーブレット動かせます。無料です。なんてところは見た事がありません。
そして、動かす為にVPSを借りて、月1000円です。JDK、Tomcat、MySQLインストールして、
設定ファイル書き換えて…、iptablesでアクセス絞って・・・という環境構築の敷居が高い気もしますね。

PHPはサーバサイドスクリプトなので、Web特化型で行く!と決め込んだら、それでいい気もしますね。
Javaを学習しておけば、Web以外にもプログラミングできますしね。
それでも結局、仕事としてプログラマーとして食いつなぐには、Javaなのかなと思います。

JavaEEの前に復習をしてみる その14 文字列の切り出しと正規表現

前回の続きですね。文字列関連です。
あ、何気に、この辺、Java SE 7 Gold の文字列処理の試験範囲ですので。
取得を目指している人は、さらっと読めるようになってないとピンチかも。

オラクル認定資格教科書 Javaプログラマ Gold SE 7 (EXAMPRESS)

新品価格
¥4,410から
(2014/3/8 21:24時点)




オラクル認定資格教科書 Javaプログラマ Gold SE 7 スピードマスター問題集 (EXAMPRESS)

新品価格
¥3,780から
(2014/3/8 21:25時点)




あれ??スピードマスターでも出るんかい!!おじさん、びっくりしたわぁ。
同じ翔泳社でつぶし合うのですね。でも、スピードマスターは問題集だからな。
ササッと受かりたい人は、問題集でもいいかもね。
参考書そろってきたなぁ・・・でも、Java SEは、もう8だしな。ついてけないわー。

1.文字列の切り出し

public class JavaString3 {

public static void main(String [] args){
String st4 = "アサイー飲んで運動して健康な生活を送る" ;

System. out.print(st4.substring(0,1)+st4.substring(2,3)+st4.substring(9,11)+st4.substring(18));

}
}


st4.substring(int index,int endIndex)
ということで、文字列の最初の切り出しと、切り出しの終わり位置を指定して文字を切り出します。
endIndexを指定しないと、切り出し位置から最後の位置までを表示します。

結果は、ちょっとしたクイズ。クイズでも何でもないですね。

あとで、別記事で紹介しますが、この切り出し技術があれば他サイトの更新情報をまるっと抜き取ることができます。
あくまで個人で楽しむだけになりますが、成形して自分で分かりやすいように使ったりできると思います。

2.正規表現

あまり得意ではない。正規表現です。
正規表現の書き方って、言語依存な仕様になっていたりするので、
Rubyだったり、シェルスクリプトだったり、Javaだったりで分からなくなります。

勿論、今回は、Javaの正規表現です。

例えば、プログラムに使うユーザー名は、最初の文字は数字が禁止で
6文字のユーザー名で指定しなければならない場合のプログラムを作ります。


public class JavaString4 {

public static void main(String [] args){

String userName1 = "2man001";
String userName2 = "tw0Man";
String userName3 = "shadeday0" ;

System. out.println(userName1.matches("[a-zA-Z][a-zA-Z0-9]{5}" ));
System. out.println(userName2.matches("[a-zA-Z][a-zA-Z0-9]{5}" ));
System.out.println(userName3.matches( "[a-zA-Z][a-zA-Z0-9]{5}" ));
}
}



結果は、

false
true
false


です。

正規表現って、全く触れたことがないとただの暗号ですよね。
matches を使って、一致する場合はtrue。それ以外はfalseと返すようにしています。

問題のここですが、
[a-zA-Z][a-zA-Z0-9]{5}

まず初めに、[a-zA-Z]ですが、1文字目をアルファベットのa~z、またはA~Zと一致するとしています。
そして、[a-zA-Z0-9]{5}は、a~zとA~Zと1~9と一致するを5回繰り返すとしています。

String userName1は、1文字目が数字なのでNGですね。
String userName2は、1文字目がアルファベットで、残り5文字がアルファベット、または数字なのでOKです。
String userName3は、6文字以上なのでNGです。

もし、条件が、「6文字”以上”のユーザー名で指定しなければならない場合」であったなら、
System. out.println(userName3.matches( "[a-zA-Z][a-zA-Z0-9]{5,}" ));
とすればOKです。
数字の後に「,」をつけるだけです。

もし、条件が、6文字以上かつ8文字以内のユーザー名で指定しなければならない場合」であったなら、
System. out.println(userName3.matches( "[a-zA-Z][a-zA-Z0-9]{5,7}" ));
数字の後に「,7」と終点を指定するだけです。

何とかここまで理解したところで、混乱させますが、
実は、
System. out .println(userName1.matches("[a-zA-Z][a-zA-Z0-9]{5}" ));
System. out.println(userName0.matches( "[^\\d]\\w{5}" ));

と書いても一緒なのです。

\\d(\d)は、「0-9」を意味しており、[^]は、否定になるので、「0-9以外」となります。
\\w(\w)は、[a-zA-Z]を意味しております。

よって結果は一緒なのです。

そして、私だけかな。正規表現の書き方で混乱するポイントはもう一つあって、

文字列の頭にAがつくという条件の時は、「^A」
文字列の最後ににZがつくという条件の時は、「Z$」を使います。

え?「^」は否定なんでしょ?行頭文字にも使うの?
先ほどの、否定は忘れて、下記コードを見てみましょう。

package test;

public class JavaString5 {

public static void main(String [] args){

String userName1 = "ABC" ;
String userName2 = "XYZ" ;


System. out .println(userName1.matches("^A\\w{2}" ));
System. out .println(userName2.matches("X\\wZ$" ));


}
}


ここでは、
1行目の出力文では、Aから始まり、[a-zA-Z]な3文字だった場合True
2行目の出力分では、Xから始まり、[a-zA-Z]な2文字目を持ち、Zで終わる場合Trueになります。

"^A"の場合は行頭指定、"[^A]"の場合は、A以外の文字列となります。
焦っていると間違えそうなので、ここは要注意ですね。

ちょっとグダグダですが、正規表現を使うと、文章の切り抜きが楽にできます。
またの機会にでも、実際のサイトから文章を切り抜いてみたいと思います。
<< 前へ     >>次へ

先頭に戻る

×

この広告は30日以上新しい記事の更新がないブログに表示されております。