平凡エンジニアによる平凡ブログ

平凡インフラエンジニアがスキルアップを目指してプログラミングやクラウドやサーバといったインフラのアウトプットをしていきます!

【PHP】配列の要素を変数に入れなおす

今回のテーマ

PHPで配列の要素を変数に設定する場合を備忘録として残します。

前提条件

例えば「15:00 1 30」と時刻の値を標準入力で渡し
この入力値から16:30と言う値を出力させたいとします。

ここから[0]の要素である15:00をそれぞれ+するために「15」「00」を分けたいというのが今回の前提条件になります。

// 標準入力の値を$aに代入する
 $a = trim(fgets(STDIN));

// 半角スペース区切りで文字列から配列に変換する
 $array=explode(" ",$a);

// 配列の要素を確認     
print_r($array);


// 出力
Array
(
    [0] => 15:00
    [1] => 1
    [2] => 30
)    

listにすれば設定が可能

以下の記事を参考にさせていただきました。

配列要素を個々の変数に格納する - PHPの部屋

 $a = trim(fgets(STDIN));
    
 $array=explode(" ",$a);
 
 // listを使い、それぞれ変数に代入する
 // $time=15:00,$hour=1,$minutes=30   

 list($time,$hour,$minutes)=$array;
 
// substrを使い$time1=15, $time2=00を抽出する
 $time1 =substr($time,0,2);
 $time2 =substr($time,3,5);

// 抽出した$time1 $time2にそれぞれ$hourと$minutesをプラスする

 $time1=$time1+$hour;
 $time2=$time2+$minutes;

// 最後に:をつけて出力させる
 echo $time1.":".$time2;

//出力結果
echo $time1.":".$time2;

補足

注意なのは足し算で時刻を出力させるプログラムとして不十分です。
以下の点を考慮しなければなりません。
条件分岐で処理を追加する必要がありますが、ここでは説明省きます。

例えば15:20に40分を足した際に16:10にする場合など
16:02と出力する場合にこのプログラムだと16:2の出力になってしまうので  
0をプラスする

まとめ

  • listを使えば配列の要素を、変数に設定できる

【AWS】RDSって何?サービスの詳細と概要

今回のテーマ

今回はAWSの主要サービスの一つであるRDSについて
概要をまとめます。
※操作画面はなし

目次

  • RDSとは
  • 使用するメリットについて
  • まとめ

RDSとは

まずRDSは公式ページより抜粋すると以下のような説明になっています。 要はデータベースの設定をより簡単にすることができるものです。

Amazon Relational Database Service (Amazon RDS) を使用すると、クラウド上のリレーショナルデータベースのセットアップ、オペレーション、スケールが簡単になります。

RDSでは以下のデータベースエンジンを使用することができます。
大体のDBは使用できます。

使用するメリット

では従来のDBの構築する方法と比べてどう設定が簡単になったのか
まとめます。

結論RDSを使用すると以下オンプレミスとクラウドで必要だった工程も
設定することで行ってくれます。

あとはデータの増減によってDBのスケールアップやアプリ側の調整が
できればDBの運用ができるようになっています。

1.オンプレミス

オンプレミスとは自社で物理サーバを準備して
そこから構築することです。クラウドができる前はこの形式でサーバを用意しておりました。

オンプレミスでDBを準備する場合は以下のことが必要と考えられます。

No 工程
1     物理サーバ機器手配
2     データセンターなど場所の手配
3     OSのインストール
4     DBのインストール
5     バックアップ
6     アップデート

2.クラウド

例えばAWSでEC2を準備した場合などを想定すると
以下のことが考えられます。
EC2を使用した場合、OSのインストールまではまかなえますので
それ以降の工程が必要になると考えられます。

No 工程
1     DBのインストール
2     バックアップ
3     アップデート

まとめ

以下メリットがあるので、AWS上でDBを使用する際には基本は使っていくのがいいように思えます。

  • RDSはデータベースをより簡単に設定できるサービスのこと
  • RDSを使用すると従来のオンプレミスとクラウドを使った際に必要だった工程を設定することで行ってくれる。
参考URL

Amazon RDS(マネージドリレーショナルデータベース)| AWS

学習文献

資格取得に向けて学習中です。

AWS認定資格試験テキスト AWS認定ソリューションアーキテクト - アソシエイト 改訂第2版

【PHP】文字が含まれているかチェックしよう!(strpos)

今回のテーマ

PHPで文字が含まれているか確認する
strposメソッドについて備忘録として残します。

strposメソッドの使用

例えばアイウエオと言う文字列からアが含まれているか
チェックするコードを書くと以下の通りになる。

 $a="アイウエオ";
 $b="ア";
 
 if(strpos($a,$b)!==false){
     echo "含まれています";
 }else{
     echo "含まれていません";
 }

//出力
含まれています

phpマニュアルを確認すると
strposメソッドは検索した文字が存在していれば位置を返すが
存在していなければfalseを返り値としてかえすメソッドになります。

上記例だとアは一番最初に位置しているため「0」の返り値を返すことに
なります。

 $a="アイウエオ";
 $b="ア";
 echo strpos($a,$b);
// 出力
0

まとめ

  • PHPで文字が含まれているチェックするメソッドにstrposメソッドがある
  • strpos('検索する文字列','チェックする文字')の引数をつける
  • 返り値は文字がある位置かflaseになる

参考

https://www.php.net/manual/ja/function.strpos.php

【PHP】整数もしくは文字列に変換する(キャスト型の使用)

今回のテーマ

今回はPHPにおいてキャストを使用して整数から文字列または
文字列から整数に変換することにする。

文字列から整数へ

ではまず文字列から整数へ変換して足し算をするコードです。 書き方自体は簡単であるが、注意なのはキャストの式と変換する値の間に
半角スペースが必要のようです。

