忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。



2025/11/24 12:24 |
Mantis1.2.5 メールを使わないでMantisを利用する
Mantisではことあるごとにメールを送信する仕様になっています。
http://www.alles.or.jp/~sogabe/mantis/manual/1.4.5.html
まあバグトラッキングシステムであるから当然といえば当然ですが。

ですがXAMPPでメールを送信するには外部SMTPサーバを使用したりMercuryを起動したりする必要があって面倒なので、メール無しで使えるようにしてみます。
ここに同じ改造をしている人がいましたが、残念ながらソースは公開していません。

config_inc.php
	$g_validate_email = 'OFF';
	$g_check_mx_record = 'OFF';
	$g_send_reset_password = 'OFF';
	$g_enable_email_notification = 'OFF';
$g_enable_email_notification = 'OFF'を指定すると新規ユーザ登録ができなくなります。
Mantisは新規ユーザ登録時、ユーザ名を登録するとパスワードを自動発行してメールで送付する仕組みになっているので、パスワードを自動発行するけどメールは送付しないようにします。

core/print_api.php
	# prints the signup link
	function print_signup_link() {
		if ( ( ON == config_get_global( 'allow_signup' ) ) &&
		     ( LDAP != config_get_global( 'login_method' ) ) &&
		     ( ON == config_get( 'enable_email_notification' ) )
		   ) {
			print_bracket_link( 'signup_page.php', lang_get( 'signup_link' ) );
		}
	}
	
	↓
	function print_signup_link() {
		if ( ( ON == config_get_global( 'allow_signup' ) ) &&
		     ( LDAP != config_get_global( 'login_method' ) )
		   ) {
			print_bracket_link( 'signup_page.php', lang_get( 'signup_link' ) );
		}
	}
パスワードはランダムに作成されているので、メールが送信されないと確認不能になります。
手っ取り早く初期パスワードをとりあえずメールアドレスと同じにしてしまいます。
公開サーバでこんなことやったらアウトですが、そんな状況であればメール送信できないってことがありえないのでまあいいでしょう。
何故IDではなくメアドかというと、パスワードを作成してる関数の引数にメアドがあってIDがないからというだけです。

core/authentication_api.php
	function auth_generate_random_password( $p_email ) {
		$t_val = mt_rand( 0, mt_getrandmax() ) + mt_rand( 0, mt_getrandmax() );
		$t_val = md5( $t_val );
		return utf8_substr( $t_val, 0, 12 );
	}
	↓
	function auth_generate_random_password( $p_email ) {
		return $p_email;
	}

	function auth_generate_confirm_hash( $p_user_id ) {
		$t_confirm_hash_generator = config_get( 'password_confirm_hash_magic_string' );
		$t_password = user_get_field( $p_user_id, 'password' );
		$t_last_visit = user_get_field( $p_user_id, 'last_visit' );
		$t_confirm_hash = md5( $t_confirm_hash_generator . $t_password . $t_last_visit );
		return $t_confirm_hash;
	}
	↓
	function auth_generate_confirm_hash( $p_user_id ) {
		return $p_user_id;
	}
これで完成!
さっそく登録。
SELECT * FROM `mantis_user_table` ;
id 6
username hoge
realname  
email dummy@example.com
password 32066a2f550b9a8b3f3c8b25c918de37
enabled 1
protected 0
access_level 25
login_count 0
lost_password_request_count 0
failed_login_count 0
cookie_string 32ff7a31ef3159f0d6be9e1e4fb6699b7b6a7aade80f86269e0768eb1e419579
last_visit 1304299714
date_created 1304299714

無事登録されました。
ではログイン!

あなたのアカウントが無効化もしくはブロックされているか、入力した利用者名かパスワードが間違っています。

あれ?

ちなみにログインチェックしてるのはcore/authentication_api.phpのauth_attempt_login()なのですが、無駄に超ややこしくて一体何をやってるのかよくわかりません。
誰かこの関数の動作を説明してくれ。
PR


2011/09/30 21:51 | Comments(2) | TrackBack() | PHP
ZF1.11 ZendX_JQuery
PHPをJQueryと連携できるようになります。
例によって日本語情報が全然ありませんので手探りで使ってみます。

