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


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

JavaEEの前に復習をしてみる その13 文字列の調査や検索

Stringって文字列を表示するだけのものではなくて、
文字情報の比較・検索・抽出にも使えるので、例えばYahoo天気のページから
今日の天気や明日の天気のデータを抽出するような時にも使えます。

今日は、Stringを使った文字列操作を学習してみます。

1.文字列の調査

public class JavaString {

   public static void main(String [] args){   
      String st1 = "Javaを勉強しています" ;   
      String st2 = "javaを勉強しています" ;
   if (st1.equals(st2)){
         System. out .println("この文字列は一緒です" );
      } else if (st1.equalsIgnoreCase (st2)){
         System. out .println("大文字小文字を区別しなければ一緒です" );
      } else {
         System. out .println("違います" ); 
      }
   }
}

例えば、上記のようなプログラムを作った場合、結果は、
「大文字小文字を区別しなければ一緒です」
という結果が返ってきます。

ここでは、
st1.equals(st2)
st1.equalsIgnoreCase (st2)

の2つを使っていますが、

st1とst2が同一であるかを比較する構文になっています。
st1.equals(st2)の場合は、文字列の完全一致を求めているので、
st1とst2は、Java と java の違いがあるので同一と判断されません。

しかし、st1.equalsIgnoreCaseは、大文字小文字を区別しませんので、
同一の文字列として認識し、else ifの結果が返ってくるといったようになります。

あと、よく使うのが、文字列の長さを調べるlengthですね。

System. out.println(st1.length());

とすると、12という文字列の長さを返すことができます。


2.文字列の検索


以下のようになプログラムを書きます。

public class JavaString2 {

    public static void main(String [] args){

      String st3 = "ブログ記事にJavaScriptとJava" ;

      System. out .println(st3.contains("Java" ));
      System. out .println(st3.startsWith("ブログ" ));
      System. out .println(st3.endsWith("Java" ));
      System. out .println(st3.indexOf("Java" ));
      System. out .println(st3.lastIndexOf("Java" ));
     }
  }

結果は、

true
true
true
6
17

一つ一つの役割ですが、

st3.contains("Java" )


こちらは、Javaが文字列に含まれていればTrueを返します。

st3.startsWith("ブログ" )


こちらは、頭にブログという文字列があればTrueを返します。

st3.endsWith("Java" )

想像がつくかとは思いますが、文字列の最後にJavaがあればTrueを返します。

st3.indexOf("Java" )

こちらは、Javaを頭から検索して何文字目にJavaがあるかを示します。
(0)ブ(1)ロ(2)グ(3)記(4)事(5)に(6)Java
で、6という数字が返ってきます。

st3.lastIndexOf("Java" )

こちらは、文字列の最後からJavaという文字列を検索して、
頭から何文字目にあるかという検索の仕方です。最初のJavaよりも最後のJavaの文字列の方が優先されます。

文字列操作だけで、かなり楽しい感じです。
次回も文字列に関する記事を書いていきます。

インフルエンザ発症

まさかのインフルエンザ発症をやってしまいました。

私は、風邪で会社を休んだりしたことが、ほとんどありませんので、まさか自分が・・・とは思っていました。
朝起きると、体がだるい・・・昨日体調悪かったのもあり、一応、熱を測ると37.8度。平熱は35度台です。
あ、だめだ。久々にやらかしたわ・・・。会社に連絡を入れ、とりあえず一日休みをもらう。

恐らく5年ぶりくらいに体調不良で会社を休んだ・・・。病院があく時間になったので、
ふらふらと病院へ向かう。病院で熱を測ると、38.4度。お、あがってきた・・・。

意識がもうろうとする中、診察室へ呼ばれ、昨日は熱を測ったかと聞かれる。
インフルエンザの検査キットは、高熱が7時間以上続いている確証がないと、
ただしく表示されないとのこと。夕方にもう一回来れるか?と聞かれるも、
昨日から熱はあったのではないかと思うし、もう既に朝から5時間は経っていたので、
インフルエンザだったら、もう出るだろう。と思い、検査キットを試すも、陰性。

