トップ > ラボブログ

ラボブログ

CakePHP アーカイブ


2010年11月17日


CakePHP+Twitter OAuthプログラミング環境を整えるまで

DAC/スパイスラボ神部です。


ひさびさに技術系の更新です。


CakePHP+Twitter OAuthプログラミング環境を整えるまで


ということなのですが、いきなりさくらインターネットに限定します。


さくらインターネットにpearをインストールする


今回と関係ないものも入っていますが、最終的にそろえたいもの:


Archive_Tar 1.3.7 stable
Cache_Lite 1.7.8 stable
Console_Getopt 1.2.3 stable
DB 1.7.13 stable
HTML_Template_IT 1.3.0 stable
HTTP 1.4.1 stable
HTTP_Client 1.2.1 stable
HTTP_OAuth 0.1.18 alpha
HTTP_Request 1.4.4 stable
HTTP_Request2 0.5.2 alpha
Log 1.12.3 stable
MDB2 2.4.1 stable
MDB2_Driver_mysql 1.4.1 stable
Mail 1.2.0 stable
Net_SMTP 1.4.4 stable
Net_Socket 1.0.10 stable
Net_URL 1.0.15 stable
Net_URL2 0.3.1 beta
Net_UserAgent_Detect 2.5.2 stable
PEAR 1.9.1 stable
PEAR_Frontend_Web 0.7.5 beta
Services_JSON 1.0.2 stable
Structures_Graph 1.0.4 stable
XML_Parser 1.3.4 stable
XML_RPC 1.5.4 stable
XML_Util 1.2.1 stable


Pearおよび、PHPの最新版インストールしよう


インストールだけなら さくらでpearインストール覚書 とか 小山太郎.com » Blog Archive » さくらインターネットでPEARをインストール とか コマンドプロンプトを使わないで、さくらへPEARをインストール(Go-PEAR使用) (masha.webTechLog) でよいが、しばらく使っていなかったりするとさくらインターネットのPHPのバージョンが新しくなっていて、~/bin/ の下にはなくなっていたりするので、次にある方法などでローカルの下にコピーする必要があるらしい。


-ドロップシッピングで目指せ月収100万円!!: さくらインターネットのphp.cgiのバージョンがアップしていました。


pearの環境の確認と、pear config-setによる環境設定


まず、サーバインストールされたpearではなくローカルにインストールしたpearをコンソールから使うには、.cshrcのpathを次のようにし、先頭に「~/pear/bin」を付け足す必要がある。


set path = (~/pear/bin /sbin /bin /usr/sbin /usr/bin /usr/games /usr/local/sbin /usr/local/bin /usr/X11R6/bin $HOME/bin)


次に、pear installを実行しようとすると、pearの作業ディレクトリが共有部分のためインストールできない。そこで、まずはpear config-showで環境を確認し、共有部分にかかっているのはどこかを確認する。


引き続き、、さくらインターネットへのPEARモジュールの追加インストール: PHPを使ったWebサイト構築 備忘録 さくらインターネットでpearインストール備忘録 - Liner Note さくらへ pear をインストールする « 夢茶爺&苦茶爺のPC奮戦備忘録 を参考に、pear config-set を次々と実行していくことになる。ただし、最後の例で


%pear config-set php_dir /home/(アカウント名)/(PEARインストールフォルダ名)


となっているところは


%pear config-set php_dir /home/(アカウント名)/(PEARインストールフォルダ名)/PEAR


としておかないと、ディレクトリ構成が崩れてしまうようだ。


HTTP_OAthを利用する


この夏大きな変化があったTwitterのAPIまわりですが、pearのHTTP_Oauthを利用するために、下記を参考に準備をととのえる。


ただし、下記でいれているpecl_httpはさくらインターネットには入れられない。


PEAR::HTTP_OAuthをインストールする


しかし PEPr :: Details :: HTTP_OAuth によるとoptionalなものなのでスルーしていいだろう。


実際に利用するところは、HTTP_OAuthを利用してTwitterのOAuth認証を行う @ php-tips PHP用OAuthのサンプルコード HTTP_OAuthでアクセストークンを取得するときにユーザIDとスクリーン名を取得できるようにするための修正 - Awesome Rapid Service あたりを参考に。


APIを別の方面から、Cache_Liteで使う方法


最初はAPIを使いたくなかったので、PHPでTwitter最新のつぶやきを表示する方法 | Johnnnnny.com  を参考にしようとしたが、今はしくみが変わってむずかしいようなので、【Cache_Lite編】PHPでTwitterのつぶやきを表示 | Johnnnnny.com を参考にする。インストールの方法は 第7回 キャッシュを導入して、快適なページ表示を実現する - マッシュアップ講座 あたりを参考にすればよい。


これでひと通り準備はととのうはず。


改めて HTTP_OAuthを利用してTwitterのOAuth認証を行う @ php-tips あたりをみて取り組みとよい。

ブックマークに追加する

トラックバック

このエントリーのトラックバックURL:
http://www.spicebox.jp/cgi-bin/mt/mt-tb.cgi/1509

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)


2009年11月02日


CakePHP 1.2 の validation で必要なのに書かれていない行

スパイスラボ神部です。


CakePHP のモデルで validation って使えそうなんですが、いままでなんか動かない感じで困っていたんですが、次の一行が抜けていたようです。


(※Userモデルと仮定します)


$this->User->set($this->data);


これがないと、どんなに一生懸命


if($this->User->validates()){}


としても validate してくれませんでした。


不思議なことに、


if($this->User->validates$this->data['User'])){}


だと動かなかったです。不思議。


その他の参考リソース


-宮城・仙台のWEBシステム研究会 「アイ・ドリーム」 » CakePHP: モデル内に複数のバリデーションのパターンを用意しておき、動的に切替える方法


-"メールアドレスの重複チェック" フォーラム - CakePHP Users in Japan


 

ブックマークに追加する

トラックバック

このエントリーのトラックバックURL:
http://www.spicebox.jp/cgi-bin/mt/mt-tb.cgi/1272

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)


2009年08月11日


CakePHPで楽々ページング

スパイスラボ神部です。


CakePHP におけるPaginator および Pagenation の使い方をまとめてみます。


通常は Pagenator を使うのが良さそうです。


-Pagenatorが好きだ! - Favorites!


Paginator の使い方


-CakePHPのページング処理には1.2からはpaginatorを使え。 - /halt/Snapshot


これは楽そうです。1.2からは既に内蔵されているとか。


-ページ付け(Pagination) :: CakePHPによる作業の定石 :: マニュアル :: 1.2 Collection :: The Cookbook


タイトルは Pagenation ですが中身は Pagenator の話のようです。


-CakePHPでのPaginator - 院生エンジニアのにっき


-Abstract Sunriseな日々 | [CakePHP]paginatorで楽にパラメータを引き継ぐ


Pagenationの使い方


-CakePHP Pagination まとめ | Sun Limited Mt.


いろいろ複雑な指定が出来そうです。

 

ブックマークに追加する

トラックバック

このエントリーのトラックバックURL:
http://www.spicebox.jp/cgi-bin/mt/mt-tb.cgi/1154

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)


2009年07月04日


CakePHPのユーザDBで Basic 認証するには!

スパイスラボ神部です。


以前、CakePHP で Basic 認証のやりかたについて書きました(CakePHP 1.2 の Basic 認証設定があまりにも簡単すぎる ( ラボブログ ) )。この方法はたしかに簡単なのですが、アカウント/パスワードの組み合わせを beforeFilter などにハードコーディングしなければならないという状況がありました。


そこでちょっと考えてみてください。もし AuthComponent を使ってユーザ管理を行っている場合、ここで使っているユーザIDとパスワードを上手に使って Basic 認証などの認証を上記のような Security コンポーネントの取り回しをすることができれば、サイトの可能性がもっと広がるかもしれません。例えば、OpenID の認証なんかをうまくハンドリングすることが出来るかもしれません。今回はそのやりかたの基礎的な部分についてかんたんに紹介したいと思います。


-認証が好きだ! - Favorites!


まずは基本のおさらい


基本は、CakePHP の Security Component を使うことから始まります。


-ベーシック HTTP 認証 :: セキュリティコンポーネント :: 主要なコンポーネント :: マニュアル :: 1.2 Collection :: The Cookbook


使い方はこちらにあるとおり。簡単ですね。


認証用のコールバック関数を使ってモデルベースの認証を!


やり方を探してみたところ、こんなやり方が見つかりました。


-(Bad) Tip: Checking HTTP Auth against your normal users table - CakePHP | Google グループ


ポイントは、loginOption の指定で「'login'=>'authenticate'」という項目が入っていること。これにより、任意の認証の処理を指定した名前の関数で行い、そこでログイン処理を行ったうえ、 true か false かを返し、その戻り値により basic 認証を完了出来たかということを処理できるというわけです。簡単ですね!


また、一緒に書かれている blackHole メソッドは、認証処理を中断して exit させるためのメソッドのようです。


たとえばこんな感じで書くとよいかも。



function _blackHole($error) {
if ($error=="secure") {
// SSL でリダイレクトさせるなどの処理
exit;
}
}


ちょっとだけ補足


ユーザモデルを使った認証、上記のようなやりかたではうまくいかないので、自分の方ではこうしたところうまくいきました。



$data = array(
'User.username' => $args['username'],
'User.password' => $this->Auth->password($args['password'])
);
$status = $this->Auth->login($data);
//var_dump($status);

if ( $status ) {
return true;
} else {
$this->Security->blackHole($this, 'login');
return false;
}


参考にしたのはこちらです。


-【CakePHP】OpenIDをAuthComponentにトッピングしてみる | ねねとまつの小部屋


Security Component マニアックス


少し調べたら、ちょっと参考になるサイトがありました。


-CakePHP Security コンポーネントのまとめ | Sun Limited Mt.


クロスサイトリクエストフォージェリ(CSRF) を防ぐ方法とか、特定のアクションからのポストのみ許可する方法など、こちらも参考になります。


注意!


CGI版のPHPは Basic 認証による値を受け取ることが出来ないので、Security コンポーネントによる方法は利用出来ません。


代替として下記のような方法がありますが、サーバの設定によるのと、PHP4でしか使えないと言う問題があります。


-phpでベーシック認証 - bnote


PHP5 の場合では、HTTP_AUTHORIZATION: という値で代用できるようですが、これもサーバの設定次第です。セキュリティ自体は低下のリスクがあるので、最悪今後レンタルサーバでは PHP による柔軟な Basic 認証の運用が出来なくなる危険性があります。これは認識しておきたいですね。


-PHP5


-PHP4


でもこれは、FasitCGI Module が入っていないと機能しないようです。


-Ruby on Rails/apache2+FastCGIでBASIC認証 - アークウェブシステム開発SandBox


-Foodyn CMS開発日誌 - ApacheでFastCGI使ったベーシック認証


-HTTP_AUTHORIZATION


関係無い補足


なんだか時折、CakePHP のロガー、$this->log() が動かないときがあるなと思っていたのですが、app/tmp/logs に書き込み可能属性がないといけないようです。ちょっとしたメモでした。


あとはこんなのとか。


-CakePHPのAuthコンポーネントのパスワード暗号化を無効にする - Rewish


-Web認証システムの作り方大全―Apache/IIS/PHP/Servlet&JSPそれぞれの場合が好き! - ILOVEIT(β)
 

ブックマークに追加する

トラックバック

このエントリーのトラックバックURL:
http://www.spicebox.jp/cgi-bin/mt/mt-tb.cgi/1111

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)


2009年06月15日


CakePHP でサクサクテキスト検索

スパイスラボ神部です。


MySQLなどのデータベースに格納されているテキストデータを検索したいときありますよね。いわゆるサイト内検索的なこと。Namazu などを使ってやるやり方もありますが、CakePHP を使えば findAll の引数をちょっと工夫してやることで、格納されているテキストデータの中から like 検索をすることができます。


-ライラックが好きだ! - Favorites!


LIKE 文の作成方法


ウェブを探すと色々出てくるのですが、実際にうまくいったのはこちらでした。


-CakePHPクッキング - 投稿の詳細: LIKE 文の作成方法


下記の様に、like を key に記載し、value を % で囲めばできます。


like だから漠然と検索してくれてナイスです。もちろんチューニングのしようはあるんでしょうけど。


もし、バッグの名前が沢山登録されている bags というデータベースがあって、「ケリーバッグ」を探したいときは、「ケリー」と入力すると引っかける、そんなようなことはこれだけで可能です。


or を使いたい


そんな風に like だと完全一致ではなくても引っかけてくれるわけですが、それでも他の条件と組み合わせると絞り過ぎちゃうとき、そんなときは or を使いましょう。


-螺旋階段に旋条痕: CakePHPのfind条件にORを設定したい


findAll に引数を渡すとき、引数を別途あらかじめ変数に代入して array_merge でつなげているばあいは、 or の項目をさらに array でくくるとうまくいくかもしれません。


おまけ


formHelper で select 使うときも結構ハマルので、こんなエントリも紹介しておきます。


-CakePHPクッキング - 投稿の詳細: Selectボックスの作り方


おまけ2


どんどん関係なくなっていくけどこの辺も役立つのでメモっておきます。


-CakePHP 1.2 の deleteAll | Sun Limited Mt.


そもそも delete も使い慣れないとね。


-『CakePHP』を使ってみる ~11~ セッションの使い方確認 - ざ・わーるど.jp@はてな


$this->Session->destroy();


これで /users/logout/ にリダイレクトさせなくてもログアウトされられるのね。


参考


もっと高度な話はこちら。


-mixi Engineers’ Blog » 3行でできる超お手軽全文検索


-エンジニアのためのMySQL運用管理大全が好き! - ILOVEIT(β)

 

ブックマークに追加する

トラックバック