jQuery自体についてはVer1.4.0以降更新が滞っていますがこちらのサイトが非常にわかりやすいです。
しかしZendX_JQueryが対応しているのは1.5.2以降のようです。残念。

さて、とりあえずインストール…ってところでいきなり躓いた。

なにしろリポジトリに置いてなければPearチャンネルにもない。

どういうことだと探し回ってみればこんなエントリを発見。

パッケージをダウンロードするとextras/libraryディレクトリ内にあるそうな。なんでだよ。

さて、extras/library/ZendX/JQueryは無事に見つかりました。
ついでにZendX/ConsoleとかZendX_Db_Adapter_Firebirdとか見つかりました。
そもそもZendXってなんだ?

http://framework.zend.com/manual/ja/coding-standard.naming-conventions.html
> Zend Framework 追加ライブラリの最上位レベルのディレクトリは "ZendX/" ディレクトリです。

うむ、意味がわからん。

ちなみにリポジトリでは違うディレクトリに置いてありました。

とりあえずPear/Zendディレクトリと並列にZendXディレクトリを配置。
これだけで最低限動作するはずです。
<?php
	
	//インクルード
		require_once('Zend/Form.php');
		require_once('ZendX/JQuery/Form.php');
		require_once('ZendX/JQuery/Form/Element/Slider.php');
		require_once('ZendX/JQuery/Form/Element/DatePicker.php');
	
	//Zend_Form
		$form = new ZendX_JQuery_Form();
		
		//スライダー
			$slider = new ZendX_JQuery_Form_Element_Slider('slider1', array('label' => 'Slider:'));
			$slider->setJQueryParams(array('defaultValue' => '75'));
			$form->addElement($slider);
		
		//日付選択
			$datepicker = new ZendX_JQuery_Form_Element_DatePicker('dp1', array('jQueryParams' => array('defaultDate' => '2007/10/10')));
			$form->addElement($datepicker);

	//出力
		print($form->__toString());

> Warning: Exception caught by form: UiWidgetElement decorator cannot render without a registered view object

お?

実はZendX_JQueryはZend_Viewが必須となっており、ZendX_JQuery単体あるいはZend_Formとだけ組み合わせるということができません。
というかZend_FormがZend_Viewを必要としています。
なんて迷惑な。

後半の出力部分を変更。
	//出力
		require_once('Zend/View.php');
		$view = new Zend_View();
		$view->addHelperPath("ZendX/JQuery/View/Helper", "ZendX_JQuery_View_Helper");
		print($form->render($view));
<form enctype="application/x-www-form-urlencoded" action="" method="post"><dl class="zend_form">
<dt id="slider1-label"><label for="slider1" class="optional">Slider:</label></dt>
<dd>
<div options="" id="slider1-slider"></div></dd>
<dt id="dp1-label"> </dt>
<dd>
<input type="text" name="dp1" id="dp1" value=""></dd></dl></form>
あれ?
jQueryParamsどこいった?

必要な要素が出力されないため、これでは使う意味がありません。
どうも使い方がわかりません。
誰か教えてください。


2011/09/26 22:56 | Comments(0) | TrackBack() | PHP
買ったものリスト 2011/09/25
つー助教授のシムシティ4が完結していたことに昨日気付いてうっかり見始めてしまい、気がついたらいつのまにやらえらい時間に。


Gears of War 3

TPSの最高峰GoW3、いよいよ発売。
まあ個人的に最高峰というと地球防衛軍なのですがそれはおいといて。
とりあえずキャンペーンをクリアしましたが、結局明かされないままとなった謎がかなり多いのでそこらへんを解決してくれる追加コンテンツなりGoW4なりを希望。
現在インセインで2周目をプレイ中。
ベルセルクやAct3の最後やAct4のストークが2本生えるところなどで何度も挫折しかけつつどうにかラスボスまで到達。
んだけどアダムが溶かされて終わる。
どうすりゃいいんだここ。

マルチはまだ全然やっていませんが、1や2同様熱い戦いが待っていそうです。

バージョンが色々あってよくわからなかったのですが店頭で適当に買ったらリミテッドエディションでした。
おまけはゲームと関係があるような無いような一部ある品とかですが、無駄に凝ってます。