抗生物質だけもらって帰宅。朝からずっと頭痛が続き、食欲もなく、とてもつらい。
ベッドで1日過ごし、次の日を迎える・・・。

次の日。熱を測る。39.4・・・。うげ。。抗生物質全く効いていない。
病院があく時間まで、何とか耐える。もう一回熱を測る。40.2度。あわわ・・・。
タクシーに乗って、病院に行くことも考えたけど、とりあえず、ふらふらと病院へ向かう。
そして、病院で再度検査。陽性。はい、アウトー。
予防接種は受けていましたが、新型インフルエンザにかかってしまいました。
その場で、点滴を打たれ、ふらふらと自宅に帰りました。
頭痛と気持ち悪さが一日続き、眠りにつくのも一苦労でした・・・。

そして、次の日、午前中の時点では、まだ38度ありましたが、夕方になるにつれて平熱に。
食欲も出てきたので、栄養補給のため食事をとる。
テレビをみたり、携帯をみたりというのも多少ができるようになる。

そして、待期期間のため2日会社を休みました。まだ体調は戻らないので、
徐々にならしていき、休暇最終日に布団やまくらカバーを全部洗って、除菌スプレーを部屋中に散布。
嫁さんを実家に帰していたので、戻ってきてもらえるよう準備・・・。

そして、なんとか水曜日から復帰するのでした。
いやー、ひさびさにやらかしましたね。手洗いうがいもしてましたが、
毎日人ごみの中で生活している以上、防げないものだなぁと思いました。
皆様も、体調にはくれぐれもご注意ください。

AWSのセミナーに参加してみた

仕事を定時で終わらせて、新宿までセミナーを受けに行ってきました。
今回のセミナーはAWSに関するもので、自分にとって興味のある以下4本立てでした。

・オートスケーリング
・Cloud formation
・Chef Server
・クラウドを使うユーザが考えるべきこと

仕事を終わった時点で、体調があまりよくない感じはしていましたが、
このまま帰るだなんてもったいないし、なんとかなるでしょ。と思っていました。
先に腹ごしらえを・・・と入ったラーメン屋。居酒屋兼ラーメン屋だったので、出てくるのが非常に遅く、
ちょっと余裕を持って行ったのですが、ギリギリでした。

1.オートスケーリング
オートスケーリング自体は、スポットインスタンスを使ったオートスケーリングを運用してみて
どうだったかといった内容でした。
ソーシャルゲームにオートスケーリングを利用しているので、ピークタイムになったら、
単価の安いオークション形式のインスタンスを自動で増産して、不可に耐えられる仕組みです。

なるほど。AWSにはCloudWatchという監視の仕組みがあって、付加状況に応じて、
オートスケーリングでインスタンスを増産という仕組みは考えているけれど、
事前にピークタイムを予測できるような場合は、不可が上がる前に増産するというのも手ですね。

そしてスポットインスタンスは、安い反面、自分より高い値段で入札されるとサービスに乗っかった
インスタンスすらも落とされてしまうので、やっぱり複雑だなぁと思いました。
いくら安いとはいえ、本番サービスに乗っけられるのは、全部自社サービスだから責任も自分らでとれるといったところでしょうか。
ちょっと大胆すぎて、受託とかだったらこのやり方は提案できないだけに、発表としては面白かったですね。

2.CloudFormation
これは、もっと早めに勉強しておくべきだったとは思います。が、うちはAWSでのインフラ構築をメインでやっています!
といった会社でないと、なかなかエンジニアが使いこなすレベルまではいかないかなぁと思います。
ネットワークから、インスタンスの使用、セキュリティーグループまで、リソースの集約(スタックと呼ばれる)を作っておいて、実行することで一気に構築できるといったものです。

