いろいろ備忘録

雑記です。

2017-05-01から1ヶ月間の記事一覧

CakePHPのconnect()のアスタリスクの個数

貧欲なスター (greedy star) /* に加えて、 /** 流れ星 (trailing star) 構文が あります。2つのアスタリスクをつなげると、URL の残りを1つの引数として取り込みます。 これは、 / を含む引数を使用したい時に便利です。 $routes->connect( '/pages/**', …

JenkinsにてERROR: file not found:

Windowsです。 Jenkinsにてテキストファイルに出力するブツを実行するとビルドが失敗する。 まずそもそもshコマンドが通っていなかった。 Gitによって既にインストールされているのでwhere git してGit\binにPathを通した。 次にERROR: file not found: {区…

漢字のcharを理解する

int main(int argc, char **argv) { char c[] = "大"; char *word = "大同小異"; //sizeofで変数のバイト数を求める //終端文字が入るので1引く int byteLen = sizeof( c ) - 1; //char型には1バイト入る。つまり //UTF-8の場合、漢字は3バイトなので3 /…

C言語のアドレス関連

・CLionのデバッグ実行でGDBというデバッガが使える。 p &{変数もしくはメソッド名} でアドレスを表示などが可能。 gdb の使い方・デバッグ方法まとめ ・printf("%p",&{変数名});で変数のアドレスが出力出来る。 ・環境でポインタのサイズは異なる。 32bitで…

CLionのインストールでエラー

MinGWをインストールしてCLionで選択すると cmake error at CMakeTestCCompiler.cmake 51 などとエラーが出た。 やったこと一覧 まず、MinGWを再インストールした。 必要なコンポーネントがインストールされていることを確認した。 うまくいかなかったので下…

CLionにてMinGW C:/MinGW/msys/1.0/bin/sh.exe must NOT be in your path

環境変数Pathから C:/MinGW/msys/1.0/bin/を消すことで解決した。 自分の場合はユーザーにもグローバルにも両方入っていた。

データ検索をマスターする! (4/6) 補足

データ検索をマスターする!(4/6):初心者のためのCakePHP3 プログラミング入門 //find()にQueryExpressionを使うサンプルpublic function find() { //絞り込んだ結果のエンティティ配列 $persons = []; //リクエストの種別がPOSTであるなら if ($this->reque…

複数のテーブルのJOINした結果を表示

クエリビルダにおいて、innerJoinWith()やleftJoiinWith()でJOINしたものをテンプレートで表示するためには $tenancy->_matchingData['Tenants']->stage stackoverflow.com のように書きます。 もし不安な場合はdebugメソッドもしくは$tenancyのみで出力し確…

グローバルにインストールしたcomposer.pharの場所

C:\ProgramData\ComposerSetup\bin内にある。 もしここにもない場合はEverything等のファイル検索ソフトを使う。

#1071 - 索引のキーが長すぎます。最大 767 バイトまでです。と出たとき

CREATE TABLE tags ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255), created DATETIME, modified DATETIME, UNIQUE KEY (title) ); このtitle属性は255文字までを格納する。同じ文のタグを重複して登録することは許されないため、ユニークキーと…

Unknown finder method とは

$bookmarks = $this->Bookmarks->find('tagged', [ テーブルのfindメソッドの第一引数が重要。 たとえば上記のようにBookmarks->find('tagged',のようになっているときは、BookmarksTableクラスのfindTaggedメソッドを探しに行く。 ここで見つからないときUn…

protected function _setPassword($value)とは

結論はこれ。 [CakePHP3] Setter(セッター)とGetter(ゲッター)をざっくりと知る。 – gomokulog 以下補足。 C#にはプロパティという機能がある。プロパティを実装すると、メンバ変数 x を持つクラスAがあるとき、a.x としても自動的にgetX()が呼び出されると…

bin/cake bakeがWindowsでうまくいかないわけ

bin/cake bake all users bin/cake bake all bookmarks bin/cake bake all tags CakePHP3のbookmarkerチュートリアルにて遭遇。 Linuxとは違ってWindowsでは区切り文字を\にする必要がある。 つまり、Windowsでの正解は bin\cake bake all usersbin\cake bak…

CakePHP3のテーブルとエンティティの違い

CakePHPはMVCであり、その内のモデルを2種類に分けたものがテーブルとエンティティです。ざっくり言うとテーブルとはそのままDBのテーブル(集合)を表し、エンティティとは各行を表します。 テーブルクラスにはDBとの通信に必要な情報が保持されているため、D…

CakePHP3のORM\table::find()のイーガーロードとは

contain 関連をイーガーロード (eager load) するように定義します。 データの取り出しと結果セット イーガーロードとは、N+1問題を回避する手段らしい。 まず、N+1問題とは? ユーザーマスタと、著者のユーザIDを属性としてもつ記事テーブルがあるとします…

Unable to find ~ panel. と出た

Templateディレクトリに間違った名前のディレクトリを作成してしまった。 具体的には単数形にしてしまっていた。 その後、PHPStormのリネーム機能でディレクトリ名を複数形にした。 すると、どのページにアクセスしてもUnable to find ~ panel.とエラーメッ…

CakePHP3のリバースルーティングとは

New router goodies » Debuggable - Node.js Consulting によると、 そもそもリンクの書き方は、文字列での指定と、連想配列での指定の2つがある。 ①文字列の場合$html->link('My post title', '/posts/view/5' ); ②連想配列の場合$html->link('My post titl…

echo $this->Form->create($article);の$articleが必要な理由

ブログチュートリアル - パート2 echo $this->Form->create($article); は、 echo $this->Form->create();としても動いているようにみえるけれど、 ArticlesControllerのsaveで例外(DB接続失敗、バリデーションエラー等)が起きた際、 $article = $this->Arti…

ブログチュートリアル1での文字化け

ブログチュートリアル 下記の方法で文字コードを指定してやる必要があります。 CREATE TABLE articles ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, title VARCHAR(50), body TEXT, created DATETIME DEFAULT NULL, modified DATETIME DEFAULT NULL) char…

PHPStormのfield accessed via magic methodについて

CakePHPでマジックメソッドを使う時に出る。フィールド変数が無いから気をつけろということだそうだ。 PHPStormの設定で警告を抑制する方法と、アノテーションを書く方法がある。 www.thinkingmedia.ca アノテーションだとこんな感じ。 use App\Model\Table\…

TableとEntityが別れている理由

ブログチュートリアル - パート2 CakePHP のモデルクラスのファイルは、 Table オブジェクトと Entity オブジェクトに分離して 存在します。 なぜわざわざ分けたのかとググると Why did cakephp v3 split the Model into Table and Entity? What are the adv…