<?xml version="1.0" encoding="utf-8" ?>


<?xml-stylesheet href="http://d.hatena.ne.jp/sugyan/rssxsl" type="text/xsl" media="screen"?>


<rdf:RDF
	xmlns="http://purl.org/rss/1.0/"
	xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xml:lang="ja">
<channel rdf:about="http://d.hatena.ne.jp/sugyan/rss">
	<title>すぎゃーんメモ</title>
	<link>http://d.hatena.ne.jp/sugyan/</link>
	<description>すぎゃーんメモ</description>
	
	<dc:creator>sugyan</dc:creator>
	<dc:date>2010-02-08T01:21:21+09:00</dc:date>
	<items>
	<rdf:Seq>
		<rdf:li rdf:resource="http://d.hatena.ne.jp/sugyan/20100208/1265559679"/>
		<rdf:li rdf:resource="http://d.hatena.ne.jp/sugyan/20100201/1264954093"/>
		<rdf:li rdf:resource="http://d.hatena.ne.jp/sugyan/20100124/1264278791"/>
		<rdf:li rdf:resource="http://d.hatena.ne.jp/sugyan/20100122/1264098362"/>
		<rdf:li rdf:resource="http://d.hatena.ne.jp/sugyan/20100121/1264006578"/>
		<rdf:li rdf:resource="http://d.hatena.ne.jp/sugyan/20100121/1264000100"/>
	</rdf:Seq>
	</items>
</channel>



