<?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>blog::2310 &#187; Program</title>
	<atom:link href="http://blog.2310.net/archives/category/program/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.2310.net</link>
	<description>2310</description>
	<lastBuildDate>Sat, 06 Aug 2011 23:40:52 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>和暦(元号)変換クラス</title>
		<link>http://blog.2310.net/archives/706</link>
		<comments>http://blog.2310.net/archives/706#comments</comments>
		<pubDate>Thu, 13 May 2010 14:45:43 +0000</pubDate>
		<dc:creator>2310</dc:creator>
				<category><![CDATA[Program]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://blog.2310.net/?p=706</guid>
		<description><![CDATA[rubyを勉強しています。練習で作成したものです。 #!/usr/bin/ruby -w require 'date' class WaDate &#60; Date GENGOU= { 1868 =&#62; {:full =&#62; '明治', :short =&#62; '明', :alpha =&#62; 'M'}, 1912 =&#62; {:full =&#62; '大正', :short =&#62; '大', :alpha =&#62; 'T'}, 1926 =&#62; {:full =&#62; '昭和', :short =&#62; '昭', :alpha =&#62; 'S'}, 1989 =&#62; {:full =&#62; '平成', :short =&#62; '平', :alpha =&#62; 'H'} [...]]]></description>
			<content:encoded><![CDATA[<p>rubyを勉強しています。練習で作成したものです。</p>

<p><span id="more-706"></span></p>

<pre><code>#!/usr/bin/ruby -w
require 'date'

class WaDate &lt; Date
  GENGOU= {
    1868 =&gt; {:full =&gt; '明治', :short =&gt; '明', :alpha =&gt; 'M'},
    1912 =&gt; {:full =&gt; '大正', :short =&gt; '大', :alpha =&gt; 'T'},
    1926 =&gt; {:full =&gt; '昭和', :short =&gt; '昭', :alpha =&gt; 'S'},
    1989 =&gt; {:full =&gt; '平成', :short =&gt; '平', :alpha =&gt; 'H'}
  }

  def initialize(ajd=0, of=0, sg=ITALY)
    super
    @current_gengou = nil
  end

  def current_gengou
    return @current_gengou if @current_gengou &amp;&amp; @current_gengou[:year] == year
    gengou_start_year = GENGOU.keys.sort.reverse.find do |start_year|
      year &gt; start_year
    end
    @current_gengou = {
      :year =&gt; year,
      :gengou_year =&gt; year - gengou_start_year + 1
    }.merge(GENGOU[gengou_start_year])
  end

  def wa_year(style = nil)
    style &amp;&amp; gengou(style) + current_gengou[:gengou_year].to_s || current_gengou[:gengou_year]
  end

  def gengou(style)
    current_gengou[style] || raise
  end

end



date = WaDate.today # 2010-05-13
puts date.wa_year :full # '平成22'
puts date.gengou :alpha # 'H'
puts date.wa_year + 1 #=&gt; 23
</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.2310.net/archives/706/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Git Memo</title>
		<link>http://blog.2310.net/archives/540</link>
		<comments>http://blog.2310.net/archives/540#comments</comments>
		<pubDate>Sun, 21 Jun 2009 03:46:01 +0000</pubDate>
		<dc:creator>2310</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Program]]></category>
		<category><![CDATA[git]]></category>

		<guid isPermaLink="false">http://blog.2310.net/?p=540</guid>
		<description><![CDATA[個人的なGitメモです。「WEB+DB PRESS 第50号」の中の「特集2 はじめてのGit」を基礎としています。 書式 レポジトリ /home/hoge/repositry ... ローカルのファイル形式 host:/home/repositry ... scp形式 各コマンド git init レポジトリの作成 git init --bare ... ワークツリー無し git init --shared ... ワークツリー無し ※ 共有ディレクトリを作成する場合はumaskを002(グループ以外にも書き込み許可)とか007(グループ以外には読み込みも付加) git status 状態表示 git diff 差分をとる。gitの場合、状態はワークツリー、インデックス(キャッシュ)、レポジトリの3種類ある。それぞれのdiffは下のかんじ。 git add ワークツリーの状態をindexへ記録 git add -u ... ワークツリーの状態を一括してindexへ git add -p ... diffのハンク毎にaddする(対話式) git add -A ... git add . &#38;&#38; [...]]]></description>
			<content:encoded><![CDATA[<p>個人的なGitメモです。「<a href="http://gihyo.jp/magazine/wdpress/archive/2009/vol50">WEB+DB PRESS 第50号</a>」の中の「特集2 はじめてのGit」を基礎としています。</p>

<p><span id="more-540"></span></p>

<h3>書式</h3>

<h4>レポジトリ <repositry></h4>

<pre><code>/home/hoge/repositry ... ローカルのファイル形式
host:/home/repositry ... scp形式
</code></pre>

<h3>各コマンド</h3>

<h4>git init</h4>

<p>レポジトリの作成</p>

<pre><code>git init --bare ... ワークツリー無し
git init --shared ... ワークツリー無し
※ 共有ディレクトリを作成する場合はumaskを002(グループ以外にも書き込み許可)とか007(グループ以外には読み込みも付加)
</code></pre>

<h4>git status</h4>

<p>状態表示</p>

<h4>git diff</h4>

<p>差分をとる。gitの場合、状態はワークツリー、インデックス(キャッシュ)、レポジトリの3種類ある。それぞれのdiffは下のかんじ。</p>

<p><img src="http://blog.2310.net/my-store/images/20090621_git_diagram.png" alt="ダイアグラム" /></p>

<h4>git add</h4>

<p>ワークツリーの状態をindexへ記録</p>

<pre><code>git add -u ... ワークツリーの状態を一括してindexへ
git add -p ... diffのハンク毎にaddする(対話式)
git add -A ... git add . &amp;&amp; git add -u
</code></pre>

<h4>git reset</h4>

<p>状態を戻る(git revertとは異なりcommitを無かったことにする)</p>

<pre><code>git reset HEAD^ ... HEADを一つ前のコミットまで戻る(インデックスも含め直近のコミットまでを取り消す)
git reset --soft HEAD^ ... 作業ツリーはそのままでレポジトリのポインタをHEADの一つ前まで戻る
git reset --hard HEAD  ... ワークツリーの状態を含めてHEADまで戻る(ワークツリー上の変更をインデックスも含め取消)
git reset --hard HEAD^ ... ワークツリーの状態を含めてHEADの一つ前まで戻る
git reset --hard master~4 ... ブランチmasterから4つ前までを取り消す
</code></pre>

<h4>git commit</h4>

<p>indexに記録された状態をレポジトリへ</p>

<pre><code>git commit -a ... git add -u &amp;&amp; git commit
git commit -v ... git diff --cached の内容も表示する
git commit --amend ... 直前コミットの取消 (git reset --soft HEAD^ &amp;&amp; edit &amp;&amp; git commit -c ORIG_HEAD)
</code></pre>

<h4>git log</h4>

<p>ログ</p>

<pre><code>git log -p ... パッチ形式で取得
git log --pretty=short ... サマリー(最初の段落)のみ取得
git log --stat ... 変更されたファイル名なども含め表示
</code></pre>

<h4>git brame</h4>

<p>一行毎に表示</p>

<h4>git revert</h4>

<p>レポジトリ内の履歴を打ち消す(逆のパッチをあてるような感じ？)</p>

<h4>git show</h4>

<p>git logとの違いが把握できていない</p>

<h4>git push</h4>

<p>レポジトリに記録を反映させる</p>

<pre><code>git push &lt;repositry&gt; &lt;branch&gt; ... &lt;repositry&gt;の&lt;branch&gt;に反映
</code></pre>

<h4>git pull</h4>

<p>レポジトリから反映させる</p>

<h4>git push</h4>

<p>レポジトリに記録を反映させる</p>

<pre><code>git push &lt;repositry&gt; &lt;branch&gt; ... &lt;repositry&gt;の&lt;branch&gt;に反映
</code></pre>

<h4>git stash</h4>

<p>現在のコミットしてない変更状況を保存</p>

<pre><code>git stash ... 現在の状況を保存
git stash pop ... 保存した状況を再読み込み
</code></pre>

<h4>git branch</h4>

<pre><code>git branch ... branchのリストを表示/現在のブランチを確認
git branch &lt;branch&gt; ... &lt;branch&gt;とする(新規作成もそのままOK？)
</code></pre>

<h4>git checkout</h4>

<pre><code>git checkout &lt;branch&gt; ... &lt;branch&gt;にスイッチ
git checkout -b &lt;branch&gt; ... git branch &lt;branch&gt; &amp;&amp; git checkout &lt;branch&gt;
</code></pre>

<h4>git merge</h4>

<pre><code>git merge &lt;branch&gt; ... 現在のブランチと&lt;branch&gt;をマージ (git pull . &lt;branch&gt;)
</code></pre>

<h4>git rm</h4>

<pre><code>git rm --cached ... キャッシュの中からのみ取り除く(間違えてaddした場合など)
</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.2310.net/archives/540/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>終了時にデスクトップ上のファイルを強制的にごみ箱へ</title>
		<link>http://blog.2310.net/archives/462</link>
		<comments>http://blog.2310.net/archives/462#comments</comments>
		<pubDate>Sat, 17 Jan 2009 12:43:36 +0000</pubDate>
		<dc:creator>2310</dc:creator>
				<category><![CDATA[Program]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://blog.2310.net/?p=462</guid>
		<description><![CDATA[職場で共有パソコン(Windows)を管理していますが、デスクトップ上に使用ファイルが散乱していることが多いので終了(ログオフ)時にデスクトップにあるファイル/フォルダを強制的にごみ箱に移動させることにしました。 まずプログラムを用意しなければなりません。実行するとデスクトップのファイル/フォルダを全てごみ箱に移動させるものです。 …探したけれども目的のものが中々ありません。削除することはできてもごみ箱に移動するものが無いので結局自作です。久しぶりにWindowsAPIに触れました。 clear_desktop_files (ZIP形式約32KB ソース付属 修正BSDライセンス) この中からclear_desktop_files.exeを適当な場所に保存し、Windowsの「グループポリシーエディタ」でログオフ時のスクリプトに設定したりすれば完了です。 周知しないと怒られます。]]></description>
			<content:encoded><![CDATA[<p>職場で共有パソコン(Windows)を管理していますが、デスクトップ上に使用ファイルが散乱していることが多いので終了(ログオフ)時にデスクトップにあるファイル/フォルダを強制的にごみ箱に移動させることにしました。</p>

<p><span id="more-462"></span></p>

<p>まずプログラムを用意しなければなりません。実行するとデスクトップのファイル/フォルダを全てごみ箱に移動させるものです。</p>

<p>…探したけれども目的のものが中々ありません。削除することはできてもごみ箱に移動するものが無いので結局自作です。久しぶりに<a href="http://ja.wikipedia.org/wiki/Windows_API">WindowsAPI</a>に触れました。</p>

<p><a href="http://blog.2310.net/my-store/download/20090117_clear_desktop_files.zip" title="clear_desktop_files のダウンロード">clear_desktop_files </a> (ZIP形式約32KB ソース付属 <a href="http://blog.2310.net/archives/342">修正BSDライセンス</a>)</p>

<p>この中からclear_desktop_files.exeを適当な場所に保存し、Windowsの「グループポリシーエディタ」でログオフ時のスクリプトに設定したりすれば完了です。</p>

<p><a href="http://blog.2310.net/my-store/images/20090117_clear_desktop_files_gpedit.png"><img class="image_with_thumb" src="http://blog.2310.net/my-store/images/thumb_20090117_clear_desktop_files_gpedit.png" alt="グループポリシーエディタ画面" style="border: none;" /></a></p>

<p>周知しないと怒られます。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.2310.net/archives/462/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>へなちょこ画像アップローダ</title>
		<link>http://blog.2310.net/archives/224</link>
		<comments>http://blog.2310.net/archives/224#comments</comments>
		<pubDate>Tue, 30 Dec 2008 14:21:29 +0000</pubDate>
		<dc:creator>2310</dc:creator>
				<category><![CDATA[Program]]></category>

		<guid isPermaLink="false">http://k2310.s332.xrea.com/blog.2310.net/?p=224</guid>
		<description><![CDATA[へなちょこです。 一応ImageMagickを使用してサムネイルも同時に作成しています。 ソースはperlスクリプトです。こちらからダウンロードしてください。ただし、セキュリティ的に非常に甘いのでジャンク品として扱ってください。全て自己責任でお願いします。なお、このスクリプトはImage::MagickとCGI.pmを使用しています。]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.2310.net/my-store/images/20050508_uploader_shot.gif"><img class="image_with_thumb" src="http://blog.2310.net/my-store/images/thumb_20050508_uploader_shot.gif" alt="へなちょこ画像アップローダスクリーンショット" style="border: none;" /></a></p>

<p>へなちょこです。</p>

<p><span id="more-224"></span></p>

<p>一応ImageMagickを使用してサムネイルも同時に作成しています。</p>

<p>ソースはperlスクリプトです。<a href="http://blog.2310.net/my-store/download/iuploader.txt" title="こちらのダウンロード">こちら</a>からダウンロードしてください。ただし、セキュリティ的に非常に甘いのでジャンク品として扱ってください。全て自己責任でお願いします。なお、このスクリプトはImage::MagickとCGI.pmを使用しています。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.2310.net/archives/224/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CGIプログラムでCppUnitを使用する &#8211; HtmlOutputter -</title>
		<link>http://blog.2310.net/archives/221</link>
		<comments>http://blog.2310.net/archives/221#comments</comments>
		<pubDate>Tue, 30 Dec 2008 14:13:59 +0000</pubDate>
		<dc:creator>2310</dc:creator>
				<category><![CDATA[Program]]></category>

		<guid isPermaLink="false">http://k2310.s332.xrea.com/blog.2310.net/?p=221</guid>
		<description><![CDATA[サーバで使用するCGIをC++でコツコツ作成しています。 作成にはCppUnitを併用していますけれども、CGI出力させるために HtmlOutputterなるものを作成し、HTMLで出力させるようにしています。 下が使用している状態です。 大したことはやっていませんのであまり期待はできません。こちらから HtmlOutputter.hとHtmlOutputter.cppをダウンロードできます。 使用方法は下の例を参考にしてください。 動作を確認しているのはCppUnit1.10.2。 // testMain.cpp #include &#60;iostream&#62; #include &#60;cppunit/TestCaller.h&#62; #include &#60;cppunit/TestCase.h&#62; #include &#60;cppunit/TestSuite.h&#62; #include &#60;cppunit/TestAssert.h&#62; #include &#60;cppunit/ui/text/TestRunner.h&#62; #include &#60;HtmlOutputter.h&#62; int main() { CppUnit::TextUi::TestRunner runner; CppUnit::Outputter* outputter = new CppUnit::HtmlOutputter(&#38;runner.result(),std::cout); runner.setOutputter(outputter); // Sample runner.addTest(BookFileTest::suite()); runner.addTest(FOptionFileTest::suite()); std::cout &#60;&#60; "Content-type: text/html\n\n" &#60;&#60; std::endl; runner.run(); return 0; }]]></description>
			<content:encoded><![CDATA[<p>サーバで使用するCGIをC++でコツコツ作成しています。
作成には<a href="http://www.ogis-ri.co.jp/otc/hiroba/technical/CppUnit/">CppUnit</a>を併用していますけれども、CGI出力させるために
HtmlOutputterなるものを作成し、HTMLで出力させるようにしています。
下が使用している状態です。</p>

<div><?php writeImageSourceWithThumb("20050619_htmloutputter.jpg") ?></div>

<p><span id="more-221"></span></p>

<p>大したことはやっていませんのであまり期待はできません。<a href="http://blog.2310.net/my-store/download/HtmlOutputter.zip" title="こちらのダウンロード">こちら</a>から
HtmlOutputter.hとHtmlOutputter.cppをダウンロードできます。</p>

<p>使用方法は下の例を参考にしてください。
動作を確認しているのはCppUnit1.10.2。</p>

<p><pre class="source"><tt><span class="comment">// testMain.cpp</span>
<span class="preproc">#include</span> <span class="string">&lt;iostream&gt;</span>
<span class="preproc">#include</span> <span class="string">&lt;cppunit/TestCaller.h&gt;</span>
<span class="preproc">#include</span> <span class="string">&lt;cppunit/TestCase.h&gt;</span>
<span class="preproc">#include</span> <span class="string">&lt;cppunit/TestSuite.h&gt;</span>
<span class="preproc">#include</span> <span class="string">&lt;cppunit/TestAssert.h&gt;</span>
<span class="preproc">#include</span> <span class="string">&lt;cppunit/ui/text/TestRunner.h&gt;</span>
<span class="preproc">#include</span> <span class="string">&lt;HtmlOutputter.h&gt;</span></p>

<p><span class="type">int</span> <span class="function">main</span><span class="symbol">(</span><span class="symbol">)</span>
<span class="cbracket">{</span>
  <span class="normal">CppUnit</span><span class="symbol">:</span><span class="symbol">:</span><span class="normal">TextUi</span><span class="symbol">:</span><span class="symbol">:</span><span class="normal">TestRunner</span> <span class="normal">runner</span><span class="symbol">;</span></p>

<p><span class="normal">CppUnit</span><span class="symbol">:</span><span class="symbol">:</span><span class="normal">Outputter</span><span class="symbol">*</span> <span class="normal">outputter</span>
    <span class="symbol">=</span> <span class="keyword">new</span> <span class="normal">CppUnit</span><span class="symbol">:</span><span class="symbol">:</span><span class="function">HtmlOutputter</span><span class="symbol">(</span><span class="symbol">&amp;</span><span class="normal">runner</span><span class="symbol">.</span><span class="function">result</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">,</span><span class="normal">std</span><span class="symbol">:</span><span class="symbol">:</span><span class="normal">cout</span><span class="symbol">)</span><span class="symbol">;</span>
  <span class="normal">runner</span><span class="symbol">.</span><span class="function">setOutputter</span><span class="symbol">(</span><span class="normal">outputter</span><span class="symbol">)</span><span class="symbol">;</span></p>

<p><span class="comment">// Sample</span>
  <span class="normal">runner</span><span class="symbol">.</span><span class="function">addTest</span><span class="symbol">(</span><span class="normal">BookFileTest</span><span class="symbol">:</span><span class="symbol">:</span><span class="function">suite</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">)</span><span class="symbol">;</span>
  <span class="normal">runner</span><span class="symbol">.</span><span class="function">addTest</span><span class="symbol">(</span><span class="normal">FOptionFileTest</span><span class="symbol">:</span><span class="symbol">:</span><span class="function">suite</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">)</span><span class="symbol">;</span></p>

<p><span class="normal">std</span><span class="symbol">:</span><span class="symbol">:</span><span class="normal">cout</span> <span class="symbol">&lt;</span><span class="symbol">&lt;</span> <span class="string">"Content-type: text/html\n\n"</span> <span class="symbol">&lt;</span><span class="symbol">&lt;</span> <span class="normal">std</span><span class="symbol">:</span><span class="symbol">:</span><span class="normal">endl</span><span class="symbol">;</span></p>

<p><span class="normal">runner</span><span class="symbol">.</span><span class="function">run</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">;</span>
  <span class="keyword">return</span> <span class="number">0</span><span class="symbol">;</span>
<span class="cbracket">}</span>
</tt>
</pre></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.2310.net/archives/221/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ダイナミックDNSへの同期スクリプト</title>
		<link>http://blog.2310.net/archives/214</link>
		<comments>http://blog.2310.net/archives/214#comments</comments>
		<pubDate>Tue, 30 Dec 2008 14:06:53 +0000</pubDate>
		<dc:creator>2310</dc:creator>
				<category><![CDATA[Program]]></category>

		<guid isPermaLink="false">http://k2310.s332.xrea.com/blog.2310.net/?p=214</guid>
		<description><![CDATA[Value Domainからドメインを購入して 自宅サーバを作動させていますが、 プロバイダから付与されるIPアドレスが接続の度に変わるので 簡単なスクリプトを作成し5分毎にcronで実行しています。 以下使用中のスクリプト。 なお、スクリプトはLinux上で使用しているものです。流れとしては、 現在のIPアドレスを取得(初期設定でhttp://dyn.value-domain.com/cgi-bin/dyn.fcg?ipから) 取得IPをローカルに保存しておいたIPと比較 異っていた場合は取得IPをダイナミックDNSサービスに通知し、取得IPをローカルに保存する 2で同じだった場合は何もせず終了 ローカルに保存する仕様としたのは、 インターネット上に更新専用とはいえパスワードを垂れ流している(但しValue Domainの場合)ことに一抹の不安を覚えるからです。 まずはローカル内に保存したIPと比較することによりインターネット上へパスワードなどを垂れ流すのを最小限に抑えます。 ちなみに現在のIPアドレスはhttp://dyn.value-domain.com/cgi-bin/dyn.fcg?ipから取得します。 もし異る方法を希望する場合はGetGlobalIP関数内をいじくってください。 失敗した場合は1秒後に再試行するようにしています(初期設定では10回まで)。 その他の注意点は… bashスクリプトを実行できる環境が必要(Linux/Unixなど) 改変改造再配布はご自由に。ただし一切無保証、無責任。 IP更新はValue Domain用に作成してあります。 wgetが必要です(Wgetを使おう的ページ参照)。 以下がスクリプト全文です。 #! /bin/sh #-*- coding:euc-jp; -*- # this script use global variable # -------------------------------------------------------------------- # Basic information # -------------------------------------------------------------------- GET_IP_URL=http://dyn.value-domain.com/cgi-bin/dyn.fcg?ip GET_IP_ACCESS_COUNT_LIMIT=10 GLOBAL_IP_SAVED_FILE=/tmp/global_ip_saved # -------------------------------------------------------------------- # Sync destination information # -------------------------------------------------------------------- IPURL01='http://dyn.value-domain.com/cgi-bin/dyn.fcg?d=your_domain.com&#38;p=your_password&#38;h=*' [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.value-domain.com/">Value Domain</a>からドメインを購入して
自宅サーバを作動させていますが、
プロバイダから付与されるIPアドレスが接続の度に変わるので
簡単なスクリプトを作成し5分毎に<a href="http://www.gentoo.org/doc/ja/cron-guide.xml">cron</a>で実行しています。
以下使用中のスクリプト。</p>

<p><span id="more-214"></span></p>

<p>なお、スクリプトはLinux上で使用しているものです。流れとしては、</p>

<ol>
<li>現在のIPアドレスを取得(初期設定で<a href="http://dyn.value-domain.com/cgi-bin/dyn.fcg?ip">http://dyn.value-domain.com/cgi-bin/dyn.fcg?ip</a>から)</li>
<li>取得IPをローカルに保存しておいたIPと比較</li>
<li>異っていた場合は取得IPをダイナミックDNSサービスに通知し、取得IPをローカルに保存する</li>
<li>2で同じだった場合は何もせず終了</li>
</ol>

<p>ローカルに保存する仕様としたのは、
インターネット上に更新専用とはいえパスワードを垂れ流している(但し<a href="https://www.value-domain.com/ddns.php?action=howto">Value Domain</a>の場合)ことに一抹の不安を覚えるからです。
まずはローカル内に保存したIPと比較することによりインターネット上へパスワードなどを垂れ流すのを最小限に抑えます。</p>

<p>ちなみに現在のIPアドレスは<a href="http://dyn.value-domain.com/cgi-bin/dyn.fcg?ip">http://dyn.value-domain.com/cgi-bin/dyn.fcg?ip</a>から取得します。
もし異る方法を希望する場合はGetGlobalIP関数内をいじくってください。
失敗した場合は1秒後に再試行するようにしています(初期設定では10回まで)。</p>

<p>その他の注意点は…</p>

<ul>
<li>bashスクリプトを実行できる環境が必要(Linux/Unixなど)</li>
<li>改変改造再配布はご自由に。ただし一切無保証、無責任。</li>
<li>IP更新は<a href="https://www.value-domain.com/ddns.php?action=howto">Value Domain用</a>に作成してあります。</li>
<li>wgetが必要です(<a href="http://www.geocities.jp/horiuchimasaru/wget.html">Wgetを使おう的ページ</a>参照)。</li>
</ul>

<p>以下がスクリプト全文です。</p>

<pre><code>#! /bin/sh
#-*- coding:euc-jp; -*-

# this script use global variable

# --------------------------------------------------------------------
# Basic information
# --------------------------------------------------------------------
GET_IP_URL=http://dyn.value-domain.com/cgi-bin/dyn.fcg?ip
GET_IP_ACCESS_COUNT_LIMIT=10
GLOBAL_IP_SAVED_FILE=/tmp/global_ip_saved

# --------------------------------------------------------------------
# Sync destination information
# --------------------------------------------------------------------
IPURL01='http://dyn.value-domain.com/cgi-bin/dyn.fcg?d=your_domain.com&amp;p=your_password&amp;h=*'
IPURL02='http://dyn.value-domain.com/cgi-bin/dyn.fcg?d=your_domain.com&amp;p=your_password&amp;h=mail'
IPURL03='http://dyn.value-domain.com/cgi-bin/dyn.fcg?d=your_domain.com&amp;p=your_password&amp;h=@'
IPURL="$IPURL01 $IPURL02 $IPURL03"



# --------------------------------------------------------------------
# GetGlobalIP  global IP address from value-domain service
# --------------------------------------------------------------------
GetGlobalIP () {
  wget \
  -O - $GET_IP_URL
}

# --------------------------------------------------------------------
# main
# --------------------------------------------------------------------

# get Global IP
GLOBAL_IP_TEMP=
COUNT=$GET_IP_ACCESS_COUNT_LIMIT

while [ $COUNT -gt 0 ] ;do
  GLOBAL_IP_TEMP=`GetGlobalIP`
  if [ x$GLOBAL_IP_TEMP = x ]; then
    COUNT=$((COUNT - 1))
    sleep 1
  else
    COUNT=0
  fi
done

# get Saved IP
if [ -r $GLOBAL_IP_SAVED_FILE ]; then
  MYDNS_IP_SAVED=`cat $GLOBAL_IP_SAVED_FILE`
else
  MYDNS_IP_SAVED=
fi

# print header
echo -n `date +'%Y/%m/%d(%H:%M)'`

# check global ip addres
if [ x$GLOBAL_IP_TEMP = x ]; then
  echo " Can't get Global IP (try $GET_IP_ACCESS_COUNT_LIMIT times)."
  exit 0
else
  echo -n " GlobalIP=$GLOBAL_IP_TEMP"
fi

# print saved ip
if [ x$MYDNS_IP_SAVED = x ]; then
  echo -n " SavedIP=Empty"
else
  echo -n " SavedIP=$MYDNS_IP_SAVED"
fi

# check saved ip
if [ x$GLOBAL_IP_TEMP = x$MYDNS_IP_SAVED ]; then
  echo " ... Not updated. Done."
  exit 0
else
  echo -n " ... Begin to sync ..."
fi

# sync IP
for i in $IPURL
do
  echo -n " `expr $i : ".*h=\([^&amp;]*\)"`.`expr $i : ".*d=\([^&amp;]*\)"`/"
  if [ `wget -O - $i | grep "status=0"` ]
  then
    echo -n OK
  else
    echo -n ERROR
  fi
done

# Update saved IP
echo -n $GLOBAL_IP_TEMP &gt; $GLOBAL_IP_SAVED_FILE
echo " ... Update saved IP"

# exit
exit 0
</code></pre>

<p>使用している/etc/crontabから上のスクリプト部分(抜粋)。</p>

<pre><code># 5分毎に実行して、結果をログに保存
*/5 * * * *     root    /usr/local/bin/dynamicsync-server-ip &gt;&gt; /var/log/dynamicsync-server-ip.log
# 3時間毎にログを削除
0 */3 * * *     root    rm /var/httpd/dynamicsync-server-ip.log
</code></pre>

<p>cronで出力されたログ(/var/log/dynamicsync-server-ip.log)の内容例</p>

<pre><code>2005/10/16(11:05) GlobalIP=211.231.12.1 SavedIP=211.231.12.1 ... Not updated. Done.
2005/10/16(11:10) GlobalIP=211.231.12.1 SavedIP=211.231.12.1 ... Not updated. Done.
2005/10/16(11:15) GlobalIP=211.231.12.1 SavedIP=211.231.12.1 ... Not updated. Done.
2005/10/16(11:20) GlobalIP=211.168.3.1 SavedIP=211.231.12.1 ... Begin to sync ... @.your_domain.com/OK mail.your_domain.com/OK ... Update saved IP
2005/10/16(11:25) GlobalIP=211.168.3.1 SavedIP=211.168.3.1 ... Not updated. Done.
</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.2310.net/archives/214/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Emacsからsdicとsaryを使用して英辞郎を高速検索</title>
		<link>http://blog.2310.net/archives/200</link>
		<comments>http://blog.2310.net/archives/200#comments</comments>
		<pubDate>Tue, 30 Dec 2008 13:55:43 +0000</pubDate>
		<dc:creator>2310</dc:creator>
				<category><![CDATA[Emacs]]></category>
		<category><![CDATA[Program]]></category>

		<guid isPermaLink="false">http://k2310.s332.xrea.com/blog.2310.net/?p=200</guid>
		<description><![CDATA[Emacs(Meadow)には辞書引きマクロがいくつかあり、私が愛用しているのは軽 くてシンプルなsdicです。 これを使用すると例えばw3m で英文のページを見ながら、キー一つで単語 を和訳することができて非常に便利です。 ところが最近、「英辞郎」を本家サイトから購入し MeadowMemoの記事やsdic本家のページを 参考にsdicから使用できるようにしたのですが検索がえらく遅くなってしまいました。 何とかならないかと調べてみると、saryというアプリケーションがあってこれを利用したとこ ろ検索スピードがかなり改善されました。その導入方法のまとめをメモ。ついでにWindows用のバイナリも置きました。 なお英辞郎ファイルをsdicファイルに変換する方法についてはmakeコマンドを 使用する例が紹介しているサイトが多いですが私はsdicに含まれるeijirou.perlから 直接変換しました。Linux上で日本語コードはEUC-JPです。 $nkf -SXe eijiro97.txt &#124; perl eijirou.perl &#62; eijiro97.sdic -- 和英の場合 -- $nkf -SXe waeiji97.txt &#124; perl eijirou.perl --waei &#62; waeiji97.sdic sdicでsaryコマンドを使用するためのメモ 基本的にLinux/Unixから使用すること想定していますが、 Windows用もがんばれば何とかなるかもしれません。 いつもの文言です。以下の記述については一切責任を持ちませんので御自分の責任でご利用ください。 saryコマンドをインストールする 私の場合Gentoo Linuxを使用していましたので、 #emerge sary だけで終わってしまいました(というよりは、このためにMY COMジャーナルに紹介されているsufaryではなく saryを導入しています。sufaryはemerge保守されていないようです。) apt-getでもあるようですので使用できる人はそれとか。ダメな人はソースからconfigure&#38;make&#38;installです。 なお、saryのREADMEやconfigure.inにはコンパイルのためにglibの2.0.0以上 が必要なことが書いてあります。ここらへん はgimp(2.0以上)やgnomeを使用し ていれば心配はないのかもしれません。 Windows用はよく分かりませんが、例えばmingw32環境を整え てGimp館の記事などを参考にGTKのサイトから glibのソースをダウンロードして作成すればsary作成の方も何とかなるかもしれません(gimp(2.0以上)を インストールしてglibの必要なファイルを直接手に入れることもできる？)。 Windows用のコマンドを試しにコンパイルしてみました。このページの一番下です。 [...]]]></description>
			<content:encoded><![CDATA[<p>Emacs(Meadow)には辞書引きマクロがいくつかあり、私が愛用しているのは軽
くてシンプルな<a href="http://www.namazu.org/~tsuchiya/sdic/">sdic</a>です。
これを使用すると例えば<a href="http://emacs-w3m.namazu.org/index-ja.html">w3m</a> で英文のページを見ながら、キー一つで単語
を和訳することができて非常に便利です。</p>

<p>ところが最近、「英辞郎」を<a href="http://www.eijiro.jp/">本家サイト</a>から購入し
<a href="http://www.bookshelf.jp/soft/meadow_53.html#SEC769">MeadowMemoの記事</a>や<a href="http://www.namazu.org/~tsuchiya/sdic/">sdic本家のページ</a>を
参考にsdicから使用できるようにしたのですが検索がえらく遅くなってしまいました。</p>

<p>何とかならないかと調べてみると、<a href="http://sary.sourceforge.net/">sary</a>というアプリケーションがあってこれを利用したとこ
ろ検索スピードがかなり改善されました。その導入方法のまとめをメモ。ついでにWindows用のバイナリも置きました。</p>

<p>なお英辞郎ファイルをsdicファイルに変換する方法についてはmakeコマンドを
使用する例が紹介しているサイトが多いですが私はsdicに含まれるeijirou.perlから
直接変換しました。Linux上で日本語コードはEUC-JPです。</p>

<pre><code>$nkf  -SXe eijiro97.txt | perl eijirou.perl &gt; eijiro97.sdic

-- 和英の場合 --
$nkf  -SXe waeiji97.txt | perl eijirou.perl --waei &gt; waeiji97.sdic
</code></pre>

<p><span id="more-200"></span></p>

<h3>sdicでsaryコマンドを使用するためのメモ</h3>

<p>基本的にLinux/Unixから使用すること想定していますが、
Windows用もがんばれば何とかなるかもしれません。</p>

<p>いつもの文言です。以下の記述については一切責任を持ちませんので御自分の責任でご利用ください。</p>

<h4>saryコマンドをインストールする</h4>

<p>私の場合<a href="http://www.gentoo.gr.jp/">Gentoo Linux</a>を使用していましたので、</p>

<pre><code>#emerge sary
</code></pre>

<p>だけで終わってしまいました(というよりは、このために<a href="http://journal.mycom.co.jp/column/osx/020/">MY COMジャーナルに紹介されているsufary</a>ではなく
saryを導入しています。sufaryはemerge保守されていないようです。)</p>

<p>apt-getでもあるようですので使用できる人はそれとか。ダメな人はソースからconfigure&amp;make&amp;installです。</p>

<p>なお、saryのREADMEやconfigure.inにはコンパイルのためにglibの2.0.0以上
が必要なことが書いてあります。ここらへん
は<a href="http://gimp2.info/">gimp(2.0以上)</a>や<a href="http://ja.wikipedia.org/wiki/GNOME">gnome</a>を使用し
ていれば心配はないのかもしれません。</p>

<p>Windows用はよく分かりませんが、例えば<a href="http://www.mingw.org/">mingw32</a>環境を整え
て<a href="http://www004.upp.so-net.ne.jp/iccii/sub/CompileWin.html">Gimp館の記事</a>などを参考に<a href="http://www.gtk.org/">GTKのサイト</a>から
glibのソースをダウンロードして作成すればsary作成の方も何とかなるかもしれません(<a href="http://gimp2.info/">gimp(2.0以上)</a>を
インストールしてglibの必要なファイルを直接手に入れることもできる？)。</p>

<p>Windows用のコマンドを試しにコンパイルしてみました。このページの一番下です。</p>

<h4>sdicファイルからaryファイルを生成する</h4>

<p>saryのコマンドを使用します。私はLinux上で日本語コードをEUC-JPとしていますので実行はこんな感じでした。</p>

<pre><code>$mksary -c EUC-JP eijiro97.sdic
$mksary -c EUC-JP waeiji97.sdic
</code></pre>

<p>長い時間の後、同じディレクトリ内にeijiro97.sdic.aryやwaeiji97.sdic.aryができます。
辞書を引くためにはできあがったaryファイルと元のファイルの両方がディレクトリに
入っていなければなりません。</p>

<p>あとaryファイルはとても巨大です。元のsdicの2〜3倍に膨れ上がりますのでディスクの容量など注意が必要です。</p>

<h4>Emacsに設定する</h4>

<p>saryをemacsから使用するように調整します。
sdicの基本的なインストール方法は<a href="http://www.bookshelf.jp/soft/meadow_53.html#SEC769">Meadow Memo</a>などを
参考にしてください。<a href="http://www.gentoo.gr.jp/">Gentoo Linux</a>であれば&#8221;emerge sdic&#8221;を実行します。</p>

<p>しかし、このままだとsdicからsaryを使用できません。<a href="http://www.cozmixng.org/">COZMIXNG</a>さんで<a href="http://www.cozmixng.org/~rwiki/?cmd=view;name=isary.rb">rubyを使用する方法</a>が紹介されていますが、
私はsaryをsdicから直接使用する方法をとりました。fsetで関数を強制置換してしまいます。以下、.emacs用のコードです。</p>

<pre><code>;; ----- sdicを呼び出すための設定(F9で実行)
(global-set-key [f9] 'sdic-describe-word)
(autoload 'sdic-describe-word "sdic" "search word" t nil)
;; ----- sdicが呼ばれたときの設定
(eval-after-load "sdic"
  '(progn
     ;; saryのコマンドをセットする
     (setq sdicf-array-command "/usr/bin/sary")
     ;; sdicファイルのある位置を設定し、arrayコマンドを使用するよう設定(現在のところ英和のみ)
     (setq sdic-eiwa-dictionary-list
           '((sdicf-client "/path/to/eijiro97.sdic" (strategy array))))
     ;; saryを直接使用できるように sdicf.el 内に定義されているarrayコマンド用関数を強制的に置換
     (fset 'sdicf-array-init 'sdicf-common-init)
     (fset 'sdicf-array-quit 'sdicf-common-quit)
     (fset 'sdicf-array-search
           (lambda (sdic pattern &amp;optional case regexp)
             (sdicf-array-init sdic)
             (if regexp
                 (signal 'sdicf-invalid-method '(regexp))
               (save-excursion
                 (set-buffer (sdicf-get-buffer sdic))
                 (delete-region (point-min) (point-max))
                 (apply 'sdicf-call-process
                        sdicf-array-command
                        (sdicf-get-coding-system sdic)
                        nil t nil
                        (if case
                            (list "-i" pattern (sdicf-get-filename sdic))
                          (list pattern (sdicf-get-filename sdic))))
                 (goto-char (point-min))
                 (let (entries)
                   (while (not (eobp)) (sdicf-search-internal))
                   (nreverse entries))))))
     ;; おまけ--辞書バッファ内で移動した時、常にバッファの一行目になるようにする
     (defadvice sdic-forward-item (after sdic-forward-item-always-top activate)
       (recenter 0))
     (defadvice sdic-backward-item (after sdic-backward-item-always-top activate)
       (recenter 0))))
</code></pre>

<h4>Windows版のおまけ</h4>

<p>…とりあえずWindows版でも何とかなるかな、とやってみました。できあがったバイナリをzipで固めて仮置きしておきます。ソースコード等は全て公表されているものを使用しています。</p>

<ul>
<li><a href="http://blog.2310.net/my-store/download/array-win-20061009.zip" title="array-win-20061009.zipのダウンロード">array-win-20061009.zip</a></li>
</ul>

<p><a href="http://www.mingw.org/">mingw32</a>でコンパイル。作成したコマンドはmkary.exeとsary.exeですがmkary.exeはsaryの
ではなく<a href="http://nais.to/~yto/tools/sufary/">sufary</a>のものをコンパイルしました。saryのmksary.exeは
コンパイルはできたものの実行するとメモリエラーとなりうまくいかなかったです。
というわけでaryファイルを生成する場合にはdos窓で</p>

<pre><code>mksary.exe  eijiro97.sdic
</code></pre>

<p>とすれば良いと思います。euc-jpのもので環境もWin2k 256MBでしか試してい
ません。Meadowな人はもし良ければダウンロードして試してみてください。と
りあえず上の環境で英辞郎ファイル(バージョン97)を使用して、sdicファイル
からaryファイルの生成、sary.exeコマンドの直接実行による検索はうまくい
きました。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.2310.net/archives/200/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>へなちょこアップローダー(個人用アップローダー)</title>
		<link>http://blog.2310.net/archives/166</link>
		<comments>http://blog.2310.net/archives/166#comments</comments>
		<pubDate>Tue, 30 Dec 2008 13:33:09 +0000</pubDate>
		<dc:creator>2310</dc:creator>
				<category><![CDATA[Program]]></category>

		<guid isPermaLink="false">http://k2310.s332.xrea.com/blog.2310.net/?p=166</guid>
		<description><![CDATA[職場とか自宅とかちょっとしたファイルのやりとりのためにシンプルなアップローダを探していましたが中々見つからないので自作しました。 PHP製です。 へなちょこアップローダー 特徴 日本語とかスペースが入ったファイル名にもそれなりに対応。自信はありませんがとりあえずIEとFirefoxで正常動作を確認してます。 ファイルが一つしかありません。PHP対応のサーバであれば設置は簡単でしょう。大したスクリプトでないのでそれなりにサクサク動きます。 指定したディレクトリにファイルをそのまま保管し、表示／操作の都度ディレクトリ内を読みとっているだけなのでFTPなどと併用可能。 パスワード認証とかありません。1.00から暫定的にパスワードを設定できるようになりました。 注意事項 セキュリティ的に最悪です。個人用途に絞ったため動作が軽快ですが不特定多数の使用には全く向いていないです。 「特徴」にも書いたようにファイル名を変更もせずにまんま保存します。拡張子も変更しないので保管ディレクトリの設定など充分に注意してください。 PHPファイルは「Shift_JIS」でエンコードされていて、改行はLFです。この文字コードのままでないと不具合が生じます。FTPなどで送信するときはバイナリモードにしてください。 IEとFirefoxで動作を確認していますが、他のブラウザは分かりません。Saffariとか自信がありません。 インストール ダウンロードした後、PHPが動作するディレクトリに適当な名前で設定してください。また、書き込みできるフォルダを用意してスクリプト内に設定してください。 アップロードできる最大容量はサーバ(.htaccess等)の設定が必要になる場合があります(通常だと2MB以内に設定されていると思います)。 ## Apache系の場合(以下を指定すると100MBまでOKになる) php_value post_max_size 100000000 php_value upload_max_filesize 100000000 ダウンロード へなちょこアップローダ Ver1.00 (約11KB) 更新履歴 1.00 ダウンロード時にファイル名などをURLで直接指定できるようにした Basic認証が無い場合でもパスワードをかけられるようにした(UPLOADER_PASSWORD) 0.98 画像等を直接表示できるようにした タイトル文字列を変更できるようにした 代替タイトル画像を使用できるようにし、タイトル文字列を非表示とできるようにした ./uploader.cssからCSS情報を読み込むようにした MSIE向けPNG透過処理を施す(代替タイトル画像用) PHPのshot tag (&#60;?〜?&#62;の廃止) W3CのXHTML-1.0-Strictに適応してみた 0.95 アップロード時における上書き確認処理を追加した 0.91 &#60;a&#62;タグにtitle属性を追加 0.90 同じディレクトリにconfig.cgiが存在する場合はそこから設定を読み込むように変更した 削除するとき確認するようにした(チェックボックスで切り替え可能) ファイルが選択されていないときに警告するようにした ファイルの文字コードをUTF-8からShift-JISに変更した(IEのレイアウトが崩れるため) 0.85 初出 To Do [...]]]></description>
			<content:encoded><![CDATA[<p>職場とか自宅とかちょっとしたファイルのやりとりのためにシンプルなアップローダを探していましたが中々見つからないので自作しました。
PHP製です。</p>

<p><a href="http://blog.2310.net/my-store/images/20061119_upload.png"><img class="image_with_thumb" src="http://blog.2310.net/my-store/images/thumb_20061119_upload.png" alt="テスト画像 " style="border: none;" /></a></p>

<p><span id="more-166"></span></p>

<h3>へなちょこアップローダー</h3>

<h4>特徴</h4>

<ul>
<li>日本語とかスペースが入ったファイル名にもそれなりに対応。自信はありませんがとりあえずIEとFirefoxで正常動作を確認してます。</li>
<li>ファイルが一つしかありません。PHP対応のサーバであれば設置は簡単でしょう。大したスクリプトでないのでそれなりにサクサク動きます。</li>
<li>指定したディレクトリにファイルをそのまま保管し、表示／操作の都度ディレクトリ内を読みとっているだけなのでFTPなどと併用可能。</li>
<li><span style="text-decoration:line-through;">パスワード認証とかありません。</span>1.00から暫定的にパスワードを設定できるようになりました。</li>
</ul>

<h4>注意事項</h4>

<ul>
<li>セキュリティ的に最悪です。個人用途に絞ったため動作が軽快ですが不特定多数の使用には全く向いていないです。</li>
<li>「特徴」にも書いたようにファイル名を変更もせずにまんま保存します。拡張子も変更しないので保管ディレクトリの設定など充分に注意してください。</li>
<li>PHPファイルは「Shift_JIS」でエンコードされていて、改行はLFです。この文字コードのままでないと不具合が生じます。FTPなどで送信するときはバイナリモードにしてください。</li>
<li>IEとFirefoxで動作を確認していますが、他のブラウザは分かりません。Saffariとか自信がありません。</li>
</ul>

<h4>インストール</h4>

<ul>
<li>ダウンロードした後、PHPが動作するディレクトリに適当な名前で設定してください。また、書き込みできるフォルダを用意してスクリプト内に設定してください。</li>
<li>アップロードできる最大容量はサーバ(.htaccess等)の設定が必要になる場合があります(通常だと2MB以内に設定されていると思います)。</li>
</ul>

<!---->

<pre><code>## Apache系の場合(以下を指定すると100MBまでOKになる)
php_value post_max_size 100000000
php_value upload_max_filesize 100000000
</code></pre>

<h4>ダウンロード</h4>

<ul>
<li><a href="http://blog.2310.net/my-store/download/upload-1.00.zip" title="へなちょこアップローダ Ver1.00のダウンロード">へなちょこアップローダ Ver1.00</a> (約11KB)</li>
</ul>

<h4>更新履歴</h4>

<ul>
<li>1.00

<ul>
<li>ダウンロード時にファイル名などをURLで直接指定できるようにした</li>
<li>Basic認証が無い場合でもパスワードをかけられるようにした(UPLOADER_PASSWORD)</li>
</ul></li>
<li>0.98

<ul>
<li>画像等を直接表示できるようにした</li>
<li>タイトル文字列を変更できるようにした</li>
<li>代替タイトル画像を使用できるようにし、タイトル文字列を非表示とできるようにした</li>
<li>./uploader.cssからCSS情報を読み込むようにした</li>
<li>MSIE向けPNG透過処理を施す(代替タイトル画像用)</li>
<li>PHPのshot tag (&lt;?〜?&gt;の廃止)</li>
<li>W3CのXHTML-1.0-Strictに適応してみた</li>
</ul></li>
<li>0.95

<ul>
<li>アップロード時における上書き確認処理を追加した</li>
</ul></li>
<li>0.91

<ul>
<li>&lt;a&gt;タグにtitle属性を追加</li>
</ul></li>
<li>0.90

<ul>
<li>同じディレクトリにconfig.cgiが存在する場合はそこから設定を読み込むように変更した</li>
<li>削除するとき確認するようにした(チェックボックスで切り替え可能)</li>
<li>ファイルが選択されていないときに警告するようにした</li>
<li>ファイルの文字コードをUTF-8からShift-JISに変更した(IEのレイアウトが崩れるため)</li>
</ul></li>
<li>0.85

<ul>
<li>初出</li>
</ul></li>
</ul>

<h4>To Do</h4>

<ul>
<li>ダウンロード時ファイルが無いときのチェック</li>
<li>UPLOADER_PASSWORDの永続化(Cookie使用予定)及びCookieのセキュリティ強化</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.2310.net/archives/166/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

