このブログについて

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

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

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

プレフィックスルーティング

Posted by muchag | CakePHP 3.x | 2018-02-23 (金) 15:10:12


公式:ルーティング プレフィックスルーティング

【環境】
CakePHP: 3.5.8
php: 7.1.5
ルートクラス
CakePHP 3.x | 2018-02-23 (金) 15:10:12 |

ルートクラス

Posted by muchag | CakePHP 3.x | 2018-02-23 (金) 15:04:46

ルーティングルールを設定するクラス。
公式:ルーティング

【環境】
CakePHP: 3.5.8
php: 7.1.5
既存
/vendor/cakephp/cakephp/src/Routing/Route

この中にしまわれており、デフォルトで下記4クラスが存在する模様。

  1. DashedRoute
    1. 単語を -(ハイフン、ダッシュ)で連結
    2. URL:/my-controller/my-action
    3. 対応アクション:MyController::myAction
  2. InflectedRoute
    1. 単語を _(アンダースコア)で連結
    2. URL:/my_controller/my_action
    3. 対応アクション:MyController::myAction
  3. PluginShortRoute
  4. RedirectRoute
    1. 個別の URL に対してリダイレクトを設定
    2. パラメータを渡すことも可能
    3. 公式:ルーティング リダイレクトルーティング
カスタム

公式:ルーティング カスタムルートクラス
ここを見ると、自前のルートクラスを作成、設定可能みたい。

デフォルト

公式:ルーティング デフォルトルートクラス

デフォルトのルートクラスは、下記のように設定するみたい。

/config/routes.php

Router::defaultRouteClass(InflectedRoute::class);

実際に当該ファイルを覗いてみると、最初に記述されている。

フォールバックメソッド

公式:ルーティング フォールバックメソッド


$routes->fallbacks(DashedRoute::class);

このような記述を見かけるけど、上記公式の記事にも書いてあり
route.php にも記述されているように、
設定されていないルーティングに対する
デフォルトのルーティング設定を記述するショートカットメソッドとのこと。

実際には、下記のように記述しているのと同じだそうな。


$routes->connect('/:controller', ['action' => 'index'], ['routeClass' => DashedRoute::class]);
$routes->connect('/:controller/:action/*', [], ['routeClass' => DashedRoute::class]);
参考サイト

sakutarou’s blog:CakePHP3のRouteクラス3種(2016-12-05)

CakePHP 3.x | 2018-02-23 (金) 15:04:46 |

Localkit が起動しない!

Posted by muchag | Monaca | 2018-02-18 (日) 21:59:11

【環境】
Monaca LocalKit: 2.5.0? → 2.5.1
経緯

ある日突然 Localkit が起動しなくなった。

アプリアイコンをクリックして、処理中のグルグルが断続的に2,3回出たものの
サッパリ起動しない。

Localkit をアンインストールして、再インストールしてもダメ。

原因

不明。

解決

teratail:Monaca LocalKitが起動されません(2017-12-11)
こちらの記事のおかげで解決。

記事にある通り、下記手順にて無事に起動するようになった。

  1. Localkit(おそらく 2.5.0)をアンインストール
  2. 下記2ディレクトリを削除
    1. ローカルディスク(c)/Users/(ユーザ名)/.cordova
    2. ローカルディスク(c)/Users/(ユーザ名)/AppData/Roaming/Monaca Localkit
  3. Localkit 2.5.1 を再インストール

私が戸惑っている数ヶ月の間に、解決記事がアップされていて助かりました。
ありがとうございました。

プロジェクト追加

プロジェクトが綺麗サッパリなくなっていたので

  1. 左ペイン「プロジェクト一覧」右にある+ボタンから
  2. [インポート]-[Cordova プロジェクトをインポート]
  3. 「既存の Cordova プロジェクトをインポート」
    1. 作業ディレクトリ:[参照] からローカルリポジトリ(ディレクトリ)を選択
    2. プロジェクト名:任意
    3. [インポート]
Monaca | 2018-02-18 (日) 21:59:11 |

構成設定

Posted by muchag | CakePHP 3.x | 2018-02-14 (水) 13:12:41


公式:構成設定

【環境】
CakePHP: 3.5.8
php: 7.1.5
参考サイト

新人Webエンジニアの記録。:CakePHP3のConfigureクラスに関して調べました(2015-01-18)

CakePHP 3.x | 2018-02-14 (水) 13:12:41 |

Entity

Posted by muchag | CakePHP 3.x | 2018-02-11 (日) 13:38:04


公式:エンティティー

【環境】
CakePHP: 3.5.8
php: 7.1.5
アクセサーとミューテーター

公式:エンティティー アクセサーとミューテーター
getter, setter のカスタマイズ。

アクセサー

getter のカスタマイズ。


protected function _getFieldName($value)
{
    return ucwords($value);
}

echo $user->field_name;
echo $user->get('field_name');
仮想プロパティ

テーブル上に存在しないプロパティを取得したい場合は
アクセサーを用いる。


