coreserverでのphp mail()関数の第5引数のつけ方

10月 29th, 2007 admin

xreaやcoreserverは安い割りに高機能でいろいろお世話になっています。
しかしphpのmail()関数の第5引数がつけられない。

いろいろ調べたけどCGIで動かすしかないっぽいです。(モジュール版ではsendmailを直接開くこともできません)
PHPをCGIとして動かす方法について

当たり前ですが実行するユーザが変わるので、いったんセッションファイルやアップロードされたファイルを削除、もしくはchownしてやる必要があります。

CakePHP:日付から12星座を表示するヘルパー

10月 19th, 2007 admin

ヘルパーにマスターデータを入れておいていいのかって気もしますが・・・とにかく今までネットに公開されたCakePHPのヘルパーの中で一番使われないものであることは確実ですね。
12星座ってもっとスマートに求める方法はあるんでしょうか?

期待する状態

サンプル

< ?php
$str = “2007-01-03″;
echo $html->dateto12astro($str);
?>

出力

やぎ座

設置方法

/app/views/helpers/html.phpに(ない人はcakeフォルダからコピーしてもってくる)以下の関数を追加

	/*
	 * 日付を12星座に変換します。
	 * param:GNU » Date Input Formats  形式に準拠した日付文字列(例:yyyy-mm-dd)
	 */
	function dateto12astro($date){
		$str = intval(date("nd",strtotime($date)));
		switch ($str){
			case $str <= 119:
				return "やぎ座";
			break;
			case $str <= 218;
				return "みずがめ座";
			break;
			case $str <= 320;
				return "うお座";
			break;
			case $str <= 419;
				return "おひつじ座";
			break;
			case $str <= 520;
				return "おうし座";
			break;
			case $str <= 621;
				return "ふたご座";
			break;
			case $str <= 722;
				return "かに座";
			break;
			case $str <= 822;
				return "しし座";
			break;
			case $str <= 922;
				return "おとめ座";
			break;
			case $str <= 1023;
				return "てんびん座";
			break;
			case $str <= 1121;
				return "さそり座";
			break;
			case $str <= 1221;
				return "いて座";
			break;
			case $str <= 1231;
				return "やぎ座";
			break;
		}
		return false;
	}

関係ないですがWeb ad Fortune 12星座占いデータのWebAPIというのがあるんですね。占いサイトを始める人にはぴったり

WCAN 2007 autumnに参加してきます。

10月 18th, 2007 admin



WCAN 2007 autumnに参加させていただきます。

print_rを出力させない

10月 17th, 2007 admin

すごくガイシュツな感じですが、できるかなーと思って調べたらできたので嬉しかった。
第二引数にTRUEを与えてやればいいみたいです。

PHP: print_r - Manual
http://jp.php.net/print_r

サンプル

mail(”toyoshi@example.com”,”debug”,print_r($_SERVER,TRUE));

PHPSPOT開発日誌のphp で print_rの内容をファイルに書き出すを使えばvar_dumpとかも取得できそうですね。

マージソート

10月 2nd, 2007 admin

こんなことをやってるのが凄く恥ずかしくなってきたが続ける
マージソートも5秒台。クイックソートより安定しているそうだ(そりゃそうだ)
少なくともバブルソートからは脱出できて以前よりは幸せな気持ち

マージしているところのループが冗長な感じだなと思って本を見ていたらC言語のくせに僕の半分ぐらいの行数で済ませている。
グローバル変数を使ってるからできるのだろうか??お酒の酔いがさめたら見直してみたい。

require 'pp'
before = Time.now
t = Time.now
srand(t.sec ^ t.usec ^ Process.pid)

Num = 10000

def mergeSort(sort)
	length = sort.length
	if length <= 1 then
		return sort
	end

	halfPosition = length / 2

	#前半を入れる配列
	frontSort = Array.new
	halfPosition.times {
		frontSort.push(sort.shift)
	}

	frontSorted = mergeSort(frontSort)
	rearSorted = mergeSort(sort)

	#返すべき要素の数を数える
	loopNum = frontSorted.length + rearSorted.length

	result = Array.new

	#最初に比較する値
	r = rearSorted.shift
	f = frontSorted.shift

	loopNum.times{
		if r == nil
			result << f
			f = frontSorted.shift
			next
		end

		if f == nil
			result << r
			r = rearSorted.shift
			next
		end

		if r <= f
			result << r
			r = rearSorted.shift
			next
		end

		if f < r
			result << f
			f = frontSorted.shift
			next
		end
	}

	return result
end

#ランダムな値の入った配列を作成
sort = Array.new
Num.times{
	sort.push rand(Num)
}

#ソート前の出力
pp sort

sort = mergeSort(sort);

#ソート後の出力
pp sort

#処理時間
p Time.now - before