<item rdf:about="http://d.hatena.ne.jp/sugyan/20100208/1265559679">
	<title>さくらでtig.rbを動かす</title>
	<link>http://d.hatena.ne.jp/sugyan/20100208/1265559679</link>
	<description> さくらでirssi動かし始めた - すぎゃーんメモの続き。 せっかくirssiが動いたので次はtig.rbを。 基本的にlistは作っているけどほとんど使っていないので使用しない方向で。@hokacchaのものを使わせていただきます。 tig.rbのリストの有効/無効をnameで渡す - Webtech Walke</description>

	<content:encoded><![CDATA[
		<div class="section">
			<p><a href="http://d.hatena.ne.jp/sugyan/20100201/1264954093" target="_blank">さくらでirssi動かし始めた - すぎゃーんメモ</a>の続き。</p>
			<p>せっかくirssiが動いたので次はtig.rbを。</p>
			<p>基本的にlistは作っているけどほとんど使っていないので使用しない方向で。@hokacchaのものを使わせていただきます。</p>
			<p><a href="http://webtech-walker.com/archive/2010/01/29165709.html" target="_blank">  tig.rbのリストの有効/無効をnameで渡す - Webtech Walker</a></p>
<pre>
git clone git://github.com/hokaccha/net-irc.git
</pre>

			<p>でexample/tig.rbを動かす。</p>
			<br>

			<p>rubyのことはよく分かっていないけど、gemでjsonを入れないと動かないっぽい。</p>
			<p><a href="http://d.hatena.ne.jp/littlebuddha/20081218/1229615107" target="_blank">さくらサーバーに Rubygems をインストールする - make world</a></p>
<pre>
wget http://rubyforge.org/frs/download.php/60718/rubygems-1.3.5.tgz
tar zxvf rubygems-1.3.5.tgz
ruby setup.rb --prefix=$HOME/local
</pre>

			<p>でinstallできたっぽい。</p>
			<p>.zshrcに環境変数追加。</p>
<pre>
export RUBYLIB=$HOME/local/lib
export GEM_HOME=$HOME/local
</pre>

			<p>で、</p>
<pre>
gem18 install json
</pre>

			<p>でいけるかと思いきや、"chown/chgrp: Operation not permitted"とか言われて怒られる。</p>
			<p>もう一個、RB_USER_INSTALLという環境変数も必要っぽい。</p>
			<p><a href="http://playet.jugem.jp/?eid=56" target="_blank">さくらインターネットで、gem install すると「chown/chgrp: Operation not permitted 」と叱られる件の対応 | JAM☆ぱん</a></p>
<pre>
alias gem=&#34;RB_USER_INSTALL=1 gem18&#34;
gem install json
</pre>

			<p>と適当なalias書いてインストールした。</p>
			<br>

			<p>で、ようやくtig.rbを動かせる。</p>
<pre>
./tig.rb -n &#39;sugyan mentions&#39; &#38;
</pre>

			<p>とかで動かすらしい。</p>
			<p>$HOME/.irssi/configでは</p>
<pre>
servers = (
  {
    address = &#34;localhost&#34;;
    chatnet = &#34;TIG&#34;;
    port = &#34;16668&#34;;
    password = &#34;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#34;;
    use_ssl = &#34;no&#34;;
    ssl_verify = &#34;no&#34;;
    autoconnect = &#34;yes&#34;;
  },
...
);

chatnets = {
  TIG = { type = &#34;IRC&#34;; };
...
};
</pre>

			<p>とか書いておく。irssiで"/connect TIG"で接続。</p>
			<br>

			<p>出てきたエラー。</p>
<pre>
D, &#91;2010-02-08T00:12:01.107555 #5770] DEBUG -- : &#91;&#34;POST&#34;, &#34;https://twitter.com/account/update_profile.json&#34;]
E, &#91;2010-02-08T00:12:01.396691 #5770] ERROR -- : #&#60;OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed&#62;
D, &#91;2010-02-08T00:12:01.396827 #5770] DEBUG -- : SEND: :twittergw NOTICE #twitter :Fatal SSL error was happened #&#60;OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed&#62;
#&#60;OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed&#62;
</pre>

			<p>SSLで何かしようとして失敗しているようだ。色々ググって調べてみる。</p>
			<p><a href="http://subtech.g.hatena.ne.jp/cho45/20100114/1263441971" target="_blank">tig.rb のアップデート - 冬通りに消え行く制服ガールは、夢物語にリアルを求めない。 - subtech</a></p>
			<p><a href="http://aligach.net/diary/20100114.html" target="_blank">あーありがち - Ruby の SSL の証明書検証の失敗でハマっていた</a></p>
			<p><a href="http://blog.livedoor.jp/masahino123/archives/65025646.html" target="_blank">タイトル未定:Rubyでnet/httpsで通信 - livedoor Blog（ブログ）</a></p>
			<p><a href="http://www.ruby-lang.org/ja/man/html/net_https.html" target="_blank">net/https - Rubyリファレンスマニュアル</a></p>
			<p>よく分からなかったけど、証明書のパスを明示的に指定すると良いっぽい。さくらの環境では以下のように一行書き換えたら動くようになった。</p>
<pre class="syntax-highlight">
<span class="synType">diff --git a/examples/tig.rb b/examples/tig.rb</span>
index 6a282e1..69ef3ff 100755
<span class="synType">--- a/examples/tig.rb</span>
<span class="synType">+++ b/examples/tig.rb</span>
<span class="synStatement">@@ -2149,6 +2149,7 @@</span><span class="synPreProc"> class TwitterIrcGateway &#60; Net::IRC::Server::Session</span>
                        http.use_ssl     = true
                        http.cert_store = @cert_store
                        http.verify_mode = OpenSSL::SSL::VERIFY_PEER
<span class="synIdentifier">+                        http.ca_file = '/usr/local/share/certs/ca-root-nss.crt'</span>
                end
                http
        rescue =&#62; e
</pre>

			<p>ちゃんと何かを設定すればtig.rbを書き換えなくても動くようにできるのかな…</p>
		</div>
]]></content:encoded>
	<dc:creator>sugyan</dc:creator>
	<dc:date>2010-02-08T01:21:19+09:00</dc:date>
</item>
<item rdf:about="http://d.hatena.ne.jp/sugyan/20100201/1264954093">
	<title>[IRC]さくらでirssi動かし始めた</title>
	<link>http://d.hatena.ne.jp/sugyan/20100201/1264954093</link>
	<description> 多くの人が使ってる「さくらインターネット」がどんなものか、手を出してみようと思ってスタンダードで契約してみた。 root権限なくても、大抵のものはソースダウンロードして ./configure --prefix=$HOME/local make make install 的なことをすれば入れられるようだ。なる</description>

	<content:encoded><![CDATA[
		<div class="section">
			<p>多くの人が使ってる「さくらインターネット」がどんなものか、手を出してみようと思ってスタンダードで契約してみた。</p>
			<p>root権限なくても、大抵のものはソースダウンロードして</p>
<pre>
./configure --prefix=$HOME/local
make
make install
</pre>

			<p>的なことをすれば入れられるようだ。なるほどなるほど。</p>
			<p>local::libはもちろん、screen, zsh, vimなど導入。gitも入れた。</p>
			<p>で、irssiをここに入れて常時起動にしておいてみようと。tiarraは今のところまだ使わないで頑張ってみる方向で。</p>
			<br>

			<p>今までirssiを全然使いこなせていなかったのでせっかくの機会だし、とゴニョゴニョやってみた。</p>
			<ul>
				<li> 大抵の設定はコマンドから設定して/saveすれば保存される</li>
				<li> windowの配置は/layout saveしてから/save</li>
			</ul>
			<p>layoutはlayoutを保存するだけで再起動時に自動接続されるわけではない。</p>
			<p>再起動時に自動で繋ぎたい場合は、</p>
<pre>
/NETWORK ADD HOGE
/SERVER ADD -auto -network HOGE irc.hoge.fuga 6667
</pre>

			<p>とか設定しておくと、起動時に自動で接続されるようになるっぽい。</p>
<pre>
/CHANNEL ADD -auto #piyo HOGE
</pre>

			<p>とか設定しておくと、channelへのjoinも自動でやってくれるようになる。</p>
			<p><a href="http://www.irssi.org/documentation/startup#c3" target="_blank">Irssi - The client of the future</a></p>
			<p>まぁ上記のように設定して/saveすれば、$HOME/.irssi/configに下記のように保存されるようなので、あとはそれを参考に弄ればいいのかもしれない。</p>
<pre>
servers = (
  {
    ...
  },
  {
    address = &#34;irc.hoge.fuga&#34;;
    chatnet = &#34;HOGE&#34;;
    port = &#34;6667&#34;;
    password = &#34;hogefugapiyo&#34;;
    use_ssl = &#34;no&#34;;
    ssl_verify = &#34;no&#34;;
    autoconnect = &#34;yes&#34;;
  }
);
channels = (
  { ... },
  { name = &#34;#piyo&#34;; chatnet = &#34;HOGE&#34;; autojoin = &#34;yes&#34;; },
);
</pre>

			<br>

			<p>logを保存するための設定はこのへん？</p>
			<p><a href="http://www.irssi.org/documentation/startup#c8" target="_blank">Irssi - The client of the future</a></p>
			<p>acotieさんの記事も分かりやすくて参考になりました。</p>
			<p><a href="http://d.hatena.ne.jp/acotie/20080801/1217611718" target="_blank">A Guide to Efficiently Using Irssi and Screenを適当に和訳 - iDeaList::Writing</a></p>
			<br>

			<p>tig.rbとかも動かしておきたいけど今日はここまで。あとでやる。きっと@hokacchaの記事をみれば上手くいくはず。</p>
			<p><a href="http://webtech-walker.com/archive/2010/01" target="_blank">  2010  1月 - Webtech Walker</a></p>
		</div>
]]></content:encoded>
	<dc:creator>sugyan</dc:creator>
	<dc:date>2010-02-01T01:08:13+09:00</dc:date>
	<dc:subject>IRC</dc:subject>
</item>
<item rdf:about="http://d.hatena.ne.jp/sugyan/20100124/1264278791">
	<title>[ActionScript][wonderfl]ActionScriptで時計</title>
	<link>http://d.hatena.ne.jp/sugyan/20100124/1264278791</link>
	<description> 前回の1-4の、やり残し。 ブラウザで無料ではじめるActionScript 3.0 ―It’s a wonderfl world― 作者: 面白法人カヤック,フォークビッツ 出版社/メーカー: ワークスコーポレーション 発売日: 2009/12/19 メディア: 単行本 クリック: 45回 この商品を含むブログ (18件) を見</description>

	<content:encoded><![CDATA[
		<div class="section">
			<p><a href="http://d.hatena.ne.jp/sugyan/20100122/1264098362" target="_blank">前回</a>の1-4の、やり残し。</p>
			<div class="hatena-asin-detail">
  <a href="http://www.amazon.co.jp/exec/obidos/ASIN/4862670776/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/51IaCC25TGL._SL160_.jpg" class="hatena-asin-detail-image" alt="ブラウザで無料ではじめるActionScript 3.0 ―It's a wonderfl world―" title="ブラウザで無料ではじめるActionScript 3.0 ―It's a wonderfl world―"></a>
  <div class="hatena-asin-detail-info">
    <p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4862670776/hatena-hamazou-22/">ブラウザで無料ではじめるActionScript 3.0 ―It's a wonderfl world―</a></p>
    <ul>
      
      <li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%cc%cc%c7%f2%cb%a1%bf%cd%a5%ab%a5%e4%a5%c3%a5%af" class="keyword">面白法人カヤック</a>,<a href="http://d.hatena.ne.jp/keyword/%a5%d5%a5%a9%a1%bc%a5%af%a5%d3%a5%c3%a5%c4" class="keyword">フォークビッツ</a></li>
      
      <li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%a5%ef%a1%bc%a5%af%a5%b9%a5%b3%a1%bc%a5%dd%a5%ec%a1%bc%a5%b7%a5%e7%a5%f3" class="keyword">ワークスコーポレーション</a></li>
      
      <li><span class="hatena-asin-detail-label">発売日:</span> 2009/12/19</li>
                                                      <li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
      <li> <span class="hatena-asin-detail-label">クリック</span>: 45回</li>
      <li><a href="http://d.hatena.ne.jp/asin/4862670776" target="_blank">この商品を含むブログ (18件) を見る</a></li>
    </ul>
  </div>
  <div class="hatena-asin-detail-foot"></div>
</div>

			<br>

			<p>1-4では時計を作っていたのだけど、まだ自分で作ってみてなかったので作ってみた。</p>
			<p><a href="http://wonderfl.net/code/c4c8c81b0e93b14b3a2ab82e60278114aa04104c" target="_blank">時計を作ってみる | wonderfl build flash online</a></p>
			<p>要は適当なループで時刻をチェックし、時刻が変更されていたら表示を変えればいい、というだけ？</p>
			<p>ENTER_FRAME内でやるか、timerで間隔あけてチェックするかでマシンへの負荷が変わったりするのかも知れない。</p>
			<br>

			<p>あと前回覚えたビットマップエフェクトを使ってちょっとカッコよく数字が変化するようにしてみた。</p>
<pre class="syntax-highlight">
<span class="synComment">// forked from sugyan's 時計を作ってみる</span>
<span class="synIdentifier">package</span> {
    <span class="synIdentifier">import</span> <span class="synConstant">flash</span>.<span class="synConstant">display</span>.<span class="synConstant">Bitmap</span>;
    <span class="synIdentifier">import</span> <span class="synConstant">flash</span>.<span class="synConstant">display</span>.<span class="synType">BitmapData</span>;
    <span class="synIdentifier">import</span> <span class="synConstant">flash</span>.<span class="synConstant">display</span>.<span class="synConstant">Sprite</span>;
    <span class="synIdentifier">import</span> <span class="synConstant">flash</span>.<span class="synConstant">events</span>.<span class="synConstant">Event</span>;
    <span class="synIdentifier">import</span> <span class="synConstant">flash</span>.<span class="synType">filters</span>.<span class="synConstant">BitmapFilterQuality</span>;
    <span class="synIdentifier">import</span> <span class="synConstant">flash</span>.<span class="synType">filters</span>.<span class="synType">BlurFilter</span>;
    <span class="synIdentifier">import</span> <span class="synConstant">flash</span>.<span class="synConstant">geom</span>.<span class="synType">Point</span>;

    [SWF(<span class="synType">width</span>=<span class="synConstant">&#34;465&#34;</span>, <span class="synType">height</span>=<span class="synConstant">&#34;465&#34;</span>, <span class="synType">backgroundColor</span>=<span class="synConstant">&#34;0x000000&#34;</span>)]
    <span class="synIdentifier">public</span> <span class="synIdentifier">class</span> FlashTest <span class="synIdentifier">extends</span> <span class="synConstant">Sprite</span> {
        <span class="synIdentifier">private</span> <span class="synStatement">var</span> _prevH:<span class="synStatement">Number</span>;
        <span class="synIdentifier">private</span> <span class="synStatement">var</span> _prevM:<span class="synStatement">Number</span>;
        <span class="synIdentifier">private</span> <span class="synStatement">var</span> _prevS:<span class="synStatement">Number</span>;
        <span class="synIdentifier">private</span> <span class="synStatement">var</span> _texts:<span class="synStatement">Array</span> = [
            <span class="synStatement">new</span> MyText(  <span class="synConstant">1</span>, <span class="synConstant">120</span>),
            <span class="synStatement">new</span> MyText( <span class="synConstant">73</span>, <span class="synConstant">120</span>),
            <span class="synStatement">new</span> MyText(<span class="synConstant">161</span>, <span class="synConstant">120</span>),
            <span class="synStatement">new</span> MyText(<span class="synConstant">233</span>, <span class="synConstant">120</span>),
            <span class="synStatement">new</span> MyText(<span class="synConstant">321</span>, <span class="synConstant">120</span>),
            <span class="synStatement">new</span> MyText(<span class="synConstant">393</span>, <span class="synConstant">120</span>),
        ];
        <span class="synIdentifier">private</span> <span class="synStatement">var</span> _bmp:<span class="synConstant">Bitmap</span> = <span class="synStatement">new</span> <span class="synConstant">Bitmap</span>();
        <span class="synIdentifier">private</span> <span class="synStatement">var</span> _bmd:<span class="synType">BitmapData</span> = <span class="synStatement">new</span> <span class="synType">BitmapData</span>(<span class="synConstant">465</span>, <span class="synConstant">465</span>, <span class="synConstant">true</span>, <span class="synConstant">0xFFFFFF</span>);
        <span class="synIdentifier">private</span> <span class="synStatement">var</span> _filter:<span class="synType">BlurFilter</span> = <span class="synStatement">new</span> <span class="synType">BlurFilter</span>();
        
        <span class="synIdentifier">public</span> <span class="synIdentifier">function</span> FlashTest() {
            _bmp.<span class="synType">bitmapData</span> = _bmd;
            _filter.<span class="synStatement">quality</span> = <span class="synConstant">BitmapFilterQuality</span>.<span class="synType">HIGH</span>;
            <span class="synIdentifier">addChild</span>(_bmp);
            <span class="synStatement">var</span> colon1:MyText = <span class="synStatement">new</span> MyText(<span class="synConstant">130</span>, <span class="synConstant">110</span>, <span class="synConstant">&#34;:&#34;</span>);
            <span class="synStatement">var</span> colon2:MyText = <span class="synStatement">new</span> MyText(<span class="synConstant">290</span>, <span class="synConstant">110</span>, <span class="synConstant">&#34;:&#34;</span>);
            <span class="synIdentifier">addChild</span>(colon1);
            <span class="synIdentifier">addChild</span>(colon2);
            <span class="synStatement">for</span> (<span class="synStatement">var</span> i:<span class="synStatement">int</span> = <span class="synConstant">0</span>; i &#60; _texts.<span class="synType">length</span>; i++) {
                <span class="synIdentifier">addChild</span>(_texts[i]);
            }
            <span class="synIdentifier">addEventListener</span>(Event.ENTER_FRAME, <span class="synIdentifier">function</span> (event:Event):<span class="synConstant">void</span> <span class="synError">{</span>
                <span class="synStatement">var</span> <span class="synStatement">date</span>:<span class="synStatement">Date</span> = <span class="synStatement">new</span> <span class="synStatement">Date</span>();
                <span class="synStatement">var</span> second:<span class="synStatement">Number</span> = <span class="synStatement">date</span>.seconds;
                <span class="synStatement">var</span> minute:<span class="synStatement">Number</span> = <span class="synStatement">date</span>.minutes;
                <span class="synStatement">var</span> hour:<span class="synStatement">Number</span>   = <span class="synStatement">date</span>.hours;
                <span class="synStatement">if</span> (hour != _prevH) <span class="synError">{</span>
                    <span class="synStatement">var</span> h:<span class="synStatement">Number</span> = hour % <span class="synConstant">10</span>;
                    _changeText(_texts[<span class="synConstant">1</span>], h);
                    <span class="synStatement">if</span> (h != <span class="synConstant">0</span> || _texts[<span class="synConstant">0</span>].isEmpty()) <span class="synError">{</span>
                        _changeText(_texts[<span class="synConstant">0</span>], (hour - h) / <span class="synConstant">10</span>);
                    <span class="synError">}</span>
                    _prevH = hour;
                <span class="synError">}</span>
                <span class="synStatement">if</span> (minute != _prevM) <span class="synError">{</span>
                    <span class="synStatement">var</span> m:<span class="synStatement">Number</span> = minute % <span class="synConstant">10</span>;
                    _changeText(_texts[<span class="synConstant">3</span>], m);
                    <span class="synStatement">if</span> (m == <span class="synConstant">0</span> || _texts[<span class="synConstant">2</span>].isEmpty()) <span class="synError">{</span>
                        _changeText(_texts[<span class="synConstant">2</span>], (minute - m) / <span class="synConstant">10</span>);
                    <span class="synError">}</span>
                    _prevM = minute;
                <span class="synError">}</span>
                <span class="synStatement">if</span> (second != _prevS) <span class="synError">{</span>
                    <span class="synStatement">var</span> s:<span class="synStatement">Number</span> = second % <span class="synConstant">10</span>;
                    _changeText(_texts[<span class="synConstant">5</span>], s);
                    <span class="synStatement">if</span> (s == <span class="synConstant">0</span> || _texts[<span class="synConstant">4</span>].isEmpty()) <span class="synError">{</span>
                        _changeText(_texts[<span class="synConstant">4</span>], (second - s) / <span class="synConstant">10</span>);
                    <span class="synError">}</span>
                    _prevS = second;
                <span class="synError">}</span>
                _bmd.applyFilter(_bmd, _bmd.rect, <span class="synStatement">new</span> Point(<span class="synConstant">0</span>, <span class="synConstant">0</span>), _filter);
            <span class="synError">}</span>);
        }
        
        <span class="synIdentifier">private</span> <span class="synIdentifier">function</span> _changeText(<span class="synType">text</span>:MyText, num:<span class="synStatement">Number</span>):<span class="synConstant">void</span> {
            _bmd.<span class="synIdentifier">draw</span>(<span class="synType">text</span>);
            <span class="synType">text</span>.changeText(num);
        }
    }
}


<span class="synIdentifier">import</span> <span class="synConstant">flash</span>.<span class="synConstant">display</span>.<span class="synConstant">Sprite</span>;
<span class="synIdentifier">import</span> <span class="synConstant">flash</span>.<span class="synType">text</span>.<span class="synStatement">TextField</span>;
<span class="synIdentifier">import</span> <span class="synConstant">flash</span>.<span class="synType">text</span>.<span class="synStatement">TextFormat</span>;

<span class="synIdentifier">class</span> MyText <span class="synIdentifier">extends</span> <span class="synConstant">Sprite</span> {
    <span class="synIdentifier">private</span> <span class="synStatement">var</span> _text:<span class="synStatement">TextField</span> = <span class="synStatement">new</span> <span class="synStatement">TextField</span>();
    <span class="synIdentifier">public</span> <span class="synIdentifier">function</span> MyText(x:<span class="synStatement">Number</span>, y:<span class="synStatement">Number</span>, initText:<span class="synStatement">String</span> = <span class="synConstant">&#34;&#34;</span>) {
        <span class="synIdentifier">addChild</span>(_text);

        _text.<span class="synType">x</span> = <span class="synType">x</span>;
        _text.<span class="synType">y</span> = <span class="synType">y</span>;
        _text.<span class="synType">width</span> = <span class="synConstant">72</span>;
        _text.<span class="synType">background</span> = <span class="synConstant">false</span>;

        <span class="synStatement">var</span> format:<span class="synStatement">TextFormat</span> = <span class="synStatement">new</span> <span class="synStatement">TextFormat</span>();
        format.<span class="synType">color</span> = <span class="synConstant">0xFFFFFF</span>;
        format.<span class="synType">size</span> = <span class="synConstant">150</span>;
        _text.<span class="synType">defaultTextFormat</span> = format;

        _text.<span class="synType">text</span> = initText;
    }
    
    <span class="synIdentifier">public</span> <span class="synIdentifier">function</span> <span class="synIdentifier">isEmpty</span>():<span class="synStatement">Boolean</span> {
        <span class="synStatement">if</span> (_text.<span class="synType">text</span>.<span class="synType">length</span> &#62; <span class="synConstant">0</span>) {
            <span class="synStatement">return</span> <span class="synConstant">false</span>;
        }
        <span class="synStatement">return</span> <span class="synConstant">true</span>;
    }

    <span class="synIdentifier">public</span> <span class="synIdentifier">function</span> changeText(num:<span class="synStatement">Number</span>):<span class="synConstant">void</span> {
        _text.<span class="synType">text</span> = num.<span class="synType">toString</span>();
    }
}
</pre>

			<p>出来たもの -&#62; <a href="http://wonderfl.net/code/3619d903662dc5c197f050b844524704b04a25d5" target="_blank">forked from: 時計を作ってみる | wonderfl build flash online</a></p>
			<br>

			<p>なんかキレイなコードの書き方がわからないなー</p>
		</div>
]]></content:encoded>
	<dc:creator>sugyan</dc:creator>
	<dc:date>2010-01-24T05:33:11+09:00</dc:date>
	<dc:subject>ActionScript</dc:subject>
	<dc:subject>wonderfl</dc:subject>
</item>
<item rdf:about="http://d.hatena.ne.jp/sugyan/20100122/1264098362">
	<title>[ActionScript][wonderfl]ActionScriptでビットマップエフェクト</title>
	<link>http://d.hatena.ne.jp/sugyan/20100122/1264098362</link>
	<description> 昨日に引き続き、学習中。 ブラウザで無料ではじめるActionScript 3.0 ―It’s a wonderfl world― 作者: 面白法人カヤック,フォークビッツ 出版社/メーカー: ワークスコーポレーション 発売日: 2009/12/19 メディア: 単行本 クリック: 45回 この商品を含むブログ (18件) を</description>

	<content:encoded><![CDATA[
		<div class="section">
			<p><a href="http://d.hatena.ne.jp/sugyan/20100121/1264006578" target="_blank">昨日</a>に引き続き、学習中。</p>
			<div class="hatena-asin-detail">
  <a href="http://www.amazon.co.jp/exec/obidos/ASIN/4862670776/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/51IaCC25TGL._SL160_.jpg" class="hatena-asin-detail-image" alt="ブラウザで無料ではじめるActionScript 3.0 ―It's a wonderfl world―" title="ブラウザで無料ではじめるActionScript 3.0 ―It's a wonderfl world―"></a>
  <div class="hatena-asin-detail-info">
    <p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4862670776/hatena-hamazou-22/">ブラウザで無料ではじめるActionScript 3.0 ―It's a wonderfl world―</a></p>
    <ul>
      
      <li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%cc%cc%c7%f2%cb%a1%bf%cd%a5%ab%a5%e4%a5%c3%a5%af" class="keyword">面白法人カヤック</a>,<a href="http://d.hatena.ne.jp/keyword/%a5%d5%a5%a9%a1%bc%a5%af%a5%d3%a5%c3%a5%c4" class="keyword">フォークビッツ</a></li>
      
      <li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%a5%ef%a1%bc%a5%af%a5%b9%a5%b3%a1%bc%a5%dd%a5%ec%a1%bc%a5%b7%a5%e7%a5%f3" class="keyword">ワークスコーポレーション</a></li>
      
      <li><span class="hatena-asin-detail-label">発売日:</span> 2009/12/19</li>
                                                      <li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
      <li> <span class="hatena-asin-detail-label">クリック</span>: 45回</li>
      <li><a href="http://d.hatena.ne.jp/asin/4862670776" target="_blank">この商品を含むブログ (18件) を見る</a></li>
    </ul>
  </div>
  <div class="hatena-asin-detail-foot"></div>
</div>

			<p>今日は<a href="http://wonderfl.net/beginner/book/chapter1-4/" target="_blank">1-4 時計を作ろう</a>を読んだ。</p>
			<p>TimerEventはまだ触ったことがないからちょっとやってみたいと思ったんだけど、面白そうだと思ったのはビットマップエフェクト。</p>
			<p><a href="http://wonderfl.net/code/4dd2be0e761901cae9b3623e049413475e5552d7" target="_blank">Electrogram clock  | wonderfl build flash online</a></p>
			<p>このサンプルについての解説が載っていて、現れては消えていく線はビットマップエフェクトを使って表現されているそうな。</p>
<pre class="syntax-highlight">
<span class="synStatement">var</span> _bmp:<span class="synConstant">Bitmap</span> = <span class="synStatement">new</span> <span class="synConstant">Bitmap</span>();
<span class="synStatement">var</span> _bmd:<span class="synType">BitmapData</span> = <span class="synStatement">new</span> <span class="synType">BitmapData</span>(<span class="synConstant">465</span>, <span class="synConstant">465</span>, <span class="synConstant">false</span>, <span class="synConstant">0x000000</span>);
_bmp.<span class="synType">bitmapData</span> = _bmd;
</pre>

			<p>のようにしてBitMapDataインスタンスを登録したBitMapインスタンスを用意してaddChild()などで画面に追加、あとはBitmapDataインスタンスに対しdraw()メソッドで引数に渡したDisplayObjectのスナップショットをそこに描画したり、フィルタリングしたりできるらしい。</p>
			<br>

			<p><a href="http://wonderfl.net/code/4707252fc5757cd1f6f01e8cc3a2bdd7437f03fb" target="_blank">昨日書いた</a>マウスの動きを追従する円の残像のようなものを、線に対し連続でBlurFilterをかけることで表現できるのでは？と書いてみた。</p>
<pre class="syntax-highlight">
<span class="synComment">// forked from sugyan's forked from: flash on 2010-1-21</span>
<span class="synComment">// forked from sugyan's flash on 2010-1-21</span>
<span class="synComment">/* ドラッグ操作で滲むような線を描く */</span>
<span class="synIdentifier">package</span> {
    <span class="synIdentifier">import</span> <span class="synConstant">flash</span>.<span class="synType">filters</span>.<span class="synType">BlurFilter</span>;
    <span class="synIdentifier">import</span> <span class="synConstant">flash</span>.<span class="synConstant">display</span>.<span class="synType">BitmapData</span>;
    <span class="synIdentifier">import</span> <span class="synConstant">flash</span>.<span class="synConstant">display</span>.<span class="synConstant">Bitmap</span>;
    <span class="synIdentifier">import</span> <span class="synConstant">flash</span>.<span class="synConstant">display</span>.<span class="synConstant">Sprite</span>;
    <span class="synIdentifier">import</span> <span class="synConstant">flash</span>.<span class="synConstant">geom</span>.<span class="synType">Point</span>;
    <span class="synIdentifier">import</span> <span class="synConstant">flash</span>.<span class="synConstant">events</span>.<span class="synConstant">Event</span>;
    <span class="synIdentifier">import</span> <span class="synConstant">flash</span>.<span class="synConstant">events</span>.<span class="synConstant">MouseEvent</span>;

    <span class="synIdentifier">public</span> <span class="synIdentifier">class</span> FlashTest <span class="synIdentifier">extends</span> <span class="synConstant">Sprite</span> {
        <span class="synIdentifier">private</span> <span class="synStatement">var</span> _line:MyLine = <span class="synStatement">new</span> MyLine(<span class="synConstant">5</span>, <span class="synConstant">0xFF0000</span>);
        <span class="synIdentifier">private</span> <span class="synStatement">var</span> _bmp:<span class="synConstant">Bitmap</span> = <span class="synStatement">new</span> <span class="synConstant">Bitmap</span>();
        <span class="synIdentifier">private</span> <span class="synStatement">var</span> _bmd:<span class="synType">BitmapData</span> = <span class="synStatement">new</span> <span class="synType">BitmapData</span>(<span class="synConstant">465</span>, <span class="synConstant">465</span>, <span class="synConstant">false</span>, <span class="synConstant">0x000000</span>);
    	    
        <span class="synIdentifier">public</span> <span class="synIdentifier">function</span> FlashTest() {
            _bmp.<span class="synType">bitmapData</span> = _bmd;
            <span class="synIdentifier">addChild</span>(_bmp);
            <span class="synStatement">stage</span>.<span class="synIdentifier">addEventListener</span>(MouseEvent.MOUSE_DOWN, <span class="synIdentifier">function</span> (event:MouseEvent):<span class="synConstant">void</span> <span class="synError">{</span>
                _line.startDraw(<span class="synStatement">new</span> Point(event.stageX, event.stageY));
                <span class="synStatement">stage</span>.addEventListener(MouseEvent.MOUSE_MOVE, <span class="synStatement">onMouseMove</span>);
            <span class="synError">}</span>);
            <span class="synStatement">stage</span>.<span class="synIdentifier">addEventListener</span>(MouseEvent.MOUSE_UP, <span class="synIdentifier">function</span> (event:MouseEvent):<span class="synConstant">void</span> <span class="synError">{</span>
                <span class="synStatement">stage</span>.removeEventListener(MouseEvent.MOUSE_MOVE, <span class="synStatement">onMouseMove</span>);
            <span class="synError">}</span>);
            <span class="synStatement">stage</span>.<span class="synIdentifier">addEventListener</span>(Event.ENTER_FRAME, <span class="synStatement">onEnterFrame</span>);
        }

        <span class="synIdentifier">private</span> <span class="synIdentifier">function</span> <span class="synStatement">onMouseMove</span>(event:MouseEvent):<span class="synConstant">void</span> {
            _line.drawLine(<span class="synStatement">new</span> Point(event.stageX, event.stageY));
            _bmd.<span class="synIdentifier">draw</span>(_line);
        }
        
        <span class="synIdentifier">private</span> <span class="synIdentifier">function</span> <span class="synStatement">onEnterFrame</span>(event:Event):<span class="synConstant">void</span> {
            _bmd.<span class="synIdentifier">applyFilter</span>(_bmd, _bmd.rect, <span class="synStatement">new</span> Point(<span class="synConstant">0</span>, <span class="synConstant">0</span>), <span class="synStatement">new</span> BlurFilter(<span class="synConstant">5</span>, <span class="synConstant">5</span>));
        }
    }
}


<span class="synIdentifier">import</span> <span class="synConstant">flash</span>.<span class="synConstant">geom</span>.<span class="synType">Point</span>;
<span class="synIdentifier">import</span> <span class="synConstant">flash</span>.<span class="synConstant">display</span>.<span class="synConstant">Sprite</span>;

<span class="synIdentifier">class</span> MyLine <span class="synIdentifier">extends</span> <span class="synConstant">Sprite</span> {
    <span class="synIdentifier">private</span> <span class="synStatement">var</span> _prevX:<span class="synStatement">Number</span>;
    <span class="synIdentifier">private</span> <span class="synStatement">var</span> _prevY:<span class="synStatement">Number</span>;
    <span class="synIdentifier">private</span> <span class="synStatement">var</span> _thickness:<span class="synStatement">Number</span>;
    <span class="synIdentifier">private</span> <span class="synStatement">var</span> _color:<span class="synConstant">uint</span>;

    <span class="synIdentifier">public</span> <span class="synIdentifier">function</span> MyLine(thickness:<span class="synStatement">Number</span>, <span class="synType">color</span>:uint) {
        _thickness = <span class="synType">thickness</span>;
        _color = <span class="synType">color</span>;
    }
	
    <span class="synIdentifier">public</span> <span class="synIdentifier">function</span> startDraw(point:Point):<span class="synConstant">void</span> {
        _prevX = <span class="synType">point</span>.<span class="synType">x</span>;
        _prevY = <span class="synType">point</span>.<span class="synType">y</span>;
    }
	
    <span class="synIdentifier">public</span> <span class="synIdentifier">function</span> drawLine(point:Point):<span class="synConstant">void</span> {
        <span class="synConstant">graphics</span>.<span class="synStatement">clear</span>();
        <span class="synConstant">graphics</span>.<span class="synStatement">lineStyle</span>(_thickness, _color);
        <span class="synConstant">graphics</span>.<span class="synStatement">moveTo</span>(_prevX, _prevY);
        <span class="synConstant">graphics</span>.<span class="synStatement">lineTo</span>(point.x, point.y);
        _prevX = <span class="synType">point</span>.<span class="synType">x</span>;
        _prevY = <span class="synType">point</span>.<span class="synType">y</span>;
    }
}
</pre>

			<p>出来たのがコレ -&#62; <a href="http://wonderfl.net/code/6abe2b60361a424039b209bba0e7e900f2781dd0" target="_blank">forked from: forked from: flash on 2010-1-21 | wonderfl build flash online</a></p>
			<p>forkして作ったけど結局全然別物になってしまったｗ</p>
			<p>ボタンダウンしている時だけマウス移動に伴い連続で直線がBitmapDataに描画されていくのだけど、同時にENTER_FRAMEのイベントで常時BlurFilterでぼかしをかけているので時間が経つと消えていく。</p>
			<br>

			<p>なるほどー、こうやってエフェクトかけることができるんだ！</p>
			<p>BitmapFilterは他にも種類があるしBitmapDataにも色々なメソッドがある。組み合わせて使いこなすことでもっとたくさんのエフェクトができるようになるんだろうなー。</p>
			<p>せっかくなので時計っぽいものも作っておきたい。次は2章だ！！</p>
			<br>

			<h4> 追記</h4>
			<p>どうもマウスを速く動かすと線がカクカクしてしまう。</p>
			<p>隣の席にいる某天才に訊いてみたところ、MOUSE_MOVEでのイベントで描画するよりもENTER_FRAMEの方が優先度が高いはずなのでより滑らかに書けるのでは？と言われ、書き換えてみた。</p>
			<p><a href="http://wonderfl.net/code/82cde20db493e91b7b732233c51686d8be6be183" target="_blank">forked from: forked from: forked from: flash on 2010-1-21 | wonderfl build flash online</a></p>
			<p>結局あまり変わらなかった…残念。</p>
		</div>
]]></content:encoded>
	<dc:creator>sugyan</dc:creator>
	<dc:date>2010-01-22T03:26:02+09:00</dc:date>
	<dc:subject>ActionScript</dc:subject>
	<dc:subject>wonderfl</dc:subject>
</item>
<item rdf:about="http://d.hatena.ne.jp/sugyan/20100121/1264006578">
	<title>[ActionScript][wonderfl]wonderflでイージングアニメーション</title>
	<link>http://d.hatena.ne.jp/sugyan/20100121/1264006578</link>
	<description> ブラウザで無料ではじめるActionScript 3.0 ―It’s a wonderfl world― 作者: 面白法人カヤック,フォークビッツ 出版社/メーカー: ワークスコーポレーション 発売日: 2009/12/19 メディア: 単行本 クリック: 45回 この商品を含むブログ (18件) を見る 本が手元に届いて3日も</description>

	<content:encoded><![CDATA[
		<div class="section">
			<div class="hatena-asin-detail">
  <a href="http://www.amazon.co.jp/exec/obidos/ASIN/4862670776/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/51IaCC25TGL._SL160_.jpg" class="hatena-asin-detail-image" alt="ブラウザで無料ではじめるActionScript 3.0 ―It's a wonderfl world―" title="ブラウザで無料ではじめるActionScript 3.0 ―It's a wonderfl world―"></a>
  <div class="hatena-asin-detail-info">
    <p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4862670776/hatena-hamazou-22/">ブラウザで無料ではじめるActionScript 3.0 ―It's a wonderfl world―</a></p>
    <ul>
      
      <li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%cc%cc%c7%f2%cb%a1%bf%cd%a5%ab%a5%e4%a5%c3%a5%af" class="keyword">面白法人カヤック</a>,<a href="http://d.hatena.ne.jp/keyword/%a5%d5%a5%a9%a1%bc%a5%af%a5%d3%a5%c3%a5%c4" class="keyword">フォークビッツ</a></li>
      
      <li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%a5%ef%a1%bc%a5%af%a5%b9%a5%b3%a1%bc%a5%dd%a5%ec%a1%bc%a5%b7%a5%e7%a5%f3" class="keyword">ワークスコーポレーション</a></li>
      
      <li><span class="hatena-asin-detail-label">発売日:</span> 2009/12/19</li>
                                                      <li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
      <li> <span class="hatena-asin-detail-label">クリック</span>: 45回</li>
      <li><a href="http://d.hatena.ne.jp/asin/4862670776" target="_blank">この商品を含むブログ (18件) を見る</a></li>
    </ul>
  </div>
  <div class="hatena-asin-detail-foot"></div>
</div>

			<p>本が手元に届いて3日も経ってしまったけど、ようやく読み始めた！</p>
			<p>なんとなく既に分かっていそうな序盤を適度に読み飛ばしつつ…</p>
			<p>面白いと思ったのは<a href="http://wonderfl.net/beginner/book/chapter1-3/" target="_blank">1-3 インタラクティブな動きを学ぶ</a>での「タイムライン」の話。あまりこういう動きのあるものを作ったことがなかったし、イージングというのも用語は全然知らなくて、でも読んでみるとたしかに納得、簡単に書けそうだ！と思って自分でも<a href="http://wonderfl.net/" target="_blank">wonderfl</a>で書いてみた。</p>
<pre class="syntax-highlight">
<span class="synComment">/* マウスをゆっくり追従してくるサンプル */</span>
<span class="synIdentifier">package</span> {
    <span class="synIdentifier">import</span> <span class="synConstant">flash</span>.<span class="synConstant">events</span>.<span class="synConstant">Event</span>;
    <span class="synIdentifier">import</span> <span class="synConstant">flash</span>.<span class="synConstant">events</span>.<span class="synConstant">MouseEvent</span>;
    <span class="synIdentifier">import</span> <span class="synConstant">flash</span>.<span class="synConstant">display</span>.<span class="synConstant">Sprite</span>;

    <span class="synIdentifier">public</span> <span class="synIdentifier">class</span> FlashTest <span class="synIdentifier">extends</span> <span class="synConstant">Sprite</span> {
        <span class="synIdentifier">private</span> <span class="synStatement">var</span> _circle:MyCircle = <span class="synStatement">new</span> MyCircle();
        <span class="synIdentifier">private</span> <span class="synStatement">var</span> _targetX:<span class="synStatement">Number</span>;
        <span class="synIdentifier">private</span> <span class="synStatement">var</span> _targetY:<span class="synStatement">Number</span>;
        <span class="synIdentifier">private</span> <span class="synStatement">var</span> _easeRatio:<span class="synStatement">Number</span> = <span class="synConstant">0</span>.<span class="synConstant">1</span>;
    	    
        <span class="synIdentifier">public</span> <span class="synIdentifier">function</span> FlashTest() {
            <span class="synIdentifier">addChild</span>(_circle);
            <span class="synStatement">stage</span>.<span class="synIdentifier">addEventListener</span>(MouseEvent.MOUSE_MOVE, <span class="synStatement">onMouseMove</span>);
            <span class="synStatement">stage</span>.<span class="synIdentifier">addEventListener</span>(Event.ENTER_FRAME, onFrame);
        }
        
        <span class="synIdentifier">private</span> <span class="synIdentifier">function</span> <span class="synStatement">onMouseMove</span>(event:MouseEvent):<span class="synConstant">void</span> {
            _targetX = <span class="synConstant">event</span>.<span class="synType">stageX</span>;
            _targetY = <span class="synConstant">event</span>.<span class="synType">stageY</span>;
        }
        
        <span class="synIdentifier">private</span> <span class="synIdentifier">function</span> onFrame(event:Event):<span class="synConstant">void</span> {
            <span class="synStatement">var</span> dX:<span class="synStatement">Number</span> = _targetX - _circle.<span class="synType">x</span>;
            <span class="synStatement">var</span> dY:<span class="synStatement">Number</span> = _targetY - _circle.<span class="synType">y</span>;
        	    
            _circle.<span class="synType">x</span> += dX * _easeRatio;
            _circle.<span class="synType">y</span> += dY * _easeRatio;
        }
    }
}


<span class="synIdentifier">import</span> <span class="synConstant">flash</span>.<span class="synConstant">display</span>.<span class="synConstant">Sprite</span>;

<span class="synIdentifier">class</span> MyCircle <span class="synIdentifier">extends</span> <span class="synConstant">Sprite</span> {
    <span class="synIdentifier">public</span> <span class="synIdentifier">function</span> MyCircle() {
	<span class="synConstant">graphics</span>.<span class="synStatement">beginFill</span>(<span class="synConstant">0xFF0000</span>);
	<span class="synConstant">graphics</span>.<span class="synIdentifier">drawCircle</span>(<span class="synConstant">0</span>, <span class="synConstant">0</span>, <span class="synConstant">10</span>);
    }
}
</pre>

			<p>作品はここで動かせます -&#62; <a href="http://wonderfl.net/code/40b71e3b5c99153b420537be0471897d871ecaaf" target="_blank">flash on 2010-1-21 | wonderfl build flash online</a></p>
			<br>

			<p>たったこれだけで、円がマウスを"ゆっくり"追従してくるインタラクティブなアニメーションが書ける！なるほどー。</p>
			<p>ここからイージングの比率を場面に応じて変えたり、円の移動に残像のようなものを残すようにしたりすると面白そう。あとでやってみようっと</p>
			<br>

			<h4> 追記</h4>
			<p>残像を出して追従の軌跡がわかりやすくなるようにしてみた</p>
			<p><a href="http://wonderfl.net/code/4707252fc5757cd1f6f01e8cc3a2bdd7437f03fb" target="_blank">forked from: flash on 2010-1-21 | wonderfl build flash online</a></p>
		</div>
]]></content:encoded>
	<dc:creator>sugyan</dc:creator>
	<dc:date>2010-01-21T01:56:18+09:00</dc:date>
	<dc:subject>ActionScript</dc:subject>
	<dc:subject>wonderfl</dc:subject>
</item>
<item rdf:about="http://d.hatena.ne.jp/sugyan/20100121/1264000100">
	<title>[Zsh]screenのhardstatus設定と.zshrc</title>
	<link>http://d.hatena.ne.jp/sugyan/20100121/1264000100</link>
	<description> MacのTerminalでscreenを使ってる。ステータスラインは邪魔だから要らないと思っていたけど、さすがにwindowの数が多くなってくると把握できないし自分がどこを開いているのかもよく分からなくなってきたので、表示させることにした。 表示させるだけの設定は、.screenrcに </description>

	<content:encoded><![CDATA[
		<div class="section">
			<p>MacのTerminalでscreenを使ってる。ステータスラインは邪魔だから要らないと思っていたけど、さすがにwindowの数が多くなってくると把握できないし自分がどこを開いているのかもよく分からなくなってきたので、表示させることにした。</p>
			<p>表示させるだけの設定は、.screenrcに</p>
<pre class="syntax-highlight">
<span class="synStatement">hardstatus</span> <span class="synConstant">on</span>
</pre>

			<p>だけでOK。常時最下行に表示させる場合は</p>
<pre class="syntax-highlight">
<span class="synStatement">hardstatus</span> alwayslastline [string]
</pre>

			<p>とかで、[string]に表示させる内容を指定できる。</p>
			<p>ここに指定できる特殊文字列については"man screen"すれば載っているので頑張って読む。</p>
			<p>読みたくなくて検索するとよくヒットするのが下記の設定。</p>
			<p><a href="http://unknownplace.org/memo/2005/12/05/14/" target="_blank"> - unknownplace.org</a></p>
			<p>中身についてはここで解説されていたり。</p>
			<p><a href="http://d.hatena.ne.jp/urekat/20080325/1206434849" target="_blank">hardstatusを解読 - urekatのスカンク日記３</a></p>
			<p>自分はこれに倣って</p>
<pre class="syntax-highlight">
<span class="synStatement">hardstatus</span> alwayslastline <span class="synConstant">&#34;%-w%{= ck}%n %t%{-}%+w&#34;</span>
</pre>

			<p>と設定した。</p>
			<p>"%w"でウィンドウ番号とウィンドウ名を表示させられるけど、現在選択しているウィンドウだけ違う表示をするために"%-w"と"%+w"に分けて、カレントウィンドウは"%n %t"(number, title)で表示。カレントの部分だけ色を変更するように"%{= ck}"でシアン背景、黒文字表示。</p>
			<br>

			<p>で、%tで表示されるwindow titleは、何もしない状態だと普通シェル名(zsh使っていれば"zsh")が表示される。これは"\ek"と"\e\\"で挟んだ文字列で指定することができるらしい(よくわかってない)。</p>
<pre>
echo -ne &#34;&#92;ekhoge&#92;e&#92;&#92;&#34;
</pre>

			<p>といったものを.zshrcのpreexec()内で使うことで実行中のコマンド名に設定することができる。</p>
			<p><a href="http://ogawa.s18.xrea.com/tdiary/20080331.html#p02" target="_blank">メモの日々(2008-03-31)</a></p>
			<p>実行終了後も同じものが表示され続けるのがイヤだったので今度はprecmd()で元に戻す。</p>
			<p>しかしprecmd()内でechoを使われるとscreenじゃないときにもコマンド実行ごとに表示されてしまう。</p>
			<p>ので$TERM値によってprecmd()を使い分ける。</p>
<pre class="syntax-highlight">
<span class="synStatement">setopt</span> prompt_subst
<span class="synSpecial">RPROMPT</span><span class="synStatement">=</span><span class="synConstant">'%{${fg[green]}%}%/%{$reset_color%}'</span>
common_precmd() <span class="synStatement">{</span>
    <span class="synSpecial">LANG</span><span class="synStatement">=</span>en_US.UTF<span class="synConstant">-8</span> vcs_info
    LOADAVG<span class="synStatement">=</span>$<span class="synStatement">(</span>sysctl <span class="synStatement">-n</span> vm.loadavg <span class="synStatement">|</span> perl -anpe <span class="synConstant">'$_=$F[1]'</span><span class="synStatement">)</span>
    <span class="synSpecial">PROMPT</span><span class="synStatement">=</span><span class="synConstant">'${vcs_info_msg_0_}%{${fg[yellow]}%}%* ($LOADAVG) %%%{$reset_color%} '</span>
<span class="synStatement">}</span>
<span class="synStatement">case</span> <span class="synSpecial">$TERM</span> <span class="synStatement">in</span>
    screen<span class="synStatement">)</span>
        preexec() <span class="synStatement">{</span>
            <span class="synStatement">echo</span> <span class="synStatement">-ne</span> <span class="synConstant">&#34;\ek</span><span class="synSpecial">$1</span><span class="synConstant">\e</span><span class="synSpecial">\\</span><span class="synConstant">&#34;</span>
        <span class="synStatement">}</span>
        precmd() <span class="synStatement">{</span>
            <span class="synStatement">echo</span> <span class="synStatement">-ne</span> <span class="synConstant">&#34;\ek$</span><span class="synStatement">(</span><span class="synConstant">basename </span><span class="synSpecial">$SHELL</span><span class="synStatement">)</span><span class="synConstant">\e</span><span class="synSpecial">\\</span><span class="synConstant">&#34;</span>
            common_precmd
        <span class="synStatement">}</span>
        <span class="synStatement">;;</span>
    *<span class="synStatement">)</span>
        precmd() <span class="synStatement">{</span>
            common_precmd
        <span class="synStatement">}</span>
        <span class="synStatement">;;</span>
<span class="synStatement">esac</span>
</pre>

			<p>これで一応自分のやりたい表示にはなった。</p>
			<p><a href="http://f.hatena.ne.jp/sugyan/20100121000703" class="hatena-fotolife" target="_blank"><img src="http://f.hatena.ne.jp/images/fotolife/s/sugyan/20100121/20100121000703.png" alt="f:id:sugyan:20100121000703p:image" title="f:id:sugyan:20100121000703p:image" class="hatena-fotolife"></a></p>
			<br>

			<br>

			<p>それにしても.screenrcとか.zshrcとかで指定する文字列は覚えられん。。</p>
		</div>
]]></content:encoded>
	<dc:creator>sugyan</dc:creator>
	<dc:date>2010-01-21T00:08:20+09:00</dc:date>
	<dc:subject>Zsh</dc:subject>
</item>
</rdf:RDF>
