[Laravel8.16.0] 秘密鍵・private_keyの管理方法

private_keyを使ってControllerで処理をするとして、Controllerの中にprivate_keyを使うのは宜しくない。
ということで、.envに保存する。

.env

PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\nhogehogefugafuga\n"

controllerからenvファイルを呼び込むのは宜しくないらしいので、configを経由する。

config/app.php

'private_key' => env('PRIVATE_KEY'),

controller

$value = config('app.private_key');
dd($value);

ほう、なるほど。
とりあえずrepository作り直す。

[PHP 7.4.11] CSVパスワードリストをハッシュ化したパスワードリストに変換

csvでパスワードリストを読み取り、1行ずつハッシュ化したパスワードに変えて、新しいハッシュ化リストcsvを作る。
ハッシュ化はpassword_hash($value, PASSWORD_DEFAULT);で書く。

if (($handle = fopen("list.csv", "r")) !== FALSE) {
    while (($data = fgetcsv($handle))) {
        foreach ($data as $value) {
        	$hashedpassword = password_hash($value, PASSWORD_DEFAULT);
            $list[] = array($value, $hashedpassword);
        }
    }
    fclose($handle);
}

$fp = fopen('new_list.csv', 'w');
foreach ($list as $fields) {
    fputcsv($fp, $fields);
}
fclose($fp);

echo "done";

password1,$2y$10$9Bonz2Ou5aJ1eOJl8Nf9eOipsRRWLpPbesCn.05J.W/pu0vItQ2mW
password2,$2y$10$d4OP/5HRbNWnS2BJS7w4puvWWXCj4Y2dxAmp0wS2E84Mpvc2udCqK
password3,$2y$10$u7IghXiVsUsVarK.n46X3eqP/uAzYMmtPCXLynXtYYy5nUlSCC0b6
password4,$2y$10$qgaJzGVySJT6ll7k3I0ZwewX/ia.a2KVK3XLjH/VJuSXJ4nzdi4Fy
password5,$2y$10$VcejFdWMC6M/hI4BRZfyyeglttkqzbO41TZUexek6b58rxejgYcKG
password6,$2y$10$.lhQys3h4ukEGxn8azvzDu76l0KHNvjZYxAHfPcLu3zvshbHV78oC
password7,$2y$10$KVWoquH7WRj1bDn2l88vo.N845A4vwvuguMxRPX1G/m6uF9q63A5C
password8,$2y$10$PFDr/P4fpC0kmxQofbfb0.jHGDvQqJoRe8RPCyQlYkDozCLWhjCLy
password9,$2y$10$ZAvichguRHYMkc42fPVXVex8x7xp9/by/BDmOVaW6vRpvMSr7dIm6
password10,$2y$10$L09R/P2BX2ougk3rxHVqWelI/rJrFlTlkVr4RE7U/chw7tWZob1gu

$list[] = array($value, $hashedpassword); のところで、$hashedpasswordだけの配列を作るときは、$list[] = $hashedpasswordではなく、$list[] = array($hashedpassword);とする。

Ok, Not bad, keep going

[PHP 7.4.11] 連想配列で値を扱う

普通の連想配列です。

$sales =
	[
		"a" => 200,
		"b" => 300,
		"c" => 400
	];

var_dump($sales);

array(3) { [“a”]=> int(200) [“b”]=> int(300) [“c”]=> int(400) }

$key と $valueがあり、連想配列の中に$keyがなければ追加していく。
arsortで降順でソートする。

$key = "d";
$value = 250;

$sales =
	[
		"a" => 200,
		"b" => 300,
		"c" => 400
	];

if($sales[$key] !== null){
	$sales[$key] += $value;
} else {
	$sales += array($key => $value);
}

arsort($sales);
var_dump($sales);

array(4) { [“c”]=> int(400) [“b”]=> int(300) [“d”]=> int(250) [“a”]=> int(200) }

なんかOKっぽいな。多分。

[MySQL8.0.22] updateでTruncated incorrect DOUBLE value

値を慌ててupdateしたい。

update users set name=’営業所’ and tel=’03-1234-5678′ where id=1;
-> ERROR 1292 (22007): Truncated incorrect DOUBLE value: ‘営業所’

なんやと!!!

update users set name=’営業所’, tel=’03-1234-5678′ where id=1;

andではなく、カンマ(,)で区切るのが正解なんだと。。
ビックリするぜ。

[CSS] CSSファイルが複数ある時のネーミング

CSSファイルの分割方法

default.css リセットのCSS・基本スタイルとなるCSSを記述しています。
common.css レイアウト・ページ独自のCSSまで全て記載
index.css トップページのCSS
about.css aboutディレクトリのCSS
product.css productディレクトリのCSS
news.css newsディレクトリのCSS

なるほど、ページ名でcssファイルを作るのね。
てっきりstyle1.css, style2.cssで行こうかと思ってた。。。
これは滅茶苦茶恥ずかしい。。

[AWS RDS] 1からの作成手順

1.subnetを2つ作成
rds-test-subnet-1a
rds-test-subnet-1c

2.ルートテーブルの作成
rds-test-routetable
L 作成したsubnet(rds-test-subnet-1a, rds-test-subnet-1c)を紐付ける

3.RDS用のSubnet group作成
rds-test-subnet-group
– 作成したsubnet(rds-test-subnet-1a, rds-test-subnet-1c)を紐付ける

4.RDS用のSecurity group作成
rds-test-security-group
L inbound ruleでsshログインできる様にしておく
L Type:MYSQL/Aurora, Protocol: TCP, Port Range: 3306

6. vpc
DNS hostnames ->Enable

5.RDSの作成
– rds-test-database
– MySQL8.0.20, db.t3.micro, General Purpose(SSD)20 GiB

6. rds-ca-2019-root.pem
rds-ca-2019-root.pemをダウンロードして、.sshに置く

7. ecからログインする
mysql -h ${endpoint}.ap-northeast-1.rds.amazonaws.com –ssl-ca=rds-ca-2019-root.pem -u root -p

vagrantからやると上手くいかんな。。。 

[Laravel8.16.0] class内でメンバ変数(共通の変数)を使いたい

Controllerのメソッドの外で変数を書くと、

$var = "変数";
public function test(){

        return $var;
    }


syntax error, unexpected ‘$var’ (T_VARIABLE), expecting function (T_FUNCTION) or const (T_CONST)

アクセス修飾子をつける

private $var = "変数";
    public function test(){

        return $this->var;
    }

public
どこからでもアクセス可能です。アクセス修飾子がない場合は、publicを指定したものと同じになります。

protected
そのクラス自身と継承クラスからアクセス可能です。つまり非公開ですが、継承は可能となります。

private
同じクラスの中でのみアクセス可能です。非公開で継承クラスからもアクセス不可能となります。
private $var = ["1","2","3"];
    public function test(){

        $var = $this->var;
        return view('admin.test', compact('var'));
    }
{{ $var[0] }}

-> 1

思った通りになる。これで良いのかな。。

### 1冊やっておいても損はない本