memo.xight.org

日々のメモ

ハリー・ポッターの呪文一覧

Reference

The Three Owls - 賢者の石
http://thethreeowls.boyfriend.jp/movie.book.1.html

The Three Owls - 秘密の部屋
http://thethreeowls.boyfriend.jp/movie.book.2.html

The Three Owls - アズカバンの囚人
http://thethreeowls.boyfriend.jp/movie.book.3.html

The Three Owls - 炎のゴブレット
http://thethreeowls.boyfriend.jp/movie.book.4.html

The Three Owls - 不死鳥の騎士団
http://thethreeowls.boyfriend.jp/movie.book.5.html

Wikipedia - ハリー・ポッターシリーズの魔法一覧

Visual Studio 2005 Express Edition 無償公開期間が無期限に

Reference

Visual Studio 2005 Express Edition
http://www.microsoft.com/japan/msdn/vstudio/express/
窓の杜 - 「Visual Studio 2005 Express Edition」日本語正式版の一般向け無償公開開始
http://www.forest.impress.co.jp/article/2005/12/16/visualstudioex.html
窓の杜 - 「Visual Studio 2005 Express Edition」の無償提供期間が1年から無期限へ変更
http://www.forest.impress.co.jp/article/2006/04/20/visualstudioex.html

リンクをマウスオーバーでサムネイルをポップアップ

Source

function linkthumb(){
	var nophoto = 'http://img.simpleapi.net/img/nophoto.gif';
	var img = document.createElement('img');
	img.src = nophoto;
	img.onmouseout = function(){
		img.src=nophoto;
		img.style.display='none';
	};
	img.style.position = 'absolute';
	img.style.cursor   = 'pointer';
	img.style.display  = 'none';
	document.body.appendChild(img);
	var d = document.getElementsByTagName('div');
	for (var j = 0 ; j < d.length ; j++){
		if (d[j].className != 'body') continue;
		var a = d[j].getElementsByTagName('a');
		for (var i = 0 ; i < a.length ; i++){
			if (!a[i].href.match(/^http:/)) continue;
			if (a[i].href.match("^http://www\.example\.org/path/to/dir/")) continue;
			a[i].onmouseover=function(e){
				var link  = this.href;
				var thumb = 'http://img.simpleapi.net/small/'+link;
				img.onmouseover=function(){
					img.src=thumb;
					img.style.display='block';
				};
				img.onclick = function(){
					location.href=link;
				};
				if(document.all){
					img.style.left = document.documentElement.scrollLeft + event.x + "px";
					img.style.top  = document.documentElement.scrollTop  + event.y + "px";
				}else{
					img.style.left = e.pageX + "px";
					img.style.top  = e.pageY + "px";
				}
				img.src = thumb;
				img.style.display = 'block';
			};
			a[i].onmouseout = img.onmouseout;
		}
	}
}
if(window.addEventListener){
	window.addEventListener('load',linkthumb,false);
} else if(window.attachEvent){
	window.attachEvent('onload',linkthumb);
} else {
	window.onload=linkthumb;
}


以下の部分を適宜書き換えることで,自分のサイトはポップアップさせないように設定可能.
if(a[i].href.match("^http://www\.example\.org/path/to/dir/")) continue;


Reference

Simple API - ウェブサイト・サムネイル化ツール
http://img.simpleapi.net/

via

halchan's diary
http://www.halchan.org/diary/

Smarty + HTML_QuickForm で 簡単フォーム生成

HTML_QuickFormのインストール

# pear install HTML_Common HTML_QuickForm

Sample (index.php)

HTML_QuickForm利用の手引きより
<?php
// ページを作成するのに使うライブラリの読み込み
require_once 'HTML/QuickForm.php';
require_once 'HTML/QuickForm/Renderer/ArraySmarty.php';
require_once 'smarty/libs/Smarty.class.php';

// Formの作成
$form = new HTML_QuickForm('secondForm');
$form->setDefaults(array(
	'name' => 'Namahage'
));

$form->addElement('header','second','QuickForm second example');
$form->addElement('text','name','Enter your name:', array('size' => 50, 'maxlength' => 255));
$form->addElement('submit','submit','Send');
$form->addElement('reset','reset','Reset');
$form->addRule('name','Please enter your name','required',null,'client');

