<?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/"
		xmlns:xhtml="http://www.w3.org/1999/xhtml"
>

<channel>
	<title>infinity number &#187; パソコンの話</title>
	<atom:link href="http://www.infinity-number.net/archives/cat/computer/feed" rel="self" type="application/rss+xml" />
	<link>http://www.infinity-number.net</link>
	<description>∞進数 - 長野県に住む大学生の日々の生活振りを綴ったブログ</description>
	<lastBuildDate>Mon, 26 Jul 2010 15:13:28 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.infinity-number.net/archives/cat/computer/feed" />
		<item>
		<title>セプキャン2010のチューターやります</title>
		<link>http://www.infinity-number.net/archives/1767</link>
		<comments>http://www.infinity-number.net/archives/1767#comments</comments>
		<pubDate>Mon, 26 Jul 2010 15:13:28 +0000</pubDate>
		<dc:creator>あたがわ</dc:creator>
				<category><![CDATA[パソコンの話]]></category>
		<category><![CDATA[セプキャン]]></category>
		<category><![CDATA[チューター]]></category>
		<category><![CDATA[選考]]></category>

		<guid isPermaLink="false">http://www.infinity-number.net/?p=1767</guid>
		<description><![CDATA[先日、セキュリティ＆プログラミングキャンプ2010セキュリティコースのチューターに応募し、選考に通ったようでやることになりました。関係者の皆さん、どうぞよろしくお願いします。
本当に大丈夫か、若干不安なところもありますが [...]]]></description>
			<content:encoded><![CDATA[<p>先日、セキュリティ＆プログラミングキャンプ2010セキュリティコースのチューターに応募し、選考に通ったようでやることになりました。関係者の皆さん、どうぞよろしくお願いします。<br />
本当に大丈夫か、若干不安なところもありますが、私ができることを精いっぱい頑張って来ます。<br />
参加者はもう決まってしまっているので、今から広報してもどうしようもないですが、たぶんキャラバンとかがまたあると思うので、まだ参加していない興味のある対象者の方々は開催を期待してお待ちください。</p>
<p>それでは、関係者の皆さん、OVTAでお会いしましょう！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.infinity-number.net/archives/1767/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.infinity-number.net/archives/1767" />
	</item>
		<item>
		<title>PSPを使ってネットワーク経由で音楽を聴く</title>
		<link>http://www.infinity-number.net/archives/1740</link>
		<comments>http://www.infinity-number.net/archives/1740#comments</comments>
		<pubDate>Tue, 13 Jul 2010 16:04:51 +0000</pubDate>
		<dc:creator>あたがわ</dc:creator>
				<category><![CDATA[パソコンの話]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[PSP]]></category>
		<category><![CDATA[音楽]]></category>

		<guid isPermaLink="false">http://www.infinity-number.net/?p=1740</guid>
		<description><![CDATA[私はPSPで音楽を聴くことがあります。持ち運びに便利なので、寝るときとかに聞きます。しかし、大容量のメモリースティックを買うことが難しい（金銭的な面で！）私にとっては、メモリースティックの容量だけでは聞きたい曲が全部入り [...]]]></description>
			<content:encoded><![CDATA[<p>私はPSPで音楽を聴くことがあります。持ち運びに便利なので、寝るときとかに聞きます。しかし、大容量のメモリースティックを買うことが難しい（金銭的な面で！）私にとっては、メモリースティックの容量だけでは聞きたい曲が全部入りません！そこで、ネットワーク経由で聞こうと思ったのです。</p>
<p>調べてみたらあるんですね！PSPのRSSチャンネル機能を使って、iTunesのデータを聞くことができるというものが。<br />
しかーし、iTunesの入っているパソコンは寝るときは切ってしまう。どうにかして、常時稼働しているサーバでできないものか、ということでPHPでちょっと作ってみたのが続きに。<br />
<span id="more-1740"></span><br />
どうせなら、音楽データのID3タグを読み込みたい、というか都合上ファイル名にマルチバイト文字を使用したくなかったので、日本語のタイトルを表示するにはID3タグを取得するしかなかったのですね。<br />
ちょっと調べてみたら、<a href="http://sourceforge.jp/projects/sfnet_getid3/" target="_blank">getID3()</a>というものがありました。というわけで今回はこれを使用します。</p>
<p>そして、完成したPHPソース。</p>
<pre class="brush: php;">
&lt;?php
define('DATA_DIR', 'data/');
define('GETID3_DIR', 'getid3/');
define('BASE_URI', 'http://'.$_SERVER[&quot;SERVER_NAME&quot;].'/');
define('SCRIPT_NAME', 'MP3 RSS Server');

$list = $_GET['list'];
if ($list == '') {
  echo &quot;&lt;!DOCTYPE html PUBLIC \&quot;-//W3C//DTD XHTML 1.0 Transitional//EN\&quot; \&quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\&quot;&gt;\n&lt;html xmlns=\&quot;http://www.w3.org/1999/xhtml\&quot; xml:lang=\&quot;ja\&quot; lang=\&quot;ja\&quot;&gt;\n&lt;head&gt;\n&lt;meta http-equiv=\&quot;Content-Type\&quot; content=\&quot;text/html; charset=UTF-8\&quot; /&gt;\n&lt;title&gt;&quot;.SCRIPT_NAME.&quot;&lt;/title&gt;\n&lt;/head&gt;\n&lt;body&gt;\n&lt;h1&gt;&quot;.SCRIPT_NAME.&quot;&lt;/h1&gt;\n&lt;ul&gt;\n&quot;;
  if ($handle = opendir(DATA_DIR)) {
    unset($files);
    while (false !== ($file = readdir($handle))) {
      if (ereg('[0-9a-zA-Z]*', $file)) {
        if (is_dir(DATA_DIR.$file) &amp;&amp; ($file!=&quot;.&quot;) &amp;&amp; ($file!=&quot;..&quot;)) {
          if (file_exists(DATA_DIR.$file.&quot;/info&quot;)) {
            $files[] = $file;
          }
        }
      }
    }
    closedir($handle);
    sort($files);
    if (isset($files)) {
      foreach ($files as $file) {
        $info = file(DATA_DIR.$file.'/info');
        $list_title = $info[0];
        $list_title = ereg_replace(&quot;\n&quot;, '', $list_title);
        $list_title = ereg_replace(&quot;\r&quot;, '', $list_title);
        echo '&lt;li&gt;&lt;a href=&quot;'.BASE_URI.'?list='.$file.'&quot;&gt;'.$list_title.'&lt;/a&gt;&lt;/li&gt;'.&quot;\n&quot;;
      }
    }
  }
  echo &quot;&lt;/ul&gt;\n&lt;p&gt;\n&lt;a href=\&quot;&quot;.BASE_URI.&quot;\&quot;&gt;Reload&lt;/a&gt;&lt;br /&gt;\n&lt;/p&gt;\n&lt;/body&gt;\n&lt;/html&gt;\n&quot;;
} else {
  require_once(GETID3_DIR.'getid3.php');
  if (is_dir(DATA_DIR.$list) &amp;&amp; ($list!='.') &amp;&amp; ($list!='..')) {
    if (file_exists(DATA_DIR.$list.'/info')) {
      $info = file(DATA_DIR.$list.'/info');
      $list_title = $info[0];
      $list_title = ereg_replace(&quot;\n&quot;, '', $list_title);
      $list_title = ereg_replace(&quot;\r&quot;, '', $list_title);

      header ('Content-Type: text/xml; charset=utf-8');
      echo &quot;&lt;?xml version=\&quot;1.0\&quot; encoding=\&quot;utf-8\&quot;?&gt;\n&lt;rss xmlns:itunes=\&quot;http://www.itunes.com/DTDs/Podcast-1.0.dtd\&quot; version=\&quot;2.0\&quot;&gt;\n&lt;channel&gt;\n&lt;title&gt;$list_title&lt;/title&gt;\n&quot;;
      echo &quot;&lt;description&gt;RSS 2.0 feed created by &quot;.SCRIPT_NAME.&quot;&lt;/description&gt;\n&lt;link&gt;&quot;.BASE_URI.&quot;&lt;/link&gt;\n&quot;;
      if ($handle = opendir(DATA_DIR.$list.'/')) {
        unset($files);
        while (false !== ($file = readdir($handle))) {
          if (ereg('[0-9a-zA-Z]*\.mp3', $file)) {
            if (!(is_dir(DATA_DIR.$list.'/'.$file)) &amp;&amp; ($file!='.') &amp;&amp; ($file!='..')) {
              $files[] = $file;
            }
          }
        }
        closedir($handle);
        sort($files);
        if (isset($files)) {
          foreach ($files as $file) {
            $getID3 = new getID3;
            $getID3-&gt;encoding = 'UTF-8';
            $ThisFileInfo = $getID3-&gt;analyze(DATA_DIR.$list.'/'.$file);
            getid3_lib::CopyTagsToComments($ThisFileInfo);
            $artist = $ThisFileInfo['comments_html']['artist'][0];
            if ($artist == '') { $artist = '不明なアーティスト'; }
            $title = $ThisFileInfo['comments_html']['title'][0];
            if ($title == '') { $title = ereg_replace('\.mp3', '', $file); }
            echo &quot;&lt;item&gt;\n&lt;title&gt;&quot;.$artist.&quot; - &quot;.$title.&quot;&lt;/title&gt;\n&lt;link&gt;&quot;.BASE_URI.DATA_DIR.$list.&quot;/&quot;.$file.&quot;&lt;/link&gt;\n&lt;pubDate&gt;&quot;.gmdate('D, j M Y H:i:s').&quot; GMT&lt;/pubDate&gt;\n&lt;enclosure url=\&quot;&quot;.BASE_URI.DATA_DIR.$list.&quot;/&quot;.$file.&quot;\&quot; length=\&quot;&quot;.filesize(DATA_DIR.$list.&quot;/&quot;.$file).&quot;\&quot; type=\&quot;audio/mp3\&quot; /&gt;\n&lt;/item&gt;\n&quot;;
          }
        }
      }
      echo &quot;&lt;/channel&gt;\n&lt;/rss&gt;\n&quot;;
    }
  } else {
    header('HTTP/1.0 404 Not Found');
    echo '404 Not Found';
  }
}
?&gt;
</pre>
<p>こんな長いものをここに書くなって感じですが（笑）。まあ、面倒だったので。<br />
使い方はソースをみて分かってほしいなーとも思いますが、そんなことは面倒だと思うので軽く説明します。<br />
まず、getID3()を取得して、ソースのGETID3_DIRで指定している場所に置きます。この指定はソースからの相対パスです。最後はスラッシュで。<br />
次に、音楽データの置場を用意します。場所はDATA_DIRで指定します。GETID3_DIRと同じくソースの設置場所からの相対パスで、最後はスラッシュです。DATA_DIRの中には作りたいプレイリストごとにディレクトリを作ります。名前は適当につけてもらえればOKです。そして、その中にinfoというファイルを用意して、そのファイルにプレイリストの名前を書きます。文字コードはUTF-8で！infoと同じディレクトリにそのプレイリストに入れたいMP3の音楽ファイルを入れてもらえればOKです。<br />
最後に、ソースの設置場所のURLをBASE_URIに入れて、そのソースをindex.phpなどで保存します。文字コードはUTF-8で！<br />
設置方法の説明はこんな感じでしょうか。</p>
<p>その次にPSPでこのプレイリストを登録する必要があります。PSPのインターネットブラウザーから設置したURLへアクセスし、登録したいプレイリスト名を選択します。そうすると、「RSSチャンネルに登録しますか？」と聞かれるので「はい」を選ぶと、RSSチャンネルに登録され、再生の準備が完了します。<br />
再生するときは、XMBのネットワークのRSSチャンネルから登録したプレイリストを選択すると、曲の一覧が表示されます。<br />
使い方の説明はこんな感じでしょうか。</p>
<p>現在のところの問題点はAAC(m4a)ではうまく曲名などが取得できない（文字化けする、マルチバイト文字じゃなければ大丈夫）くらいだと思います。なので、今はMP3しか読み込まないようにしています。もし改善方法などがわかりましたら教えてくださると幸いです。<br />
その他バグなどは・・・あるかもしれません。何かあったら教えていただけると幸いです。</p>
<p>これで、サーバのHDDが許す限りの音楽データが楽しめます。使用する際はくれぐれも様々な法律を遵守してくださいね。</p>
<p>え？Webサーバの構築してないと使えないじゃないかって？その通りです！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.infinity-number.net/archives/1740/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.infinity-number.net/archives/1740" />
	</item>
		<item>
		<title>セプキャン2010開催決定</title>
		<link>http://www.infinity-number.net/archives/1707</link>
		<comments>http://www.infinity-number.net/archives/1707#comments</comments>
		<pubDate>Mon, 14 Jun 2010 10:38:52 +0000</pubDate>
		<dc:creator>あたがわ</dc:creator>
				<category><![CDATA[パソコンの話]]></category>
		<category><![CDATA[セプキャン]]></category>
		<category><![CDATA[応募]]></category>
		<category><![CDATA[開催]]></category>

		<guid isPermaLink="false">http://www.infinity-number.net/?p=1707</guid>
		<description><![CDATA[「今年もやります！セキュリティ＆プログラミングキャンプ2010！」
というわけで、私がやるわけではありませんが（笑）、今年も開催が決定したようです。
過去の参加者としてこれは広報しておくべきだと思ったので、書いておきます [...]]]></description>
			<content:encoded><![CDATA[<p>「今年もやります！セキュリティ＆プログラミングキャンプ2010！」</p>
<p>というわけで、私がやるわけではありませんが（笑）、今年も開催が決定したようです。<br />
過去の参加者としてこれは広報しておくべきだと思ったので、書いておきます。<br />
とりあえず、ウェブサイトが公開されていますので、リンクをはっておきます。</p>
<p><a href="http://www.ipa.go.jp/jinzai/renkei/spcamp2010/" target="_blank">セキュリティ＆プログラミングキャンプ2010</a></p>
<p>このキャンプは素晴らしいですね。この内容の勉強会を無料でというのは、すごいです。<br />
主催などに多少の変更があるようですが、毎年進化しているセプキャンですから、今年は去年以上に素晴らしいものになるでしょう。<br />
少しでも興味を持った方はぜひ応募してください！（笑）</p>
]]></content:encoded>
			<wfw:commentRss>http://www.infinity-number.net/archives/1707/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.infinity-number.net/archives/1707" />
	</item>
		<item>
		<title>Muninで通信量を見る方法</title>
		<link>http://www.infinity-number.net/archives/1642</link>
		<comments>http://www.infinity-number.net/archives/1642#comments</comments>
		<pubDate>Sat, 17 Apr 2010 12:31:47 +0000</pubDate>
		<dc:creator>あたがわ</dc:creator>
				<category><![CDATA[パソコンの話]]></category>
		<category><![CDATA[Munin]]></category>
		<category><![CDATA[サーバ]]></category>
		<category><![CDATA[ネットワーク]]></category>

		<guid isPermaLink="false">http://www.infinity-number.net/?p=1642</guid>
		<description><![CDATA[こんばんは
Munin関連の記事は前にも書いたことがありますので、簡単にだけ説明します。
Muninとは、いろいろなデータをとり、それをグラフ化して表してくれる、サーバ管理なとにはとても便利なものです。プラグインの追加で [...]]]></description>
			<content:encoded><![CDATA[<p>こんばんは<br />
Munin関連の記事は前にも書いたことがありますので、簡単にだけ説明します。<br />
Muninとは、いろいろなデータをとり、それをグラフ化して表してくれる、サーバ管理なとにはとても便利なものです。プラグインの追加でさまざまなデータを観測をすることが出来ます。<br />
もちろんネットワークの通信量をグラフ化することも出来るのですが、デフォルトで動いているif_プラグインは、いろいろと問題が・・・！</p>
<p><a href="http://www.infinity-number.net/wp-content/uploads/100417if_plugin_500p.png"><img src="http://www.infinity-number.net/wp-content/uploads/100417if_plugin_500p-300x162.png" alt="2010年4月17日if_プラグイン_500Pbps" title="2010年4月17日if_プラグイン_500Pbps" width="300" height="162" class="alignnone size-medium wp-image-1643" /></a></p>
<p>なんと、500Pbpsとかいう表示をしています！もちろん、そんなNICもネットワークも使っている覚えはありません（笑）。<br />
<span id="more-1642"></span><br />
これは再起動時に発生する問題で、何故こうなるのかはだいたい予想がついていますが、Munin側に問題があるのか、plugin側に問題があるのかはよく分かりません。ちなみに、環境はCentOS 5.4 64bitです。<br />
とにかく、これは月間のグラフの方にも、年間のグラフの方にも多大なる影響を与えて、観測できなくなってしまいます。<br />
以前は、自分でプラグインを書き換えて、うまく観測するようにしていたのですが、今回はif_プラグインの説明書きに従って、ip_プラグインという別のプラグインを使用してみることにしました。</p>
<p>ということで、ip_プラグインを有効化してみましょう。<br />
まず始めに、ip_プラグインはiptablesを使用しますので、どうにかがんばってインストールしてください（笑）。標準で入っている場合が多いと思います。また、ファイアウォールやルータとして使っている場合もあると思います。</p>
<p>次に、iptablesを起動していない場合は起動します。起動したら、ip_プラグインの中の先頭に書いてある説明に従って、ルールを設定しましょう。</p>
<pre class="brush: plain;">iptables -A INPUT -d 192.168.0.1
iptables -A OUTPUT -s 192.168.0.1</pre>
<p>説明の例は上のような感じですが、これは、受信は192.168.0.1着、送信は192.168.0.1発のパケットをカウントするルールです。つまり自分自身が192.168.0.1の場合は自分発着のパケットカウントすると言うことです。ということで、このIPアドレスを書き換えれば良いわけです。<br />
また、別の方法として下のようなルールもありだと思います。</p>
<pre class="brush: plain;">iptables -A INPUT -i eth0
iptables -A OUTPUT -o eth0</pre>
<p>これは、インターフェースで指定しているだけです。こちらの方が、IPアドレス変更時にルールやプラグイン名を書き換える必要がないかなと思います。</p>
<p>ルール設定が完了しましたら、iptables -L -v -n -xとでもやって、うまく設定されているか確認します。あとは、/etc/rc.d/init.d/iptables saveとでもやって、設定を保存しておきます。これをしないと再起動したときに・・・！！！（笑）<br />
これで、iptables側の設定は終わりです。後はプラグインにシンボリックリンクを張って終了です。がんばりましょう（笑）。</p>
<p>プラグイン本体は/usr/share/munin/plugins/ip_にあると思います。そして、有効にするには/etc/munin/plugins/ip_にシンボリックリンクを張ります。</p>
<pre class="brush: plain;">ln -s /usr/share/munin/plugins/ip_ /etc/munin/plugins/ip_192.168.0.1</pre>
<p>こんな感じでOKだと思います。192.168.0.1の所は先ほどのiptablesの設定によって変えてください。インターフェースで指定した場合も同様です。</p>
<p>あとは、munin-nodeを再起動して終了！お疲れ様でした。<br />
数分後にちゃんと更新されているか確かめましょう。</p>
<p>最後に、本当に再起動しても問題がないのか。下が同時刻のif_とip_のグラフです。<br />
<a href="http://www.infinity-number.net/wp-content/uploads/100417if_plugin.png"><img src="http://www.infinity-number.net/wp-content/uploads/100417if_plugin-300x162.png" alt="2010年4月17日if_プラグイン" title="2010年4月17日if_プラグイン" width="300" height="162" class="alignnone size-medium wp-image-1651" /></a><br />
<a href="http://www.infinity-number.net/wp-content/uploads/100417ip_plugin.png"><img src="http://www.infinity-number.net/wp-content/uploads/100417ip_plugin-300x162.png" alt="2010年4月17日ip_プラグイン" title="2010年4月17日ip_プラグイン" width="300" height="162" class="alignnone size-medium wp-image-1652" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.infinity-number.net/archives/1642/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.infinity-number.net/archives/1642" />
	</item>
		<item>
		<title>セプキャン2009実施報告</title>
		<link>http://www.infinity-number.net/archives/1537</link>
		<comments>http://www.infinity-number.net/archives/1537#comments</comments>
		<pubDate>Mon, 08 Feb 2010 01:54:08 +0000</pubDate>
		<dc:creator>あたがわ</dc:creator>
				<category><![CDATA[パソコンの話]]></category>
		<category><![CDATA[セプキャン]]></category>
		<category><![CDATA[倍率]]></category>
		<category><![CDATA[報告]]></category>

		<guid isPermaLink="false">http://www.infinity-number.net/?p=1537</guid>
		<description><![CDATA[セキュリティ＆プログラミングキャンプ2009の実施報告が公式サイトに掲載されたようです。
セキュリティ＆プログラミングキャンプ2009実施報告 &#124; セキュリティ＆プログラミングキャンプ2009
Twitterにも書きまし [...]]]></description>
			<content:encoded><![CDATA[<p>セキュリティ＆プログラミングキャンプ2009の実施報告が公式サイトに掲載されたようです。</p>
<p><a href="http://www.jipdec.or.jp/camp/camp2009report/index.html" target"_blank">セキュリティ＆プログラミングキャンプ2009実施報告 | セキュリティ＆プログラミングキャンプ2009</a></p>
<p>Twitterにも書きましたが、流れちゃうのでここにも書いておきます。<br />
改めて見ると、やはり高倍率ですね。6倍ですもんね。その中で参加できたのだから、今後もいろいろやらないとだめですね。<br />
来年は、もっと倍率上がるのかなー？</p>
<p>参加者のその後を見るとやはりすごい人ばかりですねー。私なんか足元にも及びません。<br />
本当、いろいろ頑張らないとだめですね。<br />
ま、でも、まずは大学合格目指します！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.infinity-number.net/archives/1537/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.infinity-number.net/archives/1537" />
	</item>
		<item>
		<title>Adobe AIRのTwitterクライアント</title>
		<link>http://www.infinity-number.net/archives/1489</link>
		<comments>http://www.infinity-number.net/archives/1489#comments</comments>
		<pubDate>Wed, 13 Jan 2010 10:13:44 +0000</pubDate>
		<dc:creator>あたがわ</dc:creator>
				<category><![CDATA[パソコンの話]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[クライアント]]></category>

		<guid isPermaLink="false">http://www.infinity-number.net/?p=1489</guid>
		<description><![CDATA[「tC」と命名。OAuthのアプリケーション登録で空いてたから。ただそれだけ。twitterClientってことです。でも「twitter」が含まれる名前には出来ませんでした。
そして、今のところはこんな感じ。

タイム [...]]]></description>
			<content:encoded><![CDATA[<p>「tC」と命名。OAuthのアプリケーション登録で空いてたから。ただそれだけ。twitterClientってことです。でも「twitter」が含まれる名前には出来ませんでした。<br />
そして、今のところはこんな感じ。</p>
<p><a href="http://www.infinity-number.net/wp-content/uploads/100113tc_timeline.png"><img src="http://www.infinity-number.net/wp-content/uploads/100113tc_timeline-300x225.png" alt="2010年1月13日tCタイムライン" title="2010年1月13日tCタイムライン" width="300" height="225" class="alignnone size-medium wp-image-1491" /></a><br />
タイムライン。</p>
<p><a href="http://www.infinity-number.net/wp-content/uploads/100113tc_setting.png"><img src="http://www.infinity-number.net/wp-content/uploads/100113tc_setting-300x225.png" alt="2010年1月13日tC設定" title="2010年1月13日tC設定" width="300" height="225" class="alignnone size-medium wp-image-1490" /></a><br />
設定画面（OAuthの暗証番号入力する画面）。<br />
<span id="more-1489"></span><br />
OAuthはシグネチャの生成が非常に面倒でした。<br />
<a href="http://code.google.com/p/as3corelib/" target="_blank">as3corelib</a> と <a href="http://code.google.com/p/as3crypto/" target="_blank">as3crypto</a> を使ってHMAC-SHA1とかやりました。たぶん、as3cryptoだけでも出来るんじゃないかな？とか思ったり。<br />
なぜ両方使ったかと言うと、初めにas3corelibを発見し、HMAC-SHA1のダイジェスト値の生成には成功したのですが、戻り値がバイナリのHEXがStringで返ってくるので、それをバイナリにしてbase64encodeしないといけないので、そこでas3cryptoを使ったわけです。ついでにbase64encodeも、こっちのほうが扱いやすかったので、こちらのものを使いました。<br />
で、シグネチャ生成部分のコードはこんな感じ。</p>
<pre class="brush: jscript;">
// (OAuth)シグネチャ生成
private function oAuthCreateSignature(requestMethod:String, requestUrl:String, param:Array, secret:String=&quot;&quot;, token:String=&quot;&quot;):String
{
	param = param.sort();
	paramString = &quot;&quot;;
	param.forEach(createParamString);
	paramString = paramString.replace(/&amp;$/g, &quot;&quot;);
	var signatureHmac:String = Base64.encodeByteArray(Hex.toArray(
		HMAC.hash(secret + &quot;&amp;&quot; + token, encodeURIComponent(requestMethod) + &quot;&amp;&quot; + encodeURIComponent(requestUrl) + &quot;&amp;&quot; + encodeURIComponent(paramString), SHA1)
	));
	return signatureHmac;
}
private function createParamString(element:*, index:int, arr:Array):void {
	paramString += element+&quot;&amp;&quot;;
}
</pre>
<p>この関数にMethodとURL、パラメータ、secretを渡してやればいいわけです。<br />
なんか、引数の定義のところでtoken:Stringとか書いてますが、これは私の勘違いですね（汗）。両方ともsecretです。TwitterならConsumer secretと、oauth_token_secretって感じでしょうか。Request token取得時にはoauth_token_secretはいらないですね。Consumer secretは絶対に入るはずなので secret:String=&#8221;" とやる必要もないかもしれません。<br />
Arrayで渡されたパラメータをソートして、&amp;でつないでます</p>
<pre class="brush: jscript;">
// シグネチャ生成
var consumerKey:String = &quot;123aBc456DeF&quot;; // Consumer key
var consumerSecret:String = &quot;ABC987def654&quot;; // Consumer secret
var oAuthToken:String = &quot;ABC987def654&quot;; // OAuth token
var oAuthTokenSecret:String = &quot;ABC987def654&quot;; // OAuth token secret
var unixTime:String = (Math.floor(new Date().getTime()/1000)).toString();
var nonce:String = MD5.hash(MD5.hash(unixTime) + MD5.hash((Math.floor(Math.random()*4096)+1).toString()));
var param:Array = new Array();
param.push(&quot;oauth_consumer_key=&quot;+consumerKey);
param.push(&quot;oauth_nonce=&quot;+nonce);
param.push(&quot;oauth_signature_method=HMAC-SHA1&quot;);
param.push(&quot;oauth_timestamp=&quot;+unixTime);
param.push(&quot;oauth_token=&quot;+oAuthToken);
param.push(&quot;oauth_version=1.0&quot;);
var signatureHmac:String = oAuthCreateSignature(METHOD, URL, param, consumerSecret,　oAuthTokenSecret);
</pre>
<p>どっかから関数をこんな感じで呼び出してやればOKです。Nonce（一意の文字列）は乱数と時間でMD5でHash化して適当に生成してます。<br />
HTTP Request時のパラメータが増える場合は param.push() してやればOKです。関数側でソートしているので、pushする順番はあまり気にしなくてもOKです。</p>
<p>シグネチャを生成した後もいろいろ苦労しました。が、いろいろやっているうちにできたので、よしとします（笑）。<br />
意見やわからないことなどがありましたら、コメント or メールで。</p>
<p>追記(’10/1/14）<br />
最新の状態の Screen Shot 追加<br />
<a href="http://www.infinity-number.net/wp-content/uploads/100114tc_timeline_new.png"><img src="http://www.infinity-number.net/wp-content/uploads/100114tc_timeline_new-300x225.png" alt="2010年1月14日tCタイムライン" title="2010年1月14日tCタイムライン" width="300" height="225" class="alignnone size-medium wp-image-1514" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.infinity-number.net/archives/1489/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.infinity-number.net/archives/1489" />
	</item>
		<item>
		<title>SeagateのHDDをRMAで交換してみる</title>
		<link>http://www.infinity-number.net/archives/1480</link>
		<comments>http://www.infinity-number.net/archives/1480#comments</comments>
		<pubDate>Wed, 13 Jan 2010 08:50:14 +0000</pubDate>
		<dc:creator>あたがわ</dc:creator>
				<category><![CDATA[パソコンの話]]></category>
		<category><![CDATA[HDD]]></category>
		<category><![CDATA[RMA]]></category>
		<category><![CDATA[Seagate]]></category>

		<guid isPermaLink="false">http://www.infinity-number.net/?p=1480</guid>
		<description><![CDATA[1年ちょっと前に購入したSeagateの500GBのHDDですが、大量に代替済みセクタが発生し、とうとうクラッシュして、その後BIOSでの認識すら危うくなったので、RMAで交換してみることにしました。このHDDは5年間な [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.infinity-number.net/archives/663" target="_blank">1年ちょっと前に購入したSeagateの500GBのHDD</a>ですが、大量に代替済みセクタが発生し、とうとう<a href="http://www.infinity-number.net/archives/1442" target="_blank">クラッシュ</a>して、その後BIOSでの認識すら危うくなったので、RMAで交換してみることにしました。このHDDは5年間なので期間的には余裕ですね。</p>
<p>ということで、梱包。<br />
<span id="more-1480"></span><br />
<img src="http://www.infinity-number.net/wp-content/uploads/100113seagaterma1.jpg" alt="2010年1月13日SeagateRMA1" title="2010年1月13日SeagateRMA1" width="320" height="240" class="alignnone size-full wp-image-1481" /><br />
まずは、下にスポンジを置きます。</p>
<p><img src="http://www.infinity-number.net/wp-content/uploads/100113seagaterma2.jpg" alt="2010年1月13日SeagateRMA2" title="2010年1月13日SeagateRMA2" width="320" height="240" class="alignnone size-full wp-image-1482" /><br />
そして、周りをちょっと硬めのスポンジで囲んだHDDを置きます。</p>
<p><img src="http://www.infinity-number.net/wp-content/uploads/100113seagaterma3.jpg" alt="2010年1月13日SeagateRMA3" title="2010年1月13日SeagateRMA3" width="320" height="240" class="alignnone size-full wp-image-1483" /><br />
HDDの上にスポンジを置きます。オーバーフローしてますが気にしません（笑）。</p>
<p><img src="http://www.infinity-number.net/wp-content/uploads/100113seagaterma4.jpg" alt="2010年1月13日SeagateRMA4" title="2010年1月13日SeagateRMA4" width="320" height="240" class="alignnone size-full wp-image-1484" /><br />
無理やり封をして完成です。箱は<a href="http://www.infinity-number.net/archives/567" target="_blank">どっかで見たような箱</a>です。</p>
<p>宅配便で千葉に送ってから、4日ほどで代わりのHDDが来ました。</p>
<p><img src="http://www.infinity-number.net/wp-content/uploads/100113seagaterma5.jpg" alt="2010年1月13日SeagateRMA5" title="2010年1月13日SeagateRMA5" width="320" height="240" class="alignnone size-full wp-image-1485" /><br />
こんな感じ。</p>
<p><img src="http://www.infinity-number.net/wp-content/uploads/100113seagaterma6.jpg" alt="2010年1月13日SeagateRMA6" title="2010年1月13日SeagateRMA6" width="320" height="240" class="alignnone size-full wp-image-1486" /><br />
Certified Repaired HDD と。よく見ると画像の右下にも何か書いてますね。</p>
<p>ということで、無事にRMAに成功しました。ががが、梱包費用と送料だけで3,000円ほどかかってしまいました。ネット上で探してみると台所用スポンジでも結構大丈夫そうなので、それがいいかもしれません。わざわざ1,400円もする波々なスポンジを買う必要はないかもです。<br />
送られてきたHDD、今のところは大丈夫です。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.infinity-number.net/archives/1480/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.infinity-number.net/archives/1480" />
	</item>
		<item>
		<title>Adobe Flex Builderを使ってみた</title>
		<link>http://www.infinity-number.net/archives/1448</link>
		<comments>http://www.infinity-number.net/archives/1448#comments</comments>
		<pubDate>Sun, 20 Dec 2009 06:24:12 +0000</pubDate>
		<dc:creator>あたがわ</dc:creator>
				<category><![CDATA[パソコンの話]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://www.infinity-number.net/?p=1448</guid>
		<description><![CDATA[最近、Webアプリケーションのプログラミングが多くなってきたので、デスクトップで動くプログラムも作りたいなーと思い、この間、アカデミックライセンスを取得した、Adobe Flex Builder 3を使ってみました。
6 [...]]]></description>
			<content:encoded><![CDATA[<p>最近、Webアプリケーションのプログラミングが多くなってきたので、デスクトップで動くプログラムも作りたいなーと思い、この間、アカデミックライセンスを取得した、Adobe Flex Builder 3を使ってみました。</p>
<p>6時間程度、ちょっと真剣に、いじってたらこんなものができました。<br />
<a href="http://www.infinity-number.net/wp-content/uploads/091220twiter_client.png"><img src="http://www.infinity-number.net/wp-content/uploads/091220twiter_client-300x225.png" alt="2009年12月20日Twitterクライアントのようなもの" title="2009年12月20日Twitterクライアントのようなもの" width="300" height="225" class="size-medium wp-image-1449" /></a><br />
名付けて、「Twitterクライアントのようなもの」（笑）。Adobe AIRで動きます。<br />
残念ながら、TLを見ることしかできないので、Twitterクライアントではないんです。しかし、そのうち完成予定。自分で使うために（笑）。</p>
<p>ここからが非常に実装していくのが難しい場面かなーって感じですかね。<br />
勉強の合間を縫って、ちょこっとずつ作りたいと思います。</p>
<p>それにしても、面白いな。<br />
<span id="more-1448"></span><br />
XMLは扱いやすいし、自分のTLとるのに試しにやったBasic認証もすぐできるしで、案外簡単かなーとか思っていましたが、最も苦労したのは、前のデータに次のデータを「追加」していくこと。<br />
新規に読み込むのは簡単なんだけど、どうも追加していくのはスマートにはいかないようで・・・。本当、6時間のうち半分くらい使ったんじゃないかっていうくらい大変でした。<br />
結局、ググって、「<a href="http://blog.s2factory.co.jp/yoshizu/2008/02/e4xxml.html" target="_blank">E4Xを使ってXMLをマージする &#8211; yoshizu&#8217;s log</a>」、こちらの方のコードを利用させていただきました。簡単にできて、素晴らしいです。</p>
<p>え？自分で解決してないだろうって？そんなはずは・・・（笑）。</p>
<p>ということで、皆さんもAdobe Flex Builderを楽しんでみてください。<br />
学生の方は申請すれば、タダで利用できるんですよ。製品版は、さすがAdobeと言わんばかりの驚きの価格ですから（笑）。</p>
<p>これって、そのままWeb上でも動かせそうですね。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.infinity-number.net/archives/1448/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.infinity-number.net/archives/1448" />
	</item>
		<item>
		<title>久しぶりのシステムクラッシュ</title>
		<link>http://www.infinity-number.net/archives/1442</link>
		<comments>http://www.infinity-number.net/archives/1442#comments</comments>
		<pubDate>Sun, 13 Dec 2009 05:09:40 +0000</pubDate>
		<dc:creator>あたがわ</dc:creator>
				<category><![CDATA[パソコンの話]]></category>
		<category><![CDATA[クラッシュ]]></category>
		<category><![CDATA[システム]]></category>
		<category><![CDATA[破壊]]></category>

		<guid isPermaLink="false">http://www.infinity-number.net/?p=1442</guid>
		<description><![CDATA[こんにちは
昨日、久しぶりにメインマシンがクラッシュしました。なぜだかデータの破壊が起きたようです。


システムファイル含め、いろいろなファイルが壊れてます。
以下、やったことを適当に。

事の発端は、昼に目が覚めると [...]]]></description>
			<content:encoded><![CDATA[<p>こんにちは<br />
昨日、久しぶりにメインマシンがクラッシュしました。なぜだかデータの破壊が起きたようです。<br />
<img src="http://www.infinity-number.net/wp-content/uploads/091212err1.jpg" alt="2009年12月12日エラー1" title="2009年12月12日エラー1" width="320" height="240" class="size-full wp-image-1443" /><br />
<img src="http://www.infinity-number.net/wp-content/uploads/091212err2.jpg" alt="2009年12月12日エラー2" title="2009年12月12日エラー2" width="320" height="240" class="size-full wp-image-1444" /><br />
システムファイル含め、いろいろなファイルが壊れてます。<br />
以下、やったことを適当に。<br />
<span id="more-1442"></span><br />
事の発端は、昼に目が覚めると、録画予約しておいたテレビの録画が終わっていない。で、録画のスケジューラ見たいなやつがエラーを強制終了させられていたこと。<br />
これが、原因ではないと思いますが、何かが起きてこのスケジューラが強制終了させられたのだと思います。<br />
で、とりあえず、再起動すると、上の画像の1枚目のエラー。どうのこうのがんばって起動しようと思っても無理。セーフモードでも上の画像の2枚目のエラー。結局、システムファイルがかなり壊れていた？</p>
<p>もうどうしようもないので、Windowsの修復セットアップを実行して、散髪へ（笑）。<br />
帰ってきたら、地域の設定だかの画面で止まっていたので続きを。<br />
そして、非常に重く、いろんなソフトがエラー吐きまくる非常に不安定な状態ながら、Windowsが起動。</p>
<p>とりあえず、普段使っているバックアップソフトでバックアップを開始するが、CRCエラーで無理。<br />
しかたないので、手動で必要なファイルのみをバックアップし（ここでも一部のファイルがCRCエラー）、どうにかこうにかファイルを救出。<br />
CRCエラーでだめだったものは、以前のバックアップから取り出し。</p>
<p>Windows再セットアップ。AHCIに仕様と思ったのと、ほかにもいろいろやろうとごにょごにょしたせいで、一時BIOSすら起動しなくなる事態に。かなり焦った。<br />
けど、どうにかこうにかBIOSが起動したので、設定リセットして、何とかWindows再セットアップ完了。</p>
<p>そして、環境をある程度復元して、今。</p>
<p>なんという土日でしょうか。復旧に24時間かかった。<br />
1ヵ月後には、あれがあるのにね。こんな時期にクラッシュするなよー（笑）。<br />
ま、すごく短い文字列しか書いていないBSODとかいろんなエラー見れたし、楽しかったです。しかし、原因がわからないから、今後が不安。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.infinity-number.net/archives/1442/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.infinity-number.net/archives/1442" />
	</item>
		<item>
		<title>続・WebDAVで拡張子によって・・・</title>
		<link>http://www.infinity-number.net/archives/1369</link>
		<comments>http://www.infinity-number.net/archives/1369#comments</comments>
		<pubDate>Thu, 01 Oct 2009 13:52:00 +0000</pubDate>
		<dc:creator>あたがわ</dc:creator>
				<category><![CDATA[パソコンの話]]></category>
		<category><![CDATA[WebDAV]]></category>
		<category><![CDATA[制限]]></category>
		<category><![CDATA[拡張子]]></category>

		<guid isPermaLink="false">http://www.infinity-number.net/?p=1369</guid>
		<description><![CDATA[WebDAVで拡張子によって制限したいの続きっぽいものです。
前回はブラウザでIndexが403になるという微妙な感じ（セキュアとは言ったものの　笑）だったので、いろいろやってみました。
実はウェブブラウザで見ても、We [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.infinity-number.net/archives/1364" target="_blank">WebDAVで拡張子によって制限したい</a>の続きっぽいものです。</p>
<p>前回はブラウザでIndexが403になるという微妙な感じ（セキュアとは言ったものの　笑）だったので、いろいろやってみました。<br />
実はウェブブラウザで見ても、WebDAVクライアントで見ても、ファイル一覧を取得するときに403を大量に吐いている（DirectoryIndexの数だけ）ことが分かりました。<br />
と、言うことは・・・？<br />
<span id="more-1369"></span><br />
DirectoryIndexの設定をクリアすればいいのかも・・・。</p>
<pre class="brush: plain;">
DirectoryIndex None
</pre>
<p>図星（笑）。見事Indexが表示され、エラーも出ていません。<br />
で、その後いろいろいじって最終的にこんな感じの設定に。</p>
<pre class="brush: plain;">
DirectoryIndex None
Order deny,allow
Deny from all
&lt;Files ~ &quot;^[A-Za-z0-9_\-]*$|^[A-Za-z0-9_\-\.]+\.(txt|pdf|gif|jpg|png|mp3|wav|wmv|avi|lzh|zip)$&quot;&gt;
	Allow from all
&lt;/Files&gt;
</pre>
<p>英数字と一部の記号のファイルしかアップロードできないようにしています。<br />
ただ、ファイルとディレクトリはファイル名的（？）に同じ扱いなようで、拡張子とかそこら辺も同じです。うまく説明できないのでお察し下さい（笑）。<br />
あと、標準だとHEADER.htmlとかREADME.htmlとかあげられるとアレなので、HeaderNameとReadmeNameを使うとか、rootでもともと作っておくとかで防ぎましょう。<br />
AllowOverrideもNoneにしておくのが無難かなーと。</p>
<p>最後に。WebDAVはやっぱり公開して使うものではないなと（笑）。しっかりダイジェスト認証とかSSLとか一緒に使うのが無難です。（もしくは非公開なURLとか　笑）<br />
適当なことしていてサーバに侵入されたら・・・。怖いですねー。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.infinity-number.net/archives/1369/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.infinity-number.net/archives/1369" />
	</item>
	</channel>
</rss>
