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


スキル無しのシステムインストラクターから、システムエンジニアへの転身日記。
◇◆◇ 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

無料でブログを自動更新するプログラムを作ってみる その2 XMLRPCの理解

ここの説明はスルーしても動くには動く話。
このプログラムを作るために、一から全部作るのは不可能で、
ブログのエンドポイントに接続するためのAPI。
ネットアプリケーションと接続するためのAPI。
エンドポイントに渡すオブジェクトを生成するために使うAPI。

これを利用しながら、プログラムを書いているようです。
まずは、これを知ることで、今後の構築に応用をきかせていきます。


1.XMLRPC APIを学ぶ。

Javaからブログを更新するためには、XMLRPCのエンドポイントに接続をする
必要があるということは、前回も述べました。
その接続に必要なAPIがapache XMLRPCです。それも前回述べました。
そして、ブログに投稿するためにimportすべきjarファイルは、


・org.apache.xmlrpc.XmlRpcException
・org.apache.xmlrpc.client.XmlRpcClient;
・org.apache.xmlrpc.client.XmlRpcClientConfigImpl;


この3つであることがわかりました。
それぞれの役割は下記のように解釈しました。(間違っているかもしれません。理解不足は確か)

org.apache.xmlrpc.XmlRpcException

上記は、サーバとの通信に失敗したときにThrowするようにインポートします。

org.apache.xmlrpc.client.XmlRpcClient
上記クラスのsetConfigメソッドと、excuteメソッドを実行します。

setConfigでは、下記XmlRpcClientConfigImplにてsetServerURLに持たせた
URLエンドポイントに対して、クライアント側の設定を開始します。

excuteでは、XmlRpcRequestを行い、リスト型、オブジェクト型で定義した
値をエンドポイントに向けて発信します。

org.apache.xmlrpc.client.XmlRpcClientConfigImpl
クライアント要求のデフォルトの実装とのことです。
ここでは、上記にも記載していますが、setServerURLとして、
java.net.URLクラスに、エンドポイントのURLを持たせています。


うーん、自分で書いててプチ混乱してきましたw
ソース自体は上記を意識しなくても使えるのだが、それじゃ、プログラマーじゃないよな。。。

2.使用するCore API

・java.net.MalformedURLException;
・java.net.URL;
・java.text.DateFormat;
・java.text.ParseException;
・java.util.Hashtable;


はい、使ったことのないAPIでてきましたので、勉強します。

java.net.MalformedURLException
java.net自体の説明としては、
「ネットワークアプリケーションを実装するためのクラスを提供します。」とのこと。
MalformedURLException自体は、不正な形式の URL が見つかったことを示すためにスローされます。下記に示すURLを使うときのエラー対策ですね。

java.net.URL
String 表現から URL オブジェクトを生成します。
URLを表現するオブジェクトを生成するためのもの。そのままですな。

java.text.DateFormat
ブログの更新日付として持たせる値を使うときに使います。
DateFormat は、言語に依存しない方法で日付または時刻をフォーマットおよび解析する。
DateFormat. getDateInstance()で、デフォルトの日付フォーマットを指定し、
parse("2014/02/07")などで成形するために使用。

java.text.ParseException
上記とセットです。 解析中に予想外のエラーが発生したことを表すシグナルです。

java.util.HashMap
これも初めて使うな。
このクラスは、ハッシュテーブルを実装するためのもので、キーを値にマップします。
null オブジェクト以外であれば、どのオブジェクトでもキーや値に使用することができます。
今の時点では、ピンと来ていません。
put(K key, V value)というメソッドをつかうので、キー値とバリュー値をセットで持たせる。
これ、連想配列という技術で、HashTableとか、C#と変わらないみたいだな。
HashMapはHashtableと違って、同期はとらないらしい。いまのところ使う予定はないから、
このままで。
使い方としては、ブログのタイトルや本文などのキーを指定、その内容をバリュー値に持たせるというイメージかな。

3.上記APIを使って実際に更新する動きの確認。

XmlRpcClientConfigImplのsetServerURLメソッドにブログのエンドポイントのURLを持たせる

XmlRpcClientのsetConfigにて、URLにアクセス