if ($form->validate()) {
	// Formが正しかったらfreezeする
	$form->freeze();
}

// Smartyの設定
$smarty = new Smarty;
$smarty->template_dir = "./templates";
$smarty->compile_dir = "./templates_c";
$smarty->cache_dir = "./cache";

// Render関連の設定
$renderer =& new HTML_QuickForm_Renderer_ArraySmarty($smarty);
$form->accept($renderer);
$smarty->assign('form',$renderer->toArray());

// 表示
$smarty->display('index.tpl');
?>


Sample (templates/index.tpl)

HTML_QuickForm利用の手引きより
{* Smarty *}
<html>
	<head>
		{$form.javascript}
	</head>
	<body>
		<form {$form.attributes}>
			{$form.hidden}
			<h1>{$form.header.second}</h1>
			{$form.name.label}: {$form.name.error}{$form.name.html}<br>
			{$form.reset.html}
			{$form.submit.html}
		</form>
	</body>
</html>


Reference

PEAR初心者ガイド - HTML_QuickForm入門
http://www.planewave.org/translations/quickform/html_quickform.html
HTML_QuickForm利用の手引き
http://www.is.titech.ac.jp/~yanagis0/kei/quickform.html

Smarty : Template Engine
http://smarty.php.net/

HTML_QuickForm
HTML_QuickForm

PHPでExcelを読み書きする

Reference

IBM dW : オープンソース : PHPでExcelデータを読み書きする
http://www-06.ibm.com/jp/developerworks/opensource/051104/j_os-phpexcel.shtml?ca=drs-
minfish.jp/blog: PHPでExcelファイルの入出力
http://www.minfish.jp/blog/archives/2006/01/phpexcel.html

Spreadsheet_Excel_Writer

PHP Classes - Class: Spreadsheet_WriteExcel
http://psbweb.mirrors.phpclasses.org/browse.html/package/767.html

Niceform できれいなフォーム生成

source

<script language="javascript" type="text/javascript"
src="niceforms.js"></script>
<style type="text/css" media="screen">@import
url(niceforms-default.css);</style>

Reference

badboy.media.design :: articles :: Niceforms
http://www.badboy.ro/articles/2005-07-23/

via

phpspot開発日誌 - Niceformでエレガントなフォーム生成
http://phpspot.org/blog/archives/2006/04/niceform.html

PHP で DOM を使って HTML を出力

準備

# aptitude install php4-domxml


PHPをソースから入れている場合

php.iniを編集

extension_dir = "/usr/lib/php4/20020429"

sample

// 文章を生成する
$doc = domxml_new_doc("1.0");

$root = $doc->create_element("html");  // ルートとなる要素生成 (<html>タグ)
$root->set_attribute('lang','ja');     // <html>タグに lang 属性を追加
$root = $doc->append_child($root);

// <head>タグ生成
$head = $doc->create_element("head");
$head = $root->append_child($head);

// <title>タグ生成
$title = $doc->create_element("title");
$title = $head->append_child($title);

// <title>タグの中にテキスト挿入
$text = $doc->create_text_node("This is the title");
$text = $title->append_child($text);

// HTMLを出力
echo $doc->html_dump_mem();


output (インデント付与)

<html lang="ja">
  <head>
    <title>This is the title</title>
  </head>
</html>


応用例

都道府県の一覧の<select>タグを出力
function generateSelectHtml($items,$id,$default){
	$doc = domxml_new_doc("1.0");
	$root = $doc->create_element('select');
	$root->set_attribute('name',$id);
	$root->set_attribute('id',$id);
	$root= $doc->append_child($root);
	
	// 初期表示のテキストが設定されていたとき
	if (!empty($default)){
		$option = $doc->create_element('option');
		$option->set_attribute('value','');
		
		if(empty($_SESSION[$id])){
			$option->set_attribute('selected','selected');
		}
		
		/* Add text node */
		$text = $doc->create_text_node($default);
		$option->append_child($text);
		
		$root->append_child($option);
	}

	foreach($items as $i){
		$option = $doc->create_element('option');
		$option->set_attribute('value',$i);
		
		if ($_SESSION[$id] == $i){
			$option->set_attribute('selected','selected');
		}
		
		/* Add text node */
		$text = $doc->create_text_node($i);
		$option->append_child($text);
		
		$root->append_child($option);
	}
	return $doc->html_dump_mem();
}

