Macのキャプチャーやプレビューで画像編集すると、pngファイルの容量が大きくなる傾向があります。画像解像度を小さするには、限界があり、メタデータなど削除が必要です。
GUIツールではなく、「pngquant」をインストールして画像圧縮します。
pngquantで、png画像を上書き圧縮します。 ※この作業はバックアップをとってください。
Google Drive では Icon ファイルが自動的に作成されるので、バックアップするときに不要です。 find で「Icon?」で絞り込み、xargs で再起的に削除します。
ローカルの Google Driveに移動して Icon を検索・削除します。
※この作業は、Google Drive の同期を停止してください。
今回はピュアなPHPで実装する必要があったので 「php-markdown」を使ったMarkDown 処理を試してみました。
Composer で michelf/php-markdown をインストールします。
単純にマークダウンを使うときは、Markdown で大丈夫ですが、コードブロックの pre, code タグに対応していません。
コードブロックに対応するには、MarkdownExtra を利用します。
MarkDown を HTML に変換するのはこれだけです。
ただ、 prism.js にも対応させたいので code_class_prefix に language- をつけておきます。関数とかにまとめるとこんな感じです。
これはマニュアルに載ってないので MarkdownExtra のソースコードを調べてみました。 $matches は文章に正規表現をかけた配列で、クラス名は index=2 にマッチします。あとは、 $code_class_prefix をくっつけてますね。
Laravel で動画エンコードするライブラリ、「protonemedia/laravel-ffmpeg」を利用します。
「laravel-ffmpeg」を利用する前に、 ffmpg のインストールが必要です。ここでは Macでのインストールを説明します。
Homebrew でffmpg をインストールします。また XCode Tools も事前インストールしておいてください。
ffmpeg のバージョンを確認します。
Composer で laravel-ffmpeg をインストールします。
artisan コマンドで laravel-ffmpeg をパブリッシュします。
ProtoneMedia\LaravelFFMpeg\Support\ServiceProvider の番号を入力します。
「Publishing complete」が表示されれば成功です。
パブリッシュが成功すると「config/laravel-ffmpeg.php」が作成されます。 「config/laravel-ffmpeg.php」の内容は以下の通りです。
ffmpeg、ffprobeのパスをターミナルで調べます。
ffmpeg、ffprobeのパスを環境設定ファイル .env に ffmpeg 設定します。
config/app.php に Providor と Facade の alias を設定をします。 namespace は「Pbmedia\LaravelFFMpeg\」です。
storage/app/public/mp4/ に .mp4 ファイルをアップしておきます。 今回は「sample.mp4」とします。
Laravel の Controller などで確認してみましょう。
Let's Encrypt の無料証明書を発行・管理する certbot-auto が Debian/Ubuntu OS で非対応になりました。certbot と python3-certbot-apache をインストールしてサーバ証明書の管理をします。
/etc/apache2/sites-available/000-default.conf ファイルで ServerName にドメインを設定します。
certbot で Apache の設定を読み込んで実行し、各設問に答えて設定します。
更新通知のメールアドレスを入力します。
A を入力して同意します。
Electronic Frontier Foundation からのお知らせを受けてとるか答えます。
対象のドメインを番号で選択します。
HTTP接続のときに HTTPSにリダイレクトするかを選択します。
Congratulations! のメッセージが表示されれば設定完了です。
今回の設定でサーバ証明書が自動更新されますが、certbot.timer でサーバ証明書の有効期限や次回更新日時を確認できます。
certbot でサーバ証明書の更新ができますが、 --dry-run でテストできます。
2020年末頃から GitHub のデフォルトブランチが「master」から「main」に変更になりました。GitHub をはじめた人がこの変更を知らない人が手順を間違えて「master」に push して放置していることがあります。
これは GitHub でリポジトリ作成すると「main」ブランチがデフォルトになったにもかからわず、手動コマンドで「master」に push してしまうことが多いようです。
「main」と「master」の食い違いは最終的に、ブランチを移動する作業が必要ですが、ここでは割愛します。
今回はデフォルトが「main」ブランチで、「master」ブランチで管理されたソースを pull/checkout してみます。
まずリポジトリをクローンして、プロジェクトフォルダに移動します。
リモートブランチは「master」になっているので、ローカルブランチも「master」にあわせて checkout します。 -b は新しくブランチを作成してくれるオプションです。
これでリモートブランチ「master」からソースもダウンロードされます。
ローカルブランチが「master」ブランチに変わったことを確認します。
また origin を確認するとメインが main でその他 master ブランチも追跡していることがわかります。
Laravel では Auth や Jetstream で認証機能を実装できますが、マルチログインは結構面倒です。
例えば未認証のリダイレクト処理はミドルウェアの Authenticate->redirectTo() で処理していますが、シングルログイン(user)の記述です。
app/Http/Middleware/Authenticate.php
ここで user、admin 2つのマルチドメイン認証で「/user/xxx」「/admin/xxx」にアクセスしたとき、上記のルーティングでは「/login」にリダイレクトされてしまいます。
また「/login」でなく「/user/login」「/admin/login」でルーティングすると当然ながら Routing エラーになります。
2つの認証「user」「admin」が未承認時、「/user/login」「/admin/login」 にリダイレクトするよう修正します。今回は直接「user」「admin」と直接設定しましたが、ループ処理は guard の設定と連携してもよいかと思います。
また、認証処理を user、admin の各コントローラーのコンストラクタやサービスなどで認証する場合は、 Authenticate->redirectTo() は無効にする必要があります。
brew コマンドで redis をインストールします。
brew で redis サーバを起動します。
redis サーバが起動しているか確認します。
Redis クライアントでログインし、Redis コマンドで操作してみます。
<
p>macOS の PHP で Redis を利用するには、PECL で Redis をインストールと設定する必要があります。
<
p>
php.ini ファイルをパスを確認します。 以下は /usr/local/etc/php/7.4/php.ini になっていますが、各環境で確認してください。
確認した php.ini を修正し redis.so を読み込むよう設定します。
PHP を再起動します。以下は php@7.4 をインストールして有効にしている場合です。 (インストールしているパッケージにあわせてください)
以前は、jQuery や JavaScript でスムーズスクロールをいろいろ実装していましたが、CSS3 で1行書くだけで対応可能です。
ただ 2021/02 時点で IE はもとより Safari に対応していないので、実際には JavaScript での記述も必要になります。
EC-CUBE4 で Gmail の smtp の設定方法は、.env の MAILER_URL に記述します。
前提として、Googleセキュリティでの2段階認証が必要になります。
EC-CUBE4 から Swift Mailer を利用しますが、smtpプロトコルの URLをパラメータ方式で設定します。