- 投稿日:2021-01-12T18:33:18+09:00
DLしたLaravelの環境構築方法(Linux)
【前提条件】composerがインストール済み Lamp環境が正常に構築できている。
githubからDLしたLaravelプロジェクトをとりあえず動かせる
用にするまでの設定します。1、laravelプロジェクトをDLしてみる
ギットハブにアクセスしてとりあえず適当なLaravelのプロジェクトをDLしてみましょう【プロジェクト名testlaravel】
2、composerをインストールする
DLしたtestlaravelプロジェクトのserveを起動しようとするとこのようなエラーが出てきます。
/var/www/html/testlaravel$ php artisan serve こんなエラーが出てきます↓ PHP Warning: require(/var/www/html/testlaravel/vendor/autoload.php): failed to open stream: No such file or directory in /var/www/html/testlaravel/artisan on line 18 Warning: require(/var/www/html/testlaravel/vendor/autoload.php): failed to open stream: No such file or directory in /var/www/html/testlaravel/artisan on line 18 PHP Fatal error: require(): Failed opening required '/var/www/html/testlaravel/vendor/autoload.php' (include_path='.:/usr/share/php') in /var/www/html/testlaravel/artisan on line 18 Fatal error: require(): Failed opening required '/var/www/html/testlaravel/vendor/autoload.php' (include_path='.:/usr/share/php') in /var/www/html/testlaravel/artisan on line 18Composerが入っていないためLaravelプロジェクトが起動できないのでcomposerをインストールします
/var/www/html/testlaravel# composer install3、composerのインストールが完了したら
composerのインストールが完了したら早速testlaravelプロジェクトを立ち上げてみましょう
/var/www/html/testlaravel# php artisan serve立ち上がることは立ち上がりますが、ここで必ず500サーバーエラーが発生します。
4、.envファイルとAPP_KEYの設定を行う
ここでエラーが発生する要因としてlaravelに.envファイルが作成されていない
APP_keyが作成されていない事が要因でサーバーエラーが発生しています。まずは.envファイルを作成してみます。コマンドで以下の用に入力します
cp .env.example .envこの段階ではまだenvファイルは作成されてませんのでAPP_KEYの作成をしてみます
php artisan key:generatevi .envと入力して無事.envファイルが作成されていれば完成です
↓こんな奴ですAPP_NAME= APP_ENV= APP_KEY= APP_DEBUG= APP_URL= LOG_CHANNEL= DB_CONNECTION= DB_HOST= DB_PORT= DB_DATABASE= DB_USERNAME= DB_PASSWORD= (以下略)
- 投稿日:2021-01-12T12:29:20+09:00
順番通りにnewしないと落ちる謎コード
問題のコード
a.php<?php require_once('b.php'); class A { public function __construct(){ echo("A construct call\n"); } } // この順番でコールしないと落ちる $a = new A(); $b = new B(); $c = new C(); // この順番でコールすると落ちる //$a = new A(); //$c = new C(); //$b = new B();b.php<?php class B { public function __construct(){ require_once('c.php'); echo("B construct call\n"); } }c.php<?php class C { public function __construct(){ echo("C construct call\n"); } }実行結果
$ php a.php A construct call B construct call C construct call
$ php a.php A construct call Fatal error: Uncaught Error: Class 'C' not found in a.php:16 Stack trace: #0 {main} thrown in a.php on line 16解説
Bのコンストラクタにcのrequireが入っているのでBのインスタンスを立てないとCが呼び出せないようになっている。
今回の例で言うと関係のある3ファイルを見ればすぐ分かるが、実際のコードになり呼び出し関係が複雑になると状況が掴めず
「順番通りにnewしないと落ちる謎コード」
となる。回避策
- オートロードを使いましょう
- 正しい位置・分かりやすい位置でrequireしましょう
- 投稿日:2021-01-12T08:35:08+09:00
プログラムを少しかじった私がバックエンドエンジニアとして働くためにECサイトを作り始めてみた その⑤
対象者
・バックエンドエンジニアを志す人
・web開発初学者
・ECサイトを作成しようと思っている人
・初学者の勉強仮定を見たい方はじめに
こんにちは!
この投稿はその④の続きです。前回は年末年始を挟んであんまり実装が進まない状態でした。
実装する機能の洗い出し、スケジュール、実装を進めていきました。
並行で行っている開発との兼ね合いもあり今回の更新内容は少なめです。目次
1.今回の作業報告
2.反省点
3.次回までの目標
4.最後に1.今回の作業報告
まずは改めて実装する機能を洗いだしてスケジュールを立て直しました。
ざっくり機能を洗い出してスケジュールを立てています。
スケジュール崩れは間違いなく起こると思うので毎日スケジュールを引きなおすように設定しました。
ECサイトの作成としてメールでのログイン機能の実装に取り掛かりました。
現在は実装途中です。さっそくスケジュールが崩れましたので調整しなおします。2.振り返り
作業項目を改めて書き出した事により作業内容が明確になったのは良かったかと思います。
項目の抜け漏れはあるかと思いますが、それは実装進めていくなかで分かってくるのかなと思います。スケジュールを立てたことにより多少やることが明確になりました。
ただ、作業ボリュームが不明確の中で立てているのであんまり当てにならないのかな
と思っています。今回はペースメーカー的な役割で利用するようになると思います。締め切りよりかなり前に作業が終わるように設定していますが、結局、ギリギリまでかかるのかなと思っています。
3.次のステップ:引き続き実装!
機能ごとに予定を立てたのであとは実装を進めるだけかなと思います。
次回は実装結果の報告と振り返りがメインになりそうです。4.次のステップ:最後に
今回のECサイトの制作にあたりqiitaの記事をはじめて書くことを習慣にしました。・作業途中の自分の思考の振り返りことにより反省点の明確化になっている
・思い出すことによる記憶の定着が起こっている
・反省点を踏まえてのアクションプランへの転換のしやすいなどを感じており書いてよかったなと思っています。
文章の見直しなどほとんど行っておらず個人の雑記のようになっているので
読まれる投稿にして技術コミュニティに貢献していければと思っています。
(文章の書き方もちゃんと振り返らないと良くならないだろうな・・)
- 投稿日:2021-01-12T05:39:03+09:00
グーテンベルクのカラーパレットにコーポレートカラーを設定
wordpressのグーテンベルクにはカラーパレットがついていますが、毎回コーポレートカラーコードを設定するのは面倒!という事で、カラーパレットに色を登録する方法を実装しました。
プラグインを追加すれば簡単に実装出来るのですが、セキュリティ対策で極力プラグインの仕様を抑える!を目標にwordpressの設計をしているので、今回もプラグインなしで実装していきます。
カラーパレットをカスタマイズ出来るプラグイン"Central Color Palette"
このプラグインでカラーパレットをカスタマイズ出来るようですが、今回はプラグインを使わない方法を紹介しています。
カスタマイズする箇所
wordpressグーテンベルクのカラーパレットです。基本的な色が設定されています。
テーマによって、入っている色が異なるかもしれません。今回は、このカラーパレットにコーポレートカラーをカスタマイズして、色を使いやすくする方法を紹介します。
追加する色
以下の3色を追加したいと思います。
他の名前と被らないように、Corporate Colorという事で【c】をNAMEなどにつける事にしました。finction.phpに追記
以下のコードを追記しました
※function.phpに追記する場合は子テーマを作ってから作業をしてくださいね。function my_color_set() { add_theme_support('editor-color-palette', array( array( 'name' => __('c-brown','C茶色') , 'slug' => 'c-brown', 'color' => '#6A3906', ) , array( 'name' => __('c-green','C緑') , 'slug' => 'c-green', 'color' => '#0E9665', ) , array( 'name' => __('c-pink','C薄ピンク') , 'slug' => 'c-pink', 'color' => '#E7D7BA', ) )); } add_action('after_setup_theme', 'my_color_set');カラーパレットが書き換わりました。
以下はテーマのカラーパレットに色を追加する方法ですが、実行させるタイミングを合わせないとうまくいなかいみたいです。
function aktk_add_my_editor_color_palette() { $palette = get_theme_support( 'editor-color-palette' ); if ( ! empty( $palette ) ) { $palette = array_merge( $palette[0], array( array( 'name' => __('c-brown','C茶色') , 'slug' => 'c-brown', 'color' => '#6A3906', ) , array( 'name' => __('c-green','C緑') , 'slug' => 'c-green', 'color' => '#0E9665', ) , array( 'name' => __('c-pink','C薄ピンク') , 'slug' => 'c-pink', 'color' => '#E7D7BA', ) ) ); add_theme_support( 'editor-color-palette', $palette ); } } add_action( 'after_setup_theme', 'aktk_add_my_editor_color_palette', 11 );style.cssに追記
クラス名
has-c-【functionでつけたスラッグ名】-color
で文字色has-【functionでつけたスラッグ名】-background-color
で背景色を設定します.has-c-brown-color{color:#6A3906} .has-c-brown-background-color{background-color:#6A3906} .has-c-green-color{color:#0E9665} .has-c-green-background-color{background-color:#0E9665} .has-c-pink-color{color:#E7D7BA} .has-c-pink-background-color{background-color:#E7D7BA}まとめ
カラーパレットを書き換えるのではなく、追加したかったのですがうまく動きませんでした。
3色では逆に使いにくいので、よく使いそうな色をもう少し追加しておこうと思います。ドキュメント
https://developer.wordpress.org/block-editor/developers/themes/theme-support/
- 投稿日:2021-01-12T02:40:37+09:00
PHP strpos()関数の注意点
文字列の中に特定の文字列があるかどうかの判定を行うために
strpos()
を使用するが、注意が必要である。strpos()
if(strpos($対象となる文字列, $特定の文字列)){ //省略 }返り値
特定する文字列があった場合
→最初の文字のインデックス番号
例:helloの特定文字列、ellの返り値は1特定する文字列がない場合
→(bool)false
注意(これが今回のメイン)
strpos('hello', 'ell')
の返り値は1。
しかし
strpos('hello', 'hell')
の返り値は0になる。(当然だけど)だからif文を使用する場合、'hell'という特定の文字列があったとしても、
結果はfalseになる。(返り値が0だから)解決策
返り値はint型もしくはfalse(bool型)だから、この両方をtrueの結果にしてあげる必要がある。
$i = 'hello'; if(strpos($i, 'hell') !== false){ echo 'including'; }else{ echo 'not including'; } //結果 including$i = 'hello'; if(strpos($i, 'ell') !== false){ echo 'including'; }else{ echo 'not including'; } //結果 including$i = 'hello'; if(strpos($i, 'abc') !== false){ echo 'including'; }else{ echo 'not including'; } //結果 not including$i = 'hello123'; if(strpos($i, 'o1') !== false){ echo 'including'; }else{ echo 'not including'; //結果 including
- 投稿日:2021-01-12T01:14:43+09:00
データベースサーバー
起動
sudo service mysqld start
起動状態確認
sudo service mysqld status
停止
sudo service mysqld stop
データベースサーバへの接続
mysql -u root
データベースサーバからの切断
mysql> exit
データベースの作成
mysql> CREATE DATABASE ???;
データベース一覧の確認
mysql> show databases;
データベースを削除
mysql> DROP DATABASE ???;
操作するデータベースを選択
mysql> USE ???;
- 投稿日:2021-01-12T01:04:13+09:00
データベースとは
データベースは、たくさんのデータを一元管理し、データの保存、取得することに特化したソフトウェア(ミドルウェア)。データベースは データを永続的に保存 するのに適している。アプリケーションはデータを処理しますが、保存することができない。
最も利用されている種類はリレーショナルデータベース。リレーショナルデータベースを管理するシステムを、リレーショナルデータベース管理システム(RDBMS)
リレーショナルデータベースの特徴には下記の3つ。
・テーブルは、カラム(縦)とレコード(横)で構成される
・カラムに、保存されるデータの制約を設定できる
・データの保存や取得などの処理に、SQLという言語を使用する。ユーザーテーブル(users)から全員分の名前(name)を取得するには、下記のような命令文。
select name from users;