<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>CGI &#8211; カミュプリィの雑多なメモ</title>
	<atom:link href="https://www.commuply.co.jp/technic/memo/tag/cgi/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.commuply.co.jp/technic/memo</link>
	<description></description>
	<lastBuildDate>Thu, 26 Sep 2024 08:25:59 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://www.commuply.co.jp/technic/memo/wp-content/uploads/site-icon-150x150.png</url>
	<title>CGI &#8211; カミュプリィの雑多なメモ</title>
	<link>https://www.commuply.co.jp/technic/memo</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>[CGI]サーバーをいたわってキャッシュを付けました</title>
		<link>https://www.commuply.co.jp/technic/memo/cache-creation-cgi/</link>
		
		<dc:creator><![CDATA[ume]]></dc:creator>
		<pubDate>Sun, 08 Sep 2024 03:33:10 +0000</pubDate>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[.htaccess]]></category>
		<category><![CDATA[CGI]]></category>
		<category><![CDATA[cron]]></category>
		<category><![CDATA[DirectoryIndex]]></category>
		<category><![CDATA[HTTP Server]]></category>
		<category><![CDATA[OS]]></category>
		<category><![CDATA[キャッシュ]]></category>
		<category><![CDATA[タイマー]]></category>
		<category><![CDATA[生産性]]></category>
		<guid isPermaLink="false">https://www.commuply.co.jp/technic/memo/?p=80</guid>

					<description><![CDATA[　ユーザーのブラウザーから要求がある度にCGIを動かしていたらサーバーの生産性が低いです。特にカミュプリィの『西暦・年齢・和暦・干支対照表』CGIは1年に1回更新すればよい表ですので、要求の度にCGIを動かしていたら、、 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>　ユーザーのブラウザーから要求がある度にCGIを動かしていたらサーバーの生産性が低いです。特にカミュプリィの『<a href="https://www.commuply.co.jp/tools/wareki/" target="_blank" rel="noreferrer noopener">西暦・年齢・和暦・干支対照表</a>』CGIは1年に1回更新すればよい表ですので、要求の度にCGIを動かしていたら、、、うん、無駄よね。</p>



<h3 id="cgi%25e3%2581%25ae%25e5%25af%25be%25e5%25bf%259c" class="wp-block-heading">CGIの対応</h3>



<p>　CGIですので実行結果は標準出力へHTMLの内容を出します。また、HTMLの内容をそのままキャッシュファイルにも書き出します。こうしてCGIを動かす度にキャッシュファイルが更新されるようにしました。</p>



<h3 id="http%25e3%2582%25b5%25e3%2583%25bc%25e3%2583%2590%25e3%2583%25bc%25e3%2581%25ae%25e5%25af%25be%25e5%25bf%259c" class="wp-block-heading">HTTPサーバーの対応</h3>



<p>　CGIを置いたディレクトリに「.htaccess」設定ファイルを作成します。URLの指定がディレクトリ止まりであれば、キュッシュファイルを優先して開くようにしました。<br>　次の例では「まるまる.html」キュッシュファイルが優先で、Pythonで書いた「まるまる.cgi」CGIが劣後になりましす。</p>



<pre class="wp-block-code has-raft-fg-alt-background-color has-background"><code>DirectoryIndex まるまる.html まるまる.cgi</code></pre>



<p>　これで、普段はCGIを置いたディレクトリを呼び出すと、「まるまる.html」キャッシュファイルがクライアントに渡されます。<br>　キャッシュファイルがないときは「まるまる.cgi」CGIが呼び出されます。キャッシュファイルがないのは最初だけなので、ディレクトリを呼び出してCGIを実行するのは最初の1回だけですね、この設定は不要かもしれません。</p>



<h3 id="os%25e3%2581%25ae%25e5%25af%25be%25e5%25bf%259c" class="wp-block-heading">OSの対応</h3>



<p>　タイマーで定期的にプログラムを開始できるクーロン(cron)で、毎年1月1日に「まるまる.cgi」CGIを呼び出します。</p>



<h3 id="%25e7%25ae%25a1%25e7%2590%2586%25e8%2580%2585%25e3%2581%25ae%25e5%25af%25be%25e5%25bf%259c" class="wp-block-heading">管理者の対応</h3>



<p>　年号が変わったときは、年号ファイルの設定を変更してから、CGIのファイル名を含めたURL「<a href="https://www.commuply.co.jp/tools/wareki/">https://www.commuply.co.jp/tools/wareki/</a>まるまる.cgi」をブラウザーから呼び出します。<br>　CGIのプログラム内容を変更したときもCGIのファイル名を含めたURLをブラウザーから呼びます。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>[CGI]わかりやすさを目指して</title>
		<link>https://www.commuply.co.jp/technic/memo/cgi_make_clearly_code/</link>
		
		<dc:creator><![CDATA[ume]]></dc:creator>
		<pubDate>Thu, 05 Sep 2024 00:05:22 +0000</pubDate>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[CGI]]></category>
		<category><![CDATA[わかりやすさ]]></category>
		<category><![CDATA[コーディング]]></category>
		<category><![CDATA[変数]]></category>
		<category><![CDATA[維持管理（保守）]]></category>
		<category><![CDATA[西暦・年齢・和暦・干支対照表]]></category>
		<guid isPermaLink="false">https://www.commuply.co.jp/technic/memo/?p=74</guid>

					<description><![CDATA[　カミュプリィの『西暦・年齢・和暦・干支対照表』CGIを書くときに気を付けたところは「コードのわかりやすさ」です。 どのようにわかりやすくしたか？ 　CGIはHTMLの内容を出力するプログラムです。表示された『西暦・年齢 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>　カミュプリィの『<a href="https://www.commuply.co.jp/tools/wareki/" target="_blank" rel="noreferrer noopener">西暦・年齢・和暦・干支対照表</a>』CGIを書くときに気を付けたところは「コードのわかりやすさ」です。</p>



<h3 id="%25e3%2581%25a9%25e3%2581%25ae%25e3%2582%2588%25e3%2581%2586%25e3%2581%25ab%25e3%2582%258f%25e3%2581%258b%25e3%2582%258a%25e3%2582%2584%25e3%2581%2599%25e3%2581%258f%25e3%2581%2597%25e3%2581%259f%25e3%2581%258b" class="wp-block-heading">どのようにわかりやすくしたか？</h3>



<p>　CGIはHTMLの内容を出力するプログラムです。表示された『<a href="https://www.commuply.co.jp/tools/wareki/" target="_blank" rel="noreferrer noopener">西暦・年齢・和暦・干支対照表</a>』でマウス右ボタンをクリックして「ページのソースを表示」で表示されたものを出力する処理をおこなっています。</p>



<p>　それならCGIが出力するHTMLの内容をそのままファイルに保存しておくのが、もっとも全体がわかりやすくなるとおもい、ざっくり次の内容でテキストファイルを保存しました。</p>



<pre class="wp-block-code has-raft-fg-alt-background-color has-background"><code>&lt;!doctype html&gt;
&lt;html dir="ltr" lang="ja" prefix="og: https://ogp.me/ns#" &gt;
&lt;head&gt;
	&lt;meta charset="utf-8"&gt;
	&lt;title&gt;西暦・年齢・和暦・干支対照表&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
	&lt;table&gt;
		&lt;caption&gt;西暦・年齢・和暦・干支対照表&lt;/caption&gt;
		&lt;thead&gt;
			&lt;tr&gt;
				&lt;th&gt;西暦&lt;/th&gt;
				&lt;th&gt;年齢&lt;/th&gt;
<strong>/* HEADER CREATE */</strong>
				&lt;th ID="ETO"&gt;干支&lt;/th&gt;
			&lt;/tr&gt;
		&lt;/thead&gt;
		&lt;tbody&gt;
<strong>/* TABLE CREATE */</strong>
		&lt;/tbody&gt;
	&lt;/table&gt;
&lt;div class="indent"&gt;
&lt;/div&gt;
&lt;/body&gt;
&lt;footer&gt;
<strong>/* COPYRIGHT CREATE */</strong>
&lt;/footer&gt;
&lt;/html&gt;</code></pre>



<p>　『/* HEADER CREATE */<em>』『</em>/* TABLE CREATE */<em>』『</em>/* COPYRIGHT CREATE */』部分のHTMLが足りていませんので、干支や和暦の情報をもとにCGIが補います。CGIには静的なHTMLが一切含まれないことで、読みやすくなっています。</p>



<pre class="wp-block-code has-raft-fg-alt-background-color has-background"><code>甲子 （きのえね）
乙丑 （きのとのうし）
丙寅 （ひのえとら）
　・・・</code></pre>



<pre class="wp-block-code has-raft-fg-alt-background-color has-background"><code>2019/05/01,令和
1989/01/08,平成
1926/12/25,昭和
　・・・</code></pre>



<p>　このCGIはPythonで作成しましたが、他の言語でも同様の工夫はできるのではないかとおもいます。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>[Python]このプログラムのパス</title>
		<link>https://www.commuply.co.jp/technic/memo/program-pass/</link>
		
		<dc:creator><![CDATA[ume]]></dc:creator>
		<pubDate>Sat, 29 Jan 2022 13:18:46 +0000</pubDate>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[CGI]]></category>
		<category><![CDATA[cron]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[カレントディレクトリ]]></category>
		<category><![CDATA[プログラムのパス]]></category>
		<guid isPermaLink="false">https://www.commuply.co.jp/technic/website/?p=109</guid>

					<description><![CDATA[　CGIとして呼ばれるPythonプログラムをつくって、Cronからも呼び出すようにしました。Pythonプログラムから、プログラムと同じディレクトリにある別のファイルにアクセスするようにしました。この実行中のプログラム [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>　CGIとして呼ばれるPythonプログラムをつくって、Cronからも呼び出すようにしました。<br>Pythonプログラムから、プログラムと同じディレクトリにある別のファイルにアクセスするようにしました。この実行中のプログラムファイルの絶対パスを取得しようと試行錯誤したのですが、結果はダメでした。仕方なく<strong>プログラムの絶対パスを定数としてプログラムに埋め込みました</strong>。</p>



<p>　カレントディレクトリを取得する方法は次のようなものですが、CGIから呼び出されるときはプログラムのあるディレクトリと同じでした。Cronから呼び出すとプログラムとは異なるディレクトリになりました。</p>



<p><code>import os<br>カレントディレクトリ = os.getcwd()</code></p>



<p>または</p>



<p><code>import os<br>カレントディレクトリ = os.path.abspath('./')</code></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>[Python]文字コードや改行コード</title>
		<link>https://www.commuply.co.jp/technic/memo/char-code/</link>
		
		<dc:creator><![CDATA[ume]]></dc:creator>
		<pubDate>Sat, 29 Jan 2022 13:08:18 +0000</pubDate>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[CGI]]></category>
		<category><![CDATA[LF]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[UTF-8]]></category>
		<guid isPermaLink="false">https://www.commuply.co.jp/technic/website/?p=107</guid>

					<description><![CDATA[StarServerに配置するPythonのCGIは、文字コードUTF-8、改行コードLFにしないと動きませんでした。]]></description>
										<content:encoded><![CDATA[
<p>StarServerに配置するPythonのCGIは、文字コードUTF-8、改行コードLFにしないと動きませんでした。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>[Python]CGIが外部ファイルを指定するときのパスの書き方</title>
		<link>https://www.commuply.co.jp/technic/memo/path/</link>
		
		<dc:creator><![CDATA[ume]]></dc:creator>
		<pubDate>Sat, 29 Jan 2022 13:00:45 +0000</pubDate>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[CGI]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[パス]]></category>
		<guid isPermaLink="false">https://www.commuply.co.jp/technic/website/?p=102</guid>

					<description><![CDATA[CGIはサーバ上で動かすものなので、http のパスではなく、FTPでアクセスするときのパスで書きます。]]></description>
										<content:encoded><![CDATA[
<p>CGIはサーバ上で動かすものなので、http のパスではなく、FTPでアクセスするときのパスで書きます。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>[Python]拡張子.pyのままCGIとして動かす方法</title>
		<link>https://www.commuply.co.jp/technic/memo/extention/</link>
		
		<dc:creator><![CDATA[ume]]></dc:creator>
		<pubDate>Sat, 29 Jan 2022 12:55:05 +0000</pubDate>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[CGI]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[拡張子]]></category>
		<guid isPermaLink="false">https://www.commuply.co.jp/technic/website/?p=100</guid>

					<description><![CDATA[.htaccessファイルに次の行を追記します。 AddHandler cgi-script .py]]></description>
										<content:encoded><![CDATA[
<p>.htaccessファイルに次の行を追記します。</p>



<p><code>AddHandler cgi-script .py</code></p>



<p></p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