このエントリーのトラックバックURL:
http://www.spicebox.jp/cgi-bin/mt/mt-tb.cgi/1090

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)


2009年05月28日


CakePHP で Security.level の high 設定について

スパイスラボ神部です。


なんだか CakePHP で認証なりセッションなりで悩まされるとき、原因をたどっていくと結構 core.php の Security 設定を high にしていることが原因だったりすることがあるので不思議に思っていたのですが、隙を見て akiyan さんにちらっと聞いてみたらやっぱり『Security.level::high はできない子』らしいので、いい機会だと思ってここにまとめてみます。


-セキュリティが好きだ! - Favorites!


Security.level が high のときに起きるいろいろなこと


-CakePHPの Security.levelとセッション - あぁ そうだった


Security.levelがhighに設定されていると、セッション「ID」は毎回生成されるのがCakePHPの仕様。


モバイルサイトを作成するときには要注意ですね。大元をたどれば CookBook にも書かれています。


-CakePHPコアの環境設定変数 :: Configurationクラス :: 環境設定 :: CakePHPによる開発 :: マニュアル :: 1.2 Collection :: The Cookbook


CakePHP のセキュリティレベルを設定します。'Session.timeout' で設定されたセッションタイムアウトの基本時間に、この設定による値をかけたものが最終的な値になります。
有効な値:
'high' = x 10
'medium' = x 100
'low' = x 300

'high' と 'middle' は、両方とも session.referer_check が有効になります。

'Security.level' が 'high' にセットされていた場合、 CakePHP のセッション ID はリクエストごとに再生成されます。。


-cronos feed 2.0::Security.level='high'はあんまよくない?


-CakePHPのcore.phpの設定を勉強!! - 子だぬきの技術習得ノート


セッション時間と共にここの設定で、何処までセッションを保持しているか決まります。
highの場合=CAKEPHPの内部まで
middleの場合=同一ドメインの内部まで
lowの場合=仮想ドメインなどの違うドメインでも保持しています


-3流プログラマのメモ書き : (CakePHP)携帯電話でもセッションを使えるようにする


また、Security.levelをmidiumにするとセッションタイムアウトの時間がSession.timeout*100秒になってしまいます。デフォルトの120だと 120秒*100/60=200分ということで、3時間半にもなってしまうので値を小さくします。


middle のときは middle で問題があるようですね。


-CakePHP Security コンポーネントのまとめ | Sun Limited Mt.


ブラックホールメソッドなんていうのがあるらしい。ほかにも細かな使いこなし方法が載っています。


個人的な経験より


個人的には、CakePHP で AuthComponent を使っていると、ブックマークレットからサイトにアクセスしたときになぜからリダイレクトが繰り替えされてしまって困りました。こうしてまとめてみると、ブックマークレットから起動->セッション切断->自動ログインする->でもリファラが違うドメイン(ブックマークレットからだから)なのでセッション切断->自動ログインする みたいなことになっていたのかもしれません(※その証拠に同一ドメインのページを Bookmarklet で呼び出すとこのような問題は起きませんでした)。


この場合も、Security.level を middle にしたところで解決しました。このあたりのお話はレアかもしれませんが、AuthComponent を利用するときなどには忘れずに頭に入れておきたいところです。


というか、もう medium がデフォルトでもいいのかも。


なにか理解に違いがあれば、ツッコミをお願いします。


-CakePHPガイドブックが好き! - ILOVEIT(β)
 

ブックマークに追加する

トラックバック

このエントリーのトラックバックURL:
http://www.spicebox.jp/cgi-bin/mt/mt-tb.cgi/1071

この一覧は、次のエントリーを参照しています: CakePHP で Security.level の high 設定について :

» AuthComponentでセッション切れが発生する 送信元 あんじーのテクニカルブログ
CakePHPのアプリケーションでAuthコンポーネントを利用して認証システムを... [詳しくはこちら]

コメント ( 1 )

一応、こちらを紹介しておきます。http://d.hatena.ne.jp/ockeghem/20090515
デフォルト(Security.level="high")では、session_regenerate_id()がかかっています。

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)



CakePHP でバージョンを調べるには

スパイスラボ神部です。


RedHat 系の OS であれば /etc/redhat-release、PHP であれば phpinfo(); を書けばバージョン番号を知ることが出来ますが、CakePHP の場合はどうなるでしょうか。

実はこれだけ


CakePHP / CakePHPのバージョンを表示する|とんでもブログ ~ プログラマのWeb開発メモ (PHP, CSS, JavaScript)


によると、


echo Configure::version();


だけでいいそうです。


-バージョン確認が好きだ! - Favorites!


-CakePHPによる実践Webアプリケーション開発が好き! - ILOVEIT(β)
 

ブックマークに追加する

トラックバック

このエントリーのトラックバックURL:
http://www.spicebox.jp/cgi-bin/mt/mt-tb.cgi/1070

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)


2009年05月25日


CakePHP + Ktai Library 非公式 Wiki はじめます。

スパイスラボ神部です。


先日、第4回CakePHP勉強会@Tokyo に参加してきました。


特に聞きたかった K-tai Library のセッションも聞くことができ、CakePHP まんじゅうもおいしくいただきました。


そのモチベーションでさっそく K-tai Library を使った開発に取り組みましたが、開発優先のためアンドきゅめんてっどな部分も多いとのことなので、その辺へのコミット、自分用のメモ、そして CakePHP による携帯サイト作りを一気にコモディティ化するべく、こんなサイトをはじめて見ることにします!


-CakePHP + Ktai Library 非公式 Wiki


まだまだフレームだけですが、徐々に充実させていたいと思います。めっちゃ充実したら、ke-tai.org さんにたれ込むぞー。


-温泉まんじゅうが好きだ! - Favorites!


ついでに第4回CakePHP勉強会@Tokyoの関連リンク


せっかくなので、発見した 第4回CakePHP勉強会@Tokyo 関連のエントリーをメモっておきます。コメントも後ほど追加する予定。


-【CakePHP】第4回CakePHP勉強会@Tokyo無事終了! | ECWorks Blog


-極める routes.php (CakePHP 1.2) : akiyan.com


-第4回CakePHP勉強会@Tokyo無事終了 - yandodの日記


-第4回CakePHP勉強会@TokyoのLTで発表してきました! - 忍び歩く男 - SLYWALKER


-第4回CakePHP勉強会@Tokyoが終了しました&発表資料 | Shin x blog


5/27追記


-ke-tai.org > Blog Archive > 第4回CakePHP勉強会@Tokyoで発表されたスライド資料「Ktai Libraryで携帯サイトを高速開発」


-CakePHPまんじゅうの注文は大成功でした! - yandodの日記


-PHP Reflectionの話 - cakephperの日記(cakePHP1.2ベース)


-phpUnderControl 導入方法 - miauの避難所


-CakePHP routes.phpの確認はユニットテストで | Shin x blog


- cakePHP勉強会参加報告 - ふと、気づいたんだ。


位置情報取得にアイディアをお持ちらしいです!


-CakePHP 勉強会で発表してきました | Sun Limited Mt.


-極めたいw CakePHPのルーティング [C!]


-CakePHP フレームワークのソースをapp/で置き換える | Shin x blog


-[CakePHP] Sluggable Behavior の使い方 | Sun Limited Mt.


-[CakePHP] SoftDeletable Behavior で論理削除 | Sun Limited Mt.


-PHP勉強会 #43でサーバ運用関係の発表をしてきました - cakephperの日記(cakePHP1.2ベース)


-携帯サイト コーディングデザインが好き! - ILOVEIT(β)

 

ブックマークに追加する

トラックバック

このエントリーのトラックバックURL:
http://www.spicebox.jp/cgi-bin/mt/mt-tb.cgi/1060

コメント ( 1 )

MASA-P :

仕事早すぐる…(笑)

本来はうちでやらなければならないものだと思うのですが、大変にありがたいです。
是非よろしくお願いします。

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)


2009年05月18日


CakePHP で他のモデルのデータを編集する

スパイスラボ神部です。


実験的にですが、CakePHP で formHelper を使いながら他のモデルのデータを編集する試みをしてみましたので、共有してみます。果たしてこの方法が正しいのか?というところもあわせてですので、ツッコミあれば宜しくお願いします。


-二人羽織が好きだ! - Favorites!


コントローラとモデルの基本原則に逆らわないこと


さて、読み込みだけならご存じ var $uses に指定すればどんなモデルでも読み込めます。


そこから先、違うコントローラの中で、しかも formHelper による edit ライクな機能を実装していこうとすると問題が起こります。


1.別のユーザモデルをフォームのにセットすると、そのモデルの edit に飛んでしまう


2.User を User2 などにすると、ユーザモデルがないので formHelper による自動補完が利かない


これは不便で困ります。


私の考えた回避方法


たとえば Basic 認証をかけた Admins コントローラの中で、一般ユーザの編集モデルを作りたかったとしましょう。そういうときは


1.まず、edituser などのアクションを用意し、User データモデルの情報を ID から引っ張ってくる


2.それをいったん、Admin データモデルの ID、ユーザ ID他に代入する。


※このとき、Admin データモデルにないフィールドで、User データモデルにあるフィードでも代入可能


3.edituser アクションのビューで、モデルを Admin、フォームの action を edituser にして formHelper でフォーム作成


※IDがきっちり入力されており、$form->input で出力されているフィールドの User モデルとフィールドが合致していればフォームにあらかじめ値がセットされている状態になる。


4.edituser アクションにて、 $this->data が empty でないとき、Admin.User モデルに入ってきた値を、改めて $this->data['User'] に代入。


5.$this->User-save($this->data['User'] などとして、User データモデルに値を保存


※パスワードや created, modified などは、null すなわちなにも指定しない状態にしておけば上書きされず前回の値が使われる。


まとめ


ということで、今回は特定のデータモデルをカプセルのように使って別のユーザモデルのデータを受け渡し、なおかつ formHelper による簡単入力補完というところも実現してみました。このようなイレギュラーなやり方が認められるのかわかりませんが、とりあえず出来ましたということで共有しておきます。


-トロイの木馬が好き! - ILOVEIT(β)

 

ブックマークに追加する

トラックバック

このエントリーのトラックバックURL:
http://www.spicebox.jp/cgi-bin/mt/mt-tb.cgi/1046

コメント ( 2 )

Ryuji :

> 匿名さん

なんか、それで良さそうですね…無駄なエントリをあげてしまったかも。

匿名 :

>1.別のユーザモデルをフォームのにセットすると、そのモデルの edit に飛んでしまう

は、
$form->create('User', array('url' => '/controller/edituser'));
とかでは駄目なのでしょうか?

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)


2009年05月10日


CakePHP 1.2 ユーザ登録でパスワードの確認

スパイスラボ神部です。


改めて AuthComponent でのパスワードの確認方法を調べてみたら、確認の方法も公式に提供されているらしいので、小さくとりあげておきます。


-CakePHP のおいしい食べ方: 1.2でいろいろ


ここの「3」で、password_confirm というフィールド名にすればOKらしいです。


controller 側での確認方法も、リンク先の @TheKeyboard » Blog Archive » Simple User Registration in CakePHP 1.2 に載っています。


if ($this->data['User']['password'] == $this->Auth->password($this->data['User']['password_confirm'])) {


こちらにあるように、、password_comfirm で比較するときには、AuthComponent を有効にしないといけないのがちょっと面倒ですね。ここは改善してほしいものです。


-確認が好きだ! - Favorites!

 

ブックマークに追加する

トラックバック

このエントリーのトラックバックURL:
http://www.spicebox.jp/cgi-bin/mt/mt-tb.cgi/1022

この一覧は、次のエントリーを参照しています: CakePHP 1.2 ユーザ登録でパスワードの確認 :

» AuthComponentを使いやすくするビヘイビア 送信元 へびにっき
CakePHP 1.2 の AuthComponent はとても便利なのですが、POSTされたパスワードの値を自動的に暗号化(hash)してしまうため、ユ... [詳しくはこちら]

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)


2009年05月09日


CakePHP では Sitemap を吐き出すのも簡単なんだぜ

スパイスラボ神部です。


もしかしてと思って調べてみたら、CakePHP で Sitemap.org 形式の Sitemap を出力するの、えらい簡単でした!ということで、さらっとエントリまとめて置こうと思います。


-初心者向けが好きだ! - Favorites!


でもめっちゃ簡単ってわけではないです


ここにほとんど答えが書いてあるので、読解して自分のサイト用にアレンジしてみましょう。


-Mental Ramblings Blog Automated Sitemap Generation With CakePHP 1.2


中身は


1.出力用のロジックとして、sitemaps_controller.php をつくる


※ここでモデル名は自分の物に変更。findAll の引数も適当に。


2.アウトプット用の雛形として、xml/sitemap.ctpをつくる


※ここもモデル名を調整。


3./app/config/routes.php に、下記を追加する


Router::connect('/sitemap.xml', array('controller' => 'sitemaps', 'action' => 'sitemap'));


という感じで、あとはサイトルートの sitemap.xml にアクセスすれば、routes.php がなんとかしてくれます。


あと、こんなページもありましたが、こっちはよくわからない感じ。


-David Golding : davidgolding.net

 

ブックマークに追加する

トラックバック

このエントリーのトラックバックURL:
http://www.spicebox.jp/cgi-bin/mt/mt-tb.cgi/1019

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)


2009年05月08日


CakePHP のキャッシュでサクサクでござる

スパイスラボ神部です。


これまで積極的に使ってこなかった CakePHP のキャッシュ。


しかし貧弱なサーバを使うときにサイトルートが10秒出てこなくコレは困った。


みたいなときに、いよいよ出番がやってきました。


-キャッシュが好きだ! - Favorites!


Cache を有効にする


まずは設定で Cache を有効にします。1.1 と 1.2 で指定方法が違う上に、検索すると 1.1 の方ばかり出てくるので要注意です。


