<?xml version="1.0" encoding="EUC-JP"?>
<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="ja">
<title>Produce by Sieg</title>
<link rel="alternate" type="text/html" href="http://sieg.xeong.com/" />
<modified>2006-05-28T02:43:08Z</modified>
<tagline>Webプログラムについてのメモ</tagline>
<id>tag:sieg.xeong.com,2006://1</id>
<generator url="http://www.movabletype.org/" version="3.2-ja-2">Movable Type</generator>
<copyright>Copyright (c) 2006, edams</copyright>
<entry>
<title>BLOGinSPACE</title>
<link rel="alternate" type="text/html" href="http://sieg.xeong.com/archives/2006/04/bloginspace.html" />
<modified>2006-05-28T02:43:08Z</modified>
<issued>2006-04-05T21:42:13Z</issued>
<id>tag:sieg.xeong.com,2006://1.23</id>
<created>2006-04-05T21:42:13Z</created>
<summary type="text/plain">宇宙に発信するというちょっと変わったサイトに去年から登録していたんだけど こんな...</summary>
<author>
<name>edams</name>
<url>http://sieg.xeong.com/</url>
<email>edams9@gmail.com</email>
</author>
<dc:subject>ひとりごと</dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://sieg.xeong.com/">
<![CDATA[宇宙に発信するというちょっと変わったサイトに去年から登録していたんだけど<br />
こんなのが送られてきた！　かっこいいので掲載します<br />
ちなみに、当サイト(sieg.xeong.com)内の記事はすべて宇宙に向かって定期的に発信されている・・ようです<br />
詳細はリンク先を<br />
<center>
<!--BLOGinSPACE Certicate Begin-->
<a href="http://www.bloginspace.com" target="_blank"><img src="http://www.bloginspace.com//certificate/certificate-20060405.jpg?humanoid=c2llZ0B4ZW9uZy5jb20%3D" style="border: 0;" /></a>
<!--BLOGinSPACE Certificate End-->
</center>
<img src="http://sieg.xeong.com/images/file4.gif"> <a href="http://www.bloginspace.com/" target="_blank">http://www.bloginspace.com/</a><br />]]>

</content>
</entry>
<entry>
<title>インストール型ブログ</title>
<link rel="alternate" type="text/html" href="http://sieg.xeong.com/archives/2005/07/post_5.html" />
<modified>2006-05-28T02:43:08Z</modified>
<issued>2005-07-22T09:56:44Z</issued>
<id>tag:sieg.xeong.com,2005://1.22</id>
<created>2005-07-22T09:56:44Z</created>
<summary type="text/plain">なるべくたくさんのサーバインストール型ブログを集めてみました(18種類)</summary>
<author>
<name>edams</name>
<url>http://sieg.xeong.com/</url>
<email>edams9@gmail.com</email>
</author>
<dc:subject>ブログ</dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://sieg.xeong.com/">
<![CDATA[なるべくたくさんのサーバインストール型ブログを集めてみました<br />
<br />
使用言語は、Perl、PHP、Pythonがあり<br />
データベースは、MySQL、PostgreSQL、そしていらないものまでありました<br />
いらないものはたぶん、テキスト保存かPerl用のデータベースを使っていると見られます<br />
利用ライセンス形態もさまざまで、GPL(Gnu Open Sorce)、BSD License、<br />
商用は有料だが非商用は無料、そして制限なしというところまであります<br />
また、どこをどう探してもそれらの記述のないサイトもありましたので「制限なし(?)」で示しました<br />
<br />
探せばたぶんまだまだあると思うので、まずはパート１ということで<br />
以下１８種類を並べてあります<br />]]>
<![CDATA[<br /><br />
<table border="0" cellpadding="3" cellspacing="1" bgcolor="#cccccc"><tr>
<td bgcolor="#ffffff" width="200"><b>Movable Type</b>(ムーバブルタイプ)<br />
シックス・アパート社</td>
<td colspan="2" bgcolor="#ffffff" width="300"><a href="http://www.movabletype.jp/" target="_blank">www.movabletype.jp</a> (日本)<br>
<a href="http://www.movabletype.org/" target="_blank">www.movabletype.org</a> (米国)</td>
</tr><tr>
<td bgcolor="#ffffff" rowspan="3" align="center"><img src="/images/image.jpg" border="0" width="170" height="47"></td>
<td bgcolor="#ffffff" width="60">ライセンス</td>
<td bgcolor="#ffffff" width="240">非商用利用は無料、商用利用は有料</td>
</tr><tr>
<td bgcolor="#ffffff">DB</td>
<td bgcolor="#ffffff">不要（MySQL利用可）</td>
</tr><tr>
<td bgcolor="#ffffff">言語</td>
<td bgcolor="#ffffff">Perl</td>
</tr></table>

<br>

<table border="0" cellpadding="3" cellspacing="1" bgcolor="#cccccc"><tr>
<td bgcolor="#ffffff" width="200"><b>Nucleus</b>（ニュークリアス）<br />
The Nucleus Group</td>
<td colspan="2" bgcolor="#ffffff" width="300"><a href="http://japan.nucleuscms.org/" target="_blank">japan.nucleuscms.org</a> (日本)<br>
<a href="http://nucleuscms.org/" target="_blank">nucleuscms.org</a> (米国)</td>
</tr><tr>
<td bgcolor="#ffffff" rowspan="3" align="center"><img src="/images/image1.jpg" border="0" width="85" height="31"></td>
<td bgcolor="#ffffff" width="60">ライセンス</td>
<td bgcolor="#ffffff" width="240">フリー (GPL)</td>
</tr><tr>
<td bgcolor="#ffffff">DB</td>
<td bgcolor="#ffffff">MySQL</td>
</tr><tr>
<td bgcolor="#ffffff">言語</td>
<td bgcolor="#ffffff">PHP</td>
</tr></table>

<br>

<table border="0" cellpadding="3" cellspacing="1" bgcolor="#cccccc"><tr>
<td bgcolor="#ffffff" width="200"><b>tDiary</b></td>
<td colspan="2" bgcolor="#ffffff" width="300"><a href="http://www.tdiary.org/" target="_blank">www.tdiary.org</a> (日本)</td>
</tr><tr>
<td bgcolor="#ffffff" rowspan="3" align="center"><img src="/images/tdiary.gif" width="150" height="50" border="0"></td>
<td bgcolor="#ffffff" width="60">ライセンス</td>
<td bgcolor="#ffffff" width="240">フリー (GPL)</td>
</tr><tr>
<td bgcolor="#ffffff">DB</td>
<td bgcolor="#ffffff">MySQL利用可</td>
</tr><tr>
<td bgcolor="#ffffff">言語</td>
<td bgcolor="#ffffff">Ruby</td>
</tr></table>

<br>

<table border="0" cellpadding="3" cellspacing="1" bgcolor="#cccccc"><tr>
<td bgcolor="#ffffff" width="200"><b>GsBlog</b><br />
Web Application Factory</td>
<td colspan="2" bgcolor="#ffffff" width="300"><a href="http://www.waf.jp/contents/download/gsblog/" target="_blank">www.waf.jp/contents/download/gsblog</a> (日本)</td>
</tr><tr>
<td bgcolor="#ffffff" rowspan="3" align="center"><img src="/images/image3.jpg" border="0" width="80" height="44"></td>
<td bgcolor="#ffffff" width="60">ライセンス</td>
<td bgcolor="#ffffff" width="240">非商用利用は無料、商用利用は有料</td>
</tr><tr>
<td bgcolor="#ffffff">DB</td>
<td bgcolor="#ffffff">MySQL</td>
</tr><tr>
<td bgcolor="#ffffff">言語</td>
<td bgcolor="#ffffff">PHP</td>
</tr></table>

<br>

<table border="0" cellpadding="3" cellspacing="1" bgcolor="#cccccc"><tr>
<td bgcolor="#ffffff" width="200"><b>P_BLOG</b><br />
P_BLOG Proj</td>
<td colspan="2" bgcolor="#ffffff" width="300"><a href="http://pbx.homeunix.org/p_blog/" target="_blank">pbx.homeunix.org/p_blog</a> (日本)</td>
</tr><tr>
<td bgcolor="#ffffff" rowspan="3" align="center"><img src="/images/pblog.gif" width="58" height="58" border="0"></td>
<td bgcolor="#ffffff" width="60">ライセンス</td>
<td bgcolor="#ffffff" width="240">フリー (GPL)</td>
</tr><tr>
<td bgcolor="#ffffff">DB</td>
<td bgcolor="#ffffff">MySQL必須</td>
</tr><tr>
<td bgcolor="#ffffff">言語</td>
<td bgcolor="#ffffff">PHP</td>
</tr></table>

<br>

<table border="0" cellpadding="3" cellspacing="1" bgcolor="#cccccc"><tr>
<td bgcolor="#ffffff" width="200"><b>華式</b>(Kshiki)<br />
流之進</td>
<td colspan="2" bgcolor="#ffffff" width="300"><a href="http://ryunosin.hp.infoseek.co.jp/KshikiSetup.html" target="_blank">ryunosin.hp.infoseek.co.jp/KshikiSetup.html</a> (日本)</td>
</tr><tr>
<td bgcolor="#ffffff" rowspan="3" align="center"><img src="/images/image15.jpg" border="0" width="200" height="40"></td>
<td bgcolor="#ffffff" width="60">ライセンス</td>
<td bgcolor="#ffffff" width="240">フリー (GPL)</td>
</tr><tr>
<td bgcolor="#ffffff">DB</td>
<td bgcolor="#ffffff">不要</td>
</tr><tr>
<td bgcolor="#ffffff">言語</td>
<td bgcolor="#ffffff">Perl</td>
</tr></table>

<br>

<table border="0" cellpadding="3" cellspacing="1" bgcolor="#cccccc"><tr>
<td bgcolor="#ffffff" width="200"><b>Blogn</b>(ぶろぐん)<br />
R・ONEコンピューター</td>
<td colspan="2" bgcolor="#ffffff" width="300"><a href="http://www.blogn.org/" target="_blank">www.blogn.org</a> (日本)</td>
</tr><tr>
<td bgcolor="#ffffff" rowspan="3" align="center"><img src="/images/image5.jpg" border="0" width="88" height="31"></td>
<td bgcolor="#ffffff" width="60">ライセンス</td>
<td bgcolor="#ffffff" width="240">非商用利用は無料、商用利用は有料</td>
</tr><tr>
<td bgcolor="#ffffff">DB</td>
<td bgcolor="#ffffff">不要（MySQL利用可）</td>
</tr><tr>
<td bgcolor="#ffffff">言語</td>
<td bgcolor="#ffffff">PHP</td>
</tr></table>

<br>

<table border="0" cellpadding="3" cellspacing="1" bgcolor="#cccccc"><tr>
<td bgcolor="#ffffff" width="200"><b>rNote</b><br />
Woody-Rinn</td>
<td colspan="2" bgcolor="#ffffff" width="300"><a href="http://rinn.e-site.jp/rnote/" target="_blank">rinn.e-site.jp/rnote</a> (日本)</td>
</tr><tr>
<td bgcolor="#ffffff" rowspan="3" align="center"><img src="/images/image6.jpg" border="0" width="80" height="26"></td>
<td bgcolor="#ffffff" width="60">ライセンス</td>
<td bgcolor="#ffffff" width="240">使用制限なし</td>
</tr><tr>
<td bgcolor="#ffffff">DB</td>
<td bgcolor="#ffffff">不要</td>
</tr><tr>
<td bgcolor="#ffffff">言語</td>
<td bgcolor="#ffffff">PHP</td>
</tr></table>

<br>

<table border="0" cellpadding="3" cellspacing="1" bgcolor="#cccccc"><tr>
<td bgcolor="#ffffff" width="200"><b>Serene Bach</b><br />
sb開発研究所</td>
<td colspan="2" bgcolor="#ffffff" width="300"><a href="http://serennz.cool.ne.jp/sblog/" target="_blank">serennz.cool.ne.jp/sblog/</a> (日本)</td>
</tr><tr>
<td bgcolor="#ffffff" rowspan="3" align="center"><img src="/images/image7.jpg" border="0" width="100" height="20"></td>
<td bgcolor="#ffffff" width="60">ライセンス</td>
<td bgcolor="#ffffff" width="240">非商用利用は無料、商用利用は有料</td>
</tr><tr>
<td bgcolor="#ffffff">DB</td>
<td bgcolor="#ffffff">不要</td>
</tr><tr>
<td bgcolor="#ffffff">言語</td>
<td bgcolor="#ffffff">Perl</td>
</tr></table>

<br>

<table border="0" cellpadding="3" cellspacing="1" bgcolor="#cccccc"><tr>
<td bgcolor="#ffffff" width="200"><b>COREBlog</b><br />
Webcore Corp</td>
<td colspan="2" bgcolor="#ffffff" width="300"><a href="http://coreblog.org/" target="_blank">coreblog.org</a> (日本)</td>
</tr><tr>
<td bgcolor="#ffffff" rowspan="3" align="center"><img src="/images/image8.jpg" border="0" width="128" height="26"></td>
<td bgcolor="#ffffff" width="60">ライセンス</td>
<td bgcolor="#ffffff" width="240">使用制限なし(?)</td>
</tr><tr>
<td bgcolor="#ffffff">DB</td>
<td bgcolor="#ffffff">不要</td>
</tr><tr>
<td bgcolor="#ffffff">言語</td>
<td bgcolor="#ffffff">Python(Zope)</td>
</tr></table>

<br>

<table border="0" cellpadding="3" cellspacing="1" bgcolor="#cccccc"><tr>
<td bgcolor="#ffffff" width="200"><b>blosxom</b><br />
Rael Dornfest</td>
<td colspan="2" bgcolor="#ffffff" width="300"><a href="http://www.blosxom.com/" target="_blank">www.blosxom.com</a></td>
</tr><tr>
<td bgcolor="#ffffff" rowspan="3" align="center"><img src="/images/image9.jpg" border="0" width="90" height="33"></td>
<td bgcolor="#ffffff" width="60">ライセンス</td>
<td bgcolor="#ffffff" width="240">使用制限なし</td>
</tr><tr>
<td bgcolor="#ffffff">DB</td>
<td bgcolor="#ffffff">不要</td>
</tr><tr>
<td bgcolor="#ffffff">言語</td>
<td bgcolor="#ffffff">PHP or Perl</td>
</tr></table>

<br>

<table border="0" cellpadding="3" cellspacing="1" bgcolor="#cccccc"><tr>
<td bgcolor="#ffffff" width="200"><b>bBlog</b><br />
Eaden McKee</td>
<td colspan="2" bgcolor="#ffffff" width="300"><a href="http://www.bblog.com/" target="_blank">www.bblog.com</a></td>
</tr><tr>
<td bgcolor="#ffffff" rowspan="3" align="center"><img src="/images/bblog.gif" width="93" height="39" border="0"></td>
<td bgcolor="#ffffff" width="60">ライセンス</td>
<td bgcolor="#ffffff" width="240">フリー (GPL)</td>
</tr><tr>
<td bgcolor="#ffffff">DB</td>
<td bgcolor="#ffffff">MySQL</td>
</tr><tr>
<td bgcolor="#ffffff">言語</td>
<td bgcolor="#ffffff">PHP</td>
</tr></table>

<br>

<table border="0" cellpadding="3" cellspacing="1" bgcolor="#cccccc"><tr>
<td bgcolor="#ffffff" width="200"><b>WordPress</b></td>
<td colspan="2" bgcolor="#ffffff" width="300"><a href="http://wordpress.org/" target="_blank">wordpress.org</a></td>
</tr><tr>
<td bgcolor="#ffffff" rowspan="3" align="center"><img src="/images/image10.jpg" border="0" width="75" height="52"></td>
<td bgcolor="#ffffff" width="60">ライセンス</td>
<td bgcolor="#ffffff" width="240">フリー (GPL)</td>
</tr><tr>
<td bgcolor="#ffffff">DB</td>
<td bgcolor="#ffffff">MySQL</td>
</tr><tr>
<td bgcolor="#ffffff">言語</td>
<td bgcolor="#ffffff">PHP</td>
</tr></table>

<br>

<table border="0" cellpadding="3" cellspacing="1" bgcolor="#cccccc"><tr>
<td bgcolor="#ffffff" width="200"><b>Serendipity Blog</b><br />
s9y</td>
<td colspan="2" bgcolor="#ffffff" width="300"><a href="http://www.s9y.org/" target="_blank">www.s9y.org</a></td>
</tr><tr>
<td bgcolor="#ffffff" rowspan="3" align="center"><img src="/images/image11.jpg" border="0" width="100" height="21"></td>
<td bgcolor="#ffffff" width="60">ライセンス</td>
<td bgcolor="#ffffff" width="240">フリー (BSD License)</td>
</tr><tr>
<td bgcolor="#ffffff">DB</td>
<td bgcolor="#ffffff">MySQL or PostgreSQL</td>
</tr><tr>
<td bgcolor="#ffffff">言語</td>
<td bgcolor="#ffffff">PHP</td>
</tr></table>

<br>

<table border="0" cellpadding="3" cellspacing="1" bgcolor="#cccccc"><tr>
<td bgcolor="#ffffff" width="200"><b>teeter totter</b><br />
solo.design</td>
<td colspan="2" bgcolor="#ffffff" width="300"><a href="http://solodesign.jp/tt/" target="_blank">solodesign.jp/tt</a></td>
</tr><tr>
<td bgcolor="#ffffff" rowspan="3" align="center"><img src="/images/solo.gif" width="133" height="37" border="0"></td>
<td bgcolor="#ffffff" width="60">ライセンス</td>
<td bgcolor="#ffffff" width="240">非商用利用は無料、商用利用は有料</td>
</tr><tr>
<td bgcolor="#ffffff">DB</td>
<td bgcolor="#ffffff">不要</td>
</tr><tr>
<td bgcolor="#ffffff">言語</td>
<td bgcolor="#ffffff">Perl</td>
</tr></table>

<br>

<table border="0" cellpadding="3" cellspacing="1" bgcolor="#cccccc"><tr>
<td bgcolor="#ffffff" width="200"><b>stereolog</b><br />
マツオ (tar100mg)</td>
<td colspan="2" bgcolor="#ffffff" width="300"><a href="http://tar100mg.com/stereolog/" target="_blank">tar100mg.com/stereolog</a></td>
</tr><tr>
<td bgcolor="#ffffff" rowspan="3" align="center"><img src="/images/image12.jpg" border="0" width="80" height="15"></td>
<td bgcolor="#ffffff" width="60">ライセンス</td>
<td bgcolor="#ffffff" width="240">使用制限なし</td>
</tr><tr>
<td bgcolor="#ffffff">DB</td>
<td bgcolor="#ffffff">不要</td>
</tr><tr>
<td bgcolor="#ffffff">言語</td>
<td bgcolor="#ffffff">PHP</td>
</tr></table>

<br>

<table border="0" cellpadding="3" cellspacing="1" bgcolor="#cccccc"><tr>
<td bgcolor="#ffffff" width="200"><b>PwBlog</b><br />
株式会社CATWALK</td>
<td colspan="2" bgcolor="#ffffff" width="300"><a href="http://www.pwblog.com/" target="_blank">www.pwblog.com</a></td>
</tr><tr>
<td bgcolor="#ffffff" rowspan="3" align="center"><img src="/images/image13.jpg" border="0" width="117" height="28"></td>
<td bgcolor="#ffffff" width="60">ライセンス</td>
<td bgcolor="#ffffff" width="240">非商用利用は無料、商用利用は有料</td>
</tr><tr>
<td bgcolor="#ffffff">DB</td>
<td bgcolor="#ffffff">PostgreSQL</td>
</tr><tr>
<td bgcolor="#ffffff">言語</td>
<td bgcolor="#ffffff">Perl</td>
</tr></table>

<br>

<table border="0" cellpadding="3" cellspacing="1" bgcolor="#cccccc"><tr>
<td bgcolor="#ffffff" width="200"><b>lily</b></td>
<td colspan="2" bgcolor="#ffffff" width="300"><a href="http://www.mikihoshi.com/lily/" target="_blank">www.mikihoshi.com/lily</a></td>
</tr><tr>
<td bgcolor="#ffffff" rowspan="3" align="center"><img src="/images/image14.jpg" border="0" width="88" height="31"></td>
<td bgcolor="#ffffff" width="60">ライセンス</td>
<td bgcolor="#ffffff" width="240">フリー (GPL)</td>
</tr><tr>
<td bgcolor="#ffffff">DB</td>
<td bgcolor="#ffffff">不要</td>
</tr><tr>
<td bgcolor="#ffffff">言語</td>
<td bgcolor="#ffffff">Ruby</td>
</tr></table>

]]>
</content>
</entry>
<entry>
<title>セキュリティコード</title>
<link rel="alternate" type="text/html" href="http://sieg.xeong.com/archives/2005/07/post_4.html" />
<modified>2006-05-28T02:43:08Z</modified>
<issued>2005-07-16T16:19:16Z</issued>
<id>tag:sieg.xeong.com,2005://1.21</id>
<created>2005-07-16T16:19:16Z</created>
<summary type="text/plain">登録認証時のセキュリティコードを考察</summary>
<author>
<name>edams</name>
<url>http://sieg.xeong.com/</url>
<email>edams9@gmail.com</email>
</author>
<dc:subject>Perl &amp; CGI</dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://sieg.xeong.com/">
<![CDATA[登録認証時のセキュリティコード<br /><br />

登録するときに、画像の文字を入力してくださいっていうのがあります<br />
あれは、自動登録などを防ぐためにあるそうです<br />
「submission code」（サブミッション・コード）とも言うそうです<br />
いまひとつ仕組みがわからないので、自分で考えてみることにしました<br />
<br />
約束事として、<br />
HTMLファイルのソースを直接見られても、セキュリティコードがわかってはならない<br />
暗号化するにしても、方法がわかってはならない<br />
<br /><br />

<b>[1] まず最初に、かなり回りくどい方法から</b><br />
これは、HTML,JavaScript,Flash,CGIをつかいます<br />
フローとしては<br />
<ol>
<li>HTMLファイルを表示</li>
<li>その際JavaScriptで乱数を生成</li>
<li>生成された乱数をFlashへの引数と次画面(登録CGI)へのhiddenパラメータとして渡す</li>
<li>Flashの方は、受け取った乱数を書き込み用のCGIへ渡し、戻り値として文字列を受け取り表示する</li>
<li>書き込み用のCGIでは受け取った乱数と更に表示用に生成した６桁の乱数文字列、現在の日付をファイルに書き出し、ここで表示用に生成した６桁の文字列を返す</li>
<li>ユーザはFlashで書き出された文字列を読み入力フィールドに書き送信</li>
<li>登録CGIでは、受け取った乱数とセキュリティコード、日付の差をファイルと比較、その他の入力項目も確認して真偽を決定</li>
<li>真なら更に現在の時間フィールドを追加してファイルに保存 (日付超過データを削除)</li>
<li>真ならユーザに登録内容を確認させて、アクティベーション用のURLを書いてメール送信</li>
<li>アクティベーションURL用のCGIで正規のコードを受け取った時点で先ほどのデータを削除して、ユーザ登録をする</li>
</ol>
この方法の利点は<br />
　・HTMLでの表示<br />
　・このHTMLで見られる乱数は、表示されるセキュリティーコードとはまったく無関係である<br />
<br />
欠点として<br />
　・JavaScriptとFlashが必須<br />
　・作る側は、かなりめんどうなことになる<br />
<br />
<br />
<b>[2] 上記のものを改良</b><br />
これは、Flashを使わずGIFアニメーションを生成する(gifcat.pl使用)<br />
フローはほぼ同じ<br />
Flashの部分をなくして、&lt;img&gt;タグでCGIに乱数を渡す<br />
<br />
この方法の利点は<br />
　・Flashがいらなくなる<br />
<br />
欠点として<br />
　・ばらばらのGIF画像を大量に作っておく必要がある<br />
　・出かたが変 (gifcat.plの特徴)<br />
<br />
考察の余地<br />
Image::Mgickをつかって一つのGIF画像を作成するという手法がある<br />
<br />
<br />
<b>[3] 更に改良</b><br />
HTML表示ではなくCGIによる表示 (普通はこっちかも)<br />
これもJavaScript部分をCGIで書き出すだけで、Flashなら[1]とほぼ同じ、GIF画像なら[2]とほぼ同じ<br />
<br />
この方法の利点は<br />
JavaScriptがいらなくなる<br />
<br />]]>
<![CDATA[<br /><p>では、<b>[1]</b>から検証<br />
<script>
function sample() {
	newwin = window.open('/download/secur_code/index.html','newwin','width=480,height=400');
	
}
</script>
HTML,JavaScript,Flash,CGIを使った<a href="javascript:sample()">サンプル</a><img src="/images/new_win.gif" width="10" height="9" border="0" /><noscript> <span style="color:red">(このサンプルはJavaScriptとFlash Playerが必要です)</span></noscript><br />
以下のファイル(4+1)をまとめたものをダウンロードできます<br />
File: <a href="/download/delivery.cgi?file=secur_code/secur_code.zip">secur_code.zip</a> <script src="/download/dl_count.cgi?file=secur_code/secur_code.zip"></script></p>
<br />
<u>入力用のHTML[index.html]</u><br />
<blockquote class="code">
<p><img src="/images/icon1.gif" width="14" height="10" border="0" /> Code: <a href="/download/delivery.cgi?file=secur_code/index.html">download</a> <script src="/download/dl_count.cgi?file=secur_code/index.html"></script></p>
<ol style="margin-top:0px;">
<li><span class="row">&lt;h1&gt;セキュリティコード認証のテスト&lt;/h1&gt;</span></li>
<li><span class="row">&nbsp;</span></li>
<li><span class="row">&lt;form action="check.cgi" method="POST"&gt;</span></li>
<li><span class="row">&lt;fieldset&gt;&lt;legend&gt;Regist Form&lt;/legend&gt;&lt;br /&gt;</span></li>
<li><span class="row">&lt;h2&gt;登録するユーザ名を入力してください(半角英数字20文字以内)&lt;/h2&gt;</span></li>
<li><span class="row">Name : &lt;input type="text" name="name" size="20"&gt;&lt;br /&gt;&lt;br /&gt;</span></li>
<li><span class="row">&lt;h2&gt;右側の画像に表示されている、文字列を入力してください&lt;/h2&gt;</span></li>
<li><span class="row">Code : &lt;input type="text" name="code" size="10"&gt;</span></li>
<li><span class="row">&lt;script&gt;</span></li>
<li><span class="row">&nbsp;var <b>rand</b> = Math.floor(Math.random()*10000000000);</span></li>
<li><span class="row">&nbsp;document.write('&lt;OBJECT classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" '+</span></li>
<li><span class="row">&nbsp;'codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" '+</span></li>
<li><span class="row">&nbsp;'width="90" height="25" id="<span class="val">code.swf</span>" align="middle"&gt;&lt;param name="allowScriptAccess" value="sameDomain"&gt;'+</span></li>
<li><span class="row">&nbsp;'&lt;param name="quality" value="high"&gt;&lt;param name="bgcolor" value="#000000"&gt;'+</span></li>
<li><span class="row">&nbsp;'&lt;param name="movie" value="<span class="val">code.swf</span>"&gt;&lt;param name="FlashVars" value="code=' + <b>rand</b> +'"&gt;'+</span></li>
<li><span class="row">&nbsp;'&lt;embed src="<span class="val">code.swf</span>" quality="high" bgcolor="#000000" width="90" height="25"'+</span></li>
<li><span class="row">&nbsp;' name="<span class="val">code.swf</span>" align="middle" allowScriptAccess="sameDomain" FlashVars="code=' + <b>rand</b> + '" '+</span></li>
<li><span class="row">&nbsp;'type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"&gt;'+</span></li>
<li><span class="row">&nbsp;'&lt;/object&gt;&lt;input type="hidden" name="ccode" value="'+<b>rand</b>+'"&gt;');</span></li>
<li><span class="row">&lt;/script&gt;</span></li>
<li><span class="row">&lt;noscript&gt;&lt;h2&gt;JavaScriptを有効にしてください&lt;/h2&gt;&lt;/noscript&gt;&lt;br /&gt;&lt;p&gt;&lt;input type="submit" value="送　信"&gt;&lt;/p&gt;</span></li>
<li><span class="row">&lt;/fieldset&gt;&lt;/form&gt;</span></li>
<li><span class="row">&nbsp;</span></li>
<li><span class="row">&lt;h3&gt;* 画像が見えにくい場合は、&lt;a href="./"&gt;読み込みなおして&lt;/a&gt;ください&lt;/h3&gt;</span></li>
<li><span class="row">&lt;h3&gt;* 送信後、確認画面を表示します&lt;/h3&gt;</span></li>
</ol>
</blockquote>
ほとんどがFlash(<span class="val">code.swf</span>)を引数つきで呼び出すだけのタグです<br /><br />

１０行目でJavaScriptで10桁の乱数を生成して(<b>rand</b>)<br />
それを、１５行目と１７行目でFlashへの引数として書き出しています<br />
更に、１９行目ではhiddenフォームとして次画面のCGIへ渡すよう書き出しています<br />
２１行目はJavaScriptが使えない場合の警告です<br />
<br /><br /><br />


<u>Flash[code.swf]内のAction Script</u><br />
<blockquote class="code">
<p><img src="/images/icon1.gif" width="14" height="10" border="0" /> Code: <a href="/download/delivery.cgi?file=secur_code/code.swf">download</a> <script src="/download/dl_count.cgi?file=secur_code/code.swf"></script></p>
<ol style="margin-top:0px;">
<li><span class="row">cginame = "<span class="val">ccode.cgi?code=</span>";</span></li>
<li><span class="row">inval = _root.code;</span></li>
<li><span class="row">lv = new LoadVars();</span></li>
<li><span class="row">lv.onLoad = function() {</span></li>
<li><span class="row">	tfCount.text = this.secure_num;</span></li>
<li><span class="row">};</span></li>
<li><span class="row">lv.load(cginame + inval);</span></li>
</ol>
</blockquote>
１行目で、書き込み用のCGIまでのパスを指定<br />
２行目では、先ほどJavaScriptで書き出した引数を取得<br />
５行目で、書き込み用CGIからの戻り値を表示 (secure_numは書き込み用CGIからの戻り値パラメータ)<br />
７行目で、書き込み用のCGIへ引数を渡しています<br />

<br />
Flashの作り方は、<a href="http://sieg.xeong.com/archives/2005/06/flash_programmi.html">リンク集</a>を参考にしてください<br />
File: <a href="/download/delivery.cgi?file=secur_code/code.fla">code.fla</a> <script src="/download/dl_count.cgi?file=secur_code/code.fla"></script> は、「Macromedia Flash MX 2004」で作成しています<br /><br />
<div style="text-align:center"><a href="http://www.macromedia.com/jp/software/flash/"><img src="/images/mwm_flmx_88_31.gif" width="88" height="31" bprder="0"><br />Made with Macromedia Flash MX</a></div>
<br /><br /><br />


<u>書き込み用CGI [ccode.cgi]</u><br />
<blockquote class="code">
<p><img src="/images/icon1.gif" width="14" height="10" border="0" /> Code: <a href="/download/delivery.cgi?file=secur_code/ccode.cgi">download</a> <script src="/download/dl_count.cgi?file=secur_code/ccode.cgi"></script></p>
<ol style="margin-top:0px;">
<li><span class="row">use CGI&nbsp;&nbsp;qw(:standard);</span></li>
<li><span class="row">&nbsp;</span></li>
<li><span class="row">$code_file = '<span class="val">code.txt</span>';</span></li>
<li><span class="row">$limit = <span class="val">7200</span>;</span></li>
<li><span class="row">$incode = (param('code') =~ /\d+/) ? param('code') : die;</span></li>
<li><span class="row">$rand_code = sprintf("%d%d%d%d%d", int(rand(10)),int(rand(10)),int(rand(10)),int(rand(10)),int(rand(10)));</span></li>
<li><span class="row">$time = time;</span></li>
<li><span class="row">&nbsp;</span></li>
<li><span class="row">open(CODE, "+&lt; $code_file") or open(CODE, "&gt;$code_file");</span></li>
<li><span class="row">flock(CODE,2);</span></li>
<li><span class="row">while(&lt;CODE&gt;) {</span></li>
<li><span class="row">&nbsp;$date = (split("\t",$_))[2];</span></li>
<li><span class="row">&nbsp;chomp($date);</span></li>
<li><span class="row">&nbsp;next if (($time-$date)&gt;$limit);</span></li>
<li><span class="row">&nbsp;push @out, $_;</span></li>
<li><span class="row">}</span></li>
<li><span class="row">&nbsp;</span></li>
<li><span class="row">push @out, "$incode\t$rand_code\t$time\n";</span></li>
<li><span class="row">seek(CODE, 0, 0);</span></li>
<li><span class="row">print CODE @out;</span></li>
<li><span class="row">truncate(CODE, tell(CODE));</span></li>
<li><span class="row">close CODE;</span></li>
<li><span class="row">&nbsp;</span></li>
<li><span class="row">print "Content-type: text/plain\n\nsecure_num=$rand_code";</span></li>
</ol>
</blockquote>
今回表示する文字列は、数字に限定しました(0〜9)<br /><br />
３行目で、データ保存ファイル名を指定<br />
４行目で、有効期限を秒数で指定(ここでは２時間以内)<br />
５行目では、JavaScript→Flashの順で経由してきた乱数を取得しています<br />
６行目で、Flashで表示用の5桁の乱数を生成<br />
７行目は、現在の日付(エポックタイム)<br />
９〜１６行目までで、新規書き込みと <u>有効期限が過ぎたデータを削除</u><br />
１８行目での、データの並び順は<br />
&nbsp; &nbsp; 1. JavaScriptで生成された乱数<br />
&nbsp; &nbsp; 2. 表示用に生成した乱数文字列(5桁)<br />
&nbsp; &nbsp; 3. 現在の日付(エポックタイム)<br />
２４行目で、Flashへの戻り値として、secure_num=表示用文字列 を返す<br />
<br /><br /><br />




<u>入力確認CGI [check.cgi]</u><br />
<blockquote class="code">
<p><img src="/images/icon1.gif" width="14" height="10" border="0" /> Code: <a href="/download/delivery.cgi?file=secur_code/check.cgi">download</a> <script src="/download/dl_count.cgi?file=secur_code/check.cgi"></script></p>
<ol style="margin-top:0px;">
<li><span class="row">use CGI&nbsp;&nbsp;qw(:standard);</span></li>
<li><span class="row">&nbsp;</span></li>
<li><span class="row">$code_file = '<span class="val">code.txt</span>';</span></li>
<li><span class="row">$limit = <span class="val">7200</span>;</span></li>
<li><span class="row">$re_date = time;</span></li>
<li><span class="row">$que = param('que');</span></li>
<li><span class="row">$in{code}  = param('code');</span></li>
<li><span class="row">$in{ccode} = param('ccode');</span></li>
<li><span class="row">$in{name} = param('name');</span></li>
<li><span class="row">$secur = sprintf("%d%d%d%d%d", int(rand(10)),int(rand(10)),int(rand(10)),int(rand(10)),int(rand(10)));</span></li>
<li><span class="row">&nbsp;</span></li>
<li><span class="row">open(FH, "+&lt; $code_file") or die "Can't open $code_file: $!";</span></li>
<li><span class="row">flock(FH,2);</span></li>
<li><span class="row">while(&lt;FH&gt;) {</span></li>
<li><span class="row">&nbsp;chomp;</span></li>
<li><span class="row">&nbsp;my($ccode,$code,$date,$dmy) = split("\t");</span></li>
<li><span class="row">&nbsp;if(($ccode eq $in{ccode}) &amp;&amp; ($code eq $in{code}) &amp;&amp; (($re_date-$date)&lt;$limit)) {</span></li>
<li><span class="row">&nbsp;&nbsp;&nbsp;push @out, qq($ccode\t$code\t$re_date\t$secur\n);</span></li>
<li><span class="row">&nbsp;&nbsp;&nbsp;$flag = 1;</span></li>
<li><span class="row">&nbsp;&nbsp;&nbsp;$ok_code = $code;</span></li>
<li><span class="row">&nbsp;&nbsp;&nbsp;$save_rand = $ccode;</span></li>
<li><span class="row">&nbsp;&nbsp;&nbsp;$save_time = $date;</span></li>
<li><span class="row">&nbsp;&nbsp;&nbsp;$now = $re_date;</span></li>
<li><span class="row">&nbsp;}</span></li>
<li><span class="row">&nbsp;elsif(($re_date-$date)&gt;$limit) {</span></li>
<li><span class="row">&nbsp;&nbsp;next;</span></li>
<li><span class="row">&nbsp;}</span></li>
<li><span class="row">&nbsp;else {</span></li>
<li><span class="row">&nbsp;&nbsp;$flag = 2 if ($ccode eq $in{ccode});</span></li>
<li><span class="row">&nbsp;&nbsp;push @out, "$_\n";</span></li>
<li><span class="row">&nbsp;}</span></li>
<li><span class="row">}</span></li>
<li><span class="row">seek(FH,0,0);</span></li>
<li><span class="row">print FH @out;</span></li>
<li><span class="row">truncate(FH, tell(FH));</span></li>
<li><span class="row">close(FH);</span></li>
<li><span class="row">&nbsp;</span></li>
<li><span class="row">if($flag == 1) {</span></li>
<li><span class="row">&nbsp;$sec_code = qq(セキュリティーコードが一致しました) }</span></li>
<li><span class="row">elsif($flag == 2) {</span></li>
<li><span class="row">&nbsp;$sec_code = qq(セキュリティーコードが一致しません) }</span></li>
<li><span class="row">else {</span></li>
<li><span class="row">&nbsp;$sec_code = qq(セキュリティコードの有効期限が過ぎているか無効です) }</span></li>
<li><span class="row">&nbsp;</span></li>
<li><span class="row">&nbsp;print &lt;&lt;HTML;</span></li>
<li><span class="row">Content-type: text/html\n\n</span></li>
<li><span class="row">&lt;html&gt;&lt;head&gt;</span></li>
<li><span class="row">&lt;title&gt;test - check&lt;/title&gt;&lt;/head&gt;&lt;body&gt;</span></li>
<li><span class="row">&lt;h1&gt;セキュリティコード認証のテスト - 確認&lt;/h1&gt;</span></li>
<li><span class="row">&lt;br /&gt;</span></li>
<li><span class="row">&lt;h2&gt;$sec_code&lt;/h2&gt;</span></li>
<li><span class="row">&lt;table width="400" border="1" cellspacing="0" cellpadding="3"&gt;</span></li>
<li><span class="row">&lt;tr&gt;&lt;td&gt;ユーザ名&lt;/td&gt;&lt;td&gt;$in{name}&lt;/td&gt;&lt;/tr&gt;</span></li>
<li><span class="row">&lt;tr&gt;&lt;td class="col"&gt;保存されているセキュリティーコード&lt;/td&gt;&lt;td class="col"&gt;$in{code}&lt;/td&gt;&lt;/tr&gt;</span></li>
<li><span class="row">&lt;tr&gt;&lt;td&gt;表示されたセキュリティコード&lt;/td&gt;&lt;td&gt;$ok_code&lt;/td&gt;&lt;/tr&gt;</span></li>
<li><span class="row">&lt;tr&gt;&lt;td class="col"&gt;保存されている乱数&lt;/td&gt;&lt;td class="col"&gt;$save_rand&lt;/td&gt;&lt;/tr&gt;</span></li>
<li><span class="row">&lt;tr&gt;&lt;td&gt;JavaScriptで生成された乱数&lt;/td&gt;&lt;td&gt;$in{ccode}&lt;/td&gt;&lt;/tr&gt;</span></li>
<li><span class="row">&lt;tr&gt;&lt;td class="col"&gt;保存されていた日付&lt;/td&gt;&lt;td class="col"&gt;$save_time&lt;/td&gt;&lt;/tr&gt;</span></li>
<li><span class="row">&lt;tr&gt;&lt;td&gt;現在の日付(書き換えた日付)&lt;/td&gt;&lt;td&gt;$now&lt;/td&gt;&lt;/tr&gt;</span></li>
<li><span class="row">&lt;/table&gt;</span></li>
<li><span class="row">&lt;br /&gt;</span></li>
<li><span class="row">&lt;h3&gt;* 通常はここで確認ボタンを表示してメール送信画面に進みますが省略&lt;/h3&gt;</span></li>
<li><span class="row">&lt;br /&gt;</span></li>
<li><span class="row">&lt;p&gt;&lt;a href="javascript:window.close()"&gt;閉じる&lt;/a&gt;&lt;/p&gt;</span></li>
<li><span class="row">&lt;/body&gt;&lt;/html&gt;</span></li>
<li><span class="row">HTML</span></li>
</ol>
</blockquote>
３行目は、データ保存ファイル名を指定<br />
４行目で、有効期限を秒数で指定します(ここでは２時間以内)<br />
５行目、有効期限の比較用に現在の日付を取得<br />
６〜９行目では、HTMLからの引数を取得しています<br />
１０行目で、アクティベーション用に新たに追加する乱数生成<br />
１７行目で、セキュリティコードと乱数、有効期限を確認<br />
１９行目の$flagは、表示用の確認フラグです (コード、乱数、有効期限ともに真)<br />
２５，２６行目の処理は、有効期限切れを削除するためです<br />
２９行目、表示用の確認フラグで入力ミスを検出(コードは偽だが、乱数は真)<br />
３８〜４３行目までで、フラグによる可否表示情報を作成<br /><br />
今回は、これらの情報をHTMLファイルとして確認用に書き出しています<br />
<br />
<br />

]]>
</content>
</entry>
<entry>
<title>GoogleSitemapsジェネレータ</title>
<link rel="alternate" type="text/html" href="http://sieg.xeong.com/archives/2005/07/2_googlesitemap.html" />
<modified>2006-05-28T02:43:08Z</modified>
<issued>2005-07-10T08:01:21Z</issued>
<id>tag:sieg.xeong.com,2005://1.20</id>
<created>2005-07-10T08:01:21Z</created>
<summary type="text/plain">前回のサイト探索からの続きで Google　Sitemaps用のXMLファイルを...</summary>
<author>
<name>edams</name>
<url>http://sieg.xeong.com/</url>
<email>edams9@gmail.com</email>
</author>
<dc:subject>Perl &amp; CGI</dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://sieg.xeong.com/">
<![CDATA[<p>前回のサイト探索からの続きで<br />
Google　Sitemaps用のXMLファイルを出力するスクリプトを作ってみた(コマンド編)<br />
強調されている行番号は前回(<a href="http://sieg.xeong.com/archives/2005/07/post_2.html" title="サイト探索">サイト探索</a>)からの変更点 </p>
<blockquote class="code">
<p><img src="/images/icon1.gif" width="14" height="10" border="0" /> Code: <a href="/download/delivery.cgi?file=xmlgen.pl">download</a> <script src="/download/dl_count.cgi?file=xmlgen.pl"></script></p>
<ol style="margin-top:0px;">
<li><span class="row">use LWP::Simple qw(get head);</span></li>
<li><span class="row">use HTML::LinkExtor;</span></li>
<li><span class="row">use strict;</span></li>
<li><span class="row">&nbsp;</span></li>
<li><span class="row">my(%seen,%mod_time,%out,$site,$top_url,$freq,$priority);</span></li>
<li class="renew"><span class="row">$freq = '<span class="val">weekly</span>';</span></li>
<li class="renew"><span class="row">$priority = '<span class="val">1.0</span>';</span></li>
<li><span class="row">$top_url = '<span class="val">http://sieg.xeong.com/</span>';</span></li>
<li><span class="row"></span></li>
<li><span class="row">$top_url = "http://$top_url" unless $top_url =~ /^https?\b/;</span></li>
<li><span class="row">($site = $top_url) =~ s/^(http:\/\/.+\/).*$/$1/;</span></li>
<li><span class="row">$site .= "/" unless ($site =~ /\/$/);</span></li>
<li><span class="row">&nbsp;</span></li>
<li class="renew"><span class="row">&print_xml_head;</span></li>
<li><span class="row">linker($top_url);</span></li>
<li class="renew"><span class="row">&print_xml_foot;</span></li>
<li><span class="row">&nbsp;</span></li>
<li><span class="row">sub linker {</span></li>
<li><span class="row">&nbsp;my $base_url = shift;</span></li>
<li><span class="row">&nbsp;my $parser = HTML::LinkExtor-&gt;new(undef, $base_url);</span></li>
<li><span class="row">&nbsp;$parser-&gt;parse(get($base_url))-&gt;eof;</span></li>
<li><span class="row">&nbsp;my @links = $parser-&gt;links;</span></li>
<li><span class="row">&nbsp;for my $linkarray (@links) {</span></li>
<li><span class="row">&nbsp;&nbsp;my @element = @$linkarray;</span></li>
<li><span class="row">&nbsp;&nbsp;my $elt_type = shift @element;</span></li>
<li><span class="row">&nbsp;&nbsp;while(@element) {</span></li>
<li><span class="row">&nbsp;&nbsp;&nbsp;my ($attr_name, $attr_value) = splice(@element, 0,2);</span></li>
<li><span class="row">&nbsp;&nbsp;&nbsp;if(  $attr_name eq "href" && $attr_value-&gt;scheme =~ /\b(https?)\b/ && $attr_value =~ /^$site/</span></li>
<li><span class="row">&nbsp;&nbsp;&nbsp;&nbsp;&& ($attr_value =~ /\.xml?$/i or $attr_value =~ /\.s?html?$/i or $attr_value =~ /\.php.*$/i or $attr_value =~ /\.cgi.*$/i)</span></li>
<li><span class="row">&nbsp;&nbsp;&nbsp;){</span></li>
<li><span class="row">&nbsp;&nbsp;&nbsp;&nbsp;$attr_value =~ s/^(.+)#.*$/$1/;</span></li>
<li><span class="row">&nbsp;&nbsp;&nbsp;&nbsp;next if(defined $seen{$attr_value});</span></li>
<li><span class="row">&nbsp;&nbsp;&nbsp;&nbsp;my @heads = LWP::Simple::head($attr_value);</span></li>
<li><span class="row">&nbsp;&nbsp;&nbsp;&nbsp;if(@heads) {</span></li>
<li><span class="row">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$seen{$attr_value}++;</span></li>
<li><span class="row">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my @date = $heads[2] ? gmtime($heads[2]) : gmtime(time);</span></li>
<li><span class="row">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$mod_time{$attr_value} = sprintf("%04d-%02d-%02dT%02d:%02d:%02dZ", $date[5]+1900, $date[4]+1, @date[3,2,1,0]);</span></li>
<li><span class="row">&nbsp;&nbsp;&nbsp;&nbsp;}</span></li>
<li><span class="row">&nbsp;&nbsp;&nbsp;}</span></li>
<li><span class="row">&nbsp;&nbsp;}</span></li>
<li><span class="row">&nbsp;}</span></li>
<li><span class="row">&nbsp;</span></li>
<li><span class="row">&nbsp;for (sort keys %seen) {</span></li>
<li><span class="row">&nbsp;&nbsp;my $mod = $mod_time{$_};</span></li>
<li><span class="row">&nbsp;&nbsp;s/^(.+\.cgi).*$/$1/i;</span></li>
<li><span class="row">&nbsp;&nbsp;s/^(.+\.php).*$/$1/i;</span></li>
<li><span class="row">&nbsp;&nbsp;if(defined $out{$_}) {</span></li>
<li><span class="row">&nbsp;&nbsp;&nbsp;next;</span></li>
<li><span class="row">&nbsp;&nbsp;} else {</span></li>
<li><span class="row">&nbsp;&nbsp;&nbsp;$out{$_} = 'true';</span></li>
<li class="renew"><span class="row">&nbsp;&nbsp;&nbsp;print_xml($_,$mod);</span></li>
<li><span class="row">&nbsp;&nbsp;&nbsp;linker($_);</span></li>
<li><span class="row">&nbsp;&nbsp;}</span></li>
<li><span class="row">&nbsp;}</span></li>
<li><span class="row">}</span></li>
<li><span class="row">&nbsp;</span></li>
<li class="renew"><span class="row">sub print_xml_head {</span></li>
<li class="renew"><span class="row">&nbsp;my %in_url = @_;</span></li>
<li class="renew"><span class="row">&nbsp;my @date = gmtime(time);</span></li>
<li class="renew"><span class="row">&nbsp;my $mod_time = sprintf("%04d-%02d-%02dT%02d:%02d:%02dZ", $date[5]+1900, $date[4]+1, @date[3,2,1,0]);</span></li>
<li class="renew"><span class="row">&nbsp;print &lt;&lt;XML;</span></li>
<li class="renew"><span class="row">&lt;?xml version="1.0" encoding="UTF-8"?&gt;</span></li>
<li class="renew"><span class="row">&lt;urlset xmlns="http://www.google.com/schemas/sitemap/0.84"</span></li>
<li class="renew"><span class="row">xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"</span></li>
<li class="renew"><span class="row">xsi:schemaLocation="http://www.google.com/schemas/sitemap/0.84</span></li>
<li class="renew"><span class="row">http://www.google.com/schemas/sitemap/0.84/sitemap.xsd"&gt;\n</span></li>
<li class="renew"><span class="row">&lt;url&gt;</span></li>
<li class="renew"><span class="row">&lt;loc&gt;$top_url&lt;/loc&gt;</span></li>
<li class="renew"><span class="row">&lt;lastmod&gt;$mod_time&lt;/lastmod&gt;</span></li>
<li class="renew"><span class="row">&lt;changefreq&gt;$freq&lt;/changefreq&gt;</span></li>
<li class="renew"><span class="row">&lt;priority&gt;$priority&lt;/priority&gt;</span></li>
<li class="renew"><span class="row">&lt;/url&gt;\n</span></li>
<li class="renew"><span class="row">XML</span></li>
<li class="renew"><span class="row">}</span></li>
<li><span class="row">&nbsp;</span></li>
<li class="renew"><span class="row">sub print_xml {</span></li>
<li class="renew"><span class="row">&nbsp;print qq(&lt;url&gt;\n&lt;loc&gt;$_[0]&lt;/loc&gt;\n&lt;lastmod&gt;$_[1]&lt;/lastmod&gt;\n&lt;/url&gt;\n);</span></li>
<li class="renew"><span class="row">}</span></li>
<li><span class="row">&nbsp;</span></li>
<li class="renew"><span class="row">sub print_xml_foot {</span></li>
<li class="renew"><span class="row">&nbsp;print qq(\n&lt;/urlset&gt;\n);</span></li>
<li class="renew"><span class="row">}</span></li>
</ol>
</blockquote>]]>
<![CDATA[<p>
<u>使い方</u><br />
６行目で、内容の更新頻度("always", "hourly", "daily", "weekly", "monthly", "yearly", "never")を指定<br />
７行目で、同じサイト内の他のページと比較した優先度(0.0〜1.0)<br />
８行目で探索するURLを指定<br />
Windowsではコマンドラインから、これを実行するとGooglSitemaps用のXMLを表示する<br />

<p style="border:1px dotted #888888;padding:10px;">
WindowsコマンドプロンプトでのXMLファイル(sitemap.xml)への出力例<br />
 perl -w xmlgen.pl > sitemap.xml</p>

<u>環境</u><br />
以下のperlモジュールが必要<br />
LWP::Simple<br />
HTML::LinkExtor<br /><br />

<u>参照</u><br />
UTCタイムについて、W3Cの<a href="http://www.w3.org/TR/NOTE-datetime" target="_balnk">Date and Time Formats</a>を参考にした<br />
Link::Extorについては Perldoc と、河馬屋二千年堂さんの<a href="http://homepage3.nifty.com/hippo2000/perltips/html/LinkExtor.htm" target="_blank">日本語訳</a>を<br />
Google Sitemapsについては、<a href="https://www.google.com/webmasters/sitemaps/docs/en/overview.html" target="_blank">Google Sitemaps (BETA) Help</a>の<a href="https://www.google.com/webmasters/sitemaps/docs/en/sitemap-generator.html" target="_blank">Using the Sitemap Generator</a>を参考にした<br />





</p>]]>
</content>
</entry>
<entry>
<title>サイト探索</title>
<link rel="alternate" type="text/html" href="http://sieg.xeong.com/archives/2005/07/post_2.html" />
<modified>2006-05-28T02:43:08Z</modified>
<issued>2005-07-01T18:37:51Z</issued>
<id>tag:sieg.xeong.com,2005://1.19</id>
<created>2005-07-01T18:37:51Z</created>
<summary type="text/plain">Google　Sitemaps ジェネレーターを作るにあたり
まずはサイト内のリンクをたどり、URLを抽出するスクリプトを作ってみた</summary>
<author>
<name>edams</name>
<url>http://sieg.xeong.com/</url>
<email>edams9@gmail.com</email>
</author>
<dc:subject>Perl &amp; CGI</dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://sieg.xeong.com/">
<![CDATA[<p>Google　Sitemaps ジェネレーターを作るにあたり、ネットワークから<br />
サイト内のリンクをたどり、同一サイト内のURLを抽出するスクリプトを作ってみた</p>

<blockquote class="code">
<p><img src="/images/icon1.gif" width="14" height="10" border="0" /> Code: <a href="/download/delivery.cgi?file=linkgen.pl">download</a> <script src="/download/dl_count.cgi?file=linkgen.pl"></script></p>

<ol style="margin-top:0px;">
<li><span class="row">use LWP::Simple qw(get head);</span></li>
<li><span class="row">use HTML::LinkExtor;</span></li>
<li><span class="row">use strict;</span></li>
<li><span class="row">&nbsp;</span></li>
<li><span class="row">my(%seen,%mod_time,%out,$site,$top_url);</span></li>
<li><span class="row">$top_url = '<span class="val">http://sieg.xeong.com/</span>';</span></li>
<li><span class="row">$top_url = "http://$top_url" unless $top_url =~ /^https?\b/;</span></li>
<li><span class="row">($site = $top_url) =~ s/^(http:\/\/.+\/).*$/$1/;</span></li>
<li><span class="row">$site .= "/" unless ($site =~ /\/$/);</span></li>
<li><span class="row">&nbsp;</span></li>
<li><span class="row">linker($top_url);</span></li>
<li><span class="row">&nbsp;</span></li>
<li><span class="row">sub linker {</span></li>
<li><span class="row"> &nbsp;my $base_url = shift;</span></li>
<li><span class="row"> &nbsp;my $parser = HTML::LinkExtor-&gt;new(undef, $base_url);</span></li>
<li><span class="row"> &nbsp;$parser-&gt;parse(get($base_url))-&gt;eof;</span></li>
<li><span class="row"> &nbsp;my @links = $parser-&gt;links;</span></li>
<li><span class="row"> &nbsp;for my $linkarray (@links) {</span></li>
<li><span class="row"> &nbsp; &nbsp;my @element = @$linkarray;</span></li>
<li><span class="row"> &nbsp; &nbsp;my $elt_type = shift @element;</span></li>
<li><span class="row"> &nbsp; &nbsp;while(@element) {</span></li>
<li><span class="row"> &nbsp; &nbsp; &nbsp;my ($attr_name, $attr_value) = splice(@element, 0,2);</span></li>
<li><span class="row"> &nbsp; &nbsp; &nbsp;if( &nbsp;$attr_name eq "href" &amp;&amp; $attr_value-&gt;scheme =~ /\b(https?)\b/ &amp;&amp; $attr_value =~ /^$site/){</span></li>
<li><span class="row"> &nbsp; &nbsp; &nbsp; &nbsp;# &nbsp; &amp;&amp; ($attr_value =~ /\.xml?$/i or $attr_value =~ /\.s?html?$/i or $attr_value =~ /\.php.*$/i or $attr_value =~ /\.cgi.*$/i)){</span></li>
<li><span class="row"> &nbsp; &nbsp; &nbsp; &nbsp;$attr_value =~ s/^(.+)#.*$/$1/;</span></li>
<li><span class="row"> &nbsp; &nbsp; &nbsp; &nbsp;next if(defined $seen{$attr_value});</span></li>
<li><span class="row"> &nbsp; &nbsp; &nbsp; &nbsp;my @heads = LWP::Simple::head($attr_value);</span></li>
<li><span class="row"> &nbsp; &nbsp; &nbsp; &nbsp;if(@heads) {</span></li>
<li><span class="row"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$seen{$attr_value}++;</span></li>
<li><span class="row"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;my @date = $heads[2] ? gmtime($heads[2]) : gmtime(time);</span></li>
<li><span class="row"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$mod_time{$attr_value} = sprintf("%04d-%02d-%02dT%02d:%02d:%02dZ", $date[5]+1900, $date[4]+1, @date[3,2,1,0]);</span></li>
<li><span class="row"> &nbsp; &nbsp; &nbsp; &nbsp;}</span></li>
<li><span class="row"> &nbsp; &nbsp; &nbsp;}</span></li>
<li><span class="row"> &nbsp; &nbsp;}</span></li>
<li><span class="row"> &nbsp;}</span></li>
<li><span class="row">&nbsp;</span></li>
<li><span class="row"> &nbsp;for (sort keys %seen) {</span></li>
<li><span class="row"> &nbsp; &nbsp;my $mod = $mod_time{$_};</span></li>
<li><span class="row"># &nbsp; &nbsp;s/^(.+\.cgi).*$/$1/i;</span></li>
<li><span class="row"># &nbsp; &nbsp;s/^(.+\.php).*$/$1/i;</span></li>
<li><span class="row"> &nbsp; &nbsp;if(defined $out{$_}) {</span></li>
<li><span class="row"> &nbsp; &nbsp; &nbsp;next;</span></li>
<li><span class="row"> &nbsp; &nbsp;} else {</span></li>
<li><span class="row"> &nbsp; &nbsp; &nbsp;$out{$_} = 'true';</span></li>
<li><span class="row"> &nbsp; &nbsp; &nbsp;print qq($_ - $mod\n);</span></li>
<li><span class="row"> &nbsp; &nbsp; &nbsp;linker($_);</span></li>
<li><span class="row"> &nbsp; &nbsp;}</span></li>
<li><span class="row"> &nbsp;}</span></li>
<li><span class="row">}</span></li>
</ol>
</blockquote>]]>
<![CDATA[<p>
<u>使い方</u><br />
６行目で探索するURLを指定<br />
Windowsではコマンドラインから、これを実行するとリンクリストとUTC時間を表示する<br />

<p style="border:1px dotted #888888;padding:10px;">
Windowsコマンドプロンプトでのテキストファイル(link.txt)への出力例<br />
 perl -w linkgen.pl > link.txt</p>

<br />

<u>環境</u><br />
以下のperlモジュールが必要<br />
LWP::Simple<br />
HTML::LinkExtor<br /><br />

<u>解説</u><br />
６行目: $top_urlに探索したいサイトのトップページを指定する<br />
以下９行目までは、URLの補間処理<br />
１１行目: サブルーチン linker 実行<br /><br />

linker: <br />
１５，１６行でページ内のリンクリストを取得、このリストは１７行目 @links に格納<br />
２３行目で href属性 内の http又はhttps で始まり、サイトの url を含むものだけに分類<br />
２４行目はコメントアウトしてあるが、はずすと xml,htm,html,shtm,shtml,php,cgi だけに絞り込める (その際２３行目後ろの２文字は取り去ること)<br />
２５行目でページ内リンク(アンカー)を取り去る<br />
２６行目重複を確認(再帰しているのでこれを怠ると止まらなくなる)<br />
２７行目でヘッダ情報を取得<br />
２９行目も重複対策 (%seenに格納)<br />
３０行目は対象ページの最終更新日からGMTタイムを取得<br />
３１行目で整形して %mod_time に格納<br />
３８行目は、以下２行をコメントアウトした場合の対策としての位置<br />
３９，４０行目は、コメントアウトしているがCGIとPHPへの変数を削除<br />
以下４行は、更に重複を確認 (心配性です)<br />
４５行目で出力 形式は 完全URL - UTCタイム<br />
４６行目で再帰<br /><br />

<u>注意</u><br />
しつこいようだが再帰処理しているので、改変時には注意を<br />
サイトの構成、ネットワークの状態にもよるが　かなり時間がかかるはず<br />
できるだけ、コメントアウトしているところを実行させるほうがいい<br />
２７行目: LWP::Simple::headとしているのはCGI.pmのheadとの名前衝突回避のため<br /><br />

<u>参照</u><br />
UTCタイムについて、W3Cの<a href="http://www.w3.org/TR/NOTE-datetime" target="_balnk">Date and Time Formats</a>を参考にした<br />
Link::Extorについては Perldoc と、河馬屋二千年堂さんの<a href="http://homepage3.nifty.com/hippo2000/perltips/html/LinkExtor.htm" target="_blank">日本語訳</a>を<br />
LWP::Simple については言うまでもないだろう<br /><br />

<u>方向性</u><br />
これから、Google Sitemaps ジェネレーターを作っていこうと思っているわけで<br />
とりあえずは、URLの抽出と ISO 8601形式の時間換算をやってみた<br />
次は簡単　<a href="https://www.google.com/webmasters/sitemaps/docs/en/faq.html" target="_blank">Google Sitemaps (BETA) Help</A>と<br />
<a href="http://kotonoha.main.jp/2005/06/04google-sitemaps.html" target="_blanlk">グーグル・サイトマップ（ベータ版）FAQとプロトコル全訳</a><br />
を参考にXMLタグを組むだけ 今度はCGIにしようと思う</p>]]>
</content>
</entry>
<entry>
<title>Google Sitemaps</title>
<link rel="alternate" type="text/html" href="http://sieg.xeong.com/archives/2005/06/google_sitemaps.html" />
<modified>2006-05-28T02:43:08Z</modified>
<issued>2005-06-29T19:37:37Z</issued>
<id>tag:sieg.xeong.com,2005://1.15</id>
<created>2005-06-29T19:37:37Z</created>
<summary type="text/plain">遅ればせながら GoogleSitemaps を知りました 詳しく読むと　なんの...</summary>
<author>
<name>edams</name>
<url>http://sieg.xeong.com/</url>
<email>edams9@gmail.com</email>
</author>
<dc:subject>ひとりごと</dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://sieg.xeong.com/">
<![CDATA[<p>遅ればせながら GoogleSitemaps を知りました<br />
詳しく読むと　なんのことはない<br />
規定のサイトマップを作るとGoogleロボットがやってきて、くまなく拾って行ってくれると言うもの<br />
これ、特にブログなんかには有効で　なかなか拾って行ってはくれなかった　過去のアーカイブなんかも拾って行ってくれるらしい<br />
まぁ、うちみたく始めたばかりのところには　あんまり効果はないかも・・</p>

<p>それにしても、Googleってどこまでやるんだろ<br />
最近登録URLが増えたせいか、ただでさえクロールの失敗が多いというのに<br />
こんなこと始めちゃって大丈夫なんだろうか<br />
もしかしたら、これからはこの Google Sitemaps を基準にする気かもね<br />
まぁ、ベータ版ですからね　いろいろと実験してるんだということかも</p>

<p>Googleアカウントを持っているので、とりあえずここでもやってみました<br />
<a href="https://www.google.com/webmasters/sitemaps/" target="_blank">Google Sitemaps (BETA)</a>にログイン後、このMovable Typeで作ったXMLのURLを指定しておきました<br />
あとは、待つだけ　たのしみ　たのしみ</p>

<p>ついでに、このことを調べてるうちになかなかいいサイトを発見<a href="http://www.hyperposition.com/se3blog/" target="_blank">検索エンジン三国志</a>なんだけど<br />
なかなかためになること色々あっていいかもよ</p>

<p><br />
更に詳しい情報:<br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://internet.watch.impress.co.jp/cda/news/2005/06/06/7906.html" target="_blank" title="INTERNET Watch">Google、更新情報などを検索結果に反映するツールでインデックス強化</a> (ニュース)<br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://kotonoha.main.jp/2005/06/04google-sitemaps.html" target="_blank"  title="Google Sitemaps グーグル・サイトマップ（ベータ版）FAQとプロトコル全訳。新しいURL登録方法はSEOに必須になる？">Google Sitemaps グーグル・サイトマップ（ベータ版）FAQとプロトコル全訳</a> (ナレッジ)<br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://www.hyperposition.com/se3blog/google/tools/20050606221756.html" target="_blank" title="検索エンジン三国志">Google SitemapsのMovable Typeテンプレート完全版</a> (解説)<br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://as-is.net/blog/archives/001008.html" target="_blank" title="Ogawa::Memoranda">Ogawa::Memoranda: Google Sitemaps</a> (解説＆ナレッジ)<br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://blog.takawo.net/000057.html" target="_blank" title="アフェリエイト研究室ブログ">Google SitemapsのXMLジェネレータ</a> (ツール)<br />
</p>]]>

</content>
</entry>
<entry>
<title>Flash programming リンク集</title>
<link rel="alternate" type="text/html" href="http://sieg.xeong.com/archives/2005/06/flash_programmi.html" />
<modified>2006-05-28T02:43:08Z</modified>
<issued>2005-06-29T01:07:31Z</issued>
<id>tag:sieg.xeong.com,2005://1.18</id>
<created>2005-06-29T01:07:31Z</created>
<summary type="text/plain">Macromedia - FLTN : fl0284 - FlashVars を...</summary>
<author>
<name>edams</name>
<url>http://sieg.xeong.com/</url>
<email>edams9@gmail.com</email>
</author>
<dc:subject>Link</dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://sieg.xeong.com/">
<![CDATA[<p><img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://www.macromedia.com/jp/support/flash/ts/documents/fl0284.html" target="_blank">Macromedia - FLTN : fl0284 - FlashVars を使用して SWF へ変数を渡す</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://hima.chu.jp/flash/" target="_blank">クジラ式 FLASH CGI</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://www2.netwave.or.jp/~light/" target="_blank">ＦＬＡＳＨ道場</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://www.ochaden.net/technology/flash/" target="_blank">http://www.ochaden.net/technology/flash/</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://homepage3.nifty.com/ginga-b/" target="_blank">Flash ActionScript Helper</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://fpower.org/advance.htm" target="_blank">FLASH ADVANCE</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://www.flash-jp.com/" target="_blank">FLASH-JP.COM - FLASH-japan FORUM</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://www.macromedia.com/jp/macromedia/style_guide/buttons/" target="_blank">Macromedia - Macromedia Web ボタン</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://hfm-kenchan.com/" target="_blank">FlashQ&amp;A</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://www.d1.dion.ne.jp/~k_h7926/" target="_blank">happy</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://www.flashcomponents.net/" target="_blank">[ the flash components network ]</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://www.macromedia.com/software/flashpaper/" target="_blank">Macromedia - FlashPaper 2</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://www.macromedia.com/cfusion/showcase/index.cfm" target="_blank">Macromedia - Showcase</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://www.macromedia.com/jp/" target="_blank">Macromedia Japan</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://allabout.co.jp/computer/hpcreate/subject/msubsub_lectureflash.htm" target="_blank">FLASH，ActionScript作成講座 - ［ホームページ作成］All About(1/2)</a><br />
</p>]]>

</content>
</entry>
<entry>
<title>Perl &amp; CGI リンク集</title>
<link rel="alternate" type="text/html" href="http://sieg.xeong.com/archives/2005/06/perl_cgi.html" />
<modified>2006-05-28T02:43:08Z</modified>
<issued>2005-06-28T01:03:43Z</issued>
<id>tag:sieg.xeong.com,2005://1.17</id>
<created>2005-06-28T01:03:43Z</created>
<summary type="text/plain">Perl Archive by Creative Fundamentals, I...</summary>
<author>
<name>edams</name>
<url>http://sieg.xeong.com/</url>
<email>edams9@gmail.com</email>
</author>
<dc:subject>Link</dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://sieg.xeong.com/">
<![CDATA[<p><img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://www.perlarchive.com/" target="_blank">Perl Archive by Creative Fundamentals, Inc.</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://www.harukaze.net/~mishima/perl/" target="_blank">Perl for Newbie（Perl初心者の部屋）</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://www.perl.com/" target="_blank">Perl.com The Source for Perl -- perl development, perl conferences</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://www.att.or.jp/perl/faq/perlwin32faq/perlwin32faq4j.html" target="_blank">perlwin32faq4 - Windows NT および Windows 95/98</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://www.din.or.jp/~ohzaki/perl.htm" target="_blank">Perlメモ</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://www.context.co.jp/perlinfo/" target="_blank">Perl情報メモ</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://www.cgispy.com/webmaster/promotion/search-tricks.shtml" target="_blank">CGISpy.com Webmaster Spot - Search Engine Tips</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://hp.vector.co.jp/authors/VA014550/perl/index2.html" target="_blank">PF：Perl CGI</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://perldoc.jp/docs/modules/MIME-Base64-2.12/Base64.pod" target="_blank">MIMEBase64 - base64文字列のエンコードとデコード</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://www.kawa.net/works/jcode/uni-escape.html" target="_blank">Shift_JIS に含まれない文字をエスケープ (Jcode.pm編)</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://www.bioinfo.jp/tips.html" target="_blank">Tips (CGI, Perl, Unix and etc.)</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://perl.infoware.ne.jp/" target="_blank">use Object; (Perl)</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://perldoc.jp/docs/modules/" target="_blank">PerlDoc of /docs/modules(日本語翻訳)</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://www.sitescripts.com/Perl_and_CGI/" target="_blank">Perl &amp; CGI Scripts</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://search.cpan.org/dist/Encode/JP/JP.pm#Note_on_ISO-2022-JP(-1)?" target="_blank">search.cpan.org EncodeJP - Japanese Encodings</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://par.perl.org/index.cgi" target="_blank">HomePage - PAR Homepage</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://www.kawa.net/works/perl/phone/pnews.html" target="_blank">phone.pl - 携帯電話キャリア自動判別ライブラリ</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://www-cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/CCGI/index.html" target="_blank">Introduction of CGI in C/C++</a><br />
</p>]]>

</content>
</entry>
<entry>
<title>PROGRAMING リンク集</title>
<link rel="alternate" type="text/html" href="http://sieg.xeong.com/archives/2005/06/program.html" />
<modified>2006-05-28T02:43:08Z</modified>
<issued>2005-06-27T00:58:38Z</issued>
<id>tag:sieg.xeong.com,2005://1.16</id>
<created>2005-06-27T00:58:38Z</created>
<summary type="text/plain">Blowfish JavaScript Implementation  AAM ...</summary>
<author>
<name>edams</name>
<url>http://sieg.xeong.com/</url>
<email>edams9@gmail.com</email>
</author>
<dc:subject>Link</dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://sieg.xeong.com/">
<![CDATA[<p><img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://aam.ugpl.de/node/view/1060" target="_blank">Blowfish JavaScript Implementation  AAM</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://www.ss.iij4u.or.jp/~somali/web/_blowfish.html" target="_blank">Cepheid  - Blowfish暗号化アルゴリズム</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://www.microsoft.com/japan/msdn/directx/downloads.asp" target="_blank">DirectX Developer Center - Microsoft DirectX 9.0 ダウンロード</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://hail2u.net/" target="_blank">hail2u.net</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://sourceforge.jp/projects/cygwin-je" target="_blank">SourceForge.jp Project Info - Cygwin JE</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://www.namikilab.tuat.ac.jp/~sasada/prog/index.html" target="_blank">Prog.</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://www.csdinc.co.jp/archiver/lib/extents.html" target="_blank">Common Archivers Library: 拡張子別 対応DLL（圧縮解凍エンジン）一覧表</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://www.rtpro.yamaha.co.jp/RT/docs/misc/kanji-euc.html" target="_blank">euc kanji code table</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://x68000.q-e-d.net/~68user/" target="_blank">68user's page</a><br />
</p>]]>
<![CDATA[<p><u>MySQL</u><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://www.hi-ho.ne.jp/tsumiki/" target="_blank">つみきWeb</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://www.softagency.co.jp/mysql/pro/win_winclients.html" target="_blank">MySQLプログラム / Winclients日本語サーバー対応版</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://www.mmdb.net/m_kaneko/" target="_blank">かねやんMySQLAdmin公式サイト</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://homepage1.nifty.com/yito/anhttpd/faq/mysql.html" target="_blank">MySQLのインストール/動作確認手順</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://www.aglabo.com/agl/proevo/software/fabforce/index.php" target="_blank">DBDesigner4 Manual(日本語)</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://y-kit.jp/saba/xp/mysqlsetup.htm" target="_blank">MySQLデータベースサーバーのセットアップ Windows篇</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://www.fabforce.net/index.php" target="_blank">fabFORCE.net</a></p>

<p><br />
<u>Windows</u><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://www.themeworld.com/index.shtml" target="_blank">ThemeWorld.com - You Dream It, We Theme It!</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://homepage2.nifty.com/winfaq/w2k/" target="_blank">Windows2000.FAQ</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://www.cv.its.hiroshima-cu.ac.jp/~kazutaka/Windows/index.html" target="_blank">ネットの基礎知識＆OSカスタマイズ</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://www.a-yu.com/system/nt_linux.html" target="_blank">WindowsNT/2000 と Linux の共存</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://www.littlewhitedog.com/content-17.html" target="_blank">LWD - Win2K Boot Logo Gallery - Page 1</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://psyco.jp/heliboy/liar/02.html" target="_blank">ライアーマン ウインドウズＸＰには【隠しコマンド】が存在した</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://www.wstaylor.net/longhorn.html" target="_blank">WSTWeb Designs - Windows Themes and Wallpapers</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://www.geocities.jp/msgr427/msn.html" target="_blank">MSN Messengerカスタマイズ</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://itpro.nikkeibp.co.jp/free/NT/WinKeyWord/20040805/1/append.shtml" target="_blank">Windowsコマンド集：（append）</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://forum.nifty.com/fpcu/dosvcmd/" target="_blank">DOS-Vコマンド・リファレンス＠FPCU</a></p>

<p><br />
<u>Linux</u><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://www.idg.co.jp/lw/rendou/200408_FC2/" target="_blank">LinuxWorld Online</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://vinelinux.org/index.html" target="_blank">Vine Linux Home Page</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://allabout.co.jp/career/database/closeup/CU20040813A/index.htm" target="_blank">WindowsでPostgreSQL 手順1-3 - ［データベース］All About Japan</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://www.coolbrain.net/main.html" target="_blank">DISTORTION in the SHELL</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://www.ring.gr.jp/pub/linux/Vine/VinePlus/3.1/i386/RPMS.plus/" target="_blank">Index of /pub/linux/Vine/VinePlus/3.1/i386/RPMS.plus</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://www.ut-info.com/linux-soft/" target="_blank">ペンギンの杜</a></p>

<p><br />
<u>Delphi</u><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://www.asahi-net.or.jp/~HA3T-NKMR/tips.htm" target="_blank">Delphi Tips</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://kakinotane.s7.xrea.com/dirDelphi/mainmenu.html" target="_blank">Delphi 入門</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://www.w-frontier.com/delphi/" target="_blank">Delphi入門</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://or-lab.asahi-u.ac.jp/intro_to_delphi/default.htm" target="_blank">Pascal・Delphi入門：オンライン学習 ページ</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://www.threeweb.ad.jp/~satou/" target="_blank">Ｄｅｌｐｈｉ（デルファイ）のページ</a></p>

<p><br />
<u>C系</u><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://www.k.ctrl.titech.ac.jp/~mtanaka/vc/" target="_blank">Visual C++ 講座</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://homepage3.nifty.com./mitui707/VisualC/VCdirectory.html/" target="_blank">ファイル/フォルダの絶対パス取得、名前の読み込み、作成、リネーム、コピー、移動、削除</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://www.athomejp.com/goldfish/vcused/default.asp" target="_blank">VC++ 操作方法</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://www.nitoyon.com/vc/" target="_blank">VC++の使い方 [VC++の使い方]</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://www1.coralnet.or.jp/mako10/vc/vc0000.html" target="_blank">VC++ 覚書き</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://www.alpha-net.ne.jp/users2/uk413/vc/" target="_blank">VC++テクニックindex</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://rararahp.cool.ne.jp/vc/" target="_blank">Area of VC++TIPS らららのお部屋</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://www.mtakahashi.com/" target="_blank">VC++超初心者のホームページ</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://www.neco.nu/gohodoji/bccfaq.html" target="_blank">Borland C++ Compiler 5.5　FAQ</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://www.kumei.ne.jp/c_lang/index_sdk.html" target="_blank">C言語Windows SDK編INDEX</a><br />
</p>]]>
</content>
</entry>
<entry>
<title>プログラミング言語の種類</title>
<link rel="alternate" type="text/html" href="http://sieg.xeong.com/archives/2005/06/post_1.html" />
<modified>2006-06-16T13:53:43Z</modified>
<issued>2005-06-26T00:39:55Z</issued>
<id>tag:sieg.xeong.com,2005://1.14</id>
<created>2005-06-26T00:39:55Z</created>
<summary type="text/plain">プログラミング言語の種類についての大雑把な解説</summary>
<author>
<name>edams</name>
<url>http://sieg.xeong.com/</url>
<email>edams9@gmail.com</email>
</author>
<dc:subject>プログラミング</dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://sieg.xeong.com/">
<![CDATA[<p>大きな定義からいうと　低水準言語と高水準言語に分けられます</p>

<p><br />
#-----------------------------------<br />
# 低水準言語<br />
#-----------------------------------</p>

<p>機械語とアセンブリ言語が代表的</p>

<p>■機械語<br />
CPUがそのまま解釈できる命令の集まりで、人間が直接書くことはまずない<br />
参考書: 『<a href="http://www.amazon.co.jp/exec/obidos/redirect?path=ASIN/493079529X&amp;link_code=as2&amp;camp=247&amp;tag=sieg-22&amp;creative=1211">マシン語・機械語・真心語</a><img src="http://www.assoc-amazon.jp/e/ir?t=sieg-22&amp;l=as2&amp;o=9&amp;a=493079529X" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />』 &nbsp; (参考書: は『<a href="http://www.amazon.co.jp/" target="_blank">Amazon.co.jp</a>各商品詳細ページ』へのリンクです)</p>

<p><br />
■アセンブリ言語<br />
英単語に近いニーモック表記で、機械語の命令に1対1に対応したプログラムの作成が可能となる<br />
ただし、CPU毎に命令体系が異なるため、CPUの種類だけ機械語やアセンブリ言語は存在することになる<br />
アセンブリ言語は、CPUの全ての動作を制御することができ、非常に細かい部分までプログラム可能である<br />
つまり、アセンブリ言語を学習・理解することはCPUの動作自体を理解することになるので、コンピュータの基礎的な学習をする際には必修となる<br />
参考書: 『<a href="http://www.amazon.co.jp/exec/obidos/redirect?path=ASIN/4563007056&amp;link_code=as2&amp;camp=247&amp;tag=sieg-22&amp;creative=1211" target="_blank">アセンブリ言語</a><img src="http://www.assoc-amazon.jp/e/ir?t=sieg-22&amp;l=as2&amp;o=9&amp;a=4563007056" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />』 『<a href="http://www.amazon.co.jp/exec/obidos/redirect?path=ASIN/4887188293&amp;link_code=as2&amp;camp=247&amp;tag=sieg-22&amp;creative=1211" target="_blank">アセンブリ言語の教科書</a><img src="http://www.assoc-amazon.jp/e/ir?t=sieg-22&amp;l=as2&amp;o=9&amp;a=4887188293" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />』 『<a href="http://www.amazon.co.jp/exec/obidos/redirect?path=ASIN/4320120957&amp;link_code=as2&amp;camp=247&amp;tag=sieg-22&amp;creative=1211" target="_blank">アセンブリ言語の基礎―CASL2によるプログラミング</a><img src="http://www.assoc-amazon.jp/e/ir?t=sieg-22&amp;l=as2&amp;o=9&amp;a=4320120957" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />』<br />
</p>]]>
<![CDATA[<p>#-----------------------------------<br />
# 高水準言語<br />
#-----------------------------------</p>

<p>■FORTRAN (FORmula TRANslation)<br />
FORTRANは、1956年にIBM社が開発した科学技術計算向けの言語<br />
高水準言語としては最も歴史があるもので、その後何度か改定を受けながら進化している（FORTRAN 66、FORTRAN 77、FORTRAN 90）<br />
現在でもLISPとならんで科学技術計算を行う際にはよく利用されている<br />
参考書: 『<a href="http://www.amazon.co.jp/exec/obidos/redirect?path=ASIN/4274131599&amp;link_code=as2&amp;camp=247&amp;tag=sieg-22&amp;creative=1211" target="_blank">わかりやすいFORTRANプログラミング</a><img src="http://www.assoc-amazon.jp/e/ir?t=sieg-22&amp;l=as2&amp;o=9&amp;a=4274131599" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />』 『<a href="http://www.amazon.co.jp/exec/obidos/redirect?path=ASIN/4781904610&amp;link_code=as2&amp;camp=247&amp;tag=sieg-22&amp;creative=1211" target="_blank">Fortran 77プログラミング</a><img src="http://www.assoc-amazon.jp/e/ir?t=sieg-22&amp;l=as2&amp;o=9&amp;a=4781904610" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />』 『<a href="http://www.amazon.co.jp/exec/obidos/redirect?path=ASIN/4627836600&amp;link_code=as2&amp;camp=247&amp;tag=sieg-22&amp;creative=1211" target="_blank">FORTRAN77とFortran90</a><img src="http://www.assoc-amazon.jp/e/ir?t=sieg-22&amp;l=as2&amp;o=9&amp;a=4627836600" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />』</p>

<p><br />
■COBOL (COmmon Business Oriented Language)<br />
COBOLは、1959年にアメリカ国防総省が計算機利用者と製造業者の代表を集め、CODASYL（COnference on DAts SYstems Languages：データシステム言語協議会）を作り、そこで発表された<br />
COBOLの特徴は、事務処理作業の中心となるデータ処理を容易にしている点と読みやすく、書きやすい表現として、英語に近い表現でプログラムできるようにしている<br />
最近ではCOBOLを使った、ネットワークプログラミングも注目を集めている<br />
参考書: 『<a href="http://www.amazon.co.jp/exec/obidos/redirect?path=ASIN/4877830146&amp;link_code=as2&amp;camp=247&amp;tag=sieg-22&amp;creative=1211" target="_blank">標準COBOLプログラミング</a><img src="http://www.assoc-amazon.jp/e/ir?t=sieg-22&amp;l=as2&amp;o=9&amp;a=4877830146" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />』 『<a href="http://www.amazon.co.jp/exec/obidos/redirect?path=ASIN/4883732010&amp;link_code=as2&amp;camp=247&amp;tag=sieg-22&amp;creative=1211" target="_blank">.NETのしくみとVB.NETプログラミング入門―COBOLユーザーに捧げる</a><img src="http://www.assoc-amazon.jp/e/ir?t=sieg-22&amp;l=as2&amp;o=9&amp;a=4883732010" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />』</p>

<p><br />
■Pascal<br />
Pascalとは、世界で最初に機械式計算機を発明した哲学者B.Pascalにちなんで名づけられたもので、1971年にスイス連邦工科大学のNiklas Wirth教授によって言語仕様が公開された<br />
Pascalは、構造化プログラミングと言語体系が最も一致しており、アルゴリズムの表現がし易いという特徴を持っている<br />
そのため、厳格な書式を要求することから、情報系学生の教育用やアルゴリズムの表現方法として最も利用されている<br />
その後PascalはWirth教授自身によって、拡張され、また後継となる言語も開発されてきている<br />
代表的なものとしては、オブジェクト指向の拡張がなされたObject-Pascal（Delphi)やシステム開発用に再設計されたModula、Modula-2、Modula-3などがある<br />
参考書: 『<a href="http://www.amazon.co.jp/exec/obidos/redirect?path=ASIN/4563014664&amp;link_code=as2&amp;camp=247&amp;tag=sieg-22&amp;creative=1211" target="_blank">PASCAL</a><img src="http://www.assoc-amazon.jp/e/ir?t=sieg-22&amp;l=as2&amp;o=9&amp;a=4563014664" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />』 『<a href="http://www.amazon.co.jp/exec/obidos/redirect?path=ASIN/4798005312&amp;link_code=as2&amp;camp=247&amp;tag=sieg-22&amp;creative=1211" target="_blank">はじめてのObject Pascalプログラミング</a><img src="http://www.assoc-amazon.jp/e/ir?t=sieg-22&amp;l=as2&amp;o=9&amp;a=4798005312" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />』 『<a href="http://www.amazon.co.jp/exec/obidos/redirect?path=ASIN/477410891X&amp;link_code=as2&amp;camp=247&amp;tag=sieg-22&amp;creative=1211" target="_blank">Delphi Object Pascalリファレンスブック</a><img src="http://www.assoc-amazon.jp/e/ir?t=sieg-22&amp;l=as2&amp;o=9&amp;a=477410891X" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />』</p>

<p><br />
■C<br />
C言語は、1972年から73年にかけてAT&Tのベル研究所のDennis M. Ritchieによって開発された<br />
C言語はUNIXと呼ばれるOSを開発するために作られた言語で、構造化プログラミングへの対応しているだけではなく、アセンブラ言語のようにハードウェアの近い部分の制御も可能としている<br />
そのため、現在ではOSをはじめとして各種アプリケーションの開発がC言語でなされるようになっている<br />
また、C言語をオブジェクト指向の機能を付加した言語としてC++が、更に派生したC#等も登場して新しいシステム開発の主流になりつつある<br />
参考書: 『<a href="http://www.amazon.co.jp/exec/obidos/redirect?path=ASIN/4797324775&amp;link_code=as2&amp;camp=247&amp;tag=sieg-22&amp;creative=1211" target="_blank">やさしいC 第2版</a><img src="http://www.assoc-amazon.jp/e/ir?t=sieg-22&amp;l=as2&amp;o=9&amp;a=4797324775" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />』 『<a href="http://www.amazon.co.jp/exec/obidos/redirect?path=ASIN/4320026926&amp;link_code=as2&amp;camp=247&amp;tag=sieg-22&amp;creative=1211" target="_blank">プログラミング言語C ANSI規格準拠</a><img src="http://www.assoc-amazon.jp/e/ir?t=sieg-22&amp;l=as2&amp;o=9&amp;a=4320026926" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />』 『<a href="http://www.amazon.co.jp/exec/obidos/redirect?path=ASIN/4797327928&amp;link_code=as2&amp;camp=247&amp;tag=sieg-22&amp;creative=1211" target="_blank">新版 明解C言語 入門編</a><img src="http://www.assoc-amazon.jp/e/ir?t=sieg-22&amp;l=as2&amp;o=9&amp;a=4797327928" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />』</p>

<p><br />
■BASIC (Baginner's All-purpose Symbolic Instruction Code)<br />
BASICは、1964年ダートマス大学でFORTRANをベースにして 大型コンピュータの教育用言語として開発された<br />
BASICの特徴は、教育現場での利用を考え、対話性に優れたインタプリタ方式を採用したことにある<br />
そのためスピード的には、他のコンパイラ言語と比較にならないが、プログラムが作りやすく、また初期のパソコンに標準で採用されたこともあり、大変普及した<br />
現在では、オブジェクト指向の拡張がなされ、コンパイラ方式のBASICが主流となりつつある<br />
参考書: 『<a href="http://www.amazon.co.jp/exec/obidos/redirect?path=ASIN/4874085040&amp;link_code=as2&amp;camp=247&amp;tag=sieg-22&amp;creative=1211" target="_blank">これから始めるBASIC</a><img src="http://www.assoc-amazon.jp/e/ir?t=sieg-22&amp;l=as2&amp;o=9&amp;a=4874085040" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />』</p>

<p><br />
■VBA (Visual Basic for Application)<br />
Visula Basicとはマイクロソフト社によって開発されたオブジェクト指向のBASIC言語である<br />
Windowsに代表されるように、現在パソコンはGUIにより操作が主流となっている<br />
これらのウィンドウやボタンといった部品をオブジェクトとして扱うように拡張された言語で、Windowsの機能をフルに使ったプログラムの作成が可能で<br />
マイクロソフトの製品（アプリケーション、例えばExcel,wordなど）用のマクロ言語としてVisual Basicのサブセットを実装したもので、個々のアプリケーション内でしか利用出来ないという制限を持つ<br />
また、マクロ言語として対話性を重視していることからインタプリタ言語と位置づけられている<br />
参考書: 『<a href="http://www.amazon.co.jp/exec/obidos/redirect?path=ASIN/4797326581&amp;link_code=as2&amp;camp=247&amp;tag=sieg-22&amp;creative=1211" target="_blank">やさしくわかるExcel VBAプログラミング</a><img src="http://www.assoc-amazon.jp/e/ir?t=sieg-22&amp;l=as2&amp;o=9&amp;a=4797326581" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />』 『<a href="http://www.amazon.co.jp/exec/obidos/redirect?path=ASIN/4883374092&amp;link_code=as2&amp;camp=247&amp;tag=sieg-22&amp;creative=1211" target="_blank">Access VBAプログラミング開発工房―2003/2002/2000 (入門・基礎編)</a><img src="http://www.assoc-amazon.jp/e/ir?t=sieg-22&amp;l=as2&amp;o=9&amp;a=4883374092" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />』</p>

<p><br />
■LISP (LISt Processor)<br />
LISPは1960年にマサチューセッツ工科大学（MIT）のJohn McCarthyによって発表された関数型のプログラミング言語で高水準言語の中では古いものに属する<br />
LISPは、その名称が示すようにリスト（LIST)と呼ばれる文字や数字（個々の文字や集合のことをアトムと呼ぶ）の集まりとして表現し、そのリストを処理するために開発された関数型の言語<br />
人間の知的活動を抽象化すると文字列と文字列のつながり方の操作に還元できる<br />
すなわちリストとリスト操作というLISPそのもので表現できることを利用して、人工知能の分野で利用されている<br />
現在では、数式処理システムなど実用化されたシステムも多い<br />
ただ、LISPは関数型言語であるため各自が勝手に関数を拡張した結果、数多くの方言が出来てしまい互換がとれなくなってしまった<br />
このような状況を打破するため統一化が図られたのがCommon-LISPで<br />
教育用にシンプルで美しい意味体系で再構築されたSchemeと言うのもある<br />
参考書: 『<a href="http://www.amazon.co.jp/exec/obidos/redirect?path=ASIN/4894714337&amp;link_code=as2&amp;camp=247&amp;tag=sieg-22&amp;creative=1211" target="_blank">ANSI Common Lisp</a><img src="http://www.assoc-amazon.jp/e/ir?t=sieg-22&amp;l=as2&amp;o=9&amp;a=4894714337" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />』 『<a href="http://www.amazon.co.jp/exec/obidos/redirect?path=ASIN/4877831029&amp;link_code=as2&amp;camp=247&amp;tag=sieg-22&amp;creative=1211" target="_blank">やさしいLisp入門</a><img src="http://www.assoc-amazon.jp/e/ir?t=sieg-22&amp;l=as2&amp;o=9&amp;a=4877831029" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />』 『<a href="http://www.amazon.co.jp/exec/obidos/redirect?path=ASIN/400007685X&amp;link_code=as2&amp;camp=247&amp;tag=sieg-22&amp;creative=1211" target="_blank">Common Lisp 入門</a><img src="http://www.assoc-amazon.jp/e/ir?t=sieg-22&amp;l=as2&amp;o=9&amp;a=400007685X" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />』</p>

<p><br />
■Prolog (Programming in Logic)<br />
Prologは、1970年フランスのマルセイユ大学でAlain Colmerauerによって作られた論理型のプログラミング言語<br />
Prologの特徴は、「述語論理」と呼ばれる人間の言語の論理体系をベースとしたもので、まず「事実」を定義し（表明）、事実間の関係を「規則」として定義する(公理）、そして最後に、「質問」を行うと、Prologは、「事実」と「規則」に従い「質問」を解釈し、その結果を返す<br />
つまり、他の高水準言語とは全く異なるプログラミングとなる<br />
参考書: 『<a href="http://www.amazon.co.jp/exec/obidos/redirect?path=ASIN/4320023374&amp;link_code=as2&amp;camp=247&amp;tag=sieg-22&amp;creative=1211" target="_blank">わかる Prolog</a><img src="http://www.assoc-amazon.jp/e/ir?t=sieg-22&amp;l=as2&amp;o=9&amp;a=4320023374" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />』 『<a href="http://www.amazon.co.jp/exec/obidos/redirect?path=ASIN/4274073084&amp;link_code=as2&amp;camp=247&amp;tag=sieg-22&amp;creative=1211" target="_blank">Prolog入門</a><img src="http://www.assoc-amazon.jp/e/ir?t=sieg-22&amp;l=as2&amp;o=9&amp;a=4274073084" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />』 『<a href="http://www.amazon.co.jp/exec/obidos/redirect?path=ASIN/4781903525&amp;link_code=as2&amp;camp=247&amp;tag=sieg-22&amp;creative=1211" target="_blank">Prolog入門―知識情報処理の序曲</a><img src="http://www.assoc-amazon.jp/e/ir?t=sieg-22&amp;l=as2&amp;o=9&amp;a=4781903525" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />』</p>

<p><br />
■LOGO<br />
LOGOは、1970年代にマサチューセッツ工科大学（MIT)のグループが、LISPをベースに、子供を含み人間との対話を重視した教育用言語として開発<br />
LOGOは、子供に対する創造性開発、情報開発を目指して、柔軟な処理を可能とする言語設計とユーザーにとって使いやすさを追求した設計を行っている<br />
その代表といえるのが「タートル・グラフィックス」と呼ばれるもので、運動場にライン引きで絵を描くのと同じようにコンピュータ上で絵が書ける<br />
参考書: 『<a href="http://www.amazon.co.jp/exec/obidos/redirect?path=ASIN/4563013110&amp;link_code=as2&amp;camp=247&amp;tag=sieg-22&amp;creative=1211" target="_blank">LOGO入門</a><img src="http://www.assoc-amazon.jp/e/ir?t=sieg-22&amp;l=as2&amp;o=9&amp;a=4563013110" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />』 『<a href="http://www.amazon.co.jp/exec/obidos/redirect?path=ASIN/4000076973&amp;link_code=as2&amp;camp=247&amp;tag=sieg-22&amp;creative=1211" target="_blank">LOGO空間プログラミング</a><img src="http://www.assoc-amazon.jp/e/ir?t=sieg-22&amp;l=as2&amp;o=9&amp;a=4000076973" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />』 『<a href="http://www.amazon.co.jp/exec/obidos/redirect?path=ASIN/4871760014&amp;link_code=as2&amp;camp=247&amp;tag=sieg-22&amp;creative=1211" target="_blank">入門・Logoの世界</a><img src="http://www.assoc-amazon.jp/e/ir?t=sieg-22&amp;l=as2&amp;o=9&amp;a=4871760014" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />』</p>

<p><br />
■Haskell <br />
Haskellは関数型言語の基礎となる記号論理学に従事したHaskell Brooks Curryにちなんで名付けられました<br />
Haskellは汎用の純粋関数型プログラミング言語で、プログラミング言語設計の分野での最近の革新の多くが取入れられています<br />
Haskellが提供するのは、高階関数、非正格の意味論、静的多相型付け、利用者定義の代数的データ型、パターン照合、リストの内包表記、モジュールシステム、モナド I/O システムで<br />
遅延評価型関数型言語に関する長年の研究を凝縮したもので、モジュールシステムなどプログラミング言語の設計としての言語</p>

<p><br />
■Python<br />
Pythonは 1990年代にGuido van Rossum 氏に設計されたもので、英国 BBC 放送のコメディ番組「モンティ パイソン」から名づけられた<br />
当初からオブジェクト指向言語として設計されたわけではないがオブジェクト指向とは相性がいい<br />
Pythonは、「シンプル」で「習得が容易」で言語自体の機能は最小限に押さえ、必要な機能は拡張モジュールとして追加するという柔軟性豊かな言語<br />
標準で多くのGUIライブラリやネットワーククライアント機能も搭載されていて、商用 RDB用のモジュールも数多く公開されている<br />
参考書: 『<a href="http://www.amazon.co.jp/exec/obidos/redirect?path=ASIN/487311022X&amp;link_code=as2&amp;camp=247&amp;tag=sieg-22&amp;creative=1211" target="_blank">初めてのPython</a><img src="http://www.assoc-amazon.jp/e/ir?t=sieg-22&amp;l=as2&amp;o=9&amp;a=487311022X" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />』 『<a href="http://www.amazon.co.jp/exec/obidos/redirect?path=ASIN/4894712210&amp;link_code=as2&amp;camp=247&amp;tag=sieg-22&amp;creative=1211" target="_blank">Pythonテクニカルリファレンス―言語仕様とライブラリ</a><img src="http://www.assoc-amazon.jp/e/ir?t=sieg-22&amp;l=as2&amp;o=9&amp;a=4894712210" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />』</p>

<p><br />
■C++<br />
C言語から派生した言語でAT&Tベル研究所のBjarne Stroustrup氏がC言語を拡張してSimula67から取り入れたクラスの概念を取り込んで開発した言語<br />
1983年にRick Mascitti氏によってC++と名づけられました<br />
現実のC++には多くのバージョンが存在します<br />
1985年に商業ベースのRelease1.0が販売され、Stroustrup博士自身が1986年に出版した"The C++ Programming Language"がRelease1.0の解説書です<br />
1990年にStroustrup博士とMargaret A. Ellisとの共著"<a href="http://www.amazon.co.jp/exec/obidos/redirect?path=ASIN/0201700735&amp;link_code=as2&amp;camp=247&amp;tag=sieg-22&amp;creative=1211" target="_blank">The C++ Programming Language</a><img src="http://www.assoc-amazon.jp/e/ir?t=sieg-22&amp;l=as2&amp;o=9&amp;a=0201700735" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />"で多重継承などの機能が追加されて、大幅な改良が行われ Release2.0, Release2.1と進化し続けています<br />
参考書: 『<a href="http://www.amazon.co.jp/exec/obidos/redirect?path=ASIN/4797324767&amp;link_code=as2&amp;camp=247&amp;tag=sieg-22&amp;creative=1211" target="_blank">やさしいC++ 第2版</a><img src="http://www.assoc-amazon.jp/e/ir?t=sieg-22&amp;l=as2&amp;o=9&amp;a=4797324767" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />』 『<a href="http://www.amazon.co.jp/exec/obidos/redirect?path=ASIN/479732743X&amp;link_code=as2&amp;camp=247&amp;tag=sieg-22&amp;creative=1211" target="_blank">詳説C++ 第2版</a><img src="http://www.assoc-amazon.jp/e/ir?t=sieg-22&amp;l=as2&amp;o=9&amp;a=479732743X" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />』 『<a href="http://www.amazon.co.jp/exec/obidos/redirect?path=ASIN/477412401X&amp;link_code=as2&amp;camp=247&amp;tag=sieg-22&amp;creative=1211" target="_blank">C++標準ライブラリの使い方 完全ガイド</a><img src="http://www.assoc-amazon.jp/e/ir?t=sieg-22&amp;l=as2&amp;o=9&amp;a=477412401X" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />』</p>

<p><br />
■JAVA<br />
James Gosling によって開発された言語が "Oak" であり、後のJavaとなった<br />
1993年に発表された、WebブラウザMosaic のクローンであり、Java(Oak)ベースのブラウザ "WebRunner"をSun Microsystemsが開発した<br />
オブジェクト指向の言語でどのような環境でも動くと言うのが売りだが、現在ではサーバサイドでの開発が主になってきている<br />
参考書: 『<a href="http://www.amazon.co.jp/exec/obidos/redirect?path=ASIN/4797331828&amp;link_code=as2&amp;camp=247&amp;tag=sieg-22&amp;creative=1211" target="_blank">やさしいJava 第3版</a><img src="http://www.assoc-amazon.jp/e/ir?t=sieg-22&amp;l=as2&amp;o=9&amp;a=4797331828" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />』 『<a href="http://www.amazon.co.jp/exec/obidos/redirect?path=ASIN/479800667X&amp;link_code=as2&amp;camp=247&amp;tag=sieg-22&amp;creative=1211" target="_blank">Javaネットワークプログラミング</a><img src="http://www.assoc-amazon.jp/e/ir?t=sieg-22&amp;l=as2&amp;o=9&amp;a=479800667X" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />』 『<a href="http://www.amazon.co.jp/exec/obidos/redirect?path=ASIN/4873110955&amp;link_code=as2&amp;camp=247&amp;tag=sieg-22&amp;creative=1211" target="_blank">Javaクックブック―Java開発者のためのレシピ集</a><img src="http://www.assoc-amazon.jp/e/ir?t=sieg-22&amp;l=as2&amp;o=9&amp;a=4873110955" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />』</p>

<p><br />
■Perl(Practical Extraction And Report Language)<br />
Perlは1986年、<a href="http://slashdot.jp/article.pl?sid=03/03/06/1041206" target="_blank" title="インタビュー">Larry Wall氏</a>によって開発されたスクリプト言語で現在ではオブジェクト指向にも対応している<br />
Ver1 1987年外部に始めて公開<br />
Ver2 1988年正規表現パッケージを導入<br />
Ver3 バイナリデータを扱えるように<br />
Ver4 1991年<br />
Ver5 1994年<br />
と、精力的に進化している言語で　特にテキスト処理に優位を持っており現在ではCGIに代表されるように　広く一般に広がった<br />
参考書: 『<a href="http://www.amazon.co.jp/exec/obidos/redirect?path=ASIN/4873111269&amp;link_code=as2&amp;camp=247&amp;tag=sieg-22&amp;creative=1211" target="_blank">初めてのPerl</a><img src="http://www.assoc-amazon.jp/e/ir?t=sieg-22&amp;l=as2&amp;o=9&amp;a=4873111269" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />』 『<a href="http://www.amazon.co.jp/exec/obidos/redirect?path=ASIN/4873110963&amp;link_code=as2&amp;camp=247&amp;tag=sieg-22&amp;creative=1211" target="_blank">プログラミングPerl〈VOLUME1〉</a><img src="http://www.assoc-amazon.jp/e/ir?t=sieg-22&amp;l=as2&amp;o=9&amp;a=4873110963" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />』 『<a href="http://www.amazon.co.jp/exec/obidos/redirect?path=ASIN/4873112028&amp;link_code=as2&amp;camp=247&amp;tag=sieg-22&amp;creative=1211" target="_blank">Perlクックブック〈VOLUME1〉</a><img src="http://www.assoc-amazon.jp/e/ir?t=sieg-22&amp;l=as2&amp;o=9&amp;a=4873112028" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />』</p>

<p><br />
■Ruby<br />
まつもと ゆきひろ氏が設計した本格的な日本発のオブジェクト指向言語<br />
まつもと ゆきひろ氏はPerlを尊敬するとだけあって Perlに似たオブジェクト指向言語でテキスト処理関係の能力などに優れている<br />
参考書: 『<a href="http://www.amazon.co.jp/exec/obidos/redirect?path=ASIN/4797314087&amp;link_code=as2&amp;camp=247&amp;tag=sieg-22&amp;creative=1211" target="_blank">たのしいRuby―Rubyではじめる気軽なプログラミング</a><img src="http://www.assoc-amazon.jp/e/ir?t=sieg-22&amp;l=as2&amp;o=9&amp;a=4797314087" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />』 『<a href="http://www.amazon.co.jp/exec/obidos/redirect?path=ASIN/4274063852&amp;link_code=as2&amp;camp=247&amp;tag=sieg-22&amp;creative=1211" target="_blank">Rubyプログラミング入門</a><img src="http://www.assoc-amazon.jp/e/ir?t=sieg-22&amp;l=as2&amp;o=9&amp;a=4274063852" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />』 『<a href="http://www.amazon.co.jp/exec/obidos/redirect?path=ASIN/4886472265&amp;link_code=as2&amp;camp=247&amp;tag=sieg-22&amp;creative=1211" target="_blank">RubyによるCGIプログラミング</a><img src="http://www.assoc-amazon.jp/e/ir?t=sieg-22&amp;l=as2&amp;o=9&amp;a=4886472265" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />』</p>

<p><br />
ウィキペディアの「<a href="http://ja.wikipedia.org/wiki/Hello_world" target="_blank">Hello world</a>」を見てるとさすがにあきてきます</p>]]>
</content>
</entry>
<entry>
<title>自宅サーバを公開</title>
<link rel="alternate" type="text/html" href="http://sieg.xeong.com/archives/2005/06/post.html" />
<modified>2006-05-28T02:43:08Z</modified>
<issued>2005-06-24T18:49:07Z</issued>
<id>tag:sieg.xeong.com,2005://1.12</id>
<created>2005-06-24T18:49:07Z</created>
<summary type="text/plain">PPPoE接続について</summary>
<author>
<name>edams</name>
<url>http://sieg.xeong.com/</url>
<email>edams9@gmail.com</email>
</author>
<dc:subject>ネットワーク</dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://sieg.xeong.com/">
<![CDATA[<p>ADSLモデムには「ルータタイプ」と「ブリッジタイプ」がある<br />
これらは、ISDNルータとTA（ターミナルアダプタ）の関係と似た関係にある<br />
ISDNによるインターネット接続では、TCP/IPをPPP（Point to Point Protocol）というプロトコルでくるんで送受信する<br />
ISDNルータはPPPを処理する機能を持つので、ISDNポートにはTCP/IPをくるんだPPPが、LANポートにはPPP部分を取り除いたTCP/IPが流れる<br />
これに対してTAは、PPPを処理しないのでISDNポート、シリアルポート（あるいはUSBポート）のどちらにもPPPが流れる<br />
PPPを処理してTCP/IPに変換するのはPCの役目だ</p>

<p>「Yahoo！BB」を除くADSLサービスでは、PPPoE（PPPoverEthe，net）やPPPoA（PPP over ATM）というプロトコルでTCP/IPを運ぶ<br />
これらは、その名のとおりイーサネットプロトコルやATMでPPPをカプセル化するものだ<br />
PPP部分にはさらにTCP／IPがカプセル化されているという、およそ美しくないプロトコルなのだが、イーサネットプロトコルやATMでPPPの持つユーザー認証機能を利用するために考案された</p>

<p><br />
■ルータタイプのモデム<br />
ルータタイプのADSLモデムは、PPPoEやPPPoAを処理する機能を持ち、LANポートにはTCP/IPが流れる<br />
ISDNルータと同じように、IPマスカレード機能により複数のPCをインターネットに同時接続させることも可能だ<br />
Webブラウジングなど、インターネット上のサーバに接続する場合は、PCの設定が簡単なルータタイプのモデムが手軽でよいのだが、IPマスカレード機能を有効にしたままでサーバを公開するには、ポートフォワードという仕組みを利用しなければならない</p>

<p><br />
■ブリッジタイプのモデム<br />
ブリッジタイプのADSLモデムは、LANポートにPPPoEが流れる<br />
そのため、LinuxマシンでPPPoEを扱えるようにする必要がある<br />
ただし、ADSL回線業者とプロバイダの両方を1社で行う「Yahoo！BB」は、ユーザー認証の必要がないため、PPPoEではなくTCP/IPが直接流れる<br />
「Yahoo！BB」を利用するときは、モデムとPCをイーサネットでつなぎ、TCP/IPの設定を行うだけで利用可能だ<br />
IPアドレスなどのネットワーク情報は、DHCPによって取得する<br />
PPPoEで接続する場合は、LinuxマシンにPPPoE接続ソフトウェアをインストールする<br />
IPアドレスなどの情報はPPPの機能で取得するので、DHCPクライアントを動かす必要はない</p>

<p>今回は、Roaring Penguin'sSoftwareInc．のRP-PPPOEを紹介しよう<br />
なお、モデムとLinuxマシンの間にPPPoE対応ブロードバンドル一夕をつなぎ、PPPoEの面倒をルータにみさせることも可能だが、サーバを公開するにはルータタイプのモデムを使うときと同様にポートフォワードの設定が必須となる<br />
</p>]]>
<![CDATA[<p>#--------------------------<br />
# PPPoE接続ツールRP-PPPoE<br />
#--------------------------</p>

<p>RP-PPPoEを利用するためには、バージョン2.3.7以上のPPPデーモン（pppd）がインストールされている必要がある<br />
カーネル2.4を採用しているディストリビューションではPPPパッケージ（ppp）も2.4以上になっているが、<br />
古い場合はPPPパッケージのサイト（<a href="http://www.samba.org/ppp/" target="_blank">http://www.samba.org/ppp/</A>）などから最新版を人手しよう<br />
また、モデムとの接続に使うイーサネットインターフェイスにはIPアドレスを設定しないこと</p>

<p><br />
■ファイルの入手とインストール<br />
同社のWebページ（<a href="http://www.roaringpenguin.com/penguin/open_source_rp-pppoe.php" target="_blank">http://www.roaringpenguin.com/pppoe/</a>）には、Red Hat Linux6.2用のバイナリRPM、そのほかのRPM系ディストリビューション向けのソースRPMファイルが用意されている<br />
また、ソースのtar.gzファイルもあるので、非RPM系ディストリビューションのユーザーはこれを使うとよいだろう<br />
ソースRPMを使う場合は、ファイル取得後、rootユーザーになって次のようにする</p>

<p><br />
# rpm --rebuild rp-pppoe-3.3-1.src.rpm</p>

<p><br />
すると、コンパイル作業が行われ、/usr/src/redhat/RPMS/i386/に、<br />
rp-pppoe-3.3-1.i386.rpm<br />
rp-pppoe-gui-3.3-l.i386.rpm<br />
というファイルができるので、これらをインストールしよう<br />
ソースのtar．gzからインストールする手順は次のようになる</p>

<p><br />
# tar xvfz rp-pppoe-3.3.tar.gz<br />
# cd rp-pppoe-3.3<br />
# ./go</p>

<p><br />
コンパイル、インストールが自動的に行われ、続いて接続設定を行うadsl-setupコマンドが起動される<br />
RPMからインストールした場合、adsl-setupコマンドは自動実行されないので、rootユーザーになって/usr/sbin/adsl-setupを実行する</p>

<p><br />
■adsl-setupによるPPPoEの設定<br />
adsl-setupは対話的にRP-PPPoEの接続設定を行うコマンドだ<br />
プロバイダから提供されている接続情報を用意して、それに従って作業を進めよう</p>

<p>　・USER NAME<br />
　プロバイダに指定されたPPPoE接続ユーザー名<br />
　例：edams@sieg.xeong.com</p>

<p>　・lNTERFACE<br />
　PPPoE接続に利用するイーサネットインターフェイス<br />
　例：eth0</p>

<p>続いて、オンデマンド接続の設定<br />
　「Enter the demand value（defaultno）：」に対し、データが流れなくなってから回線を切断するまでの時間を秒単位で人力<br />
　デフォルトは“no”で、これは回線をつなぎっぱなしにする設定</p>

<p>　・DNS<br />
　DNSサーバのIPアドレス設定</p>

<p>プロバイダに指定されたDNSサーバがあれば、そのIPアドレスをプライマリ、セカンダリの順で設定する<br />
IPアドレスの代わりに“server”と人力すると、接続時にプロバイダからDNSサーバのIPアドレスを取得する</p>

<p>　・PASSWORD<br />
　プロバイダに指定されたPPPoE接続パスワード</p>

<p>確認のために2回人力する。なお、画面にエコーバックされないので慎重に</p>

<p>　・FIREWALLING<br />
　ipchainsによるパケットフィルタの簡易設定<br />
　今回は“O"を入力し、簡易設定を利用しない</p>

<p>設定すべき項目は以上だ。指定した内容が表示されるので正しければ"y”を人力して設定が終了する<br />
adsl-setupによって設定した内容は、/etc/ppp/pppoe.confに書き込まれる<br />
また、ユーザー名とパスワードは、同じディレクトリにあるchap-secretsとpap-secretsに書かれる</p>

<p><br />
■PPPoEでの接続<br />
設定が済んだら/usr/sbin/adsl_startを実行して接続しよう<br />
/var/log/messagesにログが出力されるので、うまくいかないときは参考にしてほしい<br />
Linuxの起動とともに接続したいなら、rootユーザーになって次のようにする</p>

<p># chkconfig --level 35 adslon</p>

<p>--levelに続けてランレベルを指定する<br />
この例では、Linuxがランレベル3と5で起動する場合にPPPoE接続をする<br />
また、Linuxをシャットダウンする際には接続を切ってくれる</p>

<p>更に詳しい情報 : <img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://www.atmarkit.co.jp/flinux/rensai/linuxtips/379pppoegui.html">RP-PPPoEのGUI編</a></p>]]>
</content>
</entry>
<entry>
<title>WebDAV</title>
<link rel="alternate" type="text/html" href="http://sieg.xeong.com/archives/2005/06/webdav.html" />
<modified>2006-05-28T02:43:08Z</modified>
<issued>2005-06-23T20:37:25Z</issued>
<id>tag:sieg.xeong.com,2005://1.10</id>
<created>2005-06-23T20:37:25Z</created>
<summary type="text/plain">WebDAVの導入</summary>
<author>
<name>edams</name>
<url>http://sieg.xeong.com/</url>
<email>edams9@gmail.com</email>
</author>
<dc:subject>ネットワーク</dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://sieg.xeong.com/">
<![CDATA[<p>#-----------------------<br />
# WebDAVってなに？<br />
#-----------------------</p>

<p>ブロードバンド環境の普及で、誰もが比較的容易に自宅サーバを持てるようになった<br />
これを、会社や学校など出先からいつでもアクセスできる便利な"ファイルサーバ"にできないか？と期待するのは私だけではあるまい<br />
残業持ち帰りのExcelファイルとか、学校のパソコン室で書いたレポートなど、サイズが大きくてフロッピーで持ち帰るっていうのもちょっとメールで送るにもアカウントがない現場から、なんてこともある<br />
FTPが使えればいいのだが、こういったシーンでは外部インターネット接続が制限されていて「webアクセスしかできません」状態なことが多い<br />
あえなく"自宅ファイルサーバ"計画は断念・・・？</p>

<p>そこで登場するのが「webDAV」（ウェブダブ）というプロトコル<br />
この名は「web−based Distributed Authoringand Versioning」の略で、長ったらしいが「webのプロトコルだけでコンテンツの書き換え/配布などをできるようにしましょう」というしくみを意味している<br />
従来、遠隔地にあるwebサーバ上のファイルはFTP経由でアクセスしないと更新できないのが常識だったが、webDAVではHTTPプロトコルを拡張、FTPなどを使わないでこれらのことができるようにした<br />
RFC2518で提案され、現在ではWindows、MacOSの多くのwebオーサリングツールが対応する</p>

<p>webDAVを使えば遠隔地サーバからのファイルのダウンロードはもちろん、アップロードも更新も可能<br />
しかもHTTPを使用するのでファイアウォール内でも利用できる可能性が高い<br />
さらに、クライアントがWindowsの場合、InternetExplorer5以降で導入された「webフォルダ」機能を用い、ファイルのやりとりが簡単にできる<br />
そのうえ、Microsoft Office2OO0以降ではwebDAVとの親和性が高くなっており、webフォルダ上のExcelファイルなどを直接集でき、しかもファイルロック機能に対応しているので複数人の共用ファイルスペースとしても活用を期待できる<br />
なお、ユーザー認証はふつうのwebコンテンツと同じように制限をかけられる<br />
</p>]]>
<![CDATA[<p>#------------------------<br />
# mod_davを導入する<br />
#------------------------</p>

<p>Apache1.3系列では、WebDAV.orgで公開されている「mod_dav」<br />
モジュールをインストールするだけで、既存のwebサーバがそのままwebDAV対応になる（<a href="http://www.webdav.org/mod_dav/">http://www.webdav.org/mod_dav/</a>）</p>

<p>まず、mod_davをコンパイルする<br />
残念ながらmod_davは日本語環境を考えて作成されていないので、このままではクライアントの文字コードによって誤動作が起きてしまう<br />
そこで、WebDAV Resources JPが配布している「<a href="http://webdav.todo.gr.jp/">mod_encoding</a>」を導入する<br />
次に、mod_davが用いるロックファイル用領域を作る<br />
/var/lock/moddavディレクトリを作成するため、</p>

<p><br />
# mkdir /var/lock/mod_dav</p>

<p><br />
としたあと、httpd.conf中のUser、Groupに指定したApache動作時のユーザー/グループをチェックする<br />
User:nobody、Group:nobodyの場合は、</p>

<p><br />
# chown -R nobody.nobody/var/lock/mod_dav</p>

<p><br />
とする<br />
最後に、各モジュールに必要な設定項目をhttpd.confに追加</p>

<p></p>

<p>#------------------------------<br />
# WebDAVのファイル共有を実験<br />
#------------------------------</p>

<p>では、実際にDAVによるファイル共有を行ってみる<br />
ここでは、/home/httpd/public_html/dav デイレクトリを対象に設定する</p>

<p><br />
# cd /home/httpd/public_html<br />
# mkdir dav<br />
# chown nobody.nobody dav</p>

<p><br />
とディレクトリを作成したあと、httpd.confを開いて、</p>

<p>くLocation/dav＞<br />
DAV On<br />
DAVMinTimeout 1800<br />
Options +Indexes<br />
Index0ptions FancyIndexing<br />
く/Location＞</p>

<p>を追加する<br />
デイレクトリ内一覧表示不可の設定だとWebDAVが使い物にならないIndexesオプションを忘れずに</p>

<p>とりあえず手近なWindowsで「マイネットワーク」→「ネットワークプレースの追加」をクリック<br />
するとウイザードが立ち上がるので、DAVの設定を行ったURLを入力<br />
通常のフォルダのような画面で、指定したURLを「Webフォルダ」としてアクセスできる<br />
ファイルをドラッグ＆ドロップすれば、公開しているデイレクトリに対してHTTP経由でアップロード/ダウンロードが行えるまた、ExcelのファイルはWebフォルダ上で直接編集を行え、なかなか便利だ<br />
なお、この状態では誰もが該当デイレクトリにアクセスできてしまうので、実際に使う際にはBasic認証などの対策を講じる必要がある</p>

<p>まだまだ不安定なところもあるmod_davだが、人によってさまざまな使いこなし方が考えられる<br />
ぜひ試してみてほしい</p>

<p>更に詳しい情報 : <img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://webdav.todo.gr.jp/howto/install-mod_dav.html">mod_dav のインストールと設定</a></p>]]>
</content>
</entry>
<entry>
<title>ダイナミックDNS</title>
<link rel="alternate" type="text/html" href="http://sieg.xeong.com/archives/2005/06/dns.html" />
<modified>2006-05-28T02:43:08Z</modified>
<issued>2005-06-22T21:30:34Z</issued>
<id>tag:sieg.xeong.com,2005://1.11</id>
<created>2005-06-22T21:30:34Z</created>
<summary type="text/plain">ダイナミックDNSでインターネットサーバ構築</summary>
<author>
<name>edams</name>
<url>http://sieg.xeong.com/</url>
<email>edams9@gmail.com</email>
</author>
<dc:subject>ネットワーク</dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://sieg.xeong.com/">
<![CDATA[<p>ダイナミックDNSサービスを使えば、動的IPアドレスでもドメインによるインターネットサーバの公開ができる</p>

<p><br />
#--------------------------------------------<br />
# まずはダイナミックDNSについて<br />
#--------------------------------------------</p>

<p>常時接続環境が利用できるとなると、インターネットの活用法も飛躍的に広がってくる<br />
単にWebページを閲覧するだけに使用するというのではあまりにもったいない<br />
次なるステップはマイ・インターネットサーバの構築ということになるだろう<br />
プロバイダのメールサーバではメールアドレスやメールの送受信量に制限もあるだろうし、Webサーバも容量やCGIなどに制限が課せられる<br />
せっかく常時接続に近い環境が得られるのであれば、自分だけの自由なサーバを構築してみたくなるものだ</p>

<p><br />
#--------------------------------------------<br />
グローバルIPアドレスとプライベートIPアドレス<br />
#--------------------------------------------</p>

<p>インターネットに直接接続されるPCやホストには、インターネット上において一意で重複しないIPアドレスが割り当てられている<br />
このIPアドレスをグローバルIPアドレスという<br />
このグローバルIPアドレスがないとインターネット上のホストを特定することができない<br />
インターネットが考案された当時は、現在のようにインターネットが爆発的に普及し、インターネットに接続されるホストが膨大になるとは想定されていなかったため、グローバルIPアドレスが不足するという事態となってしまった<br />
こうしたグローバルIPアドレスの枯渇問題に対応するために、LANなどインターネットに直接接続されないPCやホストには、プライベートIPアドレスという内部的に使用されるIPアドレスを割り当てることが多い</p>

<p>プライベートIPアドレスでは直接インターネットに接続することはできない<br />
このため、NAT（Network Address Translation）やIPマスカレードといった、プライーベートIPアドレスとグローバルIPアドレスを変換する仕組みを利用することで、インターネット上のホストに接続できるようにしている<br />
こうした仕組みは、一種のファイアウォールとして機能するというメリットもあるが、逆にインターネット上からプライベートIPアドレスのホストに接続することはできない<br />
このため残念ながらプライベートIPアドレスによるサーバの公開は不可能だ<br />
つまりインターネットサーバを公開するとなると、グローバルIPアドレスが割り当てられていることが必須ということになる<br />
IPアドレスがグローバルIPアドレスかプライベートIPアドレスかは、割り当てられたIPアドレスの範囲（アドレス空間）で知ることができる (下記)</p>

<p><br />
----------------------------------------<br />
10.0.0.0 〜 10.255.255.255<br />
----------------------------------------<br />
172.16.0.0 〜 172.31.255.255<br />
----------------------------------------<br />
192.168.0.0 〜 192.168.255.255<br />
----------------------------------------</p>

<p><br />
これらの範囲のIPアドレスはインターネット上に存在することが禁止されているものだ<br />
ただし、ルータを使ってインターネットに接続している場合は、ルータがグローバルIPアドレスを持ち、サーバ自体はプライベートIPアドレスを持つこともある<br />
この場合は、ルーターとサーバの間でパケットをポートフォワードすることによって、サーバを外部に公開することができる</p>]]>
<![CDATA[<p>#----------------------------------<br />
# lPアドレスとDNS<br />
#----------------------------------</p>

<p>インターネット上のホストにはすべてIPアドレスが割り当てられているが、これらは111.122.133.144といった数値の羅列であり人間が覚えることば難しい<br />
これを人間が覚えやすいような、たとえば www.hoo.bar.jpといったドメイン名に割り当て、相互に変換するシステムがDNS（Domain Name System）だ<br />
いわば、DNSはインターネットの電話帳と考えることができる<br />
この仕組みを使うことで、覚えやすいアドレスでホストに到達できるようになっている</p>

<p>ドメイン名からIPアドレスへの変換を正引き（順引き）、逆のIPアドレスからドメイン名への変換を逆引きと呼ぶ<br />
人間が利用する場合はもっばら正引きだけだが、コンピュータにとっては逆引きも重要となる<br />
DNSはIPアドレスとドメイン名の相互変換という仕組みを提供しているが、こうしたアドレスの対応は固定されており、頻繁には変更されないという前提で作られている<br />
つまり、固定（スタティック）IPアドレスが想定されているわけだ<br />
これは常時接続されるホストは当然固定IPアドレスを持ち、頻繁に変更されることはないという想定の元で設計されていたからだ</p>

<p>ところがADSLやBフレッツといった常時接続サービスのほとんどは、接続のたびにIPアドレスが変わる動的（ダイナミック）IPアドレスを提供する<br />
こうした動的IPアドレスでは、DNSに登録したとしてもいつまでそのIPアドレスが割り当てられているかはわからず、実際に誰かがインターネット上から接続しようとしたときには、すでにそのIPアドレスは違うホストに割り当てられているかもしれない<br />
これではDNSそのものが機能しないことになる</p>

<p>となると、サーバを公開する場合には固定IPアドレスが必須になるということになる<br />
もちろん、オプションで固定IPアドレスを割り当てるサービスを行っているプロバイダもいくつかあるが、オプション料金が高額で気軽に使えるものではない<br />
しかし、これはDNSを使う場合の話で、DNSを使わず直接IPアドレスでホストに接続するのであれば現在のグローバルIPアドレスさえわかっていればいいわけだ<br />
とはいえ、IPアドレスはいつ変わるかわからないし、接続しようとしている相手に現在のIPアドレスを伝えるのもやっかいだ<br />
やはりドメイン名による接続ができないと不便ということになる</p>

<p>しかし、そうした動的IPアドレスユーザーのために、ダイナミックDNSというサービスが登場した<br />
通常のDNSがIPアドレスを固定的に扱うのに対し、ダイナミックDNSは動的にIPアドレスを扱う<br />
いわば、IPアドレスがコロコロ変わることを前提に作られたDNSだといえる</p>

<p></p>

<p>#-----------------------------<br />
# ダイナミックDNSの仕組み<br />
#-----------------------------</p>

<p>ダイナミックDNSは、ドメイン名とIPアドレスの対応データベースを動的に書き換えられるように作られているシステムだ<br />
つまり、動的IPアドレスしか持たないホストに対し、ドメイン名でアクセスできるようにするためのサービスだと考えればよい</p>

<p>動的IPアドレスしか持たないホストは、ダイナミックDNSサーバに対して現在のIPアドレスを通知する<br />
ダイナミックDNSサーバは、ドメイン名での名前の問い合わせに対してこのIPアドレスを回答することになる<br />
これによって、インターネット上のホストはドメイン名から目的のホストのIPアドレスに到達できるのだ</p>

<p>インターネット上のホストからしてみるとドメイン名で接続できるため、接続先が動的IPアドレスであるかどうかといったことや、ダイナミックDNSサービスによって名前の解決が行われているかどうかなどを気にする必要もない<br />
ただし、DNSは名前の解決が頻繁に発生しないように名前の解決結果を一定時間キャッシュする<br />
つまり、正しいホストのIPアドレスが伝搬されるまでにタイムラグがあるわけだ<br />
このため、ホストのIPアドレスが変更された場合には、一定期間（おおむね数分から数十分）は接続できない可能性もあることに注意しなければならない</p>

<p>なお、ダイナミックDNSサーバは正引きに対する問い合わせに対して対応するIPアドレスを回答するが、IPアドレスからドメイン名への変換といった逆引きに関しては、接続しているプロバイダのDNSサーバが回答する<br />
このため、正引きと逆引きの結果が一致しないという問題がある とはいえ、通常の用途には問題はないだろう</p>

<p></p>

<p>#-----------------------------<br />
# ダイナミックDNSサービスの種類<br />
#-----------------------------</p>

<p>ダイナミックDNSは、インターネットサービスプロバイダが提供している場合や、ダイナミックDNSとして有償で提供している企業、無償サービスやボランティアベースで提供しているサイトなどがある<br />
それぞれのダイナミックDNSによって提供している機能が若干異なるので、自分に合ったサービスを選択するといいだろう<br />
たとえば、多くのダイナミックDNSサービスはドメイン名が決められており、自分のホストはそのサブドメインとして運用するが、一部のダイナミックDNSサービスでは独自ドメインによる運用が可能なものもある<br />
また、バーチャルドメインや回線切断時にはほかのURLへ転送するオフライン機能、メールの代理受け取りが可能なサービスも存在する<br />
なお、IPアドレスを通知する方法はダイナミックDNSサービスによってまちまちだ<br />
ほとんどのサービスでは手作業によるWebサイトへの登録のほかに、専用のツールで自動化することもできる</p>

<p><br />
無料のダイナミックDNSサービス(日本)<br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://www.ieserver.net/" target="_blank">家サーバー・プロジェクト</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://www.mydns.jp/" target="_blank">私的ＤＮＳ(MyDNS.JP)</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://www.instat.ne.jp/ddns/index.html" target="_blank">DDNS(ダイナミックドメインネームシステム)</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://ddo.jp/" target="_blank">Dynamic DO!.jp</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://my-domain.jp/" target="_blank">マイドメイン</a><br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://ddns.j-speed.net/" target="_blank">J-SPEED</a></p>

<p>無料のツール<br />
<img src="/images/file4.gif" width="16" height="16" border="0" /><a href="http://www.hi-ho.ne.jp/yoshihiro_e/dice/" target="_blank">DiCE for Windows</a><br />
</p>]]>
</content>
</entry>
<entry>
<title>リンク元調査</title>
<link rel="alternate" type="text/html" href="http://sieg.xeong.com/archives/2005/06/post_3.html" />
<modified>2006-05-28T02:43:08Z</modified>
<issued>2005-06-22T02:01:51Z</issued>
<id>tag:sieg.xeong.com,2005://1.4</id>
<created>2005-06-22T02:01:51Z</created>
<summary type="text/plain">JavaScriptでの例です(とてもめんどうなことになってますが) リファイラ...</summary>
<author>
<name>edams</name>
<url>http://sieg.xeong.com/</url>
<email>edams9@gmail.com</email>
</author>
<dc:subject>Perl &amp; CGI</dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://sieg.xeong.com/">
<![CDATA[<p>JavaScriptでの例です(とてもめんどうなことになってますが)</p>
<br />

<u>リファイラーをとるページ[index.html]</u><br />
<blockquote class="code">
<p><img src="/images/icon1.gif" width="14" height="10" border="0" /> Code: [<s>download</s>]</p>
<ol style="margin-top:0px;">
<li><span class="row">&lt;html&gt;</span></li>
<li><span class="row">&lt;body&gt;</span></li>
<li><span class="row">&lt;script src="js.cgi"&gt;&lt;/script&gt;</span></li>
<li><span class="row">&lt;/body&gt;</span></li>
<li><span class="row">&lt;/html&gt;</span></li>
</ol>
</blockquote>
<br />

<u>受け取るCGI[js.cgi]</u><br />
<blockquote class="code">
<p><img src="/images/icon1.gif" width="14" height="10" border="0" /> Code: [<s>download</s>]</p>
<ol style="margin-top:0px;">
<li><span class="row">print &lt;&lt;HTML;</span></li>
<li><span class="row">Content-Type: application/x-javascript\n</span></li>
<li><span class="row">rf = parent.document.referrer; //フレーム内なら top.document.referrer</span></li>
<li><span class="row">document.write(rf); //ページに表示するならば</span></li>
<li><span class="row">logurl = "js2.cgi?ref="+rf;</span></li>
<li><span class="row">document.write('&lt;script src="' + logurl + '"&gt;&lt;/script&gt;');</span></li>
<li><span class="row">HTML</span></li>
</ol>
</blockquote>
<br />


<u>記録するCGI[js2.cgi]</u><br />
<blockquote class="code">
<p><img src="/images/icon1.gif" width="14" height="10" border="0" /> Code: [<s>download</s>]</p>
<ol style="margin-top:0px;">
<li><span class="row">use CGI qw (:standard);</span></li>
<li><span class="row">$ref = param('ref');</span></li>
<li><span class="row">open FH, "&gt;&gt;js.txt";</span></li>
<li><span class="row">print FH "$ref\n";</span></li>
<li><span class="row">close FH;</span></li>
</ol>
</blockquote>
<br />

欠点 : JavaScriptを使えないまたはOFFにしているユーザの情報は得られない
]]>

</content>
</entry>
<entry>
<title>Perl での正規表現</title>
<link rel="alternate" type="text/html" href="http://sieg.xeong.com/archives/2005/06/perl.html" />
<modified>2006-05-28T02:43:08Z</modified>
<issued>2005-06-21T07:31:08Z</issued>
<id>tag:sieg.xeong.com,2005://1.13</id>
<created>2005-06-21T07:31:08Z</created>
<summary type="text/plain">Perl での正規表現メモ</summary>
<author>
<name>edams</name>
<url>http://sieg.xeong.com/</url>
<email>edams9@gmail.com</email>
</author>
<dc:subject>Perl &amp; CGI</dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://sieg.xeong.com/">
<![CDATA[<p># 半角スペース<br />
$str = '\x20';</p>

<p># 全角スペース<br />
$str = '(?:\xA1\xA1)'; # EUC-JP<br />
$str_sjis = '(?:\x81\x40)'; # SJIS</p>

<p># 全角数字 [０-９]<br />
$str = '(?:\xA3[\xB0-\xB9])'; # EUC-JP<br />
$str_sjis = '(?:\x82[\x4F-\x58])'; # SJIS</p>

<p># 全角大文字 [Ａ-Ｚ]<br />
$str = '(?:\xA3[\xC1-\xDA])'; # EUC-JP<br />
$str_sjis = '(?:\x82[\x60-\x79])'; # SJIS</p>

<p># 全角小文字 [ａ-ｚ]<br />
$str = '(?:\xA3[\xE1-\xFA])'; # EUC-JP<br />
$str_sjis = '(?:\x82[\x81-\x9A])'; # SJIS</p>

<p># 全角アルファベット [Ａ-Ｚａ-ｚ]<br />
$str = '(?:\xA3[\xC1-\xDA\xE1-\xFA])'; # EUC-JP<br />
$str_sjis = '(?:\x82[\x60-\x79\x81-\x9A])'; # SJIS</p>

<p># 全角ひらがな [ぁ-ん]<br />
$str = '(?:\xA4[\xA1-\xF3])'; # EUC-JP<br />
$str_sjis = '(?:\x82[\x9F-\xF1])'; # SJIS</p>

<p># 全角ひらがな(拡張) [ぁ-ん゛゜ゝゞ]<br />
$str = '(?:\xA4[\xA1-\xF3]|\xA1[\xAB\xAC\xB5\xB6])'; # EUC-JP<br />
$str_sjis = '(?:\x82[\x9F-\xF1]|\x81[\x4A\x4B\x54\x55])'; # SJIS</p>

<p># 全角カタカナ [ァ-ヶ]<br />
$str = '(?:\xA5[\xA1-\xF6])'; # EUC-JP<br />
$str_sjis = '(?:\x83[\x40-\x96])'; # SJIS</p>

<p># 全角カタカナ(拡張) [ァ-ヶ・ーヽヾ]<br />
$str = '(?:\xA5[\xA1-\xF6]|\xA1[\xA6\xBC\xB3\xB4])'; # EUC-JP<br />
$str_sjis = '(?:\x83[\x40-\x96]|\x81[\x45\x5B\x52\x53])'; # SJIS</p>

<p># 半角カタカナ [ヲ-゜]<br />
$str = '(?:\x8E[\xA6-\xDF])'; # EUC-JP<br />
$str_sjis = '[\xA6-\xDF]'; # SJIS</p>]]>
<![CDATA[<p># EUC-JP文字<br />
$ascii = '[\x00-\x7F]'; # 1バイト EUC-JP文字<br />
$twoBytes = '(?:[\x8E\xA1-\xFE][\xA1-\xFE])'; # 2バイト EUC-JP文字<br />
$threeBytes = '(?:\x8F[\xA1-\xFE][\xA1-\xFE])'; # 3バイト EUC-JP文字<br />
$character = "(?:$ascii|$twoBytes|$threeBytes)"; # EUC-JP文字</p>

<p># EUC-JP文字(機種依存文字・未定義領域・3バイト文字を含まない)<br />
$character_strict = '(?:[\x00-\x7F]|' # ASCII<br />
'\x8E[\xA1-\xDF]|' # 半角カタカナ<br />
'[\xA1\xB0-\xCE\xD0-\xF3][\xA1-\xFE]|' # 1,16-46,48-83区<br />
'\xA2[\xA1-\xAE\xBA-\xC1\xCA-\xD0\xDC-\xEA\xF2-\xF9\xFE]|' # 2区<br />
'\xA3[\xB0-\xB9\xC1-\xDA\xE1-\xFA]|' # 3区<br />
'\xA4[\xA1-\xF3]|' # 4区<br />
'\xA5[\xA1-\xF6]|' # 5区<br />
'\xA6[\xA1-\xB8\xC1-\xD8]|' # 6区<br />
'\xA7[\xA1-\xC1\xD1-\xF1]|' # 7区<br />
'\xA8[\xA1-\xC0]|' # 8区<br />
'\xCF[\xA1-\xD3]|' # 47区<br />
'\xF4[\xA1-\xA6])'; # 84区</p>

<p># EUC-JP未定義文字(機種依存文字・3バイト文字を含む)<br />
$character_undef = '(?:[\xA9-\xAF\xF5-\xFE][\xA1-\xFE]|' # 9-15,85-94区<br />
'\x8E[\xE0-\xFE]|' # 半角カタカナ<br />
'\xA2[\xAF-\xB9\xC2-\xC9\xD1-\xDB\xEB-\xF1\xFA-\xFD]|' # 2区<br />
'\xA3[\XA1-\xAF\xBA-\xC0\xDB-\xE0\xFB-\xFE]|' # 3区<br />
'\xA4[\xF4-\xFE]|' # 4区<br />
'\xA5[\xF7-\xFE]|' # 5区<br />
'\xA6[\x89-\xC0\xD9-\xFE]|' # 6区<br />
'\xA7[\xC2-\xD0\xF2-\xFE]|' # 7区<br />
'\xA8[\xC1-\xFE]|' # 8区<br />
'\xCF[\xD4-\xFE]|' # 47区<br />
'\xF4[\xA7-\xFE]|' # 84区<br />
'\x8F[\xA1-\xFE][\xA1-\xFE])'; # 3バイト文字</p>

<p># SJIS文字<br />
$oneByte_sjis = '[\x00-\x7F\xA1-\xDF]'; # 1バイト SJIS文字<br />
$twoBytes_sjis =<br />
'(?:[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC])'; # 2バイト SJIS文字<br />
$character_sjis = "(?:$oneByte_sjis|$twoBytes_sjis)"; # SJIS文字</p>

<p># SJIS文字(機種依存文字・未定義領域を含まない)<br />
$character_sjis_strict = '(?:[\x00-\x7F\xA1-\xDF]|' # ASCII，半角カタカナ<br />
'[\x89-\x97\x99-\x9F\xE0-\xE9][\x40-\x7E\x80-\xFC]|' # 17-46,49-82区<br />
'\x81[\x40-\x7E\x80-\xAC\xB8-\xBF\xC8-\xCE\xDA-\xE8\xF0-\xF7\xFC]|' # 1,2区<br />
'\x82[\x4F-\x58\x60-\x79\x81-\x9A\x9F-\xF1]|' # 3,4区<br />
'\x83[\x40-\x7E\x80-\x96\x9F-\xB6\xBF-\xD6]|' # 5,6区<br />
'\x84[\x40-\x60\x70-\x7E\x80-\x91\x9F-\xBE]|' # 7,8区<br />
'\x88[\x9F-\xFC]|' # 15,16区<br />
'\x98[\x40-\x72\x9F-\xFC]|' # 47,48区<br />
'\xEA[\x40-\x7E\x80-\xA4])'; # 83,84区</p>

<p># SJIS未定義文字(機種依存文字を含む)<br />
$character_sjis_undef =<br />
'(?:[\x85-\x87\xEB-\xFC][\x40-\x7E\x80-\xFC]|' # 9-14,85-120区<br />
'\x81[\xAD-\xB7\xC0-\xC7\xCF-\xD9\xE9-\xEF\xF8-\xFB]|' # 1,2区<br />
'\x82[\x40-\x4E\x59-\x5F\x7A-\x7E\x80\x9B-\x9E\xF2-\xFC]|' # 3,4区<br />
'\x83[\x97-\x9E\xB7-\xBE\xD7-\xFC]|' # 5,6区<br />
'\x84[\x61-\x6F\x92-\x9E\xBF-\xFC]|' # 7,8区<br />
'\x88[\x40-\x7E\x80-\x9E]|' # 15,16区<br />
'\x98[\x73-\x7E\x80-\x9E]|' # 47,48区<br />
'\xEA[\xA5-\xFC])'; # 83,84区</p>

<p># iモード対応 絵文字<br />
$iPictograph_base = '(?:\xF8[\x9F-\xFC]|' # 基本絵文字(SJIS)<br />
. 'F9[\x40-\x49\x50-\x52\x55-\x57\x5B-\x5E\x72-\x7E\x80-\xB0])';<br />
$iPictograph_ext = '(?:F9[\xB1-\xFC])'; # 拡張絵文字(SJIS)<br />
$iPictograph =<br />
'(?:$iPictograph_base|$iPictograph_ext)'; # iモード対応 絵文字(SJIS)<br />
</p>]]>
</content>
</entry>

</feed>