『下流社会 新たな階層集団の出現 』を読んだ。
つまらなかった。
光文社 (2005/09/20)
売り上げランキング: 2562
『下流社会 新たな階層集団の出現 』を読んだ。
つまらなかった。
『年収崩壊』を読んだ。
非正社員労働者の平均年収は120万円とか、そんなものらしい。
大変だと思う。
久しぶりにお金のことをまじめに考えたのだけれど、
やはり中長期的に見ると自分のポートフォリオは不安がいっぱいだよな。
年収は年収として、仮にそれが長期的に上がらないものであるとしても
安心して暮らせるような資産の持ち方をしないといけないですね。
あと、年金の「マクロ経済スライド」について理解した。
そんなの、下方修正しかないと思うのですが。
パーマリンクはパーマネントであることが期待されているわけで、
いきなりリンク切れになっていたりするとビビる。
プログラマは条件分岐節の範囲指定に敏感なので、
「あなたは友だち以上、恋人未満なの」
と言われて、自分はどの範囲にいるのか真剣に考えてしまうわけである。
"友だち以上、恋人未満" というと、友だちも範囲内に含まれるので、
「あなたは友だちにしか見えないの」というならば、
「あなたは友だち以上、恋人未満なの」と言い換えても問題ない。
後者の方が相手に無意味に期待を持たせることができるしね。
Yahoo! Japanの新しいトップページを利用できるようになったわけだけど、
どう考えても横幅広すぎだろう。
ちょっとページ下のアンケートで文句言ってくる。
Yahoo!ポイントを現金化できるようになって久しいけれど、
誰かが現金化したという話をついぞ聞いたことはない。
どう考えても、100ポイント -> 85円のレートはおかしい。
Yahoo!様の仮想通過には15%の税金がかかる、と読み替えてもよい。
高い税金ですよ。
テキストボックスに文字列を入れて、submitするとパーマリンクができるという。
こんな感じですたい。
面白そうではあるけど、どう使うと面白いのかわからない。
はまった...
Citiカードからのメールが、GMailだとデフォルトで迷惑メールになるらしくて、
ギフト券のIDが記述されたメールをロストしてしまった。
GMailで迷惑メールフォルダに入ったメールが30日ごとに
自動的に消去される設定はどうにかならないものか。
ならないんだろうなぁ。
NTTの固定電話の解約申請をした。
携帯電話で満足しているし、もし誰かと長話をしたいのならSkypeを使えばよい。
解約申請はNTTのページから行える。
前回のエントリでmultipartのバウンダリ文字列を抜き取る処理を記述したけれど、
multipartを分解したいだけなら、Mail/mimeDecode.php の基本処理で事足りたようである...
<?php
require_once('Mail/mimeDecode.php');
$_params['include_bodies'] = true;
$_params['decode_bodies'] = true;
$_params['decode_headers'] = true;
$_params['input'] = file_get_contents('php://stdin');
$_structure = Mail_mimeDecode::decode($_params);
foreach ($_structure->parts as $_part) {
//$_part->body;
}
?>
この例では、foreachの中の
$_part->body;で分解された個々のbodyを取得できる。
!!!!!multipartを分解するだけの処理を知りたい場合は、こちらを参照されたい。!!!!!
multipartのバウンダリ文字列がヘッダで渡ることを知らなくて、少しだけはまった。
本エントリでは、qmailが動いているサーバでメールを受信し、
/tmp/mail_sample.txtにバウンダリ文字列を出力するまでの過程を記述する。
qmailでは、$HOME/.qmailでメール本文を受けたときに起動するスクリプトを記述できる。
私の環境では、.qmailは次のようになっている。
$ cat ~/.qmail | /usr/bin/php /tmp/sample_script.php
この例では、メールを受信したタイミングで/tmp/sample_script.php が起動する。
さて、/tmp/sample_script.php は次のようになっている。
(PEAR のMail_Mimeがインストールされていることを前提としている)
<?php
require_once('Mail/mimeDecode.php');
$_in = fopen("php://stdin", "r");
$_mail_text = '';
while($_line = fgets($_in)) {
$_mail_text .= $_line;
}
$_decoder = & new Mail_mimeDecode( $_mail_text );
$_parts =$_decoder->getSendArray();
list( $_recipients, $_headers, $_body ) = $_parts;
$_ret = preg_match("/boundary=\"([0-9a-zA-Z_\-\+\=\.\:]+)\"/", $_headers['Content-Type'], $_matches);
if($_ret) {
$_fp = fopen("/tmp/mail_sample.txt", "w");
fwrite($_fp, $_matches[1]);
fclose($_fp);
}
?>
ただ単純に、ヘッダからContent-Typeの列を取り出して、正規表現で抜き出すだけ。
本来なら、multipart/mixed かどうかも見るべきかと思うけれど、
multipart/mixed でない限りは"boundary"という文字列は存在しないはずなので、これでよしとしている。
なお、multipart/mixed の場合は、次のような感じの文字列を受け取れる。
multipart/mixed; boundary="-----=_NextPart_46196_50244_54292"
この場合、上記のスクリプトでは、
-----=_NextPart_46196_50244_54292
を取得できる。
身内の勉強会で話す(話した)内容を公開します。
前提知識
- CFG
文脈自由文法(ぶんみゃくじゆうぶんぽう、Context-free Grammar、CFG)とは、言語学や情報工学において全生成規則が以下の形式である形式文法のひとつである。 V → w ここで V は非終端記号であり、w は終端文字と非終端記号から構成される文字列である。「文脈自由」という用語は前後関係に依存せずに非終端記号 V を w に置換できることを意味している。文脈自由文法によって生成される形式言語を文脈自由言語という。(Wikipediaより)
- 記号表
名前とそれに関する型、スコープ、値(名前が定数のとき)などの情報をまとめたものを記号表という。コンパイラの中では、名前は記号表のエントリ(へのポインタ)で代表させるのがふつうである。コンパイラの解析部では記号表に名前の情報を集め、合成部では記号表を利用して目的コードを生成する。(『プログラミング言語処理系』より)
slideshareで使用したソースコードのアーカイブ(.tgz)はこちら。
なお、本スライドで使用しているflexとbisonのバージョンは次の通りである。
$ flex --version flex version 2.5.4 $ bison --version bison (GNU Bison) 2.1 Written by Robert Corbett and Richard Stallman. Copyright (C) 2005 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. [参考訳 -- 法的効力は英文が適用されます] これはフリーソフトウェアです -- 複製についての条件はソースを見ましょう。 一切の保証はありません -- 商業性や目的適合性についての保証すらありません。
カスピ海ヨーグルトを安価に食べ続けるために、
我々はカスピ海ヨーグルトを増やし続けるのである。
まずは何者をも恐れない強い心を持って、
カスピ海ヨーグルトと牛乳と、空のヨーグルトパックを用意する。
次に、二度と同じ過ちを繰り返さないと誓ったあの日の思い出と共に、
空のヨーグルトパックに、カスピ海ヨーグルトと牛乳を 2:8 の割合で投入する。
いつまでも忘れられない夢に向かって、日中ひたすら仕事に打ち込む。
その間、↑でカスピ海ヨーグルトと牛乳を混ぜたものは常温(室温)で8-10時間くらい寝かせる。
どこからどう見てもヨーグルトです。
本当にありがとうございました。
現在の勤務先にはデザイナ部隊がいなくて、
デザインが必要な場合は外部のデザイン企業に仕事を投げている。
おつきあいしているデザイン企業のスキルレベルは結構高くて、
いつも満足いく仕事をしてくれる。
ただし、あくまで実働部隊が"外部"にあるわけで、
簡単な修正作業であっても"仕事依頼"をしなければならなくて、それが結構面倒くさかったりする。
数pixel削ったり、文字列を含む画像の文字列を変更したり。
Photoshopファイル(.psd)をもらって、こちらでそういう細かい修正すればいいかと思ったけど、
(当然といえば当然...)商用のフォントを使用していたりして、
結局一揃いデザイン用のアイテムを揃える必要があることに気づいた。
どうしたものか。
勤務先の社長に教えてもらったのだけど、
DELLのキーボードの「カタカナ」キーは「カ夕カナ」と刻印されているっぽい。
外人さんがよくわからないでフォント見ながら「カタカナ」っぽい輪郭の文字を探し出して、
刻印しまくってる内にヒッコミがつかなくなったんじゃないかと予想してニヤニヤしてみた。
PEARのLogパッケージを使用して、Firebugにログを出力する方法を次に示す。
元ネタは「cl.pocari.org - PEAR Log を使って Firebug にログを出力する」。
まず、Logパッケージをインストールする。
# pear install Log WARNING: "pear/DB" is deprecated in favor of "pear/MDB2" Did not download optional dependencies: pear/DB, pear/MDB2, use --alldeps to download automatically pear/Log can optionally use package "pear/DB" (version >= 1.3) pear/Log can optionally use package "pear/MDB2" (version >= 2.0.0RC1) pear/Log can optionally use PHP extension "sqlite" downloading Log-1.9.11.tgz ... Starting to download Log-1.9.11.tgz (38,479 bytes) ..........done: 38,479 bytes install ok: channel://pear.php.net/Log-1.9.11
あとはLogクラスのインスタンスを生成し、logメソッドを呼ぶだけ。
具体的なコードは次の通り。
<?php
require_once 'Log.php';
$log = &Log::singleton('firebug', '', 'PHP', array('buffering' => true), PEAR_LOG_DEBUG);
$log->log('デバッグレベル', PEAR_LOG_DEBUG);
$log->log('情報レベル', PEAR_LOG_INFO);$log->log('警告レベル', PEAR_LOG_WARNING);
$log->log('エラーレベル', PEAR_LOG_ERR);
$log->log('レベル??');
?>
これで、次のようにFirebugのエラーコンソールにメッセージが出力される。
Enjoy!
このエントリはhttp://developer.yahoo.com/yui/yahoo/を元に、日本語に翻訳したものです。
YAHOO Global Object には唯一のグローバル名前空間があり、そこに全てのYUIライブラリのコードが存在します。 YAHOO Global Object はYUIライブラリを使用する全てのページでインクルードされる必要があり、 またどのYUIコンポーネントよりも先に現れなければなりません。 YAHOO Global Object はライブラリ全体で使用可能な多くのメソッドが存在します。
<!-- YAHOO Global Object ソースファイル --> <script type="text/javascript" src="http://yui.yahooapis.com/2.3.1/build/yahoo/yahoo-min.js"></script> <!-- 追加のソースファイルはここに記述する -->
// "myproduct1"のための名前空間を作成する
YAHOO.namespace ("myproduct1");
YAHOO.myproduct1.Class1 = function(info) {
alert(info);
};
// "mysubproject1"のための名前空間"myproduct2"を作成する
YAHOO.namespace ("myproduct2.mysubproject1");
YAHOO.myproduct2.mysubproject1.Class1 = function(info) {
alert(info);
};
// true、arrayリテラルは配列です
YAHOO.lang.isArray([1, 2]);
// false、objectリテラルは配列ではありません
YAHOO.lang.isArray({"one": "two"});
// しかし、 配列として宣言された場合にはtrue になります
function() {
var a = new Array();
a["one"] = "two";
return YAHOO.lang.isArray(a);
}();
// false、エレメントの集合は配列のようですが、違います
YAHOO.lang.isArray(document.getElementsByTagName("body"));
// true、falseは論理型です
YAHOO.lang.isBoolean(false);
// false、1や"true"という文字列は論理型ではありません
YAHOO.lang.isBoolean(1);
YAHOO.lang.isBoolean("true");
// nullはnullですが、undefinedや""(空文字列)はnullではありません
YAHOO.lang.isNull(null); // true
YAHOO.lang.isNull(undefined); // false
YAHOO.lang.isNull(""); // false
// functionはfunctionですが、オブジェクトはfunctionではありません
YAHOO.lang.isFunction(function(){}); // true
YAHOO.lang.isFunction({foo: "bar"}); // false
// true、整数や少数は数です
YAHOO.lang.isNumber(0);
YAHOO.lang.isNumber(123.123);
// false, strings that can be cast to numbers aren't really numbers
// false、数にキャストできる文字列は、実際には文字列ではありません
YAHOO.lang.isNumber("123.123");
// false、未定義の値や無限大の値は数ではありません
YAHOO.lang.isNumber(1/0);
// true、オブジェクト、関数、配列はオブジェクトです
YAHOO.lang.isObject({});
YAHOO.lang.isObject(function(){});
YAHOO.lang.isObject([1,2]);
// false、プリミティブな値はオブジェクトではありません
YAHOO.lang.isObject(1);
YAHOO.lang.isObject(true);
YAHOO.lang.isObject("{}");
// 文字列
YAHOO.lang.isString("{}"); // true
YAHOO.lang.isString({foo: "bar"}); // false
YAHOO.lang.isString(123); // false
YAHOO.lang.isString(true); // false
// undefinedはundefinedですが、nullとfalseはundefinedではありません
YAHOO.lang.isUndefined(undefined); // true
YAHOO.lang.isUndefined(false); // false
YAHOO.lang.isUndefined(null); // false
// これが保護するものです
Object.prototype.myCustomFunction = function(x) {
alert(x);
}
var o = {};
o["foo"] = "bar";
o["marco"] = "polo";
// これが保護する必要がある部分です
for (var i in o) {
if (YAHOO.lang.hasOwnProperty(o, i)) {
alert("good key: " + i);
} else {
alert("bad key: " + i);
}
}
YAHOO.namespace("test");
YAHOO.test.Class1 = function(info) {
alert("Class1: " + info);
};
YAHOO.test.Class1.prototype.testMethod = function(info) {
alert("Class1: " + info);
};
YAHOO.test.Class2 = function(info) {
// コンストラクタを繋げる
YAHOO.test.Class2.superclass.constructor.call(this, info);
alert("Class2: " + info);
};
// Class2がClass1を継承する。これはClass2のコンストラクタの直後に実行される必要がある
YAHOO.lang.extend(YAHOO.test.Class2, YAHOO.test.Class1);
YAHOO.test.Class2.prototype.testMethod = function(info) {
// 関数を繋げる
YAHOO.test.Class2.superclass.testMethod.call(this, info);
alert("Class2: " + info);
};
var class2Instance = new YAHOO.test.Class2("constructor executed");
class2Instance.testMethod("testMethod invoked");
<!-- debugger output for environments without "console" -->
<!-- コンソールがない環境ではここにデバッガの出力が与えられます -->
<div id="consoleelement"> </div>
<script>
////////////////////////////////////////////////////////////////////////////
// ConsoleProvilderの例はコンソールがある場合はコンソールにログを出力します
// コンソールがない場合は"consoleelement"にログを出力します
////////////////////////////////////////////////////////////////////////////
YAHOO.example.ConsoleProvider = function() { };
YAHOO.example.ConsoleProvider.prototype = {
log: function(msg) {
// use the error console if available (FF+FireBug or Safari)
if (typeof console != "undefined") {
console.log(msg);
// write the msg to a well-known div element
} else {
var el = document.getElementById("consoleelement");
if (el) {
el.innerHTML += "<p>" + msg + "</p>";
}
}
}
};
////////////////////////////////////////////////////////////////////////////
// デバッグメッセージを出力するクラスを定義します
////////////////////////////////////////////////////////////////////////////
YAHOO.example.ClassWithLogging = function() { };
YAHOO.lang.augment(YAHOO.example.ClassWithLogging, YAHOO.example.ConsoleProvider);
////////////////////////////////////////////////////////////////////////////
// テスト
////////////////////////////////////////////////////////////////////////////
var c = new YAHOO.example.ClassWithLogging();
c.log("worked");
</script>
YAHOO.namespace("test");
YAHOO.test.Class1 = function(info) {
YAHOO.log("Class1: " + info, "error", "Class1");
};
<html>
<head>
<script type="text/javascript">
// モジュールがロードされる度にコールバックされます
function mycallback(info) {
alert(info.name + " loaded");
// loggerがページでロードされると動作します
if (info.name == "logger") {
YAHOO.widget.Logger.enableBrowserConsole()
var l = new YAHOO.widget.LogWriter("(");
YAHOO.example.EnvTest = function() {
function log(msg,cat) {
var c=c||"info";
YAHOO.log(msg,c,"LangTest");
}
return {
init: function() {
new YAHOO.widget.LogReader("logoutput");
log("init");
},
showInfo: function(e, module){
// YAHOO.env.getVersion はYAHOO_config.listener が受け取るデータと同じデータを返します
var info = YAHOO.env.getVersion(module);
log("name: " + info.name);
log("version: " + info.version);
log("build: " + info.build);
log("versions: " + info.versions);
log("builds: " + info.builds);
log("mainClass version: " + info.mainClass.VERSION);
}
};
} ();
YAHOO.util.Event.addListener(window, "load", YAHOO.example.EnvTest.init);
YAHOO.util.Event.addListener("showeventbutton", "click", YAHOO.example.EnvTest.showInfo, "event");
}
}
YAHOO_config = {
listener: mycallback
};
</script>
<script src = "../src/js/YAHOO.js" ></script>
<script src = "../../build/event/event.js" ></script>
<script src = "../../build/dom/dom.js" ></script>
<script src = "../../build/dragdrop/dragdrop.js" ></script>
<script src = "../../build/logger/logger.js" ></script>
<link rel="stylesheet" type="text/css" href="../../build/logger/assets/logger.css">
<style> #logoutput {float: right}</style>
</head>
<body>
<input type="button" id="showeventbutton" value="show event version" />
<div id="logoutput"></div>
</body>
</html>
YUI Module NamesとYUI on Mobile: Using YAHOO Global Object with "A-Grade" Mobile Browsersは割愛します。
Macを操作する(フォーカスの切り替え、マウスのクリックなど)度に何かMacが英語で話しかけてきて、
何かと思ったらVoiceOverをOnにしていたようだ。
VoiceOverなんてユーティリティを知らなかったので、かなりビビった。
コマンドキーとF5を一緒に押すと、VoiceOverが起動するので、すぐにMac OS X Tigerコンピュータを使用できます。VoiceOverの操作に慣れていなくても、開始方法が音声で指示され、VoiceOver QuickStartが開きます。このVoiceOver QuickStartを使って、アップルのキーボードのキーの名前と場所を把握し、VoiceOverを使った操作を学習できます。
ということで、「コマンドキー + F5」でVoiceOverを起動できるので、マカーな人はお試しあれ。
ビビること請け合いである。
東京マラソンに落選した。
マハタ ヤスノリ様
受付番号:xxxxxxx
このたびは東京マラソンにご応募いただき誠にありがとうございました。
お陰様をもちまして定員を大幅に上回る申込があり厳正なる抽選を行いました
ところ、誠に残念ながら今回はご意向に沿えない結果となりました。
今後、参加料の未入金者が多かった場合には、追加当選者を出すことがございます。
その場合、11月中旬頃に再度『東京マラソン追加当選のお知らせ』にて通知させて
いただく予定です。
ちょw「参加料の未入金者が多かった場合」www
そんなケースを想定しているのか。
やるな東京マラソン。
光の速さで青梅マラソンに鞍替えした。
MT3系(たぶん4系でもそのまま使える)のダイナミックパブリッシング用の条件タグの実装方法を次にメモする。
まず、下記のテンプレートは『MovableType上級カスタマイズ術』からの引用である。
<?php
function smarty_block_条件タグ($args, $content, &$ctx, &$repeat) {
if( $issset($content) ) {
// 条件判断処理
return $ctx->_hdlr_if($args, $content, $ctx, $repeat, $retcode);
} else {
return $ctx->_hdlr_if($args, $content, $ctx, $repeat);
}
}
?>
これだと$argsにMTの変数を渡せないけど、どうすればいいのかわからない。
仙台育英の佐藤くんは、抽選の結果ヤクルトが交渉権を握った。
地元民として楽天を贔屓にしているので、ちょっと残念。
毎年思うのだけど、高校球児がプロ野球選手になるというのは、すなわち高校生が球団に「就職」することと同義なわけである。
就職先くらい本人に選ばせてあげればいいのに。
就職先をしくじることで大損するなんてのはよくあること。
就職先を自分で選べれば自己責任として納得できるかもしれないけど、ドラフトの場合はどうなんだろう。
球団間の格差の問題が... というのも尤もな話だけど、それは高校生と大学生と社会人の間に差異があることの説明にはならない。
<?php
// --
// VERSION CHECK
// --
if( version_compare(phpversion(), '5.0', '<') ) {
echo "本スクリプトはPHPのVersion5.0以降でのみ動作します\n";
exit;
}
// --
// LOAD XML
// --
$_lastfmName = 'mahata';
$_targetUrl = "http://ws.audioscrobbler.com/1.0/user/{$_lastfmName}/recenttracks.xml";
$_xmlObj = simplexml_load_file($_targetUrl);
// --
// MAKE ARRAY
// --
$_playList = array();
foreach( $_xmlObj as $_xmlObj_ ) {
$_tArray = array();
$_tArray['artist'] = (string)$_xmlObj_->artist;
$_tArray['name'] = (string)$_xmlObj_->name;
$_tArray['album'] = (string)$_xmlObj_->album;
$_tArray['date'] = date('Y/m/d H:i:s', (int)strtotime($_xmlObj_->date));
$_playList[] = $_tArray;
}
// --
// DUMP ARRAY
// --
print_r( $_playList );
?>
$ php playlist2array.php
Array
(
[0] => Array
(
[artist] => Surface
[name] => クセになりそうだ
[album] => resurface
[date] => 2007/10/03 14:42:00
)
[1] => Array
(
[artist] => Surface
[name] => ハニカムハニ
[album] => resurface
[date] => 2007/10/03 14:37:00
)
[2] => Array
(
[artist] => Surface
[name] => WAIT!
[album] => resurface
[date] => 2007/10/03 14:34:00
)
[3] => Array
(
[artist] => Surface
[name] => Re:START
[album] => Re:START
[date] => 2007/10/03 14:30:00
)
[4] => Array
(
[artist] => Surface
[name] => ちりつもたれつ
[album] => resurface
[date] => 2007/10/03 14:26:00
)
[5] => Array
(
[artist] => Surface
[name] => ワクチン
[album] =>
[date] => 2007/10/03 14:20:00
)
[6] => Array
(
[artist] => Surface
[name] => 夢の続きへ
[album] =>
[date] => 2007/10/03 14:15:00
)
[7] => Array
(
[artist] => LINDBERG
[name] => Brand New Day
[album] => XII
[date] => 2007/10/03 14:09:00
)
[8] => Array
(
[artist] => LINDBERG
[name] => アタシは磨けば光るダイアモンドなのに
[album] => XII
[date] => 2007/10/03 14:05:00
)
[9] => Array
(
[artist] => LINDBERG
[name] => 自転車に初めて乗れた日
[album] => XII
[date] => 2007/10/03 13:59:00
)
)
<head> <title>this is a title.</title> <link href="/js/google_code_prettify/prettify.css" rel="stylesheet" type="text/css"/> <script src="/js/google_code_prettify/prettify.js" type="text/javascript"></script> </head>
<body onload="prettyPrint()">
<pre class="prettyprint">ソースコード</pre>
<MTIfNonEmpty tag="SampleImage"> <img src="<$SampleImage$>" alt="" width="32" /> <MTElse> <img src="/noimage.gif" alt="" width="32" /> </MTElse> </MTIfNonEmpty>
拡張子がphpのファイル(というか、phpコードが実行される環境)で、
かつphp.iniのshort_open_tagがOnになっていると、XHTMLのxml宣言でエラーが出る。
なぜかというと、インタプリタが<?xml から始まる文字列をphpコードとして解釈するからである。
通常、次のようなerror_logが出力される。
Parse error: parse error, unexpected T_STRING in *.php on line 1
php.ini のshort_open_tag をOffにするのが正しい解決方法だが、
php.ini を勝手に変更してはならないケースでは、次のような回避方法もある。
<?php echo '<?xml version="1.0" encoding="utf-8"?>'."\n" ?>
PHPの仕様に文句をこぼさずに生きていきたいものですね。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html lang="ja"> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <meta name="description" content="mahata.net"> <meta name="keywords" content="mahata, mahata.net, programming, tool"> <meta name="author" content="Yasunori MAHATA"> <title>mahata.net - strip tags</title> <body> <p> ブログにソースコードを貼り付けるツール。 </p> <p> <form action="strip_tags_proc.html" method="post"> <textarea name="code" cols="96" rows="32"></textarea><br /> <input type="submit" /> </form> </p> </body> </html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="ja">
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="description" content="mahata.net">
<meta name="keywords" content="mahata, mahata.net, programming, tool">
<meta name="author" content="Yasunori MAHATA">
<title>mahata.net - strip tags</title>
<body>
<p>
ブログに貼り付けられる形態に変換しました。
</p>
<p>
<textarea cols="96" rows="32"><?php echo str_replace('&', '&', htmlspecialchars($_POST['code'])); ?></textarea><br />
</p>
<hr />
<p>
再度の変換を試したい場合は、次のテキストボックスを利用してください。
</p>
<p>
<form action="strip_tags_proc.html" method="post">
<textarea name="code" cols="96" rows="32"><?php echo $_POST['code']; ?></textarea><br />
<input type="submit" />
</form>
</p>
</body>
</html>
MTのテンプレートを一部コメントアウトするには、
<MTIgnore>タグを使えばよい。
<blockquote><MTIgnore> コメントアウトしたい内容 </MTIgnore></blockquote>
コメントアウトしたい内容に <!-- や --> が含まれている場合も問題なく使用できる。