HashMapにて、ブログの更新に必要なタイトルや本文をputしてひと塊をつくる。

配列型のオブジェクトを生成して、
ログインに必要なメールアドレスやパスワードなどのデータを持たせる。
そのオブジェクトの中の一つに、HashMapのひと塊も持たせる。

XmlRpcClientのsetConfigメソッドにて、上記オブジェクトを発信。

ブログが更新される。



といった流れ。次回は実際に更新されるかどうかを公開。
どこが自動化なの?という疑問がわくと思います。
ただ、API叩いて更新しているだけじゃんと。

自動化はJenkinsや、Tomcatをcronにて定期実行させることで可能。

データは、DBやtwitter、外部ニュースサイトから引用する技術があります。
そこまでの知識や実装経験はあります。
ただプログラムがしょぼくて載せるかは微妙。

無料でブログを自動更新するプログラムを作ってみる その1 準備

去年、この内容に触れていましたが、ここでシリーズ化してみようと思います。
こっそり過去記事として更新したので、反響は全然ありませんでしたがw

一から自分で考えるのではなく、ある程度アウトリソースを利用しながら
Javaのプログラムを書き換えながら作っていこうと思います。

一度自分で作っていますが、もう一回最初から作っていこうと思っています。

1.フリーブログを更新する仕組み

まず、フリーブログには、エンドポイントというのがあります。

FC2ブログで言うと、

http://blog.fc2.com/xmlrpc.php

これがエンドポイントです。

このエンドポイントに対して、
メールアドレス、パスワード、ブログIDなどの情報を与えることによって、ブログを更新します。

ここに情報を与える手段は、phpでなくても、Javaでも、Perlでもよいのです。
情報の受け取り口として、口を開けて待っているわけです。

通常は、ログインしてフォーマットに従って、タイトル→本文といれていきます。
これはプログラムのわからない人でもブログを更新できるようにしている仕組みであり、
エンドポイントを公開している以上、ブログを更新する手段としては、
上記以外でもいいよ!という許可をしているということです。

ちなみに、ファンブログのエンドポイントは数年前に無くなった認識です。。。

2.エンドポイントの調べ方

ブログのエンドポイントは、XMLRPCというプロトコルで公開されており、
転送機構として、HTTPを採用しています。
これはとても古い技術のようです。それでもいまだに使われているのですね。
エンドポイント一覧を公開しているサイトも多く、
「XMLRPC エンドポイント」と検索すれば、各ブログのエンドポイントがごっそり取れます。

この情報は、ブログを更新するための情報の一つとして必要になります。

3.用意したもの

Eclipse
Apache XML-RPC

Apache XML-RPCを用意して、ダウンロードしてきたApache XML-RPC開発環境に突っ込みます。

これだけ。
あとはプログラミングをしていくだけですが、ソースも古い技術とだけあって、
たくさん転がっているので、ある程度流用させていただきたいと思います。


今日は、この辺で、お開き。
プログラムの構成については翌日。
ソースコードは最後に載せるか載せないか判断します。
正直、上記の情報をもってすれば、載せてるサイト見つかりますけどね。



基礎力の上昇×新技術の習得×言い続けること

自分がやりたい分野があるなら、いい続けることが重要。

やはり、ITはプロジェクトにおける一人単価より、安い人材を使えば利益が出る。
逆に、単価は高くても、一人分以上のスピードと技術がある人を使っても、一人分以上の働きをすれば利益が出る。
よって、利益と持っているスキルのバランスを持って人員が配置される。

自分みたいに開発志望なのにインフラぶちこまれちゃうのは、
会社が利益をだすため。といってしまえば社会的には当たり前のこと。

でも、転職した理由ってなんだっけ?
会社に利益を出すためでも、インフラエンジニアとして成功したいからでもなく、
プログラマになりたいから転職した。

仕事をするうえでは上記が重要。
何度もいってますがLPICやSQL、Ciscoを勉強したのはインフラエンジニアになりたいからではない。
WEBアプリケーションに必要なサーバサイドの環境をスムーズに作れるようになるため。

やはり、強い意思をもって挑まないと、会社にいいように使われて終わってしまう。