* 1.1系 - define ('CACHE_CHECK', true);

* 1.2系 - Configure::write('Cache.check', true);


2008-03-15 - ざ・わーるど.jp@はてな より)


公式マニュアルも、1.1 の設定しか載っていないなぁ・・・


-19.2. 動作の解説


設定方法


コントローラにも設定追加。


-sylvan-l.net - cakephp1.2でcacheを使う


効果のほど


-CakePHP のおいしい食べ方: キャッシュ機構を使うと速度が数倍に


サイトルートをキャッシュさせるには?


さて、サイトルートには自作のコントローラが(普通は)ありません。なので、cake/ ディレクトリ以下の pages_controller をいじってみましょう。


var $helpers = array('Html','Cache');

var $cacheAction = 300;


こんな感じでいいみたいです。


5/12追記


なんだかこんな気になる記事が…


-CakePHP cache()はCache::write()に | Shin x blog


いまの簡単サウサクさを維持してほしいところですが、いろいろと難しいのかもですね。


こちらもあわせて。


-cakePHPのcssキャッシュが効きすぎる件の対応策 « わすれないように.

 

ブックマークに追加する

トラックバック

このエントリーのトラックバックURL:
http://www.spicebox.jp/cgi-bin/mt/mt-tb.cgi/1015

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)


2009年05月07日


さくらインターネットで CakePHP+PEAR

スパイスラボ神部です。


さくらインターネットで CakePHP+PEARする方法についてのかんたんなまとめです。


さくらインターネットで CakePHP+PEAR


下記の3つが参考になります。


CakePHP のさくらインターネットへのインストールについて


-"さくらインターネットで404エラー" フォーラム - CakePHP Users in Japan


あと、さくらインターネットに限らずだけど AuthComponent でのリダイレクトが core.php の Security が high だとループすることがあるので注意。middle とかにしてみましょう。このへんはちょっと謎。


PEAR のさくらインターネットへのインストールについて


-コマンドプロンプトを使わないで、さくらへPEARをインストール(Go-PEAR使用) (masha.webTechLog)


-小山太郎.com » Blog Archive » さくらインターネットでPEARをインストール


追記:created と modified が保存されない


さくらインターネットに設置することが原因か、MySQL のデフォルト設定に問題があるのか、created と modified が 00:00:00 になってしまう現象が起きました。本来は MySQL 側でデフォルト値を NULL とすれば解決するらしいのですが、さくらインターネット上では


$this->data['User']['created'] = null;
$this->data['User']['modified'] = null;


などとする必要がありました。


参考:"createdとmodifiedが記録されない?" フォーラム - CakePHP Users in Japan


まとめ


非常にわかりやすくまとまっているので、これだけです(笑)


追加で気になるところがあれば、追記したいと思います。


 

ブックマークに追加する

トラックバック

このエントリーのトラックバックURL:
http://www.spicebox.jp/cgi-bin/mt/mt-tb.cgi/1013

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)


2009年04月26日


CakePHPでらくちんプルダウン(for 1.2)

スパイスラボ神部です。


CakePHP を使っていると、本当にデータベースのやりとりが楽になるので、個人的には MySQL とお話するときのコンシェルジュ、もしくは同時通訳のように使っています。そうなると、もっとデータをデータベースを使って管理するようになりたくなります。たとえば、これテキストで管理していたデータをデータベースに入れて利用するなど。


Web のフォームでプルダウンを実施する際などは、それらのプルダウンを動的に管理したいときこれまで原始的に CVS を使ったりしていましたが、今では MySQL を積極的に使うようにしています。さらに CakePHP 側でも、それらをプルダウンの項目として利用するための簡易な方法が用意されているので、ここで紹介します。


-プルダウンメニューが好きだ! - Favorites!


役に立つリソースと解説


簡単に言えば、


1.プルダウンにしたいデータをデータベースに格納


2.controller で Set::Combine などを使って仕込む


3.ビューで FormHelper を使ってプルダウンを表示


という流れです。これらを実現するために、下記のリソースを見れば難しくありません。


-"selectプルダウン" フォーラム - CakePHP Users in Japan


-モデルの指定列からselectタグを作るのに便利な方法 - Writing Some Code


-『CakePHP』を使ってみる ~7~ CakePHP 1.2 でプルダウン、チェックボックス、ラジオで作る - ざ・わーるど.jp@はてな


echo $form->input('Post.pulldown', array('type' => 'select', 'options' => $list) );

 

ブックマークに追加する

トラックバック

このエントリーのトラックバックURL:
http://www.spicebox.jp/cgi-bin/mt/mt-tb.cgi/992

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)


2009年03月06日


CakePHP 1.2 の Basic 認証設定があまりにも簡単すぎる

スパイスラボ神部です。


ちょっと前から悩んでいたのですが、CakePHP でサイト開発をするとき、Basic 認証はどうすればいいのか…という問題があります。CakePHP の Routing と、Apache のディレクトリ構造とは一対一対応ではないため、たとえば特定のコントローラ以下にのみ認証をかけたい場合などは、どこにどうやって .htaceess を置けばいいのか、と言うことに悩んでしまいます。


そこで CakePHP のフォーラムに相談してみたところ、解決方法があまりにも簡単でスマートなことに驚いてしまいました。


-Apacheが好きだ! - Favorites!


Security コンポーネントと beforFilter の活用


解決方法で提示されていたのが、こちらのブログエントリ。


-CakePHPでBasic認証対応ページを作る - blog.katsuma.tv


こちらにあるとおり、まず controller 冒頭で、


var $components = array('Security');


を設定し、次に beforeFilter 内で


$this->Security->loginOptions = array('type'=>'basic');
$this->Security->loginUsers = array(''=>'');
$this->Security->requireLogin('*');


と指定するだけ。* は全アクションを指定するワイルドカードのようです。


あまりにも簡単なので、ちょっと応用してみましょう。


サイトルートに Basic 認証をかけるには?


ここでちょっと悩むのが、home.ctp など、Router.php で密かに pages_controller を通じて呼ばれているページ群。しかしこれも /cake/libs/controller/pages_controller.php の中に同様に設定するだけ。


以前、【CakePHP】ちょっと考えてしまいがちな home.ctp のレイアウト変更 ( ラボブログ ) の記事のときにはページごとにレイアウトを指定したかったのでこの方法ではだめでしたが、今回は素直に pages_controller のお世話になりました。


これで


・サイトルートは認証をかける


・コントローラA以下には認証をかける(サイトルートと別のアカウントも可能)


・コントローラB以下はフリーアクセス


ということができ、通常の .htaccess によるディレクトリ以下の一斉指定よりも柔軟な運用ができるのではないかと思います。


この情報は参考になりましたか?


追記:ちょっと心配なこと


この指定方法の場合、htpassword を使うときと違い、パスワードが平文です。ここはちょっと心配なので、引き続き別の指定方法(define を使うとか?)でソースコードから隠蔽できないかフォーラムに引き続き相談してみようと覆います。


追記2:アクションリストの指定の方法


-cakePHP1.2でBasic認証|TONTTU.NET 群馬県 太田市


こちらに、アクションのリストを指定する方法や、Basic 認証のときに出せるメッセージなどを調整できます。

 

ブックマークに追加する

トラックバック

このエントリーのトラックバックURL:
http://www.spicebox.jp/cgi-bin/mt/mt-tb.cgi/891

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)


2009年02月25日


CakePHP で、DB 削除にまつわるミニ Tips

スパイスラボ神部です。


今日もちょっとだけ、CakePHP に関する小さな Tips を残しておきます。


削除が好きだ! - Favorites!


DB から削除するときの基本メソッド


delete() を使う


$Model->delete() を使います。引数は ID。


-『CakePHP』を使ってみる ~6~ 1.2で delete が動かなかった - ざ・わーるど.jp@はてな


※もちろん、1.2 正式版では動いてます。


まとめて削除するには


deleteAll() を使う


deleteAll() で $condition で条件設定すると、まとめて削除できるみたいです。ちょっと怖いですけどね。


-CakePHP 1.2 の deleteAll | Sun Limited Mt.


saveAll() なんて関数もあるようです。(このエントリとは)逆にそっちが気になります。


おまけの FormHelper、JavaScript Tips


Form Helper で GET を指定させたい


FormHelper で get を使いたいときは、array の引数に 'metod'=>'get' ではなく、'type'=>'get' とするようです。


フォームの作成 :: フォーム :: 主要なヘルパー :: マニュアル :: 1.2 Collection :: The Cookbook


JavaScript で確認ダイアログを出したい


window.confirm()


という、何とも便利なメソッドがあるようです。


-JavaScript/ウィンドウ/確認ダイアログを表示する - TAG index Webサイト


この情報は参考になりましたか?

 


ブックマークに追加する

トラックバック

このエントリーのトラックバックURL:
http://www.spicebox.jp/cgi-bin/mt/mt-tb.cgi/869

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)


2009年02月24日


CakePHP のちいさな Tips 2つ

スパイスラボ神部です。


メモがわりに、CakePHP の Tips を二つだけ書いておきます。


-SQLが好きだ! - Favorites!


レコード件数の取得方法


-レコード件数の取得方法 | CakePHP入門


シンプルだけど案外知らないこと。


BETWEEN の使い方


-"1.2RCのLIKE,BETWEEN,INの書き方まとめ" フォーラム - CakePHP Users in Japan


$conditions の中身に ? を入れるとか初耳だ。


ちなみに全然違うリソースなのに id:j_oki が同日に1ブクマずつとかしてるとか不思議だ。


こちらは clipmail 用の調べ物でしたが、同じようなものつくっていたところだったのかな。

 

ブックマークに追加する

トラックバック

このエントリーのトラックバックURL:
http://www.spicebox.jp/cgi-bin/mt/mt-tb.cgi/865

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)


2009年02月18日


メールでかんたんURL共有「clipmail」のオープンβが開始

clipmailtop.png


スパイスラボ神部です。


実はこのブログでこの件に触れるのは初めてかもしれませんが、昨年から CakePHP をプラットフォームに使った新たなプロダクト "clipmail" の開発をラボで実施してきました。


詳しい経緯は省くとして、今日からその新サービス "clipmail" のオープンβがはじまりました。このサービスはそもそも smashmedia の河野さんのブログのつぶやきにはじまり、その後邂逅をへて今回のベータテストの開始となりました。


-clipmail、オープンベータテスト開始 | smashmedia


こちらの方、まだまだ至らない点もありますが、最終的には万人受けツールというよりは玄人向けの”プロツール"になっていくものと思います。Web でも道具にこだわりを持ちたいという方、このクリップ支援サービスにぜひ注目していただければと思います。


-clipmailが好きだ! - Favorites!


オープンβ参加にあたってのご注意とお願い


今回はオープンベータということで、フィーチャーフリーズは完了しています。なので、「ここをこうしたら」とか「ここをこうしてほしい」という機能のリクエストや要望には基本は対応は考えていません。導線のわかりやすさや文言のわかりにくさがないかどうか見ていただければと思います。


またフィードバック先は上記河野さんのブログエントリのコメント覧となっておりますので、こちらのエントリには書き込みされないよう、ご注意ください。スパム判定を厳しくしてありますので、折角書き込んでも運営者の目に触れないまま削除されてしまう可能性もありますので。

 

ブックマークに追加する

トラックバック

このエントリーのトラックバックURL:
http://www.spicebox.jp/cgi-bin/mt/mt-tb.cgi/850

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)



CakePHP ではてブみたいな長期ログインレスなサービスを実装するには?

スパイスラボ神部です。


前回のブックマークレットのエントリ とも関係あるのですが、Web サービスに1度ログインさせて、そこから長期にわたってログインさせておくためのノウハウというのは結構無いような気がします。とりあえず目の前の会員認証のところを解決する部分について言及しているものはたくさんあるのですが、それらを長期的に運用するにあたっては、あとからわかる問題でもあり、対応が難しかったりもします。


自分は CakePHP を使って実装していることもあり、そのあたりの情報を探したのですがそちらもあまり見あたりません。そうなるとソースコードをあたるしかないのですが、せっかくフレームワークを使っているのにできればソースコードを直接あたりたくはない!というちょっと後ろ向きな姿勢で、ブックマークレットと長期ログインしっぱなしなサービスの設計について考えてみたいと思います。


-ブックマークレットが好きだ! - Favorites!


今回何が問題か


今回何が問題かということを最初に書いておくと、自動ログインさせるさい、自動ログインだけではなく、そのときのリクエスト URL も引っ張り回さなければいけないというところが大きな壁になっています。


そうなんです。自動ログインさせるところは全然簡単なのですが、


・その状態を長期保持させること(セキュリティ的な問題は考慮しつつ)


・自動ログインの課程で、ログイン前のリクエストURLの情報を失うことなくログイン処理を済ませ、またもとのリクエストURLに戻すこと


が必要です。


はてなブックマークでは、とりあえずログインしたらブックマークしたページのURLを失ってしまった、ということも最近体感したこともないので、おそらくはそのへんうまく撮り回していますが、CakePHP の場合はどのようにそのような挙動を実装すべきだろうか、というところが、今回の話題です。


原因の分析


ちょっと自分では追い切れなかったので、CakePHP のフォーラムに助けを求めてみました。


-"自動ログインさせたときの Request_URL の取り回し" フォーラム - CakePHP Users in Japan


対策のシナリオ・・・解決しました!


すると MASA-P さんより、auth.php の関係ありそうな場所をご指摘いただく。周辺のソースコードより、このような方法 にて一時的に元の $url の値を待避させることで対応出来ました。


ちなみに、redgasuki さんからも別の解決案をご呈示いただきました。beforeFilter の中で自動ログインさせるって感じでしょうか。こちらの方がスマートなので、次回はぜひこちらでやってみようと思います。


