このブログについて

Posted by muchag | 未分類 | 2007-03-01 (木) 2:33:38

このブログは、爺による「備忘録」です。
言葉の使い方をはじめ、間違っていることも多々あるかもしれません。
あくまでも「備忘録」ですので、これのブログを見て「怒っちゃやーよ!」

自己責任にて閲覧してくださいね
未分類 | 2007-03-01 (木) 2:33:38 |

. [column] . _existsIn . This value does not exist

Posted by muchag | CakePHP 3.x | 2018-06-16 (土) 17:14:31


公式:データの検証 外部キールール

【環境】
CakePHP: 3.5.11
php: 7.1.5
エラー
. [column] . _existsIn . This value does not exist
原因

外部キーを設定したカラムに、null を代入しようとしたこと。

解決

してない。。。

CakePHP 3.x | 2018-06-16 (土) 17:14:31 |

モデルのないフォーム

Posted by muchag | CakePHP 3.x | 2018-06-10 (日) 12:21:01


公式:モデルのないフォーム

【環境】
CakePHP: 3.5.11
php: 7.1.5
概要

モデルとは関係なく、ユーザ入力を必要とする場合
Form オブジェクトを作成すると、モデルがある場合と同じように
フォームを利用できる。

配置
/src/Form
/plugins/MyVendor/MyPlugin/src/Form
フォームの作成

公式:モデルのないフォーム フォームの作成

  • _buildSchema は FormHelper が HTML フォームを作成する際に使用する スキーマデータを定義するために使います。フィールドの型、長さ、および精度を定義できます。
  • _buildValidator はバリデーターを加えることができる Cake\Validation\Validator のインスタンスを受け取ります。
  • _execute では execute() が呼ばれ、データが有効な時に望むふるまいを定義します。
_buildSchema

addField メソッドで、項目を定義。


protected function _buildSchema(Schema $schema)
{
    return $schema->addField('name', 'string')
        ->addField('email', ['type' => 'string'])
        ->addField('body', ['type' => 'text']);
}
_buildValidator

_buildValidator メソッドで、バリデーションを定義。


protected function _buildValidator(Validator $validator)
{
    return $validator->add('name', 'length', [
            'rule' => ['minLength', 10],
            'message' => '名前は必須です'
        ])->add('email', 'format', [
            'rule' => 'email',
            'message' => '有効なメールアドレスが要求されます',
        ]);
}
利用

下記のようにコントローラからバリデーションだけを利用することもできるみたい。


$contact = new ContactForm();
$isValid = $contact->validate($this->request->getData());
_execute

_execute メソッドに実行処理を定義する?

利用

コントローラから下記のように利用。


