- 投稿日:2022-01-19T21:26:09+09:00
プログラミング言語を簡単にまとめる
Java JavaとはC言語ベースに開発された汎用性の高いプログラミング言語。求人需要が多い WEBサービスから業務システム、組み込み、など多岐に渡り開発現場で採用されている。 フレームワークはspring Framework Ruby Rubyとはオブジェクト指向のプログラミング言語。コードはシンプルに書きやすく読みやすい。 WEBサービスやWEBアプリケーションができる。 フレームワークのRuby on Rails。クックパッドや食べログに使用されている PHP PHPとは動的なWEBページを生成することができるサーバーサイドのスクリプト語。HTMLは静的WEBページ。 他のプログラミング言語と比べると文法が比較的容易なので取得しやすい。 フレームワークはLaravel C# マイクロソフト社が開発したオブジェクト指向のプログラミング言語。Javaと似ている。 GUIアプリケーション、WEBアプリケーション、ゲーム開発ができる フレームワークはASP.NET
- 投稿日:2022-01-19T16:53:36+09:00
MacでApache初心者としてのあれこれ
MacにはデフォルトでApacheが入っている sudo apachectl start It works!と表示されます。 sudo apachectl stop sudo apachectl restart ハマるポイント Brewのapacheが入っていることがある。 無論勝手に入ることはないでしょうが、brewは簡単にコマンド一つで入れられますので。 勿論設定ファイルも複数あることになる。 以前私がハマったポイントは、いくら設定ファイルでPHPのsocketを有効(コメントアウトを外す)にしてもPHPが有効にならなくて気絶したことがありました。 必ず自分がどちらのApacheを使うのか。設定ファイルはどちらのapacheなのかを明確にして作業を進める必要があるでしょう。 対策 which httpd でどのApacheが今ターミナルで有効かを確認しましょう。 /usr/sbin/httpd もし別のApacheを使いたいのなら、 コンソールの直リンクをTerminalにベタばりする。 BashProflieなどでの参照の順番を変更する。 というやり方があります。 先に読まれたコマンドが実行されるっぽいです。 ドキュメントルートの場所 Library/WebServer/Documents Terminalで open Library/WebServer/Documents と打つとFinderで開けて楽。 Apacheを固定IPでローカルのWi-Fiにいる端末からアクセスできるようにする。 <IfDefine SERVER_APP_HAS_DEFAULT_PORTS> Listen 8080 </IfDefine> <IfDefine !SERVER_APP_HAS_DEFAULT_PORTS> # Listen 80 Listen 192.168.11.1:80 </IfDefine> Listenが80バンとか担っていると思うのでここを Listen 192.168.11.1:80 のように127.0.0.1ではないPCがWifi接続しているIPをしていする。 固定IPにする方法、 固定IPの確認方法は各自調べてみて。 再起動すると他のスマホとかからでもアクセスできるはず。 設定ファイル /etc/apache2/httpd.conf 編集 sudo vim /etc/apache2/httpd.conf Apacheの設定ファイル /etc/apahce2/httpd.conf 通常のアクセスログファイル /private/var/log/apache2/access_log エラーのログファイル /private/var/log/apache2/error_log セキュリティー的なこともあってエラー内容は表示されないのでエラーファイルのログでエラーがわかると開発効率が違う。 バーチャルホスト まず設定をオンにする。 コメントアウトするだけ。 バーチャルホストは親元のファイル、もしくは各自のhtaccessどちらかに書く。 ServerName localhost DocumentRoot /Users/username/Sites
- 投稿日:2022-01-19T11:21:04+09:00
【エラー】新しいパソコンに違うバージョンのPHPを入れてしまった。
今回、新しいパソコンに変更するにあたり、一から新しいパソコンにXAMMP、composer、laravelをインストールしました。 そして、以前のパソコンでphp,laravelの作成していたポートフォリオの開こうと、 「php artisan serve」を入力したら、えらい勢いで怒られました((+_+)) それがこの写真(コマンドプロンプトの写真を撮り忘れたので、コピペを張り付けた写真です) wordに横設定した用紙に張り付けた書類です。写真には#11の項目で終わってますが、 実際には3ページ分続きました。しかも・・赤いラインも入って、、、 まじ、ビビりました((+_+)) で、なぜこのようなエラーで返されたかというと 結論から申し上げますと、 パソコンにインストールしたバージョンと、ポートフォリオのデータの内容のバージョンが異なっていたことによって生じたエラーだということでした。 と、いうことで、ここから解消するために私は次のことを行っていきました。 1、PHPのアンインストールして、再度PHPを再インストール 2、platform_check.phpの修正 3、composerのアップデート では、順番に見ていきます。 1,PHPのアンインストールして、再度PHPを再インストール 私の場合、以前使っていたパソコンのPHPバージョンは7.0であり、今回インストールしたPHPバージョンは8.0でした。 本来なら、何かしらのソースを入力したらバージョンをダウンする方法があるのだと思うのですが、 面倒くさがりの私は、一端PHPをアンインストールして、もう一度インストールするときにバージョンを最新のものではなく、7.4.27バージョンにしました。(XAMMPにてバージョン7.4.27をダウンロード) 2、platform_check.phpの修正 さぁこれで使えるのかなと思ったら、またこんな感じで怒られました。 結論から言えば、 platform_check.phpでバージョンを8.0.0になっているから、バージョン7.4.27が使えるように変更してください とのことです。 では、自分のファイルのplatform_check.phpを開きます。 7行目の数字が80000になってます。 これがバージョンになるのですね。 ここを70000にしました。こうすることでバージョン7以上のものという式に代わります。 3、composerのアップデート これでつかえるかなと、再度「php artisan serve」を実行。それでもまだエラーが返ってきます。 何々、今度はLoggerInterfaceTest.phpがおかしいとのことです。 けど、これに対しては、講師に質問して「composerをもう一度最新にアップデートすることで解消すると思うので、やってみて」とのことでしたので、 コンポーザーをアップデートしてみました。 composer update と入力し、完了した後、 再度php artisan serveを試したところ、無事につなぐようになりました。 よくわからないながら、出来ました。同じ過ちになった方に少しでも役に立てたらと思います。 以上です。
- 投稿日:2022-01-19T09:58:44+09:00
Laravel で主キー(プライマリキー)を ULID で登録する方法
環境 Laravel Framework 8.54.0 PHP 8.0.9 docker-compose version 1.29.2 rorecek/laravel-ulid:^2.0 手順 rorecek/laravel-ulid まずは、rorecek/laravel-ulidのインストールを行います。 ターミナルを開き、以下のコマンドを入力します。 ターミナル(sail) $ ./vendor/bin/sail composer require rorecek/laravel-ulid:^2.0 ターミナル(composer) $ composer require rorecek/laravel-ulid:^2.0 これで、インストールは完了しました。 マイグレーション 次に、マイグレーションから編集していきます。 今回はユーザに関しての変更を行おうと思うので、 デフォルトのdatabase/migrations/2014_10_12_000000_create_users_table.phpを編集します。 ULIDは、26 文字の文字列になります。 そのため、以下のように編集します。 database/migrations/2014_10_12_000000_create_users_table.php // ... class CreateUsersTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('users', function (Blueprint $table) { - $table->bigIncrements('id'); + $table->char('id', 26)->primary(); // ... }); } // ... } モデル 最後にモデルを編集します。 オートインクリメントを無効にして、 idを ULID で生成するように修正します。 traitを用意してくれているので、 以下のように、変更すれば大丈夫です。 app/User.php // ... use Rorecek\Ulid\HasUlid; class User extends Authenticatable { // ... use HasUlid; /** * IDが自動増分されるか * * @var bool */ public $incrementing = false; /** * 自動増分IDの「タイプ」 * * @var string */ protected $keyType = 'string'; // ... } これで、idが ULID で生成されます。 注意点 上記までの手順で大枠は解決なのですが、 主キー(プライマリキー)をid以外に設定しているときは上手く動作しません。 理由は、モデルの修正で使用したRorecek\Ulid\HasUlidが影響しています。 中身を見てみると原因がハッキリします。 vendor/rorecek/laravel-ulid/src/HasUlid.php <?php namespace Rorecek\Ulid; trait HasUlid { protected static function bootHasUlid() { static::creating(function ($model) { if (! $model->id) { $model->id = \Ulid::generate(); } }); static::saving(function ($model) { $originalUlid = $model->getOriginal('id'); if ($originalUlid !== $model->id) { $model->id = $originalUlid; } }); } public function getIncrementing() { return false; } public function getKeyType() { return 'string'; } } そうなんです。 idを直接指定してしまっているため、他のときは動かないようになってます。 解決方法 解決方法は、言葉にしてしまえば簡単ですが、 主キー(プライマリキー)が何のときでも動くようにしてあげればよいだけですね。 trait/HasUlid.php <?php use Rorecek\Ulid\Facades\Ulid; trait HasUlid { protected static function bootHasUlid() { static::creating(function (Model $model) { if (! $model->getKey()) { $model->setAttribute($model->getKeyName(), Ulid::generate()); } }); static::saving(function (Model $model) { $originalUlid = $model->getOriginal($model->getKeyName()); if ($originalUlid !== $model->getKey()) { $model->setAttribute($model->getKeyName(), $originalUlid); } }); } public function getIncrementing() { return false; } public function getKeyType() { return 'string'; } /** * IDが自動増分されるか * * @var bool */ public $incrementing = false; /** * 自動増分IDの「タイプ」 * * @var string */ protected $keyType = 'string'; } こんなtraitを作成してあげれば、汎用的に使えると思います。 さいごに ということで、rorecek/laravel-ulidは \Rorecek\Ulid\Facades\Ulid::generate()とするだけで簡単にULIDを生成できるだけでなく、 主キー(プライマリキー)をULIDに変更する最低限の下地を既に作成してくれている訳です。 主キー(プライマリキー)を特別なものへと変更するにあたって、 createdやsavingなどのhookに引っ掛けて特定の処理を行うことは常套手段でしたが、 毎回記述するのがとても煩わしかったのを覚えています。 なので、それも含めて準備してくれるのはとてもありがたい!! あなたの実装ライフが少しでも楽になりますように~
