CakePHP でファイルアップロードの方法を調べていたら、Media Plugin for CakePHP というのが評判よさげだったので使うことにした。
サンプルとしてつくってみたのが以下。
シームレステクスチャ
ちょっと前にやったのでかなり忘れてきているけど、少しでも覚えているうちにやったことメモ。
基本的には下記の記事にやりたい事はほとんど書かれている。
多少違うところも、そこから貼られているURLを追いかければほぼ解決。
mediaプラグインまとめ – 趣味の延長線
CakePHP でファイルアップロードの方法を調べていたら、Media Plugin for CakePHP というのが評判よさげだったので使うことにした。
サンプルとしてつくってみたのが以下。
シームレステクスチャ
ちょっと前にやったのでかなり忘れてきているけど、少しでも覚えているうちにやったことメモ。
基本的には下記の記事にやりたい事はほとんど書かれている。
多少違うところも、そこから貼られているURLを追いかければほぼ解決。
mediaプラグインまとめ – 趣味の延長線
連休中に、いろいろと CakePHP の Plugin 的なパーツを作っていて、なかには管理画面が必要なものもあったりして、さらに、その管理画面から外部リンクをはりたいものがあったりもすると、ちょっと悩む。
管理画面から直接外部リンクをはると、管理画面のURLがリファラとして渡されてしまう。
管理画面のURLは、第三者にはあまり知られたくない。
自作でリンククッションを作るのが手っ取り早い。
リンククッションだからという理由でドメインごとアクセスブロックされるのも困る。
リファラは空にしておく必要がある。
サーバは、VALUE DOMAIN の XREA と CORESERVER を主に使ってます。
XREA や CORESERVER で Webアプリケーションとして公開する場合は、public_html 配下じゃないとアクセスできない。だからといって、public_html 配下にフレームワークの公開しなくてもいいものまで置くのはセキュアではない。URLも美しくない。
そのため、アプリケーションとしてWebからアクセスする部分だけを切り離して public_html 配下に置き、パスの部分を書き換えていた。
それでも、それなりに便利ではあるけど、できるだけ無駄なことはしたくないし汎用性が低くなる。
また、XREA や CORESERVER でサブドメインや複数のドメインを使用する場合は、「public_html/ドメイン名」でフォルダをアップロードしなくてはいけない。このため、public_html 直下をちゃんと整理できない人はごちゃごちゃしてイライラする。
公開する部分とその他の部分を分けているので、開発やメンテナンスをする時にあっち行ったりこっち行ったりで面倒だったりする。
シンボリックリンクがその辺を一気に解消した。
オープンソースとしてSNSを開発しているUsagi Projectとコラボレーションをさせてもらうことになりました。
この度、PHPフレームワークの「Maple Project (http://kunit.jp/maple/)」と、PHPライセンスでSNSエンジンを開発している「Usagi Project (http://usagi.mynets.jp/)」が、プロジェクトとしてコラボレーションし、今後の開発を共同で行うことを決定しました。
Usagi Project:国産のOSSフレームワークMaple Projectと、SNSエンジン開発OSSのUsagi Projectがコラボレーション!!
しばらく Ethna を使ってWebアプリを作ってみたものの、もうひとつしっくりこなかったというか、Ethna のよさを十分に活かせていないような気がして、他のフレームワークを使ってみようかと調べてみた結果、CakePHP を試してみようと思って、いろいろと CakePHP の情報を集めているところのでこのニュースを知りました。
アクセスしたページに対して、サーバサイドリダイレクトや、meta要素のrefreshを用いたページリダイレクトをオンラインで検証することができる、リダイレクト検証ツールというWebツールがあります。以下に書かれているものがそれです。
いきなり、リダイレクト検証ツールの話から入りましたが、今回は404エラーとリダイレクトの話です。
ことの始まりは、前回の宅建の試験に合格するぞぉの記事で書いた 『404エラーを返してトップページにリダイレクトするようにしている。』 の部分ですが、書かれてある通りで、header() で、『404 Not Found』 を返して、そのまま header(Location: URL) でリダイレクトしていました。
リダイレクトを正しくできていないと、検索エンジンにスパム扱いをされるとどこかで目にしたので、正常にリダイレクトされてるか、上記のツールを使って調べてみました。そしたら 『302 Found』 を返してリダイレクトしているという結果がでたのです。
で、『HTTP Status』 で検索してみると [Studying HTTP] HTTP Status Code にたどり着いたのですが、これを見た感じだと 3XX を返す時意外はリダイレクトするのはダメなのではという気がしてきました。
また、404エラーでリダイレクトするのは使いづらいというようなこと書いてる人もいました。理由は 『ブラウザのアドレスバーに直接URLを打ち込んだ時に、タイプミスでリダイレクトされたら初めから打ち直さないといけないから』 というようなことだったのですが、ごもっともです。自分はトップページにリダイレクトしたほうが、ユーザや検索エンジンにやさしいかと思っていたのですが、見当違いでした。
なので、404 エラー用のページを作って、リダイレクトするプラグインを修正して、不正なURLにアクセスした時は、404 エラーを返して、404 エラー用のページを表示するようにしました。
おかげで、Ethna の Ethna_Controller を少しだけトレースしたので、Filter、Action、View の流れが理解できてきて、スマートな構成になりました。ついでに UrlHandler の使い方も 『理解できてきたかな?』 くらいになりました。
Controller 部に関しては、メモしておかないと忘れそうなので、近いうちに書こうと思っています。
このたび宅地建物取引主任者資格試験に挑戦することになりました。
資格試験のためのお勉強は嫌いではなく、むしろ楽しかったりするのでそれほど苦ではないのですが、3日もしないうちに飽きてきました。
で、試験勉強用の過去問集を作りました。その名も 『宅建の試験に合格するぞぉ』 (なんと採点機能付)
前から興味ありつつも放置していた Ethna で作ってみました。
実は前にも、Ethna でとあるシステムを作ったのですが、色々な理由があったなかでも何よりエレガントな構成にならなかったので、公開する気になれなくて私のPCの中で眠ったままになってます。
今回 『宅建の試験に合格するぞぉ』 を作るに当たって決めたことは以下の通りです。
実際に『宅建の試験に合格するぞぉ』 を作ってみて、結果は以下の通りです。
何とか間に合いました。7割くらいが、DBに流し込むデータ作りに時間を注ぐことになりましたが。データ作成方法をもう少し効率のいい方法を考えたほうがいいかも。Ethna とは全然関係ないことだけど。
見ての通りです。トップページに至っては、Ethna のデフォルトのままです。
mod_rewrite の連携は、UrlHandler を使って、ごにょごにょやってたら何とかなった。結果オーライって感じで出来てしまったので、もう少し理解する必要がありそうです。
時間がなかったのもあって、実際に対応するアクションがなくてもトップページが表示されるようになっているので、その辺の対応も気が向いたらやろうと思う。アクションが存在してパラメータに誤りがあるものに関しては、リダイレクトするプラグインを自作して、404エラーを返してトップページにリダイレクトするようにしている。
Net_URL_Mapper を使えば簡単にできるとありましたが、どこかで PHP4 は使えないみたいなことが書かれていたので使いませんでした。もうすぐサポートも終わることだし、本気で PHP5 に乗り換えることも考えないといけない時期かも。
いろいろネットを漁ってみたのですが、少々古い情報しか出てこなかったので、今のバージョンだともっとスマートな使い方があるのではと思いながらも判断することが出来ない。ただ、今のところは、appObject を上手く活用できている気がする。
プロジェクトに影響しない Common のプラグインを作ったりもしたし、そこそこ拡張性は(今のところ)高いと思う。
このシステムは選択性の試験を作ろうと思えば、問題と解答をDBに流し込めばいいだけなので、色々な過去問集(採点機能付き)を作ることができます。
宅建の試験に合格したら、次は行政書士の試験に挑戦する予定なので、その頃には『行政書士の試験に合格するぞぉ』を作るかもしれません。
zontheworld
うまい焼肉が喰いたい。
HTML convert time: 0.385 sec. ( Login )