2010年6月16日水曜日

jQueryを使って別ウィンドウと連携

どうも、俺@残業中です。

今日はjqueryを使って別ウィンドウ(子ウィンドウ)と連携する方法についてメモメモです。

仕様は親ウィンドウにあるインプットボックスに文字を入力すれば、その値を子ウィンドウに表示するものとします。
テスト用に、まず親ウィンドウを開いた瞬間子ウィンドウを開くようにします。
// 親ウィンドウ.js
$(function() {
// 引数は開くファイル名、子ウィンドウ名、そのプロパティ
window.open("child.html", "child", "width=800,height=300");
});
です。
また親ウィンドウにインプットボックスを作ります。
<!-- 親ウィンドウ.html -->
<input type="text" name="name" value="">


次に子ウィンドウ側のjavascriptで、親ウィンドウのインプットボックスに対しEventListenerを貼ります。
// 子ウィンドウ.js
$(function() {
window.opener.$("input").bind("keyup", view);
});
function view() {
$("body").html($(this).val());
}
これだけです。

javascriptのwindow.openerを使って親ウィンドウからの値を子ウィンドウへ渡します。

以上、どえぇぇぇえぇえぇす。

2010年6月9日水曜日

zend frameworkでレスポンスヘッダを扱う

どうも、俺@定時間際です。

今日は前回「ZendFrameworkでViewを無効化する」のつづきのお話になるのですが、Viewのレンダリングを無効化しレスポンスヘッダを開発者の思うように返す方法についてめもめも。

Zend_Controller_Actionの派生クラス内でレスポンスヘッダを変更する場合は
<?php
$response = $this->getResponse();
$response->setHeader("Content-Type", "image/gif"); // 例えば画像出力
// $response->setRedirect("http://google.co.jp", 302); // 例えばリダイレクト

$response->sendResponse();
これ。

やり方たくさんあるっぽいので、もっと便利な別の方法もできますね。


以上。どぇぇぇす。

2010年6月3日木曜日

ZendFrameworkでViewを無効化する

どうも、俺@仕事中 今日2度目の投稿です。
ZendFrameworkを使っていて、Viewを無効化(Viewレンダリングを無効煮する)方法についてめもめも。

やりたい事は、ZendFrameworkで受け付けたリクエストを処理して別サイトへリダイレクトするだけのコントローラーを作る!というものです。


Zend_Controller_Actionを継承したコントローラを作成し、init()メソッドで
$rediretor = $this->_helper->getHelper("Redirector"); // リダイレクトに関する処理をまとめて行う。
$redirector->setCode(302); // ステータスコードを302にセット
$redirector->setExit(true); // リダイレクトの後exit();を行う。

$this->_helper->getHelper("ViewRenderer")->setNeverRender(true); // viewのレンダリングを行わない。
のようにすれば、リダイレクトの処理とViewのレンダリング無効化を初期処理にて行えます。


詳しくはZend Framework アクションヘルパーまで


以上でぇぇぇす(´・ω・`)

mysqlでログインできなくなった

どうも、俺@仕事中です。
今日は開発環境のmysqlサーバへログインできなくなってしまった場合の対処法です。

rootログインも一般アカウントログインもできません。
# mysql -u root
Access denied for user: 'root@localhost' (Using password: NO)
# mysql -u mysql_user
Access denied for user: 'mysql_user@localhost' (Using password: NO)
もちろんパスワードの設定などもしていませんでした。

権限テーブルで何か異常が発生してるのだろう、、と確認したいのですが、mysqlデータベースにすら接続できません。

1)無理やりログインできるようにする
mysqlを立ち上げる際に
# mysqld_safe --skip-grant-tables & 
とやれば権限テーブルを無視してログインできます。
mysql> use mysql
mysql> select * from user;
Empty set (0.00sec)
あじゃぱー!!
userテーブルが空になっちょる!誰やー!?

この状態で
mysql> grant all on *.* to root@localhost;
と打っても「--skip-grant-tablesオプション付けて起動してるからGRANTできひんでー」と怒られます。

2)他のサーバからuserテーブルデータを持ってきた
仕方がないので、他サーバで稼働中のuserテーブルデータをそのまま持ってきてdataディレクトリへ置きました。
# cp user.MYD user.MYI user.frm /usr/local/mysql/data/mysql/
これで通常起動すれば普通に接続できるようになりました。


うむむ、--skip-grant-tablesオプションでログインできるようになったはいいけど、その後GRANT構文を放り込みたい場合はどうしたら良いのでしょう、、?


以上でぇぇぇえぇす。

2010年5月19日水曜日

Zend Frameworkでモジュール単位でBootstrap.phpを使うとエラー(Warning)

どうも、俺@残業中です。
今日はZendFrameworkでモジュールディレクトリ直下にBootstrap.phpを設置するとエラーになる対処法です。

ZFのバージョンは1.10.4です。

モジュールディレクトリ下に設置したファイルは
<?php
class Module_Bootstrap extends Zend_Application_Module_Bootstrap {
}
です。
これだと
 Warning: include_once(FrontController.php) [function.include-once]: failed to open stream: No such file or directory in...
というエラーがでます。

どうやらこれ、
http://framework.zend.com/issues/browse/ZF-6658
で上がっているようなバグらしいのですが、バージョン1.9で修正されたような事が書いてあるのです。
あれ?俺は1.10使ってるけど、、、?
で見てると
http://framework.zend.com/issues/browse/ZF-7696
に、
Fixed in r22124
と書かれてます。

それを参考に
# vim Zend/Application/Bootstrap/BootstrapAbstract.php
348 if (false !== $pluginName = $this->_loadPluginResource($plugin, $spec)) {
349 if (0 === strcasecmp($resource, $pluginName)) {
350 return $this->_pluginResources[$pluginName];
351 }
352 continue; // ここ追加
の352行目を追加してあげれば良いようです。(たぶん)


以上でぇぇす。