AD:
Google News用のSitemap.xmlを作成した際のメモです。
fm-labs/cakephp3-sitemapを使用します。
componserでPluginを追加しようとするとcomposerでpackageがないとエラーがでました。
|
composer require fm-labs/cakephp3-sitemap |
なので、直接pluginの中に入れて対応しました。
|
cd app/plugins/ git clone https://github.com/fm-labs/cakephp3-sitemap Sitemap |
compsoser.jsonの編集
|
vi app/compsoser.json "autoload": { "psr-4": { "App\\": "src", "Sitemap\\": "./plugins/Sitemap/src" } }, |
dumpautoloadを走らせる
|
php composer.phar dumpautoload Generating autoload files |
これで、後はreadmeにある通りにcontrollerを作ればうまくXMLが表示されるようになりました。
Twitter:
Warning: Undefined array key "Twitter" in /home/sazaeau/mizoshiri.com/public_html/blog.mizoshiri.com/wp-content/plugins/sns-count-cache/sns-count-cache.php on line 2897
0 | Facebook: 0 | Google Plus:
Warning: Undefined array key "Google+" in /home/sazaeau/mizoshiri.com/public_html/blog.mizoshiri.com/wp-content/plugins/sns-count-cache/sns-count-cache.php on line 2897
0 | Hatena: 0 | Pocket: 0 | Total: 0 | Feedly: 0
AD:
SSL下にあるアプリケーションで、Sessionを情報を引き継ぐフォームを作成したのですが、IEだけ画面遷移するとSessionが引き継がれないことに気づきました。
core.phpに下記の内容を記述して、対応して回避できました。
|
Configure::write('Session', array( 'defaults' => 'php', 'ini' => array('session.cookie_secure' => false, 'session.referer_check' => false), 'checkAgent' => false, )); Configure::write('Security.level', 'low'); |
Twitter: 0 | Facebook: 0 | Google Plus: 0 | Hatena: 0 | Pocket: 0 | Total: 0 | Feedly: 0
AD:
先日書いた独自Validationで、そのテスト書く際に地味に悩んだのでメモしておきます。
ちなみに、Fixtureは設定しておいてください。
User.php
下記のようなValidationをTestしたいとします。
|
public function originalValidation(){ if($this->data['User']['hoge']) 以下省略 } |
UserTest.php
Readしてやるとdataの中にデータを渡せるらしい。
|
public function testOriginalValidation(){ $this->User->id = 1; $this->User->read(); $this->assertEquals(true, $this->User->originalValidation()) } |
Twitter: 0 | Facebook: 0 | Google Plus: 0 | Hatena: 0 | Pocket: 0 | Total: 0 | Feedly: 0
AD:
僕が使っているのは、下記の方法です。
[php]
$this->modelNames[‘0’]
[/php]
Cakephp1.2.*、1.3.*で動作は確認済みです。
皆さんどのように取得していますか?
なにかおすすめな方法がありましたら、教えてください。
Twitter: 0 | Facebook: 0 | Google Plus: 0 | Hatena: 0 | Pocket: 0 | Total: 0 | Feedly: 0
AD:
Cakephpで構築したサイトにAuthComponentを使用して、ユーザ機能を実装していた際に、
微妙に悩んだのが、UsersControllerの中で、addのアクションだけ、認証の必要なしにアクセスするの方法です。
答えは、beforeFilterに、$this->Auth->allow(‘add’);を入れれば解決でした。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
|
class r extends AppController { var $name = 'Users'; var $components = array('Auth'); var $helpers = array('image','Html','Ajax','Javascript','Form'); //初期値の読み込み function beforeFilter(){ $this->Auth->fields = array( 'username' => 'email', 'password' => 'password' ); $this->Auth->loginError = "パスワードもしくはログインIDをご確認下さい。"; $this->Auth->authError = "ご利用されるにはログインが必要です。"; $this->Auth->allow('add'); } function login() { if ($this->Auth->user()) { $this->redirect('/'); } } function logout() { $this->Auth->logout(); $this->redirect('/'); } function add() { if (!empty($this->data)) { if($this->User->save($this->data)) { $this->User->create(); $this->Session->setFlash("当労苦しました。"); $this->redirect('/'); } } } |
Twitter: 0 | Facebook: 0 | Google Plus: 0 | Hatena: 1 | Pocket: 0 | Total: 1 | Feedly: 0
AD:
はじめてのシドニーで開発関係のイベント参加
今回行ってきたイベントはSydphpのミーテイングです。
オーストラリアに来ては、はじめて開発関係のイベントでした。
以前から行こうと思っていて、日程とスケジュールが合わずに断念していたましたが、今回は約1ヶ月前から事前に予定を開けておいたので無事参加することができました。
イベント内容について
はじめは簡単な自己紹介からスタートしました。
名前、今やっているプロジェクト、php歴などを話しました。
メンバーにはphpを使いだして、6ヶ月の人もいれば7年も使っている人もいました。
驚いたことは、年齢層がかなり高かったことです。30後半から、40代の人が6割ぐらいを占めていました。
Steven Roddis – Two Factor Authentication
phpとSwekeyを使っての認証についての内容でした。
僕の英語力では6割しかわかりませんでしたが、たまに見るネットバンクのログインに使用するランダムパスワードのハードや、
会社などに入る際に必要なカードキーなどを、phpとパソコンで作ってしまうみたいな内容でした。
オーストラリアのSMSの会社が紹介されたあたりは、業務と関係してて勉強なりました。
紹介されていたSMSの会社「http://www.smsglobal.com/en-au/」
Steven Roddisさんのサイト
http://stevenroddis.com/
Graham Weldon – Unit Testing with PHP
Unit Testのなぜ使うべきなのか、実務の中でも使用方法などを簡略にわかりやすく説明してくれました。
最近、Cakephpを使っているので、SimpleTestを触ろうところだったので、勉強になりました。
またGraham Weldonさんは、Cakephpの開発に関わっているようで、実際にCakephpをUnit Testでチェックしているのを見れたのもよかったです。
本人はCPU関係の開発者らいいです。
Graham Weldonさんのサイト
http://grahamweldon.com/
その他
イベントで、隣に座った、Travisにいろいろとオーストラリアの開発者や、WEB事情の話しが聞けたのはかなりの大きな収穫でした。また一緒にイベントに参加するつもりです。
ちなみにオーストラリアでは、プログラマーという呼び名の職種はなくて、日本で言うところのプログラマーはDeveloperになるようです。
で、Developerは、システムエンジニアも職種も含むようです。
まとめ
イベントが終わった後は、あっさり解散したのですが、Travisとしばらくいろいろと話せて楽しかったです。
イベントでは、いい刺激になるし、同じ職種の人と知り合いになれるのもいいですね。
いろいろと勉強になったので、次回も是非参加したいと思います。
ちなみに次回のイベントは4月30日にLinuxユーザのイベントがgoogleオフィスにであるので、それに参加する予定です。
ご興味ある方はぜひ一緒に行きましょう。
Twitterからでも声をかけてください。
http://twitter.com/ayumi
Twitter: 0 | Facebook: 0 | Google Plus: 0 | Hatena: 1 | Pocket: 0 | Total: 1 | Feedly: 0
AD:
CakephpでMysqlで取得したデータのみだけ文字化けの現象がおきましたので、その時の解決法をメモしておきます。
解決法
/app/config/database.phpに文字コードを指定
|
var $default = array( 'driver' => 'mysql', 'persistent' => false, 'host' => 'localhost', 'login' => 'user', 'password' => 'pass', 'encoding' => 'utf8' , ← 文字コードを指定 'database' => 'dbname', 'prefix' => '', ); |
上記の設定で解決できました。
Twitter:
Warning: Undefined array key "Twitter" in /home/sazaeau/mizoshiri.com/public_html/blog.mizoshiri.com/wp-content/plugins/sns-count-cache/sns-count-cache.php on line 2897
0 | Facebook: 0 | Google Plus:
Warning: Undefined array key "Google+" in /home/sazaeau/mizoshiri.com/public_html/blog.mizoshiri.com/wp-content/plugins/sns-count-cache/sns-count-cache.php on line 2897
0 | Hatena: 0 | Pocket: 0 | Total: 0 | Feedly: 0
AD:
CakephpでWindowsのローカル環境で開発して、Linuxのサーバに公開したときにひかかったので記載しておきます。
Windowsなど、一部のOSはMysqlは、テーブル名など名前の大文字・小文字は区別しないようです。
Linuxの環境下では、大文字・小文字の区別はするのでCakephpでエラーがでた次第です。
(More…)
Twitter:
Warning: Undefined array key "Twitter" in /home/sazaeau/mizoshiri.com/public_html/blog.mizoshiri.com/wp-content/plugins/sns-count-cache/sns-count-cache.php on line 2897
0 | Facebook: 0 | Google Plus:
Warning: Undefined array key "Google+" in /home/sazaeau/mizoshiri.com/public_html/blog.mizoshiri.com/wp-content/plugins/sns-count-cache/sns-count-cache.php on line 2897
0 | Hatena: 1 | Pocket: 0 | Total: 1 | Feedly: 0
AD:
Cakephpのvalidationのごくごく単純な内容でハマった
記述方法について
maxLengthについて
validationの機能は動いていたのですが、下記のエラーがでてしまった。
|
Undefined offset: 0 [COREcakelibsmodelmodel.php, line 2435] |
で、よくよくドキュメントを確認してみると記述方法が間違っていました。
▼間違った記述方法
|
var $validate = array( 'hoge' => array( 'rule' => array('maxLength' => '100'), 'message' => '最大100文字までです。' ) ); |
↓
▼正しい記述方法
|
var $validate = array( 'hoge' => array( 'rule' => array('maxLength','100'), 'message' => '最大100文字までです。' ) ); |
▼間違った理由
その上で数値チェックをしていたので、記述法を同じだと勘違いしていました。
|
var $validate = array( 'age' => array( 'rule' => array('comparison', '>=', 18), 'message' => '18歳以上の方のみ対象です。' ) ); |
単純な間違いなのに、発見するのに30分くらいかかりました。
非常にくやしい。
ドキュメントを読む際に、ああだいたいこうだろうと流し読みしていたから招いたのでしょう。
残念。
Cakephp validationの説明
http://book.cakephp.org/ja/view/134/Core-Validation-Rules
Twitter:
Warning: Undefined array key "Twitter" in /home/sazaeau/mizoshiri.com/public_html/blog.mizoshiri.com/wp-content/plugins/sns-count-cache/sns-count-cache.php on line 2897
0 | Facebook: 0 | Google Plus:
Warning: Undefined array key "Google+" in /home/sazaeau/mizoshiri.com/public_html/blog.mizoshiri.com/wp-content/plugins/sns-count-cache/sns-count-cache.php on line 2897
0 | Hatena: 2 | Pocket: 0 | Total: 2 | Feedly: 0
AD:
最近、Cakephpで開発するようになったので、.emacsに下記の内容を追加と修正
php-modeにctpを追加
|
;;php-modeの読み込み (load-library "php-mode") (require 'php-mode) ;;;php-mode時のタブの調整 (add-hook 'php-mode-hook '(lambda () (setq tab-width 2))) ;; 拡張子が*.tplと*.incはphp-modeにする (add-to-list 'auto-mode-alist '("\.tpl$" . php-mode)) (add-to-list 'auto-mode-alist '("\.inc$" . php-mode)) (add-to-list 'auto-mode-alist '("\.ctp$" . php-mode)) <span>この一行を追加</span> ;;;php-modeの時は文字コードをEUC-JPにする (add-hook 'php-mode-hook '(lambda () (set-default-coding-systems 'utf-8))) (add-hook 'php-mode-hook '(lambda () (set-buffer-file-coding-system 'utf-8))) (add-hook 'php-mode-hook '(lambda () (set-terminal-coding-system 'utf-8))) |
フォントにVL ゴシックを採用
cakephpにまったく関係ないけど、ついでに修正
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
(create-fontset-from-request "private-fontset" '((width . 8) (height . 16) (fixed . t) (italic . nil)) '((family . "VL ゴシック") (family . "Lucida Console"))) (change-fontset-from-request "private-fontset" '((width . 8) (height . 16) (fixed . t) (italic . nil)) '((family . "VL ゴシック") (family . "Courier New")) 1) (setq default-frame-alist (append (list '(font . "private-fontset") ; フォントセット ) default-frame-alist)) |
Twitter: 0 | Facebook: 0 | Google Plus: 0 | Hatena: 4 | Pocket: 0 | Total: 4 | Feedly: 0