プログラミングがやりたい。そのために、こういう技術を勉強してきた。
と言えること、しつこく言いつつづけること。これで今年はプログラマデビューを果たす。

基礎力を上げて頑張るぞ!ということも重要なので、継続します。

暇があったら、CoreAPI
例えば、System.out.println …
文字をコンソールに出力する命令文。
このSystemって何、このoutって、どこのクラスで定義されているの?
こういうところを追っかけて勉強すると、継承などの知識が、色々と結びついてくる。
命令文をコマンドとして理解せず、どういうロジックで動いているのかを考える必要あり。
これがわからない現役のプログラマっていないんじゃないかな。

Linuxを学習するときも、Service tomcat restart …
なんてうつけど、コマンドとしてではなく、どこの処理がどう動いているの
って考えて、/etc/init.d配下のシェルスクリプトの中身をチェックしたりするようになれないと、
インフラの運用レベルとしても足りないので、構築なんかもまだまだだなと思います。

技術力の向上としては、
jsp、サーブレットの基礎だけにとらわれていると、何も実装できないことを理解しました。
HTML5とJavaの密接な関係を理解して新しい技術を取り込んでいくぞと。

具体的に興味があるのは、Node.js とWebSocketの組み合わせ。
1/31に上記のセミナーがありましたが、会社の新年会で泣く泣く回避・・・。
すっごい面白そうだった。。。

Node.jsは、ノンブロッキングI/Oと、イベントループを採用した技術で、
上記の技術は、Webアプリケーションでも軽量で、効率を考えられた
サーバサイドなJavaScriptです。

それと、並行して使いたいWebSocketは、双方向通信を可能とするプロトコルで、
サーバ・クライアント間で1つのコネクションを継続して利用することのできる技術。

処理を送って、受け取って、それを返す。といった仕組みを、
クライアントからもサーバからもコネクション開始後は自由に処理をできるといったものです。

今は亡き、ブラウザクエストなどがその処理を応用したもののようです。

うーん、深いなー。Webの世界。楽しいなー。わくわくするなー。

と、現状のインフラ業務が目の前に積み重なっている現実逃避をしてみました。

やはり、今年はWebアプリケーションをインフラからプログラミングまで全部やれるエンジニアになりましょう!
ということです。
これは凄いことではなく、私くらいの年代になれば、うちの会社にはゴロゴロいるんですよ。
それくらいの人材は…。まず、言い続けることが重要。プログラマになる!プログラマになる!
なるのだぁぁあ!!(息切れ)

はじめてのNode.js -サーバーサイドJavaScriptでWebアプリを開発する-

新品価格
¥3,045から
(2014/2/9 10:05時点)



誰か私に買ってくださいw

【AWS】無料範囲で学習できる事

たまには、インフラ分野でも記事を書くよ。

AWSをやってみたい。またはAWS案件に入りたいけど、未経験。
こういった方は、まず無料利用枠で練習してイメージをつかむといいです。
利用時間やリクエスト数によって無料利用枠を超える可能性もありますが、
スタート、ストップ、ターミネートをしっかりやれば、せいぜい1ドル程度のもの。
勉強代としては安いものです。

私が徹底しているルールは、下記。


・インスタンスを立ち上げっぱなしにしない
・不要なものは削除する


従量課金なので、運用においても上記は必要なことなので、
何をすると課金されるのかも明確にするための練習にもいいかもしれません。
この記事では料金に関する内容には触れませんが、参考資料を読めば
イメージはわくと思います。

参考資料
http://aws.amazon.com/jp/free/faqs/

まず、運用や構築においての必要最低限は、無料利用枠で練習する。
下記に、無料利用枠で私が練習した内容を記しておきます。


・EC2
インスタンスの作成
インスタンスをサーバとして運用
インスタンスの削除
EBSストレージの作成
EBSストレージのデタッチ・アタッチ
EBSストレージの削除

・IAM
ユーザの追加
ユーザの削除
ユーザのポリシー作成

・RDS
DBインスタンスの作成
DBインスタンスの運用
DBインスタンスの削除

・S3
バケットの作成
バケットの運用
バケットの削除