protected function _getFullName()
{
    return $this->_properties['first_name'] . '  ' .
        $this->_properties['last_name'];
}

echo $user->full_name;
ミューテーター

setter のカスタマイズ。
値を設定する時に間に挟むものなので、戻り値が存在する。


protected function _setFieldName($value)
{
    return Text::slug($value);
}

$user->field_name= 'foo';
$user->set('field_name', 'foo');
CakePHP 3.x | 2018-02-11 (日) 13:38:04 |

DateTime

Posted by muchag | C# | 2018-02-11 (日) 12:23:12


MSDN:DateTime 構造体
MSDN:DateTime 演算子
MSDN:DateTimeOffset 構造体

【環境】
Visual C#: 15.5.4(2017)
文字列変換

dobon.net:日時(DateTimeオブジェクト)を文字列に変換する

C# | 2018-02-11 (日) 12:23:12 |

双方向データバインド

Posted by muchag | C# | 2018-02-11 (日) 12:21:07

【環境】
Visual C#: 15.5.4(2017)
参考サイト

MSDN:とあるコンサルタントのつぶやき Part 1. 双方向データバインドの基本的な使い方(2009-02-26)
→とてもわかりやすい解説

@IT:WPF/UWP:ラジオボタンを双方向バインディングするには?[C#/VB](2016-02-03)
→ラジオボタンにおける双方向データバインド

C# | 2018-02-11 (日) 12:21:07 |

LINQ -> Where

Posted by muchag | C# | 2018-02-08 (木) 10:54:02

【環境】
Visual C#: 15.5.4(2017)
OR

if 文と同じように書けば良い。


.Where(x => x == 1 || x => x == 2)
動的に生成

C#erの備忘録:Linqの動的条件生成ライブラリ(2013-02-16)
→ありがたくライブラリを使わせていただいたけど、期待通りには動かなかった。


var condition = ConditionChain.Create(condition1).OrElse(condition2);

ここで、null になっちゃったんだったっけか。。。

C# | 2018-02-08 (木) 10:54:02 |

Database operation expected to affect 1 row(s) but actually affected 0 row(s).

Posted by muchag | C# | 2018-02-06 (火) 0:12:26

【環境】
Visual C#: 15.5.4(2017)
経緯

SQLite3 で管理しているデータを削除しようとしたら
下記エラーが出た。

{“Database operation expected to affect 1 row(s) but actually affected 0 row(s). Data may have been modified or deleted since entities were loaded. See http://go.microsoft.com/fwlink/?LinkId=527962 for information on understanding and handling optimistic concurrency exceptions.”} Microsoft.EntityFrameworkCore.DbUpdateConcurrencyException

データが既に更新またや削除されているよ。。。って、誰よ~TT

原因

データベースに格納されている日付文字列が「2018-02-05」となっていたため
DateTime 型で値を持っている C# では「2018-02-05 00:00:00」となり
整合性が取れなくなっていたみたい。

解決

データベース側の値を「2018-02-05 00:00:00」とすることで
エラーは出なくなった。

愚痴

そもそも SQLite のデータ型に DateTime がないから・・・。
ん~なんで、初期データを「2018-02-05」しちゃったんだろう。。。
私がアホなだけよね。。。

C# | 2018-02-06 (火) 0:12:26 |

ハッシュ値

Posted by muchag | C# | 2018-01-28 (日) 22:27:38

暗号化って、全然勉強できてないな~。
今回はまずは序章ということで、参考サイトのまんま実装してみる。
何かの記事に書いてあったけど、もう MD5 はやばいそうな。

「せめて 256 バイト以上のものを利用しましょう」とあったので
試してみた。

【環境】
Visual C#: 15.5.4(2017)
SHA256

行け!偏差値40プログラマー:[ C# ] SHA256 で文字列のハッシュ値を計算・取得する


// 文字列のハッシュ値(SHA256)を計算・取得する
protected string _GetHashedTextString(string passwd)
{
    // パスワードをUTF-8エンコードでバイト配列として取り出す
    byte[] byteValues = Encoding.UTF8.GetBytes(passwd);
 
    // SHA256のハッシュ値を計算する
    SHA256 crypto256 = new SHA256CryptoServiceProvider();
    byte[] hash256Value = crypto256.ComputeHash(byteValues);
         
    // SHA256の計算結果をUTF8で文字列として取り出す
    StringBuilder hashedText = new StringBuilder();
    for (int i = 0; i < hash256Value.Length; i++)
    {
        // 16進の数値を文字列として取り出す
        hashedText.AppendFormat("{0:X2}", hash256Value[i]);
    }
    return hashedText.ToString().ToLower();
}

ほぼ、上記サイトからいただいてきたんだけど
18行目だけ。

そもそものハッシュ値を、
Good-Tool.net:ハッシュ値の一括計算・生成ツール(無料)
で生成したため、ToLower だけ追加した。

C# | 2018-01-28 (日) 22:27:38 |
次ページへ »