発表者の方も言っていましたが、記述がJSONなので。入り口としては、かなり抵抗のあるものです。
AWS屋さんだったら、ぜひ使うべきものだということはよくわかりました。
WEB+DBのサービスを今日中に作ってよと言われても、スタックを作っておいたものがあれば、
その要件に合わせて、修正してあげるだけで作り上げられますからね。

AWSの素 のようなテンプレートをたくさん作っておいて、一瞬で構築を済ませるといったようなものですね。
ある意味では、高位な魔法は時間がかかるので、魔方陣をあらかじめ作っておいて、敵が来たら発動するだけ!といった
ゲーム的発想で自分を納得させてみる。そう、Jsonは魔方陣なのだから、そう簡単に理解できるわけないw
まぁ、やればできるんですよ。きっと。やりますよ。きっとw


3.Chef Server
これはAWSではないですが、AWSと組み合わせて利用されることも多く、1台1台設定ファイルを変更するのではなく、
Chef Serverで設定ファイルやアプリケーションのインストールなどを一元管理するものですね。
つまり、Cloud FormationでAWSサービスを立ち上げたら、中身的な変更はChefで管理するといったことができます。

Chefも結構敷居が高く、レシピやナイフといった新たなChef独自の仕様を理解していく必要があります。
あとは一人だけ覚えてしまうと、その人に頼りっきりになってしまう感じも否めないなぁと思いました。
新しい技術って、一人だけができても実際運用する際には、とても苦労しますよね。
インフラって結構一人当たりの負荷が高くて大変ですしね。
この発表者の企業は、結構有名な会社でしたが、インフラを2.5人で回しているといっていました。
とても信じられません。。。

4.クラウドを使うユーザが考えるべきこと
ITの専門学校が減っていることから、技術者が減少しているという切り口からスタートしました。
やはり技術者不足と、リーダーとして活躍できる人材をどこの会社も欲しがっているということ。
またクラウドへの移り変わりの速さに、経営層やエンドユーザ層がついてこれていなく、
現在の技術者さんたち、苦労していませんか。といった話もありました。

たしかにね。うちの会社も誰一人AWSインフラできませんからね。
ここを極めれば会社で、かなり力を発揮できる反面。失敗したとき、誰も自分のフォローはできませんよということ。
これじゃ、誰も率先して新しい技術に挑戦しないし、インフラ離れが加速するのも分かりますね。


5.まとめ
実際、もっとたくさん細かい話は聞きましたが、
技術的にどうこうという話よりも、実運用に対してこうでした。という話を聞けたので、
最新技術をライトな感覚で聞くことができたなぁといった感じです。
ライブコーディングのような形式で、頭フル回転で参加するといったものもいいですけどね。
こういった恐らく自分の会社には当てはまらないだろうけど・・・といった自分が踏み込まない世界を
知るといったものも大事だなぁとは思いました。

そして、この時点では土曜日にもAWSのセミナーの参加を予定していて、
また週末に聞ける!と楽しみにしているのでした。

ITセミナーの参加意義×朱に交われば…

セミナーの目的はいろいろであるが、その1つとして意識の向上がある。
何だ、普通の目的じゃん。といった感じではあるが、
どう意識を高めるのか。高めると言うよりは高まる。高めてもらう。
といった第3者の力で自動的に上げてもらう感じだろう。

どうやったら意識が高まるのか、それは1流の中に紛れる事。
セミナーは内容にもよるけれど、1流の人間がたくさんいて、
自分の技術や仕事に誇りを持っている人たちがいる。
その人たちと交流する事で、自分もやれる。挑戦できる。と感じる事ができる。

ここで言う1流の人間というのは講師を指しているのではなくて、
周囲で一緒にセミナーを受講している人達を指している。
講師はもちろんなんだけど、講義を聞いて、はい、さよなら。だと、
あー、すごかったな。で終了してしまう。

