Pages

2023年10月5日木曜日

MySQL 8でAES暗号モードをaes-256-ofbに変更する方法


現在の設定を確認する方法

MySQLでAES暗号モードの設定を確認するには、以下のクエリを使用します。

        SHOW VARIABLES LIKE 'block%';
        SHOW GLOBAL VARIABLES LIKE 'block%';
上記はそれぞれ結果が異なる場合がありますので、両方を確認する事をおすすめします。
    

AES暗号モードを変更する方法

方法 1: セッション内でのみ変更する

次のコマンドを使用して、現在のセッション内でのみAES暗号モードを変更できます。変更はセッション終了時にリセットされます。

        SET block_encryption_mode = 'aes-256-ofb';
    

方法 2: グローバルな設定を変更する

次のコマンドを使用して、グローバルなMySQLサーバー設定を変更し、すべての接続に影響を与えます。ただし、この変更はMySQLサーバーを再起動するまで永続的に反映されません。

        SET @@GLOBAL.block_encryption_mode = 'aes-256-ofb';
    

方法 3: 永続的な設定を変更する

次のコマンドを使用して、MySQLサーバーの永続設定を変更し、再起動しても設定が保持されます。

        SET PERSIST block_encryption_mode = 'aes-256-ofb';
    

注意: グローバルな設定および永続的な設定を変更する場合は、セキュリティとパフォーマンスへの影響を検討し、必要な対策を講じることが重要です。また、変更を行う前にデータベースのバックアップを取得し、変更後にテストを行うことをお勧めします。

2023年9月6日水曜日

CakePHP4 DBの複数レコード情報を一気に取得するとメモリーが足りないのでに少しずつ取得する

今回はCSV出力する際にレコード数が多くてメモリー不足にならない方法を考えていました。

CakePHP 4では、`enableBufferedResults`を利用してメモリー不足を発生させないようにすることができます。この設定は、データベースから大量のデータを取得する場合など、メモリーを効率的に管理するために役立ちます。

まずは公式ドキュメントの紹介
https://book.cakephp.org/4/ja/orm/retrieving-data-and-resultsets.html#id16

`enableBufferedResults`を有効にすると、CakePHPはデータベースのクエリ結果をメモリーに全て読み込むのではなく、イテレータを使用してデータを一部ずつ取得できるようになります。これにより、大規模なデータセットを取り扱う場合でもメモリー不足の問題を回避できます。

以下は、CakePHP 4で`enableBufferedResults`を設定する方法です。

1. コントローラーまたはモデルのアクション内で、`enableBufferedResults`を有効にします。たとえば、以下のように設定できます。

// コントローラーのアクション内で
public function getData() {
    // データベースから大量のデータを取得するクエリ
    $query = $this->Table->find()->enableBufferedResults();

    // データを取得
    foreach ($query as $row) {
        // データの処理
    }
}

2. 上記の例では、`enableBufferedResults`をクエリオブジェクトに適用し、`foreach`ループを使用してデータを一つずつ処理しています。この方法を使用することで、メモリー不足を回避できます。

注意事項:

- `enableBufferedResults`を有効にしてループしてる時などは別のクエリーを投げる事はできません。(多分。。)DBコネクションを追加して対応する方法もありますが、接続数をその分消費してしまうため可能であれば避けたい方法ではあります。

- `enableBufferedResults`を有効にすると、イテレータが内部で使用され、データベースの接続がクローズされると自動的にクリーンアップされます。

- 大規模なデータセットを処理する場合、`enableBufferedResults`を有効にしても、パフォーマンスの問題が発生する可能性があるため、適切なインデックスやクエリの最適化も検討してください。

- メモリーの使用状況に注意し、必要な場合には適切なタイミングで不要なリソースを解放することをお勧めします。

2023年7月11日火曜日

PHP5.3 環境でcomposer self-update して動かなくなった時

RHEL6 ELS の環境で composer self-update をしてしまったようで、アップデートされたけど同時に comopser が壊れてしまった。。
$data が何やら invalid foreach だの。。

前にもあったが composer は環境の phpのバージョンを見てアップデートした良いかを判別しておらず、動かなくても更新しちゃうクールなやつ♪

って事で

$ composer self-update 1.7.2

を行うが 

[ErrorException]
Invalid argument supplied for foreach() 

チーン。。

って事で削除してインストールしなおす。

$ cd ~/
$ rm ./bin/comopser
$ cd ./bin
$ curl -sS https://getcomposer.org/installer | php -- --version=1.7.2
$ mv ./composer.phar composer

composer とは

Composerは、PHPプログラミング言語向けの依存関係管理ツールです。PHPのパッケージやライブラリのインストール、更新、バージョンの管理を容易に行うことができます。

Composerは、PHPアプリケーションの開発において、外部のライブラリやパッケージを利用する場合に特に便利です。通常、PHPのプロジェクトでは、複数のライブラリやパッケージが必要となることがあります。それらのライブラリやパッケージの依存関係を手動で管理するのは困難で時間がかかるため、Composerを使用することで効率的に管理することができます。