関連ありそうな情報


自動ログインも含め、関係ありそうな情報をひとつずつ拾っていきます。


-CakePHP Note:自動ログインその2


-"amazonみたいな自動ログイン 初心者向け(?)" フォーラム - CakePHP Users in Japan


-CakePHP Passportコンポーネント Identifyの実装とAuthの分離|Cryptrial


その他もろもろ


-phaのPHPとか自習室 - はてな自習室


-クッキー(Cookie) :: 主要なコンポーネント :: マニュアル :: 1.2 Collection :: The Cookbook


-「情報を保存する」オプションを有効にする(CakePHP修行 #34) - IDEA*IDEA ~ 百式管理人のライフハックブログ ~


ブログ内関連エントリ


-CakePHP の自動ログインの実装について調べてみました。 ( ラボブログ )


まとめ

ということで、今回の問題は無事解決しました!


auth.php の流れも追えたので、今までちょっとちんぷんかんぷんだった AuthComponent の処理も少しわかった気がします。それから Cake の処理上では $controller なんて変数もあるんですね。


なにかの参考になりましたら。

 

ブックマークに追加する

トラックバック

このエントリーのトラックバックURL:
http://www.spicebox.jp/cgi-bin/mt/mt-tb.cgi/844

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)


2009年01月22日


「CakePHPの何か」の安藤さんにお会いしてきました

スパイスラボ神部です。


ちょっとお声がけしていただき、「CakePHP の何か」の安藤祐介さんらとお話をさせていただく機会が有りました。安藤さんは共著での著書もありますね。


-CakePHPが好きだ! - Favorites!


CakePHP は世界に楽しみを供給する?


いろいろなお話をさせていただきましたが、特に CakePHP で Fun を創造する話が印象に残っています。ぶっちゃけ、どのフレームワークを使ってもできることはそんなに変わるモノではないのだけれども、そこで Cake を選んで何をやっていくかとか、それぞれのフレームワークの根底に流れるポリシーはどんなものか、という、中身の話です。


ちょっと話は飛びますが、イルカは野生のイルカも含め様々な遊びをします。人間も同様に、いろいろな楽しみを求めていることには違いありません。


しかしその遊びには国境があるのが常です。オリンピックやアメリカ大統領選挙などの大きな「お祭り」の時には国境を越えて「遊び」に参加出来ますか、日常的な遊びの供給源はそれぞれの文化ローカルでドメスティックな世界で行われがちです。


少し話をせばめて、コンシューマーゲームであるとか Web のサービスに着目したときも、それらはなかなか国境を越えられません。しかし Web の時代を迎えた今こそ、そんな国境を飛び越えて便利や楽しみを共有していけるべきなのでは、ということ。そのための手段として、もしかしたら CakePHP は使えるかもしれないね、と。


所詮フレームワークなので、symfony でも Ruby on Rails でも出来ることは同じなのですが、CakePHPカンファレンス東京 に来ていた Garret 氏も、『CakePHP は単なるフレームワークではなく、僕らの共通言語だ』的な事を言っていたので、そう言う意味ではそんな風に向かっていくのも悪くないし、関わる上では楽しい気がしています。


また何かの機会があれば


毎日いろいろな案件で CakePHP を使ってますが、どうしても孤独になりがちです。そんなときにこうしたお話の機会やコミュニティの存在が身近に感じられると、より心強いような気がします。今のところ今すぐなにかをお手伝いできるということはなさそうですが、ぜひまた機会があれば楽しい時間を共有できたらいいな、と思います。


そのほか話した気がすること


・「面白いこと」が大事(退屈な日常を蹴飛ばそう的に)


・東京カンファレンスに Garret が来てくれたことはよかった


・NYでも別の Cake 開発者とごはんたべた


・日本各地に Cake ユーザがいて嬉しい


・Ruby は Ruby on Rails で作っただけでもプレス材料が生まれることがある


・日本人は検索好き?終電in だか 終電jpだか


・100%オレンジジュース検索とかピアノを貸してくれるカフェ検索とか


・Progression という Flash フレームワークが気になります


・うちの会社(スパイスボックス)に来た年賀状の中には「今年は CakePHP の年にしましょう!」というメッセージが書かれていたものがあった


 

ブックマークに追加する

トラックバック

このエントリーのトラックバックURL:
http://www.spicebox.jp/cgi-bin/mt/mt-tb.cgi/769

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)


2009年01月21日


CakePHP とかコールバック関数とか

スパイスラボ神部です。


小ネタですけど、二つほど。


-コールバック関数が好きだ! - Favorites!


CakePHP で "SQL Error: 1062: Duplicate entry" とかに遭遇したとき

CakePHP でデータベースに duplicate と言われ、edit で UPDATE できなかったとき


ID が抜けちゃってる可能性があるので、


function edit($id = null){
}


で ID を受け取り、たとえば Users テーブルだった場合は


$this->data['User']['id'] = $id;
$this->User->save($this->data['User']);

とすれば、その id のカラムを更新してくれる…はず。


配列から空白の項目を取り除きたい


array_fillter とコールバック関数を組み合わせるのが良いようです。


-配列要素の削除方法について - PHPプロ!Q&A掲示板


ご参考まで。

 

ブックマークに追加する

トラックバック

このエントリーのトラックバックURL:
http://www.spicebox.jp/cgi-bin/mt/mt-tb.cgi/750

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)


2009年01月19日


CakePHP で DB 操作のエラーに対してメッセージを出す

スパイスラボ神部です。


CakePHP で、DB に対して SQL を投げたときのエラーをキャッチするには onError を使えばいいようです。各場所は、現在のコントローラに対応するモデルの中。


例えば users というDBテーブルに対するモデルはこんな感じ。

<?php


//Model
class User extends AppModel {


var $name = 'User';


function onError(){
echo "DBエラーです";
exit;
}

}
?>


モデルでは validation などもできるそうなのでもっともっと積極的に使っていきたいと思いました。

 

ブックマークに追加する

トラックバック

このエントリーのトラックバックURL:
http://www.spicebox.jp/cgi-bin/mt/mt-tb.cgi/740

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)



CakePHP の自動ログインの実装について調べてみました。

スパイスラボ神部です。


改めて、CakePHP の自動ログインの実装について調べてみました。


-自動ログインが好きだ! - Favorites!


自動ログインさせるためには、Passports テーブルを作って活用しよう!


フォームのオートフィルに関しては、Cookie による保存に加え最近はブラウザ自身がフォームマネージャを備えていますが、自動ログインとなるとオートフィルだけではなくて、ログインチェックとその後のページ遷移も面倒をみてあげなくてはいけないのがポイントです。


方法のひとつとしてユーザテーブルとは別途、Passport を格納するようなテーブルを用意市、一定期間自動ログインに関する「パスポート」を発行するという方法があるようです。


具体的なやり方について調べてみる


-$user=$this->Auth->user(); $this->__passportDelete($user); ・・・ここが一番分かりました。


-CakePHPのAuthComponent実装+ブラウザ閉じても認証保持 | 陽のあたらない美術館 -人間再生-


-"amazonみたいな自動ログイン 初心者向け(?)" フォーラム - CakePHP Users in Japan


パスワードの再入力確認やメールでの通知をかんたんに


-【CakePHP】AuthComponentについてのまとめ その2【ちょっとしたコツ編】 | ねねとまつの小部屋 ・・・ついでにこれも。$this->Auth->password($pass) で $pass をハッシュ化できます。確認用パスワードとの一致確認などに使えます。


なお、上記では Param という別のモデルで受け取ることを提案していますが、単に $data['User']['password'] となっているところを $data['User']['password1'] とするだけで暗号化は解除されます。さらに確認入力を $data['User']['password2'] としすれば比較も簡単ですね。 DBに格納するときは、$this->Auth->password($data['User']['password1']) としてハッシュ化することも忘れないように気をつけたいです。


この情報は役に立ちましたか?

 

ブックマークに追加する

トラックバック

このエントリーのトラックバックURL:
http://www.spicebox.jp/cgi-bin/mt/mt-tb.cgi/739

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)


2009年01月06日


CakePHP で $this->log がうまく動かないのはなんでなんだぜ

スパイスラボ神部です。


» cakePHP の $this->log() が素敵すぎる >> Neo Inspirations


このエントリを一年近く前に見て以来、素敵に $this->log を使いこなしたいと思っているのに、/app/tmp/logs/debug.log にうまくログがたまるときと層でないときがあるのはなぜなんだぜ。


-ロギングが好きだ! - Favorites!


原因を推測してみる


メッセージが毎回同じだと追記されないのかも


メッセージが同じでもオプションとかあるのかな。それか出力行に時刻でも入れてみるか。


LOG_DEBUG は define で定義する必要あり?


bootstrap.php あたりで LOG_DEBUG などを定義する必要があるのでしょうか。


識者が見ていらしたらコメント求む!
 

追記


CakePHP ログ出力 | Sun Limited Mt.


こちらが参考になりそう。しかし、こちらを読む限りでも $this->log でいつでもどこでも出力できそうなものだが、CakeConsole の中で読んでも app/logs/ 以下になにも出てこないなぁ。なんでだろう。

 

ブックマークに追加する

トラックバック

このエントリーのトラックバックURL:
http://www.spicebox.jp/cgi-bin/mt/mt-tb.cgi/703

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)


2008年12月21日


CakePHP の bake の良さってなんなのかなぁ

スパイスラボ神部です。


ちまちまと view に formHelper のコードを書いていて嫌になってしまったので、bake でも使ってみようかと思い、CakePHP の bake の良さってなんなのかなぁ、ということを漠然と調べてみようと思います。


-CakePHPが好きだ! - Favorites!


とりあえず Gooogle 10本勝負


よくわからないときには、とりあえず Google の上から見てみます。この吟味の部分てかなり人間の知恵が総動員さえるプロセスなので、例えばGoogle が次世代ソーシャルブックマークつくって、検索結果に手書きで赤ペン入れたりするようにしてそれがページランクにも1%くらい影響与えるようになったりすると思うんですけどね。と余談はさておき。


検索クエリは「CakePHP bake -scaffold」です。scaffold の話題は今必要ないので。


CakePHPまとめ@Wiki - bake


とりあえず手順ですね。管理者の方はさいきん Akelos という別のフレームワークに移ってしまったようです。


CakePHP Users in Japan Wiki - bake.phpの使用


付属のbake.phpを使用すると勝手にファイルを作成してくれます。


まあ、なんとなくそういうものだという理解はあるなぁ。


floatingdays: CakePHP 1.2で bakeするメモ


app のパス指定の話が重要かも知れない。


CakePHP Note:Bakeによるコードの生成


こっちでは cake コマンドのパスの話が出ている。しかしこれ beta 版では指定しにくいなぁ。


CakePHP1.2でbake - Do you CakePHP はてな


modelとcontrollerはdatabase.phpがなくても出力されますが、viewだけはデータベースに接続可能な状態でないと出力できません。


へ-。


Webプログラミングに関するメモ: bake.php使ってみる(2)


お、むしろ database.php の話。ここも対話的に生成できたんですね。展開したあとにちゃちゃっとやっちゃいたいものです。


CakePHPのbake.phpドはまり | 眠る開発屋blog


そうそう、decorate.php ってのもあるんですよね。これ違いは何なんだろ。


-decorate.php bake.php 違い - Google 検索


どうやら bake.php を拡張したものらしい。。


まあ、まずは db 定義を先にかっちりやって bake してみるか。


まだ8エントリしか評価してないけど、とりあえずこのへんで。

 

ブックマークに追加する

トラックバック

このエントリーのトラックバックURL:
http://www.spicebox.jp/cgi-bin/mt/mt-tb.cgi/690

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)


2008年12月16日


【CakePHP】ちょっと考えてしまいがちな home.ctp のレイアウト変更

スパイスラボ神部です。


CakePHP でちょっと考え込んでしまいがちなサイトルートのテンプレートでもある home.ctp のレイアウト変更。どうやって指定してあげたらいいか、ここではちょっと自分の経験則について書いてみます。


CakePHPが好きだ! - Favorites!


CakePHP 1.2 RC3 の場合


あくまで CakePHP 1.2 RC3 の場合ですが、サイトルートの表示にはいくつかの(とりあえず初心者には目に見えない)手順を踏んで表示されているようです。


たとえば http://cakephp.example.com/ という URL が CakePHP のインストールディレクトリをサイトルートとしてマップしていたとします。このとき、CakePHP は /app/config/routes.php に従って、/cake/libs/controller/pages_controller.php の display() メソッドを使ってコンテンツを表示しようとします。


この際、表示のテンプレートとして使われるのは /app/views/pages/home.ctp になります。さらに、/app/views/layouts/default.ctp があれば、通常は $contents_for_layout の中身として home.ctp の内容が合成されて表示されるはずです。。


しかし、home.ctp と組み合わせるものとしてここで default.ctp を使いたくない場合はどうしたらいいのでしょうか?(たとえばトップページのみに使用したい特別なテンプレートを表示したい場合など)


通常であればレイアウトファイルの変更は難しくなく、コントローラ内の、URL からマップされるページ名のメソッド(例えば index() といった感じの)の中に


$this->layout = "default2"


などと書いておけば、/app/views/layouts/default.ctp のかわりに /app/views/layouts/default2.ctp を使ってくれます。


しかしこここで問題が。/app/controllers/ 以下にはないコントローラである /cake/libs/controller/pages_controller.php の display() メソッドに同様に書いても動作しないのです。これでは常に default.ctp のレイアウトのみしか指定できないことになり、困ってしまいます。


解決方法はシンプル


ちょっと乱暴ですが、次のやりかたで解決できています。home.ctp の冒頭に、次のように書いてしまいます。


<?php


$this->layout = "default2";
$this->pageTitle = "This is pageTitle";