セミナーのあとの懇親会が重要なのは、講義が終わってからです。
懇親会で隣になった人に、「今日の講義わかりました?どうでした?」と話しかける事で、
こう思った。ここは違うと思った。など、自分ひとりでは見いだせなかった価値観を得ることができる。
また、その人の仕事内容や所持しているスキルの話など、大変勉強になる。
一般的な生活で言う、舞台や映画を観終わった後に友達と感想を言い合うあれですね。
結構自分ではさらっと流していたところが重要な場面だったり、相手が理解できなかった場面を、
自分はこういう風に解釈したと伝えて賛同をもらったりね。

とてもいい刺激になりますよ。これからも参加していきたいと思います。

はじめてのAWS CLI コマンドでインスタンスの起動・終了をしてみる

AWSのインスタンスはAWSマネージメントコンソールからGUIで起動・終了が容易にできるのだが、
例えば、0時にインスタンスを停止して、8時になったら起動する。といった動きは、
コンソールからは指定することができません。

よって、1台司令塔となるインスタンス。例えばJenkinsサーバを立てて、そのサーバが
他のインスタンスの起動・停止を管理するようにする必要があるのです。

まず、コマンドで起動・停止させるためにはどうするのか勉強してみました。

1.CLI Toolsを用意する。
http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/WindowsGuide/InstallEC2CommandLineTools.html#tools-download
インストール手順が載っていました。
しかし、Amazon Linuxを利用している時点で、ツールはインストールされていましたので割愛。

2. AccessKey と SecretKeyを用意する。
IAMより、Administrator権限を持ったユーザーを発行し、AccessKeyとSecretKeyを用意しておく。
この権限を使って、インスタンス間の操作を行うことができるようになる。

3. aws configureコマンドを実行する。
aws configureコマンドを実行することで、環境変数をセットできます。
AWS Access Key ID [None]: 発行したAccessKey
AWS Secret Access Key [None]: 発行したSecretKey
Default region name [None]:ap-northeast-1(ここでは東京リージョン)
Default output format [None]:json(ここではJsonを指定)

4.起動・終了させてみる

[ec2-user@ip-172-31-17-19 ~]$ aws ec2 start-instances --instance-ids i-abcdefg
{
  "StartingInstances": [
    {
      "InstanceId": "i-abcdefg",
      "CurrentState": {
        "Code": 0,
        "Name": "pending"
     },
      "PreviousState": {
        "Code": 80,
        "Name": "stopped"
     }
   }
  ]
}

[ec2-user@ip-172-31-17-19 ~]$ aws ec2 stop-instances --instance-ids i-abcdefg
{
  "StoppingInstances": [
   {
     "InstanceId": "i-ad1a7da8",
     "CurrentState": {
      "Code": 64,
       "Name": "stopping"
     },
     "PreviousState": {
       "Code": 16,
       "Name": "running"
     }
    }
  ]
}



無事、起動・終了させることができました。

5.失敗例
コマンドで起動させられないときは、設定が不足している可能性があります。
例えば、
・Unable to locate credentials. You can configure credentials by running "aws coigure".
アクセスキーやシークレットキーの設定ができていない。aws configureしましょう。
・Service ec2 not available in region ap-northeast-1c
aws configureの情報が間違っている。Default region name [None]:ap-northeast-1(ここを、1a,1cにしてしまっていたり・・)
・「A client error (UnauthorizedOperation) occurred when calling the StartInstanceoperation: You are not authorized to perform this operation.」
IAMでユーザーを作ってKeyは発行したけれど、権限が何も付与されていない。

6.まとめ
起動、停止自体は難しくないです。事前設定が必要であるということ、
結果表示にJsonを選んでいるので、読めるようにしておくことが大事ですね。
このあたりの内容を理解、記述できるようになれば、CloudFormationなどで構築できるようになる日も近い?
<< 前へ     >>次へ

先頭に戻る

×

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