だが説明書があれはあんまりだろう。
おまけ作る暇があったら説明書にも労力を分けてくれよ。
たしかにGoW3を買うような層でネットに接続環境がないなんて人はいないだろうけどさあ、やはりまだまだ物理的媒体は必要です。


ソード・ワールド2.0リプレイ マージナル・ライダー1
ソード・ワールド2.0リプレイ マージナル・ライダー2
ソード・ワールド2.0リプレイ マージナル・ライダー3
ソード・ワールド2.0リプレイ マージナル・ライダー4
☆☆☆

激しく微妙。
魔封に比べればまだましなんだが、読んでてどうにも面白くない。
どこがどうと言われると困るんですが、なんか読んでて苛々するんですよね。
SW2.0のリプレイはいまいち外れが多くて困る。


2011/09/26 03:23 | Comments(0) | TrackBack() | 買ったもの
今週の実績 2011/09/25
Sacred 2 Fallen Angel 実績1000/1000達成

2011/09/24の実績

Gears of War 3

レベル 10 10
レベル 10 に到達した

まだまだ行ける 50
難易度カジュアルまたはノーマルでストーリーモードをクリアした

くたばった! 二度と起きるなよ 10
ミラを倒した

どうだ、静かになった。これでいい 10
アダム フェニックスを救出した

見ろよ、一瞬で夏だ 10
メールシュトローム発生装置を止めた

アズラへようこそ  10
メールシュトロームを潜り抜け、アズラを見つけた

ベアードが喜びそうなオモチャだな! 10
潜水艦を発進させた

コレクター 5
42 種類中 5 個の収集品を手に入れた

大丈夫なのか? 10
エンデバー造船所に向かうための燃料を確保した

固い絆 10
燃料ポンプを発見し、作動

2011/09/23の実績

Gears of War 3

対戦へようこそ! 10
Team Deathmatch で敵を 10 体倒した

レベル 5 5
レベル 5 に到達した

ランベント化 50
感染したプレイヤーを処刑して、自分がランベント化しつつある

俺の安全運転はどんなもんだ! 10
アンヴィル ゲートからマーシーまでドライブした

これでよかったのか? 10
ランベントベルセルクを倒した

アンヴィル ゲート ラスト リゾート 10
ローカストの攻撃からアンヴィル ゲートを守った

ご搭乗ありがとうございます 10
なんとかアンヴィル ゲートに辿り着いた

よっしゃ、まるで海賊みたいだな! 10
アンヴィル ゲートに向かうため、ローカストの飛行船を奪った

さあ、ホフマンに会いに行こう 10
アダム フェニックスの居場所を突き止めた

科学的に言うとな... 10
橋の上からランベントリバイアサンを吹っ飛ばした

ここはオレの庭、クーガースのホームだ! 10
クーガー スタジアムを守り脱出した

掘り出し物だぜ! 10
ハノーバーで食糧と弾薬を見つけた

ドロドロのやつらにまみれて溺れちまうぞ! 10
レイヴンズ ネストをランベントリバイアサンから守った

マーカス、お父様よ 5
悪い夢から目が覚めた

ビッグ リーグへようこそ  0
スタンダードの対戦に臨めるようになった

2011/09/22の実績

コール オブ デューティ ブラックオプス

癒えない傷もある 10
過去から脱出する。

ブロークン・イングリッシュ 10
九龍から脱出する。

ダブルトラブル 10
デュアル武器だけを使って九龍から脱出する。

2011/09/21の実績

コール オブ デューティ ブラックオプス

SOGの力 10
亡命者と機密文書をフエ市から回収する。

銃弾の雨 15
フエ市において、航空支援により20人の北ベトナム軍兵士を倒す。

内なる竜 15
ドラゴンブレス弾で10人の北ベトナム軍兵士を倒す。

見た目は二の次 10
ケサンの戦いにおいて包囲網を破る。

安全な場所 10
ソビエトの宇宙計画を妨害する。

2011/09/20の実績

Sacred 2 Fallen Angel

Master Cartographer 25
Any Hero has explored 50 % of the map.

Polytheist 30
Any Hero has discovered all 20 temples.

Ascaron Fan 30
Any Hero has found the secret halls of Ascaron.

Fashion Police 20
Any Hero wearing a complete armor set for the first time.

Hospitable 10
You have hosted your first multiplayer game.

2011/09/19の実績