$num ="1111";
$num2="3333";

// int型へ変換する
// キャスト式と変数の間に半角スペースが必要のようです。

$a =(int) $num;
$b =(int) $num2;

echo $a+$b;

//出力
4444

整数から文字列へ

整数から文字列もintの箇所をstringに変更すれば良い
だけなので簡単です。

$num =1111;
$num2=3333;

$a =(string) $num;
$b =(string) $num2;

echo $a.$b;

// 出力
11113333

まとめ

今回まとめた内容は以下です。
下記参考URLを見てもわかるように他の型へも変換できるようなので
認識しておきましょう。

  • PHPにて文字列から整数への変換
  • PHPにて整数から文字列への変換

参考

PHP: 型の相互変換 - Manual

【AWS】IAMって何?サービスの詳細と概要

今回のテーマ

AWSにて主に認証関係で使用されるIAMについて
概要をまとめてみる。
AWS上での操作は今回は記載しません。

目次

  • IAMとは
  • IAMで主にできること
  • IAMにおけるベストプラクティス

IAMとは

AWS公式ページを抜粋すると以下の定義になります。

AWS Identity and Access Management (IAM) は、AWS リソースへのアクセスを安全に管理するためのウェブサービスです。

要はログインできるユーザを作成したり、ユーザの権限を設定したり
認証で使用される
のがこのサービスです。

機能はもちろん違いますが、イメージとして
WindowsでいうとActive Directoryの役割を担うのがこのIAMです。

IAMで主にできること

IAMでは様々な機能がありますが
おそらく実務上でも使用する基本的な機能についてまとめます。

  • IAMユーザの作成
    デフォルトだとAWS上のサービスを全て操作できる
    ルートユーザになっています。

    そのため操作してはいけない人が思いがけない操作をしてしまう可能性があるため、権限を割り当てたIAMユーザを作成して、そのアカウントを使用することが推奨されます。

  • IAMグループの作成
    個々のユーザ単位で権限を管理するのではなく、グループを作成して
    グループ単位で権限を与えて、そのグループにユーザを所属させることができます。

  • IAMポリシーの作成
    ポリシーとは操作権限のことです。AWSではデフォルトでポリシーが作成されています。

  例えばEC2サービスだけ全ての操作権限を与えたり独自でポリシーを
  作成することができます。

  • IAMロールの作成
    IAMロールとはユーザやグループにではなく、EC2などのサービスに対して与える権限のことです。
    例えばEC2インスタンスからS3(データベース)を操作する権限を与えたりすることができます。

IAMにおける良い運用方法

ではIAMでグループ、ユーザ、ロールを作成したが
実際にはどのように運用していくのが良いのか
以下の通りだと考えております。

  • IAMユーザを個々に作成する
    一つのアカウントを使い回すと誰が何の操作をしたかがわからなくなる
    ためなるべく1ユーザ1アカウントで管理する方がいい

  • グループごとに権限を管理する
    グループごとに管理することで例えば権限変更が発生した場合に個々のユーザに対して設定変更するのではなく、グループの権限変更をすれば良いため管理が効率化されます。

  • 権限は必要な権限を必要な人に
    これは基本的な考えですが、必要以上の権限は与えないようにします。

  • 不要なユーザや権限は削除する
    退職した方などのユーザは定期的に削除することが必要です。
    特にAWSはインターネットが使えれば、外部から使用することができるので 重要です。

まとめ

今回学んだことをまとめる。

  • IAMとは認証系のサービス
  • IAMの基本機能にはユーザ、グループ、ポリシー、ロールの作成がある
  • IAMのベストプラクティスについて

クラウドサービスのデメリットでもあると思うが、AWSのコンソール画面は
自宅のパソコンからも開けてしまうのでIAMを活用したセキュリティ面は
しっかり運用していく必要があると感じました。

今回は操作画面はなしでしたが、実際にコンソールに入って
サービスを触ったりUdemyでもわかりやすくまとめられている動画もあるのでそちらを参考にしてもらえればと思います。

今回は基本的な機能を中心にまとめましたが、後日アソシエイトの資格対策として深くまとめていきます。

参考

IAM とは - AWS Identity and Access Management

AWS認定資格試験テキスト AWS認定ソリューションアーキテクト - アソシエイト 改訂第2版

【PHP】文字列を逆にして出力させる(strrev)

今回のテーマ

文字列を逆にして出力させたいときに使用する
strrevメソッドについて備忘録として残しておく

使用方法

使用方法は簡単です。数字を文字列として逆順に出力させています。

$a ="123456";
echo strrev($a);


// 出力
654321

まとめ

  • PHPで文字列を逆順に表示させるためにはstrrevメソッドを使用する

参考

PHP: strrev - Manual

【AWS】初回ログイン時に表示される(The authenticity of host〜)表示について

今回のテーマ

AWSのEC2インスタンスを作成して初回ログインしようとした際に
表示されるメッセージついて備忘録として残します.

メッセージ内容について

以下のようなメッセージが表示されます(一部省略)
結論特に問題ないメッセージです。

// ログインコマンド
ssh -i '秘密鍵' ec2-user@'IPアドレス'

// 出力メッセージ
The authenticity of host 'IPアドレス' can't be established.
ECDSA key fingerprint is 
(省略)
Are you sure you want to continue connecting (yes/no/[fingerprint])?

2回目接続時には表示されません。
どうやら初めて接続するインスタンスのため、本当に接続しても問題ないかを確認するメッセージのようです。

そのため「yes」と入力すれば問題なくログインできます。

まとめ

メッセージ内容的にも特に異常があるように見えないが
それでも認識しておかないと驚くので備忘録として残します。

学習文献