?$gt;


/cake/libs/controller/pages_controller.php に beforeFilter をつけるなども試してみたいところですが、これでは /pages/* の全てに適用されてしまうのでうまくありません。当座の策としては、まずはお手軽に home.ctp の冒頭でレイアウトファイルを指定してしまうのがよいのではないでしょうか。今回使用するレイアウトファイルに $title_for_layout を仕込んでいれば、いっしょに $this->pageTitle でタイトルに設定したいテキストを追記しておくのもよいかもしれません。


実際はどういう順番で動いているのか分かりませんが、テンプレートファイルの home.ctp を読み込む際に $this->layout の値が取り込まれているのなら納得できますね。


このように、home.ctp と組み合わせる /app/views/layout 以下のファイルをもっとスマートに指定する方法、どこかで詳しく解説されていないでしょうかね。


その他のエントリでの pages_contoller まわりの既述


新規作成すると上書き


-CakePHP / DirectryIndexっぽいことを実現|とんでもブログ ~ プログラマのWeb開発メモ (PHP, CSS, JavaScript)


pages_controller をコピーするのも賢いかも?


-トップページのカスタマイズ方法 | CakePHP入門


静的ページをアジャイルにつくるときにも便利


-CakePHP 静的なページの作成方法 | Sun Limited Mt.


このページによると「サイトルートにあたる / 」は、router.php のチカラも借りて「/pages/home/」を表示している似すぎないと言うことがよくわかりますね。実際に /pages/home/ にアクセスしてもサイトルートと同じページを見ることが出来ます。

 

ブックマークに追加する

トラックバック

このエントリーのトラックバックURL:
http://www.spicebox.jp/cgi-bin/mt/mt-tb.cgi/679

コメント ( 1 )

はじめまして。

トップページのデザインに悩んでいたので、参考になりました。
細かいことで申し訳ありませんが、誤字と思われるものを見つけたのでお知らせします。

--------------------------------------------------
しかし、home.ctp と組み合わせるものとしてここで default.ctp を使いたくない場合はどうしたらいいのでしょうか?(たとえばトップページのみに使用したい特別なテンプレートを夭死したい場合など)
--------------------------------------------------
『夭死』ではなく『表示』ではないでしょうか?

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)


2008年11月11日


CakePHP でタグを使ったサービスをつくりたい


by Toby Maloy


スパイスラボ神部です。


Web 2.0 時代なのに・・・なのに、タグクラウドとかって結構作るノウハウが転がってないですよね。そのへんどうしたらいいのかなーということを、ちょっと真面目に調べてみようと思います。


まずとっかかりはここから。


articlesとtagsの hasAndBelongsToMany を使う


「タグ機能をつけたい」 フォーラム - CakePHP Users in Japan


つぎにこのへん。


6.4. アソシエーション


HABTM(hasAndBelongsToMany)について詳しく


そもそも HABTM(はびたむ)という要素が大事なようです。


-The Cookbook :: 1.2 Collection :: マニュアル :: CakePHPによる開発 :: モデル :: 関連: モデルを結びつける :: hasAndBelongsToMany (HABTM)


-CakePHP HABTMをもっと強力にする with Model | エクサイト


-CakePHP まとめ:HABTM (はびたむ?) mixiで言うマイミクやコミュニテみたいなデータの関係


-CakePHPでHABTMを使う際の「with」と「joinTable」について - Sticker@Something


-toyosystem | CakePHP::HABTMの編集画面を作る ※1.1の話


もちょっと具体的に


-snapz  CakePHP hasAndBelongsToMany 編・・・これがわかりやすいかな?


-PHPのテクメモ・・・上記エントリの元ネタ


-cakephp::アソシエーションについて(hasAndBelongsToMany):High5.log~Webとか~・・・繰り返しの説明だけど、わかりやすい図。


-CakePHPのHasAndBelongsToManyを使う - 子だぬきの技術習得ノート


まだまだ調査

-» CakePHP hasAndBelongsToMany でページング(SQL LIMIT)とかを設定する >> Neo Inspirations・・・こちらがちょっと難しい


-ニートから幸せなお金持ちへ ~成功本を信じて~ HasAndBelongsToManyは名前が長くて大変だ。


-ヽ( ・∀・)ノくまくまー(2006-01-27)


しかし、フォークソノミーまでになかなかつながらないですね.


継続調査中


なかなかすぐにはわからないので、続々と調べてゆこうと思います。


まずは、チュートリアルに従ってサンプルを組んでみましょうかね。



 

ブックマークに追加する

トラックバック

このエントリーのトラックバックURL:
http://www.spicebox.jp/cgi-bin/mt/mt-tb.cgi/566

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)



CakePHP の設定ファイルってどうするの?

スパイスラボ神部です。


ある環境で開発したアプリを別の環境にうつすときは、ファイルパスなどが変わりますよね。


そしたらこちらに答えがありました。


CakePHPのつまったところを書いていく3 - phaのPHPとか自習室 - はてな自習室


アプリ全体→app/config/bootstrap.php

コントローラ→app/app_controller.php

モデル→app/app_model.php


ふーん、なるほど。


下の方に書いてあるページングのお話も興味深いですw


もうちょっとだけスマートなやり方


この辺に書いてあるのは、もうちょっとスマートなやり方かも知れません。const.php という別ファイルにまとめると、bootstrap.php とはごっちゃになりますね。


-cakePHPで共通変数の定義 - Love Tokyo

 

ブックマークに追加する

トラックバック

このエントリーのトラックバックURL:
http://www.spicebox.jp/cgi-bin/mt/mt-tb.cgi/565

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)


2008年10月27日


CakePHP 1.2 でモバイルサイトを構築する最初の手順まとめ

スパイスラボ神部です。


CakePHP 1.2 でモバイルサイトを構築するための資料を改めて集めてみます。フェイス女学園ではオレオレ仕様でやってたのですが、今回はちゃんと Cake のお作法に則ったものを実装してみようと思います。


[cakePHP1.2]モバイルサイトとPCの切り分け その1: PHPを使ったWebサイト構築 備忘録


cake1.1系ではwebserviceが使えたが、1.2系では使えなくなっているので、prefixを使用する。


[cakePHP1.2]モバイルサイトとPCの切り分け その2: PHPを使ったWebサイト構築 備忘録


CakePHP 携帯専用サイトを作成する | Sun Limited Mt.


ke-tai.org > Blog Archive > CakePHPで3キャリア対応の絵文字を表示するためのコンポーネント


とりあえずこんなところでしょうか。


今後について


少し調べた限りでは、結局キャリアごとのテンプレートの出し分けってそんなにノウハウ見あたらないんだよなぁ~。自己流のものを公開してみようかどうしようか。


そもそも、モバイル対応というとキャリアすら意識せず、なんか Compact な HTML を出すだけで終わっている例が多い気がするのです。


古いかも資料

このへんは今はもうちょっと古いのかな?


CakePHP 携帯用ビューを表示する | Shin x blog


追記


CakePHP 1.2 でモバイルサイトを構築する手順まとめ:phpspot開発日誌


で紹介されて一気にブックマーク数が増加・・・まじめに追加コンテンツを検討します。いましばらくお待ちください。

 

ブックマークに追加する

トラックバック

このエントリーのトラックバックURL:
http://www.spicebox.jp/cgi-bin/mt/mt-tb.cgi/540

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)



CakePHP カンファレンス東京で「フェイス女学園」が紹介されました!

cake.jpg
Photo by Ryuji Kanbe


スパイスラボ神部です。


週末の土曜、デジタルハリウッドお茶の水校で開催された CakePHPカンファレンス東京 に参加してきました!実は最近のラボのサービスは結構な確率で CakePHP なので、時間が無いなか足を運んでみました。午後から駆けつけたのですが、CakePHP の開発者でありプロジェクトマネージャでもある Garrett J. Woodworth 氏のお話も聞け、その後も興味深いセッションやライトニングトークが続き、非常に満足感のあるカンファレンスでした。


「フェイス女学園」が2008年の事例として紹介!


どうやら後で懇親会で聞いた話では、なんと冒頭の id:yandod さんの基調講演で、弊社の「フェイス女学園」を2008年の事例として大きく取り上げていただけたようで驚きました!(ありがとうございます!!!)


-CakePHPカンファレンス東京 終了 - yandodの日記


ちなみに発表資料の28ページに掲載されているので、こちらのオンライン参加レポートと合わせて読まれると様子が分かると思います-> 本を読む CakePHPカンファレンス東京」にオンライン参加


懇親会にて Garrett 氏にフェイス女学園をプレゼン


さて、その懇親会では、先ほども書きました今回招聘された本家の開発者&プロジェクトマネージャ Garrett J. Woodworth 氏ともお話する事が出来ました。私は最初事例として紹介されていることを知らなかったので「こういうの作ったよ」と英語で話しかけるのもこわごわだったのですが、おかげさまで向こうもあらかじめご存じだったので話がはずみました!


実際にその場で「フェイス女学園」のモバイル版を使って Garrett 氏のお顔を診断させていただいたりして、またいろいろコメントもいただけて良かったです。彼に説明したのは、フェイス女学園の実装に CakePHP を選んだことでモバイル版の3キャリア出し分けが容易に出来たこと、一人での開発を捌くさいに非常に助けになったことなどを感謝と共にお話しました。


一方 Garrett 氏からはサイトの機能や(あしらいという意味での)デザインの出来映えも素晴らしく、顔診断のレスポンスも即座に返ってくるので 'Perfect' だという言葉をいただき、これは是非一緒にフェイス女学園を制作してくれたチームのメンバーと共有しなければ!ってくらい、前向きにコメントもらえて、なんだかいろんな意味で「やってよかったな」と思える出来事でした。


「フェイス女学園の実装に CakePHP を選んだこと」については、第3回CakePHP勉強会 でお話させていただきましたので参考にしてください。


これからの CakePHP との関わり方を考える


ということで、今回の CakePHPカンファレンス東京 は自分にとっては非常に有意義なものとなりました。こういうカンファレンスに行っても、ただのお客さんで終わってしまうことも多いですから、今回は本当に楽しかったです。


この興奮が冷めないうちに、週が明けたら会場でお会いした皆様にちょっとずつコンタクトを取らさせていただこうと思います。前回の勉強会では懇親会に参加出来なかった分、今回の CakePHP カンファレンスでは一気に世界がひろがった気がしますし、広げていける気がしました!


あとなんかやっていて思うのですが、CakePHP が担える部分って、現在 Oracke や Akamai といった現在は超巨大なシステムが担っている部分を、スケールダウンさせつつスケーラビリティを持たせてリプレースさせたりするところにつながると思うのですよね。


現在も航空券のオンライン予約に使われたりとわりとクリティカルな部分にも使われているようですが、もっと実績や安定性が増してきた場合、ここのところをやれる人や、それをマネージ出来る会社(実際今も既に沢山あると思いますが)は、将来いろいろと可能性があるのかなと思いました。


この辺についても、また注意深く追いかけていければな、と思います!


(追記)


誰か Asiajin みたく日本の CakePHP 情報を海外に発信するブログをやった方がいいと思いました!(今回のライトニングトークの中身みたいな最新の取り組みについて深く理解出来る方がいれば)


とか書いてたら、CakePHP のおいしい食べ方: CakePHPカンファレンスに行ってきました。 でも全く同じことがw(かぶっちゃいました…)


今改めて見直される Asiajin の価値。やっぱすごいな-。


(追記2)


下記に参加出来なかった二次会のレポートが。


-Garrettさん、GUINNESSを片手にCakeを語る - abqarの日記


そうそう、確かに、Garrett 氏の人柄はすごい印象に残ったんですよね。カンファレンス中も「10年 PHP をやってきて、20年ソフトウェア開発をしてきた経験も踏まえて、必要な機能かそうでないかを決めている」なんてことを言っていた箇所があるように記憶しているのだけど、そういった経験、人生、直感、ノウハウ全てがプロジェクトに生きているんだなーと感じましたし、まさに今の CakePHP の舵取りを任せるのに最適な人なのではないかと思いました。


次に CakePHP のメリットを他のフレームワークと比較して言うとしたら「Garrett がいること。」なんて言ってしまっても、もしかしたら過言ではないのかも知れません。


ちなみに英会話に3年程通っていますが、今回ほど「英語やっていてよかった!」と思ったことはありませんでした(笑)


(追記3)


ライトニングトークの中でも超絶お勧め!今すぐ使ってみたいネタのブログを発見!


-ECWorks Blog(仮): 【CakePHP/Tplcutter】カンファレンス中のスライド公開します(CakeCon)


この問題「フェイス女学園」を作るときにまさに悩まされたんですよね。デザインと view のマージなんて死ぬほどやりたくない仕事だったし、とはいえ他に任せられる人もいなかったので、常に「これ何とかならないかなあぁ」って思っていましたので、これはぜひぜひ試してみたいと思います!

 

ブックマークに追加する

トラックバック

このエントリーのトラックバックURL:
http://www.spicebox.jp/cgi-bin/mt/mt-tb.cgi/538

この一覧は、次のエントリーを参照しています: CakePHP カンファレンス東京で「フェイス女学園」が紹介されました! :

» CakePHPカンファレンス東京:参加レポート 送信元 creazy photograph
CakePHPカンファレンス東京 events.php.gr.jp - Cak... [詳しくはこちら]

コメント ( 1 )

MASA-P :

超絶オススメいただいてありがとうございます(笑)。

「フェイス~」はかなりグラフィカルなサイトですから、手動マージは相当苦労されたんではないのでしょうか?
今からの適用は大変だと思うので、次回作にでも是非使ってやってください!

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)


2008年10月12日


「クローンミー!」クローンサイト公開サービス

スパイスラボ神部です。


今日は日曜日を利用して、こんなサイトを作ってみました。



これはどんどん作ったサービスを登録して、さらにそれを元ネタとしたサービスもどんどんリストに追加出来るサービスです!


・・・ちょっとわかりにくいですよね^^;ちょっとどころか相当。なんでこんなものを作ったかというと、それにはちょっと長めの理由があります。


最近ネタ不足なのか、ある人物がはてなブックマークのホットエントリを賑わせています。言わずもがな、IT業界のえがちゃんこと永上裕行さんですが、いきなり書かれても知らない方もいると思うので参考に流れを追っているエントリを紹介してみます。


-これはえがい人とgoodhomeの揉め事のまとめ


こんな感じで、基本的には揉め事ベースで話題を拡大していく(ことができる)タイプの人です。彼はこの後もいろいろやりながらだんだんとリファーを受ける範囲を拡大してきています。その中で気になったのがこのエントリ。


-もう一度「えがちゃん」の意味を考える時が来たのかもしれない


-えがちゃん事件を見ながら思ったこと。 - Automatons Hacking Guide


特にひとつめのエントリーでは、エガぺインター || エガい顔に落書きできるサービスに対抗して、東京理科大学サークル特許研究部 とっきょけんペインター(作成中)が出てきたり、様々なブックマークをミックス! - チャートマニアックスShur.in -わりと短いURL-というサービスを公開するという、まさにサービス公開がサービス公開を呼ぶという展開が巻き起こっているのです!


さらに二つ目のエントリでも、こんな名言が。


1.ギークやハッカーなら、サービスにはサービスで対抗しろ


そう!これ!これです!これを目に見える場所でバトルロワイヤル出来る場所を作ってみたかったんです。クローンミーは Web でサービスを作る開発者(特に小ネタ系)たちのコロシアムにしたいんです!


ま、別に敵対しあわなくても、健闘をたたえあったり友情を芽生えさせてくれちゃったりしてもいいわけですが、とにかくそんな風に、あるサービスの公開ががきっかけで人の交流や開発のための情報交換が盛んになったらいいな!それを支援するサービス作れないかな?と思って作ってみたのが、このクローンミーなわけです。


ほかにもいろいろ補足


これ以外にも、元々コードの書き方のお題を出して、それにレスポンスをしていく どう書く?org というのがあり、それの Web サービス版があったらいいじゃんという思いは前からありました。そういう意味では、はっきり言ってオマージュです。


ほかにも、(中編)今こそ Web サービス公開を起点としたビジネスモデルを考えるべきでは? (ラボブログ) でも書きましたように、はてブで紹介されたあとは、閑散としてしまうメディアがもっとリファーされる方法はないかと思い、はてブの2周目以降をつくりたい!という思いでもこのサービスを公開しました。もっともっとコンセプトがわかりやすいと、いいのかも知れませんけど・・・。


なんで OpenID なのにはてなのみ対応?


はてなブックマークってコメントを付ける場にはなっているけど、あんまり制作者に直接還元される仕組みが少ない気がするのですよね。なので、投げ銭を実装したいという意味ではてなオンリーにしてみました。現状ポイント送信まわりにはすっごく問題ありますので、順次改善して行ければと思います。


もしこのサービスが流行ったら?


なんかあまり流行する気がしないのですが、もしこれがめちゃくちゃ流行ることがあったら、ある野望があります。それは「ニコニコ動画のWeb サービス版を作りたい!」ということです。動画ならニコニコ動画で突っ込みが入るし、本なら Amazon がレビューしてくれるし、画像なら Pixiv で共有できる。だけど Web サービスははてブくらい。しかも一度見られたらネタとして消化されて終わってしまいます。まあそれはニコニコ動画でも同じでしょうけど・・・でも Web サービスにより最適化されたかたちの「ニコニコっぽいもの」が作れたらいいと思うのですよね。これも結局は件の ガラパゴスネットワーク につながるのかも知れませんが、なんか現状まずはこの考えを共有してくれる仲間を増やさなければいけないような気がしています・・・。


(追記)


画像ぶっこ抜き.in とかいろいろ登録してみました。


また、投げ銭機能はいったんとりはずしました。これはニコニコでもそうかもしれませんが、掲載下人が必ずしも作者ではないという問題があるため、何らかの方法でウェブサイトの本人確認ができる方法を導入するまでは、投げ銭機能は外しておきます。・・・といっても、Google Analytics みたいにメタタグや HTML ファイルの設置をしておけばOKかな?


あと、このエントリ興味深いです。


-余計な機能なんていらない


クローンミーでも深いところではそういう狙いがあるんだけど、閑散としたサービスを減らし、多様性を保ったまま各種サービスが生き残っていけるようなハブがつくれたらいいんですよね。Web が自己組織化していって、元気のいいところにはバンバントラフィックを投げるけど、余剰トラフィックは同類の下位サービスにも向けますよ、みたいな。それにより Web の多様性が確保され、開発者の底上げやモチベーション維持、最終的には利益の分配みたいなところまでいくとよいと思うのだけど・・・変な意味、利用者にも開発者にも理想郷となるようなしくみが作れるといいと思うんですよね。ある程度システム化された状態で維持されているような。きっと Google は(自社のサービス以外には)それをしてくれないように思う。


(追記2)


ちなみにアップデートを施すとしたら・・・


-新着の URL RSS(お題とクローンと二本立て)


-URL からお題サイトの ID や、クローンサイトの ID を取得する関数の作成(はてなブックマークみたいに、ブックマークレットにしてみたいですしね)


-ブックマークレットからお題サイトを登録出来る経路


などなどかな。


(追記3)


このサービスを使ってくれたら嬉しいなー、ってみなさんについて。


もちろんあらゆる開発者さんに使ってもらいたいですが、自分が良くネタもととして参考にさせていただいているどんなジレンマさんや、あいさつしかしかしたことないけど、id:pha さんとかにこのサービスを使ってみて欲しいなぁ・・・。お題出す側としてぜひ。


(10/14追記)


結構登録があって嬉しいです。RSS フィードを吐き出すよう機能追加をしてみました!


やり方はこちら。=> CakePHP 1.2 で自作 Web アプリを楽々フィード対応にしよう! (ラボブログ)


新しいサービスは、はてなのホットエントリで見つけ次第追加してみようかな。なるべく、機能真似しやすそうなやつね。

 

ブックマークに追加する

トラックバック

このエントリーのトラックバックURL:
http://www.spicebox.jp/cgi-bin/mt/mt-tb.cgi/506

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)


2008年10月02日


mixi OpenID でマイミクとのペア占いサイト「Ckr!(ちぇけら!)を作りました

スパイスラボ神部です。


ちょっと前からこちらのエントリーライブ更新:CakePHP で mixi OpenID に対応したサイトを作成する (ラボブログ)で作っていたサービスが遂に完成しました。



Ckr!(ちぇけら!)~ マイミクとペア占い☆


mixi OpenID はいろいろ使ってもらいにくさもありますが、今回は簡単に使ってもらえるように、マイミクのプロフィールの URL、例えば http://mixi.jp/show_friend.pl?id=○○○○○ という URL を入れるだけで、あとは自動的に進むようにしてみました。


ログインすれば、自分の占いはもちろん、にプロフィールURLを指定したマイミクの占いも見ることが出来ます。自分の占いにはコメントが付けられるので、相手には自分のプロフィール URL を案内すれば、自分のコメントを読んだり相手にもコメントを読んでもらったり出来ます。あっ、GET で自分のプロフィール ID 入力済みのページに案内するようにもしたほうがよさそうですね。


今回ページ遷移を続けながら認証を続けるにあたり、mixi OpenID だけでは難しい部分は、OpenID component for CakePHP や PHP OpenID Library をを導入しながら CakePHP のモデルと組み合わせたりして対処しています。あと、OpenID アプリにあるまじきことに、mixi OpenID 専用アプリです(笑)これはちょっとひどいかもしれませんが、mixi ユーザ専用ウェブアプリと見てもらうことも出来ると思います。


とりあえずは mixi OpenID の実験作ですので、まずはいろいろ遊んでもらえたらと思います。mixi OpenID に対応した他のサイトと併せて使いどころなど比較してもらえればと思います。また今回は制作が遅れ、Mashup Award 4 に間に合わなかったのがちょっと残念です。


(追記)


-マイミクとペア占い - らくがきちょう・・・紹介されました!公認タレント・アーティストへのマイミク申請は、自動的にOK出るみたいなので心配ご不要です。


 

ブックマークに追加する

トラックバック

このエントリーのトラックバックURL:
http://www.spicebox.jp/cgi-bin/mt/mt-tb.cgi/458

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)


2008年09月18日


Web 指向な勤怠管理「シフター」を競合と比較&まとめ

shifter.png


ラボ神部です。


「アルバイトの勤怠管理」という本来ちょっと硬めのサービスが、今週ちょっと話題になりました。名前は「シフター」。アルバイトのシフト管理の悩みを解決してくれるそうです。なんで注目されてるのかなーと不思議に思っていたのですが、【急募】ウェブサービス開発のプログラマとデザイナー - p4lifeのメモ というエントリーをきっかけに今日偶然にも社長の石原明彦さんと Skype Chat 経由でお話させていただく機会があり、思い切ってその理由をエントリーに起こしてみることにしました。ついでに他の勤怠管理ASP/SaaS プロダクトとの比較もしつつ、この「シフター」についてまとめをしてみたいと思います。


すっごく長いので、競合との比較に興味がなく読み飛ばしたい方は「続きを読む」の続きから読んでみてください


30分くらいリサーチしてみていろいろわかってきたことがあるのですが、結論から言うと大成功のスタートを切った新世代のサービスだな-、という印象です。ただし、それはニッチな部分での大成功であって、ここから成長して市場で一定のシェアを納めるところまでいくのかどうかはまだまだ未知数なところです。そこで、かんたんに競合製品と比較してみます(社名などは敬称略でいかせていたきます)。


早速競合製品をかたっぱしからあたってみる


Job Communicator by 株式会社ウェブインパクト


世間的な実情はわかりませんが、Google で複数の単語の組み合わせでアルバイトの勤怠管理 ASP について調べていくと、とにかく一番最初に出てくるのが株式会社ウェブインパクトの Job Communicator です。ここは国内のグループウェア市場ではかなりのシェアを持っていると思われる desknet's を開発している NEOJAPAN,Inc. 株式会社ネオジャパン と提携して グループウェアから勤怠管理を使えるようにする など既に裾野を広げる作業に入っています。


画面としては 操作方法のページにあるような感じ でいかにも業務アプリ-、って感じですね。ASP なので対応動作環境も大事になりますが対応ブラウザは IE のみ、携帯電話は 2G 以降が対応(ウィルコムは記載無し)のようです。人材派遣、店舗・チェーン店向け・コールセンター向けの3パッケージがあり、人材派遣向けのパッケージでは300名前後から、数千人規模までカヴァーできるとのことです。当然実績もあるでしょうし、このあたりはさすがですね。トップページにある1ユーザあたり月額157円という数字も覚えておきたいです(desknet's との組み合わせバージョンでは、199円を割らないんですけどね)


Fooding Journal by 株式会社 プロス


ニュースサイトの記事によると、まずは飲食店をターゲットに ということですので、同カテゴリである フーディングジャーナルというASP について見てみたいと思います。とはいえこちらは売り上げ管理や仕入れまでやれちゃうので、あまり比較にはならないと思いますし、主にシフト管理はとりまわしを行う従業員が行い、アルバイトはタイムカードの打刻のみのようです。アルバイトの都合というよりは、予算面でオーバーしない(売上予算に基づいたシフト作成)が出来るというという経営面からのトップダウンという特徴があるようです。たしかに、アルバイトが一生懸命働いてくれたのはいいけど、払うお金がないのでは本末転倒ですしね。VPNを経由して POS との連携が出来たり各種帳票がつくれたりと、これはもうかなり本格的です。初期導入費用は20万円から、月額利用料は応相談と言うこと。店舗が十数店舗レベルになってきた段階で頼るべきサービスと言えそうです。


バイトマスター・勤怠管理タイプ by データバンク株式会社


つづいて、バイトマスター・勤怠管理タイプ。 これはかなりシフターに近いのではないでしょうか。作成はデータバンク株式会社
主要機能の項目を見ると目を引かれるのが勤怠管理システムに「信頼ポイント」というものを設けていること。いわゆるポイント制でモチベーションを上げようという取り組みで、これはちょっと面白いかも。なんとなくバリュープレスの経験値システムを思い出しますね。動作環境は IE のみ、携帯電話は携帯三キャリア。


その他変わり種


横道にそれますが、最近の勤怠管理の流行りとしては、AIS の静脈認証・指紋認証を用いた ASP 勤怠管理システムSONY 開発の Felica を使った勤怠管理システムもあります。ただしこれはら設備の導入も含めると初期費用が若干ですが上乗せしてかかりそうです。

 

続きを読む " Web 指向な勤怠管理「シフター」を競合と比較&まとめ " »

ブックマークに追加する

トラックバック

このエントリーのトラックバックURL:
http://www.spicebox.jp/cgi-bin/mt/mt-tb.cgi/447

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)


2008年09月11日


JavaScript の10年選手に Web で再会

ラボ神部です。


10年ほど前を振り返ると、Web ブラウザの改良につれて SSI から CGI、そして JavaScript と、一部の処理が徐々にクライアントサイドに下りてきた過程がありました。ご存じの通りブラウザ間での相互運用性は低く、むしろそこを他のプロダクトに対するアドバンテージとして締め出しを行うという傾向すらあり、今でこそ Web 標準の考え方がゆっくりと勝利を収めつつありますが、当時の混乱の時期にはPC向け Web サイトの制作者はブラウザ間の相互運用性確保に苦慮していたものです。


そんなときよく助けていただいたのが、tato さんこと高橋登史朗さんによる JavaScriptサンプル集/support というサイト。いつからか自分はそれほどブラウザ上のクライアントサイドスクリプティングは必要なとき意外は利用しなくなり、積極的に情報を集めることをしなくなっていたのですが、ふと All About のガイドをやっていたことを思い出し、お名前で探すとどうやら去年あたりから新しいブログを立ち上げられていたことを発見しました。


-JavaScript++かも日記/Ajax,Google Maps,etc...


JavaScriptサンプル集/support というサイトをやられていた頃は、それこそブラウザベンダー同士が好き勝手にレンダリングエンジン開発を行っていましたし、準拠すべき ECMAScript の仕様そのものが規定の途上にあった中で、なんとかしてクロスブラウザなスクリプトを書こうとしていた努力に対しては、今から振り返っても本当に頭が下がります。


最近のエントリでも、iPhone用Webコンテンツ作成のためのリソース集 を作られたり Firefox拡張機能「Ubiquity」の研究 をされてたりと引き続き活発なようです(^^;;


JavaScript は新しく出てきたひとが元気という印象がありますが、こちらのブログも変わらずアグレッシブなようなので、さくっと RSS リーダーに入れて愛読してみようと思います。

 

ブックマークに追加する

トラックバック

このエントリーのトラックバックURL:
http://www.spicebox.jp/cgi-bin/mt/mt-tb.cgi/432

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)


2008年09月09日


CakePHP 1.2 で自作 Web アプリを楽々フィード対応にしよう!

ラボ神部です。


紹介が前後しますが、~になる頃には(´;ω;`)置き書き場 というコンテンツを作りました。するとはてなブックマークコメントに「フィードを吐いて欲しい!」とのリクエストが。


今回たまたま CakePHP で作ったので、なんとなく楽に実装出来るような気がしていろいろ調べてみたらビンゴでした。いつもお世話になっているねねとまつの小部屋さんをはじめ、いくつかのサイトでその利用方法について書かれていました。


-RSSフィードが好きだ! - Favorites!


具体的な手順


-CakePHP1.2でRSSフィードを使う | エムティシステム・・・以前は webservice というコンポーネントが使われていたようですが、今では Router::parseExtensions() を使うようになったようです。手順についても参考になりますが、次のリンク先の方が初心者にはわかりやすいかもしれません、


-"1.2でのRSS出力の仕組み" フォーラム - CakePHP Users in Japan・・・こちらはフォーラムでの解説ですね。2008年3月の投稿。


-【CakePHP】iTunesのPodCast用のRSSを出力する | ねねとまつの小部屋・・・さらに iTunes の PodCast用にフィードを吐くため Dublin Core を私用する方法について。Dublin Core、懐かしいなぁ。


またもしかしたら不要かもしれませんが、試行錯誤の途中で XML_Serializer を入れたいという場面がありました。そちらはこちらが役に立ちましたのでついでに併記しておきます。


-PEAR install メモ (Nega Diary)・・・ちなみに、XML_Util もインストールが必要でした。


なにはともあれ、作ったものに反応があることは最高のモチベーションですね!引き続きたくさんの人に興味を持って楽しんでもらえるようなネタを考えて行きたいと思います。

 

ブックマークに追加する

トラックバック

このエントリーのトラックバックURL:
http://www.spicebox.jp/cgi-bin/mt/mt-tb.cgi/430

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)


2008年08月21日


ライブ更新:CakePHP で mixi OpenID に対応したサイトを作成する

ラボ神部です。


mixi の Open ID 対応で Web サービスの潜在利用者数を増加させられるか? (ラボブログ)というエントリを踏まえまして、ちょっと CakePHP で mixi OpenID に対応したサイトをつくってみようと思いますので、その作るまでのプロセスをライブ更新します。


-サイトのコンセプト決め、ドメイン名設定完了。


-CakePHP をインストール完了。


-デーベース定義決定、定義に従いデーターベース設定完了。


-【CakePHP】AuthComponentについてのまとめ 【ざっくり基本編】 | ねねとまつの小部屋 を参考に、認証の基本環境を整える。


-ユーザ登録し、各ページで $this->Auth->isAuthorized() で認証が引き継がれているか確認。


-【CakePHP】OpenIDをAuthComponentにトッピングしてみる | ねねとまつの小部屋 を参考に、OpenID component for CakePHP を導入したり、PHP OpenID Libraryを設置したり。ただし、ここの追加箇所の意味は十分に理解出来ているとはいえないので、じっくりコードを追いたい。


-次は mixi Developer Center » mixi OpenID を見ながらの作業というところだが、ここでいったん OpenID そのものの勉強に入る必要がありそう。

-yahoo.co.jp、mixi.jp をログインフォームに入れ、OpenIDでの認証が出来ることを確認。


(8/21)今日はここまで。


-何故か Auth コンポーネントへのログインができない状態に。DB 定義を見直して、flag フィールドを追加したらうまくいった。


さて、これで CakePHP で OpenID での環境が整い、自動的に mixi Open ID にも対応することが出来た。


このやり方では、OpenID 経由で認証に来たユーザのユーザ情報も、手元のデータベースに新規ユーザとして登録される(username にあたるところに OpenID の認証 URL が入る。例えば https://id.mixi.jp/70152 みたいな。次回以降ログインする場合には、きっとこの文字列が username として参照されるのだろう)。ここまでは「ねねとまつの小部屋」さんの情報がすばらしくわかりやすいこともあり、非常にたやすかった。時間があれば一日で設定完了出来るはず。


ここから先は実際の運用を考えてみよう。まず、OpenID 経由で新しく登録されたユーザのサイト内の導線についてじっくり考えてみる必要がある。また、OpenID経由で来たときに、本来は元のサイトでログインしていれば再度ログインしなくていいことが望まれる。でなければ、ブラウザにID/パスワードが保存される昨今、ログインのしなおしが入ることはそれぞれのサイトに別々の ID を登録することとほとんど変わらないからだ。


mixi のように元のサイトの関係性を引っ張ってこれるなら、そこを生かす方法も知らなければならない。なんとなく、PHP OpenID Library か OpenID component for CakePHPがやってくれそうなので、次はそのあたりを調べることになるかな。いっそ OpenID 経由の認証専用のサイトにするとか、mixi OpenID 専用サイトにするぐらい、極端なことをやってもいいのかもしれない。


(8/22)今日はここまで。


ユーザ情報とは別のユーザデータ格納用テーブルを作成し、それの取り回し用のインターフェース部分を作る(正直このあたりの単純作業は楽しくない・・・)。テーブル二つを取り回すのは結構大変かと思ったが、CakePHP の十徳ナイフ並みの柔軟さに助けられ、まあなんとか形になる。


あとは細かいところメッセージやセキュリティチェック、UIを整える作業だけど・・・このへんはなかなかモチベーションが出てこないところ。このあたり好きな人と組めればいいのだけど。


さてここでまたちょっと悩みどころ。mix OpenID に対応するつもりが、Open ID なら全部対応したサイトになってしまいました。しかし、mixi ID でログインさせたときと Yahoo! ID でログインさせたときは、ユーザの新規登録が個別に行われるため、別々の ID になってしまい、Open ID を使っていながらユーザが複数アカウントを持つことになり、サービスのコンセプトが良くわからなくなってしまいます。そこで、ちょっと後進的ですがまずは mixi Open ID のみを対象にし、他の Open ID は非対応という扱いにして、サービスをシンプルにしてみようかな、と考えています。


ってことでものすごい最低限のデザイン完了。少しやる気出た。


(8/25)今日はここまで。


mixi Developer Center » FAQ のドキュメントに従い、マイミク認証に対応させてみた。URL を直接指定することで、入力欄に ID を入力済みにさせることも出来るかな?


機能的な所は今度こそ完了。あとはユーザの取り回しやデザインをがんばろう。


(8/26)今日はここまで。


さて、mixi からの OpenID によるログインが出来る用になった。しかし今回はせっかく mixi OpenID の機能により、マイミクとの認証やコミュニティのメンバーであるかどうかの認証(権限確認?)が出来るわけだから、そこに対応させていきたい。


が、ふとここで OpenID の仕様についての見識のなさを思い知る。要は認証が通ったということを取得したいわけだが、どの値をもって成功したととればいいのか、全然勘所がわからないわけで。

ということで、もう一度情報収集をやりなおし。今回はマイミク認証でやろうと思うので、速報、1500万人が使える mixi OpenID の技術面を解説するでござるの巻 - Yet Another Hackadelic などを大変参考にさせていただきながら、var_dump で試行錯誤。それなりに自分流のロジックを作りながら、マイミクであると認証が通ったときのみ、マイミクのコンテンツが閲覧できるようなものをなんとか作れそうなところの第一歩まではたどり着けた。DB定義も何度かみなおしたし、これでこんどこそあとは単純作業にできるはず。続きは来週。


(8/29)今日はここまで。


だいぶ間が空きましたが、 サービスがようやく完成。やっぱりキモはマイミク認証の活用したかったので、マイミク認証の戻り値で自分と相手のペアの mixi ID を毎回取得することで解決した。複数マイミクシィ認証 - ラーニング人生。 なんて方法もあるようだけど、これはまた今度かな。


完成したサービスは「Ckr!(ちぇけら!)」というものです。こちらの解説エントリをご覧ください


(10/2 完)

 

ブックマークに追加する

トラックバック

このエントリーのトラックバックURL:
http://www.spicebox.jp/cgi-bin/mt/mt-tb.cgi/414

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)


2008年08月20日


mixi の Open ID 対応で Web サービスの潜在利用者数を増加させられるか?

1483577826_70de437a64%5B1%5D.jpg_v%3D0


ラボ神部です。


せっかくいろいろなサービスを作っても、ユーザ登録を行う敷居が高いためにユーザ数がなかなか増加しない、というケースもあるかと思います。しかし、もし何千万人もいるユーザが自分のサービスのアカウントを持ってくれたら、もっと利用者が増える可能性もあるのではないでしょうか。今日はそんなサービス提供者の悩みを解決するかもしれないニュースについて考えてみようと思います。


-ミクシィ、認証サービス「mixi OpenID」を提供--「mixi Platform」第1弾:ニュース - CNET Japan


見ての通り、mixi が OpenID に対応したというニュースで、ものすごく楽観的に考えれば、手元のサービスを OpenID 1.1 に対応させるだけで、mixi ユーザが自分のサービスのユーザにもなってくれるという大変ありがたい計らいです。


-mixi Developer Center » mixi OpenID


もし手元のサービスを CakePHP で作成しているなら、【CakePHP】OpenIDをAuthComponentにトッピングしてみる | ねねとまつの小部屋 などを参考にしてみるとよいでしょう。


ただし、ユーザとして OpenID 対応サイトを利用したとき、あまり便利には感じなかったことも事実です。というのは、例えば mixi ID で認証できるといっても、最初にユーザ登録のようなことそしなければいけないサイトが多く、それなら新規登録と何が違うの?と疑問に思ってしまうこともしばしばです。しかも通常の新規登録よりも登録のプロセスがちょっかんてきにわかりにくい。


もうデファクトとして、mixi で入力されている以外の情報は必須入力にしない、くらいの気概がないと、そうかんたんに mixi からユーザは流れてきてくれないようにも思います。


もし、OpenID を使って mixi に足りないサービスに誘導するとしたら、どんなものがあるでしょうか。ちょっとブレストしてみたいと思います。せっかく mixi ユーザがが mixi 内でのアクティビティを持っているわけですから、それに関連づけたサービスに誘導するのがより効率がよいと思われます。


ではどのコミュニティに、OpenID に対応したサービスを紹介するのがよいか、具体的にペアを考えてみましょう。例えば・・・


・野球コミュニティにチームメンバー募集サービスサイトの案内を掲載する

・作曲コミュニティに音楽情報共有サイトの案内を掲載する

・地域コミュニティに地域同窓会サイトの案内を掲載する

・写真コミュニティに大容量フォトストレージの案内を掲載する

・ダイエットコミュニティに健康器具と連動した体調管理サービスの案内を掲載する

・映画コミュニティにポイント制度付き映画レビューサービスの案内を掲載する


などなど。もちろん、コミュニティによってこういった宣伝行為は禁止されているケースがほとんどですので、いいサービスを作って OpenID に対応させ、それが自然に mixi ユーザによってクチコミで広がっていくような流れがベストなのかもしれません。


あらためて、OpenID 対応サービスのデータベースを作ってみても,面白いかもしれませんね。


▼技術文書


-mixi Developer Center » mixi OpenID

-[mixi] mixi OpenIDをご利用できるサイト(?)


▼関連ニュース


-mixiがOpenID対応 「マイミク限定」を外部サイトでも - ITmedia News

-ミクシィ、認証サービス「mixi OpenID」を提供--「mixi Platform」第1弾 - 毎日jp(毎日新聞)

-ミクシィ、認証サービス「mixi OpenID」を提供--「mixi Platform」第1弾:ニュース - CNET Japan

-mixiがOpenID認証サービス、マイミクによるアクセス制御も可能に

-mixiがOpenIDに対応、外部サービスでも「マイミクシィ認証」と「コミュニティ認証」を可能に:MarkeZine(マーケジン)

-mixiサービス企画部長に聞く、「プラットフォームを開放する理由」:インタビュー - CNET Japan

・・・この「プラットフォーム開放」、第四弾あたりでモバイルもオープンに、ってことありうるのかなぁ。そのへんは DoCoMo とかのキャリア次第かな。


▼関連エントリ


-速報、1500万人が使える mixi OpenID の技術面を解説するでござるの巻 - Yet Another Hackadelic

-mixi OpenID がきたー。 : きみまさブログ - kimimasa's blog

 

ブックマークに追加する

トラックバック

このエントリーのトラックバックURL:
http://www.spicebox.jp/cgi-bin/mt/mt-tb.cgi/412

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)


2008年08月13日


CakePHP で何故か Missing Database Table とプルダウン

CakePHP で何故か Missing Database Table になってしまって困っていたのだが、app/tmp/cache/model 以下をいったん消したらこのメッセージが出なくなった。


うーん、原因がわからないので対処療法だけど、とにかく半日はまってしまいましたので、共有情報として書いておきます。


ついでなのでこんなお役立ち FormHelper 情報を。


全部日付プルダウン関連です。


CakePHP FormHelper#datetime()で年月日表示を変える | Shin x blog


CakePHPその16 〜FormHelper〜:sandmanの旅行の写真”とか”:So-net blog


CakePHP1.2 Form ヘルパーで日付のフォームを作る | Sun Limited Mt.


日付でないプルダウンはここが参考になる。


CakePHP select タグの選択していないときの状態を指定する | Sun Limited Mt.


下記は CakePHP 1.1 の HTML ヘルパーの場合。情報古いです。


"SelectTag の使い方" フォーラム - CakePHP Users in Japan


CakePHP HTMLヘルパーで select タグを表示する | Sun Limited Mt.


snapz  CakePHP selectは?・・・値とテキストのペアを同じ内容にしたいとき

 

ブックマークに追加する

トラックバック

このエントリーのトラックバックURL:
http://www.spicebox.jp/cgi-bin/mt/mt-tb.cgi/407

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)


2008年08月08日


CakePHP の AuthComponent と格闘中

cake-logo%5B1%5D.png


ラボ神部です。昨日からCakePHP の AuthComponent と格闘中です。


あまりにもにっちもさっちもいかなくなってしまったので、authtest というプロダクトを作り、其処にたぶんリリースされたばかりの 1.2.0.7296 RC2 を入れて、一番シンプルな認証テストケースを作ってみようと思います。


インストールが完了した段階から Wiki ライクにこちらのエントリを更新します。


(12/7追記)


この記事を書いた後、なんどか AuthComponent を使うサービスのコードを書きましたが、基本的には


-CakePHP 1.2 の AuthComponent でユーザ管理 (ラボブログ)


の冒頭で書かれているねねとまつの小部屋さんのエントリが必要十分な内容です。そこからたどれるドキュメントも含めて深く読み進めることをおすすめします。

 

続きを読む " CakePHP の AuthComponent と格闘中 " »

ブックマークに追加する

トラックバック

このエントリーのトラックバックURL:
http://www.spicebox.jp/cgi-bin/mt/mt-tb.cgi/404

コメント ( 2 )

suzuki さん、こんにちは。
お返事が大変遅れました。


直接的な回答にはなりませんが、まずは Auth コンポーネントを動かすためだけのプロダクトを作ってみて、今動かなくなっているプロダクトとの待避を行うと問題が切り分けられると思います。


私の場合、本当にクリティカルだったのは core.php の CAKE_SECURITYをmiddle にしたことでした。こちらもご確認ください。

suzuki :

suzukiのCakePHPブログの鈴木でございます。
あのろくでもない私のブログを拝見してくださったようで恐縮しております。

ところで、Kanbe様のところでは環境の見直しで、
RC2環境下のAuthが機能しているようですが、
私の環境ではどうもRC2からAuthがうまく動きません...orz

RC1なら何の問題も無く動くようになっているのですが、
RC2にすると$componentsでAuthをセットするだけで、
”auth Cannot access empty property”というエラーが出てしまいます。

どうも調べてみるとcomponent.php line224の
!isset($object->{$component}->{$parent})部分で、
$parentがnullのためにエラーが起きているようなんですが、
どうしたらいいものかわからず困っておる次第です。

もし良かったら、環境の見直しでどのような変更があったか教えていただけないでしょうか?
よろしくお願いいたしますm(_ _)m

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)


2008年07月01日


CakePHP 1.2 の AuthComponent でユーザ管理

ちょっとした案件で CakePHP のユーザ管理の仕組みを作る必要があるのだけど、どうもまとまった情報がない。


そこで、このブログエントリで ToDo をまとめつつ、各項目を埋めていくことにする。


(2008/7/7追記)常に 1.2 系で開発しているため、今回のまとめは AuthComponent を使ったものにまとめていくよう方針変更。


■CakePHP でユーザ管理をするには?


まずは公式ドキュメント?

-Cookbook :: 1.2 Collection :: マニュアル :: 組み込みのコンポーネント :: Authentication :: AuthComponent Methods


次に基本を解説してくださっているサイト。

-【CakePHP】AuthComponentについてのまとめ 【ざっくり基本編】 | ねねとまつの小部屋


・・・app_controller の下準備の話が出ていないようだけど、それにあたるものを設定しないと動かないんじゃないのかなぁ。そもそも isAuthorized が定義されていませんと言われるし。CakePHP Authentication Component - Tutorial Oneにあるような最小単位の app_controller の設定が必要かも。


でも自分の場合はそれでもうまく行かなかったので、CakePHP Auth Component - Tutorial Two を参考に各コントローラの中に isAuthorized と beforeFilter をつくり、その beforeFilter の中に


$this->Auth->authorize = 'controller';


を追加した上で各コントローラに配置したらうまく行った。


CakePHP の AuthComponent と格闘中 (スパイスボックス・ラボラトリブログ) に詳細を書きましたが、上記部分は不要箇所として抹消します。


■ユーザデータベースの設計は?



-B.2. 認証と継続チェック・・・どうやら定義としては「username」と「password」のようだ。


■登録フォームを用意するには?



-【CakePHP】AuthComponentについてのまとめ 【ざっくり基本編】 | ねねとまつの小部屋・・・ここに詳しく載っている


■確認メールを用意するには?



-[cakephp]ユーザーのメールの認証をする-ひとり開発ブログ・・・まあだいたいこんな感じでしょう


■ログインフォームを出力するには?



-B.2. 認証と継続チェック・・・コントローラとビューがあるようです。


■各ページでログインチェックをするには?



-B. 例:簡単なユーザ認証・・・どうやら app_controller というのを使うと、全ページ共通でいろいろ出来るっぽい。


-CakePHP のおいしい食べ方: いちばん簡単な認証システム


ここはものすごく詰まった。実際にうまく行かなかった最大の理由は isAuthorized() が置き場所によっては undefined function エラーになってしまうこと。よく使うポイントしては、ログイン成功した直後のリダイレクト先のモデルのコントローラになるだろうか、そこの beforeFilter などではチェックできず、なんらかのメソッド( index() など )の中で、$this->Auth->isAuthorized() というかたちで呼ばないといけない。なんだかピンポイント過ぎる・・・。もう少しエラーメッセージが親切だったらいいのに。この件に関しては、1.2, AuthComponent: Call to a member function isAuthorized() on a non-object - CakePHP | Google グループ を参考にした。


■自動ログインさせるには?



-CakePHP Note:自動ログインその1


※(2008/08/07追記)ここのやり方で、本当にうまくいっています。


ついでに、CakePHP Note:自動ログインその2CakePHP Note:AuthComponentも必読ですね。


-codeなにがし::CakePHPで自動ログインコンポーネント

■ログアウトさせるには?



CakePHP Note:自動ログインその1に、やり方が併せて書いてあります。


■ユーザ情報編集ページを作るには?



■ユーザ退会ページを作るには?



■実例



"Cakeを使ったCMS土台のまとめ" フォーラム - CakePHP Users in Japan・・・このへんの実例を見ちゃうのも早いかも


CakePHP プログラマーズ リファレンスガイド・・・たいていのことはここでわかるらしい(via. CakePHP :: [コエカタマリン MX 2007]

 

ブックマークに追加する

トラックバック

このエントリーのトラックバックURL:
http://www.spicebox.jp/cgi-bin/mt/mt-tb.cgi/380

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)



第3回CakePHP勉強会で発表しました

ラボ神部です。


発表者として参加させていただいた第3回 CakePHP 勉強会は無事終わり、ほっとしています。
ブログなどにもレポートが出ているようですので、こちらでも共有。


第3回CakePHP勉強会終了&発表資料 - yandodの日記
http://d.hatena.ne.jp/yandod/20080627/1214589875


第3回 CakePHP 勉強会に参加しました | Sun Limited Mt.
http://www.syuhari.jp/blog/archives/456


第3回CakePHP勉強会感想 - Do you CakePHP はてな
http://d.hatena.ne.jp/s-yo-ko/20080627


どうやらモバイル向けのレイアウトファイルの切り替えが
珍しかったらしいので、ここは改めてブログに特集記事を
つくってもよいかもしれませんね。


(追記)ほかにもとりあげてくださっているブログがあります。


CakePHP勉強会に参加してきました - blog.katsuma.tv


[PHP] 第3回CakePHP勉強会に参加してきたよ - 雑文発散 (2008-06-27)


また見つけ次第追加していきたいと思います。

ブックマークに追加する

トラックバック

このエントリーのトラックバックURL:
http://www.spicebox.jp/cgi-bin/mt/mt-tb.cgi/378

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)


2008年06月24日


第3回CakePHP勉強会で発表してきます。

ラボ神部です。


今週末金曜日に開催される第3回CakePHP勉強会 - events.php.gr.jpで発表してきます。


お題はフェイス女学園について。


たくさんの人にささえられたプロジェクトの一員として、がんばってきたいと思います!


(追記)


この勉強会と関係あるのかどうかわかりませんが、CakePHPクッキング というブログのCakePHPの開発事例(日本) というエントリでご紹介いただきました。ありがとうございます!

ブックマークに追加する

トラックバック

このエントリーのトラックバックURL:
http://www.spicebox.jp/cgi-bin/mt/mt-tb.cgi/377

コメント ( 1 )

あつ :

CakePHPクッキングのあつです。
僕は勉強会に参加できませんが、社内のメンバーが行きますので、フェイス女学園の開発秘話を楽しみにしています。

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)


2008年04月22日


覚えるまで何度でも書く CakePHP 関連お作法(1)

なかなか手になじまない CakePHP のいろいろを書き留めていくシリーズ。


■フォーム出力の仕方


フォームを巣の状態にするための、$form->input() の引数リストが知りたい!


ここがいいかも→デジタル料理人 - CakePHP 1.2の新機能 FormHelper(フォームヘルパー)について


input('フォームの名前', array('label'=>'ラベル', 'value'=>'初期値', 'empty'=>'ture(空値チェックの有無)'));


■FormHelper の create の第一引数


操作したいデータベースの単数形ということみたい。
posts だったら post みたいな。


デフォルトは add コントローラを呼ぶ ということのようだが、他の action を呼びたいときどういう引数を入れればいいのか・・・こういう情報がいつもどこをみていいかわからない。


(追記)見つかった。$option の中身、ヘルパーごとにまとまっているところないだろうか。


$options の中身いろいろ → CakePHP Note:Formヘルパー


■CakePHP FormHelper#datetime()で年月日表示を変える | Shin x blog
http://www.1x1.jp/blog/2008/04/cakephp_formheler_datetime_list.html

そのうち使うことになりそう。


■モデルごとののデータベースの定義


id は INT で UNSIGNED で AUTO_INCREMENT で PRIMARY KEY にする。
結構条件が多いなぁ。


A.3. ブログデータベースの作成


■webroot から cakeアプリを見る設定は index.php に


webroot/index.php にはこんな重要な情報がいろいろとあるんだな・・・


-さくらで CakePHP | cafe chantant blog


■なんか新しい Model が URL Not Found とかいってうまく追加できなくなったんだけど・・・


core.php で Configure::write('debug', 1); と戻して、Model や Controller をいったん削除してみよう。いつもの親切なガイダンスが出る。


 

ブックマークに追加する

トラックバック

このエントリーのトラックバックURL:
http://www.spicebox.jp/cgi-bin/mt/mt-tb.cgi/356

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)


2008年04月07日


「ツクリカタ」をつくりはじめます。 - CakePHP でアプリ開発(序章)


Photo by By jek in the box


さて、新しい四半期に入りました。直前の下期では、年始以降あまりサービスが量産出来ていなかったのですが、これを機会に新しい作品作りをはじめてみようかと思います。ちなみにサービスを量産していなかったとはいえ、CakePHP は必要があってずっとさわっていました。ですのでこのさい CakePHP を使ってなにかやってみようと考えました。


そこで題材にしたのが、手順共有サービス。なにかをつくるときのハンドメイドサービスで、海外サイトでは Instructables が有名で、日本でも excite による アトリエ のという手順紹介サイトがあります。


やはり構造的に優れているのは instructables で、手順ひとつひとつを step として各ページに分け、その手順ページごとにコメントがつけられるようになっています。これは明らかにページ数を増やすやり方で、SEO的にも効果が見込めるでしょう。ここは instructables を参考にサイトをつくってみようと思います。また、メニューはひとまず日本語オンリー。この時期モノリンガルでいいのかという疑問は当然生じますが、英語では instrucables があり、またそれと類似の日本語サイトでヘッドのサイトがあるわけでもないですから、この手順紹介でトップになりたいという目標を掲げてみたいと思います。


さて、自分の場合完成まで公開できないというのは非常にフラストレーションだったりしますので、やりすぎかとは思いつつ、今回は CakePHP のセットアップが終わった時点で公開をしてしまいます。サイト名は「○○のツクリカタ」というページがたくさん出来るように期待を込めて「ツクリカタ」としました。


-ツクリカタ - すてきなもののつくりかたをみんなで共有!


IDEA*IDEA のCakePHP修行! アーカイブ | IDEA*IDEAばりに、このアプリケーションの「ツクリカタ」も、このブログで連載していければと思います!


ブックマークに追加する

トラックバック

このエントリーのトラックバックURL:
http://www.spicebox.jp/cgi-bin/mt/mt-tb.cgi/337

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)