Composerは、プロジェクトのルートディレクトリに配置される`composer.json`と呼ばれる設定ファイルを使用して、必要なパッケージやライブラリを指定します。Composerは、指定された依存関係を解決し、自動的に必要なパッケージをダウンロードしてインストールします。

Composerは、PHPコミュニティで広く使用されており、多くのPHPフレームワークやプロジェクトで標準的な依存関係管理ツールとして採用されています。

composer をアップグレードする方法

Composer自体のアップデートは、コマンドラインで簡単に行うことができます。以下の手順に従って、Composerを最新バージョンにアップデートする方法を説明します。

1. ターミナルまたはコマンドプロンプトを開きます。
2. Composerがグローバルにインストールされている場合は、以下のコマンドを実行します:

 $ composer self-update

   Composerがローカルにプロジェクトごとにインストールされている場合は、プロジェクトのルートディレクトリで上記のコマンドを実行します。
   
   Composerがアップデートされ、最新バージョンに更新されます。

3. コマンドが正常に実行された場合、Composerは自動的に最新バージョンに更新されます。

なお、Composerをアップデートするにはインターネット接続が必要です。アップデート後は、最新の機能や修正が適用されたComposerを使用することができます。

comopser をダウングレードする方法

Composerを特定のバージョンにダウングレードするには、次の手順に従ってください。

1. ターミナルまたはコマンドプロンプトを開きます。

2. Composerの現在のバージョンを確認します。以下のコマンドを実行します:

$ composer --version

   現在のバージョンが表示されます。

3. ダウングレードしたいバージョンを指定してComposerをインストールします。以下のコマンドを実行します:

$ composer self-update <version>

   `<version>`の部分に、ダウングレードしたいバージョン番号を指定します。例えば、Composerを1.10.10にダウングレードする場合は次のようにします:

$ composer self-update 1.10.10

4. コマンドが正常に実行された場合、指定したバージョンのComposerがインストールされます。

ダウングレード後は、指定したバージョンのComposerを使用することができます。ただし、Composerをダウングレードする場合、そのバージョンに関連する制約や制限があるかもしれないことに注意してください。最新バージョンを使用することが推奨される場合もあります。

2023年6月5日月曜日

Windows 10,11 でファイル拡張子を再帰的に一括更新する方法

Windowsでファイルの拡張子を一括置換するには、次の手順を実行します。

1. ファイルをバックアップします。一括置換操作を行う前に、重要なファイルを保護するためにバックアップを作成することを強くおすすめします。

2. PowerShellを開きます。スタートメニューから「PowerShell」を検索して開くか、Shift + 右クリックでフォルダ内の空白スペースをクリックし、「PowerShellウィンドウをここで開く」を選択します。

3. 次のコマンドを使用して、指定されたディレクトリ内のファイルの拡張子を一括置換します。以下のコマンドをPowerShellウィンドウに貼り付けて実行します。


powershell

Get-ChildItem -Recurse -Filter "*.tpl" | Rename-Item -NewName { $_.Name -replace '\.tpl$', '.php' }

※ 上記は .tpl のファイルを再帰的に .php に置換する。


上記のコマンドは、指定されたディレクトリ(およびそのサブディレクトリ)内のすべての.tplファイルを検索し、それらの拡張子を.phpに置換します。

置換する拡張子を変更したい場合は、上記のコマンドの「.tpl」および「.php」を適切な拡張子に変更してください。

注意:この操作はファイルの拡張子を変更するため、慎重に行ってください。誤って重要なファイルの拡張子を変更すると、ファイルが正常に動作しなくなる可能性があります。

2023年5月26日金曜日

[Git] ログ、履歴から特定のファイルを削除する

 経緯

テストデータだが、メールアドレスなどを含むファイルを間違ってコミットしてしまったので、ログからも削除したい。

早速調べたが、どうやらGitには最初からこれに対応するコマンドは用意されておらず拡張機能を追加してやる必要があるようだ。

以下に今回の対応方法をメモする。

2023年4月27日木曜日

[CakePHP4] Controller から コマンドを実行する方法

$commandRunner = new CommandRunner(new Application(ROOT . DS . 'config'), 'cake');
$commandRunner->run([
    'bin' . DS . 'cake',
    'command_name',
    'param1',
    'param2,
]);

上記は

$ bin/cake command_name param1 param2

と同等。

2023年3月6日月曜日

[PHP Code Sniffer] The closing parenthesis and the opening brace of a multi-line function declaration must be on the same line

エラー内容

ERROR | [x] The closing parenthesis and the opening brace of a multi-line function declaration must be on the same line

) と { は同一行に書きなさい!!


修正前

public function sampleFunc(

    int $bookId,

    string $bookName

): ?BookEntity

{

  // ...

}


修正後

public function sampleFunc(

    int $bookId,

    string $bookName

): ?BookEntity {

  // ...

}

Followers