Sacred 2 Fallen Angel

Legendary Perseverance 40
Any Hero reaching difficulty level Niob.

City Guide 20
Any Hero has visited all 42 towns.

Radiant Silvergun

ソードマスター 30
1ステージをソードだけでクリアする


2011/09/25 16:28 | Comments(0) | TrackBack() | 実績
買ったものリスト 2011/09/18
シューティングゲームの伝説、レイディアントシルバーガンが2011年9月14日ついに配信開始となりました。
早速プレイしてみたものの、ものの見事に操作方法からパターンまで忘れ去っていました。
前面6ボタンのサターンパッドから前面4ボタンのXBOXパッドになったことでCとABが反射的に出せないわRTがボタンじゃなくてトリガーなせいでソードの連射が出来なかったりとなんだか駄目駄目です。
かわりにRAPを試してみたものの、実はアーケード出身じゃないので(アケシューでやりこんだのはレイフォースと19XXくらい)これまたさっぱり操作ができません。

どうする。さあどうする。


ホリパッドEX2ターボ

ヨドバシに行ったらたまたま売ってるのを見かけたので思わず買ってしまいました。
前面6ボタンパッドです。
これでサターンの腕前が復活!かと思いきやパターンを覚えていないのは相変わらずでした。

あとAmazonの評価が非常に悪いのですが、私のところでは現状異常は発生していません。
ですのでこのまま今後も何も起こらなければとりあえず満足かな。
まあスティックを全く使っていないせいかもしれませんが。


DUNAMIS15

ヨドバシに行った本来の目的はこれです。
クローンとかループとか視線とか反応せざるを得ないキーワード満載でこれは買わなければ嘘だ。

なんだけど今はずっとシルバーガンとSacred2だし来週からはGoW3だし何時プレイしろと言うんだ!

限定版特典はヘッドホンでした。
嘘発見器よりは実用的かもしれませんが、自宅では使わないし通勤電車内で密着しないヘッドバンド型ヘッドホンとか大迷惑で使う場面がないんだよな。
まあ使う場面があったら使うのかと言われても使わない気がしますが。


ドラゴンクエスト25周年記念 ファミコン&スーパーファミコン ドラゴンクエストI・II・III

もう一つの目的がこちら。
オールドゲーマーとしては購入せざるを得ないFC版ドラクエ123、SFC版123のセット商品です。
おまけはこれまた昔懐かしファミコン神拳復刻版と実物大小さなメダル。
とまあ基本的に懐古向けタイトルで、FC版2とか今更プレイできるかって言われてもとてもやってられませんが、記念として取っておく価値のあるタイトルです。
映像資料なども収録されており、むしろ任天堂謹製のマリオコレクションのほうが比較するとガッカリなかんじという有様。
悪いことは言わんからとりあえず入手しとけ。


ドラゴンクエスト 25周年記念BOOK

本体にも一部入っていましたが、こちらはファミコン神拳の当時の記事がそのまま電子書籍およびPDFとして納められています。
さらにちょっと勇者の手足が細すぎる気のする鳥山明書き下ろし壁紙も。
本紙は1~3だけではなく9まで、そして10の情報も収録されています。
目玉はすぎやまこういちインタビュー。
ちょっとそれ洒落になってないんですが……


東方神霊廟 ~ Ten Desires.

私はコミケに行かないので、店売りが始まった今になってようやく購入です。
だからどうして銀銃と同時に解禁するんだ。

紅妖永風:Lunatic、Ex(Ph)クリア
地:Exクリアできず
霊:Ex出せず

と年々腕が如実に悪化してるっぽいのでリハビリを行いたいんだが暇がさ。
今回は永夜抄にあったスペルプラクティスが復活しているというので期待はしているのですが、当時はフェニックス再誕中避けとかスカーレットディスティニー微動避けとか色々やってたんだけどさすがに今からそこまでやる気力は残ってないだろうなあ。


2011/09/18 20:32 | Comments(0) | TrackBack() | 買ったもの
今週の実績 2011/09/18
2011/09/17の実績

Radiant Silvergun

アーケードクリア 15
アーケードモードをクリア

Sacred 2 Fallen Angel

Tomb Raider 30
Any Hero has read 100 epitaphs (graves).

Hawker 10
You successfully traded with another user.