・VPC
セキュリティーグループの設計
セキュリティーグループの作成
セキュリティーグループの運用
セキュリティーグループの削除

・ELB
ロードバランサの作成
ロードバランサの削除
ロードバランサの運用


結構いろいろ出来ますし、EC2の月間起動時間750というのは、
1インスタンスを1カ月まるまる起動することを想定していますが、
逆に10インスタンスを動かすような使用でも、1台当たり75時間以内に収めればいいので、
ELBを使って、ロードバランサの練習などもできますし、RDSを複数立ち上げることもできますね。
(RDSはストップができないので、Terminateが必要になる)

結構いろいろ出来るので、面接のときのアピールに、
上記の内容は自分で練習しました。と言えるだけでも大きく違ってくるかな。
これだけ書いても、じゃあ、どういうの作った?と聞かれる可能性もあるので、

例えば、
1.EC2でサーバ1台を立てて、RDSを1台立てて、Webサーバを構築。
2.付加状況に合わせてロードバランスするように、さらにEC2で上記Amiを使いWebサーバを構築。
3.ELB(ロードバランサ)で2台のEC2のウェブサーバに負荷が分散されるようにELBでロードバランスしています。
(以下、有料範囲含む)
4.また、2台ともアクセス不能になった場合の対策として、S3にてバケットを作成し、Sorryページを作成。
5.Route53(DNS)を使い、Failover設定をすることで、EC22台ともアクセス不能な場合は、
S3バケットのSorryページにFailoverするように設定しています。


くらい言えれば、「あ、ちゃんと独学できてる・・・」と伝わるかと思います。
Webアプリケーションプログラマーを目指す方も、サーバ構築も上記くらいできれば、有利かもしれませんね。

上記以外にもクラウドデザインパターンと言われるサーバやDBなどの組み合わせで
システム構築例は、いろいろと思いつくことかと思います。
他にも機能がありますが、私は経験していないので、練習できそうなものがあれば、また報告します。

IT技術者の成功している人に共通して言えること

ネットで情報を探していると、分野ごとにスペシャリストって存在しますよね。
技術を探せば同じ人にたどりついたり…。
そういった人って、すごいなぁ。ってやっぱり思うわけです。
ITの業界で成功している人に、共通して言えることは、
「苦しい環境に飛び込んでやってきた」
飛び込んでというか、突き落とされた人もいるかとは思いますw
ただ、その崖を自分の力でよじ登って、這い上がってきたわけですから、
地上に戻ってきたときには、それなりに力が付いているわけです。

もちろん、そこからキープする努力をしなければ、
その崖をよじ登って得た力はみるみる衰えてしまいますので、
維持を出来るよう努力をするか、新たに崖から飛び込むか、
押すなよ?押すなよ?といいつつ、落してもらうか…。

やはりITの人材は、肉体で無い分、頭脳で勝負するというよりは、
メンタル(精神)の世界だと思います。
崖に落とされてよじ登れるか、そのまま朽ちるかは、
その人の精神力をどう培っていくかと言うところに尽きるかと思います。
ある意味では、新しい技術を吸収し続けるというのも、
その人のモチベーションであり、これもメンタルにつながるかな。

私は一見社交的で活発なイメージをもたれますが、どちらかというと
黙々と一人で作業する方が得意で、人の目を気にするところはあります。
完璧主義者気取りで、ミスをするととことん沈みます。
強いメンタルを作るということは可能だと思いますが、元に戻るのも早い。
私は役者養成所に通っていたこともありますが、その前後では別人のような
メンタルの強さを得ましたので、こういうところに足を運ぶのもありかもしれませんね。

話は脱線しましたが、やはり飛び込む前にリスクを恐れては、人は成長しないんですよね。
いいや、失敗しても。失敗したら、失敗した時の自分が頑張る。
といった考え方が必要かもしれませんね。

高みにいる人たちは、自分との戦いができる人。苦境を楽しめる人。
人と比べている時点で、伸びしろは少ないかな。と思います。
あくまで人のスキルは、参考にする程度にして、必要なものを選んでいくのは自分。
突き詰めるのは自分。まだまだ頑張りませんとな。
<< 前へ     >>次へ

先頭に戻る

×

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