<?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>電卓片手に</title>
	<atom:link href="http://k-ui.jp/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://k-ui.jp</link>
	<description>音楽とPCのお話</description>
	<lastBuildDate>Wed, 18 Aug 2010 15:28:31 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Mac を音源とし、無線 LAN 経由のリモートスピーカーで再生</title>
		<link>http://k-ui.jp/?p=255</link>
		<comments>http://k-ui.jp/?p=255#comments</comments>
		<pubDate>Wed, 18 Aug 2010 15:27:16 +0000</pubDate>
		<dc:creator>k-ui</dc:creator>
				<category><![CDATA[設定]]></category>
		<category><![CDATA[esound]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[macbook]]></category>

		<guid isPermaLink="false">http://k-ui.jp/?p=255</guid>
		<description><![CDATA[MacBook 上の音を全て、リモートマシン （Linux機） で再生する方法を紹介します。つまり、音を、

MacBook → 無線LAN → Linux → スピーカー → ♪

といった感じに飛ばすことを、AirM [...]]]></description>
			<content:encoded><![CDATA[<p>MacBook 上の音を全て、リモートマシン （Linux機） で再生する方法を紹介します。つまり、音を、</p>
<pre>
MacBook → 無線LAN → Linux → スピーカー → ♪
</pre>
<p>といった感じに飛ばすことを、<a href="http://www.apple.com/jp/airmacexpress/features/airtunes.html">AirMac Express</a> 無しで実現する方法です。問題点として後述しますが、実用のレベルかどうかと聴かれるとかなり怪しいです。<br />
<a href="http://rolf.haynberg.de/?p=14">Digital Trivia >> How to: AirTunes without AirPort</a> を参考にさせていただきました。</p>
<h3>必要な環境・知識</h3>
<p>ターミナルを使います。MacBookに 必要なソフトウェアは</p>
<ul>
<li><a href="http://www.macports.org/">Macports</a></li>
<li><a href="http://code.google.com/p/soundflower/">SoundFlower</a></li>
<li>esound(インストールについては後述する)</li>
</ul>
<p>です。各々のインストール方法はググッてみてください。</p>
<p>Linux に必要なソフトウェアは、</p>
<ul>
<li>esound</li>
</ul>
<p>のみになります。esound は、ターミナルで <code>sudo aptitude install esound</code> を実行すればインストール出来ます。（※ただし Ubuntu、Debian 環境に限る）</p>
<h3>手順</h3>
<p>Macbook, Linux それぞれ順を追って説明します。</p>
<h4>Linux 側の設定（受信）</h4>
<p>esound を使って、MacBook からの音入力を待つようにします。ターミナルで下のようなコマンドをタイプします。</p>
<pre>$ esd -tcp -public</pre>
<p>すると、ピコピコ♪ といった感じの音が鳴り、プロンプトが帰ってこない状態になります。ピコピコ音が聞こえない場合は、サウンドカード周りの設定がうまくいっていないかもしれません。</p>
<h4>Macbook 側の設定（送信）</h4>
<ol>
<li>esound のインストール</li>
<li>サウンド出力の設定<br />
  「左上の林檎マーク → システム環境設定 → サウンド → 出力タブ」にて下の画像のように設定<br />
  <a href="http://k-ui.jp/wp-content/uploads/2010/08/39c88b6a4b979a9cf3ee9be771d80656.png"><img src="http://k-ui.jp/wp-content/uploads/2010/08/39c88b6a4b979a9cf3ee9be771d80656.png" alt="" title="output_soundflower" width="669" height="484" class="alignnone size-full wp-image-262" /></a>
</li>
<li>サウンド入力の設定<br />
  上の作業に引き続き、「入力タブ」にて下の画像のように設定<br />
<a href="http://k-ui.jp/wp-content/uploads/2010/08/b79376767e3943cb145de8d821adab65.png"><img src="http://k-ui.jp/wp-content/uploads/2010/08/b79376767e3943cb145de8d821adab65.png" alt="" title="input_soundflower" width="669" height="483" class="alignnone size-full wp-image-263" /></a>
 </li>
<li>esound の起動<br />
  ターミナルにて、</p>
<pre>
$ esd -tcp -bind ::1 &#038;
$ esdrec -s ::1 | esdcat -s <Linux マシンの IP アドレス>
</pre>
<p>  とタイプします。一行目の行末の &#038; がないとやはりプロンプトが帰ってこないので気をつけてください。
 </li>
</ol>
<p>以上です。あとは、iTunes などから音楽を流したりシステム音を鳴らしてみてテストをしてみてください。</p>
<h3>引っかかったところ</h3>
<p>Linux 側で、esound を起動しようとしたら、</p>
<pre>
Error: /dev/dsp: No such file or directory
</pre>
<p>というエラーを吐いて起動しなかった。これは、</p>
<pre>
$ sudo aptitude install oss-compat
</pre>
<p>と、oss-compat をインストールすれば済む様子。</p>
<h3>問題点</h3>
<ul>
<li>0.1 秒くらいかそれよりも小さいレベルで遅延がある</li>
<li>ネットワーク負荷が掛かると、どこかがボトルネックになってしまい音がブツブツ切れる</li>
</ul>
<p>前者は、ハッキリ言って人によって気になるかならないか判断ができないレベルの遅延です。僕だったら激しいアクションのある映画は少し気になってしまいそうです。それよりも、後者が問題で、ブラウジングしているとページ読み込みのたびに音が途切れます。</p>
<p>据え置きタイプの BlueTooth レシーバがあったらなぁ。。。</p>
]]></content:encoded>
			<wfw:commentRss>http://k-ui.jp/?feed=rss2&amp;p=255</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>emacsclient の使い方の種類と、便利な使い方</title>
		<link>http://k-ui.jp/?p=243</link>
		<comments>http://k-ui.jp/?p=243#comments</comments>
		<pubDate>Wed, 28 Jul 2010 09:18:54 +0000</pubDate>
		<dc:creator>k-ui</dc:creator>
				<category><![CDATA[書いてみた]]></category>
		<category><![CDATA[設定]]></category>
		<category><![CDATA[emacs]]></category>
		<category><![CDATA[emacsclient]]></category>

		<guid isPermaLink="false">http://k-ui.jp/?p=243</guid>
		<description><![CDATA[前回の記事からわかるように emacsclient にハマっている。前回も軽く触れている通り、emacsclient、emacs サーバ機能には2通りの使い方があると思う。ちなみに前回は、後者に関しての問題（文字化け）で [...]]]></description>
			<content:encoded><![CDATA[<p>前回の記事からわかるように emacsclient にハマっている。前回も軽く触れている通り、emacsclient、emacs サーバ機能には2通りの使い方があると思う。ちなみに前回は、<a href="http://k-ui.jp/?p=204">後者に関しての問題（文字化け）</a>でした。</p>
<ul>
<li>母艦派： 一つの emacs を立ち上げっぱなし
<ul>
<li>→ <code>M-x server-start</code> もしくは、.emacs に<code>(server-start)</code> でサーバ化</li>
<li>→ <code>emacsclient -n filename</code> でサーバに表示させ、サーバで閲覧編集する</li>
<li>認識: 母艦でファイル開くときに、ファイルパスを入力する必要がなくなる！</li>
<li>補足: オプション <code>-n</code> がないと、母艦で編集終了の操作 <code>C-x C-#</code> されるまで、端末に「ちょっと待っててね！」という旨のメッセージが表示され操作できません。
  </ul>
</li>
<li>デーモン派： デーモンとして使う
<ul>
<li><code>emacs --daemon</code> でデーモンとして起動</li>
<li>→ emacsclient -c -t で現在の端末にemacs を表示し、閲覧編集する</li>
<li>認識: 高速で起動する emacs だ！</li>
</ul>
</li>
</ul>
<h3>emacsclient を便利に使いたいとき</h3>
<p>emacsclient を便利に使いたいならこんな感じに成るんでしょうかね。</p>
<h4>母艦派</h4>
<p>alias を割り当てるだけ（？）</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">alias</span> <span style="color: #007800;">e</span>=<span style="color: #ff0000;">&quot;emacsclient -n&quot;</span>
<span style="color: #666666; font-style: italic;"># alias emacs=&quot;emacsclient -n&quot; </span>
<span style="color: #666666; font-style: italic;"># alias vi=&quot;emacsclient -n&quot; # これはどうなの。。。</span></pre></div></div>

<h4>デーモン派</h4>
<p>こちらは、既存のコマンド <code>emacs</code> の置換になるはずなので、少し複雑になります。サーバの立ち上げなどをシームレスに行うための処理が欲しくなりますしね。僕の .zshrc はこんな感じで落ち着きました。</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">## emacsclient をシームレスに使うための関数</span>
<span style="color: #666666; font-style: italic;">## http://k-ui.jp/?p=243</span>
<span style="color: #000000; font-weight: bold;">function</span> e<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span><span style="color: #7a0874; font-weight: bold;">&#123;</span>
    <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;[$0] emacsclient -c -t $*&quot;</span>;
    <span style="color: #7a0874; font-weight: bold;">&#40;</span>emacsclient <span style="color: #660033;">-c</span> <span style="color: #660033;">-t</span> <span style="color: #007800;">$*</span> <span style="color: #000000; font-weight: bold;">||</span>
        <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;[$0] emacs --daemon&quot;</span>; emacs <span style="color: #660033;">--daemon</span> <span style="color: #000000; font-weight: bold;">&amp;&amp;</span>
            <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;[$0] emacsclient -c -t $*&quot;</span>; emacsclient <span style="color: #660033;">-c</span> <span style="color: #660033;">-t</span> <span style="color: #007800;">$*</span><span style="color: #7a0874; font-weight: bold;">&#41;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #000000; font-weight: bold;">||</span>
        <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;[$0] emacs $*&quot;</span>; emacs <span style="color: #007800;">$*</span><span style="color: #7a0874; font-weight: bold;">&#41;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># ソケットの場所を環境変数に覚えてもらう</span>
<span style="color: #666666; font-style: italic;"># emacs のバージョンによって少し場所が違うようなので、</span>
<span style="color: #666666; font-style: italic;"># *** &quot;/tmp&quot; を要確認 ***</span>
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">USER_ID</span>=<span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">id</span> -u<span style="color: #000000; font-weight: bold;">`</span>
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">EMACS_TMP_DIR</span>=<span style="color: #ff0000;">&quot;/tmp/emacs<span style="color: #007800;">$USER_ID</span>&quot;</span>
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">EMACS_SOCK</span>=<span style="color: #ff0000;">&quot;<span style="color: #007800;">$EMACS_TMP_DIR</span>/server&quot;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">## screen emacsclient をシームレスに使うための関数</span>
<span style="color: #000000; font-weight: bold;">function</span> se<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span><span style="color: #7a0874; font-weight: bold;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #c20cb9; font-weight: bold;">which</span> emacsclient <span style="color: #000000; font-weight: bold;">&amp;&amp;</span>
        <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;[$0] ls <span style="color: #007800;">$EMACS_SOCK</span> &quot;</span>; <span style="color: #c20cb9; font-weight: bold;">ls</span> <span style="color: #007800;">$EMACS_SOCK</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #000000; font-weight: bold;">||</span>
        <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;[$0] emacs --daemon&quot;</span>; emacs --daemon<span style="color: #7a0874; font-weight: bold;">&#41;</span>
    <span style="color: #000000; font-weight: bold;">then</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;[$0] screen -t emacs emacsclient -t -c $*&quot;</span>;
        <span style="color: #c20cb9; font-weight: bold;">screen</span> <span style="color: #660033;">-t</span> emacs emacsclient <span style="color: #660033;">-t</span> <span style="color: #660033;">-c</span> <span style="color: #007800;">$*</span>
    <span style="color: #000000; font-weight: bold;">elif</span> <span style="color: #c20cb9; font-weight: bold;">which</span> emacs
    <span style="color: #000000; font-weight: bold;">then</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;[$0] screen emacs -t -c $*&quot;</span>;
        <span style="color: #c20cb9; font-weight: bold;">screen</span> emacs <span style="color: #660033;">-t</span> <span style="color: #660033;">-c</span> <span style="color: #007800;">$*</span>
    <span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">##  $EMACS_TMP_DIR が無いとき</span>
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #000000; font-weight: bold;">!</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-d</span> <span style="color: #007800;">$EMACS_TMP_DIR</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
&nbsp;
   <span style="color: #666666; font-style: italic;">#（socket 使わないバージョン、毎回emacs--daemonしてる。。。）</span>
    <span style="color: #000000; font-weight: bold;">function</span> se<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span><span style="color: #7a0874; font-weight: bold;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #c20cb9; font-weight: bold;">which</span> emacsclient
        <span style="color: #000000; font-weight: bold;">then</span>
            <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;[$0] emacs --daemon&quot;</span>
            emacs <span style="color: #660033;">--daemon</span>
            <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;[$0] screen -t emacs emacsclient -t -c $*&quot;</span>
            <span style="color: #c20cb9; font-weight: bold;">screen</span> <span style="color: #660033;">-t</span> emacs emacsclient <span style="color: #660033;">-t</span> <span style="color: #660033;">-c</span> <span style="color: #007800;">$*</span>
        <span style="color: #000000; font-weight: bold;">elif</span> <span style="color: #c20cb9; font-weight: bold;">which</span> emacs
        <span style="color: #000000; font-weight: bold;">then</span>
            <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;[$0] screen emacs -t -c $*&quot;</span>;
            <span style="color: #c20cb9; font-weight: bold;">screen</span> emacs <span style="color: #660033;">-t</span> <span style="color: #660033;">-c</span> <span style="color: #007800;">$*</span>
        <span style="color: #000000; font-weight: bold;">fi</span>
    <span style="color: #7a0874; font-weight: bold;">&#125;</span>
<span style="color: #000000; font-weight: bold;">fi</span></pre></div></div>

<p><code>emacsclient -n -c</code> がダメなら、<code>emacs --daemon</code> した後、<code>emacsclient -n -c</code> しています。screen 使うときはそうもいかないので、デーモンと通信するためのソケットが存在するかどうか確認をするようになっています。コメントにも書いてありますが、<strong>バージョンによってソケットの場所と名前がビミョーに違う</strong>ので、確認したほうが良いかもしれません。</p>
<p>僕はデーモン派なので、母艦派に関する使い方がどう考えても甘いですね。</p>
]]></content:encoded>
			<wfw:commentRss>http://k-ui.jp/?feed=rss2&amp;p=243</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>emacsclient の文字化け解決法</title>
		<link>http://k-ui.jp/?p=204</link>
		<comments>http://k-ui.jp/?p=204#comments</comments>
		<pubDate>Mon, 26 Jul 2010 17:40:54 +0000</pubDate>
		<dc:creator>k-ui</dc:creator>
				<category><![CDATA[設定]]></category>
		<category><![CDATA[emacs]]></category>
		<category><![CDATA[emacsclient]]></category>
		<category><![CDATA[lisp]]></category>

		<guid isPermaLink="false">http://k-ui.jp/?p=204</guid>
		<description><![CDATA[ふつーの emacs で起動しても文字化けしないのに、emacs --daemon で emacs サーバを立ち上げて、emacsclient -t somefile すると、文字が化けてしまう問題の解決方法。下記を . [...]]]></description>
			<content:encoded><![CDATA[<p>ふつーの <code>emacs</code> で起動しても文字化けしないのに、<code>emacs --daemon</code> で emacs サーバを立ち上げて、<code>emacsclient -t somefile</code> すると、文字が化けてしまう問題の解決方法。下記を .emacs などに追加する。</p>

<div class="wp_syntax"><div class="code"><pre class="lisp" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">;; emacsclient でアクセスした時の文字コード設定</span>
<span style="color: #808080; font-style: italic;">;; バグ: &quot;emacsclient -c&quot; で起動すると実行されない</span>
<span style="color: #66cc66;">&#40;</span>add-hook 'server-visit-hook
          <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
            <span style="color: #66cc66;">&#40;</span>set-terminal-coding-system 'utf-<span style="color: #cc66cc;">8</span><span style="color: #66cc66;">&#41;</span>
            <span style="color: #66cc66;">&#40;</span>set-keyboard-coding-system 'utf-<span style="color: #cc66cc;">8</span><span style="color: #66cc66;">&#41;</span>
            <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></pre></div></div>

<h3>補足: 上記の問題点など</h3>
<p>少し読める人はわかるかもしれないけれど、本来ふつーに書くべき、<code>(set-terminal-coding-system 'utf-8)</code> や<code>(set-terminal-coding-system 'utf-8)</code> を、emacsclient がサーバに接続したときにもう一度発動するようになっている。どうやら、<strong>表示する端末ごとにこれらの設定が必要</strong>らしい。</p>
<p>しかしながら、上記のコメントにも書いてあるが、<code>emacsclient -t -c</code> ファイル指定無しで開くとやはり文字化けが起きてしまう。残念ながらファイル指定無し起動は、適切な hook が無いよう。なので現状はどうしようもないのかな。。。</p>
<p>そもそも、この原因が起きる人は、<code>emacsclient -t</code> で、今の端末に emacs を表示する人たちである。しかし、</p>
<ul>
<li>ファイル名を指定して実行しないといけない</li>
<li>オプション <code>-t</code> を付けないと、現在の端末では開けない</li>
</ul>
<p>っていう仕様から察するに、このemacs サーバ／emacsclient は、母艦となる emacs をサーバ化して、そこでバッファを一元管理しようってのがそもそも意図なんだろうな。</p>
<p>ぐぐっても全然困ってる人がいないので、おかしいなーと思ったのだけれど、そもそもあまり行儀の良い使い方ではなかった様子。</p>
]]></content:encoded>
			<wfw:commentRss>http://k-ui.jp/?feed=rss2&amp;p=204</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Emacs から WordPress に投稿＋α</title>
		<link>http://k-ui.jp/?p=138</link>
		<comments>http://k-ui.jp/?p=138#comments</comments>
		<pubDate>Fri, 23 Jul 2010 05:00:23 +0000</pubDate>
		<dc:creator>k-ui</dc:creator>
				<category><![CDATA[設定]]></category>
		<category><![CDATA[emacs]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://k-ui.jp/?p=138</guid>
		<description><![CDATA[Emacs から WordPress に投稿するための Elisp (wp-emacs) があるようなので試してみた。

ファイルのダウンロードし、パスが通っている場所に配置をする。
  svn の リポジトリ から、下 [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://code.google.com/p/wp-emacs/">Emacs から WordPress に投稿するための Elisp (wp-emacs)</a> があるようなので試してみた。</p>
<ol>
<li>ファイルのダウンロードし、パスが通っている場所に配置をする。
<p>  <a href="http://wp-emacs.googlecode.com/svn/trunk/">svn の リポジトリ</a> から、下の二つをダウンロードする</p>
<ul>
<li><a href="http://wp-emacs.googlecode.com/svn/trunk/weblogger.el">weblogger.el</a></li>
<li><a href="http://wp-emacs.googlecode.com/svn/trunk/xml-rpc.el">xml-rpc.el</a></li>
</ul>
</li>
<li>.emacs（もしくは .emacs.el）に下記の記述を追加

<div class="wp_syntax"><div class="code"><pre class="lisp" style="font-family:monospace;"><span style="color: #66cc66;">&#40;</span>require 'weblogger<span style="color: #66cc66;">&#41;</span>
  <span style="color: #808080; font-style: italic;">;; (global-set-key &quot;\C-cbs&quot; 'weblogger-start-entry) ;; C-c b s とタイプすると新規作成</span></pre></div></div>

</li>
<li>wordpress の設定を変更
<p>  標準のままだと、XML-RPC が使えない。下記の様に辿り wordpress の設定を変更する。</p>
<pre>ダッシュボード → 設定（左上辺り？）→ 投稿設定 → XML-RPC の項目にチェックを入れる</pre>
</li>
<li><code>M-x weblogger-setup-weblog</code> とタイプし、server-url, user name, password を設定<br />
  server-url は、http://(サーバー名)/(wordpress のトップまでのパス)/xmlrpc/</li>
<li><code>M-x weblogger-start-entry</code> とタイプすると、新しい記事を作成できる
<p>  あるいは、先程の <code>;; (grobal-setkey ...</code> をコメントから外すならば、<code>C-c b s</code> で新しい記事を作成できる</li>
</ol>
<p>これで基本的な設定はおしまい。ただしこれだと、記事を編集したいだけの時に、具合が良くない。<code> M-x weblogger-fetch-entries</code> でできるはずなのだが、ユーザー情報の読み込みが上手くいかない。次の&#8221;＋α&#8221;で、その他いくつかの問題点を解決している。</p>
<h3>＋α</h3>
<p><code>wordpress</code> で、emacs を立ち上げ wordpress の編集をできるようにするコマンド（正確にはalias）を作る。ついでに <code>wordpress_new</code> ってコマンドで新規記事の作成もできるようにする。<br />
上記に書いた以外に、●時々ユーザ設定を正しく読み込まない、●うっかり <code>C-x C-s</code> すると記事が公開されてしまう、●起動のたびにパスワードを入力する必要がある、●emacs 立ち上げてから weblogger を立ち上げるの面倒、●weblogger.el が無い環境だと起動に失敗する、といった問題がある。これらの問題を .emacs と .zshrc に数行書き加えて解決する　。</p>
<p>まずは、.emacs の先程書いた２行を下記に置き換える</p>

<div class="wp_syntax"><div class="code"><pre class="lisp" style="font-family:monospace;"><span style="color: #66cc66;">&#40;</span>require 'weblogger <span style="color: #b1b100;">nil</span> t<span style="color: #66cc66;">&#41;</span> <span style="color: #808080; font-style: italic;">;; weblogger.el がないときロードしない</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>featurep 'weblogger<span style="color: #66cc66;">&#41;</span> <span style="color: #808080; font-style: italic;">;; weblogger.el があるときだけ以下を実行する</span>
    <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">let</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
      <span style="color: #808080; font-style: italic;">;; (global-set-key &quot;\C-cbs&quot; 'weblogger-start-entry) ;; C-c b s で新規作成</span>
&nbsp;
      <span style="color: #808080; font-style: italic;">;; C-x C-s を記事の保存だけする</span>
      <span style="color: #66cc66;">&#40;</span>define-key weblogger-entry-mode-map <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\C</span>-x<span style="color: #000099; font-weight: bold;">\C</span>-s&quot;</span> 'weblogger-save-entry<span style="color: #66cc66;">&#41;</span>
&nbsp;
      <span style="color: #808080; font-style: italic;">;; C-c C-c で記事の保存 → 公開をする。また公開中の記事は、非公開になる。</span>
      <span style="color: #66cc66;">&#40;</span>define-key weblogger-entry-mode-map <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\C</span>-c<span style="color: #000099; font-weight: bold;">\C</span>-c&quot;</span> 'weblogger-publish-entry<span style="color: #66cc66;">&#41;</span>
&nbsp;
      <span style="color: #808080; font-style: italic;">;; weblogger-setup-weblog で自動生成されたユーザ情報</span>
      <span style="color: #66cc66;">&#40;</span>custom-set-variables
       '<span style="color: #66cc66;">&#40;</span>weblogger-config-alist
	 <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">quote</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;default&quot;</span> <span style="color: #808080; font-style: italic;">;; ここの &quot;default&quot; は、下の起動オプション用関数に使う。人に依っては別の文字で与えてるかもしれない</span>
		  <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;user&quot;</span> <span style="color: #66cc66;">.</span> <span style="color: #ff0000;">&quot;k-ui&quot;</span><span style="color: #66cc66;">&#41;</span>
		  <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;pass&quot;</span> <span style="color: #66cc66;">.</span> <span style="color: #ff0000;">&quot;パスワードだよ&quot;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #808080; font-style: italic;">;; &quot;pass&quot; を設定することでパスワードの入力せずに起動できる</span>
		  <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;server-url&quot;</span> <span style="color: #66cc66;">.</span> <span style="color: #ff0000;">&quot;http://k-ui.jp/xmlrpc/&quot;</span><span style="color: #66cc66;">&#41;</span>
		  <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;weblog&quot;</span> <span style="color: #66cc66;">.</span> <span style="color: #ff0000;">&quot;1&quot;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
		 <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
      <span style="color: #808080; font-style: italic;">;; コマンドからの起動オプション用関数</span>
      <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">defun</span> kui-weblogger-edit <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
	<span style="color: #ff0000;">&quot;Start weblogger-mode&quot;</span>
	<span style="color: #66cc66;">&#40;</span>interactive<span style="color: #66cc66;">&#41;</span>
	<span style="color: #66cc66;">&#40;</span>weblogger-select-configuration <span style="color: #ff0000;">&quot;default&quot;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #808080; font-style: italic;">;; &quot;default&quot; 部分は適切な文字に置き換え</span>
	<span style="color: #66cc66;">&#40;</span>weblogger-fetch-entries<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
      <span style="color: #808080; font-style: italic;">;; コマンドからの起動オプション用関数</span>
      <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">defun</span> kui-weblogger-create <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
	<span style="color: #ff0000;">&quot;Start weblogger-mode&quot;</span>
	<span style="color: #66cc66;">&#40;</span>interactive<span style="color: #66cc66;">&#41;</span>
	<span style="color: #66cc66;">&#40;</span>weblogger-select-configuration <span style="color: #ff0000;">&quot;default&quot;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #808080; font-style: italic;">;; &quot;default&quot; 部分は適切な文字に置き換え</span>
	<span style="color: #66cc66;">&#40;</span>weblogger-start-entry<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></pre></div></div>

<p>次に .zshrc に下記を追加</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">alias</span> <span style="color: #007800;">wordpress</span>=<span style="color: #ff0000;">&quot;emacs -f kui-weblogger-edit&quot;</span>
<span style="color: #7a0874; font-weight: bold;">alias</span> <span style="color: #007800;">wordpress</span>=<span style="color: #ff0000;">&quot;emacs -f kui-weblogger-create&quot;</span></pre></div></div>

<p>これで、シェルから <code>wordpress</code> ってコマンド一発で WordPress を編集できる状態になる</p>
<h3>問題点</h3>
<ul>
<li>タグが消える</li>
<li>保存・公開した時間がおそらく世界標準時になってしまう</li>
<li>新規作成周りがやっぱり不安定</li>
</ul>
<p>ここまで書いておいてなんだけれど、ちょっとまだ実用的じゃないのかもしれない。</p>
]]></content:encoded>
			<wfw:commentRss>http://k-ui.jp/?feed=rss2&amp;p=138</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cygwin + PuTTY + zsh + screen + emacs での日本語環境設定</title>
		<link>http://k-ui.jp/?p=107</link>
		<comments>http://k-ui.jp/?p=107#comments</comments>
		<pubDate>Fri, 23 Jul 2010 05:00:00 +0000</pubDate>
		<dc:creator>k-ui</dc:creator>
				<category><![CDATA[設定]]></category>

		<guid isPermaLink="false">http://k-ui.jp/?p=107</guid>
		<description><![CDATA[この記事の目的は

cygwin を putty 経由で使う
シェル（zsh）、emacs、screen で日本語の表示、入力ができる

ということをすること。以下簡単に箇条書き。

Cygwin をインストール

em [...]]]></description>
			<content:encoded><![CDATA[<p>この記事の目的は</p>
<ul>
<li>cygwin を putty 経由で使う</li>
<li>シェル（zsh）、emacs、screen で日本語の表示、入力ができる</li>
</ul>
<p>ということをすること。以下簡単に箇条書き。</p>
<ol>
<li><a href="http://www.cygwin.com/">Cygwin</a> をインストール
<ul>
<li>emacs, zsh, screen を install にする</li>
</ul>
</li>
<li><a href="http://yebisuya.dip.jp/Software/PuTTY/">PuTTY ごった煮版</a>をインストール</li>
<li><a href="http://sourceforge.jp/projects/ttssh2/releases/" target="_self">Tera Term</a> のインストーラーから cygterm をインストール</li>
<li>putty で、cygterm 用の設定（セッション）を作成<br />
<blockquote><p>PuTTYを起動し、localhost:23にtelnet接続するセッションを1つ作成する。<br />
 端末-&gt;行規則オプション-&gt;ローカルエコー　を&#8221;強制的にオフ”<br />
 端末-&gt;行規則オプション-&gt;ローカルラインの編集　を&#8221;強制的にオフ&#8221;<br />
 端末-&gt;キーボード-&gt;バックスペースキー　を&#8221;Control-H&#8221;に<br />
 ウインドウ-&gt;変換 で文字コードを&#8221;MS_Kanji/Auto-Detect Japanese&#8221;に</p>
<p>  <a href="http://blog.tbl.jp/2008/11/cygwincygtermputty.html"><em>PuTTYを使ってCygwinに接続する &#8211; ばーぶろぐ /var/blog</em></a>
 </p></blockquote>
<p>  セッションの名前は「cygterm」にしておく。この名前は、次の cygterm.cfg の編集時に使う。
 </li>
<li>cygterm の設定をする
<p>おそらく &#8220;C:\Program Files\teraterm&#8221; に cygterm.cfg というテキストファイルがあるので、適当なエディタで開く</p>
<pre>
TERM = "C:\Program Files\PuTTY\putty.exe" -load "cygterm" -telnet %s -P %d
TERM_TYPE = xterm
PORT_START = 20000
PORT_RANGE = 40
SHELL = /bin/zsh --login -i
ENV_1 = SHELL=/bin/zsh
</pre>
<p>&#8220;TERM = &#8230;&#8221; の行の cygterm は、前で設定した PuTTY の Cygwin 用セッション名
 </li>
<li>
  Windows の環境変数 Path に、&#8221;C:\cygwin\bin&#8221; を追加</p>
<p>  マイコンピュータ → 右クリック → プロパティ → 詳細設定タブ → 環境変数 → システム環境変数 Path を編集
 </li>
<li>cygtem.exe を実行<br />
「cygwin1.dllが見つかりません」 ってエラーがでたら、先程の環境変数 Path に、&#8221;C:\cygwin\bin&#8221; があるか確認。もしくは cygwin インストールしたフォルダが、&#8221;C:\cygwin&#8221; じゃない？<br />
また、別の問題だが、関連して、Windows Vista/7 では zsh が起動時にエラーを吐く。対処方法は、<a href="http://d.hatena.ne.jp/kamuycikap/20100217/1266373298">PuTTYを使ってCygwinに接続する &#8211; ばーぶろぐ /var/blog</a> を参考にさせていただいた。</li>
<li>自宅サーバから、.zshrc, .screenrc, .emacs をダウンロード</li>
<li>.zshrc を編集<br />
下記のように LANG の値を変更、なければ追加</p>
<pre>export LANG=ja_JP.SJIS</pre>
</li>
<li>.screenrc を編集<br />
下記のように defencoding の値を変更、もしくは追加</p>
<pre>defencoding SJIS</pre>
</li>
<li>.emacs を編集<br />
下記の三つの値を設定、もしくは値を変更</p>
<pre>(set-language-environment "Japanese")
(set-terminal-coding-system 'sjis)
(set-keyboard-coding-system 'sjis)</pre>
</li>
</ol>
<p>おわり。日本語表示入力に関してはこれで問題ない。</p>
<h4>参考にさせていただいたページ</h4>
<ul>
<li><a href="http://blog.tbl.jp/2008/11/cygwincygtermputty.html">ばーぶろぐ /var/blog: PuTTYを使ってCygwinに接続する</a></li>
<li><a href="http://d.hatena.ne.jp/shuichi_h/20060616">cygwin+screen &#8211; shuichi_hの日記</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://k-ui.jp/?feed=rss2&amp;p=107</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>lucene の demo で Could not find the main class: org.apache.lucene.demo.IndexFiles.</title>
		<link>http://k-ui.jp/?p=101</link>
		<comments>http://k-ui.jp/?p=101#comments</comments>
		<pubDate>Sat, 22 May 2010 10:14:01 +0000</pubDate>
		<dc:creator>k-ui</dc:creator>
				<category><![CDATA[ほげほげ]]></category>

		<guid isPermaLink="false">http://k-ui.jp/?p=101</guid>
		<description><![CDATA[Luceneを使いたくて、最新のJDKと最新のAntをインストールし、Luceneをコンパイルして、Apache Lucene &#8211; Building and Installing the Basic Demo [...]]]></description>
			<content:encoded><![CDATA[<p>Luceneを使いたくて、最新のJDKと最新のAntをインストールし、Luceneをコンパイルして、<a href="http://lucene.apache.org/java/3_0_1/demo.html">Apache Lucene &#8211; Building and Installing the Basic Demo</a> を参考に demo を動かしてみようとした。、上記のエラーが出た。</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ java <span style="color: #660033;">-version</span>
java version <span style="color: #ff0000;">&quot;1.6.0_18&quot;</span>
OpenJDK Runtime Environment <span style="color: #7a0874; font-weight: bold;">&#40;</span>IcedTea6 <span style="color: #000000;">1.8</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span>6b18-<span style="color: #000000;">1.8</span>-0ubuntu1<span style="color: #7a0874; font-weight: bold;">&#41;</span>
OpenJDK Client VM <span style="color: #7a0874; font-weight: bold;">&#40;</span>build <span style="color: #000000;">14.0</span>-b16, mixed mode, sharing<span style="color: #7a0874; font-weight: bold;">&#41;</span>
&nbsp;
$ ant <span style="color: #660033;">-version</span>
Apache Ant version 1.8.1 compiled on April <span style="color: #000000;">30</span> <span style="color: #000000;">2010</span>
&nbsp;
$ java org.apache.lucene.demo.IndexFiles src
Exception <span style="color: #000000; font-weight: bold;">in</span> thread <span style="color: #ff0000;">&quot;main&quot;</span> java.lang.NoClassDefFoundError: org<span style="color: #000000; font-weight: bold;">/</span>apache<span style="color: #000000; font-weight: bold;">/</span>lucene<span style="color: #000000; font-weight: bold;">/</span>demo<span style="color: #000000; font-weight: bold;">/</span>IndexFiles
Caused by: java.lang.ClassNotFoundException: org.apache.lucene.demo.IndexFiles
        at java.net.URLClassLoader$1.run<span style="color: #7a0874; font-weight: bold;">&#40;</span>URLClassLoader.java:<span style="color: #000000;">217</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
        at java.security.AccessController.doPrivileged<span style="color: #7a0874; font-weight: bold;">&#40;</span>Native Method<span style="color: #7a0874; font-weight: bold;">&#41;</span>
        at java.net.URLClassLoader.findClass<span style="color: #7a0874; font-weight: bold;">&#40;</span>URLClassLoader.java:<span style="color: #000000;">205</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
        at java.lang.ClassLoader.loadClass<span style="color: #7a0874; font-weight: bold;">&#40;</span>ClassLoader.java:<span style="color: #000000;">321</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
        at sun.misc.Launcher<span style="color: #007800;">$AppClassLoader</span>.loadClass<span style="color: #7a0874; font-weight: bold;">&#40;</span>Launcher.java:<span style="color: #000000;">294</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
        at java.lang.ClassLoader.loadClass<span style="color: #7a0874; font-weight: bold;">&#40;</span>ClassLoader.java:<span style="color: #000000;">266</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
        at java.lang.ClassLoader.loadClassInternal<span style="color: #7a0874; font-weight: bold;">&#40;</span>ClassLoader.java:<span style="color: #000000;">334</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
Could not <span style="color: #c20cb9; font-weight: bold;">find</span> the main class: org.apache.lucene.demo.IndexFiles. Program will exit.</pre></div></div>

<p>原因は、Luceneをantでビルドしたときに warning が出ていたところあたりにある様子。</p>
<p>lucene-3.0.1のディレクトリにある <strong>build.xml を書き換えないといけない。</strong>build.xml の中の javac タグに属性includeAntRuntimeを書き加える。（220行目付近に一箇所）</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;">      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;javac</span></span>
<span style="color: #009900;">        <span style="color: #000066;">srcdir</span>=<span style="color: #ff0000;">&quot;@{srcdir}&quot;</span></span>
<span style="color: #009900;">        <span style="color: #000066;">destdir</span>=<span style="color: #ff0000;">&quot;@{destdir}&quot;</span></span>
<span style="color: #009900;">        <span style="color: #000066;">deprecation</span>=<span style="color: #ff0000;">&quot;off&quot;</span></span>
<span style="color: #009900;">        <span style="color: #000066;">includeAntRuntime</span>=<span style="color: #ff0000;">&quot;true&quot;</span> ← ここだよ！！！</span>
<span style="color: #009900;">        <span style="color: #000066;">debug</span>=<span style="color: #ff0000;">&quot;on&quot;</span></span>
<span style="color: #009900;">        <span style="color: #000066;">source</span>=<span style="color: #ff0000;">&quot;${javac.source}&quot;</span></span>
<span style="color: #009900;">        <span style="color: #000066;">target</span>=<span style="color: #ff0000;">&quot;${javac.target}&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;nested</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/javac<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>これで動くはず。</p>
<p>しかし実際はダメでした。これは別に原因があった。僕は、CLASSPATH に  lucene-core-3.0.1.jar と lucene-demos-3.0.1.jar を置いてなかった為、下記のようなコマンドで demo を実行する必要があった。</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ java <span style="color: #660033;">-cp</span> <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>kui<span style="color: #000000; font-weight: bold;">/</span>lucene<span style="color: #000000; font-weight: bold;">/</span>lucene-3.0.1<span style="color: #000000; font-weight: bold;">/</span>lucene-core-3.0.1.jar:<span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>kui<span style="color: #000000; font-weight: bold;">/</span>lucene<span style="color: #000000; font-weight: bold;">/</span>lucene-3.0.1<span style="color: #000000; font-weight: bold;">/</span>lucene-demos-3.0.1.jar  org.apache.lucene.demo.IndexFiles src</pre></div></div>

<p>これで無事 lucene の demo が動きましたとさ。</p>
<p>ちなみに、ダメな時の ant のエラーは下記のようでした。</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">    <span style="color: #7a0874; font-weight: bold;">&#91;</span>javac<span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>k-ui<span style="color: #000000; font-weight: bold;">/</span>lucene<span style="color: #000000; font-weight: bold;">/</span>lucene-3.0.1<span style="color: #000000; font-weight: bold;">/</span>build.xml:<span style="color: #000000;">225</span>: warning: <span style="color: #ff0000;">'includeantruntime'</span> was not <span style="color: #000000; font-weight: bold;">set</span>, defaulting to build.sysclasspath=<span style="color: #c20cb9; font-weight: bold;">last</span>; <span style="color: #000000; font-weight: bold;">set</span> to <span style="color: #c20cb9; font-weight: bold;">false</span> <span style="color: #000000; font-weight: bold;">for</span> repeatable builds</pre></div></div>

<p>Java で HelloWorld さえしてない自分には大変な作業でした。半日使ってしまった悲しい。</p>
]]></content:encoded>
			<wfw:commentRss>http://k-ui.jp/?feed=rss2&amp;p=101</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MacOSX の Firefox で、拡張機能 LoL（HaH） の「新しいタブで開く」問題</title>
		<link>http://k-ui.jp/?p=97</link>
		<comments>http://k-ui.jp/?p=97#comments</comments>
		<pubDate>Sun, 21 Feb 2010 06:46:07 +0000</pubDate>
		<dc:creator>k-ui</dc:creator>
				<category><![CDATA[ほげほげ]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[mac]]></category>

		<guid isPermaLink="false">http://k-ui.jp/?p=97</guid>
		<description><![CDATA[マウスなしでもリンクを辿れる拡張機能 LoL（元祖はHit-a-Hint） にはとてもお世話になってます。
Macbook で Firefox の LoL（HaH, Hit-a-Hint） を使っていると、「新しいタブで [...]]]></description>
			<content:encoded><![CDATA[<p>マウスなしでもリンクを辿れる拡張機能 LoL（元祖はHit-a-Hint） にはとてもお世話になってます。<br />
Macbook で Firefox の LoL（HaH, Hit-a-Hint） を使っていると、「新しいタブで開く」って動作が正しく行われない問題に関する対処方法について書きたいと思う。</p>
<h3>問題：mac Firefox にて LoL, HaH の「新しいタブで開く」が正しく動作しない</h3>
<p>Win Firefox の LoL だと、新しいタブでリンクを開くには、</p>
<ol>
<li>スペースキーを押す（押したまま）</li>
<li>目的のリンクにあてられたキーを押す</li>
<li>Ctrl キーを押しつつ、スペースキーを放す</li>
</ol>
<p>とやれば良い。が、どういうわけか、Mac Firefox の LoL で同様のことをしようと</p>
<ol>
<li>スペースキーを押す（押したまま）</li>
<li>目的のリンクにあてられたキーを押す</li>
<li>command キーを押しつつ、スペースキーを放す</li>
</ol>
<p>ってやっても、リンクにフォーカスがあたるだけでリンクを開いてくれない。<br />
仕方が無いので、最後に「command+return を押す」をして、新しいタブを開いている。<br />
これが結構ストレス。</p>
<p>何かいい方法ないかなーってグーグル先生に教えて貰った。（ソースを紛失）どうやら、command キーを押すと、スペースキーの開放を検知出来ない仕様らしい。ブラウザレベルか、OSレベルかはわかりませんが。</p>
<h3>解決方法：アドオン書き換え</h3>
<p>ちょっと面倒ですが、LoL を書き換えましょう。command キーではなく control キーで新しいタブを開くように改造します。</p>
<h4>手順1：LoL をダウンロード</h4>
<p>まず <a href="https://addons.mozilla.org/ja/firefox/addon/8781">LoL ダウンロードページ</a>で、右クリックして「別名でリンク先を保存」してください。</p>
<h4>手順2：xpi ファイルと jar ファイルの展開</h4>
<p>ダウンロードしたファイルは zip で圧縮されているので展開します。</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">unzip</span> lol-<span style="color: #000000;">1.4</span>-fx.xpi 
Archive:  lol-<span style="color: #000000;">1.4</span>-fx.xpi
   creating: chrome<span style="color: #000000; font-weight: bold;">/</span>
  inflating: chrome<span style="color: #000000; font-weight: bold;">/</span>LoL.jar          
  inflating: chrome.manifest         
   creating: defaults<span style="color: #000000; font-weight: bold;">/</span>
   creating: defaults<span style="color: #000000; font-weight: bold;">/</span>preferences<span style="color: #000000; font-weight: bold;">/</span>
  inflating: defaults<span style="color: #000000; font-weight: bold;">/</span>preferences<span style="color: #000000; font-weight: bold;">/</span>prefs.js  
  inflating: install.rdf</pre></div></div>

<p>さらに、LoL.jar も zip で圧縮されているのでやっぱり展開します。</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #7a0874; font-weight: bold;">cd</span> chrome 
$ <span style="color: #c20cb9; font-weight: bold;">unzip</span> LoL.jar 
Archive:  LoL.jar
 extracting: content<span style="color: #000000; font-weight: bold;">/</span>bindings.xml    
 extracting: content<span style="color: #000000; font-weight: bold;">/</span>settings.css    
 extracting: content<span style="color: #000000; font-weight: bold;">/</span>overlay.xul     
 extracting: content<span style="color: #000000; font-weight: bold;">/</span>preferences.xul  
 extracting: content<span style="color: #000000; font-weight: bold;">/</span>overlay.js      
 extracting: locale<span style="color: #000000; font-weight: bold;">/</span>fr-FR<span style="color: #000000; font-weight: bold;">/</span>hah.dtd    
 extracting: locale<span style="color: #000000; font-weight: bold;">/</span>it-IT<span style="color: #000000; font-weight: bold;">/</span>hah.dtd    
 extracting: locale<span style="color: #000000; font-weight: bold;">/</span>en-US<span style="color: #000000; font-weight: bold;">/</span>hah.dtd    
 extracting: locale<span style="color: #000000; font-weight: bold;">/</span>fi-FI<span style="color: #000000; font-weight: bold;">/</span>hah.dtd    
 extracting: locale<span style="color: #000000; font-weight: bold;">/</span>hu-HU<span style="color: #000000; font-weight: bold;">/</span>hah.dtd    
 extracting: skin<span style="color: #000000; font-weight: bold;">/</span>icon.png</pre></div></div>

<h4>手順3：overlay.js 書き換え</h4>
<p>書き換えます。僕は Emacs なので Emacs で。</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ emacs content<span style="color: #000000; font-weight: bold;">/</span>overlay.js</pre></div></div>

<p>そして、「initmouse」で検索してください。四つくらい見つかるかな？そして</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">                                  evt.<span style="color: #660066;">initMouseEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'mousedown'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span> view<span style="color: #339933;">,</span> <span style="color: #CC0000;">1</span><span style="color: #339933;">,</span> x<span style="color: #339933;">+</span><span style="color: #CC0000;">1</span><span style="color: #339933;">,</span> y<span style="color: #339933;">+</span><span style="color: #CC0000;">1</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span>
                                                                         event.<span style="color: #660066;">ctrlKey</span><span style="color: #339933;">,</span> event.<span style="color: #660066;">altKey</span><span style="color: #339933;">,</span> event.<span style="color: #660066;">shiftKey</span><span style="color: #339933;">,</span> event.<span style="color: #660066;">metaKey</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                                  elem.<span style="color: #660066;">dispatchEvent</span><span style="color: #009900;">&#40;</span>evt<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
                                  <span style="color: #003366; font-weight: bold;">var</span> evt <span style="color: #339933;">=</span> doc.<span style="color: #660066;">createEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'MouseEvents'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                                  evt.<span style="color: #660066;">initMouseEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'click'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span> view<span style="color: #339933;">,</span> <span style="color: #CC0000;">1</span><span style="color: #339933;">,</span> x<span style="color: #339933;">+</span><span style="color: #CC0000;">1</span><span style="color: #339933;">,</span> y<span style="color: #339933;">+</span><span style="color: #CC0000;">1</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span>
                                                                         event.<span style="color: #660066;">ctrlKey</span><span style="color: #339933;">,</span> event.<span style="color: #660066;">altKey</span><span style="color: #339933;">,</span> event.<span style="color: #660066;">shiftKey</span><span style="color: #339933;">,</span> event.<span style="color: #660066;">metaKey</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>と initMouseEvent が二回使われていますね。そこの第１３引数に書いてある「metaKey」を「ctrlKey」に置換します。<br />
こうなる。</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">                                 <span style="color: #003366; font-weight: bold;">var</span> evt <span style="color: #339933;">=</span> doc.<span style="color: #660066;">createEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'MouseEvents'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                                  evt.<span style="color: #660066;">initMouseEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'mousedown'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span> view<span style="color: #339933;">,</span> <span style="color: #CC0000;">1</span><span style="color: #339933;">,</span> x<span style="color: #339933;">+</span><span style="color: #CC0000;">1</span><span style="color: #339933;">,</span> y<span style="color: #339933;">+</span><span style="color: #CC0000;">1</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span>
                                                                         event.<span style="color: #660066;">ctrlKey</span><span style="color: #339933;">,</span> event.<span style="color: #660066;">altKey</span><span style="color: #339933;">,</span> event.<span style="color: #660066;">shiftKey</span><span style="color: #339933;">,</span> event.<span style="color: #660066;">ctrlKey</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
elem.<span style="color: #660066;">dispatchEvent</span><span style="color: #009900;">&#40;</span>evt<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>                                                                                 
&nbsp;
                                  <span style="color: #003366; font-weight: bold;">var</span> evt <span style="color: #339933;">=</span> doc.<span style="color: #660066;">createEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'MouseEvents'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                                  evt.<span style="color: #660066;">initMouseEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'click'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span> view<span style="color: #339933;">,</span> <span style="color: #CC0000;">1</span><span style="color: #339933;">,</span> x<span style="color: #339933;">+</span><span style="color: #CC0000;">1</span><span style="color: #339933;">,</span> y<span style="color: #339933;">+</span><span style="color: #CC0000;">1</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span>
                                                                         event.<span style="color: #660066;">ctrlKey</span><span style="color: #339933;">,</span> event.<span style="color: #660066;">altKey</span><span style="color: #339933;">,</span> event.<span style="color: #660066;">shiftKey</span><span style="color: #339933;">,</span> event.<span style="color: #660066;">ctrlKey</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                                  elem.<span style="color: #660066;">dispatchEvent</span><span style="color: #009900;">&#40;</span>evt<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h4>手順4：元の通りに圧縮する</h4>
<p>元の通りに圧縮しましょう。何となく勿体無いので、元の xpi ファイルは取っておき、mylol.xpi というファイルを作っています。</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">zip</span> <span style="color: #660033;">-r</span> LoL.jar content locale skin 
  adding: content<span style="color: #000000; font-weight: bold;">/</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span>stored <span style="color: #000000;">0</span><span style="color: #000000; font-weight: bold;">%</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
  adding: content<span style="color: #000000; font-weight: bold;">/</span>bindings.xml <span style="color: #7a0874; font-weight: bold;">&#40;</span>deflated <span style="color: #000000;">78</span><span style="color: #000000; font-weight: bold;">%</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
  adding: content<span style="color: #000000; font-weight: bold;">/</span>overlay.js <span style="color: #7a0874; font-weight: bold;">&#40;</span>deflated <span style="color: #000000;">75</span><span style="color: #000000; font-weight: bold;">%</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
  adding: content<span style="color: #000000; font-weight: bold;">/</span>overlay.js~ <span style="color: #7a0874; font-weight: bold;">&#40;</span>deflated <span style="color: #000000;">75</span><span style="color: #000000; font-weight: bold;">%</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
  adding: content<span style="color: #000000; font-weight: bold;">/</span>overlay.xul <span style="color: #7a0874; font-weight: bold;">&#40;</span>deflated <span style="color: #000000;">65</span><span style="color: #000000; font-weight: bold;">%</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
  adding: content<span style="color: #000000; font-weight: bold;">/</span>preferences.xul <span style="color: #7a0874; font-weight: bold;">&#40;</span>deflated <span style="color: #000000;">74</span><span style="color: #000000; font-weight: bold;">%</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
  adding: content<span style="color: #000000; font-weight: bold;">/</span>settings.css <span style="color: #7a0874; font-weight: bold;">&#40;</span>deflated <span style="color: #000000;">35</span><span style="color: #000000; font-weight: bold;">%</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
  adding: locale<span style="color: #000000; font-weight: bold;">/</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span>stored <span style="color: #000000;">0</span><span style="color: #000000; font-weight: bold;">%</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
  adding: locale<span style="color: #000000; font-weight: bold;">/</span>en-US<span style="color: #000000; font-weight: bold;">/</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span>stored <span style="color: #000000;">0</span><span style="color: #000000; font-weight: bold;">%</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
  adding: locale<span style="color: #000000; font-weight: bold;">/</span>en-US<span style="color: #000000; font-weight: bold;">/</span>hah.dtd <span style="color: #7a0874; font-weight: bold;">&#40;</span>deflated <span style="color: #000000;">54</span><span style="color: #000000; font-weight: bold;">%</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
  adding: locale<span style="color: #000000; font-weight: bold;">/</span>fi-FI<span style="color: #000000; font-weight: bold;">/</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span>stored <span style="color: #000000;">0</span><span style="color: #000000; font-weight: bold;">%</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
  adding: locale<span style="color: #000000; font-weight: bold;">/</span>fi-FI<span style="color: #000000; font-weight: bold;">/</span>hah.dtd <span style="color: #7a0874; font-weight: bold;">&#40;</span>deflated <span style="color: #000000;">55</span><span style="color: #000000; font-weight: bold;">%</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
  adding: locale<span style="color: #000000; font-weight: bold;">/</span>fr-FR<span style="color: #000000; font-weight: bold;">/</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span>stored <span style="color: #000000;">0</span><span style="color: #000000; font-weight: bold;">%</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
  adding: locale<span style="color: #000000; font-weight: bold;">/</span>fr-FR<span style="color: #000000; font-weight: bold;">/</span>hah.dtd <span style="color: #7a0874; font-weight: bold;">&#40;</span>deflated <span style="color: #000000;">55</span><span style="color: #000000; font-weight: bold;">%</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
  adding: locale<span style="color: #000000; font-weight: bold;">/</span>hu-HU<span style="color: #000000; font-weight: bold;">/</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span>stored <span style="color: #000000;">0</span><span style="color: #000000; font-weight: bold;">%</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
  adding: locale<span style="color: #000000; font-weight: bold;">/</span>hu-HU<span style="color: #000000; font-weight: bold;">/</span>hah.dtd <span style="color: #7a0874; font-weight: bold;">&#40;</span>deflated <span style="color: #000000;">54</span><span style="color: #000000; font-weight: bold;">%</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
  adding: locale<span style="color: #000000; font-weight: bold;">/</span>it-IT<span style="color: #000000; font-weight: bold;">/</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span>stored <span style="color: #000000;">0</span><span style="color: #000000; font-weight: bold;">%</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
  adding: locale<span style="color: #000000; font-weight: bold;">/</span>it-IT<span style="color: #000000; font-weight: bold;">/</span>hah.dtd <span style="color: #7a0874; font-weight: bold;">&#40;</span>deflated <span style="color: #000000;">54</span><span style="color: #000000; font-weight: bold;">%</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
  adding: skin<span style="color: #000000; font-weight: bold;">/</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span>stored <span style="color: #000000;">0</span><span style="color: #000000; font-weight: bold;">%</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
  adding: skin<span style="color: #000000; font-weight: bold;">/</span>icon.png <span style="color: #7a0874; font-weight: bold;">&#40;</span>deflated <span style="color: #000000;">0</span><span style="color: #000000; font-weight: bold;">%</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
$ <span style="color: #7a0874; font-weight: bold;">cd</span> ..
$ <span style="color: #c20cb9; font-weight: bold;">zip</span> <span style="color: #660033;">-r</span> mylol.xpi chrome<span style="color: #000000; font-weight: bold;">/</span>LoL.jar chrome.manifest defaults install.rdf
  adding: chrome<span style="color: #000000; font-weight: bold;">/</span>LoL.jar <span style="color: #7a0874; font-weight: bold;">&#40;</span>deflated <span style="color: #000000;">23</span><span style="color: #000000; font-weight: bold;">%</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
  adding: chrome.manifest <span style="color: #7a0874; font-weight: bold;">&#40;</span>deflated <span style="color: #000000;">63</span><span style="color: #000000; font-weight: bold;">%</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
  adding: defaults<span style="color: #000000; font-weight: bold;">/</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span>stored <span style="color: #000000;">0</span><span style="color: #000000; font-weight: bold;">%</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
  adding: defaults<span style="color: #000000; font-weight: bold;">/</span>preferences<span style="color: #000000; font-weight: bold;">/</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span>stored <span style="color: #000000;">0</span><span style="color: #000000; font-weight: bold;">%</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
  adding: defaults<span style="color: #000000; font-weight: bold;">/</span>preferences<span style="color: #000000; font-weight: bold;">/</span>prefs.js <span style="color: #7a0874; font-weight: bold;">&#40;</span>deflated <span style="color: #000000;">60</span><span style="color: #000000; font-weight: bold;">%</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
  adding: install.rdf <span style="color: #7a0874; font-weight: bold;">&#40;</span>deflated <span style="color: #000000;">63</span><span style="color: #000000; font-weight: bold;">%</span><span style="color: #7a0874; font-weight: bold;">&#41;</span></pre></div></div>

<h4>手順5：インストールする</h4>
<p>出来上がった mylol.xpi を、Firefox のウィンドウにドラッグアンドドロップして下さい。<br />
おしまい。<br />
こうすることで、</p>
<ol>
<li>スペースキーを押す（押したまま）</li>
<li>目的のリンクにあてられたキーを押す</li>
<li>control キーを押しつつ、スペースキーを放す</li>
</ol>
<p>とすると、新しいタブを開くことが可能になります。以上おしまい。</p>
]]></content:encoded>
			<wfw:commentRss>http://k-ui.jp/?feed=rss2&amp;p=97</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Emacs キーバインドに関する Windows と Mac OSX の差異</title>
		<link>http://k-ui.jp/?p=88</link>
		<comments>http://k-ui.jp/?p=88#comments</comments>
		<pubDate>Sun, 28 Dec 2008 14:42:03 +0000</pubDate>
		<dc:creator>k-ui</dc:creator>
				<category><![CDATA[ほげほげ]]></category>
		<category><![CDATA[書いてみた]]></category>
		<category><![CDATA[emacs]]></category>
		<category><![CDATA[keyfake]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[xkeymacs]]></category>

		<guid isPermaLink="false">http://k-ui.jp/?p=88</guid>
		<description><![CDATA[Mac OS X が手元に来て7ヶ月くらい経とうとしてる。そろそろ軽度（！？）Emacs 病を患っている人間から見た Windows と Mac OS X の違いをまとめてみた。
具体的には、Emacs に関わる話として [...]]]></description>
			<content:encoded><![CDATA[<p>Mac OS X が手元に来て7ヶ月くらい経とうとしてる。そろそろ軽度（！？）Emacs 病を患っている人間から見た Windows と Mac OS X の違いをまとめてみた。</p>
<p>具体的には、Emacs に関わる話としては、</p>
<ul>
<li>Emacs っぽいエディターについて（?）</li>
<li>普段の GUI 操作において、Emacs キーバインドがどのくらい通用するか（?）</li>
</ul>
<p>という話があります。</p>
<p>しかし?って他探せば幾らでも記事あるだろうから、今回は言及しません。。。というかよくわかりません。普段からローカル環境で開発せず、研究室の Linux サーバや、自宅サーバで開発をしているので、ローカル環境でエディター使わない。</p>
<p>今回は?の話を書いて行こうと思います。少し分かりにくいけど、Windows の話を読めば何となく分かるはず。C-p でフォーカスを上に移動させたり、C-m が改行だったり、C-Space がマークセットだったり、M-v で１ページ分スクロールできたり、といった操作を、webブラウザや、ファイラなどでも使うことです。</p>
<h3>Windows</h3>
<p>まずそもそも標準では全くサポートされていません。?を実現させる為には、 <a href="http://mayu.sourceforge.net/">窓使いの憂鬱</a>、<a href="http://www.cam.hi-ho.ne.jp/oishi/">Xkeymacs</a>などのソフトウェアが必要になります。以下、Windows 上での Emacs キーバインド環境の特徴。</p>
<ul>
<li>サポートしている Emacs キーバインド多い！マークセットできるのは windows だけ（？）。C-x から始まる２ストロークキーバインドに対応してるのも特徴。</li>
<li>アプリケーションによって、emacsキーバインドを有効にさせるか否かを設定することが可能。ちょうべんり</li>
<li>時々入力キーをフックし損ねて大変なことに（例：C-nでスクロールしようと連打 → フックし損ねまくる → 新規ウィンドウ大量生成 → はんのうがない　ただの　はこ　のようだ）</li>
<li>時々挙動へん。Xkeymacs に限った話ですが、例えば「C-m と入力すると、Ctrl+Return の入力になってる。」とか、「『Shift+Tab』と入力しようと S-C-i とタイプする→Shift キーがロックされて解除できなくなる」など</li>
<li>MS Office と相性悪過ぎ。ごくごくタマに Office 落ちる。</li>
<li>MS IMEと相性悪い。（ので、MS IME の時は無効化し、MS IME 自体のキーバイン変更機能を利用）</li>
</ul>
<p>実は、VISTA になってからの状況がよくわかってません。とりあえず Xkeymacs は、VISTA 上で問題なく使えました。</p>
<h3>Mac OS X</h3>
<p>私が知っている限りだと、二通り存在します。</p>
<ul>
<li>標準のemacsキーバインド（ただしテキストエリア限定）</li>
<li><a href="http://www.pqrs.org/tekezo/macosx/keyremap4macbook/index.html.ja">KeyRemap4MacBook</a></li>
</ul>
<p>標準の方も、素晴らしい点があるのですが、テキストエリア限定なのが残念。</p>
<p>KeyRemap4MacBook の特徴を下でまとめます。</p>
<ul>
<li>安定してる。フックし損ねた経験無し。</li>
<li>マークセットできない。。。（標準だと C-i で出来た記憶があるのですが。）</li>
<li>特定ソフトウェアのときは、無効化するという機能がついて入るのですが、無効化できるソフトウェアが予め決まっている。ソースコード書き換えれば可能なようです。iTerm 使えない。</li>
<li>日本語入力システムに対する Emacs キーバインドは、入力対象のソフトウェアに依存してしまう（例：Terminal.app の時だけ Emacs キーバインドを無効化すると、Terminal.app への日本語入力時も無効化されてしまう）。凄く困ってる。</li>
</ul>
<p>最後のは、OS の構造上仕方の無い問題なんでしょうかね。。。</p>
<h3>ついでに Linux（GNOME）</h3>
<p><a href="http://www.eml.ele.cst.nihon-u.ac.jp/~momma/wiki/wiki.cgi/Ubuntu/Gnome%E3%81%A7Emacs%E3%82%AD%E3%83%BC%E3%83%90%E3%82%A4%E3%83%B3%E3%83%89.html">GNOME の標準機能（要設定）</a>、<a href="http://www.geocities.co.jp/SiliconValley-Bay/7584/keyfake/">keyfake</a> の二通り。</p>
<p>GNOME の標準機能は、Mac OS X の標準機能と似た感じ。テキストエリア限定。</p>
<p>keyfake は。。。うごかにあ！フツーにコンパイルしちゃダメなのかな。</p>
<h3>まとめ</h3>
<p>Windows、Mac OS X、Linux(GNOME) における Emacs キーバインドの対応状況を確認しました。</p>
<dl>
<dt>Windows</dt>
<dd>不安定だけど多機能、マークセットできる</dd>
<dt>Mac OS X</dt>
<dd>安定してる。日本語入力システム、他アプリケーションとの兼ね合いがうまくいってない</dd>
<dt>Linux(GNOME)
<dt>
<dd>が、がんばれ！しかし皮肉ですね。。。</dd>
</dl>
<p>ということで、Windows が一番好きです。</p>
<h3>しかし。。。</h3>
<p>xkeymacs, 窓使いの憂鬱、KeyRemap4MacBook、keyfake のいずれも日本人が開発してる。。。？HENTAI！HENTAI！HENTAI！</p>
]]></content:encoded>
			<wfw:commentRss>http://k-ui.jp/?feed=rss2&amp;p=88</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ruby でパイプラインな HTTP リクエスト</title>
		<link>http://k-ui.jp/?p=75</link>
		<comments>http://k-ui.jp/?p=75#comments</comments>
		<pubDate>Sat, 25 Oct 2008 19:55:59 +0000</pubDate>
		<dc:creator>k-ui</dc:creator>
				<category><![CDATA[ほげほげ]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[pipelining]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://k-ui.jp/?p=75</guid>
		<description><![CDATA[HTTP/1.1 の同時接続数について &#8211; daily dayflower をみて「おお、こんな事出来たのか。pipelining すげぇ」と思い、Ruby でこれやるのにはどうしたらいいのか 404 Blo [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://d.hatena.ne.jp/dayflower/20081024/1224830945">HTTP/1.1 の同時接続数について &#8211; daily dayflower</a> をみて「おお、こんな事出来たのか。pipelining すげぇ」と思い、Ruby でこれやるのにはどうしたらいいのか <a href="http://blog.livedoor.jp/dankogai/archives/50719947.html">404 Blog Not Found:HTTPサーバーのパイプライン対応</a> を参考に考えてみました。</p>
<p>どうやら、Net::HTTP は、HTTP プロトコルのパイプライン処理をできるようになってないようす。その為、Net::HTTP の拡張が必要になりました。</p>
<h3>メインコード</h3>
<p><a href="http://blog.livedoor.jp/dankogai/archives/50719947.html">404 Blog Not Found:HTTPサーバーのパイプライン対応</a>　のパイプラインの例を ruby コード化するとこんな感じ。</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">&quot;net/http&quot;</span>
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">&quot;pipelinig_http.rb&quot;</span> <span style="color:#008000; font-style:italic;"># Net::HTTP の拡張</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">def</span> main
&nbsp;
  host = <span style="color:#996600;">'b.hatena.ne.jp'</span>
  paths = <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">'/'</span>,<span style="color:#996600;">'/hotentry'</span>, <span style="color:#996600;">'/news'</span>, <span style="color:#996600;">'/entrylist?sort=hot'</span><span style="color:#006600; font-weight:bold;">&#93;</span>
&nbsp;
  <span style="color:#6666ff; font-weight:bold;">Net::HTTP</span>.<span style="color:#9900CC;">start</span><span style="color:#006600; font-weight:bold;">&#40;</span>host<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>http<span style="color:#006600; font-weight:bold;">|</span>
&nbsp;
    <span style="color:#008000; font-style:italic;"># リクエストの送信</span>
    paths.<span style="color:#9900CC;">each</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>path<span style="color:#006600; font-weight:bold;">|</span>
      req = <span style="color:#6666ff; font-weight:bold;">Net::HTTP::Head</span>.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span>path<span style="color:#006600; font-weight:bold;">&#41;</span>
      r_print req
      http.<span style="color:#9900CC;">just_request</span><span style="color:#006600; font-weight:bold;">&#40;</span>req<span style="color:#006600; font-weight:bold;">&#41;</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
    <span style="color:#008000; font-style:italic;"># レスポンスの取得</span>
    <span style="color:#9966CC; font-weight:bold;">while</span> res = http.<span style="color:#9900CC;">fetch_response</span>
      r_print res
    <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
  <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#008000; font-style:italic;"># リクエストとレスポンスのヘッダを出力する</span>
<span style="color:#9966CC; font-weight:bold;">def</span> r_print<span style="color:#006600; font-weight:bold;">&#40;</span>r<span style="color:#006600; font-weight:bold;">&#41;</span>
  <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;##### #{r.class.to_s} #####&quot;</span>
    r.<span style="color:#9900CC;">each</span><span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">|</span>k,v<span style="color:#006600; font-weight:bold;">|</span> <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;%15s: %s&quot;</span> <span style="color:#006600; font-weight:bold;">%</span> <span style="color:#006600; font-weight:bold;">&#91;</span>k,v<span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#125;</span>
  <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;&quot;</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
main <span style="color:#9966CC; font-weight:bold;">if</span> <span style="color:#0000FF; font-weight:bold;">__FILE__</span> == $<span style="color:#006666;">0</span></pre></div></div>

<p>上記のコードで、require されてる pipelining_http.rb は、今回のために用意したファイルで、次に示す内容になっています。</p>
<h3>パイプライン処理のための Net::HTTP の拡張　pipelining_http.rb</h3>
<p>Net::HTTP#just_request, Net::HTTP#fetch_response は、次のように拡張される。実質、Net::HTTP#request を二つに分断した感じなってます。一応アップロードしておく。また今回の例では HEAD リクエストしかしていませんが、GETもPUTもできるはずです。（PUTは未確認）</p>
<p><a href="http://k-ui.jp/dl/pipelining_http-0.1.tar.gz">pipelining_http-0.1.tar.gz</a></p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#9966CC; font-weight:bold;">class</span> <span style="color:#6666ff; font-weight:bold;">Net::HTTP</span>
&nbsp;
  <span style="color:#9966CC; font-weight:bold;">def</span> just_request<span style="color:#006600; font-weight:bold;">&#40;</span>req, body=<span style="color:#0000FF; font-weight:bold;">nil</span><span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
    <span style="color:#0066ff; font-weight:bold;">@req_cue</span> <span style="color:#006600; font-weight:bold;">||</span>= <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006600; font-weight:bold;">&#93;</span>
    <span style="color:#0066ff; font-weight:bold;">@req_cue</span> <span style="color:#006600; font-weight:bold;">&lt;&lt;</span> req
&nbsp;
    <span style="color:#9966CC; font-weight:bold;">unless</span> started?
      start <span style="color:#006600; font-weight:bold;">&#123;</span>
        req<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">'connection'</span><span style="color:#006600; font-weight:bold;">&#93;</span> <span style="color:#006600; font-weight:bold;">||</span>= <span style="color:#996600;">'close'</span>
        <span style="color:#0000FF; font-weight:bold;">return</span> request<span style="color:#006600; font-weight:bold;">&#40;</span>req, body, <span style="color:#006600; font-weight:bold;">&amp;</span>block<span style="color:#006600; font-weight:bold;">&#41;</span>
      <span style="color:#006600; font-weight:bold;">&#125;</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
    <span style="color:#9966CC; font-weight:bold;">if</span> proxy_user<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
      <span style="color:#9966CC; font-weight:bold;">unless</span> use_ssl?
        req.<span style="color:#9900CC;">proxy_basic_auth</span> proxy_user<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>, proxy_pass<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
      <span style="color:#9966CC; font-weight:bold;">end</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
    req.<span style="color:#9900CC;">set_body_internal</span> body
    begin_transport<span style="color:#006600; font-weight:bold;">&#40;</span>req<span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
    req.<span style="color:#CC0066; font-weight:bold;">exec</span><span style="color:#006600; font-weight:bold;">&#40;</span>@socket, <span style="color:#0066ff; font-weight:bold;">@curr_http_version</span>, edit_path<span style="color:#006600; font-weight:bold;">&#40;</span>req.<span style="color:#9900CC;">path</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
  <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
  <span style="color:#9966CC; font-weight:bold;">def</span> fetch_response
&nbsp;
    <span style="color:#9966CC; font-weight:bold;">if</span> <span style="color:#0066ff; font-weight:bold;">@req_cue</span>.<span style="color:#0000FF; font-weight:bold;">nil</span>? <span style="color:#9966CC; font-weight:bold;">or</span> <span style="color:#0066ff; font-weight:bold;">@req_cue</span>.<span style="color:#9900CC;">empty</span>?
      end_transport<span style="color:#006600; font-weight:bold;">&#40;</span>@last_request, <span style="color:#0066ff; font-weight:bold;">@last_response</span><span style="color:#006600; font-weight:bold;">&#41;</span>
      <span style="color:#0000FF; font-weight:bold;">return</span> <span style="color:#0000FF; font-weight:bold;">nil</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
    <span style="color:#0066ff; font-weight:bold;">@last_request</span> = <span style="color:#006600; font-weight:bold;">&#40;</span>req = <span style="color:#0066ff; font-weight:bold;">@req_cue</span>.<span style="color:#9900CC;">shift</span><span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
    <span style="color:#9966CC; font-weight:bold;">begin</span>
      <span style="color:#0066ff; font-weight:bold;">@last_response</span> = <span style="color:#006600; font-weight:bold;">&#40;</span>res = <span style="color:#6666ff; font-weight:bold;">Net::HTTPResponse</span>.<span style="color:#9900CC;">read_new</span><span style="color:#006600; font-weight:bold;">&#40;</span>@socket<span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
    <span style="color:#9966CC; font-weight:bold;">end</span> <span style="color:#9966CC; font-weight:bold;">while</span> res.<span style="color:#9900CC;">kind_of</span>?<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#6666ff; font-weight:bold;">Net::HTTPContinue</span><span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
    res.<span style="color:#9900CC;">reading_body</span><span style="color:#006600; font-weight:bold;">&#40;</span>@socket, req.<span style="color:#9900CC;">response_body_permitted</span>?<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span>
      <span style="color:#9966CC; font-weight:bold;">yield</span> res <span style="color:#9966CC; font-weight:bold;">if</span> block_given?
    <span style="color:#006600; font-weight:bold;">&#125;</span>
&nbsp;
    res
  <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>

<p>個人的に、end_transport のあたりの処理が気に入りません。要改善。</p>
<h3>実行結果</h3>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">##### Net::HTTP::Head #####</span>
         accept: <span style="color: #000000; font-weight: bold;">*/*</span>
&nbsp;
<span style="color: #666666; font-style: italic;">##### Net::HTTP::Head #####</span>
         accept: <span style="color: #000000; font-weight: bold;">*/*</span>
&nbsp;
<span style="color: #666666; font-style: italic;">##### Net::HTTP::Head #####</span>
         accept: <span style="color: #000000; font-weight: bold;">*/*</span>
&nbsp;
<span style="color: #666666; font-style: italic;">##### Net::HTTP::Head #####</span>
         accept: <span style="color: #000000; font-weight: bold;">*/*</span>
&nbsp;
<span style="color: #666666; font-style: italic;">##### Net::HTTPOK #####</span>
           vary: Accept-Encoding
            via: <span style="color: #000000;">1.0</span> squid.hatena.ne.jp:<span style="color: #000000;">3128</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span>squid<span style="color: #000000; font-weight: bold;">/</span>2.6.STABLE14<span style="color: #7a0874; font-weight: bold;">&#41;</span>
   content-type: text<span style="color: #000000; font-weight: bold;">/</span>html; <span style="color: #007800;">charset</span>=utf-<span style="color: #000000;">8</span>
           <span style="color: #c20cb9; font-weight: bold;">date</span>: Sat, <span style="color: #000000;">25</span> Oct <span style="color: #000000;">2008</span> <span style="color: #000000;">20</span>:01:<span style="color: #000000;">48</span> GMT
         server: Apache<span style="color: #000000; font-weight: bold;">/</span>2.2.3 <span style="color: #7a0874; font-weight: bold;">&#40;</span>CentOS<span style="color: #7a0874; font-weight: bold;">&#41;</span>
     set-cookie: <span style="color: #007800;">b</span>=$<span style="color: #000000;">1</span><span style="color: #007800;">$edWQVbYY</span>$4h0bIVtR7RvBTX3ifNcOF1; <span style="color: #007800;">path</span>=<span style="color: #000000; font-weight: bold;">/</span>; <span style="color: #007800;">expires</span>=Fri, <span style="color: #000000;">20</span>-Oct-<span style="color: #000000;">28</span> <span style="color: #000000;">20</span>:01:<span style="color: #000000;">48</span> GMT; <span style="color: #007800;">domain</span>=.hatena.ne.jp
 content-length: <span style="color: #000000;">63501</span>
            age: <span style="color: #000000;">588</span>
    x-framework: Hatena<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">2.1</span>
&nbsp;
<span style="color: #666666; font-style: italic;">##### Net::HTTPOK #####</span>
           vary: Accept-Encoding
            via: <span style="color: #000000;">1.0</span> squid.hatena.ne.jp:<span style="color: #000000;">3128</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span>squid<span style="color: #000000; font-weight: bold;">/</span>2.6.STABLE14<span style="color: #7a0874; font-weight: bold;">&#41;</span>
   content-type: text<span style="color: #000000; font-weight: bold;">/</span>html; <span style="color: #007800;">charset</span>=utf-<span style="color: #000000;">8</span>
           <span style="color: #c20cb9; font-weight: bold;">date</span>: Sat, <span style="color: #000000;">25</span> Oct <span style="color: #000000;">2008</span> <span style="color: #000000;">20</span>:01:<span style="color: #000000;">48</span> GMT
         server: Apache<span style="color: #000000; font-weight: bold;">/</span>2.2.3 <span style="color: #7a0874; font-weight: bold;">&#40;</span>CentOS<span style="color: #7a0874; font-weight: bold;">&#41;</span>
     set-cookie: <span style="color: #007800;">b</span>=$<span style="color: #000000;">1</span><span style="color: #007800;">$qYZ0MfS0</span><span style="color: #007800;">$aCDFrIOKpp8HayJftFjt</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">1</span>; <span style="color: #007800;">path</span>=<span style="color: #000000; font-weight: bold;">/</span>; <span style="color: #007800;">expires</span>=Fri, <span style="color: #000000;">20</span>-Oct-<span style="color: #000000;">28</span> <span style="color: #000000;">20</span>:01:<span style="color: #000000;">48</span> GMT; <span style="color: #007800;">domain</span>=.hatena.ne.jp
 content-length: <span style="color: #000000;">103301</span>
            age: <span style="color: #000000;">1163</span>
    x-framework: Hatena<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">2.1</span>
&nbsp;
<span style="color: #666666; font-style: italic;">##### Net::HTTPOK #####</span>
           vary: Accept-Encoding
            via: <span style="color: #000000;">1.0</span> squid.hatena.ne.jp:<span style="color: #000000;">3128</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span>squid<span style="color: #000000; font-weight: bold;">/</span>2.6.STABLE14<span style="color: #7a0874; font-weight: bold;">&#41;</span>
   content-type: text<span style="color: #000000; font-weight: bold;">/</span>html; <span style="color: #007800;">charset</span>=utf-<span style="color: #000000;">8</span>
           <span style="color: #c20cb9; font-weight: bold;">date</span>: Sat, <span style="color: #000000;">25</span> Oct <span style="color: #000000;">2008</span> <span style="color: #000000;">20</span>:01:<span style="color: #000000;">48</span> GMT
         server: Apache<span style="color: #000000; font-weight: bold;">/</span>2.2.3 <span style="color: #7a0874; font-weight: bold;">&#40;</span>CentOS<span style="color: #7a0874; font-weight: bold;">&#41;</span>
     set-cookie: <span style="color: #007800;">b</span>=$<span style="color: #000000;">1</span>$00vjav3o<span style="color: #007800;">$InTi7h2XFjwllpcFJLnv60</span>; <span style="color: #007800;">path</span>=<span style="color: #000000; font-weight: bold;">/</span>; <span style="color: #007800;">expires</span>=Fri, <span style="color: #000000;">20</span>-Oct-<span style="color: #000000;">28</span> <span style="color: #000000;">20</span>:01:<span style="color: #000000;">48</span> GMT; <span style="color: #007800;">domain</span>=.hatena.ne.jp
 content-length: <span style="color: #000000;">52390</span>
            age: <span style="color: #000000;">2259</span>
    x-framework: Hatena<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">2.1</span>
&nbsp;
<span style="color: #666666; font-style: italic;">##### Net::HTTPOK #####</span>
           vary: Accept-Encoding
            via: <span style="color: #000000;">1.0</span> squid.hatena.ne.jp:<span style="color: #000000;">3128</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span>squid<span style="color: #000000; font-weight: bold;">/</span>2.6.STABLE14<span style="color: #7a0874; font-weight: bold;">&#41;</span>
   content-type: text<span style="color: #000000; font-weight: bold;">/</span>html; <span style="color: #007800;">charset</span>=utf-<span style="color: #000000;">8</span>
           <span style="color: #c20cb9; font-weight: bold;">date</span>: Sat, <span style="color: #000000;">25</span> Oct <span style="color: #000000;">2008</span> <span style="color: #000000;">20</span>:01:<span style="color: #000000;">48</span> GMT
         server: Apache<span style="color: #000000; font-weight: bold;">/</span>2.2.3 <span style="color: #7a0874; font-weight: bold;">&#40;</span>CentOS<span style="color: #7a0874; font-weight: bold;">&#41;</span>
     set-cookie: <span style="color: #007800;">b</span>=$<span style="color: #000000;">1</span><span style="color: #007800;">$IZcB88yy</span><span style="color: #007800;">$I2jjsa5SWRPLEBT4saLNI</span>.; <span style="color: #007800;">path</span>=<span style="color: #000000; font-weight: bold;">/</span>; <span style="color: #007800;">expires</span>=Fri, <span style="color: #000000;">20</span>-Oct-<span style="color: #000000;">28</span> <span style="color: #000000;">20</span>:01:<span style="color: #000000;">48</span> GMT; <span style="color: #007800;">domain</span>=.hatena.ne.jp
 content-length: <span style="color: #000000;">103620</span>
            age: <span style="color: #000000;">2203</span>
    x-framework: Hatena<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">2.1</span></pre></div></div>

<p>以上でした。</p>
]]></content:encoded>
			<wfw:commentRss>http://k-ui.jp/?feed=rss2&amp;p=75</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fedora 9 に mpg123 をインストール</title>
		<link>http://k-ui.jp/?p=69</link>
		<comments>http://k-ui.jp/?p=69#comments</comments>
		<pubDate>Tue, 21 Oct 2008 12:35:53 +0000</pubDate>
		<dc:creator>k-ui</dc:creator>
				<category><![CDATA[設定]]></category>
		<category><![CDATA[alsa]]></category>
		<category><![CDATA[fedora]]></category>
		<category><![CDATA[gnome]]></category>
		<category><![CDATA[mpg123]]></category>
		<category><![CDATA[rpm]]></category>
		<category><![CDATA[yum]]></category>

		<guid isPermaLink="false">http://k-ui.jp/?p=69</guid>
		<description><![CDATA[Fedora 9 に mpg123 入れるのに，

$ sudo yum install mpg123

でいけると思ってた．．．結果は

Loaded plugins: refresh-packagekit
Warni [...]]]></description>
			<content:encoded><![CDATA[<p>Fedora 9 に mpg123 入れるのに，</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> yum <span style="color: #c20cb9; font-weight: bold;">install</span> mpg123</pre></div></div>

<p>でいけると思ってた．．．結果は</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">Loaded plugins: refresh-packagekit
Warning: No matches found <span style="color: #000000; font-weight: bold;">for</span>: mpg123
No Matches found
$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> yum search <span style="color: #000000;">123</span>
Loaded plugins: refresh-packagekit
================================= Matched: <span style="color: #000000;">123</span> =================================
flac123.i386 : Command-line program <span style="color: #000000; font-weight: bold;">for</span> playing FLAC audio files
pastebin.noarch : A collaborative debugging tool
vorbisgain.i386 : Adds tags to Ogg Vorbis files to adjust the volume</pre></div></div>

<p>どうやら yum には頼れないようです． ってか flac123 があって mpg123 が無いのって何なんだろう．．．納得いかない．</p>
<p>ということで，<a href="http://rpm.pbone.net/index.php3/stat/4/idpl/8746924/com/mpg123-1.5.1-8.fc9.i386.rpm.html">RPM Search で見つけた mpg123 の RPM パッケージ</a>をインストールすることをする．mpg123 をインストールするに当たって，mpg123 が必要としているパッケージもインストールする．</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> yum <span style="color: #c20cb9; font-weight: bold;">install</span> arts portaudio
$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> rpm <span style="color: #660033;">-i</span> <span style="color: #ff0000;">'ftp://ftp.pbone.net/mirror/atrpms.net/f9-i386/atrpms/stable/mpg123-1.5.1-8.fc9.i386.rpm'</span>
$ mpg123 <span style="color: #ff0000;">'http://www.nullsleep.com/mp3/8bp077-01-nullsleep-her_lazer_light_eyes.mp3'</span></pre></div></div>

<p><strong>．．．．鳴らない．．．？</strong></p>
<p>と思ったら音量が最小だったという罠．適切な音量を設定して再トライしたところ，問題なく動きました！ってか Gnome 使うと，ALSA から音量のコントロールできないのね．どうしたらいいんだろ．</p>
]]></content:encoded>
			<wfw:commentRss>http://k-ui.jp/?feed=rss2&amp;p=69</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://www.nullsleep.com/mp3/8bp077-01-nullsleep-her_lazer_light_eyes.mp3" length="5212288" type="audio/mpeg" />
		</item>
	</channel>
</rss>