The Living Monument 20
Your Temple Guardian reaches Level 15.

2011/09/15の実績

Radiant Silvergun

MAXチェーン 20
チェーンボーナスで100,000点を獲得する

2011/09/14の実績

Radiant Silvergun

完全破壊 10
ボスを100%で破壊する

ランクイン 10
ランキングにスコアを送信する

ハイパーソード 5
ハイパーソードを使用する

MERRY 5
シークレットボーナスを発見する

Sacred 2 Fallen Angel

The Dreadful 20
Your Inquisitor reaches Level 15.

2011/09/11の実績

Sacred 2 Fallen Angel

Heroic Perseverance 30
Any Hero reaching difficulty level Platin.


2011/09/18 18:14 | Comments(0) | TrackBack() | 実績
ZF1.11 Zend_Db_SelectのorWhere()の例がどうかしてる件
http://framework.zend.com/manual/ja/zend.db.select.html

>  例19 orWhere() メソッドの例
> $select = $db->select()
>  ->where('price < ?', $minimumPrice)
>  ->orWhere('price > ?', $maximumPrice);


これはよくある作りで問題無い。

> 例20 論理式を括弧で囲む例
> $select = $db->select()->where("price < $minimumPrice OR price > $maximumPrice")


なんでいきなりベタ書きになってんだよ。
$db->select()->where("price < ? OR price > ?", array($minimumPrice, $maximumPrice))
って書くべきだろそこ。

ちなみにZend_Db_Selectでは"SELECT * FROM hoge WHERE A AND (B OR C)"というSQLが普通には作れません。
$db->select()->where('A')->where('(B')->orWhere('C)');
とアクロバティックな書き方をする必要があります。

なんで?


2011/09/16 22:45 | Comments(0) | TrackBack() | PHP
ZF1.11 Zend_Loaderでオートローダー
機能が似ていることもあり、Zend_Loaderからspl_autoload_register()を操作することができます。

http://framework.zend.com/manual/1.11/ja/zend.loader.load.html
> Autoloader の使用法
> そのコールバックメソッドが Zend_Loader::autoload() です。
> 利便性を考慮して、 Zend_Loader では registerAutoload() 関数を提供しています。


って書いてあるんだけど実際registerAutoload()には
public static function registerAutoload($class = 'Zend_Loader', $enabled = true)
   trigger_error(__CLASS__ . '::' . __METHOD__ . ' is deprecated as of 1.8.0 and will be removed with 2.0.0;
    use Zend_Loader_Autoloader instead', E_USER_NOTICE);
}
って書いてあります。
よってZend_Loader_Autoloaderを使ってみたいと思いますが、マニュアルが和訳されていないので手探りでやってみます。
<?php
	//オートロード用関数
	function autoload1($className){
		class AutoLoad1{}
	}
	
	//Zend_Loader_Autoloader
		require_once('Zend/Loader/Autoloader.php');
		$autoLoader = Zend_Loader_Autoloader::getInstance();
	
	//ZFのパスをセット
		$autoLoader->setZfPath('C:\xampp\php\PEAR','1.2.2');
	
	//NotFoundエラーの発生抑止
		$autoLoader->suppressNotFoundWarnings(true);
	
	//pushAutoloader
		$autoLoader->pushAutoloader('autoload1');
	
	//オートロード
		new Zend_Filter_Word_DashToSeparator('/');
		new AutoLoad1();
実はZend_Loader_Autoloader::getInstance()した時点でZendフレームワークについては自動的にオートロードが適用されます。
今後、前回までのようにZend_Loader::loadClass($className)を書く必要はありません。
ただ何故かPearのクラスは適用範囲外になります。

setZfPath()はZendFrameworkのパスを指定します。
特徴的なのは第二引数を指定することで任意のバージョンをセットできるというところです。
過去バージョンでの動作確認などを簡単に行えます。
ただ何故かディレクトリ名の許容範囲がやたらと狭く、例のような引数を与えた場合、ディレクトリ名が
"C:\PEAR/ZendFramework-1.2.2/library"あるいは"C:\PEAR/1.2.2-minimal"のような形に勝手に決まってしまいます。
http://framework.zend.com/manual/1.11/ja/zend.loader.autoloader.html#zend.loader.autoloader.zf-version
任意のパスを登録することができません。
何故だ。