function generatePrefSelectHtml(){
	$default = '都道府県を選択してください。';
	$items = array(
	'北海道',
	'青森県',
	'岩手県',
	'宮城県',
	'秋田県',
	'山形県',
	'福島県',
	'茨城県',
	'栃木県',
	'群馬県',
	'埼玉県',
	'千葉県',
	'東京都',
	'神奈川県',
	'新潟県',
	'富山県',
	'石川県',
	'福井県',
	'山梨県',
	'長野県',
	'岐阜県',
	'静岡県',
	'愛知県',
	'三重県',
	'滋賀県',
	'京都府',
	'大阪府',
	'兵庫県',
	'奈良県',
	'和歌山県',
	'鳥取県',
	'島根県',
	'岡山県',
	'広島県',
	'山口県',
	'徳島県',
	'香川県',
	'愛媛県',
	'高知県',
	'福岡県',
	'佐賀県',
	'長崎県',
	'熊本県',
	'大分県',
	'宮崎県',
	'鹿児島県',
	'沖縄県',
	);
	return generateSelectHtml($items,'pref',$default);
}


usage

<?php echo generatePrefSelectHtml() ?>


Reference

PHP: DomDocument->html_dump_mem - Manual
http://jp.php.net/manual/ja/function.domdocument-html-dump-mem.php

Windows Script Decoder - Windows Script Encoder ファイルをデコード

Windows Script Encoder[2006-04-17-12]でエンコードされたスクリプトをデコードするソフトウェア

Reference

Windows Script Decoder
http://www.virtualconspiracy.com/?page=scrdec/intro

via

MOONGIFT - Windows Script Decoder
http://fw.moongift.jp/intro/i-1539.html
MOONGIFT - Windows Script Decoder レビュー
http://fw.moongift.jp/review/i-1545.html

Windows Script Encoder - VBScript,JScriptを難読化

Summary

スクリプトエンコーダは,スクリプト設計者のためのシンプルなコマンド ライン ツール.
作成したスクリプトをエンコードし,Web ホストや Web クライアントによりスクリプトのソースが表示されたり変更されないように保護できる.
コードがユーザーの目に触れるのを防ぐことが目的.
コードが解読されるのを防ぐことを目的としているものではない.

usage

screnc [/s] [/f] [/xl] [/l defLanguage] [/e defExtension] inputfile outputfile

/? ヘルプ
/s サイレントモード
/f 入力ファイルを出力ファイルで強制上書き
/xf .ASP ファイルの先頭に @language ディレクティブが追加されないようにする.
デフォルトでは .ASP ファイルに対して @language ディレクティブが追加される.

ファイル名が変わる

使用前 使用後
example.vbs eample.vbe
example.js eample.jse

HTMLへの埋め込み (Internet Explorer限定)

<script language="JScript.Encode" src="example.jse"></script>


Reference

Windows Script Encoder
http://www.microsoft.com/downloads/details.aspx?FamilyID=2976ee94-bec5-4314-84fd-8d7ec891c1c5&DisplayLang=ja
Microsoft ダウンロードセンター検索: Windows Script Encoder
http://www.microsoft.com/downloads/results.aspx?freetext=Windows%20Script%20Encoder&displaylang=ja

MSDN - スクリプト エンコーダの概要
http://msdn.microsoft.com/library/ja/script56/html/seconscriptencoderoverview.asp
MSDN - スクリプト エンコーダを使用する
http://msdn.microsoft.com/library/ja/script56/html/seusingscriptencoder.asp
MSDN - スクリプト エンコーダの構文
http://msdn.microsoft.com/library/ja/script56/html/seconscriptencodersyntax.asp

via

MOONGIFT - Windows Script Encoder
http://fw.moongift.jp/intro/i-1538.html
MOONGIFT - Windows Script Encoder レビュー
http://fw.moongift.jp/review/i-1541.html

RPGツクール for Mobile

Summary

iアプリ対応RPGを制作できるRPGツクールが無償公開.