$contact = new ContactForm();
$result = $contact->execute($this->request->getData();
フォーム値の設定

公式:モデルのないフォーム フォーム値の設定


$contact = new ContactForm();
if ($this->request->is('post')) {
    if ($contact->execute($this->request->getData())) {
        $this->Flash->success('すぐにご連絡いたします。');
    } else {
        $this->Flash->error('フォーム送信に問題がありました。');
    }
}

if ($this->request->is('get')) {
    // たとえばユーザーモデルの値
    $this->request->data('name', 'John Doe');
    $this->request->data('email','john.doe@example.com');
}

$this->set('contact', $contact);

GET のとき、つまり最初にそのページを訪れたときは、手動で値を設定し
POST のとき、つまりユーザ入力値がある場合は、フォーム値を基に処理を行っている。

フォームエラーの取得

公式:モデルのないフォーム フォームエラーの取得

コントローラーから各フォームフィールドを無効化

公式:モデルのないフォーム コントローラーから各フォームフィールドを無効化
無効化は invalidate の訳で、ここでは「誤っていることを示す」の意味。

CakePHP 3.x | 2018-06-10 (日) 12:21:01 |

save できない

Posted by muchag | CakePHP 3.x | 2018-06-08 (金) 22:17:50


公式:データの保存

【環境】
CakePHP: 3.5.11
php: 7.1.5
事例1
事象

とあるエンティティを保存しようとしたら、保存できない。


object(MyPlugin\Model\Entity\MyEntity) {

	'hoge' => (int) 1,
	'[new]' => true,
	'[accessible]' => [
		'hoge' => true,
	],
	'[dirty]' => [
		'hoge' => true,
	],
	'[original]' => [],
	'[virtual]' => [],
	'[errors]' => [
		'hoge' => [
			'_required' => 'This field is required'
		]
	],
	'[invalid]' => [],
	'[repository]' => 'MyPlugin.MyEntity'

}

hoge に値が入っていて、dirty も true なのに
This field is required

調査

エンティティを吐き出してみたらエラー内容がわかった。


if (! $this->save($entity)) {
    dd($entity);
}
原因

hoge の値をコントローラ側で代入していた。


$entity->hoge = 1;
解決

上記を取りやめ、フォーム側に hidden で持たせたら
無事に保存できた。


echo $this->Form->hidden('hoge', ['value' => 1]);
save できないときのチェックリスト

hideichi.com:[cakephp] saveできない時のチェックリスト(2015-04-01)
→時期的に CakePHP2 の可能性がある。

CakePHP 3.x | 2018-06-08 (金) 22:17:50 |

トランザクション

Posted by muchag | CakePHP 3.x | 2018-06-08 (金) 19:22:03


公式:データベースの基本 トランザクションを使う

【環境】
CakePHP: 3.5.11
php: 7.1.5
覚書

CakePHP3 では、save 処理にトランザクション機能が含まれているので
トランザクションを利用する場合には、save メソッドのトランザクション機能を
明示的にオフにする必要があるとのこと。


//save()単位の原子性を無効に。
$result = $this->Tags->save($tagEntity,['atomic' => false]);

Qiita:CakePHP3でデータベースのトランザクションを使う トランザクションを実装する(2017-08-29)

コネクション
取得

下記、どちらでもよいらしい。

ConnectionManager から直接取得

use Cake\Datasource\ConnectionManager;
$connection = ConnectionManager::get('default');
/config/app.php

'Datasources' => [
    'default' => [

他の設定を取ってきたければ、default の部分を変更。

Table から取得

$connectiopn = $this->Hoge->getConnection();

設定を変更していなければ、どの Table から取得しても OK。

基本

use Cake\Core\Exception\Exception;
use Cake\Datasource\ConnectionManager;

$connection = ConnectionManager::get('default'); // コネクションを取得

$connection->begin(); // トランザクション開始

try {
    if ($this->Hoge->save($hoge)) {
        if ($this->Moge->save($moge)) {
            $connection->commit(); // コミット
        } else {
            throw new Exception();
        }
    } else {
        throw new Exception();
    }
} catch (Exception $exception) {
    $connection->rollback(); //ロールバック
}
ショートカット

Connection オブジェクト には、transactional メソッド が存在する。

  1. begin を呼び出します。
  2. 引数で渡されたクロージャーを実行します。
  3. もしクロージャー内で例外が発生したら、ロールバックを発行して例外を再度 throw します。
  4. クロージャーが false を返したら、ロールバックを発行して false を返します。
  5. クロージャーが正常終了したら、トランザクションをコミットします。

公式:データベースの基本 トランザクションを使う

これは、データ保存の一連の処理を渡すことで、

  1. 例外が発生したら、例外
  2. 戻り値が false ならロールバックをする
  3. それ以外ならコミット

というトランザクション処理のショートカット(?)メソッド。
未試行。


public function insert($hoge, $moge){
    // データ保存の一連の処理をクロージャへ定義
    $saveProcess = function() use($hoge, $moge) {
        if (! $this->Hoge->save($hoge)) {
            return false;
        }

        if (! $this->Moge->save($moge)) {
            return false;
        }

        return true;
    };

    $connectiopn = $this->Hoge->getConnection(); // コネクションを取得
    return $connectiopn->transactional($saveProcess);
}

上記例では、成功時に true を返しているけど
任意の値を返しても OK?

多様性

上記だと、それだけ完結するので
外から呼び出して、他のトランザクションに組み込む方法。
Qiita:CakePHP3でデータベースのトランザクションを使う 別のトランザクションに含められるように改良(2017-08-29)
未試行。


public function insert($hoge, $moge, $atomic = true){
    // データ保存の一連の処理をクロージャへ定義
    $saveProcess = function() use($hoge, $moge) {
        // 同上
    };

    $connectiopn = $this->Hoge->getConnection(); // コネクションを取得

    $result;
    //$atomic = true。つまり単独処理なら処理を行い
    if($atomic){
        $result = $connectiopn->transactional($saveProcess);
    //$atomic = false。つまり他の処理から呼ばれたら保存処理のみを返却
    } else {
        $result = $saveProcess();
    }

    return $result;
}

これはいいね! 8-P
わかりやすく、使いやすそう。

CakePHP 3.x | 2018-06-08 (金) 19:22:03 |

SQL

Posted by muchag | CakePHP 3.x | 2018-06-04 (月) 19:01:42


公式:データベースの基本

【環境】
CakePHP: 3.5.11
php: 7.1.5
発行

下記2種ある。

  • 生の SQL を書く
  • クエリービルダーを利用する
生の SQL
基本

コネクションを取得して、生の SQL をセットして、実行。


use Cake\Datasource\ConnectionManager;

$connection = ConnectionManager::get('default');
$results = $connection->execute('SELECT * FROM articles')->fetchAll('assoc');
プリペアドステートメント
一括指定

プリペアドステートメントを利用する場合には
値を連想配列にして execute メソッドの第2引数として渡す。


$results = $connection
    ->execute('SELECT * FROM articles WHERE id = :id', ['id' => 1])
    ->fetchAll('assoc');
順次指定

(?)疑問符プレースホルダ


$stmt = $conn->prepare(
    'SELECT * FROM articles WHERE published = ? AND created > ?'
);

// 複数項目のバインド
$stmt->bind(
    [true, new DateTime('2013-01-01')],
    ['boolean', 'date']
);

// 1項目ずつのバインド
$stmt->bindValue(1, true, 'boolean');
$stmt->bindValue(2, new DateTime('2013-01-01'), 'date');

名前付きプレースホルダ


$stmt = $conn->prepare(
    'SELECT * FROM articles WHERE published = :published AND created > :created'
);

// 複数項目のバインド
$stmt->bind(
    ['published' => true, 'created' => new DateTime('2013-01-01')],
    ['published' => 'boolean', 'created' => 'date']
);

// 1項目ずつのバインド
$stmt->bindValue('published', true, 'boolean');
$stmt->bindValue('created', new DateTime('2013-01-01'), 'date');
複合データ型

複合データ型(オブジェクト型)の場合は、
必ずデータ型も渡す必要があるのかしらね。。。
未試行。


$results = $connection
    ->execute(
        'SELECT * FROM articles WHERE created >= :created',
        ['created' => new DateTime('1 day ago')],
        ['created' => 'datetime']
    )
    ->fetchAll('assoc');
クエリービルダー

クエリービルダーを利用するとチェーンで記述可能。


$results = $connection
    ->newQuery()
    ->select('*')
    ->from('articles')
    ->where(['created >' => new DateTime('1 day ago'), ['created' => 'datetime']])
    ->order(['title' => 'DESC'])
    ->execute()
    ->fetchAll('assoc');

クエリービルダーを使用する場合は、 execute() メソッドを呼ぶまではサーバーに SQL は 送信されず、メソッド呼び出し後に順次処理されます。
最初に送信してから、順次結果セットを作成します。

公式:データベースの基本 クエリーの実行

後述の項目で検証。

Query, CallbackStatement, ResultSet
  • Query:SQL を生成しただけで、未発行
  • CallbackStatement:SQL を発行済み
  • ResultSet:SQL 発行により得た結果セット(レコードセット)

という理解で合っているのかしら。。。

生の SQL

use Cake\Datasource\ConnectionManager;

$connection = ConnectionManager::get('default');
$results = $connection->execute('SELECT * FROM articles')->fetchAll('assoc');
CallbackStatement

execute までで CallbackStatement を取得。

結果セット

fetchAll(‘assoc’) で、結果セットを配列にて取得。

クエリービルダー

$results = $connection
    ->newQuery()
    ->select('*')
    ->from('articles')
    ->where(['created >' => new DateTime('1 day ago'), ['created' => 'datetime']])
    ->order(['title' => 'DESC'])
    ->execute()
    ->fetchAll('assoc');
Query

->newQuery() で Query を取得。
->order([‘title’ => ‘DESC’]) まで全て Query の設定。

CallbackStatement

->execute() で CallbackStatement を取得。

結果セット

fetchAll(‘assoc’) で、結果セットを配列にて取得。

マジックメソッド

findget というマジックメソッドの場合は、
(用語の使い方が合っているか不明)
そこらに転がっている例を見る限り、少し異なる。


$results = $table // Table オブジェクト内では $this
    ->find()
    ->select('*')
    ->from('articles')
    ->where(['created >' => new DateTime('1 day ago'), ['created' => 'datetime']])
    ->order(['title' => 'DESC'])
    ->all();
Query

->find() で、Query を取得できる。

find メソッドを追っかけていくと
Table オブジェクトの query メソッドにて、
Query オブジェクトを new している。

->order([‘title’ => ‘DESC’]) まで全て Query の設定。

ResultSet

->all() で、ResultSet オブジェクトを取得できる。

あれ?
CallbackStatement はどこへいったのかしらね?

all メソッドの中を覗くと

/vendor/cakephp/cakephp/src/Datasource/QueryTrait.php

$results = $this->_decorateResults($this->_execute());

こういう1行があるので、中で処理を終えてしまっているみたい。

まとめ

execute(find, get 可)しないと、SQL は発行されない。

ただ、Query オブジェクトを取得して、設定を終えておくと
Query オブジェクトを利用する際に、自動的に execute してくれる
と理解してよいのかしらね。

ん~。。。

不確かな情報ばかりで中身は薄いけど、
追っかけた内容を残しておくためのメモ。

CakePHP 3.x | 2018-06-04 (月) 19:01:42 |

フラッシュ

Posted by muchag | CakePHP 3.x | 2018-05-24 (木) 18:34:12


公式:Flash
公式:フラッシュ

【環境】
CakePHP: 3.5.11
php: 7.1.5
概要

FlashComponent にてメッセージをセッションへ格納し
FlashHelper にて、セッションから取り出したメッセージをテンプレートへ出力する。

書式
設定

コントローラ内で、下記のように指定。


$this->Flash->set('This is a message');
出力

テンプレート内で、下記のように指定。


echo $this->Flash->render();

と、公式に書いてあるけど、こんなことを書かなくても出力される。。。
なぜ~。

別名

ちなみに、FlashComponent にてセッションキーを変更した場合は
下記のように独自キーを指定する。


echo $this->Flash->render('other');
エレメント

テンプレートへ出力する際にはエレメントを利用する。

デフォルトのファイルは、下記3種。

/src/Template/Element/Flash/default.ctp
/src/Template/Element/Flash/error.ctp
/src/Template/Element/Flash/success.ctp

※/vendor/cakephp/cakephp/src の方ではなく /app/src の方

FlashComponent

$this->Flash->set('This is a message');
$this->Flash->success('This is a message');
$this->Flash->greatSuccess('This is a message');

上から順番に、下記エレメントを利用して出力される。

/src/Template/Element/Flash/default.ctp
/src/Template/Element/Flash/success.ctp
/src/Template/Element/Flash/great_success.ctp

つまり、メソッド名とエレメント名が連動しており
その名称は独自につけることが可能。

プレフィクス

公式:Flash ルーティングのプレフィックスとフラッシュメッセージ
プレフィクスを利用している場合は、
下記を用意することで、プレフィクス別に設定可能。

/plugins/MyVendor/MyPlugin/src/Template/Prefix/Element/Flash/success.ctp
カスタマイズ
/plugins/MyVendor/MyPlugin/src/Template/Element/Flash/success.ctp

こちらを配置して、中身を書き換えることでカスタマイズできそう。

テーマ

公式:Flash フラッシュメッセージとテーマ
FlashHelper では、テーマを設定できるみたい?

読んでもピンとはこないけど、
時間がある時に試そう。

FlashComponent
オプション
/vendor/cakephp/cakephp/src/Controller/Component/FlashComponent.php

protected $_defaultConfig = [
    'key' => 'flash',
    'element' => 'default',
    'params' => [],
    'clear' => false,
    'duplicate' => true
];

公式で「下記の通りです」と3種並べられている割には、
あちこち見ると増えていく。。。

key デフォルトは ‘flash’。セッション内の ‘Flash’ キー配下の配列キー。
duplicate
clear このキーは bool 値を期待しており、 現在のスタックの全てのメッセージを消去し、新しいものを始めることができます。
element デフォルトは null ですが、 __call() マジックメソッドの使用時には、 自動的に設定されます。表示に使用されるエレメント名。
escape false に設定すると、フラッシュメッセージ中に HTML を出力することができます。
plugin プラグインから指定したエレメントを取得する。
params キーバリューの任意の配列です。エレメントの中で変数として利用する配列。

// コントローラーの中で
$this->Flash->success('The user has been saved', [
    'key' => 'positive',
    'params' => [
        'name' => $user->name,
        'email' => $user->email
    ]
]);
CakePHP 3.x | 2018-05-24 (木) 18:34:12 |

クッキー

Posted by muchag | CakePHP 3.x | 2018-05-23 (水) 0:46:41


公式:クッキー

【環境】
CakePHP: 3.5.11
php: 7.1.5
はじめに

バージョン 3.5.0 で撤廃: クッキーは、 ServerRequest で利用できます。
クッキー をご覧ください。
クッキーの暗号化は クッキー暗号化ミドルウェア をご覧ください。

公式:クッキー

とのことなので、CookieComponent はサヨナラ~。

ただし、
Qiita:CakePHP3.5でCookieComponentが非推奨になり、Cookieの読み書きに苦労した話(2018-03-28)
にも書いてある通り、
クッキーを利用する=クッキー暗号化ミドルウェアを利用しなければならない
ではない。

概要

3.4.x までの CookieComponent に代わって
3.5.x では、クッキーコレクション というのを利用する?

ん~よくわからないけど、あれこれ試した結果
今のところはクッキーコレクションを利用しなくてもクッキーを利用できた。

利用
Cookie オブジェクト
/vendor/cakephp/cakephp/src/Http/Cookie/Cookie.php

public function __construct(
    $name,
    $value = '',
    $expiresAt = null,
    $path = '',
    $domain = '',
    $secure = false,
    $httpOnly = false
)
取得

$cookieValue = $this->request->getCookie('HOGE');
設定

$cookie = new Cookie(
    'HOGE',                     // name(名前)
    'hogehoge',                 // value(値)
    new DateTime('+30 day'),	// expiresAt(期限)
    '/',                        // path(パス)
    'example.com',              // domain(ドメイン名)
    false,                      // secure
    true                        // httpOnly
);

$this->response = $this->response->withCookie($cookie);
削除

$this->response = $this->response->withExpiredCookie('HOGE');
CakePHP 3.x | 2018-05-23 (水) 0:46:41 |

nvm

Posted by muchag | node.js | 2018-05-20 (日) 13:09:41

【環境】
nvm: 0.33.11
VirtualBox グラフィカルユーザーインターフェース: 5.1.24 r117012 (Qt5.6.2)
CentOS: 7.3.1611
インストール

GitHub:creationix/nvm:README.md Installation


curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 12819  100 12819    0     0  14898      0 --:--:-- --:--:-- --:--:-- 14905
=> Downloading nvm from git to '/root/.nvm'
=> Cloning into '/root/.nvm'...
remote: Counting objects: 267, done.
remote: Compressing objects: 100% (242/242), done.
remote: Total 267 (delta 31), reused 86 (delta 15), pack-reused 0
Receiving objects: 100% (267/267), 119.46 KiB | 153.00 KiB/s, done.
Resolving deltas: 100% (31/31), done.
=> Compressing and cleaning up git repository

=> Appending nvm source string to /root/.bashrc
=> Appending bash_completion source string to /root/.bashrc
=> Close and reopen your terminal to start using nvm or run the following to use it now:

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

バージョンアップがあるので、毎回ここを見ること。

環境変数に登録

source ~/.bash_profile
手動登録

HORNET:CentOS6にnode.jsの最新バージョン(v8.4.0)をインストール nvmでインストール(2017-08-22)

情報確認

nvm -v

Node Version Manager

Note:  refers to any version-like string nvm understands. This includes:
  - full or partial version numbers, starting with an optional "v" (0.10, v0.1.2, v1)
  - default (built-in) aliases: node, stable, unstable, iojs, system
  - custom aliases you define with `nvm alias foo`

 Any options that produce colorized output should respect the `--no-colors` option.

Usage:
  nvm --help                                Show this message
  nvm --version                             Print out the installed version of nvm
  nvm install [-s]                 Download and install a , [-s] from source. Uses .nvmrc if available
    --reinstall-packages-from=     When installing, reinstall packages installed in 
    --lts                                   When installing, only select from LTS (long-term support) versions
    --lts=                        When installing, only select from versions for a specific LTS line
    --skip-default-packages                 When installing, skip the default-packages file if it exists
    --latest-npm                            After installing, attempt to upgrade to the latest working npm on the given node version
  nvm uninstall                    Uninstall a version
  nvm uninstall --lts                       Uninstall using automatic LTS (long-term support) alias `lts/*`, if available.
  nvm uninstall --lts=            Uninstall using automatic alias for provided LTS line, if available.
  nvm use [--silent]               Modify PATH to use . Uses .nvmrc if available
    --lts                                   Uses automatic LTS (long-term support) alias `lts/*`, if available.
    --lts=                        Uses automatic alias for provided LTS line, if available.
  nvm exec [--silent]  [] Run  on . Uses .nvmrc if available
    --lts                                   Uses automatic LTS (long-term support) alias `lts/*`, if available.
    --lts=                        Uses automatic alias for provided LTS line, if available.
  nvm run [--silent]  []     Run `node` on  with  as arguments. Uses .nvmrc if available
    --lts                                   Uses automatic LTS (long-term support) alias `lts/*`, if available.
    --lts=                        Uses automatic alias for provided LTS line, if available.
  nvm current                               Display currently activated version
  nvm ls                                    List installed versions
  nvm ls                           List versions matching a given 
  nvm ls-remote                             List remote versions available for install
    --lts                                   When listing, only show LTS (long-term support) versions
  nvm ls-remote                    List remote versions available for install, matching a given 
    --lts                                   When listing, only show LTS (long-term support) versions
    --lts=                        When listing, only show versions for a specific LTS line
  nvm version                      Resolve the given description to a single local version
  nvm version-remote               Resolve the given description to a single remote version
    --lts                                   When listing, only select from LTS (long-term support) versions
    --lts=                        When listing, only select from versions for a specific LTS line
  nvm deactivate                            Undo effects of `nvm` on current shell
  nvm alias []                     Show all aliases beginning with 
  nvm alias                  Set an alias named  pointing to 
  nvm unalias                         Deletes the alias named 
  nvm install-latest-npm                    Attempt to upgrade to the latest working `npm` on the current node version
  nvm reinstall-packages           Reinstall global `npm` packages contained in  to current version
  nvm unload                                Unload `nvm` from shell
  nvm which [current | ]           Display path to installed node version. Uses .nvmrc if available
  nvm cache dir                             Display path to the cache directory for nvm
  nvm cache clear                           Empty cache directory for nvm

Example:
  nvm install 8.0.0                     Install a specific version number
  nvm use 8.0                           Use the latest available 8.0.x release
  nvm run 6.10.3 app.js                 Run app.js using node 6.10.3
  nvm exec 4.8.3 node app.js            Run `node app.js` with the PATH pointing to node 4.8.3
  nvm alias default 8.1.0               Set default node version on a shell
  nvm alias default node                Always default to the latest available node version on a shell

Note:
  to remove, delete, or uninstall nvm - just remove the `$NVM_DIR` folder (usually `~/.nvm`)
利用
バージョン確認

nvm --version
インストール可能な node.js のバージョン取得

nvm ls-remote
node.js インストール

// 安定版
nvm install stable
Downloading and installing node v10.1.0...
Downloading https://nodejs.org/dist/v10.1.0/node-v10.1.0-linux-x64.tar.xz...
######################################################################## 100.0%
Computing checksum with sha256sum
Checksums matched!
Now using node v10.1.0 (npm v5.6.0)
Creating default alias: default -> stable (-> v10.1.0)

// バージョン指定
nvm install 8.0.0
npm
アップデート

npm update -g
/root/.nvm/versions/node/v10.1.0/bin/npm -> /root/.nvm/versions/node/v10.1.0/lib/node_modules/npm/bin/npm-cli.js
/root/.nvm/versions/node/v10.1.0/bin/npx -> /root/.nvm/versions/node/v10.1.0/lib/node_modules/npm/bin/npx-cli.js
+ npm@5.10.0
added 129 packages, removed 42 packages and updated 112 packages in 6.968s
[root@localhost hoge]# npm -v
5.10.0
参考サイト

Qiita:【俺用メモ】 CentOS6にNode.jsをインストールする nvmでインストールする場合(2018-02-10)
→インストール以外の使い方も載っている

ProgramMemo:CentOSにNode.jsをインストールする(2017-10-12)
→環境変数に登録する方法を参考にさせていただいた

node.js | 2018-05-20 (日) 13:09:41 |

インストール

Posted by muchag | VirtualBox | 2018-05-20 (日) 10:51:05


公式:nodejs.org

【環境】
node.js: 10.1.0
VirtualBox グラフィカルユーザーインターフェース: 5.1.24 r117012 (Qt5.6.2)
CentOS: 7.3.1611
インストール

方法は色々あるみたい。

標準コマンド

公式:Installing Node.js via package manager Enterprise Linux and Fedora


curl -sL https://rpm.nodesource.com/setup_8.x | bash -

curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -

yum -y install nodejs

// ビルドツールのインストール(オプション)
yum install gcc-c++ make

CentOS は、こちらのタイプになるみたい。
Supported CentOS versions:

  • CentOS 5 (32-bit and 64-bit)
  • CentOS 6 (32-bit and 64-bit)
  • CentOS 7 (64-bit)
失敗する?

Qiita:CentOS 7.3でyum install nodejsが失敗するので回避する(2017-08-29)
こんな記事も見かけた。

バージョン管理ツール
nvm

Node Version Manager。
ということで、こちらにしてみる。
nvm

nodebrew

Qiita:node.jsのインストール方法(2017-09-25)

その他

nodeenv, nodist というのもあるらしい。
みかづきブログ その3:フロントエンドエンジニアがさくらVPS で Ubuntu + Nginx + Node.jsの環境を整えるまでの道のり – その2 – nodebrew、Node.js、npmの導入 😎(2017-04-12)

VirtualBox | 2018-05-20 (日) 10:51:05 |

データの削除

Posted by muchag | CakePHP 3.x | 2018-05-19 (土) 19:17:57


公式:データの削除

【環境】
CakePHP: 3.5.11
php: 7.1.5
一括削除

deleteAll メソッドに条件を渡す。


$this->deleteAll(['id' => 1]);
CakePHP 3.x | 2018-05-19 (土) 19:17:57 |
次ページへ »