min117の日記

初期desireもち。趣味Mac,メインFedora,仕事xp。

Laravelでデータベースのマイグレーション(要はCREATE.sqlをLaravelにやらせちゃえって機能)

1,000万円を超えたbitcoinを少しだけどもらえるURL

https://bitflyer.com/invitation?id=l50e5ljw&lang=ja-JP

ハピタスからポイントもらえるURL

その買うを、もっとハッピーに。|ハピタス

 

DBマイグレーション

言葉の意味はイマイチ分からんのだが要は(いつもなら)SQLで CREATE.sqlってテキストファイル作って例えば

CREATE TABLE NonAggTbl (
 id VARCHAR(32) NOT NULL,
 data_type CHAR(1) NOT NULL,
 data_1 INTEGER,
 data_2 INTEGER,
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=utf8; 

とかやるのダルいし、次にDB作るときにそのテキストファイルを無くしちゃうと全く同じ環境(DB)を作れなくて困ったりするので、DB作成それ自体をLaravelにやらせちゃえってのがマイグレーション機能というものらしい。

年表アプリを作ってて、歴史上のできごとをnenpyo.csvファイルに書いてるんだけど、いろいろ限界なのでそろそろこれをDB(nenpyoテーブル)に移行して、Laravelアプリから触われるようにしたいってのが今回の趣旨。マイグレーションファイルを作る。

$ php artisan make:migration create_nenpyo_table

これで 日付_create_nenpyo_table.php というファイルができるので、それを編集していく。

$ vim database/migrations/日付_create_nenpyo_table.php

$tableオブジェクトの ->timestamp()メソッドにより、DBテーブルの中にはおなじみのcreated_at列とupdated_at列が作られる

artisan がマイグレートを実行していくと…

.envで設定した myLaravel01データベースの中に、新たにテーブルnenpyoができた。

$ vim .env

mysql> use myLaravel01;

mysql> show tables;

mysql> desc nenpyo;

なるほど。こりゃ便利だわ。

 

Laravelのクエリビルダ習得した次にEloquent(DBをオブジェクトとして扱う機能エロクエント)学ぼうと思ったけどヤメた(車輪の再開発だなコレ)

1,000万円を超えたbitcoinを少しだけどもらえるURL

https://bitflyer.com/invitation?id=l50e5ljw&lang=ja-JP

ハピタスからポイントもらえるURL

その買うを、もっとハッピーに。|ハピタス

 

Eloquentいらん

せっかくSQLという完成された仕組みがあるのに、無理にそれをPHPで扱えるオブジェクトにする発想がどうも好きになれん。

クエリビルダでSQLガッツリ組んで、結果だけをPHPで表示したほうがどう考えても速度が出るし、以前いた会社ではマジで速度が重要視されていて、Oracleからプロを召喚してオプティマイザやらIndex貼り直しやらのチューニングでSQL速度改善を(お客の希望もあったからマジ血眼で)してたので、その経験から言うと、わざわざEloquentでオブジェクト化してSQLの実行速度を落とす意味がわからん。てか開発の現場では実用になるまい。

と思ったらやっぱ、クエリビルダのほうが1,000倍速い!って検証記事があった。

qiita.com

ってことで、Eloquentを学ぶのは今後時間のあるときに(オブジェクト思考の)考え方を学ぶためにやるとして、当面はめっさ速度が出るWebサービスを目指して手元アプリ作っていこうと思う。

とりあえず歴史年表アプリをLaravelでやるアプリのお試しは完成した。

これはCSVから読みんこでるけど、DBから読み込むようにLaravelで作り込んでみる。

min117.hatenablog.com

 

お名前.com サーバー契約なし(ドメインのみ)の環境で Laravel を動かす

1,000万円を超えたbitcoinを少しだけどもらえるURL

https://bitflyer.com/invitation?id=l50e5ljw&lang=ja-JP

ハピタスからポイントもらえるURL

その買うを、もっとハッピーに。|ハピタス

 

お名前.comのドメイン名のみ契約した状態でもssh接続すると /home/ユーザ名/public_html/20210101xxx.onamaeweb.jp/という公開フォルダに接続できる。

そこにおいたファイルは(ドメイン名は長ったらしいが)外部公開はされてるわけで、ここにtoC向けのサイトというよりは、例えばShopifyのWebhookに使うための自作公開APIを置いて商品注文をコントロールする場所には使えるわけだ。

Laravelを置いておけばAPI作成も楽になろう。インストールしてみる。

 gn-office.pro

 

これから打つコマンド(Laravelインストール用)一覧

$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

$ php composer-setup.php

$ php -r "unlink('composer-setup.php');"

$ mkdir ~/bin

$ mv composer.phar ~/bin/composer

Laraveインストールやってみる

$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

$ php composer-setup.php

$ composer create-project laravel/laravel production "^10.0"

これは不要だった(公開ディレクトリのシンボリックリンク

これはやらなくても公開できたのでスルー。

ln -s ~/production/public/.htaccess ~/public_html/example.com/

ln -s ~/production/public/favicon.ico ~/public_html/example.com/

ln -s ~/production/public/robots.txt ~/public_html/example.com/

ln -s ~/production/public/web.config ~/public_html/example.com/

ln -s ~/production/public/index.php ~/public_html/example.com/

ln -s ~/production/public/mix-manifest.json ~/public_html/example.com/

ln -s ~/production/public/js ~/public_html/example.com/

ln -s ~/production/public/css ~/public_html/example.com/

ln -s ~/production/public/storage ~/public_html/example.com/

 

Laravelインストールフォルダ/public/.htaccessの編集

2行目から4行目の<IfModule>の記述を削除すると、Laravelインストールフォルダ直下のpublicが公開できる。

 

コントローラ作成

$ php artisan make:controller コントローラ名

$ vim Laravelインストールフォルダ/プロジェクトフォルダ/app/Http/Controllers/コントローラ名.php

DBマイグレーションファイルの作成

$ php artisan make:migration create_TraDB_table

Schema::create('テーブル名', function...

touchコマンドでDBの実体(ファイル)を作る。sqlite3はファイルベースのDBだから。

$ touch database/DB名.sqlite

$ php artisan migrate

userテーブルは元からあったらしくエラーになってしまった。shopsテーブルでも作るか…





 

bash の for i in $(seq 50 60) ; do echo "$i"; done と同じ処理を、Lavarelのblade内の@foreachで実現するコード

1,000万円を超えたbitcoinを少しだけどもらえるURL

https://bitflyer.com/invitation?id=l50e5ljw&lang=ja-JP

ハピタスからポイントもらえるURL

その買うを、もっとハッピーに。|ハピタス

Laravelのblade内での単純なforループ

 

 

AWS Cloud9 の利用料金は

1,000万円を超えたbitcoinを少しだけどもらえるURL

https://bitflyer.com/invitation?id=l50e5ljw&lang=ja-JP

ハピタスからポイントもらえるURL

その買うを、もっとハッピーに。|ハピタス

AWSたっか

一晩(9H)動かしただけで100円弱かかりおった。

これじゃ1日24時間動かしたら300円近い。

30日で9,000円。とてもじゃないが常時立ち上げておくことはできない。こんなんじゃ自宅サーバのほうがはるかにマシなわけだ。

 

そう考えるとAWSへの参入障壁は意外に高い。環境を作るのに経験と知識がいるし、作ったところでいつどれだけカネがかかるかが分かりにくい。知らないうちに大金がかかるから、みんな使うのをためらう(資格試験でも目指さない限りは)。

しかし裏返せば、そのぶん競争相手がいない技術を身につけることができるわけで、労働市場での一定の競争力は身につくとも言える。Amazonのボッタクリをうまく避けながら、資格だけ取る方向で検討してみる。

 

min117.hatenablog.com

 

AWS Skill Builder 無料で認定試験の対策

1,000万円を超えたbitcoinを少しだけどもらえるURL

https://bitflyer.com/invitation?id=l50e5ljw&lang=ja-JP

ハピタスからポイントもらえるURL

その買うを、もっとハッピーに。|ハピタス

Skill Builder

やっぱあるじゃないのこういう良いサービスが

explore.skillbuilder.aws





 

AWSアソシエイトでも受けてみっか

ハピタス登録で1,000円分になるURL

その買うを、もっとハッピーに。|ハピタス

アホほど高いAWS試験

この円安にさらに値上げするらしい。舐めてるね。

いやむしろ円安だから(日本円なんかで支払われてもドルにしたら価値が足りないから)こんな値上げするわけか。

お試し試験1

AWS Skill Builder

 

本日は2024/3/3(雛祭りか…)。

このあと景気は下降局面に入って、いま新NISAに手を出してるバカどもが焼き尽くされて円高に振れるのは間違いないんだけど、その前からこんな強気ってのが流石というかAmazonだな。

www.youtube.com

とはいえ1回は受けといてもいいか。ちょっと練習問題解いてみたけど、とりあえずAssociateくらいは何も考えなくても受かりそうな気がする。

 

AWS試験用のアカウントを作成

certmetrics?とかいう会うカウントを作る必要があるらしい。

認定アカウント画面に入った。

どれ予約してみるか。

無料でクラスを受けられる?

英語で聞けるなら(TOEICの無料勉強にもなって)良いかも。

無料なワケないか。とんでもないボッタクリサービス。

試験オプションの選択

いろいろいじってたら試験受ける画面に着いた。ここから次へすると受けられるらしい。

せめて無料の試験問題くらい置いといてほしいもんだ。

and-engineer.com