動作環境

o Java 2 SDK
o iαppli Development Kit for DoJa-3.5

Reference

ツクールweb - RPGツクール for Mobile
http://www.enterbrain.co.jp/tkool/mobile_rpg/

via

窓の杜 - エンターブレイン、iアプリ対応RPGを制作できる“RPGツクール”を無償公開
http://www.forest.impress.co.jp/article/2006/04/17/rpgtkoolmobile.html

FirefoxやThunderbirdのメモリ消費量を劇的に減らす方法

Summary

Firefox ならば about:config を開く.
Thunderbirdならば [ツール] - [オプション...] - [詳細]タブ - [設定エディタ]ボタンから設定.

真偽値 config.trim_on_minimize を作成し, true に設定する.
その後, Firefoxを再起動.

最小化時にメモリを開放するようになる.

Reference

GIGAZINE - FirefoxやThunderbirdのメモリ消費量を劇的に減らす方法
http://gigazine.net/?news/comments/20060415_firefoxthunderbird/

ファイナルファンタジーIII Nintendo DS版をチェック

Summary

Wikipediaを見る限り,Wi-Fiコネクションに対応するとの事.
要チェック!

Reference

ファイナルファンタジー III: ゲーム
Wikipedia - ニンテンドーWi-Fiコネクション

ファミ通.com - 完全リメイク版『ファイナルファンタジーIII』はニンテンドーDSで発売決定!
http://www.famitsu.com/game/news/2005/10/05/103,1128507368,44284,0,0.html
FINAL FANTASY IV ADVANCE
http://www.square-enix.co.jp/ff4a/

MOTHER 1+2 を購入 & MOTHER3,ニュー・スーパーマリオブラザーズ,メトロイド プライム ハンターズ を予約

MOTHERシリーズ は Gameboy Advance用

Amazon - バリューセレクション MOTHER 1+2: ゲームAmazon - MOTHER3: ゲーム

Nintendo DS 用

メトロイドプライムハンターズは Wi-Fiコネクション に対応した FPS らしいので即購入.

Amazon - ニュー・スーパーマリオブラザーズ: ゲームAmazon - メトロイド プライム ハンターズ: ゲーム

Reference

バリューセレクション MOTHER 1+2: ゲーム
MOTHER3: ゲーム
ニュー・スーパーマリオブラザーズ: ゲーム
メトロイド プライム ハンターズ: ゲーム

初代Googleのアルゴリズム解説

Summary

PRはページランク.
PR(A)はAというページのページランク.
Tn はページAへのリンク数.
C(A)はAから外へのリンク数.

dは定数で,ここでは0.85とする.
行き止まりのページや,類似したページ郡を考慮するために用いる.

$$PR(A) = (1-d) + d (PR(T1)/C(T1) + ... + PR(Tn)/C(Tn))$$

ページランク以外のアルゴリズム要素
1. 地理的情報
IPアドレスで地域をまとめる.
地域が近いページ間は同じ言語圏である可能性が高い.
日本から検索した場合,IPアドレスから日本と推測されたページのランクを情報させておく.

2. ビジュアル要素
文字のサイズ,文字の位置がページの上の方にあれば高評価.

3. キャッシュ
クロール時のページランクが検索結果と乖離しないよう,
クロール時のページをキャッシュしておくことで,
クロール時のページランクを得たページを閲覧することが可能.

Reference

Stanford University - The Anatomy of a Search Engine
http://infolab.stanford.edu/~backrub/google.html

Google! (初代Google)
http://web.archive.org/web/19981202230410/http://www.google.com/

via

GIGAZINE - 初代Googleのアルゴリズム解説
http://gigazine.net/index.php?/news/comments/20060411_google/

XOOPS Protector

Summary

以下の攻撃を防ぐためのXOOPS モジュール.

  - DoS
  - 悪意あるクローラー (メール収集ボットなど)
  - SQL Injection
  - XSS (一部のパターンのみ)
  - システムグローバル変数汚染
  - セッションハイジャック
  - ヌルバイト攻撃
  - ディレクトリ遡り指定
  - いくつかの危険なCSRF (XOOPS 2.0.9.2以下に存在するもの)