pushAutoloader()でオートロード用関数を登録します。
http://framework.zend.com/manual/1.11/ja/zend.loader.load.html#zend.loader.load.autoload
使い方は基本的にspl_autoload_register()と同じです。

どうもいまいち便利なのかよくわからないクラスだ。
普通に使う分にはspl_autoload_register()のほうが手っ取り早いので、あくまでsetZfPath()を使用しての開発用・動作検証用というスタンスのクラスではないかと思われます。


2011/09/12 23:41 | Comments(0) | TrackBack() | PHP
買ったものリスト 2011/09/11

アリエナイ理科の実験室 薬理凶室
☆☆☆☆☆

アリエナイシリーズ久々の新刊。
オライリー肝いりのMad Scienceがガッカリだったこともありいやが上にも期待は高まりますが、その期待を裏切らないマッドな日曜大工が多数紹介されています。
子供が求めているのはペットボトルロケットじゃなくてエグゾーストキャノンだ、という身も蓋もない理論で鉄をも溶かす七輪や二ヶ月臭わない超消臭スプレー、そしてケミカルクッキングなどの作り方が詳細に解説されています。
あと、ケミカルクッキングの動画で持ってる巨大メスも。

正直自分でやるかっていえばやりませんが、こういうのは見てるだけでも楽しいですね。


葵 ヒカルが地球にいたころ……(1) 野村 美月
夕顔 ヒカルが地球にいたころ……(2)
☆☆☆☆☆

冷静で理性的な女たらしなんて生半可な作家が描こうものならただウザいだけの下衆野郎になって大惨事が発生するのは目に見えていますが、そこはさすがの野村美月、見事な筆力でヒカルを、是光を、葵を夕雨を帆夏を描き切ります。

さて、本作はタイトルからわかるとおり源氏物語を下敷きとしています。
葵、夕顔、そして予告の第三巻では若紫って全54部も作る気か-!
ってそういえば源氏物語の原作読んだこと無かった。
なので原作にどの程度沿っているのかはよくわかりません。

ん、こんな台詞前にも言ったような。
あのときは原作まで手を出しましたが、さすがに源氏物語全話は厳しいのでなんジャパで勘弁してください。


まおゆう魔王勇者「この我のものとなれ、勇者よ」「断る!」1 石田 あきら
☆☆☆☆

絵が付いただけで、小説そのまんまです。
ほぼコピペじゃないか、ってレベルで同じです。
原作が素晴らしいだけに漫画になっても面白いのは確かなのですが、あまりにもオリジナリティがなさ過ぎて原作既読者には全く読む意味がなくなっています。
あとは漫画になったことによって情報量が格段に減り、ずいぶん展開が端折られています。
それでも1巻の1/3も進まないって、今後どんどん密度が増すってのにいったい何巻かける気だ。


コールオブデューティ ブラックオプス 字幕版

MW2で誤訳が酷かったのと、字幕版吹き替え版となんかせこい商売のせいで発売日に買う気が失せていたのですが、廉価版が発売されたのでようやく購入。

あかんなんか酔う。
FPSが久しぶりなせいなのか演出のせいなのかなんかよくわからないがちょっと続かない。
しばらくすれば慣れるんだろうけど来週銀銃再来週GoWと忙しすぎるので後回しかなあ。

CoDは2だったかモダンウォーフェアだったかを初めて見たときに圧倒的な映像美に驚いたんですが、今回もグラフィックはかなり凄いものがあります。
そのぶん敵が見えないくらい遠くから撃ってきてさくさく殺されるのはちょっとわかんねえよ。
もう少し暇があればのう。

マルチもちょろっとだけやってみましたが、なんかモードが多すぎてよくわからん。
ランダムでルール入れ替えとかそんなのはないのか?


2011/09/11 20:28 | Comments(0) | TrackBack() | 買ったもの
今週の実績 2011/09/11
2011/09/04の実績

Sacred 2 Fallen Angel

Vengeful Spirit 20
Your Shadow Warrior attaining Level 15.

Treehugger 20
Your Dryad attaining Level 15.


2011/09/11 20:15 | Comments(0) | TrackBack() | 実績

<<前のページ | HOME | 次のページ>>
忍者ブログ[PR]