mainfile.php の変更

define('XOOPS_GROUP_ADMIN', '1');
define('XOOPS_GROUP_USERS', '2');
define('XOOPS_GROUP_ANONYMOUS', '3');

include( XOOPS_ROOT_PATH . '/modules/protector/include/precheck.inc.php' );
if (!isset($xoopsOption['nocommon'])) {
    include XOOPS_ROOT_PATH."/include/common.php";
}
include( XOOPS_ROOT_PATH . '/modules/protector/include/postcheck.inc.php');


Reference

XOOPS Cube公式サイト - モジュール / ハック - XOOPS Protector
http://jp.xoops.org/modules/mydownloads/singlefile.php?cid=6&lid=131

SP+メーカー - アップデートを適用したブート可能なISOイメージ作成ソフト

Summary

Windows 2000/XP/Server 2003 に Service Pack やその後にリリースされたアップデートを適用させた
ブート可能なISOイメージを作成するGUIベースのソフト

- Reference
A.K Office - オリジナル作品 - ソフトウェア - SP+メーカーの説明
http://www.ak-office.jp/original/soft/winsppm.html
Vector - SP+メーカー
http://www.vector.co.jp/soft/winnt/util/se332861.html

XOOPSのテーマ配布サイト

OCEAN-NET

XOOPSのオリジナルテーマを配布.
商用利用は 1テーマ 3000円

OCEAN-NET OFFICIAL SITE
http://hello.oceannet.jp/
OCEAN-NET - 商用利用の際のご案内
http://hello.oceannet.jp/license/
OCEAN-NET - デザイン工房 (商用利用のためのデモサイト)
http://labo.oceannet.jp/demo/

BCOOL

XOOPSのオリジナルテーマをCreative Commonsライセンスで配布.
商用利用は要相談.

BCOOL - デモサイト
http://demo.2bcool.net/
BCOOL - XOOPS テーマ ダウンロード
http://2bcool.net/modules/mydownloads/

jigdo を利用して Debian GNU/Linux を 最新のパッケージ,カーネルでインストールする

Summary

jigdo を利用すると,最新のパッケージ,カーネルのISOイメージを簡単に作成できる.

手順

1. インストールCDの作成
jigdo-fileをインストール,起動

# aptitude install jigdo-file
% jigdo-lite

jigdoファイルのURIは以下を指定
http://cdimage.debian.org/debian-cd/3.1_r1/i386/jigdo-cd/debian-31r1-i386-binary-1.jigdo

Jigsaw Download "lite"
Copyright (C) 2001-2004  |  jigdo@
Richard Atterer          |  atterer.net
Getting mirror information from /etc/apt/sources.list

-----------------------------------------------------------------
To resume a half-finished download, enter name of .jigdo file.
To start a new download, enter URL of .jigdo file.
You can also enter several URLs/filenames, separated with spaces,
or enumerate in {}, e.g. `http://server/cd-{1_NONUS,2,3}.jigdo'
jigdo: http://cdimage.debian.org/debian-cd/3.1_r1/i386/jigdo-cd/debian-31r1-i386-binary-1.jigdo

Downloading .jigdo file

jigdoファイルのダウンロード後,スキャンするパスを聞いてくる.
Enter のみ入力.

-----------------------------------------------------------------
Images offered by `http://cdimage.debian.org/debian-cd/3.1_r1/i386/jigdo-cd/debian-31r1-i386-binary-1.jigdo':
  1: 'Debian GNU/Linux 3.1 r1 "Sarge" - Official i386 Binary-1 CD' (debian-31r1-i386-binary-1.iso)

Further information about `debian-31r1-i386-binary-1.iso':
Generated on Tue, 20 Dec 2005 00:33:52 +0100

-----------------------------------------------------------------
If you already have a previous version of the CD you are
downloading, jigdo can re-use files on the old CD that are also
present in the new image, and you do not need to download them
again. Mount the old CD ROM and enter the path it is mounted under
(e.g. `/mnt/cdrom').
Alternatively, just press enter if you want to start downloading
the remaining files.
Files to scan:

ミラーを選択.
/etc/apt/sources.list から1行目のデータが使用されるのか,
デフォルトで http://ftp.ring.gr.jp/pub/linux/debian/debian-ddtp/ になっていた.

ここで,jp と入力すると,日本のミラーサイトの一覧が表示される.

-----------------------------------------------------------------
The jigdo file refers to files stored on Debian mirrors. Please
choose a Debian mirror as follows: Either enter a complete URL
pointing to a mirror (in the form
`ftp://ftp.debian.org/debian/'), or enter any regular expression
for searching through the list of mirrors: Try a two-letter
country code such as `de', or a country name like `United
States', or a server name like `sunsite'.
Debian mirror [http://ftp.ring.gr.jp/pub/linux/debian/debian-ddtp/]:

Downloading .template file

以下が表示されてダウンロードとイメージデータ作成開始.

-----------------------------------------------------------------
Merging parts from `file:' URIs, if any...
Found 0 of the 1190 files required by the template
Will not create image or temporary file - try again with different input files

以下が表示されたらイメージデータ作成完了.

Found 1 of the 1 files required by the template
Successfully created `debian-31r1-i386-binary-1.iso'

-----------------------------------------------------------------
Finished!
The fact that you got this far is a strong indication that `debian-31r1-i386-binary-1.iso'
was generated correctly. I will perform an additional, final check,
which you can interrupt safely with Ctrl-C if you do not want to wait.

OK: Checksums match, image is good!

Windowsでイメージを作成するには,以下サイトからWindows用クライアントをダウンロードして使用する.
http://atterer.net/jigdo/

jigdo-lite.bat

で起動.

2. ISOイメージを焼く
Windows でイメージを焼くには,CD Manipulator を利用する.
  - 下段左から二番目をクリック
  - トラックリストタブをクリック
  - メニューバーのトラック -> iso ファイルの挿入
  - CD の書き込み

3. インストール

Reference

Sarge(Debian) をインストールしよう CD編
http://www.eva.gr.jp/~help/linux/2005/20050711.html
jigdo (Jigsaw Download) - a download manager for CD/DVD images
http://atterer.net/jigdo/

Webページでダイスを振るbookmarklet

Source

javascript:(
	function(){
		var d=document;
		var h='http://realtimemachine.sakura.ne.jp/dice/js/';
		var s=d.createElement('script');
		s.src=h+'dice.js';
		d.body.appendChild(s);
		var s=d.createElement('script');
		s.src=h+'dicebm.js';
		d.body.appendChild(s);
	})
();


Google Maps上でダイスを振るデモ

http://dotimpac.to/work/dice/dice.html

Reference

Webページでダイスを振るbookmarklet - collisions.dotimpac.to
http://realtimemachine.sakura.ne.jp/collisions/works/web/dice.html

JavaScriptは使わずCSSだけで作られたイメージギャラリー

Reference

stu nicholls | CSS PLaY | cross browser multi page photo gallery
http://www.cssplay.co.uk/menu/lightbox.html#flower8

Suckerfish HoverLightbox | Monday By Noon
http://www.mondaybynoon.com/2006/03/27/suckerfish-hoverlightbox/

via

GIGAZINE - JavaScriptは使わずCSSだけで作られたイメージギャラリー
http://gigazine.net/index.php?/news/comments/20060402_cssonly/

Flexible Renamer - 多様なリネームが可能なソフトウェア

Summary

ワイルドカード,正規表現,タグ情報(MP3,EXIF)を使用できる
ファイル/フォルダ名一括変更ツール

Reference

Flexible Renamer
http://hp.vector.co.jp/authors/VA014830/FlexRena/

via

MOONGIFT - Flexible Renamer
http://fw.moongift.jp/intro/i-1451.html

MOONGIFT - Flexible Renamer レビュー
http://fw.moongift.jp/review/i-1454.html

CSRF対策

Reference

高木浩光@自宅の日記 - クロスサイトリクエストフォージェリ (CSRF) の正しい対策方法
http://takagi-hiromitsu.jp/diary/20050427.html

おおいわのこめんと - 2006-03-30
http://www.oiwa.jp/~yutaka/tdiary/20060330.html

via

スラッシュドット ジャパン | 正しいCSRF対策、してますか?
http://slashdot.jp/developers/article.pl?sid=06/04/01/2145235